Hỗ trợ đào tạo

PRF192 - Cơ sở lập trình

9Chủ đề
0Câu hỏi

PRF192 - Cơ sở lập trình (Programming Fundamentals) là môn học 3 tín chỉ của Đại học FPT, dạy cách giải quyết bài toán thực tế bằng máy tính thông qua ngôn ngữ C, với trọng tâm là thiết kế chương trình hướng hàm, mô-đun hoá, kiểm thử và kỷ luật lập trình. Nội dung môn học bao quát trọn bộ chương trình 60 buổi theo chín chuẩn đầu ra CLO1 đến CLO9. Nội dung gồm: máy tính và phần mềm (khái niệm cơ bản về hệ thống máy tính, các bước phát triển phần mềm, quy trình mã nguồn - biên dịch - liên kết - thực thi, cấu trúc một chương trình C với chỉ thị tiền xử lý #include, hàm main, dấu chấm phẩy kết thúc câu lệnh, chú thích, trình biên dịch và môi trường DevC++); biến, kiểu dữ liệu và biểu thức (khai báo biến và hằng, quy tắc đặt tên định danh, const và #define, các kiểu int, float, double, char và unsigned cùng miền giá trị, nhập xuất bằng scanf và printf với các đặc tả %d %f %c %s, toán tử số học, phép chia nguyên và phép chia lấy dư, toán tử quan hệ, toán tử logic, toán tử trên bit, toán tử gán rút gọn, tăng giảm một đơn vị, trộn kiểu dữ liệu, ép kiểu tường minh và ngầm định, độ ưu tiên và tính kết hợp); cấu trúc điều khiển (rẽ nhánh if, if-else, if lồng nhau, thang else-if, switch-case với break và default; vòng lặp for, while, do-while, break và continue, vòng lặp lồng nhau; phong cách lập trình với thụt lề, đặt tên có nghĩa và chú thích); mô-đun hoá và hàm (mô-đun là gì và vì sao phải mô-đun hoá, tính kết dính cao và ghép nối lỏng, nguyên tắc định nghĩa mô-đun, định nghĩa hàm với kiểu trả về và danh sách tham số, nguyên mẫu hàm, lời gọi hàm, truyền tham số theo giá trị, phân biệt hàm thư viện với hàm tự viết, phạm vi và thời gian sống của biến cục bộ - toàn cục - static, chương trình dạng menu gọi hàm); con trỏ (khái niệm và công dụng, khai báo con trỏ, toán tử lấy địa chỉ và toán tử truy xuất giá trị, số học con trỏ, con trỏ NULL, truyền tham số theo tham chiếu, quan hệ giữa con trỏ và mảng, cấp phát động bằng malloc, calloc, realloc và free, rò rỉ bộ nhớ); thư viện chuẩn C (stdlib.h, time.h, math.h, ctype.h và vào ra có định dạng); mảng và cấu trúc (mảng một chiều, chỉ số bắt đầu từ 0, mảng hai chiều và ma trận, tìm kiếm tuyến tính, sắp xếp chọn, kiểu struct, truy cập thành viên, mảng struct, typedef); chuỗi ký tự (chuỗi là mảng char kết thúc bằng ký tự null, nhập xuất chuỗi, các hàm trong string.h như strlen, strcpy, strcat, strcmp, mảng chuỗi); và tệp tin (tệp văn bản và tệp nhị phân, con trỏ FILE, fopen với các chế độ mở, fclose, truy cập tuần tự và ngẫu nhiên, fprintf, fscanf, fgets, fputs, fread, fwrite, fseek, ftell, feof).

Chủ đề học tập

Cơ sở lập trình

PRF192 - Phần 1: Máy tính, phần mềm và chương trình C đầu tiên

Ứng với CLO1, buổi 1 đến 3. Phần mở đầu trả lời câu hỏi nền tảng: một chương trình là gì và nó chạy trên máy tính như thế nào. Nội dung gồm khái niệm cơ bản về hệ thống máy tính với phần cứng, phần mềm, bộ nhớ và bộ xử lý; các bước phát triển một phần mềm từ phân tích bài toán, thiết kế thuật toán, viết mã, kiểm thử tới bảo trì; và cách chuyển một bài toán thực tế thành thuật toán rồi thành mã nguồn. Phần thứ hai đi vào cấu trúc một chương trình C đơn giản: chỉ thị tiền xử lý #include và vai trò của nó, hàm main làm điểm bắt đầu thực thi, dấu chấm phẩy kết thúc câu lệnh, cặp ngoặc nhọn gom khối, cách viết chú thích. Khép lại bằng quy trình mã nguồn - biên dịch - liên kết - thực thi và cách dùng trình biên dịch C trong môi trường DevC++.

0Bộ đềbộ đề
0+Câu hỏicâu hỏi
đăng ngày
Cơ sở lập trình

PRF192 - Phần 2: Biến, kiểu dữ liệu, toán tử và biểu thức

Ứng với CLO2, buổi 4 đến 8. Phần này xây dựng bộ công cụ tính toán cơ bản của C. Nội dung bắt đầu từ khai báo biến và hằng, quy tắc đặt tên định danh, hai cách tạo hằng bằng const và bằng #define; rồi tới kiểu dữ liệu với int, float, double, char cùng các biến thể unsigned và long, kích thước ô nhớ và miền giá trị của từng kiểu, cùng thao tác bộ nhớ cơ bản khi một biến được cấp phát. Phần nhập xuất giới thiệu scanf và printf với các đặc tả định dạng %d, %f, %c, %s. Phần biểu thức trình bày toán tử số học kèm bẫy phép chia nguyên và phép chia lấy dư, toán tử quan hệ, toán tử logic, toán tử trên bit, toán tử gán rút gọn và toán tử tăng giảm, rồi khép lại bằng trộn kiểu dữ liệu, ép kiểu và thứ tự ưu tiên.

0Bộ đềbộ đề
0+Câu hỏicâu hỏi
đăng ngày
Cơ sở lập trình

PRF192 - Phần 3: Cấu trúc điều khiển - rẽ nhánh và vòng lặp

Ứng với CLO3, buổi 9 và 10. Phần này dạy cách điều khiển luồng thực thi của chương trình. Nhánh rẽ gồm câu lệnh if, if-else, if lồng nhau và thang else-if để xử lý nhiều điều kiện, cùng switch-case với vai trò bắt buộc của break và nhánh default, kèm những giới hạn khiến switch không thay thế được if trong mọi tình huống. Nhánh lặp gồm ba dạng for, while và do-while, tiêu chí chọn dạng phù hợp, biến đếm và điều kiện dừng, khác biệt cốt lõi giữa while kiểm tra trước và do-while kiểm tra sau nên luôn chạy ít nhất một lần, hai lệnh break và continue, cùng vòng lặp lồng nhau. Phần cuối bàn về phong cách lập trình: thụt lề nhất quán, đặt tên có nghĩa, viết chú thích và tránh lồng quá sâu.

0Bộ đềbộ đề
0+Câu hỏicâu hỏi
đăng ngày
Cơ sở lập trình

PRF192 - Phần 4: Mô-đun hoá và hàm

Ứng với CLO4, buổi 16 đến 27 và là phần trọng số lớn nhất trong đề thi cuối kỳ. Nửa đầu bàn về mô-đun: mô-đun là gì, vì sao phải chia nhỏ chương trình, đặc điểm của một mô-đun tốt với tính kết dính cao và ghép nối lỏng, mỗi mô-đun chỉ làm một việc, cùng các nguyên tắc định nghĩa mô-đun khi phân tích một bài toán thực tế. Nửa sau hiện thực hoá mô-đun bằng hàm trong C: định nghĩa hàm với kiểu trả về, tên và danh sách tham số; nguyên mẫu hàm và lý do phải khai báo trước khi dùng; cách gọi hàm và nhận giá trị trả về; truyền tham số theo giá trị cùng hệ quả là hàm không sửa được biến của lời gọi; phân biệt hàm thư viện với hàm tự viết; phạm vi và thời gian sống của biến cục bộ, toàn cục và static.

0Bộ đềbộ đề
0+Câu hỏicâu hỏi
đăng ngày
Cơ sở lập trình

PRF192 - Phần 5: Con trỏ

Ứng với CLO5, buổi 28 đến 31. Phần này giới thiệu con trỏ là biến lưu địa chỉ của một biến khác, cùng những tình huống bắt buộc phải dùng tới nó. Nội dung gồm cú pháp khai báo con trỏ theo kiểu dữ liệu trỏ tới, hai toán tử cốt lõi là lấy địa chỉ và truy xuất giá trị tại địa chỉ, số học con trỏ và ý nghĩa của việc cộng trừ theo kích thước kiểu, con trỏ NULL cùng nguy cơ truy xuất con trỏ chưa khởi tạo. Trọng tâm ứng dụng là truyền con trỏ làm tham số hàm để đạt hiệu ứng truyền theo tham chiếu, nhờ đó hàm sửa được biến của lời gọi, minh hoạ kinh điển bằng hàm hoán đổi hai giá trị. Phần cuối là dữ liệu cấp phát động với malloc, calloc, realloc và free, kèm rủi ro rò rỉ bộ nhớ khi quên giải phóng.

0Bộ đềbộ đề
0+Câu hỏicâu hỏi
đăng ngày
Cơ sở lập trình

PRF192 - Phần 6: Thư viện chuẩn C và vào ra có định dạng

Ứng với CLO6, buổi 32 đến 34. Phần này hệ thống hoá các thư viện chuẩn hay dùng và cách khai thác chúng. Thư viện stdlib.h cung cấp sinh số ngẫu nhiên với rand và srand, chuyển chuỗi sang số, giá trị tuyệt đối, cấp phát bộ nhớ và kết thúc chương trình. Thư viện time.h cho phép lấy thời gian hệ thống, đo thời gian chạy và làm hạt giống cho bộ sinh ngẫu nhiên. Thư viện math.h gồm căn bậc hai, luỹ thừa, trị tuyệt đối thực, làm tròn lên và xuống, các hàm lượng giác và lôgarit. Thư viện ctype.h phục vụ xử lý ký tự với các hàm kiểm tra chữ cái, chữ số, chữ hoa chữ thường và các hàm chuyển đổi. Phần cuối đi sâu vào vào ra có định dạng: độ rộng trường, số chữ số thập phân, cờ căn lề và các chuỗi thoát.

0Bộ đềbộ đề
0+Câu hỏicâu hỏi
đăng ngày
Cơ sở lập trình

PRF192 - Phần 7: Mảng và kiểu cấu trúc (struct)

Ứng với CLO7, buổi 37 đến 45. Phần mảng bắt đầu từ mảng một chiều: khai báo, khởi tạo, chỉ số bắt đầu từ 0, duyệt nhập xuất bằng vòng lặp, và rủi ro truy cập vượt biên vì C không tự kiểm tra. Tiếp đó là mảng hai chiều dùng biểu diễn ma trận với cách duyệt theo dòng và theo cột cùng các phép toán trên ma trận. Phần thuật toán trên mảng gồm tìm kiếm tuyến tính và sắp xếp chọn, kèm cách lập luận về số phép so sánh. Phần cấu trúc giới thiệu struct để gom nhiều trường dữ liệu khác kiểu thành một thực thể: khai báo kiểu, truy cập thành viên bằng toán tử chấm, struct lồng nhau, mảng struct để quản lý danh sách bản ghi, truyền struct cho hàm và dùng typedef cho gọn.

0Bộ đềbộ đề
0+Câu hỏicâu hỏi
đăng ngày
Cơ sở lập trình

PRF192 - Phần 8: Chuỗi ký tự

Ứng với CLO8, buổi 46 đến 51. Điểm mấu chốt của phần này là trong C không có kiểu chuỗi riêng: chuỗi chỉ là mảng ký tự kết thúc bằng ký tự null, và mọi lỗi chuỗi thường bắt nguồn từ việc quên ký tự kết thúc đó hoặc khai báo mảng thiếu một ô cho nó. Nội dung gồm khai báo và khởi tạo chuỗi theo nhiều cách; nhập xuất chuỗi bằng các hàm có sẵn cùng khác biệt quan trọng giữa việc đọc một từ và đọc cả dòng có khoảng trắng, và lý do nên tránh hàm đọc chuỗi không giới hạn độ dài. Phần thao tác chuỗi giới thiệu các hàm trong string.h gồm đo độ dài, sao chép, nối, so sánh và tìm kiếm. Phần cuối là mảng chuỗi và kết hợp với ctype.h để xử lý từng ký tự.

0Bộ đềbộ đề
0+Câu hỏicâu hỏi
đăng ngày
Cơ sở lập trình

PRF192 - Phần 9: Tệp tin

Ứng với CLO9, buổi 52 đến 57 và là phần khép lại môn học. Nội dung bắt đầu từ lý do cần tệp tin: dữ liệu trong biến mất khi chương trình kết thúc, còn tệp giúp lưu trữ lâu dài. Phần phân loại so sánh tệp văn bản với tệp nhị phân về cách lưu trữ, khả năng đọc bằng mắt thường, kích thước và tốc độ. Phần thao tác trình bày con trỏ FILE, hàm mở tệp cùng các chế độ đọc, ghi và ghi thêm, thói quen bắt buộc là kiểm tra kết quả mở tệp trước khi dùng, và hàm đóng tệp để đẩy dữ liệu từ bộ đệm xuống đĩa. Phần cuối là hai cách truy cập tuần tự và ngẫu nhiên cùng bộ hàm tương ứng để đọc ghi theo định dạng, theo dòng, theo ký tự, theo khối, và các hàm dịch chuyển vị trí đọc ghi.

0Bộ đềbộ đề
0+Câu hỏicâu hỏi
đăng ngày