程序設(shè)計(jì)c第1章 引言-2015-1_第1頁
程序設(shè)計(jì)c第1章 引言-2015-1_第2頁
程序設(shè)計(jì)c第1章 引言-2015-1_第3頁
程序設(shè)計(jì)c第1章 引言-2015-1_第4頁
程序設(shè)計(jì)c第1章 引言-2015-1_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

程序設(shè)計(jì)基礎(chǔ)

信息科學(xué)與工程學(xué)院TEL-mail:hnxmxwt@163.com許偉濤2023/2/51課程安排總學(xué)時(shí):72學(xué)時(shí),授課48學(xué)時(shí),上機(jī)24學(xué)時(shí)考試方式:考勤(10分)+實(shí)驗(yàn)(20分)+機(jī)試(70分)上機(jī)安排: 時(shí)間:第7-16周(星期一,下午7-8節(jié))

第9周和第17周(星期三,上午3-4節(jié)) 地點(diǎn):第7-16周在6313,第17周在6316

考試時(shí)間:第18周2023/2/52教學(xué)要求

--掌握程序設(shè)計(jì)語言的基本知識(shí)

--常用算法

--初步的程序設(shè)計(jì)能力學(xué)習(xí)方法

--自主學(xué)習(xí)(閱讀、模仿、練習(xí)、提升)

--重視上機(jī)實(shí)踐2023/2/53主要內(nèi)容一、引言二、用C語言編寫程序

----在屏幕上顯示“HelloWorld!”2023/2/54計(jì)算機(jī)已經(jīng)成了社會(huì)的必需品Computersareeverywhere!2023/2/55WhatisaComputer?專業(yè)人員(Professional)非專業(yè)人員(Laypeople)對(duì)于從事洗衣機(jī)的研究、發(fā)展、設(shè)計(jì)和制造的人(專業(yè)人員,Professionals)來說,他們更需要要懂得洗衣機(jī)的工作原理。對(duì)于所有使用洗衣機(jī)的人(用戶,Users)來說,他們沒有必要懂得洗衣機(jī)的原理,只需要了解使用知識(shí)。2023/2/56計(jì)算機(jī)科學(xué)的研究領(lǐng)域算法與數(shù)據(jù)結(jié)構(gòu)(AlgorithmsandDataStructures)程序設(shè)計(jì)語言(ProgrammingLanguages)體系結(jié)構(gòu)(Architecture)操作系統(tǒng)(OperatingSystems)軟件方法學(xué)和工程學(xué)(SoftwareMethodologyandEngineering)人機(jī)交互(Human-ComputerCommunication)2023/2/57計(jì)算機(jī)科學(xué)的研究領(lǐng)域數(shù)值和符號(hào)計(jì)算(NumericalandSymbolicComputation)數(shù)據(jù)庫和信息檢索(DatabasesandInformationRetrieval)人工智能和機(jī)器人技術(shù)(ArtificialIntelligenceandRobotics)圖形學(xué)(Graphics)組織信息學(xué)(OrganizationalInformatics)生物信息學(xué)(Bioinformatics)2023/2/58計(jì)算機(jī)系統(tǒng)的組成計(jì)算機(jī)系統(tǒng)硬件系統(tǒng)軟件系統(tǒng)主機(jī)外部設(shè)備中央處理器內(nèi)存儲(chǔ)器運(yùn)算器控制器輸入設(shè)備輸出設(shè)備外存儲(chǔ)器系統(tǒng)軟件應(yīng)用軟件工具軟件語言處理軟件操作系統(tǒng)2023/2/59為什么選擇C語言?C對(duì)于信息類專業(yè)后續(xù)課程學(xué)習(xí)十分重要面向?qū)ο蟪绦蛟O(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)操作系統(tǒng)通信協(xié)議單片機(jī)、ARM編程……2023/2/510相比較其他高級(jí)語言(C++、JAVA),C語言更低級(jí)。設(shè)備驅(qū)動(dòng)程序和操作系統(tǒng)只能用C編寫。微控制程序都是C編寫的。實(shí)現(xiàn)相同的功能,代碼行數(shù)最少,效率最高。很多其他語言都是以C為基礎(chǔ)的。發(fā)展很多年,有很多現(xiàn)成的代碼可用。2023/2/511如何盡快學(xué)會(huì)用C語言進(jìn)行程序設(shè)計(jì)了解程序設(shè)計(jì)語言(C語言)模仿、改寫、編寫通過不斷的編程實(shí)踐,逐步領(lǐng)會(huì)和掌握程序設(shè)計(jì)的基本思想和方法。2023/2/512教材:何欽銘,顏暉.C語言程序設(shè)計(jì).高等教育出版社,2008參考:譚浩強(qiáng).C程序設(shè)計(jì)(第三版).清華大學(xué)出版社,2005錢能.C++程序設(shè)計(jì)教程.清華大學(xué)出版社,1999百度貼吧:C語言吧網(wǎng)絡(luò)資源2023/2/5131引言一個(gè)C語言程序程序與程序設(shè)計(jì)語言C語言的發(fā)展歷史與特點(diǎn)實(shí)現(xiàn)問題求解的過程2023/2/514本章要點(diǎn)什么是程序?程序設(shè)計(jì)語言包含哪些功能?程序設(shè)計(jì)語言在語法上包含哪些內(nèi)容?結(jié)構(gòu)化程序設(shè)計(jì)有哪些基本的控制結(jié)構(gòu)?C語言有哪些特點(diǎn)?C語言程序的基本框架如何?形成一個(gè)可運(yùn)行的C語言程序需要經(jīng)過哪些步驟?如何用流程圖描述簡(jiǎn)單的算法?2023/2/5151.1一個(gè)C語言程序例1-1求階乘問題。輸入一個(gè)正整數(shù)n,輸出n!。問題分析: 階乘即給定一個(gè)數(shù)n,計(jì)算從1~n的連乘的乘積需要考慮:如何通知計(jì)算機(jī)要計(jì)算階乘的這個(gè)數(shù)是多少?

