程序設(shè)計(jì)基礎(chǔ)01章_第1頁(yè)
程序設(shè)計(jì)基礎(chǔ)01章_第2頁(yè)
程序設(shè)計(jì)基礎(chǔ)01章_第3頁(yè)
程序設(shè)計(jì)基礎(chǔ)01章_第4頁(yè)
程序設(shè)計(jì)基礎(chǔ)01章_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)基礎(chǔ)知識(shí)

以封魔錄游戲中的具體功能描述流程圖以封魔錄游戲中的具體代碼描述C語(yǔ)言程序設(shè)計(jì)的基本知識(shí)1.1引言1.1.1計(jì)算機(jī)與信息社會(huì)計(jì)算機(jī)定義:一種在事先存入程序的控制下,能夠接收數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)、處理數(shù)據(jù)并提供處理結(jié)果的數(shù)字化電子設(shè)備。計(jì)算機(jī)工作流程圖輸入運(yùn)算與控制存儲(chǔ)輸出數(shù)據(jù)計(jì)算機(jī)結(jié)果1.1.2計(jì)算機(jī)中信息的表示

1.計(jì)算機(jī)內(nèi)所有信息采用二進(jìn)制表示

2.采用二進(jìn)制的原因:

1)二進(jìn)制只包含0和1,可以使用具有兩種不同穩(wěn)定狀態(tài)的元件來(lái)表示。

2)二進(jìn)制數(shù)的運(yùn)算規(guī)則簡(jiǎn)單,使得計(jì)算機(jī)中的運(yùn)算部件的結(jié)構(gòu)也比較簡(jiǎn)單。3.計(jì)算機(jī)中信息的表示數(shù)值直接轉(zhuǎn)換為二進(jìn)制字符采用ASCII編碼(7位、美國(guó)標(biāo)準(zhǔn)信息交換碼)其它信息(漢字、圖形、圖象、聲音、表格)也有相應(yīng)的編碼標(biāo)準(zhǔn)和規(guī)則。

計(jì)算機(jī)系統(tǒng)軟件系統(tǒng)硬件系統(tǒng)系統(tǒng)軟件(操作系統(tǒng)、編譯程序、診斷程序系統(tǒng)服務(wù)軟件等)應(yīng)用軟件(信息管理軟件、游戲等)CPU控制器運(yùn)算器輸入設(shè)備(鍵盤(pán)、鼠標(biāo)、手寫(xiě)筆、MIC等)輸出設(shè)備(顯示器、繪圖儀、打印機(jī)等)存儲(chǔ)器內(nèi)存儲(chǔ)器(RAM)外存儲(chǔ)器(硬盤(pán)、U盤(pán)、光盤(pán))1.1.3計(jì)算機(jī)系統(tǒng)的組成HIT-CProgramming

C程序的程序設(shè)計(jì)步驟Whattodo?可執(zhí)行文件擴(kuò)展名為.exe的文件

需求分析(Analysis)設(shè)計(jì)(Design)編碼(Write)編輯(Edit)編譯(Compile)連接(Link)運(yùn)行(Run)調(diào)試(Debug)Howtodo?擴(kuò)展名為.c的文件擴(kuò)展名為.obj的文件開(kāi)發(fā)C程序的步驟1.設(shè)計(jì)算法2.編寫(xiě)程序源代碼把自己的意圖寫(xiě)入源代碼3.編輯源程序4.編譯和連接5.調(diào)試程序

直到改正了所有的編譯錯(cuò)誤和運(yùn)行錯(cuò)誤6.運(yùn)行程序例子1輸入一個(gè)整數(shù),輸出其絕對(duì)值算法:1輸入一個(gè)整數(shù);2若該數(shù)為正數(shù),則其絕對(duì)值取該數(shù)的值

否則,其絕對(duì)值取該數(shù)的相反數(shù)值;3輸出其絕對(duì)值。程序#include<stdio.h>

void

main(){

intnumb;/*代表一個(gè)整數(shù)*/

intabs;/*代表運(yùn)算結(jié)果:絕對(duì)值*/

scanf(“%d”,&numb);/*輸入整數(shù)的值*/

if(numb>0)abs=numb;

elseabs=-numb;

printf(“numb的絕對(duì)值是:%d\n”,abs);}例子2封魔錄游戲主界面功能選擇算法:1初始化(令hang=0;ch=1等);

2如果處于第5個(gè)功能項(xiàng)且字符ch等于回車符,跳到第6步;

3顯示5個(gè)功能項(xiàng);

