Giáo Trình Môn Kỹ Thuật Lập Trình - Hướng Dẫn Cơ Bản và Thực Hành Chi Tiết

Giáo trình nghiên cứu môn kỹ thuật lập trình, trình bày lý thuyết rõ ràng, minh họa ví dụ thực tế, phù hợp sinh viên kỹ thuật., phục vụ nghiên cứu và ứng dụng thực tiễn

Chuyên ngành

Kỹ Thuật Lập Trình

Người đăng

Ẩn danh

Thể loại

Giáo trình
124
1
0

Phí lưu trữ

35 Point

Tóm tắt

I. Tổng quan giáo trình môn kỹ thuật lập trình C hiệu quả

Giáo trình môn kỹ thuật lập trình là tài liệu nền tảng cho mọi sinh viên ngành Công nghệ Thông tin. Môn học này không chỉ cung cấp kiến thức về cú pháp ngôn ngữ lập trình, mà còn trang bị tư duy giải quyết vấn đề một cách có hệ thống. Một giáo trình môn kỹ thuật lập trình chất lượng sẽ bao gồm các chương mục được sắp xếp logic, từ khái niệm cơ bản đến các kỹ thuật nâng cao. Nội dung thường bắt đầu với các yếu tố như biến, kiểu dữ liệu, toán tử, và các cấu trúc điều khiển. Sau đó, giáo trình sẽ đi sâu vào các chủ đề phức tạp hơn như hàm, mảng, chuỗi ký tự, và đặc biệt là con trỏ - một khái niệm quan trọng trong lập trình C cơ bản và nâng cao. Các chương sau thường tập trung vào các cấu trúc dữ liệu do người dùng định nghĩa (struct) và các thao tác xử lý tập tin (file I/O), đây là những kỹ năng thiết yếu cho việc xây dựng ứng dụng thực tế. Việc nắm vững kiến thức từ giáo trình giúp người học xây dựng một nền móng vững chắc, tạo tiền đề để tiếp cận các lĩnh vực chuyên sâu hơn như lập trình hướng đối tượng hay phát triển phần mềm quy mô lớn. Một đề cương chi tiết môn kỹ thuật lập trình chuẩn mực sẽ giúp định hướng quá trình học tập, đảm bảo không bỏ sót bất kỳ kiến thức cốt lõi nào.

1.1. Vai trò nền tảng của kỹ thuật lập trình C cơ bản và nâng cao

Môn Kỹ thuật lập trình, đặc biệt với ngôn ngữ C/C++, được xem là môn học "xương sống". Nó không chỉ dạy cách viết code, mà còn rèn luyện tư duy thuật toán. Người học sẽ làm quen với việc phân tích bài toán, thiết kế giải thuật và hiện thực hóa giải pháp bằng mã lệnh. Kiến thức về lập trình C cơ bản và nâng cao là yêu cầu bắt buộc để học tốt các môn chuyên ngành khác như cấu trúc dữ liệu và giải thuật, hệ điều hành, hay lập trình nhúng. Các khái niệm như quản lý bộ nhớ động thông qua con trỏ trong C++, xử lý file nhị phân, hay tối ưu hóa chương trình đều được giới thiệu trong môn học này. Chính vì vậy, việc đầu tư thời gian để hiểu sâu sắc từng phần trong tài liệu môn kỹ thuật lập trình là một sự đầu tư xứng đáng cho sự nghiệp sau này.

1.2. Cấu trúc một đề cương chi tiết môn kỹ thuật lập trình

Một đề cương chi tiết môn kỹ thuật lập trình thường được xây dựng theo lộ trình tăng dần độ khó. Phần đầu tiên giới thiệu tổng quan về lập trình, lịch sử ngôn ngữ C/C++, và môi trường phát triển. Tiếp theo là các chương về cú pháp cơ bản: biến, hằng, kiểu dữ liệu, toán tử, và các câu lệnh rẽ nhánh, vòng lặp. Phần trọng tâm của đề cương tập trung vào các khái niệm phức tạp hơn như hàm, truyền tham số, đệ quy, mảng một chiều, mảng nhiều chiều và chuỗi ký tự. Các chủ đề nâng cao như con trỏ, cấp phát bộ nhớ động, kiểu dữ liệu trừu tượng (struct), và thao tác với tệp tin (file) thường được đặt ở các chương cuối. Mỗi chương đều đi kèm lý thuyết kỹ thuật lập trình và hệ thống bài tập kỹ thuật lập trình có lời giải để sinh viên thực hành và củng cố kiến thức.

II. Khó khăn khi học kỹ thuật lập trình và cách để vượt qua

Học kỹ thuật lập trình là một hành trình đầy thử thách, đặc biệt với những người mới bắt đầu. Một trong những rào cản lớn nhất là việc phải nắm bắt các khái niệm trừu tượng. Các chủ đề như con trỏ trong C++đệ quy thường gây nhầm lẫn vì chúng đòi hỏi một cách tư duy khác biệt so với logic thông thường. Con trỏ liên quan trực tiếp đến việc quản lý địa chỉ ô nhớ, một khái niệm vô hình và khó hình dung. Trong khi đó, đệ quy lại yêu cầu người học phải theo dõi luồng thực thi của hàm tự gọi chính nó, dễ dẫn đến tình trạng "lạc lối" trong logic. Một thách thức khác là khối lượng kiến thức lý thuyết lớn. Sinh viên cần phải ghi nhớ nhiều cú pháp, các hàm thư viện chuẩn (như trong <stdio.h>, <math.h>), và các nguyên tắc thiết kế thuật toán. Sự thiếu hụt các nguồn tài liệu môn kỹ thuật lập trình chất lượng, đặc biệt là các bài tập kỹ thuật lập trình có lời giải chi tiết, cũng là một trở ngại. Nhiều người học cảm thấy bế tắc khi không thể tự mình tìm ra lỗi sai trong code hoặc không có nguồn tham khảo đáng tin cậy để đối chiếu. Vượt qua những khó khăn này đòi hỏi sự kiên trì, thực hành liên tục và tìm kiếm một phương pháp học tập phù hợp, kết hợp giữa việc đọc bài giảng kỹ thuật lập trình và tự mình giải quyết các bài toán từ đơn giản đến phức tạp.

2.1. Thách thức với các khái niệm như con trỏ trong C và đệ quy

Con trỏ là một trong những tính năng mạnh mẽ nhất của C/C++ nhưng cũng là nguồn gốc của nhiều lỗi phổ biến. Việc hiểu sai về cấp phát động (malloc, new) và giải phóng bộ nhớ (free, delete) có thể dẫn đến rò rỉ bộ nhớ hoặc lỗi truy cập vùng nhớ không hợp lệ. Như được minh họa trong các ví dụ của giáo trình, một con trỏ có thể trỏ đến một biến khác hoặc một vùng nhớ được cấp phát riêng. Sự khác biệt này, nếu không được nắm vững, sẽ gây ra nhiều khó khăn. Tương tự, đệ quy là một kỹ thuật giải quyết bài toán bằng cách chia nó thành các bài toán con nhỏ hơn có cùng dạng. Mặc dù thanh lịch, việc gỡ lỗi một hàm đệ quy rất phức tạp và đòi hỏi kỹ năng phân tích sâu.

2.2. Vấn đề tìm kiếm bài tập kỹ thuật lập trình có lời giải

Lý thuyết suông là không đủ. Để thành thạo, sinh viên cần thực hành qua nhiều bài tập kỹ thuật lập trình. Tuy nhiên, việc tìm kiếm nguồn bài tập đa dạng, có phân loại theo độ khó và đi kèm lời giải chi tiết là một vấn đề không nhỏ. Các bài tập trong giáo trình (ví dụ các bài tập chương 4 về quản lý mặt hàng, sinh viên) là nguồn tài liệu quý giá. Chúng giúp áp dụng kiến thức về struct, mảng, và xử lý file vào các bài toán thực tế. Khi gặp bế tắc, việc có một bài tập kỹ thuật lập trình có lời giải để tham khảo sẽ giúp sinh viên hiểu ra lỗi sai trong tư duy logic của mình, từ đó rút kinh nghiệm và tiến bộ nhanh hơn. Đây là một yếu tố quan trọng trong quá trình ôn thi kỹ thuật lập trình.

III. Phương pháp nắm vững lý thuyết kỹ thuật lập trình cốt lõi

