第 1 章 程序的基本概念

<一> 程序和編程語言
程序(program)告訴計算機應該如何完成一個計算任務。計算機是由數字電路組成的運算機器,只能對數字做運算。爲什麼計算機可以進行符號運算、處理聲音及圖像,因爲符號、聲音、圖像在計算機內部是用數字表示的。這些數字處理經過專門的硬件轉換成人可以識別聲音、圖像。
程序由一系列指令(Instruction)組成,指令時指示計算機做某種運算的命令,通常包括以下幾類:
1.輸入(Input):從鍵盤(字符輸入設備)、文件或其他設備獲取數據(光學閱讀設備:光學標記閱讀機、光學字符閱讀機;圖形輸入設備:鼠標器、操縱桿、光筆;圖像輸入設備:攝像機、掃描儀、傳真機;模擬輸入設備:語言模數轉換識別系統等)
2.輸出(Output):把數據顯示到屏幕,或者存入一個文件,或者發送到其它設備(打印機、繪圖機等)
3.基本運算:執行最基本的數據運算(加減乘除)和數據存取
4.測試和分支:測試某個條件,然後根據不同的測試結果執行不同的後續指令。
5.循環:重複執行一系列操作
編寫程序可以說就是這樣一個過程:把複雜的任務分解成子任務,把子任務再分解成更簡單的任務,層層分解,直到最後簡單得可以用以上指令來完成。
編程語言(Programming Language)分爲低級語言(Low-level Language)和高級語言(High-level Language)。機器語言(Machine Language)和彙編語言(Assembly Language)屬於低級語言,直接用計算機指令編寫程序。而C、C++、Java、Python等屬於高級語言,用語言(Statement)編寫程序,語句是計算機指令的抽象表示。
源代碼(文本編輯工具 vi Emac等,如:*.c)-->彙編代碼(編輯器(gcc),如:*.s)-->目標代碼(彙編器(as),如:*.o)-->可執行程序(連接器(ld))
<二>2. 自然語言和形式語言
自然語言(Natural Language)就是人類講的語言,比如漢語、英語和法語.形式語言(Formal Language)是爲了特定應用而人爲設計的語言。例如數學家用的數字和運算符號、化學家用的分子式等。
雖然形式語言和自然語言有很多共同之處,包括Token、結構和語義,但是也有很多不一樣的地方。
歧義性(Ambiguity)
自然語言充滿歧義,人們通過上下文的線索和自己的常識來解決這個問題。形式語言的設計要求是清晰的、毫無歧義的,這意味着每個語句都必須有確切的含義而不管上下文如何。
冗餘性(Redundancy)
爲了消除歧義減少誤解,自然語言引入了相當多的冗餘。結果是自然語言經常說得囉裏囉嗦,而形式語言則更加緊湊,極少有冗餘。
<三>程序的調試
編程是一件複雜的工作,因爲是人做的事情,所以難免經常出錯。據說有這樣一個典故:早期的計算機體積都很大,有一次一臺計算機不能正常工作,工程師們找了半天原因最後發現是一隻臭蟲鑽進計算機中造成的。從此以後,程序中的錯誤被叫做臭蟲(Bug),而找到這些Bug並加以糾正的過程就叫做調試(Debug)。
(1)編譯時錯誤
(2)運行時錯誤
(3)邏輯錯誤和語法錯誤
<四>第一個程序
第一個程序main.c
/*Hello World程序*/  /* ... */結構是一個註釋(Comment),編譯器會忽略從/*到*/的所有字符,所以寫註釋沒有語法規則
#include <stdio.h>
int main(void)
{
 printf("hello world!\n");
 return 0;
}
int main(void) {...return 0;}程序主體的結構
#gcc -Wall main.c
#./a.out
#Hello World!
一個好的習慣是打開gcc的-Wall選項,也就是讓gcc提示所有的警告信息,不管是嚴重的還是不嚴重的,然後把這些問題從代碼中全部消滅
 
 
文章內容出自:《Linux C編程一站式》
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章