Một chương trình được viết bằng một ngôn ngữ lập trình cụ thể (ví dụ Pascal, C…) gọi là chương trình nguồn, chương trình dịch làm nhiệm vụ dịch chương trình nguồn thành chương trình th[r]
(1)BỘ CÔNG THƯƠNG
TRƯỜNG CAO ĐẲNG KỸ THUẬT CAO THẮNG BỘ MÔN ĐIỆN TỬ VIỄN THÔNG
LƯU VĂN ĐẠI
NGUYỄN THIỆN THƠNG
GIÁO TRÌNH
LẬP TRÌNH ỨNG DỤNG
(2)MỤC LỤC
MỤC LỤC
CHƯƠNG GIỚI THIỆU
1.1 NGƠN NGỮ LẬP TRÌNH (PROGRAMMING LANGUAGE)
1.1.1 Thuật giải (Algorithm)
1.1.2 Chương trình (Program)
1.1.3 Ngơn ngữ lập trình (Programming language)
1.2 CÁC BƯỚC LẬP TRÌNH
1.3 KỸ THUẬT LẬP TRÌNH
1.3.1 I-P-O Cycle (Input-Pprocess-Output Cycle) (Quy trình nhập-xử lý-xuất)
1.3.2 Sử dụng lưu đồ (Flowchart)
1.4 BÀI TẬP
CHƯƠNG NGƠN NGỮ LẬP TRÌNH C
2.1 GIỚI THIỆU
2.2 MỘT SỐ KHÁI NIỆM CƠ BẢN 10
2.2.1 Bộ ký tự 10
2.2.2 Từ khóa 10
2.2.3 Kiểu liệu 10
2.2.4 Tên, Biến, 12
2.2.5 Biểu thức 16
2.3 CẤU TRÚC MỘT CHƯƠNG TRÌNH ĐƠN GIẢN 21
2.3.1 Cấu trúc chung 21
2.3.2 Khai báo sử dụng thư viện 23
2.3.3 Khai báo hằng, biến, kiểu 23
2.3.4 Một số lệnh đơn 23
2.3.5 Chú thích 24
2.3.6 Chương trình 24
2.4 NHẬP/XUẤT DỮ LIỆU 24
2.4.1 Nhập liệu từ bàn phím – Hàm scanf() 24
2.4.2 Xuất liệu hình - Hàm printf() 26
2.4.3 Ví dụ 29
2.5 BÀI TẬP 31
2.5.1 Bài tập làm theo yêu cầu 31
2.5.2 Bài tập tự làm 33
CHƯƠNG CẤU TRÚC ĐIỀU KIỆN 35
3.1 TUẦN TỰ 35
(3)3.2.1 Lệnh if 36
3.2.2 Lệnh switch 40
3.3 ĐIỀU KHIỂN LẶP 45
3.3.1 Lệnh for 45
3.3.2 Lệnh while 49
3.3.3 Lệnh while 51
3.3.4 Một số nhận xét for, while while 53
3.3.5 Lệnh break continue 54
3.4 BÀI TẬP 56
CHƯƠNG MẢNG VÀ CON TRỎ 58
4.1 MẢNG 58
4.1.1 Mảng C 58
4.1.2 Mảng chiều 58
4.1.3 Mảng nhiều chiều 63
4.2 XÂU KÝ TỰ 67
4.2.1 Khai báo nhập xuất liệu 67
4.2.2 Các hàm xử lý liệu xâu 69
4.2.3 Một số ví dụ 75
4.3 CON TRỎ 79
4.3.1 Khai báo sử dụng biến trỏ 80
4.3.2 Con trỏ mảng 84
4.3.3 Con trỏ tham số hình thức hàm 89
4.4 BÀI TẬP LÀM THEO YÊU CẦU 90
4.4.1 Tìm phần tử lớn mảng 90
4.4.2 Tính ma trận tích 90
4.5 BÀI TẬP TỰ LÀM 91
CHƯƠNG HÀM VÀ CON TRỎ HÀM 93
5.1 HÀM 93
5.1.1 Khai báo định nghĩa hàm 93
5.1.2 Lời gọi sử dụng hàm 96
5.1.3 Hàm với đối mặc định 97
5.1.4 Khai báo hàm trùng tên 98
5.1.5 Biến, đối tham chiếu 99
5.1.6 Cách truyền tham số 100
5.1.7 Hàm mảng 105
5.2 CON TRỎ HÀM 116
5.2.1 Khai báo 116
5.2.2 Sử dụng trỏ hàm 116
5.2.3 Mảng trỏ hàm 118
5.3 BÀI TẬP LÀM THEO YÊU CẦU 119
(4)5.3.2 Viết hàm đếm số từ xâu ký tự 120
5.4 BÀI TẬP TỰ LÀM 120
CHƯƠNG XÂY DỰNG GIAO DIỆN ỨNG DỤNG BẰNG VISUAL C SHARP 122
6.1 WINDOW FORM 122
6.1.1 Sự quan trọng Window Form 122
6.1.2 Những điểm Window Form 122
6.1.3 Tạo form 122
6.1.4 Các kiện form 125
6.2 CÁC CONTROL CĂN BẢN 127
6.2.1 Nút nhấn (Button) 127
6.2.2 Nhãn (Label) 133
6.2.3 Ô nhập (Textbox) 137
6.3 MỘT SỐ VÍ DỤ 141
6.3.1 Làm việc với Listbox 141
6.3.2 Làm việc với RadioButton 143
6.3.3 Làm việc với Timer 144
6.3.4 Viết chương trình thực phép tính 145
6.4 ĐIỀU KHIỂN LED VỚI ARDUINO VÀ C# 150
6.5 BÀI TẬP 155
TÀI LIỆU THAM KHẢO 157
(5)CHƯƠNG GIỚI THIỆU
1.1 NGÔN NGỮ LẬP TRÌNH (PROGRAMMING LANGUAGE)
Phần tìm hiểu số khái niệm thuật tốn, chương trình, ngơn ngữ lập trình Thuật ngữ "thuật giải" "thuật tốn" dĩ nhiên có khác song nhiều trường hợp chúng có nghĩa
1.1.1 Thuật giải (Algorithm)
Là dãy thao tác xác định đối tượng, cho sau thực số hữu hạn bước đạt mục tiêu Theo R.A.Kowalski chất thuật giải:
Thuật giải = Logic + Điều khiển
*Logic: Đây phần quan trọng, trả lời câu hỏi "Thuật giải làm gì, giải vấn đề gì?", yếu tố tốn có quan hệ với v.v… Ở bao gồm kiến thức chuyên môn mà bạn phải biết để tiến hành giải tốn
Ví dụ 1: Để giải tốn tính diện tích hình cầu, mà bạn khơng cịn nhớ cơng thức tính hình cầu bạn khơng thể viết chương trình cho máy để giải tốn
*Điều khiển: Thành phần trả lời câu hỏi: giải thuật phải làm nào? Chính
cách thức tiến hành áp dụng thành phần logic để giải vấn đề
1.1.2 Chương trình (Program)
Là tập hợp mơ tả, phát biểu, nằm hệ thống qui ước ý nghĩa thứ tự thực hiện, nhằm điều khiển máy tính làm việc Theo Niklaus Wirth thì:
Chương trình = Thuật tốn + Cấu trúc liệu
Các thuật tốn chương trình có cấu trúc dựa 3 cấu trúc điều khiển bản: * Tuần tự (Sequential): Các bước thực cách xác từ xuống, bước thực lần
* Chọn lọc (Selection): Chọn hay nhiều thao tác để thực * Lặp lại (Repetition): Một hay nhiều bước thực lặp lại số lần
Muốn trở thành lập trình viên chuyên nghiệp bạn làm trình tự để có thói quen tốt thuận lợi sau nhiều mặt người làm máy tính Bạn làm theo bước sau:
Tìm, xây dựng thuật giải (trên giấy) → viết chương trình máy → dịch chương trình → chạy thử chương trình
1.1.3 Ngơn ngữ lập trình (Programming language)
Ngơn ngữ lập trình hệ thống ký hiệu tuân theo qui ước ngữ pháp ngữ nghĩa, dùng để xây dựng thành chương trình cho máy tính
Một chương trình viết ngơn ngữ lập trình cụ thể (ví dụ Pascal, C…) gọi chương trình nguồn, chương trình dịch làm nhiệm vụ dịch chương trình nguồn thành chương trình thực thi máy tính
1.2 CÁC BƯỚC LẬP TRÌNH
(6)Bước 3: Cài đặt (viết chương trình)
Bước 4: Chạy thử chương trình (dịch chương trình)
Bước 5: Kiểm chứng hồn thiện chương trình (thử nghiệm nhiều số liệu đánh giá)
1.3 KỸ THUẬT LẬP TRÌNH
1.3.1 I-P-O Cycle (Input-Pprocess-Output Cycle) (Quy trình nhập-xử lý-xuất)
Quy trình xử lý máy tính gồm I-P-O
Ví dụ 2: Xác định Input, Process, Output việc làm ly nước chanh nóng
Input : ly, đường, chanh, nước nóng, muỗng
Process : - cho hỗn hợp đường, chanh, nước nóng vào ly
- dùng muỗng khuấy
Output : ly chanh nóng sẵn sàng để dùng
Ví dụ 3: Xác định Input, Process, Output chương trình tính tiền lương cơng nhân tháng 10/2002 biết lương = lương * ngày công
Input : lương bản, ngày công
Process : nhân lương với ngày công
Output : lương
Ví dụ 4: Xác định Input, Process, Output chương trình giải phương trình bậc ax + b =
Input : hệ số a, b Process : chia – b cho a
Output : nghiệm x
Ví dụ 5: Xác định Input, Process, Output chương trình tìm số lớn số a b
Input : a, b
Process : Nếu a > b Output = a lớn Ngược lại Output = b lớn
Bài tập: Xác định Input, Process, Output chương trình sau: Đổi từ tiền VND sang tiền USD
2 Tính điểm trung bình học sinh gồm mơn Tốn, Lý, Hóa Giải phương trình bậc 2: ax2 + bx + c =
4 Đổi từ độ sang radian đổi từ radian sang độ (công thức α/π = a/180, với α: radian, a: độ) Kiểm tra số a, b giống hay khác
1.3.2 Sử dụng lưu đồ (Flowchart)
Để dễ quy trình xử lý, nhà lập trình đưa dạng lưu đồ để minh họa
Input Output
(7)bước trình xử lý vấn đề (bài tốn)
Hình dạng (symbol) Hành động (Activity)
Dữ liệu vào (Input)
Xử lý (Process)
Dữ liệu (Output)
Quyết định (Decision), sử dụng điều kiện
Luồng xử lý (Flow lines) Gọi CT con, hàm… (Procedure, Function…)
Bắt đầu, kết thúc (Begin, End)
Điểm ghép nối (Connector)
(8)1.4 BÀI TẬP
Vẽ lưu đồ cho chương trình sau: Đổi từ tiền VND sang tiền USD
2 Tính điểm trung bình học sinh gồm mơn Tốn, Lý, Hóa Giải phương trình bậc 2: ax2 + bx + c =
4 Đổi từ độ sang radian đổi từ radian sang độ
(9)CHƯƠNG NGÔN NGỮ LẬP TRÌNH C
2.1 GIỚI THIỆU
- C ngơn ngữ lập trình cấp cao, sử dụng phổ biến để lập trình hệ thống với Assembler phát triển ứng dụng
- Vào năm cuối thập kỷ 60 đầu thập kỷ 70 kỷ XX, Dennish Ritchie (làm việc
tại phịng thí nghiệm Bell) phát triển ngơn ngữ lập trình C dựa ngơn ngữ BCPL (do Martin Richards đưa vào năm 1967) ngôn ngữ B (do Ken Thompson phát triển từ ngôn ngữ BCPL vào năm 1970 viết hệ điều hành UNIX máy PDP-7) cài đặt lần hệ điều hành UNIX máy DEC PDP-11
- Năm 1978, Dennish Ritchie B.W Kernighan cho xuất “Ngơn ngữ lập trình
C” phổ biến rộng rãi đến
- Lúc ban đầu, C thiết kế nhằm lập trình mơi trường hệ điều hành Unix nhằm mục đích hỗ trợ cho cơng việc lập trình phức tạp Nhưng sau, với nhu cầu phát triển ngày tăng cơng việc lập trình, C vượt qua khn khổ phịng thí nghiệm Bell nhanh chóng hội nhập vào giới lập trình để cơng ty lập trình sử dụng cách rộng rãi Sau đó, cơng ty sản xuất phần mềm đưa phiên hỗ trợ cho việc lập trình ngơn ngữ C chuẩn ANSI C khai sinh từ
- Ngơn ngữ lập trình C ngơn ngữ lập trình hệ thống mạnh “mềm dẻo”, có
một thư viện gồm nhiều hàm (function) tạo sẵn Người lập trình tận dụng hàm để giải tốn mà khơng cần phải tạo Hơn nữa, ngôn ngữ C hỗ trợ nhiều phép toán nên phù hợp cho việc giải tốn kỹ thuật có nhiều cơng thức phức tạp Ngồi ra, C cho phép người lập trình tự định nghĩa thêm kiểu liệu trừu tượng khác Tuy nhiên, điều mà người vừa học lập trình C thường gặp “rắc rối” “hơi khó hiểu” “mềm dẻo” C Dù vậy, C phổ biến rộng rãi trở thành công cụ lập trình mạnh, sử dụng ngơn ngữ lập trình chủ yếu việc xây dựng phần mềm
- Ngôn ngữ C có đặc điểm sau:
o Tính đọng (compact): C có 32 từ khóa chuẩn 40 toán tử chuẩn, hầu hết biểu diễn chuỗi ký tự ngắn gọn
o Tính cấu trúc (structured): C có tập hợp thị lập trình cấu trúc lựa chọn, lặp… Từ chương trình viết C tổ chức rõ ràng, dễ hiểu
(10)o Tính linh động (flexible): C ngôn ngữ uyển chuyển cú pháp, chấp nhận nhiều cách thể hiện, thu gọn kích thước mã lệnh làm chương trình chạy nhanh
o Biên dịch (compile): C cho phép biên dịch nhiều tập tin chương trình riêng rẽ thành tập tin đối tượng (object) liên kết (link) đối tượng lại với thành chương trình thực thi (executable) thống
2.2 MỘT SỐ KHÁI NIỆM CƠ BẢN 2.2.1 Bộ ký tự
Bộ chữ viết ngôn ngữ C bao gồm ký tự, ký hiệu sau: (phân biệt chữ in hoa in thường):
- 26 chữ latinh lớn A,B,C Z ; - 26 chữ latinh nhỏ a,b,c z ; - 10 chữ số thập phân 0,1,2 ;
- Các ký hiệu toán học: +, -, *, /, =, <, >, (, )
- Các ký hiệu đặc biệt: : , ; " ' _ @ # $ ! ^ [ ] { } ;
- Dấu cách hay khoảng trống
2.2.2 Từ khóa
Từ khóa từ dành riêng (reserved words) C với mục đích xác định trước Ví dụ:
- Từ khóa int dùng để khai báo biến hàm với kiểu liệu số nguyên; - Từ khóa if dùng để xây dựng câu lệnh cấu trúc chọn;
- Từ khóa for dùng để xây dựng câu lệnh cấu trúc lặp Danh sách từ khóa:
Lưu ý: khơng dùng từ khóa vào mục đích khác, đặt tên đối tượng (biến, hằng, tên hàm ) trùng với từ khóa Các từ khóa Turbo C 3.0 bao gồm:
2.2.3 Kiểu liệu
Các kiểu liệu sơ cấp chuẩn C chia làm dạng : kiểu số nguyên, kiểu số thực
(11)Kiểu số nguyên kiểu liệu dùng để lưu giá trị nguyên hay gọi kiểu đếm Kiểu số nguyên C chia thành kiểu liệu con, kiểu có miền giá trị khác
Kiểu số nguyên byte (8 bits): Kiểu số nguyên byte gồm có kiểu sau:
STT Kiểu liệu Miền giá trị (Domain)
1 unsigned char Từ đến 255 (tương đương 256 ký tự bảng mã ASCII)
2 char Từ -128 đến 127
Kiểu unsigned char: lưu số nguyên dương từ đến 255
Để khai báo biến kiểu ký tự ta khai báo biến kiểu unsigned char Mỗi số miền giá trị kiểu unsigned char tương ứng với ký tự bảng mã ASCII
Kiểu char: lưu số nguyên từ -128 đến 127 Kiểu char sử dụng bit trái để làm bit dấu Nếu gán giá trị > 127 cho biến kiểu char giá trị biến số âm (?) Kiểu số nguyên bytes (16 bits): Kiểu số nguyên bytes gồm có kiểu sau:
STT Kiểu liệu Miền giá trị (Domain)
1 enum Từ -32,768 đến 32,767
2 unsigned int Từ đến 65,535
3 Short int Từ -32,768 đến 32,767
4 int Từ -32,768 đến 32,767
Kiểu enum, short int, int : Lưu số nguyên từ -32768 đến 32767 Sử dụng bit bên trái để làm bit dấu
Nếu gán giá trị >32767 cho biến có kiểu giá trị biến số âm Kiểu unsigned int: Kiểu unsigned int lưu số nguyên dương từ đến 65535
Kiểu số nguyên byte (32 bits): Kiểu số nguyên bytes hay gọi số nguyên dài (long) gồm có kiểu sau:
STT Kiểu liệu Miền giá trị (Domain)
1 unsigned long Từ đến 4,294,967,295
2 long Từ -2,147,483,648 đến 2,147,483,647
(12) Nếu gán giá trị >2147483647 cho biến có kiểu long giá trị biến số âm Kiểu unsigned long: Kiểu unsigned long lưu số nguyên dương từ đến 4294967295 Kiểu số thực
Kiểu số thực dùng để lưu số thực hay số có dấu chấm thập phân gồm có kiểu sau:
STT Kiểu liệu Kích thước (Size) Miền giá trị (Domain)
1 float bytes Từ 3.4 * 10-38 đến 3.4 * 1038
2 double bytes Từ 1.7 * 10-308 đến 1.7 * 10308
3 long double 10 bytes Từ 3.4 *10-4932 đến 1.1 *104932
Mỗi kiểu số thực có miền giá trị độ xác (số số lẻ) khác Tùy vào nhu cầu sử dụng mà ta khai báo biến thuộc kiểu
Ngồi ta cịn có kiểu liệu void, kiểu mang ý nghĩa kiểu rỗng khơng chứa giá trị
2.2.4 Tên, Biến,
Tên
Tên hay gọi danh biểu (identifier) dùng để đặt cho chương trình, hằng, kiểu, biến, chương trình Tên có hai loại tên chuẩn tên người lập trình đặt
- Tên chuẩn tên C đặt sẵn tên kiểu: int, char, float,…; tên hàm: sin, cos - Tên người lập trình tự đặt để dùng chương trình
Sử dụng chữ cái, chữ số dấu gạch (_) để đặt tên, phải tuân thủ quy tắc:
- Bắt đầu chữ dấu gạch dưới;
- Không có khoảng trống tên;
- Khơng trùng với từ khóa;
- Độ dài tối đa tên khơng giới hạn, nhiên có 31 ký tự có ý nghĩa; - Không cấm việc đặt tên trùng với tên chuẩn ý nghĩa tên chuẩn khơng cịn
giá trị
Ví dụ: tên người lập trình đặt:
Chieu_dai, Chieu_Rong, Chu_Vi, Dien_Tich Tên khơng hợp lệ: Do Dai, 12A2,…
Biến
Biến đại lượng người lập trình định nghĩa đặt tên thông qua việc khai báo biến Biến dùng để chứa liệu trình thực chương trình giá trị biến bị thay đổi trình Mỗi biến phải thuộc kiểu liệu xác định có miền giá trị thuộc kiểu
(13)<Kiểu liệu> Danh sách tên biến cách dấu phẩy; Ví dụ 2.1:
int a, b, c; /*Ba biến a, b,c có kiểu int*/ long int chu_vi; /*Biến chu_vi có kiểu long*/ float nua_chu_vi; /*Biến nua_chu_vi có kiểu float*/ double dien_tich; /*Biến dien_tich có kiểu double*/ Lưu ý: Để kết thúc lệnh phải có dấu chấm phẩy (;) cuối lệnh Vị trí khai báo biến C
Trong ngơn ngữ lập trình C, ta phải khai báo biến vị trí Nếu khai báo (đặt biến) khơng vị trí dẫn đến sai sót ngồi ý muốn mà người lập trình khơng lường trước (hiệu ứng lề) Chúng ta có cách đặt vị trí biến sau:
- Khai báo biến ngoài: Các biến đặt bên ngồi tất hàm có tác dụng
hay ảnh hưởng đến toàn chương trình (cịn gọi biến tồn cục), ví dụ :
int i; /*Bien ben ngoai */
float pi; /*Bien ben ngoai*/ int main()
{ … }
- Khai báo biến trong: Các biến đặt bên hàm, chương trình hay khối lệnh Các biến có tác dụng hay ảnh hưởng đến hàm, chương trình hay khối lệnh chứa Khi khai báo biến, phải đặt biến đầu khối lệnh, trước lệnh gán, …
Ví dụ 2.2:
#include <stdio.h> #include <conio.h>
int bienngoai; /*khai bao bien ngoai*/ int main ()
{
int j,i; /*khai bao bien ben chuong trinh chinh*/ i=1; j=2;
bienngoai=3;
printf("\n Gia tri cua i la %d",i);
/*%d số nguyên, biết sau */ printf("\n Gia tri cua j la %d",j);
(14)getch(); return 0; }
Ví dụ 2.3:
#include <stdio.h> #include<conio.h> int main ()
{
int i, j; /*Bien ben trong*/ i=4; j=5;
printf("\n Gia tri cua i la %d",i); printf("\n Gia tri cua j la %d",j); if(j>i)
{
int hieu=j-i; /*Bien ben */
printf("\n Hieu so cua j tru i la %d",hieu); }
else {
int hieu=i-j ; /*Bien ben trong*/
printf("\n Gia tri cua i tru j la %d",hieu); }
getch(); return 0; }
Hằng
Là đại lượng không đổi suốt trình thực thi chương trình Cú pháp:
const <Kiểu liệu> <Tên_hằng> = Giá_trị; Ví dụ 2.4:
const int heso=10; Hằng số thực
(15)- Cách 1: Sử dụng cách viết thông thường mà sử dụng mơn Tốn, Lý, …Điều cần lưu ý sử dụng dấu thập phân dấu chấm (.);
Ví dụ: 123.34 -223.333 3.00 -56.0
- Cách 2: Sử dụng cách viết theo số mũ hay số khoa học Một số thực tách làm phần, cách ký tự e hay E
Phần giá trị: số nguyên hay số thực viết theo cách
Phần mũ: số nguyên
Giá trị số thực là: Phần giá trị nhân với 10 mũ phần mũ Ví dụ 2.5: 1234.56e-3 = 1.23456 (là số 1234.56 * 10-3)
-123.45E4 = -1234500 ( -123.45 *104) Hằng số nguyên
Số nguyên gồm kiểu int (2 bytes) , long (4 bytes) thể theo cách sau :
- Hằng số nguyên bytes (int) hệ thập phân: Là kiểu số mà sử dụng thông thường, hệ thập phân sử dụng ký số từ đến để biểu diễn giá trị nguyên
Ví dụ 2.6: 123, -242
- Hằng số nguyên byte (int) hệ bát phân: Là kiểu số nguyên sử dụng ký số từ đến để biểu diễn số nguyên
Cách biểu diễn: 0<các ký số từ đến 7>
Ví dụ 2.7: 0345, -020 (số 345, -20 hệ bát phân)
- Hằng số nguyên byte (int) hệ thập lục phân: Là kiểu số nguyên sử dụng 10 ký số từ đến ký tự A, B, C, D, E ,F để biểu diễn số nguyên
Cách biểu diễn: 0x<các ký số từ đến ký tự từ A đến F>
- Hằng số nguyên byte (long): Số long (số nguyên dài) biểu diễn số int hệ thập phân kèm theo ký tự l L Một số nguyên nằm miền giá trị số int ( bytes) số long ( bytes)
Ví dụ 2.8: 45345L hay 45345l hay 45345
- Các số cịn lại: Viết cách viết thơng thường (khơng có dấu phân cách số) Hằng ký tự
Hằng ký tự ký tự riêng biệt viết cặp dấu nháy đơn (‘) Mỗi ký tự tương ứng với giá trị bảng mã ASCII Hằng ký tự xem trị số nguyên
Ví dụ: ‘a’, ‘A’, ‘0’, ‘9’
Chúng ta thực phép toán số học ký tự (thực chất thực phép toán giá trị ASCII chúng)
Hằng chuỗi ký tự
(16)Lưu ý:
- Một chuỗi khơng có nội dung “” gọi chuỗi rỗng;
- Khi lưu trữ nhớ, chuỗi kết thúc ký tự NULL (‘\0’: mã Ascii 0); - Để biểu diễn ký tự đặc biệt bên chuỗi ta phải thêm dấu \ phía trước Ví dụ: “I’m a student” phải viết “I\’m a student”; “Day la ky tu “dac biet”” phải viết “Day la ky tu \”dac biet\”“
2.2.5 Biểu thức
Biểu thức kết hợp toán tử (operator) toán hạng (operand) theo trật tự định Mỗi tốn hạng hằng, biến biểu thức khác Trong trường hợp, biểu thức có nhiều tốn tử, ta dùng cặp dấu ngoặc đơn () để định toán tử thực trước
Ví dụ: Biểu thức nghiệm phương trình bậc hai: (-b + sqrt(Delta))/(2*a)
Trong hằng; a, b, Delta biến Các tốn tử số học
Trong ngơn ngữ C, toán tử +, -, *, / làm việc tương tự chúng làm việc ngôn ngữ khác Ta áp dụng chúng cho đa số kiểu liệu có sẵn cho phép C Khi ta áp dụng phép / cho số nguyên hay ký tự, phần dư bị cắt bỏ Chẳng hạn, 5/2 phép chia nguyên
Toán tử Ý nghĩa
+ Cộng
- Trừ
* Nhân
/ Chia
% Chia lấy phần dư
Giảm đơn vị
++ Tăng đơn vị
Tăng giảm (++ & )
Toán tử ++ thêm vào tốn hạng -– trừ bớt Nói cách khác: x = x + giống ++x
(17)Cả tốn tử tăng giảm tiền tố (đặt trước) hay hậu tố (đặt sau) tốn hạng Ví dụ: x = x + viết x++ (hay ++x)
Tuy nhiên tiền tố hậu tố có khác biệt sử dụng biểu thức Khi toán tử tăng hay giảm đứng trước tốn hạng nó, C thực việc tăng hay giảm trước lấy giá trị dùng biểu thức Nếu toán tử sau toán hạng, C lấy giá trị tốn hạng trước tăng hay giảm Tóm lại:
x = 10
y = ++x //y = 11 Tuy nhiên:
x = 10
y = x++ //y = 10
Thứ tự ưu tiên toán tử số học: ++ sau * / % đến + - Các toán tử quan hệ toán tử Logic
Ý tưởng tốn tử quan hệ toán tử Logic sai Trong C giá trị khác gọi đúng, sai Các biểu thức sử dụng toán tử quan hệ Logic trả sai trả
Toán tử Ý nghĩa
Các toán tử quan hệ
> Lớn
>= Lớn
< Nhỏ
<= Nhỏ
== Bằng
!= Khác
Các toán tử Logic && AND
|| OR
! NOT
(18)P q p&&q p||q !p
0 0
0 1
1 0
1 1
Các toán tử quan hệ Logic có độ ưu tiên thấp tốn tử số học Do biểu thức như: 10 > 1+ 12 xem 10 > (1 + 12) kết sai (0)
Ta kết hợp vài tốn tử lại với thành biểu thức sau: 10>5&&!(10<9)||3<=4 Kết
Thứ tự ưu tiên toán tử quan hệ Logic
Cao nhất: !
> > = < <=
== !=
&& Thấp nhất: || Các toán tử Bitwise
Các tốn tử Bitwise ý nói đến kiểm tra, gán hay thay đổi Bit thật Byte Word, mà C chuẩn kiểu liệu biến char, int Ta sử dụng toán tử Bitwise với liệu thuộc kiểu float, double, long double, void hay kiểu phức tạp khác
Toán tử Ý nghĩa
& AND
| OR
^ XOR
~ NOT
>> Dịch phải << Dịch trái Bảng chân trị toán tử ^ (XOR)
(19)0 0 1 1 1 Toán tử ? với :
C có tốn tử mạnh thích hợp để thay cho câu lệnh If-Then-Else Cú pháp việc sử dụng toán tử ? là:
E1 ? E2 : E3
Trong E1, E2, E3 biểu thức
Ý nghĩa: Trước tiên E1 ước lượng, E2 ước lượng trở thành giá trị biểu thức; E1 sai, E3 ước lượng trở thành giá trị biểu thức
Ví dụ 2.9: X = 10
Y = X > ? 100 : 200
Thì Y gán giá trị 100, X nhỏ Y nhận giá trị 200 Đoạn mã tương đương cấu trúc if sau:
X = 10
if (X < 9) Y = 100 else Y = 200 Toán tử trỏ & *
Một trỏ địa nhớ biến Một biến trỏ biến khai báo riêng để chứa trỏ đến đối tượng kiểu Ta tìm hiểu kỹ trỏ chương trỏ Ở đây, đề cập ngắn gọn đến hai toán tử sử dụng để thao tác với trỏ
Toán tử thứ &, toán tử quy ước trả địa nhớ hệ số Ví dụ 2.10: m = &count
Đặt vào biến m địa nhớ biến count
Chẳng hạn, biến count vị trí nhớ 2000, giả sử count có giá trị 100 Sau câu lệnh m nhận giá trị 2000
Toán tử thứ hai *, bổ sung cho &; toán tử quy ước trả giá trị biến cấp phát địa theo sau
Ví dụ 2.11: q = *m
(20)Toán tử dấu phẩy ,
Toán tử dấu , sử dụng để kết hợp biểu thức lại với Bên trái tốn tử dấu , ln xem kiểu void Điều có nghĩa biểu thức bên phải trở thành giá trị tổng biểu thức phân cách dấu phẩy
Ví dụ 2.12: x = (y=3,y+1);
Trước hết gán cho y gán cho x Cặp dấu ngoặc đơn cần thiết tốn tử dấu , có độ ưu tiên thấp toán tử gán
Dấu ngoặc đơn dấu ngoặc vuông
Trong C, cặp dấu ngoặc đơn toán tử để tăng độ ưu tiên biểu thức bên Các cặp dấu ngoặc vuông thực thao tác truy xuất phần tử mảng
Cách viết tắt C
Có nhiều phép gán khác nhau, đơi ta sử dụng viết tắt C Chẳng hạn: x = x + 10 viết thành x +=10
Toán tử += báo cho chương trình dịch biết để tăng giá trị x lên 10 Cách viết làm việc tất tốn tử nhị phân (phép tốn hai ngơi) C Tổng quát:
(Biến) = (Biến) (Toán tử) (Biểu thức) viết:
(Biến) (Tốn tử)= (Biểu thức) Tổng kết độ ưu tiên
Cao () []
! ~ ++ (Kiểu) * & * / %
+ - << >> < <= > >= &