Tin học 11 Bài 10: Cấu trúc lặp

Tin học 11 Bài 10: Cấu trúc lặp

Cấu trúc lặp

Video Cấu trúc lặp
Trong đó a là một số nguyên, a > 2. Xem xét các câu hỏi sau:

Câu 1.Kết quả tính toán xuất ra màn hình tổng

Bạn Đang Xem: Tin học 11 Bài 10: Cấu trúc lặp

\(s= \frac{1}{a}+\frac{1}{a+1}+\frac{1}{a+2}+…+\frac{ 1}{a+100}\)

Câu 2.Kết quả tính toán xuất ra màn hình tổng

\(s= \frac{1}{a}+\frac{1}{a+1}+\frac{1}{a+2}+…+\frac{ 1}{a+n}+…\)

Cho đến \(\frac{1}{a+n}< 0,0001.\)

Nhận xét:

  • Đối với hai bài toán này, dễ dàng nhận thấy có nhiều điểm giống nhau trong cách tính tổng s:
    • Bắt đầu, s được gán giá trị \(\frac{1} { a } \);
    • Tiếp theo, thêm một giá trị vào tổng s \(\frac{1}{a+n}\) trong đó n = 1, 2, 3, 4, 5,…
    • Lặp lại để thêm nhiều lần.
        • Đối với bài toán 1, số lần lặp là 100 và phép cộng s kết thúc sau 100 phép cộng.
        • Đối với bài toán 2, số lần lặp không xác định, nhưng khi đáp ứng điều kiện \(\frac{1}{a+n}<0.0001\) thì phép cộng s kết thúc. Thỏa mãn.

      Tóm tắt:

          • Trong một số thuật toán, một số thao tác phải được lặp đi lặp lại nhiều lần. Một trong những điểm nổi bật của máy tính là khả năng thực hiện hiệu quả các hoạt động lặp đi lặp lại.
          • Cấu trúc lặp mô tả hoạt động lặp, được chia thành hai loại, lặp lại một số lần đã biếtlặp lại một số lần không xác định /mạnh>.
          • Ngôn ngữ lập trình có câu lệnh mô tả cấu trúc điều khiển vòng lặp.

      Có hai thuật toán tong_1atong_1b để giải bài toán 1 như sau:

      Thuật toán tong_1a:

          • Bước 1. s \(\leftarrow\) 1/a;n \(\leftarrow\) 0; {Khởi tạo s và n} li>
          • Bước 2. n \(\leftarrow\) n + 1;
          • bước 3 nếu n >; 100 thì chuyển sang bước 5;
          • Bước 4. s \(\leftarrow\) s + 1/(a + n) và quay lại Bước 2;
          • Bước 5 Đưa s ra màn hình và bạn đã hoàn tất.
          • Thuật toán tong_1b:
            • Bước 1. s \(\leftarrow\) 1/a;n \(\leftarrow\) 101; {Khởi tạo s và n} li>
            • Bước 2. n \(\leftarrow\) n – 1;
            • Bước 3 Nếu n <; 1 thì chuyển sang Bước 5;
            • Bước 4. s \(\leftarrow\) s + 1/(a + n) và quay lại Bước 2;
            • Bước 5. Đưa s lên màn hình là xong.
            • Một số lưu ý:
              • Số lần lặp cho cả hai thuật toán đều biết trước và bằng nhau (100).
              • Trong thuật toán tong_1a, giá trị của n khi bắt đầu kết nối vòng lặp là 1, n tăng thêm 1 sau mỗi lần lặp, cho đến khi n>; 100 (n = 101) và sau đó là vòng lặp kết thúc (hoàn thành 100 lần )\(\rightarrow\) Phép lặp trong thuật toán tong_1achuyển tiếp.
              • Trong thuật toán tong_1b, giá trị của n ở đầu vòng lặp là 100 và n giảm dần 1 sau mỗi lần lặp cho đến khi n <; 1 (n = 0) thì kết thúc vòng lặp (thực hiện 100 lần) Các lần lặp trong thuật toán \(\rightarrow\) tong_1b ở dạng lùi.

                A. Cấu trúc lặp với số lần biết trước

                Để mô tả một cấu trúc lặp với số lần biết trước, pascal sử dụng câu lệnh for-do có 2 dạng tiến và lùi như sau:

                  • Lặp lại:

                cho <biến bộ đếm> := đến giá trị cuối cùng> làm<lệnh> ;

                cho <biến bộ đếm> := sâu làm lệnh>;

                Vị trí:

                    • biến đếm là một biến đơn, thường có kiểu số nguyên.
                    • giá trị đầugiá trị cuối là các biểu thức cùng loại với bộ đếm và giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối. Nếu giá trị đầu lớn hơn giá trị cuối thì vòng lặp không được thực hiện.
                    • Hoạt động của lệnh for-do:
                        • Trong lặp đi lặp lại, thực hiện tuần tự câu lệnh được viết sau từ khóa do và bộ đếm biến nhận Giá trị từ đầu đến cuối.
                        • Trong Lặp ngược, hãy thực hiện các câu lệnh sau từ khóa do theo tuần tự và giá trị của biến bộ đếm là từ giá trị cuối cùng đến giá trị cao nhất.

                      Lưu ý 1:Giá trị của biến đếm được tự động điều chỉnh nên câu lệnh viết sau do sẽ không thay đổi biến đếm .

                      b. Một số ví dụ minh họa

                      Ví dụ 1. Dưới đây là hai chương trình triển khai thuật toán tong_1a tong_1b.

                      Chương trình cài đặt thuật toán tong_1a:

                      Chương trình tong_1a;

                      sử dụng crt;

                      var s: đúng;

                      Xem Thêm : Affinity Designer VS Illustrator: Đây là nơi họ khác nhau

                      a, n: số nguyên;

                      Bắt đầu

                      clrscr;

                      Viết(‘hoặc nhập giá trị!’);

                      Đọc (1);

                      s:=1.0/a; {buc 1}

                      For n:= 1 to 100 do block 2, block 3

                      s:= s+1.0/(a+n); {buc 4}

                      writeln(‘tong s la: ‘, s:8:4); {buc 5}

                      Đọc

                      Kết thúc.

                      Chương trình cài đặt thuật toán tong_1b:

                      Chương trình tong_1b;

                      sử dụng crt;

                      var s: đúng;

                      Xem Thêm : Affinity Designer VS Illustrator: Đây là nơi họ khác nhau

                      a, n: số nguyên;

                      Bắt đầu

                      clrscr;

                      Viết(‘hoặc nhập giá trị!’);

                      Đọc (1);

                      s:=1.0/a; {buc 1}

                      for n:= 100 downto 1 by {first 2 and 3rd}

                      s:= s+1.0/(a+n); {buc 4}

                      writeln(‘tong s la: ‘, s:8:4); {buc 5}

                      Đọc

                      Kết thúc.

                      Ví dụ 2. Chương trình sau thực hiện nhập bàn phím hai số nguyên dương m và n (m < n), tính và hiển thị tổng các số chia hết cho 3 hoặc 5 trong khoảng từ m đến n .

                      Trình cài đặt:

                      Xem Thêm: Kịch bản chương trình lễ bế giảng năm học 2021 – 2022 7 Mẫu chương trình tổ chức lễ tổng kết cuối năm học

                      Chương trình vi_du_2;

                      sử dụng crt;

                      var m, n, i: số nguyên;

                      t: số nguyên dài;

                      Bắt đầu

                      clrscr;

                      writeln(‘nhap nhỏ hơn n’);

                      ghi(‘m = ‘);đọc(m);

                      ghi(‘n = ‘);đọc(n);

                      t:= 0;

                      Cho i:= m to n do

                      Nếu (i mod 3 = 0) hoặc (i mod 5 = 0) thì

                      t:=t+i;

                      writeln(‘qua: ‘, t);

                      Đọc

                      Kết thúc.

                      thuật toán tong_2:

                        • Bước 1. s \(\leftarrow\) 1/a;n \(\leftarrow\) 0; {Khởi tạo s và n} li>
                        • Bước 2. Nếu 1/(a + n) <; 0,0001 thì chuyển sang bước 5;
                        • Bước 3. n \(\leftarrow\) n + 1;
                        • Bước 4. s \(\leftarrow\) s + 1/(a + n) và quay lại Bước 2.
                        • Bước 5. Đưa s ra màn hình là xong
                        • Do đó, một số lần lặp không xác định sẽ chỉ kết thúc nếu điều kiện đã cho được đáp ứng.

                          A. Cấu trúc lặp không xác định

                          Để mô tả một cấu trúc lặp như vậy, Pascal sử dụng một câu lệnh có dạng while-do:

                          Đồng thời<;điều kiện> làm ra lệnh >;

                          Ở đâu:

                            • Điều kiện là quan hệ hoặc biểu thức logic;
                            • lệnh là một câu lệnh pascal.

                          Quá trình thực thi lệnh while-do được thể hiện trong Hình 1 bên dưới:

                          Hình 1. Biểu đồ lặp với số lần lặp không xác định

                          b. Một số ví dụ minh họa

                          Xem Thêm : Giả mã ý nghĩa tên Ngọc Hân là gì, mệnh gì, số phận ra sao?

                          Ví dụ 3. Dưới đây là chương trình cài đặt thuật toán tong_2.

                          Hình 2. Sơ đồ khối của thuật toán tong_2

                          Chương trình tong_2;

                          sử dụng crt;

                          var s: đúng;

                          Xem Thêm : Affinity Designer VS Illustrator: Đây là nơi họ khác nhau

                          a, n: số nguyên;

                          Bắt đầu

                          Viết(‘hoặc nhập giá trị!’);

                          Đọc (1);

                          s:= 1.0/a; n:= 0; {buc 1}

                          Mặc dù không (1/(a+n)<0.0001) {buoc 2}

                          Xem Thêm: Top 4 bài Phân tích hình tượng Đan Thiềm trong Vĩnh biệt Cửu trùng

                          Bắt đầu

                          n:= n+1; {buc 3}

                          s:= s+1.0/(a+n); {buc 4}

                          Kết thúc;

                          writeln(‘tong s la: ‘, s: 8: 4); {buc 5}

                          Đọc

                          Kết thúc.

                          Ví dụ 4. Tìm ước chung lớn nhất (ucln) của hai số nguyên dương m và n.

                          Ước chung lớn nhất:

                              • Bước 1. Nhập m, n;
                              • bước 2. Nếu m = n, lấy giá trị chung này là ucln rồi chuyển sang bước 5;
                              • Bước 3nếu m >; n thì m \(\leftarrow\) m – n rồi quay lại bước 2;
                              • Bước 4. n \(\leftarrow\) n – m và quay lại Bước 2;
                              • Bước 5. Đưa ra kết quả ucln và kết thúc.

                          Hình 3. Sơ đồ khối của thuật toán tìm ước chung lớn nhất

                          Chương trình sau minh họa thuật toán tìm ước chung lớn nhất:

                          Chương trình ucln;

                          sử dụng crt;

                          var m,n: số nguyên;

                          Bắt đầu

                          clrscr;

                          ghi(‘m, n = ‘);

                          Đọc ln(m,n);

                          trong khi m ;làm

                          if m > n then m:= m-n other n:= n-m;

                          writeln(‘ucln = ‘, m);

                          Đọc

                          Kết thúc.

                          Lưu ý 2: Các câu lệnh trong vòng lặp thường được lặp đi lặp lại nhiều lần, vì vậy để nâng cao hiệu quả của chương trình, bạn nên thực hiện các thao tác không cần thiết được lặp lại để nhảy ra khỏi vòng lặp.

Nguồn: https://anhvufood.vn
Danh mục: Giáo Dục