Tìm hiểu lập trình hàm với ngôn ngữ F và xây dựng ứng dụng minh họa

35 1.2K 2
Tìm hiểu lập trình hàm với ngôn ngữ F và xây dựng ứng dụng minh họa

Đ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

LỜI CẢM ƠN Sau một thời gian tìm hiểu và thực hiện đến nay đề tài “Tìm hiểu lập trình hàm với ngôn ngữ F và xây dựng ứng dụng minh họa” đã hoàn thành. Với đề tài, em mong muốn hiểu rõ về ngôn ngữ F và xây dựng được ứng dụng phục vụ cho các lĩnh vực của đời sống. Em xin chân thành cảm ơn thầy cô trong Khoa CNTT đã tận tình giảng dạy, chỉ bảo, trang bị cho em những kiến thức cần thiết nhất trong suốt quá trình học tập và nghiên cứu tại khoa, đã tạo mọi điều kiện giúp em thực hiện đề tài tốt nghiệp này. Em xin cảm ơn cô Nguyễn Thị Thanh Huệ và thầy Đào Anh Hiển đã tận tình hướng dẫn, chỉ bảo em trong suốt thời gian thực hiện đề tài. Trong quá trình làm việc với các thầy, cô em đã học hỏi được nhiều kiến thức bổ ích và kinh nghiệm quý báu làm nền tảng cho quá trình học tập, làm việc và nghiên cứu sau này. Em đã nỗ lực cố gắng với quyết tâm cao để thực hiện đề tài này, nhưng cũng không tránh khỏi những thiếu sót, kính mong quý thầy cô tận tình chỉ bảo. Một lần nữa, em xin chân thành cảm ơn PHẦN I: MỞ ĐẦU 1. Lý do chọn đề tài Công nghệ thông tin đóng vai trò quan trọng trong sự phát triển của xã hội thời đại ngày nay. Công nghệ thông tin đã trở thành nhân tố quan trọng, là cầu nối trao đổi giữa các thành phần của xã hội toàn cầu, của toàn cầu, của mọi vấn đề. Việc nhanh chóng đưa ứng dụng công nghệ thông tin và quá trình tự động hóa trong sản xuất kinh doanh là vấn đề đang, đã và luôn được quan tâm bởi lẽ công nghệ thông tin có vai trò rất lớn trong các hoạt động kinh tế, sản xuất kinh doanh, bán hàng, xúc tiến thương mại, quản lý trị trong doanh nghiệp. Cùng với sự phát triển mạnh mẽ của nền kinh tế, một trong những lĩnh vực đang phát triển nhanh nhất hiện nay là Công nghệ thông tin. Trong hệ thống nghành nghề được đào tạo ở các bậc Đại học, Cao đẳng Công nghệ thông tin luôn được xem là sự lựa chọn thông minh của các học sinh phổ thông và các bậc phụ huynh hướng nghiệp cho con em mình. Trước sự phát triển vượt bậc của công nghệ thông tin như vậy em quyết định chọn đề tài: “Tìm hiểu lập trình hàm với ngôn ngữ F và xây dựng ứng dụng minh họa” làm đồ án 4 và phát triển làm đồ án tốt nghiệp. 2. Ưu, khuyết điểm a. Ưu điểm Đề tài có tính tự nghiên cứu cao Xuất phát từ nhu cầu thực tế cần mở rộng tìm hiểu ngôn ngữ mới, phương pháp mới để giải quyết các vấn đề phức tạp. b. Khuyết điểm Vì là ngôn ngữ mới ít được mọi người biết đến nên khó trong việc tiếp cận. 3. Hướng tiếp cận của đề tài Tìm hiểu trực tiếp qua các tài liệu trên internet.