Để chinh phục môn học này, việc xây dựng một phương pháp học tập có hệ thống là cực kỳ quan trọng. Thay vì học thuộc lòng cú pháp, người học nên tập trung vào việc hiểu bản chất của từng khái niệm. Nền tảng của lý thuyết kỹ thuật lập trình nằm ở việc hiểu rõ cách máy tính lưu trữ và xử lý dữ liệu. Bắt đầu với các kiểu dữ liệu trừu tượng và các kiểu do người dùng định nghĩa như struct sẽ giúp tạo ra một cách nhìn có cấu trúc hơn về dữ liệu. Việc hiểu cách các struct cho phép gom nhóm các thông tin liên quan (ví dụ: thông tin sinh viên gồm mã, tên, năm sinh) sẽ làm cho việc quản lý dữ liệu trong các chương trình lớn trở nên dễ dàng hơn. Tiếp theo, cần dành thời gian đặc biệt cho cấu trúc dữ liệu và giải thuật cơ bản. Đây là trái tim của lập trình. Nắm vững cách hoạt động của mảng, danh sách liên kết, ngăn xếp, và hàng đợi sẽ cung cấp bộ công cụ mạnh mẽ để giải quyết nhiều lớp bài toán khác nhau. Phương pháp hiệu quả là kết hợp đọc bài giảng kỹ thuật lập trình với việc tự tay viết lại các cấu trúc dữ liệu này từ đầu. Quá trình này giúp củng cố kiến thức sâu sắc và rèn luyện kỹ năng gỡ lỗi, chuẩn bị tốt cho các đồ án kỹ thuật lập trình phức tạp hơn.

3.1. Hiểu sâu về cấu trúc dữ liệu và giải thuật cơ bản

Mọi chương trình hiệu quả đều được xây dựng trên nền tảng cấu trúc dữ liệu và giải thuật phù hợp. Giáo trình thường giới thiệu mảng là cấu trúc dữ liệu đầu tiên. Người học cần hiểu rõ ưu và nhược điểm của mảng, các thao tác trên mảng như tìm kiếm, sắp xếp. Các giải thuật cơ bản như tìm kiếm tuyến tính, tìm kiếm nhị phân, hay sắp xếp nổi bọt là những viên gạch đầu tiên. Việc hiểu độ phức tạp thuật toán (Big O) ngay từ giai đoạn này sẽ giúp hình thành thói quen viết mã tối ưu. Thực hành các bài tập liên quan đến xử lý mảng và ma trận, như các bài tập trong chương 3 và 4 của tài liệu tham khảo, là cách tốt nhất để làm chủ phần kiến thức này.

3.2. Làm chủ kiểu dữ liệu trừu tượng và kiểu do người dùng định nghĩa

Ngôn ngữ C/C++ cung cấp các kiểu dữ liệu cơ sở, nhưng để giải quyết bài toán thực tế, chúng ta cần các cấu trúc phức tạp hơn. Đây là lúc kiểu dữ liệu trừu tượngstruct phát huy tác dụng. Như được định nghĩa trong Chương 4 của giáo trình, struct cho phép "xây dựng một kiểu dữ liệu mới trên cơ sở các kiểu đã được định nghĩa". Ví dụ, một struct SinhVien có thể chứa các thành phần như char ms[10], char ten[50], int ns. Điều này giúp mã nguồn trở nên trong sáng, dễ đọc và dễ quản lý hơn so với việc dùng ba mảng riêng biệt. Nắm vững cách khai báo, khởi tạo, và truy cập các thành phần của struct (dùng toán tử . hoặc ->) là kỹ năng cơ bản để tiến tới lập trình hướng đối tượng.

IV. Hướng dẫn áp dụng kỹ thuật lập trình C vào xử lý file

Xử lý file là một kỹ năng không thể thiếu của lập trình viên, cho phép chương trình lưu trữ dữ liệu bền vững và tương tác với các hệ thống khác. Một giáo trình môn kỹ thuật lập trình hoàn chỉnh luôn dành một chương quan trọng cho chủ đề này. Các thao tác trên file trong C/C++ chủ yếu dựa vào thư viện <stdio.h>, cung cấp một tập hợp hàm mạnh mẽ để làm việc với các dòng dữ liệu (streams). Quá trình xử lý file luôn tuân theo một chu trình chuẩn: mở file, thực hiện thao tác (đọc/ghi), và cuối cùng là đóng file để đảm bảo toàn vẹn dữ liệu. Việc hiểu rõ các chế độ mở file ("r", "w", "a", "rb", "wb",...) là bước đầu tiên và quan trọng nhất, quyết định các hành động có thể thực hiện trên file. Ví dụ, sử dụng fopen() với chế độ "w" sẽ xóa toàn bộ nội dung cũ của file nếu nó đã tồn tại. Ngược lại, chế độ "a" (append) sẽ ghi thêm dữ liệu vào cuối file. Nắm vững các hàm như fprintf(), fscanf(), fread(), fwrite() giúp xử lý hiệu quả cả file văn bản và file nhị phân, là nền tảng cho việc xây dựng các ứng dụng có khả năng quản lý dữ liệu lớn.

