《計算機導(dǎo)論》第2章 程序語言_第1頁
《計算機導(dǎo)論》第2章 程序語言_第2頁
《計算機導(dǎo)論》第2章 程序語言_第3頁
《計算機導(dǎo)論》第2章 程序語言_第4頁
《計算機導(dǎo)論》第2章 程序語言_第5頁
已閱讀5頁,還剩206頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《計算機導(dǎo)論——計算思維和應(yīng)用技術(shù)》計算機第2章

程序語言2.1程序特征2.2程序結(jié)構(gòu)2.3程序員語言介紹2.4軟件開發(fā)方法2.1.3C語言程序結(jié)構(gòu)2.1.4程序解釋與編譯2.1.5程序編輯與運行2.1.1程序語言的發(fā)展2.1.2程序語言的類型[增強版]2.1.1程序語言的發(fā)展1、為程序設(shè)計做出杰出貢獻的科學(xué)家(1)艾倫·佩利與程序設(shè)計語言艾倫·佩利貢獻:1958年主持設(shè)計了ALGOL程序語言。在ALGOL60設(shè)計中,提出語法和語義區(qū)分開來。最早將程序設(shè)計引入了大學(xué)課堂。1960年代,在卡內(nèi)基-梅隆大學(xué)建立最早的計算機科學(xué)系。1982年,發(fā)表名文《編程箴言》。艾倫·佩利名言:如果你給別人講解程序時,看到對方點頭了,那你就拍他一下,他肯定是睡覺了。2.1.1程序語言的發(fā)展(2)迪科斯徹與結(jié)構(gòu)化程序設(shè)計迪科斯徹貢獻:1960年開發(fā)了ALGOL60編譯器;提出“Goto語句有害論”(廣泛用于結(jié)構(gòu)化程序設(shè)計);解決“哲學(xué)家就餐”問題(操作系統(tǒng)中信號量算法);發(fā)明圖論中最短路徑算法(應(yīng)用廣泛的網(wǎng)絡(luò)路由算法);銀行家算法的創(chuàng)造者(廣泛用于操作系統(tǒng)的算法)。迪科斯徹名言:編程的藝術(shù)就是處理復(fù)雜性的藝術(shù)。簡單是可靠的先決條件。計算機會不會思考這個問題就像問潛水艇會不會游泳一樣。哲學(xué)家就餐問題2.1.1程序語言的發(fā)展(3)高德納與數(shù)據(jù)結(jié)構(gòu)高德納貢獻:創(chuàng)建了算法分析領(lǐng)域;開創(chuàng)了數(shù)據(jù)結(jié)構(gòu)的最初體系;《計算機程序設(shè)計藝術(shù)》是計算機界最受敬重的參考書;提出文學(xué)編程的概念;開發(fā)了KnuthMorrisPratt(字符串查找)算法;開發(fā)了TEX排版軟件,成為科技論文的排版程序。高德納名言:如果我們有再三思考的機會,幾乎沒有一件事情是不能被簡化的。計算復(fù)雜性理論研究計算模型在各種資源(時間、空間等)限制下的計算能力。雖然計算機科學(xué)非常美妙,但它也不可能包辦一切!2.1.1程序語言的發(fā)展【擴展】中國最早的程序員。中國第一個程序員:董鐵寶(1956年)中國第一個女程序員:張綺霞(1957年)計算所成立的第一個程序設(shè)計組(1958年)2.1.1程序語言的發(fā)展【擴展】1956年,教育部從上海交通大學(xué)抽調(diào)電機專業(yè)高年級學(xué)生,到清華大學(xué)轉(zhuǎn)學(xué)新成立的計算機專業(yè),1957年中國第一批計算機專業(yè)學(xué)生畢業(yè)。2.1.1程序語言的發(fā)展2、不同類型程序語言的發(fā)展高級程序語言使得程序設(shè)計

不再過度地倚賴特定的計算

機硬件設(shè)備。最古老的高級程序語言:FORTRANCOBOLALGOLLISP2.1.1程序語言的發(fā)展【案例】第一個高級程序設(shè)計語言FORTRAN開發(fā)團隊。2.1.1程序語言的發(fā)展3、為什么有這么多程序語言程序語言已超過上千種(維基百科);試圖創(chuàng)建一種通用程序語言的嘗試沒有成功。多種程序語言的原因:沒有一種程序語言可以解決所有問題;環(huán)境變化時,需要新程序語言適用它;編程新手與高手之間的技術(shù)差距非常大;不同程序語言的運行效率和開發(fā)成本不相同。2.1.1程序語言的發(fā)展4、程序設(shè)計語言的學(xué)習(xí)大部分應(yīng)用程序開發(fā)具有初中知識水平即可;程序設(shè)計中需要記憶的英文單詞并不多;高水平編程需要查閱相應(yīng)的英文技術(shù)文檔:例如,如API(應(yīng)用程序編程接口),例如,SDK(軟件開發(fā)工具包),例如,MSDN(微軟開發(fā)人員網(wǎng)絡(luò))。學(xué)習(xí)編程語言的方法:多閱讀優(yōu)秀源程序;多練習(xí)編寫程序;多思考如何解決身邊的問題。計算機是一臺笨拙的機器,具有從事令人難以置信的聰明工作的能力,...計算機程序員則是一些聰明的人,具有從事令人難以置信的笨拙工作的能力。簡而言之,計算機與程序員實現(xiàn)了完美的配合。

——JamieShiers2.1.1程序語言的發(fā)展5、程序語言的發(fā)展趨勢程序語言結(jié)構(gòu)變化很少,主要成績是設(shè)計框架和設(shè)計工具的改進。例如,微軟.NETFramework框架有超過1萬個類和10萬個方法(子程序)。例如,程序集成開發(fā)環(huán)境包含:指令彩色顯示,指令和函數(shù)提示,錯誤提示,自動遞進,自動收縮,集成調(diào)試器和編譯器等。語言抽象級別越高,語言表現(xiàn)力越強大。程序語言發(fā)展趨勢:聲明式編程風(fēng)格,例如,Prolog、SQL、函數(shù)式編程等;動態(tài)程序語言,例如,PHP、Python等;并行編程,例如,UPC、Go等。2.1.1程序語言的發(fā)展【案例】程序設(shè)計語言之間的相互影響。計算機《計算機導(dǎo)論——計算思維和應(yīng)用技術(shù)》計算機第2章

程序語言2.1程序特征2.2程序結(jié)構(gòu)2.3程序員語言介紹2.4軟件開發(fā)方法2.1.3C語言程序結(jié)構(gòu)2.1.4程序解釋與編譯2.1.5程序編輯與運行2.1.1程序語言的發(fā)展2.1.2程序語言的類型2.1.2程序語言的類型1、程序語言的基本功能程序語言是計算機指令執(zhí)行流程的形式化語言。程序語言規(guī)范:數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu);指令類型和指令控制;調(diào)用機制和庫函數(shù);以及不成文的規(guī)定,如,遞進書寫、變量命名等。計算機是一臺快速,笨拙的機器,只有有限的能力。只能進行基本的數(shù)學(xué)運算與邏輯比較。必須由程序來指示它做什么事。

