Professional Documents
Culture Documents
00 Q&A về môn học và project
00 Q&A về môn học và project
https://forms.office.com/r/XmGXjsraRB
Các câu trả lời mang tính chất THAM KHẢO, nên tìm hiểu thêm các nguồn tài liệu khác.
Q Làm sao để thuần thục cấu trúc rẽ nhánh?
Đọc lý thuyết (slide) --> Làm ví dụ --> Code your own example -> Read/Code again/more
A : char[] và string là hai cách để biểu diễn chuỗi ký tự trong C++ nhưng có những sự khác nhau
quan trọng:
1. Kiểu dữ liệu:
char[]: Là một mảng các ký tự, được kết thúc bằng ký tự null ( '\0'). Còn được gọi
là một chuỗi ký tự (C-style string).
string: Là một lớp trong thư viện chuẩn C++ ( <string>) biểu diễn một chuỗi ký tự.
2. Thư viện và Tiện ích:
char[]: Được xử lý như một mảng, và nhiều hàm xử lý chuỗi của thư viện C
(<cstring>) được sử dụng để thao tác trên nó.
string: Được xử lý như một đối tượng và có nhiều phương thức (hàm thành viên)
trong thư viện chuẩn C++ (<string>) giúp thao tác và quản lý chuỗi một cách dễ
dàng hơn.
3. Kích thước động:
char[]: Có kích thước cố định được xác định khi khai báo và không thay đổi được.
string: Có thể thay đổi kích thước linh hoạt theo nhu cầu.
4. Gán và Sao chép:
char[]: Gán chuỗi ký tự vào một mảng ký tự bằng cách sao chép từng ký tự hoặc
sử dụng các hàm như strcpy.
string: Có thể gán trực tiếp từ một chuỗi ký tự hoặc từ một char[] bằng cách sử
dụng các phương thức như assign, =,...
5. Phương thức xử lý chuỗi:
char[]: Sử dụng các hàm trong thư viện C như strlen, strcpy, strcat,...
string: Sử dụng các phương thức như length(), append() , substr(),...
Hàm mẫu (template function) và chồng hàm (function overloading) là hai khái niệm quan trọng
trong lập trình C++ để xử lý nhiều loại đối số khác nhau. Dưới đây là sự khác nhau giữa chúng:
T add(T a, T b) {
return a + b;
return a + b;
}
float add(float a, float b) {
return a + b;
Sự Khác Nhau:
1. Kiểu Tham Số:
Hàm mẫu sử dụng kiểu tham số generic ( typename hoặc class) cho tất cả các kiểu dữ
liệu.
Chồng hàm sử dụng kiểu tham số khác nhau hoặc số lượng tham số khác nhau.
2. Độ Linh Hoạt:
Hàm mẫu cung cấp độ linh hoạt cao vì nó có thể hoạt động với nhiều kiểu dữ liệu khác
nhau.
Chồng hàm cung cấp độ linh hoạt với cách gọi hàm và kiểu tham số.
3. Tính Tương Thích:
Hàm mẫu thường được ưu tiên khi kiểu tham số được suy luận từ đối số.
Chồng hàm được ưu tiên dựa trên kiểu tham số đã được chuyển vào.
4. Hiệu Suất:
Hàm mẫu có thể tạo ra mã máy lớn hơn do việc tạo ra nhiều phiên bản của hàm cho mỗi
kiểu dữ liệu.
Chồng hàm có thể dẫn đến mã máy hiệu quả hơn vì chỉ có một phiên bản của hàm được
thực thi tại thời điểm biên dịch.
Chọn giữa hàm mẫu và chồng hàm thường phụ thuộc vào yêu cầu cụ thể của vấn đề và sự thuận
tiện trong quản lý mã nguồn.
Q Khi bắt đầu lập trình C++ khi đã biết lập trình C nên lưu ý điều gì
Q : Liệu có cách nào học về C++ mà dễ hiểu hơn là mỗi đọc không ạ (vấn đề CHUNG cho
nhiều môn học)
Đóng gói (encapsulation) là một nguyên tắc quan trọng trong lập trình hướng đối
tượng, nơi các thành phần của một đối tượng (thường là các biến thành viên-thuộc tính
và các phương thức-hàm) được "gói" lại với nhau và có thể chỉ được truy cập thông qua
một giao diện công cộng (hàm). Điều này giúp bảo vệ trạng thái (thuộc tính) của đối
tượng.
Trong C++, từ khóa private, public, và protected được sử dụng để xác định phạm vi truy
cập của các thành phần trong một lớp. Các thành phần private chỉ có thể được truy cập
từ bên trong lớp đó, trong khi các thành phần public có thể được truy cập từ bên ngoài.
Các thành phần protected giữ cho chúng có thể được truy cập từ bên trong lớp và từ các
lớp kế thừa.
Ví dụ :
https://onlinegdb.com/EkQ5RkHcc
Trong ví dụ trên, name, age, và GPA được đặt là private, chỉ có thể truy cập thông qua các
phương thức công cộng getName(), getAge(), getGPA(), setName(), setAge(), setGPA(), và
display(). Như vậy, trạng thái nội tại (thuộc tính) của đối tượng Student được bảo vệ và chỉ
có thể được thay đổi thông qua các phương thức (hàm) công cộng. Điều này đảm bảo
tính đóng gói và giữ cho trạng thái nội tại được ẩn.
https://onlinegdb.com/jQm8OIh03
Trong ví dụ trên, thay đổi các mức độ đóng gói để thấy được tác dụng.
Q Sự khác nhau giữa class và struct? Cách sử dụng “tối ưu"?
A:
In C++, a structure works the same way as a class, except for just two small differences. The
most important of them is hiding implementation details. A structure will by default not
hide its implementation details from whoever uses it in code, while a class by default hides
all its implementation details and will therefore by default prevent the programmer from
accessing them. The following table summarizes all of the fundamental differences.
Class Structure
4. It is declared using the class keyword. 4. It is declared using the struct keyword.
5. It is normally used for data abstraction 5. It is normally used for the grouping of
and further inheritance. data
6. NULL values are possible in Class. 6. NULL values are not possible.
7. Syntax: 7. Syntax:
class class_name{ struct structure_name{
data_member; type structure_member1;
member_function; type structure_member2;
}; };
Quản lý sinh viên bằng hai cách khác nhau: một sử dụng hướng thủ tục và một sử dụng
hướng đối tượng, với hai lớp là Person và Student.
https://onlinegdb.com/GzxdpyQBt
https://onlinegdb.com/wmT0Cgc-2
Q Đề tài quản lý sinh viên muốn lưu phần dữ liệu mà mỗi lần compile và run là một lần
nhập lại ,cách khắc phục ?
C1 Lưu và đọc dữ liệu từ file
C2 : tạo sẵn các giá trị trong chương trình.
C3...
Q Bài tập lớn của nhóm em đã hoàn tất thì những tuần tiếp theo bọn em cần phải làm gì ạ?
- Cần làm rõ hoàn tất là như thế nào?
- Báo cáo bài tập lớn bao gồm
1 Slide
2 Report (word + readme)
3 Các tài liệu liên quan : code, hướng dẫn cài đặt, sử dụng chương trình
4 Update các thông tin về project lên web
(Xem thêm trong phần chú ý về báo cáo QT và CK)
Q Thưa thầy, mình có cần phải đáp ứng được hết những tiêu chí trong mục tiêu đề ra
không ạ?
Khi giải quyết một vấn đề, quan trọng là mục tiêu đề ra. Nên yêu cầu tối thiểu là hoàn thành các
mục tiêu đã đề ra.
Chú ý : mục tiêu có thể điều chỉnh cho hợp lý và thống nhất trong nhóm trong quá trình làm
Q Có phải điền hết các biểu đồ của UML không ạ
Q Project nên làm bằng C hay C++. Làm bằng ngôn ngữ khác vd như Python được không ạ
Mặc định yêu cầu làm bằng C++. Có thể phát triển bằng ngôn ngữ khác nếu muốn học thêm ngôn
ngữ đó và so sánh với C++
Q Khi làm đề tài quản lí, làm thế nào để nhập dữ liệu vào rồi khi kết thúc chương trình vẫn
không bị mất đi?
Tạo các giá trị mặc định trong chương trình hoặc lưu/đọc kết quả/dữ liệu vào/từ file