32
CHƯƠNG 6 GVHD: Nguyễn Thị Ngọc Hoa SVTH: Lê Thị Diễm Hương MSSV: K37.103.107

Bai 17

Embed Size (px)

Citation preview

Page 1: Bai 17

CHƯƠNG 6

GVHD: Nguyễn Thị Ngọc Hoa

SVTH: Lê Thị Diễm Hương

MSSV: K37.103.107

Page 2: Bai 17

Đặt vấn đềYêu cầu: Xác định input, ouput và viết (cài đặt)

chương trình tính:

a. Nhóm 1: an

b. Nhóm 2: bm

c. Nhóm 3: cp

d. Nhóm 4: dq

( a, b, c, d, m, n, p, q đều là số nguyên dương)

Page 3: Bai 17

Chương trình tính tổng: an+bm+cp+dq

Program

Var Tluythua, luythua1, luythua2, luythua3, luythua4:Real;

a, b, c, d : Real;

i, n, m, p, q : integer;

Tinh_tong;

Begin

Write(‘Hay nhap du lieu theo thu tu a,b,c,d,m,n,p,q’);

Readln(a,b,c,d,m,n,p,q);

Page 4: Bai 17

Var j:integer

Tich:=1.0;

For j:=1 to n do

Tich:=Tich*a;

luythua1:=1.0;

For i:=1 to n do

luythua1:=luythua1*a;

luythua2:=1.0;

For i:=1 to m do

luythua2:=luythua2*b;

luythua3:=1.0;

For i:=1 to p do

luythua3:=luythua3*c;

luythua4:=1.0;

For i:=1 to q do

luythua4:=luythua4*d;

Write(‘Tong luy thua = ’,Tluythua: 8:4);

Tluythua := luythua1 + luythua2 + luythua3 + luythua4;

Readln;

End.

Page 5: Bai 17

Function luythua(x : real; k : integer) : real;

Var Tich : real;

J : integer;

Begin

End;

Tich := 1.0;

For j := 1 to k do

Tich := Tich*x;

Luythua := Tich;

Program chuongtrinhcon;

Tluythua := luythua(a,m) + luythua(b,n) + luythua(c,p) + luythua(d,q);

END.

BEGIN

Write(‘Hay nhap du lieu theo thu tu a,b,c,d,m,n,p,q’);

Readln(a,b,c,d,m,n,p,q);

Page 6: Bai 17
Page 7: Bai 17

NỘI DUNG

Khái niệm chương trình con

Lợi ích của chương trình con

Phân loại chương trình con

1

2

3

Khái niệm hàm và thủ tục4

Page 8: Bai 17

- Các chương trình giải các bài toán phức tạp

thường rất dài.

+ Khó đọc, khó hiểu và khó hiệu chỉnh.

+ Đặt ra vấn đề làm sao dễ đọc, dễ hiểu và dễ

hiệu chỉnh hơn.

Một bài toán thường có thể phân tích thành

nhiều bài toán con nhỏ hơn.

M

A B C D

Page 9: Bai 17

1. Khái niệm chương trình con.

- Chương trình con là một dãy lệnh mô tả một

số thao tác nhất định và có thể được thực

hiện(được gọi) từ nhiều vị trí trong chương

trình.

Trưởng

nhómViệc A

Việc B

Page 10: Bai 17

Lợi ích của việc sử dụng chương trình con:

- Tránh được sự lặp lại cùng một dãy lệnh. Khi cần dùng

có thể gọi lại chương trình con đó.

- Hỗ trợ việc thực hiện các chương trình lớn và phức tạp

- Phục vụ quá trình trừu tượng hoá

- Mở rộng khả năng ngôn ngữ lập trình thành thư viện

cho nhiều ngừơi dùng.

- Thuận tiện cho phát triển và nâng cấp chương trình.

Page 11: Bai 17

a. Phân loại

2. Phân loại và cấu trúc của chương trình con.

o Hàm (Function): Là chương trình con thực hiện một

số thao tác nào đó và trả về một giá trị qua tên của nó.

Sin(x) nhận giá trị thực x và trả về giá trị sinx.

Cos(x) nhận giá trị x và trả về giá trị cosx.

Sqrt(x) nhận giá trị x và trả về giá trị căn bậc 2

của x.

length(x) nhận xâu x và trả về độ dài của sâu x.

Hàm (Function)

Thủ tục (Procedure)

Page 12: Bai 17

o Thủ tục (Procedure): Là chương trình con thực

hiện một số thao tác nhất định nhưng không trả về

giá trị qua tên của nó.

2. Cấu trúc và phân loại chương trình con.

writeln,

readln,

delete,

insert,...

b. Phân loạiHàm (Function)

Thủ tục (Procedure)