4.1. Các thao tác cơ bản Mở đọc ghi và đóng file trong C

Quy trình làm việc với file bắt đầu bằng hàm fopen(). Hàm này nhận tên file và chế độ mở làm tham số, trả về một con trỏ kiểu FILE*. Việc kiểm tra con trỏ này có giá trị NULL hay không là rất quan trọng để xử lý lỗi không thể mở file. Sau khi mở thành công, có thể sử dụng các hàm như fgetc(), fputc(), fgets(), fputs() để đọc/ghi từng ký tự hoặc chuỗi. Để làm việc với dữ liệu có định dạng, fscanf()fprintf() là lựa chọn tối ưu. Cuối cùng, hàm fclose() phải được gọi để giải phóng tài nguyên và ghi lại mọi dữ liệu còn trong bộ đệm ra đĩa. Bỏ qua bước này có thể dẫn đến mất mát dữ liệu. Các ví dụ trong giáo trình (từ trang 101 trở đi) minh họa rất rõ ràng quy trình này.

4.2. Sử dụng hàm fseek và ftell để quản lý con trỏ file

Đối với các file truy cập ngẫu nhiên (random access), việc di chuyển con trỏ file đến một vị trí cụ thể là cần thiết. Thư viện <stdio.h> cung cấp hai hàm mạnh mẽ cho mục đích này. Hàm fseek() cho phép dịch chuyển con trỏ file đến một vị trí bất kỳ, tính từ đầu file (SEEK_SET), cuối file (SEEK_END), hoặc vị trí hiện tại (SEEK_CUR). Điều này cực kỳ hữu ích khi cần cập nhật một bản ghi cụ thể trong file nhị phân mà không cần đọc lại toàn bộ file. Trong khi đó, hàm ftell() trả về vị trí hiện tại của con trỏ file. Một ứng dụng phổ biến của ftell() kết hợp với fseek() là để xác định kích thước của một file, bằng cách di chuyển con trỏ đến cuối file và lấy vị trí của nó, như ví dụ 9.12 trong tài liệu tham khảo.

V. Top tài liệu môn kỹ thuật lập trình và ứng dụng thực tế

Để học tốt, việc kết hợp giữa giáo trình môn kỹ thuật lập trình chính quy và các nguồn tài liệu bổ sung là rất cần thiết. Internet là một kho tàng vô giá với vô số slide kỹ thuật lập trình từ các trường đại học uy tín, các bài giảng kỹ thuật lập trình dưới dạng video trên YouTube, và các diễn đàn lập trình nơi sinh viên có thể trao đổi và giải đáp thắc mắc. Những tài liệu này thường trình bày kiến thức dưới nhiều góc độ khác nhau, giúp người học dễ dàng tìm được cách giải thích phù hợp với mình. Tuy nhiên, kiến thức sẽ chỉ thực sự được củng cố khi áp dụng vào thực tế. Bắt đầu từ những bài tập nhỏ trong giáo trình, sinh viên nên dần thử sức với các dự án lớn hơn. Một đồ án kỹ thuật lập trình không cần quá phức tạp, ví dụ như xây dựng một chương trình quản lý danh bạ, quản lý thư viện, hoặc một trò chơi đơn giản như caro, rắn săn mồi trên console. Quá trình thực hiện đồ án sẽ buộc người học phải vận dụng tổng hợp kiến thức về cấu trúc dữ liệu và giải thuật, quản lý bộ nhớ với con trỏ trong C++, và lưu trữ dữ liệu bằng file. Đây là cách hiệu quả nhất để biến lý thuyết thành kỹ năng thực tiễn.

5.1. Tổng hợp slide kỹ thuật lập trình và bài giảng chất lượng

Bên cạnh giáo trình giấy, các slide kỹ thuật lập trình do giảng viên biên soạn thường cô đọng những kiến thức quan trọng nhất, kèm theo ví dụ minh họa trực quan. Nhiều trường đại học công khai các tài liệu này trên website của khoa. Các kênh YouTube giáo dục về lập trình cũng là một nguồn học liệu tuyệt vời, cung cấp các bài giảng kỹ thuật lập trình chi tiết, giải thích các khái niệm khó một cách sinh động. Việc kết hợp nhiều nguồn tài liệu giúp tạo ra một cái nhìn toàn diện và sâu sắc hơn về môn học, đồng thời giúp quá trình ôn thi kỹ thuật lập trình trở nên hiệu quả hơn.

