從計算機語言的發展到我的第一行代碼(HelloWorld)
程序:為了讓計算機執行某些操作或解決某個問題而編寫的一系列有序指令的集合
算法:解決問題的具體方法和步驟
流程圖是算法的一種圖形化表示方式。
流程圖直觀、清晰,更有利於人們設計與理解算法。
它使用一組預定義的符號來說明如何執行特定任務
計算機語言發展史
1. 機器語言
1) 簡介:所有代碼裏面只有0和1,每一條指令稱為“機器指令”
2) 優點
u 代碼能被計算機直接識別,直接對硬件產生作用,程序的執行效率非常高
u 能直接訪問、控制計算機的各種硬件設備,如磁盤、存儲器、CPU、I/O端口等
3) 缺點
u 程序全是些0和1的指令代碼,可讀性差,還容易出錯
u 對硬件的依賴性很強,因此不同型號計算機的機器語言又不一樣。
u 要熟記所用計算機的全部指令和指令的涵義,指令又多又難記
4) 使用場合
綜上所述,機器語言很難掌握和推廣,現在除了計算機生產廠家的專業人員外,絕大多數的程序員已經不再去學習機器語言了
2. 匯編語言
1) 簡介:用英文單詞等符號代替機器指令
2) 優點
u 像機器語言一樣,可以直接訪問、控制計算機的各種硬件設備
u 占用內存少,執行速度快
3) 缺點
u 不同的機器有不同的匯編語言語法和編譯器,代碼缺乏可移植性,也就是說,一個程序只能在一種機器上運行,換到其他機器上就不能運行
u 符號非常多、難記,即使是完成簡單的功能也需要大量的匯編語言代碼
u 必須對硬件非常了解,開發效率很低,周期長且單調
4) 使用場合
u 操作系統內核、驅動程序、單片機程序
u 軟件的加密、解密、破解
u 病毒的制作、防治
u 程序的調試、分析
3. 高級語言
1) 簡介:接近自然語言
2) 優點
u 簡單、易用、易於理解,語法和結構類似於普通英文
u 遠離對硬件的直接操作,使得一般人經過學習之後都可以編程,而不用太熟悉硬件知識
u 一個程序還可以在不同的機器上運行,具有可移植性
3) 缺點
u 程序不能直接被計算機識別,需要經編譯器翻譯成二進制指令後,才能運行到計算機上
4) 種類:C語言、C++、C#、Java、Objective-C
4. 三種語言的對比
分別用機器語言、匯編語言、C語言(高級語言)來寫一個計算1+1的程序
1) 機器語言:簡直是天書!!!
10111000 00000001
00000000 00000101
00000001 00000000
2) 匯編語言:可讀性稍微好一點,但是麻煩
MOV AX,1
ADD AX,1
3) C語言:精簡、通俗易懂
1+1
C 語言簡介
C 語言是貝爾實驗室的 Dennis Ritchie 在1973 年設計的。C 最初用於開發系統級程序。
在微機上,有許多性能良好的商品C 語言系統可用。包括Turbo C、Borland
C語言特點:
結構化的程序設計語言:層次清晰,便於按模塊化方式組織程序,易於調試和維護
語句簡潔:學習時入門相對容易,C 語言很好地總結了其他語言提出的程序庫概念
功能強大:既可用於系統軟件的開發,也適合於應用軟件的開發。
移植性好:只要對這種語言稍加修改,便可以適應不同型號機器或各類操作系統。
C語言的基本結構
#include <stdio.h> //以.h為後綴的文件被稱為頭文件,可以是 C 程序中現成的標準庫文件,也可以是自定義的庫文件。
void main(){ //程序從main主函數開始執行;
printf("HelloWorld\n"); //printf打印輸出;
}
代碼執行流程
1.源代碼(以.c為文件擴展名,這是用戶創建的文件)
2.目標文件(通常以.o或者.obj為文件擴展名,這是編譯器編譯後的文件)
3.可執行文件(以.exe為後綴名結束是連接器的輸入結果)
4.運行
#include <stdio.h>
int main()
{
// \n:換行 \t:制表位
/*
printf("************\n");
printf("*\n");
printf("*\n");
printf("*\n");
printf("*\n");
printf("************\n");
*/
printf("姓名\t語文\t數學\t英語\n");
printf("張三\t80\t90\t70\n");
return 0;
}
#include <stdio.h> void main() { /* printf("*******************************\n");// \n:換行 printf(" 鄭州四中成績表 \n"); printf("*******************************\n");// \n:換行 printf("姓名 語文 英語 數學\n"); printf("張三 80 80 80\n"); printf("李四 80 80 80\n"); */ printf("*******************************\n");// \n:換行 printf("\t鄭州四中成績表\n"); printf("*******************************\n");// \n:換行 printf("姓名\t語文\t英語\t數學\n"); // \t:制表位(tab)相當於若幹空格 printf("張三\t80\t80\t80\n"); printf("李四\t80\t80\t80\n"); } |
從計算機語言的發展到我的第一行代碼(HelloWorld)