Bài giảng Cấu trúc lặp

Hôm nay chúng ta học dạng cấu trúc lặp với số lần chưa biết trước. Cấu trúc này

dùng khi không biết trước số lần lặp nhưng ta biết trước một điều kiện để dừng công

việc lặp đó.

• Vậy cấu trúc lặp này sử dụng cú pháp nhưthế nào ? Có gì tương quan giữa cú pháp này

với cú pháp của cấu trúc lặp với số lần biết trước, có thể chuyển hóa giữa hai cấu trúc

lặp hay không ?

pdf27 trang | Chia sẻ: maiphuongdc | Ngày: 27/02/2014 | Lượt xem: 9732 | Lượt tải: 4download
Bạn đang xem nội dung tài liệu Bài giảng Cấu trúc lặp, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Cấu trúc lặp ( tiết 3) Sinh viên thực hiện: Phương Thị Chang Lớp: K56A-CNTT I. MỤC ĐÍCH, YÊU CẦU: • Hiểu được cấu trúc lặp với số lần chưa biết trước hay cấu trúc lặp kiểm tra điều kiện trước; Biết cách vận dụng đúng đắn cấu trúc lặp này vào tình huống cụ thể; • Mô tả được thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp với số lần lặp chưa biết trước; I. MỤC ĐÍCH, YÊU CẦU: • Viết đúng các lệnh lặp với số lần lặp chưa biết trước; • Viết được thuật toán của bài toán đơn giản sử dụng cấu trúc lặp trên. II . MỞ ĐẦU • . Hôm nay chúng ta học dạng cấu trúc lặp với số lần chưa biết trước. Cấu trúc này dùng khi không biết trước số lần lặp nhưng ta biết trước một điều kiện để dừng công việc lặp đó. • Vậy cấu trúc lặp này sử dụng cú pháp như thế nào ? Có gì tương quan giữa cú pháp này với cú pháp của cấu trúc lặp với số lần biết trước, có thể chuyển hóa giữa hai cấu trúc lặp hay không ? III. Nội dung bài học 1. Giới thiệu về cấu trúc lặp với số lần chưa biết trước: Lặp với số lần chưa biết trước dùng trong trường hợp mà ta không biết trước số lần lặp nhưng ta biết trước một điều kiện để dừng công việc lặp đó. 1. Giới thiệu về cấu trúc lặp với số lần chưa biết trước: Có hai dạng: • Dạng 1: Trong khi còn đúng thì còn thực hiện ; • Dạng 2: Thực hiện trong khi <điều kiện> đúng. Nhận xét về hai dạng cấu trúc lặp Trong dạng 1: Đầu tiên kiểm tra và tính giá trị của điều kiện, nếu điều kiện đúng thì thực hiện công việc (một lần). Giá trị của điều kiện sẽ được thay đổi sau mỗi lần thực hiện công việc đến một lúc nào đó điều kiện lặp không còn đúng nữa thì cấu trúc lặp sẽ được kết thúc. Nhận xét về hai dạng cấu trúc lặp Trong dạng 2: • Tiến hành ngược lại, công việc được thực hiện trước, sau đó mới kiểm tra điều kiện, nếu điều kiện đúng thì thực hiện công việc, ngược lại kết thúc lặp. Trong công việc cần có lệnh thoát khỏi vòng lặp. • Ở đây chúng ta chỉ nghiên cứu dạng lặp 1 2. Cú pháp cấu trúc lặp với số lần chưa biết trước Trong Pascal, cú pháp của dạng 1 như sau: While do trong đó • Điều kiện là biểu thức logic • Câu lệnh là một câu lệnh đơn hay ghép. Ta có sơ đồ biểu diễn như sau: Nguyên tắc hoạt động Câu lệnh sau từ khoá do được thực hiện khi biểu thức điều kiện còn nhận giá trị true. Biểu thức điều kiện được tính giá trị trước khi câu lệnh được thực hiện, nếu biểu thức điều kiện đã nhận giá trị false ngay từ đầu thì câu lệnh chưa được thực hiện lần nào. Nguyên tắc hoạt động • Trong trường hợp cấu trúc lặp không làm thay đổi giá trị của điều kiện (biểu thức điều kiện luôn nhận giá trị true) thì cấu trúc lặp sẽ kéo dài mãi mãi (vòng lặp vô hạn). Để thoát khỏi vòng lặp vô hạn, trong công việc cần có câu lệnh rẽ nhánh thoát khỏi vòng lặp vô hạn khi thoả mãn điều kiện rẽ nhánh. 3.Chương trình với cấu trúc lặp while-do: • Đây là chương trình này xây dựng dựa trên thuật toán tong_1b với số lần lặp chưa biết trước nhưng biết trước được điều kiện dừng vòng lặp: 1/(a + N) < 0.0001 thì thực hiện lặp, còn ngược lại thì kết thúc lặp. Chương trình: program tong_1b; uses crt; var s:real; a, N: integer; begin write(‘ hay nhap gia tri a vao’); readln(a); s:= 1.0/a; N:= 0; {bước 1} Chương trình: while not (1/(a + N)<0.0001) do {bước 2} Begin N:= N + 1; {bước 3} S:=S + 1.0/(a+N); {bước 4} End; Write (‘tong s la: ‘, S:8:4); {bước 5} Readln End. Phân tích và giải thích các lệnh trong chương trình: • Bước 1 của thuật toán: s:= 1.0/a; N:= 0; • Bước 2 của thuật toán. while not (1/(a + N)<0.0001) do Phân tích và giải thích các lệnh trong chương trình: • Với a được đưa vào từ bàn phím và N nhận giá trị ban đầu là 0, nếu kiểm tra điều kiện trên thoả mãn thì nó đi vào thực hiện các lệnh trong vòng lặp while-do: tăng N lên 1 (bước 3) và cộng vào tổng s một số hạng 1.0/(a+N) ( bước 4). Phân tích và giải thích các lệnh trong chương trình: Sau khi tính toán hoàn tất thì nó sẽ quay lên kiểm tra điều kiện. Nếu thoả mãn tiếp tục thực hiện. Còn ngược lại nó sẽ thoát khỏi vòng lặp. • Bước 5: Write (‘ tong s la:’, s:8:4); Đưa ra màn hình tổng s và kết thúc chương trình. 4. Cấu trúc while-do và for-do • Cấu trúc lặp while-do While do • Cấu trúc lặp for-do Dạng lặp tiến: For := to < giá trị cuối > do ; 4. Cấu trúc while-do và for-do • Dạng lặp lùi: For := downto do ; Nhận thấy cả while-do và for-do đều là cú pháp xây dựng để thực hiện các thao tác lặp mang lại hiệu quả cao cho việc lập trình. 4. Cấu trúc while-do và for-do Điểm khác nhau cơ bản giữa chúng : while-do: số lần lặp chưa xác định trước nhưng biết trước điều kiện có thể dừng vòng lặp. for-do: số lần lặp đã xác định, nó sử dụng biến đếm để duy trì vòng lặp, cứ mỗi lần biến đếm tăng là một lần các lệnh trong vòng lặp được thực hiện, vòng lặp sẽ dừng lại khi nào biến đếm nhận giá trị cuối. 4. Cấu trúc while-do và for-do Cấu trúc while-do là cấu trúc lặp không định trước số lần lặp nên không thể chuyển về cấu trúc lặp với số lần lặp đã biết trước. Nhưng ngược lại thì ta có thể chuyển từ cấu trúc lặp với số lần lặp biết trước for-do về cấu trúc lặp while-do. 4. Cấu trúc while-do và for-do Vi dụ: for i := m to n do S := S + i; chuyển về while-do: i := m; while (i >= m and i <= n) Begin S := S+ i; i := i + 1; End; 5. Ví dụ 2: Ví dụ: UCLN của hai số nguyên dương m và n Thuật toán: Bước 1: Nhập m, n; Bước 2: nếu m = n thì lấy giá trị chung này làm UCLN rồi chuyển đến bước 5; Thuật toán: Bước 3: nếu m > n thì m m-n ngược lại n n - m; Bước 4: quay lại bước 2; Bước 5: Đưa ra kết quả trên màn hình. Chương trình thể hiện thuật toán tìm UCLN Program UCLN; Uses crt; Var m, n: integer; Begin Clrscr; Write (‘nhập vào m, n’); Readln (m, n); Chương trình thể hiện thuật toán tìm UCLN While m n do If m > n then m:= m - n; Else n := n - m; Writeln ( ‘ UCLN của hai so la:’, m); Readln End.

Các file đính kèm theo tài liệu này:

  • pdftin_hoc_lop_11_tiet_3__9287.pdf
  • pdftin_hoc_lop_11_2688.pdf
  • pdftin_hoc_lop_11_7424.pdf
Tài liệu liên quan