SlideShare a Scribd company logo
1 of 29
Download to read offline
Trường Đại học Khoa học Tự nhiên
Khoa Công nghệ thông tin
Bộ môn Công nghệ phần mềm


       NHẬP MÔN LẬP TRÌNH
                                   ThS. Đặng Bình Phương
                                    dbphuong@fit.hcmus.edu.vn




                                    CÂU LỆNH LẶP




                                                                1
&
VC
     BB
          Nội dung


               1     Câu lệnh for


               2     Câu lệnh while


               3     Câu lệnh do… while


               4     Một số kinh nghiệm lập trình




                                                    Câu lệnh lặp
                                                                   2
&
VC
     BB
          Đặt vấn đề

     Ví dụ
       Viết chương trình xuất các số từ 1 đến 10
         => Sử dụng 10 câu lệnh printf
       Viết chương trình xuất các số từ 1 đến 1000
         => Sử dụng 1000 câu lệnh printf !
     Giải pháp
       Sử dụng cấu trúc lặp lại một hành động trong
         khi còn thỏa một điều kiện nào đó.
       3 lệnh lặp: for, while, do… while

                                            Câu lệnh lặp
                                                           3
&
VC
     BB
          Câu lệnh for


               <Khởi đầu>

                                 <Bước nhảy>


                             Đ
                <Đ/K lặp>          <Lệnh>


                  S


for (<Khởi đầu>; <Đ/K lặp>; <Bước nhảy>)
     <Lệnh>; <Khởi đầu>, <Đ/K lặp>, <Bước nhảy>:
                 là biểu thức C bất kỳ có chức năng riêng
                 <Lệnh>: đơn hoặc khối lệnh.
                                                   Câu lệnh lặp
                                                                  4
&
VC
     BB
              Câu lệnh for

          void main()
          {
                 int i;
                 for (i = 0; i < 10; i++)
                        printf(“%dn”, i);

                for (int j = 0; j < 10; j = j + 1)
                       printf(“%dn”, j);

                for (int k = 0; k < 10; k += 2)
                {
                       printf(“%d”, k);
                       printf(“n”);
                }
          }

                                                     Câu lệnh lặp
                                                                    5
&
VC
     BB
            Câu lệnh for - Một số lưu ý

     Câu lệnh for là một câu lệnh đơn và có thể lồng
      nhau.
          if (n < 10 && m < 20)
          {
                 for (int i = 0; i < n; i++)
                 {
                        for (int j = 0; j < m; j++)
                        {
                               printf(“%d”, i + j);
                               printf(“n”);
                        }
                 }
          }


                                                      Câu lệnh lặp
                                                                     6
&
VC
     BB
            Câu lệnh for - Một số lưu ý

     Trong câu lệnh for, có thể sẽ không có phần
      <Khởi đầu>
          int i;
          for (i = 0; i < 10; i++)
                 printf(“%dn”, i);   <Khởi đầu>

                                                   <Bước nhảy>
          int i = 0;
          for (; i < 10; i++)
                 printf(“%dn”, i);                Đ
                                      <Đ/K lặp>           <Lệnh>

                                        S




                                                       Câu lệnh lặp
                                                                      7
&
VC
     BB
            Câu lệnh for - Một số lưu ý

     Trong câu lệnh for, có thể sẽ không có phần
      <Bước nhảy>
          int i;
          for (i = 0; i < 10; i++)
                 printf(“%dn”, i);   <Khởi đầu>

                                                   <Bước nhảy>
          for (i = 0; i < 10; )
          {
                 printf(“%dn”, i);                Đ
                                      <Đ/K lặp>           <Lệnh>
                 i++;
          }
                                         S




                                                       Câu lệnh lặp
                                                                      8
&
VC
     BB
            Câu lệnh for - Một số lưu ý

     Trong câu lệnh for, có thể sẽ không có phần
      <Đ/K lặp>
          int i;
          for (i = 0; i < 10; i++)
                 printf(“%dn”, i);

          for (i = 0; ; i++)
                 printf(“%dn”, i);

          for (i = 0; ; i++)
          {
                 if (i >= 10)
                        break;
                 printf(“%dn”, i);
          }                                                 9
                                             Câu lệnh lặp