——GeorgeBeekman2.1.2程序語言的類型2、程序語言的基本組成(1)指令及指令流程控制程序由多條語句組成。語句有規(guī)定的關(guān)鍵字和語法結(jié)構(gòu)。(2)程序語言基本組成數(shù)據(jù)成分,如:數(shù)值、字符、數(shù)組等;運算成分,如:四則運算、邏輯運算等;控制成分,如:選擇、循環(huán)、調(diào)用等;傳輸成分,如:實參與形參、返回值等。2.1.2程序語言的類型3、程序語言的類型(1)程序語言的分類程序功能:算法描述型語言,如C、Java等;

數(shù)據(jù)描述型語言,如HTML、XML等。

編程難易:低級語言,如匯編語言;

高級語言,如C、Java等。

設(shè)計風(fēng)格:命令式語言,

結(jié)構(gòu)化語言,

面向?qū)ο笳Z言,

函數(shù)式語言,

腳本語言等;

應(yīng)用領(lǐng)域:通用程序語言,如C、Java等;

專用程序語言,如VHDL、TCL等;

執(zhí)行方式:解釋型語言,

編譯型語言,

編譯+解釋型語言。2.1.2程序語言的類型(2)機器語言機器語言是以二進制代碼表示的指令集合。優(yōu)點:占用內(nèi)存少、執(zhí)行速度快;缺點:難編寫、難閱讀、難修改、難移植。早期手工編寫的機器語言程序2.1.2程序語言的類型【案例】機器語言。指令部份示例1、0000代表加載(LOAD)2、0001代表存儲(STORE)暫存器部份示例1、0000代表暫存器A2、0001代表暫存器B存儲器部份示例1、000000000000代表地址為0的存儲器2、000000000001代表地址為1的存儲器3、000000010000代表地址為16的存儲器4、100000000000代表地址為211的存儲器集成示例1、0000,0000,000000010000代表LOADA,162、0000,0001,000000000001代表LOADB,13、0001,0001,000000010000代表STOREB,164、0001,0001,000000000001代表STOREB,12.1.2程序語言的類型(3)匯編語言匯編語言是用簡單符號(助記符)表示二進制代碼指令的語言。匯編語言與機器語言本質(zhì)上相同。不同CPU(如ARM與Intel的CPU)的機器指令不同,它們的匯編語言也不同。匯編程序的運行2.1.2程序語言的類型【案例】匯編語言與機器語言指令。匯編指令機器指令指令說明內(nèi)存地址機器代碼MOVAL,620010000011010110000將地址為2001的內(nèi)存單元中的數(shù)據(jù)(6),傳送到AL寄存器ADDAL,220030000001000000100將地址2003內(nèi)存單元中的數(shù)據(jù)(2)取出,將AL寄存器中數(shù)據(jù)(6)取出,兩者相加后,結(jié)果仍然保存在AL寄存器MOVSUM,AL2005000000000101000010100010將AL寄存器中的數(shù)據(jù)(8)送到SUM存儲單元HLT200811111000停機(指程序停止運行)2.1.2程序語言的類型【案例】用不同編程語言對2+6進行描述。用機器指令對“2+6”進行描述:10110000000001100000010000000010101000100101000000000000用匯編語言對“2+6”進行描述:MOVAL,6ADDAL,2MOVVC,AL用高級語言對“2+6”進行描述:A=2+62.1.2程序語言的類型(4)高級程序語言高級語言將許多機器指令合并成一條高級程序指令。2014年流行程序語言如表2-2所示。排名程序語言語言特色1C結(jié)構(gòu)化,處理能力強,可對硬件編程,通用性語言2Java面向?qū)ο螅缙脚_,多線程等,廣泛用于網(wǎng)絡(luò)和手機編程3Objective-C面向?qū)ο?,擴充C語言,蘋果計算機和智能手機編程4C++面向?qū)ο?,功能強大,過于復(fù)雜,大型系統(tǒng)軟件開發(fā)5PHP腳本語言,易于學(xué)習(xí),開源免費,網(wǎng)絡(luò)Web程序開發(fā)6C#面向?qū)ο?,跨平臺性不佳,網(wǎng)絡(luò)Web程序開發(fā)7VisualBasic面向?qū)ο?,簡單易學(xué),運行效率較低,一般軟件開發(fā)8Python腳本語言,面向?qū)ο?,語法簡潔。系統(tǒng)管理和網(wǎng)絡(luò)程序開發(fā)9Perl腳本語言,操作文本容易,開源免費,網(wǎng)絡(luò)Web程序開發(fā)10JavaScript腳本語言,易于學(xué)習(xí),開源免費,網(wǎng)絡(luò)Web程序開發(fā)2.1.2程序語言的類型【擴展】IEEESpectrum發(fā)布2014年編程語言排行榜。PC開發(fā)網(wǎng)站開發(fā)手機開發(fā)嵌入式開發(fā)2.1.2程序語言的類型【擴展】2002-2013年編程語言排行變化趨勢。2.1.2程序語言的類型【擴展】CodeForge網(wǎng)站2014年中國程序員調(diào)查報告。男女比例:男性80%,女性20%;喜歡語言:C++(24.5%),C(21.7%),Java(12.3%),C#(10.8%),Matlab#(8.4%)。地區(qū)分布:廣東(14.9%),北京(13.2%),江蘇(7.6%),上海(6.4%),山東(5.3%),浙江(5.3%),陜西(4.9%),湖北(4.7%),四川(4.4%)。程序員年齡:

20-29占33.5%,30-39占36.3%,40-49占10.6%,50-59占1.7%。使用操作系統(tǒng):Win7占61.3%,WinXP占20.2%,Win8占12.%,MacOS占3.3%,Linux占2%。2.1.2程序語言的類型【擴展】K網(wǎng)站2013年令人討厭的編程語言排行榜。2.1.2程序語言的類型【擴展】K網(wǎng)站2013年令人討厭的編程語言排行榜。(10)Python上榜理由:用代碼縮進指定塊結(jié)構(gòu);大量冒號和下劃線;模塊、變量名沖突等。如何避免:不要去Google、Yahoo或NASA工作。(9)LabVIEW(儀器編程語言)上榜理由:相當(dāng)抽象,將簡單問題變得極其復(fù)雜。如何避免:遠離儀器控制或工業(yè)自動化編程工作。(8)JavaScript上榜理由:區(qū)分大小寫;跨瀏覽器需要不同實現(xiàn);缺乏調(diào)試功能;奇怪的繼承規(guī)則。如何避免:不要去當(dāng)Web開發(fā)人員。(7)TCL(腳本語言,用于快速原型開發(fā)、腳本編程、GUI、測試)上榜理由:語法太簡單;缺乏指針;將數(shù)組存儲為字符串;混亂的變量范圍。如何避免:不要去Cisco、AOL或任何AOLserver平臺的公司工作。(6)COBOL(商業(yè)通用語言,一種功能很強而又極為冗長的語言)上榜理由:極其繁瑣的語法;版本之間不兼容;缺乏面向?qū)ο缶幊痰?。如何避免:不要去政府、金融領(lǐng)域或軍用企業(yè)工作。2.1.2程序語言的類型【擴展】K網(wǎng)站2013年令人討厭的編程語言排行榜。(5)C++上榜理由:龐大的函數(shù)集;手動內(nèi)存管理;編譯速度慢。如何避免:不要去Adobe、Google、游戲領(lǐng)域工作。(4)PHP上榜理由:不一致的命名約定;安全漏洞;混和在HTML、CSS中。如何避免:如果從事Web方面的工作,這很難避免。不去Facebook工作即可。(3)Java上榜理由:語法冗長;慢;不容易傳遞函數(shù);API過度設(shè)計。如何避免:不要去當(dāng)程序員,不要用AndroidSDK開發(fā)任何應(yīng)用程序。(2)Perl上榜理由:完成一件事有太多種方法;太簡潔;難以閱讀;難以維護。如何避免:不要去當(dāng)程序員。(1)VisualBasic上榜理由:語法冗長;需要動態(tài)鏈接庫才能運行;面向?qū)ο缶幊逃邢蕖H绾伪苊猓罕苊鉃殚_發(fā)老舊的Windows應(yīng)用程序?!队嬎銠C導(dǎo)論——計算思維和應(yīng)用技術(shù)》計算機第2章

程序語言2.1程序特征2.2程序結(jié)構(gòu)2.3程序員語言介紹2.4軟件開發(fā)方法2.1.3C語言程序結(jié)構(gòu)2.1.4程序解釋與編譯2.1.5程序編輯與運行2.1.1程序語言的發(fā)展2.1.2程序語言的類型2.1.3C語言程序結(jié)構(gòu)1、C語言程序案例【例2-2】編寫“hello.c”C語言程序。函數(shù)的一般結(jié)構(gòu):

[函數(shù)類型]函數(shù)名(函數(shù)參數(shù)表)

/*函數(shù)說明部分*/

{說明語句部分;

執(zhí)行語句部分;

/*函數(shù)體部分*/

}⑴⑵⑶⑷⑸#include<stdio.h>voidmain(){printf("HelloWorld!\n");}/*文件包含的庫函數(shù)*//*主函數(shù)*//*函數(shù)體開始*//*輸出語句*//*函數(shù)體結(jié)束*/頭文件主函數(shù)2.1.3C語言程序結(jié)構(gòu)【例2-3】編制C語言程序,隨機輸入2個整數(shù),輸出其中較大的一個數(shù)。程序包括一個主函數(shù)main()和一個被調(diào)用的自定義函數(shù)max()。⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀#include<stdio.h>voidmain(){intmax();inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("max=%d\n",c);}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}/*頭文件,包含庫函數(shù)<stdio.h>*//*void是函數(shù)類型,main是主函數(shù)名*//*主程序開始,自定義函數(shù)max為整型數(shù)*//*聲明a、b、c變量為整型數(shù)*//*scanf為輸入語句,%d為格式符*//*調(diào)用max自定義函數(shù),傳遞實參a,b值*//*顯示“max=”和c值,主程序結(jié)束*/

/*自定義函數(shù)max的x,y為形參*//*{為函數(shù)開始符,變量z為整型數(shù)*//*判斷語句,(x>y)是表達式*//*z=x、z=y是賦值語句,將y值賦給z*//*將z值返回主函數(shù)main;}為函數(shù)結(jié)束符*/

主函數(shù)(主程序)

自定義函數(shù)(子程序)2.1.3C語言程序結(jié)構(gòu)2、C語言程序的主要結(jié)構(gòu)C語言程序構(gòu)成C語言程序由函數(shù)構(gòu)成;每個C程序必須有一個主函數(shù)main;程序由“函數(shù)頭部”和“函數(shù)體”組成。程序注釋C語言中/**/之內(nèi)為程序注釋;程序注釋部分不會執(zhí)行;程序代碼說明“怎樣做”;程序注釋說明“為什么”這樣做;程序注釋是為了增強程序的易讀性和可維護性。2.1.3C語言程序結(jié)構(gòu)【案例】C語言程序結(jié)構(gòu)?!队嬎銠C導(dǎo)論——計算思維和應(yīng)用技術(shù)》計算機第2章

程序語言2.1程序特征2.2程序結(jié)構(gòu)2.3程序員語言介紹2.4軟件開發(fā)方法2.1.3C語言程序結(jié)構(gòu)2.1.4程序解釋與編譯2.1.5程序編輯與運行2.1.1程序語言的發(fā)展2.1.2程序語言的類型2.1.4程序解釋與編譯1、程序的解釋執(zhí)行方式程序語言編寫的指令序列稱為“源程序”;源程序必須翻譯成機器指令,計算機才能識別和執(zhí)行;翻譯方式:解釋執(zhí)行方式和編譯執(zhí)行方式。(1)程序的解釋執(zhí)行過程語言解釋器一般包含在軟件或操作系統(tǒng)內(nèi),如IE瀏覽器,Java虛擬機等。源程序解釋程序執(zhí)行代碼執(zhí)行結(jié)果2.1.4程序解釋與編譯【案例】程序的執(zhí)行過程。LanguageTranslationProcess源代碼源程序機器代碼目標(biāo)程序WritteninCetc.LanguageTranslatorProgram

編譯

解釋

匯編IFA=BTHEN1001101111010100101102.1.4程序解釋與編譯【案例】解釋程序的執(zhí)行過程。2.1.4程序解釋與編譯(2)解釋程序的特點解釋程序:如腳本語言PHP、Python等。優(yōu)點:實現(xiàn)簡單,交互性較好。缺點:程序運行效率低;程序獨立性不強。測試表明,不同語言程序的運行時間如下:C++CJavaJavaScriptSchemeGoPythonRubyPerlPHP1.051.01.64455060641002.1.4程序解釋與編譯2、程序的編譯執(zhí)行方式1950年代,程序員人工將程序翻譯成機器碼。葛麗絲·穆雷·霍普首先設(shè)計了A-0編譯程序。程序編譯完成后,生成的軟件可反復(fù)執(zhí)行。霍普發(fā)現(xiàn)的第一個程序BUG2.1.4程序解釋與編譯3、程序的編譯過程程序編譯過程:源程序→預(yù)處理→詞法分析→語法分析→語義分析→生成中間代碼→代碼優(yōu)化→生成目標(biāo)程序→程序連接→生成可執(zhí)行程序。以上過程不一定是順序進行。2.1.4程序解釋與編譯【案例】

GCC(GUN編譯器集合)編譯過程。2.1.4程序解釋與編譯(1)預(yù)處理編譯器:將預(yù)處理,匯編,編譯,連接等過程集成在一起的軟件。預(yù)處理目的:加快編譯速度。預(yù)處理內(nèi)容:宏定義,文件包含,條件編譯等。(2)詞法分析目的:分析和識別程序語句中的單詞(分詞)。方法:編譯器掃描源程序中的字符串,根據(jù)詞法規(guī)則識別出單詞。單詞類型:語言規(guī)定的關(guān)鍵字或保留字,如:for、if、end等;標(biāo)識符,如:x、i、list等變量名稱;常數(shù),如:PI值等;運算符和分界符,如:+、-、*、/、=、;、{、}等。2.1.4程序解釋與編譯【例2-6】對表達式:X1=(2.0+0.8)*C1進行詞法分析。X1=(2.0+0.8)*C12.1.4程序解釋與編譯(3)語法分析語法分析是生成語法樹,并進行語法正確性檢查;語法樹是程序結(jié)構(gòu)的樹形表示;編譯器利用語法樹進行語法規(guī)則分析,并且生成中間代碼。【例2-7】對表達式:X1=(2.0+0.8)*C1進行語法分析。2.1.4程序解釋與編譯【案例】條件語句:ifx==2then{x=a+b}的語法分析樹。2.1.4程序解釋與編譯(4)語義分析和生成中間代碼中間代碼是介于源語言和目標(biāo)語言之間的中間語言形式。目的:便于后面做優(yōu)化處理;中間代碼很容易生成目標(biāo)程序。形式:四元式、三元式、逆波蘭表達式等?!纠?-8】X1=(2.0+0.8)*C1四元式方式生成的中間代碼如表2-3所示。運算符左運算對象右運算對象中間結(jié)果四元式語義+2.00.8T1T1←2.0+0.8*T1C1T2T2←T1*C1=X1T2

X1←T22.1.4程序解釋與編譯(5)代碼優(yōu)化目的:為了得到高質(zhì)量的目標(biāo)程序?!纠?-9】表2-3中第1行是一個常量表達式,可以在編譯時計算出它的值,并存放在臨時單元(T1)中,不必生成目標(biāo)指令。優(yōu)化后的中間代碼如表2-4所示。運算符左運算對象右運算對象中間結(jié)果語義說明*T1C1T2T2←T1*C1=X1T2

X1←T22.1.4程序解釋與編譯(6)生成目標(biāo)程序優(yōu)化處理不僅與編譯技術(shù)有關(guān),而且與機器硬件關(guān)系密切。例如,充分利用硬件資源,減少對內(nèi)存的訪問次數(shù);例如,根據(jù)機器硬件的特點(如多線程等),調(diào)整目標(biāo)代碼。匯編過程實際上是把中間代碼翻譯成目標(biāo)機器指令的過程。(7)鏈接程序?qū)⒛繕?biāo)文件和函數(shù)庫連接,生成能執(zhí)行的機器代碼(軟件)。經(jīng)過上述過程后,源程序最終轉(zhuǎn)換成可執(zhí)行文件了?!队嬎銠C導(dǎo)論——計算思維和應(yīng)用技術(shù)》計算機第2章

程序語言2.1程序特征2.2程序結(jié)構(gòu)2.3程序員語言介紹2.4軟件開發(fā)方法2.1.3C語言程序結(jié)構(gòu)2.1.4程序解釋與編譯2.1.5程序編輯與運行2.1.1程序語言的發(fā)展2.1.2程序語言的類型2.1.5程序編輯與運行1、程序的編程環(huán)境(1)集成開發(fā)環(huán)境的功能IDE(集成開發(fā)環(huán)境)是一個綜合性工具軟件。大部分IDE是針對特定的程序語言量身打造的,如VisualBasic。IDE功能:程序語言編輯器,程序關(guān)鍵詞檢查器,程序調(diào)試器等;有些IDE包含編譯器或解釋器,如:MicrosoftVisualStudio;有些IDE不包含編譯器,如:Eclipse、SharpDevelop等;其他:類瀏覽器、物件檢視器、物件結(jié)構(gòu)圖等。2.1.5程序編輯與運行【案例】MicrosoftVisualStudio集成開發(fā)環(huán)境(IDE)。2.1.5程序編輯與運行(2)Code::Blocks集成開發(fā)環(huán)境工具軟件。功能:語法彩色醒目顯示;捆綁了minGW編譯器??梢跃帉懣缙脚_的C/C++程序。支持C、C++、Python、XML、CSS、Matlab,F(xiàn)ortran,批處理文件等。計算機2.1.5程序編輯與運行2、程序的運行平臺(1)程序運行的硬件環(huán)境運行平臺指程序運行時需要的硬件環(huán)境和操作系統(tǒng)環(huán)境。如,C#、VB等程序,只能支持x86系列CPU硬件環(huán)境。程序運行在不同硬件環(huán)境下時,需要對源程序進行重新編譯。如,C程序用VC編譯后,生成的exe文件可以在Windows下運行;如果C程序用GCC進行編譯,生成的執(zhí)行文件可以在Liunx上運行。不同程序?qū)PU和內(nèi)存的要求不相同。2.1.5程序編輯與運行(2)程序運行的操作系統(tǒng)環(huán)境程序運行需要操作系統(tǒng)環(huán)境的支持。如,Windows下的應(yīng)用程序,在Linux系統(tǒng)中不能運行;蘋果智能手機中的程序,在安卓智能手機中也不能運行。程序開發(fā)時,需要調(diào)用操作系統(tǒng)底層接口程序?qū)崿F(xiàn)某些功能。如,在Windows編程時,需要調(diào)用各種子程序接口。如窗口,對話框,菜單等?!队嬎銠C導(dǎo)論——計算思維和應(yīng)用技術(shù)》計算機第2章

程序語言2.1程序特征2.2程序結(jié)構(gòu)2.3程序員語言介紹2.4軟件開發(fā)方法2.2.3表達式2.2.4程序控制2.2.5函數(shù)調(diào)用2.2.1數(shù)據(jù)類型2.2.2標(biāo)識符2.2.1數(shù)據(jù)類型1、程序語言的主要數(shù)據(jù)類型數(shù)據(jù)類型的“域”和“操作”域指定該數(shù)據(jù)類型值的集合。如,整型域包含所有整數(shù):……-2,-1,0,1,2……操作是定義該數(shù)據(jù)類型的行為。如,算術(shù)操作:+、-、*、/等大部分程序語言支持的數(shù)據(jù)類型:整型(整數(shù))、浮點型(實數(shù))、字符型、布爾型(邏輯型)等。2.2.1數(shù)據(jù)類型C語言數(shù)據(jù)類型2.2.1數(shù)據(jù)類型【擴展】Java語言數(shù)據(jù)類型2.2.1數(shù)據(jù)類型(1)整型整型表示:int存儲長度:32位系統(tǒng)中為4個字節(jié)最大值:0~4294967295(232無符號數(shù))長整型表示:long存儲長度:在32位計算機系統(tǒng)中為8個字節(jié)最大值:263-1,最高位為符號位。2.2.1數(shù)據(jù)類型(2)浮點型有小數(shù)的數(shù)稱為浮點數(shù),它用來近似地表示數(shù)學(xué)中的實數(shù)。浮點數(shù)類型:float(單精度浮點型)double(雙精度浮點型)longdouble(長雙精度浮點型)除非進行精確的科學(xué)計算,否則三者的差別無關(guān)緊要。2.2.1數(shù)據(jù)類型(3)字符型字符型常量用英文雙引號(如C語言)或單引號(如Python語言)圍起來。如:''ABC''、''a+b=''、''x1''等。(4)布爾型表示:bool值:true(邏輯真)和false(邏輯假)2.2.1數(shù)據(jù)類型2、常量常量是程序運行中始終保持不變的數(shù)值、字符串等。如,3.14(數(shù)值常量),如,“A+B=”(字符串常量),如,“請輸入圓的半徑:”(字符串常量)等。2.2.1數(shù)據(jù)類型3、變量值可以改變的量稱為變量。變量在使用前必須進行聲明(定義)。變量屬性變量名變量類型:整型,浮點型,字符型,邏輯型,指針型,日期型等。作用域全局變量局部變量變量初始值2.2.1數(shù)據(jù)類型【擴展】全局變量的作用范圍。2.2.1數(shù)據(jù)類型【擴展】變量的思維導(dǎo)圖。2.2.1數(shù)據(jù)類型【擴展】Java的基本數(shù)據(jù)類型基本型別大小最小值最大值Boolean布爾型----------------Char字符型16bitUnicode0Unicode2^16-1Byte字節(jié)型8bit-128+127Short短整型16bit-2^15+2^15-1int整型32bit-2^31+2^31-1Long長整型64bit-2^63+2^63-1Float浮點型32bitIEEE754IEEE754Double雙精度浮點型64bitIEEE754IEEE754《計算機導(dǎo)論——計算思維和應(yīng)用技術(shù)》計算機第2章

