版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語(yǔ)言程序設(shè)計(jì)創(chuàng)建第一個(gè)C語(yǔ)言程序項(xiàng)目1“學(xué)生成績(jī)管理系統(tǒng)”中相關(guān)數(shù)據(jù)設(shè)計(jì)及簡(jiǎn)單處理項(xiàng)目2項(xiàng)目中學(xué)生成績(jī)的等級(jí)判定項(xiàng)目3項(xiàng)目中的設(shè)計(jì)數(shù)據(jù)處理及封面與菜單的初步項(xiàng)目4學(xué)生成績(jī)的分組匯總程序項(xiàng)目5利用數(shù)組完善項(xiàng)目中數(shù)據(jù)的處理項(xiàng)目6利用函數(shù)進(jìn)行項(xiàng)目的整體框架設(shè)計(jì)項(xiàng)目7利用結(jié)構(gòu)體實(shí)現(xiàn)項(xiàng)目項(xiàng)目8利用指針優(yōu)化項(xiàng)目項(xiàng)目9利用文件完善項(xiàng)目項(xiàng)目10項(xiàng)目1創(chuàng)建第一個(gè)C語(yǔ)言程序目標(biāo)TARGET知識(shí)目標(biāo)能夠使用了解C語(yǔ)言的產(chǎn)生、發(fā)展和特點(diǎn)掌握C程序的實(shí)現(xiàn)過(guò)程和結(jié)構(gòu)熟悉VisualC++6.0開(kāi)發(fā)環(huán)境理解程序設(shè)計(jì)的思想、方法以及算法了解軟件編程的規(guī)范目標(biāo)TARGET技能目標(biāo)熟悉VisualC++6.0環(huán)境能夠在VisualC++6.0下運(yùn)行、調(diào)試C程序認(rèn)識(shí)C程序任務(wù)1.1創(chuàng)建及運(yùn)行第一個(gè)C程序任務(wù)1.2運(yùn)用算法描述問(wèn)題任務(wù)1.3任務(wù)1.1認(rèn)識(shí)C程序
任務(wù)描述認(rèn)識(shí)第一個(gè)C程序,其運(yùn)行結(jié)果是在計(jì)算機(jī)屏幕上輸出一行文本信息(項(xiàng)目名稱)“學(xué)生成績(jī)管理系統(tǒng)”。任務(wù)分析這是一個(gè)簡(jiǎn)單的C語(yǔ)言程序,只需要一條格式輸出語(yǔ)句即可實(shí)現(xiàn)上述功能。算法設(shè)計(jì)輸出文本“學(xué)生成績(jī)管理系統(tǒng)”,可以使用格式輸出函數(shù)實(shí)現(xiàn)。任務(wù)1.1認(rèn)識(shí)C程序
實(shí)現(xiàn)在線測(cè)試系統(tǒng)主頁(yè)面的布局和美化某班級(jí)需要一個(gè)學(xué)生成績(jī)管理系統(tǒng),該系統(tǒng)應(yīng)具有學(xué)生成績(jī)的添加、刪除、查詢、修改、插入和排序等處理功能,提供數(shù)字按鍵菜單操作方式,如圖0-1所示。程序代碼#include"stdio.h"/*編譯預(yù)處理命令*/voidmain(){ printf("學(xué)生成績(jī)管理系統(tǒng)\n");
/*在屏幕上輸出學(xué)生成績(jī)管理系統(tǒng)*/}/*main()主函數(shù)結(jié)束*/執(zhí)行結(jié)果1認(rèn)識(shí)C語(yǔ)言及C程序Part◎C語(yǔ)言的特點(diǎn)◎C程序的實(shí)現(xiàn)過(guò)程◎C程序的結(jié)構(gòu)◎C語(yǔ)言的產(chǎn)生和發(fā)展C語(yǔ)言的產(chǎn)生和發(fā)展
1972年美國(guó)貝爾實(shí)驗(yàn)室DennisRitchie和BrainKernighan首先推出1983年美國(guó)貝爾實(shí)驗(yàn)室DennisRitchie和BrainKernighan改進(jìn)推出(TheCProgramingLanguage)1983年美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)ANSI,制定標(biāo)準(zhǔn)C(ANSIC)20世紀(jì)80年代中期美國(guó)貝爾實(shí)驗(yàn)室B.Stroustrup博士C++微軟MSC++\VisualC++,BorlandTurboC++\C++Builder面向過(guò)程面向?qū)ο驝語(yǔ)言的特點(diǎn)
簡(jiǎn)潔緊湊、靈活方便.語(yǔ)言功能豐富。C是結(jié)構(gòu)式語(yǔ)言。C語(yǔ)言允許直接訪問(wèn)物理地址,可以直接對(duì)硬件進(jìn)行操作。因此既具有高級(jí)語(yǔ)言的功能,又具有低級(jí)語(yǔ)言的許多功能。C語(yǔ)言程序生成代碼質(zhì)量高,程序執(zhí)行效率高。C語(yǔ)言具備良好的可移植性。C程序的實(shí)現(xiàn)過(guò)程
源程序文件(*.C)可執(zhí)行文件(*.exe)結(jié)果目標(biāo)文件(*.obj)編輯
編譯鏈接運(yùn)行C程序的實(shí)現(xiàn)過(guò)程
1.編輯??梢杂萌魏我环N編輯軟件將在紙上編寫(xiě)好的C語(yǔ)言程序輸入計(jì)算機(jī),并將C語(yǔ)言源程序文件*.c以純文本文件形式保存在計(jì)算機(jī)的磁盤上(不能設(shè)置字體、字號(hào)等)。2.編譯。編譯過(guò)程使用C語(yǔ)言編譯程序?qū)⒕庉嫼玫脑闯绦蛭募?.c”,翻譯成二進(jìn)制目標(biāo)代碼文件“*.obj”。編譯程序?qū)υ闯绦蛑鹁錂z查語(yǔ)法錯(cuò)誤發(fā)現(xiàn)錯(cuò)誤后,不僅會(huì)顯示錯(cuò)誤的位置(行號(hào)),還會(huì)告知錯(cuò)誤類型信息。我們需要再次回到編輯軟件修改源程序的錯(cuò)誤,然后,再進(jìn)行編譯,直至排除所有語(yǔ)法和語(yǔ)義錯(cuò)誤。C程序的實(shí)現(xiàn)過(guò)程
3.鏈接。程序編譯后產(chǎn)生的目標(biāo)文件是可重定位的程序模塊,不能直接運(yùn)行。鏈接將編譯生成的各個(gè)目標(biāo)程序模塊和系統(tǒng)或第三方提供的庫(kù)函數(shù)“*.lib”鏈接在一起,生成可以脫離開(kāi)發(fā)環(huán)境、直接在操作系統(tǒng)下運(yùn)行的可執(zhí)行文件“*.exe”。4.運(yùn)行程序。如果經(jīng)過(guò)測(cè)試,運(yùn)行可執(zhí)行文件達(dá)到預(yù)期設(shè)計(jì)目的,這個(gè)C語(yǔ)言程序的開(kāi)發(fā)工作便到此完成了。如果運(yùn)行出錯(cuò),這說(shuō)明程序處理的邏輯存在問(wèn)題,需要再次回到編輯環(huán)境針對(duì)程序出現(xiàn)的邏輯錯(cuò)誤進(jìn)一步檢查、修改源程序,重復(fù)編輯→編譯→鏈接→運(yùn)行的過(guò)程,直到取得預(yù)期結(jié)果為止。C程序的結(jié)構(gòu)
#include"stdio.h"/*編譯預(yù)處理命令*/voidmain(){intiScore1,iScore2,iScore3;/*定義整型變量iScore1、iScore1、iScore1*/floatfAverage;/*定義單精度浮點(diǎn)型變量fAverage*/iScore1=86;/*給變量iScore1賦值86*/iScore2=79;/*給變量iScore2賦值79*/iScore3=92;/*給變量iScore3賦值92*/fAverage=(iScore1+iScore2+iScore3)/3.0;/*計(jì)算平均成績(jī)*/printf("Theaverageis%f\n",fAverage);/*輸出平均成績(jī)*/}例1-1班級(jí)一學(xué)習(xí)小組有三名同學(xué),C語(yǔ)言程序設(shè)計(jì)這門課程的成績(jī)分別為86、79、92,計(jì)算他們的平均成績(jī),并輸出。說(shuō)明:(1)#include是編譯預(yù)處理命令,放在源程序的最前面,編譯預(yù)處理命令后面不加分號(hào)。(2)main()為主函數(shù),其中main是函數(shù)的名字,“()”里是函數(shù)的參數(shù),此處為空。void是一種數(shù)據(jù)類型,空類型。函數(shù)是由函數(shù)頭和函數(shù)體組成的。函數(shù)頭包括函數(shù)的返回至類型、函數(shù)名和函數(shù)參數(shù),函數(shù)體是由一對(duì)“{}”括起來(lái)的用于完成某種功能的語(yǔ)句的集合。函數(shù)一般包括變量定義語(yǔ)句部分和執(zhí)行語(yǔ)句部分。(3)程序的變量在使用前需要先進(jìn)行定義,在同一個(gè)函數(shù)中變量定義語(yǔ)句放在執(zhí)行語(yǔ)句的前面?!癷ntiScore1,iScore2,iScore3;”和“floatfAverage;”都是變量定義語(yǔ)句。說(shuō)明:(4)從“iScore1=86;”語(yǔ)句開(kāi)始,下面的全部是執(zhí)行語(yǔ)句部分,其中“iScore1=86;”、“iScore2=79;”、“iScore3=92;”這三條語(yǔ)句都是賦值語(yǔ)句,即分別將整數(shù)86、79、92給整型變量iScore1、iScore2和iScore3。(5)“fAverage=(iScore1+iScore2+iScore3)/3.0;”這條語(yǔ)句的作用是將變量iScore1、iScore2和iScore3的值相加,然后除以3,得到的結(jié)果賦值給單精度浮點(diǎn)型變量fAverage。(6)“printf("Theaverageis%f",fAverage);”是調(diào)用庫(kù)函數(shù)printf(),輸出相應(yīng)文本及fAverage的值。(7)“/*……*/”括起來(lái)的注釋部分,用來(lái)對(duì)程序進(jìn)行說(shuō)明,向用戶提示或解釋程序的意義。程序編譯時(shí),計(jì)算機(jī)不會(huì)對(duì)注釋做任何處理,注釋可以出現(xiàn)在程序的任何位置,它的出現(xiàn)不會(huì)對(duì)程序的執(zhí)行有任何影響。注意:(1)在C程序中,每一條語(yǔ)句的最后都有一個(gè)分號(hào)“;”,表示一條語(yǔ)句的結(jié)束。(2)C程序中是區(qū)分大小寫(xiě)的。(3)程序中的許多符號(hào)如逗號(hào)“,”、分號(hào)“;”、雙引號(hào)“""”都是英文狀態(tài)下的符號(hào),輸入應(yīng)格外注意。任務(wù)1.2創(chuàng)建及運(yùn)行第一個(gè)C程序
任務(wù)描述在VisualC++6.0環(huán)境下,創(chuàng)建及運(yùn)行第一個(gè)C程序,計(jì)算機(jī)屏幕上輸出一行文本信息(項(xiàng)目名稱)“學(xué)生成績(jī)管理系統(tǒng)”。任務(wù)分析熟悉VisualC++6.0環(huán)境,能夠正確編輯、鏈接、運(yùn)行C程序。算法設(shè)計(jì)與程序代碼算法與程序代碼參考任務(wù)1-1。2C程序的開(kāi)發(fā)環(huán)境Part◎在VisualC++6.0集成開(kāi)發(fā)環(huán)境下運(yùn)行C程序◎C程序的開(kāi)發(fā)環(huán)境C程序的開(kāi)發(fā)環(huán)境
C語(yǔ)言的運(yùn)行環(huán)境很多,有MicrosoftVisualC++、MicrosoftVisualStudio、DEVC++、BorlandC++、BorlandC++Builder、GNUDJGPPC++、HighC、TurboC、C-Free和Win-TC等等,每一種運(yùn)行環(huán)境都有自身的特點(diǎn),讀者可以根據(jù)自己的特點(diǎn)酌情選用。這里我們主要介紹MicrosoftVisualC++6.0。VisualC++6.0是微軟推出的一款編譯器,是一個(gè)功能強(qiáng)大的可視化軟件開(kāi)發(fā)工具,它將程序代碼的編輯、編譯、連接和調(diào)試等功能集于一體。C程序的開(kāi)發(fā)環(huán)境單擊【開(kāi)始】按鈕,在打開(kāi)的【開(kāi)始】菜單中選擇【所有程序】,單擊【MicrosoftVisualStudio6.0】,選擇【MicrosoftVisualC++6.0】,或者雙擊桌面上的MicrosoftVisualC++6.0圖標(biāo),啟動(dòng)VisualC++6.0,進(jìn)入MicrosoftVisualC++6.0集成開(kāi)發(fā)環(huán)境,如圖1-3所示。在VisualC++6.0集成開(kāi)發(fā)環(huán)境下運(yùn)行C程序
1.創(chuàng)建工程(1)選擇菜單中的【文件】命令,打開(kāi)菜單,單擊菜單項(xiàng)【新建】,打開(kāi)【新建】對(duì)話框,如圖1-4所示。在VisualC++6.0集成開(kāi)發(fā)環(huán)境下運(yùn)行C程序
1.創(chuàng)建工程(2)選擇菜單中的【文件】命令,打開(kāi)菜單,單擊菜單項(xiàng)【新建】,打開(kāi)【新建】對(duì)話框,如圖在【新建】對(duì)話框中,選擇【工程】選項(xiàng)卡,在左側(cè)列表中選擇“Win32ConsoleApplication”類型,VisualC++6.0將創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序。在右側(cè)【工程名稱】文本框中輸入工程名稱,如“MyAve”,單擊【位置】文本框右側(cè)的小按鈕,在彈出的對(duì)話框中選擇存儲(chǔ)位置,如“D:\MYC”,如圖1-5所示。在VisualC++6.0集成開(kāi)發(fā)環(huán)境下運(yùn)行C程序
1.創(chuàng)建工程(3)單擊【確定】按鈕,彈出【W(wǎng)in32ConsoleApplication-步驟】對(duì)話框,選擇默認(rèn)單選項(xiàng)【一個(gè)空工程】,即創(chuàng)建一個(gè)空的工程,不包含任何的源文件,如圖1-6所示。在VisualC++6.0集成開(kāi)發(fā)環(huán)境下運(yùn)行C程序2.創(chuàng)建文件(1)單擊【確定】按鈕,彈出【W(wǎng)in32ConsoleApplication-步驟】對(duì)話框,選擇默認(rèn)單選項(xiàng)【一個(gè)空工程】,即創(chuàng)建一個(gè)空的工程,不包含任何的源文件,如圖選擇菜單中的【文件】命令,打開(kāi)菜單,單擊菜單項(xiàng)【新建】,打開(kāi)【新建】對(duì)話框,如圖1-7所示。在VisualC++6.0集成開(kāi)發(fā)環(huán)境下運(yùn)行C程序2.創(chuàng)建文件(2)單擊【確定】按鈕,彈出【W(wǎng)in32ConsoleApplication-步驟】對(duì)話框,選擇默認(rèn)單選項(xiàng)【一個(gè)空工程】,即創(chuàng)建一個(gè)空的工程,不包含任何的源文件,如圖(2)在【新建】對(duì)話框中,選擇【文件】選項(xiàng)卡,在左側(cè)列表中選擇“C++SourceFile”類型,在右側(cè)【文件】文本框中輸入文件名稱,如“LT1-1.c”,這里文件名必須以.c結(jié)尾,因?yàn)镃程序源程序的擴(kuò)展名為.c,如圖1-5所示,其他選項(xiàng)默認(rèn)即可。其中默認(rèn)將該文件添加到剛剛所建的工程MyAve中,位置是“D:\MYC\LT1-1.c”,如圖1-7所示。菜單中的【文件】命令,打開(kāi)菜單,單擊菜單項(xiàng)【新建】,打開(kāi)【新建】對(duì)話框,如圖1-7所示。在VisualC++6.0集成開(kāi)發(fā)環(huán)境下運(yùn)行C程序2.創(chuàng)建文件(3)單擊【確定】按鈕,則回到VisualC++6.0界面,同時(shí)打開(kāi)代碼編輯窗口。打開(kāi)【工作空間】窗口,在其下方選擇【FileView】選項(xiàng)卡,可以看到在SourceFiles文件夾中多了一個(gè)文件LT1-1.c,如圖1-8所示。在VisualC++6.0集成開(kāi)發(fā)環(huán)境下運(yùn)行C程序3.編輯C程序源文件在打開(kāi)的代碼編輯窗口例1-1的程序代碼,如圖1-9所示。在VisualC++6.0集成開(kāi)發(fā)環(huán)境下運(yùn)行C程序4.編譯選擇菜單中的【組建】命令,打開(kāi)菜單,單擊菜單項(xiàng)【編譯】,對(duì)C源程序進(jìn)行編譯,同時(shí)在VisualC++6.0下部輸出窗口中顯示調(diào)試信息,如圖1-10所示。如果程序存在語(yǔ)法錯(cuò)誤,那么讀者需要根據(jù)輸出窗口中的錯(cuò)誤提示,返回代碼編輯窗口修改程序,然后再次進(jìn)行編譯,直到提示無(wú)錯(cuò)誤為止,如圖1-9所示。在VisualC++6.0集成開(kāi)發(fā)環(huán)境下運(yùn)行C程序5.鏈接選擇菜單中的【組建】命令,打開(kāi)菜單,單擊菜單項(xiàng)【組建】,在VisualC++6.0下部輸出窗口中顯示調(diào)試信息,與編譯過(guò)程類似。如果程序存在錯(cuò)誤,那么讀者需要根據(jù)輸出窗口中的錯(cuò)誤提示,返回代碼編輯窗口修改程序,然后再次進(jìn)行編譯、連接,直到提示無(wú)錯(cuò)誤為止。在VisualC++6.0集成開(kāi)發(fā)環(huán)境下運(yùn)行C程序6.運(yùn)行選擇菜單中的【組建】命令,打開(kāi)菜單,單擊菜單項(xiàng)【!執(zhí)行LT1-1.exe】,可以看到屏幕中彈出一DOS輸出窗口,如圖1-11所示。注意:在VisualC++6.0環(huán)境下,編譯、鏈接和運(yùn)行不僅可以用菜單命令進(jìn)行操作還可以使用快捷鍵進(jìn)行操作,編譯、鏈接和運(yùn)行分別對(duì)應(yīng)的快捷鍵是Ctrl+F7、F7和Ctrl+F5。也可以使用命令按鈕進(jìn)行操作,對(duì)應(yīng)的命令按鈕分別是、、。任務(wù)1.3運(yùn)用算法描述問(wèn)題
任務(wù)描述班級(jí)一學(xué)習(xí)小組有三名同學(xué),C語(yǔ)言程序設(shè)計(jì)這門課程的成績(jī)分別為86、79、92,計(jì)算他們的平均成績(jī),并輸出。請(qǐng)利用流程圖描述法給出其算法。任務(wù)分析用流程圖或者NS流程圖圖描述算法。任務(wù)1.3運(yùn)用算法描述問(wèn)題
算法設(shè)計(jì)3程序算法基礎(chǔ)Part◎程序設(shè)計(jì)語(yǔ)言◎程序◎程序設(shè)計(jì)方法◎程序設(shè)計(jì)的一般步驟◎算法◎軟件編程規(guī)范程序
程序是程序設(shè)計(jì)中最為基本的概念,由有限的指令序列構(gòu)成,它的作用是告訴計(jì)算機(jī)當(dāng)前的處理對(duì)象與處理步驟,使計(jì)算機(jī)完成相應(yīng)的任務(wù)。VisualC++6.0是微軟推出的一款編譯器,是一個(gè)功能強(qiáng)大的可視化軟件開(kāi)發(fā)工具,它將程序代碼的編輯、編譯、連接和調(diào)試等功能集于這里的處理對(duì)象即數(shù)據(jù),包括數(shù)據(jù)的類型、數(shù)據(jù)的組織形式和數(shù)據(jù)之間的相互關(guān)系,可以被稱為“數(shù)據(jù)結(jié)構(gòu)”;而處理步驟指的是“操作”,也就是算法。換言之算法和數(shù)據(jù)結(jié)構(gòu)是程序的兩個(gè)重要方面。因此,著名的科學(xué)家沃思(NiklausWirth)提出過(guò)一個(gè)經(jīng)典的公式:
算法+數(shù)據(jù)結(jié)構(gòu)=程序程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言是建立在一定語(yǔ)法規(guī)則之上、用于向計(jì)算機(jī)傳遞程序設(shè)計(jì)人員思想的一批特殊符號(hào)的集合。它能夠使程序設(shè)計(jì)人員準(zhǔn)確地定義計(jì)算機(jī)所需要使用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動(dòng)。自20世紀(jì)60年代以來(lái),世界上公布的程序設(shè)計(jì)語(yǔ)言已有上千種之多,但是只有很小一部分得到了廣泛的應(yīng)用。從發(fā)展歷程來(lái)看,程序設(shè)計(jì)語(yǔ)言可以分為機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言、非過(guò)程化語(yǔ)言4代。C語(yǔ)言就是高級(jí)語(yǔ)言中的代表之一。程序設(shè)計(jì)方法
1.程序設(shè)計(jì)程序設(shè)計(jì)(Programming)是人們借助程序設(shè)計(jì)語(yǔ)言,將某一任務(wù)的處理對(duì)象、處理方法及處理步驟轉(zhuǎn)化為計(jì)算機(jī)能夠處理的符號(hào)序列(語(yǔ)句、命令、指令),以及指揮計(jì)算機(jī)完成相應(yīng)任務(wù)的過(guò)程。它是軟件構(gòu)造活動(dòng)中的重要組成部分。程序設(shè)計(jì)方法
2.結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)思想源于20世紀(jì)60年代,是至今仍被廣泛應(yīng)用的一種計(jì)算機(jī)軟件開(kāi)發(fā)技術(shù)。所謂的結(jié)構(gòu)化程序設(shè)計(jì)方法指的是“按照一組能夠提高程序易讀性和易維護(hù)性的規(guī)則進(jìn)行程序設(shè)計(jì)的方法”。其要點(diǎn)如下:原則:(1)程序的質(zhì)量標(biāo)準(zhǔn)是“清晰第一,效率第二”。(2)遵循自頂向下、逐步求精、模塊化設(shè)計(jì)的原則。自頂向下:指從問(wèn)題的全局下手,把一個(gè)復(fù)雜的任務(wù)分解成許多易于控制和處理的子任務(wù),子任務(wù)還可能做進(jìn)一步分解,如此重復(fù),直到每個(gè)子任務(wù)都容易解決為止。逐步求精:指在將抽象問(wèn)題分解成若干個(gè)相對(duì)獨(dú)立的小問(wèn)題時(shí),要逐級(jí)地由抽象到具體、又粗到細(xì)、由表及里進(jìn)行細(xì)化,直到將問(wèn)題細(xì)化到可以用程序的3種結(jié)構(gòu)來(lái)實(shí)現(xiàn)為止。模塊化:指解決一個(gè)復(fù)雜問(wèn)題是自頂向下逐層把軟件系統(tǒng)劃分成一個(gè)個(gè)較小的、相對(duì)獨(dú)立但又相互關(guān)聯(lián)的模塊的過(guò)程。程序設(shè)計(jì)方法
2.結(jié)構(gòu)化程序設(shè)計(jì)方法(3)使用順序、選擇、循環(huán)這三種基本結(jié)構(gòu)表示程序邏輯,即由這三種結(jié)構(gòu)組合或者嵌套而成,并且要滿足下面的條件。每個(gè)程序模塊只準(zhǔn)許有一個(gè)入口和一個(gè)出口。沒(méi)有死語(yǔ)句(永遠(yuǎn)執(zhí)行不到的語(yǔ)句)。沒(méi)有死循環(huán)(永遠(yuǎn)不能終止的循環(huán))。程序設(shè)計(jì)方法
2.結(jié)構(gòu)化程序設(shè)計(jì)方法(4)程序的書(shū)寫(xiě)必須,按照一定的規(guī)范和格式進(jìn)行。不能隨便拼湊。(5)程序的設(shè)計(jì)風(fēng)格要以好的可讀性為標(biāo)準(zhǔn),以使用程序的用戶為核心,外觀美觀,結(jié)構(gòu)流暢、語(yǔ)句簡(jiǎn)潔。程序設(shè)計(jì)的一般步驟
(1)分析問(wèn)題對(duì)于接受的任務(wù)要進(jìn)行認(rèn)真的分析,研究所給定的條件,分析最后應(yīng)達(dá)到的目標(biāo),找出解決問(wèn)題的規(guī)律,選擇解題的方法,完成實(shí)際問(wèn)題。(2)設(shè)計(jì)算法即設(shè)計(jì)出解題的方法和具體步驟。(3)編寫(xiě)程序?qū)⑺惴ǚg成計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,對(duì)源程序進(jìn)行編輯、編譯和連接。程序設(shè)計(jì)的一般步驟
(4)運(yùn)行程序,分析結(jié)果運(yùn)行可執(zhí)行程序,得到運(yùn)行結(jié)果。能得到運(yùn)行結(jié)果并不意味著程序正確,要對(duì)結(jié)果進(jìn)行分析,看它是否合理。不合理要對(duì)程序進(jìn)行調(diào)試,即通過(guò)上機(jī)發(fā)現(xiàn)和排除程序中的故障的過(guò)程。(5)編寫(xiě)程序文檔許多程序是提供給別人使用的,如同正式的產(chǎn)品應(yīng)當(dāng)提供產(chǎn)品說(shuō)明書(shū)一樣,正式提供給用戶使用的程序,必須向用戶提供程序說(shuō)明書(shū)。內(nèi)容應(yīng)包括:程序名稱、程序功能、運(yùn)行環(huán)境、程序的裝入和啟動(dòng)、需要輸入的數(shù)據(jù),以及使用注意事項(xiàng)等。算法算法(Algorithm)是對(duì)特定問(wèn)題求解方法與步驟的描述,是程序求解問(wèn)題的核心內(nèi)容。1.算法的特征(1)有窮性:一個(gè)算法應(yīng)包含有限的操作步驟,而不能是無(wú)限的。(2)確定性:算法中的每一個(gè)步驟都應(yīng)當(dāng)是確定的,而不應(yīng)當(dāng)是含糊的、摸棱兩可的。即必須有明確的含義,不能存在二義性。(3)可行性(有效性):算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。(4)有零個(gè)或多個(gè)輸入。算法1.算法的特征(5)有一個(gè)或多個(gè)輸出。一個(gè)好的算法不僅要滿足上述特征,還應(yīng)當(dāng)達(dá)到以下要求:正確性:運(yùn)行該算法,能獲得正確的結(jié)果??勺x性:易于理解和交流健壯性:具有很好的適應(yīng)能力,具有很好的容錯(cuò)能力。高效性:盡可能追求較少的時(shí)間與空間占用(越簡(jiǎn)單越好)。算法1.算法描述(1)自然語(yǔ)言描述法自然語(yǔ)言即人類日常使用的語(yǔ)言,可以是中文、英文等。用自然語(yǔ)言描述的算法通俗易懂,不用專門的訓(xùn)練,較為靈活。但是,自然語(yǔ)言也有一些缺點(diǎn)。首先自然語(yǔ)言具有歧義性,容易導(dǎo)致算法執(zhí)行的不確定性;其次自然語(yǔ)言的語(yǔ)句一般較長(zhǎng),導(dǎo)致描述的算法太長(zhǎng);再者自然語(yǔ)言表示的算法不便翻譯成計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。上面例1-2使用的即是自然語(yǔ)言描述法。算法1.算法描述(2)流程圖描述法流程圖是使用一組規(guī)定的符號(hào)、流程線和文字說(shuō)明來(lái)表示各種操作、算法的方法。其優(yōu)點(diǎn)是清晰簡(jiǎn)潔,直觀形象,容易表達(dá)選擇結(jié)構(gòu),不依賴于任何具體的計(jì)算機(jī)和計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,從而有利于不同環(huán)境的程序設(shè)計(jì)。其缺點(diǎn)是占用篇幅較長(zhǎng),畫(huà)起來(lái)比較麻煩,而且使用流程線可以使流程任意轉(zhuǎn)向,不能保證算法的結(jié)構(gòu)化。會(huì)造成閱讀和修改上的困難,可以借助于專用的流程圖制作軟件來(lái)提升繪制和修改。ANSI規(guī)定了一些常用的流程圖符號(hào),見(jiàn)表1-1所示。連接點(diǎn)算法
常用的流程圖符號(hào)符號(hào)符號(hào)名稱含義起止框算法的開(kāi)始和結(jié)束輸入/輸出框輸入/輸出操作處理框?qū)騼?nèi)的內(nèi)容進(jìn)行處理判斷框?qū)騼?nèi)的條件進(jìn)行判斷流程線流程線的方向連接點(diǎn)常用于換頁(yè)處,表示兩個(gè)具有同一標(biāo)記的“連接點(diǎn)”應(yīng)連接成一個(gè)點(diǎn)預(yù)先定義的進(jìn)程預(yù)先定義的函數(shù)、子例程等算法
流程圖表示3中基本結(jié)構(gòu)圖1-13(a)順序結(jié)構(gòu)圖1-13(b)選擇結(jié)構(gòu)算法
流程圖表示3中基本結(jié)構(gòu)算法例1-2比較兩個(gè)人的身高,將個(gè)子較高的那個(gè)人的身高輸出到屏幕上。要想解決上面的問(wèn)題,需要定義變量fTall1和fTall2分別存儲(chǔ)兩個(gè)人的身高,fMax存放身高的最大值,計(jì)算最大值即比較兩個(gè)數(shù)的大小。具體的步驟如下:(1)輸入2個(gè)人的身高分別存入變量fTall1和fTall2中。(2)比較2個(gè)人的身高,如果fTall1較大,則把第一個(gè)人的身高值賦值給fMax。否則,將第二個(gè)人的身高賦值給fMax。(3)輸出fMax的值,即個(gè)子較高的人的身高。
問(wèn)題分析算法例1-3用流程圖描述法描述例1-2的算法如圖1-14所示。算法1.算法描述(3)N-S流程圖描述法N-S流程圖類似流程圖,也被稱為盒圖或NS圖(NassiShneiderman圖)。1972年,N-S流程圖由美國(guó)學(xué)者I.Nassi和B.Shneiderman提出(以兩個(gè)人的名字的頭一個(gè)字母組成)。它是一種在流程圖中完全去掉流程線,將全部算法寫(xiě)在一個(gè)矩形陣內(nèi),在框內(nèi)還可以包含其他框的流程圖形式。即由一些基本的框組成一個(gè)大的框,N-S圖包括順序、選擇和循環(huán)三種基本結(jié)構(gòu)。其優(yōu)點(diǎn)是形象直觀,功能域明確,具有良好的可見(jiàn)度,很容易確定局部和全局?jǐn)?shù)據(jù)的作用域,很容易表示嵌套關(guān)系及模塊的層次關(guān)系。其缺點(diǎn)是不可能任意轉(zhuǎn)移控制,修改需要重畫(huà)整個(gè)圖。算法N_S流程圖表示3中基本結(jié)構(gòu)圖1-15(a)順序結(jié)構(gòu)圖1-15(b)選擇結(jié)構(gòu)算法
流程圖表示3中基本結(jié)構(gòu)圖1-15(c)當(dāng)型循環(huán)結(jié)構(gòu)
圖1-15(d)直到型循環(huán)結(jié)構(gòu)算法例1-4用N-S流程圖描述法描述例1-2的算法如圖1-16所示。算法1.算法描述(4)偽代碼描述法偽代碼描述法是使用介于自然語(yǔ)言與編程語(yǔ)言之間的文字和符號(hào)描述算法的方法。其優(yōu)點(diǎn)是回避了程序設(shè)計(jì)語(yǔ)言的嚴(yán)格、煩瑣的書(shū)寫(xiě)格式,書(shū)寫(xiě)方便,同時(shí)具備格式緊湊,易于理解,便于向計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言過(guò)渡。其缺點(diǎn)是偽代碼的種類繁多,語(yǔ)句不容易規(guī)范,有時(shí)會(huì)產(chǎn)生誤讀。算法例1-5用N-S流程圖描述法描述例1-2的算法如圖1-16所示。INPUTftall1,ftall2IFftall1>ftall2THENftall1-〉fmaxELSEftall2-〉fmaxPRINTfmax算法1.算法描述(5)程序設(shè)計(jì)語(yǔ)言描述法計(jì)算機(jī)是無(wú)法識(shí)別自然語(yǔ)言、流程圖和為代碼的。只有使用程序設(shè)計(jì)語(yǔ)言編寫(xiě)的程序,經(jīng)過(guò)編譯、連接成可執(zhí)行程序后,才能被計(jì)算機(jī)執(zhí)行。因此,使用任何方法描述的算法,最終都要將其轉(zhuǎn)化成程序。其優(yōu)點(diǎn)是可被計(jì)算機(jī)識(shí)別并執(zhí)行。其缺點(diǎn)是必須嚴(yán)格遵循所使用的語(yǔ)言的語(yǔ)法規(guī)則。算法例1-6用程序設(shè)計(jì)語(yǔ)言描述法描述例1-2的算法如下所示。#include"stdio.h"voidmain(){floatftall1,ftall2,fmax;scanf("%f%f",&ftall1,&ftall2);if(ftall1>ftall2)fmax=ftall1;elsefmax=ftall2;printf("%f",fmax)
;}軟件編程規(guī)范1.程序的可讀性原則(1)編程規(guī)范概要①程序結(jié)構(gòu)清晰,簡(jiǎn)單易懂,單個(gè)函數(shù)的程序行數(shù)不得超過(guò)100行。②打算干什么,要簡(jiǎn)單,直截了當(dāng),代碼精簡(jiǎn),避免垃圾程序。③盡量使用標(biāo)準(zhǔn)庫(kù)函數(shù)和公共函數(shù)。④不要隨意定義全局變量,盡量使用局部變量。⑤使用括號(hào)以避免二義性。軟件編程規(guī)范1.程序的可讀性原則(2)可讀性要求①可讀性第一,效率第二。②主要變量(結(jié)構(gòu)、聯(lián)合、類或?qū)ο螅┒x或引用時(shí),注釋能反映其含義。③常量定義(define)有相應(yīng)說(shuō)明。④處理過(guò)程的每個(gè)階段都有相關(guān)注釋說(shuō)明。⑤利用縮進(jìn)來(lái)顯示程序的邏輯結(jié)構(gòu),縮進(jìn)量一致,可以以Tab鍵為單位。⑥循環(huán)、分支層次不要超過(guò)五層。⑦適當(dāng)?shù)氖褂米⑨?,注釋可以與語(yǔ)句在同一行,也可以在上行。⑧保持各種運(yùn)算的標(biāo)準(zhǔn)形式,通過(guò)括號(hào)避免運(yùn)算符的二義性。軟件編程規(guī)范2.匈牙利命名法匈牙利命名法是一種編程時(shí)的命名規(guī)范,以一個(gè)或者多個(gè)小寫(xiě)字母開(kāi)頭作為前綴,表示類型;前綴之后的是首字母大寫(xiě)的一個(gè)單詞或多個(gè)單詞組合,該單詞要指明變量的用途。要基于容易記憶容易理解的原則。保證名字的連貫性是非常重要的。匈牙利命名法非常便于記憶,而且使變量名非常清晰易懂,這樣,增強(qiáng)了代碼的可讀性,方便各程序員之間相互交流代碼。其缺點(diǎn)是在使用匈牙利命名法時(shí)會(huì)產(chǎn)生冗余。匈牙利命名法有其優(yōu)點(diǎn)但也有缺點(diǎn),這就需要在使用中揚(yáng)長(zhǎng)避短,合理應(yīng)用它。拓展案例案例1-1寫(xiě)出下面問(wèn)題的算法。問(wèn)題描述比較三個(gè)人的身高,將個(gè)子較高的那個(gè)人的身高輸出到屏幕上。拓展案例
算法設(shè)計(jì)拓展案例案例1-2寫(xiě)出下面問(wèn)題的算法。問(wèn)題描述本題是一個(gè)經(jīng)典的數(shù)學(xué)問(wèn)題。對(duì)于一個(gè)大于2的正整數(shù),判斷它是不是一個(gè)素?cái)?shù)。。拓展案例
算法設(shè)計(jì)拓展活動(dòng)查資料對(duì)比國(guó)內(nèi)外軟件行業(yè)發(fā)展現(xiàn)狀,體會(huì)軟件發(fā)展對(duì)國(guó)力的重要性,認(rèn)識(shí)“中國(guó)芯”,作為新時(shí)代的大學(xué)生,要認(rèn)真學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì),奮發(fā)圖強(qiáng),為祖國(guó)的騰飛,為實(shí)現(xiàn)中國(guó)夢(mèng)而努力學(xué)習(xí)!
制造中國(guó)芯,實(shí)現(xiàn)中國(guó)夢(mèng)項(xiàng)目小結(jié)本項(xiàng)目主要介紹了C語(yǔ)言的產(chǎn)生、發(fā)展和特點(diǎn),C程序的實(shí)現(xiàn)過(guò)程和結(jié)構(gòu),VisualC++6.0開(kāi)發(fā)環(huán)境,程序設(shè)計(jì)的思想、方法以及算法以及軟件編程的規(guī)范等。重點(diǎn)掌握在VisualC++6.0
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 家禽養(yǎng)殖購(gòu)銷合同范例
- 2025試用期勞動(dòng)合同是否合法
- 電梯過(guò)戶合同范例
- 圍欄安裝承攬合同范例
- 土地青苗轉(zhuǎn)讓合同范例
- 醫(yī)生聘用合同范例簡(jiǎn)易
- 皖江工學(xué)院《史學(xué)前沿講座下》2023-2024學(xué)年第一學(xué)期期末試卷
- 租借婚紗合同范例
- 吊車售賣協(xié)議合同范例
- 借錢蓋房合同范例
- 干部履歷表(中共中央組織部2015年制)
- 企業(yè)年終總結(jié)大會(huì)PPT模板
- 老鼠兔飼養(yǎng)方法 老鼠兔吃什么
- 國(guó)家開(kāi)發(fā)銀行生源地信用助學(xué)貸款申請(qǐng)表續(xù)貸
- 科創(chuàng)板知識(shí)測(cè)評(píng)20個(gè)題目的答案
- 去分母解一元一次方程專項(xiàng)練習(xí)(有答案)-ok
- 收款收據(jù)格式1頁(yè)
- 強(qiáng)化QHSE體系加強(qiáng)石油企業(yè)安全管理的具體措施
- 《鋼結(jié)構(gòu)工人三級(jí)安全教育記錄卡》
- 先張法預(yù)應(yīng)力混凝土管樁基礎(chǔ)技術(shù)規(guī)程
- 高爾夫文化與禮儀慕課測(cè)驗(yàn)作業(yè)答案
評(píng)論
0/150
提交評(píng)論