Bài giảng Lập trình C/C++ - Chương 2: Cấu trúc và các thành phần chương trình C - Lê Thành Sách

Nội dung

n Chương trình C đơn giản

n Phong cách lập trình

n Rèn luyện việc xuất ra màn hình

n Đọc dữ liệu từ bàn phím

n Xử lý đơn giản

pdf 36 trang phuongnguyen 5540
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình C/C++ - Chương 2: Cấu trúc và các thành phần chương trình C - Lê Thành Sách", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình C/C++ - Chương 2: Cấu trúc và các thành phần chương trình C - Lê Thành Sách

Bài giảng Lập trình C/C++ - Chương 2: Cấu trúc và các thành phần chương trình C - Lê Thành Sách
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
1
Chương 02
CẤU TRÚC VÀ CÁC THÀNH PHẦN 
CHƯƠNG TRÌNH C
Lê Thành Sách
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
2
Nội dung
n Chương trình C đơn giản
n Phong cách lập trình
n Rèn luyện việc xuất ra màn hình
n Đọc dữ liệu từ bàn phím
n Xử lý đơn giản
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
3
Chương trình C đơn giản
#include 
#include 
/*
This is a simple program.
The objective of this program is to print the following information on different 
lines
1. University's name
2. Course's name
*/
void main(){
// "printf" is a function, which is defined in 
printf("Ho Chi Minh city University of Technology\n"); 
printf("Programming Fundamentals");
// "pause" causes the program pause before executing the next statement.
// “system" is a function, which is defined in 
system("pause"); 
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
4
Chương trình C đơn giản
Các thành phần
n Khai báo thư viện sẽ
được sử dụng
n Chỉ thị #include:
n Hàm main có sử dụng (gọi) 
đến hai hàm printf và
system.
n Hàm printf được khai báo
trong thư viện stdio, cụ thể
là tập tin 
n Hàm system được khai
báo trong thư viện stdlib, 
cụ thể là tập tin 
n Do đó, cần dùng chỉ thị
#include với hai thư viện
nói trên để khi biên dịch
không báo lỗi
#include 
#include 
void main(){
printf("..."); 
printf("...");
system("pause"); 
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
5
Chương trình C đơn giản
Các thành phần
n Lệnh được thực thi đầu tiên
n Lệnh đầu tiên ngay sau hàm main()
n Mỗi chương trình viết bằng C phải có một hàm có tên main
void main(){
}
Dấu “{“ đánh dấu bắt đầu phần thân hàm main
Dấu “}“ đánh dấu điểm kết thúc phần thân hàm main
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
6
Chương trình C đơn giản
Các thành phần
n Lệnh được thực thi đầu tiên
n Lệnh đầu tiên ngay sau hàm main()
n Mỗi chương trình viết bằng C phải có một hàm có tên main
int main(){
}
Nơi này xác định kiểu trả về của hàm (main)
int: Hàm main trả về mã trạng thái: 0 = không có lỗi; 1 = có lỗi
EXIT_SUCCESS = 0; EXIT_FAILURE = 1
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
7
Chương trình C đơn giản
Các thành phần
n Chú thích
n Chú thích là văn bản không
cần có văn phạm của C.
n Chú thích được chèn vào
nhằm giải thích, ghi chú, 
đánh dấu, hay lập tài liệu
cho phần tử của C.
n Hai dạng chú thích:
n Chú thích gồm nhiều
dòng, nằm giữa cặp
đánh dấu “/*” và “*/”
n Chú thích đến cuối
dòng, đánh dấu bởi “//”
#include 
#include 
/*
The objective of ...
...
This is ...
*/
void main(){
printf("..."); // "printf" is ...
printf("...");
system("pause"); // "pause" causes ...
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
8
Phong cách lập trình
n Chương trình cũng như một bài văn trong ngôn ngữ tự
nhiên.
n Do đó, cần được viết sao cho dễ đọc, dễ hiểu, và dễ phát
hiện các sai sót.
n Trong các dự án lớn, phong cách lập trình là rất quan trọng
nhằm
n Dễ dàng phối hợp giữa các thành viên phát triển
n Dễ dàng phát hiện sai sót
n Dễ dàng bảo trì và nâng cấp
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
9
Phong cách lập trình
n Danh sách các chủ đề có thể xem chi tiết ở những trang
sau
n Sinh viên phải rèn luyện phong cách trong suốt quá trình
học, thông qua thực hành.
n Tất cả các bài nộp cho giảng viên xem phải tuân thủ hầu
hết các gợi ý.
n Xem thêm:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
10
Phong cách lập trình
Các gợi ý
n Về quy cách đặt tên:
n Hàm
n Bắt đầu bởi động từ (verb), vì hàm là đơn vị xử lý (i.e., thực thi
hành động)
n Tên phải nêu bật tính năng của hàm
Ví dụ:
Nên dùng: check_for_errors()
Thay cho: error_checking() hay dump_data_to_file()
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
11
Phong cách lập trình
Các gợi ý
n Về quy cách đặt tên:
n Hàm
n Bắt đầu bởi động từ (verb), vì hàm là đơn vị xử lý (i.e., thực thi
hành động)
n Tên phải nêu bật tính năng của hàm
n Nên sử dụng “suffix” hay “prefix” sau trong các trường cụ thể
tăng ngữ nghĩa
n Prefixes
n is kiểm tra xem một điều kiện nào đó có thỏa hay 
không
n get lấy giá trị
n set gán giá trị
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
12
Phong cách lập trình
Các gợi ý
n Về quy cách đặt tên:
n Biến
n Thường bắt đầu bởi danh từ (noun)
n Tất cả các ký tự trong tên đều là chữ thường
n Nối các từ với nhau bởi dấu gạch dưới, “_”
n Đưa đơn vị vào tên nếu có thể
Ví dụ:
unit32 timeout_msec;
Time time_of_error
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
13
Phong cách lập trình
Các gợi ý
n Về quy cách đặt tên:
n Biến
n Thường bắt đầu bởi danh từ (noun)
n Tất cả các ký tự trong tên đều là chữ thường
n Nối các từ với nhau bởi dấu gạch dưới, “_”
n Đưa đơn vị vào tên nếu có thể
n Biến kiểu pointer
n Đặt dấu * liền sát tên biến
n Suffix với “ptr” nếu có thể
Ví dụ:
char *name;
Student *student_ptr
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
14
Phong cách lập trình
Các gợi ý
n Về quy cách đặt tên:
n Biến toàn cục
n Prefix với “g_”, để dể phân biệt trong code
Ví dụ:
Logger g_logger;
Logger g_logger_ptr;
n Hằng toàn cục
n Sử dụng toàn bộ chữ hoa
Ví dụ:
const int A_GLOBAL_CONSTANT = 5;
n Xem chi tiết trong trang chỉ dẫn trước, và luyện tập đến
cuối chương trình học
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
15
Dữ liệu và kết xuất trong C
n Kiểu số nguyên
n Tên kiểu “int”, sẽ nói sâu
hơn trong chương sau.
n Giá trị ghi ra trong code 
(literal constant):
n Ví dụ: 15, -20, 40, etc
n Sử dụng đặc tả “%d” hoặc
“%i” trong printf như ví dụ
bên
n Câu hỏi: luật in số
nguyên ra màn hình?
#include 
#include 
void main(){
printf("%d\n", 123); 
printf("%5d\n", 123); 
printf("%05d\n", 123); 
system("pause");
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
16
Dữ liệu và kết xuất trong C
#include 
#include 
void main(){
printf("%d\n", 123); 
printf("%5d\n", 123); 
printf("%05d\n", 123); 
system("pause");
}
Rèn luyện phong cách lập trình
Sử dụng TAB để canh lề code
Nên!
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
17
Dữ liệu và kết xuất trong C
Rèn luyện phong cách lập trình
#include 
#include 
void main(){
printf("%d\n", 123); 
printf("%5d\n", 123); 
printf("%05d\n", 123); 
system("pause");
}
#include 
#include 
void main(){
printf("%d\n", 123); 
printf("%5d\n", 123); 
printf("%05d\n", 123); 
system("pause");
}
Không nên!
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
18
Dữ liệu và kết xuất trong C
n Ký tự điều khiển
n \n (newline)
n \t (tab)
n \v (vertical tab)
n \f (new page)
n \b (backspace)
n \r (carriage return)
n \n (newline)
#include 
#include 
void main(){
printf("%d\n", 123); 
printf("%5d\n", 123); 
printf("%05d\n", 123); 
system("pause");
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
19
Dữ liệu và kết xuất trong C
n Kiểu số nguyên
n In nhiều số dùng chỉ một
hàm printf
#include 
#include 
void main(){
printf("|%5d|\t%5d|\t%5d|\n", 123, 456, 7890); 
printf("|%5d|\t%5d|\t%5d|\n", 12, 345, 6789); 
system("pause");
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
20
Dữ liệu và kết xuất trong C
n Kiểu số thực chấm động
n Độ chính xác đơn: tên kiểu
“float”
n Độ chính xác kép: tên kiểu
“double”
n Sẽ nói sâu hơn trong
chương sau.
n Giá trị ghi ra trong code 
(literal constant):
n Ví dụ: 
float: 15.5f
double: 15.5
#include 
#include 
void main(){
printf("%f\n", 123.456); 
printf("%10.2f\n", 123.456); 
printf("%010.2f\n", 123.456); 
system("pause");
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
21
Dữ liệu và kết xuất trong C
n Kiểu số thực chấm động
n Sử dụng đặc tả “%f” trong
printf như ví dụ bên
n Câu hỏi: Cách nào để
chỉ in ra 3 ký tự sau
chấm “.” 
n Câu hỏi: Cách nào để in 
ra số thực trong 7 ký tự
(kể cả dấu chấm)
#include 
#include 
void main(){
printf("%f\n", 123.456); 
printf("%10.2f\n", 123.456); 
printf("%010.2f\n", 123.456); 
system("pause");
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
22
Dữ liệu và kết xuất trong C
n Kiểu ký tự
n Tên kiểu: “char”, sẽ nói sâu
hơn trong chương sau.
n Giá trị ghi ra trong code 
(literal constant):
n Ví dụ: ‘A’, ‘a’, etc.
n Sử dụng đặc tả “%c” trong
printf như ví dụ bên
n Câu hỏi: “%3c” trong
hình bên nghĩa là gì?
n Câu hỏi: “%03c” trong
hình bên nghĩa là gì?
#include 
#include 
void main(){
printf("%c\n", 'A'); 
printf("%3c\n", 'A'); 
printf("%03c\n", 'A'); 
system("pause");
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
23
Dữ liệu và kết xuất trong C
n Kiểu chuỗi (string)
n C không hổ trợ “string” trực
tiếp. Thay vào đó “string” 
được hiện thực bởi kiểu
mảng (array), nói sâu hơn
trong chương về array
n Giá trị ghi ra trong code 
(literal constant):
n Ví dụ: 
“Programming 
Fundamentals”,
“Computer”, etc
n Sử dụng đặc tả “%s” trong
printf như ví dụ bên
#include 
#include 
void main(){
printf("%s\n", "01234567890123456789"); 
printf("%s\n", "University"); 
printf("%20s\n", "University"); 
printf("%020s\n", "University"); 
system("pause");
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
24
Dữ liệu và kết xuất trong C
n Tổng kết hàm printf
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
25
Dữ liệu và kết xuất trong C
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
26
Dữ liệu và kết xuất trong C
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
27
Nhập liệu trong C
n Nguyên tắc
n Trong C, khi đọc dữ liệu từ bàn phím, giá trị đọc được phải lưu vào
vùng nhớ có kiểu tương thích với kiểu ghi trong hàm đọc
Sinh viên tạm thời chấp nhận hai khái niệm sau:
1. Vùng nhớ được đặt tên (còn gọi là biến)
Ví dụ:
int x;
2. Cách lấy địa chỉ của vùng nhớ
Ví dụ:
&x 
(sử dụng dấu & trước tên của vùng nhớ)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
28
Nhập liệu trong C
n Hàm thư viện
n scanf
n Cú pháp:
scanf(_________________,_______________)
Phần đặc tả những kiểu 
mong muốn đọc
Phần liệt kê địa chỉ của các vùng nhớ tương 
ứng với những kiểu mong muốn.
Dùng dấu phẩy (,) để phân cách các địa chỉ 
nếu có nhiều hơn 1
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
29
Nhập liệu trong C
n Kiểu số nguyên
n Sử dụng đặc tả “%d” trong scanf như ví dụ sau.
#include 
#include 
void main(){
int x;
printf("%s", "Please enter x: ");
scanf("%d", &x);
printf("%s %d\n", "x =", x);
system("pause");
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
30
Nhập liệu trong C
n Kiểu số nguyên
n Sử dụng đặc tả “%d” trong scanf như ví dụ sau.
#include 
#include 
void main(){
int x;
printf("%s", "Please enter x: ");
scanf("%d", &x);
printf("%s %d\n", "x =", x);
system("pause");
}
Cửa sổ ban đầu:
(chương trình chờ người dùng nhập vào một số nguyên)
Cửa sổ sau khi nhập giá trị 123 và nhấn phím ENTER:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
31
Nhập liệu trong C
n Chương trình đọc hai số nguyên
Cửa sổ ban đầu:
Sau khi nhập giá trị 123 và nhấn phím ENTER:
Sau khi nhập giá trị 456 và nhấn phím ENTER:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
32
Nhập liệu trong C
n Chương trình đọc hai số nguyên
#include 
#include 
void main(){
int x;
int y;
printf("%s", "Please enter x: "); 
scanf("%d", &x);
printf("%s", "Please enter y: "); 
scanf("%d", &y);
printf("%s %d\n", "x =", x);
printf("%s %d\n", "y =", y);
system("pause");
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
33
Nhập liệu trong C
n Chương trình ngắn hơn nhưng có cùng tính năng
n Hai vùng nhớ được khai báo trên cùng dòng
n Hàm scanf đọc hai giá trị x và y trong cùng 1 lần gọi
n Hàm printf in hai giá trị x và y trong cùng 1 lần gọi
n Sử dụng các ký tự điều khiển \n đúng chổ
#include 
#include 
void main(){
int x, y;
printf("%s", "Please enter x and y: "); 
scanf("%d %d", &x, &y);
printf("x = %d\ny = %d\n", x, y);
system("pause");
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
34
Nhập liệu trong C
n Bảng các đặc tả đọc dữ liệu theo kiểu dữ liệu
Kiểu Đặc tả đọc dữ liệu trong hàm scanf
int %d
%u (số không dấu, unsigned int)
float %f, %e, %E, %g, %G
double %lf, %le, %lE, %lg, %lG
char %c
string %s
Xem chi tiết: 
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
35
Xử lý đơn giản
n Yêu cầu của chương trình:
n Đọc hai số x và y là tọa độ trong không gian 2D.
n Tính và in ra khoảng cách từ tâm hệ trục tọa độ đến điểm (x,y)
#include 
#include 
#include 
void main(){
float x, y;
printf("%s", "Please enter coordinates x and y: "); 
scanf("%f%f", &x, &y);
printf("(x,y) = (%5.2f,%5.2f)\n", x, y);
printf("Distance to the origin = %5.2f\n", sqrt(x*x + y*y));
system("pause");
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trường Đại Học Bách Khoa
Trung Tâm Kỹ Thuật Điện Toán
© 2016
Lập trình C/C++
36
Xử lý đơn giản
n Dùng thư viện toán học, cần chèn tập tin 
n sqrt(.): tính căn bậc hai của giá trị được truyền vào và trả
về kết quả
#include 
#include 
#include 
void main(){
float x, y;
printf("%s", "Please enter coordinates x and y: "); 
scanf("%f%f", &x, &y);
printf("(x,y) = (%5.2f,%5.2f)\n", x, y);
printf("Distance to the origin = %5.2f\n", sqrt(x*x + y*y));
system("pause");
}
CuuDuongThanCong.com https://fb.com/tailieudientucntt

File đính kèm:

  • pdfbai_giang_lap_trinh_cc_chuong_2_cau_truc_va_cac_thanh_phan_c.pdf