21
Viết chương trình xuất ra màn hình hình chữ nhật dạng: ********** * * ********** 1

Bai 18

Embed Size (px)

Citation preview

Page 1: Bai 18

Viết chương trình xuất ra màn

hình hình chữ nhật có dạng:

**********

* *

**********

1

Page 2: Bai 18

procedure Ve_HCN;

begin

Writeln(‘**********’);

Writeln(‘* *’);

Writeln(‘**********’);

end;

2

function LT(x,y: integer): integer

var t, i: integer;

begin

t:= 1;

for i:= 1 to n do

t:= t*x;

LT:= t;

end.

Page 3: Bai 18

3

Page 4: Bai 18

1. Các viết và sử dụng thủ tục

procedure Ve_HCN;

begin

Writeln(‘**********’);

Writeln(‘* *’);

Writeln(‘**********’);

end;

Program VD_thutuc1;

procedure Ve_HCN;

begin

Writeln(‘**********’);

Writeln(‘* *’);

Writeln(‘**********’);

end;

Begin

Ve_HCN;

Writeln;

Ve_HCN;

Writeln;

Ve_HCN;

End.

4

Page 5: Bai 18

1. Cách viết và sử dụng thủ tục

Cấu trúc của thủ tục:

procedure <tên thủ tục>[(<danh sách tham số>)];

[<phần khai báo>]

begin

[<dãy các lệnh>]

end;

Trong đó:

Phần đầu thủ tục: gồm tên procedure và tên thủ tục, danh sách

tham số (nếu có).

Phần khai báo: xác định các hằng, kiểu, biến và xác định các

chương trình con khác được sử dụng trong thủ tục.

Dãy câu lệnh: viết giữa cặp tên dành riêng begin và end.

Trong phần khai báo

gồm những khai báo

gì?

5

Page 6: Bai 18

Quan sát VD_thuctuc1/96 +

VD_thutuc2/98 cho biết:

Input và Output của 2 chương

trình.

Tên thủ tục, danh sách tham

số, phần khai báo, các dãy

lệnh.

Vị trí và cách gọi thủ tục trong

chương trình chính.

6

Page 7: Bai 18

Program VD_thutuc2;Uses crt;var a,b: byte;Procedure Ve_HCN( chdai,chrong:integer);Var i,j: integer;

Begin For i:=1 to chdai do write(‘ * ’);

Writeln;For j:=1 to chrong-2 do

beginwrite(‘ * ’);for i:=1 to chdai-2 do write(‘ ‘);writeln(‘ * ’);

end;For i:=1 to chdai Do write(‘ * ’);

writeln;

End;BEGIN

clrscr; Ve_HCN(25,10);Writeln; a:=5 ; b:=10; Ve_HCN(a,b);readln;

END.

Khi cần gọi đến thủ tục ta cần gọi tên

của nó kèm theo danh sách tham số

(nếu có)

Vị trí của chương trình

con: nằm sau phần khai

báo và trước phần thân

chương trình chính

Vị trí và cách gọi thủ tục

7

Page 8: Bai 18

2. Tham số và cách truyền tham số

Tham số tại nơi gọi: tham số thực

Tham số tại nơi được gọi: tham số hình thức.

Kiểu tham số

hình thức

Khai báo Giá trị của tham số thực tương ứng

sau khi thực thi chương trình con

Tham số giá trị

(Tham trị)

Không có

VAR

Giữ nguyên giá trị ban đầu như trước

khi gọi chương trình con.

Tham số biến

(Tham biến)

Có VAR Lấy giá trị kết quả của chương trình

con.

Procedure Ve_HCN( chdai,chrong:integer)

Procedure Hoan_Doi( var x, y:integer)

8

Page 9: Bai 18

Nhóm quan sát 2 chương trình Gv demo

và đọc tham khảo SGK (VD_thambien1

và VD_thambien2 /99,100) cho biết:

-Hai chương trình trên có sử dụng

chương trình con hay không? Và cho

biết chương trình con đó thực hiện

nhiệm vụ gì?(nếu có).

-Xác định tham số giá trị và tham biến

trong hai chương trình vừa demo? (nếu

có).

-Phân biệt tham số giá trị và tham số

biến?

7 phút

9

Page 10: Bai 18

3. Cách viết và sử dụng hàm

Cấu trúc của hàm:

Function <tên hàm>[(<danh sách tham số>)]:<kiểu dữ liệu >;

[<phần khai báo>]

begin

[<dãy các lệnh>]

<tên hàm>:= <biểu thức>

end;

Kiểu dữ liệu trả về có thể gồm những

kiểu nào?

Kiểu dữ liệu chỉ có thể là kiểu dữ liệu chuẩn: integer, real,

char, boolean, string.

<tên hàm>:= <biểu thức> câu lệnh gán giá trị cho

