pascal教程-自學(xué)完整版.ppt_第1頁
pascal教程-自學(xué)完整版.ppt_第2頁
pascal教程-自學(xué)完整版.ppt_第3頁
pascal教程-自學(xué)完整版.ppt_第4頁
pascal教程-自學(xué)完整版.ppt_第5頁
已閱讀5頁,還剩309頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、A,1,Pascal教程,A,2,目錄,第一章 算法、程序設(shè)計與編譯器基礎(chǔ) 第二章 Pascal基礎(chǔ) 第三章 程序設(shè)計初步 第四章 枚舉、子界與數(shù)組 第五章 過程與函數(shù) 第六章 集合、記錄與文件 第七章 指針等動態(tài)類型 第八章 面向?qū)ο笈c單元設(shè)計 第九章 特效,A,3,第一章,算法、程序設(shè)計與編譯器基礎(chǔ),A,4,目錄,第一講 算法基礎(chǔ)知識算法描述方法 第二講 程序語言 第三講 Pascal編譯器基礎(chǔ),A,5,第一講,算法基礎(chǔ)知識算法描述方法,A,6,用計算機(jī)解決實(shí)際問題的四個步驟,分析問題,把實(shí)際問題抽象為一個一般性的數(shù)學(xué)問題 根據(jù)分析,設(shè)計出求其解的方法和步驟 用某種形式(如圖形、自然語言、

2、類計算機(jī)語言)表達(dá)以設(shè)計好的算法 在計算機(jī)上編輯、調(diào)試和測試編制好的程序,直到正確滿足問題的需求,A,7,算法的描述方法,例1.1.1: 交換a、b兩數(shù)值 定義 c ac ba cb,A,8,N-S圖,1973年,美國學(xué)者I.Nassi和B.Shneiderman提出了一種在流程圖中完全去掉流程線,全部算法寫在一個矩形框內(nèi),在框內(nèi)還可以包含其它框的流程圖。 N-S圖也被稱為盒圖或CHAPIN圖。,A,9,N-S圖,功能域明確; 很容易確定局部和全局?jǐn)?shù)據(jù)的作用域; 不可能任意轉(zhuǎn)移控制; 很容易表示嵌套關(guān)系及模塊的層次關(guān)系。,A,10,N-S圖,順序,選擇,當(dāng)型,直到型,循環(huán),A,11,第二講,程

3、序語言,A,12,編程語言,機(jī)器語言 匯編語言 高級語言 腳本語言,A,13,機(jī)器語言,由于計算機(jī)內(nèi)部只能接受二進(jìn)制代碼,因此,用二進(jìn)制代碼0和1描述的指令稱為機(jī)器指令,全部機(jī)器指令的集合構(gòu)成計算機(jī)的機(jī)器語言,用機(jī)器語言編程的程序成為目標(biāo)程序。只有目標(biāo)程序才能被計算機(jī)直接識別和執(zhí)行。但是機(jī)器語言編寫的程序無明顯特征,難以記憶,不便閱讀和書寫,且依賴于具體機(jī)種,局限性很大,機(jī)器語言屬于低級語言。,A,14,機(jī)器語言, (1+1),A,15,匯編語言,匯編語言的實(shí)質(zhì)和機(jī)器語言是相同的,都是直接對硬件操作,只不過指令采 匯編語言用了英文縮寫的標(biāo)識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操

4、作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應(yīng)實(shí)際操作過程中的一個很細(xì)微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復(fù)雜、容易出錯,而且使用匯編語言編程需要有更多的計算機(jī)專業(yè)知識,但匯編語言的優(yōu)點(diǎn)也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實(shí)現(xiàn)的,而且源程序經(jīng)匯編生成的可執(zhí)行文件不僅比較小,而且執(zhí)行速度很快。,A,16,匯編語言,mov ax,1 add ax,1 (1+1),A,17,高級語言,高級語言是目前絕大多數(shù)編程者的選擇。和匯編語言相比,它不但將許多相關(guān)的機(jī)器指令合成為單條指令,并且去掉了與具體操作有關(guān)但與完