程序語言2.1程序特征2.2程序結(jié)構(gòu)2.3程序員語言介紹2.4軟件開發(fā)方法2.2.3表達式2.2.4程序控制2.2.5函數(shù)調(diào)用2.2.1數(shù)據(jù)類型2.2.2標(biāo)識符2.2.2標(biāo)識符1、標(biāo)識符命名規(guī)則表示變量、常量、函數(shù)、類型的名稱稱為標(biāo)識符。標(biāo)識符特性:只能由字母、數(shù)字和下劃線組成,不允許空格、漢字和其他特殊字符。第1個字符不能是數(shù)字,必須是英文字母或下劃線。不能是程序語言中的關(guān)鍵字如:if、then、else、end、for、while、do、int、float、char等。有些程序語言對標(biāo)識符中字母的大小寫敏感。如:C語言認(rèn)為“int”和“Int”不同;而如VB、SQL等程序語言對大小寫不敏感。變量名盡量用小寫字母。如:n1等;常量名以大寫字母開始,如:Pi等。標(biāo)識符盡量做到見名知義,最好以英文全稱或中文全拼音的方式命名。如對年齡變量名的定義可用:intage=0或intnianling=10等。2.2.2標(biāo)識符帕斯卡命名法:單詞首字母大寫如:RaiseIntToPower、LowerLimit、DisplayInfo();等下劃線法:單詞之間用下劃線分隔如:print_employee_paychecks();匈牙利命名法:變量名=屬性+類型+對象描述如,frmSwitchboard(frm是表單,Switchboard是表單名稱)

駝峰命名法:第1個單詞小寫,第2個單詞首字母大寫如,printEmployeePaychecks();、myFirstName等標(biāo)識符首部其他2.2.2標(biāo)識符2、轉(zhuǎn)義字符以斜杠“\”加字符表示的ASCII符號稱為轉(zhuǎn)義字符。例如,\0、\r、\n等斜杠后的第1個字符不是它本來的字符,它轉(zhuǎn)移表示為另外一個含義。例如,“\n”不表示字符“n”,而是表示“換行”打印。需要轉(zhuǎn)義字符的原因:回車符、換行符等沒有代號,只能用轉(zhuǎn)義字符表示;在程序語言中,一些字符被定義為特殊用途,失去了原有意義;例如,程序用“\”作為轉(zhuǎn)義字符的開始,如果程序要用“\”,只能用轉(zhuǎn)義字符。如“\\”;例如,在HTML語言中,“<>”被定義為標(biāo)簽開始,如果使用“<>”符號,只能使用轉(zhuǎn)義字符;例如,C語言中,雙引號被定義為字符串的標(biāo)簽,如果要用雙引號,只能使用轉(zhuǎn)義字符。出于安全原因,數(shù)據(jù)寫入數(shù)據(jù)庫前,會使用轉(zhuǎn)義字符對一些敏感字符進行轉(zhuǎn)義,這樣可以避免黑客利用特殊符號進行攻擊。2.2.2標(biāo)識符【案例】C語言轉(zhuǎn)義字符。轉(zhuǎn)義字符含義ASCII碼(16進制)ASCII碼(10進制)\o字符串結(jié)束標(biāo)志(NULL)00H0\n換行(LF)0AH10\r回車(CR)0DH13\t水平跳格(HT)09H9\b退格(BS)08H8\f換頁(FF)0CH12\’單引號27H39\”雙引號22H34\\反斜杠5CH92\?問號字符3FH63\ddd任意字符3位八進制3位八進制\xhh任意字符2位十六進制2位十六進制2.2.2標(biāo)識符【擴展】ANSIC語言的32個關(guān)鍵字。auto:自動變量double:雙精度浮點型int:整型變量struct:結(jié)構(gòu)體類型break:跳出循環(huán)else:否則(與if連用)long:長整型變量switch:開關(guān)語句case:開關(guān)語句分支enum:枚舉類型register:寄存器變量typedef:數(shù)據(jù)類型別名char:字符型變量extern:變量在其它文件return:子程序返回unsigned:無符號類型const:只讀變量float:浮點型變量short:短整型變量union:共用體類型continue:繼續(xù)(循環(huán))for:循環(huán)語句signed:有符號類型void:無返回值default:默認(rèn)(分支)goto:無條件跳轉(zhuǎn)sizeof:計算數(shù)據(jù)類型字節(jié)數(shù)volatile:變量在執(zhí)行中可被改變do:循環(huán)體if:條件語句static:靜態(tài)變量while:當(dāng)…時(循環(huán))2.2.2標(biāo)識符【擴展】C語言常用函數(shù)和頭文件。常用數(shù)學(xué)函數(shù)輸入輸出函數(shù)常用頭文件編譯預(yù)處理指令abs:求整數(shù)絕對值Printf:輸出到設(shè)備ctype.h:字符處理#include:文件包含fabs:求實數(shù)絕對值scanf:從設(shè)備輸入errno.h:錯誤處理#define:宏定義sqrt:求x平方根gets:讀取字符串local.h:地區(qū)化#if,#ifdef:條件編譯pow10:求10的p次方open:打開文件math.h:數(shù)學(xué)函數(shù)

pow:求x的y次方Close:關(guān)閉文件signal.h:信號處理

Random:產(chǎn)生隨機數(shù)

exit:中止程序運行stdio.h:輸入輸出

sin:正弦函數(shù)

stdlib.h:實用工具

cos:余弦函數(shù)

string.h:字符串處理

tan:正切函數(shù)

time.h:日期和時間

《計算機導(dǎo)論——計算思維和應(yīng)用技術(shù)》計算機第2章

程序語言2.1程序特征2.2程序結(jié)構(gòu)2.3程序員語言介紹2.4軟件開發(fā)方法2.2.3表達式2.2.4程序控制2.2.5函數(shù)調(diào)用2.2.1數(shù)據(jù)類型2.2.2標(biāo)識符2.2.3算術(shù)表達式1、算術(shù)表達式表達式是常量、變量、函數(shù)、運算符等符號組成的有意義組合式。算術(shù)表達式是最常用的表達式。程序語言只能識別按行書寫的數(shù)學(xué)表達式?!纠?-10】x+y是表達式;一個變量x也是一個表達式;【案例】x=x+y是賦值語句,不是表達式,它表示將表達式x+y的值賦給x。2.2.3算術(shù)表達式2、邏輯表達式邏輯表達式的值是“true”(真)或“false”(假)。一般用數(shù)字“1”表示“真”,數(shù)字“0”表示“假”。多個關(guān)系表達式用邏輯運算符連接起來的式子稱為邏輯表達式。邏輯運算順序:?。ǚ牵?&(與)→||(或)。復(fù)合表達式運算順序:算術(shù)運算→關(guān)系運算→邏輯運算。【例2-11】a=5,b=7,c=2,d=1,求表達式:a+b>c+d&&a>=5||!c>0||d<0的值。運算結(jié)果值=true(真)?!纠?-12】判斷變量x是否在5.002和5.004區(qū)間。邏輯表達式為:x>5.002&&x<5.004。2.2.3算術(shù)表達式3、模運算模運算(求余運算):求一個整數(shù)n除以另一個整數(shù)p后的余數(shù)。在程序設(shè)計中,通常用mod表示模運算?!纠?-13】7mod3=1,因為7除以3商2余1,商丟棄,余數(shù)1為模運算結(jié)果?!纠?-14】假設(shè)今天是星期五,請問1000天后是星期幾?

