Ch01-程序設計基礎_第1頁
Ch01-程序設計基礎_第2頁
Ch01-程序設計基礎_第3頁
Ch01-程序設計基礎_第4頁
Ch01-程序設計基礎_第5頁
已閱讀5頁,還剩90頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

出版日期:2013-07-01

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

趙子正

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

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

/portal

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

作業上傳

通知

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

考勤5%

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

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

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

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

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

if(條件)

操作A;else

操作B;條件成立嗎?操作A操作BYesNo59循環結構操作的重復執行C語言中的循環結構while循環結構do-while循環結構for循環結構60while循環結構

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

一般形式:

while(循環條件)

循環體條件成立嗎?操作步驟YN61while循環結構的執行過程

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

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

do

循環體

while(

循環條件);條件成立嗎?操作步驟NY63do-while循環結構的執行過程

每次循環前,先執行循環體,接著再求循環條件的值,當條件成立時,再執行循環體。如此反復,直到循環條件的值為假,結束循環操作。64for循環結構

由為循環有關變量賦初值的表達式、循環條件、循環后對變量的修正表達式和循環執行的循環體組成。一般形式:

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

循環體(計數器)賦初值循環條件成立嗎?操作修正(計數器)YN65for循環結構的執行過程

循環前,先執行賦初值表達式,為循環中的有關變量賦初值;

每輪循環開始,先求循環條件的值,若條件不成立,則結束循環;

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

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

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

其中i=9,8,7,…,2,1天數早上桃子數第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計數器初值為9k等于0?kk-1x1A10=1Ai=2×(Ai+1+1)x2*(x+1)結束NoYes計數器是否完成計數?計數器進行一次計數輸出x72結構化程序設計方法結構化的控制結構自頂向下模塊化設計方法逐步求精設計方法734.數據類型、變量和常量74常用數據類型字符字符串整數浮點數(即實數)75字符電腦能表示的任意一個字符。C語言能識別128個字符(教材一附錄B),如

Aa4%Q!+=]空格符C語言的所有字符數據都括在單引號中: ‘A’‘a’‘4’‘%’‘Q’‘!’‘+’‘=’‘]’‘’這些不是有效字符‘cisfun’‘Cishard’‘Ishouldbesailing!’‘\n’是換行符,也是一個字符。字符類型關鍵字:char76特殊字符的表示描述C語言中的表示方法Enter鍵(換行符)\n警報符(電腦響鈴)\aTab鍵(制表符)\t反斜杠字符\\雙引號\”77字符串字符串是多個字符組成的序列。C語言中字符串用雙引號”括起來,如: “Cisfuntolearn.”78練習C程序要輸出以下內容,在printf(.)函數中要如何表示:(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程序要輸出以下內容,在printf(.)函數中要如何表示:正確解答80整數整數指沒有小數的完整的數。

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

547.430.00.443849.1923-168.470.22浮點數類型關鍵字:floatdoublelongdouble82整數

溫馨提示

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

評論

0/150

提交評論