5、成工作無關(guān)的細(xì)節(jié),例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由于省略了很多細(xì)節(jié),編程者也就不需要有太多的專業(yè)知識。 高級語言主要是相對于匯編語言而言,它并不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、C+、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。像最簡單的編程語言PASCAL語言也屬于高級語言.,A,18,高級語言,高級語言所編制的程序不能直接被計算機(jī)識別,必須經(jīng)過轉(zhuǎn)換才能被執(zhí)行,按轉(zhuǎn)換方式可將它們分為兩類: 解釋類:執(zhí)行方式類似于我們?nèi)粘I钪械摹巴暦g”,應(yīng)用程序源代碼一邊由相應(yīng)語言的解釋器“翻譯”成目標(biāo)代碼(機(jī)器語言),

6、一邊執(zhí)行,因此效率比較低,而且不能生成可獨(dú)立執(zhí)行的可執(zhí)行文件,應(yīng)用程序不能脫離其解釋器,但這種方式比較靈活,可以動態(tài)地調(diào)整、修改應(yīng)用程序。如較早時期的Qbasic語言。 編譯類:編譯是指在應(yīng)用源程序執(zhí)行之前,就將程序源代碼“翻譯”成目標(biāo)代碼(機(jī)器語言),因此其目標(biāo)程序可以脫離其語言環(huán)境獨(dú)立執(zhí)行,使用比較方便、效率較高。但應(yīng)用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標(biāo)文件(* .OBJ)才能執(zhí)行,只有目標(biāo)文件而沒有源代碼,修改很不方便?,F(xiàn)在大多數(shù)的編程語言都是編譯型的,例如C/C+、 Visual Fox pro、Delphi等。,A,19,高級語言,Basic print 1+

7、1 C #include main printf(“%d/n”,1+1); Pascal writeln(1+1); (1+1),A,20,腳本語言,腳本語言(Script language,scripting language,scripting programming language)是為了縮短傳統(tǒng)的編寫-編譯-鏈接-運(yùn)行(edit-compile-link-run)過程而創(chuàng)建的計算機(jī)編程語言。此命名起源于一個腳本“screenplay”,每次運(yùn)行都會使對話框逐字重復(fù)。 JavaScript、ActionScript、VBA,A,21,第三講,Pascal編譯器基礎(chǔ),A,22,編譯器,T

8、urbo Pascal 7 Free Pascal 1.0/2.0 CP Pascal Super Pascal Delphi 7.0 Lazarus GUIDE,A,23,Turbo Pascal 7.0,A,24,Free Pascal,A,25,快捷鍵,F2 Alt + Enter Alt + X F7 F8 F9 Alt + F9 Ctrl + F9,保存 全屏/小窗口轉(zhuǎn)換 關(guān)閉 單步執(zhí)行當(dāng)前程序 單步執(zhí)行當(dāng)前程序 導(dǎo)出exe程序 糾錯 調(diào)試并導(dǎo)出exe程序,A,26,文件關(guān)聯(lián),.pas .bak .o .exe .ppu .tpu,A,27,第二章,Pascal基礎(chǔ),A,28,目錄,

9、第一講 Pascal語言特點(diǎn)、優(yōu)點(diǎn)與缺點(diǎn) 第二講 Pascal程序結(jié)構(gòu) 第三講 Pascal基本符號、保留字和標(biāo)識符 第四講 Pascal標(biāo)準(zhǔn)數(shù)據(jù)類型、常量與變量 第五講 Pascal標(biāo)準(zhǔn)函數(shù)、過程、運(yùn)算符與表達(dá)式,A,29,第一講,Pascal語言特點(diǎn)、優(yōu)點(diǎn)與缺點(diǎn),A,30,Pascal特點(diǎn),以法國數(shù)學(xué)家命名的Pascal語言現(xiàn)已成為使用最廣泛的語言之一,其主要特點(diǎn)有:嚴(yán)格的結(jié)構(gòu)化形式;豐富完備的數(shù)據(jù)類型;運(yùn)行效率高;查錯能力強(qiáng)。,A,31,Pascal優(yōu)點(diǎn), 結(jié)構(gòu)化 Pascal可以方便地書寫出結(jié)構(gòu)化程序。這就保證程序的正確性和易讀性。在結(jié)構(gòu)化這一點(diǎn)上,比其它算法語言更好一些。,A,32,

