Bài giảng Tin học đại cương - Bài 6: Tổng quan về ngôn ngữ C - Đỗ Bá Lâm

6.1. Lịch sử phát triển

• Ra đời tại phòng thí nghiệm BELL của tập

đoàn AT&T (Hoa Kỳ)

• Do Brian W. Kernighan và Dennis M. Ritchie

phát triển vào đầu 1970, hoàn thành 1972

• C dựa trên nền các ngôn ngữ BCPL (Basic

Combined Programming Language) và ngôn

ngữ B.

• Tên là ngôn ngữ C như là sự tiếp nối ngôn

ngữ B.

pdf 41 trang yennguyen 1260
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Bài 6: Tổng quan về ngôn ngữ C - Đỗ Bá Lâm", để 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 Tin học đại cương - Bài 6: Tổng quan về ngôn ngữ C - Đỗ Bá Lâm

Bài giảng Tin học đại cương - Bài 6: Tổng quan về ngôn ngữ C - Đỗ Bá Lâm
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
TIN HỌC ĐẠI CƯƠNG
Bài 6. Tổng quan về ngôn ngữ C
Đỗ Bá Lâm
lamdb@soict.mail.hut.edu.vn
Nội dung
6.1. Lịch sử phát triển
6.2. Các phần tử cơ bản của ngôn ngữ C
6.3. Cấu trúc cơ bản của chương trình C
6.4. Biên dịch chương trình C
2
Nội dung
6.1. Lịch sử phát triển
6.2. Các phần tử cơ bản của ngôn ngữ C
6.3. Cấu trúc cơ bản của chương trình C
6.4. Biên dịch chương trình C
3
46.1. Lịch sử phát triển
• Ra đời tại phòng thí nghiệm BELL của tập 
đoàn AT&T (Hoa Kỳ)
• Do Brian W. Kernighan và Dennis M. Ritchie 
phát triển vào đầu 1970, hoàn thành 1972
• C dựa trên nền các ngôn ngữ BCPL (Basic 
Combined Programming Language) và ngôn 
ngữ B.
• Tên là ngôn ngữ C như là sự tiếp nối ngôn 
ngữ B.
6.1. Lịch sử phát triển
• Đặc điểm của ngôn ngữ lập trình C
– Ngôn ngữ lập trình hệ thống
– Tính khả chuyển, linh hoạt cao
– Có thế mạnh trong xử lý dữ liệu số, văn bản,
cơ sở dữ liệu
• C thường được sử dụng để viết các
chương trình hệ thống
– Hệ điều hành Unix có 90% mã C, 10% hợp
ngữ
– Các trình điều khiển thiết bị (device driver)
– Xử lý ảnh 5
66.1. Lịch sử phát triển
• 1978: C được giới thiệu trong phiên bản đầu của 
cuốn sách "The C programming language" 
• Sau đó, C được bổ sung thêm những tính năng
và khả năng mới → Đồng thời tồn tại nhiều 
phiên bản nhưng không tương thích nhau.
• Năm 1989, Viện tiêu chuẩn quốc gia của Hoa Kỳ 
(American National Standards Institute - ANSI) 
đã công bố phiên bản chuẩn hóa của ngôn ngữ 
C: ANSI C hay C chuẩn hay C89 
6.1. Lịch sử phát triển
• Các phiên bản ngôn ngữ C
– ANSI C: C chuẩn (1989)
– Các phiên bản khác thường bổ sung thêm
thư viện của ANSI C
• Các phần mềm soạn thảo và biên dịch chương
trình C
– DevC++
– GCC
– Code::Blocks
– 
7
Nội dung
6.1. Lịch sử phát triển
6.2. Các phần tử cơ bản của ngôn ngữ C
6.3. Cấu trúc cơ bản của chương trình C
6.4. Biên dịch chương trình C
8
Ví dụ
#include
#include
main(){
printf(“Hello World\n”);
getch();
}
9
6.2.1. Tập ký tự
• Tập ký tự là tập các phần tử cơ bản tạo 
nên chương trình
– Tổ hợp các ký tự → từ
– Liên kết các từ theo cú pháp → câu lệnh
– Tổ chức các câu lệnh → chương trình 
• Ví dụ:
– include, void, main
– printf(“”), getch();
10
6.2.1. Tập ký tự
• Tập ký tự trong C
– 26 chữ cái hoa:A B C ... X Y Z 
– 26 chữ cái thường:a b c  x y z.
– 10 chữ số: 0 1 2 3 4 5 6 7 8 9.
– Các kí hiệu toán học:+ - * / = 
– Các dấu ngăn cách: . ; , : space tab
– Các dấu ngoặc:( ) [ ] { }
– Các kí hiệu đặc biệt:_ ? $ & # ^ \ ! ‘ “ ~ 
.v.v.
11
6.2.2. Từ khóa
• Từ khóa (keyword) 
– Có sẵn trong mỗi ngôn ngữ lập trình
– Dành riêng cho các mục đích xác định
• Đặt tên cho kiểu dữ liệu: int, float, double
• Mô tả các lệnh, các cấu trúc lập trình: if, 
while, case
• Chú ý:
– Tất cả từ khóa trong C đều viết bằng chữ cái 
thường
12
6.2.2. Từ khóa
• Từ khóa hay dùng trong Turbo C
13
6.2.3. Định danh 
• Định danh (Identifier – hoặc còn gọi là 
Tên) là một dãy các kí tự dùng để gọi tên 
các đối tượng trong chương trình. 
• Các đối tượng trong chương trình
– Biến
– Hằng số
– Hàm
– Kiểu dữ liệu (sẽ làm quen ở các mục sau)
• Định danh có thể được đặt bởi
– Ngôn ngữ lập trình → các từ khóa
– Người lập trình
14
6.2.3. Định danh 
• Quy tắc đặt tên định danh trong C
– Các kí tự được sử dụng: chữ cái, chữ số và 
dấu gạch dưới “_” (underscore)
– Bắt đầu của định danh phải là chữ cái hoặc 
dấu gạch dưới “_”, không được bắt đầu định 
danh bằng chữ số.
– Định danh do người lập trình đặt không 
được trùng với các từ khóa của C
• Chú ý: C là ngôn ngữ có phân biệt chữ 
hoa và chữ thường 
15
6.2.3. Định danh 
• Ví dụ
– Định danh hợp lệ:
i, x, y, a, b, _function, _MY_CONSTANT, PI, 
gia_tri_1
– Định danh không hợp lệ
• 1_a, 3d, 55x (bắt đầu bằng chữ số)
• so luong, ti le (có dấu cách - kí tự không hợp 
lệ)
• int, char (trùng với từ khóa của ngôn ngữ C)
16
6.2.3. Định danh 
• Một số quy ước (code convention)
– Nên sử dụng dấu gạch dưới để phân tách các định 
danh gồm nhiều từ
– Định danh nên có tính gợi nhớ
– Quy ước thường được sử dụng:
• Hằng số dùng chữ cái hoa
• Các biến, hàm, cấu trúc dùng chữ cái thường
• Ví dụ
Định danh Loại đối tượng
HANG_SO_1, _CONSTANT_2 Hằng số
a, b, i, j, count Biến
nhap_du_lieu, tim_kiem, xu_li Hàm
sinh_vien, mat_hang Cấu trúc
17
6.2.4. Các kiểu dữ liệu 
• Định nghĩa:
– Một kiểu dữ liệu là một tập hợp các giá trị mà 
một dữ liệu thuộc kiểu dữ liệu đó có thể nhận 
được.
– Trên một kiểu dữ liệu ta xác định một số phép 
toán đối với các dữ liệu thuộc kiểu dữ liệu đó.
• Ví dụ:
– Kiểu dữ liệu int (số nguyên) trong C
– Một dữ liệu thuộc kiểu dữ liệu int
• Là một số nguyên
• Nhận giá trị từ từ - 32,768 (- 215) đến 32,767 (215 - 1) 
18
6.2.4. Các kiểu dữ liệu 
• Ví dụ (tiếp)
– Một số phép toán được định nghĩa trên kiểu dữ liệu 
int của C 
Tên phép toán Ký hiệu
Đảo dấu -
Cộng +
Trừ -
Nhân *
Chia lấy phần nguyên /
Chia lấy phần dư %
So sánh >, =, <=, ==, !=
19
Ví dụ
#include
#include
#define PI 3.14
main(){
float r, s;
printf(“Nhap ban kinh hinh tron:“);
scanf(“%f”,&r);
s = PI * r * r;
printf(“Dien tich hinh tron %f\n”,s);
getch(); 
} 20
6.2.5. Hằng số
• Định nghĩa:
– hằng (constant) là đại lượng có giá trị không 
đổi trong chương trình. 
• Biểu diễn hằng số nguyên: trong C, một hằng số 
nguyên có thể biểu diễn dưới 3 dạng
– Dạng thập phân
– Dạng thập lục phân
– Dạng bát phân
Giá trị thập phân Giá trị thập lục phân Giá trị bát phân
2007 0x7D7 03727
396 0x18C 0614
21
6.2.5. Hằng số
• Biểu diễn hằng số thực: trong C, một hằng 
số thực có thể biểu diễn dưới 2 dạng
– Dạng số thực dấu phẩy tĩnh
– Dạng số thực dấu phẩy động
• Ví dụ
Số thực dấu phẩy tĩnh Số thực dấu phẩy động
3.14159 31.4159 E-1
123.456 12.3456 E+1 hoặc 1.23456 E+2 
22
6.2.5. Hằng số
• Biểu diễn hằng ký tự: trong C, một hằng ký tự có 
thể biểu diễn theo hai cách
– Bằng ký hiệu của ký tự đặt giữa hai dấu nháy đơn
– Bằng số thứ tự của ký tự đó trong bảng mã ASCII (số 
nguyên -> tuân thủ quy tắc biểu diễn hằng số nguyên)
• Ví dụ
Ký tự cần biểu diễn Cách 1 Cách 2
Chữ cái A ‘A’ 65, 0x41, 0101
Dấu nháy đơn ‘\’’ 39, 0x27, 047
Ký tự tab ‘\t’ 0, 0x09, 011
23
6.2.5. Hằng số
• Biểu diễn hằng xâu ký tự:
– Hằng xâu kí tự được biểu diễn bởi dãy các kí
tự thành phần có trong xâu đó và được đặt
trong cặp dấu nháy kép.
• Ví dụ:
– “ngon ngu lap trinh C”
– “Tin hoc dai cuong”
– “Dai hoc Bach Khoa Ha Noi”
24
Ví dụ
#include
#include
main(){
float a, b, x;
printf(“Nhap he so a khac 0, 
a=“);scanf(“%f”,&a); 
printf(“Nhap he so b=“);scanf(“%f”,&b);
x = -b/a;
printf(“Nghiem cua phuong trinh %f”,x);
getch();
} 25
6.2.6. Biến
• Định nghĩa:
– Biến (variable) là đại lượng mà giá trị có thể 
thay đổi trong chương trình.
• Chú ý:
– Hằng số và biến được sử dụng để lưu trữ dữ 
liệu trong chương trình
– Hằng số và biến phải thuộc một kiểu dữ liệu 
nào đó
– Hằng số và biến đều phải đặt tên theo quy tắc
26
6.2.7. Hàm
• Mô tả:
– Hàm (function) là một chương trình con có 
chức năng nhận dữ liệu đầu vào (các tham số 
đầu vào), thực hiện một chức năng nào đó và 
đưa ra các kết quả.
Hàm Ý nghĩa Ký hiệu toán học Ví dụ
Pow(x,y) X mũ y Xy Pow(2,3)=8
Sin(x) Sin của x Sinx Sin(0)=0
Cos(x) Cos của x Cosx Cos(0)=1
27
6.2.8. Biểu thức
• Định nghĩa:
– Biểu thức là sự ghép nối các toán tử (operator) 
và các toán hạng (operand) theo một quy tắc 
xác định.
– Các toán hạng có thể là biến, hằng
– Các toán tử rất đa dạng: cộng, trừ, nhân, chia..
• Ví dụ: biểu thức tính thể tích hình chữ nhật
chieu_dai * chieu_rong * chieu_cao
- chieu_dai, chieu_rong, chieu_cao là các hằng 
hoặc biến số đóng vai trò toán hạng
- Phép * đóng vai trò toán tử
28
6.2.9. Câu lệnh
• Câu lệnh (statement) diễn tả một hoặc một
nhóm các thao tác trong giải thuật.
• Chương trình được tạo thành từ dãy các
câu lệnh.
• Cuối mỗi câu lệnh bắt buộc có dấu chấm
phẩy ‘;’ để đánh dấu kết thúc câu lệnh
29
6.2.9. Câu lệnh
• Phân nhóm:
– Nhóm các câu lệnh đơn: những câu lệnh
không chứa câu lệnh khác. Ví dụ: phép gán,
phép cộng, phép trừ
– Nhóm các câu lệnh phức: những câu lệnh
chứa câu lệnh khác.
• Ví dụ: lệnh khối đặt trong cặp ngoặc nhọn { }
30
6.2.10. Chú thích
• Chú thích (comment):
– Lời mô tả, giải thích vắn tắt cho một câu lệnh,
một đoạn chương trình hoặc cả chương trình
– Giúp việc đọc và hiểu chương trình dễ dàng
hơn
– Chú thích không phải là câu lệnh -> không ảnh
hưởng tới chương trình
• Cách viết chú thích: trong C có hai cách
– Chú thích một dòng: sử dụng "//"
– Chú thích nhiều dòng: sử dụng " /* " và " */ "
31
Nội dung
6.1. Lịch sử phát triển
6.2. Các phần tử cơ bản của ngôn ngữ C
6.3. Cấu trúc cơ bản của chương trình C
6.4. Biên dịch chương trình C
6.5. Trình biên dịch Turbo C++
32
Ví dụ
#include 
#include 
main(){
// Khai bao cac bien
int a, b; 
int tong, hieu, tich;
// Nhap vao tu ban phim 2 so nguyen
printf(“\nNhap vao so nguyen thu 
nhat: ”);
scanf(“%d”,&a);
printf(“\n Nhap vao so nguyen thu 
hai: “);
scanf(“%d”,&b); 33
Ví dụ
// Tinh tong, hieu, tich cua 2 so do
tong = a+b; hieu = a – b;tich = a*b;
// Hien thi cac gia tri ra man hinh
printf(“\n Tong cua 2 so vua nhap 
la %d”, tong);
printf(“\n Hieu cua 2 so vua nhap 
la %d”, hieu);
printf(“\n Tich cua 2 so vua nhap 
la %d”, tich);
// Doi nguoi dung an phim bat ki
getch();
}
34
35
• Gồm 6 phần có thứ tự như sau:
Phần1: Khai báo tệp tiêu đề: #include 
Phần 2: Định nghĩa kiểu dữ liệu mới: typedef ... 
Phần 3: Khai báo các hàm nguyên mẫu 
Phần 4: Khai báo các biến toàn cục 
Phần 5: Hàm main()
Phần 6: Nội dung các hàm đã khai báo
6.3. Cấu trúc cơ bản của chương trình C
36
• Phần 1: Khai báo tệp tiêu đề:
– Thông báo cho chương trình dịch biết là 
chương trình có sử dụng những thư viện nào.
– VD: #include // thao tác vào ra
#include // hàm của DOS
• Phần 2: Định nghĩa các kiểu dữ liệu mới
– Định nghĩa các kiểu dữ liệu mới (nếu 
cần) dùng cho cả chương trình.
6.3. Cấu trúc cơ bản của chương trình C
37
• Phần 3: Khai báo các nguyên mẫu hàm
– Giúp cho chương trình dịch biết được những 
thông tin cơ bản của các hàm sử dụng trong 
chương trình.
• Phần 4: Khai báo các biến toàn cục
– Ví dụ: 
int a, b;
int tong, hieu, tich; 
6.3. Cấu trúc cơ bản của chương trình C
38
• Phần 5: Hàm main( )
– Khi thực hiện, chương trình sẽ bắt đầu bằng 
việc thực hiện các lệnh trong hàm main( ).
– Trong hàm main( ) có thể có lệnh gọi tới các 
hàm khác.
• Phần 6: Nội dung của các hàm đã khai 
báo
– Cài đặt (viết mã) cho các hàm đã khai báo 
nguyên mẫu ở phần 3.
6.3. Cấu trúc cơ bản của chương trình C
Nội dung
6.1. Lịch sử phát triển
6.2. Các phần tử cơ bản của ngôn ngữ C
6.3. Cấu trúc cơ bản của chương trình C
6.4. Biên dịch chương trình C
39
40
• Preprocessor
– Loại bỏ các chú thích 
– Dịch các chỉ thị tiền xử lý bắt đầu là #
• C Compiler
– Biên dịch mã nguồn thành mã assembly.
• Assembler
– Tạo ra mã object.
• Trên UNIX → file .o
• Trên MS-DOS → file.OBJ
• Link Editor
– Nếu tệp nguồn tham chiếu đến các hàm thư 
viện/hàm được định nghĩa thì Link editor kết 
hợp các hàm này với hàm main() để tạo ra 
tệp có thể thực thi được
• Trong MS-DOS là file .exe
6.4. Biên dịch chương trình C
Thảo luận
41

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_bai_6_tong_quan_ve_ngon_ngu_c_do.pdf