Có thể dùng lệnh goto trong thân switch để nhảy đến một lệnh ngoài thân switch Nếu switch nằm trong một hàm nào thì có thể sử dụng lệnh return để ra khỏi hàm đó.. Chú ý: Khi máy nhảy tới
Trang 1CHƯƠNG V
CÁC TOÁN TỬ
ĐIỀU KHIỂN
Trang 2CÁC TOÁN TỬ ĐIỀU KHIỂN
Trang 4printf("\nNhap he so b = "); scanf("%d",&b); printf("\nNhap he so c = "); scanf("%d",&c); del=pow(b,2)-4*a*c;
if (del >= 0)
{
printf("Phuong trinh co nghiem");
x1=(b-sqrt(del))/2*a; x2=(b+sqrt(del))/2*a; printf("\n x1 = %6.2f",x1);
Trang 6- Một dạng khác của kiểu toán tử if lồng nhau:
if (Biểu thức điều kiện 1)
Trang 7Ví dụ:
Viết chương trình nhập vào một số từ 1 đến 7 và cho hiểu thị thư trong tuần.
Trang 8printf("\nNgay thu hai"); else if (t==3)
printf("\nNgay thu ba"); else if (t==4)
printf("\nNgay thu tu"); else if (t==5)
printf("\nNgay thu nam"); else if (t==6)
printf("\nNgay thu sau"); else
printf("\nNgay thu bay"); getch();
}
Trang 9II Toán tử switch
Về ý tưởng gần giống
toán tử Case Of của Pascal Toán tử switch cho phép căn cứ vào giá trị của một
biểu thức nguyên để chọn một trong nhiểu cách nhảy.
Trang 10Cú pháp:
swith (Biểu thức) {
case n1:
<Các câu lệnh>; case n2:
<Các câu lệnh>
case nk:
<các câu lênh>
[default:
<các câu lệnh>;] }
Trang 11Trong đó:
- ni là các số nguyên, hằng ký tự hoặc biểu thức hằng, các ni cần có các giá trị khác nhau.
- Đoạn chương trình đặt giữa { và } chính là thân của switch.
- default là một thành phần không bắt buộc
- Thứ tự của ni và default không theo trật tự nào cả.
- Sự hoạt động của switch tuỳ thuộc vào giá trị của biểu thức.
- Khi biểu thức có giá trị ni thì nhảy tới câu lệnh
ni
- Khi biểu thức khác các giá trị ni thì nhảy đến
câu lệnh có nhãn default (nếu có), hoặc ra khỏi switch.
Trang 12- Ra khỏi switch:
Máy sẽ ra khỏi switch khi gặp lệnh break hoặc gặp
dấu ngoặc đống cuối cùng (})của switch.
Có thể dùng lệnh goto trong thân switch để nhảy đến một lệnh ngoài thân switch
Nếu switch nằm trong một hàm nào thì có thể sử dụng lệnh return để ra khỏi hàm đó.
Chú ý:
Khi máy nhảy tới một lệnh nào thì sự hoạt động tiếp theo của nó sẽ phụ thuộc vào các lệnh đứng sau câu lệnh này.Tức là nếu máy nhảy tới câu lệnh có nhãn case ni thì nó có thể thực hiện tất cả các lệnh sau đó cho tới khi gặp lệnh break, goto hoặc return.
Trang 15III Toán tử goto và nhãn
đi liền sau nó là dấu (:), nhãn có thể gán cho bất kỳ câu lệnh nào trong
Trang 16Chú ý:
- Câu lệnh goto và nhãn cần nằm trong
một hàm Điều đó nói lên rằng: Toán tử goto chỉ cho phép nhảy từ vị trí này sang
vị trí khác trong thân của hàm Không dùng nhảy từ hàm này sang hàm khác.
- Không cho phép dùng toán tử goto để
nhảy từ ngoài vào trong một khối lệnh, nhưng điều ngược lại thì có thể thực hiện được.
IV Toán tử for
Cú pháp:
for (biểu thức 1; biểu thức 2; biểu thức 3)
<Câu lệnh>
Trang 17Chức năng:
Cho thực hiện câu lệnh sau for với số lần định trước bởi các biểu thức trong for.
Trong đó:
giá trị khởi đầu cho biến điều khiển.
- Biểu thức 2: Là một quan hệ logic biểu thị điều kiện để tiếp tục chương trình.
- Biểu thức 3: Là một toán tử gán đùng để thay đổi giá trị của biến điều khiển
- Trong ba Biểu thức trong ngoặc for có thể thiểu không đủ ba hoặc nhiều hơn ba biểu thức
Trang 18Chú ý:
Khi biểu thức 2 vắng mặt thì nó luôn luôn được xem là đúng Trong trường hợp này việc ra khỏi vòng lặp for cần được thực hiện nhờ lệnh break, goto hoặc return.
Trong dấu ngoặc tròn sau từ khoá for gồm ba phần phân cách nhau bởi dấu ; Trong mỗi phần không những có thể viết một biểu thức mà còn có quyền được viết một dãy biểu thức phân cách nhau bởi dấu phẩy (,) Khi đó các biểu thức trong mỗi phần sẽ được xác định lần lượt từ trái sang phải Tính đúng sai của dãy biểu thức trong phần thứ hai được hiểu là tính đúng sai của biểu thức cuối cùng trong dãy này.
Trang 19 Bên trong thân của một toán tử for có thể sử dụng các toán tử for khác Tức là các vòng for lồng nhau.
Khi gặp câu lệnh break trong thân for, máy sẽ ra khỏi toán tử for sâu nhất chứa câu lệnh này
Trong thân for có thể sử dụng toán tử goto để nháy ra khỏi vòng for đến một vị trí bất kỳ nào đó Cũng có thể dùng return trong thân for để trở về một hàm nào đó
Trang 23if (a[i][j]<0) goto timthay;
printf("\n Ma tran khong co phan tu am"); goto kethuc;
Trang 25Ví dụ 3:
Viết chương trình tìm số lớn nhất và nhỏ nhất của từng cột trong ma trận.
Trang 27for (i=0; i<3;++i)
Trang 28VI Toán tử while
Cũng giống như for, toán tử while
dùng để xây dựng vòng lặp, tuy nhiên số lần lặp không xác định trước.
Cú pháp:
while (Biểu thức điều kiện)
<Câu lệnh>
Chức năng:
Câu lệnh vẩn còn được thực hiện
tức là vòng lặp được thực hiên khi
Biểu thức điều kiện còn giá trị
đúng (giá trị khác 0), và Câu lệnh
không được thực hiện tức là ra khỏi
vòng lặp khi Biểu thức điều kiện
có giá trị ngược lại.
Trang 29Chú ý:
không những có thể viết một biểu thức mà còn có quyền được viết một dãy biểu thức phân cách nhau bởi dấu phẩy (,) Tính đúng sai của dãy biểu thức được hiểu là tính đúng sai của biểu thức cuối cùng trong dãy.
có thể sử dụng các toán tử while khác Tức là các vòng while lồng nhau.
máy sẽ ra khỏi toán tử while sâu nhất chứa câu lệnh này
Trang 30 Trong thân while có thể sử dụng toán tử goto để nháy ra khỏi vòng for đến một vị trí bất kỳ nào đó Cũng có thể dùng return trong thân while để trở về một hàm nào đó.
Ví dụ:
Viết chương trình xét xem một số nhập vào từ ban phím có phải là số nguyên tố không
Trang 32VI Toán tử do - while
Ngược với while là kiểm tra biểu thức điều kiện trước khi thực hiện câu lệnh, còn do-while thì thực hiện câu lệnh trước khi kiểm tra biểu thức điều kiện.
Trang 33Câu lệnh vẩn còn được thực hiện tức
là vòng lặp được thực hiên khi Biểu
thức điều kiện còn giá trị sai (giá trị =
0), và Câu lệnh không được thực hiện tức là ra khỏi vòng lặp khi Biểu thức
điều kiện có giá trị ngược lại.
Có thể hiểu là: Biểu thức điều kiện trong while dùng để thực hiện câu lệnh, còn Biểu thức điều kiện trong do-while dùng để thoát khỏi vòng lặp.