Bài 10. Cấu trúc lặp

Chia sẻ bởi Tmt Tmt Tmt | Ngày 10/05/2019 | 62

Chia sẻ tài liệu: Bài 10. Cấu trúc lặp thuộc Tin học 11

Nội dung tài liệu:

www.themegallery.com
Company Name
Câu hỏi bài cũ:
Bài Tập Áp dụng Cấu trúc rẽ nhánh:
Viết chương trình tính tiền cước Internet sử dụng mỗi tháng theo lưu lượng sử dụng, với số MB sử dụng được nhập từ bàn phím. Biết rằng:
Thuê bao mỗi tháng là 20000 đồng;
Với 1000 MB đầu tiên tính 45 đồng / MB; Các MB tiếp theo là 40 đồng / MB.
Em hãy viết cú pháp cấu trúc rẽ nhánh dạng thiếu và dạng đủ. Cho ví dụ minh họa.
Thế nào là câu lệnh ghép? Viết cú pháp câu lệnh ghép, cho 1 ví dụ trường hợp cần sử dụng câu lệnh ghép.
www.themegallery.com
Company Name
Program tên_chương_trình ;
Var : ;
BEGIN
write(‘Moi nhap gia tri Input= ’) ;
readln ( tên_biến ) ;

... (Các câu lệnh – thuật toán)

writeln(‘Ket qua = ’ , CÔNG THỨC ) ;
readln ;
END.
Hướng dẫn giải bài tập (theo chương trình mẫu)
TinhTienNET
soMB , KQ
longint
so MB đa su dung=
soMB

IF soMB < 1000 THEN KQ := (soMB * 45) + 20000 ;
ELSE KQ := (1000 * 45) + ((soMB – 1000) * 40)+ 20000 ;
KQ
500
Số tiền phải trả
www.themegallery.com
Company Name

Giới Thiệu Bài Mới:
Cấu trúc lặp là một bài học khó ở HK 1. Các em về nhà cần xem thêm kiến thức, ví dụ và bài tập trong SGK.
“lặp” là thao tác lặp đi lặp lại nhiều lần, có 2 dạng lặp thường gặp là:
Lặp với số lần biết trước.
VD: GV “yêu cầu” 1 em HS chép lại bài học 5 lần để HS nhớ - thuộc bài.
 Việc chép lại bài học được lặp lại đúng 5 lần.
Lặp với số lần chưa biết trước.
VD: GV yêu cầu 1 em HS chép lại bài học nhiều lần cho đến khi nào thuộc bài.
 Việc chép lại bài học bị lặp đi, lặp lại với số lần chưa biết trước, đến khi HS thuộc bài thì mới dừng.
www.themegallery.com
Company Name
Giới Thiệu Bài Mới: (tt)
Một số thuật toán có những thao tác phải thực hiện lặp đi, lặp lại một số lần. Một trong các đặc trưng của máy tính là có khả năng thực hiện hiệu quả các thao tác lặp.
VD1: Bài toán tính tổng cộng dồn các số từ 1, 2, ... đến 100
S = 1 + 2 + 3 + ... + 98 + 99 + 100 = ?
Thuật toán giải quyết bài toán trên ?
 Cộng dồn các số từ 1, mỗi lần tăng một giá trị - thực hiện đúng 100 lần để ra được kết quả cuối cùng.
VD2: Bài toán tìm Ước số chung lớn nhất của 2 số.
 Thuật toán: ?
So sánh 2 số, lấy số lớn trừ số bé cho đến khi giá trị 2 số bằng nhau thì giá trị đó là UCLN của 2 số.
 Sử dụng cấu trúc lặp, và được lặp đi, lặp lại cho đến khi điều kiện giá trị 2 số bằng nhau.
Bài 10:
Cấu Trúc Lặp (3 TIẾT)
GIÁO ÁN TIN HỌC – KHỐI 11 – TRẦN MINH TÙNG
www.themegallery.com
Company Name
Nội Dung Bài Học:
(học một Tiết
Tiết 13)
Giới thiệu Lặp
(học một Tiết
Tiết 14)
(học một Tiết
Tiết 15)
www.themegallery.com
Company Name
I – Lặp với số lần lặp biết trước

1. Bài toán đặt vấn đề:
- Dữ liệu ra (Output) : Tổng S
Lập chương trình tính tổng sau:
- Dữ liệu vào (Input) : Nhập N
Hãy xác định INPUT và OUTPUT của bài toán trên!
S = 1 + 2 + 3 + ... + N
www.themegallery.com
Company Name
Phân tích bài toán với N = 100

NHẬN XÉT:
S1 = S + 1
S2 = S1 + 2
S3 = S2 + 3
S4 = S3 + 4


.....
S100 = S99 + 100
Bắt đầu từ S1 việc tính S được lặp đi lặp lại 100 lần theo quy luật
Ssau = Strước+ i
với i chạy từ 1  100
. . . . . . . . . . . . . . . . . . . .
www.themegallery.com
Company Name
Sơ đồ khối thuật toán:

Đ
S
B1: Nhập N;
B2: S:=1; i:=2;
B3: Nếu i > N thì đưa ra giá trị S  Kết thúc;
B4 : S:= S + i;
B5: i := i +1 quay lại B3.
i:= i+1
www.themegallery.com
Company Name
2/ Lặp với số lần lặp biết trước


FOR := TO DO ;
Ví dụ: FOR i := 1 TO 100 DO Tong := Tong + i;
b. Dạng 2 (dạng lùi)
FOR := DOWNTODO;
VD: FOR i := 100 DOWNTO 1 DO Tong := Tong + i;
a. Dạng 1 (dạng tiến)
www.themegallery.com
Company Name
(TIẾT 2)-Hệ thống lại kiến thức:

FOR :=
TO DO ;
Cấu trúc lặp có mấy loại ? Là những loại nào?
Có 2 loại:
+Lặp với số lần biết trước.
+Lặp với số lần chưa biết trước.
Lặp với số lần biết trước có mấy dạng?
FOR :=
DOWNTO DO ;
DẠNG
TIẾN
DẠNG
LÙI
Với cú pháp cho sẵn, phân biệt tên các loại đó?
www.themegallery.com
Company Name
Hệ thống lại kiến thức (tt):
FOR :=
TO DO ;
Quan sát lại cú pháp cấu trúc dạng tiến,
tham khảo ví dụ và trả lời các câu hỏi sau:
1/ Biến đếm có kiểu dữ liệu gì ?
2/ Đặc điểm của Giá trị đầu và Giá trị cuối như thế nào ?
3/ Giá trị biến đếm thay đổi ntn ?
4/ Khi nào câu lệnh ngừng thực hiện ?
www.themegallery.com
Company Name



 Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm, giá trị đầu phải nhỏ hơn giá trị cuối.
VD2: For i := 100 to 200 do write( i );
 Giá trị biến đếm được điều chỉnh tự động, vì vậy câu lệnh sau DO không được thay đổi giá trị biến đếm.
Trong đó:
 Biến đếm là biến kiểu số nguyên hoặc kí tự.
VD1: For i := ‘ a ’ to ‘ z ’ do write( i );
2/ (tt) * Giải thích ý nghĩa cú pháp:
www.themegallery.com
Company Name
* Viết chương trình tính tổng sau:


Var i,n : Integer;
S : real;
BEGIN
Readln;
END.
S:=1;
FOR i:=2 to n do S := S + 1/i ;
Writeln(` Tong S = ` , S );
Write(` Nhap vao gia tri cua n :`);
readln(n);
Program Tinh_Tong;
Hãy áp dụng câu lệnh lặp dạng tiến để viết chương trình giải bài toán
www.themegallery.com
Company Name
*Mô phỏng thuật toán: (N=5)