5.2. Ý tưởng phát triển đồ án kỹ thuật lập trình từ kiến thức nền

Một đồ án kỹ thuật lập trình là cơ hội để thể hiện sự sáng tạo và kỹ năng giải quyết vấn đề. Dựa trên kiến thức về struct và file, sinh viên có thể xây dựng một hệ thống quản lý đơn giản như: quản lý sinh viên (thêm, sửa, xóa, tìm kiếm, sắp xếp), quản lý kho hàng, hoặc quản lý chi tiêu cá nhân. Tất cả dữ liệu sẽ được lưu vào file văn bản hoặc file nhị phân. Đối với những ai yêu thích thuật toán, việc hiện thực hóa các trò chơi logic như Sudoku, cờ vua (phiên bản đơn giản), hay mê cung là một thử thách thú vị. Những dự án này không chỉ giúp củng cố kiến thức đã học mà còn là điểm cộng lớn trong CV khi xin việc sau này.

VI. Bí quyết ôn thi kỹ thuật lập trình và định hướng tương lai

Giai đoạn ôn thi kỹ thuật lập trình đòi hỏi một chiến lược thông minh và sự tập trung cao độ. Chìa khóa thành công không nằm ở việc học nhồi nhét, mà là hệ thống hóa lại toàn bộ kiến thức đã học. Hãy bắt đầu bằng cách xem lại đề cương chi tiết môn kỹ thuật lập trình để đảm bảo không bỏ sót bất kỳ chủ đề quan trọng nào. Tạo ra một sơ đồ tư duy kết nối các khái niệm lại với nhau: từ kiểu dữ liệu cơ bản, đến struct, rồi đến mảng các struct, và cách lưu trữ chúng vào file. Sau khi đã nắm vững lý thuyết kỹ thuật lập trình, hãy dành phần lớn thời gian để luyện giải bài tập. Bắt đầu với các bài tập kỹ thuật lập trình có lời giải để hiểu cách áp dụng lý thuyết, sau đó thử sức với các đề thi cũ hoặc các bài toán tương tự mà không xem trước lời giải. Kỹ năng gỡ lỗi và viết code trên giấy là cực kỳ quan trọng trong các kỳ thi. Vượt qua môn học này không chỉ là một cột mốc học tập, mà còn mở ra cánh cửa đến với các lĩnh vực hấp dẫn như lập trình hướng đối tượng, phát triển game, và trí tuệ nhân tạo.

6.1. Chiến lược hệ thống hóa lý thuyết và luyện giải bài tập

Một chiến lược ôn thi hiệu quả bao gồm hai giai đoạn. Giai đoạn một là tổng hợp lý thuyết kỹ thuật lập trình. Hãy tự viết lại các định nghĩa quan trọng, ví dụ về cách sử dụng con trỏ trong C++, các hàm xử lý file, và cú pháp khai báo struct. Giai đoạn hai là thực hành chuyên sâu. Tìm kiếm và giải quyết càng nhiều dạng bài tập kỹ thuật lập trình càng tốt, từ xử lý chuỗi, mảng, ma trận cho đến các bài toán quản lý phức tạp sử dụng struct và file. Việc lặp đi lặp lại quá trình này giúp kiến thức "thấm" vào tiềm thức và tăng tốc độ phản xạ khi giải quyết vấn đề trong phòng thi.

6.2. Từ kỹ thuật lập trình đến lập trình hướng đối tượng chuyên sâu

Kỹ thuật lập trình với C là lập trình thủ tục, một bước đệm hoàn hảo để tiến lên lập trình hướng đối tượng (OOP) với C++. Các khái niệm như struct có thể được xem là phiên bản sơ khai của class trong OOP. Khi một struct không chỉ chứa dữ liệu mà còn được bổ sung thêm các hàm để thao tác trên dữ liệu đó, nó đã tiến gần đến khái niệm của một đối tượng. Nền tảng tư duy cấu trúc và quản lý bộ nhớ vững chắc từ môn Kỹ thuật lập trình sẽ giúp việc tiếp thu các khái niệm của OOP như đóng gói, kế thừa, và đa hình trở nên dễ dàng hơn rất nhiều. Đây là con đường phát triển tự nhiên và tất yếu cho mọi lập trình viên chuyên nghiệp.

16/08/2025

