Bài giảng Lập trình cơ bản - Bài 6: Các khái niệm cơ bản trong ngôn ngữ lập trình C

Lịch sử C

C và Unix có chung nguồn gốc

C ban đầu được xây dựng và cài đặt trên hệ điều hành Unix máy tính PDP-11

Dennis Ritchie là tác giả C (1971).

Năm 1973 Unix được viết lại bằng C

BCPL (giữa những năm-60s) hay B (1970, cắt gọn của BCPL) là tiền thân của C (không có A)

BCPL và B ngôn ngữ không định kiểu, C là ngôn ngữ định kiểu.

 

ppt 98 trang kimcuc 4500
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình cơ bản - Bài 6: Các khái niệm cơ bản trong ngôn ngữ lập trình C", để 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 Lập trình cơ bản - Bài 6: Các khái niệm cơ bản trong ngôn ngữ lập trình C

Bài giảng Lập trình cơ bản - Bài 6: Các khái niệm cơ bản trong ngôn ngữ lập trình C
Bài 6: Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Bài giảng LẬP TRÌNH CƠ BẢN 
KHOA CÔNG NGHỆ THÔNG TIN 
 BỘ MÔN CÔNG NGHỆ PHẦN MỀM 
Tài liệu tham khảo 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
2 
Kỹ thuật lập trình C: cơ sở và nâng cao, Phạm Văn Ất, Nhà xuất bản KHKT – Chương 2, 3 
The C programming language 2nd Edition, Brian Kernighan and Dennis Ritchie, Prentice Hall Software Series – Chương 2 
Nội dung 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Giới thiệu ngôn ngữ lập trình C 
Các kiểu dữ liệu cơ bản 
Biến, hằng và biểu thức 
Các phép toán 
Cấu trúc chương trình 
Hàm main và đối số dòng lệnh 
Khai báo biến 
Phát biểu include 
Câu lệnh 
Xuất dữ liệu ra thiết bị chuẩn: các hàm putchar, printf 
Nhập dữ liệu từ thiết bị chuẩn: các hàm getchar, scanf 
3 
Phần mềm, chương trình, câu lệnh 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Software 
Program 2 
Program 1 
 Commands 
 Commands 
 Commands 
4 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Bắt đầu C 
C – Dennis Ritchie 
B – Ken Thompson 
BPCL – Martin Richards 
5 
Lịch sử C 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
C và Unix có chung nguồn gốc 
C ban đầu được xây dựng và cài đặt trên hệ điều hành Unix máy tính PDP-11 
Dennis Ritchie là tác giả C (1971). 
Năm 1973 Unix được viết lại bằng C 
BCPL (giữa những năm-60s) hay B (1970, cắt gọn của BCPL) là tiền thân của C (không có A) 
BCPL và B ngôn ngữ không định kiểu, C là ngôn ngữ định kiểu. 
6 
Lịch sử C 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Năm 1978 - Kernighan & Ritchie (1st edition) công bố phiên bản chuẩn đầu tiên của C "K&R C“ 
Năm 1983, Viện tiêu chuẩn quốc gia Mỹ American National Standards Institute (ANSI) thành thập một ủy ban để làm rõ và chuẩn hóa ngôn ngữ. 
Năm1988, ANSI C công bố phiên bản đầu tiên. 
Năm 1990, ISO thông qua ANSI C không thay đổi – là chuẩn quốc tế cho đến bây giờ. 
Điều này mang đến lợi ích rất lớn về tính khả chuyển 
Xem  
7 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Các lĩnh vực ứng dụng của C 
 C được dùng để lập trình hệ thống 
 Một chương trình hệ thống làm thành một phần hệ điều hành hoặc các tiện ích hỗ trợ của hệ điều hành 
 Hệ điều hành (Operating Systems), trình thông dịch (Interpreters), trình soạn thảo (Editors), trình Hợp Ngữ (Assembly) được gọi là chương trình hệ thống 
8 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Ngôn ngữ cấp trung 
Ngôn ngữ cấp cao 
Ngôn ngữ hợp ngữ 
C 
9 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Ngôn ngữ có cấu trúc 
 C cho ph ép tổng hợp mã lệ nh và dữ liệu 
 Nó có khả năng tập hợp và ẩn đi tất cả thông tin, lệnh khỏi phần còn lại của chương trình để dùng cho những tác vụ riêng 
 Chương trình C có thể được chia nhỏ thành những hàm (functions) hay những khối mã (code blocks). 
10 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Đặc điểm của C 
C c ó 32 t ừ khóa 
Những từ khóa này kết hợp với cú pháp của C hình thành ngôn ngữ C 
Các quy tắc được áp dụng cho các chương trình C 
 Tất cả từ khóa là chữ thường 
 Ðoạn mã trong chương trình C có phân biệt chữ thường, chữ hoa, do while khác DO WHILE 