Page 13: Bai 17

2. Cấu trúc và phân loại chương trình con.

a. Cấu trúc chương trình con

<phần đầu>

[<phần khai báo>]

<phần thân>

Cấu trúc chương trình con tương tự chương trình chính,

nhưng nhất thiết phải có phần đầu để khai báo tên, nếu là

Hàm thì phải có khai báo kiểu dữ liệu trả về.

Page 14: Bai 17

2. Cấu trúc và phân loại chương trình con.

a. Cấu trúc chương trình con

Phần khai báo: có thể khai báo cho dữ liệu vào và ra,

các hằng được sử dụng trong chương trình con.

Phần thân: Là các dãy lệnh được thưc hiện trong

chương trình con từ dữ liệu vào và được kết quả như

mong muốn.

Phần đầu: dùng để khai báo tên, nếu là hàm phải khai

báo kiểu dữ liệu cho giá trị trả về của hàm.

Page 15: Bai 17

CHƯƠNG TRÌNH CON

HÀM (Function)

- Là chương trình con

thực hiện dãy lệnh.

- Trả về giá trị cụ thể

qua tên của nó.

THỦ TỤC (Procedure)

- Là chương trình con

thực hiện dãy lệnh.

- Không trả về giá trị nào

qua tên của nó.

Ví dụ hàm:

3! = 6

32= 9

Sin(30o) = 0.5

Ví dụ thủ tục:

Readln;

Delete;

Writeln;

Page 16: Bai 17

17

Function <TÊNHÀM>[(<ds tham sỐ>)]

: Kiểu của hàm;

[< Phần khai báo >]

Begin

[<Dãy lệnh>];

TÊNHÀM := Giá trị;

End;

Procedure <TÊNTHỦTỤC> [(<ds tham số>)];

[< Phần khai báo >]

Begin

[<Dãy lệnh>];

End;

HÀM(Function) THỦ TỤC (Procedure)

Page 17: Bai 17

18

1. Hoán đổi hai số a và b: Hoandoi(a,b)

Các bài toán sau dùng hàm hay thủ tục:

2. Tìm ước chung lớn nhất của a và b: UCLN(a,b)

3. Tính độ dài của 1 xâu a: Length(a)

4. Kiểm tra a,b,c có là ba cạnh của một tam giác: KT(a,b,c)

Function Dodai(a:string;n:integer;): integer;

Function tamgiac (a,b,c: word): Boolean;

Procedure Hoandoi (a,b:real)

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

Page 18: Bai 17

Khái niệm

chương trình

con

Phân loại CTC

CỦNG CỐ

Lợi ích của

chương trình

con

TRỌNG TÂM

Phân biệt hàm

và thủ tục

Là 1 dãy lệnh

mô tả 1 số thao

tác nhất định.

Có thể được

gọi từ nhiều vị

trí trong

chương trình.

Tránh được sự

lặp lại cùng một

dãy lệnh.

Hỗ trợ việc thực

hiện chương

chình lớn.

Phục vụ cho quá

trình trừu tượng

hóa.

Mở rộng ngôn

ngữ, dễ nâng

cấp.

Hàm: trả

về một giá

trị qua tên

của nó

Thủ tục:

không trả về

giá trị nào đó

qua tên của

nó.

Page 19: Bai 17
Page 20: Bai 17

KIỂM TRA BÀI CŨ

1. Nêu khái niệm chương trình con và

những lợi ích của CTC?

2. Phân loại chương trình con? Sự khác

biệt giữa hàm và thủ tục?

Page 21: Bai 17

NỘI DUNG

Cấu trúc của chương trình

Biến cục bộ, biến toàn cục, TSHT

Củng cố bài hoc4

1

2

3 TS thực sự và thực hiện CTC

Page 22: Bai 17

Sự khác nhau

giữa chương

trình chính và

CTC?

Page 23: Bai 17

SỰ KHÁC NHAU GIỮA CHƯƠNG TRÌNH

CHÍNH VÀ CHƯƠNG TRÌNH CON

Trong cấu trúc CTC 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.

Sau End kết thúc thân chương trình con

phải là dấu chấm phẩy (;).

Page 24: Bai 17

2. Phân loại và cấu trúc của chương trình con.

b. Cấu trúc chương trình con

Tham số hình thức:

- Các biến được khai báo cho dữ liệu vào/ra được gọi là

tham số hình thức của chương trình con.

Tham số thực sự:

- Các hằng số hoặc biến chứa dữ liệu tương ứng với các

tham số hình thức đặt trong cặp ngoặc ( ). Các hằng và

biến này được gọi là các tham số thực sự.

Page 25: Bai 17

Function luythua(x : real; k : integer) : real;

Var Tich : real;

J : integer;

Begin

