Bài giảng Giới thiệu lập trình - Bài 4: Cấu trúc lặp - Lê Nguyên Khôi

Mệnh Lệnh break & continue 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ìnhMệnh Lệnh break & continue – Ví Dụ 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;

pdf32 trang | Chia sẻ: thucuc2301 | Lượt xem: 674 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Giới thiệu lập trình - Bài 4: Cấu trúc lặp - Lê Nguyên Khôi, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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

Các file đính kèm theo tài liệu này:

  • pdfts_le_nguyen_khoibaigiang04_cautruclap_5294_2032115.pdf