計(jì)算的結(jié)果怎么反饋出來?計(jì)算機(jī)是如何進(jìn)行計(jì)算的?輸入!scanf()輸出!printf()編程!自定義函數(shù)2023/2/5161.1一個(gè)C語言程序#include<stdio.h>/*編譯預(yù)處理命令*/intmain(void)/*主函數(shù)*/{

intn; /*變量定義*/

intfactorial(intn);/*函數(shù)聲明*/

scanf("%d",&n);/*輸入一個(gè)整數(shù)*/

printf(“%d\n”,factorial(n));/*調(diào)用函數(shù)計(jì)算階乘*/

return0;}intfactorial(intn) /*定義計(jì)算n!的函數(shù)*/{

inti,fact=1;

for(i=1;i<=n;i++)/*循環(huán)*/

fact=fact*i;

returnfact;}結(jié)論:C程序由函數(shù)組成;有且只有一個(gè)主函數(shù)main

變量需先定義后使用,占用一定內(nèi)存空間1預(yù)處理命令行2主函數(shù)3自定義函數(shù)幾個(gè)需了解的概念:變量、函數(shù)、控制結(jié)構(gòu),scanf(),printf()使用的基本方法2023/2/5171.2程序與程序設(shè)計(jì)語言程序人們?yōu)榻鉀Q某種問題用計(jì)算機(jī)可以識(shí)別的代碼編排的一系列加工步驟程序的執(zhí)行過程實(shí)際上是對(duì)程序所表達(dá)的數(shù)據(jù)進(jìn)行處理的過程程序設(shè)計(jì)語言提供了一種表達(dá)數(shù)據(jù)與處理數(shù)據(jù)的功能要求程序員按照語言的規(guī)范編程2023/2/5181.2程序與程序設(shè)計(jì)語言程序與指令(自學(xué))程序設(shè)計(jì)語言的功能程序設(shè)計(jì)語言的語法程序的編譯與編程環(huán)境2023/2/5191.2.1程序與指令(自學(xué))指令:計(jì)算機(jī)的一個(gè)最基本的功能如實(shí)現(xiàn)一次加法運(yùn)算或?qū)崿F(xiàn)一次大小的判別計(jì)算機(jī)的指令系統(tǒng):計(jì)算機(jī)所能實(shí)現(xiàn)的指令的集合程序:一系列計(jì)算機(jī)指令的有序組合2023/2/520程序與指令例1-2編寫程序,分別求和與乘積虛擬的計(jì)算機(jī)指令系統(tǒng)(7條指令)指令1:InputX將當(dāng)前輸入數(shù)據(jù)存儲(chǔ)到內(nèi)存的X單元指令2:OutputX將內(nèi)存X單元的數(shù)據(jù)輸出。指令3:AddXYZ將內(nèi)存X單元的數(shù)據(jù)與Y單元的數(shù)據(jù)相加并將結(jié)果存儲(chǔ)到Z單元。指令4:SubXYZ將內(nèi)存X單元的數(shù)據(jù)與Y單元的數(shù)據(jù)相減并將結(jié)果存儲(chǔ)到Z單元。指令5:BranchEqXYP比較X與Y,若相等則程序跳轉(zhuǎn)到P處執(zhí)行,否則繼續(xù)執(zhí)行下一條指令。指令6:JumpP程序跳轉(zhuǎn)到P處執(zhí)行。指令7:SetXY將內(nèi)存Y單元的值設(shè)為X。2023/2/521輸入輸入3個(gè)數(shù)A,B和C,求A+B+C的結(jié)果InputA;輸入第1個(gè)數(shù)據(jù)到存儲(chǔ)單元A中InputB;輸入第2個(gè)數(shù)據(jù)到存儲(chǔ)單元B中InputC;輸入第3個(gè)數(shù)據(jù)到存儲(chǔ)單元C中AddABD;將A、B相加并將結(jié)果存在D中AddCDD;將C、D相加并將結(jié)果存在D中OutputD;輸出D的內(nèi)容2023/2/522輸入2個(gè)數(shù)A和B,求A*B的結(jié)果1.InputA;輸入第1個(gè)數(shù)據(jù)到存儲(chǔ)單元A中2.InputB;輸入第2個(gè)數(shù)據(jù)到存儲(chǔ)單元B中3.Set0X;將X設(shè)為0,此處X用以統(tǒng)計(jì)A累加的次數(shù)4.Set0Z;將Z設(shè)為0,此處Z用以存放A*B的結(jié)果5.BranchEqXB9;判別X與B是否相等;若相等說明A已累加了B次,程序跳轉(zhuǎn)到第9條指令,輸出結(jié)果6.AddZAZ;Z=Z+A7.Add1XX;X=X+18.Jump5;程序跳轉(zhuǎn)到第5條指令,繼續(xù)循環(huán)執(zhí)行第6條、7條指令9.OutputZ;輸出Z的值,該值等于A*B2023/2/5231.2.2程序設(shè)計(jì)語言的功能數(shù)據(jù)表達(dá):表達(dá)所要處理的數(shù)據(jù)流程控制:表達(dá)數(shù)據(jù)處理的流程2023/2/524數(shù)據(jù)表達(dá)數(shù)據(jù)表達(dá):一般將數(shù)據(jù)抽象為若干類型數(shù)據(jù)類型:對(duì)某些具有共同特點(diǎn)的數(shù)據(jù)集合的總稱代表的數(shù)據(jù)(數(shù)據(jù)類型的定義域)在這些數(shù)據(jù)上做些什么(即操作或稱運(yùn)算)例如:整數(shù)類型包含的數(shù)據(jù):{…,-2,-1,0,1,2,…}作用在整數(shù)上的運(yùn)算:+、-、*、/等2023/2/525數(shù)據(jù)表達(dá)C語言提供的數(shù)據(jù)類型基本數(shù)據(jù)類型:程序設(shè)計(jì)語言事先定義好,供程序員直接使用,如整型、實(shí)型(浮點(diǎn)型)、字符型等。構(gòu)造類型:由程序員構(gòu)造,如數(shù)組、結(jié)構(gòu)、文件、指針等。各種數(shù)據(jù)類型的常量與變量形式常量(常數(shù))與變量2023/2/526流程控制結(jié)構(gòu)化程序設(shè)計(jì)方法將復(fù)雜程序劃分為若干個(gè)相互獨(dú)立的模塊模塊:一條語句(Statement)、一段程序或一個(gè)函數(shù)(子程序)等單入口、單出口2023/2/527任何程序都可以將模塊通過3種基本的控制結(jié)構(gòu)進(jìn)行組合來實(shí)現(xiàn)。順序結(jié)構(gòu)循環(huán)結(jié)構(gòu)分支結(jié)構(gòu)2023/2/528語句級(jí)控制:3種基本的控制結(jié)構(gòu)順序控制結(jié)構(gòu):自然順序執(zhí)行分支控制結(jié)構(gòu)(選擇結(jié)構(gòu)):根據(jù)不同的條件來選擇所要執(zhí)行的模塊循環(huán)控制結(jié)構(gòu):重復(fù)執(zhí)行某個(gè)模塊單位級(jí)控制:函數(shù)的定義與調(diào)用處理復(fù)雜問題時(shí),將程序分為若干個(gè)相對(duì)獨(dú)立的子程序(函數(shù))2023/2/529程序設(shè)計(jì)語言(ProgrammingLanguage)數(shù)據(jù):如何描述交流的內(nèi)容?(數(shù)據(jù)類型)運(yùn)算:對(duì)這些數(shù)據(jù)可以進(jìn)行哪些處理?控制:這些處理是怎么完成的?(控制結(jié)構(gòu))傳輸:人與計(jì)算機(jī)之間如何進(jìn)行數(shù)據(jù)的傳遞?(輸入輸出)2023/2/530發(fā)展歷程:機(jī)器語言匯編語言高級(jí)語言。1.2.3程序設(shè)計(jì)語言的語法用程序設(shè)計(jì)語言所寫的程序必須符合相應(yīng)語言的語法。源程序(源代碼,SourceCode)是一個(gè)字符序列,這些字符序列按順序組成了一系列“單詞”,“單詞”的組合就形成了語言有意義的語法單位,一些簡(jiǎn)單語法單位的組合又形成了更復(fù)雜的語法單位,最后一系列語法單位組合成程序。2023/2/531C語言的主要“單詞”(1)標(biāo)識(shí)符:C語言的標(biāo)識(shí)符規(guī)定由字母、數(shù)字以及下劃線組成,且第一個(gè)字符必須是字母或下劃線。(2)保留字(關(guān)鍵字):它們是C語言規(guī)定的、賦予它們以特定含義、有專門用途的標(biāo)識(shí)符。(3)自定義標(biāo)識(shí)符:包括在程序中定義的變量名、數(shù)據(jù)類型名、函數(shù)名以及符號(hào)常量名。有意義的英文單詞(4)常量:常量是有數(shù)據(jù)類型的,如,123、12.34、’a’(5)運(yùn)算符:代表對(duì)各種數(shù)據(jù)類型實(shí)際數(shù)據(jù)對(duì)象的運(yùn)算。如,+(加)、-(減)、*(乘)、/(除)、%(求余)、>(大于)、>=、==(等于)、=(賦值)、?:等2023/2/532

