Ch01-程序設(shè)計基礎(chǔ)_第1頁
Ch01-程序設(shè)計基礎(chǔ)_第2頁
Ch01-程序設(shè)計基礎(chǔ)_第3頁
Ch01-程序設(shè)計基礎(chǔ)_第4頁
Ch01-程序設(shè)計基礎(chǔ)_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1C程序設(shè)計計算機科學技術(shù)學院 肖川cxiao@2教材作者:夏寬理.趙子正編著

叢書名:21世紀高等院校計算機專業(yè)規(guī)劃教材出版社:中國鐵道出版社ISBN:9787113168513

出版日期:2013-07-01

開本:16開頁碼:239作者:夏寬理

趙子正

叢書名:21世紀高等院校計算機專業(yè)規(guī)劃教材出版社:中國鐵道出版社ISBN:9787113169657

出版日期:2013-08-01開本:16開頁碼:1653教學計劃章節(jié)名稱用時備注第1章程序設(shè)計基礎(chǔ)1周第2章基本數(shù)據(jù)類型及其運算2周第3章結(jié)構(gòu)化程序設(shè)計2周第4章數(shù)組2周期中考試校歷第8或第9周舉行,上機考試第5章函數(shù)2.5周第6章指針和引用2.5周第7章結(jié)構(gòu)和鏈表2周第8章文件處理1周期末考試上機考試上課+上機4教學資源

/portal

點擊頁面右上角“登錄”,使用統(tǒng)一身份認證的用戶名與口令,登錄后點擊頁面左側(cè)“所屬站點”,之后點擊所出現(xiàn)列表中課程站點資源,左側(cè)可看到“資源”、“作業(yè)”等鏈接。用途課件下載

作業(yè)上傳

通知

不講的章節(jié)5.96.5~6.86.107.5~7.995評分平時成績20%

考勤5%

作業(yè)15%期中成績40%期末成績40%67第1章 程序設(shè)計基礎(chǔ)8outline1.計算機和程序設(shè)計基礎(chǔ)知識2.C語言的歷史和特點3.C程序設(shè)計的基本方法4.數(shù)據(jù)類型、變量和常量91.計算機和程序設(shè)計基礎(chǔ)知識大學計算機信息科技教程(第二版)1011什么是程序設(shè)計語言?什么是計算機PersonalComputer/PC(x86架構(gòu)和AMD架構(gòu))ServerRouter、SwitchPDA、iPhone、Mobilephone一卡通讀卡機……編寫計算機軟件的語言計算機包括硬件和軟件讓計算機執(zhí)行某項具體任務(wù)而提供給它的詳細指令集合就是程序(program)12人與計算機人機界面(UI)輸出輸入輸入輸出13計算機結(jié)構(gòu)輸入設(shè)備輸出設(shè)備存儲設(shè)備(內(nèi)存、閃存)控制器運算器CPU數(shù)據(jù)流控制流軟件駐留于此,決定”數(shù)據(jù)流”及“控制流”的運動14內(nèi)存的結(jié)構(gòu)及計數(shù)Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))Byte(字節(jié))1Byte=8bits302G內(nèi)存,即2×2個Byte1K=21M=21G=21T=21P=2102030405001或…121.34192315常見的輸入和輸出設(shè)備輸入設(shè)備鼠標鍵盤掃描儀游戲桿麥克風攝像頭輸出設(shè)備顯示器打印機音箱輸入輸出設(shè)備耳麥網(wǎng)卡硬盤CD-ROM16用戶與計算機軟件使用軟件軟件操作手冊設(shè)計軟件程序設(shè)計語言17為什么要學程序設(shè)計這門課?加強邏輯思維的訓練掌握解決問題的一般方法為以后的編程需要作準備互聯(lián)網(wǎng)時代的基本素質(zhì)學分就業(yè)18程序設(shè)計語言的種類機器語言自然語言匯編語言高級語言?人工智能語言便于計算機理解便于人類理解匯編編譯反匯編LDGR0,RADDGR0,GR1……voidmain(){inta=2;intb=3;intc=a+b;printf(“%d”,c);}

