Giáo Trình Lập Trình Căn Bản Biên tập bởi: duongvanhieu Giáo Trình Lập Trình Căn Bản Biên tập bởi: duongvanhieu Các tác giả: unknown Phiên bản trực tuyến: http://voer.vn/c/ab1e3116 MỤC LỤC 1.Tổng quan về môn học 1. Giới thiệu về Cấu Trúc Dữ Liệu Và Giải Thuật 1. Mục tiêu của bài học 1. Cấu trúc dữ liệu và giải thuật 1.Ngôn ngữ Lập trình C 2. Giới thiệu về ngôn ngữ C & Môi trường TurBo C 3. Mục tiêu của bài học 2. Tổng quan về ngôn ngữ lập trình C 2. Môi trường lập trình Turbo C 2. Chương II. Các thành phần cơ bản trong C 2. Mục tiêu bài học 2. Kiểu dữ liệu sơ cấp chuẩn trong C 2. Tên và hằng trong C 2. Biến và Biểu thức Trong C 2. Chương III. Các câu lệnh đơn trong C 2. Mục tiêu của bài học 2. Câu lệnh và các lệnh đơn trong C 2. Bài tập về các câu lệnh đơn trong C 2. Chương IV. Các lệnh có cấu trúc 2. Mục tiêu của bài học 2. Khối lệnh trong lập trình C 2. Cấu trúc rẽ nhánh trong lập trình C 2. Cấu trúc lựa chọn 2. Cấu trúc vòng lặp và các câu lệnh đặc biệt 2. Chương trình con 2. Mục tiêu bài học chương trình con trong lập trình C 2. Hàm và cách xây dựng một hàm 2. Chương VI. Mục tiêu bài học 2. Mảng 1 chiều và Mảng nhiều chiều 2. Chương VII. Kiểu con trỏ 2. Mục tiêu bài học 2. Kiểu dữ liệu “con trỏ” 2. Chương VIII. Mục tiêu của bài học 2. Chuỗi ký tự và các thao tác trên chuỗi ký tự 2. Chương IX. Kiểu cấu trúc 2. Mục tiêu của bài học 2. Kiểu cấu trúc và các thao tác trên kiểu cấu trúc 2. Bài tập về kiểu cấu trúc 2. Kiểu tập tin 2. Mục tiêu bài học 2. Kiểu tập tin và các thao tác trên kiểu tập tin 2. Bài tập Tham gia đóng góp 2/199 Phần I.Tổng quan về môn học Tổng quan MỤC ĐÍCH YÊU CẦU Môn Lập Trình Căn Bản A cung cấp cho sinh viên những kiến thức cơ bản về lập trình thông qua ngôn ngữ lập trình C. Môn học này là nền tảng để tiếp thu hầu hết các môn học khác trong chương trình đào tạo. Mặt khác, nắm vững ngôn ngữ C là cơ sở để phát triển các ứng dụng. Học xong môn này, sinh viên phải nắm được các vấn đề sau: - Khái niệm về ngôn ngữ lập trình. - Khái niệm về kiểu dữ liệu - Kiểu dữ liệu có cấu trúc (cấu trúc dữ liệu). - Khái niệm về giải thuật - Ngôn ngữ biểu diễn giải thuật. - Ngôn ngữ sơ đồ (lưu đồ), sử dụng lưu đồ để biểu diễn các giải thuật. - Tổng quan về Ngôn ngữ lập trình C. - Các kiểu dữ liệu trong C. - Các lệnh có cấu trúc. - Cách thiết kế và sử dụng các hàm trong C. - Một số cấu trúc dữ liệu trong C. ĐỐI TƯỢNG MÔN HỌC Môn học lập trình căn bản được dùng để giảng dạy cho các sinh viên sau: - Sinh viên năm thứ 2 chuyên ngành Tin học, Toán Tin, Lý Tin. 3/199 - Sinh viên năm thứ 2 chuyên ngành Điện tử (Viễn thông, Tự động hóa…) NỘI DUNG CỐT LÕI Trong khuôn khổ 45 tiết, giáo trình được cấu trúc thành 2 phần: Phần 1 giới thiệu về lập trình cấu trúc, các khái niệm về lập trình, giải thuật… Phần 2 trình bày có hệ thống về ngôn ngữ lập trình C, các câu lệnh, các kiểu dữ liệu… PHẦN 1: Giới thiệu cấu trúc dữ liệu và giải thuật PHẦN 2: Giới thiệu về một ngôn ngữ lập trình - Ngôn ngữ lập trình C Chương 1: Giới thiệu về ngôn ngữ C & môi trường lập trình Turbo C Chương 2: Các thành phần của ngôn ngữ C Chương 3: Các kiểu dữ liệu sơ cấp chuẩn và các lệnh đơn Chương 4: Các lệnh có cấu trúc Chương 5: Chương trình con Chương 6: Kiểu mảng Chương 7: Kiểu con trỏ Chương 8: Kiểu chuỗi ký tự Chương 9: Kiểu cấu trúc Chương 10: Kiểu tập tin KIẾN THỨC LIÊN QUAN Để học tốt môn Lập Trình Căn Bản A, sinh viên cần phải có các kiến thức nền tảng sau: - Kiến thức toán học. - Kiến thức và kỹ năng thao tác trên máy tính. DANH MỤC TÀI LIỆU THAM KHẢO [1] Nguyễn Văn Linh, Giáo trình Tin Học Đại Cương A, Khoa Công Nghệ Thông Tin, Đại học Cần Thơ, 1991. 4/199 [2] Nguyễn Đình Tê, Hoàng Đức Hải , Giáo trình lý thuyết và bài tập ngôn ngữ C; Nhà xuất bản Giáo dục, 1999. [3] Nguyễn Cẩn, C – Tham khảo toàn diện, Nhà xuất bản Đồng Nai, 1996. [4] Võ Văn Viện, Giúp tự học Lập Trình với ngôn ngữ C, Nhà xuất bản Đồng Nai, 2002. Kernighan & Dennis Ritchie, The C Programming Language, Prentice Hall Publisher, 1988. TỪ KHÓA Bài toán, chương trình, giải thuật, ngôn ngữ giả, lưu đồ, biểu thức, gán, rẽ nhánh, lặp, hàm, mảng, con trỏ, cấu trúc, tập tin. 5/199 Giới thiệu về Cấu Trúc Dữ Liệu Và Giải Thuật Mục tiêu của bài học Học xong chương này, sinh viên sẽ nắm bắt được các vấn đề sau: - Khái niệm về ngôn ngữ lập trình. - Khái niệm về kiểu dữ liệu - Kiểu dữ liệu có cấu trúc (cấu trúc dữ liệu). - Khái niệm về giải thuật - Ngôn ngữ biểu diễn giải thuật. - Ngôn ngữ sơ đồ (lưu đồ), sử dụng lưu đồ để biểu diễn các giải thuật. Trọng tâm của phần này là giải thuật & cách biểu diễn giải thuật. Chính nhờ điều này ta mới có thể giải quyết các yêu cầu bằng chương trình máy tính. 6/199 Cấu trúc dữ liệu và giải thuật TỪ BÀI TOÁN ĐẾN CHƯƠNG TRÌNH Giả sử chúng ta cần viết một chương trình để giải phương trình bậc 2 có dạng ax2 + bx + c = 0 hay viết chương trình để lấy căn bậc n của một số thực m ( n√m). Công việc đầu tiên là chúng ta phải hiểu và biết cách giải bài toán bằng lời giải thông thường của người làm toán. Để giải được bài toán trên bằng máy tính (lập trình cho máy tính giải) thì chúng ta cần phải thực hiện qua các bước như: • Mô tả các bước giải bài toán. • Vẽ sơ đồ xử lý dựa trên các bước. • Dựa trên sơ đồ xử lý để viết chương trình xử lý bằng ngôn ngữ giả (ngôn ngữ bình thường của chúng ta). • Chọn ngôn ngữ lập trình và chuyển chương trình từ ngôn ngữ giả sang ngôn ngữ lập trình để tạo thành một chương trình hoàn chỉnh. • Thực hiện chương trình: nhập vào các tham số, nhận kết quả. Trong nhiều trường hợp, từ bài toán thực tế chúng ta phải xây dựng mô hình toán rồi mới xác định được các bước để giải. Vấn đề này sẽ được trình bày chi tiết trong môn Cấu Trúc Dữ Liệu. GIẢI THUẬT Khái niệm giải thuật Giải thuật là một hệ thống chặt chẽ và rõ ràng các quy tắc nhằm xác định một dãy các thao tác trên những dữ liệu vào sao cho sau một số hữu hạn bước thực hiện các thao tác đó ta thu được kết quả của bài toán. Ví dụ 1: Giả sử có hai bình A và B đựng hai loại chất lỏng khác nhau, chẳng hạn bình A đựng rượu, bình B đựng nước mắm. Giải thuật để hoán đổi (swap) chất lỏng đựng trong hai bình đó là: • Yêu cầu phải có thêm một bình thứ ba gọi là bình C. • Bước 1: Đổ rượu từ bình A sang bình C. • Bước 2: Đổ nước mắm từ bình B sang bình A. • Bước 3: Đổ rượu từ bình C sang bình B. Ví dụ 2: Một trong những giải thuật tìm ước chung lớn nhất của hai số a và b là: • Bước 1: Nhập vào hai số a và b. 7/199 • Bước 2: So sánh 2 số a,b chọn số nhỏ nhất gán cho UCLN. • Bước 3: Nếu một trong hai số a hoặc b không chia hết cho UCLN thì thực hiện bước 4, ngược lại (cả a và b đều chia hết cho UCLN) thì thực hiện bước 5. • Bước 4: Giảm UCLN một đơn vị và quay lại bước 3 • Bước 5: In UCLN - Kết thúc. Các đặc trưng của giải thuật • Tính kết thúc: Giải thuật phải dừng sau một số hữu hạn bước. • Tính xác định: Các thao tác máy tính phải thực hiện được và các máy tính khác nhau thực hiện cùng một bước của cùng một giải thuật phải cho cùng một kết quả. • Tính phổ dụng: Giải thuật phải "vét' hết các trường hợp và áp dụng cho một loạt bài toán cùng loại. • Tính hiệu quả: Một giải thuật được đánh giá là tốt nếu nó đạt hai tiêu chuẩn sau: - Thực hiện nhanh, tốn ít thời gian. - Tiêu phí ít tài nguyên của máy, chẳng hạn tốn ít bộ nhớ. Giải thuật tìm UCLN nêu trên đạt tính kết thúc bởi vì qua mỗi lần thực hiện bước 4 thì UCLN sẽ giảm đi một đơn vị cho nên trong trường hợp xấu nhất thì UCLN=1, giải thuật phải dừng. Các thao tác trình bày trong các bước, máy tính đều có thể thực hiện được nên nó có tính xác định. Giải thuật này cũng đạt tính phổ dụng vì nó được dùng để tìm UCLN cho hai số nguyeên dương a và b bất kỳ. Tuy nhiên tính hiệu quả của giải thuật có thể chưa cao; cụ thể là thời gian chạy máy có thể còn tốn nhiều hơn một số giải thuật khác mà chúng ta sẽ có dịp trở lại trong phần lập trình C. Ngôn ngữ biểu diễn giải thuật Để biểu diễn giải thuật, cần phải có một tập hợp các ký hiệu dùng để biểu diễn, mỗi ký hiệu biểu diễn cho một hành động nào đó. Tập hợp các ký hiệu đó lại tạo thành ngôn ngữ biểu diễn giải thuật. Ngôn ngữ tự nhiên Ngôn ngữ tự nhiên là ngôn ngữ của chúng ta đang sử dụng, chúng ta có thể sử dụng ngôn ngữ tự nhiên để mô tả giải thuật giống như các ví dụ ở trên. Ví dụ: Ta có giải thuật giải phương trình bậc nhất dạng ax+b = 0 như sau: • Bước 1: Nhận giá trị của các tham số a, b 8/199 • Bước 2: Xét giá trị của a xem có bằng 0 hay không? Nếu a=0 thì làm bước 3, nếu a khác không thì làm bước 4. • Bước 3: (a bằng 0) Nếu b bằng 0 thì ta kết luận phương trình vô số nghiệm, nếu b khác 0 thì ta kết luận phương trình vô nghiệm. • Bước 4: ( a khác 0) Ta kết luận phương trình có nghiệm x=-b/a Ngôn ngữ sơ đồ (Lưu đồ) Ngôn ngữ sơ đồ (lưu đồ) là một ngôn ngữ đặc biệt dùng để mô tả giải thuật bằng các sơ đồ hình khối. Mỗi khối qui định một hành động.