Ngôn ngữ lập trình C++ - Chương 2: Các kiểu dữ liệu cơ bản, các cấu trúc điều khiển
Đềmục
2.1 Các kiểu dữliệu cơbản
2.2 Các phép gán tắt, phép tăng, phép giảm
2.3 Các phép toán logic
2.4 Thuật toán, mã giả, điều khiển của chương trình, sơ đồkhối
2.5 Sơlược vềcác cấu trúc điều khiển
2.6 Cấu trúc lựa chọn if, if/else
2.7 Phép toán lựa chọn 3 ngôi
2.8 Cấu trúc lặp while
2.9 Thiết lập thuật toán
2.10 Điều khiển lặp bằng con đếm và giá trịcanh
icate successful termination 43 44 } // end function main pow(x,y) = x mũ y Đặt độ rộng của output ít nhất 21 ký tự. Nếu output ít hơn 21 ký tự thì căn phải. ©2004 Trần Minh Châu. FOTECH. VNU. 60 fig02_21.cpp output (1 of 1) Year Amount on deposit 1 1050.00 2 1102.50 3 1157.63 4 1215.51 5 1276.28 6 1340.10 7 1407.10 8 1477.46 9 1551.33 10 1628.89 Các số được căn phải do các lệnh setw (với tham số có giá trị 4 và 21). © 2004 Trần Minh Châu. FOTECH. VNU 61 Chương 2. Cấu trúc đa lựa chọn switch • switch – Test biến với nhiều giá trị – chuỗi các nhãn case – trường hợp default không bắt buộc switch ( variable ) { case value1: // taken if variable == value1 statements break; // necessary to exit switch case value2: case value3: // taken if variable == value2 or == value3 statements break; default: // taken if variable matches no other cases statements break; } © 2004 Trần Minh Châu. FOTECH. VNU 62 Chương 2. Cấu trúc đa lựa chọn switch true false . . . case a case a action(s) break case b case b action(s) break false false case z case z action(s) break true true default action(s) © 2004 Trần Minh Châu. FOTECH. VNU 63 Chương 2. Cấu trúc đa lựa chọn switch • Ví dụ sắp tới – Chương trình đọc xếp loại điểm (A-F) – Hiện số lượng mỗi xếp loại được nhập • Chi tiết về các ký tự – Các ký tự đơn thường được lưu bằng kiểu dữ liệu char • char: số nguyên 1-byte, Æcó thể được lưu dưới dạng các giá trị int – Có thể coi ký tự là int hoặc char • 97 là biểu diễn dạng số của chữ ‘a’ thường (ASCII) • dùng cặp nháy đơn để lấy biểu diễn chữ của ký tự cout << "The character (" << 'a' << ") has the value " ( 'a' ) << endl; In ra dòng: The character (a) has the value 97 ©2004 Trần Minh Châu. FOTECH. VNU. 64 fig02_22.cpp (1 of 4) 1 // Fig. 2.22: fig02_22.cpp 2 // Counting letter grades. 3 #include 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 9 // function main begins program execution 10 int main() 11 { 12 int grade; // one grade 13 int aCount = 0; // number of As 14 int bCount = 0; // number of Bs 15 int cCount = 0; // number of Cs 16 int dCount = 0; // number of Ds 17 int fCount = 0; // number of Fs 18 19 cout << "Enter the letter grades." << endl 20 << "Enter the EOF character to end input." << endl; 21 ©2004 Trần Minh Châu. FOTECH. VNU. 65 fig02_22.cpp (2 of 4) 22 // loop until user types end-of-file key sequence 23 while ( ( grade = cin.get() ) != EOF ) { 24 25 // determine which grade was input 26 switch ( grade ) { // switch structure nested in while 27 28 case 'A': // grade was uppercase A 29 case 'a': // or lowercase a 30 ++aCount; // increment aCount 31 break; // necessary to exit switch 32 33 case 'B': // grade was uppercase B 34 case 'b': // or lowercase b 35 ++bCount; // increment bCount 36 break; // exit switch 37 38 case 'C': // grade was uppercase C 39 case 'c': // or lowercase c 40 ++cCount; // increment cCount 41 break; // exit switch 42 cin.get() sử dụng dot notation (ký hiệu kiểu dấu chấm). Hàm này đọc một ký tự từ bàn phím (sau khi nhấn Enter), và gán giá trị đó cho biến grade. cin.get() trả về EOF (end-of- file), sau khi ký tự EOF được nhập, để đánh dấu kết thúc của dữ liệu vào. EOF có thể là ctrl-d hoặc ctrl-z, tùy theo hệ điều hành. (MS-Windows: ctrl-z, Unix/Linux: ctrl-d) So sánh grade (một biến int) với biểu diễn số của A và a. break kết thúc lệnh switch và chương trình chạy tiếp tại lệnh đầu tiên sau cấu trúc switch. Các lệnh gán là biểu thức có giá trị bằng biến bên trái dấu gán =. Giá trị của lệnh này bằng giá trị trả về bởi hàm cin.get(). Đặc điểm này còn được sử dụng để khởi tạo nhiều biến một lúc: a = b = c = 0; ©2004 Trần Minh Châu. FOTECH. VNU. 66 fig02_22.cpp (3 of 4) 43 case 'D': // grade was uppercase D 44 case 'd': // or lowercase d 45 ++dCount; // increment dCount 46 break; // exit switch 47 48 case 'F': // grade was uppercase F 49 case 'f': // or lowercase f 50 ++fCount; // increment fCount 51 break; // exit switch 52 53 case '\n': // ignore newlines, 54 case '\t': // tabs, 55 case ' ': // and spaces in input 56 break; // exit switch 57 58 default: // catch all other characters 59 cout << "Incorrect letter grade entered." 60 << " Enter a new grade." << endl; 61 break; // optional; will exit switch anyway 62 63 } // end switch 64 65 } // end while 66 Lưu ý trường hợp default bao gồm tất cả các trường hợp còn lại (chưa xét đến). Kiểm tra này là cần thiết vì Enter được nhấn sau mỗi chữ cái xếp loại được nhập. Việc nhấn Enter tạo một ký tự xuống dòng cần được loại bỏ. Cũng như vậy, ta muốn bỏ qua các ký tự trắng. ©2004 Trần Minh Châu. FOTECH. VNU. 67 fig02_22.cpp (4 of 4) 67 // output summary of results 68 cout << "\n\nTotals for each letter grade are:" 69 << "\nA: " << aCount // display number of A grades 70 << "\nB: " << bCount // display number of B grades 71 << "\nC: " << cCount // display number of C grades 72 << "\nD: " << dCount // display number of D grades 73 << "\nF: " << fCount // display number of F grades 74 << endl; 75 76 return 0; // indicate successful termination 77 78 } // end function main ©2004 Trần Minh Châu. FOTECH. VNU. 68 fig02_22.cpp output (1 of 1) Enter the letter grades. Enter the EOF character to end input. a B c C A d f C E Incorrect letter grade entered. Enter a new grade. D A b ^Z Totals for each letter grade are: A: 3 B: 2 C: 3 D: 2 F: 1 © 2004 Trần Minh Châu. FOTECH. VNU 69 Chương 2. Cấu trúc lặp do/while • Tương tự cấu trúc while – Kiểm tra điều kiện tiếp tục lặp ở cuối, không kiểm tra ở đầu – Thân vòng lặp chạy ít nhất một lần • Công thức do { statements } while ( condition ); true false action(s) condition ©2004 Trần Minh Châu. FOTECH. VNU. 70 fig02_24.cpp (1 of 1) fig02_24.cpp output (1 of 1) 1 // Fig. 2.24: fig02_24.cpp 2 // Using the do/while repetition structure. 3 #include 4 5 using std::cout; 6 using std::endl; 7 8 // function main begins program execution 9 int main() 10 { 11 int counter = 1; // initialize counter 12 13 do { 14 cout << counter << " "; // display counter 15 } while ( counter++ <= 10 ); // end do/while 16 17 cout << endl; 18 19 return 0; // indicate successful termination 20 21 } // end function main 1 2 3 4 5 6 7 8 9 10 Chú ý phép tăng trước (preincrement) trong phần kiểm tra điều kiện lặp. © 2004 Trần Minh Châu. FOTECH. VNU 71 Chương 2. Các lệnh break và continue • break – Thoát ngay ra khỏi các cấu trúc while, for, do/while, switch – Chương trình tiếp tục chạy tại lệnh đầu tiên ngay sau cấu trúc • thường được sử dụng để – Thoát khỏi vòng lặp sớm hơn bình thường – bỏ qua phần còn lại của switch ©2004 Trần Minh Châu. FOTECH. VNU. 72 fig02_26.cpp (1 of 2) 1 // Fig. 2.26: fig02_26.cpp 2 // Using the break statement in a for structure. 3 #include 4 5 using std::cout; 6 using std::endl; 7 8 // function main begins program execution 9 int main() 10 { 11 12 int x; // x declared here so it can be used after the loop 13 14 // loop 10 times 15 for ( x = 1; x <= 10; x++ ) { 16 17 // if x is 5, terminate loop 18 if ( x == 5 ) 19 break; // break loop only if x is 5 20 21 cout << x << " "; // display value of x 22 23 } // end for 24 25 cout << "\nBroke out of loop when x became " << x << endl; 26 27 return 0; // indicate successful termination 28 29 } // end function main Thoát khỏi vòng for khi break được thực thi. 1 2 3 4 Broke out of loop when x became 5 © 2004 Trần Minh Châu. FOTECH. VNU 73 Chương 2. Các lệnh break và continue • continue – được dùng trong while, for, do/while – bỏ qua phần còn lại của thân vòng lặp – chạy tiếp lần lặp tiếp theo • với các vòng while và do/while – thực hiện kiểm tra điều kiện lặp ngay sau lệnh continue • với vòng for – biểu thức tăng/giảm biến đếm được thực hiện – sau đó, điều kiện lặp được kiểm tra ©2004 Trần Minh Châu. FOTECH. VNU. 74 fig02_27.cpp (1 of 2) 1 // Fig. 2.27: fig02_27.cpp 2 // Using the continue statement in a for structure. 3 #include 4 5 using std::cout; 6 using std::endl; 7 8 // function main begins program execution 9 int main() 10 { 11 // loop 10 times 12 for ( int x = 1; x <= 10; x++ ) { 13 14 // if x is 5, continue with next iteration of loop 15 if ( x == 5 ) 16 continue; // skip remaining code in loop body 17 18 cout << x << " "; // display value of x 19 20 } // end for structure 21 22 cout << "\nUsed continue to skip printing the value 5" 23 << endl; 24 25 return 0; // indicate successful termination 26 27 } // end function main Bỏ qua phần còn lại của thân vòng for, nhảy đến lần lặp tiếp theo. 1 2 3 4 6 7 8 9 10 Used continue to skip printing the value 5 © 2004 Trần Minh Châu. FOTECH. VNU 75 Chương 2. Lập trình cấu trúc Structured-Programming • Lập trình cấu trúc – Structured programming – Chương trình dễ hiểu, test, tìm lỗi (debug) và dễ sửa đổi hơn • Các quy tắc lập trình cấu trúc – Chỉ sử dụng các cấu trúc điều khiển một đầu vào một đầu ra – Quy tắc 1) Bắt đầu bằng một sơ đồ khối đơn giản nhất 2) Mỗi hình chữ nhật (hành động) có thể được thay bằng một chuỗi gồm 2 hình chữ nhật khác 3) Mỗi hình chữ nhật (hành động) có thể được thay bằng một cấu trúc điều khiển tùy ý (tuần tự, if, if/else, switch, while, do/while hoặc for) 4) Các quy tắc 2 và 3 có thể được áp dụng nhiều lần và theo thứ tự tùy ý © 2004 Trần Minh Châu. FOTECH. VNU 76 Chương 2. Lập trình cấu trúc Structured-Programming Qui tắc 3 Qui tắc 3Qui tắc 3 Mô tả quy tắc 3 (thay một hình chữ nhật tùy ý bằng một cấu trúc điều khiển)
File đính kèm:
- Ngôn ngữ lập trình C++ - Chương 2 Các kiểu dữ liệu cơ bản, các cấu trúc điều khiển.pdf