(5+1000)mod7=4,1000天后是星期四。2.2.3算術(shù)表達式4、表達式中的運算符不同的程序語言有不同的運算符,符號定義和使用規(guī)則都有區(qū)別。C語言運算符類型:算術(shù)運算符:加(+)、減(-)、乘(*)、除(/)、模運算(%)、自增運算(++)、自減運算(--)等。關(guān)系運算符:大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)、不等于(!=)。邏輯運算符:與(&&)、或(||)、非(!)。其他運算符:賦值運算、位操作運算、條件運算、逗號運算、指針運算、求字節(jié)數(shù)運算、特殊運算等。2.2.3算術(shù)表達式【案例】C語言運算符應(yīng)用。運算符名稱案例結(jié)果+加5+510-減8-62++自加a=2;b=++a;a=3;b=3++自加a=2;b=a++;a=3;b=2--自減a=2;b=--a;a=1;b=1--自減a=2;b=a--;a=1;b=2*乘3*721/除12/34%求余12%120&&與

||或

!非

^異或

2.2.3算術(shù)表達式5、表達式的運算順序(1)圓括號()優(yōu)先級最高,其他次之。多層圓括號遵循由里向外的原則。(2)多個運算符運算順序為:

括號→乘方→乘/除→加/減→字符連接運算符→關(guān)系運算符→邏輯運算符(3)優(yōu)先級相同時,遵循左則優(yōu)先的原則。

如:表達式x-y+z中,y先與“-”號結(jié)合,執(zhí)行x-y運算,然后再執(zhí)行+z的運算。(4)優(yōu)先級相同時,賦值表達式遵循右則優(yōu)先的原則。

如:表達式x=y=z中,先執(zhí)行y=z運算,再執(zhí)行x=(y=z)運算。2.2.3算術(shù)表達式

2.2.3算術(shù)表達式6、正則表達式(1)正則表達式的概念正則表達式是字符串處理規(guī)則的表達式。盡管正則表達式晦澀難懂,但它功能強大,使用它的領(lǐng)域越來越多。與通配符類似,正則表達式是用來進行文本匹配的工具。(2)正則表達式的功能用一個“字符串”描述特征,然后驗證另一個“字符串”是否符合這個特征。主要功能:驗證字符串是否符合指定特征,如驗證是否是合法的郵件地址;用來從文本中查找符合指定特征的字符串;替換文本中的字符串;從文本中提取指定的字符串;統(tǒng)計文本中某些字符的數(shù)量;進行字符的翻譯;對字符串進行加密處理等。2.2.3算術(shù)表達式【例2-17】表達式“bcd”在匹配字符串“abcde”時,匹配結(jié)果成功;匹配內(nèi)容=“bcd”;匹配位置開始于1,結(jié)束于4?!纠?-18】需要刪除文檔中的空白行時,正則表達式為:\n\s*\r“\”是轉(zhuǎn)義字符,“\n”表示匹配一個換行符;“\s”表示匹配任何空白字符;“*”表示匹配前面的子表達式0~多次;“\r”表示匹配一個回車符。(3)程序語言對正則表達式的支持不是每一種語言都側(cè)重于處理文本。例如,R是統(tǒng)計語言,處理文本不是它的強項;例如,PHP、Python等程序語言處理文本的功能很強大;例如,C/C++程序語言不支持正則表達式,但是可通過其他函數(shù)庫程序達到這一功能。2.2.3算術(shù)表達式(4)正則表達式的簡單案例【例2-19】寫出驗證用戶名和密碼的正則表達式。

正則表達式為:^[a-zA-Z][a-zA-Z0-9_]{6,15}$“^”表示文本匹配開始;“[]”表示選擇方括號中任意一個字符;“[a-zA-Z][a-zA-Z0-9_]”表示用戶名和密碼中的字符可以為:大小寫英文字母、數(shù)字或下劃線;“{6,15}”表示用戶名和密碼允許6~15個字符;“$”表示文本匹配結(jié)束。2.2.3算術(shù)表達式【擴展】PHP語言正則表達式?!队嬎銠C導(dǎo)論——計算思維和應(yīng)用技術(shù)》計算機第2章

程序語言2.1程序特征2.2程序結(jié)構(gòu)2.3程序員語言介紹2.4軟件開發(fā)方法2.2.3表達式2.2.4程序控制2.2.5函數(shù)調(diào)用2.2.1數(shù)據(jù)類型2.2.2標(biāo)識符2.2.4程序控制三種基本程序結(jié)構(gòu):順序、選擇、循環(huán)。1、順序結(jié)構(gòu)執(zhí)行完第1條語句后,接著執(zhí)行第2條語句,直到所有語句執(zhí)行完成。計算機2.2.4程序控制2、選擇結(jié)構(gòu)(1)選擇結(jié)構(gòu)的形式選擇結(jié)構(gòu)是判斷某個條件是否成立,然后選擇程序中的某些語句執(zhí)行。選擇結(jié)構(gòu)用菱形框表示判斷條件,根據(jù)條件是否成立選擇執(zhí)行流向。選擇結(jié)構(gòu)規(guī)則:只能執(zhí)行一個方向的語句,不能既執(zhí)行A語句又執(zhí)行B語句;A或B可以有一個為空,即不執(zhí)行任何操作;無論執(zhí)行哪一個方向,執(zhí)行完A或B語句后,都必須脫離選擇結(jié)構(gòu)。選擇結(jié)構(gòu)一般通過if-then和select-case語句實現(xiàn)。2.2.4程序控制

if-then-else結(jié)構(gòu)和if-then結(jié)構(gòu)2.2.4程序控制【擴展】多級if-then結(jié)構(gòu)。計算機2.2.4程序控制(2)IF條件語句if語句的基本格式C語言中,if語句以分號;作為結(jié)束符;VB語言以endif作為結(jié)束符。if語句執(zhí)行過程:條件成立時,執(zhí)行t<語句組1>,否則執(zhí)行<語句組2>。有時可省略else和<語句組2>,當(dāng)<條件>成立時,執(zhí)行<語句組1>,否則退出。/*C語言if語句格式*/if<條件>then<語句組1>;

