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

CƠ SỞ KỸ THUẬT LẬP TRÌNH ppsx

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 (878.03 KB, 29 trang )

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 (
)
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à 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ó
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 (<dieu kien>)
{
/* cac lenh thuc hien neu dieu kien dung
*/
}


expression
statement(s)
Next statement
True False
Toán tử if
if (<dieu kien>)
{
/* 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 <stdio.h>
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 <stdlib.h>
#include <stdio.h>
#include <time.h>
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à do…while

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à do…while
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à do…while
Toán tử while và do…while

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
(
o
F) sang độ Celcius (
o
C).
#include <stdio.h>
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à do…while
#include <conio.h>
#include <stdio.h>
#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à do…while
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à do…while
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 <stdio.h>
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

×