Bài giảng Ngôn ngữ lập trình C - Chương 2: Các yếu tố cơ bản của ngôn ngữ C cung cấp cho người học các kiến thức: Từ vựng trong C, biểu thức, hàm vào/ra dữ liệu chuẩn, các câu lệnh điều khiển. Mời các bạn cùng tham khảo.
Trang 1Chương 2
Các yếu tố cơ bản của ngôn ngữ C
Trang 2Chương 2 - Các yếu tố cơ bản của ngôn ngữ C
Từ vựng trong C
Biểu thức
Hàm vào/ra dữ liệu chuẩn
Các câu lệnh điều khiển
Trang 4< , > , ? , ( , )
Các ký tự không hiển thị ra màn hình: space , tab ,
enter
Trang 5Từ vựng trong C
Từ khóa
Là những từ dành riêng cho một ngôn ngữ lập trình
Một số từ khóa thường dung:
const, enum, signed, struct, typedef, unsigned…
char, double, float, int, long, short, void
case, default, else, if, switch
do, for, while
break, continue, goto, return
Trang 6Từ vựng trong C
Tên/Định danh (Identifier)
Một dãy ký tự dùng để chỉ tên một hằng số, hằng ký tự, tên một biến, một kiểu dữ liệu, một hàm một hay thủ tục.
Quy tắc đặt tên:
Ký tự đầu tiên có thể là chữ cái hoặc dấu gạch dưới _
Các ký tự sau đó (nếu có) có thể là chữ cái, dấu gạch dưới hoặc số.
1 la những tên không hợp lệ
Trang 7Từ vựng trong C
Đối tượng dữ liệu: gồm các thuộc tính
Kiểu dữ liệu: chỉ ra loại dữ liệu có thể được lưu trữ
Giá trị: hiện đang được lưu trong đối tượng dữ liệu
Địa chỉ: vị trí của đối tượng dữ liệu trong bộ nhớ
Tên: dùng để xác định đối tượng dữ liệu
Kiểu dữ liệu
Mỗi kiểu dữ liệu có tên và kích thước nhất định.
Có miền giá trị xác định
Trang 10Từ vựng trong C
Kiểu dữ liệu
Kiểu nguyên
short, int, long
Kích thước và phạ vi biểu diễn:
int / signed int -32768 đến 32767 2/4 bytes
short / signed short -32768 đến 32767 2 bytes
long / signed long -2147483648 đến 2147483647 4 bytes
Trang 11Từ vựng trong C
Kiểu dữ liệu
Kiểu số phẩy động
float, double, long double
Kích thước và phạm vi biểu diễn:
Kiểu Phạm vi biểu diễn Kích thước
float 3.4E-38 đến 3.4E+38 4 bytes
double 1.7E-308 đến 1.7E+308 8 bytes
long
double
Trang 13Từ vựng trong C
Hằng
Là đại lượng mà giá trị của nó không thay đổi trong suốt
quá trình hoạt động của chương trình
Hằng ký tự: ký tự đơn được viết trong dấu nháy đơn
Hằng kiểu chuỗi: một dãy các ký tự liên tục được đặt
trong dấu nháy kép
Trang 14Từ vựng trong C
Biến
Là một đối tượng dữ liệu có giá trị thay đổi trong quá
trình hoạt động của chương trình
Cú pháp khai báo:
<Kiểu_dữ_liệu> <Tên_biến>;
Ví dụ
int a,b,c; Khai báo ba biến int là a,b,c
long dai,mn; Khai báo hai biến long là dai và mn
char kt1,kt2; Khai báo hai biến ký tự là kt1 và kt2
float x,y Khai báo hai biến float là x và y
double canh1,canh2; Khai báo hai biến double là canh1 và canh2
Trang 15Từ vựng trong C
Biến (t.)
Vị trí khai báo biến:
Các biến ngoài:
Là các biến được khai báo bên ngoài hàm
Phạm vi sử dụng được tính từ vị trí khai báo đến cuối chương trình
Trang 17Biểu thức
Là sự kết hợp giữa toán tử và toán hạng để
diễn đạt một công thức toán học nào đó
Mỗi biểu thức có một giá trị trả về
Biểu thức thường được dùng trong:
Vế phải của câu lệnh gán
Đối số của hàm
Làm chỉ số cho phần tử của mảng
Trong các biểu thức điều kiện
Trang 18Biểu thức
Toán tử:
Là các phép toán được ngôn ngữ lập trình hỗ trợ trựctiếp
Được biểu diễn thông qua các ký hiệu
Phân loại: 1 ngôi, 2 ngôi, 3 ngôi
Một số toán tử thông dụng
Toán tử số học: + - * / %
Toán tử quan hệ: == > < >= <= !=
Toán tử gán: = += -= *= /=
Toán tử tăng, giảm trị: ++
Toán tử logic: && || !
Toán tử trên bit gồm: & | ~ ^
Trang 20Biểu thức
Phép toán chuyển đổi kiểu dữ liệu:
Trong biểu thức gồm các toán hạng khác kiểu, kiểu thấp
hơn sẽ được tự động nâng thành kiểu cao hơn trước khi thực hiện phép toán Điều này được gọi là tăng cấp kiểu
Cấp của kiểu dữ liệu theo thứ tự:char < int < long < float <
double
Giá trị của kiểu dữ liệu này được gán cho 1 biến có kiểu dữ liệu khác Việc này xảy ra trong lệnh gán hoặc truyền giá trị
các tham số, kiểu dữ liệu được tự động đổi kiểu như sau:
Giá trị của vế phải được chuyển sang kiểu của vế trái đó là kiểu của kết quả
Kiểu int có thể được chuyển thành float
Kiểu float có thể chuyển thành int do chặt đi phần sau dấu phảy
Kiểu double chuyển thành float bằng cách làm tròn
Kiểu long được chuyển thành int.
Trang 21Biểu thức
Phép toán chuyển đổi kiểu dữ liệu:
Ngoài ra, có thể thực hiện chuyển kiểu giá trị bằngphép chuyển kiểu (ép kiểu)
Cú pháp: (Kiểu_dữ_liệu_mới) <Biểu_thức>;
Trang 23 Văn bản thường (literal text)
Ký tự điều khiển (escape sequence)
Đặc tả (conversion specifier)
Trang 24Nhập/xuất dữ liệu
Văn bản thường (literal text)
Được xuất y hệt như lúc gõ trong chuỗi định dạng
Trang 25Nhập/xuất dữ liệu
Gồm dấu \ và một ký tự như trong bảng sau:
In dấu \
In dấu ?
In dấu “
Trang 26Nhập/xuất dữ liệu
Đặc tả (conversion specifier):
%[-][fw][.pp]<kí tự định dạng>
Ý nghĩa:
Dấu -: căn lề cho dữ liệu
Có dấu - : kết quả in ra được căn trái
Không có dấu - : kết quả được căn theo bên phải
fw: xác định kích thước tối thiểu để in
pp:
Đối số kiểu double/float: pp là độ chính xác của giá trị in ra
Đối số là xâu ký tự:
pp nhỏ hơn độ dài của xâu: in ra pp ký tự đầu tiên của xâu
Không có pp hoặc pp lớn hơn độ dài xâu: in ra toàn bộ xâu
Đối số là số nguyên: số ký tự được in ra (điền thêm số 0 nếu cần)
Trang 27Số nguyên không dấu
char char, int, short, long float, double
char[], char*
unsigned int/short/long
Trang 30Nhập/xuất dữ liệu
Ví dụ: cho a và b kiểu số nguyên
Các câu lệnh sau đây sai
scanf(“%d”, &a); // Nhập giá trị cho biến a
scanf(“%d”, &b); // Nhập giá trị cho biến b
//scanf(“%d%d”, &a, &b);
scanf(“%d”, a); // Thiếu dấu &
scanf(“%d”, &a, &b);// Thiếu %d cho biến b
scanf(“%f”, &a); // a là biến kiểu số nguyên
scanf(“%9d”, &a); // không được định dạng
scanf(“a = %d, b = %d”, &a, &b”); //chứa ký tự khác
Trang 31Các câu lệnh điều khiển
Câu lệnh điều khiển rẽ nhánh
Câu lệnh if … else
Câu lệnh switch … case
Câu lệnh điều khiển lặp
Câu lệnh for
Câu lệnh while
Câu lệnh do … while
Trang 32Các câu lệnh điều khiển
Câu lệnh if … else
Bài toán: Xác định 1 năm có phải là năm nhuận
Lệnh if là lệnh cho phép thực hiện hay không thực hiện một khối lệnh nào đó tùy thuộc vào tính đúng của biểu thức.
Trang 33Các câu lệnh điều khiển
Câu lệnh if … else
Trang 34Các câu lệnh điều khiển
Câu lệnh if … else
Trong C, cho phép sử dụng nhiều câu lệnh if lồng
nhau
Máy sẽ ghép lệnh else với lệnh if không có else gần nhất
Chú ý: nên sử dụng dấu {} để tránh nhầm lẫn if-else của câu
lệnh này với câu lệnh khác
Khi muốn thực hiện 1 trong n quyết định
if (biểu thức 1)
khối lệnh 1
else if (biểu thức 2)
khối lệnh 2
else
khối lệnh n
Trang 35Các câu lệnh điều khiển
Ví dụ:
Viết chương trình nhập vào hai số nguyên n, k Kiểm tra xem n có chia hết cho k hay không, nếu có in ra màn hình dưới định dạng: n chia het cho k (Ví dụ: 6 chia hết cho 3), nếu không in
ra màn hình dòng chữ “khong chia het”.
Viết chương trình giải phương trình bậc nhất.
Viết chương trình giải phương trình bậc 2 (kể
cả trường hợp có nghiệm phức)
Trang 36Các câu lệnh điều khiển
Trang 37Các câu lệnh điều khiển
Trang 38Các câu lệnh điều khiển
Trang 39Các câu lệnh điều khiển
Câu lệnh switch … case
Có thể sử dụng câu lệnh switch để chọn 1 trong nhiều quyết
case n2:
khối lệnh 2 break;
case nk:
khối lệnh k break;
[ default:
khối lệnh k+1 break;]
Sự hoạt động của switch:
• Giá trị biểu thức bằng ni,
chương trình hoạt động tại nhãn
case ni, cho đến khi gặp break.
• Nếu giá trị biểu thức khác với tất
cả các ni, sẽ thực hiện lệnh sau default, hoặc thoát khỏi switch.
Trang 40Các câu lệnh điều khiển
Câu lệnh switch … case
Trang 41Các câu lệnh điều khiển
Câu lệnh switch … case
Ví dụ:
Viết chương trình đọc các số từ 0 đến 9 Nếu nằm ngoài khoảng
đó, in ra dòng thông báo: “Khong doc duoc”.
Viết chương trình in ra số ngày trong tháng, nếu là tháng 2 yêu cầu nhập thêm năm để tính ngày.
Trang 42Các câu lệnh điều khiển
Câu lệnh for
Bài toán: in ra bảng cửu chương của 3?
Lệnh for cho phép thực hiện lặp lại 1 số câu lệnh tuân
theo một số quy luật nào đó
<Lệnh> Đ
S
<Đ/K lặp>
<Khởi đầu>
<Bước nhảy>for (<Khởi đầu>; <Đ/K lặp>; <Bước nhảy>)
<Lệnh>;
Trang 43Các câu lệnh điều khiển
Câu lệnh for
Ví dụ
Một số lưu ý:
1 Câu lệnh for là câu lệnh đơn, và có thể lồng nhau
2 Các phần khởi đầu, bước nhảy, điều kiện lặp có thể không
xuất hiện
3 Lệnh break làm kết thúc câu lệnh.
4 Lệnh continue bỏ qua lần lặp hiện tại.
5 Các thành phần <Khởi đầu>, <Đ/K lặp>, <Bước nhảy> cách
nhau bằng dấu ; (bắt buộc phải có!)
6 Nếu có nhiều thành phần trong mỗi phần thì được cách nhau
bằng dấu ,
int i;
for ( i = 1; i <= 9; i++ )
printf ( "3x%d = %d\n", i, i*3 ) ;
Trang 44Các câu lệnh điều khiển
Trang 45Các câu lệnh điều khiển
Trang 46Các câu lệnh điều khiển
}
Trang 47Các câu lệnh điều khiển
Btoán: in ra các bội số (nhỏ hơn 20) của 2?
Lệnh while là lệnh thực hiện 1 số câu lệnh khi thỏa mãn một
điều kiện nào đó.
Trang 48Các câu lệnh điều khiển
Câu lệnh while
Một số lưu ý:
Câu lệnh while là câu lệnh đơn, có thể đặt lồng nhau
Câu lệnh while có thể không thực hiện lần nào
Câu lệnh while có thể lặp vô tận
vòng lặp
Trang 49Các câu lệnh điều khiển
câu lệnh khi còn thỏa mãn một điều kiện nào đó.
Trang 50Các câu lệnh điều khiển
Câu lệnh do…while
Một số lưu ý:
Câu lệnh do … while là câu lệnh đơn, có thể đặt lồng
nhau
Câu lệnh do … while thực hiện ít nhất 1 lần
Câu lệnh do … while có thể lặp vô tận
vòng lặp
Trang 51Các câu lệnh điều khiển
So sánh 3 câu lệnh lặp
Đều có khả năng lặp lại một (hoặc nhiều) hành độngnhiều lần
Câu lệnh for có số vòng lặp được xác định trước
while có thể không thực hiện lần nào
do… while sẽ được thực hiện ít nhất 1 lần
Trang 52Các câu lệnh điều khiển
Bài tập trên lớp: Sử dụng các câu lệnh điều
khiển thực hiện các bài sau
Viết chương trình nhập vào một số nguyên dương
không lớn hơn 10000, in ra màn hình tổng các chữ sốcủa số đó (ví dụ nhập n = 1356 in ra 15) Chương
trình chỉ cho phép người dùng nhập các giá trị từ 1 –
10000, nếu nằm ngoài vùng giá trị trên yêu cầu nhậplại
Viết chương trình in ra 3 số hoàn thiện bé nhất Sốhoàn thiện n là số nguyên dương mà tổng các ướcnguyên dương (nhỏ hơn n) bằng n VD: 28 =
1+2+4+7+14;
Trang 53Các câu lệnh điều khiển
Viết chương trình C
thực hiện thuật toán
theo sơ đồ khối hình
bên