SlideShare a Scribd company logo
1 of 23
Download to read offline
Ngôn Ngữ Lập Trình
       C++
  Cấu trúc lặp (tiếp theo)
Đề mục

  Câu lệnh for
  Câu lệnh do-while
  So sánh while, for và do-while
  Vòng lặp lồng nhau
  Gỡ rối vòng lặp
  Các lỗi lập trình thường gặp




Vòng lặp                2
Câu lệnh for

  Câu lệnh for thích hợp với vòng lặp thực hiện các
  công việc giống nhau dựa trên biến đếm.
  Ví dụ 1: In ra màn hình 20 dấu ‘*’
  dem = 0;               for (dem = 0; dem < 20; dem++)
                         for (dem = 0; dem < 20; dem++)
  while (dem < 20)             cout<<‘*’<<endl;
                               cout<<‘*’<<endl;
  {
    cout<<‘*’<<endl;
    dem ++;
  }




Vòng lặp                    3
Câu lệnh for
  Giải thích quá trình thực hiện:
                   for (dem = 0; dem < 20; dem++)
                   for (dem = 0; dem < 20; dem++)
                         cout<<‘*’<<endl;
                         cout<<‘*’<<endl;
  khởi tạo dem = 0;
  kiểm tra (dem < 20) thấy đúng, vậy in ra dấu ‘*’
  tăng dem ++ vậy dem = 1
  quay lại kiểm tra (dem < 20) thấy đúng, vậy in ra dấu ‘*’
  tăng dem ++ vậy dem = 2
  ...
  tăng dem ++ vậy dem = 19
  quay lại kiểm tra (dem < 20) thấy đúng, vậy in ra dấu ‘*’
  tăng dem ++ vậy dem = 20
  quay lại kiểm tra (dem < 20) thấy sai, vậy ra khỏi vòng lặp

Vòng lặp                             4
Câu lệnh for

     Ví dụ 2 : Tính lương cho các công nhân
     for (dem_cn = 0; dem_cn < 10; dem_cn ++)
     {
        cout<<“So san pham lam duoc : quot;;
        cin>>SoSP;
        Luong = SoSP * 5;
           cout<<“Luong cua ban la : quot;<<Luong<<quot; nghin dongquot;<<endl;
     }




Vòng lặp                            5
Bài tập

  Tính tổng S = 13 + 23 + 33 + ... + 103
  In ra màn hình bảng giá trị
           i   i*i      sqrt(i)
           1    1        1.0
           2    4        1.4
           3    9        1.7
           4   16        2.0
           5   25        2.2
           6   36        2.4
           7   49        2.6



Vòng lặp                          6
Lời giải

  Tính tổng S = 13 + 23 + 33 + ... + 103
  tong = 0;
  for (i = 1; i <= 10; i++)
       tong += i*i*i;


  In bảng
  cout.setf(ios::fixed); // hien thi theo ki phap dau cham
  cout.precision(1); // lay 1 so le sau dau cham
  cout<<setw(3)<<“i”<<setw(5)<<“i*i” <<setw(7)<<“sqrt(i)”<<endl;
  for (i = 1; i <= 7; i++)
     cout<<setw(3)<<i<<setw(6)<<i*i<<setw(9)<<sqrt(i)<<endl;

Vòng lặp                          7
Câu lệnh for

  Biến điều khiển trong lệnh for có thể tăng giảm với
  một lượng bất kỳ.
  Ví dụ: Tính tổng các số lẻ nằm từ 1 đến N
  sum = 0;
  for (le = 1; le <= N; le += 2)
     sum += le;




Vòng lặp                           8
Bài tập

  In ra màn hình bảng đổi nhiệt độ từ độ C sang độ F
  Celsius    Fahrenheit
    20          68.00
    15          59.00
    10          50.00
     5          41.00
     0          32.00
    -5          23.00
   -10          14.00
   -15            5.00
   -20           -4.00
  Công thức: F = 1.8*C + 32
