Tải bản đầy đủ (.ppt) (36 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (451.76 KB, 36 trang )

1
Chương 5:
Chương 5:


Cấu trúc điều khiển
Cấu trúc điều khiển
THĐC - Văn Thị Thiên Trang - 2010
2
Giới thiệu
Giới thiệu

Câu lệnh có cấu trúc

Là lệnh trong đó chứa các lệnh khác.

Các lệnh con được gom vào trong cặp dấu {}  gọi là khối lệnh.

Khối lệnh lồng nhau
{
… lệnh;
{
… lệnh;
{
… lệnh;
}
… lệnh;
}
… lệnh;
}
THĐC - Văn Thị Thiên Trang - 2010


3
Các cấu trúc điều khiển
Các cấu trúc điều khiển

Cấu trúc rẽ nhánh

Cấu trúc lựa chọn

Cấu trúc vòng lặp

Một số lệnh đặc biệt
THĐC - Văn Thị Thiên Trang - 2010
4
1. Cấu trúc rẽ nhánh
1. Cấu trúc rẽ nhánh

Dạng không đầy đủ

Ý nghĩa

Nếu <bt đkiện> đúng

Thực hiện <công việc>  Thoát

Nếu <bt đkiện> sai

Thoát khỏi lệnh if
if (<biểu thức điều kiện>)
<công việc>
BT đkiện

Công việc
Thoát
Đúng
Sai
THĐC - Văn Thị Thiên Trang - 2010
5
1. Cấu trúc rẽ nhánh
1. Cấu trúc rẽ nhánh

Dạng không đầy đủ
if (delta<0)
printf(“Pt vo nghiem”);
if (delta>0)
{
printf(“Pt co 2 nghiem phan biet\n”);
printf(“x1=%f”, (-b+sqrt(delta))/2/a);
printf(“\tx2=%f”, (-b-sqrt(delta))/2/a);
}
if (delta==0)

Lệnh đơn
Khối
lệnh
THĐC - Văn Thị Thiên Trang - 2010
6
1. Cấu trúc rẽ nhánh
1. Cấu trúc rẽ nhánh

Dạng đầy đủ


VD
if (<biểu thức điều kiện>)
<công việc 1>
else
<công việc 2>
BT đkiện
Công việc 1
Thoát
Đúng
Sai
Công việc 2
if (a<0)
printf(“a la so am”);
else
printf(“a la so duong”);
THĐC - Văn Thị Thiên Trang - 2010
7
1. Cấu trúc rẽ nhánh
1. Cấu trúc rẽ nhánh

Dạng đầy đủ

Lệnh if lồng nhau

Khi sử dụng các lệnh if lồng nhau, nên sử dụng {} để tránh gây ra sự hiểu nhầm if nào tương ứng với else
nào

VD:
if (a != 0)
if (a > b)

y = b/a;
else
y = -b/a;
if (a != 0)
{
if (a > b)
y = b/a;
else
y = -b/a;
}
THĐC - Văn Thị Thiên Trang - 2010
8
1. Cấu trúc rẽ nhánh
1. Cấu trúc rẽ nhánh

Dạng đầy đủ
if (delta<0)
printf(“Pt vo nghiem”);
else //delta >0 hoặc delta==0
if (delta>0)
{
printf(“Pt co 2 nghiem phan biet\n”);
printf(“x1=%f”, (-b+sqrt(delta))/2/a);
printf(“\tx2=%f”, (-b-sqrt(delta))/2/a);
}
else //delta==0

THĐC - Văn Thị Thiên Trang - 2010
9
1. Cấu trúc rẽ nhánh

1. Cấu trúc rẽ nhánh

Bài tập
1. Tìm số lớn nhất trong hai số nguyên
2. Tìm số lớn nhất trong ba số nguyên
3. Viết chương trình giải pt bậc nhất ax+b=0
4. Viết chương trình giải pt bậc hai ax
2
+bx+c=0
THĐC - Văn Thị Thiên Trang - 2010
10
2. Cấu trúc lựa chọn
2. Cấu trúc lựa chọn

Cho phép lựa chọn một trong nhiều trường hợp
switch (<Biểu thức>)
{
case giá trị 1:
Khối lệnh thực hiện công việc 1;
break;

case giá trị n:
Khối lệnh thực hiện công việc n;
break;
[default :
Khối lệnh thực hiện công việc mặc định;
break;]
}
THĐC - Văn Thị Thiên Trang - 2010
11

2. Cấu trúc lựa chọn
2. Cấu trúc lựa chọn

Cho phép lựa chọn một trong nhiều trường hợp
THĐC - Văn Thị Thiên Trang - 2010
12
2. Cấu trúc lựa chọn
2. Cấu trúc lựa chọn

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 phải là kiểu số nguyên.

Không bắt buộc phải có default
THĐC - Văn Thị Thiên Trang - 2010
13
2. Cấu trúc lựa chọn
2. Cấu trúc lựa chọn

Cho biết số ngày của tháng bất kỳ
THĐC - Văn Thị Thiên Trang - 2010
14
2. Cấu trúc lựa chọn
2. Cấu trúc lựa chọn
Ý NGHĨA CÂU LỆNH

Nếu biểu thức nguyên có giá trị bằng nhãn n
i



nhảy đến thực hiện các lệnh của nhãn đó
Nếu không bằng

nhảy đến thực hiện các lệnh trong thành phần tùy chọn default

Ra khỏi toán tử switch khi

gặp câu lệnh break

hoặc gặp dấu “}” của câu lệnh switch

Chú ý, khi nhảy tới nhãn ni, nếu kết thúc dãy lệnh
trong nhãn này không có câu lệnh break thì sẽ tiếp
tục thực hiện các lệnh trong nhãn n
i+1

