Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 227 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
227
Dung lượng
5,63 MB
Nội dung
TRNG I HC CN TH KHOA CÔNG NGH THÔNG TIN VÀ TRUYN THÔNG B MÔN VIN THÔNG & K THUT IU KHIN Giáo trình NGÔN NG H THNG A Biên son: ThS. Nguyn Ha Duy Khang Ks. Trn Hu Danh -HCT- 10-2006 Ngôn Ng H Thng A Ni dung NI DUNG NI DUNG GII THIU MÔN HC 1 1. i tng môn hc .1 2. Ni dung ct lõi 1 3. Kin thc liên quan .2 4. Danh mc tài liu tham kho 2 PHN A - NGÔN NG C Chng 1 – C BN V NGÔN NG C 3 1. Tng quan v ngôn ng lp trình C 3 2. Câu lnh 4 1.1. Khái nim câu lnh 4 1.2. Phân loi 4 3. Các lnh đn .4 3.1. Lnh gán 4 3.2. Lnh nhp giá tr t bàn phím cho bin (hàm scanf) . 6 3.3. Lnh xut giá tr ca biu thc lên màn hình (hàm printf) 8 4. Bài tp .10 4.1. Mc đích yêu cu .10 4.2. Ni dung 10 Chng 2 - CÁC LNH CÓ CU TRÚC 12 1. Khi lnh 12 2. Cu trúc r nhánh 14 3. Cu trúc la chn 19 4. C u trúc vòng lp 23 4.1. Vòng lp for . 23 4.2. Vòng lp while 25 4.3. Vòng lp do… while .28 4.4. So sánh các vòng lp . 30 5. Các câu lnh đc bit 30 6. Bài tp .31 6.1 Mc đích yêu cu 31 6.2 Ni dung .31 Chng 3 - HÀM và CU TRÚC CHNG TRÌNH .34 1. Khái nim v hàm trong C 34 ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh i Ngôn Ng H Thng A Ni dung 1.1. Hàm th vin .35 1.2. Hàm ngi dùng 36 2. Xây dng mt hàm .36 2.1 nh ngha hàm 36 2.2 S dng hàm . 37 2.3 Nguyên tc hot đng ca hàm 38 3. Truyn tham s cho hàm 38 4. Hàm đ quy .41 4.1. nh ngha . 41 4.2. c đim cn lu ý khi vit hàm đ quy . 42 5. Bài tp .42 5.1 Mc đích yêu cu 42 5.2 Ni dung .42 Chng 4 - KIU MNG VÀ CON TR 44 1. Gii thiu kiu d liu “kiu mng” trong C .44 2. Mng m t chiu 44 2.1. Khai báo . 44 2.2 Truy xut tng phn t ca mng . 45 3. Mng nhiu chiu . 48 3.1 Khai báo 48 3.2 Truy xut tng phn t ca mng 2 chiu 49 4. Gii thiu kiu d liu con tr 51 5. Khai báo và s dng bin con tr . 52 5.1. Khai báo bin con tr 52 5.2. Các thao tác trên con tr 52 6. Con tr và mng . 56 6.1 Con tr và mng 1 chiu .56 6.2 Con tr và mng nhiu chiu 59 7. Con tr và tham s hình thc ca hàm . 60 8. Bài tp .62 8.1 Mc đích yêu cu 62 8.2 Ni dung .62 Chng 5 - CHUI KÝ T VÀ CÁC HÀM X LÝ CHUI . 64 1. Khái nim .64 2. Khai báo 64 2.1 Khai báo theo mng 64 2.2 Khai báo theo con tr . 64 2.3 Va khai báo va gán giá tr 64 3. Các thao tác trên chui ký t 65 3.1. Nhp xut chui .65 ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh ii Ngôn Ng H Thng A Ni dung 3.2 Mt s hàm x lý chui (trong string.h) .66 4. Bài tp .69 4.1 Mc đích yêu cu 69 4.2 Ni dung .69 Chng 6 - KIU CU TRÚC 71 1. Kiu cu trúc trong C .71 1.1 Khái nim . 71 1.2 nh ngha kiu cu trúc . 71 1.3 Khai báo bin cu trúc 73 2. Các thao tác trên bin kiu cu trúc 73 2.1 Truy xut đn tng trng ca bin cu trúc .73 2.2 Khi to cu trúc 76 3. Con tr cu trúc 76 3.1 Khai báo 76 3.2 S dng các con tr kiu cu trúc 76 3.3 Truy cp các thành phn c a cu trúc đang đc qun lý bi con tr .76 4. Bài tp .77 4.1 Mc đích yêu cu 77 4.2 Ni dung .77 Chng 7 - KIU TP TIN 79 1. Mt s khái nim v tp tin 79 2. Các thao tác trên tp tin 80 2.1. Khai báo bin tp tin 80 2.2. M tp tin 80 2.3. óng tp tin .81 2.4. Kim tra đn cui tp tin hay cha? 81 2.5 Di chuyn con tr tp tin v đu tp tin - Hàm rewind() 81 3. Truy cp tp tin vn bn . 81 3.1. Ghi d liu lên t p tin vn bn 81 3.2. c d liu t tp tin vn bn .83 4. Truy cp tp tin nh phân 84 4.1 Ghi d liu lên tp tin nh phân - Hàm fwrite() 84 4.2 c d liu t tp tin nh phân - Hàm fread() 84 4.3 Di chuyn con tr tp tin - Hàm fseek() .84 4.4 Ví d .85 5. Bài tp .88 5.1 Mc đích yêu cu 88 5.2 Ni dung .88 ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh iii Ngôn Ng H Thng A Ni dung PHN B – HP NG (ASSEMBLY) Chng 1 - T CHC B X LÝ INTEL-8086 . 89 1.1. B x lý Intel-8086 (CPU-8086) .89 1.1.1. Cu trúc tng quát 89 1.1.2. Các thanh ghi ca 8086 90 1.1.3. Trng thái tràn: .93 1.2. B nh trong ca Intel-80x86 93 1.2.1. T chc d liu . 93 1.2.2. S phân đon b nh trong .94 1.3. a ch các ngoi vi .95 1.4. Các b x lý Intel khác 96 1.4.1. B x lý Intel-80386 .96 1.4.2. Tp thanh ghi ca b x lý Intel-80386: 96 1.4.3. Các ch đ vn hành ca b x lý Intel-80386 97 1.4.4. B x lý Intel-80486: . 98 1.4.5. B x lý Intel PENTIUM: 99 BÀI TP CHNG 1 . 101 Chng 2 - HP NG .103 2.1. Ngôn ng máy và hp ng 103 2.2. c tính tng quát ca hp ng .104 2.2.1. Cu trúc ca mt dòng lnh hp ng. 104 2.2.2. Macro 105 2.2.3. Chng trình con 105 2.2.4. Bin toàn cc (global), bin đa phng (local) . 106 2.2.5. Các bng, thông báo: 106 2.2.6. Hp ng chéo (cross assembler) 107 2.3. Hp ng MASM (hp ng ca CPU-8086) 107 2.3.1. Cu trúc ca mt hàng lnh 107 2.3.2. Tên 107 2.3.3. T gi nh mã lnh, l nh gi 108 2.3.4. Toán hng và toán t 115 2.4. Cu trúc ca chng trình hp ng MASM 118 2.4.3. Tp tin thi hành dng COM và dng EXE .119 2.4.4. Ví d .120 2.5. Cách to chng trình hp ng .121 Chng 3 - TP LNH CPU-8086 N GIN và KIU NH V 124 3.1. Tp lnh ca CPU-8086 124 3.1.1. Lnh sao chép d liu, đa ch: .124 3.1.2. Lnh tính toán s hc. 126 3.1.3. Nhóm lnh logic và ghi dch 127 ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh iv Ngôn Ng H Thng A Ni dung 3.1.4. Nhóm lnh vào ra ngoi vi. 130 1.3.5. Nhóm lnh h thng .131 3.2. Kiu đnh v . 131 3.2.1. nh v tc thì: 131 3.2.2. nh v thanh ghi 132 3.1.3. nh v trc tip (b nh): 132 3.1.4. nh v gián tip thanh ghi . 132 3.1.5. nh v nn . 133 3.1.6. nh v ch s 133 3.1.7. nh v ch s nn .134 3.1.8. nh v chui 134 3.1.9. nh v cng vào/ra 135 BÀI TP CHNG 3 . 135 Chng 4 - H THNG NGT MM 138 4.1. Nhng c s ca ngt mm .138 4.2. S dng ngt trong hp ng 138 4.3. Ngt MS-DOS . 139 4.4 Các ví d .144 Chng 5 - LNH NHY VÀ VÒNG LP .148 5.1. Lnh nhy (chuyn điu khin) .148 5.1.1. Lnh nhy không điu kin 148 5.1.2. Lnh nhy có điu kin: .149 5.2. Vòng lp 152 BÀI TP CHNG 5 . 155 Chng 6 - NGN XP VÀ CHNG TRÌNH CON .157 6.1. Ng n xp 157 6.1.1. T chc và vn hành . 157 6.1.2. Truy xut ngn xp .158 6.2. Chng trình con . 159 6.2.1. Khai báo chng trình con (Th tc) .159 6.2.3. Gi th tc 160 6.3. Các ví d 160 BÀI TP CHNG 6 . 164 Chng 7 - X LÝ KÝ S VÀ X LÝ CHUI . 164 7.1. X lý ký t .165 7.1.1. Nhp xut s nh phân (Binary) 165 7.1.2. Nhp xut s thp lc phân (Hexa) 166 7.2. X lý chui 167 7.2. Lnh x lý chui 167 7.2.1. Hng x lý chui 168 ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh v Ngôn Ng H Thng A Ni dung 7.2.2. Các tin t lp REP (Repeat) 168 7.2.3. Lnh Ghi vào chui 169 7.2.4. Lnh Np t chui 170 7.2.5. Lnh di chuyn chui .170 7.2.6. Lnh So sánh hai chui .172 7.2.7. Lnh dò tìm trong chui .174 BÀI TP CHNG 7 . 176 Ph lc 1 – Môi trng biên dch TURBO C 3.0 177 Ph lc 2 - Hng Dn S Dng Emu8086 .187 Ph lc 3 - Môi trng phát trin hp ng RadASM 192 Ph lc 4 Complete 8086 instruction set 196 Ph lc 5 – Bng mã ASCII .220 ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh vi GII THIU MÔN HC I. MC ÍCH YÊU CU Môn Ngôn Ng H Thng A (TH407) cung cp cho sinh viên nhng kin thc c bn v lp trình h thng trên máy tính thông qua ngôn ng lp trình C và Hp Ng (Assembly). Môn hc này là nn tng đ tip thu hu ht các môn hc khác trong chng trình đào to. Mt khác, nm vng ngôn ng C là c s đ phát trin các ng dng. Hc xong môn này, sinh viên phi nm đc các vn đ sau: - Tng quan v Ngôn ng lp trình C. - Các kiu d liu trong C. - Các lnh có cu trúc. - Cách thit k và s dng các hàm trong C. - Mt s cu trúc d liu trong C. - T chc b x lý Intel-8086 - Cu trúc chng trình Hp ng - Tp lnh ca Intel-8086 - H thng ngt mm trên máy tính IBM/PC - Lnh nhy và vòng lp trong Hp ng - Ngn xp và Th tc - X lý s và Chui II. I TNG MÔN HC Môn hc đc dùng đ ging dy cho các sinh viên sau: - Sinh viên nm th 3 chuyên ngành Tin hc, Toán Tin, Lý Tin - Sinh viên nm th 3 chuyên ngành in t (Vin thông, iu khin…) III. NI DUNG CT LÕI Trong khuôn kh 45 tit, cu trúc giáo trình đc t chc thành 2 phn chính: - Phn A trình bày các ni dung c bn ngôn ng lp trình C, các câu lnh, các kiu d liu…. - Phn B trình bày cu trúc b x lý Intel-8086 và các vn đ v lp trình Hp ng trên máy tính IBM/PC PHN A: Ngôn ng C (15 tit) Chng 1: C bn v Ngôn ng C Chng 2: Các lnh r nhánh và vòng lp Chng 3: Hàm và cu trúc chng trình Ch ng 4: Mãng và con tr Chng 5: Chui và các hàm x lý chui Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 1 Ngôn Ng H Thng A Gii thiu môn hc Chng 6: Kiu d liu cu trúc Chng 7: Truy xut tp tin PHN B: Hp Ng (30 tit) Chng 1: T chc b x lý Intel-8086 Chng 2: Hp ng Chng 3: Tp lnh và Kiu đnh v Chng 4: H thng ngt mm Chng 5: Lnh nhy và Vòng lp Chng 6: Ngn xp và Chng trình con Chng 7: X lý s và Chui IV. KIN THC LIÊN QUAN hc tt môn Ngôn Ng H Thng A, sinh viên cn phi có các kin thc nn tng sau: - Kin thc K thut s. - Kin thc Kin trúc máy tính - Kin thc Ngôn ng lp trình cp cao: Pascal, Delphi . - K nng thao tác s dng máy tính. V. DANH MC TÀI LIU THAM KHO [1] Nguyn Vn Linh, Lâm Hoài Bo, Dng Vn Hiu, Giáo trình Lp trình cn bn A, Khoa Công Ngh Thông Tin, i hc Cn Th, 2005. [2] Nguyn ình Tê, Hoàng c Hi , Giáo trình lý thuyt và bài tp ngôn ng C; Nhà xut bn Giáo dc, 1999. [3] Nguyn Cn, C – Tham kho toàn din, Nhà xut bn ng Nai, 1996. [4] Brain W. Kernighan & Dennis Ritchie, The C Programming Language, Prentice Hall Publisher, 1988. [5] Võ Vn Chín, Bài ging Ngôn ng h thng, Khoa Công Ngh Thông Tin, i hc Cn Th , 1994. Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 2 Chng 1 C BN V NGÔN NG C Ni dung chng 1 trình bày các vn đn nh sau: • Tng quan v ngôn ng lp trình C. • Câu lnh là gì? • Cách s dng câu lnh gán giá tr ca mt biu thc cho mt bin. • Cách s dng lnh scanf đ nhp giá tr cho bin. • Cách s dng lnh printf đ xut giá tr ca biu thc lên màn hình và cách đnh dng d liu. 1. TNG QUAN V NGÔN NG LP TRÌNH C C là ngôn ng lp trình cp cao, đc s dng rt ph bin đ lp trình h thng cùng vi Hp ng (Assembly) và phát trin các ng dng. Vào nhng nm cui thp k 60 đu thp k 70 ca th k XX, Dennish Ritchie (làm vic ti phòng thí nghim Bell) đã phát trin ngôn ng lp trình C da trên ngôn ng BCPL (do Martin Richards đa ra vào nm 1967) và ngôn ng B (do Ken Thompson phát trin t ngôn ng BCPL vào nm 1970 khi vit h điu hành UNIX đu tiên trên máy PDP-7) và đc cài đt ln đu tiên trên h điu hành UNIX ca máy DEC PDP-11. Nm 1978, Dennish Ritchie và B.W Kernighan đã cho xut bn quyn “Ngôn ng lp trình C” và đc ph bin rng rãi đn nay. u tiên, C đc thit k nhm lp trình trong môi trng ca h điu hành Unix nhm mc đích h tr cho các công vic lp trình phc tp. Nhng v sau, vi nhng nhu cu phát trin ngày mt tng ca công vic lp trình, C đã vt qua khuôn kh ca phòng thí nghim Bell và nhanh chóng hi nhp vào th gii lp trình đ ri các công ty lp trình s dng mt cách rng rãi. Sau đó, các công ty sn xut phn mm ln lt đa ra các phiên bn h tr cho vic lp trình bng ngôn ng C và chun ANSI C cng đc khai sinh t đó. Ngôn ng lp trình C là m t ngôn ng lp trình h thng rt mnh và rt “mm do”, có mt th vin gm rt nhiu các hàm (function) đã đc to sn. Ngi lp trình có th tn dng các hàm này đ gii quyt các bài toán mà không cn phi to mi. Hn th na, ngôn ng C h tr rt nhiu phép toán nên phù hp cho vic gii quyt các bài toán k thut có nhiu công thc phc t p. Ngoài ra, C cng cho phép ngi lp trình t đnh ngha thêm các kiu d liu tru tng khác. Tuy nhiên, điu mà ngi mi va hc lp trình C thng gp “rc ri” là “hi khó hiu” do s “mm do” ca C. Dù vy, C đc ph bin khá rng rãi và đã tr thành mt công c lp trình khá mnh, đc s dng nh là mt ngôn ng lp trình ch y u trong vic xây dng nhng phn mm hin nay. Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 3 [...]... main () { int thang; clrscr(); printf("\n Nhap vao thangs trong nam "); scanf("%d",&thang); switch(thang) { case 1: case 3: case 5: case 7: case 8: case 10: Ths Nguy n H a Duy Khang, Ks Tr n H u Danh 22 Ngôn Ng H Th ng A case 12: printf("\n break; case 4: case 6: case 9: case 11: printf("\n break; case 2: printf ("\ break; default : printf("\n break; Các l nh có c u trúc trong C Thang %d co 31 ngay... nghich dao cua a #include #include int main () { float a; printf("Nhap a = "); scanf("%f", &a) ; if (a !=0 ) printf("Nghich dao cua %f la %f" ,a, 1 /a) ; else printf(“Khong the tim nghich dao cua a ); getch(); return 0; } Gi i thích: - N u chúng ta nh p vào a 0 thì câu l nh printf("Nghich dao cua %f la %f" ,a, 1 /a) c th c hi n, ng c l i câu l nh printf(“Khong the tim duoc nghich dao cua a )... n sau” i u ki n if Ví d 2: Yêu c u ng i ch y ch ng trình nh p vào giá tr c a 2 s a và b, n u a l n h n b thì in ra thông báo “Gia tr c aa l n h n giá tr c a b”, sau ó hi n th giá tr c th c a 2 s lên màn hình #include #include int main () { int a, b; printf("Nhap vao gia tri cua 2 so a, b!"); scanf("%d%d", &a, &b); if (a> b) { printf("\n Gia tri cua a > b"); printf("\n a= %d, b=%d" ,a, b);... Ký t có mã ACSII trong h bát phân là s ddd Ký t có mã ACSII trong h th p l c phân là HHH Ths Nguy n H a Duy Khang, Ks Tr n H u Danh 9 Ngôn Ng H Th ng A C b n v ngôn ng C Ví d : #include #include int main() { clrscr(); printf("\n Tieng Beep \a" ); printf("\n Doi con tro sang trai 1 ky tu\b"); printf("\n Dau Tab \tva dau backslash \\"); printf("\n Dau nhay don \' va dau nhay kep \"");... printf("Nhap vao gia tri cua 2 so a va b !"); scanf("%d%d", &a, &b); if (a> b) { printf("\n a lon hon b”); printf("\n a= %d b=%d " ,a, b); } else { printf("\n a nho hon hoac bang b"); printf("\n a= %d b=%d" ,a, b); } printf("\n Thuc hien xong lenh if"); getch(); return 0; } Gi i thích: - N u chúng ta nh p vào 40 30 thì k t qu hi n ra trên màn hình là a lon hon b a= 40 b=30 Thuc hien xong lenh if - Còn n u chúng ta nh... #include int main () { float a; Ths Nguy n H a Duy Khang, Ks Tr n H u Danh 14 Ngôn Ng H Th ng A Các l nh có c u trúc trong C printf("Nhap a = "); scanf("%f", &a) ; if (a !=0 ) printf("Nghich dao cua %f la %f" ,a, 1 /a) ; getch(); return 0; } Gi i thích: - N u chúng ta nh p vào a 0 thì câu l nh printf("Nghich dao cua %f la %f" ,a, 1 /a) c th c hi n, ng c l i câu l nh này không c th c hi n - L... H a Duy Khang, Ks Tr n H u Danh 16 Ngôn Ng H Th ng A Các l nh có c u trúc trong C Ví d 2: Yêu c u ng i ch y ch ng trình nh p vào giá tr c a 2 s a và b, n u a l n h n b thì in ra thông báo “Gia tr c aa l n h n giá tr c a b, giá tr c a 2 s ”, ng c l i thì in ra màn hình câu thông báo “Giá tr c aa nh h n ho c b ng giá tr c a b, giá tr c a 2 s ” #include #include int main () { int a, ... break; case '-': printf("\n %d - %d =%d",so1, so2, so1-so2); break; Ths Nguy n H a Duy Khang, Ks Tr n H u Danh 21 Ngôn Ng H Th ng A Các l nh có c u trúc trong C case '*': printf("\n %d * %d =%d",so1, so2, so1*so2); break; case '/': if (so2!=0) { thuong=float(so1)/float(so2); printf("\n %d / %d =%f", so1, so2, thuong); } else printf("Khong chia duoc cho 0"); break; default : printf("\n pheptoan); Chua... include int main(){ int float bien_nguyen=1234, i=65; bien_thuc=123.456703; printf(“Gia tri nguyen bien_nguyen); cua printf(“Gia tri bien_thuc); cua thuc bien bien nguyen =%d\n”, thuc =%f\n”, printf(“Truoc khi lam tron=%f \n Sau tron=%.2f”,bien_thuc, bien_thuc); khi lam return 0; } K t qu in ra màn hình nh sau: Ths Nguy n H a Duy Khang, Ks Tr n H u Danh 8 Ngôn Ng H Th ng A C b n v ngôn ng C N u ta thêm vào... vi CV = a+ b+c Di n tích S = sqrt(p*(p -a) *(p-b)*(p-c)) Trong ó: p=CV/2 In các k t qu lên màn hình 4 Vi t ch ng trình tính logax v i a, x là các s th c nh p vào t bàn phím, và x>0, a> 0, a != 1.( dùng logax=lnx/lna) 5 Vi t ch ng trình nh p vào t a c a hai i m (x1, y1) và (x2, y2) a) Tính h s góc c a ng th ng i qua hai i m ó theo công th c: H s góc = (y2 - y1) /(x2 - x1) b) Tính kho ng cách gi a hai i m . backslash \"); printf("
Dau nhay don ' va dau nhay kep ""); printf("
Dau cham hoi ?"); printf("
Ky tu co ma. phát trin ngôn ng lp trình C d a trên ngôn ng BCPL (do Martin Richards đ a ra vào nm 1967) và ngôn ng B (do Ken Thompson phát trin t ngôn ng BCPL