&
VC
     BB
            Câu lệnh for - Một số lưu ý

     Lệnh break làm kết thúc câu lệnh.
     Lệnh continue bỏ qua lần lặp hiện tại.
          for (i = 0; i < 10; i++)
          {
                 if (i % 2 == 0)
                        break;
                 printf(“%dn”, i);
          }

          for (i = 0; i < 10; i++)
          {
                 if (i % 2 == 0)
                        continue;
                 printf(“%dn”, i);
          }                                                   10
                                               Câu lệnh lặp
&
VC
     BB
            Câu lệnh for - Một số lưu ý

     Không được thêm ; ngay sau lệnh lệnh for.
      => Tương đương câu lệnh rỗng.
          for (i = 0; i < 10; i++);
          {
                 printf(“%d”, i);
                 printf(“n”);
          }

          for (i = 0; i < 10; i++)
          {
          };
          {
                 printf(“%d”, i);
                 printf(“n”);
          }                                                11
                                            Câu lệnh lặp
&
VC
     BB
            Câu lệnh for - Một số lưu ý

     Các thành phần <Khởi đầu>, <Đ/K lặp>,
      <Bước nhảy> cách nhau bằng dấu ;
     Nếu có nhiều thành phần trong mỗi phần thì
      được cách nhau bằng dấu ,
          for (int i = 1, j = 2; i + j < 10; i++, j += 2)
                 printf(“%dn”, i + j);




                                                       Câu lệnh lặp
                                                                      12
&
VC
     BB
            Câu lệnh while



                      Đ
          <Đ/K lặp>       <Lệnh>

            S                      Biểu thức C bất kỳ,
                                   thường là biểu thức
                                   quan hệ cho kết quả
                                   0 (sai) và != 0 (đúng)
     while (<Đ/K lặp>)
         <Lệnh>;
                                   Câu lệnh đơn hoặc
                                   Câu lệnh phức (kẹp
                                   giữa { và })


                                                     Câu lệnh lặp
                                                                    13
&
VC
     BB
            Câu lệnh while

          int i = 0;
          while (i < 10)
          {
                 printf(“%dn”, i);
                 i++;
          }

          for (int i = 0; i < 10; i++)
                 printf(“%dn”, i);

          int i = 0;
          for (; i < 10; )
          {
                 printf(“%dn”, i);
                 i++;
          }
                                         Câu lệnh lặp
                                                        14
&
VC
     BB
            Câu lệnh while - Một số lưu ý

     Câu lệnh while là một câu lệnh đơn và có thể
      lồng nhau.
          if (n < 10 && m < 20)
          {
                 while (n >= 1)
                 {
                        while (m >= 1)
                        {
                               printf(“%dn”, m);
                               m--;
                        }
                        n--;
                 }
          }
                                                    Câu lệnh lặp
                                                                   15
&
VC
     BB
            Câu lệnh while - Một số lưu ý

     Câu lệnh while có thể không thực hiện lần nào
      do điều kiện lặp ngay từ lần đầu đã không thỏa.
          void main()
          {
                 int n = 1;
                 while (n > 10)
                 {
                        printf(“%dn”, n);
                        n--;
                 }
                 …
          }



                                             Câu lệnh lặp
                                                            16
&
VC
     BB
            Câu lệnh for - Một số lưu ý

     Không được thêm ; ngay sau lệnh lệnh while.
          int n = 0;
          while (n < 10);
          {
                 printf(“%dn”, n);
                 n++;
          }

          while (n < 10)
          {
          };
          {
                 printf(“%dn”, n);
                 n++;
          }
                                            Câu lệnh lặp
                                                           17
&
VC
     BB
              Câu lệnh while - Một số lưu ý

     Câu lệnh while có thể bị lặp vô tận (loop)
          void main()
          {
                 int n = 1;
                 while (n < 10)
                 {
                        printf(“%dn”, n);
                        n--;
                 }

                n = 1;
                while (n < 10)
                       printf(“%dn”, n);
          }
                                               Câu lệnh lặp
                                                              18
&
VC
     BB
            Câu lệnh do… while


           <Lệnh>


                      Đ
          <Đ/K lặp>

            S               Câu lệnh đơn hoặc
                            Câu lệnh phức (kẹp
     do                     giữa { và })

         <Lệnh>;
                            Biểu thức C bất kỳ,
     while (<Đ/K lặp>);     thường là biểu thức
                            quan hệ cho kết quả
                            0 (sai) và != 0 (đúng)
                                              Câu lệnh lặp
                                                             19
