Tải bản đầy đủ (.pdf) (13 trang)

Bài giảng Nhập môn lập trình: Cấu trúc điều khiển - Trần Phước Tuấn

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 (264.93 KB, 13 trang )

NMLT
C U TRÚC I U KHI N
Tr n Ph

c Tu n




C u trúc i u khi n
L nh r nhá
nhánh: if – else
L nh r nhi u nhá
nhánh: switch
Vòng l p: while, do while, for
Các t khóa: break và continue

NH P MƠN L P TRÌNH

12/23/2009

2


L nh r nhánh if
Cú pháp:

i u
ki n

if ( i u ki n)


S;
i u ki n: bi u th c
c t gi a c p ngo
S ph i là 1 câu l nh, n
l nh ph i
c t gi
kh i l nh.
nh.

cho k t qu S ; ph i
c n ()
u nhi u h n 1 l nh, các
a c p ngo c nh n {} –

scanf("%i
scanf("%i %i",
%i",
max
max == a;
a;
if(b
>
if(b > max)
max)
max
max == b;
b;
printf(“So
printf(“So lon
lon

NH P MƠN L P TRÌNH

0

0
S

&a,
&a, &b);
&b);

la:
la: %i\n“,
%i\n“, max);
max);

12/23/2009

3


N u t d u ch m ph y (;) ngay sau bi u th c i u ki n
thì l nh S c a if xem nh “KHƠNG LÀM GÌ”
printf(“Nhap
printf(“Nhap mot
mot so
so nguyen:
nguyen: ");
");
scanf("%i",

scanf("%i", &j);
&j);
if(j
if(j >> 0);
0);
printf(“%i
printf(“%i la
la so
so duong“,
duong“, j);
j);
Nhap
Nhap mot
mot so
so nguyen:
nguyen: -6
-6
-6
-6 là
là so
so duong
duong

NH P MƠN L P TRÌNH

12/23/2009

4



L nh r nhánh if-else
Cú pháp:

if ( i u ki n)
S;
else Se;
Ph n l nh else có th thêm vào trong câu l nh
if
ch th các l nh th c hi n khi i u ki n

i u
ki n

0

0
Se

S

b ng 0 (FALSE).
scanf("%i
scanf("%i %i",
%i",
if(a
if(a >> b)
b)
max
max == a;
a;

else
else
max
max == b;
b;
printf(“So
printf(“So lon
lon
NH P MƠN L P TRÌNH

&a,
&a, &b);
&b);

la:
la: %i\n“,
%i\n“, max);
max);

12/23/2009

5

Nhi u l nh if l ng nhau
else k t n i v i l nh if g n nh t
int
int ii == 100;
100;
if(i
if(i >> 0)

0)
if(i
if(i >> 1000)
1000)
printf("i
printf("i
else
else
printf("i
printf("i

ii chap
chap nhan
nhan duoc
duoc
qua
qua lon\n");
lon\n");
chap
chap nhan
nhan duoc\n");
duoc\n");

int
int ii == -20;
-20;
if(i
>
0)
ii la

if(i > 0) {{
la so
so am
am
if(i
>
1000)
if(i > 1000)
printf("i
printf("i qua
qua lon\n");
lon\n");
}}
else
else
printf("i
printf("i la
la so
so am\n");
am\n");
NH P MÔN L P TRÌNH

12/23/2009

6


C u trúc nhi u ch n l a – switch
Cú pháp:
switch (bi u th c)

{
case gt1: S1; [break;]
case gt2: S2; [break;]
...
;]
case gtn: Sn; [break
[break;]
default: Se;
}
Bi u th c: cho k t qu S NGUYÊN; ph i
ngo c n ()
Si : dãy các l nh.
NH P MƠN L P TRÌNH

c

t gi a c p

12/23/2009

7

Ví d l nh switch
switch(c)
switch(c) {{
case
case 'a':
'a': case
case 'A':
'A':

printf(“Dien
printf(“Dien tich
tich == %.2f\n",
%.2f\n", rr ** rr ** pi);
pi);
break;
break;
case
case 'c':
'c': case
case 'C':
'C':
printf(“Chu
printf(“Chu vi
vi == %.2f\n",
%.2f\n", 22 ** rr ** pi);
pi);
break;
break;
case
case 'q':
'q':
printf(“Thoat\n");
printf(“Thoat\n");
break;
break;
default:
default:
printf(“Chon
printf(“Chon khong

khong hop
hop le\n");
le\n");
}}
NH P MƠN L P TRÌNH

12/23/2009

8


M ts

u ý – switch

N u khơng có giá tr nào kh p, các l nh trong ph n
default s
c th c thi; và n u khơng có default
c ng không x y ra l i.
L nh break r t quan tr ng.
ii
ii
ii

float
float f;
f;
ii == 3;
3;
switch(f)

switch(f) {{
case
case 2:
2:
....
....
switch(i)
switch(i) {{
case
case 22 ** j:
j:
....
....

== 33
== 22
== 11

switch(i)
switch(i) {{
case
printf("i
case 3:
3:
printf("i == 3\n");
3\n");
case
2:
printf("i
=

2\n");
case 2:
printf("i = 2\n");
case
1:
printf("i
case 1:
printf("i == 1\n");
1\n");
}}

NH P MƠN L P TRÌNH

9

12/23/2009

C u trúc nhi u ch n l a – switch
gt1

S1;
break;

bi u
th c

default

gt2
S2;

break;


NH P MƠN L P TRÌNH

12/23/2009

Se;

10


Ví d khác – switch
//Doan
//Doan chuong
chuong
switch(so)
switch(so) {{
case
case 0:
0:
case
case 1:
1:
case
case 2:
2:
case
case 3:
3:

case
case 4:
4:
case
case 5:
5:
case
case 6:
6:
case
case 7:
7:
case
case 8:
8:
case
case 9:
9:
}}

trinh
trinh doc
doc so
so 0..9
0..9
printf(“khong\n");
printf(“khong\n");
printf(“mot\n");
printf(“mot\n");
printf(“hai\n");

printf(“hai\n");
printf(“ba");
printf(“ba");
printf(“bon");
printf(“bon");
printf(“nam");
printf(“nam");
printf(“sau");
printf(“sau");
printf(“bay");
printf(“bay");
printf(“tam");
printf(“tam");
printf(“chin");
printf(“chin");

NH P MƠN L P TRÌNH

11

12/23/2009

L nh l p while
Cú pháp:

while ( i u ki n)
S;

i u ki n: bi u th c cho k t qu S
ph i

c t gi a c p ngo c n ()
S ph i là 1 câu l nh, n u nhi u h n
l nh, các l nh ph i
c t gi a c
ngo c nh n {} – kh i l nh.

i u
ki n

;

while th c hi n l nh S ít nh t 0 l n
NH P MƠN L P TRÌNH

12/23/2009

0
S

1
p

int
while(j
jj == 5;
>> 0)
int
5;
while(j
0) {{

printf("j
== %i\n",
printf("j
%i\n", j);
j);
while(j
>
0)
while(j
>
0)
j--;
j--;
printf("j
== %i\n",
printf("j
%i\n", j--);
j--);
}}

0

jj
jj
jj
jj
jj

== 55
== 44

== 33
== 22
== 11
12


u ý d u ch m ph y ;
D u ‘;’ t ngay sau bi u th c i u ki n
S là r ng.
int
int jj == 5;
5;
while(j
while(j >> 0);
0);
printf("j
printf("j == %i\n",
%i\n", j--);
j--);

ôi khi ng

ng ngh a v i l nh

Ch ong trình b
khơng thốt

p
c


i l p trình c ý s d ng l nh r ng

int
int c,
c, j;
j;
while(scanf("%i",
while(scanf("%i", &j)
&j) !=
!= 1)
1)
while((c
while((c == getch())
getch()) !=
!= 27)
27)
;;
NH P MÔN L P TRÌNH

t d u ‘;’
t thúc while
khơng có S
13

12/23/2009

L nh l p do while
Cú pháp:

do

{

S

S;
}while ( i u ki n);
i u ki n: bi u th c cho k t qu S ; ph i
c t gi a c p ngo c n ()

NH P MƠN L P TRÌNH

12/23/2009

i u
ki n

0

0

14


Ví d do while
int
int jj == 5;
5;
printf("start\n");
printf("start\n");
do

do
printf("j
printf("j == %i\n",
%i\n", j--);
j--);
while(j
while(j >> 0);
0);
printf("stop\n");
printf("stop\n");

NH P MƠN L P TRÌNH

start
start
jj == 55
jj == 44
jj == 33
jj == 22
jj == 11
stop
stop

15

12/23/2009

Ví d do while
int
int jj == -10;

-10;
printf("start\n");
printf("start\n");
do
do {{
printf("j
printf("j == %i\n",
%i\n", j);
j);
j--;
j--;
}} while(j
while(j >> 0);
0);
printf("stop\n");
printf("stop\n");

start
start
jj == -10
-10
stop
stop

do while th c hi n l nh S ít nh t 1 l n
NH P MÔN L P TRÌNH

12/23/2009

16



L nh l p for
L nh l p for d n h t cá
các thà
thành ph n c a vòng l p và
vào trong
m t câu l nh.
Cú phá
pháp:
for (kh i
ng; i u ki n l p;
i u khi n)
S;

kh i
ng

i u
ki n

0

S

i u
khi n

0
NH P MƠN L P TRÌNH


12/23/2009

17

L nh l p for – Ví d
jj == 55
int
jj == 44
int j;
j;
jj == 33
for(j
=
5;
j
>
0;
j--)
{
for(j for(j
= 5; j== >5;
>> 0;
jj == 22
for(j
5;0;jj j--)
0; {j--)
j--)
printf("j
=

%i
",
j);
printf("j
= %i ",
j);
printf("j
== %i\n",
j);
jj == 11
printf("j
%i\n",
j);
printf("%s\n",
((j%2)==0)?“chan":“le");
printf("%s\n", ((j%2)==0)?“chan":“le");
}}
jj == 55 le
le
jj == 44 chan
chan
jj == 33 le
le
jj == 22 chan
chan
jj == 11 le
le

NH P MƠN L P TRÌNH


12/23/2009

18


c l p trong for
C không gi i h n

l nc ab

c l p trong for.

#include
#include <math.h>
<math.h>
int
int main(void)
main(void)
{{
double
double angle;
angle;
for(angle
for(angle == 0.0;
0.0; angle
angle << 3.14159;
3.14159; angle
angle +=
+= 0.2)
0.2)

printf("sine
of
%.1lf
is
%.2lf\n",
printf("sine of %.1lf is %.2lf\n",
angle,
angle, sin(angle));
sin(angle));
return
return 0;
0;
}}
NH P MƠN L P TRÌNH

19

12/23/2009

Nói thêm v for
Ph n l nh kh i ng và l nh i u khi n có th g m nhi u
l nh n gi n, các l nh này cách nhau b i d u ph y (,)
int
int i,
i, j,
j, k;
k;
for(i
=
0,

for(i = 0, jj == 5,
5, kk == -1;
-1; ii << 10;
10; i++,
i++, j++,
j++, k--)
k--)

Các ph n: kh i ng, i u ki n l p, i u khi n có
th khơng có l nh nào.
for(;
for(; ii << 10;
10; i++,
i++, j++,
j++, k--)
k--)
Dùng while s
lý h n

for(;i
for(;i << 10;)
10;)
for(;;)
for(;;)

NH P MÔN L P TRÌNH

p

Vịng l p khơng k t thúc

12/23/2009

20


break
T khóa break ch th vi c thốt ngay l p t c kh i c u
trúc i u khi n.
u scanf tr
1,
ch ng trình thốt
C n th n khi s d ng!
kh i vòng l p for

for(;;)
for(;;) {{
printf(“nhap
printf(“nhap mm tt so
so nguyen:
nguyen: ");
");
if(scanf("%i",
if(scanf("%i", &j)
&j) ==
== 1)
1)
break;
break;
printf(“khong
printf(“khong hop

hop le,
le, nhap
nhap lai\n“
lai\n“
}}
nhap
nhap mot
mot so
so nguyen
nguyen :: int
int
printf(“j
printf(“j == %i\n",
%i\n", j);
j);
khong
khong hop
hop le,
le, nhap
nhap lai
lai
nhap
mot
so
nguyen:
nhap mot so nguyen: 16
16
jj == 16
16


NH P MƠN L P TRÌNH

21

12/23/2009

continue
T khóa continue ch th
c nhanh
b t k phía sau ó cịn nhi u l nh c n l p.
H n ch s d ng!

nb

cl pk ,

u j chia h t cho 3
thì b qua l nh in j

for(j
for(j == 1;
1; jj <=
<= 10;
10; j++)
j++) {{
if(j
if(j %% 33 ==
== 0)
0)
continue;

continue;
printf("j
printf("j == %i\n",
%i\n", j);
j);
}}

NH P MÔN L P TRÌNH

12/23/2009

jj
jj
jj
jj
jj
jj
jj

== 11
== 22
== 44
== 55
== 77
== 88
== 10
10

22



Tóm l

c

if else:
else: r nhá
nhánh
switch r nhi u nhánh v i i u ki n là giá tr
c a bi u th c nguyên
while, do while, for – 3 lo i vịng l p c a C
break
continue

NH P MƠN L P TRÌNH

12/23/2009

23

M t s bài t p
1.
2.
3.
4.

5.
6.
7.
8.

9.
10.

Nh p a, b, c. Tì
Tìm max. Phá
Phát tri n nhi u s
Gi i ph ng trì
trình ax+b=0
Gi i ph ng trình ax2+bx+c=0
Gi i h ph ng trình:
a1x+b1y=c1
a2x+b2y=c2
Nh p và
vào i m trung bì
bình, hãy x p lo i h c t p
Tính ti n i n (nh p vào s kw)
D ng tam giác (nh p các c nh a, b,c )
Nh p vào 1 tháng, cho bi t tháng này thu c quý m y?
Vi t ch ng trì
trình nh p và
vào thá
tháng, in ra s ngà
ngày c a nó

Vi t ch ng trì
trình nh p và
vào 2 s x, y và
và 1 trong 4 tố
tốn t +, -,
*, /. Sau ó th c hi n phép tính (n u y = 0 thì thơng báo


khơng chia
NH P MƠN L P TRÌNH

c)
12/23/2009

24


1.

Vi t hà
hàm:
1.
2.
3.
4.
5.

2.

Truy n và
vào ký t và s n. In ra n ký t ó
In hcn cá
các d u * có
có kích th c m*n
In hcn r ng cá
các d u * có
có kích th c m*n

In tam giá
giác cân cá
các d u * có
có chi u cao h
In tam giá
giác r ng cá
các d u * có
có chi u cao h

Tính cá
các t ng sau:

S=1+2+…+n
S = 2 + 4 + … + 2.n ( t ng cá
các s ch n <=n)
2
2
2
3. S = 1 +2 + … + n
4. S = 1.2+2.3+ … + n.(n+1)
5. S = 1/2 + 2/3 + … n/(n+1)
Vi t hà
hàm:
1. Nh p n s , tí
tính t ng.
2. Nh p n s , tì
tìm max
1.
2.


3.

4.
5.
6.
7.
8.
9.
10.
11.
12.

7. M t s bài t p

Tính s h ng th n c a dãy fibonaci (f0=f1=1, fn=fn-1+fn-2)
Tìm UCLN, BCNN c a hai s a,b ( C u trú
trúc Phân s )
Rút g n phân s
In ra cá
các c s c a n
T ng cá
các c s c a n, T ng cá
các s ch n <=n
T = n!
Ki m tra n có
có ph i là
là s nguyên t hay khơng
Ki m tra n có
có ph i là
là s chí

chính ph ng hay khơng
Phân tí
tích n thà
thành tí
tích cá
các th a s ngun t

NH P MƠN L P TRÌNH

12/23/2009

25



×