Từ khóa không thể dùng đặt tên biến (variable name) hoặc tên hàm (function name) 
main() 
{ 
/* This is a sample Program*/ 
 int i,j; 
 i=100; 
 j=200; 
 : 
 } 
11 
Cấu trúc chương trình C 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
main() 
Chương trình C được chia nhỏ thành những đơn vị gọi là hàm 
Không kể có bao nhiêu hàm trong chương trình, Hệ điều hành luôn trao quyền điều khiển cho hàm main() khi một chương trình C được thực thi. 
Theo sau tên hàm là dấu ngoặc đơn 
Dấu ngoặc đơn có thể có chứa hay không chứa những tham số 
12 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Cấu trúc chương trình C (tt.) 
Dấu phân cách {} 
Sau phần đầu hàm là dấu ngoặc xoắn mở { 
Nó cho biết việc thi hành lệnh trong hàm bắt đầu 
Tương tự, dấu ngoặc xoắn đóng } sau câu lệnh cuối cùng trong hàm chỉ ra điểm kết thúc của hàm 
13 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Cấu trúc chương trình C (tt.) 
Dấu kết thúc câu lệnh  ; 
Một câu lệnh trong C được kết thúc bằng dấu chấm phẩy ; 
Trình biên dịch C không hiểu việc xuống dòng, khoảng trắng hay tab 
Một câu lệnh không kết thúc bằng dấu chấm phẩy sẽ được xem như dòng lệnh lỗi trong C 
14 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Cấu trúc chương trình C (tt.) 
/*Dòng chú thích*/ 
Những chú thích thường được viết để mô tả công việc của một lệnh đặc biệt, một hàm hay toàn bộ chương trình 
Trình biên dịch sẽ bỏ qua phần chú thích 
Trong trường hợp chú thích nhiều dòng, nó sẽ bắt đầu bằng ký hiệu /* và kết thúc là */ 
15 
Biến 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Dữ liệu 
Bộ nhớ 
Mỗi vị trí trong bộ nhớ là duy nhất 
Biến cho phép cung cấp một tên có ý nghĩa cho mỗi vị trí nhớ 
15 
Dữ liệu trong bộ nhớ 
15 
16 
Ví dụ 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
 A, B và C là các biến trong đoạn mã giả trên 
 Tên biến giúp chúng ta truy cập vào bộ nhớ mà không cần dùng địa chỉ của chúng 
 Hệ điều hành đảm nhiệm việc cấp bộ nhớ còn trống cho những biến này 
 Ðể tham chiếu đến một giá trị cụ thể trong bộ nhớ, chúng ta chỉ cần dùng tên của biến 
BEGIN 
DISPlAY ‘Enter 2 numbers’ 
INPUT A, B 
C = A + B 
DISPLAY C 
END 
17 
Khai báo 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
 [=] 
Ví dụ: 
	int a = 3; 
	int b; 
	int a=3, b=4; 
	char c = ‘A’; 
18 
Hằng 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Một hằng (constant) là một giá trị không bao giờ thay đổi trong thời gian tồn tại của nó. 
Định nghĩa hằng: sử dụng từ khóa const 
	 const = 
19 
Hằng 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Các ví dụ 
const int a= 5; hằng số nguyên 
const float x = 5.3;	 hằng số thực 
const char c = ‘1’;	 hằng ký tự 
Hằng trong hệ 16 được bắt đầu bằng 0x. 
 Ví dụ: 0xa5 = 10*16 + 5 =165. 
Hằng trong hệ 8 bắt đầu bằng 0. 
 Ví dụ: 0345 = 3*64+4*16+5=229 
20 
Định danh 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Tên của các biến (variables), các hàm (functions), các nhãn (labels) và các đối tượng khác nhau do người dùng định nghĩa gọi là định danh 
Ví dụ về các định danh đúng 
arena 
s_count 
marks40 
class_one 
 Ví dụ về các định danh sai 
1sttest 
oh!god 
start... end 
Các định danh có thể có bất cứ chiều dài nào theo quy ước, nhưng số ký tự trong một biến được nhận diện bởi trình biên dịch thì thay đổi theo trình biên dịch 
Các định danh trong C có phân biệt chữ hoa và chữ thường 
Không hợp lệ ! 
21 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Tên biến phải bắt đầu bằng một ký tự alphabet 
Nên tránh đặt tên biến trùng tên các từ khoá 
Theo sau ký tự đầu có thể là các ký tự chữ, số  
Tên biến nên mô tả được ý nghĩa của nó 
Tránh dùng các ký tự gây lầm lẫn 
Nên áp dụng các quy ước đặt tên biến chuẩn khi lập trình 
Các nguyên tắc đặt tên định danh 
22 
Định danh 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
23 
Từ khóa 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Từ khóa: Tất cả các ngôn ngữ dành một số từ nhất định cho mục đích riêng 
Những từ này có một ý nghĩa đặc biệt trong ngữ cảnh của một ngôn ngữ cụ thể 
Sẽ không có xung đột nếu từ khóa và tên biến khác nhau. Ví dụ từ integer cho tên biến thì hoàn toàn hợp lệ ngay cả khi mà từ khóa là int 
24 
Từ khóa 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
25 
Kiểu dữ liệu 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Các kiểu dữ liệu khác nhau được lưu trữ trong biến là: 
Số (Numbers) 
Số nguyên. 
	Ví dụ : 10 hay 178993455 