S := 1 ; i := 2;
i >N
Kết thúc
S := S +1/ i ;
i := i +1;
2.08
1.83
1.5
1
4
3
2
Lượt
i
S
2.28
5
Nhập N
S := 1 ; i := 2;
2>5 ?
S
S
S := 1 +1/2 ;
i := 2 +1;
3>5 ?
S := 1.5+1/3 ;
i := 3 +1;
4>5 ?
S := 1.83+1/4 ;
i := 4 +1;
5>5 ?
S := 2.08+1/5;
i := 5 +1;
6
S
S
S
6>5 ?
In Tổng S
Tổng S=2.28
Với N = 5
2.28
Đ
Đ
www.themegallery.com
Company Name
Ý nghĩa sử dụng 2 dạng lặp
Trả lời: Mặc dù số lần lặp là như nhau nhưng câu lệnh thực hiện trước và sau sẽ có thể cho kết quả khác nhau.
Ví dụ 1: For i := 1 to 9 do write( i );
KQ1  1 2 3 4 5 6 7 8 9
Ví dụ 2: For i := 9 downto 1 do write( i );
KQ2  9 8 7 6 5 4 3 2 1

Dạng lặp tiến và lặp lùi của cấu trúc lặp với số lần biết trước đều có số lần lặp lại câu lệnh là như nhau.
Như vậy có cần thiết chia làm 2 dạng lặp như trên không?
Đều thực hiện 9 lần
www.themegallery.com
Company Name
Liên hệ bài tập:
Chỉ ra sự khác nhau của 2 chương trình vẽ hình tam giác vuông với chiều dài 8 kí tự *
www.themegallery.com
Company Name
II – Lặp với số lần chưa biết trước:

WHILE <điều kiện> DO ;
Điều kiện
Đúng
Câu lệnh
Điều kiện:
Là biểu thức quan hệ
hoặc logic.
Câu lệnh:
Là một câu lệnh
của Pascal.
Sai
Trong đó:
Giải thích sơ đồ cú pháp: Chừng nào điều kiện còn đúng thì câu lệnh còn được thực hiện.
www.themegallery.com
Company Name

Máy tính sẽ thử <điều kiện> trước rồi mới thực hiện .
Do đó nếu <điều kiện> là sai ngay từ đầu thì vòng lặp không được thực hiện một lần nào.
Trái lại nếu <điều kiện> là luôn luôn đúng thì vòng lặp được thực hiện mãi mãi.
Ta phải nhấn nút Ctrl + Pause để dừng vòng lặp đó.
www.themegallery.com
Company Name
Ví dụ:


Viết chương trình kiểm tra việc nhập điểm môn học từ bàn phím.
Con điểm hợp lệ từ 0 đến 10.
Khi người dùng nhập sai, yêu cầu nhập lại.
Sau đó xuất kết quả con điểm hợp lệ mà người dùng vừa nhập.
www.themegallery.com
Company Name
Phân tích đề bài:
Input: các số từ 0 đến 10. (có thể là nhiều số)

Output: xuất ra 1 số hợp lệ. (chỉ 1 số hợp lệ)
Thông tin đưa vào (Input): ?
Thông tin đưa ra (Output): ?
1/ Cần khai báo bao nhiêu biến?
2/ Biến khai báo là Kiểu gì?
3/ Làm sao để kiểm tra điểm hợp lệ ?
www.themegallery.com
Company Name
IF (diem > 0) and (diem <=10)
THEN write(‘ Ban da nhap dung ’)
ELSE write(‘ Ban da nhap sai ‘);
www.themegallery.com
Company Name
WHILE (diem < 0) or (diem >=10) DO
begin
write(‘Da nhap sai, Moi nhap lai= ’);
readln(diem);
end;
CÓ MỘT LỖI XUẤT HIỆN TRONG BÀI GIẢI, LỖI ĐÓ NẰM Ở ĐÂU VÀ SỬA LẠI NHƯ THẾ NÀO?
www.themegallery.com
Company Name
(TIẾT 3)*BÀI TẬP THỰC HÀNH:

(Cấu trúc rẽ nhánh)
Lập chương trình tìm Số lớn nhất (Max) của 2 số nguyên nhập từ bàn phím.
www.themegallery.com
Company Name
Phân tích đề bài 1:
Input: hai số nguyên.

Output: MAX (số lớn nhất)
Thông tin đưa vào (Input): ?
Thông tin đưa ra (Output): ?
1/ Cần khai báo bao nhiêu biến?
2/ Biến khai báo là kiểu gì?
3/ Trình bày thuật toán ?
www.themegallery.com
Company Name
Program Max2so ;
var a, b : integer ;
BEGIN
write(‘Moi nhap gia tri 2 so: ’);
readln(a , b);

IF a > b THEN write(‘A la so lon nhat’)
ELSE write(‘B la so lon nhat’);

readln; {lệnh dừng chương trình,
để xem kết quả cuối cùng}
END.
Hướng Dẫn Giải Bài Tập:
A , ‘ la so lon nhat’
B , ‘ la so lon nhat’
TẠI SAO KHÔNG KHAI BIẾN KIỂU BYTE?
www.themegallery.com
Company Name
*BÀI TẬP THỰC HÀNH (tt):

(Cấu trúc rẽ nhánh)
Lập chương trình tìm Số nhỏ nhất (Min) của 3 số nguyên nhập từ bàn phím.
Lập chương trình giải phương trình bậc nhất (ax + b = 0). Hai số a, b nhập từ bàn phím.
www.themegallery.com
Company Name
Phân tích đề bài 2:
Input: ba số nguyên.

Output: MIN (số nhỏ nhất)
Thông tin đưa vào (Input): ?
Thông tin đưa ra (Output): ?
Trình bày thuật toán Tìm số nhỏ nhất trong 3 số?
Gợi ý: dùng 3 C/Trúc rẽ nhánh dạng thiếu tương tự:
IF (awww.themegallery.com
Company Name
*BÀI TẬP THỰC HÀNH:

Viết CT in ra màn hình các số từ 10 đến 30.
Viết CT tìm Ước số chung lớn nhất của 2 số thực a, b nhập từ bàn phím.
Viết CT tính Tổng các số nguyên nhập vào, cho đến khi nhập số 0.
Viết CT tính giai thừa của 1 số nguyên N, với N được nhập từ bàn phím.
www.themegallery.com
Company Name
* Hướng dẫn Giải bài 5:


Viết CT tìm ước chung lớn nhất của hai số
thực a, b được nhập từ bàn phím.
B1 : Nhập A,B;
B2 : Chừng nào AB
nếu A>B thì A:=A-B,
ngược lại thì B:=B-A;
B3 : Đến khi A=B thì
=> Đưa ra ƯCLN(A,B)=A;
=> Kết thúc.
B1: Nhập A,B
B2: While A < > B DO
IF A>B then A:=A-B
else B:=B-A;
B3: In ƯCLN: write (A) ;
hoặc: write (B) ;
THUẬT TOÁN
CÁC BƯỚC VIẾT CHƯƠNG TRÌNH
www.themegallery.com
Company Name
Program UCLN ;
var a, b : real ;
BEGIN
write(‘Moi nhap 2 so can tim UCLN: ’);
readln(a , b);

WHILE a < > b DO
IF a > b THEN a:=a-b ELSE b:=b-a ;

writeln(‘Uoc so chung lon nhat la: ’ , a);
readln;

END.
Hướng Dẫn Giải Bài Tập:
www.themegallery.com
Company Name
Củng Cố
GV: Trần Minh Tùng
Thank You !
THẢO LUẬN
* 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ẻ: Tmt Tmt Tmt
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)