bài giảng kỹ thuật lập trình căn bản

358 398 0
bài giảng kỹ thuật lập trình căn bản

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 MỤC LỤC Phần 1: Mở đầu 9 Bài 1. Các ngôn ngữ lập trình 9 1.1. Ngôn ngữ lập trình 9 1.2. Ra lệnh cho máy tính làm việc 10 1.3. Phân loại Ngôn ngữ lập trình cấp thấp và cấp cao 12 1.4. Tổng quát và chuyên biệt 13 1.5. Mô hình tính toán của một NNLT 14 1.6. Chọn NNLT 14 1.6.1. Yếu tố kỹ thuật 14 1.6.2. Yếu tố phi kỹ thuật 14 1.6.3. Chọn đúng công cụ cho công việc 15 1.6.4. Sự lựa chọn của các nhà phát triển 15 1.7. CÁC NGÔN NGỮ LẬP TRÌNH 16 Bài 2. Giới thiệu ngôn ngữ C / C++ 23 2.1. Ngôn ngữ C 23 2.2. C – Ngôn ngữ bậc trung 23 2.3. C - Ngôn ngữ cấu trúc 24 2.4. C++ 25 2.5. Biên dịch chương trình C/C++ 25 2.6. Tại sao dùng C/C++?? 26 Phần 2. Lập trình cấu trúc C (8 tuần) 27 Bài 3. Phân tích và thiết kế chương trình 27 3.1. Cấu trúc chương trình C 27 3.1.1. Ðịnh nghĩa Hàm 28 3.1.2. Dấu phân cách (Delimiters) 28 3.1.3. Dấu kết thúc câu lệnh (Terminator) 28 3.1.4. Dòng chú thích (Comment) 28 3.1.5. Thư viện C (Library) 28 3.2. Biên dịch và thực thi một chương trình (Compiling and Running) 29 2 3.3. Các bước lập trình giải quyết vấn đề 30 3.3.1. Mã giả (pseudo code) 31 3.3.2. Lưu đồ (Flowcharts) 33 Bài 4. Cài đặt và làm quen với môi trường lập trình C/C++ với Visual Studio 49 4.1. Giới thiệu Microsoft Visual C++ 49 4.2. Các đặc trưng 49 4.3. Lịch sử 49 Bài 5. Biến, kiểu, dữ liệu, Toán tử, Biểu Thức 57 5.1. Biến và Kiểu dữ liệu 57 5.1.1. Biến (variable) 57 5.1.2. Hằng (constant) 59 5.1.3. Các nguyên tắc cho việc chỉ đặt tên 60 5.1.4. Các kiểu dữ liệu (Data types) 61 5.1.5. Những kiểu dữ liệu cơ bản và dẫn xuất 64 5.1.6. Các toán tử số học (Arithmetic Operators) 68 5.2. Toán tử và Biểu thức 74 Mục tiêu: 74 5.2.1. Biểu thức (Expressions) 74 5.2.2. Toán tử quan hệ (Relational Operators) 76 5.2.3. Toán tử luận lý (Logical Operators) và biểu thức 77 5.2.4. Toán tử luận lý nhị phân (Bitwise Logical Operators) và biểu thức 78 5.2.5. Biểu thức dạng hỗn hợp & Chuyển đổi kiểu 79 5.2.6. Độ ưu tiên của toán tử (Precedence) 81 Bài 6. Nhập và Xuất trong C 90 6.1. Tập tin tiêu đề <stdio.h> 91 6.2. Nhập và xuất trong C (Input and Output) 91 6.2.1. printf() 91 6.2.2. scanf() 102 6.3. Bộ nhớ đệm Nhập và Xuất (Buffered I/O) 109 6.3.1.getchar() 110 3 6.3.2. putchar() 111 Bài 7. Điều kiện 117 7.1. Câu lệnh điều kiện là gì ? 117 7.2. Các câu lệnh lựa chọn: 118 7.2.1. Câu lệnh ‘if’: 118 7.2.2 Câu lệnh ‘if … else’: 120 7.2.3. Nhiều lựa chọn – Các câu lệnh ‘if … else’: 122 7.2.4 Các cấu trúc if lồng nhau: 125 7.2.5 Câu lệnh ‘switch’: 131 Bài 8. Vòng lặp 139 8.1. Vòng lặp: 139 8.2. Vòng lặp ‘for’: 139 8.1.2. Vòng lặp ‘while’: 146 8.2. Các lệnh nhẩy: 153 8.2.1. Lệnh ‘return’: 153 8.2.2. Lệnh ‘goto’: 153 8.2.3. Lệnh ‘break’: 155 8.2.4. Lệnh ‘continue’: 156 8.2.5. Hàm ‘exit()’: 157 Bài 9. Mảng 161 9.1. Các phần tử mảng và các chỉ mục: 162 9.2. Việc quản lý mảng trong C: 164 9.3. Mảng hai chiều: 171 Bài 10. Các thao tác với BITs và kỹ thuật lập trình với bit 181 10.1. Bit 181 10.2. Các toán tử thao tác bit 181 Bài 11. Macro 185 11.1 Chỉ thị #define 185 11.1.1 Hằng tượng trưng 185 11.1.2 Macro rỗng 185 4 11.1.3 Macro có tham số 186 11.1.4 Truyền một số lượng tham số không định trước vào macro 186 11.2 Chỉ thị undef 188 11.3 Toán tử macro 188 11.3.1. Toán tử # 188 11.4. Toán tử defined 189 11.5. Chỉ thị có điều kiện (#ifdef, #ifndef, #if, #endif, #else and #elif) 189 11.6. Chỉ thị #line 190 11.7. Chỉ thị #error 191 11.8. Chỉ thị #pragma 192 Bài 12. Kỹ thuật lập trình với hàm 192 12.1 Sử dụng các hàm 193 12.2 Cấu trúc hàm 194 12.2.1 Các đối số của một hàm 194 12.2.2 Sự trả về từ hàm 196 12.2.3 Kiểu của một hàm 197 12.3 Gọi hàm 197 12.4 Khai báo hàm 198 12.5 Các nguyên mẫu hàm 199 12.6 Các biến 200 12.6.1 Biến cục bộ 200 12.6.2 Tham số hình thức 202 12.6.3 Biến toàn cục 203 12.7 Lớp lưu trữ (Storage Class) 205 12.7.1 Biến tự động 206 12.7.2 Biến ngoại 206 12.7.3 Biến tĩnh 208 12.7.4 Biến thanh ghi 210 12.8 Các qui luật về phạm vi của một hàm 212 12.9 Gọi hàm 213 5 12.9.1 Truyền bằng giá trị 213 12.9.2 Truyền bằng tham chiếu 215 12.10 Sự lồng nhau của lời gọi hàm 218 12.11 Hàm trong chương trình nhiều tập tin 219 12.12 Con trỏ đến hàm 220 Bài 13. Kỹ thuật lập trình với con trỏ 222 13.1 Con trỏ là gì? 222 13.1.2 Tại sao con trỏ được dùng? 223 13.2 Các biến con trỏ 223 13.3 Các toán tử con trỏ 224 13.4 Con trỏ và mảng một chiều 228 13.4.1 Con trỏ và mảng nhiều chiều 231 13.5 Cấp phát bộ nhớ 234 Bài 14 Kỹ thuật lập trình với chuỗi ký tự 246 14.1 Các biến và hằng kiểu chuỗi 247 14.1.1 Con trỏ trỏ đến chuỗi 248 14.1.2 Các thao tác nhập xuất chuỗi 248 14.2 Các hàm về chuỗi 251 14.2.1 Hàm strcat() 251 14.2.2 Hàm strcmp() 252 14.2.3 Hàm strchr() 254 14.2.4 Hàm strcpy() 256 14.2.5 Hàm strlen() 257 14.3 Truyền mảng vào hàm 258 14.4 Truyền chuỗi vào hàm 261 Bài 15. CHUYỂN ĐỔI KIỂU DỮ LIỆU & CẤP PHÁT BỘ NHỚ ĐỘNG 265 15.1. Nhu cầu chuyển đổi dữ liệu 265 15.2. Chuyển đổi dữ liệu kiểu tự động 265 15.3. Ép kiểu tường minh 265 15.4. Cấp phát động trong C 266 6 Bài 16. Kỹ thuật lập trình cấu trúc 267 16.1 Cấu trúc 268 16.1.1 Định nghĩa một cấu trúc 269 16.1.2 Khai báo biến kiểu cấu trúc 270 16.1.3 Khởi tạo biến cấu trúc 272 16.1.4 Thực hiện cấu lệnh gán với cấu trúc 273 16.1.5 Cấu trúc lồng trong cấu trúc 273 16.1.6 Truyền tham số kiểu cấu trúc 275 16.1.7 Mảng các cấu trúc 277 16.1.8 Khởi tạo các mảng cấu trúc 278 16.1.9 Con trỏ đến cấu trúc 279 16.1.10 Truyền con trỏ cấu trúc như là các tham số 280 16.2 Từ khóa typedef 280 Bài 17. Kỹ thuật lập trình đệ quy 284 17.1 Mục tiêu 284 17.2 Nội dung 284 17.3. Sử dụng đệ quy hay vòng lặp 287 Bài 18. Dữ liệu cơ bản và nâng cao, thuật toán và giải thuật Quick Sort 289 18.1. Sắp xếp mảng (Sorting Arrays) 289 18.1.1. Bubble Sort 289 18.1.2. Insertion Sort 292 Bài 19. Lập trình vào ra 296 19.1. File Streams 296 19.1.1. Streams văn bản 297 19.1.2. Streams nhị phân 297 19.2. Các hàm về tập tin và structure FILE 297 19.2.1. Các hàm cơ bản về tập tin 298 19.2.2. Con trỏ tập tin 298 19.3. Các tập tin văn bản 299 19.3.1. Mở một tập tin văn bản 299 7 19.3.2. Đóng một tập tin văn bản 300 19.3.3. Ghi một ký tự 301 19.3.4. Đọc một ký tự 301 19.3.5. Nhập xuất chuỗi 303 19.4. Các tập tin nhị phân 304 19.4.1. Mở một tập tin nhị phân 304 19.4.2. Đóng một tập tin nhị phân 304 19.4.3. Ghi một tập tin nhị phân 305 19.4.4. Đọc một tập tin nhị phân 305 19.5. Các hàm xử lý tập tin 308 19.5.1. Hàm feof() 308 19.5.2. Hàm rewind() 308 19.5.3. Hàm ferror() 310 19.5.4. Xóa tập tin 311 19.5.5. Làm sạch các stream 311 19.5.6. Các stream chuẩn 312 19.5.7. Con trỏ kích hoạt hiện hành 313 19.5.8. Hàm fprintf() và fscanf() 315 Phần 3. Lập trình hướng đối tượng C++ (4 tuần) 321 Bài 20. Lập trình hướng đối tượng 321 20.1. Giới thiệu 321 20.2. Trừu tượng hóa (Abstraction) 322 20.3. Đối tượng (object) 322 20.4. Lớp (Class) 325 20.5. Thuộc tính (Attribute) 326 20.6. Phương thức (Method) 326 20.7. Thông điệp (Message) 327 20.8. Tính bao gói (Encapsulation) 328 20.9. Tính thừa kế (Inheritance) 329 20.10.Tính đa hình (Polymorphism) 329 8 20.1 Trình bày các định nghĩa của các thuật ngữ: 330 20.2 Phân biệt sự khác nhau giữa lớp và đối tượng, giữa thuộc tính và giá trị, giữa thông điệp và truyền thông điệp. 330 20.3 Trình bày các đặc điểm của OOP. 330 20.4 Những lợi ích có được thông qua thừa kế và bao gói. 330 20.5 Những thuộc tính và phương thức cơ bản của một cái máy giặt. 330 20.6 Những thuộc tính và phương thức cơ bản của một chiếc xe hơi. 330 20.7 Những thuộc tính và phương thức cơ bản của một hình tròn. 330 20.8 Chỉ ra các đối tượng trong hệ thống rút tiền tự động ATM. 330 20.9 Chỉ ra các lớp có thể kế thừa từ lớp điện thoại, xe hơi, và động vật. 330 Bài 21. Lập trình cơ bản với C++ 331 21.1. Chương trình lập trình cơ bản với C++ 331 Các chú thích. 333 21.2. Câu lệnh vào \ ra trong C++ 334 Bài 22. Kỹ thuật lập trình cơ bản với lớp 337 22.1. Lớp đơn giản 338 22.2. Các hàm thành viên nội tuyến 339 22.3. Ví dụ: Lớp Set 339 Bài 23. Hàm xây dựng (Constructor) và Hàm hủy (Destructor) 345 23.1. Hàm xây dựng (Constructor) 345 23.2. Hàm hủy (Destructor) 347 Bài 24. Kỹ thuật lập trình Thừa kế 349 24.1. Ví dụ minh họa 350 24.2. Lớp dẫn xuất đơn giản 355 24.3. Ký hiệu thứ bậc lớp 357 9 Phần 1: Mở đầu Bài 1. Các ngôn ngữ lập trình Mục tiêu: Kết thúc bài học này, bạn có thể: Các ngôn ngữ lập trình phổ biến hiện nay Phân biệt sự khác nhau giữa Câu lệnh, Chương trình và Phần mềm Giới thiệu Ngày nay, khoa học máy tính thâm nhập vào mọi lĩnh vực. Tự động hóa hiện đang là ngành chủ chốt điều hướng sự phát triển thế giới. Bất cứ ngành nghề nào cũng cần phải hiểu biết ít nhiều về Công nghệ Thông tin và lập trình nói chung. Ðầu tiên chúng ta tìm hiểu sự khác nhau của những khái niệm: Lệnh (Command), Chương trình (Program) và Phần mềm (Software). 1.1. Ngôn ngữ lập trình Ngôn ngữ lập trình (tiếng Anh: programming language) là một tập con của ngôn ngữ máy tính. Đây là một dạng ngôn ngữ được thiết kế và chuẩn hóa (đối lập với ngôn ngữ tự nhiên) để truyền các chỉ thị cho máy tính (hoặc máy khác có bộ xử lí). Ngôn ngữ lập trình có thể được dùng để tạo ra các chương trình nhằm mục đích điều khiển máy tính hoặc mô tả các thuật toán để người khác đọc hiểu. Như vậy Ngôn ngữ lập trình (NNLT) là phương tiện để giao tiếp và ra lệnh cho máy tính thực hiện những công việc cụ thể. Máy tính chỉ có thể hiểu các con số 0 và 1, nhưng con người lại không thành thạo kiểu suy nghĩ với các con số này để ra lệnh cho máy tính. Vì vậy người ta đã phát triển các dạng câu lệnh mà con người có thể đọc hiểu, tập các câu lệnh này được gọi là mã nguồn (source code). Mã nguồn phải tuân thủ một tập các từ vựng, cú pháp và qui tắc do những người thiết kế NN đặt ra. Ví dụ, đoạn mã nguồn mẫu ra lệnh cho máy tính hiển thị dòng chữ “Xin chào.” trên màn hình: #!/usr/bin/perl print“Xinchào.” Mã nguồn được một phần mềm thiết kế đặc biệt có thể hiểu các câu lệnh và dịch thành dạng mã mà máy có thể hiểu và thực thi. 10 1.2. Ra lệnh cho máy tính làm việc Khi một máy tính được khởi động, nó sẽ tự động thực thi một số tiến trình và xuất kết quả ra màn hình. Ðiều này diễn ra thế nào? Câu trả lời đơn giản là nhờ vào Hệ điều hành cài đặt bên trong máy tính. Hệ điều hành (operating system) được xem như phần mềm hệ thống. Phần mềm này khởi động máy tính và thiết lập các thông số ban đầu trước khi trao quyền cho người dùng. Để làm được điều này, hệ điều hành phải được cấu tạo từ một tập hợp các chương trình. Mọi chương trình đều cố gắng đưa ra lời giải cho một hay nhiều Bài toán nào đó. Mọi chương trình cố gắng đưa ra giải pháp cho một hay nhiều vấn đề. Mỗi chương trình là tập hợp các câu lệnh giải quyết một Bài toán cụ thể. Một nhóm lệnh tạo thành một chương trình và một nhóm các chương trình tạo thành một phần mềm. Để rõ hơn, chúng ta hãy xem xét một thí dụ: Một người bạn đến nhà chúng ta chơi và được mời món sữa dâu. Anh ta thấy ngon miệng và muốn xin công thức làm. Chúng ta hướng dẫn cho anh ta làm như sau : Lấy một ít sữa. Đổ nước ép dâu vào Trộn hỗn hợp này và làm lạnh. Bây giờ nếu bạn của chúng ta theo những chỉ dẫn này, họ cũng có thể tạo ra món sữa dâu tuyệt vời. Chúng ta hãy phân tích chỉ thị (lệnh) ở trên Lệnh đầu tiên : Lệnh này hoàn chỉnh chưa ? Nó có trả lời được câu hỏi lấy sữa ‘ở đâu’?. Lệnh thứ hai : Một lần nữa, lệnh này không nói rõ nước ép dâu để ‘ở đâu’. May mắn là bạn của chúng ta đủ thông minh để hiểu được công thức pha chế nói trên, dù rằng còn nhiều điểm chưa rõ ràng. Do vậy nếu chúng ta muốn phổ biến cách làm, chúng ta cần bổ sung các bước như sau : Rót một ly sữa vào máy trộn. Đổ thêm vào một ít nước dâu ép. Ðóng nắp máy trộn Mở điện và bắt đầu trộn Dừng máy trộn lại [...]... chương trình, chúng cần được trình bày sao cho mọi lập trình viên hiểu chúng dễ dàng Nếu có ba lập trình viên dùng ba ngôn ngữ lập trình khác nhau để viết mã, bài toán họ cần giải quyết phải như nhau Trong trường hợp này, mã giả đưa cho lập trình viên có thể giống nhau mặc dù ngôn ngữ lập trình họ dùng và tất nhiên là cú pháp có thể khác nhau Nhưng kết quả cuối cùng là một Do đó, cần thiết phải hiểu rõ bài. .. lặp này giúp lập trình viên điều khiển hướng thực thi trong chương trình 24 2.4 C++ - Lịch sử ngôn ngữ C++ - Ra đời năm 1979 bằng việc mở rộng ngôn ngữ C Tác giả: Bjarne Stroustrup - Mục tiêu:  Thêm các tính năng mới  Khắc phục một số nhược điểm của C  Bổ sung những tính năng mới so với C:  Lập trình hướng đối tượng (OOP)  Lập trình tổng quát (template)  Nhiều tính năng nhỏ giúp lập trình linh... dụng con trỏ 26 Phần 2 Lập trình cấu trúc C (8 tuần) Bài 3 Phân tích và thiết kế chương trình  Hiểu rõ khái niệm giải thuật (algorithms)  Vẽ lưu đồ (flowchart)  Liệt kê các ký hiệu dùng trong lưu đồ  Cấu trúc chung của chương trình C 3.1 Cấu trúc chương trình C C có một số từ khóa, chính xác là 32 Những từ khóa này kết hợp với cú pháp của C hình thành ngôn ngữ C Nhưng nhiều trình biên dịch cho C... thảo (editor) để viết mã nguồn (source code) C chỉ chấp nhận loại mã nguồn viết dưới dạng tập tin văn bản chuẩn Vài trình biên dịch (compiler) cung cấp môi trường lập trình (xem phụ lục) gồm trình soạn thảo  Mã nguồn Ðây là đoạn văn bản của chương trình mà người dùng có thể đọc Nó là đầu vào của trình biên dịch C  Bộ tiền xử lý C Từ mã nguồn, bước đầu tiên là chuyển nó qua bộ tiền xử lý của C Bộ... điều hành nào C rất hiệu quả để viết các chương trình thuộc nhiều những lĩnh vực khác nhau C cũng được dùng để lập trình hệ thống Một chương trình hệ thống có ý nghĩa liên quan đến hệ điều hành của máy tính hay những tiện ích hỗ trợ nó Hệ điều hành (OS), trình thông dịch (Interpreters), trình soạn thảo (Editors), chương trình Hợp Ngữ (Assembly) là các chương trình hệ thống Hệ điều hành UNIX được phát triển... Với bất kỳ NN nào cũng đều có những chương trình được viết rất tốt hay dở tệ Chất lượng của chương trình chịu ảnh hưởng bởi chất lượng của lập trình viên nhiều hơn là chất lượng của NN NNLT khó nhất chính là NN đầu tiên mà bạn học Có một số NN có thể giúp cho việc viết chương trình dễ hơn đối với một số dạng ứng dụng, và ngược lại Ví dụ C rất mạnh về lập trình hệ thống nhưng nếu dùng để viết ứng dụng... định nào đó: Fortran thích hợp cho tính toán khoa học; Java dùng cho ứng dụng phân tán không lệ thuộc nền tảng hệ thống; C dùng cho lập trình hệ thống và trình biên dịch; Pascal thích hợp cho việc giảng dạy về lập trình Các NN chuyên biệt được thiết kế cho các chương trình nhỏ, cú pháp đơn giản, thường được biên dịch lúc thực thi, và có nhiều tác vụ xây dựng sẵn Nói chung, các NN chuyên biệt chỉ dùng... như C++ hỗ trợ cả các mô hình khác 1.6 Chọn NNLT Hiện có rất nhiều NNLT (con số có thể lên đến hàng trăm) Mỗi NNLT đều có những điểm mạnh và điểm yếu Có một số yếu tố kỹ thuật và cả phi kỹ thuật tác động đến việc chọn NNLT 1.6.1 Yếu tố kỹ thuật - Yêu cầu của ứng dụng: có những NN phù hợp với những ứng dụng đặc thù - Nền tảng hệ thống: Ứng dụng sẽ chạy trên nền Intel, Sun, HP hay máy chủ IBM? và hệ điều... (Chương trình viết bằng VB 6 hay các phiên bản trước sẽ không hoàn toàn tương thích với VB.NET) - ADA phần lớn dựa trên Pascal, đây là một dự án của Bộ Quốc Phòng Mỹ ADA có nhiều điểm mạnh, như cơ chế kiểm soát lỗi, dễ bảo trì và sửa đổi chương trình Phiên bản hiện thời có cả các tính năng hướng đối tượng 17 - ICON là NN thủ tục cấp cao Xử lý văn bản là một trong những điểm mạnh của nó Có các phiên bản. .. thường được xem đồng nghĩa với “CGI Scripting” Thực tế, Perl “lớn tuổi” hơn web Nó 'dính“ vào công việc lập trình web do khả năng xử lý văn bản mạnh, rất linh động, khả năng chạy trên nhiều nền tảng và miễn phí - TCL (phát âm 'tickle“) có thể tương tác tốt với các công cụ dùng văn bản như trình soạn thảo, trình biên dịch dùng trên các HĐH họ Unix, và với phần mở rộng TK nó có thể truy cập tới các giao . vật. 330 Bài 21. Lập trình cơ bản với C++ 331 21.1. Chương trình lập trình cơ bản với C++ 331 Các chú thích. 333 21.2. Câu lệnh vào ra trong C++ 334 Bài 22. Kỹ thuật lập trình cơ bản với. typedef 280 Bài 17. Kỹ thuật lập trình đệ quy 284 17.1 Mục tiêu 284 17.2 Nội dung 284 17.3. Sử dụng đệ quy hay vòng lặp 287 Bài 18. Dữ liệu cơ bản và nâng cao, thuật toán và giải thuật Quick. 1 MỤC LỤC Phần 1: Mở đầu 9 Bài 1. Các ngôn ngữ lập trình 9 1.1. Ngôn ngữ lập trình 9 1.2. Ra lệnh cho máy tính làm việc 10 1.3. Phân loại Ngôn ngữ lập trình cấp thấp và cấp cao 12 1.4.

Ngày đăng: 20/04/2015, 15:08

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan