C語言程序設(shè)計(jì)-基于計(jì)算思維的培養(yǎng) 課件 第1章 C語言基本概念_第1頁
C語言程序設(shè)計(jì)-基于計(jì)算思維的培養(yǎng) 課件 第1章 C語言基本概念_第2頁
C語言程序設(shè)計(jì)-基于計(jì)算思維的培養(yǎng) 課件 第1章 C語言基本概念_第3頁
C語言程序設(shè)計(jì)-基于計(jì)算思維的培養(yǎng) 課件 第1章 C語言基本概念_第4頁
C語言程序設(shè)計(jì)-基于計(jì)算思維的培養(yǎng) 課件 第1章 C語言基本概念_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第一章C語言基本概念目錄/Contents計(jì)算機(jī)語言和程序算法、算法表示、算法優(yōu)化C語言編程C程序的結(jié)構(gòu)常量定義標(biāo)識符問題的提出為什么要學(xué)習(xí)計(jì)算機(jī)語言?需求:人與計(jì)算機(jī)交流需要人和計(jì)算機(jī)雙方都能接受和理解的語言。特點(diǎn):規(guī)則和嚴(yán)謹(jǐn),缺少靈活性。輾轉(zhuǎn)相除法求最大公約數(shù)問題的提出什么是計(jì)算機(jī)程序?概念:被連續(xù)執(zhí)行的一條條指令的集合稱為計(jì)算機(jī)程序。功能:為完成某種工作,人們將其解題步驟用指令的形式描述出來,并把這些指令存放在計(jì)算機(jī)內(nèi)存中,然后向計(jì)算機(jī)發(fā)出命令,計(jì)算機(jī)就會(huì)自動(dòng)逐條順序執(zhí)行指令,執(zhí)行完全部指令就能得到想要的結(jié)果。。問題的提出什么是程序?

程序是用特殊的編程語言寫出來的表達(dá)如何解決問題的過程或步驟。它不是用編程語言和計(jì)算機(jī)交談的,而是描述要求它如何做事情的過程或方法。編程語言的歡迎度為什么是C語言C語言仍然是編寫操作系統(tǒng)的不二之選工業(yè)界最受歡迎的語言存在大量的函數(shù)庫有些地方對程序的運(yùn)行效率有苛求-設(shè)備驅(qū)動(dòng)程序,高性能、實(shí)時(shí)中間件,嵌入式領(lǐng)域,并發(fā)程序設(shè)計(jì)等要繼承和維護(hù)早期的C語言系統(tǒng)交流、筆試、面試時(shí)最常見的語言程序設(shè)計(jì)步驟程序要做什么?可執(zhí)行文件擴(kuò)展名為.exe的文件

需求分析(Analysis)設(shè)計(jì)(Design)編碼(Write)編輯(Edit)編譯(Compile)連接(Link)運(yùn)行(Run)調(diào)試(Debug)程序怎么做?擴(kuò)展名為.c的文件(對C語言而言)語法分析差錯(cuò),翻譯生成擴(kuò)展名為.obj的文件設(shè)計(jì)算法編寫程序源代碼把自己的意圖寫入源代碼編輯源程序編譯和連接調(diào)試程序

直到改正了所有的編譯錯(cuò)誤和運(yùn)行錯(cuò)誤運(yùn)行程序C程序開發(fā)步驟C程序編譯環(huán)境VisualC++6.0Windows平臺上最流行的C/C++集成開發(fā)環(huán)境之一Dev-C++,)是一個(gè)Windows環(huán)境下C&C++開發(fā)工具功能沒有VisualC++6.0強(qiáng)大,但是體積小,輕便C程序編譯環(huán)境-VisualC++C程序編譯環(huán)境-VisualC++C程序編譯環(huán)境-VisualC++C程序編譯環(huán)境-VisualC++C程序編譯環(huán)境-Dev-C++C程序編譯環(huán)境-Dev-C++C程序編譯環(huán)境-Dev-C++算法的概念算法:是計(jì)算機(jī)解決問題的核心和靈魂。1.概念:解決一個(gè)特定問題而采取的方法和步驟。

利用計(jì)算機(jī)解決問題就是告訴計(jì)算機(jī)如何進(jìn)行計(jì)算的步驟,計(jì)算機(jī)所做的所有事情都叫計(jì)算。2.生活中的算法:樂譜、菜譜、訂票、安檢。例1:如何交換A瓶中的白酒和B瓶中的紅酒?算法描述步驟:①準(zhǔn)備一個(gè)空瓶C;②A倒入C;③B倒入A;④C倒入B。算法舉例如何交換變量a=5,b=10的值?算法舉例例2:計(jì)算正整數(shù)M、N(M>N)的最大公約數(shù)。算法描述步驟:①用N除M得整數(shù)R,R必須小于N;②若R=0,算法結(jié)束,輸出結(jié)果為N;否則繼續(xù)步驟③;③將M更新為N,N更新為R,并返回①繼續(xù)進(jìn)行算法的特征◆

有窮性:執(zhí)行有限個(gè)操作后終止?!舸_定性:算法中每一步的含義必須是明確的,不存在二義性?!粲行裕核惴ㄖ忻恳徊讲僮鞅仨毮苡行?zhí)行,不能執(zhí)行的操作是無效的?!粲辛銈€(gè)或多個(gè)輸入:執(zhí)行算法時(shí),從外界獲得必要信息。◆有一個(gè)或多個(gè)輸出:算法的解(結(jié)果)就是輸出。

算法的性能評價(jià)時(shí)間復(fù)雜度:通常以算法中基本操作重復(fù)執(zhí)行的頻度n作為時(shí)間度量標(biāo)準(zhǔn)。 T(n)=O(f(n))空間復(fù)雜度:算法執(zhí)行時(shí)存儲空間需求的度量。S(n)=O(f(n))如何設(shè)計(jì)一個(gè)好的算法◆正確性:合法的輸入數(shù)據(jù)都能得到滿足要求的結(jié)果?!艨勺x性:算法應(yīng)該易于閱讀和理解?!艚研裕寒?dāng)輸入數(shù)據(jù)非法時(shí),能作出反應(yīng)或進(jìn)行相應(yīng)處理。◆高效和低存儲空間:對于相同規(guī)模的問題,執(zhí)行時(shí)間短,占用空間少。小結(jié)是計(jì)算機(jī)解決問題的核心和靈魂,設(shè)計(jì)正確的算法是計(jì)算機(jī)解決問題的前提。算法的表示方法算法的表示方法:◆自然語言◆流程圖◆N-S圖◆偽代碼◆自然語言例1:求三個(gè)整數(shù)(a,b,c)中的最小數(shù)的算法?①比較前兩個(gè)數(shù);②將①中較小數(shù)與第三個(gè)數(shù)進(jìn)行比較;③步驟②中較小數(shù)即為所求的數(shù)?!袅鞒虉D例2:用流程圖表示兩個(gè)數(shù)的交換的算法。算法的表示方法◆N-S圖例3:用N-S圖表示求三個(gè)數(shù)最大數(shù)的算法。算法的表示方法算法的表示方法◆偽代碼ProcSumInputn0=>sumwhilei<=n{i+sum=>sumi+1=>i}PrintsumEnd流程圖和N-S圖基本圖素開始與結(jié)束框輸入/輸出圖框處理框圖分支圖框

N-S盒

