35
Nhóm 7 NHÓM 7: NHÓM 7: NGUYỄN THỊ MỸ DUNG NGUYỄN THỊ MỸ DUNG 070066T 070066T TRƯƠNG TRUNG HIẾU TRƯƠNG TRUNG HIẾU 070112T 070112T HUỲNH THỊ NGỌC HƯƠNG HUỲNH THỊ NGỌC HƯƠNG 070080T 070080T GIỚI THIỆU NGÔN NGỮ & HÀM TRONG PERL ĐỀ TÀI:

NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

  • Upload
    galia

  • View
    46

  • Download
    0

Embed Size (px)

DESCRIPTION

ĐỀ TÀI:. GIỚI THIỆU NGÔN NGỮ & HÀM TRONG PERL. NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T. NỘI DUNG:. I. Giới thiệu sơ lược về Perl II. Sơ lược về Nhập – Xuất III. Hàm. Giới thiệu sơ lược về Perl. Tên gọi Lịch sử - PowerPoint PPT Presentation

Citation preview

Page 1: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

Nhóm 7

NHÓM 7:NHÓM 7:

NGUYỄN THỊ MỸ DUNGNGUYỄN THỊ MỸ DUNG 070066T070066TTRƯƠNG TRUNG HIẾUTRƯƠNG TRUNG HIẾU 070112T070112THUỲNH THỊ NGỌC HƯƠNGHUỲNH THỊ NGỌC HƯƠNG 070080T070080T

GIỚI THIỆU

NGÔN NGỮ & HÀM TRONG PERL

ĐỀ TÀI:

Page 2: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

2

NỘI DUNG:NỘI DUNG:

I. Giới thiệu sơ lược về PerlI. Giới thiệu sơ lược về Perl

II. Sơ lược về Nhập – XuấtII. Sơ lược về Nhập – Xuất

III. HàmIII. Hàm

Page 3: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

3

I.I. Giới thiệu sơ lược về PerlGiới thiệu sơ lược về Perl

1.1. Tên gọiTên gọi

2.2. Lịch sửLịch sử

3.3. Đặc điểm & Thế mạnhĐặc điểm & Thế mạnh

4.4. Biểu tượngBiểu tượng

Page 4: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

4

I.1. Tên gọi:I.1. Tên gọi:

Perl là tên viết tắt của Practical Extraction Perl là tên viết tắt của Practical Extraction

and Report Language – ngôn ngữ kết xuất and Report Language – ngôn ngữ kết xuất

và báo cáo thực dụng.và báo cáo thực dụng.

Page 5: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

5

I.2.I.2. Lịch sửLịch sử

Perl được Larry Wall xây dựng từ năm 1987 Perl được Larry Wall xây dựng từ năm 1987 và đưa ra phiên bản đầu tiên.và đưa ra phiên bản đầu tiên.

Phiên bản thứ 2 ra đời vào năm 1988, sau Phiên bản thứ 2 ra đời vào năm 1988, sau đó 1 năm thì cho ra đời phiên bản thứ 3.đó 1 năm thì cho ra đời phiên bản thứ 3.

Năm 1991, cuốn sách Năm 1991, cuốn sách Programming PerlProgramming Perl đã đã được xuất bản, đồng thời phiên bản thứ 4 được xuất bản, đồng thời phiên bản thứ 4 cũng ra đời và là phiên bản đầu tiên được cũng ra đời và là phiên bản đầu tiên được viết trong sáchviết trong sách.

Page 6: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

6

I.3.I.3. Đặc điểm & Thế mạnh:Đặc điểm & Thế mạnh:

Perl là một ngôn ngữ mạnh mẽ trong việc quản trị hệ thống Unix.

Là loại ngôn ngữ ngữ pháp cơ bản trong việc xử lý văn bản cấp cao.

Có khả năng chắt lọc một lượng lớn dữ liệu và cho phép xử lý dữ liệu nhằm thu được kết quả cần tìm.

Page 7: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

7

I.3.I.3. Đặc điểm & Thế mạnh(tt)Đặc điểm & Thế mạnh(tt)::

Perl là ngôn ngữ thông dụng trong lĩnh vực quản trị hệ thống và xử lý các trang Web do có các ưu điểm sau:

Có các thao tác quản lý tập tin, xử lý thông tin thuận tiện.

Thao tác với chuỗi ký tự rất tốt.

Đã có một thư viện mã lệnh lớn do cộng đồng sử dụng Perl đóng góp (CPAN).

Page 8: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

8

I.3.I.3. Đặc điểm & Thế mạnh(tt)Đặc điểm & Thế mạnh(tt)::

Cú pháp lệnh của Perl khá giống với C.Perl có sức mạnh và sự linh hoạt của ngôn ngữ lập trình cấp cao C.

Giống như các ngôn ngữ shell scripts, Perl không đòi hỏi biên dịch và link mã nguồn, thay vào đó chỉ cần gọi Perl thực thi chương trình đó.

Chạy được trên nhiều platfrom: UNIX, DOS, WINDOWS.

Page 9: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

9

I.3.I.3. Đặc điểm & Thế mạnh(tt)Đặc điểm & Thế mạnh(tt)::

Perl chuyên về xử lý text, có nhiều hàm build-in, thích hợp với xử lý trang web trong thế giới WWW.

Ngoài ra Perl còn rất nhiều điểm mạnh như của các ngôn ngữ lập trình khác.

Page 10: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

10

I.4.I.4. Biểu tượng: Biểu tượng:

Cuốn sách Programming Perl, xuất bản bởi O'Reilly Media, với trang bìa là bức ảnh 1 con lạc đà. Từ đó, lạc đà trở thành biểu tượng của ngôn ngữ Perl.

Page 11: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

11

II. Nhập xuất:

1.Nhập

2.Xuất

Page 12: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

12

II.1. Nhập:

Nhập vào từ STDIN• Toán tử <STDIN> 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 = <STDIN>; # đọ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 = <STDIN>;

Page 13: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

13

II.2. Xuất:

Đư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?

Page 14: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

14

II.2. Xuất(tt):

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"

Page 15: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

15

III.III. HÀM:HÀM:

Nội dung:

1. Xác định một hàm tiện ích

2. Gọi một hàm tiện ích

3. Giá trị trả về

4. Đối số của hàm

5. Biến cục bộ trong hàm

Page 16: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

16

III.1. III.1. Xác định một hàm tiện ích:

Một hàm tự tạo, thường hay được gọi là chương trình con hay trình con, được xác định trong chương trình Perl của bạn bằng việc dùng một kết cấu như:

Sub  subname {    cau lenh 1;    cau lenh 2;    cau lenh 3;

    ....}

Page 17: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

17

III.1. III.1. Xác định một hàm tiện ích(tt):

Sub: là từ khoá của mọi chương trình con.

Subname: là tên của chương trình con, được đặt bởi một tên bất kỳ nhưng không được trùng với tên của các hàm đã được định nghĩa sẵn kể cả từ “sub”.

Khối các câu lệnh đi sau tên trình con trở thành định nghĩa của trình con.

VD:VD:

sub say_hello {sub say_hello {print "Xin chao moi nguoi!\n";print "Xin chao moi nguoi!\n";}}

Page 18: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

18

Các định nghĩa trình con là toàn cục, không Các định nghĩa trình con là toàn cục, không có trình con cục bộ.có trình con cục bộ.

Bên trong thân trình con, bạn có thể thâm Bên trong thân trình con, bạn có thể thâm nhập hay đặt các giá trị cho các biến được nhập hay đặt các giá trị cho các biến được dùng chung với phần còn lại của chương dùng chung với phần còn lại của chương trình (trình (biến toàn cục).biến toàn cục).

VD:VD:

sub  say_what  {sub  say_what  {    print  "Xin chao, $what\n";    print  "Xin chao, $what\n";}}

$what$what tham khảo tới giá trị toàn cục cho tham khảo tới giá trị toàn cục cho $what$what và được dùng chung với phần còn lại và được dùng chung với phần còn lại của chương trình.của chương trình.

III.1. III.1. Xác định một hàm tiện ích(tt):

Page 19: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

19

III.1. III.1. Xác định một hàm tiện ích(tt):

Chương trình con có thể đặt ở bất kì đâu trong chương trình chính hoăc có thể lưu chương trình con vào một tập tin riêng.

Chương trình con có tính chất toàn cục, nghĩa là khi hai chương trình con trùng tên thì chúng sẽ chồng lên nhau.

Page 20: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

20

III.2. III.2. Gọi một hàm tiện ích:

Khi muốn gọi chương trình con thì ta dùng Khi muốn gọi chương trình con thì ta dùng câu lệnh sau:câu lệnh sau:

&subname[(danh sách tham số)];&subname[(danh sách tham số)];

hoặchoặc

subname();subname();

Page 21: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

21

III.2. III.2. Gọi một hàm tiện ích(tt):

VD:VD:

say_hello();say_hello();                      #mot bieu thuc don gian#mot bieu thuc don gian$a = 3 + say_hello();$a = 3 + say_hello();    #mot bieu thuc kep#mot bieu thuc kepfor ($x = start_value();$x < end_value();for ($x = start_value();$x < end_value();

$x += increment())  $x += increment()) 

{{    ...    ...

}} #goi 3 trinh con#goi 3 trinh con

Page 22: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

22

III.2. III.2. Gọi một hàm tiện ích(tt):

Một trình con có thể gọi một trình con khác.

Một chương trình con có thể được gọi từ một tập tin bên ngoài bằng cách sau: require ‘filename.lib’;

Với filename.lib là tên của tập tin chứa chương trình con cần gọi.

Page 23: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

23

III.2. III.2. Gọi một hàm tiện ích(tt):

Nếu chương trình con có giá trị trả về, bạn sử dụng toán tử gán:

name = &subname[(danh sách tham số)];

hoặc name = subname();

Trong đó name có thể là biến vô hướng hoặc là mảng.

Page 24: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

24

III.2. III.2. Gọi một hàm tiện ích(tt):

Bạn có thể gán ngược lại, xem ví dụ sau:

$firstVar = "0123BBB789"

substr($firstVar, 4, 3) = "AAA";

# substr trả về chuỗi con BBB của $firstVar dài 3 ký tự

# kể từ vị trí thứ 4 của chuỗi $firstVar

# Đoạn chương trình cho $firstVar là “0123AAA789”

Page 25: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

25

III.3. Giá trị trả về:

Giá trị của việc gọi trình con được gọi là giá trị trả lại.

Giá trị trả lại của một trình con là giá trị của biểu thức cuối cùng được tính bên trong thân của trình con cho mỗi lần gọi.

VD:

sub  sum_of_a_and_b  {    $a + $b;}

hay ta dùng return

sub  sum_of_a_and_b  {    $a + $b;}

Page 26: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

26

III.3. Giá trị trả về(tt):

VD:

sub  gime_a_or_b  {    if ($a > 0)  {              print "chon a ($a)\n";              $a;    } else {              print "chọn b ($b)\n";              $b;    }}

Trình con này cho lại $a nếu $a > 0, ngoài ra nó cho $b.

Page 27: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

27

III.4. Đối số của hàm:

Khi bạn truyền đối số trong lời gọi hàm, các đối số được đưa vào một danh sách cục bộ có tên là @_.

Trong thân chương trình con, bạn lấy giá trị các đối số đó thông qua @_.

Biến @_ là cục bộ cho trình con.

Một trình con có thể truyền các đối cho một trình con khác

Page 28: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

28

III.4. Đối số của hàm(tt):

Xét ví dụ:

sub say_hello_to  {

print "Hello, $_[0]!\n";

}

print say_hello_to(“World”);

# In ra HelloWorld với $_[0] chính là phần tử đầu tiên của mảng @_

Page 29: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

29

III.4. Đối số của hàm(tt):

VD: Dùng nhiều hơn một tham biến.

sub  say {    print  "$_[0], $_[1]!\n";}say("hello", "world");  #hello, world!say ("goodbye", "cruel world");

Các tham biến vượt quá đều bị bỏ. Các tham số không đủ cũng bị bỏ qua. Nhận được undef nếu bạn nhìn vượt ra

phần tử cuối của mảng @_, như với mọi mảng khác.

Page 30: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

30

III.4. Đối số của hàm(tt):

VD:

sub add_two  {    $_[0] + $_[1];}print add_two(3, 4);  #in 7$c = add_two(5, 6);   #$c = 11

Hai giá trị $_[0] & $_[1] được truyền cho trình con này như tham biến.

Page 31: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

31

III.5. Biến cục bộ trong hàm:

Để khai báo một biến, mảng, … cục bộ trong nội dung của hàm (biến, mảng, … này không còn tồn tại khi hàm kết thúc) bạn đặt my hoặc local trước khai báo biến này.

Nên nhóm tất cả các toán tử my() vào phần đầu định nghĩa chương trình con.

Page 32: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

32

III.5. Biến cục bộ trong hàm(tt):

Xét VD:

sub add  {my $sum = 0 ;        #tao bien cuc bo $sum va

khoi tao gia tri =0foreach $_ (@_ )  {        $sum += $_ ;     #cong tung phan tu    }    return $sum;         #tra ve ket qua}$a = add(4,5,6) ;        #cong 4+5+6 = 15, va

gan cho $aprint add(1,2,3,4,5) ;   #in ra 15print add(1..5);         #cung in ra 15, vi 1..5

duoc mo rong thanh 1,2,3,4,5

Page 33: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

33

III.5. Biến cục bộ trong hàm(tt):

sub bigger_than  {my ($n, @values);                #tao ra cac bien

cuc bo    ($n, @values) = @_;        #khoi tao gia tri cho bien cuc bo, thuc chat la lay gia tri tu cac tham somy (@result);                    #them 1 bien cuc

bo nuaforeach $_ (@values)  {          #duyet danh sach

cac gia triif  ($_ > $n)  {       #phan tu nay co gia tri

lon hon $n (=50, 100 hay gia tri nao do)              push (@result, $_) ;   #dua vao danh

sach neu hop le    }    return @result;                  #tra ve ket qua}

Page 34: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

34

III.5. Biến cục bộ trong hàm(tt):

VD:

@new = bigger_than(100, @list);       #tim cac phan tu lon hon 100 trong mang @list

@this = bigger_than(5,1,5,15,30);    #tim cac phan tu lon hon 5 trong danh sach, ket qua la (15, 30)

Page 35: NHÓM 7: NGUYỄN THỊ MỸ DUNG070066T TRƯƠNG TRUNG HIẾU070112T HUỲNH THỊ NGỌC HƯƠNG070080T

35

III.6. Một số hàm cơ bản:

Trong PERL có rất nhiều hàm chuẩn.

Một số hàm thường gặp như: print, chop, chomp, int, oct, ord, ...

Trong phần mảng thường dùng các hàm: grep, splice, shift, unshift, push, … hay trong phần tệp hay sử dụng các hàm như: open, close, split, ...