Bài giảng Tin học Lớp 8 - Lặp với số lần chưa biết trước - Nguyễn Thị Lan
Kiến thức:
Biết ngôn ngữ lập trình dùng cấu trúc lặp với số lần chưa biết trước để chỉ dẫn máy tính thực hiện công việc được lặp đi lặp lại cho đến khi một điều kiện nào đó được thỏa mãn.
Hiểu hoạt động của câu lệnh lặp với số lần chưa biết trước while do trong pascal.
Kỹ năng:
Nhận biết được hoạt động lặp với số lần chưa biết trước.
Viết đúng cú pháp, sử dụng đúng và có hiệu quả câu lệnh lặp với số lần chưa biết trước.
Tránh được trường hợp lặp vô hạn lần khi sử dụng câu lệnh lặp while do trong chương trình.
Thái độ:
Xử lí được các tình huống, các công việc trong thực tế được lặp lại nhiều lần cho đến khi thỏa mãn điều kiện nào đó.
Hình thành tính cách làm một việc gì cho đến khi đạt kết quả tốt mới thôi.
Năng lực:
Mô hình hóa những tình huống thực tiễn các hoạt động lặp với số lần chưa biết trước.
Phát triển năng lực tự học, năng lực phân tích, tổng hợp để diễn tả thuật toán lặp với số lần chưa biết trước trên ngôn ngữ lập trình.
Phát triển năng lực giải quyết vấn đề, năng lực tính toán, năng lực sử dụng công nghệ thông tin và truyền thông trong việc sử dụng câu lệnh lặp while do để giải quyết một số bài toán, các tình huống trong thực tiễn.
BÀI GIẢNG LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC BỘ GIÁO DỤC VÀ ĐÀO TẠO QUỸ LAWRENCE S.TING Cuộc thi quốc gia Thiết kế bài giảng e-Learning lần thứ 4 Tháng 11 năm 2016 M ôn Tin học/Lớp 8 Trường THCS Chu Văn An 36A Dương Văn An – Phường Xuân Phú – Thành phố Huế - Tỉnh Thừa Thiên Huế Giáo viên: Nguyễn Thị Lan, Nguyễn Thị Nguyên Phương. Email: ntlan.c2cvahue@hue.edu.vn ntnphuong.c2cvahue@hue.edu.vn Điện thoại: 01219496432 Giấy phép bài dự thi: CC-BY MỤC TIÊU BÀI HỌC Kiến thức: Biết ngôn ngữ lập trình dùng cấu trúc lặp với số lần chưa biết trước để chỉ dẫn máy tính thực hiện công việc được lặp đi lặp lại cho đến khi một điều kiện nào đó được thỏa mãn. Hiểu hoạt động của câu lệnh lặp với số lần chưa biết trước while do trong pascal. Kỹ năng: Nhận biết được hoạt động lặp với số lần chưa biết trước. Viết đúng cú pháp, sử dụng đúng và có hiệu quả câu lệnh lặp với số lần chưa biết trước. Tránh được trường hợp lặp vô hạn lần khi sử dụng câu lệnh lặp while do trong chương trình. MỤC TIÊU BÀI HỌC Thái độ: Xử lí được các tình huống, các công việc trong thực tế được lặp lại nhiều lần cho đến khi thỏa mãn điều kiện nào đó. Hình thành tính cách làm một việc gì cho đến khi đạt kết quả tốt mới thôi. Năng lực: Mô hình hóa những tình huống thực tiễn các hoạt động lặp với số lần chưa biết trước. Phát triển năng lực tự học, năng lực phân tích, tổng hợp để diễn tả thuật toán lặp với số lần chưa biết trước trên ngôn ngữ lập trình. Phát triển năng lực giải quyết vấn đề, năng lực tính toán, năng lực sử dụng công nghệ thông tin và truyền thông trong việc sử dụng câu lệnh lặp while do để giải quyết một số bài toán, các tình huống trong thực tiễn . ĐỀ CƯƠNG BÀI GIẢNG Phần 1: Ôn bài cũ và giới thiệu bài mới Phần 2: Bài mới Hoạt động 1: Các hoạt động lặp với số lần chưa biết trước Ví dụ 1: Hoạt động được thực hiện lặp đi lặp lại với số lần chưa được biết trước trong thực tế Ví dụ 2: Tìm hiểu hoạt động lặp với số lần chưa biết trước ở một bài toán cụ thể trong ngôn ngữ lập trình Hoạt động 2: Ví dụ về lệnh lặp với số lần chưa biết trước Cú pháp câu lệnh lặp với số lần chưa biết trước trong pascal Các bước thực hiện, mô phỏng sơ đồ hoạt động Ví dụ áp dụng ĐỀ CƯƠNG BÀI GIẢNG Phần 2: Bài mới Hoạt động 3: Lặp vô hạn lần – Lỗi lập trình cần tránh Ví dụ minh họa Chú ý Bài tập vận dụng - Khắc phục được lỗi lặp vô hạn lần Hoạt động 4: Củng cố Hoạt động 5: Hướng dẫn tự học Câu hỏi 1: Câu lệnh Pascal nào sau đây là đúng? Đúng rồi, nhấn chuột để tiếp tục Bạn phải trả lời trước khi tiếp tục Làm lại Phần 1: Ôn kiến thức bài cũ Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Đúng rồi, nhấn chuột để tiếp tục Sai rồi. Thử lại lần nữa xem sao kích nút Làm lại Chấp nhận Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) A) for i:=5 to 1 do writeln('Chao ban'); B) for i:=1.5 to 6.5 do writeln('Chao ban'); C) for i:=1 to 5 do writeln('Chao ban'); D) for i:=1 to 5 do; writeln('Chao ban'); Phần 1: Ôn kiến thức bài cũ Đáp án c âu hỏi 1: c) for i:=1 to 5 do writeln(‘Chao ban’); Cú pháp câu lệnh lặp với số lần biết trước trong Pascal: for := to do ; Trong đó: - for, to, do là các từ khóa - biến đếm là biến kiểu nguyên hoặc kiểu kí tự - giá trị đầu, giá trị cuối là các giá trị nguyên hoặc kí tự (giá trị đầu ≤ giá trị cuối) Câu hỏi 2: Em hãy xác định có bao nhiêu vòng lặp được thực hiện trong mỗi câu lệnh lặp sau: Số vòng lặp A. 1 B. 10 C. 6 D. 5 B for k:=1 to 10 do writeln('Chuc ban hoc gioi'); C for k:=5 to 10 do writeln('Chuc ban hoc gioi'); A for k:=10 to 10 do writeln('Chuc ban hoc gioi'); Đúng rồi, nhấn chuột để tiếp tục Bạn phải trả lời trước khi tiếp tục Làm lại Phần 1: Ôn kiến thức bài cũ (Hãy ghép mỗi ý ở cột bên trái với một ý ở cột bên phải) Chấp nhận Câu lệnh lặp Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) for k:=1 to 10 do writeln('Chuc ban hoc gioi'); Phần 1: Ôn kiến thức bài cũ Đáp án c âu hỏi 2 : Có 10 vòng lặp được thực hiện for k:=5 to 10 do writeln('Chuc ban hoc gioi'); Có 6 vòng lặp được thực hiện for k:=10 to 10 do writeln('Chuc ban hoc gioi'); Có 1 vòng lặp được thực hiện Câu hỏi 3: Sau khi thực hiện đoạn chương trình sau, giá trị của biến A bằng bao nhiêu? A:=0; For i:=1 to 10 do A:=A + i; Đúng rồi, nhấn chuột để tiếp tục Bạn phải trả lời trước khi tiếp tục Làm lại Phần 1: Ôn kiến thức bài cũ Chấp nhận Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Đúng rồi, nhấn chuột để tiếp tục Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) A) 11 B) 10 C) 1 D) 55 Đáp án c âu hỏi 3 : D) 55 A:=0; For i:=1 to 10 do A:=A + i; Phần 1: Ôn kiến thức bài cũ Ôn kiến thức bài cũ Điểm của bạn {score} Điểm tối đa {max-score} Tỉ lệ {percent} Số lần làm bài {total-attempts} Question Feedback/Review Information Will Appear Here Tiếp tục Phần 2: Bài mới - Lặp với số lần chưa biết trước Ví dụ 1: Em cứ đọc bài cho đến khi nào thuộc bài Ví dụ 2: Cần cộng bao nhiêu số tự nhiên khác 0 đầu tiên để ta nhận được tổng nhỏ nhất lớn hơn 1000? Kí hiệu S là tổng cần tìm, ta có thuật toán: Bước 1: S 0, n 1. Bước 2: Nếu S ≤ 1000, S S + n; Ngược lại, chuyển tới bước 4. Bước 3: n n + 1 và quay lại bước 2. Bước 4: In kết quả: S và n là số tự nhiên nhỏ nhất sao cho S > 1000. Kết thúc thuật toán. Hoạt động 1: Các hoạt động lặp với số lần chưa biết trước S ≤ 1000? S := S + n n := n + 1 Đúng Sai Phần 2: Bài mới Hoạt động 2: Ví dụ về lệnh lặp với số lần chưa biết trước Cú pháp: while do ; Các bước thực hiện của câu lệnh lặp while do Bước 1: Kiểm tra điều kiện Bước 2: Nếu điều kiện ĐÚNG , thực hiện câu lệnh và quay lại bước 1. Nếu điều kiện SAI , câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp kết thúc. Ví dụ: Ví dụ 1: Cần cộng bao nhiêu số tự nhiên khác 0 đầu tiên để ta nhận được tổng nhỏ nhất lớn hơn 1000? Program Cong_so_tu_nhien; Var S, n: integer; Begin S:= 0; n:= 1; while S <= 1000 do begin S:= S + n; n:= n + 1; end; writeln(‘So n nho nhat de tong > 1000 la: ‘, n-1); writeln(‘Tong dau tien > 1000 la: ‘, S); readln End. S ≤ 1000? S := S + n n := n + 1 Đúng Sai Ví dụ 2: Viết chương trình tính tổng của N số tự nhiên khác 0 đầu tiên, với N là số tự nhiên được nhập vào từ bàn phím. A = 1 + 2 +3 + + N. Program Tinh_tong ; Var N , i: integer ; A : longint ; Begin Write (‘Nhap so N = ‘) ; Readln(N ) ; A := 0 ; i := 1 ; While i <= N do begin A := A + i ; i := i + 1; end; Writeln (‘Tong A = ‘, A) ; Readln End . For do Program Tính_tong; Var N, i: integer; A: longint; Begin Writeln(‘Nhap so N = ‘); Readln(N); A:=0; For i: = 1 to N do A:=A + i ; Writeln(‘Tong A = ‘, A); Readln End . While do For do Program Tính_tong; Var N, i: integer; A: longint; Begin Writeln(‘Nhap so N = ‘); Readln(N); A:=0; For i: = 1 to N do A:=A + i ; Writeln(‘Tong A = ‘, A); Readln End . Program Tinh_tong; Var N, i: integer; A: longint; Begin Write(‘Nhap so N = ‘); Readln(N); A := 0 ; i := 1 ; While i <= N do Begin A := A + i; i := i + 1; End ; Writeln(‘Tong A = ‘, A); Readln End. Vận dụng 1: Hoàn thành cú pháp của câu lệnh lặp với số lần chưa biết trước Đúng rồi, nhấn chuột để tiếp tục Bạn phải trả lời trước khi tiếp tục Chấp nhận Làm lại While Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Đáp án c âu hỏi vận dụng 1: Cú pháp câu lệnh lặp với số lần chưa biết trước trong Pascal: While điều kiện do Câu lệnh; Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Đúng rồi, nhấn chuột để tiếp tục Bạn phải trả lời trước khi tiếp tục Chấp nhận Làm lại Vận dụng 2: Em hãy cho biết có bao nhiêu vòng lặp được thực hiện sau khi thực hiện đoạn chương trình sau: i:=1; While i<= 5 do begin writeln('Chuc ban hoc gioi Pascal'); i:=i + 1; end; Đúng rồi, nhấn chuột để tiếp tục Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) A) 2 B) 1 C) 6 D) 5 Đáp án c âu hỏi vận dụng 2 : D) 5 Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Đúng rồi, nhấn chuột để tiếp tục Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Đúng rồi, nhấn chuột để tiếp tục Bạn phải trả lời trước khi tiếp tục Chấp nhận Làm lại Vận dụng 3: Em hãy cho biết kết quả của biến Tong sau khi thực hiện đoạn chương trình sau: Tong:=0; i:=1; While i <= 10 do begin if i mod 2 = 0 then Tong:=Tong + i; i:=i + 1; end; Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) A) 55 B) 30 C) 25 D) 10 Đáp án c âu hỏi vận dụng 3 : B) 30 Câu hỏi vận dụng hoạt động 2 Điểm của em {score} Điểm tối đa {max-score} Số lần làm bài {total-attempts} Question Feedback/Review Information Will Appear Here Tiếp tục Hoạt động 3: Lặp vô hạn lần – Lỗi lập trình cần tránh Xét chương trình sau: Var a : integer; Begin a := 5; While a < 6 do write(‘Cau lenh lap’); End. Nếu điều kiện của câu lệnh lặp while do luôn luôn đúng thì xảy ra trường hợp lặp vô hạn lần. Trong lập trình, đ ể tránh trường hợp lặp vô hạn lần thì trong thân câu lệnh lặp while do cần có câu lệnh làm thay đổi giá trị của biểu thức điều kiện . Var a : integer; Begin a := 5; While a < 6 do begin write(‘Cau lenh lap’); a:=a + 1; end; Readln End. Vận dụng 4: Có bao nhiêu vòng lặp được thực hiện sau khi thực hiện đoạn chương trình sau: S:= 0; n:= 0; While S <= 10 do n:= n + 1; S:= S + n; Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Đúng rồi, nhấn chuột để tiếp tục Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Đúng rồi, nhấn chuột để tiếp tục Bạn phải trả lời trước khi tiếp tục Chấp nhận Làm lại Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) A) 5 B) 10 C) Lặp vô hạn lần D) 15 Đáp án c âu hỏi vận dụng 4 : Khắc phục lỗi: S := 0; n:= 0; While S <= 10 do begin n := n + 1; S:= S + n ; end; C) Lặp vô hạn lần S:= 0; n:= 0; While S <= 10 do n:= n + 1; S:= S + n; Vận dụng 5: Em hãy cho biết kết quả sau khi thực hiện đoạn chương trình sau: so:= 1; While so < 10 do writeln(so); so:= so +1; Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Đúng rồi, nhấn chuột để tiếp tục Đúng rồi, nhấn chuột để tiếp tục Bạn phải trả lời trước khi tiếp tục Chấp nhận Làm lại Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) A) In ra các số từ 1 đến 9, mỗi số trên một dòng B) In ra số 1 C) In ra số 2 D) In ra vô hạn các số 1, mỗi số trên một dòng Đáp án c âu hỏi vận dụng 5 : D) In ra vô hạn các số 1, mỗi số trên một dòng Câu hỏi vận dụng hoạt động 3 Điểm của em {score} Điểm tối đa {max-score} Số lần làm bài {total-attempts} Question Feedback/Review Information Will Appear Here Tiếp tục Hoạt động 4: Củng cố bài học Câu hỏi 1: Câu lệnh Pascal nào sau đây là đúng? Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Đúng rồi, nhấn chuột để tiếp tục Bạn phải trả lời trước khi tiếp tục Chấp nhận Làm lại CÂU HỎI CỦNG CỐ BÀI HỌC Đúng rồi, nhấn chuột để tiếp tục A) i:=10; While i:=10 do writeln('Chuc ban hoc gioi Pascal'); B) i:=10; While i=10 do; writeln('Chuc ban hoc gioi Pascal'); C) i:=10; While i=10 do writeln('Chuc ban hoc gioi Pascal'); D) i:=10; While do i=10 writeln('Chuc ban hoc gioi Pascal'); Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Câu hỏi 2: Em hãy cho biết kết quả của biến Tong sau khi thực hiện đoạn chương trình sau: Tong:=0; i:=1; While i<=20 do begin if i mod 3 = 0 then Tong:=Tong + i; i:=i + 1; end; Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Đúng rồi, nhấn chuột để tiếp tục Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Đúng rồi, nhấn chuột để tiếp tục Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Bạn phải trả lời trước khi tiếp tục Chấp nhận Làm lại A) 210 B) 63 C) 20 D) 55 Câu hỏi 3: Em hãy cho biết đoạn lệnh sau đây chương trình thực hiện bao nhiêu vòng lặp? Giá trị của biến S bằng bao nhiêu? S:=0; n:=0; While n <= 10 do begin S:=S + n; n:=n + 2; end; Đúng rồi, nhấn chuột để tiếp tục Bạn phải trả lời trước khi tiếp tục Chấp nhận Làm lại Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Sai rồi. Thử lại lần nữa xem sao kích nút Làm lại Đúng rồi, nhấn chuột để tiếp tục Sai rồi. Thử lại lần nữa xem sao kích nút Làm lại Sai rồi. Thử lại lần nữa xem sao kích nút Làm lại A) Số vòng lặp là 5 và S=20 B) Số vòng lặp là 6 và S=30 C) Số vòng lặp là 7 và S=42 D) Số vòng lặp là 8 và S=56 Câu hỏi 4: Hãy cho biết số vòng lặp được thực hiện và giá trị của biến S bằng bao nhiêu sau khi thực hiện thuật toán sau:Bước 1: i gán bằng 0; S gán bằng 0;Bước 2: Nếu i >= 5, chuyển sang bước 4.Bước 3: i gán bằng i + 1; S gán bằng S + i. Quay về bước 2Bước 4: Thông báo S và kết thúc thuật toán Sai rồi. Thử lại lần nữa xem sao kích nút Làm lại Sai rồi. Thử lại lần nữa xem sao kích nút Làm lại Đúng rồi, nhấn chuột để tiếp tục Sai rồi. Thử lại lần nữa xem sao kích nút Làm lại Đúng rồi, nhấn chuột để tiếp tục Bạn phải trả lời trước khi tiếp tục Chấp nhận Làm lại A) Số vòng lặp là 3 và S=6 B) Số vòng lặp là 4 và S=10 C) Số vòng lặp là 5 và S=15 D) Số vòng lặp là 6 và S=21 Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Câu hỏi 5: Hãy cho biết khi kết thúc thuật toán sau giá trị của biến a bằng bao nhiêu?Bước 1: a gán bằng 48, b gán bằng 30Bước 2: Nếu a=b, chuyển tới bước 5Bước 3: Nếu a > b, gán a gán bằng a - b; Ngược lại, gán b gán bằng b - aBước 4: Quay lại bước 2Bước 5: In ra aBước 6: Kết thúc thuật toán Sai rồi. Thử lại lần nữa xem sao kích nút Làm lại Sai rồi. Thử lại lần nữa xem sao kích nút Làm lại Sai rồi. Thử lại lần nữa xem sao kích nút Làm lại Đúng rồi, nhấn chuột để tiếp tục Đúng rồi, nhấn chuột để tiếp tục Bạn phải trả lời trước khi tiếp tục Chấp nhận Làm lại A) 18 B) 48 C) 78 D) 6 Sai rồi. Thử lại lần nữa xem sao(kích nút Làm lại) Câu hỏi củng cố Điểm của em {score} Điểm tối đa {max-score} Tỉ lệ {percent} Số lần làm bài {total-attempts} Question Feedback/Review Information Will Appear Here Tiếp tục Hoạt động 5: Hướng dẫn tự học Lý thuyết: Nắm vững cú pháp và hiểu hoạt động của câu lệnh lặp với số lần chưa biết trước trong pascal Tránh trường hợp lặp vô hạn lần khi sử dụng câu lệnh lặp với số lần chưa biết trước while do trong chương trình. 2. Bài tập: Bài tập 1: Hãy cho biết sự khác biệt giữa câu lệnh lặp với số lần biết trước và câu lệnh lặp với số lần chưa biết trước. Bài tập: Bài tập 2: Hãy chỉ ra lỗi trong các câu lệnh sau đây: a) X:= 10; while X:= 10 do X:= X + 5; b) X:= 10; while X= 10 do X = X + 5 ; c) S:= 0; n:= 0; while S <=10 do n:= n + 1; S:= S + n; Bài tập 3: Một người gửi tiết kiệm tại một ngân hàng với số tiền ban đầu là a (triệu đồng), lãi suất k% với chu kì tính lãi là c tháng (nghĩa là cứ sau c tháng thì lãi suất được tính và được cộng vào số tiền gốc để tính lãi cho c tháng tiếp theo). Khi chưa đủ chu kì thì không được tính lãi . Viết chương trình cho biết người đó phải gửi bao nhiêu tháng để thu được tổng số tiền cả gốc và lãi không ít hơn b (triệu đồng). TÀI LIỆU SỬ DỤNG Sách giáo khoa, sách bài tập Tin học dành cho THCS quyển 3 Phần mềm Microsoft PowerPoint; Adobe presenter 11; Free Pascal; MindManager 9; Adobe Flash CS6; Adobe Flash Player 24 ActiveX; Quick Time Player; SnagIt; LỜI KẾT
Tài liệu đính kèm:
- bai_giang_tin_hoc_lop_8_lap_voi_so_lan_chua_biet_truoc_nguye.pptx
- BAN THUYET MINH e-Learning.docx