流程圖循環(huán)圖框流程圖和N-S圖基本圖素舉例【例1.1】求ax2+bx+c=0之根(a<>0)◆自然語言表示①輸入方程的3個(gè)系數(shù)a,b,c;②計(jì)算delta=b2-4ac,根據(jù)計(jì)算結(jié)果做出求解結(jié)果的判斷和處理。若delta<0,執(zhí)行⑥,若delta=0,執(zhí)行⑤,否則delta>0,執(zhí)行③。③根據(jù)求根公式計(jì)算兩個(gè)實(shí)根x1,x2;④輸出x1,x2;轉(zhuǎn)⑦⑤輸出兩個(gè)相等實(shí)根;轉(zhuǎn)⑦⑥打印“無實(shí)根”;⑦結(jié)束?!袅鞒虉D表示算法舉例◆N-S圖表示:舉例【例1.2】輸入年份,判斷是否閏年。舉例舉例算法的優(yōu)化【例1.4】將任意大小的三個(gè)數(shù)a,b,c按從大到小的順序排序。問題的提出算法設(shè)計(jì)算法流程改進(jìn)的設(shè)計(jì)算法流程◆判斷次數(shù):5次、3次◆輸出語句個(gè)數(shù):6:1算法比較◆算法是解題步驟,其設(shè)計(jì)取決于人的創(chuàng)造;◆實(shí)際問題需要首先對問題進(jìn)行分析->抽象->建模,才能設(shè)計(jì)算法;◆算法有5個(gè)特征,設(shè)計(jì)時(shí)必須滿足;◆基于計(jì)算機(jī)的問題求解和數(shù)學(xué)方法有很大不同,需要計(jì)算思維;◆算法需要用工程化的方法表達(dá);◆算法有很大的優(yōu)化空間,體現(xiàn)人的智慧而不是機(jī)器的智慧。算法小結(jié)結(jié)構(gòu)化程序設(shè)計(jì)方法◆程序設(shè)計(jì)采用什么方法呢?結(jié)構(gòu)化程序設(shè)計(jì)方法的主要內(nèi)容:①為了使程序具有良好的結(jié)構(gòu),編程時(shí)只采用三種基本結(jié)構(gòu);②采用自頂向下的程序設(shè)計(jì)方法;③用流程圖表示算法。結(jié)構(gòu)化程序設(shè)計(jì)方法特征①以三種基本結(jié)構(gòu)的組合來描述程序。②整個(gè)程序采用模塊化結(jié)構(gòu)。③限制使用轉(zhuǎn)移語句。在迫不得已的情況下,也要十分謹(jǐn)慎,并且只能在一個(gè)結(jié)構(gòu)內(nèi)部跳轉(zhuǎn),不允許從一個(gè)結(jié)構(gòu)跳到另一個(gè)結(jié)構(gòu)。這樣可縮小程序的靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)執(zhí)行過程中之間的差異,避免人們誤解程序的功能。④以控制結(jié)構(gòu)為單位,每個(gè)結(jié)構(gòu)只有一個(gè)入口、一個(gè)出口,各單位之間接口簡單,邏輯清晰。⑤采用結(jié)構(gòu)化程序設(shè)計(jì)語言編寫程序,并采用一定的書寫格式使程序結(jié)構(gòu)清晰,易于閱讀。⑥培養(yǎng)良好的程序設(shè)計(jì)風(fēng)格。結(jié)構(gòu)化程序設(shè)計(jì)方法總體思想采用模塊化結(jié)構(gòu),自頂向下,逐步求精

模塊化程序設(shè)計(jì)問題分析和求解:采用自上而下、逐步求精的設(shè)計(jì)方法。程序完成:采用自底向上、逐步集成的設(shè)計(jì)方法,將自頂向下分解的模塊單獨(dú)設(shè)計(jì)、調(diào)試、測試完成后,再組裝成高級模塊或更復(fù)雜模塊,實(shí)現(xiàn)對復(fù)雜問題的自動(dòng)化計(jì)算。方程根的算法可以分解成三個(gè)小問題:輸入問題、求根問題、輸出問題。這三個(gè)小問題就是求方程根的三個(gè)功能模塊:輸入模塊M1、求根計(jì)算模塊M2和輸出模塊M3。其中M1模塊負(fù)責(zé)輸入方程的系數(shù),M2模塊根據(jù)算法解方程求根,M3模塊負(fù)責(zé)將所得結(jié)果顯示或打印出來。分解出來的三個(gè)模塊從總體上為順序結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計(jì)方法舉例【例1.5】求一元二次方程ax2+bx+c=0的根。圖1-22