Trích đoạn nội dung tài liệu

TAI LIEU THAM KHẢO [1] Kenneth A.Barclay, 1999, C Problem Solving and Programming, Prentice Hall, trang 48, 55, 68, 226, 286, 316 [2] Eric Huss, The C Library Reference Guide, 1997, http://www.edu/webmonkeys/book/c_guide/ Giáo trình môn Kỹ thuật lập trình 120 log10Q Tính logarit thập phân log() Tính logarit tự nhiên S Lib Sao i So sánh chuỗi Tính độ dài của Tìm địa chỉ của N : 1 j chit hoa i chudi chit Dao i Charater T Libra Kiém tra ky tự có là 1 ký chữ th i chữ hoa Giáo trình môn Kỹ thuật lập trình 119 PHỤ LỤC B Một số hàm thường dùng trong các thư viện <stdio.h> Standard Input and Output Library rintf() Xuất dữ liệu theo định dạng ra màn hình scanf() Nhập dữ liệu theo định dạng từ bàn phím ets() Nhập chuỗi ký tự từ bàn phím uts() Xuất chuỗi ký tự ra màn hình getchar() Nhập ký tự từ bàn phím putchar() Xuất ký tự ra màn hình filushQ Xóa bộ đệm bàn phím fopen() Mở file fclose() Dong file feof() Kiểm tra kết thúc file fseek() Dịch chuyên con trỏ file ftell() Lay vi tri hién thời của con trỏ file freadQ Đọc khôi dữ liệu từ file fwrite() Ghi khối dữ liệu ra file fprintf() Xuất dữ liệu theo định dang ra file fscanf() Ghi đữ liệu theo định dạng từ file fgets() Đọc chuỗi ký tự từ file fputs() Ghi chuỗi ký tự ra file fgetc() Doc ký tự từ file fputc() Ghi ký tự ra file <conio.h> Console Input and Output Library getche() Nhập ký tự, hiển thị ký tự nhập getch() Nhập ký tự, không hiên thị ký tự nhập <stdlib.h> Standard General Utilities Library abs() Tính giá trị tuyệt đôi atoi() Đổi từ chuỗi sang sỐ nguyên itoa() Đôi từ số nguyên sang ¢chuỗi srand() Khởi tạo bộ sinh số ngẫu nghiên rand() Sinh sô ngau nhién calloc() Cấp phát nhiều vùng nhớ malloc() Câp phát vùng nhớ freeO Giải phóng vùng nhớ exit() Thoát khỏi chương trình <math.h> Mathematics Library sqrt() Tính căn bậc 2 powQO Tính lũy thừa exp() Tính lũy thừa cơ số e Giáo trình môn Kỹ thuật lập trình 118 Bang ma ASCII mé r6ng (ASCII Extended Character Set) 128 144 160 176 193 209 225 241 Fh &- cC oF H cl r ye 129 |. 145 161 177 194 210 226 242 ote, Lo ch & ÍV rrFa 130 146 162 fra O: fy 178 195 ail 227 243 œ% oo FE QAamMa LA 141 14/ 163 1/9 196 212 428 244 wt ey a 132 14g 184 197 213 229 245 BỊ Bae p De —m + Cc O ¬n 133 149 165 196 214 230 246 ĐH: he FE sy 134 150 166 199 215 231 247 PO M a 2! =< 135 151 167 200 216 232 348 ö ow —- —|- Ơi 1A 152 TAR 2m 217 1 249 D> O: | 137 153 169 202 218 234 250 op: 138 154 170 203 219 235 251 ¬ C1 mee 139 1 56 171 % 204 220 236 252 rh ™ 5 140 157 172 % 205 221 237 253 # Re 14 158 173 206 222 238 254 ber 142 159 174 « 207 223 239 255 pee ye 148 192 175 » 208 224 240 rc Giáo trình môn Kỹ thuật lập trình 117a PHỤ LỤC A Bang mã ASCII chuẩn (ASCII Standard Character Set) Char Ctrl Dec Hex Char Dec Hex Char Dec Hex Char Dec Hex NUL *@ 0 00 {space 32 20 |@ 64 40 96 60 SOH ^A 1 01 ! 3 21 A 65 = 41 a 97 61 STX ^B 2 02 " 34 22 |B 6 42 |b 98 62 ETX *C 3 03 # 35 23 C 67 43 c 99 63 EOT ^D 4 04 $ 346 24 |D 68 44 ld 100 64 ENQ *E 5 05 % 347 25 |E 69 45 le 101 65 ACK *F 6 06 |& 38 26 |F 70 46 |f 102 66 BEL “G 7 07 =| ' 39 27 1G 71 47 lg 103 67 BS ^H 8 08 ( 40 28 !H 72 48 th 104 68 HT “ 9 09 1) 41 29 II 73 49 fi 105 69 LF ‘J 10 0A ‡* 42 2A l 74 4A l|j 106 6A VT ”** 11 05 j+ 43 2B {|K 75 4B ik 107 6B FF ^L 12 0c †, 44 2C IL 76 4C lI 108 6C CR ^M 13 oD |- 45 2D iM 77 4D |m 109 6D sO ^N 14 OE †. 46 2E |N 78 4E In 110 6E SI ‘sO 15 OF |/ 47 2F |O 79 4F lo 111 6F DLE ^P 16 10 0 48 30 |P 80 50 Ip 112 70 DCI ^Q 17 11 l 49 31 Q 81 51 q 113 71 DC2 ^R l8 12 2 50 32 IR 82 32 |r 114 272 DC3 ^S 19 13 3 51 33 S 83 53 s 115 73 DC4 ^T 20 l4 14 32 34 IT 84 354 |1 H6 74 NAK ^U 21 15 5 33 35 U 85 55 u 117 75 SYN ^V 22 16 6 354 36 V 86 36 |V 118 76 ETB ^W 23 17 7 55 37 W 87 57 Iw 119 77 CAN ^X 24 18 8 36 38 X 88 58 Ix 120 78 EM ^V 25 19 9 37 39 Y 89 59 ly 121 79 SUB *% 26 1A of: $8 3A {Z 90 SA |z 122 7A ESC “J 27 IB |; 59 §863B if 91 SB lí 123 7B FS ^\ 28 Ic |< 60 3C |\À 92 5C | 124 7C GS ^] 29 ID |= 61 34D ] 93 3D |} 125 7D R§ ^^ 30 LE 62 3E Ị^ 94 5E j~ 126 7E US * 31 IF [? 63 3F 95 5F {delete 127 7F Giáo trình môn Kỹ thuật lập trình 116a CHƯƠNG 4: KIỄU DỮ LIỆU DO NGƯỜI DÙNG ĐỊNH NGHĨA » - Dòng thứ ¡ trong N dòng tiếp theo mỗi dòng có 2 số nguyên Bi và Ci (0 < Bi < Ci) mô tả thông tin thùng thứ i, với Bi là nước còn trong thùng và Ci là sức chứa của thùng, các số cách nhau ít nhất một khoảng trắng. Kết quả: ghi ra file văn bản WATER.OUT chứa một số là số lượng ít nhất các thùng nước tìm được.OUT 01 45 02 12 Giáo trình môn Kỹ thuật lập trình 117 CHƯƠNG 4: KIÊU DỮ LIỆU DO NGƯỜI DÙNG ĐỊNH NGHĨA Viết chương trình thực hiện các chức năng sau, mỗi chức năng viết một hàm riêng a.

