210 likes | 720 Views
Cấu trúc rẽ nhánh và tuyển chọn trong PASCAL. HỌC VIỆN QUÂN Y Bộ môn Toán – Tin học. Người trình bày: Hoàng Anh. Nội dung. Phân loại câu lệnh trong Pascal Cấu trúc rẽ nhánh với lệnh IF Cấu trúc lựa chọn với lệnh CASE ... OF. Phép gán. Phép gán. Lời gọi procedure. Lời gọi procedure.
E N D
Cấu trúc rẽ nhánh và tuyển chọn trong PASCAL HỌC VIỆN QUÂN Y Bộ môn Toán – Tin học Người trình bày: Hoàng Anh
Nội dung • Phân loại câu lệnh trong Pascal • Cấu trúc rẽ nhánh với lệnh IF • Cấu trúc lựa chọn với lệnh CASE ... OF
Phép gán Phép gán Lời gọi procedure Lời gọi procedure Câu lệnh đơn Câu lệnh đơn Lệnh nhảy GO TO Lệnh nhảy GO TO Câu lệnh ghép: BEGIN ... END Câu lệnh ghép: BEGIN ... END Câu lệnh Câu lệnh Cấu trúc rẽ nhánh, lựa chọn: IF ... THEN ... ELSE CASE ... OF ... Cấu trúc rẽ nhánh, lựa chọn: IF ... THEN ... ELSE CASE ... OF ... Câu lệnh có cấu trúc Câu lệnh có cấu trúc WITH... WITH... Các vòng lặp: FOR ... TO ... DO ... REPEAT...UNTIL... WHILE ... DO ... Các vòng lặp: FOR ... TO ... DO ... REPEAT...UNTIL... WHILE ... DO ... I. Phân loại câu lệnh trong Pascal
I. Phân loại câu lệnh trong Pascal • Phép gán: Biến:= Biểu thức; • x := 34; • x:= x + 1; • Lời gọi hàm, thủ tục: • Readln(x); Write(‘x=‘, x); • Clrscr; • Câu lệnh ghép • Begin • Câu lệnh 1; • Câu lệnh 2; • .... • Câu lệnh n; • End; • Câu lệnh ghép có thể hiểu theo một ý nghĩa nào đó tương tự như một cặp ngoặc trong một biểu thức.
II. Cấu trúc rẽ nhánh với lệnh IF • Tác dụng: • Cấu trúc rẽ nhánh với lệnh If...Then...Else cho phép lựa chọn một trong hai nhánh tuỳ thuộc vào giá trị của một biểu thức logic (Boolean Expression) là đúng hay sai • Cú pháp: • Dạng 1 • If <btl> Then • <Việc 1> ; • Dạng 2 • If <btl> Then • <Việc 1> • Else • <Việc 2>; btl là biểu thức logic. Việc 1, Việc 2 có thể là câu lệnh đơn hoặc câu lệnh có cấu trúc
True False btl Việc 1 II. Cấu trúc rẽ nhánh với lệnh IF • Nguyên lý hoạt động của cấu trúc If dạng 1: • Máy xác định giá trị của biểu thức logic • Nếu: • Biểu thức có giá trị đúng, máy tính thực hiện Việc 1 sau đó thoát khỏi cấu trúc If đi thực hiện các câu lệnh tiếp theo cấu trúc If. • Biểu thức có giá trị sai, máy sẽ bỏ qua việc 1 đi thực hiện các câu lệnh tiếp theo cấu trúc If. Nhận xét: Việc 1 có thể được thực hiện hoặc không tuỳ thuộc vào giá trị của biểu thức logic
True False btl Việc 2 Việc 1 II. Cấu trúc rẽ nhánh với lệnh IF • Nguyên lý hoạt động của cấu trúc If dạng 2: • Máy xác định giá trị của biểu thức logic • Nếu: • Biểu thức có giá trị đúng, máy tính thực hiện Việc 1 sau đó thoát khỏi cấu trúc If đi thực hiện các câu lệnh tiếp theo cấu trúc If. • Biểu thức có giá trị sai, máy tính thực hiện Việc 2 sau đó thoát khỏi cấu trúc If đi thực hiện các câu lệnh tiếp theo cấu trúc If. Nhận xét: Hoặc Việc 1, hoặc Việc 2 được thực hiện hoặc không tuỳ thuộc vào giá trị của biểu thức logic
a b c 12 -100 46 II. Cấu trúc rẽ nhánh với lệnh IF • Ví dụ • Viết chương trình tìm số lớn nhất trong 3 số a, b, c đọc vào từ bàn phím • Thuật toán tìm Max trong một dãy số: • Cho Max là số thứ nhất • Lần lượt so sánh Max giả định đó với các số còn lại trong dãy số. Nếu có số thứ i nào đó lớn hơn Max thì lấy số đó làm Max. Như vậy, sau khi duyệt xong dãy số, ta sẽ có Max là số lớn nhất Program max_3_so; Var a, b, c, max: Real; Begin Write(‘a=’); Readln(a); Write(‘b=’); Readln(b); Write(‘c=’); Readln(c); max := a; if max < b then max := b; if max < c then max := c; Writeln(‘Max’ =, max); readln; End. 12 46 Max
-1 nếu x < 0 Sg(x) = 0 nếu x = 0 • Ví dụ: Để tính hàm dấu Sg(x) 1 nếu x > 0 II. Cấu trúc rẽ nhánh với lệnh IF • Sự lồng nhau của cấu trúc If • <Việc 1>, <Việc 2> có thể là câu lệnh đơn hoặc câu lệnh có cấu trúc. • Trong trường hợp <Việc 1> hoặc <Việc 2> lại là một cấu trúc if, chúng ta có trường hợp if lồng nhau. if x<0 then y := -1 else if x=0 then y := 0 else y := 1; • Chú ý • Khi số từ khoá If đúng bằng số từ khoá else thì rất dễ dàng xác định các cặp If ... Else tương ứng. • Khi số từ khoá If nhiều hơn số từ khoá Else, rất khó xác định Else nào đi với If nào, • Nguyên tắc xác định: Else sẽ thuộc về If không có Else gần nhất trước nó (xét ngược từ dưới lên • Ví dụ: • if n>0 then • if a>b then • z:= a • else • z:= b;
II. Cấu trúc lựa chọn Case ... Of • Tác dụng: • Cấu trúc Case ... Of cho phép lựa chọn để thực hiện một trong nhiều công việc tuỳ theo giá trị của một biểu thức • Cú pháp • Case <bt> of • TËp h»ng 1: ViÖc 1; • TËp h»ng 2: ViÖc 2; • .............................. • TËp h»ng n: ViÖc n; • [else • ViÖc n+1]; • End; • Tập hằng i ( i = 1..n ) là dẫy các hằng và các đoạn hằng được phân cách với nhau bởi dấy phảy. Ví dụ về các hằng và đoạn hằng: 3, 10, 12..30 ‘A’, ‘D’. ‘I”..’H’ • <bt> là một biểu thức. Giá trị của bt và giá trị của các hằng trong tập hằng phải cùng kiểu dữ liệu và phải là kiểu vô hướng đếm được (nguyên, ký tự, logic) • Việc 1, Việc n là câu lệnh đơn hoặc câu lệnh có cấu trúc
II. Cấu trúc lựa chọn Case ... Of • Nguyên lý hoạt động: • Máy tính đi tính giá trị của biểu thức bt • Máy tính đi xét giá trị của các hằng trong mỗi tập hằng • Nếu tập hằng thứ i là tập đầu tiên chứa giá trị của bt thì máy tính đi thực hiện Việc i. Sau đó nó thoát ra khỏi cấu trúc Case ... Of để đi thực hiện các câu lệnh tiếp theo. • Nếu không có tập hằng nào chứa giá trị của bt thì: • Trường hợp không dùng Else: máy thoát khỏi cấu trúc Case ... Of để đi thực hiện các câu lệnh tiếp theo • Trường hợp có dùng Else: máy thực hiện Việc n+1. Sau đó nó thoát ra khỏi cấu trúc Case ... Of để đi thực hiện các câu lệnh tiếp theo
II. Cấu trúc lựa chọn Case ... Of • Ví dụ: • Đọc từ bàn phím điểm của một học sinh. Điểm là một số nguyên từ 0 đến 10. Dựa vào điểm để đưa ra kết luận theo quy định sau: • Loại xuất sắc nếu điểm bằng 10 • Loại giỏi nếu điểm bằng 8 hoặc 9 • Loại khá nếu điểm bằng 7 • Loại trung bình nếu điểm bằng 5 hoặc 6 • Loại yếu nếu điểm bằng 4 • Loại quá yếu nếu điểm dưới 4
II. Cấu trúc lựa chọn Case ... Of Program phan_loai_hoc_sinh; Var diem:integer; Begin Write(‘diem = ‘); Readln(diem); Case diem of 10 : Writeln(‘Xuat sac’); 8, 9 : Writeln(‘Gioi’); 7 : Writeln(‘Kha’); 5,6 : Writeln(‘Trung binh’); 4 : Writeln(‘Yeu’); 0..3 : Writeln(‘Qua yeu’); End; Readln; End.