Ngôn Ngữ Lập Trình
       C++
     Cấu trúc lặp
Đề mục

  Khái niệm về vòng lặp
  Câu lệnh while
       Vòng lặp thực hiện các công việc giống nhau
       Vòng lặp cộng d...
Khái niệm về vòng lặp
  Cấu trúc tuần tự : Các câu lệnh được thực hiện lần lượt.
  Cấu trúc rẽ nhánh (if/switch) : Các câu...
Vòng lặp thực hiện các công việc giống nhau
  Ví dụ 1: In ra màn hình 100 kí tự ‘*’
  Phân tích:
       Số kí tự in ra màn...
Vòng lặp thực hiện các công việc giống nhau

  Giải thích :
  dem = 0; // Khởi tạo biến dem
  Kiểm tra điều kiện (dem < 10...
Vòng lặp thực hiện các công việc giống nhau

  Giải thích :
  Kiểm tra điều kiện (dem < 100) là đúng, vậy
     In ra kí tự...
Vòng lặp thực hiện các công việc giống nhau

  Ví dụ 2 : Tính lương cho 10 công nhân dựa trên số
  sản phẩm (mỗi sản phẩm ...
Vòng lặp thực hiện các công việc giống nhau

  Giải thích :
  dem_cn = 0; // Khởi tạo biến dem_cn
  Kiểm tra điều kiện (de...
Vòng lặp thực hiện các công việc giống nhau

  Giải thích :
  Kiểm tra điều kiện (dem_cn < 10) là đúng, vậy
     Thực hiện...
Sơ đồ minh hoạ
                      while



                                            false
                      dem_...
Câu lệnh while

  Cú pháp
  while (biểu thức logic)
    <câu lệnh>; // hoặc <khối lệnh>
  Quá trình thực hiện của while
  ...
Biến điều khiển

  Các biến như dem, dem_cn gọi là biến điều khiển
  vòng lặp
  Giá trị của biến điều khiển vòng lặp sẽ qu...
Bài tập

  Viết chương trình in ra các số từ -10 đến 10, mỗi số
  trên 1 dòng.
  Viết chương trình in ra các số từ 1 đến 2...
Lời giải

  Viết chương trình in ra các số từ -10 đến 10, mỗi số
  trên 1 dòng
  Phân tích
       so = -10;
       Trong k...
Lời giải

  Viết chương trình in ra các số từ 1 đến 20 và căn bậc
  2 của chúng, mỗi cặp giá trị trên 1 dòng.
  Phân tích ...
Các toán tử tăng và giảm
  Toán tử tăng 1 đơn vị ++
       i++ : Tính toán rồi mới tăng i
       ++i : Tăng i rồi mới tính...
Các toán tử gộp

  Một số ví dụ minh hoạ
       a+=b   a=a+b
       a-=b   a=a–b
       a*=b   a=a*b
       a/=b   a= a/b
...
Vòng lặp cộng dồn

  Ví dụ : Mở rộng bài toán tính lương công nhân
       Nhập số sản phẩm mà mỗi công nhân làm được
     ...
Bài toán : Tính Lương

  Phân tích bài toán
       Dữ liệu vào :
           • Số lượng công nhân
           • Số lượng sản...
Bài toán : Tính Lương

  Thiết kế thuật toán
       Nhập số lượng công nhân
       Khởi tạo giá trị tổng lương cho tất cả ...
Bài toán : Tính Lương

  Làm mịn thuật toán cho bước 2 và 3
       Tổng Lương = 0 ;
       Đếm = 0;
       Trong khi (Đếm ...
Bài toán : Tính Lương
  Cài đặt
  #include <iostream.h>
  #include <iostream.h>

  void main()
  void main()
  {
  {
    /...
Bài toán : Tính Lương
      while (Dem < SoCN)
      while (Dem < SoCN)
      {
      {
        //Nhập số sản phẩm cho 1 c...
Vòng lặp không biết trước số lần lặp

  Bài toán : Mô phỏng hiện tượng rơi tự do của một vật
       Lập một bảng cho biết ...
Bài toán mô phỏng rơi tự do

  Thiết kế thuật toán
       Nhập dữ liệu độ cao ban đầu
       Lập bảng cho biết độ cao của ...
Bài toán mô phỏng rơi tự do
  Cài đặt
  #include <iostream.h>
  #include <iomanip.h>

  void main()
  {
        // Khai ba...
Bài toán mô phỏng rơi tự do
  Cài đặt
           // Lap bang do cao
           // Lap bang do cao
             cout<<setw(...
Bài toán mô phỏng rơi tự do

  Kiểm tra chương trình
  Nhap do cao ban dau cua vat : 100
   Thoi gian Do cao
        0.00 ...
Xuất dữ liệu có định dạng

  Đặt độ rộng để hiển thị giá trị
       cout.width(4)
       cout<<setw(4)
  Đặt dạng hiển thị...
Vòng lặp không biết trước số lần lặp

  Mở rộng bài toán :
       Viết hàm để lập bảng độ cao sau từng giây. Hàm có đầu
  ...
Upcoming SlideShare
Loading in …5
×

Bai Giang 3

868 views

Published on

Published in: Education, Sports
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
868
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
30
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Bai Giang 3

  1. 1. Ngôn Ngữ Lập Trình C++ Cấu trúc lặp
  2. 2. Đề mục Khái niệm về vòng lặp Câu lệnh while Vòng lặp thực hiện các công việc giống nhau Vòng lặp cộng dồn Vòng lặp không biết trước số lần lặp Vòng lặp nhập dữ liệu tuỳ biến Vòng lặp 2
  3. 3. Khái niệm về vòng lặp Cấu trúc tuần tự : Các câu lệnh được thực hiện lần lượt. Cấu trúc rẽ nhánh (if/switch) : Các câu lệnh được thực hiện phụ thuộc vào điều kiện Cấu trúc lặp : Các câu lệnh được thực hiện lặp đi lặp lại. Ví dụ: Tính lương cho tất cả các công nhân trong một công ty Hiển thị 100 kí tự ‘*’ ra màn hình Sự lặp lại của một dãy các bước trong chương trình gọi là vòng lặp (loop) Các cấu trúc lặp trong C++ : while, for và do-while Vòng lặp 3
  4. 4. Vòng lặp thực hiện các công việc giống nhau Ví dụ 1: In ra màn hình 100 kí tự ‘*’ Phân tích: Số kí tự in ra màn hình lúc đầu bằng 0 Trong khi số kí tự đã in ra màn hình chưa đạt tới 100 thì • In ra kí tự ‘*’ • Tăng số kí tự đã in lên 1 Cài đặt: dem = 0; while (dem < 100) { cout<<‘*’; dem = dem + 1; } Vòng lặp 4
  5. 5. Vòng lặp thực hiện các công việc giống nhau Giải thích : dem = 0; // Khởi tạo biến dem Kiểm tra điều kiện (dem < 100) là đúng, vậy In ra kí tự ‘*’ Tăng biến dem lên 1, như vậy dem = 1 Kiểm tra điều kiện (dem < 100) là đúng, vậy In ra kí tự ‘*’ Tăng biến dem lên 1, như vậy dem = 2 … Vòng lặp 5
  6. 6. Vòng lặp thực hiện các công việc giống nhau Giải thích : Kiểm tra điều kiện (dem < 100) là đúng, vậy In ra kí tự ‘*’ Tăng biến dem lên 1, như vậy dem = 99 Kiểm tra điều kiện (dem < 100) là đúng, vậy In ra kí tự ‘*’ Tăng biến dem lên 1, như vậy dem = 100 Kiểm tra điều kiện (dem < 100) là sai, vậy Ra khỏi vòng lặp Vòng lặp 6
  7. 7. Vòng lặp thực hiện các công việc giống nhau Ví dụ 2 : Tính lương cho 10 công nhân dựa trên số sản phẩm (mỗi sản phẩm được trả 5 nghìn đồng) dem_cn = 0; while (dem_cn < 10) { cout<<“So san pham lam duoc : quot;; cin>>SoSP; Luong = SoSP * 5; cout<<“Luong cua ban la : quot;<<Luong<<quot; nghin dongquot;<<endl; dem_cn++; } // end while Vòng lặp 7
  8. 8. Vòng lặp thực hiện các công việc giống nhau Giải thích : dem_cn = 0; // Khởi tạo biến dem_cn Kiểm tra điều kiện (dem_cn < 10) là đúng, vậy Thực hiện các câu lệnh nhập số sản phẩm và tính lương dem_cn = dem_cn + 1 vậy dem_cn = 1; Kiểm tra điều kiện (dem_cn < 10) là đúng, vậy Thực hiện các câu lệnh nhập số sản phẩm và tính lương dem_cn = dem_cn + 1 vậy dem_cn = 2; … Vòng lặp 8
  9. 9. Vòng lặp thực hiện các công việc giống nhau Giải thích : Kiểm tra điều kiện (dem_cn < 10) là đúng, vậy Thực hiện các câu lệnh nhập số sản phẩm và tính lương dem_cn = dem_cn + 1 vậy dem_cn = 9; Kiểm tra điều kiện (dem_cn < 10) là đúng, vậy Thực hiện các câu lệnh nhập số sản phẩm và tính lương dem_cn = dem_cn + 1 vậy dem_cn = 10; Kiểm tra điều kiện (dem_cn < 10) là sai, vậy Ra khỏi vòng lặp Vòng lặp 9
  10. 10. Sơ đồ minh hoạ while false dem_cn < 10 true Đọc dữ liệu Tính và hiển thị lương Tăng giá trị biến dem_cn Vòng lặp 10
  11. 11. Câu lệnh while Cú pháp while (biểu thức logic) <câu lệnh>; // hoặc <khối lệnh> Quá trình thực hiện của while Kiểm tra điều kiện • Nếu điều kiện đúng thì thực hiện câu lệnh. Sau khi thực hiện xong câu lệnh lại quay lại kiểm tra điều kiện… • Nếu điều kiện sai thì thoát khỏi vòng lặp. Vòng lặp 11
  12. 12. Biến điều khiển Các biến như dem, dem_cn gọi là biến điều khiển vòng lặp Giá trị của biến điều khiển vòng lặp sẽ quyết định vòng lặp có tiếp tục hay không Có 3 bước liên quan đến biến điều khiển Khởi tạo Kiểm tra Cập nhật giá trị Vòng lặp 12
  13. 13. Bài tập Viết chương trình in ra các số từ -10 đến 10, mỗi số trên 1 dòng. Viết chương trình in ra các số từ 1 đến 20 và căn bậc 2 của chúng, mỗi cặp giá trị trên 1 dòng. Vòng lặp 13
  14. 14. Lời giải Viết chương trình in ra các số từ -10 đến 10, mỗi số trên 1 dòng Phân tích so = -10; Trong khi (so <= 10) • In ra so • Tăng so lên 1 Vòng lặp 14
  15. 15. Lời giải Viết chương trình in ra các số từ 1 đến 20 và căn bậc 2 của chúng, mỗi cặp giá trị trên 1 dòng. Phân tích : so = 1; Trong khi (so <= 20) • In ra so và căn bậc 2 của so • Tăng so lên 1 Vòng lặp 15
  16. 16. Các toán tử tăng và giảm Toán tử tăng 1 đơn vị ++ i++ : Tính toán rồi mới tăng i ++i : Tăng i rồi mới tính toán Toán tử giảm 1 đơn vị -- i-- : Tính toán rồi mới giảm i --i : Giảm i rồi mới tính toán Ví dụ: i = 3 k = i ++ ; // gán giá trị 3 cho k rồi tăng i lên 1 là 4 k = ++ i ; // tăng i lên 1 là 5 rồi gán 5 cho k k = i -- ; // gán giá trị 5 cho k và giảm i đi 1 còn 4 k = -- i ; // giảmg i đi 1 còn 3 và gán 3 cho Vòng lặp 16
  17. 17. Các toán tử gộp Một số ví dụ minh hoạ a+=b a=a+b a-=b a=a–b a*=b a=a*b a/=b a= a/b a&=b a=a&b Vòng lặp 17
  18. 18. Vòng lặp cộng dồn Ví dụ : Mở rộng bài toán tính lương công nhân Nhập số sản phẩm mà mỗi công nhân làm được Tính lương cho công nhân đó (1 sp = 5000 đ) Tính tổng lương của các công nhân Vòng lặp 18
  19. 19. Bài toán : Tính Lương Phân tích bài toán Dữ liệu vào : • Số lượng công nhân • Số lượng sản phẩm mà từng công nhân làm được Dữ liệu ra : • Số tiền lương phải trả cho từng công nhân • Tổng lương phải trả cho tất cả các công nhân Vòng lặp 19
  20. 20. Bài toán : Tính Lương Thiết kế thuật toán Nhập số lượng công nhân Khởi tạo giá trị tổng lương cho tất cả các công nhân là 0 Với mỗi công nhân • Nhập số sản phẩm mà công nhân làm được • Tính số tiền lương phải trả cho công nhân • Hiển thị số tiền phải trả cho công nhân • Thêm vào tổng lương số tiền lương của công nhân vừa tính Hiển thị tổng lương phải trả cho tất cả các công nhân Vòng lặp 20
  21. 21. Bài toán : Tính Lương Làm mịn thuật toán cho bước 2 và 3 Tổng Lương = 0 ; Đếm = 0; Trong khi (Đếm < Số công nhân) • Nhập số lượng sản phẩm • Tính số tiền lương phải trả – Lương = Số sản phẩm * 5 (nghìn đồng) • Hiển thị số tiền phải trả • Thêm vào tổng lương – Tổng Lương = Tổng Lương + Lương; Vòng lặp 21
  22. 22. Bài toán : Tính Lương Cài đặt #include <iostream.h> #include <iostream.h> void main() void main() { { // Khai báo các biến // Khai báo các biến int SoCN; int SoCN; int SoSP; int SoSP; int Luong; int Luong; int TongLuong; int TongLuong; int Dem; int Dem; // Nhập vào số lượng công nhân // Nhập vào số lượng công nhân cout<<quot;Nhap vao so cong nhan: quot;; cout<<quot;Nhap vao so cong nhan: quot;; cin>>SoCN; cin>>SoCN; //Khởi tạo các biến //Khởi tạo các biến Dem = 0; Dem = 0; TongLuong=0; TongLuong=0; Vòng lặp 22
  23. 23. Bài toán : Tính Lương while (Dem < SoCN) while (Dem < SoCN) { { //Nhập số sản phẩm cho 1 công nhân //Nhập số sản phẩm cho 1 công nhân cout<<quot;Nhap so san pham: quot;; cout<<quot;Nhap so san pham: quot;; cin>>SoSP; cin>>SoSP; //Tính lương phải trả cho công nhân này //Tính lương phải trả cho công nhân này Luong = SoSP * 5; Luong = SoSP * 5; cout<<quot;Luong: quot;<<Luong<<quot; nghin dongquot;<<endl; cout<<quot;Luong: quot;<<Luong<<quot; nghin dongquot;<<endl; //Thêm vào tổng lương //Thêm vào tổng lương TongLuong += Luong; TongLuong += Luong; //Tăng biến Đếm //Tăng biến Đếm Dem++; Dem++; } // end while } // end while //Hiển thị tổng lương phải trả //Hiển thị tổng lương phải trả cout<<“Tong luong: quot;<<TongLuong<<quot; nghin dongquot;<<endl; cout<<“Tong luong: quot;<<TongLuong<<quot; nghin dongquot;<<endl; } } Vòng lặp 23
  24. 24. Vòng lặp không biết trước số lần lặp Bài toán : Mô phỏng hiện tượng rơi tự do của một vật Lập một bảng cho biết độ cao của vật sau mỗi giây Phân tích : Input : Độ cao ban đầu của vật Output : Bảng độ cao sau mỗi giây Trong khi vật rơi, độ cao mà nó đã rơi qua được tính theo công thức : khoảng cách = ½ gt2 (g = 9.80665) 2 Như vậy sau một thời gian t, độ cao của vật so với mặt đất là : Độ cao ban đầu - độ cao đã rơi sau thời gian t Vòng lặp 24
  25. 25. Bài toán mô phỏng rơi tự do Thiết kế thuật toán Nhập dữ liệu độ cao ban đầu Lập bảng cho biết độ cao của vật sau mỗi giây Làm mịn bước lập bảng Khởi tạo độ cao hiện tại của vật là độ cao ban đầu Khởi tạo thời gian là 0 Trong khi (độ cao hiện tại > 0) • Hiển thị thời gian và độ cao hiện tại • Tăng thời gian lên 1 (giây) • Tính lại độ cao hiện tại Vòng lặp 25
  26. 26. Bài toán mô phỏng rơi tự do Cài đặt #include <iostream.h> #include <iomanip.h> void main() { // Khai bao hang va bien const float g = 9.80655; float do_cao_ban_dau; float thoi_gian; float do_cao_hien_tai; // Nhap du lieu cout<<quot;Nhap do cao ban dau cua vat : quot;; cin>>do_cao_ban_dau; Vòng lặp 26
  27. 27. Bài toán mô phỏng rơi tự do Cài đặt // Lap bang do cao // Lap bang do cao cout<<setw(10)<<quot;Thoi gianquot;<<setw(8)<<quot;Do caoquot;<<endl; cout<<setw(10)<<quot;Thoi gianquot;<<setw(8)<<quot;Do caoquot;<<endl; thoi_gian = 0; thoi_gian = 0; do_cao_hien_tai = do_cao_ban_dau; do_cao_hien_tai = do_cao_ban_dau; cout.setf(ios::fixed); cout.setf(ios::fixed); cout.precision(2); cout.precision(2); while (do_cao_hien_tai > 0) while (do_cao_hien_tai > 0) {{ cout<<setw(10)<<thoi_gian<<setw(8)<<do_cao_hien_tai<<endl; cout<<setw(10)<<thoi_gian<<setw(8)<<do_cao_hien_tai<<endl; thoi_gian ++; thoi_gian ++; do_cao_hien_tai = do_cao_ban_dau -- 0.5*g*thoi_gian*thoi_gian; do_cao_hien_tai = do_cao_ban_dau 0.5*g*thoi_gian*thoi_gian; }} cout<<endl; cout<<endl; cout<<quot;CHAM DAT !!!quot;; cout<<quot;CHAM DAT !!!quot;; }} Vòng lặp 27
  28. 28. Bài toán mô phỏng rơi tự do Kiểm tra chương trình Nhap do cao ban dau cua vat : 100 Thoi gian Do cao 0.00 100.00 1.00 95.10 2.00 80.39 3.00 55.87 4.00 21.55 CHAM DAT !!! Vòng lặp 28
  29. 29. Xuất dữ liệu có định dạng Đặt độ rộng để hiển thị giá trị cout.width(4) cout<<setw(4) Đặt dạng hiển thị của số thực cout.setf(ios::fixed) // hiển thị ở dạng dấu chấm cout.setf(ios::scientific) // hiển thị ở dạng khoa học Đặt số chữ số sau dấu chấm cout.precision(2) cout<<setprecision(2) Vòng lặp 29
  30. 30. Vòng lặp không biết trước số lần lặp Mở rộng bài toán : Viết hàm để lập bảng độ cao sau từng giây. Hàm có đầu vào là độ cao ban đầu của vật. Sửa chương trình để cho phép in ra độ cao sau một khoảng thời gian bất kỳ, thay vì sau mỗi giây. Vòng lặp 30

×