Bài giảng Kỹ thuật lập trình C - Chương 1: Tổng quan về lập trình cung cấp cho người học các kiến thức: Biến và khai báo biến, các phép toán, các hàm có sẵn của C, phát biểu điều kiện Phát biểu lặp, hàm. Mời các bạn cùng tham khảo nội dung chi tiết.
Trang 1Ch ươ ng 1
Trang 3D li uữ ệ
v D li u đ u vào ữ ệ ầ
v D li u đ u ra ữ ệ ầ
v D li u trong quá trình x lý ữ ệ ử
§ Ch ươ ng trình tính s ti n nh n đ ố ề ậ ượ c khi g i ti t ử ế
ki m ệ
Trang 5Bi nế
v Bi n ế
năng ch a đ ứ ượ c m t giá tr = m t d li u ộ ị ộ ữ ệ
§ Đ ượ c khai báo và s d ng đ ch a ử ụ ể ứ d li u c a ữ ệ ủ
Trang 764 bit, l u tr các thông tin v ngày tháng và th i gian ư ữ ề ờ Giá tr m c đ nh : 1/1//0001 – 0:00:00 ị ặ ị
decimal S th c có d u 128 bit (96 bit ph n nguyên và 32 bit ph n th p ố ự ấ ầ ầ ậ
phân). Giá tr m c đ nh : 0 ị ặ ị double S th c có d u 64 bit ố ự ấ
Giá tr m c đ nh : 0 ị ặ ị int S nguyên có d u 32 bit [231, 231) ố ấ
Giá tr m c đ nh: 0 ị ặ ị string M ng các ký t thu c ki u Char ả ự ộ ể
Giá tr m c đ nh : Nothing (không ph i chu i r ng) ị ặ ị ả ỗ ỗ
Trang 8M t s v n đ nâng caoộ ố ấ ề
v Ki u s c p (đ n tr ) & Ki u đ i t ể ơ ấ ơ ị ể ố ượ ng (đa
tr ) ị
v Tham chi u ế
v Ki u bi n do ng ể ế ườ ậ i l p trình t đ nh nghĩa ự ị
v Khái ni m ệ C u trúc d li u ấ ữ ệ c a ch ủ ươ ng
trình
v Ki u m ng ể ả
Trang 11v Hàm x lý trên ki u d li u chu i ử ể ữ ệ ỗ
v Hàm x lý trên ki u d li u ngày tháng ử ể ữ ệ
Trang 12Phát bi u đi u ki nể ề ệ
if (<đi u ki n> ) ề ệ {
<Công vi c 1>; ệ }
else {
<Công vi c 2>; ệ }
Trang 13Phát bi u đi u ki nể ề ệ
Trang 14Phát bi u đi u ki nể ề ệ
Trang 15Toán t 3 ngôiử
v Có d ng: ạ
<Đi u ki n> ề ệ ? <Bi u th c 1> ể ứ : <Bi u th c ể ứ
2>
N u <Đi u ki n> đúng thì <Bi u th c 1> th c ế ề ệ ể ứ ự
hi n, ng ệ ượ ạ c l i <Bi u th c 2> th c hi n ể ứ ự ệ
v Là d ng rút g n c a if…else ạ ọ ủ
Trang 16Phát bi u l a ch nể ự ọ
switch (<bi n c n ki m tra>) ế ầ ể {
case <giá tr 1>: ị
<công vi c 1>; ệ break;
case <giá tr 2>: ị
<công vi c 2>; ệ break;
… default:
<công vi c n u không thu c tr ệ ế ộ ườ ng h p nào ợ ở trên>;
break;
}
Trang 17Phát bi u l a ch nể ự ọ
Trang 18Phát bi u l a ch nể ự ọ
Trang 22● B3: N u k t qu là ế ế ả false thì
v Đ thoát vòng l p: dùng ể ặ break
v Đ k t thúc s m 1 vòng l p: dùng ể ế ớ ặ continue
v L nh trong while có th không đệ ể ược th c hi n l n nàoự ệ ầ
Trang 24− Exp2: là bi u th c đi u ki n ể ứ ề ệ
− Exp3: bi u th c đi u khi n ể ứ ề ể
l p ặ
v Đ thoát vòng l p: dùng ể ặ break
v Đ k t thúc s m 1 vòng l p: dùng ể ế ớ ặ continue
Trang 28Phát bi u l pể ặ
§ do … while: phù h p v i suy nghĩ t nhiên khi ợ ớ ự
thi t k thu t toán ế ế ậ
§ while: kh c ph c m t s tr ng h p l i c a phát ắ ụ ộ ố ườ ợ ỗ ủ
bi u ể do … while
§ for: cách vi t ng n g n c a phát bi u ế ắ ọ ủ ể while, s ử
d ng khi đi u ki n l p ph thu c vào bi n l p ụ ề ệ ặ ụ ộ ế ặ
và s l n l p có th bi t tr ố ầ ặ ể ế ướ c
§ foreach: duy t đ i t ng trong t p danh sách ệ ố ượ ậ
Trang 29Ø Hàm là m t kh i l nh th c hi n m t công ộ ố ệ ự ệ ộ
vi c hoàn ch nh (module), đ ệ ỉ ượ c đ t tên và ặ
đ ượ c g i th c thi nhi u l n t i nhi u v trí ọ ự ề ầ ạ ề ị
trong ch ươ ng trình.
Ø Hàm còn g i là ch ọ ươ ng trình con ,ph ươ ng
th c, hành vi ứ
Trang 30Ø Hàm có th đ ể ượ c g i t ch ọ ừ ươ ng trình
chính (hàm main) ho c t 1 hàm khác ặ ừ
Ø Hàm có giá tr tr v ho c không. N u hàm ị ả ề ặ ế
không có giá tr tr v g i là th t c ị ả ề ọ ủ ụ
(procedure)
Trang 33Tham s hình th c & tham s th cố ứ ố ự
Ø Khi hàm c n nh n đ i s ( ầ ậ ố ố arguments) đ ể
th c thi thì khi khai báo hàm c n khai báo ự ầ danh sách các tham s đ nh n giá tr t ố ể ậ ị ừ
ch ươ ng trình g i. Các tham s này đ ọ ố ượ c g i ọ
Trang 34Tham s hình th c & tham s th cố ứ ố ự
• Khi g i hàm, ta cung c p các giá tr th t, các ọ ấ ị ậ
giá tr này s đ ị ẽ ượ c sao chép vào các tham s ố
hình th c và các giá tr th t đ ứ ị ậ ượ c g i là ọ
Trang 35Truy n tham tr và tham chi u trong hàmề ị ế
Truy n tham bi n: Sau khi thoát ề ế
kh i hàm, nó s l y giá tr b thay ỏ ẽ ấ ị ị
đ i trong hàm (N b đ i thành 8) ổ ị ổ
Trang 36Truy n tham tr và tham chi u trong hàmề ị ế
• Truy n tham tr (call by value) ề ị
– Sao chép giá tr ịc a ủ đ i s ố ố vào tham s ố
hình th c ứ c a hàm. ủ
– Nh ng thay đ i c a tham s không nh ữ ổ ủ ố ả
h ưở ng đ n giá tr c a đ i s ế ị ủ ố ố
Trang 37Truy n tham tr và tham chi u trong hàmề ị ế
• Truy n tham chi u ề ế (call by reference)
– Sao chép đ a ch ị ỉ c a đ i s vào tham s ủ ố ố ố hình th c. Do đó, nh ng thay đ i đ i v i ứ ữ ổ ố ớ tham s s có tác d ng trên đ i s ố ẽ ụ ố ố
• S d ng t khoá ử ụ ừ ref ho c ặ out
• Tham s ki u đa tr (m ng, đ i t ố ể ị ả ố ượ ng…)
m c đ nh là truy n theo tham chi u (t c là ặ ị ề ế ứ
không c n dùng t khóa ầ ừ ref ho c ặ out )
Trang 38Truy n tham tr và tham chi u trong hàmề ị ế
int b = TangSo(out a);
v K t qu ế ả
§ a = 11
§ b = 11
Trang 39Hàm đ quiệ
v Thu t toán đ qui ậ ệ
§ Gi i bài toán b ng cách rút g n liên ti p bài toán ả ằ ọ ế
ban đ u thành bài toán cũng t ầ ươ ng t nh ng có ự ư
d li u đ u vào nh h n ữ ệ ầ ỏ ơ
Trang 41Đ qui tuy n tínhệ ế
Trong thân ha m co duy nhâ t môt l i goi ha m goi lai ̀ ́ ́ ̣ ờ ̣ ̀ ̣ ̣
chi nh nó ́
môt ca ch ṭ ́ ường minh:
<Kiêu d liêu ha m>̉ ữ ̣ ̀ TenHam (<danh sa ch tham sô >)́ ́
Trang 43Đ qui nh phânệ ị
Trong thân cua ha m co hai l i goi ha m goi lai chi nh ̉ ̀ ́ ơ ̀ ̣ ̀ ̣ ̣ ́
no môt ca ch t ́ ̣ ́ ươ ̀ ng minh:
<Kiêu d liêu ha m>̉ ữ ̣ ̀ TenHam (<danh sa ch tham sô >)́ ́
//Th c hiên môt sô công viêc (nê u co )ự ̣ ̣ ́ ̣ ́ ́
. . .TenHam (<danh sa ch tham sô >); ́ ́ //Giai quyê t vâ n đê nho h n ̉ ́ ́ ̀ ̉ ơ
//Th c hiên môt sô công viêc (nê u co )ự ̣ ̣ ́ ̣ ́ ́
. . . TenHam (<danh sa ch tham sô >); //Giai quyê t vâ n đê co n ́ ́ ̉ ́ ́ ̀ ̀laị
//Th c hiên môt sô công viêc (nê u co )ự ̣ ̣ ́ ̣ ́ ́
}
Trang 44Đ qui nh phânệ ị
Vi du: Ti nh sô hang th n cua da y Fibonaci đ ́ ̣ ́ ́ ̣ ư ́ ̉ ̃ ượ c
đinh nghi a nh sau: ̣ ̃ ư
Trang 47Đ qui tệ ương hỗ
Trong thân cua ha m na y co l i goi ha m đê n ha m ̉ ̀ ̀ ́ ơ ̀ ̣ ̀ ́ ̀
kia va trong thân cua ha m kia co l i goi ha m t i ̀ ̉ ̀ ́ ơ ̀ ̣ ̀ ơ ́
ha m na y ̀ ̀
Trang 48Đ qui tệ ương hỗ
<Kiêu d liêu ha m>̉ ữ ̣ ̀ TenHam2 (<danh sa ch tham sô >);́ ́
<Kiêu d liêu ha m>̉ ữ ̣ ̀ TenHam1 (<danh sa ch tham sô >)́ ́
Trang 49 Điê u kiên d ng:X(0) = Y(0) = 1.̀ ̣ ừ
long TinhXn (int n)
Trang 50C ch ho t đ ng c a Đ quiơ ế ạ ộ ủ ệ
Ø Ho t đ ng theo c ch LIFO (LAST IN FIRST ạ ộ ơ ế
OUT)
Ø Dùng stack đ l u v t d li u và ch th l nh ể ư ế ữ ệ ỉ ị ệ
Trang 51C ch ho t đ ng c a Đ quiơ ế ạ ộ ủ ệ
Ø Minh h a Đ qui giai th a ọ ệ ừ
Ví d tính n! v i n=3 ụ ơ ́
Trang 52C ch ho t đ ng c a Đ quiơ ế ạ ộ ủ ệ
Ø Minh h a Đ qui chuy n c s 10 sang c s 2 ọ ệ ể ơ ố ơ ố
Trang 53C ch ho t đ ng c a Đ quiơ ế ạ ộ ủ ệ
Ø Minh h a Đ qui Fibonacci ọ ệ
long Fibonaci (int n) {
if(n==0 || n==1) return 1;
return Fibonaci(n1) + Fibonaci(n2);
Trang 54C ch ho t đ ng c a Đ quiơ ế ạ ộ ủ ệ
Ø Minh h a Đ qui Tháp Hà N i ọ ệ ộ
Trang 55C ch ho t đ ng c a Đ quiơ ế ạ ộ ủ ệ
Ø Minh h a Đ qui Tháp Hà N i ọ ệ ộ
Trang 56Kh đ quiử ệ
Ø Nh ng gi i thu t có th cài đ t đ ữ ả ậ ể ặ ượ c b ng các ằ
vòng l p thay th cho đ qui thì nên dùng vòng l p, ặ ế ệ ặ
vì đ qui r t t n b nh , x lý ch m ệ ấ ố ộ ớ ử ậ
Ø Hãy kh đ qui tính giai th a ử ệ ừ
Ø Hãy kh đ qui tính s fibonacci ử ệ ố
Trang 58END