M2模塊的細(xì)化圖圖1-23

M22模塊流程圖結(jié)構(gòu)化程序設(shè)計(jì)方法舉例結(jié)構(gòu)化程序設(shè)計(jì)方法舉例圖1-24求一元二次方程根的整體流程圖C語言編程【例1.6】要求在屏幕上輸出以下一行信息。

Hello,World!解題思路:

在主函數(shù)中用printf函數(shù)原樣輸出以上文字。#include<stdio.h>intmain(){

printf(”Hello,World!\n”);return0;}函數(shù)的名字,表示主函數(shù)C程序必須有一個(gè)main函數(shù)主函數(shù)類型C語言編程#include<stdio.h>intmain(){

printf(”Hello,World!\n”);return0;}

函數(shù)體輸出函數(shù)輸出語句C語言編程#include<stdio.h>intmain(){

printf(”Hello,World!\n”);return0;}

換行符當(dāng)main函數(shù)執(zhí)行結(jié)束前將整數(shù)0作為函數(shù)值表示語句結(jié)束用到函數(shù)庫中的輸入輸出函數(shù)時(shí)C語言編程C語言編程C語言允許用兩種注釋方式://:單行注釋可單獨(dú)占一行可出現(xiàn)在一行中其他內(nèi)容的右側(cè)/*……*/:塊式注釋可包含多行C語言程序的結(jié)構(gòu)特點(diǎn)C語言程序的結(jié)構(gòu)特點(diǎn):1.一個(gè)程序由一個(gè)或多個(gè)源程序文件組成小程序往往只包括一個(gè)源程序文件例1.6只有一個(gè)函數(shù)有的程序有兩個(gè)以上函數(shù)只包括一個(gè)源程序文件一個(gè)源程序文件中可以包括三個(gè)部分:預(yù)處理指令全局聲明函數(shù)定義#include<stdio.h>等在函數(shù)之外進(jìn)行的數(shù)據(jù)聲明每個(gè)函數(shù)用來實(shí)現(xiàn)一定的功能C語言程序的結(jié)構(gòu)特點(diǎn)C語言程序的結(jié)構(gòu)特點(diǎn)2.函數(shù)是C程序的主要組成部分一個(gè)C程序是由一個(gè)或多個(gè)函數(shù)組成的必須包含一個(gè)main函數(shù)(只能有一個(gè))每個(gè)函數(shù)都用來實(shí)現(xiàn)一個(gè)或幾個(gè)特定功能被調(diào)用的函數(shù)可以是庫函數(shù),也可以是自己編制設(shè)計(jì)的函數(shù)C語言程序的結(jié)構(gòu)特點(diǎn)C語言程序的結(jié)構(gòu)特點(diǎn):3.一個(gè)函數(shù)包括兩個(gè)部分:函數(shù)首部intmax(intx,inty)函數(shù)類型函數(shù)名參數(shù)類型參數(shù)名函數(shù)的第1行C語言程序的結(jié)構(gòu)特點(diǎn)3.一個(gè)函數(shù)包括兩個(gè)部分:函數(shù)首部intmax(intx,inty)若函數(shù)無參,在括弧中寫void或空括弧intmain(void)或intmain()C語言程序的結(jié)構(gòu)特點(diǎn)3.一個(gè)函數(shù)包括兩個(gè)部分:函數(shù)體聲明部分定義在本函數(shù)中所用到的變量對本函數(shù)所調(diào)用函數(shù)進(jìn)行聲明執(zhí)行部分:由若干個(gè)語句組成,指定在函數(shù)中所進(jìn)行的操作可以沒有聲明部分C語言程序的結(jié)構(gòu)特點(diǎn)3.一個(gè)函數(shù)包括兩個(gè)部分:函數(shù)體voiddump(){}可以是空函數(shù)C語言程序的結(jié)構(gòu)特點(diǎn)4.程序總是從main函數(shù)開始執(zhí)行5.C程序?qū)τ?jì)算機(jī)的操作由C語句完成C程序書寫格式是比較自由的一行內(nèi)可以寫幾個(gè)語句一個(gè)語句可以分寫在多行上為清晰起見,習(xí)慣上每行只寫一個(gè)語句C語言程序的結(jié)構(gòu)特點(diǎn)6.數(shù)據(jù)聲明和語句最后必須有分號7.C語言本身不提供輸入輸出語句8.程序應(yīng)當(dāng)包含注釋,增加可讀性程序設(shè)計(jì)的任務(wù)1.問題分析對于接手的任務(wù)要進(jìn)行認(rèn)真的分析研究所給定的條件分析最后應(yīng)達(dá)到的目標(biāo)選擇解題的方法找出解決問題的規(guī)律1.問題分析2.設(shè)計(jì)算法

