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

Chia sẻ bởi Phạm Tân | Ngày 10/05/2019 | 60

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:

KiỂM TRA BÀI CŨ
Wednesday, November 07, 2012
Cấu trúc IF …. THEN (Dạng thiếu )
nào sau đây là đúng :
IF<đk> THEN ;
IF <đk> ELSE ;
IF THEN <đk>;
IF <đk> THEN ;
Wednesday, November 07, 2012
Cấu trúc IF…THEN….ELSE Nào sau đây là đúng.
IF<đk>THENELSE
IF<đk>THEN;ELSE;
IF<đk>THENELSE;
IF<đk>THENELSE;
KiỂM TRA BÀI CŨ
Wednesday, November 07, 2012
Câu lệnh ghép là :
Begin
Thực hiện theo điều kiện
Ghép nhiều câu lệnh

Begin ….End.
KiỂM TRA BÀI CŨ
Bài 10
CẤU TRÚC LẶP
(Ti?t 1)
Bài 10: CẤU TRÚC LẶP
Lặp
Lặp với số lần biết trước và câu lệnh for….do….
Lặp với số lần chưa biết trước và câu lệnh while….do….
Bài tập Ví dụ
Bài tập 1: Viết chương trình in ra màn hình dòng chữ “Xin Chao”
Bài tập 2: Viết chương trình in ra màn hình 5 dòng chữ “Xin Chao”
I. Tìm hiểu Lặp
Bài tập 3: Viết chương trình in ra màn hình 15 dòng chữ “Xin Chao”
Nhận xét:
- Để viết ra màn hình 15 dòng chữ Xin Chao chúng ta phải viết bao nhiêu câu lệnh trong phần thân chương trình Begin End?

- Các câu lệnh đó có giống nhau không?

- Số lần thực hiện của công việc in ra màn hình là bao nhiêu? Số lần này có xác định được không?
THPT Nguyễn Văn Trỗi
Bài tập 4: Viết chương trình in ra màn hình dòng chữ “Xin Chao”, và thông báo có muốn tiếp tục hay không? Nếu muốn tiếp tục thì nhấn phím “c” còn nếu không thì nhấn phím “k” để kết thúc?
Nhận xét:
- Các công việc in ra màn hình đó có giống nhau không?

- Công việc in ra màn hình dòng chữ “Xin Chao” và thông báo “Ban co muon tiep tuc khong? C/K?” có xác định được số lần in ra màn hình không?
Wednesday, November 07, 2012
Từ ví dụ trên thấy rằng công việc nhập và in dòng chữ Xin Chao được lặp đi lặp lại. Ta nói rằng trong ví dụ trên đã có hiện tượng lặp.

Vậy lặp là gì ?
Wednesday, November 07, 2012
Lặp: một công việc, một thao tác, một phép toán, một câu lệnh … được thực hiện lặp đi, lặp lại một số lần.

Trong 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. Cấu trúc lặp được sử dụng để mô tả các thao tác lặp đó.
Wednesday, November 07, 2012
VÍ DỤ 2: Một hồ nước,một xô đựng nước ,một ca
múc nước.
Hồ nước
Biến đếm
Tăng lên 1 đơn vị
Thỏa mãn ĐK đầy xô là dừng
Bài toán 1:
Bài toán 2:

VD 3: Xét 2 bài toán: Tính và đưa kết quả ra màn hình tổng
cho đến khi
Xuất phát
Lần 1
Lần 2
Lần N

Mỗi lần thực hiện giá trị tổng S tăng thêm bao nhiêu?


Sau mỗi lần thực hiện giá trị tổng S tăng thêm giá trị i ( với i =1; 2; 3 ; ...;N)


Cùng tìm thuật toán
Lần 3
Bài toán 1:
Bài toán 2:
Cho đến khi
? Số lần lặp biết trước.
Việc tăng giá trị cho tổng S được lặp đi lặp lại cho đến khi
Việc tăng giá trị cho tổng S được lặp đi lặp lại 100 lần.
tìm sự khác biệt
? Số lần lặp chưa biết trước.
Wednesday, November 07, 2012
Em hãy lấy ví dụ về lặp trong thực tế
Ví dụ 1: Học sinh A bị phạt trực nhật
trong 7 ngày.
Ví dụ 2: Học sinh B bị phạt trực nhật cho
đến khi nào cô giáo thấy bạn có ý thức tốt
thì mới không phải trực nhật nữa.
Ví dụ 1, phải trực nhật 7 ngày, ví dụ 2
không biết trước phải trực nhật bao nhiêu
ngày
THPT Nguyễn Văn Trỗi
Phân loại
2. Lặp với số lần biết trước và câu lệnh For-do
Lặp dạng tiến:

for := to do
;
Lặp dạng lùi:

for := downto do
;
Trong Pascal, có 2 loại câu lệnh lặp với số lần biết trước:
FOR := TO DO < câu lệnh>;
Ví dụ:
FOR i:=1 TO 5 DO WRITELN(i);
* Dạng 2 (dạng lặp lùi)
FOR := DOWNTO DO ;
Ví dụ:
FOR i:=5 DOWNTO 1 DO WRITELN(i);
a. Câu lệnh For-do:
2. Lặp với số lần lặp biết trước và câu lệnh For-do
* Dạng 1 (dạng lặp tiến)
Viết ra 5 số
Từ 5 -1
Viết ra 5 số
Từ 1 ->5
? - Giá trị đầu, giá trị cuối là các biểu thức có cùng kiểu với biến đếm, giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối.
For i:= 100 to 200 do write(i);
Trong đó
? - Biến đếm là biến đơn, và có kiểu số nguyên hoặc kiểu kí tự.
For i:=1 to 10 do write(i);
For i:=`a` to `z` do write(i);
2. Lặp với số lần lặp biết trước và câu lệnh For-do
? - ễ� daùng laởp tieỏn: Bieỏn ủeỏm tửù ủoọng taờng da�n tửứ giaự trũ ủa�u ủeỏn giaự trũ cuoỏi.
? - ễ� daùng laởp luứi: Bieỏn ủeỏm tửù ủoọng giaỷm da�n tửứ giaự trũ cuoỏi ủeỏn giaự trũ ủa�u.
? - Tửụng ửựng vụựi moói giaự trũ cuỷa bieỏn ủeỏm, caõu leọnh sau do thửùc hieọn 1 la�n.
Chú ý:
- Trong câu lệnh FOR . . . DO, Nếu giá trị đầu = giá trị cuối thì vòng lặp sẽ được thực hiện 1 lần.
- Trong câu lệnh FOR . . . DO
Số lần lặp = Giá trị cuối - Giá trị đầu + 1.

