Bài giảng Tin học đại cương - Phần 2: Lập trình bằng ngôn ngữ C - Bài 1: Tổng quan về ngôn ngữ C - Nguyễn Thanh Hùng

1.1. Lịch sử phát triển NNLT C

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 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.

 

ppt 51 trang yennguyen 2820
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Phần 2: Lập trình bằng ngôn ngữ C - Bài 1: Tổng quan về ngôn ngữ C - Nguyễn Thanh Hùng", để 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 - Phần 2: Lập trình bằng ngôn ngữ C - Bài 1: Tổng quan về ngôn ngữ C - Nguyễn Thanh Hùng

Bài giảng Tin học đại cương - Phần 2: Lập trình bằng ngôn ngữ C - Bài 1: Tổng quan về ngôn ngữ C - Nguyễn Thanh Hùng
1 
TIN HỌC ĐẠI CƯƠNG  PHẦN 2: LẬP TRÌNH BẰNG NGÔN NGỮ C BÀI 1: TỔNG QUAN VỀ NGÔN NGỮ C 
VIỆN CÔNG NGHỆ THÔNG TIN 
Ts . Nguyễn Thanh Hùng 
SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY 
2 
Bài 1:Tổng quan về C 
1.1 . Lịch sử phát triển ngôn ngữ lập trình C 
1.2. Các phần tử cơ bản của ngôn ngữ C 
1.3. Cấu trúc cơ bản của một chương trình C 
1.4. Biên dịch chương trình viết bằng C 
1.5. Bài tập 
3 
Bài 1:Tổng quan về C 
1.1 . Lịch sử phát triển ngôn ngữ lập trình C 
1.2. Các phần tử cơ bản của ngôn ngữ C 
1.3. Cấu trúc cơ bản của một chương trình C 
1.4. Biên dịch chương trình viết bằng C 
1.5. Bài tập 
4 
1.1. Lịch sử phát triển NNLT C 
Ra đời tại phòng thí nghiệm BELL của tập đoàn AT&T (Hoa Kỳ) 
D o Brian W. Kernighan và Dennis 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 . 
5 
1.1. Lịch sử NNLT C (tiếp) 
Đặc điểm của NNLT C: 
L à một ngôn ngữ lập trình h ệ thống mạnh, khả chuyển, có tính linh hoạt cao . 
C ó thế mạnh trong xử lí các dạng dữ liệu số, văn bản, cơ sở dữ liệu. 
Thường được sử dụng để viết: 
Các chương trình hệ thống như hệ điều hành (VD Unix: 90% viết bằng C, 10% viết bằng hợp ngữ). 
C ác chương trình ứng dụng chuyên nghiệp có can thiệp tới dữ liệu ở mức thấp như xử lí văn bản, xử lí ảnh 
6 
1.1. Lịch sử NNLT C (tiếp) 
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 
7 
1.1. Lịch sử NNLT C (tiếp) 
Tất cả các phiên bản của ngôn ngữ C hiện nay đều tuân theo các mô tả đã được nêu ra trong ANSI C, sự khác biệt nếu có thì chủ yếu ở các thư viện bổ sung . 
Hiện nay cũng có nhiều phiên bản của ngôn ngữ C khác nhau , gắn liền với một bộ chương trình dịch cụ thể của ngôn ngữ C : 
Turbo C++ và Borland C++ của Borland Inc. 
MSC v à VC của Microsoft Corp. 
GCC của GNU project. 
8 
Bài 1:Tổng quan về C 
1.1 . Lịch sử phát triển ngôn ngữ lập trình C 
1.2. Các phần tử cơ bản của ngôn ngữ C 
1.3. Cấu trúc cơ bản của một chương trình C 
1.4. Biên dịch chương trình viết bằng C 
1.5. Bài tập 
9 
1.2.1. Tập ký tự 
Chương trình C được tạo ra từ các phần tử cơ bản là tập kí tự . 
Các kí tự tổ hợp với nhau tạo thành các từ 
Các từ liên kết với nhau theo một quy tắc xác định để tạo thành các câu lệnh 
T ừ các câu lệnh tổ chức thành chương trình. 
10 
1.2.1. Tập ký tự (tiếp) 
11 
1.2.2. Từ khóa (keyword) 
L à những từ có sẵn của ngôn ngữ và được sử dụng dành riêng cho những mục đích xác định. 
Các từ khóa trong C được sử dụng để 
Đ ặt tên cho các kiểu dữ liệu : int , float , double , char , struct , union  
Mô tả các lệnh, các cấu trúc điều khiển: for , do , while , switch , case , if , else , break , continue  
12 
1.2.2. Từ khóa (tiếp) 
Một số từ khóa hay dùng 
13 
1.2.3. Định danh /tên ( Identifier ) 
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 gồm có biến, hằng, hàm, kiểu dữ liệu ta sẽ làm quen ở những mục tiếp theo. 
C ó thể được đặt tên : 
B ởi ngôn ngữ lập trình (đó chính là các từ khóa) 
H oặc do người lập trình đặt. 
14 
1.2.3. Định danh /tên (tiếp) 
Qui tắc đặt định danh: 
C hỉ được gồm có: 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 từ khóa. 
15 
1.2.3. Định danh /tên (tiếp) 
Ví dụ định danh/tên hợp lệ: 
	i, x, y, a, b, _function, _MY_CONSTANT, PI, gia_tri_1 
