You are on page 1of 18

Lab 1

Câu 1:

o Nếu l = 6,5 và m = 3,5 thì l + m phải là 10, vì sao kết quả là 9 ?

 Bởi vì chương trình được khai báo biến l và m theo kiểu int nên khi
xuất ra cũng là số nguyên.Nếu như l =6.5 và m = 3.5 thì khi xuất ra
ta được l = 6 , m = 3 và l + m = 9.

o Vì sao phép chia 10/3 cho ra kết quả là 3 ?

 Vì đây là toán tử chia lấy phần nguyên nên sẽ cho ra kết quả là 3.

o Vì sao phép chia 10%3 cho ra kết quả là 1 ?

 Vì đây là toán tử chia lấy phần dư nên sẽ cho ra kết quả là 1.

o Dù đã gán kết quả 10/3 cho một biến thực a, nhưng biến đó chỉ nhận được
kết quả của một phép chia số nguyên. Kết quả của 10.0 / 3.0 là 3,333333; ở
đây cả hai số đều là số thực. Tuy nhiên vấn đề cuối cùng 10.0 / 3 cũng cho
3,33333, tại sao?

 Bởi vì nếu để phép chia là 10 / 3 thì đây là phép chia lấy phần nguyên.

 Nếu thay một trong hai hoạc cả hai là số thực thì phép chia sẽ cho ra
kết quả là một số thực còn nếu như cả hai số đều để là số nguyên thì
kết quả chỉ cho ra phần nguyên.
Lab 3

Câu 2:

 Về cơ bản, chúng tôi đang yêu cầu c ++ làm điều gì đó trong trường hợp lựa
chọn là 1, 2 hoặc 3 và nếu không tìm thấy kết quả phù hợp thì nó sẽ rơi vào
mặc định và thực hiện hướng dẫn đó?

 Nếu như trong trường hợp chỉ có lựa chọn 1 , 2 , 3 nhưng không tìm
thấy thì chương trình sẽ dừng lại vì câu lệnh Switch Case là một câu
lệnh điều kiện nhưng mà điều kiện đó phải được xác định một cách
chính xác chứ không phải như câu lệnh If Else với điều kiện trong
một khoảng nào đó.

 Bạn cần nhớ rằng bạn không thể sử dụng bất kỳ toán tử quan hệ nào với
trường hợp câu lệnh chẳng hạn như trường hợp lớn hon 3. Điều gì xảy ra
nếu bạn không bao gồm các câu lệnh ngắt?

 Nếu lệnh Switch Case mà không có lệnh ngắt thì nó sẽ thực hết các
lệnh trong chương trình và sẽ dừng lại nếu gặp lệnh dừng break, nên
chính vì vậy ở mỗi Case sẽ phải có câu lệnh dừng break để cho
chương trình hoạt ddonhj một cách chính xác nhất.
Lab 4

1.1 /* */ Đây là một chú thích (Comment) để giải thích ý nghĩa


của một câu lệnh nào đó và có thể có nhiều hơn một dòng, nó còn có thể ghi ở
đầu một chương trình nhằm giải thích chương trình đang làm gì hoặc là tên
chương trình đó mà không làm ảnh hưởng đến toàn bộ chương trình đó.

1.2 #include <> Đây là một từ khóa dung để chỉ cho trình biên
dịch biết rằng chúng ta cần sử dụng thư viện được khai báo và nó sẽ tự
động thêm vào cho chúng ta. Và chương trình sẽ không chạy được nếu
thiếu từ khóa này.

1.3 Cấu trúc cơ bản của một hàm main:

int main() Hàm main thường có phần thân là:


{ cặp dấu ngoặc nhọn đứng sau từ khóa
// Các câu lệnh main, cuối thân hàm main là giá trị
return 0; về của hàm main.
}

Hàm main là hàm mà chứa các câu lệnh để khi chương trình thì  hệ điều hành sẽ
thực thi những dòng lệnh trong phạm vi dấu ngoặc nhọn nằm sau hàm main
một cách lần lượt từ trên xuống dưới.