&
VC
     BB
            Câu lệnh do… while

          int i = 0;
          do
          {
                 printf(“%dn”, i);
                 i++;
          }
          while (i < 10);

          int i = 0;
          printf(“%dn”, i);
          i++;
          for (; i < 10; )
          {
                 printf(“%dn”, i);
                 i++;
          }
                                      Câu lệnh lặp
                                                     20
&
VC
     BB
            Câu lệnh do… while - Một số lưu ý

     Câu lệnh do… while là một câu lệnh đơn và có
      thể lồng nhau.
          int a = 1, b;
          do
          {
                 b = 1;
                 do
                 {
                          printf(“%dn”, a + b);
                          b = b + 2;
                }
                while (b < 20);
                a++;
          }
          while (a < 20);                                         21
                                                   Câu lệnh lặp
&
VC
     BB
              Câu lệnh do… while - Một số lưu ý

     Câu lệnh do… while sẽ được thực hiện ít nhất 1
      lần do điều kiện lặp được kiểm tra ở cuối.
          void main()
          {
                 int n;
                 do
                 {
                          printf(“Nhap n: ”);
                          scanf(“%d”, &n);
                }
                while (n < 1 || n > 100);
          }



                                                Câu lệnh lặp
                                                               22
&
VC
     BB
              Câu lệnh do… while - Một số lưu ý

     Câu lệnh do… while có thể bị lặp vô tận (loop)
          …
                int n = 1;
                do
                {
                       printf(“%dn”, n);
                       n--;
                }
                while (n < 10);

                n = 1;
                do
                       printf(“%dn”, n);
                while (n < 10);
          …                                                  23
                                              Câu lệnh lặp
&
VC
     BB
          for, while, do… while

     Đều có khả năng lặp lại nhiều hành động.
             int n = 10;
             for (int i = 1; i <= n; i++)
                    printf(“%dn”, i);

             int i = 1;
             while (i <= n)
             {
                    printf(“%dn”, i); i++;
             }

             int i = 1;
             do {
                    printf(“%dn”, i); i++;
             } while (i < n);                                24
                                              Câu lệnh lặp
&
VC
     BB
          for, while, do… while

     Số lần lặp xác định ngay trong câu lệnh for
             int n = 10;
             for (int i = 1; i <= n; i++)
                    …;

             int i = 1;
             while (i <= n)
             {
                    …;
             }

             int i = 1;
             do {
                    …;
             } while (i > n);                                25
                                              Câu lệnh lặp
&
VC
     BB
            while & do… while

     while có thể không thực hiện lần nào.
     do… while sẽ được thực hiện ít nhất 1 lần.
          int n = 100;
          while (n < 10)
          {
                 …;
          }
          …
          do
          {
                 printf(“Nhap n: ”);
                 scanf(“%d”, &n);
          }
          while (n > 10);
                                             Câu lệnh lặp
                                                            26
&
VC
     BB
          Bài tập

     1. Nhập một số nguyên dương n (n > 0).
        Hãy cho biết:
       a. Có phải là số đối xứng? Ví dụ: 121, 12321, …
       b. Có phải là số chính phương? Ví dụ: 4, 9, 16, …
       c. Có phải là số nguyên tố? Ví dụ: 2, 3, 5, 7, …
       d. Chữ số lớn nhất và nhỏ nhất?
       e. Các chữ số có tăng dần hay giảm dần không?



                                                Câu lệnh lặp
                                                               27
&
VC
     BB
          Bài tập

     2. Nhập một số nguyên dương n. Tính:
        a. S = 1 + 2 + … + n
        b. S = 12 + 22 + … + n2
        c. S = 1 + 1/2 + … + 1/n
        d. S = 1*2*…*n = n!
        e. S = 1! + 2! + … + n!
     3. Nhập 3 số nguyên a, b và n với a, b < n. Tính tổng
         các số nguyên dương nhỏ hơn n chia hết cho a
         nhưng không chia hết cho b.
     4. Tính tổng các số nguyên tố nhỏ hơn n (0 < n < 50)
                                                 Câu lệnh lặp
                                                                28
&
VC
     BB
          Bài tập

     5. Nhập một số nguyên dương n. Xuất ra số ngược
         lại. Ví dụ: Nhập 1706  Xuất 6071.
     6. Tìm và in lên màn hình tất cả các số nguyên trong
         phạm vi từ 10 đến 99 sao cho tích của 2 chữ số
         bằng 2 lần tổng của 2 chữ số đó.
     7. Tìm ước số chung lớn nhất của 2 số nguyên
         dương a và b nhập từ bàn phím.
     8. Nhập n. In n số đầu tiên trong dãy Fibonacy.
        a. a0 = a1 = 1
        b. an = an – 1 + an – 2
                                                 Câu lệnh lặp
                                                                29

