Giáo trình Kỹ thuật lập trình C

Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
Ch ¬ng I  
Nh÷ng kh¸i niÖm c¬ b¶n  
1.1 Nh÷ng kiÕn thøc c¬ b¶n :  
LËp tr×nh lµ g× ?  
LËp tr×nh lµ c¸c thao t¸c ® a ý nghÜ cña con ng êi theo mét tr×nh tù cã hÖ thèng vµo m¸y tÝnh,  
yªu cÇu m¸y tÝnh thùc hiÖn.  
Ng«n ng÷ lËp tr×nh  
Lµ c¸c phÇn mÒm mµ nhê ®ã c¸c kü thuËt viªn m« pháng l¹i c¸c thao t¸c trªn ng«n ng÷ ®ã  
th«ng qua c¸c qui t¾c qui íc mµ ng«n ng÷ ®Ò ra. Ng«n ng÷ lËp tr×nh cã chøc n¨ng chuyÓn toµn  
bé ch ¬ng tr×nh sang m· m¸y ®Ó m¸y tÝnh cã thÓ thùc hiÖn vµ ® a ra kÕt qu¶.  
Bµi to¸n tin häc lµ g×?  
Bµi to¸n trong Tin häc kh«ng dïng ®Ó chØ mét bµi to¸n cô thÓ, mµ chØ mét líp c¸c bµi  
to¸n cô thÓ thuéc cïng mét lo¹i. Mét bµi to¸n tin häc ® îc cÊu t¹o bëi hai yÕu tè sau:  
+ Th«ng tin vµo (Input): Lµ c¸c th«ng tin ta cã.  
+ Th«ng tin ra (Output): Lµ c¸c th«ng tin cÇn t×m hoÆc c©u tr¶ lêi cÇn thiÕt  
VÝ dô: §Ó gi¶i bµi to¸n tÝnh diÖn tÝch tam gi¸c b»ng c«ng thøc S=a*h/2.  
+ Th«ng tin vµo: Lµ c¹nh ®¸y a vµ ® êng cao h  
+ Th«ng tin ra : Lµ diÖn tÝch tam gi¸c S hoÆc lµ dßng th«ng b¸o d÷ liÖu kh«ng hîp lÖ.  
ThuËt to¸n (algorithm)  
ThuËt to¸n lµ mét qu¸ tr×nh gåm mét d·y h÷u h¹n c¸c thao t¸c ®¬n gi¶n ® îc s¾p xÕp theo mét  
tr×nh tù x¸c ®Þnh sao cho theo ®ã tõ Input cña bµi to¸n ta sÏ t×m ® îc Output hoÆc kh¼ng ®Þnh  
kh«ng cã Output nh bµi to¸n ®ßi hái. ChØ nh÷ng qu¸ tr×nh nh vËy míi cã kh¶ n¨ng chuyÓn giao  
m¸y tÝnh thùc hiÖn ® îc.  
VÝ dô: Trë l¹i bµi to¸n tÝnh diÖn tÝch tam gi¸c, thuËt to¸n nh sau:  
+ B íc 1: Cho gi¸ trÞ cña c¹nh ®¸y a vµ ® êng cao h  
+ B íc 2: KiÓm tra  
- NÕu a>0 vµ h>0 th× ®i tÝnh diÖn tÝch theo c«ng thøc S=a*h/2 vµ xuèng  
b íc 3  
- Ng îc l¹i th«ng b¸o d÷ liÖu kh«ng hîp lÖ vµ quay vÒ b íc 1  
+ B íc 3: In diÖn tÝch S.  
M« t¶ thuËt to¸n qua s¬ ®å  
§Ó m« t¶ mét c¸ch trùc quan h¬n vÒ thuËt to¸n ng êi ta dïng s¬ ®å khèi. Qua s¬ ®å khèi  
ng êi lËp tr×nh cã thÓ quan s¸t c¸c b íc cña thuËt to¸n còng nh dßng th«ng tin h×nh thµnh vµ  
biÕn ®æi trong qu¸ tr×nh thuËt to¸n lµm viÖc.  
ViÖc thÓ hiÖn thuËt to¸n ng êi ta qui íc dïng c¸c khèi sau ®Ó thÓ hiÖn.  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 1  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
- ThÓ hiÖn sù b¾t ®Çu vµ kÕt th c ch ¬ng tr×nh  
- ThÓ hiÖn viÖc nhËp, xuÊt d÷ liÖu.  
- Chøa c¸c c«ng thøc,c©u lÖnh tÝnh to¸n  
- Chøa c¸c biÓu thøc ®iÒu kiÖn, vµ ®Ó rÏ nh¸nh ch ¬ng tr×nh.  
- Dïng ®Ó gäi ch ¬ng tr×nh con  
DÉn h íng ch ¬ng tr×nh vµ nèi c¸c khèi trong thuËt to¸n víi  
nhau  
1.2 TËp ký tù dïng trong ch ¬ng tr×nh C :  
Mäi ng«n ng÷ lËp tr×nh ®Òu ® îc x©y dùng tõ mét bé ký tù nµo ®ã. C¸c ký tù ® îc nhãm  
l¹i theo nhiÒu c¸ch kh¸c nhau ®Ó lËp lªn c¸c tõ. §Õn l ît c¸c tõ l¹i ® îc liªn kÕt theo mét quy  
t¾c nµo ®ã ®Ó t¹o thµnh c¸c c©u lÖnh. Mét ch ¬ng tr×nh bao gåm nhiÒu c©u lÖnh vµ diÔn ®¹t mét  
thuËt to¸n ®Ó gi¶i mét bµi to¸n nµo ®ã. Ng«n ng÷ C ® îc x©y dùng trªn bé ký tù sau:  
26 ch÷ c¸i hoa : A B C ... Y Z, 26 ch÷ c¸i th êng : a b c ...y z  
10 ch÷ sè : 0 1 2 ... 8 9  
C¸c ký hiÖu to¸n häc : + - * / = ( )  
Ký hiÖu g¹ch d íi : _  
C¸c ký hiÖu ®Æc biÖt kh¸c nh : . , ; : [] {} ? ! \ & | % # $ ...  
DÊu c¸ch (space) cho mét ký tù ®Æc biÖt lµ mét kho¶ng tr¾ng.  
Khi viÕt ch ¬ng tr×nh b»ng ng«n ng÷ C ta chØ ® îc dïng bé ký tù trªn.  
1.3 Tõ kho¸ vµ tªn  
Tõ kho¸ lµ nh÷ng tõ cã mét ý nghÜa hoµn toµn x¸c ®Þnh. Chóng th êng ® îc sö dông ®Ó  
khai b¸o c¸c kiÓu d÷ liÖu, ®Ó viÕt c¸c to¸n tö vµ c¸c c©u lÖnh. D íi ®©y lµ c¸c tõ kho¸ dïng  
trong TURBO C :  
asm  
break  
const  
double  
far  
case  
cdecl  
default  
enum  
for  
char  
continue  
else  
do  
extern  
goto  
float  
huge  
long  
if  
int  
interrupt  
register  
sizeof  
typedef  
near  
pascal  
signed  
switch  
void  
return  
static  
union  
short  
struct  
unsigned  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 2  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
volatile  
while  
ý nghÜa vµ c¸ch sö dông cña chóng sÏ ® îc lÇn l ît giíi thiÖu trong c¸c môc sau. B íc ®Çu  
chóng ta chØ cÇn ghi nhí:  
-
-
Kh«ng ® îc dïng tõ kho¸ ®Ó ®Æt tªn cho c¸c h»ng, biÕn, m¶ng, hµm...  
Tõ kho¸ kh«ng ® îc viÕt b»ng ch÷ hoa mµ ph¶i ® îc viÕt b»ng ch÷ th êng.  
Tªn lµ mét kh¸i niÖm rÊt quan träng trong tÊt c¶ c¸c ng«n ng÷ lËp tr×nh chø kh«ng riªng g×  
C. Nã ® îc dïng ®Ó x¸c ®Þnh c¸c ®¹i l îng kh¸c nhau trong mét ch ¬ng tr×nh. Chóng ta cã tªn  
h»ng, tªn biÕn, tªn m¶ng, tªn hµm, tªn cÊu tróc, tªn nh·n,...Tªn ph¶i ® îc ®Æt theo quy t¾c sau:  
Tªn lµ mét d·y c¸c ký tù : ch÷, sè vµ dÊu g¹ch d íi. Ký tù ®Çu tiªn trong tªn ph¶i lµ mét  
ký tù ch÷ hay mét dÊu g¹ch d íi. Tªn tuyÖt ®èi kh«ng ® îc trïng víi tõ kho¸. §é dµi cùc ®¹i  
cña tªn mÆc ®Þnh lµ 32 ký tù.  
C¸c vÝ dô vÒ tªn:  
Tªn sai:  
so lon nhat // Cã chøa kho¶ng trèng  
12ten sai // Ký tù ®Çu lµ sè  
for  
// Tªn trïng víi tõ kho¸  
Tªn ®óng:  
so_lon_nhat // Thay kho¶ng trèng b»ng g¹ch d íi  
tendung12 // Ký tù ®Çu lµ ký tù ch÷  
rof  
// Kh«ng trïng víi tõ kho¸  
Trong C c¸c tªn ® îc ph©n biÖt ch÷ hoa vµ ch÷ th-êng. VÝ dô tªn “ kieu_ten” vµ tªn  
“Kieu_Ten” sÏ x¸c ®Þnh hai ®¹i l-îng kh¸c nhau.  
1.4 CÊu tróc mét ch ¬ng tr×nh C  
Mét ch ¬ng tr×nh viÕt b»ng C lµ mét d·y c¸c hµm trong ®ã cã mét hµm chÝnh cã tªn lµ  
main( ). Thø tù c¸c hµm trong ch ¬ng tr×nh lµ bÊt kú nh ng ch ¬ng tr×nh bao giê còng thùc  
hiÖn tõ hµm main( ). Mçi hµm sÏ thùc hiÖn mét c«ng viÖc nµo ®ã vµ ch ¬ng tr×nh sÏ gi¶i quyÕt  
bµi to¸n trän vÑn víi sù kÕt hîp mét c¸ch hîp lý cña c¸c hµm trong ch ¬ng tr×nh. Mét trong c¸c  
u ®iÓm cña C lµ nã cho phÐp tæ chøc vµ sö dông c¸c hµm mét c¸ch ®¬n gi¶m vµ hiÖu qu¶.  
CÊu tróc ch ¬ng tr×nh:  
/* Khai b¸o sö dông th viÖn */  
#include “tªnth-viÖn.h”  
...  
/* Khai nguyªn mÉu b¸o c¸c hµm */  
hµm1(khai b¸o c¸c ®èi nÕu cã);  
hµm2(khai b¸o c¸c ®èi nÕu cã);  
...  
/* Hµm chÝnh */  
void main()  
{
...  
/* gäi c¸c hµm khi cÇn*/  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 3  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
hµm1(c¸c ®èi)  
...  
} /* KÕt thóc hµm main();*/  
/* §Þnh nghÜa c¸c hµm trong ch ¬ng tr×nh*/  
hµm1(c¸c ®èi nÕu cã)  
{
...  
} /* KÕt thóc hµm1() */  
hµm2(c¸c ®èi nÕu cã)  
{
...  
} /* KÕt thóc hµm2();*/  
-
Ch ¬ng tr×nh dÞch cung cÊp mét bé c¸c hµm chuÈn vµ ® îc ®Ó trong c¸c th viÖn.  
Trong ch ¬ng tr×nh, nÕu dïng nh÷ng hµm nµy th× ph¶i khai b¸o sö dông th viÖn chøa  
hµm cÇn dïng.  
-
-
Kh«ng nhÊt thiÕt ph¶i khai b¸o nguyªn mÉu cña hµm, nh ng nªn cã v× nã cho phÐp  
ch ¬ng tr×nh dÞch ph¸t hiÖn lçi khi gäi hµm.  
Tr íc mçi hµm ph¶i cã tªn hµm. Tªn hµm còng ph¶i tu©n theo quy t¾c ®Æt tªn. C¸c  
hµm trong mét ch ¬ng tr×nh ph¶i cã nh÷ng tªn kh¸c nhau. Nªn dïng nh÷ng tªn gîi ®Õn  
chøc n¨ng cña hµm.  
-
Ta cã thÓ ®Æt c¸c c©u chó thÝch vµo ch ¬ng tr×nh b»ng c¸ch sau:  
/* Nh÷ng c©u chó thÝch */  
Ch ¬ng tr×nh dÞch sÏ kh«ng b¸o lçi mµ bá qua nh÷ng chó thÝch nµy  
Ch ¬ng 2  
H»ng, biÕn vµ m¶ng trong C  
2.1 C¸c kiÓu d÷ liÖu  
Trong C sö dông c¸c kiÓu gi¸ trÞ sau: sè nguyªn (int), sè thùc hay sè dÊu phÈy ®éng (float),  
sè dÊu phÈy ®éng cã ®é chÝnh x¸c kÐp (double) vµ ký tù (char). H»ng chÝnh lµ mét gi¸ trÞ th«ng  
tin cô thÓ. BiÕn vµ m¶ng lµ c¸c ®¹i l îng mang th«ng tin nµo ®ã, vÝ dô biÕn kiÓu int chøa ® îc  
c¸c sè nguyªn, biÕn kiÓu double chøa ® îc c¸c sè thùc. §Ó l u tr÷ th«ng tin, biÕn vµ m¶ng ® îc  
cÊp ph¸t bé nhí. Ng«n ng÷ C chia biÕn, m¶ng thµnh : biÕn, m¶ng tù ®éng; biÕn, m¶ng ngoµi vµ  
biÕn, m¶ng tÜnh.  
2.1.1 KiÓu ký tù (char):  
Mét gi¸ trÞ kiÓu char chiÕm mét byte (8 bits) vµ biÓu diÔn ® îc mét ký tù th«ng qua b¶ng  
m· ASCII.  
VÝ dô:  
Ký tù  
M· ASCII  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 4  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
A
0
65  
48  
97  
a
Cã hai kiÓu char lµ signed char vµ unsigned char. KiÓu signed char biÓu diÔn mét sè  
nguyªn trong ph¹m vi tõ -128 ®Õn 127. KiÓu unsigned char biÓu diÔn mét sè nguyªn trong ph¹m  
vi tõ 0 ®Õn 255. D íi ®©y sÏ minh ho¹ sù kh¸c nhau trong hai kiÓu d÷ liÖu char :  
signed char ch1;  
unsigned char ch2;  
ch1=200;ch2=200;  
Khi ®ã thùc chÊt th×:  
ch1 = -56;  
ch2 = 200;  
2.1.2 KiÓu nguyªn (int) :  
Trong C cho phÐp sö dông c¸c kiÓu sè nguyªn : sè nguyªn th êng (int); sè nguyªn dµi (  
long int ) vµ sè nguyªn kh«ng dÊu ( unsigned int ). Ph¹m vi biÓu diÔn vµ kÝch cì cña chóng ® îc  
chØ ra nh d íi ®©y:  
KiÓu  
Ph¹m vi biÓu diÔn  
-32768 32767  
KÝch th íc  
2 bytes  
int  
unsigned int  
long int  
0 65535  
2 bytes  
-2147483648 247483647  
0 429467295  
4 bytes  
unsigned long int  
4 bytes  
Ta cã thÓ nhËn thÊy kiÓu ký tù còng cã thÓ xem lµ mét d¹ng cña kiÓu sè nguyªn.  
2.1.3 KiÓu dÊu phÈy ®éng (float):  
Trong C cho phÐp sö dông 3 lo¹i gÝa trÞ dÊu phÈy ®éng lµ float; double vµ long double.  
Ph¹m vi biÓu diÔn vµ kÝch cì cña c¸c kiÓu gi¸ trÞ dÊu phÈy ®éng ® îc chØ ra nh d íi ®©y:  
KiÓu  
Ph¹m vi biÓu diÔn  
3.4E-38 3.4E+38  
KÝch th íc  
4 bytes  
float  
double  
long double  
1.7E-308 1.7E+308  
3.4E-4932 3.4E+4932  
8 bytes  
10 bytes  
M¸y cã thÓ l u tr÷ ® îc sè kiÓu float cã gi¸ trÞ tuyÖt ®èi tõ 3.4E-38 ®Õn 3.4E+38. C¸c sè  
cã gi¸ trÞ nhá h¬n 3.4E-38 ® îc xem nh b»ng 0. C¸c gi¸ trÞ kiÓu double vµ long double ® îc  
sö dông t ¬ng tù nh kiÓu float.  
2.2 H»ng:  
H»ng lµ mét ®¹i l îng mµ gi¸ trÞ cña nã ®· ® îc x¸c ®Þnh vµ kh«ng thay ®æi trong suèt qu¸  
tr×nh tÝnh to¸n. D íi ®©y lµ c¸c kiÓu h»ng ® îc sö dông trong ng«n ng÷ C:  
2.2.1 H»ng nguyªn (int):  
H»ng nguyªn lµ mét sè nguyªn cã gi¸ trÞ trong kho¶ng tõ -32768 ®Õn 32767.  
VÝ dô :  
32  
56  
-68  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 5  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
Tuy nhiªn cïng mét gi¸ trÞ vÝ dô sè 245 nh ng víi c¸ch viÕt kh¸c nhau ta sÏ cã nh÷ng h»ng  
víi kiÓu kh¸c nhau. Sè 245 lµ mét h»ng kiÓu nguyªn; sè 245.0 lµ mét h»ng kiÓu thùc( dÊu phÈy  
®éng).  
2.2.2 H»ng dÊu phÈy ®éng (float vµ double) :  
® îc viÕt theo hai c¸ch :  
C¸ch 1 D¹ng thËp ph©n : Bao gåm phÇn nguyªn, dÊu chÊm vµ phÇn thËp ph©n.  
VÝ dô : 123.36; 536.12; -36.12;  
PhÇn thËp ph©n cã thÓ v¾ng mÆt nh ng dÊu chÊm th× khong thÓ thiÕu:  
VÝ dô : 12. ; .26;  
C¸ch 2 D¹ng khoa häc hay d¹ng mò: § îc t¸ch thµnh 2 phÇn lµ ®Æc trÞ vµ phÇn bËc. PhÇn  
®Æc trÞ lµ mét sè nguyªn hay sè thùc d¹ng thËp ph©n, phÇn bËc lµ mét sè nguyªn. Hai phÇn nµy  
® îc ng¨n c¸ch bëi mét ký tù e hoÆc E.  
VÝ dô: 123.36E-3; BiÓu diÔn sè 0.12336  
00.123e3; BiÓu diÔn sè 123.0  
2.2.3 H»ng long:  
H»ng long ®-îc viÕt b»ng c¸ch viÕt thªm ký tù “l” hoÆc “L” vµo sau mét sè nguyªn. Mét  
h»ng cã gi¸ trÞ v ît ra khái ph¹m vi biÓu diÔn cña kiÓu d÷ liÖu int ® îc coi lµ mét h»ng long.  
VÝ dô : 12365l; 56423L;  
2.2.4 H»ng int hÖ 8:  
H»ng int hÖ 8 ® îc viÕt theo c¸ch sau:  
0c1c2c3..... ;  
Trong ®ã ci lµ c¸c sè nguyªn trong kho¶ng tõ 0 ®Õn 7. Mét h»ng nguyªn hÖ 8 lu«n nhËn gi¸ trÞ  
d ¬ng.  
VÝ dô : 0324; gi¸ trÞ cña h»ng nµy trong hÖ 10 lµ: 3*82 + 2*81 + 4*80 = 212;  
2.2.5 H»ng int hÖ 16:  
Trong hÖ nµy sö dông 16 ký tù :0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f;  
C¸c ch÷ c¸i kh«ng ph©n biÖt ch÷ hoa hay ch÷ th êng vµ cã nghÜa nh sau:  
C¸ch viÕt  
A hoÆc a  
B hoÆc b  
C hoÆc c  
D hoÆc d  
E hoÆc e  
F hoÆc f  
ý nghÜa  
10  
11  
12  
13  
14  
15  
H»ng hÖ 16 ® îc viÕt theo d¹ng: 0xc1c2c3... hoÆc 0Xc1c2c3...  
Trong ®ã ci lµ mét ký tù hÖ 16; VÝ dô: 0x2F3 = 2*162 + 15*161 + 3*160 = 755 ( hÖ 10 )  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 6  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
2.2.6 H»ng ký tù :  
H»ng ký tù lµ mét ký tù riªng biÖt ®-îc viÕt trong 2 dÊu nh¸y ®¬n, vÝ dô ‘a’. Gi¸ trÞ cña  
h»ng ký tù chÝnh lµ m· ASCII cña ký tù ®ã. Mét h»ng ký tù cã thÓ th©m gia vµo c¸c phÐp to¸n  
nh mäi sè nguyªn kh¸c. VÝ dô:  
‘9’-‘1’=57-49=8;  
H»ng ký tù cßn cã thÓ ®-îc viÕt theo c¸ch : ‘\c1c2c3’ trong ®ã c1c2c3 lµ mét sè hÖ 8 mµ  
gi¸ trÞ cña nã b»ng m· ASCII cña ký tù cÇn biÓu diÔn. VÝ dô, ký tù ‘a’ cã m· ASCII lµ 97 sè  
t-¬ng øng trong hÖ 8 lµ 0141 nh- vËy ®Ó biÓu diÔn ký tù ‘a’ cã thÓ dïng h»ng ‘\0141’. Trong C  
cã mét vµi h»ng ký tù ®Æc biÖt cÇn chó ý:  
C¸ch viÕt  
‘\’’  
Ký tù  
‘
‘\”’  
“
‘\\’  
\
‘\n’  
‘\0’  
‘\t’  
\n (chuyÓn dßng)  
\0 (null)  
Tab  
‘\b’  
‘\r’  
Backspace  
CR ( vÒ ®Çu dßng)  
LF ( sang trang)  
‘\f’  
CÇn ph©n biÖt c¸c h»ng ‘0’ vµ’\0’. H»ng ‘0’ øng víi sè 0 cã m· ASCII lµ 48, cßn h»ng ‘\0’  
øng víi ký tù \0 ( th êng ® îc gäi lµ null) cã m· ASCII lµ 0.  
H»ng ký tù thùc sù lµ mét sè nguyªn, v× vËy cã thÓ dïng c¸c sè nguyªn hÖ 10 ®Ó biÓu diÔn  
ký tù.  
2.2.7 H»ng s©u ký tù :  
H»ng x©u ký tù lµ mét d·y c¸c ký tù bÊt kú ®Æt trong 2 dÊu nh¸y kÐp.  
VÝ dô: “ H¶i Phßng”; “ Hµ Néi”; “” (x©u rçng)  
X©u ký tù ® îc l u tr÷ trong bé nhí d íi d¹ng mét m¶ng cã c¸c phÇn tö lµ c¸c ký tù riªng  
biÖt. Tr×nh biªn dÞch tù ®éng thªm vµ cuèi mçi x©u mét ký tù null \0 ( ký tù null ® îc xem nh lµ  
dÊu hiÖu kÕt thóc cña mét x©u). CÇn chó ý ‘a’ lµ mét h»ng ký tù vµ ®-îc l-u gi÷ m· ASCII trong  
mét byte. Cßn “a” lµ mét h»ng x©u ký tù trong ®ã cã hai ký tù lµ a vµ null nªn ®-îc l-u gi÷ trong  
mét m¶ng hai bytes.  
2.2.8 Tªn h»ng:  
Ta dïng to¸n tö define ®Ó khëi dông mét h»ng cã tªn. VÝ dô  
define MAX 100  
Khi ®ã tÊt c¶ c¸c tªn MAX trong ch ¬ng tr×nh sÏ ® îc thay thÕ b»ng 100.  
define Pi 3.14159  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 7  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
§Æt tªn cho h»ng float 3.14159 lµ Pi;  
2.3 BiÕn :  
BiÕn lµ mét ®¹i l îng dïng ®Ó mang th«ng tin. Mäi biÕn cÇn ph¶i ® îc khai b¸o tr íc khi  
sö dông. ViÖc khai b¸o ® îc thùc hiÖn theo mÉu : type tªn biÕn;  
Trong ®ã type lµ kiÓu d÷ liÖu cña gi¸ trÞ mµ sau nµy biÕn nµy sÏ chøa.  
VÝ dô:  
Main()  
{
int a,b,c; /* Khai b¸o 3 biÕn kiÓu int  
*/  
float x,y /* Khai b¸o 2 biÕn kiÓu float */  
long dai /* khai b¸o 1 mét biÕn kiÓu long */  
}
2.3.1 VÞ trÝ cña c¸c khai b¸o:  
C¸c khai b¸o cÇn ®Æt ngay sau dÊu { ®Çu tiªn cña th©n hµm vµ ®øng tr íc mäi c©u lÖnh  
kh¸c.  
2.3.2 Khëi ®Çu cho c¸c biÕn:  
NÕu trong khai b¸o, ngay sau tªn ta ®Æt dÊu = vµ mét gi¸ trÞ nµo ®ã phï hîp víi kiÓu d÷ liÖu  
khai b¸o th× ®©y lµ c¸ch võa khai b¸o võa khëi ®Çu cho mét biÕn.  
VÝ dô :  
int a=10,b,c=23;  
float e=9.87,d;  
Tuy nhiªn viÖc khëi ®Çu cho c¸c biÕn cã thÓ ®¹t ® îc nhê to¸n tö g¸n. Hai c¸ch khëi ®Çu nµy lµ  
hoµn toµn t ¬ng ® ¬ng nhau.  
VÝ dô :  
int a,b,c;  
float e,d;  
a=10; c=23;e=9.87;  
2.3.3 §Þa chØ cña biÕn:  
Mçi biÕn ® îc cÊp ph¸t mét vïng bé nhí gåm c¸c bytes liªn tiÕp. Sè hiÖu cña byte ®Çu tiªn  
chÝnh lµ ®Þa chØ cña biÕn. §Ó lÊy ®Þa chØ cña biÕn ta dïng phÐp to¸n : &tªn biÕn.  
2.4 M¶ng:  
Mçi biÕn chØ biÓu diÔn mét gi¸ trÞ t¹i mçi thêi ®iÓm. §Ó biÓu diÔn mét dÉy sè hay mét b¶ng  
sè ta cã thÓ dïng nhiÒu biÕn, tuy nhiªn c¸ch nµy kh«ng tiÖn lîi. ViÖc sö dông m¶ng lµ c¸ch tèt  
h¬n nhiÒu trong nh÷ng tr êng hîp nh vËy.  
M¶ng cã thÓ hiÓu lµ mét tËp hîp cña nhiÒu phÇn tö cã cïng kiÓu gi¸ trÞ vµ cã chung mét tªn.  
Mçi phÇn tö cña m¶ng biÓu diÔn mét gi¸ trÞ. Cã bao nhiªu kiÓu biÕn th× t ¬ng øng cã bÊy nhiªu  
kiÓu m¶ng. Còng nh biÕn, m¶ng cÇn ® îc khai b¸o tr íc khi dïng:  
type tªnm¶ng[sè phÇn tö 1][sè phÇn tö2]...;  
Kh¸i niÖm vÒ kiÓu m¶ng vµ tªn m¶ng còng gièng nh trong khai b¸o biÕn.  
VÝ dô:  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 8  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
int a[3];  
float b[3][3];  
C©u lÖnh thø nhÊt khai b¸o mét m¶ng kiÓu int, cã tªn lµ a, cã mét chiÒu,kÝch th íc lµ 3. Nh  
vËy m¶ng nµy cã 3 phÇn tö. Chóng ® îc ®¸nh sè vµ s¾p xÕp nh sau:  
a[0],a[1],a[2]  
Mçi phÇn tö a[i] cña m¶ng chøa ® îc mét gi¸ trÞ kiÓu int vµ m¶ng cã thÓ chøa ® îc mét d·y  
3 sè nguyªn.  
C©u lÖnh thø hai khai b¸o mét m¶ng kiÓu float, cã tªn lµ b, cã hai chiÒu, kÝch th íc c¸c  
chiÒu lµ 3 vµ 3. M¶ng nµy cã 9 phÇn tö. Chóng ® îc ®¸nh sè vµ s¾p xÕp nh sau:  
b[0][0] b[0][1] b[0][2]  
b[1][0] b[1][1] b[1][2]  
b[2][0] b[2][1] b[2][2]  
Mçi phÇn tö b[i][j] cña m¶ng chøa ® îc mét sè thùc vµ m¶ng cã thÓ chøa ® îc mét b¶ng sè  
thùc 3 dßng 3 cét.  
Chó ý:  
* C¸c phÇn tö cña m¶ng ® îc cÊp ph¸t c¸c kho¶ng nhí liÕn tiÕp nhau trong bé nhí. Cã nghÜa  
lµ c¸c phÇn tö cña m¶ng cã ®Þa chØ liªn tiÕp nhau.  
* Trong bé nhí, c¸c phÇn tö cña m¶ng hai chiÒu theo hµng.  
* Mét phÇn tö cña m¶ng ® îc x¸c ®Þnh th«ng qua c¸c chØ sè cña nã. ChØ sè m¶ng ph¶i cã gi¸  
trÞ int kh«ng v ît qu¸ kÝch th íc cña chiÒu t ¬ng øng. Sè chØ sè ph¶i b»ng sè chiÒu cña m¶ng.  
* ChØ sè cho m¶ng cã thÓ lµ mét biÓu thøc thùc. Khi ®ã phÇn nguyªn cña biÓu thøc thùc sÏ lµ  
chØ sè cña m¶ng.  
* Khi chØ sè cña m¶ng v ît ra khái kÝch th íc m¶ng th× ch ¬ng tr×nh dÞch vÉn kh«ng b¸o lçi  
mµ chØ ra mét vïng nhí bªn ngoµi m¶ng vµ cã thÓ lµm rèi lo¹n ch ¬ng tr×nh.  
* LÊy ®Þa chØ cña phÇn tö trong m¶ng chØ ® îc thùc hiÖn trªn m¶ng mét chiÒu vµ ® îc thùc hiÖn  
nh ®èi víi biÕn.  
VÝ dô:  
PhÐp lÊy ®Þa chØ &b[2][2] sÏ kh«ng thùc hiÖn ® îc.  
PhÐp lÊy ®Þc chØ &a[2] sÏ cho ®Þa chØ cña phÇn tö a[2].  
* §Þa chØ ®Çu cña m¶ng ® îc g¸n cho tªn m¶ng. Tøc lµ : a=&a[0];  
2.5 Ph¹m vi ho¹t ®éng cña c¸c biÕn, m¶ng:  
2.5.1 Khèi lÖnh:  
Mét d·y c¸c c©u lÖnh ® îc bao bëi c¸c dÊu { vµ } th× ® îc gäi lµ mét khèi lÖnh. VÝ dô:  
{
a=2;  
b=3;  
c=a+b;  
}
- Mét khèi lÖnh ® îc C xem nh mét c©u lÖnh riªng lÎ. Cã nghÜa lµ bÊt kú chç nµo cã thÓ ®Æt  
c©u lÖnh th× t¹i ®ã ta còng cã thÓ ®Æt ® îc khèi lÖnh.  
- C¸c khai b¸o biÕn, m¶ng cã thÓ cã mÆt trong khèi lÖnh nh ng ph¶i ë ®Çu cña khèi lÖnh.  
C¸c biÕn, m¶ng nµy ® îc gäi lµ c¸c biÕn, m¶ng côc bé (cña khèi lÖnh).  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 9  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
VÝ dô:  
{
int a,b,c;  
a=2;  
b=3;  
c=a+b;  
}
- C¸c khèi lÖnh cã thÓ lång nhau. Tøc lµ bªn trong mét khèi lÖnh cã thÓ chøa mét hay nhiÒu  
khèi lÖnh kh¸c. Sù lång nhau nh vËy lµ kh«ng h¹n chÕ. Th©n hµm còng cã thÓ coi lµ mét khèi  
lÖnh. Nã chøa nhiÒu khèi lÖnh bªn trong nh ng kh«ng cã khèi lÖnh nµo chøa nã.  
- Ph¹m vi ho¹t ®éng cña c¸c biÕn, m¶ng: C¸c biÕn, m¶ng ® îc khai b¸o bªn trong mét khèi  
lÖnh (biÕn, m¶ng côc bé) th× chØ tån t¹i trong kho¶ng thêi gian khèi lÖnh ®ã lµm viÖc. Khi khèi  
lÖnh ®ã b¾t ®Çu ® îc thùc hiÖn, c¸c biÕn, m¶ng côc bé ® îc h×nh thµnh vµ ® îc cÊp ph¸t vïng  
nhí. C¸c biÕn, m¶ng côc bé nµy bÞ gi¶i phãng khái bé nhí ngay khi m¸y thùc hiÖn xong khèi  
lÖnh. ChÝnh v× thÕ mµ :  
Gi¸ trÞ cña mét biÕn, m¶ng côc bé cña mét khèi lÖnh kh«ng thÓ ® a ra ®Ó sö dông ë bÊt  
kú chç nµo bªn ngoµi khèi lÖnh ®ã.  
ë bÊt kú chç nµo bªn ngoµi khèi lÖnh ta kh«ng thÓ can thiÖp ®Õn c¸c biÕn, m¶ng ® îc khai  
b¸o bÓn trong mét khèi lÖnh.  
Sù thay ®æi gi¸ trÞ cña mét biÕn, m¶ng bªn trong mét khèi lÖnh kh«ng lµ thay ®æi gi¸ trÞ  
cña mét biÕn, m¶ng cã cïng tªn vµ ® îc dïng ë ®©u ®ã bªn ngoµi khèi lÖnh.  
Mét biÕn, m¶ng ®· ® îc khai b¸o bªn ngoµi mét khèi lÖnh vµ bªn trong khèi lÖnh kh«ng  
cã biÕn, m¶ng nµo cã cïng tªn th× biÕn, m¶ng ®ã ® îc dïng trong khèi lÖnh. Sau khi khèi  
lÖnh thùc hiÖn xong c¸c biÕn, m¶ng nµy vÉn tån t¹i vµ gi¸ trÞ lµ gi¸ trÞ cuèi cïng tr íc khi  
ra khái khèi lÖnh.  
2.5.2 Hµm:  
Hµm lµ mét ®¬n vÞ ®éc lËp cña ch ¬ng tr×nh. TÝnh ®éc lËp cña hµm ® îc thÓ hiÖn qua 2  
®iÓm sau:  
Kh«ng cho phÐp x©y dùng hµm bªn trong mét hµm kh¸c.  
Mçi hµm cã c¸c biÕn, m¶ng riªng cña m×nh vµ chóng chØ ® îc sö dông néi bé bªn trong  
hµm ®ã. Hay nãi c¸ch kh¸c hµm lµ mét ®¬n vÞ cã tÝnh chÊt khÐp kÝn.  
- Mét ch ¬ng tr×nh bao gåm mét hay nhiÒu hµm. Hµm chÝnh main() lµ thµnh phÇn b¾t buéc  
ph¶i cã cña ch ¬ng tr×nh. Ch ¬ng tr×nh b¾t ®Çu thùc hiÖn tõ c©u lÖnh ®Çu tiªn cña hµm main() vµ  
kÕt thóc khi gÆp dÊu } cuèi cïng cña hµm nµy. Khi thùc hiÖn ch ¬ng tr×nh , m¸y cã thÓ ®i tõ hµm  
nµy qua hµm kh¸c khi cã lêi gäi hµm.  
- ViÖc truyÒn d÷ liÖu vµ kÕt qu¶ tõ hµm nµy sang hµm kh¸c ® îc thùc hiÖn th«ng qua c¸c  
biÕn ngoµi, m¶ng ngoµi, biÕn tÜnh ngoµi, m¶ng tÜnh ngoµi hay c¸c ®èi cña hµm.  
2.5.3 BiÕn, m¶ng tù ®éng:  
- C¸c biÕn, m¶ng ® îc khai b¸o bªn trong mét hµm kÓ c¶ hµm main() ® îc gäi lµ biÕn, m¶ng  
tù ®éng hay cßn gäi lµ biÕn, m¶ng côc bé.  
- C¸c ®èi cña hµm còng ® îc coi lµ c¸c biÕn tù ®éng.  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 10  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
- Do th©n hµm còng lµ mét khèi lÖnh nªn c¸c quy t¾c vÒ ph¹m vi ho¹t ®éng cña c¸c biÕn,  
m¶ng côc bé cña hµm còng gièng nh ph¹m vi ho¹t ®éng cña c¸c biÕn, m¶ng côc bé cña khèi  
lÖnh.  
- Do ch ¬ng tr×nh b¾t ®Çu thùc hiÖn tõ c©u lÖnh ®Çu tiªn trong hµm main() nªn c¸c biÕn,  
m¶ng tù ®éng trong hµm main() sÏ tån t¹i trong suèt thêi gian lµm viÖc cña ch ¬ng tr×nh.  
- ChØ cã thÓ khëi ®Çu cho biÕn tù ®éng. Muèn khëi ®Çu cho m¶ng tù ®éng ta ph¶i sö dông  
to¸n tö g¸n.  
- BiÕn, m¶ng tù ®éng ch a ® îc khëi ®Çu th× gi¸ trÞ cña nã hoµn toµn kh«ng x¸c ®Þnh.  
2.5.4 BiÕn, m¶ng ngoµi:  
- BiÕn, m¶ng ® îc khai b¸o bªn ngoµi tÊt c¶ c¸c hµm hay khèi lÖnh th× ® îc gäi lµ biÕn,  
m¶ng ngoµi.  
- BiÕn, m¶ng ngoµi sÏ tån t¹i (® îc cÊp ph¸t bé nhí) trong suèt thêi gian tån t¹i cña ch ¬ng  
tr×nh.  
- Ph¹m vi sö dông cña c¸c biÕn, m¶ng ngoµi lµ tõ chç khai b¸o cho ®Õn hÕt ch ¬ng tr×nh.  
Nh vËy nÕu ta khai b¸o biÕn, m¶ng ngoµi ngay ®Çu ch ¬ng tr×nh th× ta cã thÓ sö dông c¸c biÕn,  
m¶ng nµy trong tÊt c¶ c¸c hµm hay khèi lÖnh miÔn lµ trong hµm hay khèi lÖnh ®ã kh«ng cã biÕn,  
m¶ng tù ®éng cïng tªn víi nã.  
- NÕu ch ¬ng tr×nh ® îc viÕt trªn nhiÒu tÖp vµ c¸c tÖp ® îc dÞch ®éc lËp th× phËm vi sö dông  
cña biÕn, m¶ng ngoµi cßn ® îc më réng tõ tÖp nµy sang tÖp kh¸c b»ng tõ kho¸ extern.  
- C¸c biÕn, m¶ng ngoµi cã thÓ ® îc khëi ®Çu mét lÇn. NÕu kh«ng khëi ®Çu th× ch ¬ng tr×nh  
dÞc tù ®éng g¸n cho c¸c biÕn, m¶ng ngoµi gi¸ trÞ 0.  
- Khi khëi ®Çu cho c¸c m¶ng ngoµi cã thÓ kh«ng cÇn chØ ra kÝch th íc cña m¶ng. Khi ®ã  
m¸y sÏ dµnh cho m¶ng mét kho¶ng nhí ®ñ ®Ó thu nhËn danh s¸ch c¸c gi¸ trÞ khëi ®Çu.  
- §èi víi m¶ng hai chiÒu cã thÓ khëi ®Çu mµ sè gi¸ trÞ trong c¸c hµng lµ kh¸c nhau. Cã nghÜa  
lµ ta cã thÓ khëi ®Çu cho bÊt kú phÇn tö nµo trong m¶ng mµ kh«ng cÇn ph¶i khëi ®Çu cho tÊt c¶  
c¸c phÇn tö trong m¶ng.  
2.6 C¸c hµm vµo ra c¬ b¶n:  
* § a kÕt qu¶ ra mµn h×nh:  
§Ó ® a kÕt qu¶ ra mµn h×nh ta dïng c©u lÖnh sau:  
printf( dßng ®iÒu khiÓn, bt1,bt2,bt3...btn);  
Trong ®ã:  
+ bt1,bt2,bt3..btn lµ c¸c biÓu thøc mµ gi¸ trÞ cña chóng cÇn ® a ra mµn h×nh  
+ Dßng ®iÒu khiÓn lµ mét x©u ký tù bao båm c¸c thµnh phÇn:  
- Ký tù ®iÒu khiÓn viÖc chuyÓn xuèng ®Çu dßng kÕ tiÕp: \n  
- C¸c ký tù hiÓn thÞ.  
- C¸c ký tù dïng ®Ó m« t¶ c¸ch ® a ra cña c¸c gÝa trÞ biÕn, gi¸ trÞ biÓu  
thøc, ta gäi chóng lµ c¸c ®Æc t¶. Mçi biÓu thøc cÇn ph¶i cã mét ®Æc t¶ t ¬ng øng.  
§Æc t¶:  
* §èi víi biÕn nguyªn ta dïng ®Æc t¶ : %[fw]d  
B¾t ®Çu tõ ®©y ta quy ®Þnh nh÷ng thµnh phÇn nµo ® îc viÕt trong dÊu [ ] lµ thµnh phÇn kh«ng  
b¾t buéc. Nã cã thÓ v¾ng mÆt.  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 11  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
Trong ®ã fw lµ mét sè nguyªn x¸c ®Þnh ®é réng tèi thiÓu dµnh cho tr êng ra (sè vÞ trÝ tèi  
thiÓu trªn mµn h×nh dµnh cho mét biÕn kiÓu nguyªn). Thµnh phÇn cã thÓ cã hoÆc v¾ng mÆt trong  
®Æc t¶.  
Khi ®é dµi thùc tÕ cña biÓu thøc nhá h¬n fw th× mét kho¶ng trèng sÏ ® îc bæ sung vµo bªn  
tr¸i biÓu thøc cho ®ñ fw.  
Khi kh«ng cã fw hoÆc fw nhá h¬n ®é dµi thùc tÕ cña biÓu thøc th× ®é réng mµn h×nh dµnh  
cho biÓu thøc b»ng ®é dµi thùc tÕ cña biÓu thøc.  
* §èi víi biÕn thùc ta dïng ®Æc t¶: %[fw][.pp]f  
Trong ®ã pp lµ ®é chÝnh x¸c. Cã nghÜa lµ trªn mµn h×nh sÏ hiÖn lªn mét gi¸ trÞ thùc cã pp ch÷  
sè sau dÊu chÊm. NÕu pp =0 th× m¸y sÏ ® a biÓu thøc ra nh mét sè nguyªn (kh«ng kÌm theo dÊu  
chÊm).NÕu thµnh phÇn pp kh«ng cã mÆt trong ®Æc t¶ th× m¸y sÏ cho mét gi¸ trÞ mÆc ®Þnh cña pp  
lµ 6. Thµnh phÇn fw lµ mét sè nguyªn x¸c ®Þnh ®é réng cña tr êng ra. NÕu fw v¾ng mÆt hay nhá  
h¬n ®é réng thùc tÕ cña biÓu thøc th× ®é réng cña tr êng ra sÏ lµ ®é réng thùc tÕ cña biÓu thøc.  
TÊt c¶ c¸c ®Æc t¶ trªn ® îc minh ho¹ nh d íi ®©y:  
§Æc t¶  
Gi¸ trÞ cña biÕn  
-456  
D¹ng ® a ra mµn h×nh  
%d  
|-456|  
|456|  
%d  
456  
%5d  
456  
| 456|  
| -456|  
%5d  
-456  
%8.0f  
45.71  
-45.63  
45.63  
0.365  
|
46|  
%f  
|45.630000|  
|45.630000|  
|0.37|  
%f  
%.2  
* Vµo sè liÖu tõ bµn phÝm:  
§Ó nhËp d÷ liÖu tõ bµn phÝm ta dïng c©u lÖnh:  
scanf(c¸c ®Æc t¶,®Þa chØ c¸c biÕn)  
Mçi biÕn ph¶i cã mét ®Æc t¶ phï hîp víi kiÓu biÕn. Nh vËy sè ®Æc t¶ ph¶i b»ng sè biÕn  
Dïng ®Æc t¶ %d cho biÕn nguyªn vµ ®Æc t¶ %f cho biÕn thùc.  
VÝ dô ®o¹n lÖnh sau:  
int a,b;  
float x,y;  
scanf(“%d,%d,%f,%f”,&a,&b,&x,&y);  
Trong lóc ch ¬ng tr×nh thùc hiÖn khi gÆp c©u lÖnh trªn m¸y sÏ dõng l¹i vµ ®îi thao t¸c viªn  
nhËp vµo 4 gi¸ trÞ : 2 gi¸ trÞ nguyªn vµ 2 gi¸ trÞ thùc. C¸c gi¸ trÞ nµy ® îc ph©n c¸ch b»ng mét  
hay nhiÒu dÊu c¸ch hay dÊu enter vµ lÇn l ît ® îc g¸n cho c¸c biÕn a,b,x,y;  
Chó ý: Hai hµm vµo ra c¬ b¶n nµy ® îc chøa trong th viÖn stdio.h. V× vËy tr íc khi sö dông  
cÇn khai b¸o sö dông th viÖn.  
Nh vËy ta ®· ® îc biÕt ®Õn c¸c hµm vµo ra d÷ liÖu c¬ b¶n. Nhê ®ã ta ®· cã thÓ x©y dùng  
® îc c¸c ch ¬ng tr×nh ®¬n gi¶n nh ng hoµn chØnh. D íi ®©y lµ vÝ dô vÒ mét ch ¬ng tr×nh hoµn  
chØnh cã tÝnh chÊt tæng kÕt nh÷ng g× ®· tr×nh bµy trong hai ch ¬ng ®Çu. Trong ch ¬ng tr×nh nµy  
ta sÏ in ra mµn h×nh 3 dßng th«ng b¸o, nhËp vµo hai gi¸ trÞ cho 2 biÕn côc bé. Chóng ta sÏ theo  
dâi sù ho¹t ®éng cña c¸c biÕn trong vµ ngoµi:  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 12  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
/* Ch ¬ng tr×nh minh ho¹ c¸c hµm vµo ra vµ ph¹m vi ho¹t ®éng cña c¸c biÕn tù ®éng, biÕn  
ngoµi..*/  
#include “stdio.h” /* Khai b¸o c¸c th viÖn vµo ra */  
int x=2;  
void thu1(void);  
main()  
/* Khai b¸o biÕn ngoµi x */  
{
int x,y,z=0;  
/* Khai b¸o 3 biÕn int */  
printf(“ Chao mung cac ban den voi Cty TH & CNHH”);  
printf(“\nDay la chuong trinh dau tien viet bang C”);  
printf(“\nNhap cac gia tri cho hai bien cua ham main :”);  
printf(“\nx = “);  
scanf(“%d”,&x);  
printf(“y = “);  
scanf(“%d”,&y);  
z=x+y;  
/* §äc gi¸ trÞ cho biÕn x */  
/* §äc gi¸ trÞ cho biÕn y */  
printf(“\n Cac gia tri vua nhap :”);  
printf(“x = %d y = %d tong = %d”,x,y,z);  
thu1();  
printf(“\n x,y,z khong bi thay doi sau loi goi ham thu1 “);  
printf(“\nx = %d y = %d tong = %d”,x,y,z);  
getch(); /* Trong th viÖn conio.h */  
/* KÕt thóc hµm main() */  
}
void thu1(void) /* §Þnh nghÜa hµm thu1 */  
{
int y,z; /* Khai b¸o 2 biÕn côc bé y, z */  
printf(“\n Ham thu1 duoc goi”);  
printf(“\n Cho vao gia tri bien cuc bo y cua ham thu1”);  
printf(“\ny=”);scanf(“%d”,&y);  
z=x+y; /* BiÕn x lµ biÕn ngoµi cã gi¸ trÞ lµ 2 */  
printf(“\n Cac gia tri vua nhap :”);  
printf(“x = %d y = %d tong = %d”,x,y,z);  
printf(“\nKet thuc ham thu1”);  
} /* KÕt thóc hµm thu1 */  
KÕt qu¶ sau khi ch¹y ch ¬ng tr×nh :  
Chao mung cac ban den voi Cty TH & CNHH  
Day la chuong trinh dau tien viet bang C  
Nhap cac gia tri cho hai bien cua ham main :  
x = 6  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 13  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
y = 7  
Cac gia tri vua nhap x = 6 y = 7 tong = 13  
Ham thu1 duoc goi  
Cho vao gia tri bien cuc bo y cua ham thu1  
y = 4  
Cac gia tri vua nhap : x = 2 y = 4 tong = 6  
Ket thuc ham thu1  
x,y,z khong bi thay doi sau loi goi ham thu1  
x = 6 y =7 tong = 13  
Bµi tËp  
Bµi 1:T×m c¸c chç sai trong ch ¬ng tr×nh sau:  
#include “stdio.h”  
main()  
{
printf(“\na=%10.0f, b=%10ld, c=%10ld, d=%10d”,-3456 ,25e3,4635,456398461);  
}
Söa l¹i cho ®óng vµ thøc hiÖn trªn m¸y.  
Bµi 2: ViÕt ch ¬ng tr×nh in ra mét dßng nh sau:  
N=365  
B»ng c¸ch sö dông c¸c lo¹i h»ng kh¸c nhau( h»ng dÊu phÈy ®éng, h»ng int, h»ng long, h»ng  
int hÖ 8, h»ng int hÖ 16, h»ng ký tù, h»ng x©u ký tù).  
Bµi 3: T×m chç sai trong ®o¹n ch ¬ng tr×nh sau:  
float a[3],b=2;  
a[0]=5;  
a[7]=4,a[b]=7;  
Bµi 4: T×m c¸c chç sai trong ®o¹n ch ¬ng tr×nh sau:  
{
int a=6;  
float b=5.3;  
{
float x=a*b,y=a+b;  
}
printf(“\na=%10.2f, b=%10.2f, x= %10.2f,y=%10.2f”,a,b,x,y)  
}
Söa l¹i cho ®óng vµ bæ xung ®Ó ® îc mét ch ¬ng tr×nh hoµn chØnh. Thùc hiÖn trªn m¸y.  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 14  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
Ch ¬ng 3  
BiÓu thøc vµ c¸c hµm to¸n häc  
Mét biÓu thøc bao gåm c¸c to¸n tö vµ to¸n h¹ng. To¸n h¹ng cã thÓ xem lµ mét ®¹i l îng cã  
mét gi¸ trÞ nµo ®ã. Theo ®ã to¸n h¹ng bao gåm h»ng, biÕn, phÇn tö m¶ng, hµm. To¸n tö lµ c¸c  
phÐp tÝnh trªn c¸c to¸n h¹ng ®Ó t¹o ra gi¸ trÞ míi. BiÓu thøc dïng ®Ó diÔn ®¹t mét c«ng thøc,  
chóng lµ mét thµnh phÇn kh«ng thÓ thiÕu trong ch ¬ng tr×nh.  
3.1 BiÓu thøc :  
BiÓu thøc kÕt hîp gi÷a c¸c to¸n h¹ng vµ c¸c to¸n tö ®Ó t¹o ra c¸c c«ng thøc cÇn thiÕt cho  
ch ¬ng tr×nh. Khi viÕt biÓu thøc nªn dïng c¸c ký hiÖu ngoÆc trßn ®Ó thÓ hiÖn râ tr×nh tù tÝnh to¸n  
trong biÓu thøc cho dï lµ ng«n ng÷ C ®· quy ®Þnh thø tù u tiªn cho c¸c to¸n tö.  
BiÓu thøc ® îc ph©n lo¹i theo kiÓu gi¸ trÞ: nguyªn vµ thùc. Trong c¸c mÖnh ®Ò logic, biÓu  
thøc ® îc ph©n ra thµnh ®óng ( gi¸ trÞ kh¸c kh«ng ) vµ sai ( gi¸ trÞ b»ng kh«ng ).  
BiÓu thøc th êng ® îc dïng trong :  
- VÕ ph¶i cña c©u lÖnh g¸n.  
- Lµm tham sè thùc sù cña hµm.  
- Lµm chØ sè  
- Trong c¸c to¸n tö if, for, while, do while  
VÝ dô biÓu thøc tÝnh diÖn tÝch tam gi¸c:  
Dien_tich=0.25*sqrt((a+b+c)*(a+b-c)*(a-b+c)*(b+c-a));  
sqtr(thamso) lµ hµm lÊy c¨n bËc 2. Nh÷ng hµm nµy sÏ ® îc tr×nh bµy sau.  
3.2 C¸c phÐp to¸n sè häc  
PhÐp to¸n  
ý nghÜa  
Céng  
VÝ dô  
a+b  
a-b  
+
-
Trõ  
*
/
Nh©n  
a*b  
a/b  
Chia  
%
LÊy phÇn d  
a%b  
PhÐp chia hai sè nguyªn sÏ cho kÕt qu¶ phÇn nguyªn:  
13/3=4;  
phÇn d : 13%3=1;  
3.3 C¸c phÐp to¸n quan hÖ vµ logic :  
C¸c phÐp to¸n quan hÖ vµ logic cho vÒ mét gi¸ trÞ ®óng (1) hoÆc sai (0). Hay nãi c¸ch kh¸c  
nÕu ®iÒu kiÖn nªu ra ®óng th× kÕt qu¶ nhËn ® îc tõ phÐp to¸n lµ 1, trong tr êng hîp ng îc l¹i cho  
kÕt qu¶ 0.  
3.3.1 C¸c phÐp to¸n quan hÖ:  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 15  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
PhÐp to¸n  
ý nghÜa  
VÝ dô  
>
cã lín h¬n kh«ng ?  
5>3 cho kÕt qu¶ 1  
7>=7 cho kÕt qu¶ 1  
5<3 cho kÕt qu¶ 0  
5<=6 cho kÕt qu¶ 1  
5==6 cho kÕt qu¶ 0  
5!=6 cho kÕt qu¶ 1  
>=  
<
Cã lín h¬n hoÆc b»ng kh«ng?  
Cã nhá h¬n kh«ng?  
Cã nhá h¬n hoÆc b»ng kh«ng?  
Cã b»ng nhau kh«ng?  
Cã kh¸c nhau kh«ng?  
<=  
==  
!=  
Bèn phÐp to¸n ®Çu cã cïng møc u tiªn, hai phÐp to¸n sau cïng møc u tiªn vµ nhá h¬n møc  
u tiªn bèn phÐp to¸n ®Çu. C¸c phÐp to¸n quan hÖ vµ logic cã møc u tiªn nhá h¬n møc u tiªn  
cña c¸c phÐp to¸n sè häc.  
VÝ dô biÓu thøc : i<n-1 t ¬ng ® ¬ng víi i<(n-1)  
3.3.2 PhÐp to¸n logic : Cã 3 phÐp to¸n logic lµ:  
- PhÐp phñ ®Þnh mét ng«i !  
- PhÐp vµ (AND) &&  
- PhÐp hoÆc (OR) ||  
C¸c phÐp to¸n logic cã møc u tiªn nhá h¬n møc u tiªn cña c¸c phÐp to¸n quan hÖ vµ dÜ  
nhiªn lµ nhá h¬n møc u tiªn cña c¸c phÐp to¸n sè häc.  
3.4 ChuyÓn ®æi kiÓu gi¸ trÞ :  
ViÖc chuyÓn ®æi gi¸ trÞ th êng ® îc diÔn ra mét c¸ch tù ®éng trong c¸c tr êng hîp:  
- Khi biÓu thøc gåm c¸c to¸n h¹ng kh¸c kiÓu.  
- Khi g¸n mét gi¸ trÞ cho mét biÕn hay mét phÇn tö cña m¶ng cã kh¸c kiÓu.  
Ngoµi ra ta cã thÓ thùc hiÖn viÖc chuyÓn ®æi kiÓu mét c¸ch chñ ®éng tõ mét kiÓu gi¸ trÞ sang  
mét kiÓu bÊt kú b»ng c¸ch Ðp kiÓu.  
(type)biÓu thøc;  
VÝ dô phÐp chia 5/2 =2;  
®Ó lÊy ® îc chÝnh x¸c gi¸ trÞ ta thùc hiÖn Ðp kiÓu :  
(float)5/2 = 2.5  
ChuyÓn ®æi kiÓu trong biÓu thøc: Khi hai to¸n h¹ng trong biÓu thøc cã kiÓu kh¸c nhau th×  
kiÓu thÊp h¬n sÏ ® îc chuyÓn thµnh kiÓu cao h¬n tr íc khi biÓu thøc ® îc thùc hiÖn. KÕt qu¶ thu  
vÒ lµ mét gi¸ trÞ cã kiÓu cao h¬n. Ch¼ng h¹n:  
Gi÷a int vµ long th× int chuyÓn thµnh long.  
Gi÷a int vµ float th× int chuyÓn thµnh float.  
Gi÷a float vµ double th× float chuyÓn thµnh double.  
ChuyÓn ®æi kiÓu th«ng qua phÐp g¸n: Gi¸ trÞ cña vÕ ph¶i trong phÐp g¸n sÏ ® îc chuyÓn  
sang kiÓu cña vÕ tr¸i ®ã lµ kiÓu cña kÕt qu¶. KiÓu int cã thÓ chuyÓn thµnh kiÓu float vµ kiÓu float  
cã thÓ chuyÓn thµnh kiÓu int do bÞ chÆt bá phÇn thËp ph©n. KiÓu double chuyÓn thµnh kiÓu float  
do ® îc lµm trßn. KiÓu long chuyÓn thµnh kiÓu int do bÞ c¾t bá mét sè ch÷ sè.  
VÝ dô  
int n;  
n=15.8  
Sau hai c©u lÖnh nµy n cã gi¸ trÞ lµ n=15;  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 16  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
Trong khi thùc hiÖn Ðp kiÓu cÇn chó ý ®Õn thø tù u tiªn. VÝ dô:  
(int)1.2*10=1*10=10;  
(int)(1.2*10)=(int)12.0=12;  
3.5 PhÐp to¸n t¨ng gi¶m :  
Ng«n ng÷ C ® a ra hai to¸n tö mét ng«i ®Ó t¨ng hay gi¶m gi¸ trÞ c¸c biÕn nguyªn vµ thùc.  
To¸n tö ++ sÏ céng 1 vµ to¸n h¹ng cña nã, to¸n tö -- sÏ trõ 1 vµo to¸n h¹ng cña nã.  
Ch¼ng h¹n n=8;  
Sau phÐp to¸n n++, n cã gi¸ trÞ lµ 9;  
Sau phÐp to¸n n--,n cã gÝa trÞ lµ 7;  
DÊu ++ hay--cã thÓ ®øng tr íc hay ®øng sau to¸n h¹ng nªn ta cã thÓ viÕt ++n hay n++ ®Òu ® îc.  
Tuy nhiªn gi÷a hai c¸ch viÕt còng cã sù t¸c ®éng kh¸c nhau :  
NÕu viÕt n++ th× gi¸ trÞ cña n ® îc ®em sö dông råi sau ®ã míi ® îc céng thªm 1;  
NÕu viÕt ++n th× gi¸ trÞ cña n ® îc ®em sö dông sau khi ®· ® îc céng thªm 1;  
Víi to¸n tö -- th× c¸ch dïng hoµn toµn t ¬ng tù.  
VÝ dô: NÕu gi¸ trÞ cña n ®ang lµ 8 th× sau c©u lÖnh:  
x=n++ ; gi¸ trÞ cña x lµ 8; gi¸ trÞ cña n lµ 9;  
x=++n ; gi¸ trÞ cña n vµ x ®Òu b»ng 9;  
3.6 BiÓu thøc ®iÒu kiÖn :  
BiÓu thøc ®iÒu kiÖn cã d¹ng sau :  
bt1?bt2:bt3  
Trong ®ã bt1, bt2, bt3 lµ c¸c biÓu thøc nµo ®ã. Gi¸ trÞ cña biÓu thøc ®iÒu kiÖn lµ bt2 nÕu gi¸  
trÞ cña biÓu thøc bt1 lµ kh¸c kh«ng (bt1 ®óng), ng îc l¹i gi¸ trÞ cña biÓu thøc ®iÒu kiÖn sÏ lµ bt3  
nÕu nh biÓu thøc bt1 cã gi¸ trÞ b»ng 0 ( bt1 sai). KiÓu cña biÓu thøc ®iÒu kiÖn sÏ lµ kiÓu cao nhÊt  
trong hai kiÓu cña hai biÓu thøc bt2 vµ bt3. Ch¼ng h¹n bt2 cã kiÓu lµ int, bt3 cã kiÓu lµ float th×  
kiÓu cña biÓu thøc ®iÒu kiÖn lµ float.  
VÝ dô :  
s=(a>b)?a:b; G¸n gi¸ trÞ cùc ®¹i cña a vµ b cho s;  
printf(“ Gi¸ trÞ cùc ®¹i cña a vµ b lµ %d”, a>b?a:b);  
3.7 Mét sè hµm to¸n häc :  
C¸c hµm sau ®©y ® îc khai b¸o trong th viÖn stdlib.h  
1. abs : TÝnh gi¸ trÞ tuyÖt ®èi cña sè nguyªn x  
int abs(int x);  
2. labs : TÝnh gi¸ trÞ tuyÖt ®èi cña sè nguyªn dµi x  
long int labs(long int x);  
3. rand : Cho mét sè ngÉu nhiªn trong kho¶ng 0 ®Õn 32767  
int rand(void);  
4. random : Cho mét sè ngÉu nhiªn trong kho¶ng 0 ®Õn n-1  
int random(int n);  
C¸c hµm sau ®©y ® îc khai b¸o trong th viÖn math.h  
5. cos : TÝnh cosine cña x  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 17  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
double cos(double x)  
6. asin : TÝnh sine cña x  
double sin(double x)  
7. sqrt : TÝnh c¨n bËc hai cña x  
dounle sqrt(double x);  
8. log : TÝnh logarit tù nhiªn cña x  
double log(double x)  
9. log10 : TÝnh logarit c¬ sè 10 cña x  
double log10(double x)  
10. pow : TÝnh y mò x  
double pow(double y, double x)  
11. fabs : TÝnh gi¸ trÞ tuyÖt ®èi cña x  
double fabs(double x)  
Ng«n ng÷ C cung cÊp cho chóng ta rÊt nhiÒu hµm to¸n häc. Trªn ®©y chØ lµ mét sè c¸c hµm  
th êng dïng.  
§Õn ®©y chóng ta ®· cã mét sè c«ng cô ®Ó cã thÓ thùc hiÖn gi¶i quyÕt nh÷ng bµi to¸n quen  
thuéc nh gi¶i ph ¬ng tr×nh bËc hai, tÝnh diÖn tÝch tam gi¸c...  
D íi ®©y lµ ch ¬ng tr×nh gi¶i ph ¬ng tr×nh bËc hai (gi¶ sö delta kh«ng ©m):  
/* Gi¶i ph ¬ng tr×nh ax^2 + bx+c=0 */  
#include”stdio.h”  
#include”math.h”  
main()  
{
float a,b,c,x1,x2,delta;  
printf(“ Giai phuong trinh bac hai “);  
printf(“\nNhap vao cac he so:”);  
printf(“\na = “); scanf(“%f”,&a);  
printf(“\nb = “); scanf(“%f”,&b);  
printf(“\nc = “); scanf(“%f”,&c);  
delta=b*b-4*a*c;  
x1=(-b-sqrt(delta))/2;  
x2=(-b+sqrt(delta))/2;  
printf(“\nNghiem cua phuong trinh lµ:”);  
printf(“x1 = %.2f; x2 = %.2f “,x1,x2);  
}
Bµi tËp:  
Bµi 1: LËp tr×nh nhËp vµo tõ bµn phÝm 3 sè, t×m sè lín nhÊt trong 3 sè ®ã.  
Bµi 2: LËp tr×nh nhËp vµo tõ bµn phÝm 4 sè, t×m sè lín nhÊt trong 4 sè ®ã.  
Bµi 3: LËp tr×nh nhËp vµo tõ bµn phÝm 3 sè, in ba sè ®ã ra mµn h×nh theo thø tù t¨ng dÇn.  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 18  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
Bµi 4: T×m avíi a cho tr íc.  
Bµi 5: Cho ba sè thùc a,b,c. KiÓm tra xem bÊt ®¼ng thøc sau xem cã ®óng kh«ng ?  
a < b <c  
Bµi 6: Cho ba sè thùc a, b, c. H·y thay mçi sè b»ng hai lÇn chÝnh nã nÕu a b c, ng îc l¹i  
thay b»ng trÞ tuyÖt ®èi cña chóng.  
Bµi 7: LËp tr×nh gi¶i ph ¬ng tr×nh bËc hai ax2 + bx +c = 0 víi a, b, c nhËp tõ bµn phÝm.  
Bµi 8: Cho hai sè thùc x vµ y. H·y tÝnh Z víi  
Z = x-y nÕu x>y  
= y- x + 1 trong tr êng hîp cßn l¹i  
Bµi 9: Cho hai sè thùc a vµ b. h·y thay a = 0 nÕu a b  
Bµi 10: Cho hai sè thùc x vµ y. h·y thay sè bÐ trong chóng b»ng trung b×nh céng cña chóng vµ sè  
cßn l¹i bëi tÝch cña chóng.  
Bµi 11: Cho ba sè thùc x, y, z . h·y thay tÊt c¶ c¸c sè ©m b»ng b×nh ph ¬ng cña nã.  
Bµi 12: Cho mét sè nguyªn kh«ng ©m a. H·y x¸c ®Þnh xem phÇn d cña phÐp chia a cho sè  
d ¬ng b cã ph¶i lµ r hoÆc t hay kh«ng.  
Bµi 13: Cho sè tù nhiªn n ( n > 99). H·y t×m ch÷ sè hµng ®¬n vÞ cña n.  
Bµi 14: TÝnh tæng  
S = 1 + 3 + 5 +7 + 9 + 11 + 13  
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 19  
Kü thuËt lËp tr×nh C  
PhÇn c¬ së  
ch ¬ng 4  
c¸c to¸n tö ®iÒu khiÓn  
Mét ch ¬ng tr×nh bao gåm nhiÒu c©u lÖnh. Th«ng th êng c¸c c©u lÖnh ® îc thùc hiÖn mét  
c¸ch tuÇn tù theo thø tù cña chóng trong ch ¬ng tr×nh. C¸c to¸n tö ®iÒu khiÓn cho phÐp ch ¬ng  
tr×nh ® îc thùc hiÖn mét c¸ch kh«ng tuÇn tù mµ cã thÓ nh¶y tõ c©u lÖnh nµy ®Õn c©u lÖnh kh¸c ë  
tr íc hay sau nã. Víi c¸c to¸n tö ®iÒu khiÓn chóng ta sÏ t¹o ra c¸c ch ¬ng tr×nh linh ho¹t h¬n vµ  
do ®ã c¸c ch ¬ng tr×nh sÏ ®¹t hiÖu qu¶ cao h¬n.  
Cã thÓ chia c¸c to¸n tö ®iÒu khiÓn ra thµnh 3 nhãm:  
+ Nh¶y kh«ng ®iÒu kiÖn : goto  
+ RÏ nh¸nh : if , switch  
+ Chu tr×nh : for, while, do while  
ngoµi ra cßn cã mét sè to¸n tö bæ trî kh¸c nh lµ break, continue. Sau ®©y chóng ta sÏ ® îc lµm  
quen víi chóng.  
4.1 if ... then ...  
To¸n tö if cho phÐp ta lùa chän mét trong hai nh¸nh tuú thuéc vµo gi¸ trÞ cña biÓu thøc ®iÒu  
kiÖn. Cã hai c¸ch viÕt to¸n tö if nh sau:  
D¹ng 1:  
if(biÓu thøc ®k)  
{
Khèi lÖnh 1;  
}
else  
{
Khèi lÖnh 2;  
}
Tr íc tiªn m¸y sÏ x¸c ®Þnh gi¸ trÞ cña biÓu thøc ®iÒu kiÖn. NÕu biÓu thøc ®iÒu kiÖn cã gi¸ trÞ  
®óng ( cã gi¸ trÞ kh¸c 0) th× nã sÏ thùc hiÖn khèi lÖnh 1. Sau khi thùc hiÖn xong khèi lÖnh 1 nã sÏ  
nh¶y ®Õn c©u lÖnh viÕt ngay sau dÊu } cña khèi lÖnh 2 mµ kh«ng thùc hiÖn khèi lÖnh 2. NÕu biÓu  
thøc ®iÒu kiÖn cã gi¸ trÞ sai ( gÝa trÞ b»ng 0) m¸y sÏ kh«ng thùc hiÖn khèi lÖnh 1 mµ b¾t ®Çu thùc  
hiÖn tõ khèi lÖnh 2 vµ tiÕp ®Õn c¸c lÖnh ngay tiÕp theo khèi lÖnh nµy.  
D¹ng 2:  
if(biÓu thøc ®k)  
{
Khèi lÖnh 1;  
}
C«ng ty Tin häc vµ c«ng nghÖ hµng h¶i  
Trang 20  
Tải về để xem bản đầy đủ
pdf 66 trang Thùy Anh 16900 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Kỹ thuật lập trình C", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_ky_thuat_lap_trinh_c.pdf