C語言的主要語法單位表達(dá)式:

2+a*4 a=b+3 i++變量定義:inti; charch1,ch2; floatf;語句:表達(dá)式語句:a=b+3; i++;控制語句:if()…else for(;;)復(fù)合語句:{x=x+1;x++}函數(shù)定義域調(diào)用:系統(tǒng)函數(shù):printf(),scanf(),abs(),sqrt()…自定義函數(shù):factorial()1.2.3程序與程序設(shè)計(jì)語言2023/2/5332023/2/534其中,語句:表達(dá)式語句:表達(dá)式加分號(hào)“;”分支語句:實(shí)現(xiàn)分支控制過程if(a>b)x=a;elsex=b;循環(huán)語句:實(shí)現(xiàn)循環(huán)控制的過程sum=0; /*初始化sum和i*/i=1;while(i<=100)/*while循環(huán)語句*/{sum=sum+i;i=i+1;}復(fù)合語句:用一對(duì)“{}”,將若干語句順序組合在一起就形成了一個(gè)程序段。其中,函數(shù)定義與調(diào)用

函數(shù)是完成特定任務(wù)的獨(dú)立模塊,函數(shù)的使用最主要涉及函數(shù)的定義與調(diào)用。輸入輸出:

C語言沒有輸入輸出語句,用庫函數(shù)printf、scanf等實(shí)現(xiàn)。2023/2/535程序的編譯與編程環(huán)境程序的編譯