Ví dụ về định danh/tên không hợp lệ: 
16 
1.2.3. Định danh /tên (tiếp) 
Cách thức đặt định danh/tên: 
Hằng số: chữ hoa 
Các biến, hàm hay cấu trúc: Bằng chữ thường. 
Nếu tên gồm nhiều từ thì ta nên phân cách các từ bằng dấu gạch dưới. 
Ví dụ : 
17 
1.2.4. Các kiểu dữ liệu (data type) 
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ụ : Trong ngôn ngữ C có kiểu dữ liệu int . Một dữ liệu thuộc kiểu dữ liệu int thì: 
Là một số nguyên ( integer ) 
Có thể nhận giá trị từ - 32768 (- 2 15 ) đến 32767 (2 15 - 1) . 
18 
1.2.4. Các kiểu dữ liệu (tiếp) 
Trên kiểu dữ liệu int ngôn ngữ C định nghĩa các phép toán số học đối với số nguyên như sau: 
Đảo dấu: 	 - 
Cộng: 	 + 
Trừ: 	 - 
Nhân: 	 * 
Chia lấy phần nguyên:	 / 
Chia lấy phần dư:	 % 
So sánh bằng:	 = = 
So sánh lớn hơn:	 > 
So sánh nhỏ hơn:	 < 
19 
1.2.5. Hằng số (constant) 
Là đại lượng có giá trị không đổi trong chương trình. 
Để giúp chương trình dịch nhận biết hằng ta cần nắm được cách biểu diễn hằng trong một chương trình C. 
20 
1.2.5. Hằng số (tiếp) 
a. Biểu diễn hằng số nguyên: 
Dạng thập phân: 
Giá trị số dưới hệ đếm cơ số 10 thông thường 
Ví dụ: 2007, 396 
Dạng thập lục phân: 
Giá trị số dưới dạng hệ đếm cơ số 16 và thêm tiền tố 0x 
Ví dụ: 0x7D7, 0x18C. 
Dạng bát phân: 
Giá trị số dưới dạng hệ đếm cơ số 8 và thêm tiền tố 0 
Ví dụ: 03727, 0614. 
21 
1.2.5. Hằng số (tiếp) 
b. Biểu diễn hằng số thực 
Dưới dạng số thực dấu phẩy tĩnh: 
	Ví dụ: 3.14159 , 123.456 
Dưới dạng số thực dấu phẩy động: 
	Ví dụ: 31.4159 E -1 
 12.3456 E +1 
 1.23456 E +2 