Vòng lặp                   9
Câu lệnh for

  Cú pháp:
  for (khởi tạo; biểu thức điều kiện; cập nhật biến điều khiển)
       <Câu lệnh>;
  Giái thích:
       Thực hiện câu lệnh khởi tạo;
       Kiểm tra biểu thức điều kiện;
       Nếu điều kiện đúng thì
           •   Thực hiện <Câu lệnh>;
           •   Thực hiện cập nhật biến điều khiển
           •   Quay lại kiểm tra điều kiện;
       Nếu điều kiện sai thì ra khỏi vòng lặp
Vòng lặp                             10
Câu lệnh do-while
  Câu lệnh do-while thích hợp với những vòng lặp cần
  thực hiện ít nhất một lần lặp
       Làm thực đơn (menu)
       Kiểm tra lệnh nhiều lần
  Cú pháp
       do
       {
           <Câu lệnh>;
       } while (biểu thức điều kiện)
  Giải thích
       Làm <Câu lệnh>.
       Kiểm tra điều kiện, nếu đúng thì
        • Quay lại làm <Câu lệnh>
        • Kiểm tra điều kiện
       Kiểm tra điều kiện, nếu sai thì
        • Ra khỏi vòng lặp.
Vòng lặp                                  11
Câu lệnh do-while

  Làm thực đơn:
  void thuc_don()
  {
      cout<<“1. Tinh dien tich hinh tron”<<endl;
      cout<<“2. Tinh dien tich tam giac”<<endl;
      cout<<“3. Thoat”<<endl;
  }
  do
  {
      thuc_don();
      cout<<“Chon mot so: ”;
      cin>>so;
      switch (so)...
  } while (so != 3);

Vòng lặp                                      12
Câu lệnh do-while

  Kiểm tra lệnh nhiều lần
  do
  {
     cout<<“Nhap ban kinh: ”;
     cin>>ban_kinh;
     ket_qua = chu_vi_ht(ban_kinh);
     cout<<“Chu vi la: “<<ket_qua;
  } while (ban_kinh != 0);




Vòng lặp                         13
Break và Continue

  Lệnh break dùng để thoát ngay ra khỏi vòng lặp
  Lệnh continue dùng để quay trở lại ngay đầu vòng lặp
  do
  {
     cout<<“Nhap mot so: ”;
     cin>>so;
     if (so == 0)
          break;
     cout<<“Hello”<<endl;
  } while (so != 0);



Vòng lặp                      14
So sánh các câu lệnh lặp

  while:
       Thích hợp với vòng lặp chưa biết trước số lần lặp
       Câu lệnh trong while có thể không được thực hiện
       1 lần nào nếu điều kiện kiểm tra là sai ngay từ
       đầu.
  for:
       Thích hợp với vòng lặp biết trước số lần lặp
  do-while:
       Thích hợp với vòng lặp có ít nhất là một lần lặp


Vòng lặp                      15
Vòng lặp lồng nhau

  Ví dụ 1: In ra màn hình 20 dòng và 30 cột các ngôi sao
  ******************************
  ******************************
  ******************************
  ******************************
  ...

  Lời giải:
  for (dong = 1; dong <= 20; dong ++)
  {
       for (cot = 1; cot <= 30; cot ++)
            cout<<‘*’;
       cout<<endl;
  }


Vòng lặp                              16
Vòng lặp lồng nhau

  Ví dụ 2: In ra màn hình các ngôi sao như sau
  *
  **
  ***
  ****
  *****
  ******
  *******
  Lời giải:
  for (dong = 1; dong <= 7; dong ++)
  {
       for (cot = 1; cot <= dong; cot ++)
            cout<<‘*’;
       cout<<endl;
  }


Vòng lặp                                17
Gỡ rối vòng lặp

  Lần theo giá trị các biến trong sau từng bước lặp
  Lập bảng vết – ví dụ:
  tong = 0;                       i      gt      tong
  gt = 1;                                1        0
  for (i = 1; i <= 6; i++)
                                  1      1        1
  {
       gt = gt*i;                 2      2        3
       tong = tong + gt;          3      6        9
  }                               4      24       33
  cout<<“Tong: “<<tong;
                                  5     120      153
  Tong = 1! + 2! +... + 6!
                                  6     720      873