編譯器(Compiler)程序→計(jì)算機(jī)直接能理解的指令序列編譯器:對(duì)源程序進(jìn)行詞法分析、語法與語義分析,生成可執(zhí)行的代碼。編程環(huán)境寫一個(gè)程序,包括編輯程序(Edit)、編譯(Compile)、調(diào)試(Debug)等過程。2023/2/536可執(zhí)行代碼源程序C語言上機(jī)過程編譯連接運(yùn)行2023/2/537test.cpptest.objtest.exe1.3C語言的發(fā)展歷史與特點(diǎn)發(fā)展歷史:1972年:貝爾實(shí)驗(yàn)室的DennisRitchie在B語言的基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)了C語言。1978年:B.W.Kernighan和D.Ritchie(簡(jiǎn)稱K&R)合著的《TheCProgrammingLanguage》是各種C語言版本的基礎(chǔ),稱之為舊標(biāo)準(zhǔn)C語言。1983年:美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)制定了新的C語言標(biāo)準(zhǔn),稱ANSIC。2023/2/538主要特點(diǎn)1.C語言是一種結(jié)構(gòu)化語言;2.C語言語句簡(jiǎn)潔、緊湊,使用方便、靈活;

32個(gè)關(guān)鍵字,9種控制語句,程序書寫形式自由。3.C語言程序易于移植;