10、Pascal優(yōu)點(diǎn), 數(shù)據(jù)類型豐富 Pascal提供了整數(shù)型、實(shí)數(shù)型、字符型、布爾型、枚舉型、子界型以及由以上類型構(gòu)成的數(shù)組類型、集合類型、記錄類型和文件類型。此外,還提供了其它許多語言中所沒有的指針類型。豐富的數(shù)據(jù)結(jié)構(gòu)和上述的結(jié)構(gòu)化性質(zhì),使得Pascal可以被方便地用來描述復(fù)雜的算法。,A,33,Pascal優(yōu)點(diǎn), 適用性好 既適用于數(shù)值運(yùn)算,也適用于非數(shù)值運(yùn)算領(lǐng)域。有些語言只適用于數(shù)值計算,有些語言則適用于商業(yè)數(shù)據(jù)處理和管理領(lǐng)域。Pascal的功能較強(qiáng),能廣泛應(yīng)用于各種領(lǐng)域。,A,34,Pascal優(yōu)點(diǎn), 書寫較自由 不象有些算法語言那樣對程序的書寫格式有嚴(yán)格的規(guī)定。Pascal允許一行寫多

11、個語句,一個語句可以分寫在多行上,這樣就可以使Pascal程序?qū)懙孟笤姼韪袷揭粯觾?yōu)美,便于閱讀,但一行不可超過257個字符。,A,35,Pascal缺點(diǎn),網(wǎng)絡(luò)支持 面向?qū)ο?GUI,A,36,第二講,Pascal程序結(jié)構(gòu),A,37,Pascal程序例子,program ex ( input , output ); uses crt label 1; const pi=3.1415926; type int : 0.1000; var r : int; s : real; function fac ( r : int ) : real; var s : real; begin s:=r*pi*r

12、; fac:=s; end;,procedure sum; begin s:=fac ( r ); end; begin 1: ClrScr; write (r=); readln ( r ); sum; writeln (s=,s); readln; goto 1; end.,程序首部,標(biāo)號說明,常量說明,類型說明,變量說明,函數(shù)定義,過程定義,主程序體,單元引用,A,38,第三講,Pascal基本符號、保留字和標(biāo)識符,A,39,基本符號,A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m

13、 n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 + - * / = = ( ) := . , : ; . ,A,40,保留字,(1)程序、函數(shù)、過程符號 :program , function , procedure (2)說明部分專用定義符號:array , const , file , label , of , packed , record , set , type , var (3)語句專用符號 :case , do , downto , else , for , forward , goto , if , repeat , then ,t

14、o until , while , with (4)運(yùn)算符號:and , div , in , mod , not , or (5)分隔符號:begin , end (6)空指針常量 :nil 共36個 補(bǔ)充:unit implementation interface string,A,41,標(biāo)識符,要求 標(biāo)準(zhǔn)標(biāo)識符 自定義標(biāo)識符,A,42,要求,以字母或下劃線開頭的數(shù)字字母下劃線序列 例:a、ab、a1、max、_12、_ab211、a_1、a_等,A,43,自定義標(biāo)識符使用時的注意要點(diǎn),不能與保留字同名 如果與標(biāo)準(zhǔn)標(biāo)識符同名,強(qiáng)行改變標(biāo)準(zhǔn)標(biāo)識符原來意義 最好有一定意義,使程序具有可讀性 可

15、以使用大寫、小寫、大小寫混用,意義不變,A,44,第四講,Pascal標(biāo)準(zhǔn)數(shù)據(jù)類型、常量與變量,A,45,常用數(shù)據(jù)類型,整型(整數(shù)類型) 實(shí)型(實(shí)數(shù)類型) 字符型 布爾類型 枚舉類型 子界類型,數(shù)組類型 集合類型 記錄類型 文件類型 指針類型 對象類型,A,46,整型,shortint -128127 integer -3276832767 longint -21474836482147483647 byte 0255 word 065536 int64 freepascal專用,非順序類型 qword freepascal專用,非順序類型,A,47,整型,符號: + - * div mod,

16、A,48,實(shí)型,real $N+ single double exended comp,A,49,實(shí)型,符號: + - * /,A,50,字符型,char #001#128 ,A,51,布爾型,Boolean ( true / false ) 計算符號 not and or xor,A,52,not,not ( true ) = false not ( false ) = true,A,53,and,(true) and (true) = true (true) and (false) = false (false) and (true) = false (false) and (false)

17、 = false,A,54,or,(true) or (true) = true (true) or (false) = true (false) or (true) = ture (false) or (false) = false,A,55,xor,(true) xor (true) = true (true) xor (false) = false (false) xor (true) = false (false) xor (false) = true,A,56,常量,定義以后不能改變值的 如: const st = abc 句型:const 自定義標(biāo)識符 = 值,A,57,變量,定義