Vòng lặp                     18
Gỡ rối vòng lặp

  In ra các giá trị trung gian trong từng bước lặp
  tong = 0;
  gt = 1;
  for (i = 1; i <= 6; i++)
  {
       gt = gt*i;
       cout<<“gt = “<<gt<<endl;
       tong = tong + gt;
       cout<<“tong = “<<tong<<endl;
  }
  cout<<“Tong: “<<tong;


Vòng lặp                     19
Bài tập

  Vòng lặp sau cho kết quả như thế nào ?
  tong = 0;
  for (i = 1; i <= 7; i++)                  i   tong
  {
                                            1    1
        if (i % 2) == 1
             tong = tong + i*i;             2    -3
        else                                3    6
             tong = tong – i*i;             4   -10
  }
                                            5   15
  cout<<“Tong: “<<tong;
  Tong = 12 – 22 + 32 – 42 + 52 – 62 + 72
               2    2   2       2 2 2   2   6   -21
                                            7   28

Vòng lặp                       20
Bài tập

  Vòng lặp sau cho kết quả như thế nào ?
  for (i = 1; i <= 7; i++)
  {                               i/j 1    2   3   4   5   6 7
       for (j = 1; j <= i; j++)    1   1
            cout<<setw(3)<<j;
                                   2   1   2
       cout<<endl;
  }                                3   1   2   3
                                   4   1   2   3   4
                                   5   1   2   3   4   5
                                   6   1   2   3   4   5   6
                                   7   1   2   3   4   5   6   7
Vòng lặp                          21
Các lỗi lập trình thường gặp

  Nhầm giữa if và while
  Sai ở điều kiện lặp
       So sánh sự bằng nhau giữa hai số thực
  Thiếu { } ở câu lệnh gộp
  Biến chưa khởi tạo giá trị




Vòng lặp                       22
Bài tập
  Viết chương trình tính giá trị
  A = 1/n + 2/(n-1) + 3/(n-2) + ... + n/1
  Viết chương trình nhập vào một số nguyên dương,
  sau đó cho biết số đó có bao nhiêu chữ số
  Viết chương trình kiểm tra một số có là số nguyên tố
  Viết chương trình in ra màn hình cây thông
              *
             **
             ***
            ****
            *****
           ******
           *******

Vòng lặp                   23

More Related Content

What's hot

Hướng Dẫn Bài Tập Lớn Kết Cấu Thép 1
Hướng Dẫn Bài Tập Lớn Kết Cấu Thép 1 Hướng Dẫn Bài Tập Lớn Kết Cấu Thép 1
Hướng Dẫn Bài Tập Lớn Kết Cấu Thép 1 nataliej4
 
Ilya Trofimov - Distributed Coordinate Descent for L1-regularized Logistic Re...
Ilya Trofimov - Distributed Coordinate Descent for L1-regularized Logistic Re...Ilya Trofimov - Distributed Coordinate Descent for L1-regularized Logistic Re...
Ilya Trofimov - Distributed Coordinate Descent for L1-regularized Logistic Re...AIST
 
20080302 cryptography hirsch_lecture03
20080302 cryptography hirsch_lecture0320080302 cryptography hirsch_lecture03
20080302 cryptography hirsch_lecture03Computer Science Club
 
Imam hussain ki karamat.sindhi
Imam hussain ki karamat.sindhiImam hussain ki karamat.sindhi
Imam hussain ki karamat.sindhiIlyas Qadri Ziaee
 
קיץ א 2007 004
קיץ א 2007 004קיץ א 2007 004
קיץ א 2007 004bagrutonline
 
2006 קיץ ב 004
2006 קיץ ב 0042006 קיץ ב 004
2006 קיץ ב 004bagrutonline
 
0 5-r vrzvvleh tsetsegee
0 5-r vrzvvleh  tsetsegee0 5-r vrzvvleh  tsetsegee
0 5-r vrzvvleh tsetsegeeshand1_dashka
 
