Bài 8: Điều kiện
Mục tiêu:
Kết thúc bài học này, bạn có thể:
Ø Sử dụng:
§ Câu lệnh if
§ Câu lệnh if – else
§ Câu lệnh với nhiều if
§ Câu lệnh if lồng nhau
§ Câu lệnh switch.
Các bước trong bài học này được trình bày
chi tiết, rõ ràng và cẩn thận. Điều này giúp ta hiểu rõ về công cụ lập trình.
Thực hiện theo các bước sau thật cẩn thận.
Phần I - Trong thời gian 1 giờ 30 phút đầu:
8.1 Lệnh if:
Ví dụ 1:
Trong phần này chúng ta sẽ viết một chương
trình để tính tiền hoa hồng phải trả cho người bán hàng dựa vào số lượng hàng
họ bán được.
Bài toán:
Công ty SARA sẽ trả 10% tiền hoa hồng cho
nhân viên bán hàng của công ty nếu doanh số bán hàng của nhân viên đạt $10,000
hoặc hơn. Tính tiền hoa hồng phải trả cuối mỗi thánng.
Bài toán khai báo hai biến kiểu ‘float’ là sales_amt và com.
Chú ý, các biến được khai báo trong cùng một dòng trong chương trình thì sử
dụng dấu phẩy (,) để phân cách giữa các biến.
Theo dõi đoạn mã lệnh dưới đây:
printf(“Enter
the Sales Amount: “);
scanf(“%f”,&sales_amt);
Trong hàm printf(),
chúng ta hiển thị thông điệp yêu cầu nhập doanh số bán hàng, và trong hàm scanf() sử dụng %f để
nhận một giá trị từ người dùng. Giá trị nhập vào sẽ được gán cho biến sales_amt.
if
(sales_amt >= 10000)
com = sales_amt * 0.1;
Câu lệnh trên được dùng để kiểm tra giá
trị của biến sales_amt có lớn hơn hoặc bằng 10000 không.
>= là toán tử so sánh, sẽ trả về giá trị đúng hoặc sai. Trong trường hợp, nếu bạn
nhập vào giá tri 15000, điều kiện (sales_amt >= 10000) có kết quả là đúng. Nếu đúng, nó sẽ thực thi câu lệnh com = sales_amt * 0.1. Bây giờ
giá trị của biến com sẽ là 1500. Nếu điều kiện là sai, nó sẽ in ra giá trị tiền
hoa hồng là 0. Ở đây chúng ta thấy, điều kiện if chỉ có một lệnh duy nhất. Nếu có nhiều
hơn một lệnh cho điều kiện if,
các lệnh phải được đặt trong cặp dấu ngoặc {}.
printf(“\n
Commission = %f”, com);
Câu lệnh trên được sử dụng để hiển thị giá
trị tiền hoa hồng. ‘%f’ được sử dụng để hiển thị giá trị của một
biến ‘float’ được đưa ra sau dấu phẩy ở cuối của hàm printf().
Vì vậy, printf() ở đây hiển thị tiền hoa hồng tính được.
8.1.1 Tính tiền hoa hồng:
1. Tạo một tập tin mới.
2. Nhập vào đoạn mã lệnh sau:
#include <stdio.h>
#include <conio.h>
main()
{ float com = 0,
sales_amt;
printf("Enter
the Sales Amount: ");
scanf("%f",
&sales_amt);
if (sales_amt
>= 10000)
com = sales_amt * 0.1;
printf("\n
Commission = %f", com);
getch();
}
3. Biên dịch và thực thi chương trình.
|
Kết quả:
8.2 Lệnh ‘if-else’:
Trong phần này chúng ta sẽ viết một chương
trình sử dụng lệnh if-else. Chương trình hiển thị số lớn hơn trong
hai số.
Theo dõi các dòng mã lệnh sau:
if (num1 >
num2)
printf(“\n The greater number is: %d”, num1);
else
printf(“\ The greater number is: %d”, num2);
Trong đoạn mã lệnh này hàm printf() đầu tiên chỉ được thực thi nếu giá trị của
biến num1 lớn hơn giá trị của biến num2, khi
đó phần else được bỏ qua. Nếu giá trị của biến num1 không lớn hơn giá trị của biến num2, hàm printf() được bỏ qua. Trong trường hợp này hàm printf() thứ hai, lệnh theo sau else, được
thực thi.
Trong chương trình sau, bởi vì giá trị của
biến num1 lớn hơn num2, hàm printf() đầu tiên được thực thi.
1. Tạo một tập tin mới.
2. Nhập vào đoạn mã lệnh sau:
#include <stdio.h>
#include <conio.h>
main()
{
int Num1,
Num2;
Num1 = 540;
Num2 = 243;
if (Num1 >
Num2)
printf("\n The Greater Number Is: %d", Num1);
else
printf("\n The Greater Number Is: %d", Num2);
getch();
}
3. Biên dịch và thực thi chương trình.
|
Kết quả:
8.3 Lệnh ‘if-else-if’:
Trong phần này chúng ta sẽ viết một chương
trình sử dụng lệnh if – else –
if. Chương trình sẽ hiển thị số lớn hơn trong hai số, hoặc sẽ hiển thị các
số là bằng nhau.
Trong chương trình ở phần trước, có hai
biến ‘số nguyên’ num1 và num2 được khai báo. Các biến được gán
giá trị.
Quan sát các dòng mã lệnh sau:
if (num1 ==
num2)
printf(“\nNumbers are Equal”);
else if (num1
< num2)
printf(“\nThe Larger Number is: %d”, num2);
else
printf(“\nThe Larger Number is: %d”, num1);
Trong đoạn mã lệnh trên, điều kiên ‘if’
đầu tiên (num1 == num2) kiểm tra xem giá trị của biến num1 có bằng biến num2 không. Trong C, ký hiệu == được sử
dụng để kiểm tra hai toán hạng có bằng nhau không. Nếu điều kiện đầu tiên (num1
== num2) có giá trị true thì hàm printf() theo ngay sau sẽ được thực thi. Nếu
điều kiện đầu tiên không đúng, điều kiện của else-if sẽ được kiểm tra. Trong trường hợp
điều kiện này (num1 < num2) thỏa, hàm printf() theo sau nó sẽ được thực thi. Nếu cả
hai điều kiện của if và else
if đều không thỏa mãn, thì
câu lệnh sau else cuối cùng sẽ được thực thi.
Trong chương trình dưới đây, vì giá trị
của num1 nhỏ hơn num2, lệnh printf() thứ hai sẽ được thực thi.
1. Tạo một tập tin mới.
2. Nhập đoạn mã lệnh sau:
#include <stdio.h>
#include <conio.h>
main()
{ int num1, num2;
num1 = 77;
num2 = 90;
if (num1 ==
num2)
printf("\nThe Numbers are equal");
else if (num1
< num2)
printf("\n The Larger Number is: %d", num2);
else
printf("\n The Larger Number is: %d", num1);
getch();
}
3. Biên dịch và thực thi chương trình.
|
Kết quả:
8.4 Lệnh ‘if lồng nhau’:
Trong phần này chúng ta sẽ viết một chương
trình để hiểu rõ về lệnh ‘if lồng
nhau’.
Bài toán:
Công ty MONTEK đã ra quyết định chi tiền hoa hồng cho bộ
phận bán hàng tùy thuộc vào doanh thu bán sản phẩm. Tỷ lệ hoa hồng được
tính như sau:
Doanh thu
bán
Loại sản phẩm
Hoa hồng
>
10,000$
A
10%
--
8%
<=
10,000
--
5%
Tính tiền hoa hồng cuối mỗi tháng.
Trong chương trình này chúng ta tính tiền
hoa hồng dựa vào loại sản phẩm và lượng sản phẩm bán được.
Quan sát các dòng mã lệnh sau:
printf(“\Enter
the Sales Amount: “);
scanf(“%f”,&sales_amt);
printf(“\n
Enter the Grade: “);
scanf(“%c”,&grade);
Hàm scanf() đầu tiên được dùng để nhập doanh thu
bán hàng, và hàm scanf() thứ hai được
sử dụng để nhập loại sản phẩm. Định dạng %c được sử dụng để nhận một ký tự từ
người dùng.
if (sales_amt
> 10000)
if (grade == ‘A’)
com = sales_amt * 0.1;
else
come = sales_amt * 0.08;
else
com = sales_amt * 0.05;
Giả sử chúng ta nhập doanh thu bán hàng là
15000 và loại sản phẩm là ‘A’. Chương trình sẽ kiểm tra điều kiện if (sales_amt > 10000); vì điều kiện
này có kết quả đúng, chương trình sẽ tiếp tục lệnh if thứ hai (grade == ‘A’). Điều kiện này
cũng thỏa, vì vậy tiền hoa hồng được tính com
= sales_amt * 0.1.
Chúng ta xem một tình huống khác với doanh
thu bán hàng là 15000 và loại sản phẩm là ‘B’. Chương trình sẽ kiểm tra điều
kiện if đầu tiên (sales_amt >
10000), điều kiện này thỏa. Và chương trình thực hiện tiếp lệnh if thứ hai, trong trường hợp này điều
kiện không thỏa mãn, chương trình sẽ chuyển đến lệnh else tương ứng, ...
else
com = sales_amt * 0.08;
Nếu chúng ta nhập giá trị 10000 hoặc nhỏ
hơn, chương trình sẽ chuyển đến điều kiện else sau cùng và tính tiền hoa hồng
theo công thức:
com = sales_amt * 0.05;
1. Tạo một tập tin mới.
2. Nhập đoạn mã lệnh sau:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{
float com =
0, sales_amt;
char grade;
printf("Enter the Sales Amount: ");
scanf("%f",
&sales_amt);
printf("Enter the Grade: ");
fflush(stdin);
scanf("%c",
&grade);
if (sales_amt
> 10000)
if (grade == 'A')
com = sales_amt * 0.1;
else
com = sales_amt * 0.08;
else
com = sales_amt * 0.05;
printf("Commission = %f", com);
getch();
}
3. Biên dịch và thực thi chương trình.
|
Kết quả:
8.5 Sử dụng lệnh ‘switch’:
Trong phần này chúng ta sẽ sử dụng lệnh
‘switch’. Chương trình hiển thị kết quả tùy vào toán tử toán học được sử dụng.
Trong chương trình này có hai biến số
nguyên là num1 và num2 và một biến ký tự op được khai báo. Các biến được gán giá
trị. Một phép toán số học được lưu trong biến op.
Biến op được truyền vào biểu thức sau
‘switch’. case đầu tiên so sánh giá trị của biến op với ‘+’. Nếu nhãn (+) so khớp với giá
trị trong op, thì
các dòng mã lệnh sau được thực thi:
res = num1 +
num2;
printf(“\n The
sum is: %d”, res);
break;
Tổng của num1 và num2 được lưu trong biến res. Lệnh printf() hiển thị giá trị của biến res. Lệnh break để thoát khỏi lệnh ‘switch’.
Trong case thứ hai, giá trị của op được so sánh với ‘-‘, và sau đó
biểu thức num1 – num2 được thực thi. Tương tự, nếu
giá trị của op là ‘*’ và ‘/’, num1 * num2 và num1
/ num2 được thực thi.
Nếu không có trường hợp nào ở trên thỏa
mãn, thì lệnh printf() của ‘default’ sẽ được thực thi.
1. Tạo một tập tin mới.
2. Nhập đoạn mã lệnh sau:
#include <stdio.h>
#include <conio.h>
main()
{
int num1, num2, res;
char op;
num1 = 90;
num2 = 33;
op = '-';
switch (op)
{
case '+':
res = num1 + num2;
printf("\nThe Sum is: %d", res);
break;
case '-':
res = num1 - num2;
printf("\nNumber after Subtraction: %d", res);
break;
case '/':
res = num1 / num2;
printf("\n nNumber after Division: %d", res);
break;
case '*':
res = num1 * num2;
printf("\n nNumber after multiplication: %d", res);
break;
default:
printf("\nInvalid");
break;
}
getch();
}
3. Biên dịch và thực thi chương trình.
|
Kết quả:
Phần II - Trong thời gian 30 phút kế tiếp:
1. Một học viên được kiểm tra 3 môn học.
Mỗi bài kiểm tra tối đa là 100 điểm. Điểm trung bình của học viên được tính, và
học viên được xếp loại tùy thuộc vào kết quả của điểm trung bình theo qui luật
sau:
Điểm trung
bình
Loại
>=
90
E+
80 - <
90
E
70 - <
80
A+
60 - <
70
A
50 - <
60
B+
<
50
RỚT
Để thực hiện:
a. Nhập vào điểm của 3 môn học và lưu
trong 3 biến khác nhau là M1,
M2 và M3.
b. Tính điểm trung bình (avg = (M1 + M2 +
M3)/3).
c. Xác định loại của học viên dựa trên
điểm trung bình đã tính.
d. Hiển thị loại.
Bài tập tự làm
1. Khai báo hai biến x và y. Gán trị cho
các biến này. Số x được in ra màn hình chỉ khi x nhỏ hơn 2000 và lớn hơn 3000,
và số y chỉ được in ra màn hình khi y nằm giữa 100 và 500.
2. Viết chương trình trình bày khả năng
của máy tính của bạn. Người dùng nhập và một ký tự trong bảng chữ cái và chương
trình hiển thị ngôn ngữ lập trình tương ứng. Một vài ví dụ nhập và xuất
như sau:
Nhập
Xuất
A hoặc
a
Ada
B hoặc
b
Basic
C hoặc
c
COBOL
D hoặc
d
dBASE III
F hoặc
f
Fortran
P hoặc
p
Pascal
V hoặc v
Visual C++
Sử dụng lệnh ‘switch’ để chọn và hiển thị
thông điệp thích hợp. Sử dụng nhãn default để hiển thị thông điệp nếu ký tự
nhập không nằm trong danh sách liệt kê trên.
0 nhận xét:
Đăng nhận xét