More Related Content

What's hot

Các cấu trúc lệnh trong C
Các cấu trúc lệnh trong CCác cấu trúc lệnh trong C
Các cấu trúc lệnh trong Cpnanhvn
 
Phần 1: Các khái niệm cơ bản về lập trình
Phần 1: Các khái niệm cơ bản về lập trìnhPhần 1: Các khái niệm cơ bản về lập trình
Phần 1: Các khái niệm cơ bản về lập trìnhHuy Rùa
 
Phần 10: Dữ liệu kiểu cấu trúc
Phần 10: Dữ liệu kiểu cấu trúcPhần 10: Dữ liệu kiểu cấu trúc
Phần 10: Dữ liệu kiểu cấu trúcHuy Rùa
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Thanh Giảng Lê
 
Sổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ CSổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ Cvncoding
 
Nmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinhNmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinhMinh Ngoc Tran
 
Phong cách lập trình - Đặng Bình Phương
Phong cách lập trình - Đặng Bình PhươngPhong cách lập trình - Đặng Bình Phương
Phong cách lập trình - Đặng Bình PhươngNguyễn Công Hoàng
 
Ngân hàng câu hỏi kiến trúc máy tính
Ngân hàng câu hỏi kiến trúc máy tínhNgân hàng câu hỏi kiến trúc máy tính
Ngân hàng câu hỏi kiến trúc máy tínhCao Toa
 
Bai tap lap trinh c
Bai tap lap trinh  cBai tap lap trinh  c
Bai tap lap trinh ctiểu minh
 
Giáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việtGiáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việtMôi Trường Việt
 
Nmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanhNmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanhMinh Ngoc Tran
 
Nmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucosoNmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucosoMinh Ngoc Tran
 
Bài tập thực hành số 1
Bài tập thực hành số 1Bài tập thực hành số 1
Bài tập thực hành số 1Tran Trung Dung
 
Phần 12: Hàm (Nâng cao)
Phần 12: Hàm (Nâng cao)Phần 12: Hàm (Nâng cao)
Phần 12: Hàm (Nâng cao)Huy Rùa
 
Trigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL ServerTrigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL ServerNguyễn Phúc
 
Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02Nhóc Nhóc
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Minh Ngoc Tran
 
Vnmath.com -dirichlet-giai-toan-so-cap
Vnmath.com -dirichlet-giai-toan-so-capVnmath.com -dirichlet-giai-toan-so-cap
Vnmath.com -dirichlet-giai-toan-so-capcunbeo
 

What's hot (20)

Các cấu trúc lệnh trong C
Các cấu trúc lệnh trong CCác cấu trúc lệnh trong C
Các cấu trúc lệnh trong C
 
Phần 1: Các khái niệm cơ bản về lập trình
Phần 1: Các khái niệm cơ bản về lập trìnhPhần 1: Các khái niệm cơ bản về lập trình
Phần 1: Các khái niệm cơ bản về lập trình
 
Phần 10: Dữ liệu kiểu cấu trúc
Phần 10: Dữ liệu kiểu cấu trúcPhần 10: Dữ liệu kiểu cấu trúc
Phần 10: Dữ liệu kiểu cấu trúc
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
 
Sổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ CSổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ C
 
Nmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinhNmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinh
 
Nmlt c06 ham
Nmlt c06 hamNmlt c06 ham
Nmlt c06 ham
 
Phong cách lập trình - Đặng Bình Phương
Phong cách lập trình - Đặng Bình PhươngPhong cách lập trình - Đặng Bình Phương
Phong cách lập trình - Đặng Bình Phương
 
Ngân hàng câu hỏi kiến trúc máy tính
Ngân hàng câu hỏi kiến trúc máy tínhNgân hàng câu hỏi kiến trúc máy tính
Ngân hàng câu hỏi kiến trúc máy tính
 
Bai tap lap trinh c
Bai tap lap trinh  cBai tap lap trinh  c
Bai tap lap trinh c
 
Giáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việtGiáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việt
 
Nmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanhNmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanh
 
Nmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucosoNmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucoso
 
