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

Bài giảng nhập môn lập trình mở đầu 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 (295.3 KB, 22 trang )

NMLT
M
U
Tr n Ph

c Tu n




ng bài gi ng
M c tiêu môn h c: Cung c p cho sinh viên các k
ng c
b n l p trình gi i quy t các v n , bài toán. Các ch ng
trình
c th hi n b ng NNLT C. Riêng v ngôn ng l p
trình C, các sinh viên
c cung c p các k
ng:
c và vi t
c ch ng trình n gi n
Hi u c u trúc ngôn ng
S d ng thành th o các th vi n chu n
Nh n bi t và s a ch a các l i th ng g p khi l p trình
Các môn h c tiên quy t: không.
N i dung bài gi ng:

NH P MÔN L P TRÌNH

12/23/2009


2


N i dung môn h c
T ng quan
Các ki u d li u c b n
L nh nh p, xu t d li u
Các c u trúc i u khi n
Hà m
Struct
M ng
Con tr
Chu i ký t
NH P MÔN L P TRÌNH

12/23/2009

3

T ng quan
Khái ni m ch

ng trình – l p trình

C u trúc m t ch

ng trình

n gi n


Khái ni m Thu t toán – bi u di n thu t toán
Khái ni m NNLT,

l

c l ch s phát tri n NNLT

Ngôn ng l p trình C

NH P MÔN L P TRÌNH

12/23/2009

4


Các thành ph n
c a ch ng trình C

Ví d ch

ng trình C
Th

Ghi chú
chú

vi n nh p xu t chu n

/*VIDU.CPP*/

/*VIDU.CPP*/
#include
#include <stdio.h>
<stdio.h>

Hàm main

