SỞ KHOA HỌC VÀ CÔNG NGHỆ SỞ GIÁO DỤC VA ĐÀO TẠO ĐỀ TÀI: “Biên soạn tài liệu hỗ trợ việc dạy và học tin học phổ thông từ lớp 1 đến lớp 12” Chủ nhiệm để tài: KS Huỳnh Kim Sen TP Hồ Chỉ Minh, ngày 28 tháng 12 năm 2005 ĐỀ TÀI: “Biên soạn tài liệu hỗ trợ việc dạy và học tin học phổ thông từ lớp 1 đến lớp 12” Chủ nhiệm đề tài: KS Huỳnh Kim Sen Danh sách cộng tác viên TT Ho va tên (học vị nếu có) Đơn vị công tác 1 | ThS Nguyễn Hồng Tuấn Sở Giáo dục và Đào tạo 2 | ThS Vi-Thién Can Sở Giáo dục và Đào tạo 3 CN Tạ Viết Quý Trường THPT Chuyên Trần Đại Nghĩa ị 4 | CN Đậu Quang Tuấn Trường THCS Thanh Đa, Q. Bình Thạnh 5 | CN Nguyễn Quang Bắc Phòng GD Quận 10 6 | CN Đỗ Thị Hồng Phòng GD Quận Tân Phú 7| CN Nguyễn Minh Thiên Hoàng Trường TH Nguyễn Bỉnh Khiêm, Q. 1 8 | CN Pham Minh Thién TT Hướng nghiệp và Dạy nghề Quận 5 Ị 9 | CN Nguyễn Ngọc Bích | Trường THCS Lê Lợi, Quận 3 - | 10 | CN Hoang Đăng Quang | THCS Hồng Bàng, Quận š 11 | Th§ Lê Đức Long | ĐHSP Tp. Hô Chí Minh | 12 | CN Cao SiSon Trường THPT Nguyễn Thị Minh Khai Sau khi hoàn thành khối kiến thức này, học sinh sẽ: a_ Biết sử dụng ngôn ngữ lập chương trình máy tính.
a Biết cách phân tịch dữ liệu để xử lý (sử dụng một số giải thuật máy tinh đơn giản). ä Biết cách trình bày trên màn hình , trên giấy nội dung kết quả của việc xử lý dữ liệu Câu lệnh lặp KIÊN THỨC YÊU CÀU a_ Biết dùng các câu lệnh lặp FOR, WHILE và REPEAT, cách dùng vòng lặp nào cho phù hợp. Biết số lần lặp đối với từng câu lệnh. Biết tránh những trường hợp sẽ làm cho vòng lặp của các câu lệnh trên lặp vô tận.
a_ Biết được sự khác biệt giữa các câu lệnh để sử dụng có hiệu quả khi lập trình. Biết só lần lặp của các câu lệnh. a Biét diéu kiện thoát của các câu lệnh. Trong tất cả các ngôn ngữ lập trình đều có cấu trúc vòng lặp hay còn gọi là chu trình.
Tùy theo điều kiện lặp và yêu cầu sử dụng lệnh mà sử dụng các cầu trúc vòng lặp khác nhau. Chúng ta sẽ sử dụng cấu trúc lặp trong trường hợp bạn muốn chương trình thực hiện nhiều lần một hoặc nhiều tác vụ khi điều kiện còn thỏa mãn. Đề làm việc này, Pascal cung cấp cho chúng ta 3 cấu trúc lặp có đặc điểm sử dụng khác nhau như sau: 1/ Câu lệnh FOR Ta dung cau lệnh lặp For khi biết trước số lần lặp. Số lần lặp được xác định bằng: Giá trị cuối — giá trị đầu +1 (dạng 1) hoặc Giá trị cuối ¬ giá trị đầu + 1 (dạng 2) Câu lệnh For có 2 dạng: Dạng 1: For.
1/ Cau lénh For. FOR i:= giatridau TO giatricuoi DO Caulenh; * ¡ gọi là biến điều khiển, thuộc kiểu rời rạc. = Biểu thức 1 phải nhỏ hơn hoặc bằng biểu thức 2. Vi dut: Program Vonglap_FOR1: Var x: Integer; Begin For x:=1 To 12 Do Writeln(‘Day la thang: ‘, x); Readin; End.
Chạy thử chương trình, bạn sẽ có kết quả sau: Đây là tháng: + Đây là tháng: aR WH OONA Đây là tháng: Đây là tháng: Đây là tháng: Đây là tháng: Đây là tháng: Đây là tháng: Đây là tháng: Đây là tháng: 10 Đây là tháng: 11 Đây là tháng: 12 Giải thích: , Vong lap For x :=1 To 12 Do trong chương trình trên thực hiện lặp đi lặp lại câu lệnh VWriteln 12 lần để in ra số của tháng, với số của tháng là giá trị của biến x trong từng lần lặp Ghi chu: Không nên thay đỗi trị của biến điều khiển ¡ bên trong phát biểu Caulenh. Vi du: Phát biểu sau sẽ chạy vô tận For i:= 1 to 8 do Begin Writeln(i); i= 12; End: 2/ Cau lénh For. FOR i:= giatricuoi DOWNTO giatridau DO Caulenh; "i ggi la bién diéu khi&n, thudc kiểu roi rac. * Biểu thức 1 phải lớn hơn hoặc bằng biểu thức 2.
Ví dụ: Program Vonglap_FOR2; Var x: Integer; Begin For x:=12 Downto 1 Do Writeln(‘Day fa thang: ‘, x); Readin; End. | Chạy thử chương trình, bạn sẽ có kết quả sau: Đây là tháng: 12 Đây là tháng: 11 Đây là tháng: 10 Day la thang: Co O Đây là tháng: Đây là tháng: ƠØ ¬I Đây là tháng: Đây là tháng: > Ơi Đây là tháng: Đây là tháng: G2 Đây là tháng: Đây là tháng: — Giải thích: Vòng lặp For x := 12 Downto 1 Do trong chuong trinh trén thuc hiện lặp đi lặp lại câu lệnh Witeln 12 lằn để in ra số của tháng, với số của tháng là giá trị của biến x trong từng lần lặp (in từ tháng 12 đến tháng 1) Ghi chú:. Bién diéu khién x có kiểu rời rạc, hữu hạn và đếm được. Biến điều khiển được gán <giá trị đầu> thì sau một vòng lặp sẽ tự động tăng lên một đơn vi (To) cho t6i khi nao bién diéu khién vuot qué <gid tri cudi> (dang 1) hodc bién diéu khiển được gán <giá trị cuồi> thì sau một vòng lặp sẽ tự động giảm một đơn vị (Downto) cho toi khi nào biến điều khiển vượt quá <giá trị đâu> (dạng 2) thì kết thúc vòng lặp.
If Câu lệnh WHILE 1/ Câu lệnh WHILE.; Dùng để lặp đi lặp lại một công việc trong khi một điều kiện còn được thoả. Sẽ kiểm tra điều kiện lặp trước rồi mới thực hiện các lệnh sau. Phát biểu While có dạng: WHILE Dieukien DO Caulenh; * Dieukien: Biểu thức logic. * Trước hết điều kiện được xét, nếu giá trị là False, vòng lặp While sẽ kết thúc, nếu là True thì phát biểu caulenh được thực hiện, sau.khithuc-hiện xong, quay lại kiểm tra điều kiện, công việc cứ tiếp tục nhử lập luận ở trên cho đến khi điều kiện có giá trị là Faise.
Vi du: Program Vonglap_While: Var x: Integer; Begin x:=1; While (x<=12) Do Begin Writeln(Day la thang: ',x); X:=x*1; End; ReadIn; End. Ban thay kết quả như ví dụ trong vòng lặp For.Sở kiểm tra điều kiện khí biến x > 12 (lúc biến x=13 không thỏa điều kiện) vòng lặp sẽ kết thúc Ví dụ: Tính tổng các số nguyên nhập vào cho đến khi nhập vào số 0, Program TinhTong; Var So : Integer; Tong : Longint; Begin Tong := 0; Write(‘Ban nhap vao so nguyen bat ky, nhap 0 de ket thuc. '); Readin(So); While So <> 0 do Begin Tong := Tong + So; ReadIn(So); End; Writeln(Tong cac so vua nhap vao la: ', Tong); Readin; End. 2/ Lưu ý trong vòng lặp While * Khác với vòng lặp For, trong vòng lặp While, số lần lặp không xác định được, nó tuỳ thuộc vào người sử dụng, ví dụ như ở chương trình trên, số lần lặp thực hiện mãi khi bạn chưa nhập vào số 0.
* Bạn can chú ý khi dùng điều kiện trong vòng lặp While, nếu chọn điều kiện luôn luôn đúng thì vòng lặp sẽ thực hiện vô tận, không thoát ra được, trừ khi Caulenh có chứa một phát biểu Goto nhảy khỏi vòng lặp While. Ví dụ: While True do Writeln(‘Se lap vo tan’); * Bạn thử thêm vào đoạn chương trình trên một biến Deri 66 kiéu nguyên, gán cho biến này bằng 0, cứ mỗi lần điều kiện While đúng biến đếm sé tăng lên 1 (kiểm tra điều kiện trước, thực hiện biến dem néu-diési kiện:thoá] Ban sé thay s6 ian vòng lặp While thực hiện sẽ bằng biến đếm. bạn xem ví dụ Sau: Program TinhTong; Var So : Integer; Tong : Longint; Dem : Integer; Begin Dem := 0; Tong := 0; Write('Ban nhap vao so nguyen bat ky, nhap 0 de ket thuc. ‘y; Readin(So); While So <> 0 do Begin Dem := Dem + 1; Tong := Tong + So; ReadIn(Se); End; Writeln(Tong cac so vua nhap vao la: ', Tong); Writeln(‘Bien dem luc nay bang: ‘,Dem); Readin; End.
Chay thử chương trình, giả sử nhập vào các số như sau (sau mỗi lần nhập, gõ phím Enter): hWNMD Ope Bạn thấy kết quả sẽ là : * Tong cac so vua nhap vao la: 12 " Bien dem lục nay bang: 5 IH/ Câu lệnh Repeat. Until 1/ Cau lénh Repeat. Dùng dé lặp đi lắp lại một công việc cho đến khi nào một điều kiện được thoả. Thực hiện lệnh trước rồi mới kiểm tra điều kiện lặp sau REPEAT Caulenh 1; Caulenh 2; Caulenh n; UNTIL Đieukien; * Các phát biểu bên trong than Repeat được thực hiện, sau đó sẽ biểu thức logic điều kiện, nếu trị là True thì phát biểu Repeat kiểm tra thực hiện xong, nếu trị là False thi quay lại thực hiện các phát biểu bên trong Repeat, qua trinh tiếp tục cho đến khi điều kiện là True, - 7 Ví dụ: Program TinhTong; Var So : Integer; Tong : Longint; Dem : Integer; Begin Dem := 0; Tong := 0; Write(Ban nhap vao so nguyen bat ky, nhap 0 de ket thục.
'); Readin(So); Repeat Begin Dem := Dem + 1; Tong := Tong + So: ReadIn(So); End; Until So = 0; Writeln(‘Tong cac so vua nhap vao la: |, Tong); Writeln(Bien dem luc nay bang: ‘,Dem); Readin; End. Chạy thử chương trình, giả sử nhập vào các số như sau (sau mỗi lần nhập, gõ phím Enter): hWNN Of Bạn thay két qua sé là: " Tong cac so vua nhap vao la: 12 " Bien dem lục nay bang: 5 Kết quả này giống như ở vòng lặp While. Ví dụ: Program Vonglap_Repeat; Var x: Integer; Begin x:=1; While (x<=12) Do Begin Writein(‘Day la thang: ‘,x); X:=x +1; End; ReadIn; End. Vi du: Tỉnh n giai thừa (n!).
Program Giaithua; Var Gt : Longint; i: Integer; n: Integer: Begin i:= 0; Gt:= 1; Write(‘Ban nhap vao son = °); ReadIn(n); Repeat l=I*+1; Gt:=Gt*i; Until i =n; WriteIn(n, ‘ giai thua = ‘, n); Readin; End. 2¡ Lưu ý vòng lặp Repeat " Khác với vòng lặp For, trong vòng lặp Repeat, số lần lặp không xác định được, nó tuỳ thuộc vào người sử dụng, ví dụ như ở chương lặp thực hiện mãi khi ¡ còn nhỏ hơn n. trình trên, số lần * Bạn cần chú ý khi dùng điều kiện trong vòng lặp Repeat, nếu chọn điều kiện luôn luân sai thì vòng lặp sẽ thực hiện vô tận, không thoát ra được, trừ khi Caulenh có chứa một phát biểu Goto nhảy khỏi vòng lap Repeat, » Trong cau lénh Repeat «Until, hành động được thực hiện rồi mới xét điều kiện lặp. - IV/ So sánh đặc điểm của các vòng lặp For, While, Repeat 1/ Điều kiện lặp * Với vòng lặp FOR thì điều kiện lặp đã biết trước, còn Repeat thì chưa biết trước.
vòng lặp While và * So sánh While với Repeat. Với vòng lặp While, điều kiện lặp được xét trước hành động. Với vòng lặp Repeat thì hành động được thực hiện rồi mới xét điều kiện lặp. => FOR: Thực hiện cho đến điều kiện biết trước.