22 
1.2.5. Hằng số (tiếp) 
c. Biểu diễn hằng kí tự 
Bằng kí hiệu của kí tự đó đặt giữa 2 dấu nháy đơn ( ‘’ ). 
Bằng số thứ tự của kí tự đó trong bảng mã ASCII (và lưu ý số thứ tự của một kí tự trong bảng mã ASCII là một số nguyên nên có một số cách biểu diễn). 
23 
1.2.5. Hằng số (tiếp) 
Ví dụ biểu diễn hằng ký tự: 
24 
1.2.5. Hằng số (tiếp) 
d. Biểu diễn hằng là xâu kí tự: 
Một hằng là 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 ( “” ). 
VD: “ Chào các bạn ” 
25 
1.2.6. Biến (variable) 
Là đại lượng mà giá trị có thể thay đổi trong chương trình. 
Hằng và biến được sử dụng để lưu trữ dữ liệu, và phải thuộc một kiểu dữ liệu nào đó. 
Tên biến và hằng được đặt theo quy tắc đặt tên cho định danh. 
26 
1.2.7. Hàm (function) 
Còn được gọi là chương trình con 
Những đoạn chương trình lặp đi lặp lại nhiều lần ở những chỗ khác nhau Viết thành hàm để khi cần chỉ cần gọi ra chứ không phải viết lại toàn bộ. 
Giải quyết một bài toán lớn thì chương trình của ta có thể rất lớn và dài Chia thành các công việc nhỏ hơn được viết thành các hàm. 
27 
1.2.7. Hàm (tiếp) 
28 
1.2.7. Hàm (tiếp) 
29 
1.2.8. 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 đều có dấu chấm phẩy ‘ ; ’ để đánh dấu kết thúc câu lệnh. 
30 
Câu lệnh được chia thành 2 nhóm chính: 
Nhóm các câu lệnh đơn: 
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: 
Chứa câu lệnh khác trong nó. 
Ví dụ: lệnh khối, các cấu trúc lệnh rẽ nhánh, cấu trúc lệnh lặp 
Lệnh khối là một số các lệnh đơn được nhóm lại với nhau và đặt trong cặp dấu ngoặc nhọn { } 
1.2.8. Câu lệnh (tiếp) 
31 
1.2.9. 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 
Chỉ có tác dụng giúp chương trình viết ra dễ đọc và dễ hiểu hơn 
Trình biên dịch sẽ tự động bỏ qua không dịch phần nội dung nằm trong phạm vi của vùng chú thích đó. 
2 cách chú thích 
Trên 1 dòng: // 
Trên nhiều dòng: /*	*/ 
32 
1.2.9. Chú thích (tiếp) 
Cách 1: 
Vùng bắt đầu từ // đến cuối dòng là vùng chú thích. 
Ví dụ: 
	 a = 5; b = 3; // Khoi tao gia tri cho cac bien nay 
Cách 2: 
Toàn bộ vùng bắt đầu nằm trong cặp kí hiệu /* */ là vùng chú thích. 
Ví dụ: 
	/* Doan chuong trinh sau khai bao 2 bien nguyen va khoi tao gia tri cho 2 bien nguyen nay */ 
	int a, b; 
	a = 5; b = 3; 
