Chng 2 Cu trc iu khin Cu trc

  • Slides: 49
Download presentation
Chương 2 Cấu trúc điều khiển

Chương 2 Cấu trúc điều khiển

Cấu trúc điều khiển �Cấu trúc tuần tự �Cấu trúc lựa chọn �Cấu trúc

Cấu trúc điều khiển �Cấu trúc tuần tự �Cấu trúc lựa chọn �Cấu trúc lặp

Cấu trúc tuần tự �Các lệnh trong chương trình thực hiện tuâ n tư

Cấu trúc tuần tự �Các lệnh trong chương trình thực hiện tuâ n tư từ trên xuống. .

void main() { Ví dụ Bắt đầu int a, b, tong, hieu, tich; float

void main() { Ví dụ Bắt đầu int a, b, tong, hieu, tich; float thuong; printf(“Nhap vao a: “); scanf(“%d”, &a); printf("Nhap vao b: “); scanf(“%d”, &b); tong = a + b; hieu = a - b; tich = a * b; thuong = (float)a / b; //Ép kiểu printf("Tong=%d ", tong); printf(“n. Hieu=%d“, hieu); printf(“n. Tich=%d“, tich); Kết thúc printf(“n. Thuong= %f“, thuong); 4 }

Cấu trúc lựa chọn �Cấu trúc lựa chọn cho phép máy tính chọn thực

Cấu trúc lựa chọn �Cấu trúc lựa chọn cho phép máy tính chọn thực hiện một khối lệnh nào đó dựa vào kết quả của biểu thức điều kiện. �Có hai dạng: �If … Else

Cấu trúc lựa chọn �Cấu trúc If if (biê u thư c điê u

Cấu trúc lựa chọn �Cấu trúc If if (biê u thư c điê u kiê n) { <khô i lê nh> ; } Nê u biê u thư c điê u kiê n cho kê t qua true thi thư c hiê n khô i lê nh bên trong if.

Vi du : Viết chương trình nhập vào một số nguyên từ 1 đến

Vi du : Viết chương trình nhập vào một số nguyên từ 1 đến 10, nếu nhập sai thì hiển thị thông báo void main() { int k; printf(“Nhap mot so [1. . 10]: “); scanf(“%d”, &k); if (k < 1 || k > 10) { printf("So vua nhap khong hop le“); } }

Cấu trúc lựa chọn �Cấu trúc If … Else if (biê u thư c

Cấu trúc lựa chọn �Cấu trúc If … Else if (biê u thư c điê u kiê n) { <khô i lê nh 1>; } else { <khô i lê nh 2>; } Nê u biê u thư c điê u kiê n cho kê t qua true thi thư c hiê n khô i lê nh 1, ngươ c la i thư c hiê n khô i lê nh 2

Ví dụ: Nhập vào số nguyên a và b, nếu a là bội số

Ví dụ: Nhập vào số nguyên a và b, nếu a là bội số của b thì in thông báo “a là bội số của b”, ngược lại in “a không là bội số của b”

Begin printf(“Nhap vao a: “); scanf(“%d”, &a); printf(“Nhap vao b: “); scanf(“%d”, &)b; Lưu

Begin printf(“Nhap vao a: “); scanf(“%d”, &a); printf(“Nhap vao b: “); scanf(“%d”, &)b; Lưu đồ thuật toán if(a%b==0) else { printf(“a khong la boi so cua b“); } End { } printf(“a la boi so cua b“);

Chương trình cài đặt: void main() { int a, b; printf("Nhap so a: ");

Chương trình cài đặt: void main() { int a, b; printf("Nhap so a: "); scanf("%d", &a); printf("Nhap so b: "); scanf("%d", &b); if(a%b==0) printf("%d la boi so cua %d", a, b); else printf("%d khong la boi so cua %d", a, b); }

�Vi du : Gia i và biê n luâ n phương tri nh phương

�Vi du : Gia i và biê n luâ n phương tri nh phương trình bậc 1 ax+b=0

Begin Lưu đồ thuật toán End

Begin Lưu đồ thuật toán End

Cài đặt void main() { float a, b; printf("Nhap so a: "); scanf("%f", &a);

Cài đặt void main() { float a, b; printf("Nhap so a: "); scanf("%f", &a); printf("Nhap so b: "); scanf("%f", &b); if (a==0) if (b==0) printf("Phuong trinh vo so nghiem"); else printf("Phuong trinh vo nghiem"); else printf("Phuong trinh co nghiem x = %. 2 f", -b/a); }

Bài tập 1 1. Cho biết kết quả của chương trình sau: int a=9,

Bài tập 1 1. Cho biết kết quả của chương trình sau: int a=9, b=6; a++; a=a+b--; a=a+(--b); if(a%2==0) printf(“Gia tri cua a la chan”); printf(“Tong cua a va b la: %d“, a + b);

2. Cho biết kết quả của chương trình sau: int a=7, b=8; a++; a=a+b--;

2. Cho biết kết quả của chương trình sau: int a=7, b=8; a++; a=a+b--; --b; a--; a = (--a)+(--b); if(a%2 != 0) printf(“a la so le”); else printf(“a la so chan”; Printf(“Gia tri cua a: %d“, a);

Bài tập 2: Viết chương trình 1. Nhâ p từ ba n phi m

Bài tập 2: Viết chương trình 1. Nhâ p từ ba n phi m hai sô nguyên a, b. In ra ma n hi nh giá tri số lơ n nhâ t. 2. Nhập từ ba n phi m ba sô nguyên a, b, c. In ra màn hình số lơ n nhâ t. 3. Nhập từ bàn phím ba sô nguyên a, b, c. Ha y in ra ma n hi nh theo thứ tự tăng dần. (Chi đươ c du ng thêm hai biê n phu ).

Bài tập 2: Viết chương trình 4. Viê t chương tri nh nhâ p

Bài tập 2: Viết chương trình 4. Viê t chương tri nh nhâ p va o mô t sô nguyên n gô m ba chữ sô. Xuâ t ra ma n hi nh vị trí của chư sô lơ n nhâ t Vi du : n=291. Chư sô lơ n nhâ t nă m ơ ha ng chu c (chữ số 9). 5. Viê t chương tri nh nhâ p va o sô nguyên n gô m ba chữ sô. Xuâ t ra ma n hi nh theo thứ tư tăng dâ n cu a ca c chữ sô. Vi du : n=291. Xuâ t ra 129. 6. Viê t chương tri nh ti nh diê n ti ch và chu vi ca c hi nh: tam gia c, hi nh vuông, hi nh chữ nhâ t và hi nh tro n vơ i như ng thông tin câ n đươ c nhâ p từ ba n phi m

Bài tập 3* 1. Nhâ p va o nga y, tha ng, năm. Kiê

Bài tập 3* 1. Nhâ p va o nga y, tha ng, năm. Kiê m tra xem nga y, tha ng, năm đo co hơ p lê hay không? In kê t qua ra ma n hi nh. 2. Nhâ p va o giơ , phu t, giây. Kiê m tra xem giơ , phu t, giây đo co hơ p lê hay không? In kê t qua ra ma n hi nh. 3. Viê t chương tri nh nhâ p va o nga y, tha ng, năm hơ p lê. Cho biê t năm na y co pha i la năm nhuâ n hay không? In kê t qua ra ma n hi nh. 4. Nhâ p va o 3 sô nguyên dương. Kiê m tra xem 3 sô đo co lâ p tha nh tam gia c không? Nê u co ha y cho biê t tam gia c đo thuô c loa i na o

 • Cấu trúc switch (biê u thư c) case n 1: ca c

• Cấu trúc switch (biê u thư c) case n 1: ca c câu lê nh ; break ; case n 2: ca c câu lê nh ; break ; ……… case nk: <ca c câu lê nh> ; break ; [default: ca c câu lê nh] Giá trị biểu thức = n 1 Giá trị biểu thức = n 2 Các trường hợp còn lại

�Cấu trúc switch �ni la ca c hă ng sô nguyên hoặc ký tư.

�Cấu trúc switch �ni la ca c hă ng sô nguyên hoặc ký tư. �ni phụ thuộc vào giá tri cu a biê u thư c sau switch - Nê u: giá trị của biểu thức = ni thư c hiê n câu lê nh sau case ni. - Nếu gia tri biê u thư c không tho a ca c ni thư c hiê n câu lê nh sau default nê u co , hoă c thoa t kho i câu lê nh switch. - Mặc định chương trình thực hiện tuần tự các câu lệnh của các case ni, do đó sau mỗi case phải dùng lệnh break để thoát khỏi switch.

Ví dụ: Nhập vào số nguyên n có giá trị từ 1 đến 12.

Ví dụ: Nhập vào số nguyên n có giá trị từ 1 đến 12. In ra màn hình tháng tương ứng, nếu n có giá trị <1 hoặc >12 thì in ra chuỗi “tháng không hợp lệ”. void main() { int n; printf(“Nhap vao n (1<=n<=12): “); scanf(“%d”, &n); switch (n) { case 1: ptintf(“thang mot”); break; case 2: ptintf(“thang hai“); break; case 3: printf(“thang ba”); break; … case 12: printf(“thang 12”); break; default : printf(“thang khong hop le“); } } 22

Bài tập 1. Viết chương trình nhập vào 1 số nguyên dương gồm 3

Bài tập 1. Viết chương trình nhập vào 1 số nguyên dương gồm 3 chữ số, in ra cách đọc của số này 2. Viết chương trình nhập vào ngày tháng năm, kiểm tra xem ngày tháng năm có hợp lệ không? In kết quả kiểm tra ra màn hình

Cấu trúc lặp �Tổng quát

Cấu trúc lặp �Tổng quát

Cấu trúc lặp For for (<khởi gán> ; <điều kiện lặp> ; <cập nhật>)

Cấu trúc lặp For for (<khởi gán> ; <điều kiện lặp> ; <cập nhật>) { <khô i lê nh>; }

Cấu trúc lặp For �Cấu trúc For � Khởi gán: khởi gán giá trị

Cấu trúc lặp For �Cấu trúc For � Khởi gán: khởi gán giá trị ban đầu cho biến điều khiển vòng lặp � Điều kiện lặp: kiểm tra điều kiện thực hiện vòng lặp � Cập nhật: cập nhật giá trị của biến điều khiển vòng lặp Bất kỳ đối số nào trong câu lệnh for đều có thể thiếu nhưng phải có dấu châ m phâ y (; ) để phân cách.

Cấu trúc lặp For �Các bước thực hiện vòng lặp for �Bươ c 1:

Cấu trúc lặp For �Các bước thực hiện vòng lặp for �Bươ c 1: Khơ i ga n �Bươ c 2: Kiê m tra điê u kiê n - - Nê u giá trị của biểu thức điều kiện bằng true thi - Thư c hiê n ca c lê nh cu a vo ng lă p - Cập nhật biến điều khiển vòng lặp. Quay trơ la i bươ c 2. Ngươ c la i thoa t kho i lă p.

�Ví dụ: viết chương trình in ra bảng cửu chương n, với n là

�Ví dụ: viết chương trình in ra bảng cửu chương n, với n là số nguyên dương nhập từ bàn phím.

�Chương trình

�Chương trình

�Ví dụ: viết chương trình nhập số n nguyên dương từ bàn phím. Tính

�Ví dụ: viết chương trình nhập số n nguyên dương từ bàn phím. Tính tổng các số từ 1 đến n Bắt đầu Kết thúc

�Chương trình

�Chương trình

Cấu trúc lặp - While < Khơ i ga n> while (<điê u kiê

Cấu trúc lặp - While < Khơ i ga n> while (<điê u kiê n lặp>) lê nh/ khô i lê nh; <cập nhật> Lưu y : Ca ch hoa t đô ng cu a while giô ng for

�Ví dụ: viết chương trình nhập số n nguyên dương từ bàn phím. Tính

�Ví dụ: viết chương trình nhập số n nguyên dương từ bàn phím. Tính tổng các số từ 1 đến n

Cấu trúc lặp Do … While <Khơ i ga n> do { <khô i

Cấu trúc lặp Do … While <Khơ i ga n> do { <khô i lê nh>; <cập nhật>; } while (điê u kiê n); • Thực hiện lệnh trước, sau đó kiểm tra điều kiện • Lệnh được thực hiện đến khi biểu thức có giá trị sai đúng

�Ví dụ: nhập các số nguyên dương có giá trị <=10, xuất ra tổng

�Ví dụ: nhập các số nguyên dương có giá trị <=10, xuất ra tổng các số hợp lệ.

Nhận xét �Cấu trúc For và While: kiểm tra điều kiện trước khi thực

Nhận xét �Cấu trúc For và While: kiểm tra điều kiện trước khi thực hiện lệnh lặp, do đó các lệnh lặp có thể không thực hiện lần nào. �Cấu trúc do … while: thực hiện lệnh trước, kiểm tra điều kiện sau, do đó các lệnh có thể được thực hiện ít nhất là 1 lần.

Lệnh break và return �break: thoát khỏi cấu trúc lệnh switch, while, for, do…while

Lệnh break và return �break: thoát khỏi cấu trúc lệnh switch, while, for, do…while đang chứa nó. �return: thoát khỏi chương trình đồng thời cũng thoát khỏi các vòng lặp và trả về kết quả.

Lệnh continue �Lệnh continue được sử dụng trong các vòng lặp while, for, do…while.

Lệnh continue �Lệnh continue được sử dụng trong các vòng lặp while, for, do…while. �Khi kệnh continue được gọi thì chương trình sẽ kết thúc vòng lặp hiện tại và bắt đầu vòng lặp mới tiếp theo.

�Ví dụ: Cho phép người dùng nhập liên tục số nguyên dương, nếu nhập

�Ví dụ: Cho phép người dùng nhập liên tục số nguyên dương, nếu nhập số nguyên âm thì dừng

�Vi du : In ra ma n hi nh giá tri từ 10 đê

�Vi du : In ra ma n hi nh giá tri từ 10 đê n 20 trừ đi sô 13 va sô 17.

Bài tập: Xác định kết quả của các chương trình sau 1. int a=18;

Bài tập: Xác định kết quả của các chương trình sau 1. int a=18; for(int i = 1; i <= a; i++) if(a%i == 0) printf(“%dt”, i); 2. for(int i = 0; i < 5; i++) { for(int j = 0; j <= i; j++) printf(“%dt”, j); printf(“n”); }

Bài tập: Xác định kết quả của các chương trình sau 3. int i

Bài tập: Xác định kết quả của các chương trình sau 3. int i = 10, s = 0; while(i > 0) { if(i%2 == 0) s+=i; else if(i > 5) s+=2*i; i--; } printf(“s = %d”, s);

Bài tập: Xác định kết quả của các chương trình sau 4. int a

Bài tập: Xác định kết quả của các chương trình sau 4. int a = 18, i = 1; do{ if(a%i == 0) printf(“%dt”, i); i++; } while(i <= a);

Bài tập: Xác định kết quả của các chương trình sau 5. int a

Bài tập: Xác định kết quả của các chương trình sau 5. int a = 11, b = 16, i = a; while( i < b ) { if(i%2 == 0) { printf(“%dt”, i); break; } i++; }

Bài tập: Xác định kết quả của các chương trình sau 6. int a

Bài tập: Xác định kết quả của các chương trình sau 6. int a = 10, s = 0, i = 0; while( i < a ) { i++; if (i % 2 == 0) continue; s=s+i; } printf(“Tong = %d" , s);

Bài tập: Xác định kết quả của các chương trình sau 7. int i

Bài tập: Xác định kết quả của các chương trình sau 7. int i = 1, s = 0; while(true) { s = s + i++; if (i % 2) i = i + 2; else i = i + 1; if (i > 20) break; } printf(“Tong = %d" , s);

Bài tập: Xác định kết quả của các chương trình sau 7. int i

Bài tập: Xác định kết quả của các chương trình sau 7. int i = 1, s = 0; while(true) { s = s + i++; if (i % 2) i = i + 2; else i = i + 1; if (i > 20) break; } printf(“Tong = %d" , s);

Bài tập viết chương trình 1. Viê t chương tri nh nhâ p sô

Bài tập viết chương trình 1. Viê t chương tri nh nhâ p sô nguyên dương n. Liê t kê n sô nguyên tô đâ u tiên. 2. Viê t chương tri nh nhâ p va o hai sô nguyên dương a va b. Ti m ươ c sô chung lơ n nhâ t va bô i sô chung nho nhâ t cu a a va b. 3. Viê t chương tri nh nhâ p va o mô t sô nguyên n gô m tô i đa 10 chư sô (4 bytes). In ra ma n hi nh gia tri nhi phân cu a sô trên. (Hươ ng dâ n: chia lâ y dư cho 2 va xuâ t theo thư tư ngươ c la i). 4. Viê t chương tri nh đê m sô ươ c sô cu a sô nguyên dương N. Vi du : N=12 sô ươ c sô cu a 12 la 6

Bài tập viết chương trình 5. Mô t sô hoa n thiê n la

Bài tập viết chương trình 5. Mô t sô hoa n thiê n la mô t sô co tô ng ca c ươ c sô cu a no (không kê no ) bă ng chi nh no. Ha y liê t kê ca c sô hoa n thiê n nho hơn 30000. Vi du : sô 6 la sô ho an thiê n vi tô ng ca c ươ c sô la 1+2+3 = 6. 6. Nhâ p va o nga y, tha ng, năm. Cho biê t đo la nga y thư mâ y trong năm.