Xem mẫu
- KỸ THUẬT LẬP TRÌNH KIẾN THỨC CƠ BẢN VỀ NGÔN NGỮ LẬP TRÌNH C
NGÔN NGỮ LẬP TRÌNH C Giới thiệu ngôn ngữ C
Cấu trúc cơ bản của một chương trình C. Ví dụ một
chương trình C đơn giản
TÀI LIỆU THAM KHẢO Các khái niệm cơ bản: Biến, hằng, Kiểu dữ liệu, Toán tử
Phạm Văn Ất, Kỹ thuật lập trình C cơ sở và nâng cao, Các lệnh vào ra cơ bản
NXB KH&KT, 1999.
Cấu trúc điều khiển
Quách Tuấn Ngọc, Ngôn ngữ lập trình C, NXBGD, 1998.
0 1
Giới thiệu về ngôn ngữ lập trình C Giới thiệu về ngôn ngữ lập trình C
Ngôn ngữ C Đặc điểm
• C là ngôn ngữ mạnh và mềm dẻo: sử dụng lập trình hệ điều hành, các
• Do Dennis Ritchie phát triển 1972 tại phòng thí nghiệm Bell
giải thuật phức tạp, chương trình soạn thảo, các trình điều khiển, đồ
Telephone – AT&T-USA trên cơ sở 2 ngôn ngữ lập trình trước
hoạ...
đó: BCPL và B
• Ngôn ngữ cho người lập trình chuyên nghiệp: nhiều nhà tin học sử
• Được sử dụng để phát triển UNIX dụng, mang tính phổ biến
• Được sử dụng để viết các hệ điều hành • Khả năng độc lập về phần cứng (khả chuyển): chạy trên các máy tính
và hệ điều hành khác nhau.
• Đến năm 1978, C thực sự phát triển
• Ít từ khoá: Các từ khoá dùng riêng cho ngôn ngữ khi lập trình.
Chuẩn hoá • Ngôn ngữ lập trình cấu trúc
• Nhiều biến đổi nhỏ từ C ban đầu và không tương thích • C là ngôn ngữ bậc trung: có các tính năng ngôn ngữ bậc cao và ngôn
ngữ bậc thấp (xử lý bít, byte và địa chỉ ô nhớ).
• Chuẩn hoá ngôn ngữ trên cơ sở khả năng độc lập với phần
- C là ngôn ngữ cơ sở để phát triển lập trình hướng đối tượng (C++,
cứng.
Java,...).
• Chuẩn C ban hành 1989, được cập nhật năm 1999.
2 3
- Cấu trúc cơ bản của một chương trình C Ví dụ chương trình C đơn giản
#include /* 1. Các hàm thư viện */ 1
2
/* Fig. 2.1: fig02_01.c
A first program in C */
3 #include
#define /* 2. Định nghĩa hằng */ 4
5 /* function main begins program execution */
typedef /* 3. Định nghĩa kiểu dữ liệu */ 6
7
int main()
{
8 printf( "Welcome to C!\n" );
/* 4. Khai báo nguyên mẫu các hàm */ 9
10 return 0; /* indicate that program ended successfully */
function prototype 11
12 } /* end function main */
/* 5. Khai báo các biến toàn cục */ Comments: Giải thích
Welcome to C!
int main (void) /* 6. “Chương trình chính” */ Các ký tự nằm trong cặp /* */ là chú thích
{ Khai báo các biến; • Sử dụng để mô tả, giải thích trong chương trình
Tập lệnh; #include
} • Chỉ thị tiền xử lý: tải nội dung của một file thư viện vào chương
/* 7. “Các chương trình con”- các hàm */ trình
• cho phép thực hiện các thao tác input/output chuẩn.
4 5
Ví dụ chương trình C đơn giản Môi trường lập trình C
int main() Program is created in
• Phases of C Programs: Editor Disk
the editor and stored
Một chương trình C có thể có 1 hoặc một số function, on disk.
Preprocessor program
nhưng chỉ có duy nhất 1 hàm là main 1. Edit Preprocessor Disk processes the code.
Compiler creates
int có nghĩa là hàm main trả về một giá trị nguyên 2. Preprocess Compiler Disk object code and stores
it on disk.
Cặp “{ }” thể hiện một khối, đoạn chương trình 3. Compile Linker Linker links the object
Disk
code with the libraries
Phần thân của tất cả các hàm phải nằm trong cặp “{}” Primary Memory
4. Link Loader
Có thể sử dụng: void main(void) và không cần câu Loader puts program
lệnh return ở cuối hàm 5. Load Disk .
.
in memory.
.
.
.
.
Kết thúc lệnh bởi dấu ; 6. Execute Primary Memory
CPU takes each
CPU instruction and
executes it, possibly
storing new data
.
.
values as the program
6 7
.
.
.
.
executes.
- Các khái niệm cơ bản Từ khóa
Những từ trong ngôn ngữ được dành riêng cho một ý
Từ khóa
nghĩa xác định (tên kiểu dữ liệu, toán tử, câu lệnh)
Hằng • Không dùng từ khóa để đặt tên cho hằng, biến, hàm,…
Kiểu dữ liệu • Phân biệt chữ hoa và chữ thường
Biến Các từ khóa cơ bản trong ngôn ngữ C
Biểu thức
8 9
Kiểu dữ liệu trong C Hằng
Kiểu dữ liệu cơ sở Là đại lượng mà giá trị không đổi trong quá trình tính
• Kí tự (char, unsigned char) toán
• Số nguyên (int, unsigned int, long (int), unsigned long (int)) Hằng số: 100, 10L, 10U, 0x10,…
• Số thực, độ chính xác đơn (float)
Hằng kí tự: ‘A’, ‘a’,…
• Số thực, độ chính xác kép (double)
• Lưu ý: Kích thước và phạm vi biểu diễn của các kiểu dữ liệu Hằng xâu kí tự: “A”
Kiểu enum Lưu ý: phân biệt hằng kí tự và hằng xâu kí tự
Kiểu mảng (array) • Lưu trữ ‘A’ (1 byte) A
Kiểu cấu trúc (struct)
• Lưu trữ “A” (2 byte) A \0
KIểm tra kích thước của kiểu dữ liệu: dùng toán tử
sizeof(), ví dụ: sizeof(int),… Hằng biểu thức
10 11
- Biến Biến
1. /*Ví dụ chương trình C: Cộng hai số nguyên*/ Khái niệm Biến:
2. #include
3. #include • Tên biến tương ứng với vị trí xác định trong bộ nhớ máy tính
4. /* function main begins program execution */ • Mỗi biến gồm: một tên, kiểu dữ liệu, kích thước và giá trị
5. int main()
6. { • Mỗi khi giá trị mới được gán cho biến thì giá trị trước đó sẽ được
7. int integer1; /* first number to be input by user */ thay thế (xoá mất). Chẳng hạn khi sử dụng lệnh scanf để đọc giá
8. int integer2; /* second number to be input by user */
9. int sum; /* variable in which sum will be stored */
trị biến.
10. clrscr(); • Đọc các biến từ bộ nhớ giá trị của nó không thay đổi
11. printf( "Enter first integer\n" ); /* prompt */
12. scanf( "%d", &integer1 ); /* read an integer */ Mô tả trực giác về biến trong bộ nhớ
13. printf( "Enter second integer\n" ); /* prompt */
14. scanf( "%d", &integer2 ); /* read an integer */
integer1 45
15. sum = integer1 + integer2; /* assign total to sum */
Khai báo biến trước khi sử dụng
16. printf( "Sum is %d\n", sum ); /* print sum */
17. getch(); Đặt tên biến đúng quy tắc (trong C, phân biệt chữ hoa và
18. return 0; /* indicate that program ended successfully */
19. } /* end function main */ chữ thường)
12 13
Các toán tử (phép tính) Các toán tử
Các phép tính số học và thứ tự ưu tiên Phép so sánh
• 1 - Thứ nhất, thực hiện biểu thức, toán tử trong cặp “()”, nếu Standard algebraic equality C equality or Example of C Meaning of C condition
đồng cấp, thực hiện từ trái qua phải. operator or relational operator relational operator condition
Equality Operators
• 2 - Thứ hai: thực hiện phép *, / hoặc %, nếu đồng cấp thực hiện ==
= x == y x is equal to y
từ trái qua phải.
≠ != x != y x is not equal to y
• 3 - Cuối cùng: phép +,-, nếu đồng cấp thực hiện từ trái qua phải
Relational Operators
Coperation Arithm operator Algebraic expression Cexpression
etic > > x >y x is greater than y
< < x = >= x >= y x is greater than or equal to y
Multiplication * bm b*m
- Các toán tử Các toán tử
Phép gán và toán tử gán
Toán tử logic
• Biến = Biểu thức
Ví dụ về toán tử gán
d -= 4 (d = d - 4)
e *= 5 (e = e * 5)
f /= 3 (f = f / 3)
g %= 9 (g = g % 9)
Toán tử tăng (++) và Toán tử giảm (−−)
• c ++ sử dụng thay cho c += 1
• c−− sử dụng thay cho c −= 1
• Toán tử đặt trước biến: biến thay đổi giá trị trước khi biểu thức sử dụng
nó được tính toán
• Toán tử đặt sau biến: biến thay đổi giá trị sau khi biểu thức sử dụng nó
được tính toán
16 17
Các lệnh vào/ra cơ bản Ví dụ: In số nguyên
1. #include
Hàm printf(): in kết quả ra màn hình 2. #include
3. int main() Kết quả:
printf(“Xâu_điều_khiển_khuôn_dạng”, Danh_sách_tham_số_được_in); 4. {
5. printf( "%d\n", 455 );
Hàm scanf(): nhập dữ liệu vào từ bàn phím 6. printf( "%i\n", 455 ); /* i same as d in printf */
7. printf( "%d\n", +455 );
scanf(“Xâu_điều_khiển_khuôn_dạng”, Danh_sách_địa_chỉ_biến); 8. printf( "%d\n", -455 );
455
455
9. printf( "%hd\n", 32000 ); 455
-455
10. printf( "%ld\n", 2000000000 ); 32000
2000000000
11. printf( "%o\n", 455 );
Bài tập 1. 12. printf( "%u\n", 455 );
707
455
4294966841
Tìm hiểu Help, trình bày chi tiết cú pháp sử dụng hàm và cho ví dụ: 13. printf( "%u\n", -455 ); 1c7
14. printf( "%x\n", 455 ); 1C7
+ Xuất dữ liệu: printf, putchar, puts 15. printf( "%X\n", 455 );
16. getch();
+ Nhập dữ liệu: scanf, getchar, getch, gets 17. return 0; /* indicates successful termination */
18. } /* end main */
18 19
- Ví dụ: In số thực Ví dụ: In kí tự, xâu kí tự
1. #include 1. #include
2. #include 2. #include
3. int main() 3. int main()
4. { 4. {
5. char character = 'A'; /* initialize char */
5. clrscr();
6. char string[] = "This is a string"; /* initialize char array */
6. printf( "%e\n", 1234567.89 );
7. const char *stringPtr = "This is also a string"; /* char pointer */
7. printf( "%e\n", +1234567.89 );
8. clrscr();
8. printf( "%e\n", -1234567.89 ); 1.234568e+006
1.234568e+006 9. printf( "%c\n", character );
9. printf( "%E\n", 1234567.89 ); -1.234568e+006
10. printf( "%s\n", "This is a string" );
10. printf( "%f\n", 1234567.89 ); 1.234568E+006
1234567.890000 11. printf( "%s\n", string );
11. printf( "%g\n", 1234567.89 ); //so thuc mu e 1.23457e+006
1.23457E+006 12. printf( "%s\n", stringPtr );
12. printf( "%G\n", 1234567.89 ); // so thuc mu E
13. getch();
13. getch(); 14. return 0; /* indicates successful termination */
14. return 0; /* indicates successful termination */ 15. } /* end main */
15. } /* end main */
A
This is a string
This is a string
20 This is also a string 21
Ví dụ: In giá trị con trỏ In giá trị con trỏ
1. #include
2. #include Kết quả thực hiện chương trình
3. int main()
4. { The value of ptr is 0012FF78
5. int *ptr; /* define pointer to int */ The address of x is 0012FF78
6. int x = 12345; /* initialize int x */ Total characters printed on this line: 38
7. int y; /* define int y */
8. clrscr(); This line has 28 characters
9. ptr = &x; /* assign address of x to ptr */ 28 characters were printed
10. printf( "The value of ptr is %p\n", ptr ); Printing a % in a format control string
11. printf( "The address of x is %p\n\n", &x );
12. printf( "Total characters printed on this line:%n", &y );
13. printf( " %d\n\n", y );
14. y = printf( "This line has 28 characters\n" );
15. printf( "%d characters were printed\n\n", y );
16. printf( "Printing a %% in a format control string\n" );
17. getch();
18. return 0; /* indicates successful termination */
19. } /* end main */
22 23
- Ví dụ: In số thực
1. #include
2. #include
Kết quả thực hiện chương trình
3. int main()
4. {
5. int i = 873; /* initialize int i */ Using precision for integers
0873
6. double f = 123.94536; /* initialize double f */ 000000873
7. char s[] = "Happy Birthday"; /* initialize char array s */
8. clrscr(); Using precision for floating-point numbers
123.945
9. printf( "Using precision for integers\n" ); 1.239e+002
10. printf( "\t%.4d\n\t%.9d\n\n", i, i ); 124
Using precision for strings
11. printf( "Using precision for floating-point numbers\n" ); Happy Birth
12. printf( "\t%.3f\n\t%.3e\n\t%.3g\n\n", f, f, f );
13. printf( "Using precision for strings\n" );
14. printf( "\t%.11s\n", s );
15. getch();
16. return 0; /* indicates successful termination */
17. } /* end main */
24 25
Ví dụ: Sử dụng hàm scanf Cấu trúc điều khiển trong C
1. #include
Cấu trúc tuần tự
2. #include
Cấu trúc lựa chọn: if, if…else, switch
3. int main()
4. { Cấu trúc lặp: for, while, do …while
5. int x; /* define x */
6. int y; /* define y */
7. clrscr();
8. printf( "Enter a six digit integer: " );
9. scanf( "%2d%d", &x, &y );
10. printf( "The integers input were %d and %d\n", x, y );
11. getch();
12. return 0; /* indicates successful termination */
13. } /* end main */
26 27
nguon tai.lieu . vn