2014-12-05 120 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 功能沒有副作用的夜晚更有用。當然是更好的名字。