Bài giảng Nguyên lý ngôn ngữ lập trình - Nguyễn Văn Hòa

pdf 44 trang phuongnguyen 1210
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nguyên lý ngôn ngữ lập trình - Nguyễn Văn Hòa", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_nguyen_ly_ngon_ngu_lap_trinh_nguyen_van_hoa.pdf

Nội dung text: Bài giảng Nguyên lý ngôn ngữ lập trình - Nguyễn Văn Hòa

  1. NGUYÊN LÝ NGƠN NG LP TRÌNH Gi ng viên: Nguy n Văn Hịa Khoa KT-CN-MT – ðH An Giang 1
  2. Thơng tin c n thi t  ða ch email : nvhoa@agu.edu.vn  Ch liên lc qua đ in tho i nu th t cn thi t  Tài li u ca mơn hc:  Qui đnh trong lp: 2
  3. Mc tiêu ca mơn h c  Nm đưc các nguyên lý (NL) c a ngơn ng l p trình (NNLT)  Tìm hi u s phát tri n ca NNLT  Nm đưc các ki u d li u và các cu trúc đ iu khi n  Hi u đưc các ph ươ ng th c (paradigm) lp trình (LT) nh ư hưng đi tưng, hàm, logic và song song 3
  4. Yêu cu mơn h c  Lp trình bng Pascal, C và C++, Java, C#  Sinh viên ph i d l p đy đ  Tham gia nh ng ln ki m tra ti lp 4
  5. ðánh giá mơn h c  D lp: 10%  Ki m tra : 40%  Thi ht mơn : 50%  Question & discussion!!! 5
  6. Ni dung mơn h c  Gi i thi u ngơn ng l p trình  Các ki u d li u  Các cu trúc đ iu khi n  Ch ươ ng trình con  Ngơn ng l p trình hưng đi tưng  Ngơn ng l p trình hàm  Ngơn ng l p trình logic  Ngơn ng l p trình song song 6
  7. Tài li u tham kh o  Giáo trình Ngơn ng lp trình , Nguy n Văn Linh, 2003, ðHCT  Ngơn ng l p trình: các nguyên lý và mơ hình , Cao Hồng Tr , ðH QG HCM, 2004  Concept of Programming Languages , Robert W. Sebesta, Sixth Edition, 2004 7
  8. Ch ươ ng 1: Gi i thi u 8
  9. Ni dung  Gi i thi u  Lch s phát tri n ca máy tính  Lch s phát tri n ca NNLT  Vai trị ca NNLT  Li ích ca vi c hc NNLT  Các tiêu chu n đánh giá NNLT 9
  10. Gi i thi u  Lp trình máy tính  Lp trình máy tính là m t cách ngh ĩ v các v n đ  Biên d ch thành nh ng ch th đ máy tính th c thi  Sn ph m là các ch ươ ng trình  Ch ươ ng trình  Mt t p h p riêng bi t các ho t đ ng cĩ th t cho m t máy tính th c hi n  Ch ươ ng trình bao g m m t chu i các ch th l n l ưt mà máy tính ph i tuân theo 10
  11. Gi i thi u (tt)  Lp trình  Thao tác nh m ki n t o nên các ch ươ ng trình máy tính thơng qua các ngơn ng l p trình  Cịn g i là quá trình mã hố thơng tin t nhiên thành ngơn ng máy  Quá trình này cịn đưc g i là là "vi t mã“  Mã ngu n ch ươ ng trình  Nh ng ch th gĩp ph n t o nên ch ươ ng trình đưc g i là mã ngu n c a ch ươ ng trình  Mi NNLT c ũng chính là m t ch ươ ng trình, đưc dùng đ t o nên các ch ươ ng trình khác 11
  12. Ngơn ng l p trình  NNLT là ngơn ng dùng đ vi t các ch ươ ng trình cho máy tính  NNLT cĩ t v ng, cú pháp và ng ngh ĩa (trình biên dch)  Ba lo i NNLT:  Ngơn ng máy (nh phân)  Hp ng (NN c p th p)  Ngơn ng c p cao (Pascal, C, C++, Java, ) 12
  13. ðc tính ca ngơn ng máy  Mã lnh nh phân đ th c thi tác v  Dịng đ iu khi n (control flow) d a trên labels và r nhánh cĩ điu ki n (conditional branches)  Tưng minh v đa ch (location), e.g. registers, cho các bi n và kt qu trung gian  Tưng minh v qu n lý b nh (e.g stack) 13
  14. ðc tính ca NNLT  Di n đt m c ph c tp (tốn hc, logic)  Cĩ cu trúc đ iu khi n (Loops, Selection, Cases)  S k t hp ki u c ơ b n (array, record, etc)  Khai báo và ki m tra ki u  H tr nhi u cách lưu tr (global/local/heap)  Procedure/function  Ki u d li u trù tưng, module, object, etc 14
  15. Lch s phát tri n ca máy tính Máy tính ca Babbage •Năm 1837 •ðc đ im Store (memory) Mill (CPU) Looping Conditional => Khơng thành cơng 15
  16. Lch s phát tri n ca máy tính (tt)  ENIAC: plug and play circa 1945 16
  17. Lch s phát tri n ca NNLT  S phát tri n ca NNLT g ng li n vi khoa hc máy tính  1920’s: computer ~ «person»  1936: Church’s Lambda Calculus (= PL!)  1937: Shannon’s digital circuit design  1940’s: first digital computers  1950’s: FORTRAN (= PL!)  1958: LISP (LISt Processing language)  1960’s: Unix  1972: C Programming Language  1981: TCP/IP  1985: Microsoft Windows 17
  18. Bn bi t đưc nh ng NNLT nào?  FORTRAN, COBOL, RPG, (Visual) BASIC, ALGOL-60, ALGOL-68, PL/I,  C, C++, Java, C#, Pascal , Modula, Oberon, Lisp, Scheme, ML, Haskell,  Ada, Prolog, Goedel, Curry, Snobol, ICON,  . . . 18
  19. Ti sao cĩ rt nhi u NNLT  S đa d ng v đc đ im  e.g. goto vs if-then, swich-case, while-do  Qu n lý b nh : programmer (C,C++) vs. language (Java through garbage collection)  S ưa thích ca lp trình viên  procedure vs. function  S phát tri n ca ph n cng  Mc tiêu đc bi t ca tng NNLT 20
  20. Lãnh vc ng dng c a NNLT  Nghiên cu khoa hc: Fortran, C, Matlab  Lp trình h th ng: C, C++  Tính tốn trong kinh doanh: Java, C#  Trí tu nhân to: LISP  X lý văn b n (Perl, Python)  Mc đích đc bi t cho NNLT (make, sh-shell) 21
  21. Mơ hình ca NNLT  Lp trình m nh l nh (Imperative)  Fortran, C, Pascal, etc  Hàm  Lisp, scheme  Hưng đi tưng  C++, Java, C#, etc  Logic  Prolog  Nhu cu đc bi t  Tex, Shell, make, HTML 22
  22. Vai trị ca NNLT  Các giai đ on đ xây dng 1 ph n mm  Xác đnh mc đích  Phân tích  Thi t k  Cài đt (coding)  Tích hp và ki m th  Vn hành và khai thác 23
  23. Li ích ca vi c nghiên cu NNLT  Cho phép la ch n mt NNLT phù hp vi d án th c t  S d ng mt cách cĩ hi u qu các cơng c c a ngơn ng l p trình  Hi u sâu s c h ơn ý ngh ĩa c a các cài đt bên trong NNLT  D dàng đ h c mt ngơn ng lp trình m i  Tăng v n kinh nghi m cho l p trình viên  Thi t k m t NNLT mi (ngơn ng đơn gi n) 24
  24. Các tiêu chí đánh giá NNLT  D đc: là s d dàng đc hi u m t ch ươ ng trình  S gi n d: ngơn ng cĩ ít thành ph n c ơ s  VD count = count + 1, count += 1, count++, ++count  Cu trúc đ iu khi n: sáng s a, d d c, d hi u  Ki u và c u trúc d li u: gĩp ph n đánh giá m t ngơn ng cĩ d đ c hay khơng. VD TRUE , FALSE  Cú pháp: nh h ưng đ n tính d đ c hi u, VD đ dài ti đ a c a danh bi u, t khĩa 25
  25. Các tiêu chí đánh giá NNLT  Ví d : So sánh hai đon ch ươ ng trình in ra màn hình 10 s t nhiên đu tiên   Vi ết b ằng BASIC Vi t b ng C 10 i=1; for (i =1; i 10 THEN GOTO 60; 30 PRINT i ; 40 i=i+1; 50 GOTO 20; 60 PRINT “In xong”; 26
  26. Các tiêu chí đánh giá NNLT (tt)  D vi t: kh n ăng s d ng ngơn ng đ vi t m t ch ươ ng trình cho m t v n đ nào đĩ m t cách d dàng hay khơng  Tính di n đ t cao: cung c p cho ng ưi l p trình nh ng cơng c đ cĩ th ngh ĩ sao thì vi t ch ươ ng trình nh ư vy  S gi n d : n u m t ngơn ng cĩ quá nhi u c u trúc thì mt s ng ưi l p trình s khơng quen s d ng h t t t c chúng  H tr tr u t ưng: kh n ăng đ nh ngh ĩa và s d ng các cu trúc ho c các phép tốn ph c t p cho phép b qua các chi ti t 27
  27. Các tiêu chí đánh giá NNLT (tt)  ð tin cy: kh n ăng c a ngơn ng h tr ng ưi lp trình t o ra các ch ươ ng trình đúng đn  Ki m tra ki u  X lý ngo i l: phát hi n và sa ch a li và ti p t c th c hi n mà khơng ph i d ng ch ươ ng trình  S l m tên (Aliasing): Cĩ hai hay nhi u tên cùng liên kt t i m t ơ nh . S l m tên cĩ th làm gi m đ tin cy 28
  28. Các tiêu chí đánh giá NNLT (tt)  Chi phí (time & money): mt tiêu chu n đ đánh giá ngơn ng , đưc hi u là c ti n b c và th i gian  Chi phí đào t o ch ươ ng trình viên: ph thu c vào s gi n d c a ngơn ng  Chi chí l p trình: ph thu c vào tính d vi t c a ngơn ng  Chi phí th c hi n ch ươ ng trình  Chi phí cài đt ch ươ ng trình  Chi phí b o trì ch ươ ng trình 29
  29. Phân lo i ngơn ng l p trình  Theo ti n trình l ch s phát tri n  Ngơn ng máy, H p ng , Ngơn ng c p cao, Ngơn ng cp r t cao  Theo m c tiêu c a ngơn ng  ða d ng, nhúng, l p trình web,  Theo cách th c  Mã máy, thơng d ch, lai  Theo ph ươ ng pháp  Lp trình tuy n tính, l p trình cĩ c u trúc, l p trình hưng đ i t ưng, l p trình tr c quan, l p trình logic, 30
  30. Phân lo i ngơn ng l p trình (tt)  Phân lo i NNLT theo ti n trình l ch s phát tri n  Ngơn ng máy (machine language)  Hp ng (assembly language)  Ngơn ng c p cao (HLL - High level language)  Ngơn ng c p r t cao (VHLL – Very High Level Language): HDL –High Description Language 31
  31. Phân lo i ngơn ng l p trình (tt)  Phân lo i theo m c tiêu c a ngơn ng  ða d ng: nh ư C, perl, python, C++, Java,  Nhúng: Nh ư Ch, Ada,  Lp trình web: PHP, Java Script, Cold Fusion,  Riêng: Như AutoLisp, Mathematica, 32
  32. Phân lo i ngơn ng l p trình (tt)  Phân lo i theo cách th c  Mã máy: Th ưng g p nh ư C, C++,  Thơng d ch: Gi nguyên d ưi d ng file v ăn b n, đưc thơng d ch sang mã máy khi ch y nh ư Perl, PHP,  Lai: Ví d Java biên d ch ra Java Byte code, khi ch y mi thơng d ch sang mã máy, nh ư v y t o ra kh n ăng "vi t m t n ơi ch y m i n ơi" c a Java. M t ví d khác là .NET 33
  33. Phân lo i ngơn ng l p trình (tt)  Phân lo i theo ph ươ ng pháp  Hưng đ i t ưng:  Xem m i th là đi t ưng, quá trình gi i quy t cơng vi c là quá trình các đi t ưng t ươ ng tác v i nhau  Ví d : C++, Java, Ada,  Lp trình logic:  Cho ch ươ ng trình bi t s làm cái gì ch khơng ph i làm nh ư th nào  Tồn b các câu l nh ch đơn gi n là đúng ho c sai  Ví d : ngơn ng Prolog 34
  34. Phân lo i ngơn ng l p trình (tt)  Phân lo i theo ph ươ ng pháp (tt)  Lp trình hàm:  Tồn b các l nh và m i th đ u đưc đưa v hàm.  Cũng là ngơn ng khai báo (declarative)  Ví d : ngơn ng LISP  Lp trình tr c quan:  H tr t o mã ngu n m t cách tr c quan.  Ví d : ngơn ng Visual Basic  Ngơn ng đánh d u:  Ví d : ngơn ng HTML 35
  35. Mt s NNLT thơng d ng  FORTRAN (FORmula TRANslation)  ðưc thi t k b i John Backus n ăm 1957  Ngơn ng c p cao đ u tiên  Thích h p cho các ng d ng trong khoa h c và k thu t  Cu trúc ng pháp khá đơn gi n do vi c nh p ch ươ ng trình ch y u thơng qua các phi u b m l 36
  36. Mt s NNLT thơng d ng (tt)  LISP (LISt Processing)  ðưc thi t k b i John McCarthy n ăm 1959  X lý trên các ký hi u  Ngơn ng lp trình hàm vi vi c s d ng nhi u các phép g i đ qui  Mt trong nh ng ngơn ng c ơ b n cho ngành Trí tu Nhân t o (Artificial Intelligence) 37
  37. Mt s NNLT thơng d ng (tt)  COBOL (COmmon Business Oriented Language)  ðưc thi t k b i Grace Hopper & CODASYL n ăm 1959  Ngơn ng đ u tiên dùng cho các ng d ng th ươ ng m i  Cu trúc ng pháp gi ng ti ng Anh giúp COBOL d đc hi u nh ưng khá dài dịng 38
  38. Mt s NNLT thơng d ng (tt)  ALGOL 60 (ALGOrithmic Language)  Peter Naur & European Committee, 1960  Ngơn ng đ u tiên s d ng cu trúc kh i  S d ng ch y u cho tốn và khoa h c  Là ngơn ng tính tốn khoa h c chu n cho đ n đ u nh ng n ăm 1970 39
  39. Mt s NNLT thơng d ng (tt)  Pascal  Nicholas Wirth, 1970  Ngơn ng chu n cho lp trình c u trúc  Là ngơn ng chính cho ngành khoa h c máy tính trong th p niên 1970  Dùng ngơn ng sát v i ngơn ng t nhiên nên nĩ thân thi n v i ng ưi l p trình  Gn, d nh , kh n ăng truy c p c p th p, và các c u trúc d li u đa d ng 40
  40. Mt s NNLT thơng d ng (tt)  C  Dennis Ritchie, 1972  ðn nay, ANSI ban hành chu n v C  Là ngơn ng c p trung vì nĩ cho phép thao tác trên các bit, byte, và đa ch  S d ng cho các ng d ng nh ư h điu hành, phát tri n ngơn ng máy tính khác hay x lý v ăn b n  Là ngơn ng c p t ươ ng đi th p đ l p trình hi u qu nh ưng cĩ các ưu đim c a ngơn ng c p cao  Do v y, C t ra thích h p v i l p trình h th ng 41
  41. Mt s NNLT thơng d ng (tt)  PROLOG (PROgramming in LOGic)  Alain Colmerauer & Philippe Roussel, 1972  Ngơn ng mơ t (declarative language) đ đ c t các vn đ d ng  Lp trình lu n lý (logic programming): m t ch ươ ng trình bao g m các s ki n và qui lu t  ðưc xem nh ư n n t ng c a vi c phát tri n ph n m m cho d án máy tính th h th n ăm c a Nh t 42
  42. Mt s NNLT thơng d ng (tt)  C++  Bjarne Stroustrup, 1986  M r ng ngơn ng C v i l p trình h ưng đ i t ưng (object-oriented) nhưng v n duy trì l p trình c u trúc  Nĩ mang đy đ các đ c tính c a C  Là ngơn ng l p trình h ưng đ i t ưng  Nĩ cĩ tính k th a, tính đĩng gĩi và tính đa hình  Da vào tính k th a và cĩ nhi u th ư vi n h tr m nh đưc phát tri n nên đưc s d ng r ng rãi trong th p niên 1990 43
  43. Mt s NNLT thơng d ng (tt)  Java  Sun Microsystems, 1995, cú pháp gi ng C++  K th a nh ưng tinh gi n h ơn các tính n ăng c a C++  JAVA là ngơn ng h ưng đ i t ưng hồn tồn  Cĩ nhi m v vi t ph n m m h th ng đ nhúng vào các sn ph m đin t  ðơ n gi n: JAVA đã đưc l ưc b các tính n ăng khĩ nh t c a C++ nh ư con tr , khơng h tr ch ng tốn t  Cho phép xây d ng ng d ng m ng, Web v i đ an tồn cao  ðc l p v i plateform 44