Kỹ thuật lập trình - Chương 2: Các yếu tố cơ bản của C và C++

2.1 TổchứcchươngtrìnhC/C++

2.2 Biếnvàcáckiểudữliệucơbản

2.3 Cáckiểudữliệudẫnxuấttrựctiếp

2.4 Địnhnghĩakiểudữliệumới

2.5 Điềukhiểnchươngtrình: phânnhánh

2.6 Điềukhiểnchươngtrình: vònglặp

2.7 Mộtsốlệnh₫iềukhiểnchươngtrìnhkhác

pdf66 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 1859 | Lượt tải: 1download
Tóm tắt nội dung Kỹ thuật lập trình - Chương 2: Các yếu tố cơ bản của C và C++, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
al;
};
struct Signal { 
SignalType type;
SignalValue value;
};
void main() {
SignalValue B,W;
B.byte = 0x01;
W.word = 0x0101;
unsigned char b = W.byte; // OK, the lower byte
float f = W.real; // meaningless
Signal DI1 = {BINARY_8, 0x11};
Signal AI1 = {ANALOG_1,{0}};
Signal AI2;
AI2.type = ANALOG_2;
AI2.value.lreal = 145.67;
}
52
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
Tóm lược về hợp nhất
ƒ Hợp nhất (union) là một tập hợp (không có cấu trúc chặt chẽ) 
chứa các biến sử dụng chung ô nhớ, ở mỗi ngữ cảnh chỉ sử dụng
một biến riêng biệt
ƒ Union thường ₫ược sử dụng khi dữ liệu ₫ầu vào có thể có kiểu
khác nhau
ƒ Các thành viên của một union không liên quan ₫ến nhau, không
cùng nhau tạo thành một thực thể thống nhất
ƒ Kích cỡ của union bằng kích cỡ của biến lớn nhất
ƒ Khai báo kiểu union tương tự như khai báo struct, nhưng ý 
nghĩa khác hẳn
ƒ Truy nhập biến thành viên cũng tương tự như struct, có thể qua 
biến trực tiếp hoặc qua biến con trỏ.
ƒ Union có thể chứa struct, struct có thể chứa union, union có thể
chứa mảng, các phần tử của mảng có thể là union. 
53
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
2.5 Điều khiển CT: phân nhánh
ƒ Các kiểu phân nhánh
– if .. else: Phân nhánh lựa chọn một hoặc hai trường hợp
– switch .. case: Phân nhánh lựa chọn nhiều trường hợp
– break: Lệnh nhảy kết thúc (sớm) một phạm vi
– return: Lệnh nhảy và kết thúc (sớm) một hàm
– goto: Lệnh nhảy tới một nhãn (không nên dùng!)
54
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
2.5.1 Cấu trúc if .. else
ƒ Lựa chọn một trường hợp: sử dụng if
if (npoints >= 60) 
cout << "Passed";
if (npoints >= 80 && npoints <= 90) {
grade = ‘A’;
cout << grade;
}
ƒ Phân nhánh hai trường hợp: sử dụng if .. else
if (npoints >= 90) 
cout << ‘A’;
else if (npoints >= 80)
cout << ‘B’;
else if (npoints >= 70)
cout << ‘C’;
else if (npoints >= 60)
cout << ‘D’;
else
cout << ‘F’;
55
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
Ví dụ: Hàm max()
int max1(int a, int b) {
int c;
if (a > b)
c = a;
else
c = b;
return c;
}
int max2(int a, int b) {
int c = a;
if (a < b)
c = b;
return c;
}
int max3(int a, int b) {
if (a < b)
a = b;
return a;
}
int max4(int a, int b) {
if (a > b)
return a;
else
return b;
}
int max5(int a, int b) {
if (a > b)
return a;
return b;
}
int max6(int a, int b) {
return (a > b)? a: b;
}
56
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
2.5.2 Cấu trúc switch .. case
Signal input;
int i = 0;
while (i++ < 8) {
input = readInput(i); // read from input module i
switch (input.type) {
case BINARY_8:
cout << input.value.byte; break;
case BINARY_16:
cout << input.value.word; break;
case ANALOG_1:
cout << input.value.real; break;
case ANALOG_2:
cout << input.value.lreal; break;
default:
cout << "Unknown signal type";
}
}
57
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
2.6 Điều khiển CT: vòng lặp
ƒ Các kiểu vòng lặp trong C/C++
– while (condition) { }
– do { } while (condition)
– for (init;condition;post_action) { }
ƒ Vòng lặp có thể thực hiện với if..else + goto, song 
không bao giờ nên như vậy
ƒ Ứng dụng vòng lặp chủ yếu trong làm việc với mảng
và các cấu trúc dữ liệu tổng quát khác => truy nhập
qua biến mảng + chỉ số, qua con trỏ hoặc qua 
iterator (sẽ ₫ề cập sau này)
58
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
2.6.1 Cấu trúc while..
#include 
void main() {
char input[32];
cout << "\nEnter your full name:";
cin.getline(input,31);
short nLetters=0, nSpaces=0;
short i=0;
while (input[i] != 0) {
if (input[i] == ' ')
++nSpaces;
else
++nLetters;
++i;
}
cout << "\nYour name has " << nLetters << " letters";
cout << "\nYou have " << nSpaces - 1 << " middle name";
cin >> i;
}
59
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
Cấu trúc while: Biểu thức ₫iều kiện
#include 
void main() {
char input[32], family_name[16]={0};
cout << "\nEnter your full name:";
cin.getline(input,31);
short i=0;
while (input[i] != 0 && input[i] != ' ') {
family_name[i]= input[i];
++i;
}
cout << "\nYour family name is " << family_name;
cin >> i;
}
) {
if (input[i] == ' ') break;
family_name[i]= input[i];
++i;
}
60
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
2.6.2 Cấu trúc do while...
#include 
void main() {
char input[32], family_name[16]={0};
short i;
do {
cout << "\nEnter your full name:";
cin.getline(input,31);
i = 0;
while (input[i] != 0 && input[i] != ' ') {
family_name[i]= input[i];
++i;
}
cout << "\nYour family name is " << family_name;
cout << "\nDo you want to continue? (Y/N):“;
cin >> i;
} while (i == ‘Y’ || i == ‘N’) 
}
61
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
2.6.3 Cấu trúc for ..
short i =0;
while (input[i]!= 0)
{
if (input[i]==' ')
++nSpaces;
else
++nLetters;
++i;
}
for (short i=0;input[i]!=0; ++i)
{
if (input[i] == ' ')
++nSpaces;
else
++nLetters;
}
short i=0;
for (;input[i]!=0; ++i)
{
if (input[i] == ' ')
++nSpaces;
else
++nLetters;
}
short i=0;
for (;input[i]!= 0;)
{
if (input[i]==' ')
++nSpaces;
else
++nLetters;
++i;
}
62
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
Tóm lược các cấu trúc vòng lặp
ƒ Các cấu trúc vòng lặp while và for tương tự như
nhau, thực ra ta chỉ cần một trong hai
ƒ Cấu trúc do..while tuy có ý nghĩa khác một chút, 
song cũng có thể chuyển về cấu trúc while hoặc for
ƒ Các cấu trúc có thể lồng vào nhau tương ₫ối tự do, 
tuy nhiên tránh lồng quá nhiều ₫ể còn dễ bao quát, 
khi cần có thể phân hoạch lại thành hàm
ƒ Điều khiển vòng lặp có thể nằm trực tiếp trên ₫iều
kiện, hoặc có thể kết hợp bên trong vòng lặp với các
lệnh if..else và break, return
ƒ Thận trọng trong kiểm tra ₫iều kiện vòng lặp (chỉ số
mảng, con trỏ, ...)
63
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
Luyện tập ở nhà theo sườn bài giảng
ƒ Tập tạo dự án mới với Visual C++
ƒ Tập viết một chương trình bằng C (₫ặt ₫uôi *.c):
— tập khai báo các loại biến, sử dụng các kiểu dữ liệu cơ bản
— tập sử dụng các phép toán ₫ã học
— sử dụng toán tử sizeof ₫ể tìm kích cỡ các kiểu dữ liệu, in kết
quả ra màn hình
— biên dịch, chạy thử và tìm lỗi
— tập sử dụng công cụ debugger
— ₫ổi ₫uôi file thành *.cpp và thử lại
ƒ Tập viết một chương trình bằng C/C++ khác ₫ể tìm
hiểu:
— Cách khai báo và sử dụng kiểu hằng, kiểu liệt kê, kiểu con 
trỏ, kiểu mảng, kiểu tham chiếu (C++), kiểu cấu trúc
— bản chất của con trỏ và quan hệ với kiểu mảng
64
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
Bài tập về nhà cho chương 2
1. Viết một chương trình bằng C, thực hiện lần lượt các chức năng
sau ₫ây:
— yêu cầu người sử dụng nhập một số nguyên lớn hơn 0
— phân tích số nguyên ₫ó thành hàng ₫ơn vị, hàng chục, hàm
trăm, v.v... và in kết quả lần lượt ra màn hình.
— hỏi người sử dụng có yêu cầu tiếp tục hay không, nếu có yêu
cầu thì lặp lại
2. Chuyển chương trình thành C++ và ₫ơn giản hóa các câu lệnh
vào-ra bằng cách sử dụng thư viện 
3. Dựa vào kiểu Date trong bài giảng, viết một chương trình cho
phép người sử dụng nhập số liệu cho một ngày, và sau ₫ó:
a) Kiểm tra các số liệu ngày, tháng và năm có hợp lệ hay không
b) Kiểm tra xem ngày ₫ó có phải là một ngày lễ trong năm hay 
không
c) Xác ₫ịnh ngày tiếp theo là ngày nào
d) In các kết quả thông báo ra màn hình
65
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
Bài tập lớn 1 (tuần 1-6: Lập trình cấu trúc)
1. Xây dựng một chương trình có chức năng tạo tín hiệu theo yêu
cầu người sử dụng về dạng tín hiệu (bậc thang, tín hiệu dốc, 
xung vuông, hình sin hoặc ồn trắng), tham số của tín hiệu (tùy
theo dạng tín hiệu chọn như biên ₫ộ, tần số, ₫ộ dốc, ₫ộ rộng
xung,...). Yêu cầu người sử dụng nhập khoảng thời gian cần tạo
giá trị tín hiệu cùng thời gian trích mẫu, sau ₫ó ghi các giá trị
gián ₫oạn của tín hiệu ra một file với tên do người sử dụng
nhập.
Gợi ý: sử dụng thư viện cho việc thao tác với file.
2. Xây dựng một chương trình ₫ể tính tích phân của tín hiệu (hay 
tính diện tích dưới ₫ường cong) bằng phương pháp xấp xỉ hình
thang với các giá trị gián ₫oạn của tín hiệu ₫ưa vào từ file tạo
ra theo chương trình 1.
3. Suy nghĩ phân hoạch chương trình 1 và 2 thành các hàm ₫ưa
vào thư viện. Viết lại các chương trình ₫ó theo thiết kế mới.
66
©
2
0
0
4
,
H
O
À
N
G
M
I
N
H
S
Ơ
N
Chương 2: Các yếu tố cơ bản của C và C++
Chỉ dẫn về thực hiện bài tập lớn
ƒ Bài tập lớn có thể thực hiện riêng hoặc theo nhóm tự chọn (tối
₫a 3 người/nhóm)
ƒ Bài tập lớn 1 nộp vào cuối tuần 7, bao gồm:
— Mô tả theo mẫu trên ít nhất 1 trang giấy về các tư tưởng
phân tích, thiết kế và thực thi.
— Toàn bộ thư mục dự án (file dự án, mã nguồn và chương
trình chạy) cần nén lại dưới dạng *.zip và gửi về ₫ịa chỉ
email của giáo viên: luuhongviet@gmail.com. Qui ₫ịnh tên
file zip: bắt ₫ầu bằng “P1_”, tiếp theo là tên ₫ầy ₫ủ của
người ₫ại diện nhóm, ví dụ “P1_NguyenVanA.zip”. Lưu ý 
trước khi nén cần xóa tất cả các file phụ trong thư mục
“Debug”, chỉ trừ file *.exe.
ƒ Hoàn thành bài tập lớn không những là ₫iều kiện dự thi học kỳ, 
mà ₫iểm bài tập lớn còn ₫ược tính vào ₫iểm cuối học kỳ theo một
hệ số thích hợp

File đính kèm:

  • pdfC2_Basics_of_C_and_Cpp.pdf