Bài 9. Cấu trúc rẽ nhánh
Chia sẻ bởi Nguyễn Hoa Nam |
Ngày 10/05/2019 |
100
Chia sẻ tài liệu: Bài 9. Cấu trúc rẽ nhánh thuộc Tin học 11
Nội dung tài liệu:
SÔÛ GIAÙO DUÏC & ÑAØO TAÏO DAÊK LAÊK
Giáo viên: Phạm Thị Dung
Tổ: Tin học
Trường THPT Cao Bá Quát
Một lần Châu hẹn với Ngọc: "Chiều mai nếu trời không mưa thì Châu sẽ đến thăm Ngọc".
Đến thăm khi trời không mưa
Ta nói cách diễn đạt như vậy thuộc dạng thiếu: Nếu. thì.
Một lần khác Ngọc nói với Châu: "Chiều mai nếu trời không mưa thì Ngọc sẽ đến thăm Châu, nếu mưa thì sẽ gọi điện cho Châu".
Khi thỏa mãn điều kiện.
Ta nói cách diễn đạt như vậy thuộc dạng đủ: Nếu.thì., nếu không thì.
Đến thăm và gọi điện
Từ thực tế, ta có thể nhận thấy trong nhiều thuật toán, các thao tác tiếp theo sẽ phụ thuộc vào kết quả nhận được từ các bước trước đó.
Sau khi tính delta D = b2 - 4ac, ta sẽ phải xét D để tìm nghiệm.
- Nếu D>=0, ta sẽ tính rồi đưa ra các nghiệm
- Ngược lại, ta thông báo là phương trình vô nghiệm
Mọi ngôn ngữ lập trình đều có các câu lệnh mô tả cấu trúc rẽ nhánh.
Ví dụ: Giải phương trình bậc hai; ax2 + bx +c = 0 (a<>0)
T
F
D > 0 ?
Cấu trúc rẽ nhánh là một điều khiển chọn thực hiện hay không thực hiện một công việc phù hợp với điều kiện đang xảy ra
Nhaäp a, b, c
D b2 – 4ac
Tính và đưa ra nghiệm
thực, rồi kết thúc
Thông báo vô nghiệm
rồi kêt thúc
Để giải quyết những bài toán nêu trên (bài toán có điều kiện), ngôn ngữ lập trình Pascal cung cấp cho chúng ta câu lệnh rẽ nhánh ở cả hai dạng thiếu và đủ.
a. Dạng thiếu:
Cú pháp:
IF <Điều kiện> THEN;
* Trong đó:
- Điều kiện: là biểu thức logic
- Lệnh S: là 1 câu lệnh của Pascal
* Ý nghĩa: Nếu điều kiện nhận giá trị đúng thì thực hiện lệnh S, ngược lại thì bỏ qua lệnh S rồi chuyển đến câu lệnh tiếp theo.
Biểu thức Logic là các biểu thức quan hệ được liên kết với nhau bởi phép toán Logic. Giá trị của biểu thức Logic là True hoặc False.
Ví dụ: 6 mod 2 = 0
T
Dựa vào cú pháp, ý nghĩa và sơ đồ thể hiện cấu trúc rẽ nhánh, em hãy vẽ lưu đồ cú pháp của dạng thiếu?
T
F
Lệnh S
Điều kiện
IF
Câu lệnh tiếp theo
Ví dụ 1: Nếu điểm trung bình >= 5 thì xuất ra màn hình thông báo "bạn đã đậu".
Em hãy xác định điều kiện và câu lệnh trong ví dụ bên?
Điều kiện: điểm trung bình >= 5
Lệnh S: lệnh xuất thông báo (write)
IF ÑTB>= 5 THEN WRITE(‘Ban ña ñau’);
Ví dụ 2: Kiểm tra 1 số nguyên n, nếu n chẵn thì xuất ra màn hình thông báo.
Nếu n chia hết cho 2 thì n là số chẵn
Dựa vào cú pháp hàm IF, em hãy chuyển ý tưởng trên thành câu lệnh trong Pascal?
IF n mod 2 = 0 THEN write(‘n chan’);
Lệnh S được thực hiện khi nào ?
Khi kiểm tra điều kiện điểm trung bình > = 5 là đúng
F
n mod 2=0 ?
Câu lệnh tiếp theo
n 7
T
n mod 2=0 ?
IF n mod 2 = 0 THEN write(`n chan`);
N8
Write(`n chan`);
Câu lệnh tiếp theo
Ví dụ2: Hãy kiểm tra xem 3 số a, b, c có phải là độ dài 3 cạnh của một tam giác không (a>0, b>0, c>0).
Nếu a, b, c là độ dài 3 cạnh của một tam giác thì chúng thỏa mãn: Tổng của 2 số bất kì sẽ lớn hơn số còn lại (a+b>c v a+c>b v b+c>a).
If (a+b>c) And (a+c>b) And (b+c>a) then writeln(a, b, c,`la do dai 3 canh cua tam giac`);
b. Dạng đủ:
* Cú pháp: IF <điều kiện> THEN ELSE ;
* Ví dụ : Hãy kiểm tra xem n (n<>0) là số âm hay dương. Xuất thông báo ra màn hình.
If n<0 then write(`n la so am`) else duong`);
* Chức năng: Nếu điều kiện đúng thì thực hiện lệnh S1, ngược lại thực hiện lệnh S2.
* Lưu đồ cú pháp: (xem như bài tập về nhà)
* Ví dụ 2: Xem các ví dụ trong sách giáo khoa trang 40
* Trong đó: Điều kiện là biểu thức Logic
Lệnh S1, S2 là 1 lệnh trong Pascal
Em hãy xác định điều kiện , lệnh S1, S2 trong ví dụ trên?
Điều kiện: n> 0
Lệnh S1: xuất n dương
Lệnh S2: xuất n âm
So sánh a và b, nếu a lớn hơn b thì gán Max = a, Min = b,
ngược lại gán Max = b, Min = a
Khi a > b là đúng thì làm những công việc gì?
Gán Max = a và gán Min = b
Cú pháp câu lệnh rẽ nhánh có dạng:
IF <Điều kiện> THEN ELSE ;
Trong đó llệnh S1 và S2 là 1 lệnh đơn, nhưng trong ví dụ đang xét, nếu a >b là đúng thì phải thực hiện mấy lệnh?
Theo cú pháp, sau một số từ khóa (như THEN, ELSE) phải là một câu lệnh. Nhưng trong nhiều trường hợp, các thao tác sau những tên dành riêng đó khá phức tạp, đòi hỏi không phải chỉ một mà là nhiều câu lệnh để mô tả.
Để giải quyết những bài toán như vậy, ngôn ngữ lập trình Pascal cho phép gộp một dãy câu lệnh thành một câu lệnh ghép (câu lệnh hợp thành)
Câu lệnh ghép có dạng: Begin
< các câu lệnh>;
End;
If <Điều kiện> Then Begin
;
;
..
;
End
Else Begin
;
;
.
;
End;
If <Điều kiện> Then Begin
;
;
.
;
End;
;
IF a > b THEN
BEGIN
Max:=a;
Min :=b;
END
ELSE
BEGIN
Max :=b;
Min := a;
END;
Giả sử câu lệnh sau THEN được viết lại như sau:
IF a > b THEN
Max:=a;
Min :=b;
Theo đề bài thì khi a>b sẽ thực hiện 2 lệnh gán, nhưng nếu viết như trên thì lệnh Max:=a được thực hiện khi nào?
Lệnh Min:= b được thực hiện khi nào?
Có khi nào cả 2 lệnh đều bị bỏ qua không?
Bài 1: Nhập ba số a, b, c. Hãy tìm giá trị lớn nhất của chúng và gán giá trị lớn nhất đó cho biến Max.
Bài 2: Bài tập 4 sách giáo khoa trang 51.
Bài 9 : CẤU TRÚC RẼ NHÁNH
Giáo viên: Phạm Thị Dung
Tổ: Tin học
Trường THPT Cao Bá Quát
Một lần Châu hẹn với Ngọc: "Chiều mai nếu trời không mưa thì Châu sẽ đến thăm Ngọc".
Đến thăm khi trời không mưa
Ta nói cách diễn đạt như vậy thuộc dạng thiếu: Nếu. thì.
Một lần khác Ngọc nói với Châu: "Chiều mai nếu trời không mưa thì Ngọc sẽ đến thăm Châu, nếu mưa thì sẽ gọi điện cho Châu".
Khi thỏa mãn điều kiện.
Ta nói cách diễn đạt như vậy thuộc dạng đủ: Nếu.thì., nếu không thì.
Đến thăm và gọi điện
Từ thực tế, ta có thể nhận thấy trong nhiều thuật toán, các thao tác tiếp theo sẽ phụ thuộc vào kết quả nhận được từ các bước trước đó.
Sau khi tính delta D = b2 - 4ac, ta sẽ phải xét D để tìm nghiệm.
- Nếu D>=0, ta sẽ tính rồi đưa ra các nghiệm
- Ngược lại, ta thông báo là phương trình vô nghiệm
Mọi ngôn ngữ lập trình đều có các câu lệnh mô tả cấu trúc rẽ nhánh.
Ví dụ: Giải phương trình bậc hai; ax2 + bx +c = 0 (a<>0)
T
F
D > 0 ?
Cấu trúc rẽ nhánh là một điều khiển chọn thực hiện hay không thực hiện một công việc phù hợp với điều kiện đang xảy ra
Nhaäp a, b, c
D b2 – 4ac
Tính và đưa ra nghiệm
thực, rồi kết thúc
Thông báo vô nghiệm
rồi kêt thúc
Để giải quyết những bài toán nêu trên (bài toán có điều kiện), ngôn ngữ lập trình Pascal cung cấp cho chúng ta câu lệnh rẽ nhánh ở cả hai dạng thiếu và đủ.
a. Dạng thiếu:
Cú pháp:
IF <Điều kiện> THEN
* Trong đó:
- Điều kiện: là biểu thức logic
- Lệnh S: là 1 câu lệnh của Pascal
* Ý nghĩa: Nếu điều kiện nhận giá trị đúng thì thực hiện lệnh S, ngược lại thì bỏ qua lệnh S rồi chuyển đến câu lệnh tiếp theo.
Biểu thức Logic là các biểu thức quan hệ được liên kết với nhau bởi phép toán Logic. Giá trị của biểu thức Logic là True hoặc False.
Ví dụ: 6 mod 2 = 0
T
Dựa vào cú pháp, ý nghĩa và sơ đồ thể hiện cấu trúc rẽ nhánh, em hãy vẽ lưu đồ cú pháp của dạng thiếu?
T
F
Lệnh S
Điều kiện
IF
Câu lệnh tiếp theo
Ví dụ 1: Nếu điểm trung bình >= 5 thì xuất ra màn hình thông báo "bạn đã đậu".
Em hãy xác định điều kiện và câu lệnh trong ví dụ bên?
Điều kiện: điểm trung bình >= 5
Lệnh S: lệnh xuất thông báo (write)
IF ÑTB>= 5 THEN WRITE(‘Ban ña ñau’);
Ví dụ 2: Kiểm tra 1 số nguyên n, nếu n chẵn thì xuất ra màn hình thông báo.
Nếu n chia hết cho 2 thì n là số chẵn
Dựa vào cú pháp hàm IF, em hãy chuyển ý tưởng trên thành câu lệnh trong Pascal?
IF n mod 2 = 0 THEN write(‘n chan’);
Lệnh S được thực hiện khi nào ?
Khi kiểm tra điều kiện điểm trung bình > = 5 là đúng
F
n mod 2=0 ?
Câu lệnh tiếp theo
n 7
T
n mod 2=0 ?
IF n mod 2 = 0 THEN write(`n chan`);
N8
Write(`n chan`);
Câu lệnh tiếp theo
Ví dụ2: Hãy kiểm tra xem 3 số a, b, c có phải là độ dài 3 cạnh của một tam giác không (a>0, b>0, c>0).
Nếu a, b, c là độ dài 3 cạnh của một tam giác thì chúng thỏa mãn: Tổng của 2 số bất kì sẽ lớn hơn số còn lại (a+b>c v a+c>b v b+c>a).
If (a+b>c) And (a+c>b) And (b+c>a) then writeln(a, b, c,`la do dai 3 canh cua tam giac`);
b. Dạng đủ:
* Cú pháp: IF <điều kiện> THEN
* Ví dụ : Hãy kiểm tra xem n (n<>0) là số âm hay dương. Xuất thông báo ra màn hình.
If n<0 then write(`n la so am`) else duong`);
* Chức năng: Nếu điều kiện đúng thì thực hiện lệnh S1, ngược lại thực hiện lệnh S2.
* Lưu đồ cú pháp: (xem như bài tập về nhà)
* Ví dụ 2: Xem các ví dụ trong sách giáo khoa trang 40
* Trong đó: Điều kiện là biểu thức Logic
Lệnh S1, S2 là 1 lệnh trong Pascal
Em hãy xác định điều kiện , lệnh S1, S2 trong ví dụ trên?
Điều kiện: n> 0
Lệnh S1: xuất n dương
Lệnh S2: xuất n âm
So sánh a và b, nếu a lớn hơn b thì gán Max = a, Min = b,
ngược lại gán Max = b, Min = a
Khi a > b là đúng thì làm những công việc gì?
Gán Max = a và gán Min = b
Cú pháp câu lệnh rẽ nhánh có dạng:
IF <Điều kiện> THEN
Trong đó llệnh S1 và S2 là 1 lệnh đơn, nhưng trong ví dụ đang xét, nếu a >b là đúng thì phải thực hiện mấy lệnh?
Theo cú pháp, sau một số từ khóa (như THEN, ELSE) phải là một câu lệnh. Nhưng trong nhiều trường hợp, các thao tác sau những tên dành riêng đó khá phức tạp, đòi hỏi không phải chỉ một mà là nhiều câu lệnh để mô tả.
Để giải quyết những bài toán như vậy, ngôn ngữ lập trình Pascal cho phép gộp một dãy câu lệnh thành một câu lệnh ghép (câu lệnh hợp thành)
Câu lệnh ghép có dạng: Begin
< các câu lệnh>;
End;
If <Điều kiện> Then Begin
..
End
Else Begin
.
End;
If <Điều kiện> Then Begin
.
End;
;
IF a > b THEN
BEGIN
Max:=a;
Min :=b;
END
ELSE
BEGIN
Max :=b;
Min := a;
END;
Giả sử câu lệnh sau THEN được viết lại như sau:
IF a > b THEN
Max:=a;
Min :=b;
Theo đề bài thì khi a>b sẽ thực hiện 2 lệnh gán, nhưng nếu viết như trên thì lệnh Max:=a được thực hiện khi nào?
Lệnh Min:= b được thực hiện khi nào?
Có khi nào cả 2 lệnh đều bị bỏ qua không?
Bài 1: Nhập ba số a, b, c. Hãy tìm giá trị lớn nhất của chúng và gán giá trị lớn nhất đó cho biến Max.
Bài 2: Bài tập 4 sách giáo khoa trang 51.
Bài 9 : CẤU TRÚC RẼ NHÁNH
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Nguyễn Hoa Nam
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)