Từ 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ố.
VD: x1, temp, _bien1 là những tên hợp lệ; 1abc, bai
1 la những tên không hợp lệTừ 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
54 trang |
Chia sẻ: thanhle95 | Lượt xem: 783 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu 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 - Nguyễn Thị Hiền, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 2
Các yếu tố cơ bản của
ngôn ngữ C
Chươ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
Từ vựng trong C
Tập ký tự
Tên
Từ khóa
Các kiểu dữ liệu
Hằng
Biến
Từ vựng trong C
Tập ký tự
26 chữ cái hoa: A, B, , Z
26 chữ cái thường: a, b, , z
10 chữ số: 0, 1, 9
Các ký tự đồ họa: +, -, *, /, =, !, #, %, ^, &,
_, ~, [, ],\, |, ; , :, ‘, “, {, }, ,, .,
, ?, (, )
Các ký tự không hiển thị ra màn hình: space, tab,
enter
Từ 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
Từ 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ố.
VD: x1, temp, _bien1 là những tên hợp lệ; 1abc, bai
1 la những tên không hợp lệ
Từ 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
Từ vựng trong C
Kiểu dữ liệu
Kiểu ký tự
Tên: char và unsigned char
Kích thước: 1 byte
Miền giá trị
Một ký tự được biểu diễn thông qua bảng mã ASCII
(
Kiểu Phạm vi biểu diễn Số ký tự
char -128 đến 127 256
unsigned char 0 đến 255 256
Từ vựng trong C
Kiểu dữ liệu
Kiểu ký tự
Phân nhóm ký tự: 3 nhóm
Nhóm các ký tự điều khiển: từ 0÷31 và 127
Nhóm các ký tự văn bản: 32÷126
Nhóm các ký tự đồ họa: 128÷255
Từ 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:
Kiểu Phạm vi biểu diễn Kích thước
int/ signed int -32768 đến 32767 2/4 bytes
unsigned int 0 đến 65535 2/4 bytes
short/ signed short -32768 đến 32767 2 bytes
unsigned short 0 đến 65535 2 bytes
long/ signed long -2147483648 đến 2147483647 4 bytes
unsigned long 0 đến 4294967295 4 bytes
Từ 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
3.4E-4932 đến 1.1E4932 10 bytes
Từ vựng trong C
Kiểu dữ liệu
Định nghĩa kiểu dữ liệu mới bằng typedef
Cú pháp:
typedef ;
Ví dụ:
typedef int nguyen
typedef float m50[50]
typedef int m_20x30[20][30]
Từ 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
Cú pháp khai báo
#define
Ví dụ: #define MAX 1000
#define PI 3.141593
Hằng số học:
Hằng số nguyên
Hằng số thực
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
Từ 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:
;
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
Từ 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
Các biến cục bộ:
Là các biến được khai báo bên trong hàm, hoặc bên
trong các khối lệnh
Phạm vi sử dụng: được tính từ vị trí khai báo đến cuối
hàm hoặc cuối khối lệnh
Biểu thức
Biểu thức trong C
Các toán tử
Phép toán chuyển đổi kiểu dữ liệu
Biể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
Biểu thức
Toán tử:
Là các phép toán được ngôn ngữ lập trình hỗ trợ trực
tiế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: & | ~ ^
Biểu thức
Các loại biểu thức
Biểu thức số học
Biểu thức so sánh
Biểu thức logic
Biểu thức gán
Biể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.
Biể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ằng
phép chuyển kiểu (ép kiểu)
Cú pháp: (Kiểu_dữ_liệu_mới) ;
Biểu thức
Ví dụ :
#include
#define Max 100
const int m = 40;
int bt;
int main()
{
int a = 15; a=1; // co so 10
int b = 015; // co so 8
int c = 0x15; // co so 16
float d = 1.2e-6; // 15.06*10^-3
bt = a + b + c/m + (a>b);
}
0
1
2
3
4
5
6
7
8
9
10
11
Nhập/xuất dữ liệu
Thư viện
#include (standard input/output)
Cú pháp
printf([, , , ]);
là cách trình bày thông tin xuất và
được đặt trong cặp nháy kép “ ”, có thể bao gồm các
thành phần sau:
Văn bản thường (literal text)
Ký tự điều khiển (escape sequence)
Đặc tả (conversion specifier)
Nhậ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.
Ví dụ
Xuất chuỗi Hello World
printf(“Hello ”); printf(“World”);
printf(“Hello World”);
Xuất chuỗi a + b
printf(“a + b”);
Nhập/xuất dữ liệu
Ký tự điều khiển (escape sequence)
Gồm dấu \ và một ký tự như trong bảng sau:
Ví dụ
printf(“\t”); printf(“\n”);
printf(“\t\n”);
Ký tự điều khiển Ý nghĩa
\a
\b
\n
\t
\\
\?
\”
Tiếng chuông
Lùi lại một bước
Xuống dòng
Dấu tab
In dấu \
In dấu ?
In dấu “
Nhập/xuất dữ liệu
Đặc tả (conversion specifier):
%[-][fw][.pp]
Ý 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)
Nhập/xuất dữ liệu
Đặc tả (conversion specifier):
Ký tự định dạng: Dùng để xác định quy tắc chuyển
dạng và dạng in ra của đối số tương ứng.
Đặc tả Ý nghĩa
%c
%d, %ld
%f, %lf
%s
%u
Ký tự
Số nguyên có dấu
Số thực
Chuỗi ký tự
Số nguyên không dấu
char
char, int, short, long
float, double
char[], char*
unsigned int/short/long
Nhập/xuất dữ liệu
Ví dụ:
int a = 1706;
float x = 176.85;
printf(“%10d”, a);printf(“\n”);
printf(“%10.2f”, x);printf(“\n”);
printf(“%.2f”, x);printf(“\n”);
printf(“%f\n”,x)
Nhập/xuất dữ liệu
Thư viện
#include (standard input/output)
Cú pháp
scanf([, , , ]);
giống định dạng xuất nhưng chỉ có các
đặc tả.
Các đối số là tên các biến sẽ chứa giá trị nhập và được đặt
trước dấu &
Nhậ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
Cá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
Cá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.
Có 2 dạng:
Dạng 1 Dạng 2
if (biểu thức)
khối lệnh (1)
if (biểu thức)
khối lệnh (1)
else
khối lệnh (2)
Các câu lệnh điều khiển
Câu lệnh if else
Cá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
Các câu lệnh điều khiển
Câu lệnh if else
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)
Các câu lệnh điều khiển
Câu lệnh if else
Một số lỗi đơn giản thường gặp:
#include
#include
main()
{
int b;
printf("Nhap b =“);scanf("%d",&b);
if (b=0)
printf("b bang 0");
getch();
}
0
1
2
3
4
5
6
7
8
9
10
11
Các câu lệnh điều khiển
Câu lệnh if else
Một số lỗi đơn giản thường gặp:
#include
#include
main()
{
int b;
printf("Nhap b =“);scanf("%d",&b);
if (b%5==0)
printf("b la chia het cho5\n");
printf("b = 5*%d",b/5);
else
}
0
1
2
3
4
5
6
7
8
9
10
Các câu lệnh điều khiển
Câu lệnh if else
Một số lỗi đơn giản thường gặp:
#include
#include
main()
{
int b;
printf("Nhap b = );scanf("%d",&b);
if (b%5==0);
printf("b la uoc cua 5\n");
getch();
}
0
1
2
3
4
5
6
7
8
9
Cá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
định
switch (biểu thức nguyên )
{
case n1:
khối lệnh 1
break;
case n2:
khối lệnh 2
break;
.......
case nk:
khối lệnh k
break;
[ default:
khối lệnh k+1
break;]
}
ni là các số nguyên, hằng ký tự
hoặc biểu thức hằng.
default là một thành phần không
bắt buộc phải có trong thân của
switch.
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.
Các câu lệnh điều khiển
Câu lệnh switch case
Cá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.
Cá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 đó.
Đ
S
<Đ/K
lặp>
for (; ; )
;
Cá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 , , 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);
Các câu lệnh điều khiển
Câu lệnh for
Ví dụ:
Viết chương trình nhập vào số nguyên n, tính tổng bình
phương các số từ 1 đến n (n nhập từ bàn phím)
Viết chương trình tính n! (n nhập từ bàn phím)
Viết chương trình tính và in ra màn hình giá trị biểu
thức: (n nhập từ bàn phím)
Viết chương trình in ra bảng cửu chương
Các câu lệnh điều khiển
Câu lệnh for
Một số lỗi thường gặp
#include
#include
main()
{
int n,s;
n = 10;
s = 0;
for(int i = 1;i<10;i++);
s += i;
printf("Tong cac so tu nhien tu 1 den 10: %d",s);
getch();
}
Các câu lệnh điều khiển
Câu lệnh for
Một số lỗi thường gặp
#include
#include
main()
{
int i,j;
for(i = 1,j = 1;j<5,i<3;i++,j++)
printf("i = %d; j = %d\n",i,j);
getch();
}
Các câu lệnh điều khiển
Câu lệnh while
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 đó.
Đ
S
while (Điều kiện) Hành_động_cần_lặp;
Cá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
Có thể sử dụng các lệnh break, continue trong các
vòng lặp
Các câu lệnh điều khiển
do
Hành_động_cần_lặp ;
while (Điều kiện);
S
Đ
Câu lệnh dowhile
Lệnh do while là lệnh cho phép thực hiện 1 số
câu lệnh khi còn thỏa mãn một điều kiện nào đó.
Các câu lệnh điều khiển
Câu lệnh dowhile
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
Có thể sử dụng các lệnh break, continue trong các
vòng lặp
Cá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 động
nhiề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.
Cá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ập
lạ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 ước
nguyên dương (nhỏ hơn n) bằng n. VD: 28 =
1+2+4+7+14;
Cá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
Bài tập về nhà
Tìm hiểu các bài toán sau và cài đặt chương
trình tương ứng:
Tính gần đúng tích phân xác định (phương pháp
hình chữ nhật, hình thang)
Tìm nghiệm gần đúng của phương trình (phương
pháp chia đôi)
Tính căn bậc hai theo phép lặp Newton