4輸入一個(gè)字符ch;5如果字符ch等于’s’(向下),則選擇下一功能項(xiàng)(hang增加2),其中如果已經(jīng)處于第5個(gè)功能項(xiàng),不再往下選。否則如果字符ch等于’w’(向上),則選擇上一功能項(xiàng)(hang減少2),其中如果已經(jīng)處于第1個(gè)功能項(xiàng),不再往上選。跳到第2步;

6結(jié)束程序intmain(void){ charch=1;//輸入的字符,初始設(shè)為1。 inthang=0;//用來(lái)控制光標(biāo)的行位置。共有0,2,4,6,

8//四個(gè)有效值,初始設(shè)為0,即處于第1個(gè)功能項(xiàng)

//調(diào)用DOS命令;title為命令提示符窗口創(chuàng)建標(biāo)題。 system("title封魔錄"); system("colorf1");//color設(shè)置顏色

while(!(hang==8&&ch==13))//循環(huán)選擇。 {

//顯示5個(gè)功能項(xiàng)

if(hang==0)gotoxy(20,8); printf("%c%c",16,16); gamedifficult_show(); gotoxy(22,8); printf("開(kāi)始游戲"); gotoxy(22,10); printf("按鍵設(shè)置"); gotoxy(22,12); printf("難度設(shè)置"); gotoxy(22,14); printf("游戲制作"); gotoxy(22,16); printf("退出");

ch=getch();//無(wú)回顯獲取一個(gè)字符;

if(ch==key_down)//’s’

{

hang=hang+2;

if(hang>8)hang=hang-2;

gotoxy(20,6+hang);printf("");

gotoxy(20,8+hang);printf("%c",16);

}

elseif(ch==key_up)//’w’

{

hang=hang-2;

if(hang<0)hang=hang+2;

gotoxy(20,10+hang);printf("");

gotoxy(20,8+hang);printf("%c",16);

}

}

}程序的靈魂—算法一個(gè)程序應(yīng)包括:對(duì)數(shù)據(jù)的描述:在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式即數(shù)據(jù)結(jié)構(gòu)(datastructure)對(duì)操作的描述:數(shù)據(jù)進(jìn)行操作的具體步驟,即算法(algorithm)程序構(gòu)成公式NikiklausWirth提出的公式:

程序=數(shù)據(jù)結(jié)構(gòu)+算法目前已經(jīng)修改為程序=算法+數(shù)據(jù)結(jié)構(gòu)

+程序設(shè)計(jì)方法+語(yǔ)言工具和環(huán)境

算法及其表示算法:解決問(wèn)題所采取的一系列步驟例,要求計(jì)算圓的面積,算法為:

設(shè)置(輸入或指定)半徑值r;使用公式s=лr2;顯示(輸出)S的值。算法的特點(diǎn)(1)有輸入算法可以有零個(gè)或多個(gè)輸入。在一個(gè)算法的執(zhí)行過(guò)程中,提供需處理的數(shù)據(jù)或控制算法執(zhí)行過(guò)程的信息。(2)有輸出算法必須具有一個(gè)或多個(gè)執(zhí)行結(jié)果的輸出。沒(méi)有輸出的算法是一個(gè)無(wú)效的算法。算法的特點(diǎn)(3)有窮性任何算法都應(yīng)該在執(zhí)行有窮步驟之后結(jié)束。(4)確定性算法不能具有二義性。算法中每一步的語(yǔ)義都應(yīng)該清晰明了,明確指出應(yīng)該執(zhí)行什么操作,如何執(zhí)行操作。算法的特點(diǎn)(5)高效性根據(jù)算法編寫(xiě)出來(lái)的程序應(yīng)具有較高的時(shí)空效率:執(zhí)行時(shí)間短不占用過(guò)多內(nèi)存。算法的表示(描述)自然語(yǔ)言表示易理解和交流,但易產(chǎn)生二義性。偽代碼表示偽代碼使用介于自然語(yǔ)言和計(jì)算機(jī)語(yǔ)言之間的文字和符號(hào)來(lái)描述算法