33 
Bài 1:Tổng quan về C 
1.1 . Lịch sử phát triển ngôn ngữ lập trình C 
1.2. Các phần tử cơ bản của ngôn ngữ C 
1.3. Cấu trúc cơ bản của một chương trình C 
1.4. Biên dịch chương trình viết bằng C 
1.5. Bài tập 
34 
1.3. Cấu trúc cơ bản của một chương trình C 
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 
35 
1.3. Cấu trúc cơ bản của một chương trình C (tiếp) 
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. 
36 
1.3. Cấu trúc cơ bản của một chương trình C (tiếp) 
Phần 3: K hai báo các hàm nguyên mẫu: 
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; 
37 
1.3. Cấu trúc cơ bản của một chương trình C (tiếp) 
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. 
38 
1.3. Cấu trúc cơ bản của một chương trình C (tiếp) 
Ví dụ đơn giản: 
/* Chuong trinh sau se nhap vao tu ban phim 2 so nguyen va hien thi ra man hinh tong, hieu tich cua 2 so nguyen vua nhap vao */ 
#include 
void main() 
{ 
	// Khai bao cac bien trong chuong trinh 
	int a, b; 
	int tong, hieu, tich; 
39 
1.3. Cấu trúc cơ bản của một chương trình C (tiếp) 
// 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); 
// Tinh tong, hieu, tich cua 2 so vua nhap 
tong = a+b; 
hieu = a – b; 
tich = a*b; 
40 
1.3. Cấu trúc cơ bản của một chương trình C (tiếp) 
	// 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 de ket thuc 
	getch(); 
} 
41 
Bài 1:Tổng quan về C 
1.1 . Lịch sử phát triển ngôn ngữ lập trình C 
1.2. Các phần tử cơ bản của ngôn ngữ C 
1.3. Cấu trúc cơ bản của một chương trình C 
1.4. Biên dịch chương trình viết bằng C 
1.5. Bài tập 
42 
Quá trình phát triển chương trình trong C 
Edit 
Preprocess 
Compile 
Link 
Load 
Execute 
Loại bỏ các chú thích 
Dịch các chị thị tiền xử lý ( preprocessor directives) bắt đầu bằng #. 
N ạp chương trình đã dịch vào bộ nhớ 
Th ực hiện chương trình 
D ịch chương trình 
K ết nối các tài nguyên (các hàm trong thư viện hoặc file nguồn khác) vào hàm main() tạo file chạy 
Loader 
Primary Memory 
Compiler 
Preprocessor 
Linker 
Primary Memory 
. 
. 
. 
Disk 
CPU 
Vi ết chương trình 
Editor 
Disk 
Disk 
Disk 
Disk 
Source Code 
Object Code 
Executable Code 
43 
Mô hình biên dịch C 
Preprocessor 
Loại bỏ các chú thích 
Dịch các chị thị tiền xử lý ( preprocessor directives) được bắt đầu bằng #. 
C Compiler 
Biên dịch mã nguồn từ Prepocessor 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 hoặc các hàm được định nghĩa từ các tệp nguồn khác thì ink 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 
44 
Quá trình biên dịch và liên kết chương trình C 
45 
1.4. Biên dịch chương trình viết bằng C 
Biên dịch chương trình viết bằng ngôn ngữ C (xem tài liệu phát) 
Dùng trình biên dịch Turbo C++ 3.0 
Cài đặt Turbo C++ 3.0 
Viết chương trình 
Sửa đường dẫn tới các thư viện (nếu cần) 
Biên dịch 
Chạy chương trình 
46 
Bài 1:Tổng quan về C 
1.1 . Lịch sử phát triển ngôn ngữ lập trình C 
1.2. Các phần tử cơ bản của ngôn ngữ C 
1.3. Cấu trúc cơ bản của một chương trình C 
1.4. Biên dịch chương trình viết bằng C 
1.5. Bài tập 
47 
1.5. Bài tập 
Bài tập 1: 
	Trong các định danh sau, định danh nào là không hợp lệ: 
MAX_SINH_VIEN 
CHIEU_CAO 
ho va ten 
1_bien_nao_do 
so_thuc_1 
48 
1.5. Bài tập (tiếp) 
Bài tập 2: 
	Hãy cho biết giá trị của các hằng nguyên sau trong chương trình: 
	0345, 0x168, 06356, 0xAF04 
49 
1.5. Bài tập (tiếp) 
Bài tập 3: 
	Cho biết biểu diễn dưới dạng số thực dấu phẩy tĩnh của các hằng số thực sau: 
535.235 E+3 
256.89 E-1 
10.103 E-5 
50 
1.2. Các phần tử cơ bản của ngôn ngữ C (tiếp) 
Bài tập 4: Chạy thử hai chương trình sau xem có chương trình nào có lỗi không? Nếu có lỗi thì hãy xem trình biên dịch báo là lỗi gì? 
Chương trình 1: 
 void main() { } 
Chương trình 2: 
#include 
#include 
	void fct() { } 	 
51 
Câu hỏi ? 

File đính kèm:

  • pptbai_giang_tin_hoc_dai_cuong_phan_2_lap_trinh_bang_ngon_ngu_c.ppt