Tải bản đầy đủ (.pptx) (35 trang)

Bai giang bai 10 Cau truc lap

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (588.6 KB, 35 trang )

<span class='text_page_counter'>(1)</span>Kiểm tra bài cũ 1. Viết cú pháp câu lệnh rẽ nhánh (dạng đủ và dạng thiếu) 2. Cho ví dụ..

<span class='text_page_counter'>(2)</span> Bài 10. CẤU TRÚC LẶP (3 Tiết). LƯU Ý: TUẦN SAU KIỂM TRA.

<span class='text_page_counter'>(3)</span> Bài 10: CẤU TRÚC LẶP 1. Lặp 2. Lặp với số lần biết trước và câu lệnh for….do…. 3. Lặp với số lần chưa biết trước và câu lệnh while….do…. 4. Bài tập Ví dụ.

<span class='text_page_counter'>(4)</span> Bài 10: CẤU TRÚC LẶP 1. Lặp Thế nào là Lặp?.

<span class='text_page_counter'>(5)</span> Bài 10: CẤU TRÚC LẶP 1.. Lặp Bài tập 1: Viết chương trình in ra màn hình dòng chữ “Hello”.

<span class='text_page_counter'>(6)</span> Bài 10: CẤU TRÚC LẶP 1.. Lặp Bài tập 2: Viết chương trình in ra màn hình 5 dòng chữ “Hello”.

<span class='text_page_counter'>(7)</span> Tìm hiểuTRÚC Lặp LẶP Bài I. 10: CẤU 1.. Lặp. Bài tập 3: Viết chương trình in ra màn hình 14 dòng chữ “Hello”.

<span class='text_page_counter'>(8)</span> Bài 10: CẤU TRÚC LẶP 1.. Lặp. Nhận xét: - Để viết ra màn hình 14 dòng chữ Hello 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?.

<span class='text_page_counter'>(9)</span> 2. Lặp với số lần lặp biết trước. 00:44:55. a. Dạng 1(dạng tiến) For <biến đếm> := <giá trị đầu> to <giá trị cuối> do < câu lệnh>;. Ví dụ: Viết chương trình in ra màn hình 14 dòng chữ “Hello” For i:=1 to 10 do writeln (‘Hello’);.

<span class='text_page_counter'>(10)</span> 00:44:55. 1. Lặp: Các bài toán đặt vấn đề: Tính tổng S, với a là số nguyên và a>2.. Bài toán 1:. 1 1 1 1 S    ...  a a 1 a  2 a  100 Bài toán 2:. 1 1 1 1 S    ...   ... a a 1 a  2 aN cho đến khi. 1  0.0001 aN.

<span class='text_page_counter'>(11)</span> ĐIỂM GIỐNG NHAU CỦA 2 BÀI TOÁN. * Bài toán 1:. * Bài toán 2:. 1 1 1 1 S    ...  a a 1 a  2 a  100. Xuất phát. 00:44:55. Lần 1. 1 1 1 1 S    ...   ... a a 1 a  2 aN 1 Cho đến khi  0.0001 aN. Lần 2. Lần N. 1 1 1 1 ...  S    aN a a 1 a  2 Sau mỗi lần thực hiện giá trị tổng S tăng thêm 1/(a+i) (với i =1, 2, 3 , ...,N).

<span class='text_page_counter'>(12)</span> TÌM SỰ KHÁC BIỆT ?. * Bài toán 1:. 00:44:55. * Bài toán 2:. 1 1 1 1 S    ...  a a 1 a  2 a  100. 1 1 1 1 S    ...   ... a a 1 a  2 aN 1 Cho đến khi  0.0001 aN. Việc tăng giá trị cho tổng S được lặp đi lặp lại 100 lần.. Việc tăng giá trị cho tổng S được lặp đi lặp lại cho đến 1  0.0001 khi: aN.  Số lần lặp là biết trước..  Số lần lặp là chưa biết trước..

<span class='text_page_counter'>(13)</span> CẤU TRÚC LẶP. 00:44:55. * Lặp với số lần lặp biết trước. * Lặp với số lần lặp chưa biết trư.

<span class='text_page_counter'>(14)</span> 2. Lặp với số lần lặp biết trước. 00:44:55. a. Dạng 1(dạng tiến) For <biến đếm> := <giá trị đầu> to <giá trị cuối> do < câu lệnh>;. Ví dụ: S:=1/a; For i:=1 to 100 do S:=S+1/(a+i);. b. Dạng 2(dạng lùi) For <biến đếm> := <giá trị cuối> downto <giá trị đầu> do < câu lệnh>;. Ví dụ: S:=1/a; For i:=100 downto 1 do S:=S+1/(a+i);.

