• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Bai Giang 3
 

Bai Giang 3

on

  • 1,182 views

 

Statistics

Views

Total Views
1,182
Views on SlideShare
1,181
Embed Views
1

Actions

Likes
0
Downloads
28
Comments
0

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Bai Giang 3 Bai Giang 3 Presentation Transcript

    • 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