решебник и гдз по математике за 1 класс рудницкая
решебник и гдз по математике за 1 класс   рудницкаярешебник и гдз по математике за 1 класс   рудницкая
решебник и гдз по математике за 1 класс рудницкаяИван Иванов
 
eBook Elements Organizer 12
eBook Elements Organizer 12eBook Elements Organizer 12
eBook Elements Organizer 12autonomo
 
решебник и гдз по математике за 1 класс истомина, 2011 год
решебник и гдз по математике за 1 класс   истомина, 2011 годрешебник и гдз по математике за 1 класс   истомина, 2011 год
решебник и гдз по математике за 1 класс истомина, 2011 годИван Иванов
 
Eemaan aour us ki kaifiyatain إيمان اور اس كي بعض كيفيتين
Eemaan aour us ki kaifiyatain إيمان اور اس كي بعض كيفيتينEemaan aour us ki kaifiyatain إيمان اور اس كي بعض كيفيتين
Eemaan aour us ki kaifiyatain إيمان اور اس كي بعض كيفيتينIffu Slides
 

What's hot (14)

Hướng Dẫn Bài Tập Lớn Kết Cấu Thép 1
Hướng Dẫn Bài Tập Lớn Kết Cấu Thép 1 Hướng Dẫn Bài Tập Lớn Kết Cấu Thép 1
Hướng Dẫn Bài Tập Lớn Kết Cấu Thép 1
 
Ilya Trofimov - Distributed Coordinate Descent for L1-regularized Logistic Re...
Ilya Trofimov - Distributed Coordinate Descent for L1-regularized Logistic Re...Ilya Trofimov - Distributed Coordinate Descent for L1-regularized Logistic Re...
Ilya Trofimov - Distributed Coordinate Descent for L1-regularized Logistic Re...
 
20080302 cryptography hirsch_lecture03
20080302 cryptography hirsch_lecture0320080302 cryptography hirsch_lecture03
20080302 cryptography hirsch_lecture03
 
Imam hussain ki karamat.sindhi
Imam hussain ki karamat.sindhiImam hussain ki karamat.sindhi
Imam hussain ki karamat.sindhi
 
קיץ א 2007 004
קיץ א 2007 004קיץ א 2007 004
קיץ א 2007 004
 
2006 קיץ ב 004
2006 קיץ ב 0042006 קיץ ב 004
2006 קיץ ב 004
 
חורף 2005 004
חורף 2005 004חורף 2005 004
חורף 2005 004
 
0 5-r vrzvvleh tsetsegee
0 5-r vrzvvleh  tsetsegee0 5-r vrzvvleh  tsetsegee
0 5-r vrzvvleh tsetsegee
 
Tobch Lecture
Tobch LectureTobch Lecture
Tobch Lecture
 
решебник и гдз по математике за 1 класс рудницкая
решебник и гдз по математике за 1 класс   рудницкаярешебник и гдз по математике за 1 класс   рудницкая
решебник и гдз по математике за 1 класс рудницкая
 
חורף 2005 007
חורף 2005 007חורף 2005 007
חורף 2005 007
 
eBook Elements Organizer 12
eBook Elements Organizer 12eBook Elements Organizer 12
eBook Elements Organizer 12
 
решебник и гдз по математике за 1 класс истомина, 2011 год
решебник и гдз по математике за 1 класс   истомина, 2011 годрешебник и гдз по математике за 1 класс   истомина, 2011 год
решебник и гдз по математике за 1 класс истомина, 2011 год
 
Eemaan aour us ki kaifiyatain إيمان اور اس كي بعض كيفيتين
Eemaan aour us ki kaifiyatain إيمان اور اس كي بعض كيفيتينEemaan aour us ki kaifiyatain إيمان اور اس كي بعض كيفيتين
Eemaan aour us ki kaifiyatain إيمان اور اس كي بعض كيفيتين
 

Viewers also liked

Bai Giang 11
Bai Giang 11Bai Giang 11
Bai Giang 11nbb3i
 
