SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
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ồ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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Contenu connexe

Tendances

Kieu toc che khuyet diem
Kieu toc che khuyet diemKieu toc che khuyet diem
Kieu toc che khuyet diemZEMA Việt Nam
 
Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)龍一 田中
 
저도 소셜 그래프게임 즐깁니다
저도 소셜 그래프게임 즐깁니다저도 소셜 그래프게임 즐깁니다
저도 소셜 그래프게임 즐깁니다그래프게임 소셜
 
黑客江湖 阿里十周年分享
黑客江湖 阿里十周年分享黑客江湖 阿里十周年分享
黑客江湖 阿里十周年分享ph4nt0m
 
JavaScriptでオブジェクト指向(Javascript/OOP)
JavaScriptでオブジェクト指向(Javascript/OOP)JavaScriptでオブジェクト指向(Javascript/OOP)
JavaScriptでオブジェクト指向(Javascript/OOP)smzk
 
PHP 防駭 - 基礎觀念篇
PHP 防駭 - 基礎觀念篇PHP 防駭 - 基礎觀念篇
PHP 防駭 - 基礎觀念篇Jace Ju
 
Biến ngẫu nhiên liên tục - Xác suất thống kê
Biến ngẫu nhiên liên tục - Xác suất thống kêBiến ngẫu nhiên liên tục - Xác suất thống kê
Biến ngẫu nhiên liên tục - Xác suất thống kêVuKirikou
 
Bi quyet gay dung co nghiep bac ty
Bi quyet gay dung co nghiep bac tyBi quyet gay dung co nghiep bac ty
Bi quyet gay dung co nghiep bac tyGoogle Vũng Tàu
 
CSS 排版 - 基礎觀念篇
CSS 排版 - 基礎觀念篇CSS 排版 - 基礎觀念篇
CSS 排版 - 基礎觀念篇Jace Ju
 
Nuevo testamento hebreo
Nuevo testamento hebreoNuevo testamento hebreo
Nuevo testamento hebreoadams esquivel
 
Web Refactoring
Web RefactoringWeb Refactoring
Web RefactoringJace Ju
 
第2回PHP懇親会発表資料
第2回PHP懇親会発表資料第2回PHP懇親会発表資料
第2回PHP懇親会発表資料Masahiko Sakamoto
 
PHP 物件導向 - 基礎觀念篇
PHP 物件導向 - 基礎觀念篇PHP 物件導向 - 基礎觀念篇
PHP 物件導向 - 基礎觀念篇Jace Ju
 

Tendances (17)

Kieu toc che khuyet diem
Kieu toc che khuyet diemKieu toc che khuyet diem
Kieu toc che khuyet diem
 
dulich 107182
dulich 107182dulich 107182
dulich 107182
 
Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)Web技術勉強会9回目(Slideshare用)
Web技術勉強会9回目(Slideshare用)
 
Ho so-nang-luc-kad
Ho so-nang-luc-kadHo so-nang-luc-kad
Ho so-nang-luc-kad
 
저도 소셜 그래프게임 즐깁니다
저도 소셜 그래프게임 즐깁니다저도 소셜 그래프게임 즐깁니다
저도 소셜 그래프게임 즐깁니다
 
MathSciNet20090526
MathSciNet20090526MathSciNet20090526
MathSciNet20090526
 
黑客江湖 阿里十周年分享
黑客江湖 阿里十周年分享黑客江湖 阿里十周年分享
黑客江湖 阿里十周年分享
 
JavaScriptでオブジェクト指向(Javascript/OOP)
JavaScriptでオブジェクト指向(Javascript/OOP)JavaScriptでオブジェクト指向(Javascript/OOP)
JavaScriptでオブジェクト指向(Javascript/OOP)
 
PHP 防駭 - 基礎觀念篇
PHP 防駭 - 基礎觀念篇PHP 防駭 - 基礎觀念篇
PHP 防駭 - 基礎觀念篇
 
Biến ngẫu nhiên liên tục - Xác suất thống kê
Biến ngẫu nhiên liên tục - Xác suất thống kêBiến ngẫu nhiên liên tục - Xác suất thống kê
Biến ngẫu nhiên liên tục - Xác suất thống kê
 
Zbirka za 5 razred
Zbirka za 5 razredZbirka za 5 razred
Zbirka za 5 razred
 
Bi quyet gay dung co nghiep bac ty
Bi quyet gay dung co nghiep bac tyBi quyet gay dung co nghiep bac ty
Bi quyet gay dung co nghiep bac ty
 
CSS 排版 - 基礎觀念篇
CSS 排版 - 基礎觀念篇CSS 排版 - 基礎觀念篇
CSS 排版 - 基礎觀念篇
 
Nuevo testamento hebreo
Nuevo testamento hebreoNuevo testamento hebreo
Nuevo testamento hebreo
 
Web Refactoring
Web RefactoringWeb Refactoring
Web Refactoring
 
第2回PHP懇親会発表資料
第2回PHP懇親会発表資料第2回PHP懇親会発表資料
第2回PHP懇親会発表資料
 
PHP 物件導向 - 基礎觀念篇
PHP 物件導向 - 基礎觀念篇PHP 物件導向 - 基礎觀念篇
PHP 物件導向 - 基礎觀念篇
 

En vedette

Bai Giang 4
Bai Giang 4Bai Giang 4
Bai Giang 4nbb3i
 
Bai Giang 7
Bai Giang 7Bai Giang 7
Bai Giang 7nbb3i
 
Bai Giang 2
Bai Giang 2Bai Giang 2
Bai Giang 2nbb3i
 
Bai Giang 11
Bai Giang 11Bai Giang 11
Bai Giang 11nbb3i
 
Bai Giang 1
Bai Giang 1Bai Giang 1
Bai Giang 1nbb3i
 
Bai Giang 9
Bai Giang 9Bai Giang 9
Bai Giang 9nbb3i
 
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
 

En vedette (7)

Bai Giang 4
Bai Giang 4Bai Giang 4
Bai Giang 4
 
Bai Giang 7
Bai Giang 7Bai Giang 7
Bai Giang 7
 
Bai Giang 2
Bai Giang 2Bai Giang 2
Bai Giang 2
 
Bai Giang 11
Bai Giang 11Bai Giang 11
Bai Giang 11
 
Bai Giang 1
Bai Giang 1Bai Giang 1
Bai Giang 1
 
Bai Giang 9
Bai Giang 9Bai Giang 9
Bai Giang 9
 
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
 

Dernier

محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdfمحاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdfKhaled Elbattawy
 
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmibookbahareshariat
 
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmibookbahareshariat
 
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmibookbahareshariat
 
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...Eesti Loodusturism
 

Dernier (6)

محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdfمحاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
محاضرات الاحصاء التطبيقي لطلاب علوم الرياضة.pdf
 
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 1 By SadurshSharia Mufti Amjad Ali Azmi
 
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 2 By SadurshSharia Mufti Amjad Ali Azmi
 
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali AzmiBahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
Bahare Shariat Jild 4 By SadurshSharia Mufti Amjad Ali Azmi
 
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
Saunanaine_Helen Moppel_JUHENDATUD SAUNATEENUSE JA LOODUSMATKA SÜNERGIA_strat...
 
Energy drink .
Energy drink                           .Energy drink                           .
Energy drink .
 

Bai Giang 3

  • 1. Ngôn Ngữ Lập Trình C++ Cấu trúc lặp
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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