anhtraidalat Mod
Tổng số bài gửi : 139 Experience : 232 Danh Vọng : 6
| Tiêu đề: Bài Ôn Tập Vòng Lặp Trên Lớp nà . Mon Aug 09, 2010 8:30 pm | |
| Vòng lặp - Loop 1. while và do … while 1 2. Vòng lặp for 3 3. Các trường hợp đặc biệt khi dùng vòng lặp 5 4. Các lỗi và cách sửa 6
1. while và do … while Cú pháp: while ( <điều kiện> ) { <lệnh 1> <lệnh 2> …. } do { <lệnh 1> <lệnh 2> …. } while ( <điều kiện> );
Ý nghĩa: trong khi ( <điều kiện> vẫn còn đúng ) thì thực hiện <lệnh 1> thực hiện <lệnh 2> …
quay lại kiểm tra <điều kiện> nếu đúng thì lặp tiếp, sai thì thoát Thực hiện <lệnh 1> <lệnh 2> … Xong ròi kiểm tra <điều kiện>, nếu đúng thì quay lại lặp tiếp, sai thì thoát
Thí dụ 1: int i = 0; while (i != 0) { i++; }
ngay lúc đầu vòng lặp, điều kiện (i !=0) sai nên sẽ thoát khỏi vòng lặp, câu lệnh i++ ko được thực hiện. Kết quả: i == 0 int j = 0; do{ j++; } while ( j != 0 );
ban đầu vô vòng lặp, câu lệnh j++ sẽ được thực hiện j được tăng lên 1. Sau đó kiểm tra điều kiện j != 0 đúng, nên quay lại đầu vòng lặp, j lại tiếp tục tăng 1 …. Lặp vô tận!!!
Thí dụ 2: int i = 0; while (i <= 0) { i++; }
ngay lúc đầu vòng lặp, điều kiện (i <=0) sai nên sẽ thoát khỏi vòng lặp, câu lệnh i++ ko được thực hiện. Kết quả: i == 0 int j = 0; do{ j++; } while ( j<= 0 );
ban đầu vô vòng lặp, câu lệnh j++ sẽ được thực hiện j được tăng lên 1. Sau đó kiểm tra điều kiện j <= 0 sai, nên thoát khỏi vòng lặp. Kết quả: j == 1
Thí dụ minh họa: Viết chương trình nhập và 2 số a, b. Tính tổng, hiệu, tích, thương. Sau đó cho phép người ta nhập vào 2 số a, b mới và tính toán kết quả. Làm cho đến khi người ta chán thì thôi. Hướng dẫn: Công việc mang tính lặp đi lặp lại, nên dùng vòng lặp. Vì chưa xác định lặp bao nhiêu lần, nên không dùng vòng for được. Dùng while hoặc do … while. while char c; while (1) {
//nhập 2 số a,b //tính tổng hiệu tích thương //xuất kq ra màn hình
//hỏi ý kiến người dùng printf(“Nhập số mới?”); c=getch(); if (c == ‘n’) break; } - while(1) tức là lặp hoài, số khác 0 tương đương với <điều kiện> luôn luôn đúng, số 0 tương đương với <điều kiện> sai. - mới vô khai báo c, c chưa được gán giá trị ban đầu, chtr sẽ gán cho c giá trị bất kỳ, cho nên mình ko nên dùng biến c lúc này. Cách 2 là char c=’a’; while (c != ‘n’) ….
- Cho ng ta nhập vô 1 ký tự, nếu ký tự đó là n thì thoát khỏi vòng lặp, dùng lệnh break, còn không phải thì thôi. - Nếu dùng cách 2 thì ko cần lệnh break vì đã có đk dừng là khi c==’n’. - Những trường hợp dùng while(1) thì cần có lệnh break.
do … while char c; do { //nhập 2 số a,b //tính tổng hiệu tích thương //xuất kq ra màn hình
//hỏi ý kiến người dùng printf(“Nhập số mới?”); c=getch(); } while (c != ‘n’); 2. Vòng lặp for Cú pháp for ( <lệnh 1> ; <điều kiện> ; <lệnh 2>) { <các lệnh bên trong vòng lặp> …. }
Ý nghĩa 1. Mới vô thực hiện <lệnh 1> for ( <lệnh 1> ; <điều kiện> ; <lệnh 2>) { <các lệnh bên trong vòng lặp> …. }
2. Rồi kiểm tra <điều kiện> for ( <lệnh 1> ; <điều kiện> ; <lệnh 2>) { <các lệnh bên trong vòng lặp> …. }
3. Nếu <điều kiện> đúng thì thực hiện <các lệnh bên trong vòng lặp>, nếu sai thì thoát khỏi vòng lặp for ( <lệnh 1> ; <điều kiện> ; <lệnh 2>) { <các lệnh bên trong vòng lặp> …. }
4. Sau khi thực hiện hết <các lệnh bên trong vòng lặp>, quay lại đầu vòng for, thực hiện <lệnh 2> for ( <lệnh 1> ; <điều kiện> ; <lệnh 2>) { <các lệnh bên trong vòng lặp> …. }
5. Kiểm tra <điều kiện>, đúng thì lặp tiếp, sai thì dừng vòng lặp for ( <lệnh 1> ; <điều kiện> ; <lệnh 2>) { <các lệnh bên trong vòng lặp> …. }
6. Cuối mỗi lần lặp, chtr lại thực hiện <lệnh 2>, kiểm tra <điều kiện> …. for ( <lệnh 1> ; <điều kiện> ; <lệnh 2>) { <các lệnh bên trong vòng lặp> …. } Thí dụ: int j; for (j = 0 ; j < 10 ; j++) { <...> } 1. Mới vô gán j = 0, kiểm tra j < 10, đúng thực hiện các lệnh <…> 2. Xong ròi quay lại thực hiện lệnh j++, khi này j==1, kiểm tra j < 10, đúng thực hiện các lệnh <…> 3. Xong ròi quay lại thực hiện lệnh j++, lúc này j==2, kiểm tra j < 10, đúng thực hiện các lệnh <…> 4. … 5. Cho tới j==10, kiểm tra j < 10, sai thoát khỏi vòng lặp. Sau khi thoát khỏi vòng lặp, j có giá trị 10 3. Các trường hợp đặc biệt khi dùng vòng lặp
• while (1) , while (2) , while(100) …. đều là lặp vô tận, vì các số khác 0 coi như là các <điều kiện> luôn luôn đúng. Cho nên cần lệnh break bên trong để thoát khỏi vòng lặp, nếu không chtr lặp hoài thì sao! • while (0) , số 0 tương đương với <điều kiện> sai, tức là ko thực hiện vòng lặp, chẳng có ý nghĩa gì, để vô cho biết chớ chả biết ứng dụng vô chỗ nào. o Tương tự cho for (j = 0 ; 1 ; j++) … • for ( int j = 10 ; j >=0 ; j--) khai báo biến j ngay chỗ này luôn cũng được • j = 2; for ( ; j < 10 ; j ++) có thể đề trống nếu trước đó j đã có giá trị rồi và ta muốn dùng giá trị đó trong vòng lặp. • for ( j = 10 ; j >0 ; j = j – 2) mỗi lần ta có thể giảm j đi vài đơn vị, ko nhất thiết lúc nào cũng j = j +/- 1. j = j *4, j = j/3 vẫn được. • for ( ; ; ; ) ko biết chuyện gì sẽ xảy ra Sinh viên tự nghiên cứu. 4. Các lỗi và cách sửa
|
|