C語言將與硬件有關(guān)的因素從語言主體中分離出來,通過庫函數(shù)或其他實(shí)用程序?qū)崿F(xiàn)它們。2023/2/5394.C語言有強(qiáng)大的處理能力;5.生成的目標(biāo)代碼質(zhì)量高,運(yùn)行效率高;6.?dāng)?shù)據(jù)類型檢查不嚴(yán)格,表達(dá)式出現(xiàn)二義性,不具備數(shù)據(jù)越界自動(dòng)檢查功能,運(yùn)算符的優(yōu)先級(jí)與結(jié)合性對(duì)初學(xué)者難于掌握。2023/2/5401.4實(shí)現(xiàn)問題求解的過程問題:求1~100間所有偶數(shù)的和。1.問題分析與算法設(shè)計(jì)

求在一定范圍內(nèi)(1~100)、滿足一定條件(偶數(shù))的若干整數(shù)的和,即累加和。2023/2/5412023/2/542思路:設(shè)置一個(gè)變量(sum),其初值為0,然后在1~100的數(shù)(變量i)中尋找偶數(shù),將它們一個(gè)一個(gè)累加到sum中。一步累加:sum=sum+i;重復(fù)累加,用循環(huán)語句實(shí)現(xiàn),在循環(huán)過程中:(1)判別i是不是偶數(shù):用分支控制語句來實(shí)現(xiàn)。(2)對(duì)循環(huán)次數(shù)進(jìn)行控制:通過i值的變化確定算法:算法:一組明確的解決問題的步驟,它產(chǎn)生結(jié)果并可在有限的時(shí)間內(nèi)終止。算法的描述:自然語言偽代碼流程圖:算法的圖形表示法2023/2/5432023/2/544編輯程序

生成程序的源文件,C語言源文件的后綴為.c或.cpp。2023/2/545#include<stdio.h>intmain(void){ inti,sum=0; for(i=1;i<=100;i++){if(i%2==0)sum=sum+i;}printf("%d",sum);return0;}

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論