Mục tiêu của nó nhằm giúp các bạn sinh viên chuyên ngành có một tài liệu cô đọng dùng làm tài liệu học tập và nghiên cứu nhưng chúng tôi cũng không loại trừ toàn bộ các đối tượng khác tham khảo. Chúng tôi nghĩ rằng các bạn sinh viên thuộc các chuyên ngành khác và những người quan tâm đến lập trình sẽ tìm được những điều bổ ích trong quyển giáo trình này. Mặc dù chúng tôi đã rất cố gắng trong quá trình biên soạn nhưng chắc chắn giáo trình này sẽ còn nhiều thiếu sót và hạn chế. Rất mong nhận được sự đóng góp ý kiến quý báu của các sinh viên và bạn đọc để giáo trình ngày càng hoàn thiện hơn.
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT VĨNH LONG KHOA CƠNG NGHỆ THƠNG TIN GIÁO TRÌNH LẬP TRÌNH CĂN BẢN (BASIC PROGRAMMING) BIÊN SOẠN TH.S NGUYỄN VĂN HIẾU Vĩnh Long - 2017 LỜI NÓI ĐẦU - Để đáp ứng nhu cầu học tập nghiên cứu bạn sinh viên, đặc biệt sinh viên chuyên ngành Công nghệ thông tin, Khoa Công nghệ thông tin - Trường Đại học Sư phạm Kỹ thuật Vĩnh Long tiến hành biên soạn giáo trình, giảng chương trình học Giáo trình Lập trình biên soạn chủ yếu dựa " C++ Program Design – An Introduction to Programming and ObjectOriented Design " James P Cohoon and Jack W.Davidson Giáo trình biên soạn dựa kinh nghiệm giảng dạy nhiều năm mơn Lập trình giáo viên khoa chúng tơi Ngồi tham khảo nhiều tài liệu trường đại học nước Tài liệu biên soạn dựa theo đề cương chi tiết mơn học Lập trình Khoa Cơng nghệ thông tin Trường Đại học Sư phạm Kỹ thuật Vĩnh Long dùng cho sinh viên chuyên ngành Công nghệ thông tin bao gồm chương: Chương 1: Tổng quan ngôn ngữ C++ Chương 2: Các cấu trúc điều khiển Chương 3: Dữ liệu kiểu mảng Chương 4: Dữ liệu kiểu chuỗi Chương 5: Con trỏ hàm Chương 6: Dữ liệu kiểu cấu trúc Chương 7: Dữ liệu kiểu tập tin Mục tiêu nhằm giúp bạn sinh viên chun ngành có tài liệu đọng dùng làm tài liệu học tập nghiên cứu chúng tơi khơng loại trừ tồn đối tượng khác tham khảo Chúng nghĩ bạn sinh viên thuộc chuyên ngành khác người quan tâm đến lập trình tìm điều bổ ích giáo trình Mặc dù chúng tơi cố gắng q trình biên soạn chắn giáo trình cịn nhiều thiếu sót hạn chế Rất mong nhận đóng góp ý kiến quý báu sinh viên bạn đọc để giáo trình ngày hồn thiện Chân thành cảm ơn! Tác giả Trường ĐHSPKT Vĩnh Long Giáo trình mơn Lập trình CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ C++ - 1.1 KHÁI NIỆM VỀ LẬP TRÌNH 1.1.1 Giới thiệu chung Máy tính cơng cụ để giải hàng loạt toán lớn Một lời giải cho tốn gọi giải thuật hay thuật tốn (algorithm); mơ tả chuỗi bước cần thực để giải tốn Ví dụ: Bài toán xếp danh sách số theo thứ tự tăng dần Giải thuật toán là: Giả sử danh sách cho list1; ta tạo danh sách rỗng list2, để lưu danh sách xếp Lặp lặp lại cơng việc, tìm số nhỏ list1, xóa khỏi list1 thêm vào phần tử danh sách list2, list1 rỗng Giải thuật diễn giải thuật ngữ trừu tượng mang tính chất dễ hiểu Ngơn ngữ thật hiểu máy tính ngơn ngữ máy Chương trình diễn đạt ngôn ngữ máy gọi thực thi Một chương trình viết ngôn ngữ trước hết cần dịch sang ngơn ngữ máy để máy tính hiểu thực thi Ngơn ngữ máy khó hiểu lập trình viên họ sử dụng trực tiếp ngôn ngữ máy để viết chương trình Một trừu tượng khác ngơn ngữ assembly Nó cung cấp tên dễ nhớ cho lệnh ký hiệu dễ hiểu cho liệu Bộ dịch gọi assembler chuyển ngôn ngữ assembly sang ngôn ngữ máy Ngay ngôn ngữ assembly khó sử dụng Những ngơn ngữ cấp cao như: C, C++, Pascal, … cung cấp ký hiệu thuận tiện nhiều cho việc lập trình thi hành giải thuật Các ngôn ngữ cấp cao giúp cho lập trình viên khơng phải nghĩ nhiều ngơn ngữ cấp thấp giúp họ tập trung vào giải thuật Trình biên dịch (compiler) đảm nhiệm việc dịch chương trình viết ngôn ngữ cấp cao sang ngôn ngữ assembly Mã assembly tạo trình biên dịch sau tập hợp lại chương trình thực thi 1.1.2 Định nghĩa Lập trình kỹ thuật tổ chức liệu xây dựng quy trình xử lý cho máy tính làm việc thơng qua ngơn ngữ lập trình chẳng hạn như: C, C++, Pascal, … - Tổ chức liệu: xếp thơng tin nhằm phục vụ cho u cầu - Quy trình xử lý: bao gồm thị để thực công việc như: tạo thông tin ban đầu, tính tốn, chép, di chuyển, tìm kiếm, in kết quả, … 1.1.3 Giải thuật (Algorithm) Muốn viết chương trình cho máy tính thực điều trước tiên ta phải tìm giải thuật (thuật tốn) cho cơng việc cần viết chương trình Trang Trường ĐHSPKT Vĩnh Long Giáo trình mơn Lập trình Giải thuật (thuật tốn) tập hợp có thứ tự bước tiến hành cơng việc nhằm đạt kết mong muốn Ví dụ: Để viết chương trình giải phương trình bậc (ax2 + bx + c = 0) ta cần phải tìm bước để thực cơng việc này, giải thuật: Bước 1: Nhập hệ số a, b c Bước 2: Tính = b2 – 4ac Bước 3: Xét dấu Nếu < phương trình vơ nghiệm Ngược lại, = phương trình có nghiệm kép x1 = x2 = b 2a ngược lại ( > 0) phương trình có nghiệm phân biệt: x1 = b b ; x2 = 2a 2a 1.1.4 Đặc tính giải thuật - Phải kết thúc sau số bước hữu hạn - Các bước giải thuật phải máy chấp nhận thực - Xét hết tất trường hợp xảy - Áp dụng cho tất toán loại (cùng dạng) 1.1.5 Các lưu ý - Một tốn có nhiều giải thuật khác - Một giải thuật gọi tốt có tính chất sau: + Đơn giản, dễ hiểu + Tiết kiệm vùng nhớ + Thời gian thực nhanh 1.1.6 Các công cụ thể giải thuật Để thể giải thuật ta dùng nhiều cơng cụ khác nhau, có cơng cụ dùng nhiều ngơn ngữ giả lưu đồ 1.1.6.1 Ngôn ngữ giả Ta sử dụng từ ngữ, ký hiệu cho ngắn gọn, dễ hiểu có đánh số thứ tự bước thực Ví dụ: Giải thuật giải phương trình bậc thể ngôn ngữ giả 1.1.6.2 Lưu đồ (Flow chart) Ta sử dụng khối theo qui định để thể giải thuật, khối dùng là: : Bắt đầu / Kết thúc : Nhập / Xuất Trang Trường ĐHSPKT Vĩnh Long Giáo trình mơn Lập trình : Thi hành (Thực hiện) : Lựa chọn (Điều kiện) : Chương trình : Tập hợp tập tin liệu : Các ghi chú, giải thích : Nối : Đường Ví dụ: Giải thuật giải phương trình bậc thể lưu đồ sau: Bắt đầu Nhập a, b, c = b2 – 4.a.c , t; cout > bien _1 >> bien _2 >> bien _3; bien_1, bien_2, bien_3 biến sử dụng để lưu trữ giá trị NLT nhập vào từ bàn phím Khái niệm biến mơ tả cụ thể phần sau, bien_1, bien_2, bien_3 hiểu tên gọi để giá trị khác Hiển nhiên nhập liệu nhiều biến cách tiếp tục viết tên biến vào bên phải sau dấu >> câu lệnh Khi chạy chương trình gặp câu lệnh chương trình "tạm dừng" để chờ NLT nhập liệu vào cho biến Sau NLT nhập xong liệu, chương trình tiếp tục chạy từ câu lệnh sau câu lệnh Cách thức nhập liệu NLT phụ thuộc vào loại giá trị biến cần nhập mà ta gọi kiểu, ví dụ nhập số có cách thức khác với nhập chuỗi ký tự Trang Trường ĐHSPKT Vĩnh Long Giáo trình mơn Lập trình 7.3.2.2 Ví dụ Viết chương trình nhập danh sách n nhân viên gồm thông tin mã số, họ tên, năm sinh tiền lương Lưu vào file có tên nhập từ bàn phím, dịng file ghi số lượng nhân viên, dịng ghi thơng tin nhân viên gồm mã số với độ rộng 8, họ tên với độ rộng 41, năm sinh với độ rộng tiền lương với độ rộng Sau đọc in nội dung file hình #include #include using namespace std; struct Nhanvien { char ms[7], ht[40]; int ns; long tl; } nv[80]; main() { int n,i; { coutn; }while (n 80); //Nhap thong tin cho cac nhan vien for (i=0; i