Câu lệnh và khối lệnh
Toán tử if
Toán tử switch
Toán tử while và do…while
Toán tử for
Các hàm nhập xuất trong stdio.h và
conio.h
Câu lệnh – khối lệnh
Mỗi câu lệnh thực hiện một chức năng
nào đó được kết thúc bằng dấu ;
Dãy các câu lệnh được đặt trong cặp dấu
{ và } được gọi là một khối lệnh và được
xem như một câu lệnh riêng lẻ
Những câu lệnh của một hàm, những câu
lệnh của một cấu trúc phải được đặt vào
dấu {}
Các toán tử điều khiển cho phép thay đổi
trật tự thực hiện các câu lệnh (khối lệnh)
do đó máy có thể đang từ một câu lệnh
này nhảy tới thực hiện một câu lệnh ở
trước, hoặc sau nó
29 trang |
Chia sẻ: candy98 | Lượt xem: 771 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Cơ sở kỹ thuật lập trình - Chương 3: Các toán tử điều khiển và hàm nhập xuất - Trương Vĩnh Trường Duy, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 3: Các toán tử
điều khiển và hàm
nhập xuất
Biên soạn: Trương Vĩnh Trường Duy
(duytvt@ptithcm.edu.vn)
Từ tài liệu trên Internet và các nguồn khác
CƠ SỞ KỸ THUẬT LẬP TRÌNH
Nội dung
Câu lệnh và khối lệnh
Toán tử if
Toán tử switch
Toán tử while và dowhile
Toán tử for
Các hàm nhập xuất trong stdio.h và
conio.h
Câu lệnh – khối lệnh
Mỗi câu lệnh thực hiện một chức năng
nào đó được kết thúc bằng dấu ;
Dãy các câu lệnh được đặt trong cặp dấu
{ và } được gọi là một khối lệnh và được
xem như một câu lệnh riêng lẻ
Những câu lệnh của một hàm, những câu
lệnh của một cấu trúc phải được đặt vào
dấu {}
Các toán tử điều khiển cho phép thay đổi
trật tự thực hiện các câu lệnh (khối lệnh)
do đó máy có thể đang từ một câu lệnh
này nhảy tới thực hiện một câu lệnh ở
trước, hoặc sau nó
Toán tử if
if (biểu_thức_điều_kiện)
khối_lệnh;
Nếu biểu thức cho kết quả khác 0 thì thực hiện
khối lệnh
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 cho kết quả khác 0 thì thực hiện
khối lệnh 1, ngược lại thực hiện khối lệnh 2
C cho phép các cấu trúc if lồng nhau
if ()
{
/* cac lenh thuc hien neu dieu kien dung */
}
expression
statement(s)
Next statement
True False
Toán tử if
if ()
{
/* cac lenh thuc hien neu dieu kien dung */
}
else
{
/* cac lenh thuc hien neu dieu kien sai */
}
expression
statement1
Next statement
True False
statement2
Toán tử if
#include
int main() {
int b;
printf("Enter a value:");
scanf("%d", &b);
if (b < 0)
printf("The value \
is negative\n");
return 0;
}
printf(“1/X is: “);
if(X)
printf(“ %f \n”,
1/X);
else
printf(“ undefined
\
\n”);
Toán tử if
Toán tử switch
switch (biểu_thức_điều_kiện)
{ case n1: khối_lệnh_1;
case n2: khối_lệnh_2;
case nk: khối_lệnh_k;
[default: khối_lệnh_default;]
}
Nếu biểu thức điều kiện = ni (ni là các hằng số
nguyên, ký tự) thì thực hiện khối lệnh sau case ni,
nếu không thực hiện khối lệnh sau default nếu
có hoặc thoát khỏi switch
Phải dùng break cuối mỗi khối lệnh để chương
trình thoát khỏi switch sau khi thực hiện xong 1
trường hợp
#include
#include
#include
int main(void)
{
int n;
int n_even = n_odd = n_zero = 0;
randomize();
for(int i=0; i<1000; i++)
{
n = random(1000);
switch (n%10) {
case 2:
case 4:
case 6:
case 8:
n_even++; break;
Toán tử switch
case 1:
case 3:
case 5:
case 7:
n_odd++; break;
case 0:
n_zero++; break;
}
}
// print out the summary
printf(“ Number of even_eding number: %d\n”\
Number of odd_ending number: %d\n”\
Number of zero_ending number: %d\n”,
n_even, n_odd, n_zero);
return 0;
}
Toán tử switch
Toán tử while và dowhile
while (biểu_thức_điều_kiện)
khối_lệnh;
Nếu biểu thức còn khác 0 thì còn thực
hiện khối lệnh của vòng lặp
do
khối_lệnh;
while (biểu_thức_điều_kiện)
Thực hiện khối lệnh cho đến khi biểu
thức có giá trị bằng 0
while (expression)
{statement(s)}
Khi biểu thức điều kiện (expression) còn khác 0, lệnh
(statement) tiếp tục được thực hiện. Nếu expression bằng 0,
lệnh while dừng và chương trình sẽ gọi lệnh kế tiếp sau while
Nếu lúc đầu expression bằng 0 thì (statement) trong while
không bao giờ được gọi thực hiện
expression
statement(s)
Next statement
True
False
Toán tử while và dowhile
do
{statement(s)}
while (expression) ;
Thực hiện lệnh (statement). Kiểm tra biểu thức điều kiện
(expression). Nếu (expression) bằng 0, dừng. Nếu không, thực
hiện (statement)
Lệnh do while thực hiện (statement) ít nhất một lần
expression
statement(s)
Next statement
True
False
Toán tử while và dowhile
Toán tử while và dowhile
Khi gặp câu lệnh continue bên trong thân
của while hoặc do while, máy sẽ chuyển
đến xác định giá trị biểu thức sau từ
khóa while, và sau đó tiến hành kiểm tra
điều kiện kết thúc chu trình
Trường hợp gặp câu lệnh break, máy sẽ
thoát khỏi vòng while hay do..while ngay
lập tức
In bảng đổi nhiệt độ từ độ Fahrenheit (oF)
sang độ Celcius (oC).
#include
int main() {
int a;
a = 0;
while (a <= 100) {
printf("%4d degrees F = %4d degrees
C\n", a, (a - 32) * 5 / 9);
a = a + 10;
}
return 0;
}
Toán tử while và dowhile
#include
#include
#define PTB1 1
#define PTB2 2
#define STOP 3
int main()
{
int i;
do {
clrscr(); // xoa man hinh
printf(“ Chuong trinh giai phuong trinh\
bac thap \n”);
Toán tử while và dowhile
printf(“ 1. Giai phuong trinh bac 1: \
ax + b = 0 \n”);
printf(“ 2. Giai phuong trinh bac 2 : \
ax^2 + bx + c = 0
\n”);
printf(“ 3. Thoat chuong trinh \n\n”);
printf(“ Chon muc so (1/2/3) ? “);
scanf(“%d”, &i);
if(i == PTB1)
printf(“Giai phuong trinh bac 1: \
hien chua co\n”);
else if(i == PTB2)
printf(“Giai phuong trinh bac 2: \
chua cai dat\n\n”);
} while (i != STOP);
return 0;
}
Toán tử while và dowhile
Toán tử for
for (biểu_thức_1;biểu_thức_2;biểu_thức_3)
khối_lệnh_1;
1. Tính giá trị biểu thức 1
2. Tính giá trị biểu thức 2
3. Nếu biểu thức 2 khác 0 thì cho thực hiện các
lệnh của vòng lặp, ngược lại cho thoát khỏi
lệnh for
4. Tính giá trị biểu thức 3 rồi quay lại bước 2
Khi gặp câu lệnh break bên trong thân của toán
tử for, máy sẽ thoát khỏi vòng for ngay lập tức
Khi gặp câu lệnh continue bên trong thân của
toán tử for, máy sẽ chuyển đến bước khởi đầu
lại (bước 4)
for (initialization; test; adjustment)
{statement(s)}
Khởi động. Sau đó, nếu điều kiện (test) khác 0: lệnh
(statement) được thi hành, lệnh điều chỉnh lại “biến đếm”
được gọi thi hành
test
statement(s)
Next statement
True
False
adjustment
initialization
Toán tử for
Bài toán đổi nhiệt độ. Yêu cầu: hiển thị nhiệt độ chính xác đến
con số thập phân sau dấu phẩy.
#include
int main() {
float a;
int i;
a = 0;
for(i=0; i<=100; i+=10) {
printf("%6.2f degrees F = %6.2f degrees C\n",
a, (a - 32.0) * 5.0 /
9.0);
a = a + 10;
}
return 0;
}
Toán tử for
Toán tử goto
goto nhan;
Khi gặp toán tử này máy sẽ nhảy tới thực
hiện câu lệnh viết sau từ khóa goto
Nhãn có cùng dạng như tên biến và có
dấu : đứng sau. Nhãn có thể được gán
cho bất kỳ câu lệnh nào trong chương
trình. Ví dụ: t:s+=a;
int s=1,a=3; goto t; ++a; t: s+=a
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, tuy
nhiên nhảy từ trong ra ngoài khối lệnh là
hoàn toàn hợp lệ
Hàm nhập xuất trong stdio.h
printf(“Dòng điều khiển”,[các biểu thức]);
Dòng điều khiển gồm 3 loại:
Chuỗi ký tự mang tính chất thông báo
(hằng chuỗi)
Các ký tự điều khiển( \n, \r, \t..)
Các mã đặc tả để in các biểu thức tương
ứng (mỗi biểu thức khi in phải có một đặc
tả)
printf("gia tri 92 dung truong kieu d = %d.
\n", 92);
Hàm nhập xuất trong stdio.h
Các đặc tả được dùng trong hàm printf như sau
Hàm nhập xuất trong stdio.h
scanf(“các đặc tả”,<danh sách đia chỉ các biến
tương ứng với các đặc tả>);
Mỗi biến muốn nhập giá trị phải có một đặc tả
tương ứng. VD: scanf("%f", &value);
scanf(“%[^\n]”,a))
Các đặc tả được dùng trong hàm scanf
Hàm nhập xuất trong stdio.h
gets(Tên của mảng ký tự);
Hàm này cho phép nhận một chuỗi từ bàn phím cho
đến khi gặp ký tự \n (cho phép nhập khoảng trắng
giữa các từ)
VD: gets(a);
getchar(void)
Nhận một ký tự từ bàn phím và trả về ký tự nhận
được
VD: j=getchar();
Nếu trong chương trình có sử dụng các lệnh
scanf, getchar thì các lệnh sử dụng sau sẽ bị trôi
(không có tác dụng) do mã phím \n còn lại trong
stdin của lệnh scanf hoặc getchar trước đó, do
đó phải khử ký tự \n còn trong stdin bằng lệnh
fflush(stdin) sau lệnh scanf
Hàm nhập xuất trong stdio.h
int putchar(int ch)
Xuất một ký tự lên màn hình. Kết quả của hàm trả
về là ký tự xuất nếu thành công, ngược lại cho kết
quả EOF (-1)
VD: char c=’A’; putchar(c);/*in ra màn hình ký tự
A*/
int puts(char *s)
Xuất một chuỗi lên màn hình với *s là con trỏ kiểu
char trỏ tới ô nhớ đầu của vùng nhớ chứa chuỗi ký
tự muốn xuất. Hàm này khi xuất sẽ đưa thêm ký tự
\n vào cuối, kết quả của hàm =\n nếu thành công
ngược lại = EOF
Hàm nhập xuất trong conio.h
int getch(void)
int getche(void)
Hai hàm này chờ nhận một ký tự trực tiếp từ bộ
đệm bàn phím. Nếu bộ đệm rỗng thì chờ. Khi một
phím được ấn thì nhận ngay ký tự đó mà không cần
phải enter như các hàm nhập từ stdin
Hàm getche() cho hiện ký tự lên màn hình còn
getch() thì không
Kết quả trả về của hàm là ký tự được ấn
Với các phím đặc biệt khi được ấn thì có hai giá trị
được gửi lên bộ đệm bàn phím. Ví dụ khi ta ấn
phím F1 thì giá trị đầu là 0, và giá trị kế là 59 được
gửi lên bàn phím. Vì vậy để nhận được mã của các
phím này ta phải đọc bộ đệm bàn phím thêm một
lần nữa
Hàm nhập xuất trong conio.h
cprintf có cú pháp giống như printf nhưng màu
của nội dung được in được ấn định bởi hàm
textcolor
cscanf có cú pháp và công dụng như hàm scanf,
nhưng khác nhau ở hai điểm: nội dung nhập có
màu được ấn định bởi hàm textcolor; nhận nội
dung trực tiếp từ bộ đệm bàn phím, vì vậy với
hàm cscanf cũng phải khử ký tự \n trong bộ đệm
VD
textcolor(YELLOW); /*Đặt mầu chữ*/
textbackground(BLUE); /*Đặt mầu nền*/
cprintf("\nNhap mot so: ");
cscanf("%d%*c",&a);
Hàm nhập xuất trong conio.h
clrscr(); là hàm xóa toàn bộ màn hình và sau khi
xóa con trỏ sẽ ở vị trí góc phía bên trái
gotoxy(int x, int y); là hàm đặt con trỏ màn hình
vào tọa độ X, Y của màn hình. Tọa độ X là tọa độ
cột, tính từ 1 đến 80, tọa độ Y là tọa độ dòng,
tính từ 1 đến 25. Màn hình gồm 25 dòng và 80
cột
Ví dụ: gotoxy (30,10);
void textbackground(int color); đặt màu nền cho
văn bản. Color là một biểu thức nguyên có giá trị
từ 0 đến 7
void textcolor(int newColor); đặt màu ký tự mới
newColor là một biểu thức nguyên có giá trị từ 0
đến 15