BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC LẠC HỒNG
GIÁO TRÌNH
NGÔN NGỮ C/C++
CHƢƠNG 1:
CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ C ........................................8
1.1
MỘT SỐ CHƢƠNG TRÌNH ĐẦU TIÊN BẰNG C .................................................8
1.2
CÁC TỪ KHÓA ......................................................................................................10
1.3
TÊN VÀ CÁCH ĐẶT TÊN .....................................................................................10
1.4
CÁCH GHI LỜI GIẢI THÍCH ................................................................................11
1.5
CÂU LỆNH VÀ DẤU CHẤM CÂU ......................................................................11
1.6
CẤU TRÚC CHUNG CỦA CHƢƠNG TRÌNH .....................................................11
1.7
MỘT SỐ QUI TẮC VIẾT CHƢƠNG TRÌNH ........................................................12
CHƢƠNG 2:
CÁC KIỂU DỮ LIỆU CƠ SỞ ...................................................................13
2.1
KHÁI NIỆM VỀ KIỂU DỮ LIỆU ..........................................................................13
2.2
KIỂU SỐ NGUYÊN ................................................................................................14
2.3
KIỂU SỐ THỰC ......................................................................................................15
2.4
KIỂU KÍ TỰ ............................................................................................................15
2.5
KIỂU XÂU KÍ TỰ...................................................................................................16
2.6
KIỂU BOOLEAN ....................................................................................................16
2.7
BIẾN VÀ HẰNG .....................................................................................................16
2.7.1
Biến ............................................................................................................................ 16
2.7.2
Khai báo biến ............................................................................................................ 16
2.7.3
Hằng ........................................................................................................................... 17
Bài tập tại lớp .................................................................................................................18
CHƢƠNG 3:
3.1
CÁC PHÉP TOÁN & HÀM CƠ BẢN ......................................................19
CÁC PHÉP TOÁN ..................................................................................................19
3.1.1
Các phép toán số học ............................................................................................... 19
Bài tập tại lớp: (Sinh viên làm bài và sửa tại lớp)..........................................................22
3.1.2
Các toán tử quan hệ và logic ................................................................................... 24
3.1.3
Phép toán ? ................................................................................................................ 27
3.1.1
Phép toán phẩy ......................................................................................................... 27
3.1.2
Phép toán Xử lý Bit: ................................................................................................ 27
3.1.3
Thứ tự ƣu tiên của các toán tử: ............................................................................... 28
2
Bài tập tại lớp .................................................................................................................29
3.2
MỘT SỐ HÀM CƠ BẢN: .......................................................................................31
3.2.1
Hàm đại số: ............................................................................................................... 31
3.2.2
Hàm lƣợng giác: ....................................................................................................... 31
3.2.3
Hàm xử lý ký tự ................................................................................ 32
Câu hỏi trắc nghiệm .......................................................................................................32
CHƢƠNG 4:
4.1
LỆNH NHẬP XUẤT DỮ LIỆU CƠ BẢN ................................................34
XUẤT DỮ LIỆU RA MÀN HÌNH: ........................................................................34
4.1.1
Lệnh printf................................................................................................................. 34
4.1.2
Lệnh puts : ................................................................................................................. 35
4.2
XUẤT KẾT QUẢ RA MÁY IN: .............................................................................35
4.3
NHẬP GIÁ TRỊ CHO BIẾN: ..................................................................................35
4.3.1
Toán tử gán và biểu thức gán.................................................................................. 35
4.3.2
Hàm scanf()............................................................................................................... 36
4.3.3
Hàm getchar() ........................................................................................................... 37
4.3.4
Hàm getch() .............................................................................................................. 37
4.3.5
Hàm gets() ................................................................................................................. 37
4.4
TRÌNH BÀY MÀN HÌNH: .....................................................................................37
4.4.1
Lệnh gotoxy(int x, int y): ........................................................................................ 37
4.4.2
Lệnh clrscr() .............................................................................................................. 37
4.4.3
Lệnh textcolor(màu chữ) ......................................................................................... 37
4.4.4
Textbackground(màu nền) ...................................................................................... 38
4.4.5
Window(int x1,int y1,int x2,int y2) ....................................................................... 38
4.5
TẠO SỐ NGẪU NHIÊN .........................................................................................38
Câu hỏi trắc nghiệm .......................................................................................................38
Bài tập tại lớp .................................................................................................................39
Bài tập về nhà .................................................................................................................40
CHƢƠNG 5:
5.1
CÁC CẤU TRÚC ĐIỀU KIỆN..................................................................45
CẤU TRÚC CHỌN .................................................................................................45
5.1.1
Cấu trúc chọn với if: ................................................................................................ 45
5.1.2
Cấu trúc chọn với if/else: ........................................................................................ 47
5.2
CẤU TRÚC CHỌN VỚI SWITCH .........................................................................49
3
Bài tập tại lớp(Sinh viên làm bài và sửa tại lớp) ............................................................51
Câu hỏi trắc nghiệm .......................................................................................................52
CHƢƠNG 6:
6.1
CẤU TRÚC LẶP .......................................................................................56
VÒNG LẶP XÁC ĐỊNH FOR ................................................................................56
Bài tập tại lớp .................................................................................................................58
6.2
VÒNG LẶP KHÔNG XÁC ĐỊNH .........................................................................59
6.2.1
Vòng lặp không xác định While ............................................................................. 59
6.2.2
Vòng lặp không xác định với điều kiện sau: do .. while ..................................... 61
Bài tập tại lớp .................................................................................................................62
6.3
CÁC CÂU LỆNH RẼ NHÁNH VÔ ĐIỀU KIỆN ...................................................63
6.3.1
Lệnh break................................................................................................................. 63
6.3.2
Lệnh continue ........................................................................................................... 63
6.3.3
Lệnh goto .................................................................................................................. 64
Câu hỏi trắc nghiệm .......................................................................................................65
Bài tập tại lớp .................................................................................................................65
Bài tập về nhà: ................................................................................................................66
CHƢƠNG 7:
CHƢƠNG TRÌNH CON – HÀM ...............................................................70
7.1
TẠI SAO PHẢI DÙNG CHƢƠNG TRÌNH CON? ................................................70
7.2
PHÂN LOẠI HÀM ..................................................................................................71
7.3
KHAI BÁO MẪU HÀM .........................................................................................72
7.4
ĐỊNH NGHĨA HÀM ...............................................................................................72
7.5
GỌI HÀM ................................................................................................................73
7.6
THAM SỐ HÌNH THỨC – THAM SỐ THỰC SỰ ................................................73
7.7
BIẾN TOÀN CỤC – BIẾN CỤC BỘ ......................................................................73
7.7.1
Biến toàn cục ............................................................................................................ 73
7.7.2
Biến cục bộ (biến địa phƣơng) ............................................................................... 73
7.8
KHAI BÁO HÀM VÀ CÁC VÍ DỤ:.......................................................................73
Bài tập tại lớp .................................................................................................................75
7.9
TRUYỀN THAM SỐ CHO HÀM ...........................................................................75
7.9.1
Truyền tham trị ......................................................................................................... 76
7.9.2
Truyền tham chiếu ................................................................................................... 76
7.10
ĐỆ QUI: ................................................................................................................76
4
Câu hỏi trắc nghiệm .......................................................................................................78
Bài tập về nhà .................................................................................................................79
CHƢƠNG 8:
CHƢƠNG 8: KIỂU MẢNG (ARRAY) .....................................................81
8.1
KHÁI NIỆM: ...........................................................................................................81
8.2
MẢNG MỘT CHIỀU: .............................................................................................82
8.2.1
Khai Báo Biến Mảng 1 Chiều: ............................................................................... 82
8.2.2
Khai Báo Kiểu Mảng: .............................................................................................. 83
8.2.3
Một Số Thao Tác Trên Mảng 1 Chiều: ................................................................. 83
8.2.4
Truyền tham số Mảng một chiều: .......................................................................... 85
8.3
MẢNG HAI CHIỀU: ...............................................................................................86
8.3.1
KHÁI NIỆM: ............................................................................................................ 86
8.3.2
KHAI BÁO VÀ SỬ DỤNG MẢNG HAI CHIỀU: ............................................. 87
8.3.3
THAO TÁC TRÊN MẢNG 2 CHIỀU: ................................................................. 87
8.3.4
TRUYỀN THAM SỐ TRÊN MẢNG 2 CHIỀU:................................................. 89
8.4
MẢNG NHIỀU CHIỀU:..........................................................................................89
8.4.1
Khái niệm: ................................................................................................................. 89
8.4.2
Khai báo mảng: ........................................................................................................ 89
8.4.3
Truy xuất phần tử mảng: ......................................................................................... 89
8.4.4
Thao tác trên mảng n chiều: .................................................................................... 89
Câu hỏi trắc nghiệm .......................................................................................................89
Bài tập tại lớp .................................................................................................................90
Bài tập về nhà .................................................................................................................91
CHƢƠNG 9:
CHUỖI KÝ TỰ ..........................................................................................94
9.1
KHÁI NIỆM: ...........................................................................................................94
9.2
KHAI BÁO BIẾN CHUỖI: .....................................................................................94
9.3
KHAI BÁO KIỂU CHUỖI: .....................................................................................95
9.4
CÁC THAO TÁC TRÊN KIỂU CHUỖI: ...............................................................95
9.4.1
Nhập chuỗi ký tự: ..................................................................................................... 95
9.4.2
Xuất chuỗi: ................................................................................................................ 96
9.4.3
Truy xuất đến từng ký tự trong chuỗi: biếnchuỗi[chỉsố] ................................... 96
9.5
MẢNG CÁC CHUỖI: .............................................................................................97
9.6
CON TRỎ VÀ CHUỖI KÝ TỰ: .............................................................................98
5
9.6.1
Khai báo con trỏ ....................................................................................................... 98
9.6.2
Gán địa chỉ vùng nhớ của biến chuỗi cho biến con trỏ ....................................... 98
9.6.3
Gán hằng chuỗi cho biến con trỏ............................................................................ 98
9.7 CẤP PHÁT ĐỘNG 1 VÙNG NHỚ CHỨA DỮ LIỆU VÀ GHI ĐịA CHỈ
VÀO BIẾN CON TRỎ: .....................................................................................................98
9.8
HÀM TỰ TẠO VÀ KIỂU CHUỖI: ........................................................................99
9.9
Các hàm xử lý chuỗi strong STRING.H: .................................................................99
9.9.1
Xác định chiều dài thật sự của chuỗi: .................................................................... 99
9.9.2
Đổi chữ thƣờng thành chữ hoa và ngƣợc lại: ..................................................... 100
9.9.3
Nối 2 chuỗi: ............................................................................................................ 100
9.9.4
Nối n ký tự của chuỗi nguồn vào sau chuỗi đích: .............................................. 101
9.9.5
Sao chép chuỗi: ...................................................................................................... 102
9.9.6
Sao chép n ký tự từ chuỗi nguồn sang chuỗi đích: ............................................ 103
9.9.7
So sánh 2 chuỗi theo thứ tự từ điển: .................................................................... 103
9.9.8
Tìm kiếm: ................................................................................................................ 105
9.9.9
Các hàm chuyển đổi kiểu stdlib.h ........................................................................ 105
Câu hỏi trắc nghiệm .................................................................................................... 106
Bài tập tại lớp .............................................................................................................. 107
Bài tập về nhà .............................................................................................................. 107
CHƢƠNG 10:
KIỂU CẤU TRÚC (STRUCTURE) ....................................................... 109
10.1
KHÁI NIỆM: ..................................................................................................... 109
10.2
ĐỊNH NGHIÃ KIỂU CẤU TRÚC MỚI: .......................................................... 109
10.3
KHAI BÁO BIẾN KIỂU CẤU TRÚC:............................................................. 110
10.4
CÁC THAO TÁC TRÊN BIẾN MẪU TIN: ..................................................... 110
10.4.1 Gán 2 biến cấu trúc có cùng kiểu cấu trúc. ......................................................... 110
10.4.2 Truy xuất giá trị từng mục dữ liệu trong 1 biến kiểu cấu trúc: ........................ 111
10.4.3 Địa chỉ của biến cấu trúc và mục dữ liệu: ........................................................... 111
10.5
CON TRỎ CỦA KIỂU CẤU TRÚC: ............................................................... 111
10.5.1 Khai báo con trỏ kiểu cấu trúc: ............................................................................ 111
10.5.2 Gán địa chỉ vùng nhớ của 1 biến cấu trúc cho biến con trỏ:............................. 111
10.5.3 Truy xuất giá trị 1 thành phần của biến cấu trúc bằng biến con trỏ: ............... 111
10.6
HÀM VÀ KIỂU CẤU TRÚC: .......................................................................... 112
6
10.6.1 Đối số của hàm có thể là: ...................................................................................... 112
10.6.2 Hàm có thể trả về: .................................................................................................. 112
10.7
MẢNG CẤU TRÚC: ......................................................................................... 113
Câu hỏi trắc nghiệm .................................................................................................... 117
Bài tập tại lớp .............................................................................................................. 117
Bài tập về nhà .............................................................................................................. 117
TÀI LIỆU THAM KHẢO .................................................................................................. 120
7
CHƢƠNG 1: CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ C
Yêu cầu:
Sau khi học xong bài này, sinh viên phải hiểu và vận dụng các kiến thức, kĩ năng cơ
bản sau:
Hiểu biết về các ƣu điểm của ngôn ngữ C và một số đặc điểm chính của nó.
Nắm vững các thành phần chính trong một chƣơng trình C
Nắm vững qui tắc viết chƣơng trình.
Số tiết lên lớp: 2
Bảng phân chia thời lƣợng:
STT
NỘI DUNG
SỐ TIẾT
1
Giới thiệu chƣơng trình C
1/2
2
Cấu trúc chƣơng trình C
1
3
Một số qui tắc viết chƣơng trình
1/2
Trọng tâm bài giảng:
Nắm vững cấu trúc của một chƣơng trình C
1.1 MỘT SỐ CHƢƠNG TRÌNH ĐẦU TIÊN BẰNG C
Ví dụ 1: In ra màn hình 2 dòng chữ:
DAY LA CHUONG TRINH C
CHAO CAC BAN
/* Chƣơng trình in 2 dòng chữ*/
#include “stdio.h”
void main() /* hàm chính */
{
#include “conio.h”
printf(“DAY LA CHUONG TRINH C”);
printf(“\nCHAO CAC BAN”);
getch();
}
Giải thích:
/* ... */ : dòng ghi chú sẽ không đƣợc biên dịch.
Mỗi chương trình nên bắt đầu bằng một ghi chú nói rõ mục đích của nó
Chỉ thị #include : dùng nạp header file chứa các hàm thƣ viện sử dụng trong
chƣơng trình:
- File stdio.h: chứa các hàm nhập xuất trên dòng nhập xuất gián tiếp (printf )
8
- File conio.h: chứa các hàm nhập xuất trực tiếp từ bàn phím, màn hình (getch).
Khi sử dụng một hàm chuẩn cần biết nó nằm trong tập tin header nào và phải dùng
lệnh #include để nạp tập tin đó vào chương trình.
#include <[path]filename> : mặc định sẽ tìm trong thƣ mục chỉ định trong
OptionsDirectoriesINCLUDE Directories
#include “[path]filename” : mặc định tìm ở thƣ mục hiện hành, nếu không tìm thấy
sẽ tìm trong thƣ mục INCLUDE.
Thông báo lỗi nếu không tìm thấy: Unable to open include file ‘[path]filename’
Dòng main() : là bắt buộc đối với tất cả các chƣơng trình C. Dấu () sau từ khóa
main cho biết main là 1 khối chƣơng trình gọi là hàm (function).
Khối thân hàm đƣợc xác định bằng cặp ký hiệu:
{ /* bắt đấu phần thân */
} /* kết thúc phần thân */
Một câu lệnh đƣợc viết trên 1 hay nhiều dòng nhƣng phải kết thức bởi dấu ;
Ví dụ 2: Chƣơng trình tính chu vi và diện tích hình tròn theo giá trị bán kính r nhập
vào từ bàn phím.
#include “stdio.h”
else
#include
{
#define
Pi
cv = 2 * PI * r;
3.14
main()
dt = PI * r * r;
{
float r, cv, dt; /*Khai báo 3 biến kiểu
thực*/
printf(“\nKet Qua:”);
printf(“\n\t Chu vi = %10.2f \n\t
Dien tich = %10.2f”, cv, dt );
printf(“\nNhap ban kinh r = “);
scanf(“%f”, &r);
}
if (r <= 0)
getch();
printf(“\a\aBan kinh <= 0 khong
tinh“);
}
Chú ý : Một chƣơng trình C có thể chứa 1 hay nhiều hàm, trong đó, bắt buộc phải có 1 hàm
main và phải nằm trên tất cả những hàm khác (nếu có). hàm này đƣợc tự động thực
hiện đầu tiên khi chạy chƣơng trình.
9
Ví dụ 3: Viết chƣơng trình tính bán kính hình tròn
#include “stdio.h”
#include
#define
Pi
3.14
float r ; /*biến ngoài*/
void NhapBanKinh( );
void main()
{
float cv, dt; /*Khai báo 2 biến cục bộ*/
printf(“\nChƣơng trình tính diện tích và chu vi hình tròn\n”);
NhapBanKinh;
if (r <= 0)
printf(“\a\aBan kinh <= 0 khong tinh“);
else
{
cv = 2 * PI * r; dt = PI * r * r;
printf(“\nKet Qua:”);
printf(“\n\t Chu vi = %10.2f \n\t Dien tich = %10.2f”, cv, dt );
}
getch();
}
void NhapBanKinh( )
{
printf(“\nNhap ban kinh hinh tron r = “);
scanf(“%f”, &r);
}
Chú thích: có thể sử dụng hằng M_PI đã định nghiã trong math.h
1.2 CÁC TỪ KHÓA ([3] trang 10)
-Từ khóa (keyword) là các từ dùng riêng của C và mỗi từ khóa có tác dụng và ý nghĩa
riêng.
-Từ khóa không thể định nghĩa lại.
-Không đƣợc đặt tên hằng, tên biến, tên hàm, tên chƣơng trình trùng với từ khóa.
-Một vài từ khóa thông dụng: conts, define, include, void, …
1.3 TÊN VÀ CÁCH ĐẶT TÊN ([3] trang 12)
-Tên chƣơng trình, tên biến, tên hàm, tên hằng số,…đều phải đƣợc khai báo trƣớc khi sử
dụng.
-Tên không đƣợc bắt đầu bằng số, không đƣợc chứa khoảng trắng và các kí tự đặc biệt nhƣ
dấu chấm, dấu *,…
Ví dụ cách đặt tên sai:
3PI: bắt đầu bằng số
PI$: chứa kí hiệu $
Bien 1 : chứa khảong trắng
Char: trùng từ khóa
“pi”: dùng dấu “
-Lƣu y: C là ngôn ngữ phân biệt chữ hoa, chữ thƣờng, do đó biến Ketqua khác với ketqua
cũng nhƣ KETQUA.
-Nên đặt tên sao cho gợi nhớ.
1.4 CÁCH GHI LỜI GIẢI THÍCH([3] trang 12-13)
-Lời giải thích dùng để thuyết minh, giúp chƣơng trình sáng sủa, dễ hiểu.
-Lời giải thích không tạo ra mã chƣơng trình.
-Nếu lời giải thích nằm trên một dòng, sử dụng hai dấu gạch chéo:
Ví dụ: // day la phan giai thich
-Nếu lời giải thích nằm trên nhiều dòng, sử dụng cặp kí hiệu /* và */
Chú ý: Nếu viết các chú thích trong chƣơng trình mà không sử dụng các dấu // hoặc /* hay
*/, trình dịch sẽ coi chúng nhƣ là các lệnh C++ và sẽ hiển thị các lỗi.
1.5 CÂU LỆNH VÀ DẤU CHẤM CÂU
-Mỗi câu lệnh trong chƣơng trình đƣợc kết thúc bằng dấu chấm phẩy
-Dấu chấm phẩy đƣợc dùng để ngăn cách các câu lệnh.
-Một số trƣờng hợp không dùng dấu chấm phẩy:
+Sau void main()
+Sau #include<…>
1.6 CẤU TRÖC CHUNG CỦA CHƢƠNG TRÌNH
Các #include: dùng nạp header file chứa các hàm thƣ viện sử dụng trong chƣơng
trình:
Các #define: dùng tạo các macro thay thế.
Khai báo các đối tƣợng dữ liệu ngoài (biến, mảng, cấu trúc, hợp...)
Khai báo trƣớc đặc trƣng các hàm tự tạo (nếu có).
Hàm main
Phần định nghiã các hàm tự tạo
Chú ý: Hàm main có thể đặt sau hoặc xen vào giữa các hàm khác, nhưng được tự động gọi
thực hiện đầu tiên trong chương trình.
#include<…>
//khai báo thƣ viện
#define
//định nghĩa kiểu dữ liệu
typedef
kiểu dữ liệu
tên hàm (các tham số)
//khai báo nguyên mẫu hàm
khai báo các biến toàn cục
void main()
//hàm chính, bắt buộc có
{
//bắt đầu hàm chính
//Các lệnh của hàm chính
//dừng chƣơng trình xem kết quả
getch();
}
//Khai báo các hàm, có thể có hoặc không
kiểu dữ liệu
tên hàm (các tham số)
{
//Các lệnh của hàm
return ();
//trả lại giá trị cho hàm
}
1.7 MỘT SỐ QUI TẮC VIẾT CHƢƠNG TRÌNH
-Chƣơng trình viết phải rõ ràng, thẩm mỹ
-Phải có các lời giải thích hợp lí mô tả về chƣơng trình, cách sử dụng hoặc các biến quan
trọng.
-Cách bố trí câu lệnh hợp lí.
+Mỗi câu lệnh chiếm 1 dòng
+Các lệnh cùng nhóm phải thẳng hàng
+Các câu lệnh viết theo phân cấp
-Chƣơng trình nên đặt tên dễ hiểu, mang tính gợi nhớ
-Các biến đặt ngắn gọn, gọi nhớ chức năng.
CHƢƠNG 2: CÁC KIỂU DỮ LIỆU CƠ SỞ
Yêu cầu:
Sau khi học xong bài này, sinh viên phải hiểu và vận dụng các kiến thức, kĩ năng cơ bản
sau:
Các kiểu dữ liệu.
Cách đặt tên và khai báo biến.
Cách đặt tên và khai báo hàm.
Phạm vi sử dụng biến.
Cách sử dụng một số hàm cơ bản.
Số tiết lên lớp: 2
Bảng phân chia thời lƣợng:
STT
NỘI DUNG
SỐ TIẾT
1
KiỂu dữ liệu sơ cấp
1
2
Biến-Hằng
1/2
3
Bài tập thảo luận
1/2
Trọng tâm bài giảng:
Nắm vững các kiểu dữ liệu cơ bản của C
Cách khai báo biến và hằng.
2.1
KHÁI NIỆM VỀ KIỂU DỮ LIỆU ([3] trang 20-22)
-Dữ liệu (DATA) là tất cả những gì đƣợc máy tính xử lí.
-Kiểu dữ liệu (DATA TYPE) đƣợc định nghĩa với 2 điểm chính:
+Một tập hợp các giá trị mà một biến thuộc kiểu đó có thể nhận đƣợc
+Trên đó xác định một số phép toán.
-Dữ liệu đƣợc chứa trong bộ nhớ máy tính với một số lƣợng ô nhớ nhất định tính theo đơn
vị byte.
Các kiểu số nguyên
Các kiểu số thực
Kiểu kí tự
Kiểu logic Boolean
Kiểu cơ sở
Kiểu vô
hƣớng
Kiểu vô hƣớng do
ngƣời dùng định nghĩa
DATA
TYPE
Kiểu liệt kê
Kiểu mảng (array)
Kiểu cấu trúc (struct)
Kiểu tập tin (file)
Kiểu có
cấu trúc
Kiểu con trỏ
Hình 2.1: Tổng quan phân loại các kiểu dữ liệu
2.2
KIỂU SỐ NGUYÊN
Các số nguyên đƣợc viết ra bằng các dãy chữ số 0,1,2,…,9 với chữ đầu có thể là dấu +, dấu
– hoặc không có dấu.
Kiểu int là thông dụng nhất. Tuy nhiên trong C còn có nhiều kiểu số nguyên khác với các
dải giá trị khác nhau.
Kiểu char thực chất là kí tự song C cho phép cùng kiểu kí tự này nhƣ là một số nguyên. Khi
tính toán trong biểu thức số học thì kiểu chat đƣợc sử dụng nhƣ là số nguyên, khi tính toán
trong biểu thức kí tự thì đây là kiểu kí tự.
Bảng 2.1 : Các kiểu dữ liệu khai báo cho biến số nguyên
Kiểu biến
Từ khóa
số byte
dải giá trị
character
char
1
-127 đến 128
integer
int
2
-32768 đến 32767
long integer
long
4
-2 tỉ đến 2 tỉ
unsigned character
unsigned char
1
0 đến 255
unsigned integer
unsigned int
2
0 đến 65535
unsigned long integer
unsigned long
4
0 đến 4 tỉ
Chú ý : Khi thực hiện phép tính số học đối với số nguyên, cần hết sức thận trọng xem các
phép toán có cho kết quả vƣợt ra khỏi phạm vi biểu diễn của máy không, ta gọi là hiện
tƣợng tràn số.
Ví dụ : 32000+800-2000=29200
Máy tính sẽ xử lí sai vì lúc làm phép cộng 32000 với 800 đã cho ra kết quả trung gian là
32800, vƣợt quá giới hạn 32767 của máy.
Ví dụ 4: Khai báo biến số nguyên và tính tổng 2 số
//ví dụ về khai báo biến số nguyên và tính tổng của chúng
//khai báo hàm thƣ viện
#include
#include
void main()
{
//khai báo 3 biến thuộc kiểu integer
int a,b,c;
a=5;
b=10;
c=a+b;
printf(“Tong la %d=”,c);
getch() ;
}
2.3
KIỂU SỐ THỰC
Trong máy tính, số thực đƣợc biểu diễn dƣới 2 dạng: dạng bình thƣờng và dạng có số mũ
-Dạng thập phân bình thƣờng: 3.14
3.0
-24.123456 -0.0002
-Dạng có số mũ hay còn gọi là dạng viết khoa học: gồm 2 phần: phần định trị và phần mũ
viếtt sau chữ E để biểu diễn số mũ của cơ số 10.
Ví dụ: 678.12345= 6.7812345*102 sẽ đƣợc biểu diễn là 6.7812345E+02
-0.001234= -1.234*10-3 sẽ đƣợc biểu diễn là -1.234E-03
Bảng 2.2 : Các kiểu dữ liệu khai báo cho biến số thực
Kiểu biến
Từ khóa
số byte
dải giá trị
số thực với độ chính xác đơn
float
4
1.2E-38 đến 3.4E38
độ chính xác 7 chữ số
số thực với độ chính xác kép
double
8
2.2E-308 đến 1.8E308
độ chính xác 15 chữ số
số thực với độ chính xác kép – độ long
dài lớn
double
2.4
10
3.4E-4932 đến 3.4E4932
độ chính xác 19 chữ số
KIỂU KÍ TỰ
Kí tự là tất cả các chữ viết mà ta thƣờng dùng nhƣ các chữ cái a,b,c, …chữ số 0,1,…,9, các
dấu ;,.!@*…
Kiểu kí tự đƣợc định nghĩa trong C bằng từ khóa char
Một hằng kí tự đƣợc biểu diễn bằng chữ viết đó nằm giữa hai dấu nháy đơn
„a‟, „A‟, „0‟,‟*‟,…
Mỗi hằng kí tự đƣợc lƣu trữ đúng 1 byte ô nhớ.
Bộ mã kí tự đƣợc dùng phổ biến là bộ mã ASCII (American Standard Code for Information
Interchange)
KIỂU XÂU KÍ TỰ
2.5
Xâu kí tự là dãy nhiều kí tự đƣợc đặt trong 2 dấu nháy kép
Ví dụ: “Lap trinh”
Xâu kí tự không viết đƣợc trong biểu thức số học.
KIỂU BOOLEAN
2.6
Kiểu Boolean là kiểu chỉ có 2 giá trị: Đúng (True) hoặc sai (False)
Ví dụ: 3<1 là một mệnh đề có giá trị sai
-Trong C, một số nguyên có giá trị bằng 0 là false, còn các số nguyên khác (thông thƣờng
là số 1) là giá trị true.
Kết quả tính ra thì true luôn là giá trị 1.
BIẾN VÀ HẰNG
2.7
Dữ liệu đƣợc chứa trong máy tính có thể là biến hoặc hằng.
2.7.1 Biến
Biến là đại lƣợng có thể thay đổi đƣợc giá trị.
Biến đƣợc lƣu trữ trong bộ nhớ và đƣợc đặt tên để dễ sử dụng.
Biến là 1 vùng nhớ Ram dùng lƣu trữ dữ liệu tạm thời trong quá trình thực hiện chƣơng
trình. Việc truy xuất đến giá trị đƣợc lƣu trữ trong vùng nhớ đƣợc thực hiện thông qua tên
biến.
2.7.2 Khai báo biến
Muốn sử dụng biến, bắt buộc phải khai báo trƣớc.
Kiểudữliệu tênbiến1[= giátrị] , tênbiến2[=giátrị];
Tên (identifier): là 1 chuỗi tối đa 32 ký tự gồm chữ cái, số, dấu gạch dƣới. Trong đó
ký tự đầu tiên không phải là số. C phân biệt chữ hoa và chữ thƣờng. Có thể chỉ
định chiều dài tối đa của tên bằng chức năng:
OptionsCompilerSourceIdentifier length.
Biến phải gắn liền với 1 kiểu dữ liệu cụ thể.
Ví dụ 5: Khai báo một số biến thuộc các kiểu đã học
int a;
//khai báo 1 biến a thuộc kiểu integer
float dtb;
//khai báo 1 biến dtb thuộc kiểu số thực
char lop;
//khai báo 1 biến lop thuộc kiểu kí tự
unsigned int tuoi; //khai báo 1 biến tuổi thuộc kiểu số nguyên không dấu.
2.7.2.1.
Vị trí khai báo
Vị trí khai báo biến sẽ qui định phạm vi hoạt động của biến.
Khai báo bên trong khối lệnh: (Biến cục bộ)
-
Phải đƣợc khai báo sau dấu {, đầu khối và trƣớc tất cả các câu lệnh khác trong khối.
-
Phạm vi hoạt động: Các biến này chỉ đƣợc sử dụng bên trong khối lệnh đó.
-
Thời gian tồn tại: Khi thực hiện xong khối lệnh, thì vùng nhớ cấp phát cho các
biến này sẽ xóa (ngoại trừ trƣờng hợp có sử dụng từ khóa static).
-
Giá trị ban đầu: Nếu không gán giá trị khởi đầu thì giá trị của các biến cục bộ chƣa
đƣợc xác định. Trƣờng hợp có sử dụng từ khóa Static: thì các biến này có giá trị khởi
đầu mặc định là 0 và chỉ đƣợc gán giá trị khởi đầu khi thực hiện lần đầu tiên, các lần
sau sẽ sử dụng giá trị hiện đang lƣu trử.
-
Tên các biến trong cùng 1 khối lệnh không đƣợc trùng nhau nhƣng có thể trùng tên
với biến nằm ngoài khối lệnh.
Ví dụ 6: Lệnh và khối lệnh
{
int a =5, b =2;
{
int a=4;
b = a+b;
printf(“\n In trong khối a = %d, b = %d, a, b);
}
printf(“\n In ngoài khối a = %d, b = %d, a, b);
}
Kết quả:
In trong khối a = 4, b = 6
In ngoài khối a = 5, b = 6
Khai báo bên ngoài các hàm:(gọi là Biến ngoài)
-
Phạm vi sử dụng của biến ngoài là từ vị trí khai báo của nó cho đến cuối chƣơng
trình. Nó có thể sử dụng cho các chƣơng trình khác nhờ khai báo extern viết trên các
file này.
-
Giá trị ban đầu: Khi chƣa đƣợc khởi đầu thì giá trị của biến ngoài = 0.
-
Thời gian tồn tại: cho đến khi kết thúc chƣơng trình.
2.7.2.2.
Lấy địa chỉ của biến
Mỗi biến đƣợc cấp phát trong bộ nhớ gồm một hay nhiều byte liên tiếp tùy thuộc vào kiểu
dữ liệu. Địa chỉ của byte đầu tiên là địa chỉ của biến.
Phép toán:
&tênbiến
trả về địa chỉ của biến.
2.7.3 Hằng
Hằng là những giá trị cố định thuộc phạm vi của một kiểu dữ liệu, không bị thay đổi khi
thực hiện chƣơng trình.
Khai báo hằng
Muốn sử dụng hằng ta cũng phải khai báo trƣớc với từ khóa const.
Const Kiểu dữ liệu tên hằng=giá trị hằng
Ví dụ 7: Khai báo hằng
Const int tigia=16000;
const float pi=3.14;
Bài tập tại lớp
Câu 1. Chọn tƣơng ứng cho cột A và B:
Cột A
Cột B
8
Tên định danh sai
10.34
Hằng số nguyên
ABC
Hằng ký tự
abc
Double
23
Số chấm động
12112134.86868686886
Tên định danh đúng
_A1
$abc
„A‟
Hƣớng dẫn: Nhiều mục trên cột A có thể tƣơng ứng tới một mục đơn tại cột B.
Câu 2. Tính giá trị của các biến sau mỗi câu lệnh dƣới đây:
int a = 4^4
int a = 23.34
a = 10
b = a + a++
a = -5
b = -a
CHƢƠNG 3: CÁC PHÉP TOÁN & HÀM CƠ BẢN
Yêu cầu:
Sau khi học xong bài này, sinh viên phải hiểu và vận dụng các kiến thức, kĩ năng cơ bản
sau:
Hiểu đƣợc Toán tử gán
Hiểu đƣợc biểu thức số học
Nắm đƣợc toán tử quan hệ (Relational Operators) và toán tử luận lý (Logical
Operators)
Hiểu toán tử luận lý nhị phân (Bitwise Logical Operators) và biểu thức
(Expressions)
Hiểu khái niệm ép kiểu
Hiểu độ ƣu tiên của các toán tử.
Số tiết lên lớp: 2
Bảng phân chia thời lƣợng:
STT
NỘI DUNG
SỐ TIẾT
1
Các phép toán cơ bản
½
2
Chuyển đổi kiểu dữ liệu
½
3
Các hàm cơ bản và cách sử dụng
½
4
Bài tập thảo luận
½
Trọng tâm bài giảng:
Nắm vững các phép toán cơ bản, chuyển kiểu dữ liệu
Cách sử dụng một số hàm thông dụng
3.1
CÁC PHÉP TOÁN
3.1.1 Các phép toán số học:(Arithmetic Operators)[2]
C có 7 toán tử số học gồm
a) 5 toán tử 2 ngôi:
Bảng 3.1: Bảng mô tả các phép toán 2 ngôi
Phép toán Ký hiệu
Ví dụ
Phép toán
Ký
hiệu
Ví dụ
Cộng
+
a+b
Nhân
*
a*b
Trừ
-
a-b
Chia
/
a/b
Lấy phần dƣ
%
n%m
Phép chia trên 2 số nguyên cho kết quả là 1 số nguyên, cắt bỏ phần thập phân
không làm tròn số.
Ví dụ: 19 / 5 = 3 cắt bỏ 0.8
Phép chia lấy phần dƣ chỉ đƣợc dùng trên 2 toán hạng kiểu số nguyên (nếu không
sẽ sinh lỗi cú pháp)
Ví dụ: 19 % 5 = 4
Thứ tự thực hiện các toán tử trong một biểu thức tƣơng tự nhƣ trong Pascal
Ví dụ 8: Error! đƣợc viết (b*b - 4*a*c)/(2*d) hay (b*b - 4*a*c)/2/d
b) Hai toán tử 1 ngôi: Dùng tăng giảm các biến nguyên hay thực 1 đơn vị
Toán tử tăng (++) :
++biến; hay biến++;
Ví dụ 9: ++n; hay n++ <==> n = n+1;
Toán tử giảm (--): --biến; hay biến--;
Ví dụ 10: --n; hay n--; <==> n = n -1;
Chú ý: Trƣờng hợp sử dụng toán tử này trong một biểu thức thì việc đặt trƣớc hay sau sẽ
ảnh hƣởng đến kết quả bài toán:
Đặt trƣớc: nếu muốn thay đổi giá trị cho n trƣớc khi sử dụng n
Đặt sau: nếu muốn thay đổi giá trị cho n sau khi sử dụng n xong.
Ví dụ 11: Tiền
tăng
Ví dụ 12: Hậu
tăng
tố
B=3;
A=++B;
// A bằng 4, B bằng 4
tố
B=3;
A=B++;
// A bằng 3, B bằng 4
Ví dụ 13: Với n = 4. Lệnh x = ++n sẽ gán 5 cho x. Lệnh x = n++ sẽ gán 4 cho x
Ví dụ 14: Với x = 10 và y =11 thì:
printf(“%d %d %d“, x--*--y, x-- - --y, x++ + ++y);
Cho kết quả: 120 0 22
Nhƣng nếu tách thành 3 lệnh printf:
printf(“%d “, x--*--y); printf(“%d”, x-- - --y); printf(“%d “, x++ + ++y);
Cho kết quả: 120 -2 20
Độ ƣu tiên:Toán tử 1 ngôi có độ ƣu tiên cao hơn toán tử 2 ngôi.
Ví dụ 15: Chƣơng trình myProgram
1. Gọi trình soạn thảo để nhập những câu lệnh cho chƣơng trình C.
2. Tạo ra một tập tin mới.
3. Nhập vào đoạn mã sau:
#include
void main()
{
- Xem thêm -