Kỹ thuật lập trình

134 768 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

Kỹ thuật lập trình

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 . 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: 16/08/2012, 14:31

Từ khóa liên quan

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

Tài liệu liên quan