Xem mẫu

  1. ỦY BAN NHÂN DÂN TỈNH AN GIANG TRƯỜNG CAO ĐẲNG NGHỀ AN GIANG GIÁO TRÌNH LẬP TRÌNH CĂN BẢN NGHỀ: LẬP TRÌNH MÁY TÍNH Trình độ trung cấp/cao đẳng (Ban hành theo Quyết định số: /QĐ-CĐN ngày tháng năm 20 của Hiệu trưởng trường Cao đẳng nghề An Giang) Tác giả: Vương Thị Minh Nguyệt Năm ban hành : 2017
  2. TUYÊN BỐ BẢN QUYỀN Tài liệu này thuộc loại sách giáo trình nên các nguồn thông tin có thể đƣợc phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo. Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm. LỜI GIỚI THIỆU Trƣớc đây, để tạo ra chƣơng trình máy tính ngƣời ta phải làm việc trực tiếp với các con số 0 hoặc 1, hay còn gọi là ngôn ngữ máy. Công việc này vô cùng khó khăn, chiếm nhiều thời gian, công sức và đặc biệt dễ gây ra lỗi. Để khắc phục nhƣợc điểm này, ngƣời ta đề xuất ra hợp ngữ, một ngôn ngữ cho phép thay thế dãy 0 hoặc 1 này bởi các từ gợi nhớ tiếng Anh. Tuy nhiên, cải tiến này vẫn còn chƣa thật thích hợp với đa số ngƣời dùng máy tính, những ngƣời luôn mong muốn các lệnh chính là ý nghĩa của các thao tác mà nó mô tả. Vì vậy, ngay từ những năm 1950, ngƣời ta đã xây dựng những ngôn ngữ lập trình mà câu lệnh của nó gần với ngôn ngữ tự nhiên. Các ngôn ngữ này đƣợc gọi là ngôn ngữ lập trình bậc cao. Lập trình căn bản với Pascal và C, C++ Đây là 2 ngôn ngữ căn bản và phổ biến nhất mà hầu nhƣ sinh viên nào cũng cần phải học qua trong giai đoạn mới bắt đầu học lập trình Giáo trình này đƣợc thiết kế theo từng mô đun/ môn học thuộc hệ thống mô đun/môn học của một chƣơng trình, để đào tạo hoàn chỉnh nghề Lập trình máy tính ở cấp trình độ bậc cao và đƣợc dùng làm giáo trình cho học viên trong các khóa đào tạo, cũng có thể đƣợc sử dụng cho đào tạo ngắn hạn hoặc cho các công nhân kỹ thuật. Mục tiêu thực hiện của môn học: - Phân tích chƣơng trình: xác định nhiệm vụ chƣơng trình (phải làm gì), xác định dữ liệu và cấu trúc dữ liệu của hệ thống. Phân tích và xây dựng thuật toán. - Thiết kế chƣơng trình: tìm giải pháp kỹ thuật (làm thế nào) đối với những công việc đã xác định trong giai đoạn phân tích. - Viết chƣơng trình. - Vận dụng điều kiện, trợ giúp môi trƣờng của ngôn ngữ lập trình, chẳng hạn: trình biên tập mã lệnh. - Mô tả đƣợc hằng và biến dùng trong chƣơng trình. - Vận dụng quy tắc cú pháp của ngôn ngữ lập trình. - Vận dụng các cấu trúc điều khiển, cấu trúc lặp. 1
  3. - Trình bày chƣơng trình có chú thích (tóm tắt) cho từng đoạn mã, thuận lợi cho việc theo dõi chức năng của chúng. - Thử nghiệm đƣợc chƣơng trình: - Sử dụng bộ dữ liệu thử, thử nghiệm các giai đoạn, phân tích giá trị biến qua từng đoạn mã (mô đun chƣơng trình) - Sử dụng công cụ: dùng Debugger của hệ thống để phân tích biến và cấu trúc dữ liệu tƣơng ứng. Nội dung chính của môn học: CHƢƠNG 1: THUẬT TOÁN CHƢƠNG 2: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C++ CHƢƠNG 3: CÁC THÀNH PHẦN VÀ CÁC KIỂU DỮ LIỆU CƠ BẢN CHƢƠNG 4: CÁC CẤU TRÚC ĐIỀU KHIỂN CHƢƠNG 5: HÀM CHƢƠNG 6: MẢNG CHƢƠNG 7: CON TRỎ CHƢƠNG 8: CẤU TRÚC Trong quá trình biên soạn, mặc dù đã cố gắng tham khảo nhiều tài liệu và giáo trình khác nhƣng tác giả không khỏi tránh đƣợc những thiếu sót và hạn chế. Tác giả chân thành mong đợi những nhận xét, đánh giá và góp ý của sinh viên và đồng nghiệp để cuốn giáo trình ngày một hoàn thiện hơn. An Giang, ngày tháng năm 20 Tham gia biên soạn Vương Thị Minh Nguyệt 2
  4. MỤC LỤC ĐỀ MỤC TRANG LỜI GIỚI THIỆU ................................................................................................................................1 CHƢƠNGTRÌNH MÔN HỌC .............................................................................................................6 CHƢƠNG 1: THUẬT TOÁN ..............................................................................................................9 I.KHÁI NIỆM ................................................................................................................................... 9 II.CÁC ĐẶC TRƢNG CỦA THUẬT TOÁN ................................................................................ 10 III. PHƢƠNG PHÁP BIỂU DIỄN THUẬT TOÁN ....................................................................... 10 BÀI TẬP ......................................................................................................................................... 16 CHƢƠNG 2: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C++ ............................................................17 I.LỊCH SỬ HÌNH THÀNH ............................................................................................................ 17 II.ĐẶC ĐIỂM ................................................................................................................................. 17 III.CẤU TRÚC MỘT CHƢƠNG TRÌNH C++ ............................................................................. 18 IV.MỘT SỐ VÍ DỤ MẪU.............................................................................................................. 19 V. CÀI ĐẶT CHƢƠNG TRÌNH .................................................................................................... 20 VI. KHỞI ĐỘNG CHƢƠNG TRÌNH ............................................................................................. 20 VII.SOẠN THẢO CHƢƠNG TRÌNH ........................................................................................... 21 VIII.THOÁT KHỎI CHƢƠNG TRÌNH ........................................................................................ 23 BÀI TẬP ......................................................................................................................................... 23 CHƢƠNG 3: CÁC THÀNH PHẦN VÀ CÁC KIỂU DỮ LIỆU CƠ BẢN .......................................24 I.CÁC THÀNH PHẦN ................................................................................................................... 24 II.CÁC KIỂU KIỂU DỮ LIỆU CƠ BẢN ...................................................................................... 26 III. HẰNG ....................................................................................................................................... 28 VI. CÁC PHÉP TOÁN CỦA C++ .................................................................................................. 29 V.XUẤT, NHẬP DỮ LIỆU .......................................................................................................... 32 BÀI TẬP ......................................................................................................................................... 39 CHƢƠNG 4: CÁC CẤU TRÚC ĐIỀU KHIỂN ................................................................................40 I.LỆNH ĐƠN VÀ LỆNH PHỨC ................................................................................................... 40 II.CẤU TRÚC ĐIỀU KIỆN if .. else.............................................................................................. 41 III. CẤU TRÚC LỰA CHỌN switch .. case................................................................................... 44 3
  5. IV. CÁC CẤU TRÚC LẶP ............................................................................................................. 46 V.CÂU LỆNH break, continue, goto và hàm exit .......................................................................... 52 BÀI TẬP ......................................................................................................................................... 55 CHƢƠNG 5: HÀM ............................................................................................................................57 I.KHÁI NIỆM ................................................................................................................................. 57 II.KHAI BÁO HÀM ....................................................................................................................... 57 III. KẾT QUẢ TRẢ VỀ CỦA HÀM .............................................................................................. 60 IV. CÁCH TRUYỀN THAM SỐ CHO HÀM ................................................................................ 60 V.ĐỆ QUI ....................................................................................................................................... 62 BÀI TẬP ......................................................................................................................................... 66 CHƢƠNG 6: MẢNG .........................................................................................................................67 I.KHÁI NIỆM ................................................................................................................................. 67 II.KHAI BÁO MẢNG .................................................................................................................... 67 III.KHỞI TẠO MẢNG ................................................................................................................... 68 IV. DÙNG MẢNG LÀM THAM SỐ ............................................................................................. 70 V. MẢNG NHIỀU CHIỀU ............................................................................................................ 72 BÀI TẬP ......................................................................................................................................... 74 CHƢƠNG 7: CON TRỎ ....................................................................................................................75 I.KHÁI NIỆM ................................................................................................................................. 76 II.CON TRỎ VÀ ĐỊA CHỈ ............................................................................................................ 76 III.KHAI BÁO BIẾN KIỂU CON TRỎ ........................................................................................ 78 IV. CÁC PHÉP TOÁN.................................................................................................................... 78 V.CON TRỎ MẢNG...................................................................................................................... 80 VI. CON TRỎ HẰNG ..................................................................................................................... 82 VII.CON TRỎ KHÔNG KIỂU ...................................................................................................... 83 VIII.KHỞI TẠO CON TRỎ........................................................................................................... 84 IX. CON TRỎ TRỎ TỚI CON TRỎ .............................................................................................. 85 X.CON TRỎ HÀM ........................................................................................................................ 85 BÀI TẬP ......................................................................................................................................... 87 CHƢƠNG 8: CẤU TRÚC..................................................................................................................88 I.KHÁI NIỆM ................................................................................................................................. 88 II.KHAI BÁO CẤU TRÚC ............................................................................................................ 88 4
  6. III.TRUY CẬP ĐẾN CÁC THÀNH PHẦN CỦA CẤU TRÚC.................................................... 92 IV. CON TRỎ CẤU TRÚC VÀ ĐỊA CHỈ CẤU TRÚC ................................................................ 95 BÀI TẬP ......................................................................................................................................... 98 CÁC THUẬT NGỮ CHUYÊN MÔN................................................................................................99 TÀI LIỆU THAM KHẢO ..................................................................................................................99 5
  7. CHƢƠNGTRÌNH MÔN HỌC Tên môn học: LẬP TRÌNH CĂN BẢN Mã số môn học: MH 10 Thời gian thực hiện môn học: 75 giờ (Lý thuyết: 20 giờ, thực hành, thí nghệm, thảo luận: 51 giờ, kiểm tra: 4 giờ). I. VỊ TRÍ, TÍNH CHẤT CỦA MÔN HỌC: 1. Vị trí: - Thuộc nhóm môn: Cơ sở - Đƣợc bố trí sau các môn: Môn học đƣợc bố trí sau khi học sinh học xong các môn: toán cho tin học và tin học căn bản. 2.Tính chất: - Là môn học chuyên môn nghề bắt buộc, là nền tảng để HSSV có thể làm quen với kiến thức lập trình và học các môn học mô đun liên quan. II. MỤC TIÊU CỦA MÔN HỌC: 1. Về kiến thức - Phân tích chƣơng trình: xác định nhiệm vụ chƣơng trình (phải làm gì), xác định dữ liệu và cấu trúc dữ liệu của hệ thống. Phân tích và xây dựng thuật toán. - Thiết kế chƣơng trình: tìm giải pháp kỹ thuật (làm thế nào) đối với những công việc đã xác định trong giai đoạn phân tích. 2. Về kỹ năng - Vận dụng điều kiện, trợ giúp môi trƣờng của ngôn ngữ lập trình, chẳng - Trình bày chƣơng trình có chú thích (tóm tắt) cho từng đoạn mã, thuận lợi cho việc theo dõi chức năng của chúng. - Thử nghiệm đƣợc chƣơng trình 3. Về năng lực tự chủ và trách nhiệm - Nghiêm túc trong học tập và thực hiện tốt các yêu cầu đƣợc giao. - Luôn động não suy nghĩ. Thƣờng xuyên luyện tập tƣ duy trong việc học - Thực hiện học tập và thực hành nhóm. III. NỘI DUNG MÔN HỌC: Chƣơng 1: Thuật toán I. Khái niệm II. Các đặc trƣng của thuật toán III. Phƣơng pháp biểu diễn Chƣơng 2: Giới thiệu ngôn ngữ lập trình C++ I. Lịch sử hình thành II. Đặc điểm 6
  8. III. Cấu trúc của một chƣơng trình C++ IV. Một số ví dụ mẫu V. Cài đặt chƣơng trình VI. Khởi động chƣơng trình VII. Soạn thảo chƣơng trình VIII. Thoát khỏi chƣơng trình Chƣơng 3: Các thành phần và các kiểu dữ liệu cơ bản I. Các thành phần II. Các kiểu dữ liệu căn bản III. Hằng IV. Các phép toán của C++ V. Xuất nhập dữ liệu Chƣơng 4: Các cấu trúc điều khiển I. Lệnh đơn và lệnh phức II. Cấu trúc điều kiện: if .. else III. Cấu trúc lựa chọn: switch..case IV. Các cấu trúc lặp V. Câu lệnh break, continue, goto và hàm exit Chƣơng 5: Hàm I. Khái niệm II. Khai báo hàm III. Kết quả trả về của hàm – Lệnh return IV. Cách truyền tham số cho hàm V. Đệ qui Chƣơng 6: Mảng I. Khái niệm II. Khai báo mảng III. Khởi tạo mảng IV. Dùng mảng làm tham số Chƣơng 7: Con trỏ I. Khái niệm II. Toán tử lấy địa chỉ (&) III. Toán tử tham chiếu (*) IV. Khai báo biến kiếu con trỏ V. Các phép toán 7
  9. VI. Con trỏ hằng VII. Con trỏ mảng VIII. Khởi tạo con trỏ IX. Con trỏ trỏ tới con trỏ X. Con trỏ không kiểu XI. Con trỏ hàm Chƣơng 8: Cấu trúc I. Khái niệm cấu trúc II. Khai báo cấu trúc III. Truy cập đến các thành phần của cấu trúc IV. Ví dụ cấu trúc 8
  10. CHƢƠNG 1 THUẬT TOÁN Giới thiệu Thuật toán là một hệ thống chặt chẽ và rõ ràng các qui tắc nhằm xác định một dãy các thao tác trên những đối tƣợng, sao cho sau một số hữu hạn bƣớc thực hiện các thao tác, ta đạt đƣợc mục tiêu định trƣớc. Bài này sẽ trình bày khái niệm thuật toán, các đặc trƣng của thuật toán, phƣơng pháp biểu diễn của thuật toán Mục tiêu Trình bày đƣợc khái niệm thuật toán, các đặc trƣng của thuật toán, phƣơng pháp biểu diễn của thuật toán Nội dung chính I. KHÁI NIỆM Thuật toán là một hệ thống chặt chẽ và rõ ràng các qui tắc nhằm xác định một dãy các thao tác trên những đối tƣợng, sao cho sau một số hữu hạn bƣớc thực hiện các thao tác, ta đạt đƣợc mục tiêu định trƣớc. Ví dụ 1: Giải phƣơng trình bậc hai ax2 + bx + c = 0 Nhập a, b, c Nếu a = 0 thì kết thúc thuật toán (phƣơng trình đã cho không phải là phƣơng trình bậc hai). Nếu a ≠ 0 thì tính delta = b2 – 4ac Nếu delta > 0 Phƣơng trình có hai nghiệm phân biệt  b  delta  b  delta x1  ; x2  2a 2a Kết thúc thuật toán. Nếu delta = 0 b Phƣơng trình có nghiệp kép x  2a Kết thúc thuật toán. Nếu delta < 0 Phƣơng trình vô nghiệm. Kết thúc thuật toán. 9
  11. II. CÁC ĐẶC TRƢNG CỦA THUẬT TOÁN 1. Tính xác định Ở mỗi bƣớc của thuật toán, các thao tác phải hết sức rõ ràng. Không thể gây nên sự nhập nhằng, lẫn lộn, tùy tiện. Nói cách khác là trong cùng một điều kiện, hai bộ xử lí cùng thực hiện một bƣớc của thuật toán thì phải cho cùng một kết quả. 2. Tính hữu hạn dừng Một thuật toán bao giờ cũng phải dừng lại sau một số hữu hạn bƣớc. 3. Tính đúng đắn Sau khi thực hiện tất cả các lệnh của thuật toán ta phải đƣợc kết quả mong muốn, kết quả đó thƣờng đƣợc xác định theo định nghĩa có trƣớc. 4. Tính phổ thông Thuật toán có thể giải bất kì bài toán nào trong cùng một lớp các bài toán, có nghĩa là thuật toán có thể làm việc với các dữ liệu khác nhau, trong một miền xác định và luôn dẫn đến kết quả mong muốn. 5. Tính có đại lƣợng vào và ra Khi bắt đầu một thuật toán bao giờ cũng nhận các đại lƣợng vào mà ta thƣờng gọi là dữ liệu vào, các dữ liệu vào thƣờng lất từ một tập xác định cho trƣớc. Sau khi kết thúc, một thuật toán bao giờ cũng cho ta mooth số đại lƣợng ra tùy theo chức năng mà thuật toán đảm nhiệm, chúng thƣờng đƣợc gọi là dữ liệu ra. 6. Tính hiệu quả Tính hiệu quả của một thuật toán đƣợc đánh giá dựa trên các tiêu chuẩn sau: - Dung lƣợng bộ nhớ cần có. - Số các phép tính cần thực hiện. - Thời gian cần thiết để chạy. - Có dễ hiểu đối với con ngƣời không. - Có dễ cài đặt trên máy không. III. PHƢƠNG PHÁP BIỂU DIỄN THUẬT TOÁN Khi chứng minh hoặc giải một bài toán trong toán học, ta thƣờng dùng những ngôn từ toán học nhƣ : "ta có", "điều phải chứng minh", "giả thuyết", ... và sử dụng những phép suy luận toán học nhƣ phép suy ra, tƣơng đƣơng,...Thuật toán là một phƣơng pháp thể hiện lời giải bài toán nên cũng phải tuân theo một số quy tắc nhất định. Ðể có thể truyền đạt thuật toán cho ngƣời khác hay chuyển thuật toán thành chƣơng trình máy tính, ta phải có phƣơng pháp biểu diễn thuật toán. Có 3 phƣơng pháp biểu diễn thuật toán : Dùng ngôn ngữ tự nhiên, dùng lƣu đồ - sơ đồ khối, dùng mã giả. 10
  12. 1. Ngôn ngữ tự nhiên Trong cách biểu diễn thuật toán theo ngôn ngữ tự nhiên, ngƣời ta sử dụng ngôn ngữ thƣờng ngày để liệt kê các bƣớc của thuật toán (ví dụ 1sử dụng ngôn ngữ tự nhiên). Phƣơng pháp biểu diễn này không yêu cầu ngƣời viết thuật toán cũng nhƣ ngƣời đọc thuật toán phải nắm các quy tắc. Tuy vậy, cách biểu diễn này thƣờng dài dòng, không thể hiện rõ cấu trúc của thuật toán, đôi lúc gây hiểu lầm hoặc khó hiểu cho ngƣời đọc. Gần nhƣ không có một quy tắc cố định nào trong việc thể hiện thuật toán bằng ngôn ngữ tự nhiên. Tuy vậy, để dễ đọc, ta nên viết các bƣớc con lùi vào bên phải và đánh số bƣớc theo quy tắc phân cấp nhƣ 1, 1.1, 1.1.1. 2. Lƣu đồ - sơ đồ khối Lƣu đồ hay sơ đồ khối là một công cụ trực quan để diễn đạt các thuật toán. Biểu diễn thuật toán bằng lƣu đồ sẽ giúp ngƣời đọc theo dõi đƣợc sự phân cấp các trƣờng hợp và quá trình xử lý của thuật toán. Phƣơng pháp lƣu đồ thƣờng đƣợc dùng trong những thuật toán có tính rắc rối, khó theo dõi đƣợc quá trình xử lý. Ðể biểu diễn thuật toán theo sơ đồ khối, ta phải phân biệt hai loại thao tác. Một thao tác là thao tác chọn lựa dựa theo một điều kiện nào đó. Chẳng hạn : thao tác "nếu a = 0 thì kết thúc thuật toán, nếu a ≠ 0 thì tính delta" là thao tác chọn lựa. Các thao tác còn lại không thuộc loại chọn lựa đƣợc xếp vào loại hành động. Chẳng hạn, "tính  b  delta  b  delta x1  ; x2  " là một thao tác thuộc loại hành động. 2a 2a Thao tác chọn lựa (decision) Thao tác chọn lựa đƣợc biểu diễn bằng hình thoi bên trong chứa biểu thức điều kiện. a=0 Thao tác xử lý (process) Thao tác xử lý đƣợc biểu diễn bằng hình chữ nhật, bên trong chứa nội dung xử lý.  b  delta x1  2a Ðƣờng đi (route) 11
  13. Khi dùng ngôn ngữ tự nhiên, ta mặc định hiểu rằng quá trình thực hiện sẽ lần lƣợt đi từ bƣớc trƣớc đến bƣớc sau (trừ khi có yêu cầu nhảy sang bƣớc khác). Trong ngôn ngữ lƣu đồ, do thể hiện các bƣớc bằng hình vẽ và có thể đặt các hình vẽ này ở vị trí bất kỳ nên ta phải có phƣơng pháp để thể hiện trình tự thực hiện các thao tác. Hai bƣớc kế tiếp nhau đƣợc nối bằng một cung, trên cung có mũi tên để chỉ hƣớng thực hiện. Từ thao tác chọn lựa có thể có đến hai hƣớng đi, một hƣớng ứng với điều kiện thỏa và một hƣớng ứng với điều kiện không thỏa. Do vậy, ta dùng hai cung xuất phát từ các đỉnh hình thoi, trên mỗi cung có ký hiệu Ð/Ðúng/Y/Yes để chỉ hƣớng đi ứng với điều kiện thỏa và ký hiệu S/Sai/N/No để chỉ hƣớng đi ứng với điều kiện không thỏa. Delta > 0 S Delta = 0 Đ Phƣơng trình có 2 nghiệm phân biệt x1, x2 Ðiểm cuối (terminator) Ðiểm cuối là điểm khởi đầu và kết thúc của thuật toán, đƣợc biểu diễn bằng hình ovan, bên trong có ghi chữ bắt đầu/start/begin hoặc kết thúc/end. Ðiểm cuối chỉ có cung đi ra (điểm khởi đầu) hoặc cung đi vào (điểm kết thúc). Xem lƣu đồ thuật toán giải phƣơng trình bậc hai ở trên để thấy cách sử dụng của điểm cuối. Ðiểm nối (connector) Ðiểm nối đƣợc dùng để nối các phần khác nhau của một lƣu đồ lại với nhau. Bên trong điểm nối, ta đặt một ký hiệu để biết sự liên hệ giữa các điểm nối. Ðiểm nối sang trang (off-page connector) 12
  14. Tƣơng tự nhƣ điểm nối, nhƣng điểm nối sang trang đƣợc dùng khi lƣu đồ quá lớn, phải vẽ trên nhiều trang. Bên trong điểm nối sang trang ta cũng đặt một ký hiệu để biết đƣợc sự liên hệ giữa điểm nối của các trang. Ở trên chỉ là các ký hiệu cơ bản và thƣờng đƣợc dùng nhất. Trong thực tế, lƣu đồ còn có nhiều ký hiệu khác nhƣng thƣờng chỉ dùng trong những lƣu đồ lớn và phức tạp. Ðối với các thuật toán trong cuốn sách này, ta chỉ cần sử dụng các ký hiệu trên là đủ. Ví dụ: Vẽ lƣu đồ giải phƣơng trình bậc hai ax2 + bx + c = 0 13
  15. Bắt đầu Nhập a, b, c S a ≠0 Đ Delta = b2 – 4 ac S S Delta > 0 Delta = 0 Đ Đ Phƣơng trình có Phƣơng trình vô Phƣơng trình có nghiệm kép nghiệm hai nghiệm phân biệt x1, x2 b  b  delta x x1  2a 2a Kết thúc 14
  16. Bảng ký hiệu Ý nghĩa Ký hiệu Điểm đầu, cuối Thao tác chọn lựa Thao tác xử lý Đƣờng đi Điểm nối KH Điểm nối sang #STT trang 3. Mã giả Tuy sơ đồ khối thể hiện rõ quá trình xử lý và sự phân cấp các trƣờng hợp của thuật toán nhƣng lại cồng kềnh. Ðể mô tả một thuật toán nhỏ ta phải dùng một không gian rất lớn. Hơn nữa, lƣu đồ chỉ phân biệt hai thao tác là rẽ nhánh (chọn lựa có điều kiện) và xử lý mà trong thực tế, các thuật toán còn có thêm các thao tác lặp (Chúng ta sẽ tìm hiểu về thao tác lặp trong các bài sau). Khi thể hiện thuật toán bằng mã giả, ta sẽ vay mượn các cú pháp của một ngôn ngữ lập trình nào đó để thể hiện thuật toán. Tất nhiên, mọi ngôn ngữ lập trình đều có những thao tác cơ bản là xử lý, rẽ nhánh và lặp. Dùng mã giả vừa tận dụng đƣợc các khái niệm trong ngôn ngữ lập trình, vừa giúp ngƣời cài đặt dễ dàng nắm bắt nội dung thuật toán. Tất nhiên là trong mã giả ta vẫn dùng một phần ngôn ngữ tự nhiên. Một khi đã vay mƣợn cú pháp và khái niệm của ngôn ngữ lập trình thì chắc chắn mã giả sẽ bị phụ thuộc vào ngôn ngữ lập trình đó. Chính vì lý do này, chúng ta chƣa vội tìm hiểu về mã giả trong bài này (vì chúng ta chƣa biết gì về ngôn ngữ lập trình!). Sau khi tìm hiểu xong bài về thủ tục - hàm bạn sẽ hiểu mã giả là gì ! Một đoạn mã giả của thuật toán giải phƣơng trình bậc hai if Delta > 0 then begin x1=(-b-sqrt(delta))/(2*a) x2=(-b+sqrt(delta))/(2*a) 15
  17. xuất kết quả : phƣơng trình có hai nghiệm là x1 và x2 end else if delta = 0 then xuất kết quả : phƣơng trình có nghiệm kép là -b/(2*a) else {trƣờng hợp delta < 0 } xuất kết quả : phƣơng trình vô nghiệm BÀI TẬP: xây dựng thuật toán và vẽ sơ đồ khối của các bài toán sau: 1. Tính n! 2. Giải phƣơng trình: ax + b = 0 3. Tính chu vi, diện tích hình tròn biết bán kính r=3cm 4. Đƣa ra màn hình dòng chữ: "Mon hoc lap trinh can ban" 16
  18. CHƢƠNG 2 GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C++ Giới thiệu C là ngôn ngữ lập trình cấp cao, đƣợc sử dụng rất phổ biến để lập trình hệ thống cùng với Assembler và phát triển các ứng dụng. Bài này sẽ trình bày lịch sử hình thành và phát triển của ngôn ngữ C++, cấu trúc của một chƣơng trình C++, cài đặt và sử dụng chƣơng trình C++ Mục tiêu - Mô tả đƣợc lịch sử hình thành và phát triển của ngôn ngữ C++ - Trình bày đƣợc cấu trúc của một chƣơng trình C++ - Cài đặt và sử dụng chƣơng trình C++ Nội dung chính I. LỊCH SỬ HÌNH THÀNH C là ngôn ngữ lập trình cấp cao, đƣợc sử dụng rất phổ biến để lập trình hệ thống cùng với Assembler và phát triển các ứng dụng. Vào những năm cuối thập kỷ 60 đầu thập kỷ 70 của thế kỷ XX, Dennish Ritchie (làm việc tại phòng thí nghiệm Bell) đã phát triển ngôn ngữ lập trình C dựa trên ngôn ngữ BCPL (do Martin Richards đƣa ra vào năm 1967) và ngôn ngữ B (do Ken Thompson phát triển từ ngôn ngữ BCPL vào năm 1970 khi viết hệ điều hành UNIX đầu tiên trên máy PDP-7) và đƣợc cài đặt lần đầu tiên trên hệ điều hành UNIX của máy DEC PDP-11. Năm 1978, Dennish Ritchie và B.W Kernighan đã cho xuất bản quyển “Ngôn ngữ lập trình C” và đƣợc phổ biến rộng rãi đến nay. Lúc ban đầu, C đƣợc thiết kế nhằm lập trình trong môi trƣờng của hệ điều hành Unix nhằm mục đích hỗ trợ cho các công việc lập trình phức tạp. Nhƣng về sau, với những nhu cầu phát triển ngày một tăng của công việc lập trình, C đã vƣợt qua khuôn khổ của phòng thí nghiệm Bell và nhanh chóng hội nhập vào thế giới lập trình để rồi các công ty lập trình sử dụng một cách rộng rãi. Sau đó, các công ty sản xuất phần mềm lần lƣợt đƣa ra các phiên bản hỗ trợ cho việc lập trình bằng ngôn ngữ C và chuẩn ANSI C cũng đƣợc khai sinh từ đó. II. ĐẶC ĐIỂM Ngôn ngữ lập trình C là một ngôn ngữ lập trình hệ thống rất mạnh và rất “mềm dẻo”, có một thƣ viện gồm rất nhiều các hàm (function) đã đƣợc tạo sẵn. Ngƣời lập trình có thể tận dụng các hàm này để giải quyết các bài toán mà không cần phải tạo mới. Hơn thế nữa, ngôn ngữ C hỗ trợ rất nhiều phép toán nên phù hợp cho việc giải quyết các bài toán kỹ thuật có nhiều công thức phức tạp. Ngoài ra, C cũng cho phép 17
  19. ngƣời lập trình tự định nghĩa thêm các kiểu dữ liệu trừu tƣợng khác. Tuy nhiên, điều mà ngƣời mới vừa học lập trình C thƣờng gặp “rắc rối” là “hơi khó hiểu” do sự “mềm dẻo” của C. Dù vậy, C đƣợc phổ biến khá rộng rãi và đã trở thành một công cụ lập trình khá mạnh, đƣợc sử dụng nhƣ là một ngôn ngữ lập trình chủ yếu trong việc xây dựng những phần mềm hiện nay. Ngôn ngữ C có những đặc điểm cơ bản sau: * Tính cô đọng (compact): C chỉ có 32 từ khóa chuẩn và 40 toán tử chuẩn, nhƣng hầu hết đều đƣợc biểu diễn bằng những chuỗi ký tự ngắn gọn. * Tính cấu trúc (structured): C có một tập hợp những chỉ thị của lập trình nhƣ cấu trúc lựa chọn, lặp… Từ đó các chƣơng trình viết bằng C đƣợc tổ chức rõ ràng, dễ hiểu. * Tính tƣơng thích (compatible): C có bộ tiền xử lý và một thƣ viện chuẩn vô cùng phong phú nên khi chuyển từ máy tính này sang máy tính khác các chƣơng trình viết bằng C vẫn hoàn toàn tƣơng thích. * Tính linh động (flexible): C là một ngôn ngữ rất uyển chuyển và cú pháp, chấp nhận nhiều cách thể hiện, có thể thu gọn kích thƣớc của các mã lệnh làm chƣơng trình chạy nhanh hơn. * Biên dịch (compile): C cho phép biên dịch nhiều tập tin chƣơng trình riêng rẽ thành các tập tin đối tƣợng (object) và liên kết (link) các đối tƣợng đó lại với nhau thành một chƣơng trình có thể thực thi đƣợc (executable) thống nhất. III. CẤU TRÚC MỘT CHƢƠNG TRÌNH C++ Chƣơng trình C++ là một chƣơng trình tập hợp nhiều hàm trong đó phải có một hàm chính là main(). Hàm là đoạn mã lệnh độc lập đƣợc đặt tên và thực hiện một công việc xác định khi đƣợc gọi đến. Một hàm có thể gọi đến nhiều hàm khác. Hàm main() là hàm đƣợc máy tính gọi đến trƣớc tiên khi thực hiện chƣơng trình Một chƣơng trình c++ thƣờng có cấu trúc nhƣ sau: /* Các chỉ thị tiền xử lý */ #include .... #define ... typedef .... /* định nghĩa các kiểu dữ liệu */ /* khai báo nguyên mẫu các hàm */ Kiểu_dữ_liệu tên_hàm(tham_số); khai báo các biến toàn cục; /* chƣơng trình chính */ 18
  20. main() { ........ /* các câu lệnh*/ return 0; } /* khai báo các hàm*/ Kiểu_dữ_liệu tên_hàm(tham_số); { ........ /* các câu lệnh*/ return (giá trị trả về); } IV. MỘT SỐ VÍ DỤ MẪU Ví dụ : Xuất " Chao cac ban" #include // chỉ thị tiền xử lý void main() // hàm main() { printf(“\nChao cac ban !”); // câu lệnh } Ví dụ : tính diện tích hình chữ nhật biết chiều dài và chiều rộng #include #include main() { int x,y,dt; // khai báo biến printf(“\nNhap chieu dai:”);scanf(“%d”,&x); // hàm đọc từ bàn phím printf(“\nNhap chieu rong:”);scanf(“%d”,&y); dt=x*y printf(“\nDien tich hinh chu nhat: %d”,dt); // hàm in ra màn hình getch(); // đọc một ký tự để chờ return 0; } 19
nguon tai.lieu . vn