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

Nmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapNmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapCuong
 
Bai tap xác suất
Bai tap xác suấtBai tap xác suất
Bai tap xác suấtTzaiMink
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objetsAziz Darouichi
 
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ê
 
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
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Aziz Darouichi
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Aziz Darouichi
 
Nmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanhNmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanhMinh Ngoc Tran
 
Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Minh Ngoc Tran
 
Cours tic complet
Cours tic completCours tic complet
Cours tic completsofixiito
 
Phần 11: Tập tin
Phần 11: Tập tinPhần 11: Tập tin
Phần 11: Tập tinHuy Rùa
 
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
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfFadouaBouafifSamoud
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfslimyaich3
 
Cours de programmation en c
Cours de programmation en cCours de programmation en c
Cours de programmation en cbenouini rachid
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetiquemohamed_SAYARI
 

What's hot (20)

Nmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh LapNmlt C05 Cau Lenh Lap
Nmlt C05 Cau Lenh Lap
 
Bai tap xác suất
Bai tap xác suấtBai tap xác suất
Bai tap xác suất
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
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...
 
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
 
Programmation en C
Programmation en CProgrammation en C
Programmation en C
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019
 
Nmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanhNmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanh
 
Cours de c
Cours de cCours de c
Cours de c
 
Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1
 
Cours tic complet
Cours tic completCours tic complet
Cours tic complet
 
Phần 11: Tập tin
Phần 11: Tập tinPhần 11: Tập tin
Phần 11: Tập tin
 
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
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
Ch1-Généralités.pdf
Ch1-Généralités.pdfCh1-Généralités.pdf
Ch1-Généralités.pdf
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 
Cours langage-c
Cours langage-cCours langage-c
Cours langage-c
 
Cours de programmation en c
Cours de programmation en cCours de programmation en c
Cours de programmation en c
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetique
 

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
 
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 (7)

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
 
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
 

More from Huy Rùa

Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhHuy Rùa
 
Phần 7: Mảng một chiều
Phần 7: Mảng một chiềuPhần 7: Mảng một chiều
Phần 7: Mảng một chiềuHuy Rùa
 
Phần 3: Các kiểu dữ liệu cơ sở
Phần 3: Các kiểu dữ liệu cơ sởPhần 3: Các kiểu dữ liệu cơ sở
Phần 3: Các kiểu dữ liệu cơ sởHuy Rùa
 
Phần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình CPhần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình CHuy Rùa
 
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 0: Giới thiệu
Phần 0: Giới thiệuPhần 0: Giới thiệu
Phần 0: Giới thiệuHuy Rùa
 
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
 

More from Huy Rùa (7)

Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
Phần 7: Mảng một chiều
Phần 7: Mảng một chiềuPhần 7: Mảng một chiều
Phần 7: Mảng một chiều
 
Phần 3: Các kiểu dữ liệu cơ sở
Phần 3: Các kiểu dữ liệu cơ sởPhần 3: Các kiểu dữ liệu cơ sở
Phần 3: Các kiểu dữ liệu cơ sở
 
Phần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình CPhần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình 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 0: Giới thiệu
Phần 0: Giới thiệuPhần 0: Giới thiệu
Phần 0: Giới thiệu
 
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)
 

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