求2與3之和010101111101100011……19程序設(shè)計語言的種類機器語言匯編語言高級語言ALGOL60FORTRANBASICPascalCC++JavaSQL面向過程語言面向?qū)ο笳Z言面向問題語言20各類高級語言的特點面向過程語言程序必須詳細地描述解題的過程和細節(jié)。面向?qū)ο笳Z言把問題中的對象抽象成類,利用繼承機制及多態(tài)特性提高程序的開發(fā)效率、改善程序的可靠性及可維護性。面向問題語言程序只需告訴計算機做什么,不必告訴計算機如何做。應(yīng)用范圍較窄。21面向過程語言的查找過程實例在某醫(yī)院的病歷資料文件中查找病歷號34629的病人信息:打開病歷文件關(guān)閉職工文件EndofFile?讀取文件中下一條記錄當前記錄的病歷號=34629?YesNoYesNo打印查找結(jié)果222.C語言的歷史和特點23為什么選擇C語言?歷史悠久,具有顯著特點便于以后學習C++和Java適用范圍廣支持開源操作系統(tǒng)Linux的開發(fā)支持嵌入式系統(tǒng)的開發(fā)支持通訊設(shè)備的開發(fā)24C語言歷史1960年ALGOL601963年,劍橋大學CPL(combinedprogramminglanguage)1967年,MatinRichardsBCPL(BasicCPL)1970年,KenThompsonB語言1971年,D.M.RitchieC語言1983年,ANSIANSIC1999年,ANSIC9925目前最流行的C語言版本MicrosoftC或稱MSCBorlandTurboC或稱TurboCAT&TC這些C語言版本不僅實現(xiàn)了ANSIC標準,而且在此基礎(chǔ)上各自作了一些擴充,使之更加方便、完美。

26C語言優(yōu)點語言表達能力強具有數(shù)據(jù)類型構(gòu)造能力和結(jié)構(gòu)化的程序控制結(jié)構(gòu)語言簡潔、緊湊、使用方便靈活產(chǎn)生執(zhí)行效率較高的代碼程序移植性較好27C語言的缺點C程序可能會漏洞百出靈活性容易造成漏洞C程序可能會難以理解簡明扼要的特性C程序可能會難以修改缺少把一個大規(guī)模的程序分解成許多可管理模塊的能力28C程序開發(fā)的4個階段1.編輯(手工完成)產(chǎn)生一個或多個文本文件(源程序),以.C作為文件擴展名2.編譯(編譯器完成)檢查源程序是否符合語法規(guī)定,把符合語法規(guī)定的源程序編譯成機器語言程序(目的代碼)3.鏈接(編譯器完成)把源程序的目的代碼和程序中使用的庫函數(shù)的目的代碼連接起來,產(chǎn)生可直接執(zhí)行的程序(可執(zhí)行文件)4.運行(機器完成)29用C程序解決問題的過程源程序(文本文件.c)機器語言程序(二進制目標代碼.obj)可執(zhí)行程序(二進制文件.exe)問題解決思路(算法)思考編輯編譯鏈接是否解決問題?運行結(jié)束Yes解題思路錯誤No需要修改程序的邏輯錯誤用C語言表述解題邏輯需要修改程序的語法錯誤橙色的操作可以在集成開發(fā)環(huán)境中進行30C程序的基本結(jié)構(gòu)輸入設(shè)備輸出設(shè)備存儲設(shè)備(內(nèi)存、閃存)控制器運算器CPU0條或多條#include語句voidmain(){

