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

pdf46 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 2191 | Lượt tải: 1download
Tóm tắt nội dung Bài giảng Ngôn ngữ lập trình C - Một số khái niệm cơ bản, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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
charint 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:

  • pdfBài giảng Ngôn ngữ lập trình C - Một số khái niệm cơ bản.pdf