Tải bản đầy đủ (.pdf) (47 trang)

Tài liệu thực hành môn kỹ thuật lập trình C++

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (448.73 KB, 47 trang )




Khoa ðTVTHK

10

TÀI LIỆU THỰC HÀNH
MÔN KỸ THUẬT LẬP
TRÌNH C++
Phiên bản 2.0 Sep-2010
dtvt.hvhkvn

Lab 00: LÀM QUEN Dev-C++ 3

LAB 01: Biểu thức, tóan tử trong C++ 11

LAB 02: Selection Structure 19

Lab 04: HÀM 33

Lab 05: Array 42

VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 2
LAB00: HƯỚNG DẪN CÀI ðẶT VÀ SỬ
DỤNG DEV-CPP





NỘI DUNG CHÍNH
Lab 0: LÀM QUEN Dev-C++ 3
1. Giới thiệu 3
2. Cài ñặt 3
3. Thao tác với Dev-C++ 3
3.1 Cấu hình Dev-C++ (Chỉ thực hiện lần ñầu) 3
3.2 Tạo chương trình mới hoặc dự án mới 4
4. Chương trình Hello World 6








VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 3

Lab 00: LÀM QUEN Dev-C++

1. Giới thiệu
Dev-C++ (Dev-Cpp, phiên bản hiện tại là 4.9.9.2) là một bộ công cụ phát triển tích hợp (IDE
Integrated Development Environment) các ứng dụng C/C++ thuộc dạng mã nguồn mở và có
thể download tại ñịa chỉ . DevCpp dựa trên trình biên dịch mã
nguồn mở MinGW (Minimalist GNU* for Windows, MinGW sử dụng
GCC (the GNU g++ compiler collection) sử dụng cho cả hệ thống Windows và Linux. Hiện nay
DevCpp là công cụ phát triển các ứng dụng C/C++ ñược sử dụng rộng rãi ñể dạy về lập
trình cũng như ñể phát triển các ứng dụng mã nguồn mở.
Mặc dù không có nhiều tính năng cao cấp như các công cụ IDE thương mại khác (Visual

Studio của Microsoft) nhưng DevCpp vẫn là một công cụ rất thích hợp trong môi trường giáo
dục ở bậc ñại học khi dạy và học các ngôn ngữ C/C++. Lý do là Dev-C++ hỗ trợ C/C++ chuẩn,
mã nguồn viết trên Dev-C++ có thể biên dịch trên các IDE khác, ñiều ngược lại có thể không
ñúng.
2. Cài ñặt
Có 2 phiên bản của dev-c++. Bản cài ñặt và bản portable.
• Bản cài ñặt: Tải file cài ñặt tại ñịa chỉ: sau ñó,
thực hiện cài ñặt theo hướng dẫn trên màn hình.
• Bản portable: Phiên bản portable không cần cài ñặt có thể tải về từ ñịa chỉ

• Trong phòng lab, Dev-CPP ñược cài ñặt và có tại ổ dĩa D:\Dev-CPP
3. Thao tác với Dev-C++
3.1 Cấu hình Dev-C++ (Chỉ thực hiện lần ñầu)
Chạy DEV-C++ (file devcpp.exe) màn hình sau xuất hiện như hình 1.
• Vào menu "Tools" chọn "Compiler Options".
• Vào tab "Settings" tab, nhấn vào "Linker" ở khung bên trái và thay ñổi thông số
"Generate debugging information" sang "Yes":
• Nhấn OK
VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 4

3.2 Tạo chương trình mới hoặc dự án mới
Các bước sử dụng Dev-CPP ñể tạo ra
chương trình C/C++ ñơn giản bao gồm các
bước chính như sau:
• B1. Tạo file/project
• B2. Sọan thảo mã nguồn
• B3. Biên dịch, sửa lỗi (nếu có)
• B4. Chạy thử và kiểm tra kết quả
• B5. Debug (nếu cần)

Bước 1: Tạo file hoặc project (dự án) mới
a. Trường hợp chương trình ñơn giản
Trong trường hợp chương trình ñơn giản,
chúng ta chỉ cần 1 file ñể lưu mã nguồn, khi ñó
chúng ta chọnmenu File | New | Source File
(Ctrl-N) . Nhập mã nguồn (Hầu hết các
trường hợp trong phòng lab sử dụng cách
này)
b. Trường hợp chương trình phức tạp
ðối với chương trình C/C++ phức tạp, 1 chương trình cần nhiều file ñể thực hiện thì DevCPP
có khái niệm dự án (project). Project là nơi cất giữ tất cả những thông tin liên quan ñến mã
nguồn, thư viện, tài nguyên,… ñể biên dịch thành chương trình.
• ðể tạo Project mới, vào menu "File" chọn "New", "Project ".
• Chọn "Console Application" và chọn "C project" nếu là lập trình C, Chọn “C++ Project”
nếu là C++. Nhập tên project, tên project cũng là tên của file thực thi (.exe) sẽ tạo ra khi
biên dịch.
• Nhấn "OK". Dev-C++ sẽ hỏi nơi lưu trữ project. Nhấn "OK".
Trong phòng Lab, phải lưu vào ổ dĩa D theo hướng dẫn của từng bài
VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 5

Bước 2: Sọan thảo mã nguồn
Nếu bước 1.a thì chúng ta bắt tay ngay vào việc nhập mã nguồn chương trình
Nếu là bước 1.b, chúng ta có 2 cách thêm mã nguồn vào dự án.
• Vào menu "File" chọn "New Source File" (CTRL+N) Hoặc
• Vào menu "Project" chọn "New File".
Dev-c++ sẽ không hỏi tên file cho ñến khi chúng ta thực hiện:
o Compile
o Save the project
o Save the source file

o Exit Dev-C++
Bạn cũng có thể thêm file nguồn có sẵn bằng 1 trong 2
phương pháp sau:
• Vào menu "Project" chọn "Add to Project"
Hoặc
• Nhấn phím phải chuột vào project name ở
khung bên trái và chọn "Add to Project".
Các quy tắc sọan thảo gần giống với chương
trình sọan thảo văn bản chuấn (Word,…). Một vài
tính năng như:
• Undo
• Redo
• Copy
• Paste
• Cut
• Select All
• …
Tham khảo menu Edit ñể biết chi tiết và các phím tắt trong khi
VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 6
sọan thảo
Bước 3: Biên dịch (Compile)
Sau khi nhập file nguồn xong, ñể biên dịch chúng ta thực
hiện:
• Vào menu "Execute" chọn "Compile"
(CTRL+F9).
Thông thường, khi biên dịch lần ñầu sẽ có lỗi về
Syntax. Lỗi Syntax sẽ hiển thị ở tab biên dịch ở phía dưới
màn hình. ðể biết lỗi xảy ra ở vị trí nào của source
code, double-click vào lỗi ñó và contrỏ màn hình sẽ trở

về vị trí có lỗi khi biên dịch.
Hình bên minh họa lỗi syntax (thiếu dấu ;) khi biên dịch
Trong trường hợp biên dịch thanh công, hộp thọai thông báo có status là “Done”.
Bước 4: Thực thi chương trình.
Bây giờ, bạn có thể chạy chương trình
• Vào menu "Execute" chọn "Run".
Chú ý 1: Bc 4 & 5 có th thc hin ñng thi bng menu Execute, chn Compile &
Run (F9)
Chú ý 2: Màn hình kết quả không xuất hiện:
Nếu khi chạy chương trình, bạn thấy màn hình console DOS màu ñen xuất hiện, chớp sáng 1
hoặc vài lần và trở lại màn hình sọan thảo thì có nghĩa là chương trình cũa bạn ñã chạy xong.
ðiều này có nghĩa là chương trình thực thi xong và tự ñóng cửa sổ console sau khi chương
trình thóat. ðể giải quyết trường hợp này chúng ta có thể sử dụng lệnh system và thông số
lệnh của HðH. Thêm ñọan code sau trước lệnh return trong hàm main hoặc trước bất kỳ hàm
exit() hoặc abort():
system(“pause”);

Bước 5: Debug.
Trong trường hợp chương trình chạy không như ý của bạn, sử dụng công cụ debugger ñể xác
ñịnh cụ thể. Chức năng debug cơ bản có tại tab debug ở cuối màn hình. Nhiều chức năng
khác nhau có tại menu debug. Một vài tính năng chính của debug như:
• Chạy tới con trỏ màn hình (Run to cursor )
• Thêm cửa sổ theo dõi
• Theo dõi giá trị của biến,…
4. Chương trình Hello World
ðể kiểm tra họat ñộng của Dev-Cpp, sau ñây là chương trình in ra màn hình chữ “Hello World
“ sử dụng ngôn ngữ C hoặc C++. Bạn hãy thực hiện theo các bước trên, nhập mã nguồn và
chạy thử ñể kiểm tra kết quả.
VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 7

a) Ngôn ngữ C:
/* Chuong trinh C don gian
* In ra man hinh dong chu Hello World
* Nhan phim Enter de thoat
* luu file voi ten la hello.c
*/
# include <stdio.h>
# include <stdlib.h>
int main()
{
printf ("Hello World \n");
system(“pause”);
return 0;
}

b) Ngôn ngữ C++:
/* Chuong trinh C++ don gian
* In ra man hinh dong chu Hello World
* Nhan phim Enter de thoat
* luu file voi ten la hello.cpp
*/
# include <iostream.h>
int main()
{
std::cout <<"Hello World \n";
system(“pause”);
return 0;
}

QUY ƯỚC KHI VIẾT MÃ NGUỒN C/C++

1. Các quy tắc ñặt tên trong chương trình
Quy tắc 1: Tên các ñịnh danh (hằng, biến, hàm, mảng, cấu trúc, lớp, …) trong chương trình
phải thể hiện ñược ý nghĩa của nó.
Quy tắc 2: Tên hằng ñược viết hoa toàn bộ, các từ cách nhau bằng ký tự ‘_’.
const int NUMBER_OF_ELEMENTS 100
Quy Tắc 3: Tên biến phải thể hiện ñược ý nghĩa của nó, viết bằng chữ thường, các từ cách
nhau bằng ký tự ‘_’.
int tu_so, mau_so;
Quy Tắc 4: Tên hàm phải là ñộng từ thể hiện hành ñộng cần thực hiện.
int check_bad_value (long value) \
VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 8
int kiem_tra_so_nguyen_to (int n)
2. Quy tắc viết câu lệnh
Quy Tắc 5: Mỗi câu lệnh ñược viết riêng trên một dòng.
Ví d


sai

Ví d


ñúng

x = 3; y = 5; x = 3;
y = 5;
if (a > b) cout << "a lon hon b";
else cout << "a nho hon b";
// ðúng.

if (a > b)
cout << "a lon hon b";
else
cout << "a nho hon b";
for (int i = 0; i < n; i++) x = x + 5; for (int i = 0; i < n; i++)
x = x + 5;
Quy Tắc 6: Các dấu ‘{‘, ‘}’ ñược viết riêng trên một dòng.
Ví d


sai

Ví d


ñúng

void Swap(int &a, int &b) {
int c = a;
a = b;
b = c;
}
void Swap(int &a, int &b)
{
int c = a;
a = b;
b = c;
}
Quy Tắc 7: Các câu lệnh if, switch, while, for, do ñược viết riêng trên một ñoạn.
Ví d



sai

Ví d


ñúng

if (a > b)
cout << "a lon hon b";
for (int i = 0; i < n; i++)
x = x + 5;
k = k * x;

if (a > b)
cout << "a lon hon b";

for (int i = 0; i < n; i++)
x = x + 5;

k = k * x;

Quy Tắc 8: Các câu lệnh cùng thực hiện một công việc ñược viết riêng trên một ñoạn.
Ví d


sai

Ví d



ñúng

int c = a;
a = b;
b = c;
k = k * a;
x = b + c;
int c = a;
a = b;
b = c;

k = k * a;
x = b + c;
3. Quy Tắc về khỏang trắng (space)
Quy Tắc 9: Các câu lệnh nằm giữa dấu ‘{‘, ‘}’ ñược viết cách vào một khoảng tab. Các câu
lệnh con của if, else, while, for, switch ñược viết cách vào một khoảng tab
Ví d


sai

Ví d


ñúng

VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 9

if (a > b)
cout << "a lon hon b";
else
cout << "a nho hon b";

for (int i = 0; i < n; i++)
x = x + 5;
if (a > b)
cout << "a lon hon b";
else
cout << "a nho hon b";

for (int i = 0; i < n; i++)
x = x + 5;
Quy Tắc 10: Xung quanh các toán tử 2 ngôi (+, -, *, >=,…) viết cách một khoảng trắng.
Ví d


sai

Ví d


ñúng

x=x+5*a-c; x = x+5 * a - c;
if (a>=b) if (a >= b)
4. Quy Tắc viết chú thích
Quy Tắc 11: Chú thích phải rõ ràng, dễ hiểu và diễn giải ñược ý nghĩa của ñoạn lệnh. ðầu
mỗi hàm, struct, class, hàm phải có chú thích diễn giải ý nghĩa của nó.

Quy Tắc 12: Sử dụng // cho chú thích 1 dòng; sử dụng /* */ cho các chú thích từ 2 dòng trở
lên. Dùng /* */ ñể tạm thời comment out các ñoạn chương trình ñể test và debug.
Mỗi file nguồn, cả .CPP và .H, ñều phải bắt ñầu bằng một khối chú thích ñủ ñể người ñọc có
thể hiểu mục ñích của file. Mẫu như sau:
/***************************************************************
* Tên/Name: Họ tên Lớp/Class: Lớp
* Project: mô tả/tên dự án (một dòng, giống nhau tại mọi file)
* Purpose: Mục ñích sử dụng của mã chương trình hoặc các khai báo trong
* file này (một vài dòng)
**************************************************************/
Mỗi lớp, hàm, phương thức phải có một khối chú thích mô tả ngắn gọn lớp, hàm, phương thức
ñó làm gì; ñối với hàm/phương thức: liệt kê tất cả các tham số, nêu rõ ý nghĩa của tham số; và
mô tả ñiều kiện trước và sau của hàm/phương thức ñó.
Có thể chú thích các ñoạn code bên trong hàm, tuy nhiên chỉ nên chú thích ñủ hiểu. Quá nhiều
chú thích và chú thích thừa làm code trông rối. Tất cả các chú thích phải ñược lùi ñầu dòng
cùng ñoạn code quanh nó.
5. Quy Tắc Thiết kế
Quy Tắc 13: Mỗi phương thức/hàm (kể cả hàm main()) không vượt quá 30 dòng tính từ dấu
mở hàm ({) tới ngoặc kết thúc hàm (}) trừ những trường hợp ngọai lệ phải ghi giải thích rõ
ràng.
Hạn chế việc dùng biến tòan cục.
Chú ý:Nếu vi phạm các quy tắc trên, phải ghi chú rõ ràng lý do trong tài liệu chương trình. Các
bài tập/Project/kiểm tra sẽ bị trừ ñiểm nếu không tuân theo các quy ñịnh này.

VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 10
LAB01: BIỂU THỨC, TÓAN TỬ C++
Nội Dung Chính

LAB 01: Biểu thức, tóan tử trong C++ 11


0. Mục tiêu 11

1. Yêu cầu 11

2. Kiểm tra kiến thức lý thuyết (15 phút) 11

2.1 Cho biết kết quả màn hình khi chạy ñọan code sau: 11

2.2 Cho biết kết quả màn hình khi chạy ñọan code sau: 11

2.3 Cho biết kết quả màn hình khi chạy ñọan code sau: 12

2.4 Cho biết kết quả màn hình khi chạy ñọan code sau: 12

2.5 Cho biết kết quả màn hình khi chạy ñọan code sau: 12

3. Phần Bài Tập 13

3.0 Test chương trình sau, sửa lỗi nếu có? cho biết kết quả màn hình khi chạy? 13

3.1 Test chương trình sau: 13

3.2 Tính tổng, hiệu, tích, thương 2 số nhập vào từ bàn phím 14

3.3 Biểu thức logic 14

3.4 Tính kết quả biểu thức 15

3.5 Tính kết quả biểu thức 15


3.6 Tính kết quả biểu thức 15

3.7 Phân biệt cin và getline 16

3.8 Chạy chương trình sau, giải thích kết quả 16

3.9 Tính tiền sản phẩm 17

3.10 Tính ñiểm trung bình 17

3.11 Viết chương trình chuyển ñổi từ ñộ C(Celsius) sang ñộ F(Fahrenheit) 17

3.12 Viết chương trình chuyển ñổi từ ñộ F(Fahrenheit) sang ñộ C(Celsius) 17





VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 11

LAB 01: Biểu thức, tóan tử trong C++
0. Mục tiêu
• Sử dụng môi trường sọan thảo và chạy một chương trình C++ ñơn giản
• Làm quen với các kiểu dữ liệu và tóan tử cơ bản của C++
• Làm quen với biến và lệnh gán, ñối tượng xuất nhập: cout, cin
• Hòan tất Lab01 tại lớp trong vòng 120 phút
1. Yêu cầu
• ðọc tài liệu hướng dẫn sử dụng DEV-CPP (Lab0)

• Kiểm tra ñã có phần mềm DEV-CPP (C:\Dev-Cpp) trên máy tính của phòng lab chưa?
o Chưa có: liên hệ giảng viên hướng dẫn phòng lab ñể copy & cài ñặt
o ðã có: Chạy chương trình devcpp.exe trong thư mục Dev-Cpp
• Ôn lại kiến thức về hằng, biến, kiểu dữ liệu, biểu thức, tóan tử trong C++
• Hiểu rõ tóan tử: +, -, *, /, %, ++, , +=, -=, *=, /=, &&, ||, !, !=, >, <, <=, >=,…
• ðộ ưu tiên của tóan tử
• Biến , hằng, lệnh gán, ñối tượng xuất nhập: cout, cin
• Làm trước các bài 2.1~2.5 và 3.1~3.12 trước khi vào phòng Lab. Mỗi SV phải có 1 bản
copy của bài Lab này
2. Kiểm tra kiến thức lý thuyết (15 phút)
2.1 Cho biết kết quả màn hình khi chạy ñọan code sau:
#include <iostream.h>
int main() {
float a=1.2 ;
int b=a ;
std::cout <<b ;
return 0 ;
}

a) Chương trình có lỗi khi biên dịch
b)
Kết quả không xác ñịnh ñược

c)
Màn hình hiển thị (ñiền vào ô trống bên)

2.2 Cho biết kết quả màn hình khi chạy ñọan code sau:
# include <iostream>
int main()
{

int a = 5, b = 10, c = 15, d = 0;
std::cout << (a+b || c == d);
std::cout << (c >= 6) || (a+c <= 20);
std::cout << !(b <= 12) && a % 2 == 0;
std::cout << !(a >5) || c < a+b;
return 0 ;
VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 12
}
a) Chương trình có lỗi khi biên dịch
b)
Kết quả không xác ñịnh ñược

d)
Màn hình hiển thị (ñiền vào ô trống bên)

2.3 Cho biết kết quả màn hình khi chạy ñọan code sau:
int main()
{
int x=5, y=-10, a=4, b=2;
int z = x++ - y * b / a;
cout << z ;
return 0;
}
a) Chương trình có lỗi khi biên dịch
b)
Kết quả không xác ñịnh ñược

e)
Màn hình hiển thị (ñiền vào ô trống bên)


2.4 Cho biết kết quả màn hình khi chạy ñọan code sau:
int main()
{
int a = 2, b = 3;
int c = a++, d = ++b;
cout << (c-b || d-b);
cout << (a > c) || (d < b) ;
cout << !(c == 2) && a % 2 == 0 ;
return 0 ;
}
A. 001 B. 010 C. 011 D.100
E. 101 F. 110 G. 111 H. Khác
2.5 Cho biết kết quả màn hình khi chạy ñọan code sau:
int main()
{
int a=3, b=4, c=5, d;
d = a * b + c/2;
cout << d ;
d = a % b;
cout << d ;
d = a / b + c;
cout << d ;
return 0;
}
a) Chương trình có lỗi khi biên dịch
b)
Kết quả không xác ñịnh ñược

f)

Màn hình hiển thị (ñiền vào ô trống bên)


VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 13
3. Phần Bài Tập
LƯU Ý QUAN TRỌNG:
• Các ñọan mã nguồn trong các bài sau có thể có lỗi khi biên dịch. Hãy sửa lại và
thêm các file header phù hợp nếu cần.
• Mỗi bài tóan sau, ghi chú theo mẫu sau:
/****************************************************************
* Lab 01, Bai 01
* Tac gia: Nguyen X , MSSV: 123456789
* Lop: XX, Khoa Y.
* Lab01b01: Hien thi thong diep "hello world!"
* Created date: dd/mm/yyyy ; Modified date:
*****************************************************************/
3.0 Test chương trình sau, sửa lỗi nếu có? cho biết kết quả màn hình khi chạy?
#include <iostream.h>
# define MAX 4.0
int main()
{
int a = 10, b= 5
double c = 4.0, f = 0.0;
f = MAX + c * (b / a);
cout << f;
system(“pause”);
return 0 ;
}


3.1 Test chương trình sau:
#include <iostream.h>
int main()
{
const float PI=3.14159;
float radius = 5;
float area;
area = radius * radius * PI; // Circle area calculation
cout << “The area is “ << area << “ with a radius of 5.\n”;
radius = 20; // Compute area with new radius.
area = radius * radius * PI;
cout << “The area is “ << area << “ with a radius of 20.\n”;
system(“pause”);
return 0;
}
a) Chạy chương trình trên
b) Sử dụng #define ñể ñịnh nghĩa hằng số PI
c) Sửa lại chương trình trên, cho phép nhập bán kính từ bàn phím.
VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 14
3.2 Tính tổng, hiệu, tích, thương 2 số nhập vào từ bàn phím
#include <iostream.h>
int main()
{
short int x , y, tong, hieu, tich;
float thuong;
cout << "Nhap so thu nhat: ";
cin >> x;
cout << "Nhap so thu hai:";
cin >> y;

tong = x + y ;
hieu = x – y ;
tich = x * y ;
thuong = x / y ;
cout << "Tong hai so la " << tong << endl;
cout << "Tong hai so la " << hieu << endl;
cout << "Tong hai so la " << tich << endl;
cout << "Tong hai so la " << thuong << endl;
}
a. Chạy thử chương trình trên, nhập giá trị x, y như bảng sau, cho biết kết quả và nhận
xét? Sửa lại code ñể chương trình chạy ñúng?
b. Giới hạn của x, y ñể kết quả của các phép tính vẫn còn ñúng?
x y x+y x-y x*y x/y
100 100
2000 2000
c. Thay thế 4 dòng lệnh cout cuối bằng các dòng lệnh sau? Nhận xét?
cout << x << “ + ” << y <<” = “ << tong << endl;

3.3 Biểu thức logic
#include <iostream>
using namespace std;
int main()
{
int i , j;
cout << "Enter an integer: ";
cin >> i;
cout << "Enter another integer: ";
cin >> j;
cout << "i > j is " << (i > j) << endl;
cout << "i < j is " << (i < j) << endl;

cout << "i >= j is " << (i >= j) << endl;
VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 15
cout << "i <= j is " << (i <= j) << endl;
cout << "i == j is " << (i == j) << endl;
cout << "i != j is " << (i != j) << endl;
cout << "i && j is " << (i && j) << endl;
cout << "i || j is " << (i || j) << endl;
cout << " (i < 10) && (j < 10) is “ << ((i < 10) && (j < 10)) << endl;
system(“pause”);
return 0;
}
a) Chạy thử chương trình trên, nhập i=6, j=4
b) Thử lại với bỏ <<endl ở các dòng cout trên
3.4 Tính kết quả biểu thức
Xác ñịnh giá trị của những biểu thức sau, viết chương trình kiểm chứng lại kết quả:
a) x= 7+3*6/ 2-1
b) x= 2%2+2*2-2/2
c) x= (3*2*(3+(4*(3/3))));
d) x= (7%2)*2+4/2*3-8
e) x= 7%2*2+4/2*3-8
f) x=(7%2*(2+4)/2*3)-8
3.5 Tính kết quả biểu thức
Xác ñịnh giá trị của những biểu thức sau, viết chương trình kiểm chứng lại kết quả. Giả sử a =
6, b = 5
a) (a>5) && (b<=6)
b) (a!=b) || (b==4)
c) ! (b>6)
d) ! (a==4) && (b<3)
e) (a>2) && ((b<3) || (a>4)))

f) y = a + b
g) y = ++a + b++
h) y = a++ + b
i) y = a + b
j) y = a + b
k) y= ++a*3
3.6 Tính kết quả biểu thức
Xác ñịnh giá trị của những biểu thức sau, viết chương trình kiểm chứng lại kết quả.
a) i=3; j=4;
b) i=++j;
c) i=j++;
d) i++;
e) i=++i+5;
f) i=i+ ++5;
g) ((i>5) && (j<=6));
VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 16
h) ((i!=i) || (j==6));
i) ( !(i>10));
j) (! ((i/6==3) && (j<8)));
k) ((i>11) && ((j<15) || (i>4))));
l) k= i+j%8;
m) k=i%3+4-2*j/5;
n) k=(i+j)/3*2%8*100;
o) k= ++i+j++;
p) k=i*8*3*(j%7);
q) k=i+j/3-2*++j/19;
r) k=++(i++ +j++);
3.7 Phân biệt cin và getline
#include <iostream>

using namespace std;
int main()
{
const int SIZE=100;
char buffer[ SIZE ];
cout << "Enter your fullname:\n“;
cin >> buffer ;
cout << "\nHello " << buffer << endl;
system(“pause”);
return 0;
}
a) Chạy thử chương trình trên, nhập họ và tên cách nhau bởi khỏang trắng sau ñó nhấn
enter, cho biết kết quả? Nhận xét
b) Thay thế dòng cin>> buffer ; bằng dòng lệnh cin.getline( buffer, SIZE ); thử lại và nhận xét?
3.8 Chạy chương trình sau, giải thích kết quả
a. Chương trình 1
int main()
{
short i = -3;
unsigned short u;
cout<< sizeof(i)<< &i;
cout<<sizeof(u)<<&u;
cout << (u = i) << "\n";
}
b. Chương trình 2
int main() {
char i = 125*4/10;
cout << i << "\n";
}
VAA. ðTVTHK Tài Liệu Thực Hành

Kỹ Thuật Lập Trình C++ Trang 17
3.9 Tính tiền sản phẩm
Nhập tên sản phẩm, số lượng và ñơn giá. Tính tiền và thuế giá trị gia tăng phải trả, biết:

tiền = số lượng * ñơn giá


thuế giá trị gia tăng = 10% tiền

3.10 Tính ñiểm trung bình
Nhập ñiểm thi và hệ số 3 môn Toán, Lý, Hóa của một sinh viên. Tính ñiểm trung bình của sinh
viên ñó. Kết quả xuất ra màn hình theo ñịnh dạng sau:

3.11 Viết chương trình chuyển ñổi từ ñộ C(Celsius) sang ñộ F(Fahrenheit)
3.12 Viết chương trình chuyển ñổi từ ñộ F(Fahrenheit) sang ñộ C(Celsius)
• Biết F = (9/5)*C + 32 ; C = (5/9)*(F-32)
• Chú ý sử dụng chuyển ñổi kiểu trong phép chia 5/9, 9/5

Toan: 9.3
Ly: 7.5
VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 18
LAB02: Selection Structure
Nội Dung Chính

LAB 02: Selection Structure 19

0. Mục tiêu 19

1. Yêu cầu 19


2. Kiểm tra kiến thức lý thuyết (15 phút) 19

2.1 Kết quả khi chạy ñọan code sau: 19

2.2 Kết quả khi chạy ñọan code sau: 19

2.3 Kết quả khi chạy ñọan code sau: 19

2.4 Kết quả khi chạy ñọan code sau: 19

2.5 Kết quả khi chạy ñọan code sau: 19

3. Nội dung 20

3.1 Nhập vào 1 số nguyên. Và kiểm tra số ñó có chẵn không? 20

3.2 Nhập vào 2 số nguyên a, b. Kiểm tra xem a có chia hết cho b không 20

3.3 Nhập vào 2 số nguyên a, b. Tìm số lớn nhất, nhỏ nhất 20

3.4 Nhập vào 3 số nguyên a, b, c. Tìm số lớn nhất, nhỏ nhất. 20

3.5 ðiểm trung bình và xếp hạng 20

3.6 Beep 21

3.7 In số ngược 21

3.8 Tính cước taxi 21


3.9 Chương trình máy tính ñơn giản 22

3.10 Giải và biện luận phương trình bậc nhất: ax+b=0 22

3.11 Giải và biện luận phương trình bậc 2: ax2 + bx + c = 0 22

3.12 Tính tiền thuê phòng Dựa vào số ngày thuê và lọai phòng 22

3.13 Nhập vào ngày, tháng của năm hiện tại. 22

3.14 ðổi chữ hoa – thường 23

3.15 Kiểm tra chữ hoa, chữ thường 23




VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 19
LAB 02: Selection Structure
0. Mục tiêu
• Sử dụng thành thạo cấu trúc rẽ nhánh
o If, if…else, switch
• Hòan tất Lab02 tại lớp trong vòng 90 phút
1. Yêu cầu
• Hiểu rõ cấu trúc lệnh if, if…else, switch
• Kiến thức tóan học cơ bản: số nguyên tố, uscln, giải phương trình
• ðối tượng cout, cin và bảng mã ASCII
• Làm trước các bài trong mục 2 và 3 trước khi vào phòng Lab. Mỗi SV phải có 1 bản

copy của bài Lab này
2. Kiểm tra kiến thức lý thuyết (15 phút)
2.1 Kết quả khi chạy ñọan code sau:
int main()
{
int x=1, t = x ;
if (x <= 0)
t += 5 ;
t += 10 ;
std::cout << t;
return 0 ;
}
2.2 Kết quả khi chạy ñọan code sau:
int main() {
int i=4, j=6;
float x;
x = i/j;
std::cout << x;
return 0 ;
}
2.3 Kết quả khi chạy ñọan code sau:
int a = 5, b = 6, c = 7, f;
f = a*b != c*c;
if (f) a++;
else b ;
cout << f ;
f = (a>6) && (b<5);
cout << f ;
f = a>100 || b<50;
cout << f ;

return 0;
2.4 Kết quả khi chạy ñọan code sau:
int main()
{
int x=0;
switch(x) {
case 1: cout << "One" ;
case 0: cout << "Zero" ;
case 2: cout << "Hello" ;
}
return 0;
}
2.5 Kết quả khi chạy ñọan code sau:
# include <iostream>
int main() {
int x = 5, y = x++;
char op = '*';
switch (op) {
default : x += 1;
case '+' : x += y;
case '-' : x -= y;
}
std::cout <<x<<y;
return 0 ;
}
VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 20