Bài tập thực hành số 1
Bài tập thực hành số 1Bài tập thực hành số 1
Bài tập thực hành số 1
 
Đệ Quy, Quay Lui, Nhánh Cận
Đệ Quy, Quay Lui, Nhánh CậnĐệ Quy, Quay Lui, Nhánh Cận
Đệ Quy, Quay Lui, Nhánh Cận
 
Phần 12: Hàm (Nâng cao)
Phần 12: Hàm (Nâng cao)Phần 12: Hàm (Nâng cao)
Phần 12: Hàm (Nâng cao)
 
Trigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL ServerTrigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL Server
 
Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2
 
Vnmath.com -dirichlet-giai-toan-so-cap
Vnmath.com -dirichlet-giai-toan-so-capVnmath.com -dirichlet-giai-toan-so-cap
Vnmath.com -dirichlet-giai-toan-so-cap
 

Similar to Phần 5: Câu lệnh lặp

Nmlt c05 cau_lenhlap_in
Nmlt c05 cau_lenhlap_inNmlt c05 cau_lenhlap_in
Nmlt c05 cau_lenhlap_inHuy Nguyễn
 
Nmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapNmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapCuong
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiTrung Thanh Nguyen
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Congdat Le
 
Lập trình C cơ bản cho vi điều khiển
Lập trình C cơ bản cho vi điều khiểnLập trình C cơ bản cho vi điều khiển
Lập trình C cơ bản cho vi điều khiểnMr Giap
 
chapter2.4.Basic.statements.2.pdf
chapter2.4.Basic.statements.2.pdfchapter2.4.Basic.statements.2.pdf
chapter2.4.Basic.statements.2.pdfNguyenDiem50
 

Similar to Phần 5: Câu lệnh lặp (8)

Nmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlapNmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlap
 
Nmlt c05 cau_lenhlap_in
Nmlt c05 cau_lenhlap_inNmlt c05 cau_lenhlap_in
Nmlt c05 cau_lenhlap_in
 
Nmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapNmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh Lap
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++
 
Lập trình C cơ bản cho vi điều khiển
Lập trình C cơ bản cho vi điều khiểnLập trình C cơ bản cho vi điều khiển
Lập trình C cơ bản cho vi điều khiển
 
chapter2.4.Basic.statements.2.pdf
chapter2.4.Basic.statements.2.pdfchapter2.4.Basic.statements.2.pdf
chapter2.4.Basic.statements.2.pdf
 