Số thực. 
	Ví dụ, 15.22 hay 15463452.25 
Số dương 
Số âm 
Tên. Ví dụ : John 
Giá trị luận lý : 
	Ví dụ : Y hay N 
26 
Kiểu dữ liệu (tt.) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
kiểu dữ liệu	 tên biến 
	 int	 varName 
Kiểu dữ liệu mô tả loại dữ liệu sẽ được lưu trong biến 
Tên biến đặt sau kiểu dữ liệu 
Ví dụ : tên biến “varName” đứng sau kiểu dữ liệu “int” 
27 
Kiểu dữ liệu cơ bản 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
void 
char 
double 
Kiểu dữ liệu cơ bản 
float 
int 
28 
Kiểu số nguyên (int) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Lưu trữ dữ liệu số 	 
	 int num; 
Không thể lưu trữ bất cứ kiểu dữ liệu nào khác như “Alan” hoặc “abc” 
Chi ế m 16 bits (2 bytes) bộ nhớ 
Biểu diễn các số nguyên trong phạm vi 
 -32768 tới 32767 
Ví dụ : 12322, 0, -232 
29 
Kiểu số thực (float) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Lưu trữ dữ liệu số chứa phần thập phân 
	float num; 
Có độ chính xác tới 6 con số 
Chi ế m 32 bits (4 bytes) bộ nhớ 
3.4E-38 đến 3.4E+38 (10 mũ dương 38) 
Ví dụ : 23.05, 56.5, 32 
30 
Kiểu số thực (double) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Lưu trữ dữ liệu số chứa phần thập phân 
	 	 double num; 
Có độ chính xác tới 10 con số 
Chi ế m 64 bits (8 bytes) bộ nhớ 
1.7E-308 đến 1.7E+308 
Ví dụ : 23.05, 56.5, 32 
31 
Kiểu ký tự (char ) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Lưu trữ một ký tự đơn 
	 	 char gender; 
	gender='M'; 
Chiếm 8 bits (1 byte) bộ nhớ 
Ví dụ: ‘a’, ‘m’, ‘$’ ‘%’ , ‘1’, ’5’ 
32 
Kiểu void 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Không lưu bất cứ dữ liệu gì	 
Báo cho trình biên dịch không có giá trị trả về 
33 
Những kiểu dữ liệu dẫn xuất 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
int 
short 
short int 
( chiếm ít bộ nhớ hơn int ) 
Kiểu dữ liệu dẫn xuất 
Kiểu dữ liệu 
cơ bản 
Bộ bổ từ ( Modifiers) 
kiểu dữ liệu 
int 
unsigned int 
( chỉ là số dương ) 
unsigned 
int/double 
Long int /longdouble 
(chiếm nhiều bộ nhớ hơn 
int/double) 
long 
34 
Các kiểu dữ liệu signed và unsigned 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Kiểu unsigned chỉ rõ rằng một biến chỉ có thể nhận giá trị dương 
unsigned int varNum; 
varNum=23123; 
varNum được cấp phát 2 bytes 
Bổ từ unsigned có thể được dùng với kiểu dữ liệu int và float 
Kiểu unsigned int hỗ trợ dữ liệu trong phạm vi từ 0 đến 65535 
35 
Những kiểu dữ liệu long (dài) và short (ngắn) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
short int chiếm giữ 8 bits (1 byte) 
Cho phép số có phạm vi từ -128 tới 127 
long int chiếm giữ 32 bits (4 bytes) 
-2,147,483,648 và 2,147,483,647 
long double chiếm 128 bits (16 bytes) 
36 
Kiểu dữ liệu & phạm vi giá trị 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Kiểu 
Dung lượng 
tính bằng bit 
Phạm vi 
char 
8 
-128 tới 127 
Unsigned ch ar 
8 
0 tới 255 
signed char 
8 
-128 tới 127 
int 
16 
-32,768 tới 32,767 
unsigned int 
16 
0 tới 65,535 
signed int 
16 
Giống như kiểu int 
short int 
16 
Giống như kiểu int 
unsigned short int 
16 
0 tới 65, 535 
37 
Kiểu dữ liệu & phạm vi giá trị (tt.) 
Kiểu 
Dung lượng 
tính bằng bit 
Phạm vi 
signed short int 
16 
Giống như kiểu short int 
long int 
32 
-2,147,483,648 tới 2,147,483,647 
signed long int 
32 
0 tới 4,294,967,295 
unsigned long int 
32 
Giống như kiểu long int 
float 
32 
6 con số thập phân 
double 
64 
10 con số thập phân 
long double 
128 
10 con số thập phân 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
38 
Ví dụ về cách khai báo biến 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
	 main () 
	{ 
	char abc;	 /*abc of type character */ 
	int xyz;	 	 /*xyz of type integer */ 
	float length; /*length of type float */ 
	double area;	 /*area of type double */ 
	long liteyrs; /*liteyrs of type long int */ 
	short arm;	 /*arm of type short integer*/ 
	} 