Bai Giang 9
Bai Giang 9Bai Giang 9
Bai Giang 9nbb3i
 
Bai Giang 7
Bai Giang 7Bai Giang 7
Bai Giang 7nbb3i
 
Bai Giang 1
Bai Giang 1Bai Giang 1
Bai Giang 1nbb3i
 
Bai Giang 5
Bai Giang 5Bai Giang 5
Bai Giang 5nbb3i
 
Bai Giang 2
Bai Giang 2Bai Giang 2
Bai Giang 2nbb3i
 
Trạm biến áp - Phạm Phước Nghiêm
Trạm biến áp - Phạm Phước NghiêmTrạm biến áp - Phạm Phước Nghiêm
Trạm biến áp - Phạm Phước NghiêmHuytraining
 

Viewers also liked (7)

Bai Giang 11
Bai Giang 11Bai Giang 11
Bai Giang 11
 
Bai Giang 9
Bai Giang 9Bai Giang 9
Bai Giang 9
 
Bai Giang 7
Bai Giang 7Bai Giang 7
Bai Giang 7
 
Bai Giang 1
Bai Giang 1Bai Giang 1
Bai Giang 1
 
Bai Giang 5
Bai Giang 5Bai Giang 5
Bai Giang 5
 
Bai Giang 2
Bai Giang 2Bai Giang 2
Bai Giang 2
 
Trạm biến áp - Phạm Phước Nghiêm
Trạm biến áp - Phạm Phước NghiêmTrạm biến áp - Phạm Phước Nghiêm
Trạm biến áp - Phạm Phước Nghiêm
 

Recently uploaded

أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....سمير بسيوني
 
French Revolution (फ्रेंच राज्यक्रांती)
French Revolution  (फ्रेंच राज्यक्रांती)French Revolution  (फ्रेंच राज्यक्रांती)
French Revolution (फ्रेंच राज्यक्रांती)Shankar Aware
 
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ، راپورتا مێژوی ، ژ...
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ،    راپورتا مێژوی ، ژ...، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ،    راپورتا مێژوی ، ژ...
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ، راپورتا مێژوی ، ژ...Idrees.Hishyar
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...Nguyen Thanh Tu Collection
 
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...Nguyen Thanh Tu Collection
 

Recently uploaded (6)

أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
 
French Revolution (फ्रेंच राज्यक्रांती)
French Revolution  (फ्रेंच राज्यक्रांती)French Revolution  (फ्रेंच राज्यक्रांती)
French Revolution (फ्रेंच राज्यक्रांती)
 
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ، راپورتا مێژوی ، ژ...
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ،    راپورتا مێژوی ، ژ...، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ،    راپورتا مێژوی ، ژ...
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ، راپورتا مێژوی ، ژ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
 
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
 

