Bài 1 của bài giảng Nhập môn lập trình giúp người học hiểu được tổng quan ngôn ngữ lập trình C/C++ ; hiểu về công cụ lập trình, cấu trúc và cách thực thi chương trình; nắm bắt được các kiến thức về tập ký tự, từ khóa, quy tắc đặt tên, câu lệnh, chú thích;...và một số kiến thức liên quan khác. Mời các bạn cùng tham khảo.
Trang 1Tr ườ ng ĐH Khoa H c T Nhiên Tp H Chí Minh ọ ự ồ
TRUNG TÂM TIN H C Ọ
2015
Nh p môn l p trình ậ ậ
Bài 1- Các khái ni m c b n ệ ơ ả
Trang 3Nh p môn l p trình ậ ậ 3
1 L ch s c a ngôn ng C/C++ ị ử ủ ữ
.C được t o b i Dennis Ritchie Bell Telephone Laboratories vào năm 1972.ạ ở ở
.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
.C++ được xây d ng trên n n t ng ANSI Standard Cự ề ả
.C++ là m t ngôn ng l p trình hộ ữ ậ ướng đ i tố ượng, nó bao hàm c ngôn ng Cả ữ
Trang 4Nh p môn l p trình ậ ậ 4
2 Kỹ thu t đ gi i quy t m t bài toán ậ ể ả ế ộ
.M t chộ ương trình máy tính được thi t k đ gi i quy t m t bài toán nào đó Vì ế ế ể ả ế ộ
v y, nh ng bậ ữ ước c n đ tìm ki m l i gi i cho m t bài toán cũng gi ng nh ầ ể ế ờ ả ộ ố ư
Trang 5Nh p môn l p trình ậ ậ 5
3.Các b ướ c trong chu trình phát tri n ch ể ươ ng trình
Trang 6Nh p môn l p trình ậ ậ 6
3.Các b ướ c trong chu trình phát tri n ch ể ươ ng trình
. Nh p mã ngu n (source code)ậ ồ
−. Mã ngu n là t p l nh dùng đ ch d n máy tính th c hi n công vi c do ồ ậ ệ ể ỉ ẫ ự ệ ệ
ngườ ậi l p trình đ a raư
−. T p tin mã ngu n có ph n m r ng cpp (C++)ậ ồ ầ ở ộ
. Biên d ch mã ngu n (compile)ị ồ
−. Chương trình vi t b ng ngôn ng c p cao C/C++ đế ằ ữ ấ ược biên d ch sang mã ị
máy b ng m t chằ ộ ương trình d ch(compiler)ị
Trang 7Nh p môn l p trình ậ ậ 7
3.Các b ướ c trong chu trình phát tri n ch ể ươ ng trình
. Liên k t các t p tin đ i tế ậ ố ượng t o các t p tin th c thi (executable file).ạ ậ ự
−. C/C++ có m t th vi n hàm độ ư ệ ượ ạc t o s nẵ
−. T p tin đ i tậ ố ượng do trình biên d ch t o ra k t h p v i mã đ i tị ạ ế ợ ớ ố ượng đ t o ể ạ
t p tin th c thi, quá trình này đậ ự ượ ạc t o b i b liên k t (Linker)ở ộ ế
. Th c hi n chự ệ ương trình
Trang 8−. N u chế ương trình có l i ph i đổ ả ược ch nh s a và biên d ch l i.ỉ ử ị ạ
−. Quá trình 4 bước sẽ đượ ậ ạc l p l i cho đ n khi t p tin th c thi th c hi n đúng ế ậ ự ự ệ
yêu c u bài toánầ
Trang 11Nh p môn l p trình ậ ậ 11
4 Kh o sát m t ch ả ộ ươ ng trình C/C++ đ n gi n ơ ả
int main():
−. Hàm main là đi m mà t t c các chể ấ ả ương trình C/C++ b t đ u th c hi n.ắ ầ ự ệ
−. Hàm main không ph thu c vào v trí c a hàmụ ộ ị ủ
−. N i dung trong hàm main luôn độ ược th c hi n đ u tiên khi chự ệ ầ ương trình được
th c thiự
−. Chương trình C/C++ ph i t n t i hàm main()ả ồ ạ
−. N i dung c a hàm main() ti p sau ph n khai báo chính th c đ t trong c p d u { }ộ ủ ế ầ ứ ặ ặ ấ
Trang 12Nh p môn l p trình ậ ậ 12
4 Kh o sát m t ch ả ộ ươ ng trình C/C++ đ n gi n ơ ả
−. 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 C/C++ độ ấ ẩ ược đ nh nghĩa trong th vi n ị ư ệ
iostream.h Khi dòng l nh th c thi thì dòng l nh Hello Word! đệ ư ệ ược xu t ra màn ấhình
−. getch(): dùng đ ch nh p m t ký t t bàn phím.ể ờ ậ ộ ự ừ
−. return 0: l nh k t thúc hàm main tr v mã đi sau nó ệ ế ả ề
Trang 14Nh p môn l p trình ậ ậ 14
5 Các chú thích
/* My second program in C/C++ with more comments
Author: Novice programmer
cout << "Hello World! "; // output Hello World!
cout << "I hate C/C++."; // output I hate C/C++
getch();
return 0;
}
Trang 15Nh p môn l p trình ậ ậ 15
6 C u trúc c a m t ch ấ ủ ộ ươ ng trình C/C++
.C u trúc m t chấ ộ ương trình C/C++ g m: các ti n x lý, khai báo bi n toàn c c, hàm ồ ề ử ế ụ
main…
Trang 16Nh p môn l p trình ậ ậ 16
6 C u trúc c a m t ch ấ ủ ộ ươ ng trình C/C++
Trang 17Nh p môn l p trình ậ ậ 17
7 Các t p tin th vi n thông d ng ậ ư ệ ụ
.Đây là các t p tin ch a đ nh nghĩa các hàm thông d ng khi l p trình C/C++.ậ ứ ị ụ ậ
.Mu n s d ng các hàm trong các t p tin header này thì ph i khai báo #include ố ử ụ ậ ả
<FileName.h> ph n đ u c a chở ầ ầ ủ ương trình, v i FileName.h là tên t p tin th ớ ậ ư
vi n.ệ
Trang 18Nh p môn l p trình ậ ậ 18
7 Các t p tin th vi n thông d ng ậ ư ệ ụ
.Các t p tin th vi n thông d ng g m:ậ ư ệ ụ ồ
1. Stdio.h(C), iostream.h(C++): đ nh nghĩa các hàm vào ra chu n nh các hàm ị ẩ ư
xu t d li u (printf())/cout), nh p giá tr cho bi n (scanf())/cin), nh n ký t ấ ữ ệ ậ ị ế ậ ự
t bàn phím (getc()), in ký t ra màn hình (putc()), nh p m t chu i ký t t ừ ự ậ ộ ỗ ự ừbàm phím (gets()), xu t chu i ký t ra màn hình (puts())ấ ỗ ự
2. Conio.h: đ nh nghĩa các hàm vào ra trong ch đ DOS, nh clrscr(), getch(), …ị ế ộ ư
Trang 19Nh p môn l p trình ậ ậ 19
7 Các t p tin th vi n thông d ng ậ ư ệ ụ
1. math.h: Đ nh nghĩa các hàm toán h c nh : abs(), sqrt(), log(), log10(), sin(), ị ọ ư
cos(), tan(), acos(), asin(), atan(), pow(), exp(), …
2. alloc.h: đ 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(), …
Trang 20Nh p môn l p trình ậ ậ 20
BI U TH C Ể Ứ
(Expressions)
Trang 21.Trong trường h p, bi u th c có nhi u toán t , ta dùng c p d u ngo c đ n ( ) đ ợ ể ứ ề ử ặ ấ ặ ơ ể
ch đ nh toán t nào đỉ ị ử ược th c hi n trự ệ ước
Trang 24Nh p môn l p trình ậ ậ 24
2 Ki u d li u(Data type) ể ữ ệ
Trang 25Nh p môn l p trình ậ ậ 25
3 Đ nh danh (Identifier Name) ị
.Trong C/C++, tên 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 _ấ
.C/C++ phân bi t ký t HOA và thệ ự ường
.Đ nh danh không đị ược trùng v i t khóa (keywords).ớ ừ
Trang 26Nh p môn l p trình ậ ậ 26
4 T khóa (keywords) ừ
.Là nh ng t đữ ừ ược dành riêng b i ngôn ng l p trình cho nh ng m c đích riêng ở ữ ậ ữ ụ
c a nóủ
.T t c các t khóa trong C/C++ đ u là ch thấ ả ừ ề ữ ường (lowercase)
.Danh sách các t khóa trong C/C++ừ
Trang 28Nh p môn l p trình ậ ậ 28
5 Bi n (variables) ế
.Ngoài ra, ta có th v a khai báo v a kh i t o giá tr ban đ u cho bi n: ể ừ ừ ở ạ ị ầ ế
type varName1=value, ,varName_n=value;
.Ví d :ụ
float mark1, mark2, mark3, average = 0;
Trang 29Nh p môn l p trình ậ ậ 29
6 Ph m vi c a bi n ạ ủ ế
.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 b i nh ng l nh trong kh i (block) có ế ế ở ữ ệ ố
khai báo bi n ế
−. M t kh i độ ố ược đ t trong c p 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 ứ ự
Trang 31Nh p môn l p trình ậ ậ 31
6 Ph m vi c a bi n ạ ủ ế
.Tham s hình th c(formal parameters) ố ứ
−.N u m t hàm có nh n các đ i s truy n vào hàm thì nó ph i khai báo các ế ộ ậ ố ố ề ả
bi n đ nh n giá tr c a các đ i s khi hàm đế ể ậ ị ủ ố ố ược g i ọ
−.Nh ng bi n này g i là các tham s hình th c Nh ng bi n này đữ ế ọ ố ứ ữ ế ượ ửc s
d ng gi ng nh các bi n c c b ụ ố ư ế ụ ộ
Trang 33Nh p môn l p trình ậ ậ 33
6 Ph m vi c a bi n ạ ủ ế
.Bi n toàn c c (global variables) ế ụ
−.Bi n toàn c c có ph m vi là toàn b chế ụ ạ ộ ương trình
−.T t c các l nh có trong chấ ả ệ ương trình đ u có th tham chi u đ n bi n ề ể ế ế ếtoàn c c ụ
−.Bi n toàn c c đế ụ ược khai báo bên ngoài t t c hàm ấ ả
Trang 34cout << “Value of gVar= “ << gVar; increase();
cout << “After increased, gVar= “ << gVar; decrease();
cout << “After decreased, gVar= “ << gVar;
}
Trang 35Nh p môn l p trình ậ ậ 35
7 T khóa const ừ
.Giá tr c a bi n 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 ế ừ
.Thông thường ta dùng ch HOA đ đ t tên cho nh ng bi n này ữ ể ặ ữ ế
Ví d :ụ
const int MAX = 200;
Trang 36Nh p môn l p trình ậ ậ 36
8 H ng (constants) ằ
.H ng là nh ng giá tr c đ nh (fixed values) mà chằ ữ ị ố ị ương trình không th thay ể
đ i M i ki u d li u đ u có h ng tổ ỗ ể ữ ệ ề ằ ương ng H ng còn đứ ằ ượ ọc g i là literals
.H ng ký t đằ ự ược đ t trong c p nháy đ n ặ ặ ơ
Ví d : 'a’ụ
.H ng nguyên là nh ng s mà không có ph n th p phân ằ ữ ố ầ ậ
Ví d 100 , -100 ụ
Trang 38Nh p môn l p trình ậ ậ 38
8 H ng chu i ký t ằ ỗ ự (string constants)
.H ng chu i ký t là m t t p các ký t đ t trong c p nháy kép “”.ằ ỗ ự ộ ậ ự ặ ặ
Ví d :ụ
•. "This is a string" //là m t chu i ộ ỗ
•. ‘a’ //là m t h ng ký t ộ ằ ự
•. “a” //là m t h ng chu i.ộ ằ ỗ
Trang 39Nh p môn l p trình ậ ậ 39
9 H ng ký t đ c bi t(escape sequences) ằ ự ặ ệ
Trang 42Nh p môn l p trình ậ ậ 42
11 Chuy n đ i ki u trong câu l nh gán ể ổ ể ệ
1. Đ i v i câu l nh gán, giá tr c a bi u th c bên ph i d u = đố ớ ệ ị ủ ể ứ ả ấ ượ ự ộc t đ ng chuy n ể
thành ki u d li u c a bi n bên trái d u =ể ữ ệ ủ ế ấ
Ví d : ụ
int i=100;
double d = 123.456;
2. N u th c thi l nh ế ự ệ i = d; thì i = 123 (chuy n đ i ki u m t mát thông tin).ể ổ ể ấ
3. N u th c thi l nh ế ự ệ d = i; thì d =100.0 (chuy n đ i ki u không m t mát thông tin).ể ổ ể ấ
Trang 43Nh p môn l p trình ậ ậ 43
1. Khi chuy n đ i 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:charị ớ ơ intlongfloatdouble, thì vi c chuy n đ i ki u này là không ệ ể ổ ể
m t mát thông tinấ
2. Khi chuy n đ i t ki u d li u có mi n giá tr l n sang ki u d li u có mi n giá ể ổ ừ ể ữ ệ ề ị ớ ể ữ ệ ề
tr nh h n:doubleị ỏ ơ floatlongintchar, thì vi c chuy n đ i ki u này là m t ệ ể ổ ể ấmát thông tin
11 Chuy n đ i ki u trong câu l nh gán ể ổ ể ệ
Trang 45Nh p môn l p trình ậ ậ 45
1 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 cho k t qu là 2 ụ ế ả
2 Toán t l y ph n d % (modulus operator) ch áp d ng v i s nguyên.ử ấ ầ ư ỉ ụ ớ ố
12 Toán t s h c (arithmetic operators) ử ố ọ
Trang 48Nh p môn l p trình ậ ậ 48
14 Toán t ++ và (increment and decrement operators) ử
1. Toán t tăng (++) và toán t gi m ( ) có tác d ng làm tăng ho c gi m 1 giá tr l u ử ử ả ụ ặ ả ị ư
trong bi n ế
2. Ví d :ụ
a++;//tương đương v i a+=1; và a=a+1ớ
a ;//tương đương v i a-=1; và a=a-1ớ
Trang 49Nh p môn l p trình ậ ậ 49
14 Toán t ++ và (increment and decrement operators) ử
Toán t tăng/gi m có 2 d ng:ử ả ạ
1. Ti n t ề ố (prefix): Toán t ử ++/ đ t trặ ước toán h ng, hành đ ng tăng/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ẽ tham gia ị ớ ủ ạ
Trang 50Nh p môn l p trình ậ ậ 50
14 Toán t ++ và (increment and decrement operators) ử
1. H u t (postfix): ậ ố Toán t ử ++/ đ t sau toán h ng, giá tr trong toán h ng đặ ạ ị ạ ược
tăng/gi m sau khi đã tính toán.ả
2. Ví dụ:
B=3;
A=B++;
K t qu : A ch a giá tr 3, B ch a giá tr 4 ế ả ứ ị ứ ị
Trang 52Nh p môn l p trình ậ ậ 52
14 Toán t ++ và (increment and decrement operators) ử
1. Khi các toán t s h c xu t hi n trong m t bi u th c, thì đ u tiên th c hi n ử ố ọ ấ ệ ộ ể ứ ộ ư ự ệ
Trang 53Nh p môn l p trình ậ ậ 53
15 Toán t quan h & lu n lý (relational & logical operators) ử ệ ậ
1. Toán t quan h đử ệ ược đ nh tr là true ho c false ị ị ặ
Trang 55Nh p môn l p trình ậ ậ 55
15 Toán t quan h & lu n lý (relational & logical operators) ử ệ ậ
1. Đ u tiên c a toán t quan h và lu n lý:ộ ư ủ ử ệ ậ
Trang 57Nh p môn l p trình ậ ậ 57
16 Toán t ử ? ( ? operator)
1. Toán t ử ? là m t toán t ba ngôi do đó ph i có ba toán h ng ộ ử ả ạ
2. D ng t ng quát c a toán t ? là: ạ ổ ủ ử
Exp1 ? Exp2 : Exp3;
3. Exp1, Exp2, và Exp3 là các bi u th c ể ứ
4. Ý nghĩa:
−. N u Exp1 đúng thì Exp2 đế ược đ nh tr và nó tr thành giá tr c a bi u th c.ị ị ở ị ủ ể ứ
−. Ngượ ạc l i, n u Exp1 sai, Exp3 đế ược đ nh tr và tr thành giá tr c a bi u ị ị ở ị ủ ể
th c ứ
Trang 59Nh p môn l p trình ậ ậ 59
17 Toán t sizeof ử
nh Tùy môi trớ ường (h đi u hành, lo i CPU, ) mà m i ki u d li u có s byte ệ ề ạ ỗ ể ữ ệ ốkhác nhau
2. Cú pháp:
sizeof(operand)
3. operand: có th là tên ki u d li u, bi n, bi u th c ể ể ữ ệ ế ể ứ
Trang 60Nh p môn l p trình ậ ậ 60
18 Toán t d u ph y (comma operator) ử ấ ẩ
1. Toán t comma bu c các bi u th c cùng v i nhau ử ộ ể ứ ớ
2. Bi u th c bên trái c a toán t comma luôn luôn để ứ ủ ử ược đ nh tr nh void, bi u ị ị ư ể
th c bên ph i đứ ả ược đ nh tr và tr thành giá tr c a bi u th c.ị ị ở ị ủ ể ứ
3. D ng t ng quát c a toán t comma: ạ ổ ủ ử
(exp_1, exp_2, , exp_n)
Trang 61Nh p môn l p trình ậ ậ 61
18 Toán t d u ph y (comma operator) ử ấ ẩ
1. Các bi u th c để ứ ược đ nh tr t trái sang ph i, bi u th c cu i cùng (exp_n) đị ị ừ ả ể ứ ố ược
Trang 62Nh p môn l p trình ậ ậ 62
19 Đ u tiên c a các toán t ộ ư ủ ử
Trang 65Nh p môn l p trình ậ ậ 65
21 Chuy n ki u trong bi u th c ể ể ể ứ
1. Khi các h ng và bi n c a nh ng ki u khác nhau t n t i trong m t bi u th c, giá ằ ế ủ ữ ể ồ ạ ộ ể ứ
tr c a chúng ph i đị ủ ả ược chuy n thành cùng ki u trể ể ước khi các phép toán gi a ửchúng được th c hi n ự ệ
2. Trình biên d ch sẽ th c hi n vi c chuy n ki u (convert) t đ ng đ n ki u c a ị ự ệ ệ ể ể ự ộ ế ể ủ
toán h ng có ki u l n nh t Vi c chuy n ki u này g i là thăng c p ki u (type ạ ể ớ ấ ệ ể ể ọ ấ ểpromotion)
Trang 681. Do 7/2 là phép chia nguyên nên k t qu không có ph n th p phân ế ả ầ ậ
2. Sau l nh trên result có giá tr là 3 Đ phép chia trên là phép chia s th c ta ệ ị ể ố ự
th c hi n ép ki u t s ho c m u s ho c c hai ự ệ ể ử ố ặ ẫ ố ặ ả
Trang 70Nh p môn l p trình ậ ậ 70
Th o lu n ả ậ