18、以后可以改變值的 如: var i : integer; 句型: var 自定義標(biāo)識符 : 數(shù)據(jù)類型,A,58,第五講,Pascal標(biāo)準(zhǔn)函數(shù)、過程、運(yùn)算符與表達(dá)式,A,59,函數(shù)與過程,子程序 過程 procedure 函數(shù) function,A,60,運(yùn)算符,A,61,表達(dá)式,表達(dá)式指由常量、變量、函數(shù)、括號、集合及運(yùn)算符連接起來的式子。表達(dá)式中的變量必須要有一個明確的值,單個的常量、變量、函數(shù)都可以看成是一個表達(dá)式 運(yùn)算先后順序 not * , / , div , mod , and + , - , or 關(guān)系運(yùn)算符、in,A,62,句型,:= 變量名/函數(shù)名:=表達(dá)式,A,63,例題,例

19、2.5.1 兩個數(shù)差為100布爾表達(dá)式: 1: abs ( a b ) = 100; 2: ( a + 100 = b ) or ( a 100 = b ),A,64,例題,例2.5.2 能夠被3和5整除布爾表達(dá)式: 1: ( a mod 3 = 0 ) and ( a mod 5 = 0) 2: a mod ( 3 * 5 ) = 0,A,65,例題,例2.5.3 閏年表達(dá)式: (year mod 400 = 0) or (year mod 4 = 0) and (year mod 100 0),A,66,例題,例2.5.4 求圓周長語句: 1: s = 3.14 * r * r ; 2:

20、s = 3.14 * sqr ( r );,A,67,第三章,程序設(shè)計初步,A,68,目錄,第一講 讀入語句與輸出語句 第二講 復(fù)合語句 第三講 if語句及if語句的嵌套 第四講 case語句 第五講 for循環(huán) 第六講 while循環(huán)與repeat循環(huán) 第七講 goto語句 第八講 小技巧,A,69,第一講,讀入語句與輸出語句,A,70,讀入語句,語法: read() readln() 技巧: 讀入回車后退出程序: readln; end。,A,71,輸出語句,語法: write() writeln() 小技巧: 場寬,A,72,單場寬,單場寬指在輸出時每個輸出項(xiàng)所占的長度。若輸出項(xiàng)的長度大

21、于長寬則輸出的結(jié)果是那個輸出項(xiàng)不受長寬限制,后面的輸出項(xiàng)仍然在其后輸出。 例3.1.1: program p3_1_1 ( input , output ); var a : integer; begin a:=100; write(a:10); end.,A,73,雙場寬,有兩個場寬,雙場寬只用于實(shí)型數(shù)輸出,其中前一個和但場寬作用相同,后一個用來控制小數(shù)位數(shù),若小數(shù)位數(shù)大與場寬輸出時就四舍五入,若小于場寬就補(bǔ)“0”。 例3.1.2: program p3_1_2 ( input , output ); var a : real; begin a:=100; write(a:0:2); end

22、.,A,74,場寬語法,單場寬:(integer、char、boolean、string) 語法:自定義標(biāo)識符 : 場寬數(shù) 雙場寬:(real) 語法:自定義標(biāo)識符 : 總場寬數(shù) : 小數(shù)位數(shù),A,75,例題,例3.1.3:讀入兩個實(shí)型,交換后輸出,精確到0.01。 program p3_1_3_1 ( input , output ); var a , b , c : real; begin readln ( a , b ); c:=a; a:=b; b:=c; writeln ( a:0:2 , b:0:2 ); readln; end.,A,76,例題,例3.1.3:讀入兩個實(shí)型,交換后

23、輸出,精確到0.01。 program p3_1_3_2 ( input , output ); var a , b : real; begin readln ( a , b ); a := a + b; b := a b; a := a b; writeln ( a:0:2 , b:0:2 ); readln; end.,A,77,例題,讀入一個整數(shù),將其平方后減去原數(shù)的絕對值,最后求值的平方根,輸出最后的值,保留整數(shù)。 program p3_1_4 ( input , output ); var n : integer; begin readln ( n ); writeln ( sqrt

24、 ( n * n - abs ( n ) ) : 0 : 0 ); readln; end.,A,78,第二講,復(fù)合語句,A,79,語法,復(fù)合語句 begin end; end前句子末尾可不加;,A,80,第三講,if語句及if語句的嵌套,A,81,語法,if + ( boolean 表達(dá)式 ) + then + 句子 if + ( boolean 表達(dá)式 ) + then + 句子1 + else + 句子 2 注意:else前句子末尾不加“;”,A,82,例題,例3.3.1:將兩個整數(shù)大的放入max,小的放入min,并輸出。 program p3_3_1 ( input , output

25、); var max , min , t : integer; begin readln ( max , min ); if maxc then writeln ( a , , b , , c ) else if ac then writeln ( a , , c , , b ) else writeln ( c , , a , , b ) else if cb then writeln ( c , , b , , a ) else if ac then writeln ( b , , a , , c ) else writeln ( b , , c , , a ); readln; end.

