Bài giảng Tin học đại cương - Phần 2: Ngôn ngữ lập trình C (Tiết 2)

11/24/2010  
Ni dung  
Biến  
Hng  
2.2 Biến, kiu dliu và các  
toán ttoán hc  
Các kiu dliu cơ bn trong C  
Biu thc toán hc  
Mt shàm toán hc trong C  
Toán tlogic và toán ttrên bit  
Độ ưu tiên ca các toán tử  
2.2 Biến, hng, kiu dliu  
2.2 Biến, hng, kiu dliu  
Biến (variable) đại lượng mà giá trcó ththay đổi trong  
chương trình.  
Định danh hp lệ  
wiggles  
cat2  
Hot_Tub  
taxRate  
_kcab  
Định danh không hp lệ  
$Z]**  
2cat  
Hot-Tub  
tax rate  
don‘t  
int  
Biến phi được khai báo trước khi sdng.  
Tên biến được đặt theo quy tc định danh.  
Quy tc đặt định danh (identifier):  
Gm có: chcái, chsvà du gch dưới “_”  
Bt đầu ca định danh phi là chcái hoc du gch  
dưới, không được bt đầu định danh bng chs.  
Ngôn ngC phân bit chhoa và chthường !  
Định danh do người lp trình đặt không được trùng vi  
tkhóa, và các định danh khác.  
sum, Sum, sUm, suM, SUm là các tên biến khác nhau  
1
11/24/2010  
2.2 Biến, hng, kiu dliu  
2.2 Biến, hng, kiu dliu  
Độ dài tên biến không gii hn, tuy nhiên chcó 31 ký tự  
đầu là có ý nghĩa.  
Các ký t, shoc xâu ký tự được  
gi là mt hng (constant)  
Vd. 5, 5.6, 'A',  
"programming is fun\n"  
Không nên đặt tên biến quá dài  
Nên đặt tên biến có ý nghĩa  
Biu thc mà toán hng chgm  
các hng số được gi là biu thc  
hng  
VD. Biến cha thông tin về đim thi nên đặt là diemThi  
hoc diemThiTHDCthay vì chỉ đặt tên là d, I, x …  
VD. 4+5-6.1  
Dùng quy tc Camel: vd, soSinhVien, diemThi  
Dùng du gch ni: vd, so_sinh_vien, diem_thi  
2.2 Biến, hng, kiu dliu  
2.2 Biến, hng, kiu dliu  
Kiu snguyên cơ bn : int  
10, 23, 0 là các hng snguyên  
Các kiu dliu cơ bn trong C : int, float,  
double, char  
Mc định trong C các hng snguyên biu din bng hcơ  
s10.  
Ngoài hcơ s10, hng snguyên còn được biu din  
bng hcơ s8 (octal) và hsơ s16 (hexa)  
. Hcơ s8 : bt đầu bng s0, vd 050, 045  
. Hcơ s16: bt đầu bng 0x, vd 0x5F, 0xE5  
In ra dùng %d, %i , %o, %#o, %x, %#x  
printf("%d %d %d\n",50, 050, 0x50);  
In ra : 50 40 80  
2
11/24/2010  
2.2 Biến, hng, kiu dliu  
2.2 Biến, hng, kiu dliu  
Các kiu snguyên khác: char, short, long, long long  
Kích thước lưu trữ  
Snguyên có du và snguyên không du: signed và  
unsigned  
Mc định các kiu snguyên là signed  
Macintosh  
Metrowerks CW  
(Default)  
IBM PC  
Windows XP  
Linux on a PC Windows NT  
ANSI C  
Minimum  
Khai báo snguyên không du: unsigned  
Type  
unsigned int, unsigned long,…  
char  
int  
8
8
8
8
32  
16  
32  
32  
16  
32  
64  
32  
16  
32  
64  
16  
16  
32  
64  
Để chra rõ mt hng snguyên là không du, dùng u  
hoc U cui  
short  
long  
243U, 34u, 343454UL  
long long 64  
Để chrõ hng kiu long ta dùng thêm ký hiu l hoc L sau  
2.2 Biến, hng, kiu dliu  
2.2 Biến, hng, kiu dliu  
Kiu sthc : float  
Kiu sthc mrng : double  
Sdng 64 bit  
3., 125.8, và –.0001 là các hng sthc  
3.5e+2, .12e3 là các hng sthc dưới dng ký pháp khoa  
hc  
Độ chính xác gp đôi so vi float  
Để phân bit 1 hng sthc là float thì thêm ký hiu f  
hoc F cui .34f 45.56F  
Kích thước biu din : 32 bit  
In ra sthc  
%f dưới dng du phy tĩnh  
%e dưới dng ký pháp khoa hc  
%g tự điu chnh cho dnhìn  
printf("%f %e %g", .00000012, 5.12, 50000.12);  
3
11/24/2010  
2.2 Biến, hng, kiu dliu  
2.2 Biến, hng, kiu dliu  
Mt shng ký tự  
Ký hiu  
Ý nghĩa  
Kiu ký t: char  
\a  
\b  
\f  
\n  
\r  
\t  
\v  
\\  
\”  
\’  
\?  
Audible alert  
Backspace  
‘A’, ‘v’, ‘0’, ‘\n’ là các hng ký tự  
In ra bng %c  
Form feed  
Newline  
Có thdùng như mt giá trnguyên (chính là mã  
ASCII ca ký tự đó)  
Carriage return  
Horizontal tab  
Vertical tab  
Backslash  
printf("%c %d",'A','A');  
Double quote  
Single quote  
Question mark  
2.2 Biến, hng, kiu dliu  
2.2 Biến, hng, kiu dliu  
Type  
Constant Examples  
Printf char  
char  
'a', '\n'  
%c  
/* Example 2.2.1  
* kich thuoc cac kieu du lieu co ban */  
#include <stdio.h>  
short int  
unsigned short int  
int  
%hi, %hx, %ho  
%hi, %hx, %ho  
12, 97, 0xFFE0, 0177 %i, %x, %o  
int main(void)  
{
unsigned int  
long int  
12u, 100U, 0XFFu  
%u, %x, %o  
12L, 2001, 0xffffL  
%li, %lx, %lo  
printf("Kieu int %d bytes.\n", sizeof(int));  
printf("Kieu char %d bytes.\n", sizeof(char));  
printf("Kieu long %i bytes.\n", sizeof(long));  
printf("Kieu double %u bytes.\n", sizeof(double));  
return 0;  
unsigned long int  
long long int  
12UL, 100ul, 0xffeeUL %lu, %lx, %lo  
0xe5e5e5e5LL, 500ll  
12ull, 0xffeeULL  
%lli, %llx, %llo  
%llu, %llx, %llo  
unsigned long long  
int  
}
float  
12.34f, 3.1e5f  
12.34, 3.1e5  
%f, %e, %g  
%f, %e, %g  
double  
long double  
12.341, 3.1e5l  
%Lf, %Le, %Lg  
4
11/24/2010  
2.2 Biến, hng, kiu dliu  
2.2 Biến, hng, kiu dliu  
/* Example 2.2.2*/  
#include <stdio.h>  
Khai báo biến  
Kiu_d_liu tên_biến ;  
Kiu_d_liu tên_biến = giá_tr_ban_đầu ;  
#define lai_xuat 0.013  
int main(void)  
int a;  
{
float b, c, diem_thi;  
double g, pi=3.1415, rad = 3.14;  
const int so_thang = 12;  
float tien_gui = 10e6;  
Khai báo hng dưới dng biu tượng (symbolic constant )  
#define TÊN_HNG giá_trị  
printf("Tien lai 1 nam : %g\n", tien_gui*so_thang*lai_xuat);  
return 0;  
}
const kiu_d_liu TÊN_HNG = giá_tr;  
Kiu dliu logic – Boolean  
Kiu _Bool : kiu logic chcó tbn C99  
Kiu logic trong C :  
False tương ng vi 0  
Biu thc trong C  
True tương ng vi giá trꢀ 0  
Kiu _Bool : được định nghĩa trong <stdbool.h>  
Hai giá trtrue, false được định nghĩa  
Có thdùng %i để in ra biến kiu _Bool  
Biu thc toán hc  
Các loi toán tử  
Độ ưu tiên ca các toán tử  
Thay đổi độ ưu tiên ca toán tử  
_Bool sam = true;  
if(sam) printf("TRUE");  
else printf("FALSE");  
5
11/24/2010  
2.2 Biến, hng, kiu dliu  
2.2 Biến, hng, kiu dliu  
Toán tử  
Ý nghĩa  
Kiu dliu ca toán  
hng  
Ví dụ  
Phép đổi du  
Sthc hoc số  
nguyên  
int a, b;  
12; a; 25.6;  
Biu thc toán hc : gm các toán tvà toán hng  
Toán hng có thbiến hoc là hng số  
Toán t:  
Phép toán cng Sthc hoc số  
float x, y;  
5 + 8; a + x;  
3.6 + 2.9;  
3 – 1.6; a – 5;  
nguyên  
Phép toán trSthc hoc số  
nguyên  
Phép toán nhân Sthc hoc số  
nguyên  
a * b; b * y;  
2.6 * 1.7;  
*
Toán t1 ngôi: , +,!  
Toán thai ngôi : +, , *, /, % ,…  
Trình tthc hin theo thtự ưu tiên ca các toán tử  
Phép toán chia Sthc hoc số  
/
10.0/3.0; (bng 3.33…)  
10/3.0; (bng 3.33…)  
10.0/3; (bng 3.33…)  
nguyên  
Phép chia ly  
phn nguyên  
Phép chia ly  
phn dư  
Gia 2 snguyên  
Gia 2 snguyên  
/
10/3;  
(bng 3)  
%
10%3; (bng 1)  
2.2 Biến, hng, kiu dliu  
#include <stdio.h> //Example 2.2.3  
int main(void)  
Độ ưu tiên ca toán tử  
Độ ưu tiên đề cp đến thtthc thi các toán ttrong C  
{
int a = 100;  
int b = 2;  
int c = 25;  
Độ ưu tiên to nên cu trúc phân cp ca loi toán tnày  
so vi loi toán tkhác khi tính giá trmt biu thc shc  
int d = 4;  
int result;  
Độ ưu tiên ca các toán tnày được thay đổi bi các du  
ngoc đơn trong biu thc  
result = a b; // trừ  
printf ("a b = %i\n", result);  
result = b * c; // nhân  
printf ("b * c = %i\n", result);  
result = a / c; // chia  
printf ("a / c = %i\n", result);  
result = a + b * c; // thtthc hin  
printf ("a + b * c = %i\n", result);  
printf ("a * b + c * d = %i\n", a * b + c * d);  
return 0;  
Loi toán tử  
Mt ngôi  
Hai ngôi  
Toán tử  
Tính kết hp  
Phi đến trái  
Trái đến phi  
Trái đến phi  
Trái đến phi  
Phi đến trái  
, ++, – –  
^
(pow(x,y)xy)  
Hai ngôi  
* , / , %  
Hai ngôi  
+ , –  
=
Hai ngôi  
}
6
11/24/2010  
2.2 Biến, hng, kiu dliu  
2.2 Biến, hng, kiu dliu  
Phép toán vi snguyên và toán tmt ngôi  
Phép chia module (%)  
#include <stdio.h> //Example 2.2.4  
int main (void)  
{
#include <stdio.h> //Example 2.2.5  
int main (void)  
{
int a = 25;  
int b = 2;  
float c = 25.0;  
float d = 2.0;  
printf ("6 + a / 5 * b = %i\n", 6 + a / 5 * b);  
printf ("a / b * b = %i\n", a / b * b);  
printf ("c / d * d = %f\n", c / d * d);  
printf ("a = %i\n", a);  
return 0;  
int a = 25, b = 5, c = 10, d = 7;  
printf ("a %% b = %i\n", a % b);  
printf ("a %% c = %i\n", a % c);  
printf ("a %% d = %i\n", a % d);  
printf ("a / d * d + a %% d = %i\n",  
a / d * d + a % d);  
return 0;  
}
}
2.2 Biến, hng, kiu dliu  
. Chuyn đổi gia snguyên và sthc  
// Example 2.2.6  
#include <stdio.h>  
int main (void)  
{
Toán tchuyn kiu (type cast operator)  
f2 = (float) i2 / 100;  
float f1 = 123.125, f2;  
int i1, i2 = 150;  
(int) 29.55 + (int) 21.99  
i1 = f1; // floating to integer conversion  
printf ("%f assigned to an int produces %i\n", f1, i1);  
Hoc  
int(29.55) + int(21.99)  
f1 = i2; // integer to floating conversion  
printf ("%i assigned to a float produces %f\n", i2, f1);  
f1 = i2 / 100; // integer divided by integer  
printf ("%i divided by 100 produces %f\n", i2, f1);  
f2 = i2 / 100.0; // integer divided by a float  
printf ("%i divided by 100.0 produces %f\n", i2, f2);  
Chuyn kiu tự động  
f2 = (float) i2 / 100; // type cast operator  
printf ("(float) %i divided by 100 produces %f\n", i2, f2);  
char int long int float double long double  
return 0;  
}
7
11/24/2010  
Mt shàm toán hc trong C  
Kí hiu  
toán hc  
Hàm  
Ý nghĩa  
Căn bc 2 ca x  
Ví dụ  
VD1. Viết chương trình tính khong cách gia  
hai đim A(1, 3, 5) và B(0.5, 7, 6.5) trong không  
gian 3 chiu  
sqrt(x)  
sqrt(16.0)bng 4.0  
x
xy  
ex  
pow(x,y)  
exp(x)  
log(x)  
pow(2,3)bng 8  
exp(1.0)bng 2.718282  
log(2.718282)bng 1.0  
x mũ y  
e mũ x  
logarithm tnhiên (cơ se) ln x  
ca x  
log10(x)  
sin(x)  
log10(100)bng 2  
sin(0.0)bng 0.0  
cos(0.0)bng 1.0  
tan(0.0)bng 0.0  
ceil(2.5)bng 3  
ceil(-2.5)bng –2  
logarithm cơ s10 ca x  
sin ca x  
log x  
sin x  
cos x  
tg x  
cos(x)  
tan(x)  
ceil(x)  
VD2. Viết chương trình tính  
cosin ca x  
tang ca x  
phn nguyên già ca x, tc  
x
là snguyên nhnht    
log3 (56)  
không nhhơn x  
floor(x)  
floor(2.5)bng 2  
phn nguyên non ca x, tc  
là snguyên ln nht không  
ln hơn x  
x
   
floor(-2.5)bng –3  
Toán tquan hvà Logic  
Toán tquan hvà Logic (tt.)  
Toán tquan h: Kim tra mi quan hgia hai biến  
hay gia mt biến và mt hng  
Toán tLogic: là nhng ký hiu dùng để kết hp hay  
phủ đnh biu thc cha các toán tquan hệ  
Toán t  
Ý nghĩa  
Toán tquan hệ  
AND: Kết qulà True khi c2 điu kin đều đúng  
&&  
OR : Kết qulà True khi chmt trong hai điu kin  
Toán t  
Ý nghĩa  
||  
!
đúng  
>
>=  
<
Ln hơn  
Ln hơn hoc bng  
Nhhơn  
NOT: Tác động trên các giá trriêng l, chuyn đổi  
True thành False và ngược li.  
Ví d: (5>10) && (7<20)  
<=  
==  
!=  
Nhhơn hoc bng  
Bng  
Không bng  
Nhng biu thc dùng toán tLogic trvề  
0 thay cho false và 1 thay cho true  
8
11/24/2010  
Toán tLogic nhphân (tt.)  
Toán tLogic nhphân  
Toán tlogic nhphân: thc hin ging toán tlogic  
nhưng trên các bit.  
Ví d  
Toán t  
tả  
Bitwise AND  
( x & y)  
Mi vtrí ca bit trvkết qulà 1 nếu bit ca hai toán  
hng là 1.  
10 & 151010 & 11111010 10  
10 | 151010 | 11111111 15  
10 ^ 151010 ^ 11110101 5  
~ 10 ~1010 1…11110101 -11  
15 << 3 1111 << 3 1111000  
15 >> 3 1111 >> 3 1  
Bitwise OR  
( x | y)  
Mi vtrí ca bit trvkết qulà 1 nếu bit ca mt  
trong hai toán hng là 1.  
Bitwise NOT  
( ~ x)  
Ðo giá trca bit(1 thành 0 và ngược li).  
Bitwise XOR  
( x ^ y)  
Thc hin XOR trên 2 bit (cho giá tr0 nếu 2 bit bng  
nhau, và 1 nếu ngược li).  
<<, >> dch bit  
trái và phi  
Độ ưu tiên Toán tử  
Trình tkết hp  
Trái sang phi  
Độ ưu tiên gia các toán tử  
(
)
[
]
.
>  
++  
Khi mt biu thc có nhiu loi toán tthì độ ưu tiên  
gia chúng phi được thiết lp.  
‐‐ (dng hu t)  
++  
+
‐‐  
Phi sang trái  
!
~
(type)  
*
Thtự ưu tiên  
Kiu toán tử  
&
1
2
3
Shc (Arithmetic)  
sizeof  
So sánh (Comparison)  
Logic (Logical)  
*
/
%
Trái sang phi  
Trái sang phi  
Trái sang phi  
Trái sang phi  
+
<<  
>>  
<
>
<=  
>=  
9
11/24/2010  
Độ ưu tiên ca các toán tử  
Độ ưu tiên gia các toán t(tt.)  
Độ ưu tiên Toán tử  
Trình tkết hp  
Trái sang phi  
Trái sang phi  
Trái sang phi  
Trái sang phi  
Trái sang phi  
Trái sang phi  
Phi sang trái  
Phi sang trái  
==  
&
!=  
Ví d:  
2*3+4/2 > 3 AND 3<5 OR 10<9  
^
!
Vic tính toán như sau :  
&&  
||  
[2*3+4/2] > 3 AND 3<5 OR 10<9  
Toán tshc sẽ được tính trước  
?: (toán tử điu kin)  
=
+=  
*=  
%=  
^=  
=  
/=  
&=  
|=  
[[2*3]+[4/2]] > 3 AND 3<5 OR 10<9  
[6+2] >3 AND 3<5 OR 10<9  
[8 >3] AND [3<5] OR [10<9]  
<<=  
>>=  
, (ngăn cách biu thc)  
Trái sang phi  
Thay đổi độ ưu tiên  
Độ ưu tiên gia các toán t(tt.)  
Du ngoc đơn ( ) có độ ưu tiên cao nht  
Độ ưu tiên ca các toán tcó thể được thay đổi bi du  
ngoc đơn  
Kế đến là toán tso sánh có cùng độ ưu tiên. Ta áp dng quy  
tc tính ttrái sang phi.  
. Toán tđộ ưu tiên thp hơn nếu đặt trong du ngoc  
đơn sẽ được thc thi trước  
True AND True OR False  
. Khi các cp ngoc đơn lng nhau ( ( ( ) ) ), cp ngoc đơn  
trong cùng nht sẽ được thc thi trước  
Cui cùng là toán tkiu Logic.  
AND sđộ ưu tiên cao hơn OR  
Nếu trong biu thc có nhiu cp ngoc đơn thì vic thc thi  
stheo thtttrái sang phi  
[True AND True] OR False  
True OR False  
True  
10  
11/24/2010  
Thay đổi độ ưu tiên (tt.)  
Thay đổi độ ưu tiên (tt.)  
3) 5+9*3^24 >10 AND (2+168/4 > 6 OR False)  
Kế đến du ngoc đơn ngoài được tính đến  
Ví d:  
5+9*3^24 > 10 AND (2+2^48/4 > 6 OR (2<6 AND 10>11))  
4) 5+9*3^24 > 10 AND (2+162 > 6 OR False)  
5) 5+9*3^24 > 10 AND (182 > 6 OR False)  
6) 5+9*3^24 > 10 AND (16 > 6 OR False)  
7) 5+9*3^24 > 10 AND (True OR False)  
8) 5+9*3^24 > 10 AND True  
Cách tính :  
1) 5+9*3^24 > 10 AND (2+2^48/4 > 6 OR (True AND False))  
Du ngoc đơn bên trong sẽ được tính trước  
2) 5+9*3^24 > 10 AND (2+2^48/4 > 6 OR False)  
Thay đổi độ ưu tiên (tt.)  
9) 5+9*94>10 AND True  
Biu thc bên trái được tính trước  
10) 5+814>10 AND True  
11) 864>10 AND True  
12) 82>10 AND True  
13) True AND True  
14) True  
11  
pdf 11 trang Thùy Anh 26/04/2022 7180
Bạn đang xem tài liệu "Bài giảng Tin học đại cương - Phần 2: Ngôn ngữ lập trình C (Tiết 2)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_phan_2_ngon_ngu_lap_trinh_c_tiet.pdf