1. Trang chủ
  2. » Tất cả

Tư hoc LTtHam_ Tu

144 4 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 144
Dung lượng 3,9 MB
File đính kèm Tư hoc LTtHam_ Tu.rar (2 MB)

Nội dung

CHƯƠNG I I.1 NGUYÊN LÝ LẬP TRÌNH HÀM Mở đầu ngơn ngữ lập trình I.1.1 Vài nét lịch sử Buổi ban đầu N hững ngơn ngữ lập trình (programming language) máy tính điện tử ngôn ngữ máy (machine language), tổ hợp số hệ hai, hay hệ nhị phân, hay bit (viết tắt binary digit) Ngôn ngữ máy phụ thuộc hoàn toàn vào kiến trúc phần cứng máy tính quy ước khắt khe nhà chế tạo Để giải toán, người lập trình phải sử dụng tập hợp lệnh điều khiển sơ cấp mà lệnh tổ hợp số hệ hai nên gặp nhiều khó khăn, mệt nhọc, dễ mắc phải sai sót, lại khó sửa lỗi Từ năm 1950, để giảm nhẹ việc lập trình, người ta đưa vào kỹ thuật chương trình (sub-program hay sub-routine) xây dựng thư viện chương trình (library) để cần gọi đến dùng lại đoạn chương trình viết Ngôn ngữ máy tiến gần đến ngôn ngữ tự nhiên Cũng từ năm 1950, ngôn ngữ hợp dịch, hay hợp ngữ (assembly) hay gọi ngôn ngữ biểu tượng (symbolic) đời Trong hợp ngữ, mã lệnh địa toán hạng thay từ tiếng Anh gợi nhớ (mnemonic) ADD, SUB, MUL, DIV, JUMP tương ứng với phép toán số học + - /, phép chuyển điều khiển, v.v Do máy tính hiểu ngơn ngữ máy, chương trình viết hợp ngữ khơng thể chạy mà phải qua giai đoạn hợp dịch (assembler) thành ngôn ngữ máy Tuy nhiên, hợp ngữ phụ thuộc vào phần cứng xa lạ với ngôn ngữ tự nhiên (natural language), người lập trình cịn gặp nhiều khó khăn giải tốn máy tính Năm 1957, hãng IBM đưa ngôn ngữ FORTRAN (FORmula TRANslator) Đây ngôn ngữ lập trình gần gũi ngơn ngữ tự nhiên với cách diễn đạt toán học FORTRAN cho phép giải nhiều loại toán khoa học, kỹ thuật sau nhanh chóng ứng dụng rộng rãi ngày với kho tàng thư viện thuật toán đồ sộ tiện dụng Tiếp theo đời ngôn ngữ ALGOL 60 (ALGOrithmic Language) năm 1960, COBOL (Comon Business Oriented Language) năm 1964, Simula năm 1964, v.v LẬP TRÌNH HÀM Phát triển ngơn ngữ lập trình Theo phát triển hệ máy tính, ngơn ngữ lập trình khơng ngừng cải tiến hồn thiện để ngày đáp ứng nhu cầu người sử dụng giảm nhẹ cơng việc lập trình Rất nhiều ngơn ngữ lập trình đời tảng lý thuyết tính tốn (theory of computation) hình thành hai loại ngơn ngữ : ngơn ngữ bậc thấp ngôn ngữ bậc cao Các ngôn ngữ bậc thấp (low-level language), hợp ngữ ngôn ngữ máy, thường dùng để viết chương trình điều khiển kiểm tra thiết bị, chương trình sửa lỗi (debugger) hay cơng cụ Các ngơn ngữ lập trình bậc cao (high-level language) phương tiện giúp người làm tin học giải vấn đề thực tế đồng thời nơi mà thành tựu nghiên cứu khoa học máy tính đưa vào Lĩnh vực nghiên cứu phát triển ngơn ngữ lập trình vừa có tính truyền thống, vừa có tính đại Ngày nay, với tiến khoa học công nghệ, người ta sử dụng cơng cụ hình thức cho phép giảm nhẹ cơng việc lập trình từ lúc phân tích, thiết kế sử dụng ngơn ngữ lập trình I.1.2 Định nghĩa ngơn ngữ lập trình Các ngơn ngữ lập trình bậc cao xây dựng mô ngôn ngữ tự nhiên, thường tiếng Anh (hoặc tiếng Nga năm trước đây) Định nghĩa ngơn ngữ lập trình định nghĩa văn phạm (grammar) để sinh câu ngơn ngữ Có thể hình dung văn phạm gồm bốn thành phần : ký tự, từ vựng, cú pháp ngữ nghĩa Bộ ký tự (character set) Gồm số hữu hạn ký tự (hay ký hiệu) phép dùng ngôn ngữ Trong máy tính cá nhân, người ta thường sử dụng ký tự ASCII Có thể hiểu ký tự có vai trị bảng chữ (alphabet) ngôn ngữ tự nhiên để tạo từ (word) Bộ từ vụng (vocabulary) Gồm tập hợp từ, hay đơn vị từ vựng (token), xây dựng từ ký tự Các từ dùng để tạo thành câu lệnh chương trình phân loại tuỳ theo vai trò chức chúng ngơn ngữ Chẳng hạn chương trình Pascal sau : program P; var, y : integer; begin read(x); y:=x+2; write(y) end gồm đơn vị từ vựng : • Từ khoá (keyword), hay từ dành riêng (reserved word) : program, var, integer, begin, end • Tên, hay định danh (identifier) : read, write, P, x, y • Hằng (constants) : • Phép tốn (operators) : + , := • Dấu phân cách (delimiters) : :, (, ), NGUYÊN LÝ LẬP TRÌNH HÀM 3 Cú pháp (syntax) Cú pháp quy định cách thức kết hợp ký tự thành từ, kết hợp từ thành câu lệnh (statement hay instruction), kết hợp câu lệnh thành chương trình hồn chỉnh mặt văn phạm Có thể hình dung cách kết hợp giống cách đặt câu ngôn ngữ tự nhiên Thường người ta dùng sơ đồ cú pháp (syntax diagram) dạng chuẩn Backus-Naur (Backus-Naur Form, viết tắt BNF), dạng chuẩn Backus-Naur mở rộng (EBNF− Extended Backus-Naur Form) để mô tả cú pháp văn phạm Ví dụ I.1.1 : Trong ngôn ngữ Pascal (hoặc phần lớn ngôn ngữ lập trình), tên gọi, hay định danh (identifier) có sơ đồ cú pháp sau : tên số chữ chữ chữ số A Z a z Hình I.1 Sơ đồ cú pháp tên ngơn ngữ Pascal Trong sơ đồ cú pháp, ô hình chữ nhật phải thay hình trịn Q trình thay thực thứ tự theo chiều mũi tên nhận câu Chẳng hạn «đọc» sơ đồ sau : tên phải bắt đầu chữ, chữ số tuỳ ý, chữ chũ A Za z, số chũ số Như vậy, Delta, x1, x2, Read, v.v tên viết đúng, 1A,β,π, bán kính, v.v khơng phải tên vi phạm quy tắc cú pháp Văn phạm BNF gồm dãy quy tắcc Mỗi quy tắc gồm vế trái, dấu định nghĩa ::= (đọc định nghĩa bởi) vế phải Vế trái ký hiệu phải định nghĩa, vế phải dãy ký hiệu, thừa nhận, định nghĩa từ trước đó, tuân theo quy ước EBNF dùng ký tự quy ước sau : Ký hiệu Ý nghĩa định nghĩa ::=, hoặc→, = chuỗi hay nhiều mục liệt kê tuỳ chọn (option) {} hoặc mục liệt kê tuỳ chọn [] mục liệt kê phải thay (theo nghĩa loại trừ) | Các quy tắc BNF định nghĩa tên ngôn ngữ Pascal : ::= { | } ::= 'A' | | 'Z' | 'a' | | 'z' ::= '0' | | '9' Ví dụ I.1.2 Văn phạm ngơn ngữ lập trình đơn giản dạng EBNF sau : ::= program * end ::= | ::= := ; LẬP TRÌNH HÀM ::= while + done ::= | + | SomeType ; x: integer := n + begin return Q(3*x + 1) % mô x := x * + end ; đó, hàm Q định nghĩa sau : function Q(x: integer)−> Some Type begin return * g(x) end ; Ta sử dụng kỹ thuật cho biến toàn cục Như vậy, việc mơ lập trình mệnh lệnh ngơn ngữ hàm khơng phải cách mong muốn, làm Một vấn để bật ngôn ngữ hàm thay đổi cấu trúc liệu Trong ngôn ngữ mệnh lệnh, thay đổi phần tử mảng đơn giản Trong ngôn ngữ hàm, mảng bị thay đổi Người ta phải chép mảng, trừ phần tử bị thay đổi, thay giá trị cho phần tử Cách tiếp cận hiệu so với phép gán cho phần tử Một vấn đề khác lập trình hàm khả hạn chế giao tiếp hệ thống tương tác với hệ điều hành với người sử dụng Tuy nhiên nay, người ta có xu hướng tăng cường thư viện hàm mẫu xử lý hướng đối tượng giao diện đồ hoạ (GUI-Graphic User Interface) Chẳng hạn phiên thông dịch họ Lisp DrScheme, MITScheme, WinScheme ... nghĩa từ trước đó, tu? ?n theo quy ước EBNF dùng ký tự quy ước sau : Ký hiệu Ý nghĩa định nghĩa ::=, hoặc→, = chuỗi hay nhiều mục liệt kê tu? ?? chọn (option) {} hoặc mục liệt kê tu? ?? chọn [] mục liệt... hàm khả hạn chế giao tiếp hệ thống tư? ?ng tác với hệ điều hành với người sử dụng Tuy nhiên nay, người ta có xu hướng tăng cường thư viện hàm mẫu xử lý hướng đối tư? ??ng giao diện đồ hoạ (GUI-Graphic... giải phóng chúng Ngơn ngữ Miranda cịn có kiểu liệu tuple tư? ?ng tự kiểu ghi Pascal Đó dãy phần tử khơng có kiểu (danh sách dãy phần tử có kiểu tư? ?ng tự kiểu mảng array) viết cặp dấu ngoặc Ví dụ

Ngày đăng: 23/08/2016, 16:24

w