26、,A,85,第四講,case語句,A,86,語法,case語句 case 表達(dá)式 of 常數(shù)表1:語句1; 常數(shù)表2:語句2; 常數(shù)表n:語句n; else 語句n+1 end; end前句子末尾可不加;,end與case相對,而非begin else前可加;,A,87,例題,例3.4.1:隨機(jī)產(chǎn)生兩個數(shù),讀入一個符號,并運(yùn)算。 program p3_4_1 ( input , output ); var a , b : integer ; ch : char; begin randomize; a := random (100); b := random (100); readln ( ch

27、 ); case ch of + : writeln ( a , + , b , = , a + b ); - : writeln ( a , - , b , = , a - b ); * : writeln ( a , * , b , = , a * b ); / : writeln ( a , / , b , = , a / b ); end; readln; end.,A,88,第五講,for循環(huán),A,89,語法,for 變量 := 表達(dá)式 to 表達(dá)式 do 語句 for 變量 := 表達(dá)式 downto 表達(dá)式 do 語句 要求: to 循環(huán) 初值 = 終值 變量:順序類型,A,90

28、,例題,例3.5.1:輸出從1到100所有的整數(shù)。 program p3_5_1 ( input , output ); var i : integer; begin for i:=1 to 100 do writeln ( i ); readln; end.,A,91,例題,例3.5.2:倒序輸出從1到100所有的偶數(shù)。 program p3_5_2 ( input , output ); var i : integer; begin for i:=1 downto 100 do if i mod 2 = 0 then writeln ( i ); readln; end.,A,92,例題,

29、例3.5.3:警察查一個殺人犯。A說,是B殺的;B說:不是我;C說:是A殺的。已知有且只有一個人說了謊,問是人誰殺的。 program p3_5_3 ( input , output ); var a , b , c : boolean ; begin for a := false to true do for b := false to true do for c := false to true do if ord ( a ) + ord ( b ) + ord ( c ) = 2 then if ord ( not ( b ) ) + ord ( b ) + ord ( not ( a

30、) ) = 2 then if not ( a ) then writeln ( a ) else if not ( b ) then writeln ( b ) else writeln ( c ); readln(); end.,A,93,注意事項(xiàng),例3.5.4 例3.5.5 for 循環(huán)的終值不能變化。 for 循環(huán)的指針可以變化。,A,94,例題,例3.5.4 program p3_5_4 ( input , output ); var i , n ,total : integer; begin n := 100; total := 0; for i:=1 to n do begin

31、inc ( total ); n := n - 1; end; writeln ( total ); readln; end.,運(yùn)行結(jié)果: 100,A,95,例題,例3.5.5 program p3_5_5 ( input , output ); var i , total : integer; begin for i := 1 to 10 do begin i := i + 1; inc ( total ); end; writeln ( total ); readln; end.,運(yùn)行結(jié)果: 5,A,96,第六講,while循環(huán)與repeat循環(huán),A,97,語法,while Boolean

32、表達(dá)式 do 句子 repeat 句子 until Boolean表達(dá)式 注: until前可以不加;,A,98,例題,例3.6.1:讀入一行數(shù)字,以回車為結(jié)束標(biāo)志,求最大值。 program p3_6_1_1 ( input , output ); var a , max : integer; begin max := -32768; repeat read ( a ); if a max then max := a; until eoln; readln; writeln ( max ); readln; end.,A,99,例題,例3.6.1:讀入一行數(shù)字,以回車為結(jié)束標(biāo)志,求最大值。

33、program p3_6_1_2 ( input , output ); var a , max : integer; begin max := -32768; while not ( eoln ) do begin readln ( a ); if a max then max := a; end; readln; writeln ( max ); readln; end.,A,100,小技巧,while 句型 與 repeat 句型 轉(zhuǎn)換 while句型表達(dá)式 = not ( repeat句型表達(dá)式 ),A,101,例題,3.6.2 順序輸出1到100內(nèi)所有整數(shù)。 program p3_6

34、_2_1 ( input , output ); var i : integer; begin i := 1; while i = 100 do begin writeln ( i ); i := i + 1; end; readln; end.,A,102,例題,3.6.2 順序輸出1到100內(nèi)所有整數(shù)。 program p3_6_2_1 ( input , output ); var i : integer; begin i := 1; repeat writeln ( i ); i := i+1; until i = 100 ; readln; end.,A,103,第七講,goto語句

35、,A,104,語法,label 數(shù)字 數(shù)字 : goto 數(shù)字,label 數(shù)字 goto 數(shù)字 數(shù)字 :,A,105,例題,例3.7.1:順序輸出從1到100所有整數(shù)。 program p3_7_1 ( input , output ); label 1; var i : integer; begin i := 1; 1: writeln ( i ); if i = 100 then goto 1; readln; end.,A,106,注,標(biāo)號在 1.9999 之間,且不一定要按順序。 goto語句可由其他語句代替。 盡可能不用goto語句。,A,107,第八講,小技巧,A,108,int

36、eger與char的特殊表達(dá)式,integer var 變量名 : 類型名 方法二 var 變量名 : ( 標(biāo)示符1 , 標(biāo)示符2 );,A,115,枚舉型,是順序類型 不能直接read/write,要用case句型 允許直接賦值,沒有運(yùn)算符 類型定以后允許作為函數(shù)、過程參數(shù),函數(shù)值,A,116,例題,例4.1.1:當(dāng)輸入星期幾的數(shù)字,能輸出它的后一天是星期幾。 program p4_1_1 ( input , output ); type week=(sun,mon,tue,wed,thu,fri,sat); var i : integer; day , succday : week; be

37、gin readln(i); case i of 1:day:=mon; 2:day:=tue; 3:day:=wed; end; if (day=sat) then succday:=sun else sucday:=succ(day); write (The next day is ); case succday of sun: writeln(sunday); mon: writeln(monday); tue: writeln(tuesday); . end; end.,A,117,第二講,子界型,A,118,語法,方法一 type 類型名 最小值 . 最大值; var 變量名 : 類

38、型名 方法二 var 變量名 : 最小值 . 最大值;,A,119,子界型,shortint = -128.127; boolean沒有子界型 類型定以后允許作為函數(shù)、過程參數(shù),函數(shù)值 子界型也是順序類型,也可以用for語句,A,120,例題,例4.2.1:順輸出從1到100所有整數(shù)。 program p4_2_1 ( input , output ); var i : 1 . 100; begin for i := 1 to 100 do writeln ( i ); readln; end.,A,121,第三講,一位數(shù)組,A,122,語法,方法一 type 類型名 = array 初始值

39、. 終值 of 類型名; var 變量名 : 類型名 方法二 var 變量名 :array 初始值 . 終值 of 類型名;,A,123,數(shù)組,不能直接賦值,用for語句 數(shù)組每一個數(shù)據(jù)表示方法:變量名+下標(biāo) (e.g. ai+1); 類型定以后允許作為函數(shù)、過程參數(shù),函數(shù)值,A,124,例題,例4.3.1:讀入100個數(shù),先順序輸出,再倒序輸出。 program p4_3_1 ( input , output ); var a : array 1 . 100 of integer; i : 1 . 100; begin for i := 1 to 100 do read ( ai ); fo

40、r i := 1 to 100 do writeln ( ai ); for i := 100 downto 1 do writeln ( ai ); readln; end.,A,125,例題,例4.3.2:隨機(jī)產(chǎn)生100個數(shù),先輸出,再將第一個數(shù)移到最后,其余每個數(shù)向前移一位。 program p4_3_2 ( input , output ); var a : array 1 . 100 of integer ; i : integer; begin randomize; for i := 1 to 100 do begin a i := random ( 100 ); writeln

41、( a i ); end; for i := 1 to 100 do begin a i := a i + a i + 1 ; a i + 1 := a i - a i + 1 ; a i := a i - a i + 1 ; end; for i := 1 to 100 do writeln ( a i ); readln; end.,A,126,思考題,將一個數(shù)分離為一個數(shù)組。 有一個數(shù)要插入一個順序數(shù)組,使其仍為順序。 有兩個50位順序數(shù)組,整合為一個順數(shù)組,并輸出。 有三個50位順序數(shù)組,整合為一個順數(shù)組,并輸出。,A,127,第四講,字符串,A,128,語法,var 變量名 : st

