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... Cấu trúc này dùng khi không biết tr
Trang 1Cấu trúc lặp ( tiết 3)
Sinh viên thực hiện: Phương Thị
Chang Lớp: K56A-CNTT
Trang 2• 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;
Trang 3I 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
Trang 4II 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 ?
Trang 5III 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 đó
Trang 61 Giới thiệu về cấu trúc lặp với
số lần chưa biết trước:
Trang 7Nhậ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
Trang 8Nhậ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
Trang 92 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 <điều kiện> do <câu lệnh>
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
Trang 10Ta có sơ đồ biểu diễn như sau:
Trang 11
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
Trang 12Nguyê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
Trang 133.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
Trang 15Chươ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
Trang 16Phâ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
Trang 17Phâ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)
Trang 18Phâ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
Trang 204 Cấu trúc while-do và
for-do
• Dạng lặp lùi:
For < biến đếm > := <giá trị cuối > downto
< giá trị đầu > do < câu lệnh >;
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
Trang 214 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
Trang 224 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
Trang 25Bước 4: quay lại bước 2;
Bước 5: Đưa ra kết quả trên màn hình
Trang 26Chương trình thể hiện thuật toán
Trang 27Chương trình thể hiện thuật toán