KỸ THUẬT LẬP TRÌNH C
Chương 1: Tổng quan
04/2010
Giới thiệu chung
•
•
•
•
Ngôn ngữ C ra ñời năm 1972
Phát triển thành C++ vào năm 1983
Là ngôn ngữ ñược sử dụng rất phổ biến
Có nhiều trình biên dịch C khác nhau
– Turbo C, Borland C
– ANSI C, IBM C, ISO C
– GCC
– …v.v.
Kỹ thuật lập trình C - Tổng quan
2
04/2010
IDE Borland C++ 5.02
• Chạy file Setup.exe trong thư mục Bc502
• Một số phím soạn thảo
Phím
Chức năng
Enter
Xuống dòng
Insert
Chuyển đổi chế ñộ chèn/đè
Delete
Xóa kí tự ngay sau vị trí con trỏ
Back space
Ctrl + Y
Ctrl + Q + Y
Xóa kí tự ngay trước vị trí con trỏ
Xóa dòng kí tự chứa con trỏ
Xóa các kí tự từ vị trí con trỏ ñến cuối
dòng
Kỹ thuật lập trình C - Tổng quan
3
04/2010
IDE Borland C++ 5.02
Một số phím soạn thảo (tiếp theo)
Phím
Chức năng
Ctrl + K + C
Chép khối tới vị trí mới của con trỏ
Ctrl + K + V
Chuyển khối tới vị trí mới của con trỏ
Ctrl + K + Y
Xóa cả khối
Ctrl + K + W
Ghi một khối vào một tệp trên đĩa
Ctrl + K + R
Đọc một khối từ một tệp trên đĩa
Ctrl + Q + B
Dịch chuyển con trỏ về ñầu khối
Ctrl + Q + K
Dịch chuyển con trỏ về cuối khối
Ctrl + Q + F
Tìm kiếm một cụm từ
Ctrl + Q + A
Tìm kiếm cụm từ và sau ñó thay thế bằng cụm từ khác
Ctrl + Q + L
Lặp lại Ctrl + Q + F hoặc Ctrl + Q + A cuối cùng
Kỹ thuật lập trình C - Tổng quan
4
04/2010
Chương trình “Hello world”
chỉ thị tiền xử lý
Hàm chính của chương trình
Dấu bắt đầu và kết thúc của
định nghĩa hàm
Kết quả thu ñược khi biên dịch
và chạy chương trình trên
Kỹ thuật lập trình C - Tổng quan
5
04/2010
Từ khóa (Key word)
• Là các từ dành riêng của ngôn ngữ C
• Từ khóa phải được sử dụng đúng cú pháp
• Một số từ khóa thông dụng
auto
do
goto
short
union
break
double
if
sizeof
unsigned
case
else
int
static
void
char
extern
long
struct
volatile
continue
float
register
switch
while
default
for
return
typedef
Trong IDE
Borland C++ 5.02
từ khóa in đậm
và có màu blue
Kỹ thuật lập trình C - Tổng quan
6
04/2010
Tên (định danh)
•
•
•
•
Dùng để ñịnh danh các thành phần của chương trình
Tên biến, tên hàm, tên hằng, file, cấu trúc…
Gồm chữ, số, dấu gạch nối “_”
Độ dài tối đa 32
•
Lưu ý:
– không đuợc chứa kí tự trống (space),
– không được bắt đầu bằng một chữ số,
– không được trùng với từ khóa
•
•
Nên đặt tên một cách gợi nhớ, có ý nghĩa.
Tên chuẩn: một số tên có sẵn của trình biên dịch.
Vd:
•
x, hoten, a1, number_of_var, delta, TEN, …
C là ngôn ngữ phân biệt viết hoa, viết thường
tự
chính xác đến từng ký
Kỹ thuật lập trình C - Tổng quan
7
04/2010
Hằng, Biến, Biểu thức
• Hằng:
– Là ñại lượng có giá trị không thay ñổi được
– Ví dụ:
• 124
• ‘D’
• “Lap trinh”
Là một hằng số
Là một hằng ký tự
Là một hằng chuỗi ký tự
• Biến
– Là ñại lượng có thể thay ñổi được giá trị (gán giá trị mới)
• Biểu thức
– Là công thức tính toán để có 1 giá trị theo quy tắc toán học
– Gồm các toán hạng và các phép toán (toán tử)
• Toán hạng: hằng, biến, hàm hoặc biểu thức khác.
• Phép toán: Số học, luận lý, gán, ñiều kiện, lấy địa chỉ, tăng giảm
Kỹ thuật lập trình C - Tổng quan
8
04/2010
Các phép toán C hỗ trợ
•
•
•
•
•
•
Số học:
+ , - , * , / , %
Luận lý:
==, !=, >, <, >=, <=, &&, ||,
Gán giá trị:
=
Lấy kích cỡ theo số byte: sizeof(đốitượng)
Điều kiện:
ĐK ? E1 : E2
Lấy địa chỉ:
&(biến)
• Tăng giảm:
x++, ++x, x--, --x
tong+=i;
tich*=i;
/=, %=, -=, &=, |=,
!
^=
Kỹ thuật lập trình C - Tổng quan
9
04/2010
Câu lệnh, Chú thích
• Câu lệnh: Là một chỉ thị yêu cầu máy tính thực thi một tác vụ
nào đó. Một câu lệnh phải kết thúc bởi một dấu chấm phẩy “;”
• Chú thích:
– Trên 1 dòng: // Chú thích trên một dòng
– Trên nhiều dòng: /*
Chú thích trên nhiều dòng.
*/
• Các chỉ thị tiền biên dịch:
#define
#undefine
#include
#if
#elif
#else
#ifdef
#else
#endif
#ifndef
#else
#endif
#error
Kỹ thuật lập trình C - Tổng quan
#endif
10
04/2010
Các kiểu dữ liệu chuẩn
Kiểu số
Tên kiểu
Độ lớn
Phạm vi
char
1 byte
-128
unsigned char
1 byte
0
int
2 byte
-32768
unsigned int
2 byte
0
65535
short
2 byte
0
65535
long
4 byte
- 231
231 - 1
unsigned long
4 byte
- 231
232 - 1
float
4 byte
3.4e-38
3.4e38
double
8 byte
1.7e-308
1.7e308
long double
10 byte
3.4e-4932
1.1e4932
Kỹ thuật lập trình C - Tổng quan
127
255
32767
11
04/2010
Các kiểu dữ liệu chuẩn
Kiểu ký tự
Tên kiểu
Độ lớn
Phạm vi
char
1 byte
Gồm 256 ký tự có mã từ 0
255
( xem Bảng mã ASCII )
Ví dụ:
–
–
Ký tự ’A’ có mã 65
Ký tự ’0’ có mã 48
Các ký tự ñặc biệt:
’\0’
’\n’
’\t’
ký tự Null (có mã = 0)
ký tự xuống dòng (new line)
ký tự Tab
Kỹ thuật lập trình C - Tổng quan
12
04/2010
Ép kiểu
Cú pháp:
(kiểu_mới) biểu thức hoặc kiểu_mới (biểu thức)
Ví dụ:
Kỹ thuật lập trình C - Tổng quan
13
04/2010
Khai báo hằng
Cú pháp
#define TÊNHẰNG
hoặc
const kiểudữliệu
giátrị
TÊNHẰNG = giátrị;
Ví dụ
#define MAX 100
const int SOPT = 100;
Lưu ý: hằng phải được khai báo trước khi sử dụng
Kỹ thuật lập trình C - Tổng quan
14
04/2010
Khai báo biến
Kết thúc bằng dấu chấm phẩy
Cú pháp
kiểudữliệu
kiểudữliệu
kiểudữliệu
TÊNBIẾN;
Biến1, Biến2,... ;
TÊNBIẾN = giátrịbanđầu;
hoặc
hoặc
Ví dụ
int sole;
float tbc, tongam;
char Enter = ’\n’;
Lưu ý: Biến có thể khai báo bất kỳ ñâu trong chương
trình miễn làn trước khi sử dụng.
Kỹ thuật lập trình C - Tổng quan
15
04/2010
Cấu trúc chương trình C
Chỉ thị tiền biên dịch
Khai báo các hằng, biến
Khai báo các hàm tự XD
Thân chương trình chính
Cài đặt các hàm đã khai
báo ở trên
Kỹ thuật lập trình C - Tổng quan
16
04/2010
Phép gán giá trị
Cú pháp
TênBiến = Biểu thức giá trị ;
Ví dụ:
Tại sao sai ?
int x, y, z;
x = 10;
10 = x;
x = 10 + y;
10 + y = x;
z = x + y;
x + y = z;
//sai
//sai
//sai
Kỹ thuật lập trình C - Tổng quan
17
04/2010
Các hàm toán học thông dụng
Chỉ thị tiền biên dịch:
#include <math.h>
sqrt(x)
exp(x)
log(x)
abs(x)
fabs(x)
pow(x, y)
ceil(x)
floor(x)
lấy căn bậc 2
lấy ex
lấy logex
lấy |x| (kết quả là số nguyên)
lấy |x| (kết quả là số thực)
lấy xy
lấy số nguyên gần x nhất
lấy số nguyên lớn nhất ≤ x
Các biểu thức phức tạp phải sử dụng biến đổi toán học ñể có ñược
biểu diễn tương ứng trong C
Kỹ thuật lập trình C - Tổng quan
18
04/2010
Một số quy tắc viết chương trình
• Đặt tên biến, hằng, hàm,… một cách gợi nhớ
• Khi sử dụng biến, hằng cần kiểm tra lại xem biến hằng đó ñã
được khai báo trước đó hay chưa ?
• C là ngôn ngữ phân biệt hoa/thường
ký tự khi viết
phải kiểm tra kỹ từng
• Loại bỏ các chỉ thị #include <file *.h> không cần thiết (để lại
sẽ làm chậm quá trình biên dịch và tăng kích thước file *.exe
sau biên dịch)
• Viết chương trình theo cấu trúc khối (phân cấp thụt đầu dòng)
• Chương trình viết xong chưa thể biết được đúng hay sai
phải chạy thử với các bộ số liệu khác nhau (nên test thử với
các bộ số liệu đặc biệt)
Kỹ thuật lập trình C - Tổng quan
19
04/2010
Kỹ thuật lập trình C - Tổng quan
20