設(shè)計(jì)出解題的方法和具體步驟程序設(shè)計(jì)的任務(wù)1.問題分析2.設(shè)計(jì)算法3.編寫程序4.對源程序進(jìn)行編輯、編譯和連接5.運(yùn)行程序,分析結(jié)果結(jié)果錯(cuò)了,程序肯定錯(cuò)結(jié)果對了,程序未必對程序設(shè)計(jì)的任務(wù)1.問題分析2.設(shè)計(jì)算法3.編寫程序4.對源程序進(jìn)行編輯、編譯和連接5.運(yùn)行程序,分析結(jié)果6.編寫程序文檔程序設(shè)計(jì)的任務(wù)變量、表達(dá)式和賦值floatF; /*F表示華氏溫度*/floatC; /*C表示攝氏溫度*/intage; /*age表示人的年齡*/floatweight; /*weight表示人的體重*/F=50.0;age=18;weight=65.0;變量【例1.7】給定圓的半徑,計(jì)算這個(gè)圓的面積和周長。/*circle.c*//*計(jì)算一個(gè)圓的面積和周長*/#include<stdio.h>

intmain(void){ floatradius=3.0,area,perimeter; /*變量radius、area和perimeter分別表示圓的半徑、面積和周長*/ area=3.1415926*radius*radius; perimeter=2*3.1415926*radius; printf("area:%.2fperimeter:%.2f",area,perimeter);/*格式符%.2f表示保留小數(shù)點(diǎn)后兩位有效數(shù)字或精確到0.01*/ return0; }變量、表達(dá)式和賦值表達(dá)式表達(dá)式從鍵盤讀取輸入scanf("%d",&a);scanf("%f",&radius);【例1.8】下面的程序是計(jì)算圓的面積和周長的改進(jìn)版,允許用戶自行輸入圓的半徑。/*Computestheareaandperimeterofacirclefrominputprovidedbytheuser*/#include<stdio.h>#definePI3.1415926intmain(void){ floatradius,area,perimeter; scanf("%f",&radius);/*從鍵盤輸入圓的半徑*/ area=3.1415926*radius*radius; perimeter=2*3.1415926*radius; printf("area:%.2fperimeter:%.2f",area,perimeter); return0; }scanf()從鍵盤讀取輸入常量定義宏常量【例1.9】下面的程序提示用戶輸入球的半徑,然后輸出球的體積。/*ball.c*//*Computesthevolumeofaballfrominputprovidedbytheuser*/#include<stdio.h>#definePI3.1415926 /*定義宏常量PI,它代表圓周率*/#defineSCALE_FACTOR(4.0/3.0)/

溫馨提示

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

評論

0/150

提交評論