return 0; Là giá trị trả về của hàm main. Giả sử hàm main của chúng ta có từ
khóa int đứng trước, có nghĩa là kiểu trả về của hàm main sẽ là một giá trị có
kiểu int (integer - số nguyên). Giá trị trả về này do lập trình viên tự quy định.
1.4 Lập trình Hướng Thủ tục (POP) và Lập trình Hướng Đối tượng
(OOP) đều là những ngôn ngữ cấp cao trong thế giới lập trình và được sử
dụng rộng rãi trong việc phát triển các ứng dụng. Trên cơ sở bản chất của
việc phát triển mã, cả hai ngôn ngữ đều có những cách tiếp cận khác nhau
trên cơ sở cả hai đều có sự khác biệt với nhau.

Lập trình hướng đối tượng Lập trình hướng thủ tục (POP)
(OOP)

Lập trình hướng đối tượng là một Lập trình hướng thủ tục là một ngôn
ngôn ngữ lập trình sử dụng các lớp ngữ lập trình theo cách tiếp cận từng
Định và đối tượng để tạo ra các mô hình bước để chia nhỏ một nhiệm vụ thành
nghĩa dựa trên môi trường thế giới một tập hợp các biến và quy trình
thực. Trong OOP, nó giúp dễ dàng (hoặc chương trình con) thông qua
duy trì và sửa đổi mã hiện có vì các một chuỗi các lệnh. Mỗi bước được
đối tượng mới được tạo ra kế thừa thực hiện theo thứ tự một cách có hệ
các đặc điểm từ các đối tượng hiện thống để máy tính có thể hiểu được
có. những việc cần làm.

Trong OOP khái niệm về các đối Trong POP, chương trình chính được
tượng và các lớp được giới thiệu và chia thành các phần nhỏ dựa trên các
Tiếp do đó chương trình được chia thành chức năng và được coi là chương
cận các phần nhỏ được gọi là các đối trình riêng biệt cho từng chương trình
tượng là các thể hiện của các lớp. nhỏ hơn.

Truy Trong OOP , các công cụ sửa đổi


cập quyền truy cập được giới thiệu là
công Mặt khác, không có bổ ngữ nào như
cụ â   Privateâ   ,
~ TM
vậy được giới thiệu trong POP.
sửa â ~ publicâ TM
đổi
â TM ~ Protectedâ TM .
Bảo Do tính trừu tượng trong việc ẩn dữ Mặt khác, POP kém an toàn hơn so
vệ liệu OOP có thể xảy ra và do đó nó với OOP.
an toàn hơn POP

Các OOP do tính mô-đun trong các Mặt khác Thereâ TM s không có quá
chương trình của nó ít phức tạp hơn trình đơn giản để thêm dữ liệu trong
Phức và do đó các đối tượng dữ liệu mới POP ít nhất không phải không có sửa
tạp có thể được tạo dễ dàng từ các đối đổi toàn bộ chương trình.
tượng hiện có, làm cho các chương
trình hướng đối tượng dễ dàng sửa
đổi

1.5 Chỉ ra hai cách có thể thêm nguồn cấp dữ liệu vào đầu ra.

 Để chèn một dòng mới, bạn có thể sử dụng \n ký tự. Và với


hai \n ký tự sau nhau sẽ tạo ra một dòng trống.

 Một cách khác để chèn một dòng mới, là với trình endl điều
khiển.
 Cả hai \n và endl đều được sử dụng để ngắt dòng. Tuy nhiên
endl thường được dung nhiều hơn vì nó không chứa nhiều kí tự
nên dễ dàng gõ với tốc độ nhanh hơn.

1.6 Mã nguồn được viết bằng trình soạn thảo. Phần mở rộng tệp của tệp
mã nguồn? Giải thích các giai đoạn nó phải trải qua cho đến khi nó trở thành một
tệp thực thi chương trình. Điều gì xảy ra ở mỗi giai đoạn?

 Mã nguồn  thực chất là một dãy các câu lệnh được viết bằng
một ngôn ngữ lập trình. Mã nguồn thường được lưu trong một hoặc
một vài tệp text hoặc có thể được in trong sách thuật ngữ này
thường được dùng trong ngữ cảnh của một phần mềm máy tính. Mã
nguồn của một chương trình máy tính là một tập các tệp có thể
chuyển đổi được từ dạng con người có thể đọc sang dạng máy có
thể thực hiện.

 Mã nguồn được dịch sang dạng tệp mã máy tương ứng với một kiến
