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 thoá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 thoát ngay l p t c kh i c u
trúc i u khi n.
u scanf tr
1,
ch ng trình thoá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 toá
toá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 nguyên t

NH P MÔN L P TRÌNH

12/23/2009

25



×