Bài giảng Giới thiệu lập trình - Cấu trúc lặp - Lê Nguyên Khôi
Tóm tắt Bài giảng Giới thiệu lập trình - Cấu trúc lặp - Lê Nguyên Khôi: ...iều khiển khởi tạo trong cấu trúc lặp Khi nào thì in ra tổng Kết thúc vòng lặp, in ra tổng (như yêu cầu) Thân vòng lặp Cộng số nguyên dương tiếp theo vào tổng Khi nào thì kết thúc lặp Cộng xong N số nguyên dương (biến điều khiển) Giới Thiệu Lập Trình Cấu Trúc Lặp Giới Hạn for 10...iá trị biến điều khiển 5. Quay lại bước 2 6. Nếu không (BiểuThứcLôgic sai), kết thúc lặp Giới Thiệu Lập Trình Cấu Trúc Lặp Không Giới Hạn while 16 Nhập số khác 0, tính tổng và in ra tổng hiện tại Giới Thiệu Lập Trình int tong = 0; // biến tính tổng int input; // biến điều khiển std::cin ...ánh 22Giới Thiệu Lập Trình int input; do { std::cin >> input; } while (input <= 0); int input; std::cin >> input; while (input <= 0) { std::cin >> input; } int input; std::cin >> input; for ( ; input <= 0; ) { std::cin >> input; } Cấu Trúc Lặp – S...
Giới Thiệu Lập Trình Cấu Trúc Lặp TS. Lê Nguyên Khôi Trường Đại học Công nghệ, ĐHQGHN Nội Dung 1 Cấu trúc lặp: for while do while Giới Thiệu Lập Trình Cấu Trúc Điều Khiển – Lặp 2 Mô hình hành động lặp một số lần cố định In ra “teacher is so cool” 10 lần Chạy hàm tính điểm sinh viên 1000 lần Chạy 5 vòng quanh sân vận động Số lần lặp có thể không biết Quấy súp cho đến khi đặc Nhập vào một số nguyên dương Chọn một số ngẫu nhiên tới khi trúng thưởng Tương ứng với lặp giới hạn (trên) và lặp không giới hạn (dưới) Giới Thiệu Lập Trình Cấu Trúc Lặp Giới Hạn 3 Xét bài toán in ra 3 dấu sao std::cout << "*"; std::cout << "*"; std::cout << "*"; Xét bài toán in ra 4 dấu sao std::cout << "*"; std::cout << "*"; std::cout << "*"; std::cout << "*"; Xét bài toán in ra N dấu sao std::cout << "*"; ? Giới Thiệu Lập Trình Cấu Trúc Lặp Giới Hạn 4 Mô hình hành động lặp: Dựa trên số lần lặp N Có thể cần một biết đếm bắt đầu từ 0 Tăng biết đếm thêm 1 sau mỗi lần lặp Khi đó lặp lại hành động, ví dụ std::cout << "*"; Cho đến khi biết đếm tới giá trị của N Và dừng lại Giới Thiệu Lập Trình Cấu Trúc Lặp Giới Hạn for 5 Cú pháp: for (MệnhLệnh1; BiểuThứcLôgic; MệnhLệnh2) { // thân vòng lặp } MệnhLệnh1 khởi tạo biến đếm (biến điều khiển) Chỉ thực hiện một lần duy nhất khi bắt đầu lặp MệnhLệnh2 thay đổi biến đếm (biến điều khiển) BiểuThứcLôgic điều khiển quá trình lặp (với điều kiện nào thì tiếp tục lặp) Giới Thiệu Lập Trình Cấu Trúc Lặp Giới Hạn for 6 Cú pháp: for (MệnhLệnh1; BiểuThứcLôgic; MệnhLệnh2) { // thân vòng lặp } Ý nghĩa: 1. MệnhLệnh1 khởi tạo biến điều khiển 2. Nếu BiểuThứcLôgic đúng 3. Mệnh lệnh trong thân vòng lặp thực hiện 4. Thay đổi giá trị biến điều khiển (MệnhLệnh2) 5. Quay lại bước 2 6. Nếu không (BiểuThứcLôgic sai), kết thúc lặp Giới Thiệu Lập Trình Cấu Trúc Lặp Giới Hạn for 7 Ví dụ: Với N = 4 Giá trị của n i=0 i=1 i=2 i=3 i=4 Điều khiển lặp true true true true false Kết quả * * * * Giới Thiệu Lập Trình // i là biến đếm (biến điều khiển) for (int i = 0; i < N; i = i + 1) { std::cout << "*"; } Cấu Trúc Lặp Giới Hạn for – Ví Dụ 8Giới Thiệu Lập Trình for (int i = 0; i < 25; i = i + 1) { std::cout << "teacher is so cool\n"; } for (int i = 1000; i > 0; i = i - 1) { tinhDiem(); } for (int i = 0; i < 5; i = i + 1) { chạy 5 vòng quanh sân vận động; } Cấu Trúc Lặp Giới Hạn for – Ví Dụ 9 In ra tổng của N số nguyên dương đầu tiên Cần bao nhiêu biến (ngoại trừ N, được nhập) 2 biến: biến điều kiển, biến lưu tổng Khởi tạo ở đâu Biến lưu tổng khởi tạo ngoài cấu trúc lặp Biến điều khiển khởi tạo trong cấu trúc lặp Khi nào thì in ra tổng Kết thúc vòng lặp, in ra tổng (như yêu cầu) Thân vòng lặp Cộng số nguyên dương tiếp theo vào tổng Khi nào thì kết thúc lặp Cộng xong N số nguyên dương (biến điều khiển) Giới Thiệu Lập Trình Cấu Trúc Lặp Giới Hạn for 10 In ra tổng của N số nguyên dương đầu tiên Giới Thiệu Lập Trình int tong = 0; for (int i = 1; i <= N; i = i + 1) { tong = tong + i; } std::cout << tong; Cấu Trúc Lặp Giới Hạn for 11 In ra tích của N số nguyên dương đầu tiên Giới Thiệu Lập Trình int tich = 1; for (int i = 1; i <= N; i = i + 1) { tich = tich * i; } std::cout << tich; Cấu Trúc Lặp Không Giới Hạn 12 Nếu số nhập vào khác 0, cộng vào tổng và in ra tổng hiện tại, ví dụ Nhập số (0 để kết thúc): 5 Tổng = 5 Nhập số (0 để kết thúc): -2 Tổng = 3 Nhập số (0 để kết thúc): 6 Tổng = 9 Nhập số (0 để kết thúc): 0 Khác biệt: không biết bao nhiêu lần lặp Giới Thiệu Lập Trình Cấu Trúc Lặp Không Giới Hạn – Ví Dụ 13 Nếu số nhập vào khác 0, cộng vào tổng và in ra tổng hiện tại Khi nào vòng lặp bắt đầu Nhập vào một số Cuối cùng vòng lặp làm gì Nhập vào một số Khi nào kết thúc vòng lặp Khi số nhập vào bằng 0 Mệnh lệnh được lặp Cộng số vừa nhập vào tổng Sau đó in ra tổng hiện thời Giới Thiệu Lập Trình Cấu Trúc Lặp Không Giới Hạn while 14 Cú pháp: // khởi tạo biến điều khiển while (BiểuThứcLôgic) { // thân vòng lặp // thay đổi giá trị biến điều khiển } BiểuThứcLôgic điều khiển quá trình lặp (với điều kiện nào thì tiếp tục lặp) Giới Thiệu Lập Trình Cấu Trúc Lặp Không Giới Hạn while 15 Cú pháp: while (BiểuThứcLôgic) { // thân vòng lặp } Ý nghĩa: 1. Khởi tạo biến điều khiển 2. Nếu BiểuThứcLôgic đúng 3. Mệnh lệnh trong thân vòng lặp thực hiện 4. Thay đổi giá trị biến điều khiển 5. Quay lại bước 2 6. Nếu không (BiểuThứcLôgic sai), kết thúc lặp Giới Thiệu Lập Trình Cấu Trúc Lặp Không Giới Hạn while 16 Nhập số khác 0, tính tổng và in ra tổng hiện tại Giới Thiệu Lập Trình int tong = 0; // biến tính tổng int input; // biến điều khiển std::cin >> input; while (input != 0) { tong = tong + input; std::cout << tong << std::endl; std::cin >> input; } Cấu Trúc Lặp Không Giới Hạn while 17 Chọn một số ngẫu nhiên tới khi trúng thưởng Giới Thiệu Lập Trình int soLanChoi = 1; int kq = taoSoNgauNhien(XO_SO); int duDoan; std::cin >> duDoan; bool trungThuong = kq == duDoan; while (!trungThuong) { soLanChoi = soLanChoi + 1; kq = taoSoNgauNhien(XO_SO); std::cin >> duDoan; trungThuong = kq == duDoan; } Cấu Trúc Lặp Không Giới Hạn do while 18 Đôi khi cần thực hiện thân vòng lặp trước khi kiểm tra điều kiện lặp do { nhặt một lá bài } while (lá bài không phải chất cơ); Giới Thiệu Lập Trình Cấu Trúc Lặp Không Giới Hạn do while 19 Cú pháp: // khởi tạo biến điều khiển do { // thân vòng lặp // thay đổi giá trị biến điều khiển } while (BiểuThứcLôgic); BiểuThứcLôgic điều khiển quá trình lặp (với điều kiện nào thì tiếp tục lặp) Lưu ý: cuối cùng của mệnh lệnh while là dấu “;” Giới Thiệu Lập Trình Cấu Trúc Lặp Không Giới Hạn do while 20 Cú pháp: do { // thân vòng lặp } while (BiểuThứcLôgic); Ý nghĩa: 1. khởi tạo biến điều khiển 2. Mệnh lệnh trong thân vòng lặp thực hiện 3. Nếu BiểuThứcLôgic đúng 4. Quay lại bước 2 5. Nếu không (BiểuThứcLôgic sai), kết thúc lặp Giới Thiệu Lập Trình Cấu Trúc Lặp Không Giới Hạn do while 21 Yêu cầu nhập vào một số nguyên dương Giới Thiệu Lập Trình int input; do { std::cin >> input; } while (input <= 0); Cấu Trúc Lặp – So Sánh 22Giới Thiệu Lập Trình int input; do { std::cin >> input; } while (input <= 0); int input; std::cin >> input; while (input <= 0) { std::cin >> input; } int input; std::cin >> input; for ( ; input <= 0; ) { std::cin >> input; } Cấu Trúc Lặp – So Sánh 23 for Thường dùng khi biết chính xác số lần lặp while Linh hoạt nhất Không có nhược điểm do while Kém linh hoạt Luôn thực hiện thân vòng lặp ít nhất một lần Giới Thiệu Lập Trình Cấu Trúc Lặp – Lỗi Thường Gặp 24 Vòng lặp vô hạn Cấu trúc while, có dấu “;” Sử dụng phép gán thay vì phép so sánh bằng Giới Thiệu Lập Trình while (input <= 0); { std::cin >> input; } while (i = 1) { std::cout << "*"; } Cấu Trúc Lặp – Lỗi Thường Gặp 25 Vòng lặp vô hạn Khi N lẻ hoặc âm Giới Thiệu Lập Trình int i = 0; while (i != N) { std::cout << "*"; i = i + 2; } Mệnh Lệnh break & continue 26 Luồng điều khiển: Cấu trúc lặp thể hiện một cách rõ ràng luồng điều khiển, khi nào bắt đầu, khi nào kết thúc một lần lặp Trong một vài trường hợp, có thể cần thay đổi luồng lặp tự nhiên Mệnh lệnh break Dừng vòng lặp ngay lập tức, kể cả khi điều kiện lặp vẫn đang đúng Mệnh lệnh continue Bỏ qua phần còn lại của thân vòng lặp, bắt đầu một vòng lặp mới (kiểm tra điều kiện, lăp, ) Giới Thiệu Lập Trình Mệnh Lệnh break & continue – Ví Dụ 27 Nhập vào 4 số nguyên dương, và tính tổng Giới Thiệu Lập Trình int soND, tong = 0, dem = 1; while (dem <= 4) { do { std::cin >> soND; } while (soND <= 0); tong = tong + soND; dem = dem + 1; } std::cout << tong; Mệnh Lệnh break & continue – Ví Dụ 28 Nhập vào 4 số nguyên dương, và tính tổng Giới Thiệu Lập Trình int soND, tong = 0, dem = 0; while (dem < 4) { std::cin >> soND; if (soND <= 0) { continue; } tong = tong + soND; dem = dem + 1; } std::cout << tong; Mệnh Lệnh break & continue – Ví Dụ 29 Nhập vào 4 số nguyên dương, và tính tổng. Dừng khi nhập số âm, in ra số lượng các số Giới Thiệu Lập Trình int soND, tong = 0, dem = 0; while (dem < 4) { std::cin >> soND; if (soND <= 0) { break; } tong = tong + soND; dem = dem + 1; } std::cout << tong << " " << dem; Mệnh Lệnh break & continue – Ví Dụ 30 Nhập vào 4 số nguyên dương, và tính tổng. Nếu nhập vào số âm dừng, in số các số Giới Thiệu Lập Trình int soND, tong = 0, dem = 0; while (dem < 4) { std::cin >> soND; if (soND > 0) { tong = tong + soND; dem = dem + 1; } else { // ? } } std::cout << tong << " " << dem; Tham Khảo 31 Đọc sách: Chương 3, Lập Trình Cơ Bản C++ Giới Thiệu Lập Trình
File đính kèm:
- bai_giang_gioi_thieu_lap_trinh_cau_truc_lap_le_nguyen_khoi.pdf