39 
Các toán tử số học (Arithmetic Operators) 
Toán tử 1 ngôi 
Chức năng 
Toán tử 2 ngôi 
Chức năng 
- 
L ấy đối số 
+ 
C ộng 
++ 
Tăng 1 
- 
Trừ 
- - 
Giảm 1 
* 
Nhân 
% 
Lấy phần dư 
/ 
Chia 
^ 
Lấy số mũ 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
40 
Bài tập 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Cho tam giác ABC có góc vuông A và cho biết cạnh a và góc B. Hãy viết thuật toán để tính góc C, cạnh b và cạnh c 
Chỉ dùng phép cộng, tính bình phương của một số 
Tính nghiệm xấp xỉ với độ chính xác ε = 0.000001 của phương trình f(x)= e x - x 3 = 0 
41 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Biểu thức (Expressions) 
 Sự kết hợp các toán tử và các toán hạng 
Toán hạng 
Toán Tử 
Ví dụ : 2 * y + 5 
42 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Toán tử gán 
variable_name = expression; 
lvalue 
rvalue 
Assignment 
operator 
 Toán tử gán (=) có thể được dùng với bất kỳ biểu thức C hợp lệ nào 
(Giá trị trái) 
(Giá trị phải) 
(Toán tử gán) 
(Tên biến) 
(Biểu thức) 
43 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Gán liên tiếp 
a = b = c = 10; 
 
Tuy nhiên, không thể áp dụng quy tắc trên khi khai báo biến 
int a = int b = int b = int c = 10 
X 
Nhiều biến có thể được gán với cùng một giá trị trong một câu lệnh đơn 
44 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Bốn Kiểu Toán Tử 
Số học 
(Arithmetic) 
Quan hệ 
(Relational) 
Luận Lý 
(Logical) 
Nhị phân 
(Bitwise) 
45 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Biểu thức số học 
Biểu thức số học có thể được biểu diễn trong C bằng cách sử dụng các toán tử số học 
Ví dụ : 
a * (b + c/d) - 22 
++i % 7 
5 + (c = 3 + 8) 
46 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Toán tử số học 
47 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Toán tử quan hệ và logic 
Ðược dùng để : 
Kiểm tra mối quan hệ giữa hai biến hay giữa một biến và một hằng 
Toán tử quan hệ 
Toán tử 
Ý nghĩa 
> 
Lớn hơn 
>= 
Lớn hơn hoặc bằng 
< 
Nhỏ hơn 
<= 
Nhỏ hơn hoặc bằng 
== 
Bằng 
!= 
Không bằng 
48 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Toán tử logic là những ký hiệu dùng để kết hợp hay phủ định biểu thức chứa các toán tử quan hệ 
Toán tử quan hệ và logic (tt.) 
Những biểu thức dùng toán tử logic trả về 0 thay cho false và 1 thay cho true 
Ví dụ: if (a>10) && (a<20) 
Toán tử 
Ý nghĩa 
&& 
AND : Kết quả là True khi cả 2 điều kiện đều đúng 
|| 
OR : Kết quả là True khi chỉ một trong hai điều kiện là đúng 
! 
NOT : Tác động trên các giá trị riêng lẻ, chuyển đổi True thành False và ngược lại. 
49 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Toán tử logic nhị phân 
Dữ liệu chỉ được xử lý sau khi đã chuyển đổi giá trị SỐ thành giá trị NHỊ PHÂN 
Toán tử 
Mô tả 
Bitwise AND 
( x & y) 
Mỗi vị trí của bit trả về kết quả là 1 nếu bit của hai toán hạng là 1. 
Bitwise OR 
( x | y) 
Mỗi vị trí của bit trả về kết quả là 1 nếu bit của một trong hai toán hạng là 1. 
Bitwise NOT 
( ~ x) 
Ðảo ngược giá trị của toán hạng (1 thành 0 và ngược lại). 
Bitwise XOR 
( x ^ y) 
Mỗi vị trí của bit chỉ trả về kết quả là 1 nếu bit của một trong hai toán hạng là 1 mà không không phải cả hai toán hạng cùng là 1. 
50 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Toán tử logic nhị phân (tt.) 
Ví dụ 
 10 & 15 1010 & 1111 1010 10 
 10 | 15 1010 | 1111 1111 15 
 10 ^ 15 1010 ^ 1111 0101 5 
51 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Chuyển đổi kiểu 
Qui tắc chuyển đổi kiểu tự động trình bày dưới đây nhằm xác định giá trị biểu thức: 
 char và short được chuyển thành int và float được chuyển thành double. 
 Nếu có một toán hạng là double, toán hạng còn  ... False OR True AND NOT False AND True 
