Giáo trình phương pháp lập trình - ĐH CÔNG NGHI pot - Pdf 15

T
T
R
R




N
N
G
G



I
IH
H


C
CC

H
C
C
M
MT
T
R
R
U
U
N
N
G
GT
T
Â
Â
M
M

C


T
T
I
I
N
N-
-
o
o
0
0
o
o
-
-
P
P
H
H




N
N
G
GP
P
H
H
Á
Á
P
PL
L



T
T
H
H
Á

3. Các bc trong chu trình phát trin chng trình 5
4. Kho sát mt chng trình C/C++ n gin 7
5. Các chú thích (comments) 9
6. Cu trúc ca mt chng trình C/C++ 10
7. Các tp tin th vin thông dng 11
Chng 2: BIU THC 12
1. Kiu d liu (data types) 12
2. Các nh danh (Identifier names) 13
3. T khóa (keywords) 14
4. Bin (variables) 14
5. T khóa const 17
6. Hng (constants) 17
7. Hng chui ký t (string constants) 18
8. Hng ký t c bit (escape sequences) 18
9. Toán t (operators) 19
10. Các toán t s hc (arithmetic operators) 22
11. Toán t ++ và (increment and decrement operators) 23
12. Toán t quan h & lun lý 24
13. Toán t ? (? operator) 26
14. Toán t sizeof 26
15. Toán t du phy (comma operator) 27
16. Biu thc (expressions) 29
17. Chuyn i kiu trong các biu thc 29
18. Ép kiu (casting) 30
19. Dng vit tt ca câu lnh gán (shorthand assignments) 31
Chng 3: CÁC CU TRÚC IU KHIN 34
1. Gii thiu 34
2. Cu trúc la chn if 35
3. Cu trúc la chn switch case 39
4. Các cu trúc lp (Loop structures) 44

3. Nhp chui 97
4. Xut chui 97
5. Mt s hàm th vin thao tác trên chui 97
6. Mt s ví d v chui 98
7. Mng các chui 99
8. Mng con tr n các chui 101
Chng 8: STRUCTURES – ENUM - typedef 105
1. Structures 105
2. Kiu lit kê (Enumerations, enum) 111
3. typedef 112
Chng 9: TP TIN 114
1. Streams và Files 114
2. Streams (dòng nhp xut) 114
3. Files 115
4. Truy xut file ng!u nhiên 124
5. Các stream chun 124
Giáo trình PP lp trình
TT.Công Ngh Thông Tin 4/127
Chng 1

TNG QUAN V NGÔN NG LP TRÌNH C/C++
1. Lch s ca ngôn ng lp trình C/C++
C #c to b"i Dennis Ritchie " Bell Telephone Laboratories vào
n$m 1972  cho phép lp trình viên phát trin các ng dng hiu
qu hn các ngôn ng lp trình hin có ti th%i im ó.
im mnh và mm d&o ca C cho phép các nhà phát trin " Bell
Labs to nên các ng dng phc tp nh h iu hành Unix. Vào
n$m 1983, hc vin chun quc gia M' (American National
Standards Institute - ANSI) thành lp mt tiu ban  chun hóa C
#c bit n nh ANSI Standard C. Ngày nay, tt c trình biên

i t#ng #c liên kt (link)  to nên tp tin có th thc thi
(executable file). 4. Thc hin (run) chng trình  ch, ra chng
trình có làm vic úng nh ã nh không. Use

editor
Source
code
Compile
source file

Object
code
Link

object file
Library

files

3.3. T!o tp tin th#c thi (executable files)
C/C++ có mt th vin hàm cha mã i t#ng cho nhng hàm ã
#c to s.n. Nhng hàm này thc hin các tác v th%ng dùng
nh xóa màn hình (clrscr()), nhp mt chui ký t t bàn phím
(gets()), tính c$n bc hai (sqrt()), mà chng trình #c vit có
th s dng mà không phi vit li.
Tp tin i t#ng #c to ra b"i trình biên dch s kt h#p vi mã
i t#ng ca các hàm th vin  to nên tp tin thc thi. Quá
trình này #c gi là liên kt (linking), #c thc hin b"i mt
chng trình gi là b liên kt (linker).
Giáo trình PP lp trình
TT.Công Ngh Thông Tin 7/127
3.4. Th#c thi chng trình
Khi chng trình ngu*n #c biên dch và liên kt  to nên tp
tin thc thi (có ph(n phân loi .exe), nó có th thc thi trên máy
tính ti du nhc h thng.
Nu chng trình hot ng không úng nh yêu c(u, vn  có
th là do li lp trình. Trong tr%ng h#p này, ch,nh sa chng
trình ngu*n, biên dch li và liên kt li  to nên phiên bn mi
ca tp tin chng trình.
Quá trình bn bc này #c lp i lp li cho n khi tp tin thc
thi thc hin úng yêu c(u ca bài toán.
4. Kho sát mt chng trình C/C++ n gin

Kho sát mt chng trình n gin dùng  xut ra màn hình
dòng ch Hello World!

// my first program in C/C++
#include <conio.h>
#include <iostream.h>

trong cp du ngoc { }.

cout << "Hello World!";
ây là mt lnh nm trong ph(n thân ca hàm main. cout là mt
dòng (stream) xut chun trong C/C++ #c nh ngh+a trong th
vin iostream.h. Khi dòng lnh này #c thc thi, kt qu là chui
"Hello World!" #c xut ra màn hình. Dòng lnh #c kt thúc
bng du chm phy (;).

getche();
ây là mt hàm th vin dùng  ch% nhp mt ký t t bàn phím.

return 0;
Lnh return kt thúc hàm main và tr v giá tr biu thc i sau
nó, trong tr%ng h#p này là 0. ây là mt kt thúc bình th%ng ca
mt chng trình không có li trong quá trình thc hin.

Chng trình trên có th vit li nh sau:
int main() { cout << " Hello World! "; getch(); return 0;}
c)ng cho cùng mt kt qu.
Giáo trình PP lp trình
TT.Công Ngh Thông Tin 9/127

5. Các chú thích (comments)
Các chú thích #c các lp trình viên s dng  ghi chú hay mô t
trong các ph(n ca chng trình. Trong C/C++ có hai cách  chú
thích:
Chú thích dòng: dùng cp du //. T v trí // n cui dòng #c
xem là chú thích
Chú thích khi (chú thích trên nhiu dòng) dùng cp /* */.

Author: Mr.Beginner
Date: 01/01/2008
*/

#include <iostream.h>
int factorial(int n);
int main()
{
int i;
for(i=0; i<=10; i++)
cout<<i<<“!=“<<factorial(i);
return 0;
}

/* This function computes the
factorial of its parameter, returning it */
int factorial(int n)
{
int i, product;
product = 1;
for (i=2;i<=n;i++) prod *= i;
return product;
}


sqrt(), log(), log10(), sin(), cos(), tan(), acos(), asin(), atan(), pow(),
exp(), …
alloc.h: Tp tin nh ngh+a các hàm liên quan n vic qun lý b
nh g*m các hàm calloc(), realloc(), malloc(), free(), farmalloc(),
farcalloc(), farfree(), …
io.h: Tp tin nh ngh+a các hàm vào ra cp thp g*m các hàm
open(), _open(), read(), _read(), close(), _close(), creat(), _creat(),
creatnew(), eof(), filelength(), lock(), …

Giáo trình PP lp trình
TT.Công Ngh Thông Tin 12/127
Chng 2
BIU THC
(Expressions)

Biu thc #c to thành t nhng thành t nh d liu và toán t.
D liu có th cha trong bin hoc hng. Toán t trong các ngôn
ng lp trình có cùng ý ngh+a nh trong toán hc. Có nhiu loi
toán t nh toán t gán (=), toán t s hc (+ - * / %), toán t quan
h (== < <= > >= !=), toán t lun lý (&& || !),

1. Kiu d li%u (data types)
C/C++ có n$m kiu d liu c s": ký t (char), s nguyên (int), s
thc (float), s thc có  chính xác gp ôi (double), và kiu vô
nh (void). Tt c nhng kiu d liu khác u da trên 5 kiu c
s" này. Kích thc và phm vi ca nhng kiu d liu này có th
thay i tùy theo loi CPU và trình biên dch.
Kiu char #c dùng  gi các giá tr ca b mã ASCII
(Amercican Standard Code for Information Interchange). Kiu
char chim 1 byte b nh.
long int hoc long 32 -2,147,483,647 to 2,147,483,647
signed long int 32 ging nh long int

unsigned long int 32 0 to 4,294,967,295

float 32  chính xác là 6 ký s
double 64  chính xác là 10 ký s
long double 80  chính xác là 10 ký s

2. Các nh danh (Identifier names)
Trong C/C++, tên ca các bin, hng, hàm, #c gi là nh
danh. Nhng nh danh này có th là 1 hoc nhiu ký t. Ký t (u
tiên phi là mt ch cái hoc du _ (underscore), nhng ký t theo
sau phi là ch cái, ch s, hoc du _. Sau ây là nhng nh
danh úng và sai:
úng Sai
count 1count
test23 hi!there
high_balance high balance

C/C++ phân bit ký t HOA và th%ng. Vì vy, count, Count, và
COUNT là 3 danh nh khác nhau.
Giáo trình PP lp trình
TT.Công Ngh Thông Tin 14/127
nh danh không #c trùng vi các t khóa (keywords) và không
nên có cùng tên nh các hàm th vin ca C/C++.

3. T) khóa (keywords)

TT.Công Ngh Thông Tin 15/127
char ch; // khai báo bin ch kiu ký t
// khai bao 4 bien kieu float, gán average giá tr 0
float mark1, mark2, mark3, average = 0;

Lu ý: Khi khai báo bin nu không cung cp giá tr khi to thì giá tr
ca bin là cha xác nh. Do ó, vic dùng nhng bin này trong các
biu thc là vô ngha.

Bin #c khai báo ti ba ni: bên trong hàm, trong nh ngh+a
tham s ca hàm, và bên ngoài tt c hàm. Nhng bin này #c
gi l(n l#t là bin cc b, các tham s hình thc, và bin toàn cc.

4.1. Bin c&c b (local variables)
Nhng bin #c khai báo bên trong mt hàm gi là bin cc b.
Các bin cc b ch, #c tham chiu n ch, b"i nhng lnh nm
trong khi (block) có khai báo bin. Mt khi bt (u vi du { và
kt thúc vi du }.
Bin cc b ch, t*n ti trong khi khi cha nó ang thc thi và b
hy khi khi cha nó thc thi xong.
Ví d: Xem xét hai hàm sau:
void func1(void)
{
int x;
x = 10;
}

void func2(void)
{
int x;

cc. Bin toàn cc #c khai báo bên ngoài tt c hàm.
Kho sát chng trình sau:
#include <iostream.h>
void increase();
void decrease();
int gVar = 100;
void main()
{
cout << “Value of gVar= “ << gVar;
increase();
cout << “\nAfter increased, gVar= “ << gVar;
decrease();
cout << “\nAfter decreased, gVar= “ << gVar;
}

void increase()
{ gVar = gVar + 1;}

Giáo trình PP lp trình
TT.Công Ngh Thông Tin 17/127
void decrease()
{ gVar = gVar -1;}
Sau khi thc thi chng trình trên, kt qu xut trên màn hình là:
Value of gVar= 100
After increased, gVar= 101;
After decreased, gVar= 100;
5. T) khóa const
Giá tr ca bin có th thay i trong sut quá trình thc thi
chng trình.  giá tr ca bin không b thay i, ta t trc
khai báo bin t khóa const. T khi bin ã có giá tr, giá tr này s

ký t bao quanh b"i cp du nháy n. Do ó, 'a' là hng ký t
nhng "a" là hng chui.
8. H'ng ký t# -c bi%t (escape sequences)
C/C++ có nhng hng ký t c bit mà không th biu di-n nh
nhng hng ký t thông th%ng. Nhng hng này còn gi là escape
sequences. Sau ây là danh sách các hng c bit ó:
Mã Ý ngh.a
\b Lùi sang trái 1 ký t
\f V (u dòng
\n Sang dòng mi
\r Xung dòng
\t Tab theo chiu ngang
\" Du nháy ôi
\' Du nháy n
\0 Null
\\ Du \
\v Tab theo chiu ng
\a Cnh báo
\? Du hi
\N Hng bát phân (vi N là mt hng bát phân)
\xN Hng thp lc phân (vi N là mt hng thp lc phân)
Xem xét ví d sau:
#include <iostream.h>
void main(void)
{
cout <<"Items:\n";
cout <<”\tItem1\n”;
cout <<”\tItem2\n”;
cout <<”\tItem3\n”;
}

Lu ý, phía bên trái du bng phi là mt bin hay con tr và
không th là hàm hay hng.
Ví d:
total = a + b + c + d;

9.2. Chuyn /i kiu trong câu l%nh gán
Khi nhng bin ca mt kiu kt h#p vi nhng bin ca mt kiu
khác thì mt s chuyn i kiu xy ra. i vi câu lnh gán, giá
tr ca biu thc bên phi du bng #c t ng chuyn thành
kiu d liu ca bin bên trái du bng.
Ví d:
int i=100;
double d = 123.456;

Nu thc thi lnh
i = d;
thì i s có giá tr là 123 vì 123.456 s t ng chuyn thành s
nguyên nên b ct b ph(n thp phân. S chuyn i kiu này gi
là chuyn i kiu b mt mát thông tin.

Nu thc thi lnh
Giáo trình PP lp trình
TT.Công Ngh Thông Tin 20/127
d = i;
thì d s có giá tr là 100.0. S chuyn i kiu này gi là chuyn
i kiu không mt mát thông tin.

Tóm li, khi chuyn i kiu t kiu d liu có min giá tr nh
sang kiu d liu có min giá tr ln hn thì vic chuyn i kiu
này là an toàn vì không b mt mát thông tin. Th t t$ng d(n t


Kho sát các lnh gán sau:
int n; long m; float p; double q;
n = i + l + f + d; // (1)
m = i + l + f + d; // (2)
p = i + l + f + d; // (3)
q = i + l + f + d; // (4)
Giáo trình PP lp trình
TT.Công Ngh Thông Tin 21/127

100.0

200.0

123.456

1.23456789

424.69056789

int

n có giá tr là 424
(1)

100

200

123.456

1.23456789

i

l

f

d
Kt lun: Tr%ng h#p (1) và (3): mt mát thông tin. Tr%ng h#p
(4) không mt mát thông tin.

10. Các toán t s( h0c (arithmetic operators)
Các toán t s hc g*m: + (cng), - (tr), * (nhân), / (chia), và %
(ly ph(n d ca phép chia nguyên).
Khi t s và m!u s ca phép chia là s nguyên thì ó là phép chia
nguyên nên ph(n d ca phép chia nguyên b ct b. Ví d, 5/2 thì
kt qu là 2.
Toán t ly ph(n d % (modulus operator) ch, áp dng vi s
nguyên và tr v ph(n d. Ví d, 7%2 thì kt qu là 1.
100


424.69056789

q có giá tr là 424.69056789

(
4
)

Giáo trình PP lp trình
TT.Công Ngh Thông Tin 23/127
11. Toán t ++ và (increment and decrement operators)
C/C++ có hai toán t rt th%ng dùng là ++ và Toán t ++
cng 1 n toán hng ca nó và toán t thì tr 1 t toán hng
ca nó.
Ví d:
x++; // tuong duong x = x + 1;
x ; // tuong duong x = x - 1;

Toán t ++ và có th t phía trc (prefix) hoc phía sau
(postfix) toán hng. S khác nhau ca 2 tr%ng h#p này là khi toán
t ++ và ng trc toán hng, hành ng t$ng và gim trên
toán hng #c thc hin trc, sau ó giá tr mi ca toán hng s
dùng  tham gia vào vic nh tr ca biu thc.

Ví d: Kho sát on lnh sau
int x = 100;
int n,m;
Nu thc hin lnh:
n = ++x + 1; // n s có giá tr là 102 (1)


#c xem là false và giá tr khác 0 (non-zero) #c xem là true.
Các toán t quan h g*m:
Toán t Ý ngh.a
> Ln hn
>= Ln hn hay bng
< Nh hn
<= Nh hn hay bng
== Bng (có 2 du =)
!= Không bng

Ví d v toán t quan h:
100 < 200 // true
200 == 300 // false
300 != 400 // true
Giáo trình PP lp trình
TT.Công Ngh Thông Tin 25/127
400 >= 500 // false
Các toán t lun lý:
Operator Action Ý ngh.a
&& AND Và
|| OR Hoc (có 2 du |)
! NOT Ph nh
Bng chân tr ca các toán t lun lý
p q p && q p || q !p
0 0 0 0 1
0 1 0 1 1
1 1 1 1 0
1 0 0 1 0
C hai toán t quan h và lun lý có  u tiên thp hn toán t s
hc. Trong mt biu thc có th có nhiu loi toán t, th t 

1

1

1

Trích đoạn Nguyên m!u hàm (function prototypes)
Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status