Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 90 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
90
Dung lượng
1,37 MB
Nội dung
SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA TRƯỜNG THPT CHU VĂN AN - GIÁO TRÌNH TIN HỌC 11 Thanh Hóa, tháng năm 2021 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; 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 §1 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 toá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 này 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 đồ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ứ khơng có 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 (interpreter) 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 Như vậy, trình dịch thực câu lệnh luân phiên 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 (compiler) 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 về 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, Toà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 Bài đọc thêm 1: Em có biết AI LÀ LẬP TRÌNH VIÊN ĐẦU TIÊN? Đó phụ nữ, bà Ada Augusta Byron Lovelace, gái nhà thơ tiếng thời Lord Byron Ada nhân vật ấn tượng lịch sử Tin học Bà sinh ngày 10/12/1815 người thời với Charles Babbage, người đưa đề án thiết kế máy tính điều khiển theo chương trình có tên Analytical Engine (máy giải tích) Từ nhỏ, bà tiếng người thông minh, có khả đặc biệt tốn học Ngay từ thiết kế máy giải tích cịn giấy, Ada đề xuất với Babbage kế hoạch chi tiết để máy giải tích tính số Bernouilli Ngày người ta coi kế hoạch chương trình máy tính bà gọi lập trình viên Ada Augusta Byron Lovelace Các ghi chép công bố Ada đặc biệt có ý nghĩa lập trình viên Giáo sư J Von Neumann viết quan sát Ada "chứng tỏ bà hiểu ngun tắc lập trình máy tính trước thời đại hàng kỉ" Như nhà tốn học, Ada đánh giá cao khả tự động hố cơng việc tính tốn nặng nhọc Nhưng bà quan tâm đến nguyên tắc việc lập trình thiết bị Ngay máy giải tích cịn chưa xây dựng, Ada thí nghiệm viết dãy lệnh Bà nhận giá trị vài thủ thuật đặc biệt nghệ thuật điều thú vị thủ thuật ngơn ngữ lập trình đại, chương trình con, vịng lặp phép chuyển điều khiển Thay cho việc viết dãy lệnh lặp lặp lại nhiều lần, ta viết chúng dạng chương trình để dùng nhiều lần Các chương trình ngày thành phần thiếu ngôn ngữ lập trình Máy giải tích máy tính số thực tốt tính tốn nhiều lần cách nhanh chóng Thời kì đó, bìa đục lỗ sử dụng để đưa liệu lệnh vào máy Bằng việc phát minh lệnh thực việc chuyển thiết bị đọc bìa bìa xác định trước nó, cho dãy lệnh thực số lần định, Ada phát minh vòng lặp – cấu trúc điều khiển quan trọng ngơn ngữ lập trình Khả lôgic Ada phát huy với phép chuyển điều khiển có điều kiện Bà nghĩ loại lệnh để thao tác với thiết bị đọc bìa, thay cho việc quay lại lặp lại dãy bìa, lệnh cho phép thiết bị đọc bìa chuyển tới bìa khác vị trí dãy, NẾU điều kiện thoả mãn Việc thêm chữ NẾU vào danh sách lệnh số học tuý trước có nghĩa chương trình làm nhiều tính tốn đơn Ở dạng thô sơ tiềm có ý nghĩa, máy giải tích thực quyết định Ada năm 1852, qua tuổi 36 Nếu bà không qua đời sớm vậy, chắn khoa học lập trình kỉ XIX tiến nhanh nhiều Để tưởng nhớ cơng lao Ada, ngơn ngữ lập trình Bộ Quốc phòng Mĩ tạo năm 1979 mang tên bà §2 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) 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() 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 - Trong C++: cin cout getchar 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 q trình thực chương trình Trong ngơn ngữ lập trình thường có số học, lơgic, xâu 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 hoặc 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++ dùng dấu nháy kép) Ví dụ - Hằng số học: -5 +18 1.5 -22.36 +3.14159 0.5 -2.236E01 1.0E-6 - Hằng lôgic: + Trong Pascal: TRUE FALSE - Hằng xâu: + Trong Pascal: 'Informatic' 'TIN HOC' + Trong C++: "Informatic" "TIN HOC" Chú ý: Hằng dấu nháy đơn C++ viết ''' 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í, Pascal 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 Trong Pascal đoạn thích đặt cặp dấu { } (* *) Một cách tạo thích C++ đặt chúng cặp dấu /* và */; // 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 q 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 b) -22 c) 6,23 d) '43' e) A20 f) 1.06E-15 g) 4+6 h) 'C i) 'TRUE' Bài đọc thêm 2: Em có biết AI LÀ TÁC GIẢ CỦA NGƠN NGỮ C++? C++ là loại ngơn ngữ lập trình Đây dạng ngơn ngữ đa mẫu hình tự có kiểu tĩnh và hỗ trợ lập trình thủ tục, dữ liệu trừu trượng, lập trình hướng đối tượng, và lập trình đa hình Từ thập niên 1990, C++ trở thành ngôn ngữ thương mại phổ biến Bjarne Stroustrup của Bell Labs đã phát triển C++ (mà tên nguyên thủy "C với các lớp" suốt thập niên 1980 nâng cao ngôn ngữ C Những bổ sung nâng cao bắt đầu với thêm vào khái niệm lớp, khái niệm hàm ảo, chồng tốn tử, đa kế thừa, tiêu bản, và xử lý ngoại lệ Tiêu chuẩn ngôn ngữ C++ thông qua năm 1998 như là ISO/IEC 14882:1998 Phiên lưu hành phiên bản 2003,ISO/IEC 14882:2003 Hiện tiêu chuẩn ngôn ngữ C++ là C++11 (ISO/IEC 14882:2011) Tổng quan kĩ thuật: Trong tiêu chuẩn 1998 của C++ có hai phần chính: phần ngơn ngữ cốt lõi và phần Thư viện chuẩn C++(STL - Standard Template Library) Phần thư viện lại bao gồm hầu hết thư viện tiêu chuẩn và phiên có điều chỉnh chút thư viện chuẩn C Nhiều thư viện C++ hữu không thuộc tiêu chuẩn là thư viện Boost Thêm vào đó, nhiều thư viện không theo tiêu chuẩn viết trong C một cách tổng qt sử dụng chương trình C++ Chức dẫn nhập C++ So với C, C++ tăng cường thêm nhiều tính năng, bao gồm: khai báo như mệnh đề, chuyển kiểu giống hàm,new/delete, bool, kiểu tham chiếu, const, hàm dòng (inline), đối số mặc định, tải hàm, vùng tên (namespace), lớp (bao gồm tất chức liên quan tới lớp kế thừa, hàm thành viên (phương pháp), hàm ảo, lớp trừu tượng, cấu tử), tải toán tử, tiêu bản, tốn tử ::, xử lí ngoại lệ, nhận dạng kiểu thời gian thi hành C++ tiến hành nhiều phép kiểm tra kiểu C nhiều trường hợp Câu lệnh giải bắt đầu với // nguyên phần của BCPL được tái sử dụng C++ Một số thành phần C++ sau thêm vào C, bao gồm const, inline, khai báo biến vòng lặpfor và giải kiểu C++ (sử dụng ký hiệu //) Tuy nhiên, C99 cũng bổ sung thêm số tính khơng có C++, ví dụ như macro với số đối số động Vì phát triển từ C, C++, thuật ngữ đối tượng có nghĩa là vùng nhớ như dùng C, phiên lớp hiểu phần lớn ngôn ngữ lập trình hướng đối tượng khác Ví dụ như: int i; Dịng định nghĩa đối tượng kiểu int (số nguyên), tức vùng nhớ sử dụng để lưu giữ biến i Thư viện C++ Thư viện chuẩn C++ dùng lại thư viện chuẩn C với số điều chỉnh nhỏ để giúp hoạt động tốt với ngơn ngữ C++ Một phận lớn khác thư viện C++ dựa trên Thư viện tiêu chuẩn (hay gọi STL - viết tắt từ chữ Standard Template Library) Thư viện có nhiều cơng cụ hữu dụng các thùng chứa (thí dụ như vector, danh sách liên kết và biến lặp (tổng quát hóa từ khái niệm con trỏ) để cung cấp thùng chứa truy cập giống truy cập mãng Xa nữa, bảng (đa) ánh xạ (mảng kết hợp) (đa) tập, tất cung cấp để xuất các giao diện tương thích Do đó, dùng tiêu để viết thuật toán tổng quát mà chúng làm việc với thùng chứa hay với dãy định nghĩa biến lặp Giống C, tính thư viện 10 ... 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. .. 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. .. khái niệm lập trình ngơn ngữ lập trình Khái niệm sở lập trình; 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 §1 KHÁI NIỆM LẬP TRÌNH VÀ NGƠN NGỮ LẬP TRÌNH Như