變量定義區(qū)域; 接收用戶的輸入; 內(nèi)部處理; 輸出結(jié)果;}31例子:求兩數(shù)之和綠色是注釋部分,用/*…*/或者//….把注釋內(nèi)容括起來32C語言是塊結(jié)構(gòu)語言在C語言中,函數(shù)是一種塊結(jié)構(gòu),是完成程序功能的基本構(gòu)件。C語言的基本組成是函數(shù)。函數(shù)允許一個程序的各個任務(wù)被分別定義和編碼,使程序模塊化。模塊獨立原則一個好的函數(shù)不僅能正確工作且不會對程序的其它部分產(chǎn)生副作用。33函數(shù)的基本形式34main()函數(shù)一個C程序是由一個固定名稱為main的主函數(shù)和若干個其他函數(shù)(可以沒有)組成。一個C程序必須有一個、也只能有一個主函數(shù)。主函數(shù)在程序中的位置可以任意,但程序執(zhí)行時總是從主函數(shù)開始,在主函數(shù)內(nèi)結(jié)束。主函數(shù)可以調(diào)用其他各種函數(shù)(包括用戶自己編寫的),但其他函數(shù)不能調(diào)用主函數(shù)。實驗1的第4題定義了max函數(shù)和main函數(shù)。第一個C程序啟動VisualC++6.0,點擊菜單【文件】/【新建】,所輸入的工程名稱將作為一個子目錄存在。353637新建一個文件點擊菜單【文件】/【新建】,38編輯該文件在“FileView”中雙擊所新建的文件,在右側(cè)窗口編輯并保存。39組建該工程點擊菜單【組建】/【編譯】,對新增文件進行編譯。點擊菜單【組建】/【組建】,對當前工程進行組件。40執(zhí)行該工程點擊菜單【組建】/【執(zhí)行】。41打開一個以前的工程運行VisualC++6.0點擊菜單【文件】/【打開工作空間】,選擇工程目錄下同名的.dsw文件。4243一個簡短但完整的C程序#include<stdio.h>/*在屏幕上打印一條消息*/voidmain(){ printf(“Thisismyfirstprogram!\n”);}44一個簡短但完整的C程序–cont.主函數(shù)前的關(guān)鍵字void表示該函數(shù)不返回結(jié)果。在函數(shù)名之后要有一對圓括號。函數(shù)體用花括號“{}”括住?;ɡㄌ柨梢杂脕砝ㄆ鹑魏我唤MC代碼,從而構(gòu)成復合語句或分程序。簡單C語句之后有一個分號“;”。程序中的“/*…*/”表示程序的注釋部分。在C++中,也可以使用“//…”作為注釋。#include<stdio.h>是編譯預處理命令行,指明有關(guān)輸入和輸出標準函數(shù)也將是程序的一部分。45#include屬于預處理器指令之一預處理器指令總是以符號#開始。這些指令不會在程序運行時產(chǎn)生任何行為,它們只在源碼編譯時發(fā)生作用。最常用的預處理指令#include#define46#include命令#include有兩種格式,二者幾乎等價#include<filename>#include“filename”#include的含義就是“文件合并”,在源碼編譯的初始階段,#include語句被#include后的文件的內(nèi)容替換了。47 :/*Partofyourprograme*/age=19;printf(“Iam%dyearsold”,age);#include“addr.h”printf(“Thatismyaddress”);/*Restofprogramfollows*/ :你的源文件printf(“\n220#HandanRoad\n”);printf(“Shanghai,China\n”);名為addr.h的文件 :/*Partofyourprograme*/age=19;printf(“Iam%dyearsold”,age);printf(“\n220#HandanRoad\n”);printf(“Shanghai,China\n”);printf(“Thatismyaddress”);/*Restofprogramfollows*/ :編譯器預處理之后看到的48#include引用內(nèi)置的函數(shù)庫當我們安裝編譯器時,安裝程序會在硬盤上創(chuàng)建一個獨立的子目錄(…/include),存放編譯器附帶的各種#include文件,如stdio.h文件。這些文件稱為內(nèi)置#include文件(或內(nèi)置頭文件)。當我們想要使用某個內(nèi)置#include文件時,要使用帶尖括號的#include格式。在內(nèi)置文件中定義的函數(shù),稱為內(nèi)置函數(shù)。printf()在文件stdio.h中定義strcpy()在文件string.h中定義49stdio.h文件片段50#include引用自己的函數(shù)庫如果使用帶引號的#include格式,編譯器首先在源碼文件所在的磁盤目錄中搜索文件,如果沒找到,再到內(nèi)置的include目錄中搜索文件。如果你編寫自己的頭文件stdio.h,把它放在源碼目錄下,則在源碼中使用#include“stdio.h”將使得你的頭文件代替C語言的頭文件。練習(1)VisualC++6.0的使用可參閱教材P2371.輸出如下形狀:51練習(2)教材一習題一1,2,3,4,5教材二實驗1的第1題教材二實驗1的第3題5253C程序設(shè)計的基本方法54程序設(shè)計=算法+數(shù)據(jù)結(jié)構(gòu)算法問題的求解方法數(shù)據(jù)結(jié)構(gòu)描述客觀事物的數(shù)據(jù)對象及其相互關(guān)系算法與數(shù)據(jù)結(jié)構(gòu)關(guān)系密切只有明確了問題的算法,才能較好地設(shè)計數(shù)據(jù)結(jié)構(gòu)好的算法常常依賴于合理的數(shù)據(jù)結(jié)構(gòu)55算法表示法之一——流程圖常見的流程圖符號56算法的結(jié)構(gòu)化描述順序結(jié)構(gòu)條件選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)57順序結(jié)構(gòu)操作依次執(zhí)行偽代碼: 操作A;

