TAI LIEU THAM KHAO
1 Giáo trình tin hoc (tập 1, 2), Hồ Sĩ Đàm & Lê Khắc Thành, NXB DHQGHN 2 Hướng dẫn thực hành và ứng dụng Windows XP, Nguyễn Tiến, Đặng Xuân
Hường & Nguyễn Văn Hồi, NXB Thống kê
3 Ngơn ngữ lập trình C, Quách Tuần Ngọc , Nhà xuất bản Giáo dục
Trang 4Khoa CNTT ~ Truong CDKT Ly Tu Trong [ itt; }while (i<=MAX) i
printf("Tong cac so le: d\n", odd); printf ("Tong cac so chan: td\n", even) ;
printf ("Tong day so: $d", sum) ; getch () ; Két qua: SN x0 m°.J101104|JN TT CC (Fl x! ae
Tong cac so le: 2589 tong cac so chan: 2558
ong day so: 5@58 aa uy BAI TAP 1 Viét chương trình giải và biện luận phương trình bậc 2 với các hệ số a, b, c và nghiệm x là các số thực : ax? +bx+c=0
2 Viét chương trình nhập bán kính r và chiều cao ? của một hình cầu Nhập yêu cầu tính tóan các thông số của hình cầu gồm:
'A' hoặc ‘a’ (Area): tinh diện tích hình cầu 4 = 7-7?
“C° hoặc *c' (Circumference): tinh chu vi hình cầu € = 2 Tr
-V' hoặc *v' (Volume): tínhthể tích hình cầu ‘= 22 -}
3 Viết chương trình dùng các cấu trúc lặp for, while, do while dé in dãy các số
nguyên lẻ nhỏ hơn 100 theo chiều ngược với mẫu sau: 99, 97, 95, .,3, 1
4 Viết chương trình tính tổng và tích của dãy số gồm n>0 phân tử Trong đó n được nhập
vào từ bàn phím khi thực hiện chương trình: 117
Trang 5Khoa CNTT — Trường CĐKT Lý Tự Trọng void main (void) { int i=l;
printf ("Cac so nguyen tu 1 %d:\n\n", MAX); do printf ("%6d", i++); while (i<=MAX) ; getch () ; } b Vidu2
Trang 6Khoa CNTT - Trường CĐKT Lý Tự Trọng HI CẤU TRÚC do while 1, Cú pháp
do statement; while (condition) ;
Thuc hién phat biéu statement khi condi tion van còn có tri true do{ compound statement; }while (condition) ;
condition: Biểu thức điều kiện bất kỳ bao gồm các tóan tử so sánh, logic, bitwise với kết
quả là một giá trị logic true (1) hoặc £a1se (0) Biểu thức điều kiện conđi tion phải được viết trong cặp ngoặc “ ( ) ”
statement: Phat biéu bat ky
compound statement: Phat biéu phttc hay khối lệnh, phải được bao trong cặp ngoặc
nhọn { } LƯU Ý:
- Cau tric do while con gọi là cầu trúc lặp kiểm tra điều kiện sau (pre-test loop) vì điều kiện được kiểm tra sau khi thực hiện statement
- statement được thực hiện tối thiểu 1 lần cho dù lần kié tra condi tion đầu tiên co tri true - V6i phát biểu: do ; while(1) ;
SẼ tạo ra việc lặp vô tận, và chỉ có thê kết thúc bằng một trong các phát biéu break,
goto hodc return 2 Ví dụ
a Vidul
Viết lại chương trình in ra màn hình các số nguyên từ 1 đến 100, mỗi giá trị in ra trong 6 vi
Trang 7Khoa CNTT - Trường CĐKT Lý Tự Trọng { int i, sum, odd, even; 13 = 1; odd = even = sum = 0; while (i<=MAX) { sumt+=i ; if (i%2!=0) // 1 la so 1e odd+=i ; else /⁄/ i la so chan event=i; itt; }
printf ("Tong cac so le: %d\n", odd);
printf ("Tong cac so chan: %d\n", even);
printf ("Tong day so: %d", sum); getch () ; } Kết quả: | c+ “D:\Hai-GiaoTrinh)KTLTSEXSe#fi
ong cac so chan: 2558 Jong day so: 5858
Trang 8Khoa CNTT - Trường CĐKT Lý Tự Trọng | #include <stdio.h> #include <conio.h> #define MAX 100 void main (void) { int i=1; printf ("Cac so nguyen tu 1 %d:\n\n", while (i<=MAx) printf ("$6d", i++); getch(); MAX) ; b Vidu2
Trang 9Khoa CNTT — Truong CDKT Ly Tu Trong 1 CAU TRUC while
1 Cú pháp
while (condition) statement;
khi giá trị của biéu thirc condition con 1a true thi thuc hién statement while (condition) { compound statement;
condition: Biêu thức điều kiện bất kỳ bao gồm các tóan tử so sánh, logic, bitwise với kết quả là một giá trị logic true (1) hoặc fa1se (0) Biểu thức điều kiện condition phải
được viết trong cặp ngoặc “( ) ” statement: Phát biêu bất kỳ
compound statement: Phát biểu phức hay khối lệnh, phải được bao trong cặp ngoặc
nhọn { }
LƯU Ý:
-_ Cấu trúc whi1le còn gọi là cầu trúc lặp kiểm tra điều kiện trước (pre-test loop) vì điều kiện được kiểm tra trước khi thực hién statement
- statement c6 thé không được thực hiện lần nào nếu lan kié tra condition ddu tién cé tri false - Với phát biểu: while (1) ;
sẽ tạo ra việc lặp vô tận, và chỉ có thể kết thúc băng một trong các phát biểu break, goto hodc return
2 Vidu
a Vidul
Viết lại chương trình in ra màn hình các số nguyên từ 1 đến 100, mỗi giá trị in ra trong 6 vị trí, dùng cầu tric while thay vi for
Trang 10Khoa CNTT - Trường CĐKT Lý Tự Trọng #include <stdio.h> #include <conio.h> #define MAX 100 void main (void) {
int i, sum, odd, even;
odd = even = sum = 0;
for (i=1; i<=MAX; i++) { sumt+=i ; if (i%2!=0) // ilasole odd+=i ; | else // i la so chan event=1;
Printf ('"Tong cac so le: d\n", odd);
printf ("Tong cac so chan: d\n", even) ;
printf ("Tong day so: $d", sum); getch();
Kết quả:
DI
ong cac so le: 2500 ong cac so chan: 2550
Hong đau so: 50858
Trang 11
Khoa CNTT - Trường CĐKT Ly Tự Trọng
sẽ tạo ra việc lặp vô tận, và chỉ có thê kết thúc bằng một trong các phát biểu break, goto hoặc return
-_ Cấu trúc lặp for còn được gọi là câu trúc lặp cố dinh (fixed loop) vi s6 lan lap hoan tòan được xác định 2 Ví dụ a Vidul In ra màn hình các số nguyên từ | dén 100, mỗi giá trị in ra trong 6 vị trí #include <stdio.h> #include <conio.h> #define MAX 100 void main (void) { int i;
printf ("Cac so nguyen tu 1 %d:\n\n", MAX);
Trang 12Khoa CNTT - Truong CDKT Ly Tự Trọng BÀI 17: CÁU TRÚC LẶP I CAU TRUC LAP FOR 1 Cú pháp for(init expression; cond expression; loop_expression) statement;
Lặp lại việc thực hiện phát biêu statement với số lần xác định tùy thuộc vào init expression va cond expression for(init expression; cond expression; loop_expression) { compound statement;
init expression: Biéu thit thiét lập giá tri khởi động đếm số lần của vòng lặp, biểu thức này không bị ràng buộc về kiểu dữ liệu
cond_ expzession: Biểu thức điều kiện để kết thúc vòng lặp Biểu thức phải có kiểu số
học hoặc con trỏ (pointer) và giá trị biểu thức được định giá mỗi khi bắt đầu một lần lặp va thường có kiểu Ï logic (false/true)
loop _ expression: Biểu thức dùng để định giá sau mỗi lần lặp và dùng cho bước lặp sau trong biểu thức điều kiện cond_expression Biểu thức này không bị hạn chế về kiểu
đữ liệu
Khi trong vòng lặp for có phát biểu continue thì 1oop_expression được định gia va điều khiển được đưa về đầu vòng lặp Khi có phát biểu break trong vòng lặp fo+ thì
loop_expression không được thực hiện và điều khiển được đua ra sau for
Trang 14Khoa CNTT- —-< CĐKT by Ty W Trọng b Ví dụ2 exadecimal: @xf5a? a mo “Ds TH t so nguyen: 52935 e dem (8/10/16): 3
He dem 3 khong xac dinh
Viết lại chương trình ví đụ 2 ở mục 1.2.2 dùng cấu tric switch thay vì dùng cầu trúc if #include <stdio.h> #include <conio.h> #define ADD #define SUB #define MUL #define DIV #define ERR_IN #define ERR OP void main (void) { float a,b; char op; bet rf
"Toan tu khong hop le" "Phep chia cho zero”
Trang 16Khoa CNTT - Trường CĐKT Lý Tự Trọng Case constant2: statement2; [break ; ]
(default: default statement; ]
expression = constant]: thuc hién statement]
expression = constant2: thuc hién statement2
expression = default ¢ (constant1, constant2, ): thuc hién default statement
expression: Biéu thitc cho két quả là kiểu đữ liệu đếm được, nghĩa là các giá trị rời rac kiéu char, int, long
coensCanL1, constant2, : Giá trị kết quả tương ứng của biểu thức expression
statement1, statement2, default_statement: Phát biểu bất kỳ
default: Trường hợp biểu thức expression cho kết quả khác với các hằng
_ Constan£1, constant2, đã liệt kê
break: Thông thường sau mỗi khối case cần có một phát biêu break nhằm chuyên điều khiến ra ngòai switch Điều này sẽ làm cho các phát biểu ở các khối case sau đó không được thực hiện Hãy thử bỏ các phát biểu break trong các ví dụ bên đưới để thấy tác dụng
của nó
2 Ví dụ
a Vi dụ] ‘
Trang 17Khoa CNTT — Truong CDKT Ly Tu Trọng if (b!=0) printf ("%5.2£ $c $%5.2£ $6.2f\n", a, op, b, | a/b) ; else printf ("%5.2f %c %5.2f = %s\n", a, op, b, ERR_DIV) ; else printf (ERR_OP) ; getch () ; oan tu + ~ * />: &
oan tu khong hop lem
Nhap 2 so bat ky: 42 os
oan tu + — * />: /
42.66 ¢ 8.00 = Phep chia cho zero
Trang 18Khoa CNTT - Trường CĐKT Lý Tự Trọng
Nhập vào 2 giá trị số thực bất kỳ và 1 ký hiệu tóan từ số hoc (+, -, *, /), tinh va in ra man
hình kết quả biểu thức tương ứng #include <stdio.h> #include <conio.h> #define ADD ry #define SUB ta! #define MUL tae
#define DIV VÀ
#define EBRR OP "Toan tu khong hop le" #define ERR_DIV "Phep chia cho zero" void main (void)
{
float a,b;
char op;
printf£("Nhap 2 so bat ky: ");
Trang 19Khoa CNTT —- Truong CDKT Ly Tu Trong
statement: Mét phat biéu bat ky va co thé la phép gan, biéu thitc, phép gọi hàm, và cũng có thể là một cầu trúc điều khiển bất kỳ Kết thúc một phát biểu phải có một dấu chấm phẩy
é6 Q32 af
compound statement: Phát biểu phức hay khối lệnh Khi có từ 2 phát biểu trở lên trong một cấu trúc điều khiển, thì các phát biểu này phải được bao trong cặp ngoặc nhọn “{ }” Kết thúc một compound statement khéng c6 ddu cham phay 2 Ví dụ a Vidul Nhập 2 giá trị số kiểu int, kiểm tra và in ra số lớn hon theo dang max (a,b) =? #include <stdio.h> #include <conio.h> void main(void) { int a,b;
printf ("Nhap 2 so nguyen bat ky: ");
Trang 20Khoa CNTT - Trường CĐKT Lý Tự Trọng 1 Viết chương trình nhập vào chiều đài và chiều rộng của một hình chữ nhật, tính và in ra màn hình: - _ Chu vi hình chữ nhật - _ Diện tích hình chữ nhật
2 Viết chương trình nhập một chữ hoa và đổi sang chữ thường
3 Viết chương trình nhập một chữ thường và đổi sang chữ hoa
4 Viết chương trình nhập vào một số nguyên là tổng số giây (second), đôi ting số gidy sang giờ, phút, giây và in ra màn hình theo dang hh:mm:ss
5 Viét chuong trinh nhap mét sé unsigned int và đếm tổng số bit 1 của số đã nhập
BÀI 16: CẤU TRÚC ĐIỀU KIỆN I CÁU TRÚC if else 1 Cú pháp if(condition) statement ; néu condition c6 giá trị true thi thực hiện statement if (condition) sÈtatement 1 ; else statement2;
néu condition c6 giá tri true thi thuc hién statement] , ngược lại (£a1 se) thì thực hiện statement2 if (condition) { compound statement; }
condition: Bieu thức điêu kiện bất kỳ bao gôm các tóan tử so sánh, logic, bitwise với kết
quả là một giá trị logic true (1) hoặc £a1se (0) Biểu thức điều kiện condition phải được
viết trong cặp ngoặc “ ( ) ”
101
Trang 22Khoa CNTT - Trường CĐKT Lý Tự Trọng IV HÀM getch () 1 Cú pháp #include <conio.h> int getch (void) ;
Tuong tu nhu ham getche(), tuy nhiên hàm getch() không hiện ký tự đã nhập lên màn hình Hàm này rất hữ dụng khi cần kiểm tra xem phím nào trên bàn phím được nhắn dé quyết định
thực hiện tác vụ tiếp theo 2 Ví dụ
Trang 23Khoa CNTT - Trường CĐKT Lý Tự Trọng Kết qủa: ị hu vi: 21.72? Dien tich: 32.56 6m qo i MZ Il HAM getche () 1 Cú pháp #include <conio.h> int getche (void) ;
Dùng đề đọc một ký tự từ bàn phím và trả về ký tự đó, đông thời ký tự nhập sẽ xuất hiện trên man hinh tai vi tri cursor
2 Vidu
Chương trình đơn giản dưới đây cho phép lặp ởi lặp lại việc nhận | phim tir ban phim và in ra màn hình ký tự tương ứng va ma ASCII cua ky tự đó (được ghi trong ngoặc) Chương
Trang 24Khoa CNTT - Trường CĐKT Lý Tự Trọng uoi: 28 tong luong: 58,” hong tin da nhap:
Trang 25Khoa CNTT - Trường CDKT Ly Ty Trong 2 Ví dụ: ` Ví dụ 1; Nhập vào thông tin của bạn gồm tên, tuổi và trọng lượng, sau đó in ra trên 1 dòng Các thông tin đó #include <stdio.h> #include <conio.h> void main (void) {
char name[30]; //Chuoi chua Ten int age; //Tuoi
float weight; //Trong luong
Pprintf ("Nhap thong tin cua ban:\n") ;
printf ("Ten: Wy;
scanf ("$[A-Za-z]", name) ; //Chi chap nhan chu cai
printf ("Tuoi: ");
scanf ("%$d", Gage) ; //So nguyen printf ("Trong luong: ");
scanf("%f", &weight) ; _ #/§o thuc float printf("\nThong tin da nhap:\n") ;
Trang 26Khoa CNTT ~ Truong CDKT Ly Tự Trọng
Ký tự khỏang trắng (whitespace) được định nghĩa gồm: khỏang tréng (blank), tab ngang 1£
(horizontal tab), tab đứng ‘\W' (vertical tab), vé đầu dòng "' (carriage return), dòng mới ‘\n' (newline) hay kéo trang "f' (form feed) Các ký tự trắng sẽ được bỏ qua khi scanfQ đọc dữ liệu từ thiết bị nhập
Ký tự không trắng (non-whitespace) bao gồm các ký tự không thuộc tập các ký tự trắng đã
nêu trên
scanfQ có khả năng kiểm tra sự hợp lệ của các ký tự thuộc một tập xác định được ghi trong
cặp dẫu ngoặc vuông [ ] Những ký tự ghi trong cặp dẫu ngoặc này được xem là hợp lệ |
Vidu:
scanf(" %[A-Za-z]"", myString);
sẽ chỉ chấp nhận các chữ cái A-Z và a-z, bat ky 1 ký tự khác không thuộc tập này sẽ bị bỏ qua và không được ghi vào chuỗi myString Nếu muốn cho phép có khỏang trồng trong
chuỗi nhập, ta ghỉ thêm khôang trống vào tập hợp
scanf("%[ A-Za-z]", myString);
Ngòai ra nếu ky tự đầu tiên trong cặp ngoặc vuông là dấu '^' thì scanf() sẽ chỉ chập nhận những ký tự không thuộc tập ký tự ghi trong cặp ngoặc này Chẳng hạn
scanf('%[^\n]", myString);
sẽ chấp nhận tất cả các ky ty, ngoai trừ ký tự newline '\n’
Giá trị trả về của hàm scanfQ tùy thuộc vào tình trạng nhập liệu trước đó:
Số lượng argument da duoc doc, néu không có lỗi 0, nếu không có argument nào được đọc
EOF, néu đọc đến cuối file Vị dụ: | if(scanf("%od %f"", &intNum, &floatNum) == 2) h
size Kích thước tôi đa của ving nhap (input field)
h Giá trị nhập được chứa theo dạng short int
| Giá trị nhập được chứa theo dạng long int hoặc double L Giá trị nhập được chứa theo dạng long double
* Vùng nhập bị bỏ qua và không được ghi
Trang 27
Khoa CNTT - Trường CĐKT Lý Tự Trọng Kết quả: men 4.123847: 1234.123047: 1234.123605 : 1234.1230427 : 1234.12385: 1234.123085 : :1234.12305: :1234.1223042: : 1234.123085: H HÀM scanf () 1 Cú pháp #include <stdio.h> int scanf( const char *format, argument );
Hàm seanf() nhan dữ liệu từ thiết bị nhập chuẩn (STDIN) theo dinh dang format va ghi vao buffer Chudi format bao gém ky tu diéu khién (control character), ky tu trang (whitespace)
va ky tu khac trang (non-whitesapce) Các định dạng được ghi trong cặp ngoặc kép ("" "'), Bảng dưới đây liệt kê một số ký tự điều khiển cho scanfQ Yc Ky tu don %d Số nguyên decimal (decimal integer) %i Số nguyên (integer) Ze, Yof, Yog Số có đấu chấm động (floating point) %o Số bát phan (octal) %s Chuỗi ký tự (string)
%ox Số thập olục phan (hexadecimal)
Trang 28Khoa CNTT - Trường CDKT Lý Tự Trọng
Cánh trai (left justify)
+ Dau + hoặc — trước giá trị
Space Số dương với khỏang trang trước giá trị
0 Điền số 0 cho giá trị số
# Ký hiệu hệ thống đếm trước giá trị số: 0 với octal chấm thập phân với số thực , Ox vdi hexadecimal, d4u
width Kích thước tôi thiểu của giá trị xuất
prec Số số lẻ sau dấu chấm thập phân
h Thê hiện sé short int
| Thê hiện số long int (1đ) hoặc double (if)
Trang 29Khoa CNTT ~ Truong CDKT Ly Ty Trong
BAI 15: CAC HAM NHAP XUAT I HAM print () 1 Cú pháp #include <stdio.h> int printf( const char *format, argument, );
Ham printf() xuat dit kiéu theo định dạng ƒ/ormat ra thiết bị xuất chuẩn (STDOUT), théng thường là màn hình Chuỗi format xdc dinh các ký tự sẽ được in ra màn hình và mã định dạng (control character) dữ liệu Các định dạng được ghi trong cặp ngoặc kép (" "), Bảng dưới đây liệt kê một số định dạng cho printf() Z[flag][width][.prec][hlL]control_character _ _ %%c | ¬ Ký tự
“ed Số nguyên có đấu (signed integer) dang decimal
%i Số nguyên cé dau (signed integer) dang decimal
“oe Số dạng khoa hoc (scientific notation) với chữ thường "e" (exponent) %E Số dạng khoa học (scientific notation) với chữ hoa "E" (exponent) %f Số thực với dấu chấm động (floating point)
“ag Dạng ngắn của %4e hay %f
%G | Dạng ngắn của %E hay %f %0 Số bát phân (octal)
%s Chuỗi ky ty (string)
“ou Số nguyên không dấu (unsigned integer)
"Xx Số thập lục phân không dấu (unsigned hexadecimal) với chữ thường %X Số thập lục phân không dấu (unsigned hexadecimal) với chữ hoa
“op Con tro
Trang 30Khoa CNTT - Trường CĐKT Lý Tự Trọng
BÀI TẬP
1 Viết chương trình in ra màn hình hình chữ nhật gồm các dấu * (không dùng vòng lặp)
2 Sửa lại chương trình Listingl.epp ở trang 6 để tính tích và thương của 2 giá trị (đối với
phép chia cần kiểm tra số chia khác không)
Trang 32Khoa CNTT ~_ Truong CDKT Ly Tu Trong
2 Cach khai bao va goi ham
Một hàm được xác định thông qua các yếu tố sau:
— Tén ham (function name)
— Danh sách tham só (parameters) và kiểu của tham số (data type)
—_ Tham số vào (input parameters) va tham s6 ra (output parameters) — Kiểu dữ liệu trả về của ham (return data type)
Khai báo Prototype cia ham:
return type Junction_name(parameter list);
int Maxvalue(int a, int b);
float add(float x, float b); STUDENT* GetStudentList(void); Lời gọi hàm; Junction_name(parameter list, Vidu 1: int a=5, b=7; float sum; Printf("max(%d,%d) = %d", a, b, maxvalue(a,b));
sum = add((float)a, (float)b);
Vidu 2: Nhập 2 gid trị thực a và b, in ra số max, min và tôn 8 của chúng #include <stdio.h> #include <conio.h>
float MaxVal(float a, float b); float MinVal(float a, float b); float Sum(float a, float b);
89
Trang 33Khoa CNTT - Trường CĐKT Lý Tự Trọng
Các tập tin header thường dùng đến gồm stdio.h, conio.h, stdlib.h, string.h, math.h và
time.h
Danh sách các hàm thường dùng được định nghĩa trong các tập tin header nêu trên được mô
tả trong phần phụ lục cuối tài liệu 1 Tập tin header
Các tập tin header trong C/C++ là một thành phân rất quan trọng không thể tách rời từ giai
đoan thiết kế chương trình đến gian đọan biên dịch và liên kết vdé tao ra tập tin đối tượng (.obj) và tập tin nhị phân thi hành được (.exe, đll) Các mô tả dữ liệu, các chỉ dẫn biên dịch,
các khai báo prototype hàm thường được bố trí trong các tập tin header
Khi muốn sử dụng các hằng, biến, hàm hay các mô tả khác trong một tập tin header, ta cần
viết dẫn hướng đến tập tin header đó tại đầu chương trình trước cài đặt hàm main() và khai
báo dữ liệu
Đối với các tập tin header được phân phôi theo phần mềm ngôn ngữ ta viết dẫn hướng như sau (lưu ý cuối dòng không có đấu chấm phây):
#include <header_/file>
Đối với tập tin header do người dùng viết thường được đặt trong thư mục làm việc hiện thời,
Trang 34Khoa CNTT ~ Truong CDKT Ly Tu Trong
I CHUYEN DOI KIEU Di LIEU
Trong quá trình viết chương trình, ta phải xử lý trên nhiều kiểu dữ liệu (data type) khac nhau,
và trong nhiều trường hợp việc chuyển đổi các giá trị từ kiểu dữ liệu này sang kiểu dữ liệu khác là rất cần thiết, C/C++ thực hiện phép chuyển kiểu dữ liệu thông qua tóan tử type cast
bằng cách viết tên kiểu dữ liệu đích trong dấu ngoặc trước tên biến, hằng, hàm hay biểu thức '
nguồn
(typecast)item
typecast: Kiéu đữ liệu đích
item: hang, bién, hàm, biểu thức muốn chuyên kiểu Vị dụ: #include <stdio.h> #include <conio.h> void main(void) { int a=25, b, c; | float x=14,25, y; ” b=(int)x; c=(int)((float)a/x); y=(float)a; printf("a=%d, b=%d, c=%đd, x=%5.2f, y=5.2f", a, b, €, X, V); getch(); | —_ | Kết qủa: a=25, b=14, c=], x=14.25, y=25.00
IV CAC HAM CO-SAN TRONG C/C++
C/C++ tich hop sin một số lượng lớn các hàm (predefined functions) dé thực hiện các tác vụ khác nhau, các hàm được phân chia theo từng nhóm xử lý khác nhau và được định nghĩa và phân phối trong các tập tin header dj kèm với đuôi ".h" Muốn dùng hàm nào ta cần dùng dẫn hướng (directive) #include <header_file> ghi rõ tên tập tin header có định nghĩa hàm đó
Dé biết thêm chỉ tiết về các tập tin header, xem phụ lục cuối tài liệu
Trang 35
Khoa CNTT - Trường CĐKT Lý Tự Trọng Sàn CAL EPA Eee pean iy
: NẠP a Ee REPRE RRO ee Ae a ONES Sees ee
O | Nhóm biêu thức con (a*b+c)/(a*d)
{] Trich phan tir a(i] voi bién a la m6t array và bién i la index Thuộc tính của student.name, student.age struct/class Con trỏ thuộc tính của : -> student->name, student->age struct/class & Địa chỉ của &a cho địa chỉ của biến a
Con trỏ/giá trị biên con ¬ eek
*a cho giá trị của biên con trỏ a trỏ = Gan giá tri a=12; ghi gia tri hang 12 vao biéna += - , a=2; *= Các tóan tử sô học ghép ; j a*=Š5; tương tự với a=a*5; %4=
II LENH VA KHOI LENH
~ Trong C/C++ mai lệnh đơn (single statement) là một khai báo hay phát biêu được ghi trên 1 dong đơn và kết thúc bằng dâu chấm phây (;)
~ Trong khi đó, một khối lệnh (statement block/compound statemen?) là tập các lệnh: đơn và được bao trong cặp ngoặc nhọn ({})
Vi du:
int count=5; // Lénh don
Trang 36Khoa CNTT - Trường CĐKT Lý Tự Trọng a7 TH | Tăng | don vj “+a 06 két qua 6 | = | Giảm 1 don vi a Có kết quả 4
Lưu ý: Giả sử a là biễn kiểu số nguyên thì:
+†a và a++ đều tăng giá trị biến a lên | đơn vị, tuy nhiên có sự khác biệt Chúng ta hay xem 2 ví dụ đơn giản sau: #include <stdio.h> #include <stdio.h> #include <eonio.h> #include <conio.h> void main(void) void main(void) { { int a=5; int a=5; printf("a = %d", ++a); printf("a = %d", at+); getch(); getch(); } } ' Kết quả: a= 6 Cũng tương tự như vậy đôi với a và a Kết quả: a = 5 # * oA sa © Tốn tử điều kiện (condition ? expr]: expr2) condition: Biêu thức cho kết quả logic TRUE hoặc FALSE, trong đó sử dụng các tóan tử so sánh như đã nêu ở mục 1.2.]
exprl: Biểu thức, biến, hằng, hàm bất kỳ tương ứng với condition có tri logic TRUE expr2: Biêu thức, biến, hang, ham bat kỳ tương ứng với condifion có trị logic FALSE
Yí dụ: Xác định số lớn hơn trong 2 số a và b Inta=-l,b= ];
max = (a>b) ? a: b;
Két quả: max có trị là trị của biến b f Các tóan tử khác
Ngòai các tóan tử đã trình bày ở các mục trén, C/C++ còn hỗ trợ nhiều tóan tử khác với mục đích tạo thuận lợi và linh hoat cho việc viết chương trình
85
Trang 37
Khoa CNTT - Trường CĐKT Lý Tự Trọng c Téan tử Bitwise
Khi xử lý trên từng bít dữ liệu, thực tế là việc xử lý các thanh ghi (register) khi lập trình hardware, người lập trình đến các công cụ hay tóan tử cho phép thao tác trên từng bit của byte dữ liệu Các tóan tử bitwise được liệt kê trong bảng dưới đây: b=(a&5); cho kết quả b=4 Bitwise AND
| Bitwise inclusive OR b=(a|5); cho kết qua b=13 “ Bitwise excluse OR (XOR) b=(a^5); cho kết quả b=9 ~ Bu | (one's compliment) b=~a; cho két qua b=3
Dịch sang trái n bịt, tương ứng với | b=(a<<2);
= phép nhân cho 2" sẽ tương ứng b = 12*2° = 12*4 = 48
Dịch sang phải n bit, tương ứng với Doane) ; >> sẽ tương ứng với b = 12/2“ = 12/4 = phép chia cho 2" 3
d Toán tử tang gam
Gồm các tóan tử thực hiện trên các biến hay biểu thức có giá trị nguyên như char, int, short,
Trang 38Khoa CNTT — Trường CDKT Ly Tu Trong /(*#\ % && T- | a+b#*c KP Đ)— 4# a* ©) (2x a) (num % 2) != ọ 2 Tóan tử a Toán tử sọ Sánh: —————— _ _ SET
a<b c6 két qua false ˆ a<=b có kết quả false 8>b có kết quả true 8>=b có kết quả true
a==b có két qua false
8!=b có kết quả true
biểu thức logic, trong đó các tóan hạng là các biến, giá trị
toan logic 14 một giá tri logic TRUE hoặc
Trang 39Khoa CNTT - Trường CĐKT Lý Tự Trọng Khai báo kiểu dữ liệu mới: typedef base_type new_type;
base_type: Tén kiéu cơ sở hay kiêu đã được định nghĩa trước
new_ype: Tên kiêu dữ liệu mới
typedef struct STUDENT { unsigned int id; char firstname[10]; char lastname[30]; int ages; bs typedef unsigned int BYTE; int i, J, k=0; unsigned char Channel_ nr; float x=0.0, result; STUDENT student; BYTE count;
BÀI 14: BIỂU THỨC —- TÓAN TỬ - CÂU LENH
I BIEU THUC VA TOAN TU
1 Khái niệm về biểu thức
Biểu thức là một công thức tính toán bao gồm các phép toán, hằng, biến, hàm, và các dấu
ngoặc |
Thứ tự ưu tiên: Khi tinh giá trị của một biểu thức, ngôn ngữ C quy ước thứ tự ưu tiên của các phép toán từ cao đến thấp như sau:
biểu thức trong ngoặc, phép gọi hàm,
†
82
Trang 40Nn0a CNT T — Trường CDK T Ly Tu Trong