算法的表示(描述)程序流程圖用圖形符號(hào)和文字說(shuō)明來(lái)表示數(shù)據(jù)處理的過(guò)程和步驟。N-S流程圖也稱方框圖;適于結(jié)構(gòu)化程序設(shè)計(jì)的算法描述工具。程序流程圖描述算法的良好工具。邏輯框和流向線組成。邏輯框是表示功能的圖形符號(hào)流向線指示邏輯處理順序邏輯框和流向線NY流程圖的邏輯框起止框表示程序的開(kāi)始和結(jié)束。處理框表示一種處理功能或程序段,框內(nèi)用文字簡(jiǎn)述其功能。邏輯框判斷框表示在此進(jìn)行判斷以決定程序的流向,框內(nèi)注明判斷條件。連接框框內(nèi)注有字母,當(dāng)流程圖跨頁(yè)時(shí),或者可能出現(xiàn)流向線交叉時(shí),用它來(lái)表示彼此之間的關(guān)系,相同符號(hào)的連接框表示它們是相互連接的。流向線流向線以單向箭頭表示。N-S流程圖1973年美國(guó)學(xué)者Nassi和Schneiderman提出N-S流程圖(也稱為方框圖),它是一種適于結(jié)構(gòu)化程序設(shè)計(jì)的算法描述工具。由于流程圖各步驟之間,一般總是按照從上到下順序執(zhí)行(N-S流程圖中取消了流向線)二選一結(jié)構(gòu)的表示ABYN滿足不滿足AB編寫(xiě)程序

算法用C語(yǔ)言進(jìn)行實(shí)現(xiàn),該過(guò)程也稱對(duì)算法進(jìn)行編碼;按照算法的流程順序編寫(xiě)程序;編寫(xiě)程序還必須進(jìn)行語(yǔ)句執(zhí)行過(guò)程的控制。語(yǔ)言提供的控制結(jié)構(gòu)1.順序:定義了語(yǔ)句按順序執(zhí)行的次序。2.選擇:根據(jù)某個(gè)條件的結(jié)果,對(duì)多條語(yǔ)句,選擇執(zhí)行其中的一條語(yǔ)句。3.循環(huán)(重復(fù)):根據(jù)某個(gè)條件的結(jié)果,重復(fù)執(zhí)行某些語(yǔ)句。4.調(diào)用:即在需要時(shí)運(yùn)行指定的代碼段。C語(yǔ)言程序的基本結(jié)構(gòu)#include<stdio.h>

void

main(){

數(shù)據(jù)定義;(變量說(shuō)明語(yǔ)句);

數(shù)據(jù)處理;(執(zhí)行語(yǔ)句);}數(shù)據(jù)結(jié)構(gòu)算法程序說(shuō)明每個(gè)C程序必須有一個(gè)主函數(shù)main{

}是函數(shù)開(kāi)始和結(jié)束的標(biāo)志若需要輸入和/或輸出功能,程序開(kāi)頭應(yīng)該為

#include<stdio.h>

#include<stdio.h>

void

main(){

printf(“我可以設(shè)計(jì)程序了.\n”);}

程序簡(jiǎn)例程序的作用是輸出一行信息:我可以設(shè)計(jì)程序了.自然語(yǔ)言描述:

1輸入一個(gè)整數(shù);2若該數(shù)為正數(shù),則其絕對(duì)值取該數(shù)的值

否則,其絕對(duì)值取該數(shù)的相反數(shù)值;3輸出其絕對(duì)值。例子1輸入一個(gè)整數(shù),輸出其絕對(duì)值算法偽碼表示BEGINREADnumbIFnumb>0abs=numbELSEabs=-numbPRINTabsENDBEGINREADnumbIFnumb<0numb=-numbPRINTnumbEND對(duì)比程序流程圖

---學(xué)生當(dāng)場(chǎng)畫(huà)BEGINREADnumbnumb>0abs=numbabs=-numbPRINTabsENDYN程序#include<stdio.h>

void

main(){

intnumb;/*代表一個(gè)整數(shù)*/

intabs;/*代表運(yùn)算結(jié)果:絕對(duì)值*/

scanf(“%d”,&numb);/*輸入整數(shù)的值*/

if(numb>0)abs=numb;

elseabs=-numb;

printf(“numb的絕對(duì)值是:%d\n”,abs);}例子2封魔錄游戲主界面功能選擇算法自然語(yǔ)言描述:1初始化(令hang=0;ch=1等);

2如果處于第5個(gè)功能項(xiàng)且字符ch等于回車符,跳到第6步;

3顯示5個(gè)功能項(xiàng);

4輸入一個(gè)字符ch;5如果字符ch等于’s’(向下),則選擇下一功能項(xiàng)(hang增加2),其中如果已經(jīng)處于第5個(gè)功能項(xiàng),不再往下選。否則如果字符ch等于’w’(向上),則選擇上一功能項(xiàng)(hang減少2),其中如果已經(jīng)處于第1個(gè)功能項(xiàng),不再往上選。跳到第2步;

6結(jié)束偽代碼BEGINSET0→hangSET1→chWHILEch==13andhang==8arenotsatisfiedBEGINDISPLAY5functionitems

READachardatatochfromkeyboard

IFch==‘s’then

