Sử dụng các hàm trong thư viện chuẩn -_ Tranh phat minh lai banh xe avoid re-inventing the wheel © Tranh viéc tu viét cac ham da co trong thu vién -_ Các hàm trong thư viện chuẩn thường
Trang 1BAI GIANG
i TS Tran Dang Hung
Fly Khoa Cong Nghé Thong Tin
` Email: hunøtd@hnue.edu.vn
Trang 2
“| Noi Dung
Chương 1: GIới thiệu
s Chương 2: Các câu trúc điêu khiên
Chương 3: Ham (functions)
=» Chuong 4: Mang (arrays)
Chương 5: Con tro (pointers)
= Chuong 6: Ki tu va xau (characters and strings)
Chương 7: Câu trúc va file (structures and files)
s Chương 8: Tiên xử lý (preprocessors)
Trang 4
Tai liệu tham khảo và trinh biên dịch
= Trinh bien dich
= TC 3.0 (giao dién gidng Pascal)
= Visual C++ (windows)
= gcc (linux)
=» Dev-C++ (windows)
Trang 5
Chương 1: Giới thiệu
Ngôn ngữ lập trình C © T.Đ.Hưng - ĐHSPHN Wednesday, ApriL 04, 2012
Trang 6
| Lịch sử ngõn nøữ lap trinh C
s Ra đời vào khoảng năm 1970, việt bởi Dennis Ritchie
tại phong thi nghiệm Bell
s Ra đời dưới sự ảnh hưởng của cac ngön ngữ trước
đó: BCPL (1967) và B (1970)
s Được dùng đề việt hệ điêu hành Unix
Độc lập với phân cứng (khả chuyền)
Trang 7
Chuan C (standard C)
Co rat nhiéu phién ban C
=» ANSI C (American National Standards Institute): 1989
Cac phiên ban update vao nam 1995 (C95), 1999 (C99)
= Cva C++
= C++ la ban mé réng cua C dé hỗ trợ lập trình hướng đôi
tượng và thiêt kê cac phân mêm lớn
= C khong han là một phân của C++, nhưng có thê sử dụng cả C
va C++ nham thiét ké chương tr1nh Lĩnh họat
s Nên thanh thạo C trước khi hoc C++
Trang 8Sử dụng các hàm trong thư viện chuẩn
-_ Tranh phat minh lai banh xe (avoid re-inventing the wheel) ©
Tranh viéc tu viét cac ham da co trong thu vién
-_ Các hàm trong thư viện chuẩn thường được việt cân thận và
hiệu quả
Trang 9
Phase |:
eee Creates program
yy editor and stores it on
Cac pha cua chương trinh C
Linker lmks the object
code with the libranes
Soan thao chuong trinh (edit)
= Dat ten file co duoi la c (vidu.c,
> executes it possibly
storing new data Values as the program executes
Ngon ngt lap trinh C © T.D.Hung - DHSPHN Wednesday, April 04, 2012
Trang 10Một chương trình C đơn gian
-VỊ dụ 1: In một dong ch@ ra man hinh-
/* Chuong trinh C dau tien */
#include <stdio.h>
/* ham chỉnh cua chuong trinh */
int main( void ) \
printf( "Xin chao mung den voi NNLT C!\n" j;
return O; /* chuong trinh ket thuc thanh cong */ } /* ket thuc ham main */
= Loi giải thích
» Dat trong cap dau /* */
= Trinh bién dich sé bo qua
-_ Được dùng đề chú thích cho các dòng lệnh
s_ Chỉ dẫn tiên biên dịch
= #include <stdio.h> - sử dụng các hàm vào/ra
-_ Cân biệt hàm nào nằm trong thư viện chuẩn nao
Trang 11
Một chương trinh C don gian
-Vi du 1: In một dong ch@ ra man hinh-
Một chương trình C có thê có 1 hoặc nhiêu hàm, nhưng
buộc phải có hàm main()
Cặp dâu /›' thể hiện các khôi (block) chương trình,
thân các ham luon duoc dat trong cap |}
Lệnh printf() đưa nội dung ra màn hình
Kí tự \n đưa con trỏ xuông 1 dòng mới
Hàm ïint main(), nên phải có lệnh return trả về một sô
nguyên, return 0; - ham kêt thúc bình thường.
Trang 12Ham printf() va cac ki tw diéu khién
= Ham printf(s): dwa néi dung cua s ra man hinh, s co
thê là hằng xâu kí tự, biên, hoặc biêu thức
s Một sô hằng kí tự đặc biệt:
-_\n - đưa con trỏ xuông dòng
-_\r - đưa con trỏ vê đầu dòng
-_\t - đưa con trỏ đên vị trí tab tiép theo
Trang 13int integerl; /* khai bao bien integerl #*/
int integer2; /* khai bao bien integer2 */
int sum; /* khai bao bien sum */
sễẨanf( "%d", &integerl ); /* nhap 1 so integer */
scanft( "sd", &integer2 }); /* nhap 1 so integer */ sum = integerl + integer2; /*gan tong hai so cho sum */
printf( "Sum is d\n", sum ); /* dua sum ra man hình */
return OQ:
Ngon ngt lap trinh C © T.D.Hung - DHSPHN Wednesday, April 04, 2012
Trang 14= Gan gia tri cho bién
= Toan tv hai ngoi - Binary operator
s_ VỊ dụ:
= sum = variable1 + variable2;
Trang 15Bién va cach dat tén bién
= Bién (variables)
-_ Tương ứng với các vụng trong bộ nhớ may tĩnh
-_ Mỗi biên có tên, kiêu, kích thước, và gia tri
-_ Khi biên được øgán một gia tri mdi, gia tri co bi ghi dé
« Doc gia trị của các biên trong bộ nhớ không làm thay đôi các
biên trong bộ nhớ
= Chudi ky ty (ch@ cai a z, A Z, integer2 2) «|
cht so 0 9, dau gach dưới _ ) :
-_ Không được bắt đầu bằng chữ số oe
= Phan biét chi hoa chữ thường
Trang 16
Khai bao bién
Trước khi sử dụng các biên thi phải khai báo nó
= Cach khai bao:
- Kiêu dữ liệu tên biến:
hoặc
- Kiểu dữ liệu tên biên = giá_ trị đâu;
s_ Khai báo nhiêu biên cùng kiểu thì các biên cách nhau bởi dâu phây
Trang 17Các kiêu dữ Liệu chuân
Từ khoá Giá trị nhỏ nhật Giá trị lớn nhật Độ lớn (byte)
Ngôn ngữ lập trình C © T.Đ.Hưng - ĐHSPHN Wednesday, April 04, 2012
Trang 18Cac phep toan
= Phep chia lay du: % x = X Yo 10;
= Quy tac uu tién
= Cac phep toan trong ngoac duoc tinh trudc
= Cac ngoac léng nhau, các phép toán ở bên trong nhất được tính
trước nhât
-_ Tiếp theo là các phép nhân, chia, và phép lây sô dư
s_ Cac phép toan được tinh từ trai sang phải
-_ Cộng và trừ được tính cuôi cùng
s_ Cac phép toan được tinh từ trai sang phải
Trang 20Cac phep toan logic
< nhỏ hơn
= lớn hơn hoặc băng
<= nhỏ hơn hoặc băng
Trang 211 Cac phép toan trên bit
Toàn tử: & - phép toàn AND
= Toan tu: | - phep toan OR
Toan tử: ~ - phep đảo ngược bit
= Toan tu: << - dich bit sang trai
Toan tur: >> - dich bit sang phai
Trang 22Cac phep toan rut gon
Trang 23
Cac phep toan rut gon
Z Vi du
x= 10; y=20; x +=; => x = 30
= Su khac nhau øiỮa ++x Và X++
= ++x: gia tri cla x sẽ tăng lên 1 đơn vị TRƯỚC khi thực hiện
Trang 24Cac dac ta cua ham printf()
s Đề đưa nội dunø của các biên (hoặc biêu thức) ra màn
hình phải có các chỉ dẫn cụ thê cho từng loại dữ liệu
Trang 25
Cac dac ta cua ham scanf()
Đề nhập các gia tri vào cho các biên cân phải có chỉ dẫn kiêu dữ
liệu cho tung bien
Vi du:
-_ Nhập hai sô nguyên int từ bàn phím
Drintf( “Cho hai so nguyen a,b: “); scanf(“%d%d”,&a,&b);
-_ Nhập một số int và một sô float từ bàn phím
printf(“Cho so nguyen a va so thục b: ”); scanf(“%d%5f”,&a,&b);
-_ Chú ý: Khi nhập xâu kí tự thì không có dâu & trước biên, vì bản thân
ten xau da la con tro
printf(“Cho mot xau ki tu: “); scanf(“%s” ,st);
Các kí tự đặc tả cho từng kiểu dữ liệu giông trong hàm printf()
Chú ý: Hàm printf() và scanf() đêu nằm trong thư vién <stdio.h>, nên đâu chương trinh phải khai bào thư viện bằng lệnh:
#IncLlude <stdio.h>
Trang 26Bai tap tai lop
s Bai 1.3: Giả sử ta cox= 10; y = 20; z = 30; Hãy cho
biét gia tri cac biéu thức sau
s BLTI = 2*(x - yt++) + Z"(++Z - x*y);
s BLỮ2 = ( x + y + Z )* 2+ ++y*2;
«= Bt3 = (x << 2) +(y|3+zZ | 8) +2;
=» Bt4 = ((x == y) && (Xx != Z))