Xâu dấu nháy kép hành động hệt như xâu trong C. Một lần nữa, nó lại là dãy các kí tự, mặc dầu lần này được bao bởi dấu ngoặc kép. Nhưng bây giờ dấu sổ chéo ngược lấy toàn bộ sức mạnh của nó để xác định các kí tự điều khiển nào đó, hay thậm chí bất kì kí tự nào qua các biểu diễn hệ tám hay hệ mười sáu. Đây là một số xâu dấu nháy kép:
“hello world\n” # hello world, và dòng mới
“new \177” # new, dấu cách và kí tự xoá (177 hệ tám)
“coke\tsprite” # coke, dấu tab, và sprite
Dấu sổ chéo có thể đứng trước nhiều kí tự khác nhau để hàm ý những điều khác nhau (về điển hình nó được gọi là lối thoát sổ chéo)
33 trang |
Chia sẻ: netpro | Lượt xem: 4339 | Lượt tải: 5
Bạn đang xem trước 20 trang tài liệu Báo cáo Ngôn ngữ lập trình Perl, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BÁO CÁO CHUYÊN ĐỀ 10 GV: NGÔ CÔNG THẮNG SV: VŨ THỊ THÙY LINH NỘI DUNG Đặc điểm ngôn ngữ lập trình Perl Cấu trúc chung của một chương trình Perl Các bước viết và chạy thử một chương trình Perl Các kiểu dữ liệu cơ bản, các khai báo trong Perl Biểu thức Lệnh gán, lệnh vào/ra dữ liệu I. Đặc điểm ngôn ngữ lập trình Perl 1. Perl là gì?-Perl là một ngôn ngữ lập trình dùng để tạo những ứng dụng web phía server. Perl là một ngôn ngữ lập trình mà có thể được sử dụng cho những nhiệm vụ có tính đa dạng lớn. Ví dụ đơn giản về việc sử dụng Perl là việc trích thông tin từ một tập tin văn bản và in ra một báo cáo hoặc để chuyển đổi một tập tin văn bản thành dạng khác. Nhưng Perl cung cấp một số lượng lớn công cụ cho những vấn đề khá phức tạp, bao gồm lập trình hệ thống (Systems Programming). -Những chương trình được viết bằng Perl được gọi là “Perl scripts”, trong khi đó chương trình hệ thống dùng để thực thi Perl script gọi là “perl” (chữ “p” viết thường). -Giống như hai đối thủ của mình là Java và ASP, Pert là một ngôn ngữ lập trình hướng đối tượng 2. Đặc điểm ngôn ngữ lập trình Perl 2.1 Những sự kiện về Perl• Perl là một ngôn ngữ lập trình có nền tảng ổn định .• Nó được sử dụng cho những dự án phê bình trong những khu vực công cộng và tư nhân.• Perl là phần mềm mã nguồn mở, được cấp phép bởi Artistic Lincense, hay GNU General Public License(GPL).• Perl có tên trong tạp chí PC trong mục công cụ phát triển vì đạt giải thưởng kỹ thuật xuất sắc.• Perl được liệt kê trong từ điển tiếng Anh Oxford. 2.2 Đặc điểm của Perl• Perl có những đặc tính tốt nhất từ ngôn ngữ khác như : C, awk, sed, BASIC, …• Giao diện cơ sở dữ liệu của Perl được hoà hợp (database integration interface -DBI) hỗ trợ những cơ sở dữ liệu đối tác thứ ba như: Oracle, Sybase, Postgres, MySQL, …• Perl làm việc với HTML, XML, và những ngôn ngữ đánh dấu khác..• Perl hỗ trợ Unicode. • Perl hỗ trợ cả thủ tục lẫn lập trình hướng đối tượng.• Những giao diện Perl có bề ngoài như những thư viện C/C++ thông qua XS hay SWIG.• Perl dễ mở rộng. Có hơn 500 modules của hãng thứ ba luôn sẵn sàng từ “lưu trữ Perl toàn diện” (Comprehensive Perl Archive Network-CPAN).• Trình thông dịch Perl có thể nhúng vào những hệ thống khác. II. Cấu trúc chung của một chương trình Perl 1. Khung chương trình - #!/usr/bin/perl Câu lênh VD: #!/usr/bin/perl print "Hello!\n"; 2 .Dấu chấm phẩy Dấu chấm phẩy được dùng để ngăn cách giữa các câu lệnh. Dấu chấm phẩy đặt cuối câu lệnh và không thể thiếu VD: $a = 3; 3. Lời giải thích - Lời giải thích làm cho chương trình dễ hiểu, dễ đọc. Lời giải thích có thể đặt bất kì đâu trong chương trình nhưng phải đặt sau #. IV. Các kiểu dữ liệu cơ bản, các khai báo trong Perl - Perl có ba kiểu dữ liệu được xây dựng sẵn: +Kiểu vô hướng (scalar) +Kiểu mảng của các phần tử vô hướng +Kiểu mảng kết hợp của các phần tử vô hướng, thường được gọi là "bảng băm" (hash). Một thực thể dữ liệu vô hướng là một chuỗi chiều dài bất kỳ (chiều dài bị giới hạn bởi giới hạn bộ nhớ), hoặc một con số, hay một tham khảo trỏ đến một phần tử dữ liệu khác. Một thực thể dữ liệu mảng thông thường là một danh sách có thứ tự chứa các phần tử vô hướng được đánh chỉ mục, bắt đầu từ 0. Bảng băm là một tập không thứ tự các giá trị vô hướng được đánh chỉ mục bởi các chuỗi giá trị khóa kết hợp của chúng. 1.Kiểu vô hướng 1.1SốMặc dầu vô hướng thì hoặc là một số hay một xâu, điều cũng có ích là nhìn vào các số và xâu tách biệt nhau trong một chốc. ta sẽ xét số trước rồi đến xâu...Tất cả các số đều có cùng định dạng bên trongNhư bạn sẽ thấy trong vài đoạn tiếp đây, bạn có thể xác định cả số nguyên (toàn bộ số, giống như 14 hay 342) và số dấu phẩy động (số thực với dấuchấm thập phân, như 3.14, hay 1.35 lần 1025). Nhưng bên trong, Perl chỉ tính với các giá trị dấu phẩy động độ chính xác gấp đôi. Điều này có nghĩa là không có giá trị nguyên bên trong Perl - một hằng nguyên trong chương trình được xử lí như giá trị dấu phẩy động tương đương. Bạn có lẽ không để ý đến việc chuyển đổi (hay quan tâm nhiều), nhưng bạn nên dừng tìm kiếm phép toán nguyên (xem như ngược với các phép toán dấu phẩy động), vì không có tẹo nào. 1.2Hằng kí hiệu độngHằng kí hiệu là một cách để biểu diễn một giá trị trong văn bản chương trình Perl - bạn cũng có thể gọi điều này là một hằng trong chương trình mình, nhưng tôi sẽ dùng thuật ngữ hằng kí hiệu. Hằng kí hiệu là cách thức biểu diễn dữ liệu trong mã chương trình gốc của chương trình bạn như cái vào cho trình biên dịch Perl. (Dữ liệu được đọc từ hay ghi lên các tệp đều được xử lí tương tự, nhưng không đồng nhất.)Perl chấp nhận tập hợp đầy đủ các hằng kí hiệu dấu phẩy động có sẵn cho người lập trình C. Số có hay không có dấu chấm thập phân đều được phép (kể cả tiền tố cộng hay trừ tuỳ chọn), cũng như phần chỉ số mũ phụ thêm (kí pháp luỹ thừa) với cách viết E. Chẳng hạn:1.25 # một phần tư7.25e45 # 7.25 lần 10 mũ 45 (một số lớn)-6.5e24 # âm 6.5 lần 10 mũ 24 (một số âm lớn)-12e-24 # âm 12 lần 10 mũ -24 (một số âm rất nhỏ) 1.3 Hằng kí hiệu nguyênCác hằng kí hiệu nguyên cũng là trực tiếp, như trong:1215-20043485Bạn đừng bắt đầu một số bằng 0, vì Perl hỗ trợ cho hằng kí hiệu hệ tám và hệ mười sáu (hệt như kiểu C). Số hệ tám bắt đầu bằng số 0 đứng đầu, còn số hệ mười sáu thì bắt đầu bằng 0x hay 0X** Chỉ báo “số không đứng đầu” chỉ có tác dụng với các hằng kí hiệu - không có tác dụng cho việc chuyển đổi tự động xâu sang số. bạn có thể chuyển đổi một xâu dữ liệu giống như một giá trị hệ tám và hệ mười sáu thành một số với oct() hay hex(). . Các chữ số hệ mười sáu A đến F (trong cả hai kiểu chữ hoa thường) đều biểu thị cho các giá trị số qui ước từ 10 đến 15. Chẳng hạn:0377 # 377 hệ tám, giống như 255 thập phân-0xff # FF hệ mười sáu âm, hệt như -255 thập phân 1.4XâuXâu là các dẫy kí tự (như Xin chào). Mỗi kí tự đều là một giá trị 8-bit trong toàn bộ tâkp 256 kí tự (không có gì đặc biệt về kí tự NUL như trong C).Xâu ngắn nhất có thể được thì không có kí tự nào. Xâu dài nhất thì chiếm trọn bộ nhớ của bạn (mặc dầu bạn sẽ chẳng thể nào làm gì nhiều với nó cả). Điều này phù hợp với nguyên lí “không có giới hạn sẵn gì” mà Perl cho phép mọi cơ hội. Các xâu điển hình là các dẫy in được gồm các chữ và số và dấu ngắt trong phạm vi ASCII 32 tới ASCII 126. Tuy nhiên, khả năng để có bất kì kí tự nào từ 0 tới 255 trong một xâu có nghĩa là bạn có thể tạo ra, nhòm qua, và thao tác dữ liệu nhị phân thô như các xâu - một cái gì đó mà phần lớn các trình tiện ích UNIX khác sẽ gặp khó khăn lớn. (Chẳng hạn, bạn có thể vá víu lõi UNIX bằng việc đọc nó vào trong xâu Perl, tiến hành thay đổi, và ghi kết quả lại.)Giống như số, xâu có biểu diễn hằng kí hiệu (cách thức bạn biểu diễn xâu trong chương trình Perl). Các xâu hằng kí hiệu có theo hai hương vị: xâu dấu nháy đơn và xâu dấu nháy kép. 1.5Xâu dấu nháy đơnXâu dấu nháy đơn là một dẫy các kí tự được bao trong dấu nháy đơn. Dấu nháy đơn không phải là một phần của bản thân xâu - chúng chỉ có đó để Perl xác định chỗ bắt đầu và kết thúc của xâu. Bất kì kí tự nào nằm giữa các dấu nháy (kể cả dấu dòng mới, nếu xâu vẫn còn tiếp tục sang dòng sau) đều là hợp pháp bên trong xâu. Hai biệt lệ: để lấy được một dấu nháy đơn trong một xâu có nháy đơn, bạn hãy đặt trước nó một dấu sổ chéo ngược. Và để lấy được dấu sổ chéo ngược trong một xâu có nháy đơn, bạn hãy đặt trước dấu sổ chéo ngược nột dấu sổ chéo ngược nữa. Dưới dạng hình ảnh: hello # năm kí tự: h, e, l, l, odont\t # năm kí tự: d, o, n, nháy đơn, t# xâu không (không kí tự)silly\\me # silly, theo sau là một sổ chéo ngược, sau là mehello\n # hello theo sau là sổ chéo ngược và nhellothere # hello, dòng mới, there (toàn bộ 11 kí tự)Chú ý rằng \n bên trong môt jxâu có nháy đơn thì không được hiểu là dòng mới, nhưng là hai kí tự sổ chéo ngược và n. (Chỉ khi sổ chéo ngược đi theo sau bởi một sổ chéo ngược khác hay một dấu nháy đơn thì mới mang nghĩa đặc biệt.) 1.6 Xâu dấu nháy képXâu dấu nháy kép hành động hệt như xâu trong C. Một lần nữa, nó lại là dãy các kí tự, mặc dầu lần này được bao bởi dấu ngoặc kép. Nhưng bây giờ dấu sổ chéo ngược lấy toàn bộ sức mạnh của nó để xác định các kí tự điều khiển nào đó, hay thậm chí bất kì kí tự nào qua các biểu diễn hệ tám hay hệ mười sáu. Đây là một số xâu dấu nháy kép:“hello world\n” # hello world, và dòng mới“new \177” # new, dấu cách và kí tự xoá (177 hệ tám)“coke\tsprite” # coke, dấu tab, và spriteDấu sổ chéo có thể đứng trước nhiều kí tự khác nhau để hàm ý những điều khác nhau (về điển hình nó được gọi là lối thoát sổ chéo) Bảng 2-1 Lối thoát sổ chéo ngược xâu nháy képKết cấu Ý nghĩa \n dòng mới \r quay lại \t Tab \f kéo giấy \b Backspace \v tab chiều đứng \a chuông \e lối thoát \007 bất kì giá trị ASCII hệ tám (ở đây, 007 = chuông) \x7f giá trị ASCII hệ mười sáu (ở đây, 7f = xoá) \cC bất kì kí tự “điều khiển” nào (ở đây, control C) \\ sổ chéo ngược \” dấu nháy kép \l chữ tiếp là chữ thường \L tất cả các chữ đi sau cho tới \E đều là chữ thường \u Chữ tiếp là chữ hoa \U tất cả các chữ đi sau cho tới \E đều là chữ hoa \E Kết thúc \L hay \U 1.7 Toán tử cho sốPerl cung cấp các toán tử cộng, trừ, nhân, chia điển hình thông thường, vân vân. Chẳng hạn:2 + 3 # 2 cộng 3, hay 55.1 - 2.4 # 5.1 trừ đi 2.4, hay 2.73 * 12 # 3 lần 12 = 3614 / 2 # 14 chia cho 2, hay 710.2 / 0.3 # 10.2 chia cho 0.3, hay 3410 / 3 # bao giờ là phép chia dấu phẩy động, nên 3.333...Bên cạnh đó, Perl cung cấp toán tử lũy thừa kiểu FORTRAN, mà nhiều người đã từng mong mỏi cho Pascal và C. Toán tử này được biểu diễn bằng hai dấu sao, như 2**3, chính là hai luỹ thừa ba, hay tám -Perl cũng hỗ trợ cho toán tử lấy đồng dư modulus, như trong C. Giá trị của biểu thức 10 % 3 là số dư khi lấy mười chia cho ba, chính là một. Cả hai giá trị đều trước hết được đưa về giá trị nguyên, cho nên 10.5 % 3.2 được tính là 10 % 3.Các toán tử so sánh logic là hệt như các toán tử có trong C (= > !=), và việc so sánh hai giá trị về mặt số sẽ cho lại một giá trị đúng hay sai. Chẳng hạn, 3 . 2 cho lại đúng vì ba lớn hơn hai, trong khi 5 != 5 cho lại sai vì không đúng là năm lại không bằng năm. Các định nghĩa về đúng và sai được nói tới về sau, nhưng với hiện tại, các bạn hãy nghĩ về giá trị cho lại giống như chúng ở trong C - một là đúng, còn không là sai 1.8 Toán tử xâuCác giá trị xâu có thể được ghép với toán tử chấm (.). (Quả thế, đó là dấu chấm đơn.) Điều này không làm thay đổi xâu, cũng như 2+3 không làm thay đổi 2 hay 3. Xâu kết quả (dài hơn) vậy là có sẵn cho tính toán thêm hay được cất giữ trong một biến.“hello” . “world” # hệt như “helloworld”hello wordl . “\n” # hệt như “hello world\n”“fred” . “ “ . “barney” # hệt như “fred barney” - Bảng 2-2. Các toán tử so sánh số và xâuPhép so sánh Số Xâu Bằng == eq Không bằng != ne Bé hơn gt Bé hơn hay bằng = ge Bảng 2-3: Luật kết hợp và số ưu tiên của các toán tử (thấp nhất đến cao nhất)Luật kết hợp Toán tử không Toán tử “danh sách” trái , (phẩy) phải += và các toán tử khác (toán tử “gán”) phải ? : (toán tử if/then/else ba ngôi) không .. (toán tử phạm vi, cấu tử danh sách) trái || (hoặc logic) trái && (và logic) trái | ^ (hoặc bit, hoặc bit loại trừ) trái & (và bit) không == != eq ne cmp (toán tử “bằng”) không >= lt le gt ge (toán tử “không bằng”) không Toán tử một ngôi có tên không -r và (các toán tử kiểm tra tệp)** Perl 5.0 tổ hợp các toán tử kiểm tra tệp và toán tử một ngôi có tên vào cùng mức số ưu tiên khác trái > (dịch chuyển bit) trái + - . (cộng, trừ, ghép xâu) trái * / % x (nhân, chia, lấy dư, lặp xâu) trái =~ !~ (sánh, không sánh) phải ** (luỹ thừa) phải ! ~ - (phủ định logic, phủ định bit, phủ định số) không ++ -- (tự tăng, tự giảm) V .Biểu thức 1.Biểu thức Biểu thức là một sự kết hợp giữa các phép toán và các toán hạng để diễn đạt một công thức toán nào đó để có được một giá trị mới. Toán hạng có thể coi là một đại lượng có giá trị. Toán hạng có thể là hằng, biến, hàm Khi viết một biểu thức có thể dùng dấu ngoặc tròn để thể hiện đúng trình tự tính toán trong biểu thức Mỗi biểu thức sẽ có một giá trị và nói chung cái gì có giá trị đều được xem là biểu thức Có hai loại biểu thức: +Biểu thức số: có giá trị là nguyên hoặc thực +Biểu thức logic: có giá trị là đúng(1) hoặc sai(0) VD: (a+b)*2 (a+b)>c VI. Lệnh gán, lệnh vào/ra dữ liệu 1. Lệnh gán Phép toán thông dụng nhất trên biến vô hướng là phép gán, chính là cách đặt một giá trị cho một biến. Toán tử gán của Perl là dấu bằng (giống như C hay FORTRAN), để tên biến bên vế trái và cho giá trị của biểu thức bên vế phải, kiểu như:$a = 17; # cho $a giá trị 17$b = $a + 3; # cho $b giá trị hiện tại của $a cộng với 3 (20)$b = $b * 2; # cho $b giá trị của $b được nhân với 2 (40) 2. Toán tử gán hai ngôiCác biểu thức như $a = $a + 5 (trong đó cùng một biến lại xuất hiện ở cả hai vế của phép gán) thường xuất hiện đến mức Perl (giống như C) có cách viết tắt cho phép toán làm thay đổi biến - toán tử gán hai ngôi. Gần như tất cả các toán tử hai ngôi tính một giá trị đều có dạng phép gán hai ngôi tương ứng với dấu bằng có bổ sung thêm phần tử. Chẳng hạn, hai dòng sau đây là tương đương:$a = $a + 5 ; # không có toán tử gán hai ngôi$a += 5 ; # có toán tử gán hai ngôi Gần như tất cả các toán tử hai ngôi đều hợp lệ theo cách này. Chẳng hạn, toán tử nâng lên luỹ thừa của sẽ được viết là **=. Cho nên, $a **= 3 có nghĩa là “nâng một số trong $a lên luỹ thừa ba, rồi đặt kết quả trở lại $a”.Giống như toán tử gán đơn, các toán tử này cũng có một giá trị : giá trị mới của biến. Chẳng hạn:$a = 3;$b = ($a += 4); # $a và $b cả hai bây giờ đều là 7Nhưng không may là trật tự tính toán của các toán hạng của toán tử hai ngôi lại không được xác định, cho nên một số biểu thức không thể nào được xác định hoàn toàn:$a = 3;$b = ($a += 2) * ($a -= 2); # Chương trình tồi: $b có thể là 15 hay 3 2. Vào ra dữ liệu 2.1 Nhập vào từ STDIN -Toán tử là toán tử vào chuẩn. -Trong ngữ cảnh vô hướng thì nó trả về một dòng của cái đang được nhập vào, hoặc undef nếu không còn dòng nào nữa. $a = ; # đọc dòng tiếp theo -Trong ngữ cảnh mảng nó sẽ cho ta tất cả các dòng còn lại như một danh sách - mỗi phần tử của danh sách này là một dòng, bao gồm cả ký tự xuống dòng mới của nó. @a = ; 2.2 Đưa ra bằng STDOUT -Perl dùng các toán tử print và printf để ghi/xuất dữ liệu ra STDOUT. -Toán tử print nhận một danh sách các xâu, và gửi lần lượt từng xâu ra STDOUT. VD: $a = print ("xin chao", "moi nguoi", "\n"); -Giá trị trả lại của print là một giá trị đúng hay sai, chỉ ra sự thành công của việc in. Vì thế giá trị trả về của $a là bao nhiêu? Việc dùng dấu ngoặt tròn trong “print”: print (2+3), "xin chao"; # Sai! in 5, bỏ qua "xin chao“ print ((2+3), "xin chao"); # Đúng! in "5xin chao“ print 2+3, "xin chao"; # Cũng đúng! in "5xin chao" TÀI LIỆU THAM KHẢO
Các file đính kèm theo tài liệu này:
- BÁO CÁO CHUYÊN ĐỀ 10.ppt