Khoa công nghệ thông tin bài giảng LẬp trình cơ BẢn biên soạn


Bài 4 - ĐIỀU KHIỂN CHỌN VÀ LẶP



tải về 1.56 Mb.
trang8/29
Chuyển đổi dữ liệu30.08.2016
Kích1.56 Mb.
#28834
1   ...   4   5   6   7   8   9   10   11   ...   29

Bài 4 - ĐIỀU KHIỂN CHỌN VÀ LẶP


Nội dung bài học

I. Điều khiển chọn

1. Khối lệnh

2. Cấu trúc IF

3. Cấu trúc SWITCH

4. Ví dụ

II. Điều khiển lặp

1. Cấu trúc FOR

2. Cấu trúc WHILE

3. Cấu trúc DO .. WHILE

4. Lệnh break và continue

III. Bài tập

I. Điều khiển chọn

1. Khối lệnh


Một dãy các khai báo cùng với các câu lệnh nằm trong cặp dấu ngoặc móc { và } được gọi là một khối lệnh.

Ví dụ 1:

{

char ten[30];



printf(“\n Nhap vao ten cua ban:”);

scanf(“%s”, ten);

printf(“\n Chao Ban %s”,ten);

}

Ví dụ 2:

#include

#include

int main ()

{

char ten[50];



printf("Xin cho biet ten cua ban !");

scanf("%s",ten);

getch();

return 0;

}

Một khối lệnh có thể chứa bên trong nó nhiều khối lệnh khác gọi là khối lệnh lồng nhau. Sự lồng nhau của các khối lệnh là không hạn chế.



Minh họa:

{

… lệnh;



{

… lệnh;


{

… lệnh;


}

… lệnh;


}

… lệnh;


}

Lưu ý về phạm vi tác động của biến trong khối lệnh lồng nhau: Trong các khối lệnh khác nhau hay các khối lệnh lồng nhau có thể khai báo các biến cùng tên.

Ví dụ 3:

{

… lệnh;



{

int a,b; /*biến a, b trong khối lệnh thứ nhất*/

… lệnh;

}

…lệnh;



{

int a,b; /*biến a,b trong khối lệnh thứ hai*/

… lệnh;

}

}



Ví dụ 4:

{

int a, b; /*biến a,b trong khối lệnh “bên ngoài”*/



… lệnh;

{

int a,b; /*biến a,b bên trong khối lệnh con*/



}

}

- Nếu một biến được khai báo bên ngoài khối lệnh và không trùng tên với biến bên trong khối lệnh thì nó cũng được sử dụng bên trong khối lệnh.



- Một khối lệnh con có thể sử dụng các biến bên ngoài, các lệnh bên ngoài không thể sử dụng các biến bên trong khối lệnh con.

2. Cấu trúc IF


Cú pháp

if ()
{



}

[else

{



}

]

Lưu đồ cú pháp:




Giải thích:

  • Công việc 1, công việc 2 được thể hiện là 1 câu lệnh hay 1 khối lệnh.

  • Đầu tiên Biểu thức điều kiện được kiểm tra trước.

  • Nếu điều kiện đúng thì thực hiện công việc 1.

  • Nếu điều kiện sai thì thực hiện công việc 2.

  • Việc có thực hiện công việc 2 hay không là một lựa chọn, có thể có hoặc không.


Ví dụ 1: Yêu cầu người thực hiện chương trình nhập vào một số thực a. In ra màn hình kết quả nghịch đảo của a khi a ≠0, khi a =0 in ra thông báo “Khong the tim duoc nghich dao cua a”

#include

#include

int main ()

{

float a;



printf("Nhap a = "); scanf("%f",&a);

if (a !=0 )

printf("Nghich dao cua %f la %f",a,1/a);

else


printf(“Khong the tim duoc nghich dao cua a”);

getch();

return 0;

}

Giải thích:



  • Nếu chúng ta nhập vào a ≠0 thì câu lệnh printf("Nghich dao cua %f la %f",a,1/a)được thực hiện, ngược lại câu lệnh printf(“Khong the tim duoc nghich dao cua a”) được thực hiện.

  • Lệnh getch() luôn luôn được thực hiện.

  • Chạy từng bước dạng Debug, view các biến a, b và biểu thức a>b

