1. Trang chủ
  2. » Công Nghệ Thông Tin

Kỹ thuật lập trình pdf

134 755 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 134
Dung lượng 715,41 KB

Nội dung

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 ký hiệu trên l!u đồ : Tê n khối Ký 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 = x 2 + y 2 Begin Nhaọp (x,y) A = x 2 + y 2 Xuaỏt (A) End Ví dụ 2 : Tí nh y x CByAx S 2 2 + ++ = ; biế t A,B,C,x,y Begin Nhaọp (A, B, C, x,y) S = (Ax + By + C) / SQRT (x*x + y*y) Xuaỏt S End 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 Begin Nhaọp (a, b, c) Max = a Xuaỏt (Max) End a > b Max < c Max = c S S Max = 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. Begin Nhaọp (a, b) Xuaỏt (PTVẹ) End a = 0 S S Xuaỏ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 Ax 2 +Bx+C =0 víi c¸ c nghiƯ m thùc. Begin Nhập (a, b, c) Xuất (‘X 1 = ’,(-b + SQRT(Delta)) / (2*a)) Xuất (‘X 2 = ’,(-b - SQRT(Delta)) / (2*a)) End a = 0 Đ Đ PTB1 (b, c) Delta < 0 Xuất (‘PTVN’) S S Delta = b*b - 4*a*c Đ Delta = 0 Xuấ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 đầu Lệnh S; Tăng i i <= n S Đ víi n lµ gi¸ trÞ kÕ t thóc. Kỹ thuật lập trì nh 5 Ví dụ 4: Tí nhS= i i n x = 1 , với cá c x i do ta nhậ p và o. Begin Nhaọp (n) i = 1 S = 0 Nhaọp (x i ) End i = i+1 S = S+x i i <= n Xuaỏ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ình nguồn Trình biên dòch Chương trình đích Máy tính thực hiện Kế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ình nguồn Chương trình thông dòch Kế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 ký 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. Ký tự \n là ký 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à n 2 */ 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à n 2 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à n m 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 ký tự, trong đó có những ký 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 ký tự đặc biệ t : Ký tự Tác dụng Mã ASCII \n Xuống hà ng mới 10 \t Tab 9 \b Xóa ký 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 ký tự có m ASCII dạ ng Hex là dd \ddd Xuấ t ký tự có m ASCII dạ ng Dec là ddd \0 Ký tự NULL 0 - Chuỗi định dạng : % [ flag][width][.prec][F N h l] 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 Ký tự s Chuỗi ký tự tậ n cùng bằ ng \0 % Dấ u % cầ n in

Ngày đăng: 10/03/2014, 02:20

TỪ KHÓA LIÊN QUAN