trúc máy tính cụ thể bởi một trình biên dịch, hoặc được thực thi thẳng
với sự trợ giúp của một trình thông dịch.

 Quy trình dịch là quá trình chuyển đổi từ ngôn ngữ bậc cao C++ sang
ngôn ngữ đích (ngôn ngữ máy) để máy tính có thể hiểu và thực thi. Ngôn
ngữ lập trình C++ là một ngôn ngữ dạng biên dịch. Chương trình được viết
bằng C++ muốn chạy được trên máy tính phải trải qua một quá trình biên
dịch để chuyển đổi từ dạng mã nguồn sang chương trình dạng mã thực thi.

 Quá trình được chia ra làm 4 giai đoạn chính:

 Giai đoàn tiền xử lý (Pre-processor)


 Giai đoạn dịch NNBC sang Asembly (Compiler)
 Giai đoạn dịch asembly sang ngôn ngữ máy (Asember)
 Giai đoạn liên kết (Linker)

 Các giai đoạn:


 Giai đoạn tiền xử lý – Preprocessor:

Nhận mã nguồn
Xóa bỏ tất cả chú thích, comments của chương trình
Chỉ thị tiền xử lý (bắt đầu bằng #) cũng được xử lý

 Cộng đoạn dịch Ngôn Ngữ Bậc Cao sang Assembly:

Phân tích cú pháp (syntax) của mã nguồn NNBC


Chuyển chúng sang dạng mã Assembly là một ngôn ngữ bậc
thấp gần với tập lệnh của bộ vi xử lý.

 Công đoạn dịch Assembly:


Dich chương trình => Sang mã máy 0 và 1
Một tệp mã máy (.obj) sinh ra trong hệ thống sau đó.

 Giai đoạn Linker:

Trong giai đoạn này mã máy của một chương trình dịch từ
nhiều nguồn (file .c hoặc file thư viện .lib) được liên kết lại với
nhau để tạo thành chương trình đích duy nhất

Mã máy của các hàm thư viện gọi trong chương trình cũng
được đưa vào chương trình cuối trong giai đoạn này.

Chính vì vậy mà các lỗi liên quan đến việc gọi hàm hay sử dụng
biến tổng thể mà không tồn tại sẽ bị phát hiện. Kể cả lỗi viết
chương trình chính không có hàm main() cũng được phát hiện
trong liên kết.

 Kết thúc quá trình tất cả các đối tượng được liên kết lại với nhau
thành một chương trình có thể thực thi được

1.7 Xác định một biến dưới dạng C++ có liên quan. Các quy tắc về tên định
danh biến là gì? Tại sao có một kiểu liên kết với mỗi biến?

o Tên của các biến (variables) do người dùng định nghĩa gọi là định
danh biến. Những định danh này có thể chứa một hay nhiều ký tự.
Ký tự đầu tiên của định danh phải là một chữ cái hay một dấu gạch
dưới ( _ ). Các ký tự tiếp theo có thể là các chữ cái, các con số hay
dấu gạch dưới.

o Vd: Arena, s_count, marks40, và class_one là những định danh


đúng, còn các định danh sai là 1sttest, oh!god, và start… end.

o Các định danh trong C++ có phân biệt chữ hoa và chữ thường, cụ
thể, arena thì khác ARENA.
o Biến là do người dung khai báo nhưng mỗi biến sẽ có một kiểu liên
kết, giống như khi ta muốn gọi biến là kiểu số nguyên thì ta phải gọi
kiểu int, còn muốn gọi biến là kiểu số thực thì gọi kiểu float, … và có
rất nhiều kiểu dữ liễu khác nhau của biến như int, float, char, string,
bool, double, long, …

1.8 Bài toán với toán tử int:

int a = 10, b = 3, c;

c = a / b;
What would be stored in c? c = a / b; => c=3

Bời vì đây là phép chia lấy phần nguyên nên c = 3

c = a % b;
What would be stored in c? c = a % b; => c=1

Bởi vì đây là phép chia lấy số dư nên c = 1

double d = 10.0, e;
e = d/b;
What would be stored in d? e =d / b; => e = 3.333

Bởi vì biến d và e được khai báo với biến float nên kết quả sẽ là một
số thức e = 3.333

e = d % b; Vì d và e là 2 biến số thực nên sẽ không có phép toán lấy


dư nên khi nhập vào chương trình sẽ báo lỗi và không chạy
2.1 Viết hàm để gửi kết quả ra màn hình của chương trình này thành một tệp.

#include <iostream>
#include <fstream>

using namespace std;


int main()
{
const float PI = 3.14;
float radius, area, perimeter;
cout << "Enter the radius of the circle in cm? " ;
cin >> radius;
ofstream outfile;
outfile.open("D:datalab2.txt", ios::app);

area = PI * radius * radius;


perimeter = 2 * PI * radius;
cout<< endl << "The area of the circle is: " <<
area << "cm²"<<endl;
cout <<"The perimeter of the circle is: "
<<perimeter << "cm"<<endl;
outfile << endl << "The area of the circle is: "
<< area << "cm²" << endl;
outfile <<"The perimeter of the circle is: "
<<perimeter << "cm" << endl;

outfile.close();

return 0;

}
Đây là một chương trình tính chu vi và diện tích hình
tròn và được xuất ra ở text file lưu ở ổ E
2.2 Năm bước cần thiết để tạo tệp văn bản là gì ?
o Khai báo thư viện fstream để có thể đọc hoặc ghi một text file nào đó
o Khai báo câu lệnh ofstream outfile; để mở một text file
o Khai báo chỗ để lưu text file bằng lệnh
outfile.open("E:lab.txt", ios::app);
o Khai báo các câu lệnh outfile giống như lệnh cout
để xuất các dòng lệnh ra text file
o Và cuối cùng là dòng lệnh outfile.close(); để đóng
text file

2.3 Trong một số chương trình, có một số câu lệnh nhất định không yêu
cầu dấu chấm phẩy để chỉ ra câu lệnh kết thúc. Những câu lệnh đó là gì?

o Dấu chấm phẩy ; cho biết end of statement đây là cách một câu lệnh nào
đó sẽ kết thúc.

o Một số câu lệnh có một đặc điểm đặc biệt, đó là chúng tự đóng lại. Trong C++
có các câu lệnh có thể kết thúc mà không cần đến dấu chấm phẩy: if()
{}, for(){}và while(){}, function(){}. 

2.4 Phân biệt giữa hằng, biến và #define.

 Hằng hay hằng số (constant) dùng để lưu trữ dữ liệu, dữ liệu của hằng luôn luôn
cố định và không thay đổi trong suốt chương trình.
 Biến hay biến số (varialbe) dùng để lưu trữ dữ liệu nhưng dữ liệu được lưu trữ
trong biến có thể thay đổi thông tin trong khi chạy chương trình hoặc có thể lấy
thông tin đó ra để sử dụng

 Để khai báo một hằng số trong C++, bạn sử dụng từ khóa const trước hoặc sau kiểu dữ
liệu của biến. Hằng số phải được khởi tạo trong lúc khai báo, và giá trị của hằng số sẽ
không thể thay đổi trong suốt chương trình. Hằng số có thể được khởi tạo giá trị từ một
biến thông thường:
 Hàng số với chỉ thị tiền xử lí #define. Ngoài cách sử dụng từ khóa const để khai báo
một hằng số, C++ vẫn cho phép bạn sử dụng chỉ thị tiền xử lý #define để định nghĩa
một hằng số.

 Cách sử dụng tiền xử lý #define giống như việc bạn sử dụng trực tiếp một số vào
chương trình. Nhưng nó có nhiều ưu điểm hơn như:

 Trực quan hơn:  Khi nhìn vào một tiền xử lý #define, bạn có thể biết mục đích của
nó thông qua tên.

 Tránh hardcode:  Khi tiền xử lý #define được sử dụng ở nhiều nơi, bạn chỉ cần
thay đổi giá trị ở nơi khai báo nó, những nơi khác sẽ được tự động cập thay đổi
theo.

 Mặc dù tiền xử lý #define có những ưu điểm như trên, nhưng bạn nên hạn chế
hoặc không nên sử dụng tiền xử lý #define làm hằng số cho chương trình. Có 2 lý
do bạn không nên sử dụng nó:

 Gây khó khăn khi gỡ lỗi (debug) chương trình: Các macro là những chỉ thị tiền xử
lý, khi chương trình biên dịch, tiền xử lý sẽ thay thế tất cả những macro trong
chương trình thành giá trị của nó. Vì vậy, khi bạn debug chương trình, những
macro này sẽ không hiển thị giá trị mà nó nắm giữ, điều này sẽ gây khó khăn cho
khi debug chương trình.

 Các macro luôn có phạm vi toàn cục: Nghĩa là một macro được #define trong


một khối lệnh sẽ ảnh hưởng đến một macro #define trong khối lệnh khác nếu
chúng cùng tên.

 Chú ý:  Nên sử dụng hằng số với từ khóa const thay vì chỉ thị tiền xử lý #define.

2.5 Trình bày cách khai báo các biến kiểu dữ liệu integer, float, double,
char, bool.
 Khi dữ liệu được lưu trữ trong các biến có kiểu dữ liệu khác nhau, nó yêu cầu
dung lượng bộ nhớ sẽ khác nhau.

 Dung lượng bộ nhớ được chỉ định cho một biến tùy thuộc vào kiểu dữ liệu của
nó, để chỉ định bộ nhớ cho một đơn vị dữ liệu, chúng ta phải khai báo một biến
với một kiểu dữ liệu cụ thể.
 int là một kiểu dữ liệu số nguyên, về cơ bản nó biểu thị kích cỡ tự nhiên
của các số nguyên (integers), nó bao gồm một chuỗi của một hay nhiều
con số.

Vd: int a; Biến đã khai báo là kiểu dữ liệu int có thể lưu
giá trị nguyên như là 0,1,2,3,4,…

 float là một kiểu dữ liệu số thực được dùng để lưu trữ các giá trị chứa
phần thập phân, có thể lưu giữ thêm cả các phân số.

Vd: float b; Biến đã khai báo là kiểu dữ liệu float có


thể lưu giá trị thập phân có độ chính xác tới 6 con số.

 double là kiểu dữ liệu số thực được dùng khi giá trị được lưu trữ
vượt quá giới hạn về dung lượng của kiểu dữ liệu float. Biến có kiểu
dữ liệu là double có thể lưu trữ nhiều hơn khoảng hai lần số các chữ
số của kiểu float.
Vd: double b;

 char là kiểu dữ liệu được dùng để lưu trữ một ký tự đơn. Một kiểu dữ
liệu char có thể lưu một ký tự đơn được bao đóng trong hai dấu nháy
đơn (‘’). VD kiểu dữ liệu char như:  ‘a’, ‘m’, ‘$’ ‘%’.

 Bool là kiểu dữ liệu dạng điều kiện sẽ cho ra kết quả hoặc đúng
hoặc sai.

3.1 Phân biệt toán tử quan hệ và toán tử logic?

Toán tử so sánh (quan hệ): Trả về giá trị là true (đúng) hoặc false (sai)

int A=5, B=6;

 < (nhỏ hơn) A < B  -> true


 <= (nhỏ hơn hoặc bằng) A <= B  -> true
 > (lớn hơn) A > B  -> false
 >= (lớn hơn hoặc bằng) A >= B  -> false
 == (bằng) A == B  -> false
 != (khác) A != B  -> true

Toán tử logic: Trả về giá trị là true (đúng) hoặc false (sai)

Trong ngôn ngữ C, 2 trạng thái true(đúng) và false(sai) được biểu diễn bởi
các số nguyên int:

 Số 0 biểu diễn cho trạng thái false (sai).


 Tất cả các số nguyên khác 0 biểu diễn cho trạng thái true (đúng).

Các toán tử logic:

 && (and) trả về true khi cả 2 toán hạng đều đúng. Ngược lại trả về false.
o (5<6) && (7<8)  -> true
o (5>6) && (7<8)  -> false
o (5>6) && (7>8)  -> false
 || (or) trả về true khi ít nhất một trong 2 toán hạng đúng. Ngược lại trả
về false.
o (5<6) && (7<8)  -> true
o (5>6) && (7<8)  -> true
o (5>6) && (7>8)  -> false
 ! (not) trả về true khi toán hạng (đằng sau dấu ! sai). Ngược lại trả về
false.
o !(7>8)  -> true
o !(7<8)  -> false

3.2 Tại sao lại sử dụng “else” khi bạn chỉ có thể sử dụng một số câu lệnh
if? Khi nào bạn sẽ sử dụng

 Mệnh đề if-else trong C++ được sử dụng để kiểm tra một biểu thức điều kiện
nào đó có đúng hay không, nếu đúng thì thực thi những câu lệnh bên trong khối
lệnh if và ngược lại nếu sai thì nó sẽ bỏ qua những câu lệnh đó. Có ba dạng của
câu lệnh if trong C++.

 Mệnh đề if.
 Mệnh đề if-else.
 Mệnh đề if-elseif-else.

 Mệnh đề If được sử dụng để kiểm tra giá trị dạng boolean của điều kiện. Khối
lệnh sau if được thực thi nếu giá trị của điều kiện là True.
 Mệnh đề If được sử dụng để kiểm tra giá trị dạng boolean của điều kiện. Khối
lệnh sau If được thực thi nếu giá trị của điều kiện là True, nếu là False thì chỉ có
khối lệnh sau Else được thực hiện.
 Mệnh đề if-elseif-else cũng kiểm tra giá trị dạng boolean của điều kiện. Nếu giá
trị điều kiện if là True thì chỉ có khối lệnh sau if sẽ được thực hiện. Nếu giá trị
điều kiện else if nào là True thì chỉ có khối lệnh sau if else đó sẽ được thực
hiện… Nếu tất cả điều kiện của if và if else là False thì chỉ có khối lệnh sau else
sẽ được thực hiện.
 Như vậy nếu câu lệnh nếu không có Else vẫn sẽ chạy nhưng chỉ chạy được nếu
giá trị là đúng nên dù có hay không có thì chương trình vẫn chạy được.

3.3 Khối là gì ?
 Một câu lệnh ghép (còn được gọi là một khối hoặc câu lệnh khối )
là một nhóm không hoặc nhiều câu lệnh được trình biên dịch xử lý như
thể nó là một câu lệnh đơn lẻ.

 Các khối bắt đầu bằng một {ký hiệu, kết thúc bằng một }ký hiệu, với
các câu lệnh được thực thi được đặt ở giữa. Các khối có thể được sử
dụng ở bất cứ đâu cho phép một câu lệnh duy nhất. Không cần dấu
chấm phẩy ở cuối khối.

3.4 . Trong chương trình 4-19 trang 201 SGK, số biến được khai báo
hai lần. Giải thích phạm vi của các biến này.

 Nếu như một biến mà được khai báo nhiều lần thì biến này chỉ có thể là
biến cục bộ .

 Biến được chia làm hai loại đó là biến cục bộ và biến toàn cục
 Với biến toàn cục ta chỉ cần khai báo một lần là sẽ sử dụng được cho các
hàm con và chương trình sẽ báo lỗi nếu khai báo biến này lần thứ hai.

 Còn biến toàn cục chỉ sử dụng được trong một hàm con nhất định nên khi
qua hàm khác có thể khai báo lại mà chương trình không báo lỗi.

3.5 . Chuyển câu lệnh sau sử dụng toán tử điều kiện thành câu
lệnh sử dụng if else các câu lệnh. X <0? y = 10: z = 20;

if(x<0)
{cout << “y = 10”;}
else
{cout << “z = 20”;}

3.6 Điều gì xảy ra nếu bạn không sử dụng câu lệnh break ở cuối mỗi
trường hợp ?
 Trong mỗi trường hợp của lệnh switch case nếu đúng thì chương trình sẽ
thực hiện dòng lệnh, sau khi thực hiện chương trình sẽ tự động kết thúc bởi
vì có lệnh break và chương trình sẽ chạy đúng những gì nó cần phải làm.

 Và trong trường nếu như chương trình không có lệnh break thì nó sẽ chạy
đến khi nào hết các điều kiện trong chương trình, và sẽ làm sai lệch hoàn
toàn chương trình đang chạy

Lab 5
Câu 3: Giả sử bạn đang nhập tên, và tên thuộc về một loại được gọi là chuỗi.
Khi được yêu cầu tên nếu bạn nhập 'thoát' thì chương trình sẽ như thế nào ?
 Theo như bài 4.2 thì đây là một chương trình nhập và xuất ra tên với vòng
lặp while có điều kiện.
 Mặc dù quit cũng là một chuỗi kí tự giống tên nhưng chương trình được tạo
ra với mục đích sẽ lặp lại đến khi gặp chuỗi từ quit sẽ lập tức dung chương
trình.
 Nên chính vì vậy khi nhập từ khóa quit mặc dù là chuỗi kí tự going tên
nhưng chương trình sẽ mặc định dừng nếu như gặp nó.
Câu 4: Điều gì sẽ xảy ra nếu bạn muốn tiếp tục chấp nhận tên cho đến khi
nhập "thoát", nhưng không muốn chấp nhận nhiều hơn 5 tên?
 Theo như bài 4.2A thì chương trình cũng dung vòng lặp while để mà lặp vô
hạn chương trình và sẽ dừng lại nếu có điều kiện.
 Điều kiện để dừng vòng lặp này dừng chính là phải nhập từ khóa quit và
không được nhiều hơn 5 cái chuỗi kí tự với biến đếm bé hơn bằng 5
 Nếu như không muốn nhận nhiều hơn 5 tên thì có thể thay đổi biến đếm sao
cho phù hợp với yêu cầu của từng chương trình.

Lab 6

Câu 5: Đã đến lúc chúng ta kiểm tra khái niệm biến cục bộ. Giả sử một biến
tổng thể x tồn tại, và bạn đã khai báo một x khác trong một hàm, và bây giờ bạn
muốn gán một giá trị cho x. X phải nhận giá trị nào?
o Thông thường khi hai biến có cùng tên được xác định thì trình biên dịch sẽ
tạo ra lỗi thời gian biên dịch. Nhưng nếu các biến được định nghĩa trong các
phạm vi khác nhau thì trình biên dịch sẽ cho phép nó.

o Bất cứ khi nào có một biến cục bộ được xác định trùng tên với biến toàn cục
thì trình biên dịch sẽ ưu tiên cho biến cục bộ

o Như vậy nếu muốn gán giá trị cho x thì x sẽ nhận giá trị của biến cục bộ vì
trong chương trình thì trình biên dịch sẽ ưu tiên cho biến cục bộ hơn.

o Hoặc để giải quyết vấn đề này, chúng ta sẽ cần sử dụng toán tử phân giải
phạm vi . 

Lab 10

Câu 6: C ++ cung cấp tính năng kiểm tra lỗi trong khi xử lý tệp. Ví dụ, những
gì xảy ra nếu người dùng không đặt đĩa vào ổ A?

 Có 2 cách để tạo đường dẫn khi tạo một text file

 Đường dẫn tuyệt đối : chỉ ra vị trí của tệp so với ổ đĩa của máy tính.
Ví dụ : C:/Applis/lttb/files/scores.txt

 Đường dẫn tương đối : vị trí của tệp so với thư mịc chứa tệp chạy
của chương trình. Ví dụ : files/scores.txt nếu tệp chạy nằm trong
C:/Applis/lttb

 Sau đó, chúng ta có thể bắt đầu sử dụng luồng để ghi dữ liệu vào tệp.

 Nếu tệp tin đích không tồn tại, chương trình sẽ tạo ra nó ! Thế nhưng những thư
mục trong đường dẫn phải tồn tại. Như trong ví dụ bên trên C:/Applis/lttb/files
phải tồn tại, nếu không tệp tin scores.txt sẽ không được tạo ra.
 Một số vấn đề có thể xảy ra khi ta cố mở 1 tệp như là tệp không thuộc sở hữu của bạn
hay là ổ cứng đã đầy. Vì thế phải luôn luôn kiểm tra để chắc chắn là mọi thứ diễn ra
suôn sẻ. Chúng ta dùng cú pháp if(luong) để thử. Nếu phép thử thất bại nghĩa là đã
có vấn đề trong quá trình mở tệp nên ta không thể thao tác với tệp được

Lab 16
Câu 7: Trong các chương đầu, chúng ta đã thảo luận rằng một tên biến là một
bí danh cho một bộ nhớ địa chỉ. Điều gì sẽ xảy ra nếu chúng ta muốn biết địa chỉ
của vị trí bộ nhớ biến liên x có giá trị 20 được lưu ở đâu?

 Chúng ta có thể tìm địa chỉ của vị trí bộ nhớ biến x bằng nhiều cách như là
dùng tham chiếu hoặc con trỏ.
 Với tham chiếu ta có thể sử dụng toán tử địa chỉ & x đê tìm địa chỉ của vị trí
bộ nhớ biến x
 Với con trỏ ta có thể tìm địa chỉ của vị trí biến x thông qua toán tử *x

You might also like