初學者程式的問題

1.全域變數和局部變數之間有什麼差別?

2.程序(procedure)和函數(function)之間有何不同?

我朋友說函數是一個能夠依函數名稱傳回值的程序

不過這說法好抽象......能解釋的具體點嗎??

3.為什麼許多程式語言用呼叫程序的方式來建置輸入/輸出運算?

我找到的答案是說..因為真正的I/O運算是呼叫機器中的作業系

統常式....這問題和解答看了半天 還是不懂他再說什麼><

4.如果要說明形式參數和實際參數....形式參數是1個識別字..實際參數是提供一個實際的空間以保存被呼叫時傳到程序的值 .. 這樣解釋對嗎?? 如果對! 那實際參數是代表一個"空間"還是所保存的那個"值"??

5.建構法是什麼??

剛觸碰程式= = 發現好多問題都不懂ˊˋ

希望能幫我解決我的疑惑

用文字表達程式 不太好理解!! 希望多舉些例子~謝謝^^..

PS:不好意思喔.....剛發現點數被我用的差不多快完了 而且這些

問題又很急....所以才送5點......^^"

Update:

2.int func(){return 1}/* 它所回傳的只是單純的數值"1" 還是這個回傳的"1"有其他的意思 像是代表一項指令之類的?

3.這題是習題.我是參考解答並翻譯成中文來問的^^"...原文是"Why do many programming languages implement I/O operations as if they were calls to procedures?"請問..你的回答有符合這題的問題嗎??^^" 如果符合,那這題就沒問題了!問題就只是出在我對翻譯上的理解^^!

Update 2:

4.形式參數→代表使用者在呼叫此程序或函數時所傳入的值 實際參數→呼叫程序或函數時所傳入的值 這兩句意思感覺好像一樣^^" 我看了書上的介紹,我是不是可以把它想成...有一家公司,需要許多的職位(經理.課長.會計等等)來去做整個的公司營運,那"職位"就是一個形式參數.而擺進職位要負責公司營運的"人"就是實際參數! 我能這樣比喻嗎?^^"

Update 3:

5.恩恩....就是建構子^^" 那...所以建構子和解構子再程式中是一起的囉?? 另外你舉的例子...因為我現在學的是一些名詞和概念...之後才會學上機寫程式 所以可以用其它較易理解的敘述來講解嗎^^? 以上你的回答..我已經有了初步的概念了 很謝謝你唷=ˇ=(不過還是蹦出了另外這幾題問題><")

Update 4:

謝謝你黑^^........看了你的敘述和朋友的幫忙.......我的問題都解決了!!

謝謝!! 但還是很抱歉唷^^" ....你回答了這麼多~~我只送了5點><" ....><"....

1 Answer

Rating
  • Lv 7
    1 decade ago
    Favorite Answer

    1. 簡單來講.其不同處是有效範圍.全域變數表示不管你在你的程式檔哪一個地方.只要在宣告過後就都可以用.也就是只要你宣告過一個全域變數之後只要是在同一個檔案裡,都可以使用.要如何宣告一個全域變數?全域變數宣告的方法跟一般變數一模一樣.只不過宣告的地方不同.全域變數宣告的地方不能在任何()或{}之中.局部變數是一個在{}裡宣告的變數.其宣告的方法也跟一般變數一模一樣.不過要在{}或()裡.局部變數表示在宣告過後只能在其宣告裡的{}中使用.例:

    #include <stdio.h>

    int global; /* 這是全域變數.因在宣告時並不處於任何{}或()之間.所以之後只要在這檔案裡,你都可用global這個變數 */

    int main()

    {

    int local; /* 這是局部變數.因在宣告時處於main的{}之間.所以之後只能在main裡的{}用local這個變數 */

    ...

    return(0);

    }

    要記得不管是全域或局部.在C或C++裡一定要先宣告之後才能用.

    2. 程序(procedure)並無回傳值和函數(function)有一個回傳值.在C/C++裡,程序表示其回傳型態為void(無物).而函數的回傳型態則為其它型態.在C/C++裡程序和函數並無太大差異.例:

    void proc { return; } /* 程序(procedure).所以回傳型態是void.且在return時並無回傳任何東西 */

    int func() { return 1; } /* 函數(function).回傳型態是int.且在return時釋回傳1. */

    3. 這題俺看不太懂.IO本來就是一種動作.在程式設計裡.程序或函數是用來敘述動作.而變數是用來代表屬性.所以若是動作就要用程序或函數來撰寫.

    4. 形式參數是你在寫程序或函數定義時在程序或函數裡用來代表使用者在呼叫此程序或函數時所傳入的值.而實際參數是在呼叫程序或函數時所傳入的值.例:

    int hello(int i) /* i是形式參數.因i在hello裡是代表使用者在呼叫hello()時傳入的值 */

    {

    cout << i << endl;

    }

    int main()

    {

    int value = 2;

    hello(value); /* value是所謂的實際參數.因它是代表呼叫程序或函數時所傳入的值 */

    }

    換句話說.形式參數是在寫程序或函數定義時用的.而實際參數是在實際上使用程序或函數用的.

    5. 建構法?你是在說建構子嗎?建構法是在建造一個變數時必用的方法.在C裡並無明文規定.但在C++裡才有明確的規理.也就是在C裡你要自己寫.而在C++裡它會幫你自訂一個.(除非你已自寫一個).在C++裡叫做建構子.在用變數時要遵守5點原則.

    1. 宣告

    2. 給初定值

    3. 使用

    4. 清除

    5. 銷毀

    第一和第二是所謂的建構.而第四和第五是所謂的解構.對一般內定的型態來講並不需要第四.而對非指標變數.寫程式者並不需要執行第五步驟且在C++裡第一和第二步驟幾乎是一起執行的,而第四和第五步驟也是幾乎是一起執行的.在C++裡建構子和解構子是class或struct裡的成員函式之一.但跟一般的成員函式不同.其不同點在:

    1. 建構子的名稱一定要跟class或struct的名稱一模一樣.

    2. 解構子的名稱一定是~加上class或struct的名稱.

    3. 建構子和解構子並無回傳型態.所以在其程式碼裡並無return.

    4. 建構子在參數組()和程式碼之間{}可有初訂區(也就是說設定初訂值的地方).參數組()和初訂區要以:作為分隔.而初訂區和程式碼則不需要分隔

    已C++為例:

    class example

    {

    private:

    int data;

    public:

    example() : data(0) {} /* 建構子 */

    ~example() {} /* 解構子 */

    void print() { cout << data << endl; }

    };

    使用時如下

    int main()

    {

    example e; /* 建構e.在這裡會呼叫example的建構子來建造e這個example的變數.執行完之後你會有一個example的變數叫e.在e裡的data已被設定為0 */

    e.print(); /* 使用e */

    } /* 解構e.在這裡會呼叫example的解構子來解構e這個example的變數. */

    懂不懂?不懂請再問

    2008-12-16 02:09:41 補充:

    俺在上班.等下班再答

    2008-12-17 06:56:13 補充:

    2. 沒錯,它所回傳的只是單純的數值"1".因func()這個函式的回傳型態是int所以只要回傳一個整數就可以了.不管任何整數都可.這只不過是個例子.

    3. hmmm,這樣簡單想想吧.如果你正在顯示一些訊息給使用者.但是電腦有問題.使用者看不到你輸出的資料.請問這時候你要怎麼辦?要顯示錯誤訊息給使用者看嗎?既然因電腦出問題而使使用者看不到你輸出的資料.那他/她也看不到你的錯誤訊息.所以顯示錯誤訊息不是多此一舉?也因此在輸出時錯誤通常被疏忽掉.輸入也一樣.你要使用者輸入一個值.他若輸入錯誤或沒輸入,你一定知道.因到最後你沒要到.

    4. 對啦

    懂不懂?不懂請再問

    Source(s): Myself, Myself
Still have questions? Get your answers by asking now.