else<語句組2>;'VB語言if語句格式('為VB注釋符)if<條件>then<語句組1>else<語句組2>endif2.2.4程序控制【例2-21】某超市購物優(yōu)惠規(guī)定:購物不超過100元時,按9折付款;超過100元時,超過部分按7折收費。算法如下:輸入一個數(shù)給浮點型變量w;判斷w如果小于100,則x=0.9*w;否則x=0.9*w+0.7*(w-100);輸出x的值。C程序代碼如下(1)(2)(3)(4)(5)(6)(7)(8)#include<stdio.h>main(){floatw,x;printf("請輸入購物金額\n");scanf("%f",&w);if(w<=100)x=0.9*w;elsex=0.9*100+0.7*(w-100);printf("應(yīng)付款=%10.2f\n",x);}/*頭文件*//*主函數(shù)*//*聲明變量為浮點型*//*顯示提示信息*//*讀取輸入變量*//*如果金額小于等于100,則按9折計算*//*否則超過部分按7折計算,;為選擇結(jié)束符*//*顯示應(yīng)付款,第10列開始,2位小數(shù)*/2.2.4程序控制3、循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是重復(fù)執(zhí)行一些語句,直到滿足某個條件為止。循環(huán)結(jié)構(gòu)類型:當(dāng)型循環(huán)(while)和直到型循環(huán)(until)。2.2.4程序控制(1)當(dāng)型循環(huán)(while)先判斷循環(huán)條件,后執(zhí)行循環(huán)體。表達式值為真繼續(xù)循環(huán);表達式值為假時結(jié)束循環(huán)。循環(huán)次數(shù)不確定時,適用于采用當(dāng)型循環(huán)?!纠?-22】用“當(dāng)型”循環(huán)求1+2+3….+100之和。步驟1:聲明迭代變量sum初始值為0;步驟2:確定迭代公式:sum←sun+i;步驟3:i分別取值1,2,3,…,100時,重復(fù)計算:sum←sun+i。C語言程序代碼如下(1)(2)(3)(4)(5)(6)(7)#include<stdio.h>intmain(void){inti=1,sum=0;while(i<=100){sum=sum+i;i++;}printf("Sum=%d\n",sum);}/*頭文件*//*主函數(shù)*//*初始化,i為循環(huán)計數(shù)器,sum為和*//*循環(huán)開始,判斷條件為(i<=100),值為假結(jié)束*//*循環(huán)體,計算部分和*//*循環(huán)體,修改循環(huán)值,}為循環(huán)結(jié)束標(biāo)志*//*循環(huán)結(jié)束后的語句,顯示計算結(jié)果*/2.2.4程序控制(2)直到型循環(huán)(until)先執(zhí)行循環(huán)體,后判斷循環(huán)條件。表達式值為真結(jié)束循環(huán),表達式值為假繼續(xù)循環(huán)。循環(huán)次數(shù)確定值時,適用于采用直到型循環(huán)。【例2-23】用“直到型”循環(huán)求1+2+3….+100之和。C語言程序代碼如下(1)(2)(3)(4)(5)(6)(7)(8)#include<stdio.h>intmain(void){inti=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf("Sum=%d\n",sum);}/*頭文件*//*主函數(shù)*//*初始化,i為循環(huán)計數(shù)器,sum為和*//*循環(huán)開始*//*循環(huán)體,計算部分和*//*循環(huán)體,修改循環(huán)值,循環(huán)一次i值加1*//*判斷條件為(i<=100),條件值為假結(jié)束循環(huán)*//*循環(huán)結(jié)束后的語句,顯示計算結(jié)果*/2.2.4程序控制【案例】求1+2+3….+100之和的循環(huán)結(jié)構(gòu)流程圖。計算機2.2.4程序控制4、程序基本結(jié)構(gòu)的特點任何程序均可采用“順序、選擇、循環(huán)”三種基本結(jié)構(gòu)實現(xiàn)。程序結(jié)構(gòu)的共同特點:結(jié)構(gòu)內(nèi)每一部分程序都有被執(zhí)行的機會。結(jié)構(gòu)內(nèi)不能有“死循環(huán)”(無法終止的循環(huán))。程序只有一個入口和一個出口。選擇結(jié)構(gòu)有多個出口時,只有一個出口被執(zhí)行?!队嬎銠C導(dǎo)論——計算思維和應(yīng)用技術(shù)》計算機第2章

程序語言2.1程序特征2.2程序結(jié)構(gòu)2.3程序員語言介紹2.4軟件開發(fā)方法2.2.3表達式2.2.4程序控制2.2.5函數(shù)調(diào)用2.2.1數(shù)據(jù)類型2.2.2標(biāo)識符2.2.5函數(shù)調(diào)用1、函數(shù)的形式(1)函數(shù)的一般形式C語言函數(shù)調(diào)用形式為:函數(shù)名(實參表)實參表中的參數(shù)可以是常量、變量或其它表達式;實參之間用逗號分隔;對無參函數(shù)調(diào)用時,不需要實參表。(2)函數(shù)表達式以函數(shù)返回值參與表達式運算時,必須有返回值?!纠?-24】z=max(x,y)是賦值表達式,max函數(shù)將返回值賦予給變量z。2.2.5函數(shù)調(diào)用2、函數(shù)的形參與實參實參指調(diào)用函數(shù)時,傳遞給函數(shù)的常量、表達式、變量名等;實參表中各個參數(shù)用逗號分隔;實參一般出現(xiàn)在主調(diào)函數(shù)中,進入被調(diào)函數(shù)后,實參變量不能使用。形參是接收數(shù)據(jù)的變量。形參表中各個變量之間用逗號分隔;形參表中的變量可以是簡單變量,也可以是數(shù)組。形參不能是定長的字符串,定長字符串可作為實參傳遞給函數(shù)。形參一般出現(xiàn)在被調(diào)函數(shù)中,在函數(shù)體內(nèi)可用,離開該函數(shù)則不能使用。形參和實參可以實現(xiàn)兩個程序模塊之間的數(shù)據(jù)傳送。在調(diào)用函數(shù)時,實參被賦值到對應(yīng)的形參變量中。2.2.5函數(shù)調(diào)用【例2-3】C語言程序中實參與形參之間的數(shù)據(jù)傳遞。⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀#include<stdio.h>voidmain(){intmax();

inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("max=%d\n",c);}intmax(intx,inty){int

z;if(x>y)z=x;elsez=y;return(z);}聲明自定義函數(shù)數(shù)據(jù)類型聲明實參類型實參賦值函數(shù)值返回給max()函數(shù)名形參調(diào)用自定義函數(shù)自定義函數(shù)實參將值傳遞給形參2.2.5函數(shù)調(diào)用【案例】形參與實參的關(guān)系。2.2.5函數(shù)調(diào)用3、函數(shù)的聲明調(diào)用某個函數(shù)前,應(yīng)對該函數(shù)進行聲明;被調(diào)函數(shù)聲明的形式為:類型說明符被調(diào)函數(shù)名(類型形參,類型形參,…);【例2-25】在main主函數(shù)中,對被調(diào)函數(shù)max的聲明為:intmax(intx,inty);2.2.5函數(shù)調(diào)用4、函數(shù)的嵌套調(diào)用C語言中,各函數(shù)之間是平行的,不存在上一級函數(shù)和下一級函數(shù)的問題。C語言允許在一個函數(shù)中對另一個函數(shù)進行調(diào)用。多層嵌套調(diào)用2.2.5函數(shù)調(diào)用5、C語言程序的基本組成C語言程序由一個或多個程序組成;每個程序作為一個源程序文件。較大的程序,一般會將它們放在若干個源程序文件中;一個源程序文件可以為多個C程序使用。C程序的執(zhí)行從main主函數(shù)開始;如果main主函數(shù)調(diào)用了其他函數(shù),調(diào)用結(jié)束后應(yīng)返回主函數(shù);應(yīng)當(dāng)在主函數(shù)中結(jié)束程序。2.2.5函數(shù)調(diào)用【案例】C語言函數(shù)調(diào)用。計算機2.2.5函數(shù)調(diào)用【擴展】C語言組成。《計算機導(dǎo)論——計算思維和應(yīng)用技術(shù)》計算機第2章