tên hàm10

Page 11: Bai 18

VD: Viết chương trình rút gọn phân số

Ví dụ: Nhập: 6/10 => ra 3/5

* INPUT : Nhập phân số a/b;

* OUTPUT : Phân số T/M- Trong đó: T = a/UCLN(a,b);

M = b/UCLN(a,b);

Viết chương trình con thực hiện tìm UCLN(a,b) và gọi nó khi tính T, M

trong chương trình chính.

11

Page 12: Bai 18

Program tgps;

Uses crt;

Var tu,mau,T,M : integer;

Function UCLN( a,b :integer) : integer;

Begin

While a<> b do

if a>b then a := a-b else b:=b-a;

UCLN := a;

end;

BEGIN

Write(‘ Nhap vao tu so vµ mau so:’); readln(tu,mau);

T:= tu div UCLN(tu,mau) ; M := mau div UCLN(tu,mau);

Writeln(‘ Phan so toi gian = ’, T, ‘ / ’, M);

Readln;

END.

Write(‘Nhap vao tu so va mau so:’);

T := 6 div M := 10 divUCLN(6,10) UCLN(6,10);

Writeln(‘ Phan so toi gian = ’, 3, ‘ / ’, 5);

Readln;

END.

BEGIN

Readln(tu,mau);

USCLN=2;USCLN=2;

Nhap vao tu so va mau so: 6 10

Phan so toi gian = 3/5

2 2

12

Page 13: Bai 18

So sánh sự giống và khác nhau

của thủ tục và hàm

13

Page 14: Bai 18

14

Giống nhau:

Đều là chương trình con, có cấu

trúc giống một chương trình.

Đều có thể chứa các tham số,

cùng tuân theo các quy định về

khai báo và sử dụng các loại

tham số này. (Có thể không có

tham số).

Page 15: Bai 18

15

Thủ tục Hàm

Thủ tục bắt đầu bằng

procedure.

Đầu hàm bắt đầu bằng từ khóa function

HGàm luôn trả về một giá trị thuộc kiểu

xác định thông qua tên hàm. (các kiểu

dữ liệu đơn giản: integer, real, boolean,

char, string).

Phải chỉ ra kết quả của hàm thuộc kiểu

dữ liệu nào.

Trong thân hàm thường có câu lệnh gán

giá trị cho tên hàm.

Khác nhau:

Page 16: Bai 18

Các nhóm xem ví dụ 2: Minbaso

(SGK/102) xác định:

• Tên hàm, danh sách tham số, kiểu dữ

liệu của hàm?

• Biến toàn cục và biến cục bộ (nếu

có)?

• Hs giải thích: Min(Min(a,b),c) ?

• Cho biết hàm trên trả về kết quả gì?

Cho ví dụ?

16

Page 18: Bai 18

Trắc nghiệm

Câu 1: Nói về cấu trúc của một chương trình con,

khẳng định nào sau đây là không đúng?

A. Phần đầu và phần thân nhất thiết phải có,phần

khai báo có thể có hoặc không;

B. Phần khai báo có thể có hoặc không tùy thuộc

vào từng chương trình cụ thể;

C. Phần đầu có thể có hoặc không có;

D. Phần đầu nhất thiết phải có để khai báo tên

chương trình con;

Page 19: Bai 18

Câu 2: Để khai báo hàm trong Pascal bắt đầu bằng từ khóa:

A. Function B. Var C. Procedure D. Program

Câu 3: Sự khác biệt cơ bản giữa hàm và thủ tục:

A. Hàm có sử dụng biến số còn thủ tục thì không có biếnsố;

B. Xây dựng hàm khó hơn thủ tục;

C. Hàm sẽ trả về một giá trị thông qua tên của hàm còn

thủ tục thì không;

D. Thủ tục khai báo trước phần thân chương trinh còn

hàm thì sau phần thân chương trình;

Trắc nghiệm

Page 20: Bai 18

Câu 4: Có một hàm được định nghĩa như sau:

Function ABC(m, n: byte): byte;

Var x, y, z: byte;

Begin

…….

ABC:= z;

End;

Hãy chọn lời gọi hàm hợp lệ:

A. k:= ABC(2,5) + ABC(3,7) + ABC(4);

B. k:= ABC(7);

C. k:= ABC(5) + ABC(9);

D. writeln(ABC(ABC(5,4),9));

Trắc nghiệm

Page 21: Bai 18

Câu 5: Giả sử ta có phần đầu thủ tục:

Procedure VD(var N, M: integer; E: real);

Thì nhận định nào sau đây là đúng:

A. N, M và E là các tham trị;

B. N, M là tham trị, E là tham biến;

C. N, M là tham biến, E là tham trị;

D. N, M và E là các tham biến;

Trắc nghiệm