2014-12-05 85 views
3

所以,我只是学会了如何写伪代码,因此可以说这是我的代码我对编写伪代码(java)的理解是否正确?

import java.util.Date; 
import java.util.Calendar; 
import java.text.SimpleDateFormat; 
class Watever{ 
public static final String foo="12345151"; 
public static String today; 
public static String expiry; 
public static void date(){ 
    SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM/yy"); 
    Calendar calen = Calendar.getInstance(); 
    Date todayDate = calen.getTime(); 
    today = DATE_FORMAT.format(todayDate); 
    calen.add(Calendar.MONTH, 4); 
    Date expirationDate = calen.getTime(); 
    expiry = DATE_FORMAT.format(expirationDate); 
    } 

public static void main(String[] args){ 
    date(); 
    System.out.println(today); 
    int bar = Integer.parseInt(foo); 
    System.out.println(bar); 
    } 
     } 

这将是一个可以接受的伪代码(因为我们要去用Java编写的代码)

PROGRAM Watever: 
    Declare public final String foo="12345151"; 
    Declare public String today; 
    method date(): 
      GET Today's date; 
      today= Today's date; 
      expiry= today+ 4 MONTHS; 
      Format today AND expiry to "dd/MM/yy" 
    method main(String[] args): 
      CALL date(); 
      PRINT today; 
      Convert String foo to int bar; 
      PRINT bar; 
END 

,并让说,如果我们用扫描仪对象为system.in,难道我们不得不说,我们用它还是我们只是使用

PROMPT user "Enter number: "; 
GET num; 

也是我们如何写伪FO r一个printf(格式化的字符串)

+0

这取决于你想要如何“伪”,例如,伪代码的可接受性会根据您是要修改算法而被非技术人员理解,还是已经知道基本概念的程序员来解释代码流向他们。 – 2014-12-05 09:56:45

+0

@CeilingGecko这是给我的任务,我的讲师会阅读它,但我的例子可以接受吗?我的问题是,我不明白,如果我们需要喜欢说我们使用Date类和SimpleDateFormat或者像我一样写 – EidolonMK 2014-12-05 09:59:16

+0

伪代码是抽象的,它用来描述算法应该如何工作,而不是它将如何工作用某种语言实现。所以你不能伪造printf,因为它可能不存在于其他语言 – user902383 2014-12-05 09:59:36

回答

1

伪代码是一种更为非正式的表达方式。 它是独立于语言的。 您不必在伪代码中声明变量。 你只需要以良好的方式传递信息。

对于printf的,你可以使用print "message"

嗨,你可以看看下面的链接,他们肯定会有所帮助。

link 1

link 2

link 3

+0

感谢这些链接,所以我写的被认为是错误的?如果我将它作为我上面的代码的伪代码呈现? – EidolonMK 2014-12-05 10:06:05

+0

上面的代码可能被认为是正确的,这取决于您的老师的要求。我无法确定。 – 2014-12-05 10:07:15

+0

我明白了,我遵循这种格式的原因是因为它与演讲中演讲者给我们的相似。我还有1个问题,我的程序的一部分需要我查找字符串的子字符串,让我们说第7次出现的索引,第8次出现的“,”,所以我创建了我自己的方法来能够找到第n个事件,因为indexof仅限于第一个和最后一个。我是否需要说明我使用的第n种发生方法还是类似这样的方法? String StudentID =从“,”的第一个索引到“,”的第二个索引的行子串;并将所有“,”替换为“”; – EidolonMK 2014-12-05 10:15:47

0

伪代码并不一定是那个细节,如果你和其他人能够理解它应该做什么,那就足够了。

1

如果有人问伪代码,这通常意味着,快速勾画,勾画算法。当然还是精心制作的。一个人考虑真正的意思,并选择步骤和数据结构。请参阅here了解模糊要求如何进行细化并放入代码中。

伪代码通常看起来比您尝试的更好一点。因此,

  • 与风格保持一致:如果使用大写(或粗体)作为保留字,则随处可用。
  • 带空格的标识符没问题,但是(从我的Algol68经验),我宁愿让他们所有的小写字母和没有引号。
  • 函数调用,单独的参数,在分隔清晰时最好用圆括号和逗号读取。

所以:

PROGRAM Whatever: 
    CONSTANT String foo = "12345151"; 
    FIELD String today; 

    METHOD date(): 
     today := LIBRARY todays date(); 
     expiry := today + 4 MONTHS; 
     today := date format(today, expiry, "dd/MM/yy"). 

    BEGIN 
     date(); 
     PRINT(today); 
     bar := convert string to int(foo); 
     PRINT(bar); 
    END 

关于 “字符串转换FOO为int吧”:这是一个自上而下的细化风格,也是可能的。它声明了一段代码的意图,并且很好地记录了代码。

​​

最后但并非最不重要,关于内容,伪算法本身。在你的情况下,你实际上只调用date而没有参数和结果,并且读取和副作用存储在字段today中计算的东西。A 功能没有副作用的夜晚更有用。当然是更好的名字。