Tải bản đầy đủ - 219 (trang)
CÁC CÂU LỆNH CÓ CẤU TRÚC

CÁC CÂU LỆNH CÓ CẤU TRÚC

Tải bản đầy đủ - 219trang

Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



Nếu <Điều kiện> có giá trị FALSE thì ra

khỏi lệnh IF mà không làm gì.



Nếu <Điều kiện> có giá trị FALSE thì thực

hiện ;



6.2.1.4 Lưu đồ minh họa câu lệnh

Dạng khuyết



Dạng đủ

IF

Đ



S



Đ



Điều kiện



Công việc



Công việc 1



Điều kiện

S



Công việc 2



6.2.1.5 Ví dụ:

Ví dụ 6.1: Viết chương trình giải phương trình bậc nhất ax+b=0 với các hệ số a, b nhập từ bàn

phím.

Program

giai_phuong_trinh_bac_nhat;

Uses Crt;

Var a, b, x: Real;

BEGIN

ClrScr;

Write('Nhap he so a= '); ReadLn(a);

Write('Nhap he so b= '); ReadLn(b);

If a<>0 then

Begin

x:=-b/a;

WriteLn('Phuong trinh co nghiem x= ',x:8:3);

End

Else {a = 0}

If b=0 then

WriteLn('Phuong trinh co vo so nghiem')

Else {a = 0, b <> 0}

WriteLn('Phuong trinh vo nghiem ');

ReadLn;

END.

Giáo trình Tin học đại cương



118



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



6.2.1.6 Chú ý

- Câu lệnh ngay trước từ khoá ELSE của lệnh IF không có dấu ;

- Trong trường hợp dùng các lệnh IF lồng nhau, nên viết IF ... THEN ... ELSE thành khối để

tiện kiểm tra khi có lỗi logic.

Chẳng hạn ta có thể viết một lệnh IF lồng nhau theo cấu trúc sau:

IF <Điều kiện 1> THEN



ELSE

IF <Điều kiện 2> THEN



ELSE ;

- Cần nắm được qui ước sau đây để hiểu ELSE đi với IF nào “ELSE gắn với IF gần nhất với nó

ngoài cặp BEGIN .. END sát nó.

- Nên trình bày chương trình khoa học, các lệnh tương ứng ngang hàng nhau, lệnh nào nằm trong

điều kiện thì nên lui vào một chút so với câu điều kiện của nó, bạn sẽ dễ đọc chương trình và

chỉnh sửa lỗi.



6.2.2 Câu lệnh lựa chọn CASE

6.2.2.1 Ý nghĩa

Câu lệnh IF chỉ thực hiện rẽ 2 nhánh tương ứng với giá trị của biểu thức <Điều kiện>. Khi cần

lựa chọn để thực hiện một trong nhiều khả năng khác nhau ta phải dùng rất nhiều lệnh IF. Câu

lệnh CASE sẽ giới thiệu sau đây là lệnh rẽ nhánh theo giá trị cho phép lựa chọn để thực hiện 1

trong nhiều công việc.

6.2.2.2 Cú pháp

Dạng khuyết

Case of

Tập hằng 1: ;



Dạng đủ

Case of

Tập hằng 1: ;



Tập hằng 2: ;

....

Tập hằng i: ;

....

Tập hằng n: ;

End;



Tập hằng 2: ;

....

Tập hằng i: ;

....

Tập hằng n: ;

Else

;

End;



Trong đó:

- <Điều kiện> là biểu thức số học, cho kết quả là một kiểu vô hướng đếm được (nguyên, ký

tự, logic, liệt kê).

- (i=1,..,n) có thể là các hằng và các đoạn hằng, ví dụ:

Giáo trình Tin học đại cương



119



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



3: ;

5, 10..15: ;

2, 4, 6: ;

<5 : ;

’a’..’z’: ;

- có thể là lệnh đơn giản hoặc khối lệnh. Nếu 1 khối lệnh phải được đặt

trong Begin..End;

Giá trị của phải cùng kiểu với kiểu của và cũng phải là kiểu vô

hướng liệt kê.

6.2.2.3 Sự hoạt động

Sự thực hiện của lệnh CASE ..OF phụ thuộc vào giá trị của

Dạng khuyết



Dạng đủ



Nếu giá trị của thuộc


Nếu giá trị của thuộc


hằng i> thì được thực



hằng i> thì được thực hiện



hiện và ra khỏi lệnh CASE; Nếu giá trị



và ra khỏi lệnh CASE; Nếu giá trị của



của không thuộc tập hằng



không thuộc tập hằng nào thì



nào thì thoát ra khỏi lệnh CASE mà



thực hiện rồi thoát ra



không làm gì.



khỏi lệnh CASE .