程序語言2.1程序特征2.2程序結(jié)構(gòu)2.3程序員語言介紹2.4軟件開發(fā)方法2.3.3面向?qū)ο缶幊陶Z言Java2.3.4數(shù)據(jù)統(tǒng)計編程語言R2.3.5邏輯推理編程語言Prolog2.3.1入門程序語言介紹2.3.2用流程圖進行編程RAPTOR2.3.1入門程序語言介紹1、國內(nèi)外大學(xué)入門程序語言教學(xué)美國1970年代,F(xiàn)ortran為主;1970年代以后,Pascal為主;1990年代中后期,C語言;21世紀(jì)初,Java;近年,多樣化,Python、Java、C、C++等。中國1980年代,BASIC語言;1990年代中后期,VB;21世紀(jì)至今,C語言。2.3.1入門程序語言介紹推薦入門程序語言RAPTOR,適用所有專業(yè)。Scratch、

Alice,適用藝術(shù)專業(yè)。Blockly、易語言,適用文科專業(yè)。R,適用經(jīng)管、生物、化工等專業(yè)。C,適用工業(yè)控制、機械等專業(yè)。Java、C++,適用計算機專業(yè)。PHP、Python,適用互聯(lián)網(wǎng)專業(yè)。Matlab,適用通信、數(shù)學(xué)、物理等專業(yè)。2.3.1入門程序語言介紹2、Scratch圖形化游戲編程介紹Scratch是美國麻省理工學(xué)院開發(fā)的編程軟件。網(wǎng)址:

http:///howtoScratch特征:不需要編寫任何程序代碼;用鼠標(biāo)拖拽圖形模塊就可以對動畫進行編程。(1)Scratch的功能很容易創(chuàng)造出交互式游戲和動畫;官方網(wǎng)站有大量資源;提供70多個動畫游戲,600多個角色,70多個背景圖片,110多個音頻文件;允許用戶導(dǎo)入或制作素材;自動進入簡體中文界面。2.3.1入門程序語言介紹Scratch編程界面計算機2.3.1入門程序語言介紹【案例】Scratch程序Alice2.3.1入門程序語言介紹【擴展】Alice3D動畫游戲創(chuàng)作程序Alice是卡內(nèi)基.梅隆大學(xué)的可視化編程工具。程序的功能:對象模型:模型庫內(nèi)有幾百個內(nèi)建三維模型;對象操作:移動、轉(zhuǎn)向、說、滾動、調(diào)整大小、顏色等;編程操作:通過鼠標(biāo)拖拽屏幕上的語句和對象,來指揮對象動作,生成動畫效果;程序運行:程序執(zhí)行過程以動畫表示,隨時看到所編程序的運行結(jié)果。ACM/IEEECS2013推薦:可視化程序設(shè)計語言,如Alice和Scratch,也成為受歡迎的選擇。Alice資源http://http://2.3.1入門程序語言介紹【擴展】Alice3D動畫游戲創(chuàng)作程序主要分區(qū)對象樹細節(jié)區(qū)場景窗囗編輯區(qū)事件區(qū)2.3.1入門程序語言介紹3、Blockly圖形化編程介紹Blockly是Google公司2012年發(fā)布了一款可視化程序語言;它非常類似MIT的Scratch,同樣是通過圖形代碼塊構(gòu)建程序;Blockly是在網(wǎng)頁上運行的圖形化程序語言;它可以生成JavaScript、Python、XML等程序代碼。網(wǎng)站:http:///svn/trunk/apps/code/計算機2.3.1入門程序語言介紹【案例】Blockly編程應(yīng)用。計算機2.3.1入門程序語言介紹4、易語言中文編程介紹大連大有吳濤公司(地址:http:///pdown.htm)開發(fā);(1)易語言的功能易語言中所有程序代碼都采用漢字。支持中文程序語句的快速錄入如:輸入for或xh時,易語言會自動轉(zhuǎn)換為漢字“循環(huán)”。變量聲明采用填表方法,簡化和規(guī)范了變量聲明的工作。能與常用程序語言互相調(diào)用,充分利用現(xiàn)有的API(應(yīng)用程序接口)等組件;易語言采用結(jié)構(gòu)化、面向?qū)ο蟆⒓苫燃夹g(shù);可以滿足絕大部分Windows、Linux編程需求。2.3.1入門程序語言介紹【案例】易語言的程序案例。2.3.1入門程序語言介紹【案例】易語言程序案例。計算機2.3.1入門程序語言介紹(2)易語言與Java語言的比較指令類型易語言Java語言啟動方法公開靜態(tài)整數(shù)啟動(文本[]參數(shù))publicstaticvoidmain(String[]args)基本類型整數(shù),小數(shù),邏輯,文本,字節(jié)集int,float,boolean,char,byte定義變量整數(shù)i=123;inti=123;創(chuàng)建數(shù)組整數(shù)[]a=創(chuàng)建整數(shù)[x];int[]a=newint[x];數(shù)組賦值整數(shù)[]a={1,2,3};int[]a={1,2,3};定義類公開類我的類<基類型=XXX>{}publicclassMyClassextendsXXX{}if判斷如果(1+1==2){}否則{}if(1+1==2){}else{}while循環(huán)循環(huán)(x<0){x++;}while(x<0){x++;}for循環(huán)C循環(huán)(整數(shù)i=0;i<10;i++){}for(inti=0;i<10;i++){}2.3.1入門程序語言介紹(3)易語言編程案例【例2-26】:用易語言編寫“Helle”程序。(4)其他中文程序語言漢化的其他程序語言,如:“中蟒”是漢化Python語言,“習(xí)語言”是C的漢化自主研發(fā)漢語內(nèi)核的語言,如:“易語言”,O匯編語言等;以漢語為基礎(chǔ)的編程工具,如:搭建之星,網(wǎng)站搭建者,雅奇MIS等。(1)(2)(3)(4)公開

啟動類{公開

靜態(tài)

啟動(){控制臺.輸出行("Hello,World!");}}2.3.1入門程序語言介紹【擴展】計算機科學(xué)家發(fā)明阿拉伯文字編程語言。2.3.1入門程序語言介紹【案例】可視化編程案例?!队嬎銠C導(dǎo)論——計算思維和應(yīng)用技術(shù)》計算機第2章

程序語言2.1程序特征2.2程序結(jié)構(gòu)2.3程序員語言介紹2.4軟件開發(fā)方法2.3.3面向?qū)ο缶幊陶Z言Java2.3.4數(shù)據(jù)統(tǒng)計編程語言R2.3.5邏輯推理編程語言Prolog2.3.1入門程序語言介紹2.3.2用流程圖進行編程RAPTOR2.3.2用流程圖進行編程RAPTORRAPTOR是基于流程圖的可視化編程工具。用圖形符號代表執(zhí)行指令,符號連線方向決定指令執(zhí)行順序。計算機2.3.2用流程圖進行編程RAPTOR1、RAPTOR的基本功能用8個流程圖符號創(chuàng)建程序,在RAPTOR環(huán)境下運行程序。有單步執(zhí)行和連續(xù)執(zhí)行兩種模式,可以直觀顯示程序執(zhí)行所在的位置。提供了簡單圖形庫,求解的結(jié)果也是可視化的。可以根據(jù)流程圖自動生成C++、C#、Java源程序代碼,以及exe可執(zhí)行程序。2、使用RAPTOR學(xué)習(xí)程序設(shè)計的優(yōu)點圖形編程環(huán)境可以減少對程序語法的要求??梢砸淮螆?zhí)行一個圖形符號,幫助學(xué)習(xí)

溫馨提示

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

評論

0/150

提交評論