Bai Giang 4

  • 1. Ngôn Ngữ Lập Trình C++ Cấu trúc lặp (tiếp theo)
  • 2. Đề mục Câu lệnh for Câu lệnh do-while So sánh while, for và do-while Vòng lặp lồng nhau Gỡ rối vòng lặp Các lỗi lập trình thường gặp Vòng lặp 2
  • 3. Câu lệnh for Câu lệnh for thích hợp với vòng lặp thực hiện các công việc giống nhau dựa trên biến đếm. Ví dụ 1: In ra màn hình 20 dấu ‘*’ dem = 0; for (dem = 0; dem < 20; dem++) for (dem = 0; dem < 20; dem++) while (dem < 20) cout<<‘*’<<endl; cout<<‘*’<<endl; { cout<<‘*’<<endl; dem ++; } Vòng lặp 3
  • 4. Câu lệnh for Giải thích quá trình thực hiện: for (dem = 0; dem < 20; dem++) for (dem = 0; dem < 20; dem++) cout<<‘*’<<endl; cout<<‘*’<<endl; khởi tạo dem = 0; kiểm tra (dem < 20) thấy đúng, vậy in ra dấu ‘*’ tăng dem ++ vậy dem = 1 quay lại kiểm tra (dem < 20) thấy đúng, vậy in ra dấu ‘*’ tăng dem ++ vậy dem = 2 ... tăng dem ++ vậy dem = 19 quay lại kiểm tra (dem < 20) thấy đúng, vậy in ra dấu ‘*’ tăng dem ++ vậy dem = 20 quay lại kiểm tra (dem < 20) thấy sai, vậy ra khỏi vòng lặp Vòng lặp 4
  • 5. Câu lệnh for Ví dụ 2 : Tính lương cho các công nhân for (dem_cn = 0; dem_cn < 10; dem_cn ++) { cout<<“So san pham lam duoc : quot;; cin>>SoSP; Luong = SoSP * 5; cout<<“Luong cua ban la : quot;<<Luong<<quot; nghin dongquot;<<endl; } Vòng lặp 5
  • 6. Bài tập Tính tổng S = 13 + 23 + 33 + ... + 103 In ra màn hình bảng giá trị i i*i sqrt(i) 1 1 1.0 2 4 1.4 3 9 1.7 4 16 2.0 5 25 2.2 6 36 2.4 7 49 2.6 Vòng lặp 6
  • 7. Lời giải Tính tổng S = 13 + 23 + 33 + ... + 103 tong = 0; for (i = 1; i <= 10; i++) tong += i*i*i; In bảng cout.setf(ios::fixed); // hien thi theo ki phap dau cham cout.precision(1); // lay 1 so le sau dau cham cout<<setw(3)<<“i”<<setw(5)<<“i*i” <<setw(7)<<“sqrt(i)”<<endl; for (i = 1; i <= 7; i++) cout<<setw(3)<<i<<setw(6)<<i*i<<setw(9)<<sqrt(i)<<endl; Vòng lặp 7
  • 8. Câu lệnh for Biến điều khiển trong lệnh for có thể tăng giảm với một lượng bất kỳ. Ví dụ: Tính tổng các số lẻ nằm từ 1 đến N sum = 0; for (le = 1; le <= N; le += 2) sum += le; Vòng lặp 8
  • 9. Bài tập In ra màn hình bảng đổi nhiệt độ từ độ C sang độ F Celsius Fahrenheit 20 68.00 15 59.00 10 50.00 5 41.00 0 32.00 -5 23.00 -10 14.00 -15 5.00 -20 -4.00 Công thức: F = 1.8*C + 32 Vòng lặp 9
  • 10. Câu lệnh for Cú pháp: for (khởi tạo; biểu thức điều kiện; cập nhật biến điều khiển) <Câu lệnh>; Giái thích: Thực hiện câu lệnh khởi tạo; Kiểm tra biểu thức điều kiện; Nếu điều kiện đúng thì • Thực hiện <Câu lệnh>; • Thực hiện cập nhật biến điều khiển • Quay lại kiểm tra điều kiện; Nếu điều kiện sai thì ra khỏi vòng lặp Vòng lặp 10
  • 11. Câu lệnh do-while Câu lệnh do-while thích hợp với những vòng lặp cần thực hiện ít nhất một lần lặp Làm thực đơn (menu) Kiểm tra lệnh nhiều lần Cú pháp do { <Câu lệnh>; } while (biểu thức điều kiện) Giải thích Làm <Câu lệnh>. Kiểm tra điều kiện, nếu đúng thì • Quay lại làm <Câu lệnh> • Kiểm tra điều kiện Kiểm tra điều kiện, nếu sai thì • Ra khỏi vòng lặp. Vòng lặp 11
  • 12. Câu lệnh do-while Làm thực đơn: void thuc_don() { cout<<“1. Tinh dien tich hinh tron”<<endl; cout<<“2. Tinh dien tich tam giac”<<endl; cout<<“3. Thoat”<<endl; } do { thuc_don(); cout<<“Chon mot so: ”; cin>>so; switch (so)... } while (so != 3); Vòng lặp 12
  • 13. Câu lệnh do-while Kiểm tra lệnh nhiều lần do { cout<<“Nhap ban kinh: ”; cin>>ban_kinh; ket_qua = chu_vi_ht(ban_kinh); cout<<“Chu vi la: “<<ket_qua; } while (ban_kinh != 0); Vòng lặp 13
  • 14. Break và Continue Lệnh break dùng để thoát ngay ra khỏi vòng lặp Lệnh continue dùng để quay trở lại ngay đầu vòng lặp do { cout<<“Nhap mot so: ”; cin>>so; if (so == 0) break; cout<<“Hello”<<endl; } while (so != 0); Vòng lặp 14
  • 15. So sánh các câu lệnh lặp while: Thích hợp với vòng lặp chưa biết trước số lần lặp Câu lệnh trong while có thể không được thực hiện 1 lần nào nếu điều kiện kiểm tra là sai ngay từ đầu. for: Thích hợp với vòng lặp biết trước số lần lặp do-while: Thích hợp với vòng lặp có ít nhất là một lần lặp Vòng lặp 15
  • 16. Vòng lặp lồng nhau Ví dụ 1: In ra màn hình 20 dòng và 30 cột các ngôi sao ****************************** ****************************** ****************************** ****************************** ... Lời giải: for (dong = 1; dong <= 20; dong ++) { for (cot = 1; cot <= 30; cot ++) cout<<‘*’; cout<<endl; } Vòng lặp 16
  • 17. Vòng lặp lồng nhau Ví dụ 2: In ra màn hình các ngôi sao như sau * ** *** **** ***** ****** ******* Lời giải: for (dong = 1; dong <= 7; dong ++) { for (cot = 1; cot <= dong; cot ++) cout<<‘*’; cout<<endl; } Vòng lặp 17
  • 18. Gỡ rối vòng lặp Lần theo giá trị các biến trong sau từng bước lặp Lập bảng vết – ví dụ: tong = 0; i gt tong gt = 1; 1 0 for (i = 1; i <= 6; i++) 1 1 1 { gt = gt*i; 2 2 3 tong = tong + gt; 3 6 9 } 4 24 33 cout<<“Tong: “<<tong; 5 120 153 Tong = 1! + 2! +... + 6! 6 720 873 Vòng lặp 18
  • 19. Gỡ rối vòng lặp In ra các giá trị trung gian trong từng bước lặp tong = 0; gt = 1; for (i = 1; i <= 6; i++) { gt = gt*i; cout<<“gt = “<<gt<<endl; tong = tong + gt; cout<<“tong = “<<tong<<endl; } cout<<“Tong: “<<tong; Vòng lặp 19
  • 20. Bài tập Vòng lặp sau cho kết quả như thế nào ? tong = 0; for (i = 1; i <= 7; i++) i tong { 1 1 if (i % 2) == 1 tong = tong + i*i; 2 -3 else 3 6 tong = tong – i*i; 4 -10 } 5 15 cout<<“Tong: “<<tong; Tong = 12 – 22 + 32 – 42 + 52 – 62 + 72 2 2 2 2 2 2 2 6 -21 7 28 Vòng lặp 20
  • 21. Bài tập Vòng lặp sau cho kết quả như thế nào ? for (i = 1; i <= 7; i++) { i/j 1 2 3 4 5 6 7 for (j = 1; j <= i; j++) 1 1 cout<<setw(3)<<j; 2 1 2 cout<<endl; } 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 4 5 6 7 Vòng lặp 21
  • 22. Các lỗi lập trình thường gặp Nhầm giữa if và while Sai ở điều kiện lặp So sánh sự bằng nhau giữa hai số thực Thiếu { } ở câu lệnh gộp Biến chưa khởi tạo giá trị Vòng lặp 22
  • 23. Bài tập Viết chương trình tính giá trị A = 1/n + 2/(n-1) + 3/(n-2) + ... + n/1 Viết chương trình nhập vào một số nguyên dương, sau đó cho biết số đó có bao nhiêu chữ số Viết chương trình kiểm tra một số có là số nguyên tố Viết chương trình in ra màn hình cây thông * ** *** **** ***** ****** ******* Vòng lặp 23