1 số khái niệm cơ bản liên quan đến lập trình C++ cho người mới bắt đầu học lập trình và lập trình đối với ngôn ngữ C
CHƯƠNG 1: MỘT SỐ KHÁI NIỆM LIÊN QUAN ĐẾN LẬP TRÌNH 1.1 Mục tiêu Mục tiêu chương giúp người đọc: Hiểu khái niệm liên quan đến lập trình Nắm bước lập trình Xác định liệu đầu vào, thành phần xử lý, liệu đầu Phân tích tốn đơn giản Thể thuật tốn ngơn ngữ tự nhiên, lưu đồ, mã giả 1.2 1.2.1 Các khái niệm Thuật toán Thuật toán dãy thao tác xác định đối tượng từ trạng thái ban đầu cho trước, cho sau thực số hữu hạn bước đạt kết sau dự kiến Nói cách khác, thuật tốn tập hợp (dãy) hữu hạn thị (hành động) định nghĩa rõ ràng nhằm giải toán cụ thể Theo R.A.Kowalski chất thuật tốn là: Thuật toán = Logic + Điều khiển Logic: phần quan trọng, trả lời câu hỏi “Thuật tốn làm giải vấn đề gì?”, yếu tố tốn có quan hệ với nào? Ngồi cịn bao gồm kiến thức chun mơn cần phải biết để tiến hành giải toán Chẳng hạn để giải tốn tính diện tích hình cầu, mà khơng cịn nhớ cơng thức tính diện tích hình cầu khơng thể viết chương trình cho máy để giải toán Điều khiển: thành phần trả lời câu hỏi thuật tốn phải làm nào? Chính cách thức tiến hành áp dụng thành phần logic để giải vấn đề Ví dụ 1_1: Thuật tốn giải phương trình bậc P(x): ax + b = 0, (a, b số thực) Đầu vào: a, b thuộc R Đầu ra: nghiệm phương trình ax + b = Nếu a = o b = P(x) có nghiệm o b ≠ P(c) vơ nghiệm Nếu a ≠ o P(x) có nghiệm x = (b)/a Các tính chất thuật tốn Tính xác: để đảm bảo kết tính tốn hay thao tác mà máy tính thực xác Tính rõ ràng: thuật tốn phải thể câu lệnh minh bạch; câu lệnh xếp theo thứ tự định Tính khách quan: thuật tốn dù viết nhiều người nhiều máy tính phải cho kết Tính phổ dụng: thuật tốn khơng áp dụng cho tốn định mà áp dụng cho lớp tốn có đầu vào tương tự Tính kết thúc: Thuật toán phải gồm số hữu hạn bước tính tốn 1.2.2 Chương trình Chương trình tập hợp thị, hướng dẫn để thực tác vụ cụ thể thực máy tính Theo Niklaus Wirth thì: Chương trình = Thuật tốn + Cấu trúc liệu Các thuật toán chương trình có cấu trúc dựa cấu trúc điều khiển sau: Tuần tự (sequential): bước thực cách xác từ xuống, bước thực lần Chọn lọc (selection): chọn hay nhiều thao tác để thực Lặp lại (repetition): hay nhiều bước thực lặp lại số lần 1.2.3 Ngơn ngữ lập trình Ngơn ngữ lập trình hệ thống ký hiệu tuân theo qui ước ngữ pháp ngữ nghĩa, dùng để xây dựng thành chương trình cho máy tính Một chương trình viết ngơn ngữ lập trình cụ thể (ví dụ Pascal, C…) gọi chương trình nguồn, chương trình dịch làm nhiệm vụ dịch chương trình nguồn thành chương trình thực thi máy tính 1.3 1.3.1 Các bước xây dựng chương trình Các bước Các bước để xây dựng chương trình sau: Bước 1: Phân tích vấn đề xác định đặc điểm (xác định liệu đầu vào, xác định thành phần cần xử lý, xác định liệu đầu ra) Bước 2: Đưa giải pháp (đưa thuật giải) Bước 3: Cài đặt (viết chương trình) Bước 4: Chạy thử chương trình (dịch chương trình) Bước 5: Kiểm chứng hồn thiện chương trình (thử nghiệm nhiều số liệu đánh giá) 1.3.2 Quy trình Nhập – Xử lý – Xuất (I-P-O cycle) Quy trình xử lý máy tính gồm nhập – xử lý – xuất (input – process- output) Input Output Process Quy trình nhận liệu đầu vào từ người dùng nguồn khác nhau, thực tính tốn liệu sau trả kết việc tính tốn Quy trình sử dụng rộng rãi việc phân tích hệ thống phát triển phần mềm Ví dụ 1_2: Xác định Input, Process, Output việc pha ly cà phê Input : ly, đường, cà phê, nước sôi, muỗng Process : hịa cà phê vào nước sơi, cho đường vào hỗn hợp, khuấy hỗn hợp Output : ly cà phê sẵn sàng Ví dụ 1_3: Xác định Input, Process, Output chương trình tính tiền lương cho công nhân, biết lương = lương * ngày công Input : lương bản, ngày công Process : nhân lương với ngày công Output : lương Ví dụ 1_4: Xác định Input, Process, Output chương trình giải phương trình bậc ax + b = Input : hệ số a, b Process : chia –b cho a Output : nghiệm x Ví dụ 1_5: Xác định Input, Process, Output chương trình tìm số lớn số a b Input : a, b Process : a > b Output = a, ngược lại Output = b 1.4 Biểu diễn thuật tốn Để truyền đạt thuật toán cho người khác hiểu, hay chuyển thuật toán thành chương trình máy tính, cần phải có phương pháp biểu diễn thuật tốn Có ba phương pháp biểu diễn thuật tốn: - Dùng ngơn ngữ tự nhiên - Dùng lưu đồ - sơ đồ khối (flowchart) - Dùng mã giả (pseudocode) 1.4.1 Sử dụng ngôn ngữ tự nhiên Để biểu diễn thuật tốn ngơn ngữ tự nhiên, người ta sử dụng ngôn ngữ thường ngày để liệt kê bước thuật tốn Phương pháp khơng u cầu người viết người đọc phải nắm quy tắc, gần khơng có quy tắc cố định việc thể thuật toán ngôn ngữ tự nhiên Tuy nhiên, để dễ đọc, người ta thường viết bước lùi vào bên phải đánh số bước theo quy tắc phân cấp 1, 1.1, 1.1.1,… Ví dụ 1_6: Sử dụng ngơn ngữ tự nhiên biểu diễn thuật tốn giải phương trình ax + b = Dữ liệu đầu vào: a, b thuộc R Dữ liệu đầu ra: nghiệm phương trình ax + b = Nhập số thực a b Nếu a = 2.1 Nếu b = 2.1.1 Phương trình vơ số nghiệm 2.1.2 Kết thúc thuật toán 2.2 Ngược lại 2.2.1 Phương trình vơ nghiệm 2.2.2 Kết thúc thuật tốn Ngược lại 3.1 Phương trình có nghiệm x = - b / a 3.2 Kết thúc thuật toán 1.4.2 Sử dụng lưu đồ - sơ đồ khối Để dễ hơn, nhà lập trình đưa dạng lưu đồ để minh họa bước trình xử lý vấn đề (bài tốn) Hình dạng (Symbol) Hành động (Activity) Dữ liệu vào/ (Input/ Ouput) Xử lý (Process) Quyết định (Decicion), sử dụng điều kiện Luồng xử lý (Flow lines) Chương trình con, hàm … (Procedure, Function,…) Bắt đầu, kết thúc (Begin, End) Điểm ghép nối (Connector) Ví dụ 1_7: Sử dụng lưu đồ biểu diễn thuật toán giải phương trình ax + b = Bắt đầu Đọc a, b a=0 Đ Đ b=0 S S Tính x = -b /a Xuất “VSN” Xuất “VN” Kết thúc Ví dụ 1_8: Sử dụng lưu đồ biểu diễn thuật toán pha cà phê Xuất x Bắt đầu Cà phê, nước sôi Hịa cà phê vào nước sơi Bỏ đường vào Khuấy hỗn hợp Cà phê pha Kết thúc Ví dụ 1_9: Sử dụng lưu đồ biểu diễn thuật toán tính tiền lương cho cơng nhân, biết lương = lương * ngày công Bắt đầu LCB, ngày công Nhân LCB với ngày công LCB, ngày công Kết thúc Ví dụ 1_10: Sử dụng lưu đồ biểu diễn thuật tốn kiểm tra tính hợp lệ điểm (theo thang điểm 10) Bắt đầu Điểm S Điểm >=0 Điểm