Kỹ thuật lập trình

134 318 2
Kỹ thuật lập trình

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Mục tiêu: Nắm bắt được các loại ngôn ngữ lập trình. Kỹ thuật lập trình đệ qui. Tìm hiểu lập trình cấu trúc. Tìm hiểu lập trình hướng đối tượng. Tìm hiểu các thao tác vào ra. Ngôn ngữ lập tr

Kỹ thuật lập trì nh 1 CHƯƠNG i ĐạI CƯƠNG Về LậP TRìNH I. Khái niệm thuật toán: I.1. Khái niệ m: Thuậ t toá n là tậ p hợp cá c quy tắ c có logic nhằ m giả i một lớp bà i toán nà o đó để được một kế t quả xá c định. I.2. Các tí nh chất đặc trưng của thuật toán : I.2.1. Tí nh tổng quát : Thuậ t toá n được lậ p không phả i chỉ để giả i một bà i toá n cụ thể mà thôi mà còn phả i giả i đ ược một lớp cá c bà i toá n có dạ ng tương tự. I.2.2. Tí nh giới hạn : Thuậ t toá n giả i một bà i toá n phả i đ ược thực hiệ n qua một số giới hạ n các thao tá c để đạ t đế n kế t quả . I.2.3. Tí nh duy nhất : Toà n bộ quá trì nh biến đổi, cũng như trậ t tự thực hiệ n phả i đ ược xác định và là duy nhấ t. Như vậ y khi dùng thuậ t toá n cùng một dữ liệ u ban đầ u phả i cho cùng một kế t quả . I.3. Phân loại: Theo cấ u trúc, ta có thể phâ n thà nh ba loạ i thuậ t toá n cơ bả n sau : - Thuậ t toá n không phâ n nhá nh. - Thuậ t toá n có phâ n nhá nh. - Thuậ t toá n theo chu trì nh có bước lặ p xá c định và có bước lặ p không xá c định. II. Mô tả thuật toán bằng lưu đồ : II.1. Lưu đồ : Lưu đồ là một dạ ng đồ thị dùng để mô tả quá trì nh tí nh toá n một cá ch có hệ thống. Người ta thường thể hiệ n thuậ t toá n bằ ng lưu đồ. II.2. Các hiệu trên lưu đồ : Tê n khối hiệ u ý nghĩ a Khối mở đầ u hoặ c kế t thúc Dùng mở đầ u hoặ c kế t thúc chương trì nh Khối và o ra Đưa số liệ u và o hoặ c in kế t quả Kỹ thuật lập trì nh 2 Khối tí nh toá n Biể u diễ n cá c công thức tí nh toá n và thay đổi giá trị của cá c biế n Khối điều kiện Dùng để phâ n nhá nh chương trì nh Chương trì nh con Dùng để gọi chương trì nh con Mũi tê n Chỉ hướng truyề n thông tin, liê n hệ cá c khối II.3. Một số ví dụ biể u diễ n thuật toán bằng lưu đồ II.3.1. Thuật toán không phân nhánh: Ví dụ 1: Tí nh A = x2 + y2 BeginNhaọp (x,y)A = x2 + y2Xuaỏt (A)End Ví dụ 2 : Tí nhyxCByAxS22+++=; biế t A,B,C,x,y BeginNhaọp (A, B, C, x,y)S = (Ax + By + C) / SQRT (x*x + y*y)Xuaỏt SEnd Kỹ thuật lập trì nh 3 II.3.2. Thuật toán có phân nhánh: Ví dụ 1: Tì m giá trị max của ba số thực a,b,c BeginNhaọp (a, b, c)Max = aXuaỏt (Max)Enda > bMax < cMax = cSSMax = bẹẹ Ví dụ 2: Giả i phương trì nh bậ c nhấ t Ax+B =0 với cá c nghiệ m thực. BeginNhaọp (a, b)Xuaỏt (PTVẹ)Enda = 0SSXuaỏt (-b/a)b = 0 Xuaỏt (PTVN)ẹẹ Kü tht lËp tr× nh 4 VÝ dơ 3 : Gi¶ i ph­¬ng tr× nh bË c hai Ax2+Bx+C =0 víi c¸ c nghiƯ m thùc. BeginNhập (a, b, c)Xuất (‘X1= ’,(-b + SQRT(Delta)) / (2*a))Xuất (‘X2= ’,(-b - SQRT(Delta)) / (2*a))Enda = 0ĐĐPTB1 (b, c)Delta < 0Xuất (‘PTVN’)SSDelta = b*b - 4*a*cĐDelta = 0Xuất (-b / (2*a))S II.3.3. Tht to¸n cã chu tr× nh: Th t to¸ n cã chu tr× nh víi c¸c b­íc lỈ p x¸ c ®Þnh th­êng ® ­ỵc thĨ hiƯ n b» ng l­u ®å sau : i = giá trò ban đầuLệnh S;Tăng ii <= nSĐ víi n lµ gi¸ trÞ kÕ t thóc. Kỹ thuật lập trì nh 5 Ví dụ 4: Tí nhS=iinx=1, với cá c xi do ta nhậ p và o. BeginNhaọp (n)i = 1S = 0Nhaọp (xi)Endi = i+1S = S+xii <= nXuaỏt (S)Sẹ III. CáC NGôN NGữ LậP TRìNH & CHươNG TRìNH DịCH: III.1. Ngôn ngữ lập trì nh: III.1.1. Giới thiệ u: Con người muốn giao tiế p với má y tí nh phải thông qua ngôn ngữ. Con người muốn má y tí nh thực hiệ n công việ c, phả i viế t cá c yê u cầu đ ưa cho má y bằ ng ngôn ngữ má y hiể u đ ược. Việ c viế t cá c yê u cầ u ta gọi là lậ p trì nh (programming). Ngôn ngữ dùng để lậ p trì nh đ ược gọi là ngôn ngữ lậ p trì nh. Nế u ngôn ngữ lậ p trì nh gầ n với vấ n đề cầ n giả i quyế t, gầ n với ngôn ngữ tự nhiê n thì việ c lậ p trì nh sẽ đơn giả n hơn nhiề u. Những ngôn ngữ lậ p trì nh có tí nh chấ t như trê n đ ược gọi là ngôn ngữ cấ p cao. Nhưng má y tí nh chỉ hiể u đ ược ngôn ngữ riê ng của mì nh, đó là cá c chuỗi số 0 với 1 và như vậ y rõ rà ng là khó khă n cho lậ p trì nh viê n, vì nó không gầ n gũi với con người. Hiệ n tạ i, ngôn ngữ lậ p trì nh được chia ra là m cá c loạ i sau: III.1.2. Phân loại ngôn ngữ lập trì nh: - Ngôn ngữ má y (machine language) Kü tht lËp tr× nh 6 - Hỵp ng÷ (assembly language) - Ng«n ng÷ cÊ p cao (higher-level language) Do m¸ y tÝ nh chØ hiĨ u ®­ỵc ng«n ng÷ m¸ y, cho nª n mét ch­¬ng tr× nh viÕ t trong ng«n ng÷ cÊ p cao ph¶ i ® ­ỵc biª n dÞch sang ng«n ng÷ m¸ y. C«ng cơ thùc hiƯ n viƯ c biª n dÞch ®ã ® ­ỵc gäi lµ ch­¬ng tr× nh dÞch. III.2. Ch­¬ng tr× nh dÞch: Ch­¬ng tr× nh dÞch ® ­ỵc chia ra lµ m 2 lo¹ i : tr× nh biªn dÞch (compiler) vµ tr× nh th«ng dÞch (interpreter) III.2.1. Tr× nh biª n dÞch: lµ viƯ c chu n mét ch­¬ng tr× nh trong ng«n ng÷ cÊ p cao nµ o ®ã (ch­¬ng tr× nh ngn) sang ng«n ng÷ m¸ y (ch­¬ng tr× nh ®Ý ch). - Thêi gian chu n mét ch­¬ng tr× nh ngn sang ch­¬ng tr× nh ®Ý ch ® ­ỵc gäi lµ thêi gian dÞch. - Thêi gian mµ ch­¬ng tr× nh ®Ý ch thùc thi ® ­ỵc gäi lµ thêi gian thùc thi. Nh­ vË y, ch­¬ng tr× nh ngn vµ d÷ liƯ u ®Ĩ ch­¬ng tr× nh thùc thi ® ­ỵc xư lý trong c¸ c thêi ®iĨ m kh¸ c nhau, ® ­ỵc gäi lµ thêi gian dÞch (compile time) vµ thêi gian thùc thi (run-time) Chương trìnhnguồnTrình biêndòchChương trìnhđíchMáy tínhthực hiệnKết quảDữ liệu H× nh I.1. Ch­¬ng tr× nh thùc thi theo c¬ chÕ dÞch cđa tr× nh biª n dÞch III.2.2. Tr× nh th«ng dÞch: qu¸ tr× nh dÞch vµ thùc thi x¶ y ra cïng 1 thêi gian, dÞch ®Õ n ®© u thi hµ nh lƯ nh ®Õ n ®ã. Chương trìnhnguồnChương trìnhthông dòchKết quảDữ liệu H× nh I.2. Ch­¬ng tr× nh thùc thi theo c¬ chÕ dÞch cđa tr× nh th«ng dÞch Kỹ thuật lập trì nh 7 CHươNG 2 LàM QUEN VớI NGôN NGữ C * Giới thiệu ngôn ngữ C Ngôn ngữ C do Dennis Ritchie là người đầu tiên đề xuất, đ thiế t kế và cà i đặ t C trong môi trường UNIX. Nó có nguồn gốc từ ngôn ngữ BCPL do Martin Richards đ ưa ra và o nă m 1967 và ngôn ngữ B do Ken Thompson phá t triể n từ ngôn ngữ BCPL nă m 1970 khi viế t hệ điề u hà nh Unix. C là ngôn ngữ lậ p trì nh đa dụng, cấ p cao nhưng lạ i có khả nă ng thực hiệ n cá c thao tá c như của ngôn ngữ Assembly. Vì thế ngôn ngữ C nhanh chóng đ ược cà i đ ặ t, sử dụ ng trê n má y vi tí nh và đ trở thà nh một công cụ lậ p trì nh khá mạ nh, hiệ n nay đang có khuynh hướng trở thà nh một ngôn ngữ lậ p trì nh chí nh cho má y vi tí nh trê n thế giới. * Đặc điể m ngôn ngữ C Ngôn ngữ C có những đặ c điể m cơ bả n sau : - Tí nh cô đọng (compact) : Ngôn ngữ C chỉ có 32 từ khoá chuẩ n, 40 toán tử chuẩ n mà hầ u hế t đ ược biể u diể n bởi cá c d y tự ngắ n gọn. - Tí nh cấ u trúc (structured) : Ngôn ngữ C có một tậ p hợp cá c phá t biểu lậ p trì nh cấ u trúc như phá t biể u quyế t định hoặ c lặ p. Do đó, nó cho phép chúng ta viế t chương trì nh có tổ chức và dể hiể u. - Tí nh tương thí ch (compactable) : Ngôn ngữ C có bộ lệ nh tiề n xử lý và cá c thư việ n chuẩ n là m cho cá c chương trì nh viế t bằ ng ngôn ngữ C có thể tương thí ch khi chuyể n từ má y tí nh nà y sang má y tí nh kiể u hoà n toà n khá c. - Tí nh linh động (flexible) : Ngôn ngữ C là một ngôn ngữ rấ t linh động về ngữ phá p, nó có thể chấ p nhậ n rấ t nhiề u cá ch thể hiệ n mà không có ở ngôn ngữ khá c như Pascal, nó giúp cho kí ch thước m lệ nh có thể thu gọn lạ i để chương trì nh thực thi nhanh chóng hơn. - Biê n dịch : Ngôn ngữ C đ ược biê n dịch bằ ng nhiề u bước và cho phép biê n dịch nhiề u tậ p tin chương trì nh riê ng rẽ thà nh cá c tậ p tin đối tượng (object) và nối cá c đối tượng đó lạ i với nhau (link) thà nh một chương trì nh thực thi thống nhấ t. I. CáC KHáI NIệM Cơ BảN I.1. Cấu trúc cơ bản của một chương trì nh C [tiề n xử lý] [Cá c hà m] main() Kỹ thuật lập trì nh 8 { [khai bá o biế n;] [nhậ p dữ liệ u ;] [xử lý ;] [xuấ t ;] } Ví dụ : Chương trì nh hiệ n trê n mà n hì nh câ u Chao cac ban void main() { printf(Chao cac ban\n); } Một và i nhậ n xét quan trọng : - Chương trì nh C bao giờ cũng có một hay nhiề u hà m, trong đó có một hà m chí nh bắ t buộc phả i có là hà m main(). Đâ y chí nh là hà m đ ược thực hiệ n đầ u tiê n trong chương trì nh. - Cặ p dấ u { } để xá c định một khối lệ nh. - Hà m printf( Chao cac ban \n) là hà m chuẩ n của C dùng để xuấ t câ u thông bá o Chao cac ban ra mà n hì nh. tự \n là tự đặ c biệ t dùng để xuống dòng. - Dấ u ; để chấ m dứt một lệ nh. - Chương trì nh C có phâ n biệ t chữ thường với chữ hoa. Đa số cá c từ khoá của C đ ược viế t bằ ng chữ thường, còn một số í t đ ược viế t bằ ng chữ hoa mà ta phả i tuâ n thủ chặ t chẽ , nế u không thì chương trì nh dịch sẽ không hiể u. * Một vài ví dụ Ví dụ 1: In bả ng lũy thừa 2 của cá c số nguyê n từ 10 đế n 50 /* Chương trì nh in bì nh phương cá c số từ 10 đế n 50*/ #include <stdio.h> void main() {int n; /*Khai bá o biế n n kiể u nguyê n */ n=10; /*Gá n n=10 */ while (n<=50) /*Lặ p từ 10 đế n 50 bằ ng while */ { printf(%3d \t %5d\n,n,n*n); /*in dạ ng 5d là dà nh 5 vị trí để in n và n2 */ n++; /* Tă ng n lê n 1 */ } /*Hế t while*/ } /*Hế t main*/ Kỹ thuật lập trì nh 9 Ví dụ 2 : Tương tự như ví dụ 1 nhưng viế t cá ch khá c : #include <stdio.h> #define max 50 /*Tiề n xử lý, định nghĩ a max =50*/ void main() { int n; /*Khai bá o biế n n kiể u nguyê n*/ for (n=10; n<=max; n++) /*Lặ p từ 10 đế n 50 bằ ng for*/ printf(%3d \t %5d\n,n,n*n); /*in n và n2 dạ ng 5d là nă m chữ số*/ } /*Hế t main*/ Ví dụ 3 : Chương trì nh in lũy thừa 2, 3, 4, 5; có dùng hà m để tí nh lũy thừa : #include <stdio.h> #define max 50 /*Tiề n xử lý, định nghĩ a max =50*/ float luythua(int n, int m) /*Hà m luythua với 2 thông số*/ { float s=1; /*Khai bá o và khởi tạ o biế n s*/ for ( ;m>0;m--) /*Lặ p giả m dầ n từ m tới 1*/ s=s*n; return s; /*Trả kế t quả về */ } void main() { int n,n2,n3,n4,n5; /*Khai bá o biế n kiể u nguyê n*/ for (n=10;n<=50;n++) /*Lặ p từ 10 đế n 50 bằ ng for*/ { n2= luythua(n,2); /*Gọi hà m luythua*/ n3= luythua(n,3); n4= luythua(n,4); n5= luythua(n,5); printf(%3d \t %5.2f \t %5.2f\t %5.2f\t %5.2f\t %5.2f\n, n,n2,n3,n4,n5); /*in n và nm dạ ng 5 chữ số với 2 số lẻ */ } } /*Hế t main*/ * Hàm xuất chuẩn printf() Cú pháp : printf(chuỗi-địnhdạ ng,thamso1,thamso2, .) ý nghĩ a : Hà m printf() sẽ xem xét chuỗi-địnhdạ ng, lấ y giá trị cá c tham số (nế u cầ n) để đặ t và o theo yê u cầ u của chuỗi-địnhdạ ng và gởi ra thiế t bị chuẩ n. Chuỗi-địnhdạ ng là một chuỗi tự, trong đó có những tự xuấ t ra nguyê n vẹ n hoặ c xuấ t ở dạ ng đặ c biệ t, và có thể có những chuỗi điề u khiển cầ n lấ y giá trị của cá c tham số để thay và o đó khi in ra. Kỹ thuật lập trì nh 10 - Những tự đặc biệ t : tự Tác dụng Mã ASCII \n Xuống hà ng mới 10 \t Tab 9 \b Xóa tự bê n trá i 8 \r Con trỏ trở về đầ u hà ng 13 \f Sang trang 12 \a Phá t tiế ng còi 7 \\ Xuấ t dấ u chéo ngược 92 \ Xuấ t dấ u nhá y đơn 39 \ Xuấ t dấ u nhá y kép 34 \xdd Xuấ t tự có m ASCII dạ ng Hex là dd \ddd Xuấ t tự có m ASCII dạ ng Dec là ddd \0 tự NULL 0 - Chuỗi định dạng : % [ flag][width][.prec][FNhl] type Type : định kiể u của tham số theo sau chuỗi-địnhdạ ng để lấ y giá trị ra Type ý nghĩ a d,i Số nguyê n cơ số 10 u Số nguyê n cơ số 10 không dấ u o Số nguyê n cơ số 8 x Số nguyê n cơ số 16, chữ thường(a,b, .,f) X Số nguyê n cơ số 16, chữ in (A,B, .,F) f Số thực dạ ng [-]dddd.ddd . e Số thực dạ ng [-]d.ddd e[+/-]ddd E Số thực dạ ng [-]d.ddd E[+/-]ddd g,G Số thực dạ ng e(E) hay f tùy theo độ chí nh xá c c tự s Chuỗi tự tậ n cùng bằ ng \0 % Dấ u % cầ n in [...]...11 Kỹ thuậ t lậ p trì nh Flag : Dạ ng điề u chỉ nh Flag ý nghĩ a nế u không có + # in dữ liệ u ra với canh phả i in dữ liệ u ra với canh trá i Luôn bắ t đầ u số bằ ng + hay in ra tùy theo type, nế u: 0 :... chữ bổ sung : F N h l Ví dụ 1: char Tham số là con trỏ xa XXXX:YYYY Tham số là con trỏ gầ n YYYY Tham số là short int Tham số là long int (d,i,o,u,x,X) double (e,E,f,g,G) c=A; char s[]=Blue moon! ; 12 Kỹ thuậ t lậ p trì nh Dạng %c %2c %-3c %d %s %3s %.6s %-11.8s Ví dụ 2: Thông số tương ứng Xuất c c c c s s s s A A A 65 Blue moon! Blue moon! Blue m Blue moo int độ rộng 1 độ rộng 2, canh phả i độ rộng... Canh trá i, in ra dưới dạ ng khoa học Ví dụ 3: Viế t chương trì nh in hì nh chữ nhậ t kép bằ ng cá c tự ASCII C9 CD BB C8 CD BC void main() { printf(\n\xC9\xCD\xBB); printf(\n\xC8\xCD\xBC\n); } 13 Kỹ thuậ t lậ p trì nh I.2 Kiể u dữ liệ u cơ bản I.2.1 định nghĩ a: Kiể u dữ liệ u cơ bả n là kiể u dữ liệ u có giá trị đơn, không phâ n chia được nữa như số, tự I.2.2 Phân loại: Tê n kiể u ý nghĩ a... nhấ t: int = short int = short = signed int = signed short int long int = long signed long int = long unsigned int = unsigned = unsigned short = unsigned short int unsigned long int = unsigned long 14 Kỹ thuậ t lậ p trì nh I.3 Biế n I.3.1 Tê n biế n : Tê n biế n là một chuỗi tự bắ t đầ u bằ ng tự chữ, tự kế tiế p là tự chữ (dấ u gạ ch dưới _ được xem là tự chữ) hoặ c số và không được... ng,điạ chỉ thamsố1, điạ chỉ thamsố2, ) - Chuỗi-địnhdạ ng của scanf() gồm có ba loạ i tự : + Chuỗi điề u khiể n + tự trắ ng + tự khá c trắ ng ! Chuỗi điề u khiể n có dạ ng : %[width][h/l] type 15 Kỹ thuậ t lậ p trì nh Với type: xá c định kiể u của biế n địa chỉ tham số sẽ nhậ n giá trị nhậ p và o Type ý nghĩ a d,i Số nguyê n cơ số 10 (int) o Số nguyê n cơ số 8 (int) u Số nguyê n cơ số 10 không... ng trong chuỗi nhậ p và o tự trắ ng là tự khoả ng trắ ng ( ), tab (\t), xuống hà ng (\n) Một tự trắ ng trong chuỗi-địnhdạ ng sẽ được hiể u là chờ nhậ p đế n tự khá c trắ ng tiế p theo 16 Kỹ thuậ t lậ p trì nh Ví dụ 4: scanf(%d ,&num); Hà m scanf() cho ta nhậ p một tự khá c trắ ng nữa thì mới thoá t ra tự đó sẽ nằ m trong vùng đệ m và sẽ được lấ y bởi hà m scanf() hoặ c gets() tiế... và o 1 chữ cá i Nế u chữ cá i nhậ p và o là 'd' thì chương trì nh sẽ kế t thúc, ngược lạ i chương trì nh sẽ bá o lỗi và bắ t nhậ p lạ i #include #include void main() { char ch; 17 Kỹ thuậ t lậ p trì nh printf("\nBan nhap vao 1 chu cai tu a den e: "); while ((ch=getche()) != 'd') { printf("\nXin loi, %c la sai roi",ch); printf("\n Thu lai lan nua \n"); } } Lưu ý: Hà m getch() còn... (extended) printf("The character is extended\n"); else printf("The character isn't extended\n"); } Phí m F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 Home " # $ Mã scancode 59 60 61 62 63 64 65 66 67 68 71 72 80 75 18 Kỹ thuậ t lậ p trì nh 77 % PgUp 73 PgDn 81 End 79 Ins 82 Del 83 Bả ng m scancode của cá c phí m mở rộng c Hàm kbhit(): Hà m int kbhit() sẽ kiể m tra xem có phí m nà o được gõ và o hay không Nế u có, hà... hơn long thì được lưu trữ theo kiể u double - Cá c hằ ng số nguyê n dương lớn hơn long sẽ được lưu trữ theo kiể u double - Một hằ ng số được lưu trữ theo dạ ng long nế u theo số đó có tự l (L), 19 Kỹ thuậ t lậ p trì nh dạ ng unsigned nế u sau đó có chữ u (U), dạ ng thậ p lục phâ n nế u trước số đó có 0x và dạ ng bá t phâ n nế u trước số đó có 0 50000; 10 L; Long unsigned 5U, 100u hệ 16 = 1610... cá c toá n hạ ng đề u là cá c hằ ng Khi đó chương trì nh dịch sẽ tí nh toá n biể u thức trước, và kế t quả được lưu trữ thẳ ng bằ ng một hằ ng số tương đương Ví dụ : 8*20-13 kế t quả lưu trữ là 173 20 Kỹ thuậ t lậ p trì nh a -A là 97-65 = 32 1 . Kỹ thuật lập trì nh 1 CHƯƠNG i ĐạI CƯƠNG Về LậP TRìNH I. Khái niệm thuật toán: I.1. Khái niệ m: Thuậ t toá. ®ã. Chương trìnhnguồnChương trìnhthông dòchKết quảDữ liệu H× nh I.2. Ch­¬ng tr× nh thùc thi theo c¬ chÕ dÞch cđa tr× nh th«ng dÞch Kỹ thuật lập trì nh

Ngày đăng: 20/10/2012, 09:57

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan