tft每日頭條

 > 科技

 > 編程和數學一起學有什麼作用

編程和數學一起學有什麼作用

科技 更新时间:2024-08-28 16:23:06
數據通常是用0、1、2、3、4、5、6、7、8、9這些數來表示,由這些數的不同組合表示現實生活中各種各樣的數據。在我們的教育中,0給我們的第一直覺就是沒有。那麼0真的隻是代表沒有的意思嗎?作為程序員,你可不能這麼理解哦~

通過觀察,我們可以發現

編程和數學一起學有什麼作用(程序員的數學教科書)1

編程和數學一起學有什麼作用(程序員的數學教科書)2

例如溫度的0℃,并不代表沒有溫度,時間0點不代表沒有時間。

我們來看一個小故事:

在數學王國裡,胖子0與瘦子1常常為了誰大而争執不休。瞧!今天,這兩個小冤家狹路相逢,彼此之間又展開了一場舌戰。

瘦子1搶先發言:“哼!胖胖的0,你有什麼了不起?就像100,如果沒有我這個瘦子1,你這兩個胖0有什麼用?”

胖子0不服氣了:“你也甭在我面前耍威風,想想看,要是沒有我,你就隻是一個光杆呢?”

  • 0并不表示什麼都沒有。

  • 數的大小與所處的位置有關系。

  • 程序中的0

    在電子技術中,0一般表示低電平,1為高電平。在邏輯計算中,0一般表示邏輯假(False),1為邏輯真(True)。

    在數值運算中,0與平常數學中0的含義相同。

    在程序中,數據0有什麼含義呢?

    1.未賦值的變量為0?

    在不同的程序設計語言中,對于未賦值變量的處理不一樣。

    對于Basic類的程序語言,如QB(QuickBasic,簡環QB)、VB(VisualBasic,簡稱VB),如果數值型變量未賦初值,則其初始值為0。例如,有以下VB程序代碼:

    Private Sub Test

    Dim i As Integer

    MsgbOX "變量 i=" & i, ,"變量初始值"

    End Sub

    在以上VB代碼中,聲明了變量i,但未對其進行賦值。

    雖然未進行變量賦值初始化,但VB編譯器會自動将這類數值型變量初始化為0。因此,執行以上代碼将顯示如圖1-3所示的對話框。

    編程和數學一起學有什麼作用(程序員的數學教科書)3

    圖1-3

    對程序員來說,VB對變量進行初始化的方式很讨人喜歡,變量聲明後就可以使用。但是,在.NetFramework中,其處理方式又不相同,例如,以下是VB.

    NET中的代碼:

    Private Sub Buttonl_Click(sender As System.Object,e As System.EventArgs)

    _

    Handles Buttonl.Click

    Dim i

    MSgBox("變量 i=" & i,,"變量初始值")

    End Sub

    以上代碼并不會出錯,但運行後得到的結果如圖1-4所示。

    從這個結果可看出,在VB.NET中,

    如果變量使用之前未進行初始化,這時其值為空(并不為0)。

    編程和數學一起學有什麼作用(程序員的數學教科書)4

    圖1-4

    其實,在VisualStudio開發環境中仔細觀察代碼,可看到在MsgBox函數中的變量i下方有一個波浪線,将鼠标指針指向變量i,可看到如圖1-5所示的提示信息,提示變量i在賦值前被使用。

    編程和數學一起學有什麼作用(程序員的數學教科書)5

    圖1-5

    對于C語言系列的程序設計語言(如C、C 、C#等),程序員就沒那麼幸運了,未初始化的變量編譯器并不會将其初始化為0,

    而且不同編譯系統可能會采用不同的處理方式。例如,有如下的C#程序:

    以上的C#程序是沒辦法編譯通過的。在VisualStudio開發環境中可以看到變量i下方有一條波浪線,将鼠标指針移到變量i上,可看到如圖1-6所示的錯誤提示信息,提示使用了未賦值的局部變量i。

    編程和數學一起學有什麼作用(程序員的數學教科書)6

    圖1-6

    要想得到如圖1-3所示的對話框,在C#中必須将變量i進行初始化,給變量賦值為0,修改後的代碼如下:

    private void buttonl Click(object sender, EventArgs e)

    {

    int i=0;

    MessageBox.Show(string.Format("變量 i={0}", i),"變量初始值");

    }

    而在Dev-CPP環境中編寫以下C語言程序:

    int main()

    {

    int i;

    print("變量 i=%d",i);

    getch();

    return 0;

    }

    編譯時不會提示錯誤,運行時則将顯示類似圖1-7所示的結果。

    編程和數學一起學有什麼作用(程序員的數學教科書)7

    圖1-7

    雖然在程序中沒有初始化變量i,但變量i卻有一個值(圖1-7中顯示的是1976933940,下次運行該程序時可能又是另一個值),這是為什麼呢?原來,在ANSIC中定義變量時,編譯器将給該變量分配内存,但并不會将分配的内存初始化為0。這樣,原來該内存區域中保存的是什麼值,新指定的變量也就具有了什麼值。在圖1-7所示結果中,給變量i分配的内存中的值正好為1976933940,所以變量i也就具有了這個值。

    2.數值0的類型轉換

    程序中經常會用到數據類型的轉換,如将數值類型轉換為字符串類型、将數值類型轉換為布爾類型等。

    将數值0轉換為字符串0,這種轉換很好理解,其顯示的内容都是相同的0,隻有在進行數值運算時才能體現出不同。

    數值0轉換為布爾類型是什麼值呢?

    在ANSIC中沒有專門設置布爾類型,在進行邏輯運算時,将0值作為布爾值False,将非0值作為布爾值True。在C#中,定義了Boolean類型,數值0轉換為Boolean類型時得到的結果為False,非0值轉換為Boolean類型時得到的結果為True。

    3.除以0異常

    我們在小學就學過:0可以做被除數,但不可以做除數。在程序中,當除數為0時,将出現異常。例如,有以下C代碼:

    int main()

    {

    int Dividend,Divisor,Result;

    Dividend = 8;

    Divisor = 0;

    Result = Dividend / Divisor;

    printf("%d/%d=%d",Dividend,Divisor,Result );

    getch();

    return 0;

    }

    當執行以上代碼時,由于除數Divisor為0,将産生一個嚴重的錯誤,導緻程序不能繼續運行,如圖1-8所示。

    編程和數學一起學有什麼作用(程序員的數學教科書)8

    圖1-8

    在程序執行中如果遇到這種異常,将導緻程序中斷,但這不是我們所希望的。

    一個好的程序員應該考慮并處理程序中可能發生的各種異常,并捕獲這些異常,然後給用戶顯示出一個友好的錯誤提示信息。不過,ANSI

    C中并沒有提供異常捕獲機制,

    因此需要程序員根據程序執行過程,主動去判斷除數,以避免産生這種嚴重異常。例如,

    可将以上代碼修改為以下形式:

    int main()

    {

    int Dividend,Divisor,Result;

    Dividend = 8;

    Divisor = 0;

    if(Divisor==0){

    printf("除數不能為0!");

    }else{

    result = Dividend / Divisor;

    printf("%d/%d=%d",Dividend,Divisor,Result);

    }

    getch();

    return 0;

    }

    編譯執行以上程序,将得到如圖1-9所示的結果,提示了“除數不能為0!”,程序并沒有進入嚴重異常狀态。

    編程和數學一起學有什麼作用(程序員的數學教科書)9

    圖1-9

    在異常捕獲方面,C 、C#就要方便得多。例如,C#定義了很多異常(也包括Divide By ZeroException異常),我們在程序中可以使用try…catch結構來捕獲這些異常并進行處理。

    ,

    更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

    查看全部

    相关科技资讯推荐

    热门科技资讯推荐

    网友关注

    Copyright 2023-2024 - www.tftnews.com All Rights Reserved