Ðiều kiện này được tính như sau: 
False OR True AND [NOT False] AND True 
NOT có độ ưu tiên cao nhất. 
False OR True AND [True AND True] 
Ở đây, AND có độ ưu tiên cao nhất, những toán tử có cùng ưu tiên được tính từ phải sang trái. 
False OR [True AND True] 
 [False OR True] 
Độ ưu tiên của toán tử luận lý (tt.) 
True 
58 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Thứ tự ưu tiên 
Kiểu toán tử 
1 
Số học (Arithmetic) 
2 
So sánh (Comparison) 
3 
Luận lý (Logical) 
Khi một biểu thức có nhiều loại toán tử thì độ ưu tiên giữa chúng phải được thiết lập. 
Độ ưu tiên giữa các toán tử 
59 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Độ ưu tiên giữa các toán tử (tt.) 
Ví dụ : 
2*3+4/2 > 3 AND 3<5 OR 10<9 
Việc tính toán như sau : 
[2*3+4/2] > 3 AND 3<5 OR 10<9 
Toán tử số học sẽ được tính trước 
[[2*3]+[4/2]] > 3 AND 3<5 OR 10<9 
[6+2] >3 AND 3<5 OR 10<9 
[8 >3] AND [3<5] OR [10<9] 
60 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Kế đến là toán tử so sánh có cùng độ ưu tiên. Ta áp dụng quy tắc tính từ trái sang phải. 
True AND True OR False 
Cuối cùng là toán tử kiểu luận lý. AND sẽ có độ ưu tiên cao hơn OR 
[True AND True] OR FalseTrue OR False 
True 
Độ ưu tiên giữa các toán tử (tt.) 
61 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Thay đổi độ ưu tiên 
Dấu ngoặc đơn ( ) có độ ưu tiên cao nhất 
Độ ưu tiên của các toán tử có thể được thay đổi bởi dấu ngoặc đơn 
Toán tử có độ ưu tiên thấp hơn nếu đặt trong dấu ngoặc đơn sẽ được thực thi trước 
Khi các cặp ngoặc đơn lồng nhau ( ( ( ) ) ), cặp ngoặc đơn trong cùng nhất sẽ được thực thi trước 
Nếu trong biểu thức có nhiều cặp ngoặc đơn thì việc thực thi sẽ theo thứ tự từ trái sang phải 
62 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Ví dụ : 
5+9*3^2-4 > 10 AND (2+2^4-8/4 > 6 OR (211)) 
Cách tính : 
1) 5+9*3^2-4 > 10 AND (2+2^4-8/4 > 6 OR (True AND False)) 
Dấu ngoặc đơn bên trong sẽ được tính trước 
2) 5+9*3^2-4 > 10 AND (2+2^4-8/4 > 6 OR False) 
Thay đổi độ ưu tiên (tt.) 
63 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
3) 5+9*3^2-4 >10 AND (2+16-8/4 > 6 OR False) 
Kế đến dấu ngoặc đơn ở ngoài được tính đến 
 5+9*3^2-4 > 10 AND (2+16-2 > 6 OR False) 
 5+9*3^2-4 > 10 AND (18-2 > 6 OR False) 
6) 5+9*3^2-4 > 10 AND (16 > 6 OR False) 
7) 5+9*3^2-4 > 10 AND (True OR False) 
8) 5+9*3^2-4 > 10 AND True 
Thay đổi độ ưu tiên (tt.) 
64 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
5+9*9-4>10 AND True 
Biểu thức bên trái được tính trước 
5+81-4>10 AND True 
11) 86-4>10 AND True 
12) 82>10 AND True 
13) True AND True 
14) True 
Thay đổi độ ưu tiên (tt.) 
65 
Nhập/Xuất chuẩn 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Thư viện chuẩn trong C cung cấp các hàm xử lý cho việc nhập và xuất. 
Thư viện chuẩn có các hàm I/O, dùng để quản lý việc nhập, xuất, các thao tác trên ký tự và chuỗi. 
Thiết bị nhập chuẩn thường là bàn phím. 
Thiết bị xuất chuẩn thường là màn hình (console). 
Nhập và xuất có thể được xử lý qua các tập tin thay vì từ các thiết bị chuẩn. 
66 
Tập tin Header 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
#include 
Đây là câu lệnh tiền xử lý 
stdio.h là tập tin header (header file) 
Chứa các macro sử dụng cho nhiều hàm nhập/xuất trong C 
Các macro trong stdio.h giúp các hàm printf(), scanf(), putchar(), getchar() thực thi 
67 
Nhập/Xuất được định dạng 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
printf( ) – Dùng cho xuất có định dạng 
scanf( ) – Sử dụng để nhập có định dạng 
Các đặc tả định dạng - qui định dạng thức mà theo đó giá trị của biến được nhập vào và in ra 
68 
printf ( ) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Được dùng để hiển thị dữ liệu ra thiết bị xuất chuẩn như màn hình (console) 
Cú pháp printf ( “control string”, argument list); 
Danh sách đối số (argument list) chứa hằng, biến, biểu thức hoặc các hàm phân cách bởi dấu phẩy 
Phải có một lệnh định dạng trong “ control string ” cho mỗi đối số trong danh sách 
Các lệnh định dạng phải khớp với danh sách đối số về số lượng, kiểu và thứ tự. 
control string luôn được đặt trong dấu nhấy kép “ ”, đây là dấu phân cách 
69 
printf ( ) (tt.) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
 control string chứa một trong ba kiểu phần tử sau: 
