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