Phần 5: Câu lệnh lặp

  • 1. Trường Đại học Khoa học Tự nhiên Khoa Công nghệ thông tin Bộ môn Công nghệ phần mềm NHẬP MÔN LẬP TRÌNH ThS. Đặng Bình Phương dbphuong@fit.hcmus.edu.vn CÂU LỆNH LẶP 1
  • 2. & VC BB Nội dung 1 Câu lệnh for 2 Câu lệnh while 3 Câu lệnh do… while 4 Một số kinh nghiệm lập trình Câu lệnh lặp 2
  • 3. & VC BB Đặt vấn đề Ví dụ  Viết chương trình xuất các số từ 1 đến 10 => Sử dụng 10 câu lệnh printf  Viết chương trình xuất các số từ 1 đến 1000 => Sử dụng 1000 câu lệnh printf ! Giải pháp  Sử dụng cấu trúc lặp lại một hành động trong khi còn thỏa một điều kiện nào đó.  3 lệnh lặp: for, while, do… while Câu lệnh lặp 3
  • 4. & VC BB Câu lệnh for <Khởi đầu> <Bước nhảy> Đ <Đ/K lặp> <Lệnh> S for (<Khởi đầu>; <Đ/K lặp>; <Bước nhảy>) <Lệnh>; <Khởi đầu>, <Đ/K lặp>, <Bước nhảy>: là biểu thức C bất kỳ có chức năng riêng <Lệnh>: đơn hoặc khối lệnh. Câu lệnh lặp 4
  • 5. & VC BB Câu lệnh for void main() { int i; for (i = 0; i < 10; i++) printf(“%dn”, i); for (int j = 0; j < 10; j = j + 1) printf(“%dn”, j); for (int k = 0; k < 10; k += 2) { printf(“%d”, k); printf(“n”); } } Câu lệnh lặp 5
  • 6. & VC BB Câu lệnh for - Một số lưu ý Câu lệnh for là một câu lệnh đơn và có thể lồng nhau. if (n < 10 && m < 20) { for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { printf(“%d”, i + j); printf(“n”); } } } Câu lệnh lặp 6
  • 7. & VC BB Câu lệnh for - Một số lưu ý Trong câu lệnh for, có thể sẽ không có phần <Khởi đầu> int i; for (i = 0; i < 10; i++) printf(“%dn”, i); <Khởi đầu> <Bước nhảy> int i = 0; for (; i < 10; i++) printf(“%dn”, i); Đ <Đ/K lặp> <Lệnh> S Câu lệnh lặp 7
  • 8. & VC BB Câu lệnh for - Một số lưu ý Trong câu lệnh for, có thể sẽ không có phần <Bước nhảy> int i; for (i = 0; i < 10; i++) printf(“%dn”, i); <Khởi đầu> <Bước nhảy> for (i = 0; i < 10; ) { printf(“%dn”, i); Đ <Đ/K lặp> <Lệnh> i++; } S Câu lệnh lặp 8
  • 9. & VC BB Câu lệnh for - Một số lưu ý Trong câu lệnh for, có thể sẽ không có phần <Đ/K lặp> int i; for (i = 0; i < 10; i++) printf(“%dn”, i); for (i = 0; ; i++) printf(“%dn”, i); for (i = 0; ; i++) { if (i >= 10) break; printf(“%dn”, i); } 9 Câu lệnh lặp
  • 10. & VC BB Câu lệnh for - Một số lưu ý Lệnh break làm kết thúc câu lệnh. Lệnh continue bỏ qua lần lặp hiện tại. for (i = 0; i < 10; i++) { if (i % 2 == 0) break; printf(“%dn”, i); } for (i = 0; i < 10; i++) { if (i % 2 == 0) continue; printf(“%dn”, i); } 10 Câu lệnh lặp
  • 11. & VC BB Câu lệnh for - Một số lưu ý Không được thêm ; ngay sau lệnh lệnh for. => Tương đương câu lệnh rỗng. for (i = 0; i < 10; i++); { printf(“%d”, i); printf(“n”); } for (i = 0; i < 10; i++) { }; { printf(“%d”, i); printf(“n”); } 11 Câu lệnh lặp
  • 12. & VC BB Câu lệnh for - Một số lưu ý Các thành phần <Khởi đầu>, <Đ/K lặp>, <Bước nhảy> cách nhau bằng dấu ; Nếu có nhiều thành phần trong mỗi phần thì được cách nhau bằng dấu , for (int i = 1, j = 2; i + j < 10; i++, j += 2) printf(“%dn”, i + j); Câu lệnh lặp 12
  • 13. & VC BB Câu lệnh while Đ <Đ/K lặp> <Lệnh> S Biểu thức C bất kỳ, thường là biểu thức quan hệ cho kết quả 0 (sai) và != 0 (đúng) while (<Đ/K lặp>) <Lệnh>; Câu lệnh đơn hoặc Câu lệnh phức (kẹp giữa { và }) Câu lệnh lặp 13
  • 14. & VC BB Câu lệnh while int i = 0; while (i < 10) { printf(“%dn”, i); i++; } for (int i = 0; i < 10; i++) printf(“%dn”, i); int i = 0; for (; i < 10; ) { printf(“%dn”, i); i++; } Câu lệnh lặp 14
  • 15. & VC BB Câu lệnh while - Một số lưu ý Câu lệnh while là một câu lệnh đơn và có thể lồng nhau. if (n < 10 && m < 20) { while (n >= 1) { while (m >= 1) { printf(“%dn”, m); m--; } n--; } } Câu lệnh lặp 15
  • 16. & VC BB Câu lệnh while - Một số lưu ý Câu lệnh while có thể không thực hiện lần nào do điều kiện lặp ngay từ lần đầu đã không thỏa. void main() { int n = 1; while (n > 10) { printf(“%dn”, n); n--; } … } Câu lệnh lặp 16
  • 17. & VC BB Câu lệnh for - Một số lưu ý Không được thêm ; ngay sau lệnh lệnh while. int n = 0; while (n < 10); { printf(“%dn”, n); n++; } while (n < 10) { }; { printf(“%dn”, n); n++; } Câu lệnh lặp 17
  • 18. & VC BB Câu lệnh while - Một số lưu ý Câu lệnh while có thể bị lặp vô tận (loop) void main() { int n = 1; while (n < 10) { printf(“%dn”, n); n--; } n = 1; while (n < 10) printf(“%dn”, n); } Câu lệnh lặp 18
  • 19. & VC BB Câu lệnh do… while <Lệnh> Đ <Đ/K lặp> S Câu lệnh đơn hoặc Câu lệnh phức (kẹp do giữa { và }) <Lệnh>; Biểu thức C bất kỳ, while (<Đ/K lặp>); thường là biểu thức quan hệ cho kết quả 0 (sai) và != 0 (đúng) Câu lệnh lặp 19
  • 20. & VC BB Câu lệnh do… while int i = 0; do { printf(“%dn”, i); i++; } while (i < 10); int i = 0; printf(“%dn”, i); i++; for (; i < 10; ) { printf(“%dn”, i); i++; } Câu lệnh lặp 20
  • 21. & VC BB Câu lệnh do… while - Một số lưu ý Câu lệnh do… while là một câu lệnh đơn và có thể lồng nhau. int a = 1, b; do { b = 1; do { printf(“%dn”, a + b); b = b + 2; } while (b < 20); a++; } while (a < 20); 21 Câu lệnh lặp
  • 22. & VC BB Câu lệnh do… while - Một số lưu ý Câu lệnh do… while sẽ được thực hiện ít nhất 1 lần do điều kiện lặp được kiểm tra ở cuối. void main() { int n; do { printf(“Nhap n: ”); scanf(“%d”, &n); } while (n < 1 || n > 100); } Câu lệnh lặp 22
  • 23. & VC BB Câu lệnh do… while - Một số lưu ý Câu lệnh do… while có thể bị lặp vô tận (loop) … int n = 1; do { printf(“%dn”, n); n--; } while (n < 10); n = 1; do printf(“%dn”, n); while (n < 10); … 23 Câu lệnh lặp
  • 24. & VC BB for, while, do… while Đều có khả năng lặp lại nhiều hành động. int n = 10; for (int i = 1; i <= n; i++) printf(“%dn”, i); int i = 1; while (i <= n) { printf(“%dn”, i); i++; } int i = 1; do { printf(“%dn”, i); i++; } while (i < n); 24 Câu lệnh lặp
  • 25. & VC BB for, while, do… while Số lần lặp xác định ngay trong câu lệnh for int n = 10; for (int i = 1; i <= n; i++) …; int i = 1; while (i <= n) { …; } int i = 1; do { …; } while (i > n); 25 Câu lệnh lặp
  • 26. & VC BB while & do… while while có thể không thực hiện lần nào. do… while sẽ được thực hiện ít nhất 1 lần. int n = 100; while (n < 10) { …; } … do { printf(“Nhap n: ”); scanf(“%d”, &n); } while (n > 10); Câu lệnh lặp 26
  • 27. & VC BB Bài tập 1. Nhập một số nguyên dương n (n > 0). Hãy cho biết: a. Có phải là số đối xứng? Ví dụ: 121, 12321, … b. Có phải là số chính phương? Ví dụ: 4, 9, 16, … c. Có phải là số nguyên tố? Ví dụ: 2, 3, 5, 7, … d. Chữ số lớn nhất và nhỏ nhất? e. Các chữ số có tăng dần hay giảm dần không? Câu lệnh lặp 27
  • 28. & VC BB Bài tập 2. Nhập một số nguyên dương n. Tính: a. S = 1 + 2 + … + n b. S = 12 + 22 + … + n2 c. S = 1 + 1/2 + … + 1/n d. S = 1*2*…*n = n! e. S = 1! + 2! + … + n! 3. Nhập 3 số nguyên a, b và n với a, b < n. Tính tổng các số nguyên dương nhỏ hơn n chia hết cho a nhưng không chia hết cho b. 4. Tính tổng các số nguyên tố nhỏ hơn n (0 < n < 50) Câu lệnh lặp 28
  • 29. & VC BB Bài tập 5. Nhập một số nguyên dương n. Xuất ra số ngược lại. Ví dụ: Nhập 1706  Xuất 6071. 6. Tìm và in lên màn hình tất cả các số nguyên trong phạm vi từ 10 đến 99 sao cho tích của 2 chữ số bằng 2 lần tổng của 2 chữ số đó. 7. Tìm ước số chung lớn nhất của 2 số nguyên dương a và b nhập từ bàn phím. 8. Nhập n. In n số đầu tiên trong dãy Fibonacy. a. a0 = a1 = 1 b. an = an – 1 + an – 2 Câu lệnh lặp 29