Nguyen Dinh Phuong
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’ ế sales_amt 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, trong hàm
scanf() s d ng %f đ nh n m t giá tr t ng i dùng. G 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. ơ
>= 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 ế đú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 1500. N u đi u ki n ế sai, s in ra giá tr
ti n hoa h ng 0. đây chúng ta th y, đi u ki n if ch m t l nh duy nh t. N u 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);
Master.P Stuio E-book Đi u ki n N.D.Familys1
Smith Nguyen
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 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 đây trong c a s ‘Edit Window’:
#include <stdio.h>
#include <conio.h>
void main()
{ float com = 0, sales_amt;
clrscr();
printf(“Enter the Sales Amount: “);
scanf(“%f”, &sales_amt);
if (sales_amt >= 10000)
com = sales_amt * 0.1;
printf(“\n Commission = %f”, com);
}
3. L u t p tin v i tên ư comm.C.
4. Biên d ch t p tin comm.C.
5. Th c thi ch ng trinh ươ comm.C.
6. Tr v c a s ‘Edit Window’.
K T QU :
Enter the Sales Amount: 15000
Commission = 1500.000
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 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 đây trong c a s ‘Edit Window’:
#include <stdio.h>
#include <conio.h>
2 L p trình c b n C ơ
Nguyen Dinh Phuong
void main()
{
int Num1, Num2;
clrscr();
Num1 = 540;
Num2 = 243;
if (Num1 > Num2)
printf(“\n The Greater Number Is: %d”, Num1);
else
printf(“\n The Greater Number Is: %d”, Num2);
}
1. L u t p tin v i tên ư ifelse.C.
2. Biên d ch ch ng trình ươ ifelse.C.
3. Th c thi ch ng trình ươ ifelse.C.
4. Tr v c a s ‘Edit Window’.
K T QU :
The greater number is: 540
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, hai bi n ‘s nguyên’ ươ ướ ế num1 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 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 b ng bi n ế num2 không. Trong C, ký hi u == đ c s d ng đ ki m tra hai toán h ng ượ
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 s đ c th c thi. ượ
N u c hai đi u ki n c a ế if 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 trong c a s ‘Edit Window’.
#include <stdio.h>
#include <conio.h>
Master.P Stuio E-book Đi u ki n N.D.Familys3
Smith Nguyen
void 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);
}
1. L u t p tin v i tên ư ifelseif.C.
2. Biên d ch t p tin ifelseif.C.
3. Th c thi ch ng trình ươ ifelseif.C.
4. Tr v c a s ‘Edit Window’.
K T QU :
The Larger Number is: 90
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
4 L p trình c b n C ơ
Nguyen Dinh Phuong
com = sales_amt * 0.05;
Gi s chúng ta nh p doanh thu bán hàng 15000 lo i s n ph m ‘A’. Ch ng trình s ki m ươ
tra đi u ki n if (sales_amt > 10000); đi u ki n này 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 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 15000 lo i s n ph m ‘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 trong c a s ‘Edit Window’.
#include <stdio.h>
#include <conio.h>
void main()
{
float com = 0, sales_amt;
char grade;
clrscr();
printf(“\Enter the Sales Amount: “);
scanf(“%f”, &sales_amt);
printf(“\n Enter the Grade: “);
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(“\n Commission = %f”, com);
}
1. L u t p tin v i tên ư nestif.C.
2. Biên d ch t p tin nestif.C.
3. Th c thi ch ng trình ươ nestif.C.
4. Tr v c a s ‘Edit Window’.
K T QU :
Enter the Sales Amount: 15000
Enter the grade: A
Commission = 1500
Master.P Stuio E-book Đi u ki n N.D.Familys5