End;

Tich := 1.0;

For j := 1 to k do

Tich := Tich*x;

Luythua := Tich;

Program chuongtrinhcon;

BEGIN

Writeln(‘Luy thua cua 2 mu 3 la:’, luythua(2,3));

END.

Tính 2 lũy thừa 3 Tham sốhình thức

Tham sốthực sự

Page 26: Bai 17

BIẾN CỤC BỘ VÀ BIẾN TOÀN CỤC

o Các biến được khai báo dùng riêng cho chương trình

con được gọi là biến cục bộ. Chương trình chính và

các chương trình con khác không thể sử dụng được

các biến này.

o Các biến được khai báo ở chương trình chính là biến

toàn cục và các chương trình con đều sử dụng được

các biến này.

Page 27: Bai 17

program binhphuong;

var a, x: real;

procedure binhphuong1 (b: real; var y: real);

begin

y:=b*b;

Writeln(‘ Binh phuong cua so do la’,y:4:2);

end;

BEGIN

binhphuong1(4,x);

Write(‘ Nhap so can tim a=’); readln(a);

binhphuong1(a,x);

readln;

END.

Biến cục bộ

Biến toàn cục

Page 28: Bai 17

Uses crt;

Var T, a, b, c, d:real;

N,m,p,q : integer;

Begin

write(‘nhap a, b, c, d: ‘); readln(a,n,b,m,c,p,d,q);

Write(‘Luy thua cua 2 mu 3 la:’, luythua(2,3));

T:=Luythua(a,n)+Luythua(b,m)+Luythua(c,p)+Luythua(d,q);Writeln(‘Tong cac luy thua la: ‘,T);

Readln;

End.

Function Luythua ( x, k : integer) : integer ;

Var i, LT : integer;

begin

LT:=0;

for i:=1 to k do

LT:=LT * x;

Luythua:=LT;

End;

Biến toàn cục

Biến cục bộ

Tham số

hình thức

Tham số

hình thức

Xác định biến toàn cục và biến cục bộ, TSHT,

TSTS trong đoạn code bên dưới:

Tham số

thực sự

Page 29: Bai 17

2. Phân loại và cấu trúc của chương trình con.

c. Thực hiện chương trình con

Cách thực hiện chương trình con

- Để thực hiện gọi một chương trình con, ta cần phải có

lệnh gọi, bao gồm tên chương trình con với các tham số(nếu

có) và các hằng số hoặc biến chứa dữ liệu tương ứng với

các tham số hình thức đặt trong cặp ngoặc ( ). Các hằng và

biến này được gọi là các tham số thực.

VD: Sqr(225);

Luythua(a,n);

HCN(Chieudai,Chieurong);HCN(5,4)

Page 30: Bai 17

Cấu trúc của

CTC

Đ/N biến cục

bộ, biến toàn

cục và TSHT

CỦNG CỐ

Sự khác nhau

giữa chương

trình chính và

CTC

TRỌNG TÂM

Đ/N TSTS và

cách thực

hiện CTC

<phần đầu>

[<phần khai báo>]

<phần thân>

CTC: 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.

Sau End kết

thúc thân

chương trình

con phải là dấu

chấm phẩy (;).

<Tên chương

trình con>

(<tham số thực

sự>);

Các biến

được khai

báo để dùng

riêng trong

CTC là BCB.

Biến mà tất

cả các CTC

đều dung

được là BTC.

Page 31: Bai 17

Vd: Tính lũy thừa = an+bm+cp+dq .

- Bài toán trên có thể phân tích thành những bài toán

nhỏ hơn là: Bài toán tính an , tính bm, tính cp, tính dq.

- Với 4 bài toán nhỏ ở trên ta có thể giao cho 4 người giải,

như thế công việc sẽ nhẹ nhàng hơn.

- Mỗi bài toán con lại chia thành những bài toán con nhỏ hơn.

- Quá trình làm “Mịn” như thế được gọi là cách thiết kế từ

trên xuống.

Vd: Tính = (Sin (a))n + (Cos(b))n .

Page 32: Bai 17

Var c1, c2, c3:integer;

p := (c1+c2+c3)/2;

dt := sqrt(p*(p-c1)*(p-c2)*(p-c3);

p1 := (a+b+c)/2;

dt1 := sqrt(p1*(p1-a)*(p1-b)*(p1-c));

p2 := (c+d+e)/2;

dt2 := sqrt(p2*(p2-c)*(2p-d)*(p2-e));

p3 := (e+f+g)/2;

dt1 := sqrt(p3*(p3-e)*(p3-f)*(p3-g));

dt := dt1 + dt2 +dt3;

writeln(‘Diện tích ngũ giác ABCDEFG: ‘, dt);

Readln;

END.