Có thể biểu diễn câu lệnh theo sơ đồ hoạt động sau:



Biểuthứcchọn



TH1

Công

việc 1



TH2

......



Công

việc 2



THi

......



Công

việc i



TH n-1

Công

việc n-1



THn

Công

việc n



ELSE

Công

việc 0



Hình 6.2a: Sơ đồ hoạt động của câu lệnh CASE dạng đủ.



Giáo trình Tin học đại cương



120



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



Biểuthứcchọn



TH1

Công

việc 1



TH2

Công

việc 2



THi

......



Công

việc i



......



TH n-1

Công

việc n-1



THn

Công

việc n



Hình 6.2b: Sơ đồ hoạt động của câu lệnh CASE dạng khuyết.

6.2.2.4 Lệnh IF .. THEN .. ELSE có thể chuyển thành CASE .. OF như sau

IF <Điều kiện> THEN



ELSE

;



Case <Điều kiện> of

TRUE : ;

FALSE: ;

End;



Ví dụ 6.2: Viết chương trình nhập vào tháng (và năm nếu cần), máy sẽ đưa ra số ngày của

tháng đó.

Program VIDU_6_2;

Uses Crt;

Var

songay, thang: Byte;

nam: Integer;

BEGIN

ClrScr;

Write('Cho biet thang (dang so): '); ReadLn(thang);

Write('Cho biet nam '); ReadLn(nam);

Case thang of

4,6,9,11: songay:=30;

2:If nam mod 4 = 0 then

if (nam mod 100 = 0)and(nam mod 400 <> 0)then

songay:=28

else songay:=29;

Else songay:=28;

Giáo trình Tin học đại cương



121



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



Else { else cua CASE}

songay:=31;

End; {của Case}

{In ket qua }

WriteLn('Thang ', thang, '/',nam,' co: ',songay,' ngay')

ReadLn;

END.

x  y

Ví dụ 6.3: Nhập vào hai số x, y. Tính giá trị biểu thức sau: F= 

| x  y |

Với bài này ta có thể giải bằng cách sử dụng câu lệnh IF hoặc CASE

Cách 1: sử dụng câu lệnh IF

Program vidu_6_3_IF;

Var x,y,F:real;

Begin

Write(‘ Nhap x = ’);readln(x);

Write(‘ Nhap y = ‘);readln(y);

If

x>y

then

F:= x+y

Else {nguoc lai cua x>y tuc la x<=y}

F:=abs(x+y);

Writeln(‘ Gia tri cua bieu thuc F = ‘,F:8:2);

Readln;

End.



Nếu x>y

Nếu x<=y



Cách 2: sử dụng câu lệnh CASE

Program vidu_6_3_CASE;

Var x,y,F:real;

Begin

Write(‘ Nhap x = ’);readln(x);

Write(‘ Nhap y = ‘);readln(y);

Case x>y of

True: F:= x+y;

False: F:=abs(x+y);

End;

Writeln(‘ Gia tri cua bieu thuc F = ‘,F:8:2);

Readln;

End.

Ví dụ 6.4: Lập chương trình tính chiều dài đoạn thẳng AB khi đã biết toạ độ hai đầu mút (Xa,

Ya) và (Xb, Yb).

Program VIDU_6_4;

Giáo trình Tin học đại cương



122



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



Uses Crt;

Var

Xa, Ya, Xb, Yb, d: Real;

BEGIN

ClrScr;

Write('Nhap toa do x cua diem A Xa= '); ReadLn(Xa);

Write('Nhap toa do y cua diem A Ya= '); ReadLn(Ya);

Write('Nhap toa do x cua diem B Xb= '); ReadLn(Xb);

Write('Nhap toa do y cua diem B Yb= '); ReadLn(Yb);

{ Tinh do dai doan thang AB }

d := SQRT(SQR(Xa-Xb)+SQR(Ya-Yb));

{ In ket qua }

WriteLn('Do dai doan thang AB = ', d:10:4);

ReadLn;

END.

Ví dụ 6.5: Lập chương trình biện luận nghiệm của phương trình bậc hai ax2+bx+c=0 với các hệ

số a, b nhập vào từ bàn phím.

Program

VIDU_6_5;

Uses

Crt;

Var

a, b, c, x1, x2, delta: Real;

BEGIN

ClrScr;

Write('Nhap he so thu nhat a= '); ReadLn(a);

Write('Nhap he so thu hai b= '); ReadLn(b);