Các ký tự văn bản : 
 gồm các ký tự có thể in được 
Các lệnh định dạng : 
 bắt đầu với ký hiệu % và theo sau là một mã định dạng tương ứng cho từng phần tử dữ liệu 
Các ký tự không in được : 
 gồm tab, blank và new_line 
70 
Mã định dạng 
Định dạng 
printf() 
scanf() 
Ký tự đơn (single character) 
%c 
%c 
Chuỗi (string) 
%s 
%s 
Số nguyên có dấu (signed decimal integer) 
%d 
%d 
Kiểu float - dạng dấu chấm thập phân (decimal notation) 
%f 
%f hoặc %e 
Kiểu float - dạng dấu chấm thập phân 
%lf 
%lf 
Kiểu float - dạng lũy thừa (exponential notation) 
%e 
%f or %e 
Kiểu float ( %f hay %e , khi ngắn hơn) 
%g 
Số nguyên không dấu (unsigned decimal integer) 
%u 
%u 
Số nguyên hệ 16 không dấu - sử dụng “ABCDEF” (unsigned hexadecimal integer) 
%x 
%x 
Số nguyên hệ 8 không dấu (unsigned octal integer) 
%o 
%o 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Trong bảng trên : c, d, f, lf, e, g, u, s, o và x là các bộ đặc tả kiểu 
71 
Mã định dạng (tt.) 
Mã định dạng 
Các qui ước in 
%d 
Các con số trong số nguyên 
%f 
Các chữ số phần nguyên sẽ được in ra. Phần thập phân sẽ chỉ in 6 chữ số. Nếu phần thập phân ít hơn 6 chữ số, nó sẽ được thêm các chữ số 0 vào từ bên phải, ngược lại nó sẽ làm tròn số từ bên phải. 
%e 
Một con số bên trái của dấu chấm thập phân và 6 vị trí bên phải, như %f ở trên 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
72 
Mã định dạng (tt.) 
STT 
Lệnh 
Chuỗi điều khiển 
Nội dung chuỗi điều khiển 
Danh sách đối số 
Giải thích danh sách đối số 
Hiển thị trên màn hình 
1. 
printf(“%d”,300); 
%d 
Chỉ chứa lệnh định dạng 
300 
Hằng 
300 
2. 
printf(“%d”,10+5); 
%d 
Chỉ chứa lệnh định dạng 
10 + 5 
Biểu thức 
15 
3. 
printf(“Good Morning Mr. Lee.”); 
Good Morning Mr. Lee. 
Chỉ chứa các ký tự văn bản 
Rỗng 
Rỗng 
Good Morning Mr. Lee. 
4. 
int count = 100; 
printf(“%d”,count); 
%d 
Chỉ chứa lệnh định dạng 
count 
Biến 
100 
5. 
printf(“\nhello”); 
\nhello 
Chứa ký tự không được in và các ký tự văn bản 
Rỗng 
Rỗng 
hello on a new line 
6. 
#define str “Good Apple “ 
.. 
printf(“%s”,str); 
%s 
Chỉ chứa lệnh định dạng 
str 
Hằng ký hiệu 
Good Apple 
7. 
.. 
int count,stud_num; 
count=0; 
stud_num=100; 
printf(“%d %d\n”,count, stud_num); 
%d %d 
Chứa lệnh định dạng và ký tự không được in 
count, stud_num 
Hai biến 
0 , 100 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
73 
Các ký tự đặc biệt 
\\ 
In ra ký tự \ 
\ “ 
In ra ký tự “ 
%% 
In ra ký tự % 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
74 
Ví dụ cho hàm printf() 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Chương trình hiển thị số nguyên, thập phân, ký tự và chuỗi 
#include 
void main() 
{ 
	int a = 10; 
	float b = 24.67892345; 
	char ch = ‘A’; 
	 printf(“Integer data = %d”, a); 
	 printf(“Float Data = %f”,b); 
	printf(“Character = %c”,ch); 
	printf(“This prints the string”); 
	printf(“%s”,”This also prints a string”); 
} 
75 
Ví dụ cho hàm printf() 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
K ết quả hiện ra ở màn hình là: 
	 Integer data = 10 
	 Float Data = 24.678923 
	Character = A 
	This prints the string 
	This also prints a string 
