Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 87 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
87
Dung lượng
663,53 KB
Nội dung
TRƯỜNG THCS & THPT ĐỐNG ĐA TRẦN QUANG VĨNH CHÁNH Tin học 11 Chương I Một số khái niệm lập trình ngơn ngữ lập trình Khái niệm sở lập trình; 18 Khái niệm thành phần ngơn ngữ lập trình; Vai trị phân loại chương trình dịch 19 KHÁI NIỆM LẬP TRÌNH VÀ NGƠN NGỮ LẬP TRÌNH Như biết, tốn có thuật tốn giải máy tính điện tử Khi giải tốn máy tính điện tử, sau bước xác định toán xây dựng lựa chọn thuật tốn khả thi bước lập trình Lập trình sử dụng cấu trúc liệu câu lệnh ngơn ngữ lập trình cụ thể để mơ tả liệu diễn đạt thao tác thuật tốn Chương trình viết ngơn ngữ lập trình bậc cao nói chung khơng phụ thuộc vào máy, nghĩa chương trình thực nhiều máy Chương trình viết ngơn ngữ máy nạp trực tiếp vào nhớ thực cịn chương trình viết ngơn ngữ lập trình bậc cao phải chuyển đổi thành chương trình ngơn ngữ máy thực Chương trình đặc biệt có chức chuyển đổi chương trình viết ngơn ngữ lập trình bậc cao thành chương trình thực máy tính cụ thể gọi chương trình dịch Chương trình dịch nhận đầu vào chương trình viết ngơn ngữ lập trình bậc cao (chương trình nguồn) thực chuyển đổi sang ngơn ngữ máy (chương trình đích) Chương trình nguồn Chương trình dịch Chương trình đích Xét ví dụ, bạn biết tiếng Việt cần giới thiệu trường cho đồn khách đến từ nước Mĩ, biết tiếng Anh Có hai cách để bạn thực điều Cách thứ nhất: Bạn nói tiếng Việt người phiên dịch giúp bạn dịch sang tiếng Anh Sau câu vài câu giới thiệu trọn ý, người phiên dịch dịch sang tiếng Anh cho đoàn khách Sau đó, bạn lại giới thiệu tiếp người phiên dịch lại dịch tiếp Việc giới thiệu bạn việc dịch người phiên dịch luân phiên bạn kết thúc nội dung giới thiệu Cách dịch trực tiếp gọi thông dịch Cách thứ hai: Bạn soạn nội dung giới thiệu giấy, người phiên dịch dịch tồn nội dung sang tiếng Anh đọc trao văn dịch cho đoàn khách đọc Như vậy, việc dịch thực sau nội dung giới thiệu hồn tất Hai cơng việc thực hai khoảng thời gian độc lập, tách biệt Cách dịch gọi biên dịch Sau kết thúc, với cách thứ văn để lưu trữ, cịn với cách thứ hai có hai giới thiệu tiếng Việt tiếng Anh lưu trữ để dùng lại sau Tương tự vậy, chương trình dịch có hai loại thơng dịch biên dịch a) Thông dịch Thông dịch thực cách lặp lại dãy bước sau: Kiểm tra tính đắn câu lệnh chương trình nguồn; Chuyển đổi câu lệnh thành hay nhiều câu lệnh tương ứng ngôn ngữ máy; Thực câu lệnh vừa chuyển đổi 20 Như vậy, trình dịch thực câu lệnh Các chương trình thơng dịch dịch thực câu lệnh Loại chương trình dịch đặc biệt thích hợp cho mơi trường đối thoại người hệ thống Tuy nhiên, câu lệnh phải thực lần phải dịch nhiêu lần Các ngơn ngữ khai thác hệ quản trị sở liệu, ngôn ngữ đối thoại với hệ điều hành, sử dụng trình thơng dịch b) Biên dịch Biên dịch thực qua hai bước: Duyệt, kiểm tra, phát lỗi, kiểm tra tính đắn câu lệnh chương trình nguồn; Dịch tồn chương trình nguồn thành chương trình đích thực máy lưu trữ để sử dụng lại cần thiết Như vậy, thông dịch, khơng có chương trình đích để lưu trữ, biên dịch chương trình nguồn chương trình đích lưu trữ lại để sử dụng sau Thơng thường, với chương trình dịch cịn có số dịch vụ liên quan biên soạn, lưu trữ, tìm kiếm, cho biết kết trung gian, Tồn dịch vụ tạo thành mơi trường làm việc ngơn ngữ lập trình cụ thể Ví dụ, Turbo Pascal 7.0, Free Pascal 1.2, Visual Pascal 2.1, ngôn ngữ Pascal, Turbo C++, Visual C++, ngôn ngữ C++ Các môi trường lập trình khác dịch vụ mà cung cấp, đặc biệt dịch vụ nâng cấp, tăng cường khả cho ngơn ngữ lập trình CÁC THÀNH PHẦN CỦA NGƠN NGỮ LẬP TRÌNH Các thành phần Mỗi ngơn ngữ lập trình thường có ba thành phần bảng chữ cái, cú pháp ngữ nghĩa a) Bảng chữ tập kí tự dùng để viết chương trình Khơng phép dùng kí tự ngồi kí tự quy định bảng chữ Trong C++, bảng chữ bao gồm kí tự: Các chữ thường chữ in hoa bảng chữ tiếng Anh: abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 10 chữ số thập phân Ả Rập: Các kí tự đặc biệt: + - * / = < > [ ] , (dấu phẩy) ; # ^ $ @ & ( ) { } : ' (dấu nháy) dấu cách (mã ASCII 32) _ (dấu gạch dưới) 21 Bảng chữ ngơn ngữ lập trình nói chung khơng khác nhiều Ví dụ, bảng chữ ngơn ngữ lập trình C++ khác Pascal có sử dụng thêm kí tự dấu nháy kép ("), dấu sổ ngược (\), dấu chấm than (!) b) Cú pháp quy tắc để viết chương trình Dựa vào chúng, người lập trình chương trình dịch biết tổ hợp kí tự bảng chữ hợp lệ tổ hợp khơng hợp lệ Nhờ đó, mơ tả xác thuật tốn để máy thực c) Ngữ nghĩa xác định ý nghĩa thao tác cần phải thực hiện, ứng với tổ hợp kí tự dựa vào ngữ cảnh Ví dụ Phần lớn ngơn ngữ lập trình sử dụng dấu cộng (+) để phép cộng Xét biểu thức: A+B (1) I+J (2) Giả thiết A, B đại lượng nhận giá trị thực I, J đại lượng nhận giá trị nguyên Khi dấu "+" biểu thức (1) hiểu cộng hai số thực, dấu "+" biểu thức (2) hiểu cộng hai số nguyên Như vậy, ngữ nghĩa dấu "+" hai ngữ cảnh khác khác Tóm lại, cú pháp cho biết cách viết chương trình hợp lệ, ngữ nghĩa xác định ý nghĩa tổ hợp kí tự chương trình Các lỗi cú pháp chương trình dịch phát thơng báo cho người lập trình biết Chỉ có chương trình khơng cịn lỗi cú pháp dịch sang ngơn ngữ máy Các lỗi ngữ nghĩa khó phát Phần lớn lỗi ngữ nghĩa phát thực chương trình liệu cụ thể Một số khái niệm a) Tên Mọi đối tượng chương trình phải đặt tên theo quy tắc ngơn ngữ lập trình chương trình dịch cụ thể Trong Turbo Pascal tên dãy liên tiếp khơng q 127 kí tự bao gồm chữ số, chữ dấu gạch bắt đầu chữ dấu gạch Trong chương trình dịch C++, tên có phân biệt chữ hoa, chữ thường Quy tắc đặt tên lớp, biến, phương thức hàm : Các tên định kiểu, tên lớp bắt đầu với chữ hoa, viết liền từ, ví dụ Node, EvenHandler,… Các tên biến tên hàm, phương thức bắt đầu chữ thường, từ viết nối liền vào bắt đầu chữ hoa, ví dụ node, myVar, myMethod(), evenHandler, getName()… Các cụm từ viết tắt khơng dùng chữ hoa cịn từ khác sau nó, chẳng hạn thay đặt tên hàm exportHTMLSource() ta dùng tên exportHtmlSource() 22 Các hàm phương thức nên có tên chứa động từ cho biết mục đích cụ thể nó, ví dụ với phương thức kiểm tra xem chuỗi nhập vào có phải chữ số hay không, tên gọi stringIsNumbers(char* testString) dễ hiểu tên gọi mơ hồ checkString(char* testString) Tránh sử dụng tên bắt đầu hay hai dấu gạch dưới, dễ dẫn tới xung đột với biến theo tiêu chuẩn hệ thống Với project lớn, cần thêm tiền tố xác định phạm vi biến: o m : biến thành viên lớp o g : biến toàn cục o c : biến tĩnh lớp (bao gồm số) o : biến cục Nhiều ngơn ngữ lập trình, có C++, phân biệt ba loại tên: Tên dành riêng; Tên chuẩn; Tên người lập trình đặt Tên dành riêng Một số tên ngôn ngữ lập trình quy định dùng với ý nghĩa xác định, người lập trình khơng sử dụng với ý nghĩa khác Những tên gọi tên dành riêng (còn gọi từ khố) Ví dụ Một số tên dành riêng: Trong Pascal: program, uses, const, type, var, begin, end Trong C++: main, include, if, while, void Tên chuẩn Một số tên ngơn ngữ lập trình dùng với ý nghĩa Những tên gọi tên chuẩn Tuy nhiên, người lập trình khai báo dùng chúng với ý nghĩa mục đích khác Ý nghĩa tên chuẩn quy định thư viện ngơn ngữ lập trình Ví dụ Một số tên chuẩn - Trong Pascal: abs integer real sqr longint extended sqrt byte break cin cout getchar - Trong C++: 23 Tên người lập trình đặt Tên người lập trình đặt dùng với ý nghĩa riêng, xác định cách khai báo trước sử dụng Các tên không trùng với tên dành riêng Ví dụ Tên người lập trình đặt: A1 DELTA CT_Vidu b) Hằng biến Hằng Hằng đại lượng có giá trị khơng thay đổi trình thực chương trình Hằng số học số nguyên hay số thực (dấu phẩy tĩnh dấu phẩy động), có dấu khơng dấu Hằng lôgic giá trị sai tương ứng với true false Hằng xâu chuỗi kí tự bảng chữ Khi viết, chuỗi kí tự đặt cặp dấu nháy (Pascal dùng dấu nháy đơn, cịn C++ dùng dấu nháy kép) Ví dụ - Hằng số học: 1.5 -5 +18 -22.36 +3.14159 0.5 -2.236E01 1.0E-6 - Hằng logic: TRUE FALSE - Hằng xâu: + Trong Pascal: 'Informatic' 'TIN HOC' + Trong C++: "Informatic" "TIN HOC" Biến Biến đại lượng đặt tên, dùng để lưu trữ giá trị giá trị thay đổi q trình thực chương trình Tuỳ theo cách lưu trữ xử lí, C++ phân biệt nhiều loại biến Các biến dùng chương trình phải khai báo Việc khai báo biến trình bày phần sau c) Chú thích Có thể đặt đoạn thích chương trình nguồn Các thích giúp cho người đọc chương trình nhận biết ngữ nghĩa chương trình dễ Chú thích khơng ảnh hưởng đến nội dung chương trình nguồn chương trình dịch bỏ qua Cách tạo thích C++ đặt chúng cặp dấu /* */ 24 TÓM TẮT Cần có chương trình dịch để chuyển chương trình nguồn thành chương trình đích Có hai loại chương trình dịch: thông dịch biên dịch Các thành phần ngơn ngữ lập trình: bảng chữ cái, cú pháp ngữ nghĩa Mọi đối tượng chương trình phải đặt tên: o Tên dành riêng: Được dùng với ý nghĩa riêng, không dùng với ý nghĩa khác o Tên chuẩn: Tên dùng với ý nghĩa định, cần dùng với ý nghĩa khác phải khai báo o Tên người lập trình đặt: cần khai báo trước sử dụng Hằng: Đại lượng có giá trị khơng thay đổi q trình thực chương trình Biến: Đại lượng đặt tên Giá trị biến thay đổi trình thực chương trình CÂU HỎI VÀ BÀI TẬP Tại người ta phải xây dựng ngơn ngữ lập trình bậc cao? Chương trình dịch gì? Tại cần phải có chương trình dịch? Biên dịch thông dịch khác nào? Hãy cho biết điểm khác tên dành riêng tên chuẩn Hãy tự viết ba tên theo quy tắc C++ có độ dài khác Hãy cho biết biểu diễn biểu diễn C++ rõ lỗi trường hợp: a) 150.0 e) A20 i) 'TRUE' b) -22 f) 1.06E-15 c) 6,23 g) 4+6 d) '43' h) 'C 25 Chương II Chương trình đơn giản Cấu trúc chương trình; Các kiến thức kiểu liệu, phép toán, biểu thức, câu lệnh gán, tổ chức vào/ra đơn giản; Cách thực chương trình mơi trường C++ 26 CẤU TRÚC CHƯƠNG TRÌNH Cấu trúc chung Nói chung, chương trình viết ngơn ngữ lập trình bậc cao thường gồm phần khai báo phần thân Phần thân chương trình thiết phải có Phần khai báo có khơng tuỳ theo chương trình cụ thể Khi diễn giải cú pháp ngơn ngữ lập trình người ta thường sử dụng ngôn ngữ tự nhiên Các diễn giải ngôn ngữ tự nhiên đặt cặp dấu < > Các thành phần chương trình có khơng đặt cặp dấu [ ] Với quy ước trên, cấu trúc chương trình mơ tả sau: [< phần khai báo >] Các thành phần chương trình a) Phần khai báo Có thể có khai báo cho: thư viện, không gian tên,hằng, biến Khai báo thư viện Mỗi ngơn ngữ lập trình thường có sẵn số thư viện cung cấp số chương trình thơng dụng lập sẵn Để sử dụng chương trình cần khai báo thư viện chứa Ví dụ Khai báo thư viện #include Thư viện stdio.h C++ cung cấp chương trình có sẵn để làm việc với hình văn bàn phím Ví dụ, muốn xố có hình,: - Trong C++, sau khai báo thư viện stdio.h, ta dùng lệnh: clrscr(); Khai báo Ví dụ Khai báo const MaxN = 1000; const PI = 3.1416; Khai báo thường sử dụng cho giá trị xuất nhiều lần chương trình Khai báo khơng gian tên Nhờ vào namespace, ta nhóm thực thể lớp, đối tượng hàm tên gọi tương ứng với từ khóa namespace Theo cách này, phạm vi toàn cục lại 27 for(int i=1;i>m>>n>>p>>q; luythua1 =1; for(i=1;i