Giáo trình Lý thuyết ngôn ngữ lập trình (Nghề Lập trình máy tính): Phần 1 do Tổng cục dạy nghề biên soạn nhằm cung cấp cho bạn những kiến thức về sơ đồ mối liên hệ giữa các mô đun và môn học trong chương trình, giới thiệu tổng quan về ngôn ngữ lập trình, các loại dữ liệu cấu trúc. Mời các bạn tham khỏa!
BỘ LAO ĐỘNG - THƯƠNG BINH VÀ XÃ HỘI TỔNG CỤC DẠY NGHỀ Dự án giáo dục kỹ thuật dạy nghề (VTEP) GIÁO TRÌNH Mơ đun: LÝ THUYẾT NGƠN NGỮ LẬP TRÌNH Mã số: ITPRG06 NGHỀ: LẬP TRÌNH MÁY TÍNH Trình độ : Cao đẳng nghề NĂM 2012 Tun bố quyền : Tài liệu thuộc loại sách giáo trình Cho nên nguồn thơng tin phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác có ý đồ lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm Tổng Cục Dạy nghề làm cách để bảo vệ quyền Tổng Cục Dạy Nghề cám ơn hoan nghênh thông tin giúp cho việc tu sửa hoàn thiện tốt tàI liệu Địa liên hệ: Dự án giáo dục kỹ thuật nghề nghiệp Tiểu Ban Phát triển Chương trình Học liệu ……………………………………………… LỜI TỰA Đây tài liệu xây dựng theo chương trình dự án giáo dục kỹ thuật dạy nghề, để có đươc giáo trình dự án tiến hành theo hai giai đoạn Giai đoạn : Xây dựng chương trình theo phương pháp DACUM, kết gian đoạn khung chương trình gồm 230 trang cấp độ 170 trang cấp độ Giai đoạn : 29 giáo trình 29 tài liệu hướng dẫn giáo viên cho nghề lập trình máy tính cấp độ Để có khung chương trình chúng tơi mời giáo viên, chuyên gia làm việc lĩnh vực cơng nghệ thơng tin xây dựng chương trình Trong giai đoạn viết giáo trình chúng tơi có điều chỉnh để giáo trình có tính thiết thực phù hợp với phát triển lĩnh vực cơng nghệ thơng tin Trong q trình biên soạn, cố gắng tham khảo nhiều tài liệu giáo trình khác tác giả khơng khỏi tránh thiếu sót hạn chế Tác giả chân thành mong đợi nhận xét, đánh giá góp ý để giáo trình ngày hồn thiện Tài liệu thiết kế theo mô đun/ môn học thuộc hệ thống mô đun/môn học chương trình, để đào tạo hồn chỉnh nghề Lập trình máy tính cấp trình độ lành nghề dùng làm Giáo trình cho học viên khố đào tạo, sử dụng cho đào tạo ngắn hạn cho công nhân kỹ thuật, nhà quản lý người sử dụng nhân lực tham khảo Đây tài liệu thử nghiệm hồn chỉnh để trở thành giáo trình thức hệ thống dạy nghề MỤC LỤC ĐỀ MỤC TRANG 01 LỜI TỰA 02 MỤC LỤC 03 GIỚI THIỆU VỀ MÔN HỌC 04 SƠ ĐỒ MỐI LIÊN HỆ GIỮA CÁC MÔ ĐUN VÀ MÔN HỌC TRONG CHƯƠNG TRÌNH 05: U CẦU ĐÁNH GIÁ HỒN THÀNH MÔN HỌC 06: BÀI 01: GIỚI THIỆU TỔNG QUAN VỀ NGƠN NGỮ LẬP TRÌNH 07: BÀI 02: CÁC LOẠI DỮ LIỆU CUẤ TRÚC 24 08: BÀI 03: HÀM THỦ TỤC 61 09: BÀI 04: ĐẶC TRƯNG CÚ PHÁP VÀ NGỮ NGHĨA TRƯƠNG TRÌNH 74 10: BÀI 05: ĐẶC TRƯNG LẬP TRÌNH CÂU LỆNH(LẬP TRÌNH THỦ TỤC) 85 11: BÀI 06: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 95 12: BÀI 07: LẬP TRÌNH LOGIC VÀ LẬP TRÌNH HÀM 103 13: BÀI 08: LẬP TRÌNH SONG SONG 118 14: BÀI 09: CÁC PHƯƠNG PHÁP NGƠN NGỮ LẬP TRÌNH KHÁC 120 15: BÀI 10: PHÂN TÍCH CÚ PHÁP VÀ TRƯƠNG TRÌNH DỊCH 125 16.THUẬT NGỮ CHUYÊN NGÀNH 137 17.TÀI LIỆU THAM KHẢO 140 GIỚI THIỆU VỀ MƠN HỌC Vị trí, ý nghĩa, vai trị mơn học Trong lĩnh vực cơng nghệ thơng tin, khơng thể khơng nói đến ngụn ngữ lập trỡnh Bởi vỡ, chỳng cụng cụ cần thiết giỳp cho chỳng ta làm việc giao tiếp với mỏy tớnh điện tử Vỡ vậy, việc nắm khái niệm ngôn ngữ lập trỡnh cần thiết làm việc lĩnh vực cụng nghệ thụng tin cỏc lĩnh vực cú ứng dụng cụng nghệ thụng tin Mục tiêu môn học Sau học xong môn học học viên có khả năng: Nắm khái niệm ngôn ngữ lập trỡnh chung, hiểu thành phần ngôn ngữ lập trỡnh, biết phõn biệt cỏc đặc trưng khác ngôn ngữ lập trỡnh, nắm rừ cấu trỳc, quy trỡnh thực ngụn ngữ lập trỡnh, nắm xu hướng phát triển ngôn ngữ lập trỡnh đại biết cách lựa chọn ngơn ngữ thích hợp để viết chương trỡnh ứng dụng cụ thể Mục tiêu thực môn học Học xong môn học học viên có khả năng: Phân tích tốn thành thành phần cấu trúc chương trình Phân tích chương trình nguồn thành ứng dụng kỹ thuật lập trình để giải tốn ứng dụng Đánh giá chất lượng chương trình Lựa chọn ngơn ngữ thích hợp cho lập trình ứng dụng Mơ tả cấu trúc liệu cho toán Xây dựng thủ tục, hàm thực chức ngôn ngữ lập trình Hiểu rõ ngun nhân sai sót biên tập chương trình, dịch thực chương trình Nội dung mơn học Lịch sử ngơn ngữ lập trình Giới thiệu tổng quan Ngơn ngữ lập trình Các loại liệu cấu trúc Hàm thủ tục Đặc trưng cú pháp chương trình Đặc trưng ngữ nghĩa chương trình Đặc trưng lập trình câu lệnh Đặc trưng lập trình hướng đối tượng Ngơn ngữ lập trình hướng đối tượng Đặc trưng lập trình logic Đặc trưng lập trình Hàm Đặc trưng lập trình song song Logic có ký hiệu hàm Các phương pháp lập trình khác Vấn đề dịch ngơn ngữ Dịch ngơn ngữ cấp cao Lập trình di động (Mobile Code) SƠ ĐỒ MỐI LIÊN HỆ GIỮA CÁC MƠ ĐUN VÀ MƠN HỌC TRONG CHƯƠNG TRÌNH Học kỳ I Hệ thống máy tính Học kỳ II Giao diện người máy Lập trình Học kỳ III Lập trình nâng cao Lập trình hướng đối tượng Mạng Cấu trúc liệu thuật giải Kỹ tin học văn phòng Kỹ Giao tiếp Lập trình Visual Basic Mơi trường PT Phần mềm Anh văn cho tin học Phần cứng máy tính Phân tích thiết kế hệ thống Thiết kế hướng đối tượng Cơ sở liệu Công nghệ phần mềm Kỹ Công nghệ Đa phương tiện Lập trình Web Ứng dụng CNTT doanh nghiệp Internet & WWW Cơ sở toán học Học kỳ IV Thiết kế Web Quản lý dự án phần mềm Hệ sở liệu Hướng dẫn đồ án tốt nghiệp An toàn lao động Thi tốt nghiệp Trang U CẦU VỀ ĐÁNH GIÁ HỒN THÀNH MƠN HỌC Kỹ thực hành: - Sử dụng thành thạo phần mềm hỗ trợ thiết kế, hiểu ngôn ngữ lập trình - Lập tài liệu phân tích thiết kế - Hiểu kiểu liệu loại ngơn ngữ lập trình Thái độ học viên: - Cẩn thận lắng nghe ý kiến thảo luận nhóm thiết kế - Học viên cần tuân thủ tập thực hành theo thứ tự chương, từ dễ đến khó Đánh giá thơng qua kiểm tra trắc nghiệm: - Dùng phần mềm thi trắc nghiệm - Kiểm tra trắc nghiệm giấy máy tính - Xây dựng ngân hàng câu hỏi, học viên nhận để phát sinh ngẫu nhiên chất lượng đề (trung bình, khá, giỏi, xuất sắc) - Thời gian làm tuỳ theo số lượng câu đề - Thang điểm 10 chia cho câu - Kết đánh giá dựa vào làm theo điểm đạt Thực hành: Đánh giá thơng qua khả giải hồn thành chương trình (đề kiểm tra) đề Thang điểm: (đánh giá câu hỏi trắc nghiệm) 0-49 : Không đạt 50-69 : Đạt trung bình 70-85 : Đạt 86-100 : Đạt Giỏi Bài TÊN BÀI:GIỚI THIỆU TỔNG QUAN VỀ NGƠN NGỮ LẬP TRÌNH Mã bài : ITPRG3-06.1 Giới thiệu Trong lĩnh vực cơng nghệ thơng tin, khơng thể khơng nói đến ngơn ngữ lập trình Bởi vì, chúng công cụ cần thiết giúp cho làm việc giao tiếp với máy tính điện tử Vì vậy, việc nắm khái niệm ngơn ngữ lập trình cần thiết làm việc lĩnh vực công nghệ thông tin lĩnh vực có ứng dụng cơng nghệ thông tin Mục tiêu thực - Nắm khái niệm ngơn ngữ lập trình - Hiểu lịch sử phát triển ngôn ngữ lập trình - Đánh giá sơ ngơn ngữ lập trình - Xác định lĩnh vực ứng dụng ngơn ngữ lập trình Nội dung Giới thiệu lịch sử phát triến ngơn ngữ lập trình khái niệm chúng Chỉ yếu tố ảnh hưởng đến phát triển ngơn ngữ lập trình lĩnh vực ứng dụng ngôn ngữ lập trình I Lịch sử phát triển ngơn ngữ lập trình Nhữ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ệ nhị phân, hay bit (binary digit) Ngôn ngữ máy phụ thuộc vào hoàn toàn 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ậ 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 bit nhị phân nên gặp nhiều khó khăn, mệt nhọc, dễ gặp phải sai sót, 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 Như thế, nhận thấy vào giai đoạn sơ khai ban đầu máy tính điện tử, việc sử dụng máy tính khó khăn, ngơn ngữ lập trình phương tiện giao tiếp lại phức tạp người sử dụng Người sử dụng máy tính vào giai đoạn chuyên gia tin học Như thế, ứng dụng máy tính điện tử cịn hạn chế II Sự đời thúc đẩy ngơn ngữ lập trình Cũng từ năm 1950, ngôn ngữ hợp dịch, hay hợp ngữ (assembly) đời Trong hợp ngữ, mã lệnh địa toán hạng thay từ gợi nhớ, ADD, SUB, JUMP, … tương ứng với phép toán số học +, -, lệnh chuyển điều khiển, … Do máy tính hiểu ngơn ngữ máy, chương trình viết hợp ngữ 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 nhiều vào phần cứng xa lạ với ngơn ngữ tự nhiên, người lập trình gặp nhiều khó khăn giải tốn máy tính, đặc biệt tốn tương đối lớn 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 vớ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 tố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) vào năm 1960, COBOL (Common Business Oriented Language) vào năm 1964, Simula vào năm 1964, … Theo phát triển máy tính điện tử, ngơn ngữ lập trình khơng ngừng cải tiến hoàn thiện đẻ ngày đáp ứng nhu cầu người sử dụng làm giảm nhẹ cơng việc lập trình Sự phát triển ngơn ngữ lập trình làm xích gần lại “khoảng cách” người sử dụng máy tính, nghĩa máy tính khơng cịn sử dụng chuyên gia tin học mà sử dụng nhiều người nhiều lĩnh vực khác Rất nhiều ngơn ngữ lập trình đời tảng lý thuyết tính tốn hình thành nên hai loại ngơn ngữ lập trình: 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) gồm 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ị, … Các ngôn ngữ 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 khoa học máy tính đưa vào Lĩnh vực nghiên cứu 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 xây dựng hệ thống chương trình từ phân tích, thiết kế sử dụng ngơn ngữ lập trình Chúng ta có cài nhìn tồn cảnh lích sử ngơn ngữ lập trình qua hình vẽ đây: 10 printf("\nBan co chac khong (c/k): "); c = getche(); if(c == 'c' || c == 'C') clearlist(L); break; } } } while(chucnang != 0); } Ví dụ 21: Viết chương trình tạo mảng điểm ngẫu nhiên (dùng cấu trúc điểm) Kiểm tra xem điểm phát sinh có thỏa mãn 2x+4y>20 Nhập r bán kính đường tròn tâm Kiểm tra xem điểm phát sinh có nằm đường trịn hay khơng? In kết lên hình #include"stdio.h" #include"stdlib.h" #define Max 100 typedef struct { int x,y; }toa_do; toa_do M[Max]; unsigned char k; int r; char tim_thay; void khoi_tao() { randomize(); for (k=0; k