hang+2→hang IFhang>8thenhang-2→hang SELECTthecorrespondingfunctionitem ELSEIFch==‘w’thenhang-2→hang IFhang<0thenhang+2→hang SELECTthecorrespondingfunctionitem END_IFEND_WHILEEND程序流程圖描述算法BEGINch==‘s’YNENDYNhang==8&&ch==13YNSET:0→hang,1→chDISPLAY5functionsREADchhang>8hang+2→hanghang-2→hangSELECTtheitemNNYNYNch==‘w’YNhang-2→hanghang+2→hangSELECTtheitemNNYNhang<0程序intmain(void){ charch=1;//輸入的字符,初始設(shè)為1。 inthang=0;//用來(lái)控制光標(biāo)的行位置。共有0,2,4,6,

8//四個(gè)有效值,初始設(shè)為0,即處于第1個(gè)功能項(xiàng)

//調(diào)用DOS命令;title為命令提示符窗口創(chuàng)建標(biāo)題。 system("title封魔錄"); system("colorf1");//color設(shè)置顏色

while(!(hang==8&&ch==13))//循環(huán)選擇。 {

//顯示5個(gè)功能項(xiàng)

if(hang==0)gotoxy(20,8); printf("%c%c",16,16); gamedifficult_show(); gotoxy(22,8); printf("開(kāi)始游戲"); gotoxy(22,10); printf("按鍵設(shè)置"); gotoxy(22,12); printf("難度設(shè)置"); gotoxy(22,14); printf("游戲制作"); gotoxy(22,16); printf("退出");

ch=getch();//無(wú)回顯獲取一個(gè)字符;

if(ch==key_down)//’s’

{

hang=hang+2;

if(hang>8)hang=hang-2;

gotoxy(20,6+hang);printf("");

gotoxy(20,8+hang);printf("%c",16);

}

elseif(ch==key_up)//’w’

{

hang=hang-2;

if(hang<0)hang=hang+2;

gotoxy(20,10+hang);printf("");

gotoxy(20,8+hang);printf("%c",16);

}

}

}注釋“/*……*/”、“//”表示注釋。注釋是對(duì)源程序進(jìn)行的注解,增加程序的可讀性;對(duì)編譯和運(yùn)行不起作用。庫(kù)函數(shù)C語(yǔ)言(編譯器)提供了許多基本的、常用的功能;分別保存在不同的文件中;以函數(shù)形式提供給程序員使用;庫(kù)函數(shù)分類(1)I/O功能,需要的包含文件:stdio.h

如:printf,scanf等。(2)字符(串)處理功能,string.h如:islower,strcat,strcmp,strlen等。(3)數(shù)學(xué)功能,math.h

如:sin,cos,exp,log,sqrt等。庫(kù)函數(shù)分類(4)時(shí)間、日期功能,time.h

如:time()(5)動(dòng)態(tài)存儲(chǔ)分配,alloc.h…C程序的結(jié)構(gòu)特點(diǎn)

C程序由函數(shù)(模塊)構(gòu)成;C程序可由一個(gè)或多個(gè)函數(shù)組成,其中必須有且僅有一個(gè)main函數(shù);C程序在執(zhí)行中可調(diào)用由C語(yǔ)言提供的各種標(biāo)準(zhǔn)庫(kù)函數(shù)和用戶自定義的函數(shù)。編程風(fēng)格1、通常使用小寫(xiě)英文字母;2、充分利用注釋功能,增加可讀性;3、程序中的各語(yǔ)句組按功能和嵌套關(guān)系縮進(jìn)編排,使程序的模塊和復(fù)合關(guān)系明顯;4、注意花括號(hào)對(duì)齊和配對(duì);5、適當(dāng)空格和空行可使程序更加清晰

字母是程序中的最小單位,是構(gòu)成其他語(yǔ)法單位的基礎(chǔ)。C規(guī)定的合法字符集是ASCII碼字符集。C語(yǔ)言字母表(字符集)C語(yǔ)言單詞符號(hào)標(biāo)識(shí)符關(guān)鍵字運(yùn)算符常量(分)界符標(biāo)識(shí)符——例子2中的hang、gotoxy等程序員對(duì)于使用的常量、變量、函數(shù)、語(yǔ)句標(biāo)號(hào)、類型定義等進(jìn)行命名的字符串。只能由字母、下劃線和數(shù)字組成,并以字母和下劃線開(kāi)始。非法:5class、m*n、studentname、int

見(jiàn)名知意:如sum、volume、result大小寫(xiě)字母有別:name不同于Name關(guān)鍵字(保留字、基本字)——例子2中的int、char、include、if、else等對(duì)某些標(biāo)識(shí)符,語(yǔ)言規(guī)定其具有特定的含義;不能另作他用。關(guān)鍵

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論