2. Lặp với số lần lặp biết trước và câu lệnh For-do
Ví dụ áp dụng
Ví dụ 1:
Sử dụng cấu trúc lặp xác định để viết chương trình thực hiện in ra màn hình 20 dòng chữ Xin Chao.
Xác định: - Câu lệnh lặp cần thực hiện?
- Lặp bao nhiêu lần?
- Giá trị đầu, giá trị cuối?
Ví dụ áp dụng
VD : Bài toá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!
2. Lặp với số lần lặp biết trước và câu lệnh For-do
Nếu N =10, S=?; lập trình giải như thế nào?
S0 := 0;
i=1 ? S1 := S0 + 1 = 1;
i=2 ? S2 := S1 + 2 = 3;
.....
i=10 ? S10 :=S9+10=55;
S=1+2+3+ . +10;

Phân tích bài toán với TừNG TRƯờng hợp của N

S0 := 0;
i=1 ? S1 := S0 + 1;
i=2 ? S2 := S1 + 2;
.....
i=10 ? S10 := S9 + 10;
.......
i=100 ? S100 :=S99+100;
Nếu N =100, lập trình giải như thế nào?
Em có nhận xét gì về cách giải này?
Nhận xét:
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
Hãy áp dụng câu lệnh dạng lặp tiến để viết chương trình?
Lập trình tính tổng:
Tổ1 và 3
Hãy áp dụng câu lệnh dạng lặp lùi để viết chương trình?
Tổ 2 và 4
Program tong1 ;
Uses crt;
Var S,i,n : integer;
Begin
Clrscr;
Write(‘nhap n’);
readln(n);

S:= 0;
For i := 1 to n do
S:= S + i ;

Writeln(‘ tong S la ‘ , S );
Readln
End.

? Chương trình dùng câu lệnh lặp For - do dạng lặp tiến
Program tong1 ;
Uses crt;
Var S,i,n : integer;
Begin
Clrscr;
Write(‘nhap n’);
readln(n);

S:= 0;
For i := 1 to n do
S:= S + i ;

Writeln(‘ tong S la ‘ , S );
Readln
End.

? Chương trình dùng câu lệnh lặp For - do dạng lặp tiến

Program tong2 ;
Uses crt;
Var S,i,n : integer;
Begin
Clrscr;
Write(‘nhap n’);
readln(n);
S:= 0;
For i := n downto 1 do
S:= S + i ;

Writeln(‘ tong S la ‘ , S );
Readln
End.

? Chương trình dùng câu lệnh lặp For - do dạng lùi
? Chương trình dùng câu lệnh lặp For - do dạng lùi
Program tong2 ;
Uses crt;
Var S,i,n : integer;
Begin
Clrscr;
Write(‘nhap n’);
readln(n);
S:= 0;
For i := n downto 1 do
S:= S + i ;
Writeln(‘ tong S la ‘ , S );
Readln
End.

Ví dụ áp dụng
Ví dụ :
Ngày đầu tiên đi học mẹ cho bé 1 viên kẹo, ngày thứ 2 đi học mẹ cho bé 2 viên kẹo, ….., ngày thứ 7 đi học mẹ cho bé 7 viên kẹo. Hỏi sau 7 ngày bé có tất cả bao nhiêu viên kẹo
S:=0
S:=0+1
S:=0+1+2
S:=0+1+2+3
…..
S:=0+1+2+3+4+5+6+7
Writeln(‘So keo:’, s);
Program vd2;
Uses crt;
Var i,s : integer;
Begin
S:=0;
For i:=1 to 7 do
s:=s+i;
Readln;
End.
Hãy nhớ
Câu lệnh lặp
trong pascal
FOR ... TO ... DO ...…
FOR ... Downto ... DO ...
+ Ý nghĩa: Lặp với số lần biết trước.
Công việc sau Do sẽ được thực hiện tuần tự từ giá trị đầu đến giá trị cuối
+ Có 2 dạng:
- Lặp tiến: giá trị biến đếm tăng thêm 1.
- Lặp lùi: giá trị biến đếm giảm đi 1
Bài tập trắc nghiệm củng cố:
Câu 1: x biến thực ,i biến nguyên ,câu lệnh nào sau đây la đúng?
A.for x:=1 to 10 do writeln(‘lop 11a3’);
B. for i:=1 to 10 do writeln(‘lop 11a3’);
C. for x:=1.5 to 10.5 do writeln(‘lop 11a3’);
D. for i:=1.5 to 10 do writeln(‘lop 11a3’);
Bài tập trắc nghiệm củng cố:
Câu 2: cú pháp lệnh lặp nào sau đây là sai?
A. For I:=n downto 1 do …
B. For I:=1 downto n do …
C. For I:=0 to n do …
D. For I:=1 to n do …
Tạo bảng số dạng sau:
Bài tập
Tạo hì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ẻ: Phạm Tân
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)