Câu lệnh lặp với số lần biết trước được máy tính thực hiện như thế nào?.

Xem toàn bộ tài liệu Lớp 8: tại đây

Giải Bài Tập Tin Học 8 – Bài 8: Lặp với số lần chưa biết trước giúp HS giải bài tập, giúp cho các em hình thành và phát triển năng lực sử dụng công nghệ thông tin và truyền thông:

Xem thêm các sách tham khảo liên quan:

    • Sách Giáo Khoa Tin Học Lớp 8

    • Sách Giáo Viên Tin Học Lớp 8

    Bài 1 [trang 66 sgk Tin học lớp 8]: Nêu một vài ví dụ về hoạt động lặp với số lần chưa biết trước.

    Trả lời:

    – Tập đi cho đến khi biết đi.

    – Tập nấu cho đến khi nấu ăn giỏi.

    – Múc nước cho đến khi đầy thùng.

    Bài 2 [trang 66 sgk Tin học lớp 8]: Hãy phát biểu sự khác biệt giữa câu lệnh lặp với số lần lặp cho trước và câu lệnh lặp với số lần lặp chưa biết trước.

    Trả lời:

    Câu lệnh lặp với số lần biết trước :

    – Chỉ thị cho máy tính thực hiện 1 lệnh hay 1 nhóm lệnh với số lần đã được xác định từ trước.

    – Điều kiện là 1 giá trị của 1 biến đếm có giá trị nguyên

    Câu lệnh lặp với số lần chưa biết trước :

    – Chỉ thị cho máy tính thực hiện 1 lệnh hay 1 nhóm lệnh với số lần lặp chưa biết trước.

    – Điều kiện tổng quát hơn, có thể là kiểm tra của 1 giá trị có thực, cũng có thể là 1 điều kiện tổng quát khác.

    Bài 3 [trang 66 sgk Tin học lớp 8]: Hãy tìm hiểu các thuật toán sau đây và cho biết khi thực hiện thuật toán, máy tính sẽ thực hiện bao nhiêu vòng lặp? Khi kết thúc, giá trị của S bằng bao nhiêu? Viết chương trình Pascal thể hiện các thuật toán đó.

    a] Thuật toán 1

    Bước 1. S ← 10, x ← 0.5

    Bước 2. Nếu S ≤ 5.2, chuyển tới bước 4.

    Bước 3. S ← S – x và quay lại bước 2.

    Bước 4. Thông báo S và kết thúc thuật toán.

    b] Thuật toán 2

    Bước 1. S ←10, n ← 0.

    Bước 2. Nếu S ≥ 10, chuyển tới bước 4.

    Bước 3. n ← n+3, S ← S-n và quay lại bước 2.

    Bước 4. Thông báo S và kết thúc thuật toán.

    Trả lời:

    a] Thuật toán 1:

    – Kết quả thuật toán có 10 vòng lặp, giá trị S=5.

    – Chương trình Pascal:

    b] Thuật toán 2:

    – Kết quả thuật toán có 0 vòng lặp do điều kiện vòng lặp không thỏa mãn, giá trị S=10.

    – Chương trình Pascal:

    Bài 4 [trang 67 sgk Tin học lớp 8]: Hãy tìm hiểu mỗi đoạn chương trình Pascal sau đây và cho biết với đoạn lệnh đó chương trình thực hiện bao nhiêu vòng lặp. Hãy rút ra nhận xét của em.

    a] S:=0; n:=0; while S =10 do n:= n+1; S:=S+n;

    Trả lời:

    a] Chương trình thực hiện 10 vòng lặp.

    b] Chương trình thực hiện vô hạn vòng lặp do giá trị của S luôn luôn nhỏ hơn 10.

    Nhận xét: Cần chú ý về lỗi vòng lặp vô hạn. Ở phần b do thiếu đoạn begin end để đóng mở nên sau lệnh lặp chỉ thực hiện lệnh tăng n lên 1, còn lệnh tăng S lên 1 không thực hiện được. Do đó S luôn bằng 0 như ban đầu. Lỗi lặp vô hạn xuất hiện.

    Tìm hiểu mở rộng [trang 67 sgk Tin học lớp 8]: Câu lệnh lặp Repeat… until

    Một câu lệnh lăp khác cũng thường hay được sử dụng trong Pascal là câu lệnh repeat… until có cú pháp như sau:

    repeat ; ;…; ; until ;

    Khi gặp câu lệnh này chương trình sẽ thực hiện các câu lệnh nằm giữa hai từ khóa repeat và until, sau đó kiểm tra , nếu sai thì tiếp tục thực hiện vòng lặp. Quá trình đó được lăp đi lặp lại cho tới khi nào đúng thì kết thúc.

    Đoạn chương trình sau cho cùng kết quả như ví dụ 4 ở trên:

    T:= 0; i:= 1; repeat T:= T+1/i; i:= i+1; until i>100; writeln[T];

    1. Em hãy viết chương trình Pascal với câu lệnh repeat…until thể hiện thuật tính tính số n trong ví dụ 1.

    2. Hãy tìm hiểu và rút ra những điểm giống và khác nhau giữa các câu lệnh lặp While… do và Repeat … until.

    Trả lời:

    1. Chương trình pascal:

    Câu lệnh repeat…until: Chương trình sẽ thực hiện các câu lệnh nằm giữa hai từ khóa repeat và until, sau đó kiểm tra điều kiện, nếu điều kiện sai thì tiếp tục thực hiện vòng lặp. Nếu đúng thì kết thúc.

    Câu lệnh lặp while … do: Kiểm tra điều kiện. Nếu điều kiện sai câu lệnh sẽ bị bỏ qua và thực hiện lệnh kết thúc. Nếu điều kiện đúng, thực hiện câu lệnh và quay lại kiểm tra điều kiện.

    Giống: Đều là lệnh lặp với số lần chưa biết trước.

    Khác: Repeat… until sẽ thực hiện lệnh rồi mới kiểm tra còn while… do kiểm tra rồi mới thực hiện lệnh.

    Bài 7: Câu lệnh lặp – Câu 2 trang 60 SGK Tin học lớp 8. Hãy cho biết tác dụng câu lệnh lặp với số lần biết trước

    Hãy cho biết tác dụng câu lệnh lặp với số lần biết trước .

    Lời giải : 

    Câu lệnh lặp với số lần lặp biết trước chỉ thị cho máy tính thực hiện một lệnh hoặc một nhóm lệnh với số lần đã được xác định từ trước.

    Trong câu lệnh lặp với số lần cho trước, điều kiện là giá trị của một biến đếm có giá trị nguyên đã đạt được giá trị lớn nhất hay chưa.

    Trong câu lệnh lặp với số lần biết trước, câu lệnh được thực hiện ít nhất một lần, sau đó kiểm tra điều kiện.

    Bài 8: Lặp với số lần chưa biết trước – Câu 2 trang 70 SGK tin học 8. Sự khác nhau giữa câu lệnh lặp với số lần chưa biết trước và câu lệnh lặp với số lần biết trước?

    Sự khác nhau giữa câu lệnh lặp với số lần chưa biết trước và câu lệnh lặp với số lần biết trước?

    Lời giải :

    Câu lệnh lặp với số lần biết trước :

    – Chỉ thị cho máy tính thực hiện 1 lệnh hay 1 nhóm lệnh với số lần đã được xác định từ trước.

    – Điều kiện là 1 giá trị của 1 biến đếm có giá trị nguyên

    Quảng cáo

    Câu lệnh lặp với số lần chưa biết trước :

    – Chỉ thị cho máy tính thực hiện 1 lệnh hay 1 nhóm lệnh với số lần lặp chưa biết trước.

    – Điều kiện tổng quát hơn, có thể là kiểm tra của 1 giá trị có thực, cũng có thể là 1 điều kiện tổng quát khác.

    BÀI 8: LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC

    1. Các hoạt động lặp với số lần chưa biết trước

    a. Ví dụ 1:

    - Một ngày, Long quyết định cứ 10 phút gọi điện một lần cho Trang cho đến khi nào có người nhấc máy. 

    => Chưa thể biết trước được số lần lặp tối đa. Điều kiện để kết thúc hoạt động lặp đó là có người nhấc máy.

    b. Ví dụ 2:

    - Nếu cộng lần lượt n số tự nhiên đầu tiên [n = 1, 2, 3,...], ta sẽ được các kết quả:

    • T1 = 1
    • T2 = 1 + 2 
    • T3 = 1 + 2 + 3

    => Cần cộng bao nhiêu số tự nhiên đầu tiên để ta nhận được tổng Tn nhỏ nhất lớn hơn 1000?

    - Phân tích bài toán:

       n   

     Tổng Tn

     Điều kiện Tn ≤ 1000

    1

    Tn = 1

    Đúng

    2

    Tn = 1 + 2

    Đúng

    3

    Tn = 1 + 2 + 3

    Đúng

    ...

    ...

    Đúng

    ?

     Tn = 1 + 2 + 3 + ... + ?

    Sao cho Tn nhỏ nhất >1000 

     Sai,

    Kết thúc việc tính tổng. 

    - Mô tả thuật toán: Kí hiệu S là tổng cần tìm và ta có thuật toán như sau:

    • Bước 1. S \[\leftarrow\] 0, n \[\leftarrow\] 0.
    • Bước 2. Nếu S ≤ 1000, n \[\leftarrow\] n + 1; ngược lại chuyển tới bước 4.
    • Bước 3. S \[\leftarrow\] S + n và quay lại bước 2.
    • Bước 4. In kết quả: S và n là số tự nhiên nhỏ nhất sao cho S > 1000. Kết thúc thuật toán.

    - Ta có sơ đồ khối :

    - Nhận xét: Để viết chương trình chỉ dẫn máy tính thực hiện các hoạt động lặp như trong các ví dụ trên, ta có thể sử dụng câu lệnh có dạng lặp với số lần chưa biết trước.

    2. Ví dụ về lệnh lặp với số lần chưa biết trước

    - Trong Pascal câu lệnh lặp với số lần chưa biết trước có dạng:

    while do ;

    - Trong đó:

    • Điều kiện thường là một phép so sánh;
    • Câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép.

    - Câu lệnh lặp này được thực hiện như sau:

    • Bước 1: Kiểm tra điều kiện.
    • Bước 2: Nếu điều kiện SAI, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp kết thúc. Nếu điều kiện đúng, thực hiện câu lệnh và quay lại bước 1.

    Ví dụ 3: 

    While ab’];

         a:=a-1;

    End;

    - Trong đó:

    • while, do là các từ khóa.
    • Điều kiện lặp là a > b [chứa phép so sánh].
    • Câu lệnh là Write[‘a>b’] và a:=a-1 [câu lệnh ghép]. 

    Ví dụ 5:

    - Yêu cầu: Dùng câu lệnh lặp While … Do để viết chương trình thể hiện thuật toán trong Ví dụ 2

    var S,n: integer;

    Begin

         S:=0;

         n:=0;

         while S1000’];

         Readln;

    End.

    Ví dụ 6:

    - Yêu cầu: Với giá trị nào của n [n>0] thì \[\frac{1}{n}\] nhỏ hơn 1 sai số cho trước ví dụ: \[\frac{1}{n}< 0,005\] hoặc  \[\frac{1}{n}< 0,003\]?

    uses crt;

    var x: real; n: integer;

    const sai_so=0.003;

    begin

         clrscr;

         x:=1; n:=1;

         while x>=sai_so do

         begin

              n:=n+1;

              x:=1/n; 

         end;

         writeln['So n nho nhat de 1/n < ',sai_so:5:4, 'la ',n];

         readln;

    end.

    3. Lặp vô hạn lần – Lỗi lập trình cần tránh

    - Khi viết chương trình sử dụng cấu trúc lặp cần chú ý tránh tạo nên vòng lặp không bao giờ kết thúc.

    - Ví dụ 1 chương trình lặp vô hạn như sau:

    var a:integer;

    begin

         a:=5;

         while a

    Chủ Đề