操作B;操作A操作B58條件選擇結(jié)構(gòu)條件(對情況的一種陳述)只能為真或假,故操作A與操作B只能執(zhí)行一個。偽代碼:

if(條件)

操作A;else

操作B;條件成立嗎?操作A操作BYesNo59循環(huán)結(jié)構(gòu)操作的重復執(zhí)行C語言中的循環(huán)結(jié)構(gòu)while循環(huán)結(jié)構(gòu)do-while循環(huán)結(jié)構(gòu)for循環(huán)結(jié)構(gòu)60while循環(huán)結(jié)構(gòu)

由一個循環(huán)條件和一個循環(huán)操作語句(稱為循環(huán)體)組成。

一般形式:

while(循環(huán)條件)

循環(huán)體條件成立嗎?操作步驟YN61while循環(huán)結(jié)構(gòu)的執(zhí)行過程

每次循環(huán)前,先求循環(huán)條件的值,當條件成立時,就執(zhí)行循環(huán)體,并接著再次求循環(huán)條件的值,以確定循環(huán)體是否再次被執(zhí)行。當循環(huán)條件的值一開始為假,或某次循環(huán)后其值為假,則結(jié)束循環(huán)操作。62do-while循環(huán)結(jié)構(gòu)

由一個循環(huán)條件和一個循環(huán)操作語句(稱為循環(huán)體)組成。一般形式:

do

循環(huán)體

while(

循環(huán)條件);條件成立嗎?操作步驟NY63do-while循環(huán)結(jié)構(gòu)的執(zhí)行過程

每次循環(huán)前,先執(zhí)行循環(huán)體,接著再求循環(huán)條件的值,當條件成立時,再執(zhí)行循環(huán)體。如此反復,直到循環(huán)條件的值為假,結(jié)束循環(huán)操作。64for循環(huán)結(jié)構(gòu)

由為循環(huán)有關(guān)變量賦初值的表達式、循環(huán)條件、循環(huán)后對變量的修正表達式和循環(huán)執(zhí)行的循環(huán)體組成。一般形式:

for(賦初值表達式;循環(huán)條件表達式;修正表達式)

循環(huán)體(計數(shù)器)賦初值循環(huán)條件成立嗎?操作修正(計數(shù)器)YN65for循環(huán)結(jié)構(gòu)的執(zhí)行過程

循環(huán)前,先執(zhí)行賦初值表達式,為循環(huán)中的有關(guān)變量賦初值;

每輪循環(huán)開始,先求循環(huán)條件的值,若條件不成立,則結(jié)束循環(huán);

當條件成立時,執(zhí)行循環(huán)體;然后求變量修正表達式,更新有關(guān)變量的值;接著再次求循環(huán)條件。如此反復,直到條件為假,結(jié)束循環(huán)。66算法舉例(1)問題:告訴計算機三個數(shù),計算機輸出其中最大的數(shù)。難點:計算機一次只能比較兩個數(shù)鍵盤顯示器153020ABCDCPU67算法:用三個變量A、B、C分別存放輸入的三個數(shù);先比較A和B:如果A>B,把A的值放入變量MAX如果A<=B,把B的值放入變量MAX再比較C和MAX如果C>MAX,把C的值放入變量MAX如果C<=MAX,MAX的值不變變量MAX的值即為最大的數(shù),輸出MAX算法舉例(1)-cont.68算法舉例(1)-cont.流程圖開始輸入A,B,CA>BMAXAMAXBC>MAXMAXC輸出MAX結(jié)束NoYesYesNo69算法舉例(2)猴子吃桃問題:有一堆桃子不知數(shù)目,猴子第一天吃掉一半,覺得不過癮,又多吃了一只,第二天照此辦理,吃掉剩下桃子的一半另加一個,天天如此,到第十天早上,猴子發(fā)現(xiàn)只剩一只桃子了,問這堆桃子原來有多少個?70算法舉例(2)-cont.假設(shè)第i天早上有Ai只桃子,根據(jù)題目有右圖。

