![計(jì)導(dǎo)課件3.jidao-chap2程序設(shè)計(jì)語言概述_第1頁](http://file4.renrendoc.com/view/f2ee8d859bd20520af7d1a380a0bf3d9/f2ee8d859bd20520af7d1a380a0bf3d91.gif)
![計(jì)導(dǎo)課件3.jidao-chap2程序設(shè)計(jì)語言概述_第2頁](http://file4.renrendoc.com/view/f2ee8d859bd20520af7d1a380a0bf3d9/f2ee8d859bd20520af7d1a380a0bf3d92.gif)
![計(jì)導(dǎo)課件3.jidao-chap2程序設(shè)計(jì)語言概述_第3頁](http://file4.renrendoc.com/view/f2ee8d859bd20520af7d1a380a0bf3d9/f2ee8d859bd20520af7d1a380a0bf3d93.gif)
![計(jì)導(dǎo)課件3.jidao-chap2程序設(shè)計(jì)語言概述_第4頁](http://file4.renrendoc.com/view/f2ee8d859bd20520af7d1a380a0bf3d9/f2ee8d859bd20520af7d1a380a0bf3d94.gif)
![計(jì)導(dǎo)課件3.jidao-chap2程序設(shè)計(jì)語言概述_第5頁](http://file4.renrendoc.com/view/f2ee8d859bd20520af7d1a380a0bf3d9/f2ee8d859bd20520af7d1a380a0bf3d95.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1第二章程序設(shè)計(jì)語言概述2提綱2.1程序設(shè)計(jì)語言的演化
2.2構(gòu)建和運(yùn)行程序
2.3程序設(shè)計(jì)語言的分類
32.1程序設(shè)計(jì)語言的演化程序設(shè)計(jì):設(shè)計(jì)求解問題的方法和步驟—關(guān)鍵是算法的設(shè)計(jì)。語言:是用于表達(dá)和描述的工具。語言的基礎(chǔ)是一組字符和一組規(guī)則。根據(jù)規(guī)則由字符構(gòu)成的字符串的總體就是語言。程序設(shè)計(jì)語言:用于書寫計(jì)算機(jī)程序的語言,用于表達(dá)和描述要加工的數(shù)據(jù)以及求解問題的步驟和過程。是根據(jù)預(yù)先定義的規(guī)則(語法)、由一個(gè)有限字母表上的字符構(gòu)成的字符串的總體。
4第四代語言高級(jí)語言符號(hào)語言機(jī)器語言2.1程序設(shè)計(jì)語言的演化5計(jì)算機(jī)發(fā)展早期使用的語言;由“0”和“1”的二進(jìn)制碼組成,是計(jì)算機(jī)唯一可以直接識(shí)別的語言;與具體機(jī)器有關(guān),不同的機(jī)器能識(shí)別的機(jī)器語言也不同;1、機(jī)器語言2.1程序設(shè)計(jì)語言的演化6123456789101112131415160000000001011110
11111000
1110111111110100000000111110111101111110111110000000011011101111
0000010000001100111011111110111110101110101100010000000101010110110100010000000101111010010101111010100010000000100000010000000100
1100001000010110100111101101111111011111111110111101111111011111111110111010110111000101111110111111101100000100000001000000000000000000000000000000001000000000000001010000000000001011000000000001001000000000000101010000000000010111000000000001111000000000001000010000000000100100
000000000010101100000000001100010000000000110100000000000011110100000000001111012.1程序設(shè)計(jì)語言的演化-機(jī)器語言7機(jī)器語言的缺陷非?;逎y讀;書寫工作量大,且容易出錯(cuò),不易修改;由于和具體的機(jī)器相關(guān),要求開發(fā)人員對(duì)計(jì)算機(jī)的硬件和指令系統(tǒng)要有很正確深入的理解,并且有熟練的編程技巧,因此只有少數(shù)專家能達(dá)到此要求;移植性不好(在一臺(tái)機(jī)器上編寫的機(jī)器語言程序在不同型號(hào)的另一臺(tái)機(jī)器上可能不能運(yùn)行);2.1程序設(shè)計(jì)語言的演化-機(jī)器語言820世紀(jì)50年代早期,數(shù)學(xué)家GraceHopper發(fā)明了符號(hào)語言,即用符號(hào)或助記符來表示不同的機(jī)器語言指令(包括操作碼和和操作數(shù)地址)。程序員可用ADD、SUB、MUL、DIV等符號(hào)來分別表示加法、減法、乘法、除法的操作碼。符號(hào)語言又稱匯編語言。2、符號(hào)語言2.1程序設(shè)計(jì)語言的演化-符號(hào)語言9
程序注釋(運(yùn)算結(jié)果)
MULBB;送入BMULAE;4a送入AMULAC;4ac送入ASUBBA;-4ac送入BMOVDB;-4ac從B傳送到DHLT;停機(jī)AaBbCcDdE41~6為指令,MUL為乘法指令,SUB為減法指令,MOV為傳送指令、HLT為停機(jī)指令;A、B、C、D、E分別表示存儲(chǔ)數(shù)a、b、c、d以及常數(shù)4的寄存器。求d=-4ac的匯編語言程序操作碼操作數(shù)地址用符號(hào)或助記符來表示指令中的操作碼和和操作數(shù)地址10匯編語言編寫的程序需要翻譯成機(jī)器語言(二進(jìn)制代碼)才能運(yùn)行,這個(gè)翻譯過程由匯編程序來實(shí)現(xiàn)。2.1程序設(shè)計(jì)語言的演化-符號(hào)語言11匯編語言的局限匯編語言的語法、語義結(jié)構(gòu)仍然和機(jī)器語言基本一樣,而與人的傳統(tǒng)解題方法相差甚遠(yuǎn)。匯編語言的大部分指令是和機(jī)器指令一一對(duì)應(yīng)的,因此代碼量大。和具體的機(jī)器相關(guān),人們終究還是要對(duì)計(jì)算機(jī)的硬件和指令系統(tǒng)有很正確深入的理解,而且還是要記住機(jī)器語言的符號(hào)(助記符)。移植性不好。2.1程序設(shè)計(jì)語言的演化-符號(hào)語言12由于匯編語言的局限性,后來出現(xiàn)了高級(jí)語言。高級(jí)語言與自然語言(尤其是英語)很相似,因此高級(jí)語言程序易學(xué)、易懂、也易查錯(cuò)。3、高級(jí)語言2.1程序設(shè)計(jì)語言的演化-高級(jí)語言13#include<stdio.h>main()
{intnumber1;
intnumber2;intresult;
printf("pleaseinputthetwonumbers:\n");scanf(“%d%d”,&number1,&number2);//讀取乘數(shù)和被乘數(shù)result=number1*number2;//兩數(shù)相乘printf(“theresultis:%d\n”,result);//輸出結(jié)果return0;}
兩數(shù)相乘的C語言程序書上31頁錯(cuò)誤,將16行和18行的d%改成%d14高級(jí)語言的優(yōu)勢(shì)高級(jí)語言程序易學(xué)、易懂、也易查錯(cuò)。使程序員可以完全不用與計(jì)算機(jī)的硬件打交道、不必了解機(jī)器的指令系統(tǒng)。
高級(jí)語言與具體機(jī)器無關(guān),在一種機(jī)器上運(yùn)行的高級(jí)語言程序有可能可以不經(jīng)改動(dòng)地移植到另一種機(jī)器上運(yùn)行,大大提高了程序的通用性。2.1程序設(shè)計(jì)語言的演化-高級(jí)語言15第四代語言(Fourth-GenerationLanguage,以下簡稱4GL)是一種面向問題的程序設(shè)計(jì)語言,實(shí)現(xiàn)了在更高一級(jí)層次上的抽象,可以極大地提高軟件生產(chǎn)率,縮短軟件開發(fā)周期。4GL提供了功能強(qiáng)大的非過程化問題定義手段,用戶只需告知系統(tǒng)做什么,而無需說明怎么做,程序就能夠自動(dòng)生成算法,自動(dòng)進(jìn)行處理。典型的4GL語言有ADA,MODULA-2,SMALLTALK-80等。4、第四代語言2.1程序設(shè)計(jì)語言的演化162.1程序設(shè)計(jì)語言的演化按照4GL的功能可以將其劃分為查詢語言和報(bào)表生成器、圖形語言、應(yīng)用生成器、形式規(guī)格說明語言等幾類。查詢語言:是數(shù)據(jù)庫管理系統(tǒng)的主要工具,它提供用戶對(duì)數(shù)據(jù)庫進(jìn)行查詢的功能。如SQL(StructuredQuevyLanguage,結(jié)構(gòu)化查詢語言)報(bào)表生成器:是為用戶提供的自動(dòng)產(chǎn)生報(bào)表的重要工具,它提供非過程化的描述手段讓用戶很方便地根據(jù)數(shù)據(jù)庫中的信息來生成報(bào)表,如ADF。圖形語言:用圖形的方式來進(jìn)行軟件開發(fā)。應(yīng)用生成器:是重要的一類綜合的4GL工具,它用來生成完整的應(yīng)用系統(tǒng)。應(yīng)用生成器讓用戶不必使用多個(gè)軟件,而只用這樣一個(gè)綜合工具來實(shí)現(xiàn)多種功能。
形式規(guī)格說明語言:形式化地對(duì)軟件應(yīng)滿足的功能、性能及其它重要方面的陳述,可避免自然語言的二義性,也是軟件自動(dòng)化的基礎(chǔ)。17理想情況下,計(jì)算機(jī)能夠理解自然語言(如英語、漢語等)并立即執(zhí)行請(qǐng)求。大量關(guān)于自然語言的工作正在實(shí)驗(yàn)室中進(jìn)行。但迄今為止,自然語言的使用仍然是相當(dāng)有限的
。
5、自然語言2.1程序設(shè)計(jì)語言的演化182.2構(gòu)建和運(yùn)行程序
高級(jí)語言程序翻譯成機(jī)器語言程序需要借助于翻譯程序。翻譯程序有編譯程序和解釋程序兩種。
編譯程序:將編寫的源程序中全部語句一次性翻譯成機(jī)器語言程序后,再運(yùn)行機(jī)器語言程序。編譯和運(yùn)行是兩個(gè)獨(dú)立分開的階段。若想多次運(yùn)行同一個(gè)程序,只要源程序不變,則不需要重新編譯;源程序若有修改,則需要重新編譯。編譯程序和解釋程序19解釋程序:將源程序中的一條語句翻譯成機(jī)器語言后立即執(zhí)行它(并且不再保存剛執(zhí)行完的機(jī)器語言程序),然后再翻譯執(zhí)行下一條語句。如此重復(fù),直到程序結(jié)束。如果一條語句要重復(fù)執(zhí)行,則每一次的重復(fù)執(zhí)行都要重新翻譯該語句,故效率很低。著名的解釋程序有:BASIC語言解釋程序、LISP語言解釋程序、UNIX命令語言(shell)解釋程序、數(shù)據(jù)庫查詢語言SQL解釋程序等。當(dāng)前大部分語言如C、C++、FORTRAN、ALGOL等是用編譯程序進(jìn)行翻譯的。而BASIC、PASCAL、LISP等既有編譯程序、又有解釋程序。2.2構(gòu)建和運(yùn)行程序
202.2構(gòu)建和運(yùn)行程序
#include<stdio.h>#include“genlib.h”#defineN10main(){inti;for(i=1;i<=N;i++)printf(“%d\n”,i);}源文件1.c編譯器010010010101100100010000101000111010110110100111目標(biāo)文件1.obj100101101011000101101001001010010110110101101011庫鏈接器010010010101100100010000101000111010110110100111100101101011000101101001001010010110110101101011可執(zhí)行文件.exe1.編輯程序2.編譯程序3.鏈接程序4.運(yùn)行程序00011101110100101101100010100110...000111001110011101011010加載程序CPUC標(biāo)準(zhǔn)庫:有豐富的函數(shù)集,可供程序員直接使用。21源文件2.c編譯器目標(biāo)文件2.obj源文件1.c編譯器目標(biāo)文件1.obj100101101011000101101001001010010110110101101011庫鏈接器010010010101100100010000101000111010110110100111100101101011000101101001001010010110110101101011可執(zhí)行文件.exe當(dāng)程序由多個(gè)源文件組成時(shí)222.2構(gòu)建和運(yùn)行程序
#include<stdio.h>#include“genlib.h”#defineN10main(){inti;for(i=1;i<=N;i++)printf(“%d\n”,i);}源文件.c編譯器010010010101100100010000101000111010110110100111目標(biāo)文件.obj預(yù)處理程序+翻譯程序預(yù)處理程序:通常是把其他文件包含到要編譯的文件中、以及用程序文本替換專門的符號(hào)。C語言中預(yù)處理指令都以#開頭。翻譯程序:將預(yù)處理后的程序翻譯成二進(jìn)制代碼。stdlib.h……..……..genlib.h……..232.2構(gòu)建和運(yùn)行程序
#include<stdio.h>#include“genlib.h”#defineN10main(){inti;for(i=1;i<=N;i++)printf(“%d\n”,i);}源文件.c預(yù)處理文件stdio.h和genlib.h的內(nèi)容main(){inti;for(i=1;i<=10;i++)printf(“%d\n”,i);}242.2構(gòu)建和運(yùn)行程序
100101101011000101101001001010010110110101101011庫鏈接器010010010101100100010000101000111010110110100111100101101011000101101001001010010110110101101011可執(zhí)行文件.exe#include<stdio.h>#include“genlib.h”#defineN10main(){inti;for(i=1;i<=N;i++)printf(“%d\n”,i);}源文件.c預(yù)處理文件stdio.h和genlib.h的內(nèi)容main(){inti;for(i=1;i<=10;i++)printf(“%d\n”,i);}010010010101100100010000101000111010110110100111目標(biāo)文件.obj翻譯25思考題:假設(shè)某程序中有這么一條語句:a=b+c;其在硬盤上的存儲(chǔ)內(nèi)容為:01100001001111010110001001100011既然程序代碼已經(jīng)是二進(jìn)制的,為什么不能直接執(zhí)行,還需要再編譯一下呢?編譯后二進(jìn)制代碼類似于:move寄存器R1b內(nèi)存地址move寄存器R2c內(nèi)存地址addR1R2movea內(nèi)存地址R1
262.3
語言的分類過程化語言面向?qū)ο笳Z言函數(shù)型語言說明性語言專用語言根據(jù)人們對(duì)于求解問題的方法進(jìn)行分類可以將程序設(shè)計(jì)語言進(jìn)行分類。27基于馮·諾依曼結(jié)構(gòu)描述計(jì)算過程的語言。面向過程的程序設(shè)計(jì)特點(diǎn):面向動(dòng)作(活動(dòng))。求解問題(程序)是一個(gè)復(fù)雜的計(jì)算過程,該計(jì)算過程可被分解成若干個(gè)動(dòng)作(活動(dòng))。即:一個(gè)計(jì)算過程可看做是一系列動(dòng)作。一個(gè)動(dòng)作可以是一條語句(基本操作)或是一個(gè)可以繼續(xù)分解的子過程(子程序)。1、過程化語言
2.3語言的分類28子過程(子程序):每一個(gè)子程序?qū)崿F(xiàn)一個(gè)明確、獨(dú)立的功能。應(yīng)用上述方法可繼續(xù)分解為一系列動(dòng)作。循環(huán)往復(fù)直至將“動(dòng)作”分解為“基本操作—語句”。總之,面向過程的設(shè)計(jì)即是實(shí)現(xiàn)某一計(jì)算的操作過程和操作步驟,然后用過程化語言來描述這些操作過程和步驟。
2.3語言的分類29借書續(xù)借圖書管理系統(tǒng)還書…圖書管理系統(tǒng)被劃分成借書、還書、續(xù)借等功能,每一個(gè)功能的實(shí)現(xiàn)對(duì)應(yīng)于一個(gè)執(zhí)行過程,有一系列的執(zhí)行步驟。一個(gè)簡單的借書過程可能如下:1.讀取借閱者的借書證信息,驗(yàn)證借閱者身份合法性;2.若身份合法,則驗(yàn)證借閱者是否有欠款未交;3.若有欠款,則記錄借閱者的付款信息;4.驗(yàn)證借閱者當(dāng)前是否已經(jīng)借滿書;5.若可以借書,則將借閱者的借書信息記錄到系統(tǒng)中;……用過程化語言描述的操作過程30
FORTRAN第一個(gè)高級(jí)語言,由JackBackus領(lǐng)導(dǎo)下的一批IBM工程師設(shè)計(jì),1957年商用。適用于科學(xué)計(jì)算。COBOL面向商業(yè)數(shù)據(jù)處理的語言。PASCAL1971,NiklausWirth在瑞士的蘇黎士發(fā)明。通過強(qiáng)調(diào)結(jié)構(gòu)化編程方法來教初學(xué)者編程。適用于科研和教學(xué),但從未在工業(yè)界獲得廣泛的流行。
CDennisRitchie在20世紀(jì)70年代初發(fā)明,最初是想用于編寫操作系統(tǒng)和系統(tǒng)軟件。具有高級(jí)數(shù)據(jù)結(jié)構(gòu)和控制結(jié)構(gòu),亦可調(diào)用底層功能,指令短、高效。
ADA為美國國防部開發(fā),分布式系統(tǒng)控制語言。2.3語言的分類31面向?qū)ο蠡舅枷耄簭默F(xiàn)實(shí)世界中客觀存在的事物出發(fā)來構(gòu)建軟件系統(tǒng),強(qiáng)調(diào)直接以問題域(現(xiàn)實(shí)世界)中的事物為中心來思考問題、認(rèn)識(shí)問題,并根據(jù)這些事物的本質(zhì)特征,把它們抽象地表示為系統(tǒng)中的對(duì)象,作為系統(tǒng)的基本構(gòu)成單位。(對(duì)象)對(duì)象包含屬性和操作,每一個(gè)對(duì)象有明確的職責(zé),完成一定的功能。(屬性和操作)對(duì)象之間不是孤立的,而是具有各種關(guān)系。對(duì)象與對(duì)象之間通過消息進(jìn)行通信,相互協(xié)作。(消息)同類型的對(duì)象可以進(jìn)一步抽象出共性,形成類。(類)2、面向?qū)ο笳Z言
2.3
語言的分類322.3
語言的分類-面向?qū)ο笳Z言面向?qū)ο笳Z言可以用來描述參與問題解決的對(duì)象以及對(duì)象之間的關(guān)系。PublicclassBook{PrivateStringtitle;PublicBooleanlend(){……}PublicBooleanreturn(){…
}}書借閱者圖書管理系統(tǒng)中的2個(gè)主要類:書、借閱者抽象用Java語言描述332.3
語言的分類C++擴(kuò)展的C語言,具有了面向?qū)ο蟮奶匦?。JAVA純面向?qū)ο笳Z言。Sun公司開發(fā),在C和C++的基礎(chǔ)上發(fā)展而來,但去除了C++中的一些語言特性,從而更加強(qiáng)壯。主要的兩種面向?qū)ο笳Z言343、函數(shù)型說明語言
2.3
語言的分類-函數(shù)型說明語言基于數(shù)學(xué)建模求解問題的思想。程序的基本單元是函數(shù)。函數(shù)可以理解成一個(gè)黑盒,完成從一系列輸入(X)到輸出(Y)的映射。函數(shù)型語言主要實(shí)現(xiàn)以下功能:
定義一系列可供任何程序員調(diào)用的基本函數(shù);允許程序員通過組合若干基本函數(shù)創(chuàng)建新的函數(shù)。
35例如:定義一個(gè)稱為First的基本函數(shù)。由它來完成從一個(gè)列表中抽取第一個(gè)元素的功能。再定義另一個(gè)函數(shù)rest,由它完成從一個(gè)列表中抽取出除第一個(gè)元素以外的所有元素。通過組合使用兩個(gè)函數(shù),可以在程序中定義一個(gè)函數(shù)來完成對(duì)第三個(gè)元素的抽取。
2.3語言的分類-函數(shù)型說明語言36LISP20世紀(jì)60年代早期由麻省理工大學(xué)(MIT)科研小組設(shè)計(jì)開發(fā)。把所有的一切都看成是列表,把列表作為處理對(duì)象。
Scheme定義了一系列基本函數(shù)。函數(shù)名和函數(shù)的輸入列表寫在括號(hào)內(nèi),結(jié)果是一個(gè)可用于其他函數(shù)輸入的列表。(car2378111720)===>2(cdr2378111720)===>378111720現(xiàn)在可以組合這兩個(gè)函數(shù)實(shí)現(xiàn)從列表中取出第三個(gè)元素7:(car(cdr(cdrlist)))2.3語言的分類-函數(shù)型說明語言374、說明性(邏輯)語言根據(jù)已知正確的一些論斷(事實(shí)),運(yùn)用邏輯推理的可靠準(zhǔn)則推導(dǎo)出新的論斷(事實(shí))。If(AisB)and(BisC),then(AisC)將此準(zhǔn)則應(yīng)用于下面的事實(shí):事實(shí)1:Socratesisahuman→AisB事實(shí)2:Ahumanismortal→BisC則可以推導(dǎo)出下面的事實(shí):事實(shí)3:Socratesismortal→AisC2.3語言的分類-說明性(邏輯)語言3
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年博爾塔拉貨車上崗證理論模擬考試題庫
- 2025年萊蕪貨運(yùn)從業(yè)資格證考試題庫
- 人教部編版道德與法治八年級(jí)下冊(cè):2.1 《堅(jiān)持依憲治國》聽課評(píng)課記錄1
- 2024-2025學(xué)年高中語文課時(shí)作業(yè)11漸含解析粵教版必修2
- 衛(wèi)生醫(yī)療年度個(gè)人總結(jié)
- 新員工工作計(jì)劃書
- 高三年級(jí)期末總結(jié)
- 小學(xué)三年級(jí)語文教材教學(xué)計(jì)劃
- 濟(jì)南城市房屋租賃合同
- 口腔執(zhí)業(yè)醫(yī)師聘用合同范本
- GB/T 4365-2024電工術(shù)語電磁兼容
- 高校體育課程中水上運(yùn)動(dòng)的安全保障措施研究
- 城市基礎(chǔ)設(shè)施修繕工程的重點(diǎn)與應(yīng)對(duì)措施
- 油氣勘探風(fēng)險(xiǎn)控制-洞察分析
- GB 12710-2024焦化安全規(guī)范
- 2022年中考化學(xué)模擬卷1(南京專用)
- 醫(yī)療機(jī)構(gòu)質(zhì)量管理指南
- 【??途W(wǎng)】2024秋季校園招聘白皮書
- 2024-2025銀行對(duì)公業(yè)務(wù)場景金融創(chuàng)新報(bào)告
- 中石化高級(jí)職稱英語考試
- 化工企業(yè)人的不安全行為造成的事故案例
評(píng)論
0/150
提交評(píng)論