




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、*1教 學 用 書西南交通大學出版社 計算機程序設計基礎(C+)2017年*2考核方式實驗項目:20%半期考試:20%期末考試:60%課堂表現(xiàn):考勤三次缺勤,可取消期末考試資格*3第一章 引論 計算機程序設計基礎與Visual C+*4教學內(nèi)容1軟件開發(fā)和編制的概念;2計算機算法;3程序設計語言和開發(fā)工具4. C+基本程序框架5. 程序設計的簡單示例*5一、什么是程序?程序就是讓計算機完成某項任務的一系列命令的集合。人們編寫程序的過程稱為程序設計(程序開發(fā))。軟件開發(fā)和編制二、程序設計基本步驟 :1分析問題通過原始資料,取得對問題的一個清晰的理解,進而確定解決問題的目標(稱為輸出)以及實現(xiàn)該目
2、標所需要的條件(稱為輸入)2規(guī)劃數(shù)據(jù)結(jié)構與設計算法數(shù)據(jù)結(jié)構指數(shù)據(jù)的表示及相關操作;算法描述了求解問題的步驟或規(guī)則。設計合理的數(shù)據(jù)結(jié)構可以簡化算法,好的算法使程序具有更高的效率3驗證算法使用多組樣本數(shù)據(jù),通過手工計算,對方案的正確性進行證明和驗證4編碼實現(xiàn)選用一種程序設計語言(如C+語言)將算法轉(zhuǎn)換成計算機能夠理解的程序(稱為編程)5調(diào)試和測試程序“調(diào)試”就是查找和排除程序錯誤,直到能夠得到正確的運行結(jié)果為止?!皽y試”是在計算機上用樣本數(shù)據(jù)運行程序,測試代碼的正確性。程序中的錯誤可能是語法錯誤,也可能是邏輯錯誤。大多數(shù)語法錯誤容易找到和改正,但邏輯錯誤就較難找到,因為導致邏輯錯誤的原因很多*10
3、計算機算法什么是計算機算法?計算機算法規(guī)定了利用計算機解決某個(或某類)問題的一系列運算(或稱操作序列),它是對計算機解題方案 的準確與完整描述。一、算法的表示方法1.自然語言2.傳統(tǒng)流程圖3.結(jié)構化流程圖(1)三種基本結(jié)構的流程圖(2)N-S流程圖1.自然語言表示算法例 計算n!?2I2.傳統(tǒng)流程圖表示算法*16*17例將求n!的算法用傳統(tǒng)流程圖表示3.結(jié)構化流程圖表示算法ABA、順序結(jié)構(1)三種基本結(jié)構的流程圖 1966年,Bohra和Jacopini提出了三種基本結(jié)構作為表示算法的基本單元B、選擇結(jié)構(又稱選取結(jié)構)*20C、循環(huán)結(jié)構(又稱重復結(jié)構)*21(2)N-S流程圖 選擇結(jié)構
4、循環(huán)結(jié)構例 用N-S流程圖表示求n!的算法二、算法要素與效率:1、算法的特征有效性:算法中的每一步驟都能夠被計算機理解和執(zhí)行,不是抽象和模糊的有窮性:算法應該在執(zhí)行有限的步驟后結(jié)束,不能是無限的確定性:組成算法的每一步驟應該有確定的語義,不能有任何歧義有零個或多個輸入:部分數(shù)據(jù)在操作之前需要通過外界賦值,稱為輸入有一個或多個輸出:算法的運算結(jié)果即是算法的輸出正確性對于任意的一組輸入,包括合理和不合理的輸入,總能得到預期的結(jié)果??勺x性清晰易讀的算法有助于對算法的理解,易于調(diào)試和修改。健壯性對于非法的輸入,能夠做出適當?shù)姆磻虍惓G闆r處理。 高效性 占用計算機資源量(主要是運行時間和存儲空間)越少
5、效率越高。*272、算法的性能:*28通常把對算法效率的度量,稱為算法的復雜性分析。它是算法運行所需要的計算機資源的量,是依賴于算法要解決的問題的規(guī)模、算法的輸入和算法本身的函數(shù)。其中,需要的時間資源的量稱為時間復雜性,需要的存儲空間資源的量稱為空間復雜性。3、算法的評價*29例 欲在按非降次序排列的n個元素 a1,a2,an(aiai+1)中查找是 否有與b相同的元素。*30算法二:采用折半查找(二分查找)的方法,即先用位居中點的元素a(n/2)與b比較,若b= a(n/2),則查找成功。若ba(n/2),同時ba(n/2),則在a1,a2, ,a(n/2-1)中采用上述方法繼續(xù)查找;否則在
6、a(n/2+1),a(n/2+2),an中采用上述方法繼續(xù)查找。這種算法顯然要優(yōu)越于前一種算法,因為最多也只需要比較log2n次。不同類型的問題有不同的算法同一類型的問題也有多種算法解決一個實際問題時,可能會有多種算法可供使用,我們需要對這些算法進行分析,選擇最優(yōu)的一個使用。*32程序設計語言和開發(fā)工具一、程序設計語言簡介人與機器交換信息的語言。四個階段:1.機器語言2.匯編語言3.面向過程的高級語言4.面向?qū)ο蟮母呒壵Z言*331.機器語言:由二進制數(shù)組成的指令代碼的集合,機器能直接識別,各種機器指令系統(tǒng)互不相同。計算機編碼:常用ASCII碼(美國標準信息交換編碼)American Stand
7、ard Code for Information Interchange*34示例:按ASCII碼將A=1+2 寫成機器語言字符ASCII碼十進制A0100000165=001111016110011000149+001010114320011001050*35按ASCII碼寫出的A=1+2的機器語言:010000010011110100110001001010110011001機器語言優(yōu)點:質(zhì)量高、執(zhí)行速度快、占存儲空間小。機器語言缺點:編程難度大、指令難記、繁瑣、直觀性差、容易出錯、檢查調(diào)試困難、通用性差不兼容。2.匯編語言用助記符代替指令代碼,符號化 例:ADD (加法)DIV(除法)匯
8、編語言不能直接在機器上運行,要轉(zhuǎn)換成機器語言才能執(zhí)行。 例:匯編語言源程序:main proc paymov ax,dsegmov ax,0b00hadd ax,dxmov al,blmul bl,axmov bl,04h匯編語言優(yōu)點:質(zhì)量高、執(zhí)行速度快、占存儲空間小、可讀性有所提高。 匯編語言缺點:類似機器語言,通用性、可移植性差,與人的自然語言還相差很懸殊。機器語言和匯編語言也稱為低級語言。3.面向過程的高級語言 特點:接近人們習慣用的自然語言和數(shù)學語言,通用性強,可移植性好。常見語言:BASIC 、PASCAL、FORTRAN、C、.示例:input “Entername”;name$i
9、nput “Enterhoursworked”;hoursinput “Enter pay rate”;rategrossPay=hours*ratefederalTax=.02*grossPaysocSecTax=.07*grossPaystateTax=.06*grossPaynetPay=grossPay-federalTax-socSecTax-stateTaxprint name$,netPay4.面向?qū)ο蟮母呒壵Z言圍繞真實世界中的對象概念來組織模型,使問題求解更容易,程序的編制、調(diào)試和維護更容易。常見的面向?qū)ο蟪绦蛟O計語言:Visual C+、Visual Basic、Java.示
10、例:class Datepublic:void changeDate(int month,int day,int year);void displayDate(); private:int month;int day;int year;Date payDay;高級語言(面象過程及面象對象)所編寫的程序均不能直接在計算機上執(zhí)行,要轉(zhuǎn)換成機器指令代碼。兩種轉(zhuǎn)換方式:(1)編譯方式通過編譯程序(編譯、鏈接)將整個程序轉(zhuǎn)換為機器語言。(2)解釋方式通過解釋程序,逐行轉(zhuǎn)換為機器語言,轉(zhuǎn)換一行運行一行。編譯方式:解釋方式:*45二、VC+集成開發(fā)環(huán)境集成開發(fā)工具軟件:visual studio 2010是
11、Microsoft公司推出的一套功能完備的集成開發(fā)環(huán)境,它集編輯、編譯、調(diào)試、運行于一體,支持多種語言,可創(chuàng)建多類應用程序。*46基本操作步驟:(1)編輯源程序文件(.cpp)(2)編譯:將源程序文件轉(zhuǎn)換生成為計算機能直接識別執(zhí)行的目標程序文件(.obj)(3)鏈接:調(diào)用連接器將程序中所用到的所有庫文件與該目標文件連接成一個整體,生成可直接運行的可執(zhí)行文件(.exe)(4)運行*471.創(chuàng)建項目:“文件”-“新建”-“項目”*482.添加文件:在項目上右擊鼠標鍵 “添加”-“新建項”*493.編輯源文件:在打開的源文件中輸入程序代碼*504.編譯:“生成”-“生成解決方案”*515.執(zhí)行程序:
12、“程序”-“開始執(zhí)行(不調(diào)試)”*526. 程序調(diào)試技巧:(1)編譯錯誤:錯誤和警告兩種(2)程序中那些不符合語法的標識符和語句會以紅色波浪線給出警示;(3)在編譯輸出框中的錯誤上雙擊鼠標左鍵,會在程序出錯的位置附近行頭出現(xiàn)一個蘭色的箭頭。void main( ).函數(shù)1函數(shù)n變量定義語句;輸入語句;算法語句;輸出語句;C+基本程序框架程序頭程序體預編譯命令主函數(shù)其它函數(shù)#includeusing namespace std;預編譯命令 #include 文件名編譯程序時把指定的文件的內(nèi)容插入到該行的位置。#include 表示把庫文件iostream中的內(nèi)容包含到該程序文件中來。庫文件是系統(tǒng)
13、提供的能實現(xiàn)某些特定功能的文件,如本例中用到系統(tǒng)提供的輸出功能。指出包含的文件名可以使用和“ ”兩種符號#include #include “c:jysiostream”表示只在系統(tǒng)目錄中尋找要包含的文件“ ”表示在指定的路徑中尋找要包含的文件多條#include命令必須分行書寫,其后不能加分號。包含庫文件時有兩種可能形式:#include using namespace std;或#include 早些系統(tǒng)實現(xiàn)是將標準庫功能定義在全局空間中,聲明在帶.h后綴的頭文件中C+標準程序庫中的所有標識符都定義在名為std的名稱空間中C+程序可以由多個函數(shù)組成,但有且只能有一個main函數(shù)。main函
14、數(shù)在程序中位置可以任意,但主函數(shù)main代表了程序執(zhí)行的起始點和終止點,即程序總是從主函數(shù)main的第一條語句開始執(zhí)行,并結(jié)束于主函數(shù)的最后一條語句。主函數(shù) (1)函數(shù)名之后必須有一對小圓括號( ),括號中可以有參數(shù)。(2)“”與“”必須配對使用,函數(shù)體內(nèi)可以包含任意多行語句,每個語句以“;”結(jié)束。(3) C+程序的書寫很靈活,一行可書寫多個語句,一個語句可以寫成多行;所有符號均為英文小寫。void main( )函數(shù)體 int main( )函數(shù)體return 0; 表示返回一個整型數(shù)據(jù)表示函數(shù)沒有返回值 注釋 注釋信息與程序的運行無關,在編譯時被忽略。程序中“/”符號表明本行后續(xù)字符為注釋
15、信息。 夾在“/*”與“*/”之間的所有字符為注釋信息。/* */示例:#include using namespace std; void main( ) cout“10+15=10+15endl; cout“ 10*15=”10*15“n”; *61程序設計過程的簡單示例IPO圖:用輸入(Input),處理(Processing), 輸出(Output)來組織和總結(jié)問題分析結(jié)果的圖表。輸入處理輸出處理項:算法:處理項:處理過程中用到的中間值例、Martin已經(jīng)在Builder公司工作了4年,去年Martin的周薪提高了4%,這樣她目前周薪達到了250美元,下周Martin的周薪還要提高3%。編程顯示其下周漲薪后的周薪。分析:想要得到什么?下周漲薪后的周薪(新的周薪)要得到“下周漲薪后的周薪”需要知道什么?下周漲薪前的周薪(當前周薪)增長率輸入處理輸出當前周薪增長率處理項:算法:新的周薪通過上面分析已確定本任務的輸入、輸出項。 規(guī)劃算法(建立數(shù)學模型、設計算法)怎么樣求得“新的周薪”?當前周薪 + 當前周薪 * 增長率算法:S1:輸入當前周薪和增長率S2:計算周薪增長數(shù)目:當前周薪 * 增長率S3:計算新的周薪:新的周薪=當前周薪+周薪增長數(shù)目S4:輸出新的周薪輸入處理輸出當前周薪增長率處理項: 周薪增長數(shù)目算法:1.輸入當前周薪和增長率2.計算周薪增長數(shù)目: 當前周薪
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022年北京市密云初三二模英語試卷及答案
- 電力儲能知識培訓課件
- 2020-2021深圳安康學校初中部小學三年級數(shù)學上期末模擬試題及答案
- 罐清洗施工方案
- 水平挑網(wǎng)施工方案
- 養(yǎng)殖場黃魚買賣合同范本
- 加拿大勞務合同范例
- 各類評審評估整改工作的總結(jié)計劃
- 學校藝術作品創(chuàng)作展的策劃計劃
- 探索幼兒園環(huán)境教育的工作計劃
- 解決方案經(jīng)理
- 《無人機操控技術》 課件 項目 6 無人機自動機場
- 機制木炭的可行性報告
- 淺析履行職務過程中違紀違法的新特點及預防對策
- 臨床醫(yī)生如何進行臨床科研-2
- 第二章-醫(yī)用X線機概述課件
- 2023年高考語文全國甲卷作文深度解析及范文 課件31張
- 水電解質(zhì)紊亂酸堿平衡
- 肝膽腸排毒演示文稿
- 地面貼磚工藝施工規(guī)范及驗收標準
- 教師組織生活談心談話記錄內(nèi)容范文(5篇)
評論
0/150
提交評論