Write('Nhap he so thu ba

c= '); ReadLn(c);

If a=0 then

WriteLn('Phuong trinh bac hai suy bien, khong xet!')

Else

Begin

delta := SQR(b)-4*a*c; { Tinh delta }

{ Xet delta }

If delta < 0 then

WriteLn('Phuong trinh vo nghiem')

Else

If Delta = 0 then

Begin

WriteLn('Phuong trinh co nghiem kep');

x1:=-b/(2*a);

WriteLn('PT co nghiem kep x1=x2= ',x1:8:3);

end

Else

Begin

123

Giáo trình Tin học đại cương



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



WriteLn('PT co hai nghiem rieng biet');

x1:=(-b+SQRT(Delta))/(2*a);

x2:=(-b-SQRT(Delta))/(2*a);

WriteLn('Nghiem thu nhat cua PT la x1= ',x1:8:3);

WriteLn('Nghiem thu hai cua PT la x2= ',x2:8:3);

End;

End;

ReadLn;

END.



6.3. Câu lệnh lặp xác định FOR

6.3.1. Ý nghĩa:

Câu lệnh lặp là câu lệnh mà cho phép thực hiện lặp đi lặp lại nhiều lần một số công việc.

Câu lệnh FOR là câu lệnh cho phép lặp với số lần lặp biết trước.



6.3.2 Câu lệnh FOR tiến (Dạng 1)

6.3.2.1 Cú pháp

For Biến_điều_khiển:= to do ;

Trong đó:



Biến_điều_khiển, , phải là dữ liệu kiểu vô hướng đếm được như

kiểu số nguyên, kiểu ký tự, kiểu logic...



có thể là một lệnh hoặc một khối lệnh.

6.3.1.2 Sự hoạt động

Bước 1: Biến_điều_khiển được khởi tạo là

Bước 2: Kiểm tra điều kiện Biến_điều_khiển có nhỏ hơn hay bằng (<=) Giá_trị_cuối

không,



hay



Nếu đúng thực hiện bước 3, nếu sai thực hiện bước 4.

Bước 3:

Bước 3.1: Thực hiện

Bước 3.2: Gán giá trị ngay sau cho Biến_điều_khiển bằng succ(của biến điều khiển ở

bước trước)

Bước 3.3: Quay lại bước 2.

Bước 4: Ra khỏi vòng lặp For

Chú ý: Giá trị đầu thường là <= giá trị cuối, tuy nhiên nếu giá trị đầu > giá trị cuối thì vòng lặp

sẽ dừng ngay khi kiểm tra điều kiện đầu tiên.



Giáo trình Tin học đại cương



124



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



6.3.2.3 Lưu đồ thể hiện sự hoạt động

Biến_điều_khiển:=



Hình 6.4. Lưu đồ hoạt động của

vòng lặp xác định FOR tiến



Biếnđiềukhiển<=

+

Công việc



Biếnđiềukhiển:=SUCC(biếnđiềukhiển)



6.3.2.4. Ví dụ

Ví dụ_6.6: Tính tổng S=1+1/2+1/3+...+1/n . Biết rằng n là một số nguyên dương được đọc vào

từ bàn phím.

Program

VIDU_6_6; { Chuong trinh su dung FOR tien }

Uses Crt;

Var

i, n: Integer;

s: Real;

BEGIN

ClrScr;

Write('Nhap n= '); ReadLn(n);

s:=0;

For i:=1 to n do

s:=s+1/i;

WriteLn('Tong S= ',s:8:3);

ReadLn;

END.



6.3.3 Câu lệnh FOR lùi (Dạng 2)

6.3.3.1 Cú pháp

For Biến_điều_khiển:= to do ;

Trong đó:

 Biến_điều_khiển, , phải là dữ liệu kiểu vô hướng đếm được như

kiểu số nguyên, kiểu ký tự, kiểu logic...

Giáo trình Tin học đại cương



125



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.











có thể là một lệnh hoặc một khối lệnh. Nếu là một khối lệnh thì phải được đặt

trong Begin ... End;

Thường thì giá_trị_đầu >= giá_trị_cuối.



6.3.3.2 Sự hoạt động

Bước 1: Biến_điều_khiển được khởi tạo bằng

Bước 2: Kiểm tra điều kiện Biến_điều_khiển lớn hơn hay bằng (>=)

Nếu đúng thực hiện bước 3, nếu sai thực hiện bước 4.

Bước 3:

Bước 3.1: Thực hiện

Bước 3.2: Gán giá trị cho Biến_điều_khiển bởi pred (biến điều khiển ở bước trước)

Bước 3.3: Quay lại bước 2.

Bước 4: Ra khỏi vòng lặp For

6.3.3.3 Lưu đồ thể hiện sự hoạt động

Biến_điều_khiển := Giá trị đầu



Hình 6.5. Lưu đồ hoạt động

của vòng lặp xác định FOR lùi



Biến_điều_khiển >= Giá trị cuối

+

Công việc



Biến_điều_khiển := PRED( Biến_điều_khiển)



Ví dụ 6.7: Xét ví dụ 6.6 nhưng sử dụng câu lệnh FOR lùi

Program

VIDU_6_7;

Uses

Crt;

Var

i, n: Integer;

s: Real;

BEGIN

ClrScr;

Write('Nhap n= '); ReadLn(n);

s:=0;

For i:=n downto 1 do s:=s+1/i;

Giáo trình Tin học đại cương



126



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



WriteLn('Tong S= ',s:8:3);

ReadLn;

END.

Ví dụ 6.8: Minh hoạ cho việc sử dụng biến điều khiển có kiểu CHAR: Viết chương trình in ra

màn hình 2 dòng: dòng thứ nhất in các chữ thường a z, dòng thứ hai in các chữ IN HOA từ Z

A.

Program vidu_6_8;

Uses

Crt;

Var

ch: Char;

BEGIN

ClrScr;

WriteLn('In cac ky

For ch:='a' to 'z'

WriteLn;

WriteLn;

WriteLn('In cac ky

For ch:='Z' downto

WriteLn;

ReadLn;

END.



tu viet thuong tu a ==> z');

do Write(ch:3);



tu viet IN HOA tu Z ==> A');

'A' do Write(ch:3);



6.4. Câu lệnh lặp không xác định WHILE và REPEAT

6.4.1 Ý nghĩa

Rất nhiều trường hợp bài toán cần phải lặp đi lặp lại một hoặc một số công việc song lại

không thể xác định được là phải lặp bao nhiêu lần, do vậy không thể dùng lệnh FOR được.

Pascal cung cấp 2 lệnh là REPEAT và WHILE để lặp cho những trường hợp không biết trước số

lần lặp.



6.4.2 Câu lệnh lặp không xác định kiểm tra điều kiện sau REPEAT

Câu lệnh REPEAT là câu lệnh lặp thực hiện công việc trước, kiểm tra điều kiện sau. Câu

lệnh này thường được sử dụng trong những bài toán mà ta chỉ biết một điều kiện kiểm tra, cần

lặp đi lặp lại công việc cho đến khi điều kiện này được thỏa mãn. Những trường hợp như tính

toán thỏa mãn sai số cho trước, chạy thử một chương trình nhiều lần để kiểm tra mà chỉ cần ấn

Ctrl+F9 một lần, chương trình chỉ dừng khi ta chọn K hoặc k cho câu hỏi “Co tiep tuc nua

khong? (C/K)” hay nhấn phím ESC cho câu hỏi “Co tiep tuc nua khong? (nhan ESC de dung),…

Thực hiện câu lệnh REPEAT - UNTIL như sau:

6.4.2.1 Cú pháp

Repeat

;

Until <Điều kiện>;

Giáo trình Tin học đại cương



127



Trường Đại học Điện lực - Tập đoàn Điện lực Việt Nam



.



.



Trong đó:

 <Điều kiện> là một biểu thức logic, trả về giá trị TRUE hoặc FALSE

Có thể là một lệnh hoặc một khối lệnh

6.4.2.2 Sự hoạt động

i) Thực hiện công việc Công_việc

ii) Tính giá trị của biểu thức logic điều_kiện,

iii) Nếu sai, quay về bước i),