Thường cuối mỗi dãy lệnh của một nhãn có một lệnh break
THĐC - Văn Thị Thiên Trang - 2010
15
2. Cấu trúc lựa chọn
2. Cấu trúc lựa chọn

Bài tập
1. Nhập số có 2 chữ số, hiển thị cách đọc số đó
2. Nhập vào tháng của một năm, cho biết số ngày của tháng
THĐC - Văn Thị Thiên Trang - 2010
16
Cấu trúc lặp

Cấu trúc lặp

Vòng lặp for

Vòng lặp while

vòn lặp do while
THĐC - Văn Thị Thiên Trang - 2010
17
3.1. Cấu trúc lặp - for
3.1. Cấu trúc lặp - for

Ví dụ

Hiển thị ra màn hình các số từ 1 10, mỗi số trên một dòng?

Vòng lặp for

Thực hiện công việc lặp đi lặp lại nhiều lần

<biểu thức 2>: Biểu thức điều kiện
for(biểu thức 1; biểu thức 2; biểu thức 3;)
<công việc >
THĐC - Văn Thị Thiên Trang - 2010
18
3.1. Cấu trúc lặp - for
3.1. Cấu trúc lặp - for

B1: Tính giá trị biểu thức
1.


B2: Tính giá trị biểu thức
2.

Nếu giá trị của biểu thức 2 sai
 Thoát khỏi for.

Nếu giá trị của biểu thức 2
đúng  Thực hiện <công
việc>.

B3: Tính giá trị của biểu
thức 3 và quay lại B2.
Bắt đầu
Tính giá trị
biểu thức 1
Biểu thức 2
(bt điều kiện)
Công việc
Tính giá trị
biểu thức 3
Đúng
Kết thúc
Sai
THĐC - Văn Thị Thiên Trang - 2010
19
3.1. Cấu trúc lặp - for
3.1. Cấu trúc lặp - for

Ví dụ


Một số lưu ý khi sử dụng câu lệnh for

BT1 thường là một phép gán để khởi tạo giá trị ban đầu cho biến
điều kiện.

BT2 là một biểu thức kiểm tra điều kiện đúng/sai để dừng vòng
lặp.

BT 3 thường là một phép gán để thay đổi giá trị của biến điều
kiện.

Trong mỗi biểu thức có thể có nhiều biểu thức con. Các biểu
thức con được phân biệt bởi dấu phẩy.
THĐC - Văn Thị Thiên Trang - 2010
20
3.1. Cấu trúc lặp - for
3.1. Cấu trúc lặp - for

Nhận xét

BT1 chỉ được tính một lần

BT2, BT3 và khối lệnh trong thân lệnh for được lặp đi lặp lại nhiều lần

Khi biểu thức 2 vắng mặt thì nó được xem là đúng

Có thể sử dụng các lệnh for lồng nhau

Câu lệnh sau làm gì ?

for(;;){}
THĐC - Văn Thị Thiên Trang - 2010
21
3.1. Cấu trúc lặp - for
3.1. Cấu trúc lặp - for

Bài tập
Viết chương trình:

Nhập số nguyên n

Hiển thị các số chẵn từ 0 đến n

Tính tổng của n số tự nhiên đầu

Hiển thị các số từ n đến 1

Tính x
n
(n, x nhập từ bàn phím)
THĐC - Văn Thị Thiên Trang - 2010
22
Ví dụ minh họa
Ví dụ minh họa
#include<stdio.h>
#include<conio.h>
void main(){
int n, S=0; float x, T=1;
//nhập số nguyên n
printf(“Nhap n:”); scanf(“%d”, &n);

//tính tổng n số nguyên đầu tiên
for(int i=1; i<=n; i++)
S=S+i;
printf(“Tong cac so tu 1 den %d =%d”,n,S);
//tính x
n
printf(“Nhap x:”); scanf(“%d”, &x);
for(i=1; i<=n; i++)
T=T*x;
printf(“%f luy thua %d = %f”, x, n, T);
//tính S=-1+2-3+….+(-1)
n
.n
int tam=1;
for(i=1;i<=n; i++)
{
tam=tam*(-1);
S=S+tam*i;
}
printf(“Tong la: %d”, S);
getch();
}
THĐC - Văn Thị Thiên Trang - 2010
23
3.2. Cấu trúc lặp - while
3.2. Cấu trúc lặp - while

Lặp lại một công việc cho đến khi điều kiện sai

Cú pháp


Vòng lặp dừng khi điều kiện sai.

Khối lệnh thực hiện công việc có thể rỗng, có thể
làm thay đổi điều kiện.
while(Biểu thức điều kiện)
<công việc >
điều kiện
Công việc
Thoát
Sai
Đúng
THĐC - Văn Thị Thiên Trang - 2010
24
3.2. Cấu trúc lặp - while
3.2. Cấu trúc lặp - while

Viết chương trình thực hiện
1. In dãy số từ 1  10.
2. Nhập n. Tính tổng n số nguyên đầu tiên
3. Nhập số nguyên n.
Kiểm tra n có phải số nguyên tố không?
Kiểm tra n có phải số chính phương không?
THĐC - Văn Thị Thiên Trang - 2010
25
Ví dụ minh họa
Ví dụ minh họa
//in dãy số từ 1 đến 10
int i=1;
while (i<=10)

{
printf(“%3d”, i);
i+=1; //hoặc i++; hoặc i=i+1;
}

In dãy số từ 0 đến n?
//nhập n
printf(“Nhap n:”); scanf(“%d”, &n);
//in dãy số từ 0 đến n
int i=0;
while (i<=n)
{
printf(“%3d”, i);
i+=1; //hoặc i++; hoặc i=i+1;
}

×