Bài giảng Ngôn ngữ lập trình C - Một số khái niệm cơ bản
Mục đích
Làm quen với các kiểu dữ liệu cơ sở
Biết cách khai báo biến, hằng
Làm quen với các toán tử
toán tử gán
toán tửđiều kiện
Biết cách sử dụng hàm vào/ra
NGÔN NGỮ LẬP TRÌNH C
Một số khái niệm cơ bản
Ninh Thị Thanh Tâm
Khoa CNTT – HV Quản lý Giáo dục
Mục đích
Làm quen với các kiểu dữ liệu cơ sở
Biết cách khai báo biến, hằng
Làm quen với các toán tử
toán tử gán
toán tử điều kiện
Biết cách sử dụng hàm vào/ra
Nội dung
Một số khái niệm cơ bản
Bộ kí tự
Tên
Từ khóa
Hằng
Biến
Các kiểu dữ liệu cơ sở
Biểu thức
Các phép toán
Hàm vào/ra
printf()
scanf()
Bộ kí tự
26 chữ cái hoa, 26 chữ cái thường
10 chữ số thập phân
Kí hiệu toán học: + - * / =
Dấu cách: . ; , : space
Dấu ngoặc ( ) [ ] { }
Kí hiệu đặc biệt: _ ? % # & ^ \ !...
Tên
Là một dãy các kí tự (chữ cái, chữ số, dấu
gạch dưới)
Bắt đầu bằng chữ cái hoặc dấu gạch dưới
Phân biệt chữ hoa và chữ thường
Độ dài mặc định 32
Ví dụ: ab, _hoa, a_1…
Từ khóa
Là tên được định nghĩa trước với ý nghĩa
xác định, không thể thay đổi
Không được dùng vào việc khác
Không được đặt tên mới trùng với từ khóa
Ví dụ: char, const, do while, struct…
Các kiểu dữ liệu cơ sở (tiếp)
Số float có độ chính xác là 6 chữ số sau dấu
chấm thập phân
Số double có độ chính xác là 15 chữ số sau dấu
chấm thập phân
Một số tiền tố đi kèm kiểu dữ liệu cơ sở
short
long
signed (ngầm định với char, int)
unsigned
Các kiểu dữ liệu cơ sở
8 byte±1.7E-308 ÷ ±1.7E+308Số thực dấu
phẩy động, độ
chính xác đơn
double
4 byte±3.4E-38 ÷ ±3.4E+38Số thực dấu
phẩy động, độ
chính xác đơn
float
2 byte-32768 ÷ 32767Số nguyênint
1 byte-128 ÷ 127Kí tựchar
Kích thướcPhạm viÝ nghĩaTên
Hằng
Là những giá trị có đại lượng không đổi khi thực
hiện chương trình (CT)
Định nghĩa hằng tượng trưng
Toán tử #define
Cú pháp: #define
CT, CT dịch thay thế mọi xuất hiện của bằng
Định nghĩa biến hằng
Từ khóa: const
Cú pháp: const =;
CT dịch cấp phát vùng nhớ tương ứng với kiểu của
hằng và gán giá trị
Hằng (tiếp)
Ví dụ
#define MAX 80
#define newline ‘\n’
cont int MAX = 100;
const char newline = ‘\n’;
Biến
Cú pháp khai báo biến:
;
Khai báo biến sau kí hiệu bắt đầu khối lệnh
hay thân hàm
Khởi đầu giá trị cho biến: Vừa khai báo, vừa
gán giá trị
Biến (tiếp)
Ví dụ:
int x, y, z;
float a, b, c;
char ch1, ch2;
int i = 1, j = 5, k;
char c1 =‘A’, c2 = ‘\n’;
Biểu thức
Định nghĩa: là kết quả của việc ghép nối các
toán tử và các toán hạng
Sử dụng:
Vế phải của lệnh gán
Làm tham số thực của các hàm
Làm chỉ số
Trong các câu lệnh if, for, while, do while
Biểu thức trong C:
Biểu thức gán
Biểu thức điều kiện
Phép toán số học
Chia lấy số dư%
Chia (thực, nguyên)/
Nhân (thực, nguyên)*
Trừ (thực, nguyên)-
Cộng 2 số (thực, nguyên)+
Đổi dấu (thực, nguyên)-
Ý nghĩaToán tử
Phép toán quan hệ
So sánh không bằng nhau!=
So sánh bằng nhau==
So sánh nhỏ hơn hoặc bằng<=
So sánh nhỏ hơn<
So sánh lớn hơn hoặc bằng>=
So sánh lớn hơn>
Ý nghĩaToán tử
Phép toán lô-gic
!12 có giá trị 0
!0 có giá trị 1
Phủ định!
n =100
Với n=5, BT = 0
Hoặc||
36 có
giá trị 1
Và&&
Ví dụÝ nghĩaLiên từ
Phép toán thao tác trên bit
Cho phép xử lý đến
từng bit của một số
nguyên
Không dùng cho float
hoặc double
Bù 1~
Dịch phải>>
Dịch trái<<
HOẶC có loại trừ^
HOẶC nhị phân|
VÀ nhị phân&
Ý nghĩaPhép toán
Phép toán thao tác trên bit (tiếp)
a >> n = a/2n0 ^ 0 = 00 | 0 = 00 & 0 = 0
a << n = a*2n0 ^ 1 = 10 | 1 = 10 & 1 = 0
~ 0 = 11 ^ 0 = 11 | 0 = 11 & 0 = 0
~ 1 = 01 ^ 1 = 01 | 1 = 11 & 1 = 1
C phân biệt
Phép dịch chuyển số học trên giá trị nguyên, bảo toàn bit dấu
Phép dịch chuyển lô-gic, thực hiện trên giá trị unsigned.
Ví dụ
0x5e49=~0xa1b6
0xa1=8>>0xa1b6
0xb600=8<<0xa1b6
0x5e49=0xffff^0xa1b6
0xa1ff=0xff|0xa1b6
0xb6=0xff&0xa1b6
Biểu thức gán
=
Nếu thêm dấu ; ta thu được câu lệnh gán
Tự dịch bit tráii <<= ki = i <<k
Tự dịch bit phảii >>= ki = i >> k
Tự bùi ^= ki = i ^ k
Tự hoặci |= ki = i | k
Tự vài &= ki = i & k
Tự chia dưi %= ki = i % k
Tự chiai /= ki = i / k
Tự nhâni *= ki = i * k
Tự trừi -= ki = i – k
Tự cộngi += ki = i + k
Ý nghĩaDạng thu gọnDạng thông thường
Biểu thức điều kiện
BT1? BT2 : BT3
BT1, BT2, BT3: biểu thức
BT1 != 0, biểu thức điều kiện nhận giá trị cho
bởi BT2
BT1 = 0, biểu thức điều kiện nhận giá trị cho
bởi BT3
Biểu thức điều kiện (tiếp)
Ví dụ
Câu lệnh xác định giá trị lớn nhất giữa hai số
a và b
max2= (a>b)? a : b;
Câu lệnh xác định giá trị lớn nhất giữa ba số
a, b và c
max3= (a>b)? (a>c?a:c) : (b>c?b:c);
Phép toán tăng giảm một đơn vị
n----nGiảm một đơn vị
n++++nTăng một đơn vị
Dạng hậu tốDạng tiền tốToán tử
Khi phép toán nằm trong một biểu thức khác
Tiền tố: thay đổi giá trị của biến trước khi sử dụng
Hậu tố: giá trị cũ của biến được sử dụng, thay đổi giá
trị
Ví dụ
i = j; j = j - 1;
j = j - 1; i = j;
i = j; j = j + 1;
j = j + 1; i = j;
Tương đương
i = j--;
i = --j;
i = j++;
i = ++j;
Phép toán
Lấy địa chỉ biến
Toán tử: &
Cú pháp: &
Không sử dụng toán tử cho hằng, biểu thức
Phép toán chuyển đổi kiểu
Cú pháp:
()
tên của kiểu dữ liệu được định nghĩa
trước
Chú ý: có thể chuyển kiểu tự động
Sơ đồ chuyển đổi kiểu
charint long float double long
double
Thứ tự ưu tiên, trật tự kết hợp của
các phép toán
←= += -=14
←?:13
→||12
→&&11
→|10
→^9
→&8
→== !=7
→ >=6
→>5
→+ -4
→* /3
←! ~ ++ --- * &2
→( ) [ ]1
Trật tự kết hợpCác toán tửMức
Hàm vào ra
Quá trình nhập xuất dữ liệu
Xuất
Giá trị cần đưa ra→Kênh ra→Khuôn dạng→Thiết bị ra (màn hình)
Nhập
Thiết bị vào(bàn phím)→Kênh vào→Khuôn dạng→Biến nhập
Hàm printf()
Cú pháp:
printf([,,…]);
là xâu điều khiển
chứa các định dạng
Danh sách [,,…] chứa các giá trị
(hằng, biến, biểu thức)
Số bằng số định dạng trong
Hàm printf() – định dạng
Hệ 16 với các chữ A B
C D E F
int%X
Số nguyên hệ 16,
không dấu
int%x
Số nguyên, không dấuint%u
Số nguyên hệ 8, không
dấu
int%o
Đối là hệ 10 có dấu
(nếu giá trị âm)
int%i
Đối là 1 số nguyênint%d
Ghi chúÁp dụng kiểu DLĐịnh dạng
Hàm printf() – định dạng (tiếp)
Dấu tĩnh, động phụ
thuộc vào loại nào
ngắn hơn
float, double%g, %G
Dạng thập phân, dấu
phẩy tĩnh
float, double%f, %lf
Dạng thập phân, dấu
chấm động
float, double%e, %E
Ghi chúÁp dụng kiểu DLĐịnh dạng
Hàm printf() – định dạng (tiếp)
Đối số là một xâu kí tựchar*%s
Đối số là một kí tựchar%c
Ghi chúÁp dụng kiểu DLĐịnh dạng
Ví dụ 1
/*printf.c*/
#include
void main()
{
printf("%d\n",-10);
printf("%i\n",-10);
printf("%u\n",-10);
printf("%x\n",-10);
printf("%o\n",-10);
printf("%X\n",-10);
printf("%f\n",-10);
printf("%c\n",'A');
printf("%d\n",'A');
printf("%f\n",3.14);
printf("%e\n",3.14);
printf("%E\n",3.14);
printf("%s\n","Khoa Cong nghe Thong tin");
getch();
}
Kết quả
Ví dụ 2
/*printf2.c*/
#include
void main()
{
printf("So nguyen %4d \nSo thuc %8.2f\n",10, 123.4);
printf("Ki tu %c co ma ASCII %4d",'A','A');
getch();
}
Kết quả
Hàm scanf()
Cú pháp: scanf(,{, …});
xâu định dạng
đối số lưu trữ kết quả
Hàm scanf() – định dạng
Địa chỉ của biến kí
tự
Nhập vào 1 kí tự%c
Địa chỉ của một
biến nguyên
Nhập vào một số
nguyên hệ 16
%x
Địa chỉ của một
biến nguyên
Nhập vào một số
nguyên hệ 8
%o
Địa chỉ của một
biến nguyên
Nhập vào một số
nguyên
%d
Đối sốÝ nghĩaĐịnh dạng
Hàm scanf() – định dạng (tiếp)
Địa chỉ của một
biến long
Nhập vào một số
nguyên long
%ld
Địa chỉ của một
biến double
Nhập vào một số
thực double
%lf
Địa chỉ của một
biến thực
Nhập vào một số
thực float
%f
Một xâu kí tựNhập vào 1 xâu kí
tự
%s
Đối sốÝ nghĩaĐịnh dạng
Ví dụ 3
/*scanf1.c*/
#include
void main()
{
int i;
long l;
float f;
double d;
char c;
printf("Nhap gia tri cho cac bien");
scanf("%d%ld%f%lf%c",&i,&l,&f,&d,&c);
printf("So int %d\n",i);
printf("So long %d\n",l);
printf("So float %f\n",f);
printf("So double %f\n",d);
printf("Ki tu %c\n",c);
getch();
}
Kết quả
Quy tắc sử dụng scanf()
Đối với số
Các kí tự số, dấu chấm là kí hiệu hợp lệ
Dấu trắng, dấu tab, dấu xuống dòng là kí hiệu phân
cách
Hàm cho rằng mọi kí tự trong stdin đều hợp lệ
(không bỏ qua kí tự xuống dòng)
Khi đọc xâu, sử dụng dấu phân cách như trong
đọc số
Sử dụng scanf() riêng biệt cho mỗi lần nhập kí tự
Trước scanf() sử dụng chỉ thị fflush(stdin);
Ví dụ 4
/*scanf2.c*/
#include
void main()
{
int i;
long l;
float f;
double d;
char c;
printf("Nhap gia tri cho cac bien");
scanf("%d%ld%f%lf",&i,&l,&f,&d);
fflush(stdin);
scanf("%c",&c);
printf("So int %d\n",i);
printf("So long %d\n",l);
printf("So float %f\n",f);
printf("So double %f\n",d);
printf("Ki tu %c\n",c);
getch();
}
Kết quả
Hàm clrscr() và getch()
Chức năng
clrscr(); – xóa màn hình
getch(); – dừng màn hình để xem kết quả
Tóm tắt
Câu lệnh khai báo có thể
Bên ngoài hoặc bên trong các khối lệnh
Trước các câu lệnh điều khiển CT
Các biến khi khai báo
Cách nhau bởi dấu phẩy
Có thể khởi tạo giá trị khi khai báo
Định nghĩa hằng bằng:
Toán tử #define
Từ khóa const
File đính kèm:
Bài giảng Ngôn ngữ lập trình C - Một số khái niệm cơ bản.pdf