76 
Bổ từ trong hàm printf( ) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
1. Bổ từ ‘-‘ 
 Phần tử dữ liệu sẽ được canh lề trái, phần tử sẽ được in bắt đầu từ vị trí bên trái trong cùng của trường. 
2. Bổ từ xác định độ rộng trường 
 Có thể được sử dụng với kiểu float, double hoặc mảng ký tự (chuỗi). Độ rộng trường là một số nguyên xác định độ rộng nhỏ nhất cho phần tử dữ liệu. 
77 
Bổ từ trong hàm printf( ) (tt.) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
3. Độ chính xác 
 Được sử dụng với kiểu float, double hoặc mảng ký tự (chuỗi). Nếu dùng với kiểu float hay double, chuỗi con số xác định số lượng lớn nhất các con số được in bên phải dấu chấm thập phân. 
4. Bổ từ ‘0’ 
 Mặc định thì khoảng trống sẽ được thêm vào một trường. Nếu người dùng muốn thêm số 0 vào trường thì bổ từ ‘0’ được dùng 
5. Bổ từ ‘l’ 
 Bổ từ này có thể được dùng hiển thị các đối số nguyên kiểu int hay double. Mã định dạng tương ứng là %ld 
78 
Bổ từ trong hàm printf( ) (tt.) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
6. Bổ từ ‘h’ 
 Bổ từ này được sử dụng để hiển thị dạng short int. Mã định dạng tương ứng như là %hd 
7. Bổ từ ‘*’ 
 Nếu người dùng không muốn xác định độ rộng trường nhưng muốn chương trình xác định điều đó, bổ từ này được sử dụng 
79 
Ví dụ về các bổ từ 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
/* Chương trình minh họa dùng bổ từ với printf() */ 
#include 
void main(){ 
	printf(“The number 555 in various forms:\n”); 
	printf(“Without any modifier: \n”); 
	printf(“[%d]\n”,555); 
	printf(“With – modifier :\n”); 
	printf(“[%-d]\n”,555); 
	printf(“With digit string 10 as modifier :\n”); 
	printf(“[%10d]\n”,555); 
	printf(“With 0 as modifier : \n”); 
	printf(“[%0d]\n”,555); 
	printf(“With 0 and digit string 10 as modifiers :\n”); 
	printf(“[%010d]\n”,555); 
	printf(“With -,0 and digit string 10 as modifiers:\n”); 
	printf(“[%-010d]\n”,555); 
} 
80 
Ví dụ về các bổ từ 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
K ết quả hiện ra màn hình: 
81 
scanf( ) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Được sử dụng để nhập dữ liệu 
 Dạng tổng quát của hàm scanf() 
 scanf(“control string”, argument list); 
 Những định dạng dùng trong hàm printf() cũng được sử dụng với cùng cú pháp trong hàm scanf() 
82 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
printf() sử dụng các tên biến, hằng, hằng biểu tượng và các biểu thức 
 scanf() sử dụng các con trỏ tới biến 
Danh sách đối số trong scanf() phải theo qui tắc : 
Đọc giá trị vào một biến có kiểu dữ liệu cơ sở, sử dụng ký hiệu & trước tên biến 
Đọc giá trị vào một biến có kiểu dữ liệu dẫn xuất, không sử dụng & trước tên biến 
Sự khác nhau về danh sách đối số giữa printf( ) và scanf( ) 
83 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Không có tuỳ chọn %g 
Mã định dạng %f và %e là giống nhau 
Sự khác nhau về các lệnh định dạng giữa printf( ) và scanf( ) 
84 
Ví dụ với hàm scanf( ) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
#include 
void main(){ 
	int a; 
	float d; 
	char ch, name[40]; 
	printf(“Please enter the data\n”); 
	 scanf(“%d %f %c %s”,&a,&d,&ch,name); 
	printf(“\n The values accepted are: 
	%d,%f,%c,%s”,a, d,ch,name); 
} 
85 
Vùng đệm Nhập/Xuất 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Được sử dụng để đọc và viết các ký tự ASCII 
Một vùng đệm (buffer) là một không gian lưu trữ tạm thời trong bộ nhớ hoặc trên thẻ điều khiển thiết bị 
Bộ đệm Nhập/Xuất có thể chia làm : 
 Console I/O 
 Buffered File I/O 