3. Bài Tập
3.1 Viết chương trình nhập vào 1 số nguyên. Và kiểm tra số ñó có chẵn không?

Giải thuật: Số chẵn là số chia hết cho 2.
Mô tả: Nếu số A chia cho 2 có phần dư = 0 thì A là số chẵn
Thực hiện trong c++: (a % 2)
3.2 Viết chương trình nhập vào 2 số nguyên a, b. Kiểm tra xem a có chia hết cho b
không
Giải thuật: Nhập 2 số nguyên a, b
Kiểm tra: if (a % b) ==0  printf ( Số a chia hết cho số b)
3.3 Viết chương trình Nhập vào 2 số nguyên a, b. Tìm số lớn nhất, nhỏ nhất
Gợi ý: Khai báo biến max và min ñể chứa giá trị lớn nhất và nhỏ nhất tương ứng.
Tìm số lớn nhất:
max = b
Nếu (a > b) then max = b
Tìm số nhỏ nhất:
min = a
Nếu ( a > b) then min = b
3.4 Viết chương trình Nhập vào 3 số nguyên a, b, c. Tìm số lớn nhất, nhỏ nhất.
Giải thuật:
Số lớn nhất Số nhỏ nhất
Giả sử Max = a
IF ( B > Max) Then Max = B
IF (C > Max) Then Max = C
Giả sử Min = a
IF ( Min > B) Then Min = B
IF (Min > C Then Min = C
3.5 ðiểm trung bình và xếp hạng
Nhập vào ñiểm trung bình của sinh viên (Thang ñiểm 100) và Hiển thị xếp loại theo tiêu chí
sau:
90 <= A
80 <= B < 90
70 <= C < 80

60 <= D < 70
E < 60
Gợi ý: Biến average chứa ñiểm trung bình của SV. Mã nguồn như sau:
if (average >= 90)
grade = 'A';
else if (average >= 80)
grade = 'B';
else if (average >= 70)
grade = 'C';
else if (average >= 60)
grade = 'D';
else
grade = 'E';
VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 21
3.6 Beep
// BEEP : ‘\x07’
#include <iostream.h>
#define BEEP cout << “\a \n”
int main()
{
int num;
cout << “Please enter a number “;
cin >> num;
if (num == 1)
{ BEEP; }
else if (num == 2)
{ BEEP; BEEP; }
else if (num == 3)
{ BEEP; BEEP; BEEP; }

else if (num == 4)
{ BEEP; BEEP; BEEP; BEEP; }
else if (num == 5)
{ BEEP; BEEP; BEEP; BEEP; BEEP; }
else
cout <<”Invalid number!”;
return 0;
}
a) Chạy chương trình trên
b) Viết lại chương trình trên sử dụng lệnh switch
3.7 In số ngược
Viết chương trình nhập số nguyên có 3 chữ số và hiển thị các chữ số theo thứ tự ngược lại.
VD: Nếu số nhập là a = 356 thì hiển thị là 653.
Gợi ý:
Giải thuật Mã nguồn C++
Giả sử số nhập là n có ba chữ số.
Số hàng ñơn vị = n % 10
Số hàng chục = ( n / 10 ) % 10
Số hàng ñơn vị = n / 100
tram = n;
donvi = tram % 10;
tram = tram / 10;
chuc = tram % 10;
tram = tram /10;
3.8 Tính cước taxi
Viết chương trình tính giá cước taxi theo công thức sau:
a. 1 km ñầu giá 15000ñ
b. Từ km thứ 2 ñến km thứ 5 giá 13000ñ
c. Từ km thứ 6 ñến km thứ 100 giá 11000ñ
d. Nếu trên 100km giá 9000ñ

VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 22
Chương trình cho phép người sử dụng nhập vào số km (bao gồm số lẻ VD: 2.5km) và in ra số
tiền phải trả.
Gợi ý:
• Khai báo hằng: GIA1 = 15000; GIA2 = 13000; GIA3=…
• Chú ý: km = 1.1 sẽ tính tiền là 2km. Sử dụng hàm ceil (double) thực hiện round-up
value. VD: ceil(4.3) = 5
3.9 Chương trình máy tính ñơn giản
Nhập vào 2 số a, b và một phép toán p, thực hiện tính kết quả trả về dựa vào dữ liệu nhập
vào. Ví dụ a = 5, p = '+', b = 6, Kết quả hiển thị là 5 + 6 = 11.
Gợi ý:
• Phép tóan p: +, -, *, /
• Trường hợp phép chia: nhớ kiểm tra (≠0)
3.10 Giải và biện luận phương trình bậc nhất: ax+b=0
3.11 Giải và biện luận phương trình bậc 2: ax2 + bx + c = 0
• Gợi ý: sử dụng thư viện tóan math: # include <math.h> tính delta sử dụng hàm: double
sqrt(double x); Căn bậc 2 của x, trả về giá trị double

3.12 Tính tiền thuê phòng Dựa vào số ngày thuê và lọai phòng
Lọai A: 250 /ngày
Lọai B: 200 /ngày
Lọai C: 150 /ngày
Nếu số ngày thuê nhiều hơn 10 ngày thì giảm giá % trên tổng số tiền như sau: A: 10%,
B,C: 5%
Chương trình cho phép nhập số ngày thuê, lọai phòng và in ra giá tiền phải trả.
3.13 Nhập vào ngày, tháng của năm hiện tại.
Viết chương trình thực hiện:
• Kiểm tra tính hợp lệ ngày, tháng nhập.
• Cho biết tháng nhập có bao nhiêu ngày.

• Cho biết ngày hôm sau của ngày ñã nhập là ngày nào.
VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 23
• Cho biết ngày hôm trước của ngày ñã nhập là ngày nào.
VD: Nếu ngày nhập là 1/12/2009 thì ngày trước ñó là 30/11/2009.
Gợi ý:
Tháng 1, 3, 5, 7, 8, 10, 12: 31 ngày
Tháng: 3, 4, 6, 9, 11: 30 ngày
Tháng 2: Nhuận/Không nhuận: 29/28 ngày
Năm nhuận là (những năm chia hết cho 400) hoặc (chia hết cho 4 và không chia hết cho 100). Ví dụ
2000 là năm nhuận nhưng 2100 không phải là năm nhuận. Code C++ như sau: if ( year % 400 ==0 ||
( year %100 != 0 && year % 4 == 0))
3.14 ðổi chữ hoa – thường
Nhập một chữ cái, nếu là chữ thường thì ñổi thành chữ hoa, ngược lại, nếu là chữ hoa thì ñổi
thành chữ thường. Ví dụ : nhập A in ra a, nhập b thì in ra B. (Không sử dụng thư viện string)
3.15 Kiểm tra chữ hoa, chữ thường
Nhập một ký tự bất kỳ, cho biết ký tự ñó thuộc loại nào: là chữ hoa, là chữ thường, là chữ số
hay các ký tự khác. (Không sử dụng thư viện string)





VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 24
LAB03: Repetition Structure
Nội Dung Chính

Lab 03: Vòng Lặp 25


0. Mục tiêu 25

1. Yêu cầu trước khi vào buổi thực hành này 25

2. Kiểm tra kiến thức lý thuyết (3 phút/câu) 25

2.1 Kết quả khi chạy ñọan code sau: 25

2.2 Kết quả khi chạy ñọan code sau: 25

2.3 Kết quả khi chạy ñọan code sau: 25

2.4 Kết quả khi chạy ñọan code sau: 25

2.5 Kết quả khi chạy ñọan code sau: 25

2.6 Kết quả khi chạy ñọan code sau: 26

3. Chương trình 27

3.1 Hiển thị số nguyên từ 1 ñến 1000 chia hết cho 2 và 3 27

3.2 Xác ñịnh kết quả của ñọan code sau, giải thích? 27

3.3 Xác ñịnh kết quả của ñọan code sau? Viết chương trình kiểm tra lại kết quả? 27

3.4 Tính giá trị pi 28

3.5 Tính giá trị e 28


3.6 Tính N! , N nhập từ bàn phím. 29

3.7 Số Nguyên tố 29

3.8 Số chính phương 29

3.9 Chuyển ñổi nhiệt ñộ C-F 29

3.10 Tính lãi xuất tiết kiệm. 30

3.11 Tìm số lớn nhất, nhỏ nhất 30

3.12 Tìm số dương nhỏ nhất 30

3.13: In bảng cửu chương 30

3.14: Viết chương trình in ra tam giác sau 30

3.15: Viết chương trình in ra tam giác cân từ chiều cao h 31




VAA. ðTVTHK Tài Liệu Thực Hành
Kỹ Thuật Lập Trình C++ Trang 25
Lab 03: Vòng Lặp
0. Mục tiêu
• Sử dụng thành thạo cấu trúc lặp trong C++, bao gồm:
o for
o while

o do…while
• Lệnh break, continue, …
• Hòan tất Lab03 tại lớp trong vòng 120 phút
1. Yêu cầu trước khi vào buổi thực hành này
• Hòan thành và hiểu rõ Lab01, Lab02
• Nắm vững cú pháp lặp: for, while, do-while
• Kiến thức tóan học: số nguyên tố, số chính phương, số hòan hảo, USCLN, …
• Làm trước các bài trong mục 2 và 3 trước khi vào phòng Lab. Mỗi SV phải có 1 bản
copy của bài Lab này
2. Kiểm tra kiến thức lý thuyết (3 phút/câu)
2.1 Kết quả khi chạy ñọan code sau:
#include <iostream>
int main ()
{
int i=1, sum=0, N=6;
while (i <= N)
{
sum += i;
i++;
}
std::cout << sum <<i;
return 0;
}
2.2 Kết quả khi chạy ñọan code sau:
#include <iostream>
int main ()
{
int i=1, j=10;
for (i=0; i<=j; i+=2)
std::cout << i ;

std::cout << j ;
return 0;
}
2.3 Kết quả khi chạy ñọan code sau:
#include <iostream>
int main ()
{
int x = 3, counter = 0;
while ((x-1))
{
++counter;
x ;
}
std::cout << counter;
return 0;
}
2.4 Kết quả khi chạy ñọan code sau:
int main()
{
int i = 0, j, sum = 0;
do
{
if (i%2 ==0)
sum += i;
} while (++i <=6) ;
cout << sum ;
return 0;
}
2.5 Kết quả khi chạy ñọan code sau:
int main()

{

×