int
int main()
main()
{{
printf(“Nhap
printf(“Nhap mon
mon lap
lap trinh\n");
trinh\n");
printf(“Vi
du
don
gian\n");
printf(“Vi du don gian\n");
return
return 0;
0;
}}

Nhap
Nhap mon
mon lap
lap trinh

trinh
Vi
du
don
gian
Vi du don gian

Báo CT k t thúc cho H H

NH P MÔN L P TRÌNH

12/23/2009

6


M ts
Ph n ghi chú

u ý t ví d
c trình biên d ch b qua

Phân bi t ch in hoa và ch in th

ng

Câu l nh luôn
c k t thúc b ng d u ;
Chu i ký t ph i ghi gi a c p nháy kép “
In xu ng dòng dùng ký t \n

Ch ng trì
trình nên thông bá
báo k t qu th c hi n v i h
th ng: T t – 0, có l i – 1, 2, 3 …
Ch

ng trình có m t hàm main

NH P MÔN L P TRÌNH

12/23/2009

7

Ví d 2
Khai báo 2 bi n s
nguyên, “a” và “b”

#include
#include <stdio.h>
<stdio.h>
int
int main(void)
main(void)
{{
int
int a,
a, b;
b;


Nh p 2 s nguyên
vào a và b

printf(“Nhap
printf(“Nhap 22 so
so ngguyen:
ngguyen: ");
");
scanf("%i
%i",
&a,
&b);
scanf("%i %i", &a, &b);
printf("%i
printf("%i -- %i
%i == %i\n",
%i\n", a,
a, b,
b, aa -- b);
b);

Vi t các bi u th c “a”,
“b” và “a-b” theo nh }}
ng %i

NH P MÔN L P TRÌNH

return
return 0;
0;

Nhap
Nhap 22 so
so nguyen:
nguyen: 21
21 17
17
21
21 -- 17
17 == 44

12/23/2009

8


Bi n – Variable
int a, b;
Ch a d li u có th thay

i

c trong ch

ng trình.

Mu n s d ng ph i khai báo.
Tên: g m ch cái, ký s , d u n i (_), không
u b ng ký s .

cb t


Bi n khai báo trong kh i
c g i là bi n c c b ,
không thu c kh i nào
c g i là bi n toàn c c
Có tác d ng trong toàn kh i k t lúc

NH P MÔN L P TRÌNH

c khai báo.

12/23/2009

9

L nh xu t - printf
Xu t d li u ra màn hình:
printf("%i - %i = %i\n", a, b, a - b);
Các ký t h ng

c in nguyên v n

Các ký t
nh d ng
th c t ng ng:
%i: ký t

c thay b ng giá tr c a bi u

nh d ng s nguyên ki u int


Các ký t i u khi n: \n – xu ng dòng; \t – d u tab;
\\ – d u \; \“– d u “ …
Th vi n: stdio.h

NH P MÔN L P TRÌNH

12/23/2009

10


L nh nh p - scanf
Nh p d li u t bàn phím

scanf("%i %i", &a, &b);
Trong chu i nh d ng ch có ký t
kho ng tr ng.
D li u ph i

nh d ng và

c nh p vào các bi n.

Tr c tên bi n ph i ghi d u & - toán t
a ch . N u
không có toán t
a ch , giá tr c a bi n s không
c c p nh t
Th vi n: stdio.h


NH P MÔN L P TRÌNH

12/23/2009

Ki u d li u c s
trong C

11


Các ki u s nguyên c a C
C h tr khá nhi u ki u s nguyên
Các giá tr l n nh t và nh nh t
vi n “limits.h”

c

nh ngh a trong th

Ki u
nh d ng kích th c nh nh t
l n nh t
char
%c
1
CHAR_MIN CHAR_MAX
unsigned char %c
1
0

UCHAR_MAX
short [int]
%hi
2
SHRT_MIN SHRT_MAX
unsigned short%hu
2
0
USHRT_MAX
int
%i
2 or 4 INT_MIN INT_MAX
unsigned int
%u
2 or 4
0
UINT_MAX
long [int]
%li
4
LONG_MIN LONG_MAX
unsigned long %lu
4
0
ULONG_MAX
NH P MÔN L P TRÌNH

12/23/2009

13


Ví d v s nguyên
#include
#include
#include
#include

<stdio.h>
<stdio.h>
<limits.h>
<limits.h>

int
int main()
main()
{{
unsigned
unsigned long
long

big
big == ULONG_MAX;
ULONG_MAX;

printf("minimum
printf("minimum int
int == %i,
%i, ",
", INT_MIN);
INT_MIN);

printf("maximum
int
=
%i\n",
INT_MAX);
printf("maximum int = %i\n", INT_MAX);
printf("maximum
printf("maximum unsigned
unsigned == %u\n",
%u\n", UINT_MAX);
UINT_MAX);
printf("maximum
long
int
=
%li\n",
printf("maximum long int = %li\n", LONG_MAX);
LONG_MAX);
printf("maximum
printf("maximum unsigned
unsigned long
long == %lu\n",
%lu\n", big);
big);
return
return 0;
0;
}}

NH P MÔN L P TRÌNH


minimum
minimum int
int == -32768,
-32768, maximum
maximum int
int == 32767
32767
maximum
unsigned
=
65535
maximum unsigned = 65535
maximum
maximum long
long int
int == 2147483647
2147483647
maximum
maximum unsigned
unsigned long
long == 4294967295
4294967295
12/23/2009

14


Ví d ki u ký t
In ra mã ASCII c a ký t

#include
#include
#include
#include

<stdio.h>
<stdio.h>
<limits.h>
<limits.h>

int
int main()
main()
{{
char
char lower_a
lower_a == 'a';
'a';
char
lower_m
=
'm';
char lower_m = 'm';

Trong NNLT C, ký t
chính là s nguyên

printf("minimum
printf("minimum char
char == %i,

%i, ",
", CHAR_MIN);
CHAR_MIN);
printf("maximum
char
=
%i\n",
CHAR_MAX);
printf("maximum char = %i\n", CHAR_MAX);
printf(“Sau
printf(“Sau '%c'
'%c' la
la '%c'\n",
'%c'\n", lower_a,
lower_a, lower_a
lower_a ++ 1);
1);
printf(“Ky
tu
in
hoa
'%c'\n",
lower_m
'a'
+
'A');
printf(“Ky tu in hoa '%c'\n", lower_m - 'a' + 'A');
return
return 0;
0;

}}

minimum
minimum char
char == -128,
-128, maximum
maximum char
char == 127
127
Sau
'a'
la
'b'
Sau 'a' la 'b'
Ky
Ky tu
tu in
in hoa
hoa 'M'
'M'

NH P MÔN L P TRÌNH

15

12/23/2009

S nguyên trong các c s khác
Các h
s có th th c hi n

c:
10 (decimal), s 16 (hexadecimal)

s 8 (octal),

0: s octal

s

0x: s
hexadecimal

#include
#include <stdio.h>
<stdio.h>
int
int main(void)
main(void)
{{
int
int dec
dec == 20,
20, oct
oct == 020,
020, hex
hex == 0x20;
0x20;
printf("dec=%d,
printf("dec=%d, oct=%d,
oct=%d,

printf("dec=%d,
oct=%o,
printf("dec=%d, oct=%o,
return
return 0;
0;
}}

NH P MÔN L P TRÌNH

hex=%d\n",
hex=%d\n", dec,
dec, oct,
oct,
hex=%x\n",
dec,
oct,
hex=%x\n", dec, oct,
dec=20,
dec=20, oct=16,
oct=16,
dec=20,
oct=20,
dec=20, oct=20,

12/23/2009

hex);
hex);
hex);

hex);

hex=32
hex=32
hex=20
hex=20

16


S th c
C h tr nhi u ki u s th c l u tr d u ch m ng.
Các giá tr l n nh t và nh nh t
c nh ngh a trong th vi n
“float.h”
Ki u
nh d ng
kích th
float
%f %e %g
4
double
%lf %le %lg
8
long double %Lf %Le %Lg
10

NH P MÔN L P TRÌNH

c nh nh t


n nh t

FLT_MIN

FLT_MAX

DBL_MIN

DBL_MAX

LDBL_MIN

LDBL_MAX

17

12/23/2009

Ví d s th c:
#include
#include
#include
#include

<stdio.h>
<stdio.h>
<float.h>
<float.h>


int
int main(void)
main(void)
{{
double
double ff == 3.1416,
3.1416, gg == 1.2e-5,
1.2e-5, hh == 5000000000.0;
5000000000.0;
printf("f=%lf\tg=%lf\th=%lf\n",
printf("f=%lf\tg=%lf\th=%lf\n", f,
f, g,
g, h);
h);
printf("f=%le\tg=%le\th=%le\n",
f,
g,
h);
printf("f=%le\tg=%le\th=%le\n", f, g, h);
printf("f=%lg\tg=%lg\th=%lg\n",
printf("f=%lg\tg=%lg\th=%lg\n", f,
f, g,
g, h);
h);
printf("f=%7.2lf\tg=%.2le\th=%.4lg\n",
printf("f=%7.2lf\tg=%.2le\th=%.4lg\n", f,
f, g,
g, h);
h);
return

return 0;
0;
}} f=3.141600
f=3.141600
f=3.141600e+00
f=3.141600e+00
f=3.1416
f=3.1416
f=
3.14
f=
3.14
NH P MÔN L P TRÌNH

g=0.000012
g=0.000012
g=1.200000e-05
g=1.200000e-05
g=1.2e-05
g=1.2e-05
g=1.20e-05
g=1.20e-05
12/23/2009

h=5000000000.000000
h=5000000000.000000
h=5.000000e+09
h=5.000000e+09
h=5e+09
h=5e+09

h=5e+09
h=5e+09
18


H ng – Constant
const int days_in_week = 7;
Ch a d li u không th thay

i

c trong ch

ng trình.

Mu n s d ng ph i khai bá
báo.
Ph i có ki u ( ng t nh bi n)
H ng s có ch a “.” ho c “e” có ki u double (3.5, 1e1e-7, -1.29e15)
H ng s ki u float k t thú
thúc b i “F” (3.5F, 1e1e-7F)
H ng s ki u long double
double k t thú
thúc b i “L” (-1.29e15L, 1e1e-7L)
H ng s không có
có “.”, “e” ho c “F” có ki u int. Ví d : 10000, -35.
(M t và
ng chuy n thà
vài trì
trình biên d ch t

thành long int n u giá
giá tr
h ng tràn ki u int)
Khai bá
báo h ng long int ph i thêm và
vào cu i “L” (9000000L)
NH P MÔN L P TRÌNH

12/23/2009

19

Ví d v h ng
Các h ng pi, days_in_week, sunday

c t o v i t khóa const

#include
#include <stdio.h>
<stdio.h>

L i

int
intmain(void)
main(void)
{{
const
const long
long double

double pi
pi == 3.141592653590L;
3.141592653590L;
const
const int
int days_in_week
days_in_week == 7;
7;
const
const sunday
sunday == 0;
0;
days_in_week
days_in_week == 5;
5;
return
return 0;
0;
}}

NH P MÔN L P TRÌNH

12/23/2009

20


H ng x lý tr

c biên d ch


Các h ng có th
c xác l p tr c khi biên d ch
B n ch t là tìm ki m và thay th
Th ng
c t tên v i các ch cái in hoa
Tìm t “PI”, thay b ng 3.1415....

#include
#include <stdio.h>
<stdio.h>
#define
#definePI
PI
#define
DAYS_IN_WEEK
#define DAYS_IN_WEEK
#define
#defineSUNDAY
SUNDAY

3.141592653590L
3.141592653590L
77
00

u ý: không
có “=” và “;”

int

int day
day == SUNDAY;
SUNDAY;
long
long flag
flag == USE_API;
USE_API;
Không thay th “PI”
NH P MÔN L P TRÌNH

12/23/2009

Toán t trong C

21


Toán t trong C
Phé
Phép toá
toán s h c
Ép ki u
Các toán t trên bit
Các toán t so sánh
Phép gán
Toá
Toán t sizeof
Bi u th c i u ki n

NH P MÔN L P TRÌNH


12/23/2009

23

Toán t s h c
NNLT C h tr các phép toán s h c:
+
c ng
tr
*
nhân
/
chia
%
chia l y d
u ý:
ý:
“/” cho k t qu ph thu c vào ki u c a các toán h ng
“%” không th c hi n
c v i các s th c

NH P MÔN L P TRÌNH

12/23/2009

24


Ví d v toán t chia “/”

Trình biên d ch d a vào ki u c a các toán h ng
nh phép chia t ng ng
“i”, “j” ki u int, “/” là
phép chia l y nguyên
k nh n giá tr 1

int
int main(void)
main(void)
{{
int
ii == 5,
int
5,
double
f
=
5.0,
double f = 5.0,

“f”, “g” ki u double, “/”
là phép chia s th c
h nh n giá tr 1.25
Phép chia nguyên, b t
“h” có ki u double.
t qu là 1.00000

kk
hh
hh


==
==
==

ii
ff
ii

//
//
//

jj
gg

==
==

quy t

4,
4,
4.0,
4.0,

k;
k;
h;
h;


j;
j;
g;
g;
j;
j;

return
return 0;
0;
}}

NH P MÔN L P TRÌNH

12/23/2009

25

Ép ki u
Ép ki u làm thay
bi u th c.

i t m th i ki u c a m t bi n trong m t
int
int main(void)
main(void)
{{
int
int ii == 5,

5, jj == 4;
4;
double
f;
double f;
ff
ff
ff
ff

Phép chia s nguyên
c th c hi n, k t
qu , 1,
c i sang
ki u double, 1.00000

==
==
==
==

(double)i
(double)i // j;
j;
ii // (double)j;
(double)j;
(double)i
(double)i // (double)j;
(double)j;
(double)(i

(double)(i // j);
j);

return
return 0;
0;
}}
NH P MÔN L P TRÌNH

12/23/2009

26


Phép t ng (gi m) 1
NNLT C có
c bi t h tr vi c t ng (gi m) giá
có 2 toá
toán t
giá tr
c a m t bi n thay i 1 n v
++
--

ng 1
gi m 1

Các toán t này có th
“i”
“j”


t tr

6

3
“i”

7

NH P MÔN L P TRÌNH

Tr

c ho c sau bi n.
int
int ii == 5,
5, jj == 4;
4;
ii ++;
++;
--- j;
j;
++
++ i;
i;
27

12/23/2009


c hay sau ?

Th t th c hi n các toán t ++ và -- ph thu c vào v trí c a
chúng (t c hay sau) so v i bi n:
#include
#include <stdio.h>
<stdio.h>
int
intmain(void)
main(void)
{{
int
i,
int
i, jj == 5;
5;
ii == ++j;
++j;
printf("i=%d,
printf("i=%d, j=%d\n",
j=%d\n",
jj == 5;
5;
ii == j++;
j++;
printf("i=%d,
printf("i=%d, j=%d\n",
j=%d\n",
return
return 0;

0;
}}
NH P MÔN L P TRÌNH

ng
1. j++;
2. i = j;

i,
i, j);
j);

ng
1. i = j;
2. j++;

ng:

ng:

i,
i, j);
j);

i=6,
i=6,
i=5,
i=5,
12/23/2009


j=6
j=6
j=6
j=6
28


Ki u lu n lý trong C
Trong C không có ki u d li u lu n lý (th hi n các
giá tr ÚNG – SAI), thay vào ó các bi u th c so
sánh s cho k t qu là S
Giá tr 0 (0.0) ng v i k t qu SAI (FALSE)
Các giá
giá tr khá
khác nh 1, -3.5, -7, 10.4, … (khá
(khác không)
u
c xem là ÚNG (TRUE)

NH P MÔN L P TRÌNH

12/23/2009

29

Các toán t so sánh
NNLT C h tr các phé
phép so sá
sánh:
<

<=
>
>=
==
!=

bé n
bé n hay b ng
l nh n
l n h n hay b ng
b ng
không b ng

T t c
u cho k t qu 1 khi so sánh úng và 0 trong
tr ng h p ng c l i.

NH P MÔN L P TRÌNH

12/23/2009

30


Toán t lu n lý
NNLT C h tr các toá
toán t lu n lý:
&&
||
!


và (and)
ho c (or)
ph
nh (not)

T tc
u cho k t qu 1 ho c 0
ÚNG ho c SAI

ng ng các tr

ng h p

int
int i,
i, jj == 10,
10, kk == 28;
28;
ii == ((j
((j >> 5)
5) &&
&& (k
(k << 100))
100)) ||
|| (k
(k >> 24);
24);
NH P MÔN L P TRÌNH


31

12/23/2009

Toán t lu n lý
u ý khi s d ng cá
các toá
toán t lu n lý:
N u không có
có các d u (), cá
các phé
phép toá
toán
trái sang ph i

c th c hi n t

if((i
if(i
10)
&&
a[i]
(a[i]
>> 0)
>> 0))
if((i<<<<10
10)
&&
(a[i]
0))

if(i
10
&&&&
a[i]
0)
printf("%i\n",
printf("%i\n", a[i]);
a[i]);
Nên vi t
“i < 10”
c ki m tra tr c, n u không úng giá tr
a bi u th c s là 0 và “a[i] > 0” s không
c tính

Không
Không nên:(a
nên:(a << bb << c)
c)

NH P MÔN L P TRÌNH

Nên:((a
Nên:((a << b)
b) &&
&& (b<
(b< c)
c)

12/23/2009


32


Toán t trên bit
Các toán t trên bit ch có tác d ng trên các ki u s nguyên:
&
|
^
>>
<<

And
Or
XOr
y ph i
y trái

NH P MÔN L P TRÌNH

12/23/2009

33

Ví d v các toán t trên bit
#include
#include <stdio.h>
<stdio.h>

0x6eb9
0x6eb9 0110

0110 1110
1110 1011
1011 1001
1001
0x5d27
0101
1101
0010
0x5d27 0101 1101 0010 0111
0111
0x4c21
0100
1100
0010
0001
0x4c21 0100 1100 0010 0001

int
int main(void)
main(void)
{{
short
short aa == 0x6eb9;
0x6eb9;
short
b
=
0x5d27;
short b = 0x5d27;
unsigned

unsigned short
short cc == 7097;
7097;

0x6eb9
0x6eb9 0110
0110 1110
1110 1011
1011 1001
1001
0x5d27
0101
1101
0010
0111
0x5d27 0101 1101 0010 0111
0x7fbf
0x7fbf 0111
0111 1111
1111 1011
1011 1111
1111
0x6eb9
0x6eb9 0110
0110 1110
1110 1011
1011 1001
1001
0x5d27
0101

1101
0010
0111
0x5d27 0101 1101 0010 0111
0x339e
0x339e 0011
0011 0011
0011 1001
1001 1110
1110

printf("0x%x,
printf("0x%x, ",
", aa && b);
b);
printf("0x%x,
",
a
|
b);
printf("0x%x, ", a | b);
printf("0x%x\n",
printf("0x%x\n", aa ^^ b);
b);
printf("%u,
printf("%u, ",
", cc <<
<< 2);
2);
printf("%u\n",

c
>>
1);
printf("%u\n", c >> 1);

7097
7097 0001
0001 1011
1011 1011
1011 1001
1001
28388
0110
1110
1110
0100
28388 0110 1110 1110 0100

return
return 0;
0;
}}

0x4c21,
0x4c21, 0x7fbf,
0x7fbf, 0x339e
0x339e
28388,
3548
28388, 3548


NH P MÔN L P TRÌNH

7097
7097 0001
0001 1011
1011 1011
1011 1001
1001
3548
0000
1101
1101
1100
3548 0000 1101 1101 1100

12/23/2009

34


Phép gán
Có th s d ng liên ti p nhi u phép gán
Giá tr
c gán s s n sàng cho l nh k ti p
“n = 22” gán tr c, l i
gán “n” cho “m”, “m”
cho “l”, …
i, j, k, l, m,
n u nh n giá tr 22.


int
int i,
i, j,
j, k,
k, l,
l, m,
m, n;
n;
ii == jj == kk == ll == mm == nn == 22;
22;
printf("%i\n",
printf("%i\n", jj == 93);
93);
“j”

NH P MÔN L P TRÌNH

c gán 93, giá tr 93 s
c in ra màn hình

12/23/2009

35

Phép gán
u ý:
V trái phép gán luôn ph i là bi n
Không
c nh m l n gi a so sánh b ng “==” và gán “=”

#include
#include <stdio.h>
<stdio.h>
int
int main(void)
main(void)
{{
int
int ii == 0;
0;
if(i
if(i == 0)
0)
printf("i
printf("i
else
else
printf(“i
printf(“i

ii khac
khac khong
khong

nhan
nhan gia
gia tri
tri khong\n");
khong\n");
khac

khac khong\n");
khong\n");

return
return 0;
0;
}

}
NH P MÔN L P TRÌNH

12/23/2009

36


M t s phép gán

c bi t

Các phép gán k t h p toán t khác:
+=
-=
*=
/=
&=
|=
^=
<<=
>>=

T ng quá
quát:
bi n

op=

%=

bi u th c

ng
ng:
bi n = bi n op (bi u th c)
aa +=
+= 27;
27;
aa == aa ++ 27;
27;

ff /=
ii *=
/= 9.2;
9.2;
*= jj ++ 2;
2;
ff == ff // 9.2;
ii == ii ** (j
9.2;
(j ++ 2);
2);


NH P MÔN L P TRÌNH

37

12/23/2009

Toán t sizeof
sizeof(Obj)
Cho bi t kích th

cc a

it

ng theo

n v byte

#include
#include <stdio.h>
<stdio.h>
int
int main(void)
main(void)
{{
long
long big;
big;
printf("\"big\"

printf("\"big\" is
is %u
%u bytes\n",
bytes\n", sizeof(big));
sizeof(big));
printf("a
short
is
%u
bytes\n",
sizeof(short));
printf("a short is %u bytes\n", sizeof(short));
printf("a
printf("a double
double is
is %u
%u bytes\n",
bytes\n", sizeof
sizeof (double));
(double));
return
return 0;
0;
}}
NH P MÔN L P TRÌNH

"big"
"big" is
is 44 bytes
bytes

aa short
short is
is 22 bytes
bytes
aa double
is
8
double is 8 bytes
bytes
12/23/2009

38


Bi u th c ch n theo i u ki n
( i u ki n) ? BT1 : BT2
Bi u th c nh n giá tr BT1 n u i u ki n khác 0 ( ÚNG),
các tr ng h p khác nh n giá tr BT2
int
int i,
i, jj == 100,
100, kk == -1;
-1;

int
int i,
i, jj == 100,
100, kk == -1;
-1;


ii == (j
(j >> k)
k) ?? jj :: k;
k;

ii == (j
(j << k)
k) ?? jj :: k;
k;
uu (j
(j << k)
k)
ii == j;
j;
Ng
c
l
i
Ng c l i
ii == k;
k;

uu (j
(j >> k)
k)
ii == j;
j;
Ng
c
l

i
Ng c l i
ii == k;
k;

Có th nh ngh a s n m t macro tìm s l n:
#define max(x, y) ((x>y) ? x : y)
NH P MÔN L P TRÌNH

39

12/23/2009

u tiên c a toán t
Th t th c hi n các toán t trong m t bi u th c ph thu c
vào
u tiên c a chúng.
Có 15 m c u tiên.
Thông th ng, toán t m t ngôi có
u tiên cao h n toán
t hai ngôi.
Các c p d u ngo c n () t
ng
c dùng ch rõ th t
các toán t .
#include
#include <stdio.h>
<stdio.h>
int
int main(void)

main(void)
{{
int
int jj == 33 ** 44 ++ 48
48 // 7;
7;
printf("j
printf("j == %i\n",
%i\n", j);
j);
return
return 0;
0;
NH P MÔN L P TRÌNH

}}
12/23/2009

jj == 18
18
40


B ng th t th c hi n các toán t
Toán t
Th
() [] -> .
! ++ -- - + (cast) * & sizeof
* / %
+ << >>

< <= >= >
== !=
&
|
^
&&
||
?:
= += -= *= /= %= …
NH P MÔN L P TRÌNH

(n u cùng

T)

41

12/23/2009

Luy n t p
#include
#include <stdio.h>
<stdio.h>
int
int main(void)
main(void)
{{
int
int ii == 0,
0, j,

j, kk ==
jj == mm +=
+= 2;
2;
printf("j
printf("j == %d\n",
%d\n",
jj == k++
>
7;
k++ > 7;
printf("j
printf("j == %d\n",
%d\n",
jj == ii ==
0
&
== 0 & k;
k;
printf("j
=
%d\n",
printf("j = %d\n",
nn == !i
!i >> kk >>
>> 2;
2;
printf("n
=
%d\n",

printf("n = %d\n",
return
return 0;
0;
}}
NH P MÔN L P TRÌNH

12/23/2009

7,
7, mm == 5,
5, n;
n;
j);
j);
j);
j);
j);
j);
n);
n);

42


Tóm l

c

M t s thành ph n c a ch ng trình trong C

Hàm main
L nh xu t / nh p – printf / scanf
Bi n
Các ki u s nguyên và s th c
H ng – 2 cách khai báo
S d ng toá
toán t trong C

NH P MÔN L P TRÌNH

12/23/2009

43



×