MỤC LỤC LỜI CẢM ƠN “Tìm hiểu lập trình hàm với ngôn ngữ F# xây dựng ứng dụng minh họa”   !"#$%&'()*+(,-,, ./012 3&'456" 789::;4(< =>4 >?#@+6A 2B. C ;-D+<@<C@E--  3&45" Nguyễn Thị Thanh Huệ  6Đào Anh Hiển; )(F=>4 2: B.  /.6"CG)*@+>HI@ BJ>./4B. C;-/D+2 1 3K/LB')M @" .@G#2N@IBJ6";=>4 O/6#&'45P PHẦN I: MỞ ĐẦU 1. Lý do chọn đề tài 8""N QB C 2-. 1& <8"" R'B C/6  H#.-61&6161CA N)+(,""B.  N 24&A@(/A/")*B'>R/S ""N Q A/ .<@24&A @(>.&E)5<B4/J ? (- 8T2-. <S1@ #/0 -. A/8"":  )*<R.>;U<C8V8"" /")*&/2/C"1.C2-H".>; -,)- 2 : )2-. )*>;1"");B ?CW“Tìm hiểu lập trình hàm với ngôn ngữ F# xây dựng ứng dụng minh họa” /X.Y-. /X.- 2. Ưu, khuyết điểm a. Ưu điểm - UNID+ - ZA-.[66R "#-)5- 4B.A-+<- b. Khuyết điểm /"#I)*C)>D@N -; 3. Hướng tiếp cận của đề tài - : -B./ D  PHẦN II. NỘI DUNG CHƯƠNG I. TỔNG QUAN VỀ NGÔN NGỮ Fsharp (F#) 1.1. F# là gì? \;- /.-;4BAI .N)/;- @"I*-/;- ]. "#/;- [>))*).@I<1"/;-  A E))*:+/#/<#/!1"/;-  )I*-D#^6N(_( )*>A+/<)5  $%/"#/;-  D493:$%*-A4`"W /;- /;- A E/;- ))*$%><N C>A+"4B.A.>.2B4 A^><MN@*-4`-./;-  D  )5 @.<1K"$%)*I*- 93:$ a @D2b(,$%M54)8% 3 \;- +][/' 4+.D+ C2)/;- M)2542+<> 1N\;- 2b(,+]>THW1" #+]<2c2A E1"# +])*I*-"#)8%d2/e2c >'NXD".+(,1@f; /;- +]N#>g+<S+G g/;-  +]< #.@^]2A  #/0+(,B C) ;-(#/"I -'I@D@0; C @ -6@C"  2Ch6'5/;- +]/-612 ]1"/;- @>.^>/ . A(#/ X>N/0/;- 22 $%@.."#/;- +]@.RHN>4 /;- >L>/;- ))*9NMA-2 /D@#"#>D(?"#@*-.^# -./;- ^ )1"#2A2< S1"#>D(?9#)@$%@[ -.@-i-><N#@I<AB4 A1."@*-E @F^ C'I @f;/;- +] $%93:A-.-;/;-  D. IN2S-,'<DIE/1@f; /;- +]2SE->< R/;- D5>A@ "#><2b(,7"N5C/;-  +]$%A-)A (,. +]/;-  D493: 1.2. Lịch sử phát triển $%/>1O\j"#/;- O/k( D 41"#/;- l/ e6)*-. >RmRO 2no2 )N- 4 ,)*-. <O 2nm/- m2 $%>L6&A[]pqqr-D>4AN/$%pq j-.stuqvupqsqk/-612/(pqsq $%>L6]pqqp@m#)@.<>-;D +1O 2nB?4>4 gwO\w-;) @"#( D/J (AANA/)* 493:m.)*L/@.h 2 . 93:8\odD>4I+6D )-. 1$%/ ]pqqr $%/A-6"#/!["#/;- l8/. NNN)*C/wl8/93:w$%@"X<@"N l8/D  1"#/;- O\N[] sxtY$%M E [y2@//^>I]"#D )*C/ 2B&- 222a @z/a2FN # @<S #.@1#"#Xi X #)2b(,1C\J(5>4.@B?-, -. $%// D a>(.1$% O^(TN#)5Xl/y2@//)/;-  $%/@.>: N$%-;.2/;./;-  ))*.@f;"#/@.>A4. "#+]I@.\;-  $%N&)/2 ))*52."#+]@./;- MN& )/2/<5 $%>.@f; 93:)<- j(/(k !j(-k  .&<j z/k N M D.@f;) I(FA<j&- 22Bk." ]j- 2k $%M* A.@193:)N6@4] )5."##8{{ 2/e2 w"# T R 8%wF@A"-.I9$% E [.X/&B85Ry<:69"9#8 j8\|n 2  }8\|kdD>4~)*>H2>R O 2n93:$ a @O  . " )/ /1 5 O 2n $%N;(,.).@f;)*-. >R O 2n    5 /   X  93:     5 #  /    X   XRO 8E>X ])B C.]&- I) A"#I*-2b(,\|9•1O 2n CHƯƠNG II. ĐẶC ĐIỂM CỦA NGÔN NGỮ F# 2.1. F# hỗ trợ lập trình hướng đối tượng $%-i- [)*N(/222>€2-i-54 N( 2.2. F# hỗ trợ lập trình hàm \-./;- ;- #)5 2S/ +@"-4/N2S/)•9 $%/"#2b (,@2/;0/.@(#/@"6-4@>. ! >R )/;- E2S)*2 >R >D(? B. >D (? I(,W/2j>k‚{> uu@"6)>@ 2.3. F# liên kết chặt chẽ với .NET $%/D@^S93:-i-></)*A4# 93:N$%>D(?)*A4#>4^^4 8\|n 2  j8\|kz/)*< < 6 )* DA4#" )N8\|UN0/$%@">? <>Rƒ(a2QN<)* D\&„ /OlZ l-emy5#$%I*-;93:$ a @e2 8/22\>  je8\k2b(,e8\ $%"@Q545  8%e93: 2.4. Môi trường tương tác s O" )@$%@.V)" )"# B'@"-4/" )"(?/>D(?+  $%| 2/$%A-b2H)5.)*I*-"  )2/2(8b2H-i-><;-$%(N2S>D(? /;-+U-i-><(_(&'(.- -( 2  @ (@><  U  R  b  2H  $%  |   ><  W  a  }…  l 2  ƒ(a  }…  $% | ^(TH*--IL8 /{„/{$ 7><()5 2S>D(?@@^-p(AA-~ jcck 2. I(,W 3. †$%| ><!  l-2ƒ(a2$ 2 \n‚a$ 2jk n2>/‡} cc Y r :/;-+ n   ˆ N!W n:&‡}‰//a /(Šcc t :$ 1><2S/;-+HD‰//a /(Š 7 2.5. Cú pháp đơn giản $%NE- N.-6@"-4>g.^-[@N .^-‹Œ>g.,(Q 2.6. Tính khái quát hóa tự động $%/"#N5@.B.N@*-1@. B.N/)5 545C5HB. 59NM]@4].2b(,8."#@"N5@. B.N>)/;- -4I. .) @@.B.A1.1C 8.@"-,@(#/1>)*$%@.B. N I(,W/2a-j&k‚j&k 2.7. Ngôn ngữ có ít từ khóa $%/"#NI[@Nm)'/(,.[@N1 $% :[ @N O"4 „>2  }= -)5+@")*-i- ^= N/ [)* „( b(, >(2B@>. I@>.@ 2 „2 mT @>./- mT .'-*-j2 - k „22  mT&. •/K e2 mT/D/-525 e  eL6@ 8/22 7>./- mn / :-)5+ [ )*mT-)5+ [ )*< -)5+4 m/  7>.(/ m b(, Q/^-^>L 8 > m 7EE-  >2 ma 2 82@A-5 K@ [ ma  b 3/n U@-'. 3/2 b(, E- @-'. 3( }: ?0@R @ >@E-61?0 D }7E E-  >2 3&-  7>.</ 3&  d<)5.1)*@>. / T@?-']22>/ $/2 h. ?2@>/ $/ / b(, E-  </ @>D )*)(TN &4 </@" $ b(, A EQ/^-n $ U)*2b(, .>+/>( $  b(,)[@Nn2b(,  >+ h/> / 7"j2-kA  93: |n 8'@n | b(, Q/^-n Ž)*(T  E-  >2 |  U)*2b(,&.?/*-52R^ ( | n b(,@>.. ( | / b(,= DN )*A @22>/ \• :I./• \ U)*2b(,/D@@^D . ?^+] O  e+ O > U)*2b(,@>.I^ -)5+ @)* O >/ mT@>.>0/N H)* 9 9 2-  b(,@>.@" D(T*-/J.>. @. 9a U)*(T@D@&.?C A E< )*mT >@-4N< A? 9 7"2/[@N)N )*(T . >2 9// 8= 2L^1 )*8M)*(T)2  l- mT< @"2b(,N 2V l b(,22. l  ( mT•-)5 +1/-5>4 [)* d   h< ;-1D d>/  U)*-i- ;-[>D D o yB o  : 4. ?@B4   8= /-)5+N)*C @"6< )*,  7>.A E : b(, >+@ : b(, Q/^- :  h. ?1@e/ :  b(, >+ z// &b/J</ :- U)*2b(,@>./-  ( 2  ‘2 b(, B4/JD / U)*2b(,= . ?^ @ ( 7( 93: ƒ  U)*2b(,  >@ 2 ƒ/  Q/^-a/ ƒ b(,@*->+ 10 [...]... lại ở tìm hiểu lý thuyết viết chương trình minh họa nên đề tài chưa có giai đoạn thực 2 3 nghiệm Đánh giá kết quả Đồ án đã tìm hiểu được cơ sở lý thuyết của ngôn ngữ lập trình F# Đã viết được chương trình minh họa cho ngôn ngữ Hướng phát triển Dưới đây là hướng phát triển đồ án của em trong thời gian tới: - Vận dụng các kỹ thuật lập trình của ngôn ngữ F# để xây dựng công cụ hỗ trợ kiểm chứng phần... khiển truyền thống của lập trình tuần tự, kết quả trả về của thân biểu thức phải là unit let function1() = for i = 1 to 10 do printf "%d " i printfn "" let function2() = for i = 10 downto 1 do printf "%d " i printfn "" function1() function2() let beginning x y = x - 2*y let ending x y = x + 2*y let function3 x y = for i = (beginning x y) to (ending x y) do printf "%d " i printfn "" function3 10 4 4.3 While... nghĩa là F# là ngôn ngữ kiểu động hay là ngôn ngữ định kiểu yếu F# là ngôn ngữ định kiểu tĩnh, trình biên dịch có thể suy diễn chính xác trong quá trình dịch Nếu không có đủ thông tin cho sự suy diễn , lập trình viên cần bổ sung thông tin về kiểu như ghi chú kiểu Khi không khai báo tường minh kiểu ,trình biên dịch suy diễn kiểu dựa trên ngữ cảnh Nếu không có cách suy diễn ra kiểu cụ thể, trình biên... chức năng Nó không hiện diện trong ngôn ngữ lập trình NET khác Trong lập trình hướng chức năng thuần , khi mà không có hiệu ứng lề trong hàm, trị trả về cuối cùng là kết quả duy nhất của lời gọi hàm Do vậy,khi kết quả bị bỏ qua , lỗi lập trình có thể xuất hiện Mặc dù F# không phải là ngôn ngữ lập trình chức năng thuần, nhưng nên thực hành chuẩn lập trình chức năng khi có thể 3.5 Kiểu chuỗi Kiểu chuỗi... body-expression Biểu thức for in tương đồng với phát biểu for each trong ngôn ngữ NET , tuy nhiên, nó có hỗ trợ thêm so khớp mẫu thay vì chỉ duyệt không let list1 = [ 1; 5; 100; 450; 788 ] for i in list1 do printfn "%d" i 4.2 For to do for identifier = start [ to | downto ] finish do body-expression Kiểu của định danh được suy diễn từ biểu thức start finish Mặc dù biểu thức for to khá giống với phát biểu điều... printfn "Both values zero." | (var1, var2) & (0, _) -> printfn "First value is 0 in (%d, %d)" var1 var2 | (var1, var2) & (_, 0) -> printfn "Second value is 0 in (%d, %d)" var1 var2 | _ -> printfn "Both nonzero." detectZeroAND (0, 0) detectZeroAND (1, 0) detectZeroAND (0, 10) detectZeroAND (10, 15) 30 CHƯƠNG VI CHƯƠNG TRÌNH MINH HỌA 6.1 Giới thiệu về chương trình Chương trình minh họa là một ứng dụng. .. là một ứng dụng giúp người sử dụng có thể nhập đoạn text, lưu file text, mở file text đó giúp người sử dụng có thể vẽ được với màu lựa chọn 6.2 Hướng dẫn sử dụng chương trình 6.2.1 Nhập text lưu text Khi chạy giao diện chương trình hiện lên như sau: 31 Trong giao diện này người sử dụng có thế nhập văn bản Sau khi nhập xong văn bản ta có thể lưu văn bản bằng cách vào Text Save as: Sau khi chọn... kiểu của đối số,type2 là kiểu của trị trả về Delegate có thể được gán giá trị hàm, hàm tĩnh hay phương thức của thể hiện Giá trị hàm được gán trực tiếp vào đối số của delegate Đối với hàm tĩnh, delegate khởi tạo bằng cách gọi tên lớp tên hàm ,sử dụng toán tử dot (.) Đối với hàm thành viên của thể hiện, ta cung cấp thể hiện phương thức bằng toán tử dot (.) Delegate được gọi bằng phương thức Invoke... hàm printf , hàm thực thi không đòi hỏi xuất giá trị cụ thể,nên giá trị sẽ là kiểu unit Một số cấu trúc đòi hỏi giá trị unit Ví dụ, kết buộc ‘do’ hoặc mã ở vị trí cấp cao trong module vốn đòi hỏi kết xuất giá trị unit Trình biên dịch sẽ cảnh báo khi giá trị kết xuất khác kiểu unit không được sử dụng 16 Cảnh báo này là một đặc tính của lập trình hướng chức năng Nó không hiện diện trong ngôn ngữ lập. .. thể) Kiểu hàm Int list List Int->int Delegate of int>int #seq 14 3.2 Kiểu suy diễn Cơ chế suy diễn kiểu hỗ trợ lập trình viên không cần khai báo kiểu tường minh cho dữ liệu mà vẫn đảm bảo kiểu hợp ngữ cảnh thỏa mãn yêu cầu an toàn kiểu Ý tưởng của cơ chế suy diễn là lập trình viên không cần mô tả kiểu của cấu trúc trừ khi trình biên dịch không thể suy diễn kiểu Bỏ qua khai báo tường minh không . động $%/"#N 5 @.B.N@*-1@. B.N/ )5   5 4 5 C 5 HB. 5 9NM]@4].2b(,8."#@"N 5 @. B.N>)/;-. mT/D/- 5 25 e  eL6@ 8/22 7>./- mn / :- )5 + [ )*mT- )5 + [ )*< - )5 +4 m/  7>.(/ m. C ;-D+<@<C@E--  3&4 5 " Nguyễn Thị Thanh Huệ  6Đào Anh Hiển; )(F=>4 2:

Ngày đăng: 26/06/2014, 09:01

Từ khóa liên quan

Mục lục

  • 1. Lý do chọn đề tài

  • 2. Ưu, khuyết điểm

    • a. Ưu điểm

    • b. Khuyết điểm

  • 3. Hướng tiếp cận của đề tài

  • CHƯƠNG I. TỔNG QUAN VỀ NGÔN NGỮ Fsharp (F#)

    • 1.1. F# là gì?

    • 1.2. Lịch sử phát triển

  • CHƯƠNG II. ĐẶC ĐIỂM CỦA NGÔN NGỮ F#

    • 2.1. F# hỗ trợ lập trình hướng đối tượng

    • 2.2. F# hỗ trợ lập trình hàm

    • 2.3. F# liên kết chặt chẽ với .NET

    • 2.5. Cú pháp đơn giản

    • 2.6. Tính khái quát hóa tự động

    • 2.7. Ngôn ngữ có ít từ khóa

    • 2.8. Danh mục các kí hiệu và toán tử

    • 2.9. Độ ưu tiên của các toán tử

  • CHƯƠNG III. KIỂU DỮ LIỆU TRONG F#

    • 3.1.Cú pháp của kiểu dữ liệu trong F#

    • 3.2. Kiểu suy diễn

    • 3.3. Kiểu cơ sở

    • 3.4. Kiểu Unit

    • 3.5. Kiểu chuỗi

    • 3.6. Kiểu Tuple

    • 3.7. Kiểu danh sách (List)

    • 3.8. Kiểu Sequence

    • 3.9. Kiểu Set

    • 3.10. Kiểu mảng Arry

    • 3.11. Kiểu cấu trúc

    • 3.12. Kiểu delegate

  • CHƯƠNG IV. CÁC CÂU LỆNH TRONG F#

    • 4.1. For..in..do

    • 4.2. For..to..do

    • 4.3. While..do

    • 4.4. Match ..with

    • 4.5. If..elsif..else

  • CHƯƠNG V. MẪU SO KHỚP TRONG F#

    • 5.1.Khái niệm về mẫu so khớp

    • 5.2. Các mẫu so khớp

      • 5.2.1. Mẫu so khớp hằng

      • 5.2.2. Mẫu so khớp biến

      • 5.2.3. Mẫu so khớp AS

      • 5.2.4. Mẫu so khớp OR

      • 5.2.5. Mẫu so khớp AND

  • CHƯƠNG VI. CHƯƠNG TRÌNH MINH HỌA

    • 6.1. Giới thiệu về chương trình

    • 6.2. Hướng dẫn sử dụng chương trình

      • 6.2.1. Nhập text và lưu text

      • 6.2.2. Mở file text

      • 6.2.3. Vẽ ảnh

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

  • Đang cập nhật ...

Tài liệu liên quan