intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Tin học đại cương - Phần 2 Ngôn ngữ lập trình TURBO PASCAL - Chương 5

Chia sẻ: Nguyen Nhi | Ngày: | Loại File: PDF | Số trang:6

150
lượt xem
35
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo giáo trình Tin học đại cương dùng cho khối A do Đỗ Thị Mơ chủ biên - Bộ môn công nghệ phần mềm gồm 2 phần chia làm 13 chương - Phần 2 Ngôn ngữ lập trình TURBO PASCAL - Chương 5 Chương trình con : Hàm và thủ tục

Chủ đề:
Lưu

Nội dung Text: Tin học đại cương - Phần 2 Ngôn ngữ lập trình TURBO PASCAL - Chương 5

  1. CHƯƠNG V CHƯƠNG TRÌNH CON: HÀM VÀ TH T C 1 - C u trúc c a hàm và th t c 1.1- Chương trình con Khi l p trình g p ño n chương trình c n dùng nhi u l n, ñ tránh vi t l p l i thì ño n chương trình ñó ñư c t ch c thành chương trình con và m i khi c n g i t i chương trình con ñó. M t khác khi xây d ng chương trình cho các bài toán l n, ph c t p, ñ d cho vi c thi t k chương trình, hi u ch nh chương trình, g r i khi ch y chương trình, bài toán l n ñư c phân thành các ph n nh , m i ph n xây d ng thành các chương trình con. Chương trình chính s g i t i các chương trình con . Trong Pascal có 2 lo i chương trình con ñó là hàm ( Function) và th t c (Procedure). a - C u trúc c a hàm ( Function) và l i g i hàm Hàm có c u trúc ñ y ñ như sau: • Function Tên_hàm(Tham_s 1 : ki u; Tham_s 2: ki u; Var tham_s 3: ki u;. . .): ki u; Label {Khai báo các nhãn } Const { Khai báo các h ng } Type {ð nh nghĩa các ki u d li u c a ngư i s d ng } Var { Khai báo các bi n c c b } ... Begin . . . { Thân chương trình con } Tên_hàm:= Giá_tr ; End; Các ph n n u có thì theo ñúng th t ñã nêu. Ki u c a tham s là các ki u cơ b n, ki u có c u trúc như ki u xâu kí t và ki u mang, n u là ki u m ng thì ph i khai báo b ng ñ nh nghĩa ki u ph n ñ nh nghĩa khi u ñ u chương trình chính, không ñư c khai báo tr c ti p. Ki u c a hàm có th là các ki u cơ b n, ki u xâu kí t . Các tham s khai báo trong hàm ñư c g i là tham s hình th c. • L i g i hàm Trong thân chương trình chính s d ng hàm ph i có l i g i hàm. L i g i hàm ñư c vi t như sau: Tên_hàm( danh sách các tham s th c s ) Các tham s th c s tương ng c v s lư ng và c v ki u d li u v i các tham s hình th c khai báo trong hàm. L i g i hàm ñư c coi như 1 bi n, có th tham gia vào bi u th c, tham gia vào các th t c vào/ ra. Ví d 1: Chương trình có xây d ng Function Bài toán : Tính di n tích c a tam giác bi t 3 c nh a,b,c. 156 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 156
  2. Chương trình Program Tinh_dien_tich; uses crt; var a,b,c : real; Function DT(x,y,z : real) : real; var s,p : real; begin p:=(x+y+z)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); DT:=s; end; begin { than chuong trinh chinh } clrscr; a:=2;b:=3;c:=2; writeln(' dien tich tam giac 1 = ', DT(a,b,c):8:2); write('Nhap 3 canh c a tam giac a,b,c: '); readln(a,b,c); writeln(' dien tich tam giac 2 = ', DT(a,b,c):8:2); readln; end. - Hàm ñ t v trí sau khai báo bi n trong chương trình chính và trư c thân chương trình chính. - Ch ñư c g i t i hàm sau khi ñã khai báo hàm. - Ơ ví d 1 ta khai báo hàm có tên là DT có ki u real, các tham s hình th c c a hàm là: x,y,z. Trong thân chương trình có 2 l i g i hàm, chúng ñ u n m trong l nh Writeln. Trong l i g i hàm th nh t, 3 tham s th c s là a=2, b=3, c=2. Trong l i g i hàm th hai, 3 tham s th c s là a,b,c có giá tr ñư c nh p vào t bàn phím. b - C u trúc c a th t c (Procedure) và l i g i th t c Th t c có c u trúc ñ y ñ như sau: • Procedure Tên_th _t c(Tham_s 1 : ki u; Tham_s 2: ki u; Var tham_s 3: ki u;. . .); Label {Khai báo các nhãn } Const { Khai báo các h ng } Type { ð nh nghĩa các ki u d li u c a ngư i s d ng } Var { Khai báo các bi n c c b } Begin . . . { thân chương trình con } End; Các ph n n u có thì theo ñúng th t ñã nêu. Ki u c a tham s là các ki u cơ b n, ki u có c u trúc như ki u xâu kí t và ki u mang, n u là ki u m ng thì ph i khai báo b ng ñ nh nghĩa ki u ph n ñ nh nghĩa khi u ñ u chương trình chính, không ñư c khai báo tr c ti p. Trong chương trình chính th t c ñ ng trư c thân chương trình chính, sau khai báo bi n. Các tham s khai báo trong hàm ñư c g i là tham s hình th c. • L i g i th t c Trong thân chương trình chính s d ng th t c ph i có l i g i th t c L i g i th t c ñư c vi t như sau: Tên_th _t c( danh sách các tham s th c s ); 157 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 157
  3. Các tham s th c s tương ng c v ki u và s lư ng v i các tham s hình th c khai báo trong th t c. L i g i th t c như 1 câu l nh ñ ng ñ c l p. Ví d 2: chương trình có xây d ng Procedure Bài toán: Tính t ng và trung bình c ng c a dãy s a1, a2, . . ., an . Chương trình Program Tinh_tong_tb; uses crt; type mang= array[ 1 .. 50 ] of real ; var i,n: integer; a: mang; tg,tb: real; Procedure tong(m: integer; x: mang; var s, p : real); Var j: integer ; t: real; begin t:=0; For j:=1 to m do t:=t + x[j] ; s:= t; p:=t/m; end; begin { than chuong trinh chinh } clrscr; write(' nhap so phan tu cua day n '); readln(n); for i:= 1 to n do begin write(a[', i, ']=' ); readln(a[i]); end; tong(n,a,tg,tb); writeln(' tong= ', tg: 8: 2, 'trung binh = ', tb: 8: 2 ); readln; end. 1.2 - S khác nhau gi a hàm và th t c - Hàm cho 1 giá tr thông qua tên hàm. Tên hàm trong l i g i hàm ñư c coi như m t bi n có th tham gia vào bi u th c, các th t c vào ra. Cu i thân hàm ph i có l nh gán giá tr cho tên hàm. - Tên th t c không cho 1 giá tr nào c . - Các tham s vi t sau tên hàm, sau tên th t c ñư c g i là tham s hình th c. Tham s hình th c có 2 lo i: + Tham s không có t khoá Var ñi kèm trư c g i là tham tr . + Tham s có t khóa Var ñi kèm trư c g i là tham bi n. - Trong hàm thư ng ch a các tham tr , ít khi ch a các tham bi n. Trong th t c thư ng có các tham bi n. - Các tham s trong l i g i hàm, l i g i th t c g i là tham s th c s . Các tham s th c s ph i tương ng v s lư ng và ki u v i các tham s hình th c. Các tham s th c s tương ng vơí các tham tr ñ ch a các d li u vào. Các tham s th c s tương ng vơí các tham bi n ñ ch a k t qu c a th t c. - Hàm l y k t qu tên hàm, th t c l y k t qu các tham s th c s tương ng v i các tham bi n. 158 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 158
  4. - Như v y n u ñ l y 1 k t qu ta có th t ch c hàm ho c th t c. N u mu n l y nhi u hơn 1 k t qu thì ph i t ch c chương trình con d ng th t c. 2 - Bi n toàn c c, bi n c c b và truy n d li u 2.1 - Bi n toàn c c Bi n toàn c c là bi n khai báo ñ u chương trình chính. Bi n toàn c c t n t i su t th i gian làm vi c c a chương trình . Bi n toàn c c có th s d ng c trong chương trình chính và chương trình con. Ví d 1 m c 1 (tính di n tích tam giac) có a,b,c là bi n toàn c c. Ví d 2 m c 1 ( tính t ng và trung bình) có i, n, a, tg, tb là bi n toàn c c. 2.2 - Bi n c c b Bi n c c b là các bi n ñư c khai báo ñ u chương trình con. Bi n c c b ñư c c p phát b nh khi chương trình con ñư c g i t i và b xoá khi ra kh i chương trình con. Bi n c c b ch ñư c dùng trong chương trình con. Bi n toàn c c và bi n c c b có th trùng tên nhau nhưng chương trình v n phân bi t 2 bi n khác nhau. Trong ví d 1 m c 1 (tính di n tích tam giác) có s, p là bi n c c b . Trong ví d 2 muc 2 ( tính t ng và trung bình) có j, t là bi n c c b . 2.3 - Truy n d li u Khi g p l i g i chương trình con máy s th c hi n các bư c sau: - C p phát b nh cho các tham s và cho các bi n c c b trong chương trình con. - Truy n giá tr c a các tham s th c s cho tham tr và truy n ñ a ch cho các tham bi n. - Th c hi n các l nh trong thân chương trình con. - Th c hi n xong chương trình con máy gi i phóng các tham s và các bi n c c b , r i tr v chương trinh chính. 3 - Tính ñ quy c a chương trình con Trong Function và Procedure có th có l i g i t i chính nó. Tính ch t này ñư c g i là tính ñ qui. Phương pháp ñ qui ñư c áp d ng cho các bài toán thu t gi i mang tính ñ qui. Thuât gi i ñ qui làm cho chương trình ng n g n, ñ p ñ nhưng l i t n th gian tính toán và b nh . Có nh ng bài toán ch có th gi i quy t ñư c b ng xây d ng các chương trình con ñ quy. Ví d 1: Bài toán tính giai th a - Trư ng h p suy bi n: n! = 1 khi n=0 - Trư ng h p t ng quát: n! = (n-1)! . n khi n >= 1 Có th xây d ng hàm Giaithua có tính ch t ñ qui như sau: Function Giaithua( n: longint): longint ; begin 159 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 159
  5. if n=0 then Giaithua:= 1 else Giaithua:= Giaithua(n-1) * n ; end; * Mu n xây d ng ñư c chương trình con ñ qui ta ph i xác ñ nh ñư c 2 trư ng h p: - Trư ng h p suy bi n , ñó là trư ng h p ñ c bi t mà xác ñ nh ñư c giá tr c a hàm. - Trư ng h p t ng quát l n th n ñư c tính d a vào l n th (n-1). Ví d 2: Tìm ư c s chung l n nh t c a 2 s x và y có th ñư c ñ nh nghĩa như sau (x>y): USCLN(x,y)= x n u y=0 ( ñây là trư ng h p suy bi n) USCLN(x,y)= USCLN( y, ph n dư c a x/y) n u y0 ( ñây là trư ng h p t ng quát). Trong hàm xây dưng v i x>y, n u y>x thì chương trình tráo ñ i giá tr gi x và y. Hàm USCLN ñư c vi t như sau: Function USCLN(x,y: integer) : integer ; Var t:Integer; Begin If y>x then begin t:=x; x:=y; y:=t; end; if y=0 then USCLN:= x else USCLN := USCLN(y, x mod y) ; end; 4. M t s chương trình con c a turbo pascal Pascal ñã xây d ng s n m t s hàm và th th c, Ta có th g i t i các hàm, th t c ñó theo ñúng quy cách c a nó ñ s d ng. Ngoài các hàn và th t c ñã xét các ph n trên, trong ph n này b sung thêm m t s th t c sau ñây: * Procedure GotoXY(Xpos, YPos); ðưa con tr (cursor) c a màn hình v v trí có to ñ Xpos và Ypos trên màn hình. Xpos, Ypos ki u s nguyên. * Procedure ClrScr; Xoá toàn b màn hình và ñ t con tr vào v trí phía trên, bên trái. * Procedure ClrEof; Xoá toàn b các kí t bên ph i con tr màn hình. Sau khi xoá con tr v n t i ch . * Procedure Deline; Xoá toàn b dòng màn hình ch a con tr , sau ñó d n các dòng dư i lên. * Procedure InsLine; Xen m t dòng tr ng vào màn hình t v trí con tr . * Procedure LowVideo và NormVideo; Sau khi g i LowVideo m i kí t vi t ra màn hình ñ u có ñ sáng y u ñi cho t i khi g i th t c NormVideo (Normal Video). * Procedure Delay(Time); T o ra th i gian tr Time (kho ng ms). Time là m t s nguyên. Delay thư ng ñư c dùng ñ làm ch m chương trình l i cho ta quan sát, kh o sát... * Procedure Sound(F) và NoSound; 160 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 160
  6. T o ra dao ñ ng âm thanh v i t n s là F (F: s nguyên) cho ñ n khi ta g i NoSound; Bài t p chương 5 1. Vi t chương trình tính t h p ch p m c a n ph n t : Cmn Chương trình vi t có chương trình con. 2. Vi t chương trình tính Pn(x)=(. . . ( ( an*x+an-1 )*x+an-2 )*x+. . . +a1)*x+a0 Chương trình có chương trình con. 3. Cho dãy s sau: a1,a2,....,an . Vi t chương trình tính t ng, trung bình c ng các ph n t c a dãy s ñó. Chương trình vi t có chương trình con. 4. L p chương trình tính di n tích và chu vi c a các hình: Tam giác bi t 3 c nh a,b,c, hình ch nh t bi t hai c nh a,b, hình tròn bi t bán kính. Ch n hình ñ tính thông qua câu h i ' Ban tính cho hình gì TG=1, CN=2, TR =3 '. Chương trình vi t có s d ng chương trình con. 5. Cho hai s nguyên x1 và x2, l p chương trình nh p x1 và x2 t bàn phím, s d ng tính ñ quy c a chương trình con ñ tìm ư c s chung l n nh t c a x1 và x2. 161 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 161
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
3=>0