A1=2×(A2+1)A2=2×(A3+1)……A9=2×(A10+1)

即Ai=2×(Ai+1+1)

其中i=9,8,7,…,2,1天數(shù)早上桃子數(shù)第1天A1第2天A2=A1/2–1第3天A3=A2/2–1第4天A4=A3/2–1第5天A5=A4/2–1第6天A6=A5/2–1第7天A7=A6/2–1第8天A8=A7/2–1第9天A9=A8/2–1第10天A10=A9/2-1=1又已知A10=1,故可求出A171算法舉例(2)-cont.開始k9計數(shù)器初值為9k等于0?kk-1x1A10=1Ai=2×(Ai+1+1)x2*(x+1)結(jié)束NoYes計數(shù)器是否完成計數(shù)?計數(shù)器進行一次計數(shù)輸出x72結(jié)構(gòu)化程序設(shè)計方法結(jié)構(gòu)化的控制結(jié)構(gòu)自頂向下模塊化設(shè)計方法逐步求精設(shè)計方法734.數(shù)據(jù)類型、變量和常量74常用數(shù)據(jù)類型字符字符串整數(shù)浮點數(shù)(即實數(shù))75字符電腦能表示的任意一個字符。C語言能識別128個字符(教材一附錄B),如

Aa4%Q!+=]空格符C語言的所有字符數(shù)據(jù)都括在單引號中: ‘A’‘a(chǎn)’‘4’‘%’‘Q’‘!’‘+’‘=’‘]’‘’這些不是有效字符‘cisfun’‘Cishard’‘Ishouldbesailing!’‘\n’是換行符,也是一個字符。字符類型關(guān)鍵字:char76特殊字符的表示描述C語言中的表示方法Enter鍵(換行符)\n警報符(電腦響鈴)\aTab鍵(制表符)\t反斜杠字符\\雙引號\”77字符串字符串是多個字符組成的序列。C語言中字符串用雙引號”括起來,如: “Cisfuntolearn.”78練習C程序要輸出以下內(nèi)容,在printf(.)函數(shù)中要如何表示:(1)Tabkeyisrepresentedwith\t.(2) Tabkeyisrepresentedwith\t.(注,此行縮進)(3)Tabkeyisrepresentedwith‘\t’.(4)Tabkeyisrepresentedwith“\t”.(1)“Tabkeyisrepresentedwith\t.”(2)“\tTabkeyisrepresentedwith\t.”(3)“Tabkeyisrepresentedwith‘\t’.”(4)“Tabkeyisrepresentedwith“\t”.”一種解答79正確答案(1)"Tabkeyisrepresentedwith\\t."(2)"\tTabkeyisrepresentedwith\\t."(3)"Tabkeyisrepresentedwith'\\t'."(4)"Tabkeyisrepresentedwith\"\\t\"."(1)Tabkeyisrepresentedwith\t.(2) Tabkeyisrepresentedwith\t.(注,此行縮進)(3)Tabkeyisrepresentedwith‘\t’.(4)Tabkeyisrepresentedwith“\t”.C程序要輸出以下內(nèi)容,在printf(.)函數(shù)中要如何表示:正確解答80整數(shù)整數(shù)指沒有小數(shù)的完整的數(shù)。

10540-121-68752不要讓整數(shù)以0開頭(除非是數(shù)字0),否則C語言會認為你輸入的數(shù)字是16進制的或者8進制的。053 (8進制的53,等于10進制的43)0x45 (16進制的45,等于10進制的69)整數(shù)類型關(guān)鍵字:short,int,long81浮點數(shù)帶小數(shù)點的數(shù)字稱為浮點數(shù)(floatpointnumber)。

547.430.00.443849.1923-168.470.22浮點數(shù)類型關(guān)鍵字:floatdoublelongdouble82整數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論