<span class='text_page_counter'>(15)</span> 00:44:55 Trong đó  Biến đếm là biến thường có kiểu nguyên hoặc kí tự. Ví dụ: For i:=1 to 10 do write(i); For i:=‘a’ to ‘z’ do write(i);  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 hoặc bằng giá trị cuối. For i:= 100 downto 1 do write(i); Lưu ý: 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..

<span class='text_page_counter'>(16)</span> Hãy nhớ  Câu lệnh lặp + Ý nghĩa: Lặp với số lần biết trước.. trong pascal FOR ... TO ... DO ...…. 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:. FOR ... Downto ... DO .... - 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.

<span class='text_page_counter'>(17)</span> Bài 10: CẤU TRÚC LẶP 1. 2.. Lặp Lặp với số lần biết trước và câu lệnh For-do. Ví dụ áp dụng Ví dụ 2: 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?.

<span class='text_page_counter'>(18)</span> S:=0 S:=0+1 S:=0+1+2 S:=0+1+2+3 ….. S:=0+1+2+3+4+5+6+7. Program vd2; Uses crt; Var i,s : integer; Begin S:=0; For i:=1 to 7 do s:=s+i; Writeln(‘So keo:’, s); Readln; End..

<span class='text_page_counter'>(19)</span> 00:44:55. Lặp với số lần biết trước:. 1. Bài toán đặt vấn đề : Lập chương trình tính tổng của Bài toán 1:. 1 1 1 1 S     ...  a a 1 a  2 aN. - Dữ. Hãy xác định INPUT và liệuOUTPUT vào(Input) của bài : toán trên?. Nhập a;. - Dữ liệu ra(output) : Tổng S;.

<span class='text_page_counter'>(20)</span> PHÂN TÍCH BÀI TOÁN VỚI N = 100 00:44:55. 1 1 1 1 1 S   ...    a a 1 a  2 a  3 100 .............. ...... S0 = 1/a S1 = S0 + 1/(a+1) S2 = S1 + 1/(a+2) S3 = S2 + 1/(a+3) ..... S100 = S99 + 1/(a+100). 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:. Si = Si-1+ 1/(a+i); víi i ch¹y tõ 1  100.

<span class='text_page_counter'>(21)</span> XÂY DỰNG THUẬT TOÁN (Dạng tiến). 00:44:55. B1: Nhập a;. Nhập a. B2: S 1/a; i 1; S  1/a ; i  1. i > 100 ?. B3: Nếu i > 100 thì đưa ra giá trị S rồi Kết thúc; Đ. Đưa ra S rồi kết thúc!. S S  S + 1/(a+i) i  i+1. B4 : S  S + 1/(a+i); B5: i  i +1 quay lại B3..

<span class='text_page_counter'>(22)</span> XÂY DỰNG THUẬT TOÁN (dạng lùi). 00:44:55. B1: Nhập a;. Nhập a. B2: S 1/a; i 100; S  1/a ; i  100. i<1?. B3: Nếu i < 1 thì đưa ra giá trị S rồi Kết thúc; Đ. Đưa ra S rồi kết thúc!. S S  S + 1/(a+i) i  i -1. B4 : S  S + 1/(a+i); B5: i  i - 1 quay lại B3..

<span class='text_page_counter'>(23)</span> 2. Lặp với số lần biết trước với câu lệnh for – do. c. Bài tập về nhà BT1: Viết chương trình giải bài toán: Nhập vào số tự nhiên N. Tính tổng S:. S 1  2  3  ...  N 2. 2. 2. 2. BT2: Viết chương trình giải bài toán: Nhập vào số tự nhiên N. Tính tích T:. T N! 1*2 *3*...* N.

<span class='text_page_counter'>(24)</span> a. Dạng 1 (dạng tiến). 1 1 1 1 S    ...  a a 1 a  2 a  100. Program Tinh_tong; Uses crt; Var a,N : Integer; S : real; BEGIN Write(‘ Nhap vao gia tri cua a :’);readln(a); S:=1.0/a; FOR N:=1 to 100 do S := S+1.0/(a+N); Writeln(‘ Tong S =’,S:8:3); Readln; END. 24.