iv) Nếu đúng, dừng và kết thúc vòng lặp.

6.4.2.3 Lưu đồ thể hiện sự hoạt động

Công việc

Hình 6.6. Lưu đồ hoạt động của

câu lệnh Repeat



Điều kiện đúng

+



6.4.2.4 Chú ý

đặt giữa 2 từ khoá Repeat và Until có thể là một lệnh hoặc một khối lệnh song

không cần phải đặt trong Begin...End;

 Trong khi thực hiện phải có một lệnh làm thay đổi giá trị của một biến thuộc

biểu thức logic <Điều kiện> để làm cho biểu thức logic tiến đến TRUE nhằm kết thúc vòng

lặp.

được thực hiện trước, <Điều kiện> được kiểm tra sau nên ít nhất

cũng được thực hiện một lần, ngay cả khi <Điều kiện> đã có giá trị TRUE.

 Câu lệnh lặp Repeat ... Until cũng dùng được trong trường hợp đã biết trước số lần lặp.

6.4.2.5 Ví dụ

Ví dụ 6.9: Tính tổng S=1+1/2+1/3+...+1/n . Biết rằng n là một số nguyên dương được đọc vào từ

bàn phím.

Program VIDU_6_9;

Uses

Crt;

Var

i, n: Integer;

s: Real;

BEGIN

ClrScr;

Write('Nhap n= '); ReadLn(n);

s:=0; i:=1;

Repeat

s:=s+1/i;

Giáo trình Tin học đại cương



128



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

CÁC CÂU LỆNH CÓ CẤU TRÚC

Tải bản đầy đủ ngay(219 tr)

×
x