Ví dụ 2: Yêu cầu người chạy chương trình nhập vào giá trị của 2 số a và b, nếu a lớn hơn b thì in ra thông báo “Gia trị của a lớn hơn giá trị của b, giá trị của 2 số”, ngược lại thì in ra màn hình câu thông báo “Giá trị của a nhỏ hơn hoặc bằng giá trị của b, giá trị của 2 số”.

#include

#include

int main ()

{

int a, b;



printf("Nhap vao gia tri cua 2 so a va b !");

scanf("%d%d",&a,&b);

if (a>b)

{

printf("\n a lon hon b”);



printf("\n a=%d b=%d ",a,b);

}

else



{

printf("\n a nho hon hoac bang b");

printf("\n a=%d b=%d",a,b);

}

printf("\n Thuc hien xong lenh if");



getch();

return 0;

}

Ví dụ 3: Yêu cầu người thực hiện chương trình nhập vào một số nguyên dương là tháng trong năm và in ra số ngày của tháng đó.


  • Tháng có 31 ngày: 1, 3, 5, 7, 8, 10, 12;

  • Tháng có 30 ngày: 4, 6, 9, 10 ;

  • Tháng có 28 hoặc 29 ngày : 2

#include

#include

int main ()

{

int thg;



printf("Nhap vao thang trong nam !");

scanf("%d",&thg);

if(thg==1||thg==3||thg==5||thg==7||thg==8||thg==10||thg==12)

{

printf("\n Thang %d co 31 ngay ",thg);



}

else


{

if (thg==4||thg==6||thg==9||thg==11)

printf("\n Thang %d co 30 ngay",thg);

else if (thg==2)

printf("\n Thang %d co 28 hoac 29 ngay",thg);

else printf("Khong co thang %d",thg);

printf("\n Thuc hien xong lenh if");

}

getch();



return 0;

}

Lưu ý:



  • Ta có thể sử dụng các câu lệnh if…else lồng nhau. Trong trường hợp if…else lồng nhau thì else sẽ kết hợp với if gần nhất chưa có else;

  • Trong trường hợp câu lệnh if “bên trong” không có else thì phải viết nó trong cặp dấu {} (coi như là khối lệnh) để tránh sự kết hợp else if sai; Ví dụ:

if ( so1>0)

if (so2 > so3)

a=so2;

else /*else của if (so2>so3) */



a=so3;

Hoặc:


if (so1>0)

{

if (so2>so3) /*lệnh if này không có else*/



a=so2;

}

else /*else của if (so1>0)*/



a=so3;

  • Nếu sau biểu thức logic của if ta có dấu chấn phảy, ví dụ:

if (a==0);

{

printf("Nghich dao cua %f la %f",a,1/a);



}

Thì về cú pháp trình biên dịch sẽ không báo sai, nhưng xét về ý nghĩa là sai.


3. Cấu trúc SWITCH


Cấu trúc lựa chọn cho phép lựa chọn một trong nhiều trường hợp. Trong C, đó là câu lệnh switch.

Cú pháp:

switch (<Biểu thức>)

{

case giá_trị_1:

{

Công việc 1;

break;

}



case giá_trị_n:

{

Công việc N;

break;

}

[default :

{

Công việc N+1;

break;

} ]



}

Lưu đồ:


Giải thích:



  • Tính giá trị của Biểu thức;

  • Nếu giá trị của biểu thức bằng Giá trị 1 thì thực hiện Công việc 1 rồi thoát;

  • Nếu giá trị của biểu thức khác Giá trị 1 thì so sánh với Giá trị 2, nếu bằng thì thực hiện Công việc 2 rồi thoát;

  • Tiếp tục so sánh với Giá trị N nếu n-1 giá trị trước đó không bằng giá trị của Biểu thức.

  • Nếu tất cả các phép so sánh trên đều sai thì có thể chọn thực hiện (hay không) Công việc N+1 (Công việc mặc định).

Lưu ý:

  • Biểu thức trong switch() phải có kết quả là giá trị kiểu số nguyên (int, char, long,…);

  • Các giá trị sau case cũng phải là kiểu số nguyên;

  • Không bắt buộc phải có default;

Ví dụ 1: Nhập vào một số nguyên, chia số nguyên này cho 2 lấy phần dư. Kiểm tra nếu phần dư bằng 0 thì in ra thông báo “số chẵn”, nếu số dư bằng 1 thì in thông báo “số lẻ”.

#include

#include

int main ()

{

int songuyen, phandu;



printf("\n Nhap vao so nguyen ");

scanf("%d",&songuyen);

phandu=(songuyen % 2);

switch(phandu)

{

case 0: printf("%d la so chan ",songuyen);



break;

case 1: printf("%d la so le ",songuyen);

break;

}

getch();



return 0;

}

Ví dụ 2: Nhập vào 2 số nguyên và 1 phép toán. Nếu phép toán là ‘+’, ‘-‘, ‘*’ thì in ra kết qua là tổng, hiệu, tích của 2 số; Nếu phép toán là ‘/’ thì kiểm tra xem số thứ 2 có khác không hay không? Nếu khác không thì in ra thương của chúng, ngược lại thì in ra thông báo “khong chia cho 0”.

#include

#include

int main ()

{

int so1, so2;



float thuong;

char pheptoan;

printf("\n Nhap vao 2 so nguyen ");

scanf("%d%d",&so1,&so2);

fflush(stdin); //Xoa ky tu enter trong vung dem truoc khi nhap phep toan

printf("\n Nhap vao phep toan ");

scanf("%c",&pheptoan);

switch(pheptoan)

{

case '+':



printf("\n %d + %d =%d",so1, so2, so1+so2);

break;


case '-':

printf("\n %d - %d =%d",so1, so2, so1-so2);

break;

case '*':

printf("\n %d * %d =%d",so1, so2, so1*so2);

break;


case '/':

if (so2!=0){

thuong=float(so1)/float(so2);

printf("\n %d / %d =%f", so1, so2, thuong);

}

else printf("Khong chia duoc cho 0");



break;

default :

printf("\n Chua ho tro phep toan %c", pheptoan);

break;


}

getch();

return 0;

}

Trong ví dụ trên, tại sao phải xóa ký tự trong vùng đệm trước khi nhập phép toán?



Ví dụ 3: Yêu cầu người thực hiện chương trình nhập vào một số nguyên dương là tháng trong năm và in ra số ngày của tháng đó.

  • Tháng có 31 ngày: 1, 3, 5, 7, 8, 10, 12 ;

  • Tháng có 30 ngày: 4, 6, 9, 10;

  • Tháng có 28 hoặc 29 ngày : 2

  • Nếu nhập vào số <1 hoặc >12 thì in ra câu thông báo “không có tháng này “.

#include

#include

int main ()

{

int thang;



printf("\n Nhap vao thangs trong nam ");

scanf("%d",&thang);

switch(thang)

{

case 1:



case 3:

case 5:


case 7:

case 8:


case 10:

case 12:

printf("\n Thang %d co 31 ngay ",thang);

break;


case 4:

case 6:


case 9:

case 11:

printf("\n Thang %d co 30 ngay ",thang);

break;


case 2:

printf ("\ Thang 2 co 28 hoac 29 ngay");

break;

default :



printf("\n Khong co thang %d", thang);

break;


}

getch();

return 0;

}


Каталог: files -> FileMonHoc
FileMonHoc -> NGÂn hàng câu hỏi lập trình cơ BẢn nhóm câu hỏI 2 ĐIỂM
FileMonHoc -> CHƯƠng 2 giới thiệu về LÝ thuyết số
FileMonHoc -> CÁc hệ MẬt khoá CÔng khai kháC
FileMonHoc -> BỘ MÔn duyệt chủ nhiệm Bộ môn
FileMonHoc -> Khoa công nghệ thông tin cộng hòa xã HỘi chủ nghĩa việt nam
FileMonHoc -> Chủ nhiệm Bộ môn Ngô Thành Long ĐỀ CƯƠng chi tiết bài giảNG
FileMonHoc -> Chủ nhiệm Bộ môn Phan Nguyên Hải ĐỀ CƯƠng chi tiết bài giảNG
FileMonHoc -> Khoa: CÔng nghệ thông tin cộng hòa xã HỘi chủ nghĩa việt nam
FileMonHoc -> MẬt mã khóA ĐỐi xứng lý thuyết cơ bản của Shannon
FileMonHoc -> Khoa cntt cộng hòa xã HỘi chủ nghĩa việt nam

tải về 1.56 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   4   5   6   7   8   9   10   11   ...   29




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương