GIỚI THIỆU VỀ AUTOIT-Lập Trình Trên AutoIT part 12 ppt

6 472 5
GIỚI THIỆU VỀ AUTOIT-Lập Trình Trên AutoIT part 12 ppt

Đang tải... (xem toàn văn)

Thông tin tài liệu

dụng cho vòng lặp cấp n. [which loop] bằng 0 hoặc số âm thì ContinueLoop cũng mất tác dụng. Đối với vòng lăp For, ContinueLoop gây ra việc tăng giá trị của biến đếm, thực hiện so sánh với giá trị dừng và chạy các lệnh như bình thường. Đối với vòng lặp While và Do, ContinueLoop cũng bỏ qua các lệnh phía sau nó và quay trở ra xét điều kiện của vòng lặp. Chú ý Cũng như ExitLoop, nếu bạn sử dụng ContinueLoop bên ngoài vòng lặp hoặc chỉ định cho tham số [which loop] một vòng lặp không có thì sẽ bị báo lỗi. Ví dụ Đoạn mã sau minh họa việc dùng ContinueLoop cho vòng lặp cấp 1. Bảng thông báo giá trị $i=2 sẽ không xuất hiện. For $i=1 To 4 If $i=2 Then ContinueLoop MsgBox(0, "message", "$i = " & $i) Next Hàm là gì ? Nói đơn giản, hàm là một chương trình con thực hiện một chức năng cụ thể nào đó trong chương trình chính. Tại sao lại gọi là chương trình con ? Bởi vì trong quá trình viết một ứng dụng, tất nhiên sẽ có một vài đoạn chương trình được dùng đi dùng lại nhiều lần. Ví dụ như bạn cần hiển thị một hộp thoại chứa thông báo ra màn hình chẳng hạn. Bạn viết nó ở đầu chương trình để hiện thông báo bắt đầu chạy chương trình, đến cuối chương trình thì viết lại để hiện thông báo kết thúc chương trình. Bạn thử hình dung nếu có rất nhiều nơi trong chương trình chính của bạn muốn hiển thị thông báo ra màn hình thì cảm giác của bạn sẽ như thế nào !? Thật chán ngấy và phí thời gian khi phải ngồi gõ lại từng dòng lệnh cho một công việc là hiển thị thông báo ra màn hình, trong khi ta đã viết nó ở rất nhiều nơi trong chương trình rồi. Điều này làm cho công việc của bạn không hiệu quả, chương trình thì dài thêm và càng rối mắt. Để giải quyết vấn đề này, các nhà tin học đã đưa ra một giải pháp. Đó là, chỉ viết đoạn mã xử lý công việc ở một nơi nào đó trong chương trình chính. Sau đó, đặt cho nó một cái tên, đưa cho nó các biến đại diện để tiếp nhận các dữ kiện cần xử lý và chỉ cho nó cách thức để trả về kết quả. Do đoạn mã này nằm bên trong chương trình chính, cho nên ta gọi nó là chương trình con (theo đúng nghĩa đen) hay còn gọi là hàm. Và cuối cùng, khi muốn sử dụng một hàm bạn chỉ cần quan tâm đến cách thức để truyền dữ kiện cần xử lý cho nó và cách nó trả về một kết quả. Bạn không cần phải bận tâm là bên trong nó làm việc như thế nào, các dòng lệnh được viết ra sao. Bạn chỉ muốn có kết quả cuối cùng, hàm sẽ làm việc đó cho bạn. Đối với AutoIt, thì để hiển thị một hộp thoại thông báo ra màn hình, AutoIt hỗ trợ cho bạn hàm MsgBox mà bạn đã từng thấy ở các ví dụ. Cũng xin nhắc lại với bạn một điều, sức mạnh của AutoIt nằm ở việc sử dụng các hàm được định nghĩa sẵn, cho nên nếu bạn muốn tạo một ứng dụng hiệu quả thì việc định nghĩa và gọi hàm là không thể thiếu. Thông thường trong các ngôn ngữ khác (như Pascal) thì một hàm có trả về giá trị cụ thể thì vẫn gọi là hàm. Nhưng nếu hàm đó không trả về một giá trị nào cả, các lệnh bên trong chỉ xử lý những tác vụ mang tính “thủ tục” nên còn được gọi là thủ tục. Tuy nhiên, AutoIt không có khái niệm thủ tục, nên dù hàm có hay không trả ra giá trị thì ta vẫn gọi chung là hàm. Phạm vi của một hàm Trong AutoIt, mỗi hàm là một khối mã riêng biệt. Mã của một hàm chỉ thuộc riêng hàm đó và các câu lệnh trong bất cứ một hàm nào khác đều không thể truy cập đến nó được. Nói theo cách khác, các mã và dữ liệu được định nghĩa bên trong một hàm thì không thể tác động, ảnh hưởng đến các mã hay dữ liệu được định nghĩa bên trong một hàm khác, vì hai hàm có hai phạm vi khác nhau. Các biến được định nghĩa bên trong một hàm thì được gọi là biến cục bộ (Local). Chúng được tạo ra khi hàm được nạp vào , và sẽ mất khi thoát hàm. Như vậy, một biến cục bộ không thể lưu trữ giá trị của nó giữa hai lần gọi hàm. Trong trường hợp bạn sử dụng một biến toàn cục (Global) bên trong hàm thì nội dung của biến toàn cục sẽ thay đổi, và giá trị của nó vẫn giữ nguyên sau khi hàm kết thúc. Tất cả các hàm trong AutoIt đều có cùng tầm vực, cho nên bạn không thể định nghĩa một hàm bên trong một hàm khác. ĐỊNH NGHĨA HÀM Để định nghĩa một hàm, bạn phải tuân thủ các qui tắc mà ngôn ngữ lập trình đó hỗ trợ. Với AutoIt, dạng tổng quát để khai báo và định nghĩa một hàm như sau : Func <tên_hàm>( <các tham biến> ) <các lệnh nội bộ> . . . . . Return <giá trị> EndFunc Giải thích Func. . . EndFunc : là hai từ khóa bắt buộc, có nhiệm vụ chỉ ra điểm bắt đầu và kết thúc của một hàm <tên_hàm> : tên đại diện miêu tả ngắn gọn chức năng của hàm <các tham biến> : khai báo một danh sách tên các biến, mỗi biến được ngăn cách với nhau bằng dấu phẩy. Danh sách này sẽ nhận các dữ kiện được truyền vào để hàm xử lý. Một hàm có thể không có <các tham biến>, tức danh sách tham biến sẽ rỗng. Tuy thế, ngay cả khi không có tham biến nào thì bạn vẫn phải đặt dấu ngoặc đơn vào. <các lệnh nội bộ> : ở đây bạn chính là thân của hàm. Bạn có thể thực hiện việc khai báo các biến cục bộ (Local), viết các biểu thức , . . . . Return <giá trị> : tùy chọn, có thể có hoặc không. Nếu như bạn tạo một hàm có trả về một giá trị thì phần này được thêm vào, ngược lại thì không cần. Ví dụ như bạn định nghĩa hàm Sin(x) để tính sin của x, thì khi thực hiện các tính toán xong. Bạn dùng lệnh Return <giá trị> để trả về kết quả vừa tính được cho Sin(x). Chú ý  Khi khai báo <các tham biến>, bạn không cần đặt vào từ khóa chỉ phạm vi của biến. Theo mặc định, chúng luôn là cục bộ (local). Thậm chí nếu bạn có chỉ định Dim, Local hay Global thì cũng sẽ bị báo lỗi. Tuy nhiên, hai từ khóa Const, ByRef lại được phép đặt vào phía trước mỗi biến trong danh sách các tham biến để mở rộng chức năng của hàm (xem phần “Truyền dữ kiện cho hàm”).  Lệnh Return có chức năng chính là chấm dứt ngay quá trình xử lý bên trong hàm và trả về <giá trị> cho hàm (nếu có). Theo mặc định, AutoIt luôn trả về giá trị cho một hàm. Nếu lệnh Return <giá trị> được dùng thì hàm sẽ trả về <giá trị>. Hàm trả về 0 (hoặc “ “ nếu dùng ở string) nếu Return không tồn tại hoặc Return được gọi mà không có phần <giá trị> theo sau. Ví dụ Đoạn mã sau thực hiện việc định nghĩa hàm _RepeatText để lặp lại n lần một chuỗi $str = "abc" $new_str = _RepeatText($str, 10, "") MsgBox(0,"_RepeatText 1", "Source : " & $str & @CRLF & "New string : " & $new_str) $str = "Love" $new_str = _RepeatText($str, 5, " - ") ; ngăn cách chuỗi bằng " - " MsgBox(0,"_RepeatText 2", "Source : " & $str & @CRLF & "New string : " & $new_str) Func _RepeatText($string, $how_many, $delim) ; $string sẽ chứa chuỗi dữ kiện được truyền từ ngoài vào ; $how_many cho biết sẽ lặp lại bao nhiêu lần ; $delim chỉ định ký tự nào dùng để ngăn cách giữa hai chuỗi được lặp lại Local $Rep_str ="" For $i=1 To $how_many $Rep_str &= $string & $delim Next Return $Rep_str EndFunc TRUYỀN DỮ KIỆN CHO HÀM Đầu tiên ta có vài khái niệm cần nhắc lại :  Tham biến : là các biến cục bộ, đại diện cho chương trình con để tiếp nhận dữ kiện  Đối số : thực chất là các dữ-kiện-cụ-thể mà ta truyền cho tham biến của hàm. Tuy nhiên, các dữ kiện ta truyền cho tham biến không phải lúc nào cũng là một giá trị cụ thể. Thông thường nó là một biến bên ngoài. Biến bên ngoài này cũng chính là đối số của hàm. Nói chung, để truyền dữ kiện cho chương trình con ta có hai cách. - Cách thứ nhất là “truyền bằng trị”, phương pháp này sao chép giá trị của một đối số vào tham biến, và các thao tác trên tham biến không làm ảnh hưởng đến đối số. Ví dụ : Hi("Mary") $nick = "Lovely Cat" Hi($nick) . và trả về <giá trị> cho hàm (nếu có). Theo mặc định, AutoIt luôn trả về giá trị cho một hàm. Nếu lệnh Return <giá trị> được dùng thì hàm sẽ trả về <giá trị>. Hàm trả về 0 (hoặc. một hộp thoại thông báo ra màn hình, AutoIt hỗ trợ cho bạn hàm MsgBox mà bạn đã từng thấy ở các ví dụ. Cũng xin nhắc lại với bạn một điều, sức mạnh của AutoIt nằm ở việc sử dụng các hàm được. thường trong các ngôn ngữ khác (như Pascal) thì một hàm có trả về giá trị cụ thể thì vẫn gọi là hàm. Nhưng nếu hàm đó không trả về một giá trị nào cả, các lệnh bên trong chỉ xử lý những tác

Ngày đăng: 03/07/2014, 00:21

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

Tài liệu liên quan