42、ring 數(shù)字 0 = 數(shù)字 1 then ai,j:=ai,j-1+1 else ai,j:=ai-1,1+1; for i:=1 to 5 do begin for j:=1 to i do write(ai,j, ); writeln; end; readln; end.,A,135,第六講,排序法,A,136,排序法目的,將一個數(shù)組升序排列或降序排列。 選擇法排序 冒泡排序 插入法排序 快速分類排序 歸并排序 基數(shù)排序,A,137,選擇法排序,1,2,2,3,4,1,5,5,5,4,1,4,2,2,2,4,3,4,1,5,5,5,4,1,1,2,1,2,2,3,4,1,5,5,5,4,

43、1,4,2,1,4,2,3,4,1,5,5,5,4,1,2,2,1,4,2,3,4,1,5,5,5,4,1,2,2,A,138,冒泡排序,1,2,2,3,4,1,5,5,5,4,1,4,2,4,2,2,3,4,1,5,5,5,4,1,1,2,2,2,4,3,4,1,5,5,5,4,1,1,2,2,4,2,3,4,1,5,5,5,4,1,1,2,2,4,2,3,4,1,5,5,5,4,1,1,2,2,4,2,3,4,1,5,5,5,4,1,1,2,2,4,2,5,4,1,5,5,3,4,1,1,2,A,139,例題,例4.6.1 選擇法排序 program p4_6_1(input,output

44、); const n=7; var a:array1.n of integer; i,j,k,t:integer; begin write(Enter date:); for i:= 1 to n do read(ai); writeln; for i:=1 to n-1 do begin k:=i; for j:=i+1 to n do,if aji then begin t:=ai; ai:=ak; ak:=t; end; end; write(output data:); for i:= 1 to n do write(ai:6); writeln; end.,A,140,思考題,冒泡排

45、序,A,141,第五章,過程與函數(shù),A,142,目錄,第一講 子程序概念 第二講 標(biāo)準(zhǔn)過程及標(biāo)準(zhǔn)函數(shù) 第三講 自定義函數(shù) 第四講 自定義過程 第五講 變參與值參 第六講 全程變量與局部變量 第七講 forward 第八講 子程序的嵌套遞歸初步,A,143,第一講,子程序概念,A,144,子程序,函數(shù) function 過程 procedure,A,145,第二講,標(biāo)準(zhǔn)過程與標(biāo)準(zhǔn)函數(shù),A,146,鏈接,A,147,第三講,自定義函數(shù),A,148,語法,function (,:;var ,:; ):; 說明部分,同主程序 begin 函數(shù)名:=; end;,A,149,語法,定義后與標(biāo)準(zhǔn)函數(shù)同樣使

