SGK Tin Học 8 - Bài 6. CÂU LỆNH ĐIỀU KIỆN

  • Bài 6. CÂU LỆNH ĐIỀU KIỆN trang 1
  • Bài 6. CÂU LỆNH ĐIỀU KIỆN trang 2
  • Bài 6. CÂU LỆNH ĐIỀU KIỆN trang 3
  • Bài 6. CÂU LỆNH ĐIỀU KIỆN trang 4
  • Bài 6. CÂU LỆNH ĐIỀU KIỆN trang 5
  • Bài 6. CÂU LỆNH ĐIỀU KIỆN trang 6
BÀI 6
CÂU LỆNH ĐIỀU KIỆN
Hoạt động phụ thuộc vào điều kiện
Trong cuộc sống hằng ngày, chúng ta thực hiện phần lớn các hoạt động một cách tuần tự theo thói quen hoặc theo kế hoạch đã được xác định từ trước. Ví dụ:
Mỗi sáng em thức dậy, tập thể dục buổi sáng, làm vệ sinh cá nhân, ăn sáng và đến trường,...
Long thường đi đá bóng cùng các bạn vào sáng chủ nhật hằng tuần.
Tuy nhiên các hoạt động của con người thường bị tác động bởi sự thay đổi của các hoàn cảnh cụ thể. Nhiều hoạt động sẽ bị thay đổi, bị điều chỉnh cho phù hợp.
“Nếu” em bị ốm, em sẽ không tập thể dục buổi sáng.
“Nếu” trời không mưa vào ngày chủ nhật, Long đi đá bóng; ngược lại Long sẽ ở nhà giúp mẹ dọn dẹp nhà cửa.
Trong cuộc sống hằng ngày, từ “nếu” trong các câu trên được dùng để chỉ một “điều kiện”. Các điều kiện đó là: “Em bị ốm” hoặc “Trời mưa”. Hoạt động tiếp theo của em hoặc của bạn Long sẽ phụ thuộc vào các điều kiện đó có xảy ra hay không.
Có thể liệt kê được rất nhiều tình huống tương tự khác, chẳng hạn khi đi trên đường phô' nếu gặp đèn đỏ, ta phải dừng lại; nếu khách đến nhà, em pha trà mời khách,...
Tóm lại, có những hoạt động chỉ được thực hiện khi một điểu kiện cụ thể được xảy ra. Điều kiện thường là một sự kiện được mô tả sau từ “nếu”.
Tính dúng hoặc sai của các điều kiện
Mỗi điểu kiện nói trên được mô tả dưới dạng một phát biểu. Hoạt động tiếp theo phụ thuộc vào kết quả kiểm tra phát biểu đó đúng hay sai. Vậy kết quả kiểm tra có thể là gì?
Điều kiện
Kiểm tra
Kết quả
Hoạt động tiếp theo
Trời mưa?
Long nhìn ra ngoài trời và thấy trời mưa.
Đúng
Long ở nhà (không đi đá bóng).
Em bị ốm?
Buổi sáng thức dậy, em thấy mình hoàn toàn khoẻ mạnh.
Sai
Em tập thể dục buổi sáng như thường lệ.
Khi kết quả kiểm tra là đúng, ta nói điều kiện được thoả mãn, còn khi kết quả kiểm tra là sai, ta nói điều kiện không thoả mãn.
Ngoài những điểu kiện gắn với các sự kiện đời thường như trên, trong Tin học chúng ta có thể gặp nhiều dạng điều kiện khác, ví dụ:
Nếu nháy nút LJ ỏ góc trên, bên phải cửa sổ trên màn hình máy tính, (thì) cửa sổ sẽ được đóng lại.
Nếu x> 5, (thì hãy) in giá trị của X ra màn hình.
Nếu (ta) nhấn phím Pause/Break, (thì) chương trình (sẽ bị) ngừng.
Điều kiện và phép so sánh
Đê’ so sánh hai giá trị số hoặc hai biểu thức có giá trị số, chúng ta sử dụng các kí hiệu toán học như: =, A và >. Chúng ta cũng biết rằng các phép so sánh có kết quả đúng hoặc sai.
Các phép so sánh có vai trò rất quan trọng trong việc mô tả thuật toán và lập trình. Chúng thường được sử dụng để biểu diễn các điều kiện. Phép so sánh cho kết quả đúng có nghĩa điều kiện được thoả mãn; ngược lại, điểu kiện không được thoả mãn.
Ví dụ 1. Ta muốn chương trình in ra màn hình giá trị lớn hơn trong số hai giá trị của các biến a và b. Khi đó giá trị của biến a hoặc b được in ra phụ thuộc vào phép so sánh a > b là đúng hay sai:
“Nếu a > b, in giá trị của biến a ra màn hình;
ngược lại, in giá trị của biến b ra màn hình.”
Trong trường hợp này điều kiện được biểu diễn bằng phép so sánh a> b.
Tương tự, khi giải phương trình bậc nhất dạng tổng quát bx + c = 0, để tính nghiệm của phương trình chúng ta cần kiểm tra các điểu kiện được cho bằng các phép so sánh b = 0 và c * 0.
Cấu trúc rẽ nhánh
về cơ bản, khi thực hiện chương trình, máy tính sẽ thực hiện một cách tuần tự các câu lệnh từ trên xuống dưới. Đê’ thay đổi trình tự đó, ngôn ngữ lập trình có các câu lệnh cho phép máy tính thực hiện một câu lệnh nào đó, nếu một điểu kiện cụ thể được thoả mãn; ngược lại, nếu điều kiện không được thoả mãn thì bỏ qua câu lệnh hoặc thực hiện một câu lệnh khác.
Ví dụ 2. Một hiệu sách thực hiện đợt khuyến mãi lớn với nội dung sau: Nếu mua sách với tổng sô' tiền ít nhất là 100 nghìn đồng, khách hàng sẽ được giảm 30% tổng số tiền phải thanh toán. Hãy mô tả hoạt động tính tiền cho khách.
Ta có thể mô tả hoạt động tính tiền cho khách hàng bằng các bước dưới đây:
Với mỗi khách hàng, thực hiện :
Bước 1. Tính tổng số tiền T khách hàng đã mua sách.
Bước 2. Nếu T> 100000, số tiền phải thanh toán là 70% xT.
Bước 3. In hoá đơn.
Ví dụ 3. Cũng như ví dụ 2, nhưng chính sách khuyến mãi được thực hiện như sau : Nếu tổng số tiền không nhỏ hơn 100 nghìn đổng, khách hàng sẽ được giảm 30% tổng số tiền phải thanh toán. Trong trường hợp ngược lại, những khách hàng mua với tổng số tiền không đến 100 nghìn đổng sẽ chỉ được giảm 10%.
Khi đó, cần phải tính lại tiền cho khách trong cả hai trường hợp, tổng số tiền không nhỏ hơn 100 nghìn đồng và tổng sô' tiền nhỏ hơn 100 nghìn đồng. Thuật toán có thể được sửa lại như sau:
Bước 7. Tính tổng sô' tiền T khách hàng đã mua sách.
Bước 2. Nếu T> 100000, sô' tiền phải thanh toán là 70% X T; Ngược lại, sô' tiền phải thanh toán là 90% xT.
Bước 3. In hoá đơn.
Cách thể hiện hoạt động phụ thuộc vào điều kiện như trong ví dụ 2 được gọi là cấu trúc rẽ nhánh dạng thiếu (h. 32a), còn trong ví dụ 3 được gọi là cấu trúc rẽ nhánh dạng đủ (h. 32b). cấu trúc rẽ nhánh giúp cho việc lập trình được linh hoạt hơn.
SAI
Càu lệnh
n=
Diữìi ìrièti^
SAI
Cấu trúc rẽ nhánh dạng thiếu
Cấu trúc rẽ nhánh dạng đủ
Hình 32
Câu lệnh điều kiện
Trong các ngôn ngữ lập trình, các cấu trúc rẽ nhánh được thể hiện bằng
cấu lệnh điểu kiện.
Trong Pascal, câu lệnh điểu kiện dạng thiếu được viết với các từ khoá if và then như sau:
if then }
Khi gặp câu lệnh điểu kiện này, chương trình sẽ kiểm tra điều kiện. Nếu điều kiện được thoả mãn, chương trình sẽ thực hiện câu lệnh sau từ khoá then. Ngược lại, câu lệnh đó bị bỏ qua.
Ví dụ 4. Nhiều chương trình yêu cầu người dùng nhập một sô' hợp lệ, chẳng hạn không lớn hơn 5, từ bàn phím. Chương trình đọc số, kiểm tra tính hợp lệ và thông báo nếu không hợp lệ. Khi đó các hoạt động của chương trình có thể biểu diễn bằng thuật toán sau đây:
Bước 1 Nhập số a;
Bước 2. Nếu a > 5 thỉ thông báo lỗi;
Các câu lệnh điều kiện dạng thiếu của Pascal dưới đây sẽ thể hiện thuật toán trên:
readln(a) ;
if a>5 then write(1 So da nhap khong hop le.');
4 -THDCTHCSQ3- A
Ví dụ 5. Cần viết chương trình tính kết quả của a chia cho b, với a và b là hai số bất kì. Phép tính chỉ thực hiện được khi b* 0. Chương trình cần kiểm tra giá trị của b, nếu b * 0 thì thực hiện phép chia; nếu b = 0 sẽ thông báo lỗi.
Nếu b * 0 f/j/ tính kết quả
ngược lại thì thông báo lỗi
Dưới đây là câu lệnh Pascal thể hiện cấu trúc rẽ nhánh dạng đủ nói trên:
if boũthenx:= a/b
else write('Mau so bang 0, khong chia duoc');
Câu lệnh điều kiện if.then...else... mô tả trong ví dụ này là câu lệnh điều kiện dạng đầy đủ. Câu lệnh điều kiện dạng đầy đủ của Pascal có cú pháp:
if then else ’,
Với câu lệnh điều kiện này, chương trình sẽ kiểm tra điều kiện. Nếu điều kiện được thoả mãn, chương trình sẽ thực hiện câu lệnh 1 sau từ khoá then. Trong trường hợp ngược lại, câu lệnh 2 sẽ được thực hiện.
GHI NHỠ
Cấu trúc rẽ nhánh được sử dụng để chỉ thị cho máy tính thực hiện các hoạt động khác nhau tuỳ theo một điều kiện cụ thể có được thoả mãn hay không. Cấu trúc rẽ nhánh có hai dạng: Dạng thiếu và dạng đầy đủ.
Trong lập trình, điều kiện trong cấu trúc rẽ nhánh thường được biểu diễn bằng các phép so sánh.
Mọi ngôn ngữ lập trình đều có câu lệnh điều kiện để thể hiện các cấu trúc rẽ nhánh.
Câu hỏi và bài tập
Hai người bạn cùng chơi trò đoán số. Một người nghĩ trong đầu một số tụ nhiên nhỏ hơn 10. Người kia đoán xem bạn đã nghĩ số gì. Nếu đoán đúng, người đoán sẽ được cộng thêm 1 điểm, nếu sai sẽ không được cộng điểm. Luân phiên nhau nghĩ và đoán. Sau 10 lần, ai được nhiều điểm hơn, người đó sẽ thắng.
Hãy phát biểu quy tắc thục hiện một nước đi ỏ trò chơi. Hoạt động nào sẽ được thục hiện, nếu điều kiện của quy tắc đó thoà mãn? Hoạt động nào sẽ được thục hiện, nếu điều kiện của quy tắc đó không thoà mãn?
Một trò chơi máy tính rất hứng thú đối vối các em nhỏ là hứng trứng. Một quở trứng rơi tù một vị trí ngẫu nhiên trên cao. Người chơi dùng các phím mũi tên hoặc hoặc <-) thì chiếc khay sẽ dịch chuyển (sang phái hoặc sang trái) một dơn vị khoảng cách. Nếu người chơi không nhấn phím nào
I	S(«r«! 8
hoặc nhốn phím khác hai phím nói trên thì chiếc khay sẽ đứng yên.
Điều kiện để điều khiển chiếc khay trong trò chơi là gì ? Hoạt động nào sê được thục hiện, nếu điều kiện đó thoâ mãn? Hoạt động nào sẽ được thục hiện, nếu điều kiện đó không thoà mãn ?
Các câu lệnh Pascal sau đây được viết đúng hay sai ?
if x: = 7 then a = b;
if X > 5; then a: = b;
if X > 5 then a: = b; m:= n;
if X > 5 then a: = ~b; else m: = n;
Với mỗi câu lệnh sau đây giá trị của biến X sê là bao nhiêu, nếu trước đó giá trị của X bằng 5 ?
if (45 mod 3) =0 then X: = X + 1;
if X > 10 then X:= X + 1;