<span class='text_page_counter'>(25)</span> b. Dạng 2 (dạng lùi). 1 1 1 1 S    ...  a a 1 a  2 a  100. Program Tinh_tong; Uses crt; Var a,N : Integer; S : real; BEGIN Write(‘ Nhap vao gia tri cua a :’);readln(a); S:=1.0/a; FOR N:=100 downto 1 do S := S+1.0/(a+N); Writeln(‘ Tong S =’,S:8:3); Readln; END. 25.

<span class='text_page_counter'>(26)</span> 2.Lặp với số lần chưa biết trước Cú pháp. WHILE <điều kiện> DO <câu lệnh>;. Trong đó:. Điều kiện: Là biểu thức quan hệ hoặc lôgic. Câu lệnh: Là một câu lệnh của Pascal.. Điều kiện Đúng Câu lệnh. Chừng nào điều kiện còn đúng thì câu lệnh còn được thực hiện .. Sai.

<span class='text_page_counter'>(27)</span> Program Tinh_tong; Uses crt; Var a,N : Integer; S : real; BEGIN. 1 1 1 1 S    ...   ... a a 1 a  2 aN 1 Cho đến khi  0.0001 aN. Write(‘ Nhap vao gia tri cua a :’);readln(a); S:=1.0/a; N:=0; WHILE NOT (1/(a+N)<0.0001) do S := S+1.0/(a+N); BEGIN N:=N+1; S:=S+1.0/(a+N); END; Writeln(‘ Tong S =’,S:8:3); Readln; END.. 27.

<span class='text_page_counter'>(28)</span> Ví dụ 2: Viết chương trình nhập vào hai số nguyên dương M,N. Tìm ƯCLN của hai số đó.. Ý tưởng: M=N thì ƯCLN (M,N)=M=N. M<N thì ƯCLN (M,N)= ƯCLN (M,N-M). M>N thì ƯCLN (M,N)= ƯCLN (N,M-N)..

<span class='text_page_counter'>(29)</span> Thuật toán tìm ƯCLN.

<span class='text_page_counter'>(30)</span> Thuật toán tìm ƯCLN. M= NhËp 25M ,N,N = 10. M N Đ. 15 25 5 =N = M ???? 5 ==10 510. Đ. S. 10 N --M5 N=. 25 10. 1 2 15 5 10 10. ¦CLN §a ra (25,10) M ; KÕt =thóc 5. S. M 5 15 25 >>10 >10 10 N ??. Đợ t. MM15 25 M - 10 N. 3 5 5.

<span class='text_page_counter'>(31)</span> Ví dụ 2: Viết chương trình nhập vào hai số nguyên dương M,N. Tìm ƯCLN của hai số đó. THUẬT TOÁN. B1: Nhập M,N; B2 : Chừng nào MN nếu M>N thì M:=M-N, ngược lại thì N:=N-M; B3: Đến khi M=N thì => Đưa ra ƯCLN(M,N)=M; => Kết thúc.. CÁC BƯỚC VIẾT CHƯƠNG TRÌNH. B1: Nhập M,N B2 : While M<>N DO IF M>N then M:=M-N else N:=N-M; B3: Xuất ra ƯCLN(M,N).

<span class='text_page_counter'>(32)</span> Program UCLN; Uses crt; Var M,N:Integer;. Nhập M, N § Đưa ra M, kết thúc. M =N ? S §. M> N?. S. N N - M. M M N. BEGIN Clrscr; Write(‘Nhap M:’); Readln(M); Write(‘Nhap N:’); Readln(N); While M<> N do if M>N then M:=M-N else N:=N-M; Writeln(‘UCLN:’, M); Readln; END..

<span class='text_page_counter'>(33)</span> Trắc nghiệm: Em hãy chọn đáp án đúng. Khi chạy chương trình trên, kết quả sẽ hiển thị là bao nhiêu? Đáp án:. a. 3. b. 4. c. 5. d. 6.

<span class='text_page_counter'>(34)</span> Trắc nghiệm: Em hãy chọn đáp án đúng. Khi chạy chương trình trên, kết quả sẽ hiển thị là bao nhiêu? Đáp án:. a. 9. b. 10. c. 12. d. Kết quả khác.

<span class='text_page_counter'>(35)</span> Hãy nhớ Câu lệnh lặp. trong pascal. + Lặp với số lần biết trước.. FOR ... TO ... DO ...… FOR ... Downto ... DO ... While <®k> Do <c©u lÖnh>;. + Lặp với số lần chưa biết trước..

<span class='text_page_counter'>(36)</span>

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×