46、用,A,150,例題,例5.3.1:求5!+4!+3!+2!+1!。 program p5_3_1(input,output); function fac(n:integer):longint; var i:integer; begin i:=n; n:=1; for i:=i downto 1 do n:=n*i; fac:=n; end; begin writeln(fac(1)+fac(2)+fac(3)+fac(4)+fac(5); readln; end.,A,151,思考題,編寫一個求圓面積的函數(shù)。,A,152,第四講,自定義過程,A,153,語法,procedure (,:;va

47、r ,:; ); 說明部分,同主程序 begin end;,A,154,語法,定義后與標(biāo)準(zhǔn)過程同樣使用,A,155,例題,例5.3.2:求5!+4!+3!+2!+1!。 program p5_3_2(input,output); var arr:array 1.5 of integer;i,n:integer; procedure sum(n:integer;var m:integer); var i:integer; begin i:=n; n:=1; for i:=i downto 1 do n:=n*i; m:=n; end; begin n:=0; for i:=1 to 5 do a

48、rri:=i; for i:=1 to 5 do sum(arri,arri); for i:=1 to 5 do n:=n+arri; writeln(n); readln; end.,A,156,思考題,編寫一個求圓面積的過程。 編寫一個打印下圖的過程。,A,157,第五講,變參與值參,A,158,值參和變參,值參: 特點(diǎn):前面沒有var; 使用:返回時值還原。 變參: 特點(diǎn):前面有var; 使用:返回時值不還原。,A,159,第六講,全程變量與局部變量,A,160,全程變量與局部變量,全程變量:作用域:整個程序。 局部變量:作用域:子程序。,A,161,例題,例5.6.2:求5!+4!+

49、3!+2!+1!。 program p5_6_2(input,output); var arr:array 1.5 of integer;i,n:integer; procedure sum(n:integer;var m:integer); var i:integer; begin i:=n; n:=1; for i:=i downto 1 do n:=n*i; m:=n; end; begin n:=0; for i:=1 to 5 do arri:=i; for i:=1 to 5 do sum(arri,arri); for i:=1 to 5 do n:=n+arri; writel

50、n(n); readln; end.,A,162,第七講,forward,A,163,語法(TP7),function/procedure1() forward function/procedure2() (2) function/procedure1 (1) ,A,164,語法(fpc),function/procedure1() forward function/procedure2() (2) function/procedure1() (1) ,A,165,第八講,子程序的嵌套遞歸初步,A,166,定義,直接遞歸 在函數(shù)/過程內(nèi)部自己引用自己 間接遞歸 A引用B,B引用A,A,167,

51、特點(diǎn),結(jié)構(gòu)清晰 容易閱讀理解 動態(tài)產(chǎn)生變量,A,168,使用須知,設(shè)計前要有遞歸公式 遞歸調(diào)用次數(shù)有限 要有結(jié)束遞歸的結(jié)束語句 子問題求解方式要與原問題相同 分治法,A,169,缺點(diǎn),運(yùn)算效率低 占用空間大,A,170,備注,理論上來說,遞歸式可以與遞推(for語句)互換。,A,171,例題,例5.8.1:判斷偶數(shù) program p5_8_1(input,output); function fac(n:integer):boolean; begin if n=0 then fac:=true else if fac=1 then fac:=false else fac:=fac(n-2);

52、end; begin readln(n); writeln(fac(n); readln; end.,A,172,例題,例5.8.2: 步步高升(Step by Step) 問題描述: 春節(jié)的時候TENSHI去逛花市。她來到一個賣盆竹的攤位,看到一盆叫做“步步高升”的盆竹?!安讲礁呱讲礁呱睂W(xué)習(xí)就是要一步一步來,不能急,要打好基礎(chǔ)。在穩(wěn)固的基礎(chǔ)上才談得上步步高升!TENSHI若有所思。她看到這盆東西好意頭,于是想買下。誰知一問價錢,“不貴不貴,才?!盩ENSHI差點(diǎn)沒昏倒,囊中羞澀嘛。但是TENSHI還是很想買下來,于是她就在一旁觀察。觀察了一段時間,她發(fā)現(xiàn)這個賣盆竹的人和別人殺價很有規(guī)律

53、。設(shè)此人第i次報價為Wi元,那么他第i+1次報的價格為WiA或Wi B。到了最后,TENSHI以Z元成交,高高興興的回家去了。 任 務(wù) :求TENSHI把盆竹的價格由W1元?dú)⒌絑元的方法總數(shù)。 輸入格式:輸入文件第一行有兩個正整數(shù)W1和Z。第二行有兩個正整 數(shù)A和B。它們滿足條件: 10 W1 106,1 Z 106 ,Z =1,2,3,4 1,2,3,4=1,2,3,4 1,2+2,3=1,2,2,3=1,2,3 1,2,3-1,2=3 1,2,3,4*0,1,2,3=1,2,3 1 in 1,2,3,4,5,A,179,集合記錄方式,例: s:set of 1.10; a:array 1.

54、10 of 0.1; s:=1,2,3 a=0 (repeat 3 times), 1 (repeat 7 times),A,180,第二講,集合(下),A,181,集合,不能直接輸入、輸出 輸出方式 如:s:set of char;ch:char; for ch:=#001 to #128 do if ch in s then write(ch);,A,182,例題,例6.2.1:輸入一串字符,輸出其中a.z,A.Z的個數(shù)。 program p6_2_1(input,output); var ch:char;t:integer; begin t:=0; while not eoln do b

55、egin read(ch); if ch in a.z,A.Z then t:=t+1; end; readln; writeln(t); readln; end.,A,183,例題,輸出100以內(nèi)的所有素數(shù)。 program p6_2_2(input,output); var s:set of 2.100;i,j:integer; begin s:=2.100; for i:=2 to 100 do if i in s then for j:=2 to 100 div I do s:=s-i*j; for i:=2 to 100 do if i in s then write(i, ); readln; end.,A,184,第三講,記錄,A,185,記錄,語法 record :; :; :; (;) end; 其余同數(shù)組,A,186,記錄,不能直接讀入、輸出。 可以

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論