Nhập danh sách các sinh viên và lưu vào file. Đọc dữ liệu từ file và lưu vào mảng. Xuất danh sách các sinh viên (từ máng) theo dạng bảng. Tìm một sinh viên theo mã sinh viên.

Xuất danh sách các sinh viên có điểm <5. Đếm xem có bao nhiêu sinh viên có điểm <5. Tính điểm trung bình của các sinh viên có năm sinh 1992. Xuất các sinh viên có điểm lớn nhất.

Xóa các sinh viên có điểm = 0.3 Viết chương trình thực hiện các công việc sau: a. Nhập và ghi vào file 20 số nguyên bắt kỳ b. Đọc đấy số từ file và tách thành 2 day: day gồm các số lẻ và dãy thành số thực. Sau đó ghi trở lại 2 dãy đã tách vào cùng file đó (ghép vào cuôi file băng kiêu mở file "a") c.

Tính tổng dãy và ghi trở lại vào file 4. (Trích đề thi Olympic Tin học Sinh viên Toàn quốc 2005, khối thi: Cá nhân Cao đăng) Ở miền Trung thường năm nào cũng có những đợt hạn hán nên ông Nam có những thùng dự trữ nước. Do mua làm nhiều đợt nên N (1 <N < 1000) thùng chứa nước của ông Nam có kích thước khác nhau, mỗi thùng có sức chứa Ci (1 < Ci < 10000, 1 <i<N). Dự đoán rằng năm nay sẽ có đợt hạn hán lớn nên ông Nam muốn đồ đầy nước hết các thùng để dự trữ.