86 
Console I/O 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Các hàm Console I/O chuyển các thao tác đến thiết bị xuất nhập chuẩn của hệ thống 
Trong ‘C’ các hàm console I/O đơn giản nhất là: 
getchar( ) - đọc một và chỉ một ký tự từ bàn phím 
putchar( ) - xuất một ký tự lên màn hình 
87 
getchar( ) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Dùng đọc dữ liệu nhập, một ký tự từ bàn phím 
Các ký tự đặt trong vùng đệm đến khi người dùng gõ phím enter 
Hàm getchar( ) không có đối số, nhưng vẫn phải có cặp dấu ngoặc ( ) 
88 
Ví dụ hàm getchar() 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
/*Program to demonstrate the use of getchar()*/ 
#include 
void main() 
{ 
	char letter; 
	printf(“\nPlease enter any character:“); 
	 letter = getchar(); 
	printf(“\nThe character entered by you 
is %c“, letter); 
} 
89 
putchar( ) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
Hàm xuất ký tự trong ‘C’ 
Có một đối số 
Đối số của một hàm putchar( ) có thể là: 
Một hằng ký tự đơn 
Một mã định dạng 
Một biến ký tự 
90 
Các tùy chọn và chức năng của putchar( ) 
Tham số 
Hàm 
Chức năng 
Bi ế n ký t ự 
putchar(c) 
Hi ển thị nội dung biến ký tự c 
H ằng ký tự 
putchar(‘A’) 
H ằng ký tự A 
H ằng số 
putchar(‘5’) 
H ằng số 5 
M ã định dạng 
putchar(‘\t’) 
Ch èn ký tự khoảng trắng 
M ã định dạng 
putchar(‘\n’) 
Ch èn ký tự xuống dòng 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
91 
putchar( ) 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
/* This program demonstrates the use of constants and escape sequences in putchar()*/ 
#include 
void main(){ 
	putchar(‘H’); putchar(‘\n’); 
	putchar(‘\t’); 
	putchar(‘E’); putchar(‘\n’); 
Ví dụ 
	putchar(‘\t’); putchar(‘\t’); 
	putchar(‘L’); putchar(‘\n’); 
	putchar(‘\t’); putchar(‘\t’); putchar(‘\t’); 
	putchar(‘L’); putchar(‘\n’); 
	putchar(‘\t’); putchar(‘\t’); putchar(‘\t’); 
	putchar(‘\t’); 
	putchar(‘O’); 
} 
92 
Tóm tắt nội dung 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
93 
Sự ra đời ngôn ngữ lập trình C và ý nghĩa sử dụng 
Các kiểu dữ liệu cơ bản trong C 
Biến, hằng và biểu thức 
Các phép toán 
Cấu trúc chương trình 
Hàm main và đối số dòng lệnh 
Khai báo biến 
Phát biểu include 
Câu lệnh 
Xuất dữ liệu ra thiết bị chuẩn: các hàm putchar, printf 
Nhập dữ liệu từ thiết bị chuẩn: các hàm getchar, scanf 
THẢO LUẬN 
Hàm main() sử dụng với đối số dòng lệnh 
Các hàm xuất, nhập khác 
Sử dụng Dev-C++ 
94 
Giải thuật xử lý thông tin và ngôn ngữ lập trình 
CÂU HỎI VÀ BÀI TẬP 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
95 
Bài 1: Hãy dùng câu lệnh printf() để : 
a)	Xuất ra giá trị của biến số nguyên sum. 
b)	Xuất ra chuỗi văn bản "Welcome", tiếp theo là một dòng mới. 
c)	Xuất ra biến ký tự letter. 
d)	Xuất ra biến số thực discount. 
e)	Xuất ra biến số thực dump có 2 vị trí phần thập phân. 
1. Dùng câu lệnh scanf() và thực hiện: 
a) Ðọc giá trị thập phân từ bàn phím vào biến số nguyên sum. 
b) Ðọc một giá trị số thực vào biến discount_rate. 
Bài 2: Viết một chương trình xuất ra giá trị ASCII của các ký tự ‘A’ và ‘b’. 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
96 
Bài 3: Xét chương trình sau: 
#include 
void main() 
{ 
	int breadth; 
	float length, height; 
	scanf(“%d%f%6.2f”, breadth, &length, height); 
	printf(“%d %f %e”, &breadth, length, height); 
} 
Sửa lỗi chương trình trên. 
CÂU HỎI VÀ BÀI TẬP 
Các khái niệm cơ bản trong ngôn ngữ lập trình C 
97 
Bài 4. Viết một chương trình nhập vào name, basic, daper (phần trăm của D.A), bonper (phần trăm lợi tức) và loandet (tiền vay bị khấu trừ) cho một nhân viên. Tính lương như sau: 
salary = basic + basic * daper/100 + bonper * basic/100 - loandet 
Bảng dữ liệu: 
	name	basic	daper	bonper	loandet 
 MARK	2500	 55	 33.33 	250.00 
Tính salary và xuất ra kết quả dưới các đầu đề sau (Lương được in ra gần dấu đôla ($)): 
	Name	Basic	Salary 
Bài 5. Viết một chương trình yêu cầu nhập vào tên, họ của bạn và sau đó xuất ra tên, họ theo dạng là họ, tên. 
CÂU HỎI VÀ BÀI TẬP 
HỎI VÀ ĐÁP 
Máy tính điện tử và xử lý thông tin 

File đính kèm:

  • pptbai_giang_lap_trinh_co_ban_bai_6_cac_khai_niem_co_ban_trong.ppt