Sau khi kiểm tra ông Nam thấy rằng có một số thùng vẫn còn đầy, một số khác thì vơi đi một phần, còn một số thì đã hết. Ông quyết định các thùng nào chưa đây thi sẽ chớ đi để đỗ đầy nước. Nhưng do nơi lấy nước rất xa, và mỗi lần chỉ chở đi được 1 thùng nên ông quyết định sẽ san nước giữa các thùng với nhau đề số thùng phải chở đi là ít nhất. Yêu cầu: Cho dung lượng nước hiện có của thùng thứ ¡ là Bi (0 < Bi < C¡, 1 <¡ <N), hãy giúp ông Nam xác định số lượng thùng ít nhất phải mang đi.

Dữ liệu: vào từ file văn bản WA TER.INP có dạng sau: + Dòng thứ nhất ghi một số tự nhiên N là số lượng các thùng nước. Giáo trình môn Kỹ thuật lập trình 116 CHƯƠNG 4: KIỂU DỮ LIỆU DO NGƯỜI DÙNG ĐỊNH NGHĨA BÀI TẬP CHƯƠNG 4 4.1 Cho danh sách lưu thông tin của các mặt hàng, thông tin gồm: Mã mặt hàng (chuỗi 10 ký tự) Tên mặt hàng (chuỗi 50 ký tự) Số lượng mặt hàng (số nguyên) Đơn giá mặt hàng (số thực, đơn vị 1000 VNĐ) Viết chương trình thực hiện các chức năng sau, mỗi chức năng viết một hàm riêng a. Nhập danh sách các mặt hàng, lưu ý khi nhập cần kiểm tra trùng mã mặt hàng. Xuất danh sách các mặt hàng theo dạng bảng, và tính thành tiền của từng mặt hàng.

STT Mãhàn Ténhang Sốlượng Đơngiá Thành tiền 1 TV Tivi 100 2000 200000 2. TL Tu lanh 200 3000 600000 c. Tìm một mặt hàng theo mã mặt hang. Xuất danh sách các mặt hàng có số lượng lớn hơn hay bằng 100.

Đếm xem có bao nhiêu mặt hàng có số lượng lớn hơn hay bằng 100. Tính giá trung bình của các mặt có giá >1. Xuất các mặt hàng có giá lớn nhất. Xuất các mặt hàng có số lượng nhỏ nhất.

Cập nhật giảm giá các mặt hàng 10%. Xóa các mặt hàng có số lượng = 0.2 Cho danh sách lưu thông tin của các sinh viên, thông tin gồm: - Mã sinh viên (chuỗi 10 ký tự) -_ Tên sinh viên (chuỗi 50 ký tự) - Năm sinh (số nguyên) - Điểm (số thực) Giáo trình môn Kỹ thuật lập trình 115 CHƯƠNG 4: KIÊU DỮ LIỆU DO NGƯỜI DÙNG ĐỊNH NGHĨA 12 fscanf(f1,"%s",a); 13 fscanf (f1,"%d", &k); 14 int n=strlen(a); 15 for(int i=k-1;1i>=0;i--) 16 { 17 b[3J]=a[i]: 18 3++; 19 } 20 for(int i=n-1;i>=k;i--) 21 { 22 b[3]=a[il; 23 1++; 24 } 25 bín]='\0'; 26 fprintf (f2,"%s",b); 27 fclose(f1); 28 Eclose (£2); 29 return 0; 30 Giáo trình môn Kỹ thuật lập trình 114 CHƯƠNG 4: KIỂU DỮ LIỆU DO NGƯỜI DÙNG ĐỊNH NGHĨA Ví dụ 9.14: (Trích đề thi Olympic Tìn học Sinh viên toàn quốc 2008, khối thi: Cá nhân Cao đăng) Vị Giám đốc công ty XYZ cần gửi một văn bản quan trọng tới một đối tác của mình. Đề bảo mật văn bản, Giám đốc quyết định mã hóa văn bản trước khi gửi. Văn bản là một xâu các chữ cái la tỉnh in thường.

Giám đốc chia văn bản thành 2 xâu liên tiếp. Sb va Se. Lan lượt viết 2 xâu Sb và Se nhưng điều theo thứ tự ngược lại ¡ông ô nhận được xâu mã hóa Q. Bức thư thứ nhất gửi cho đối tác có nội đung là Q.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