CHƯƠNG 1 : CáC KHÁI NIM CƠ BN CA NGÔN NG C
1.1/ Tp ký t hp l dùng trong ngôn ng C
- Các ch cái : A, B, C ..., 2, a,n,c,...z ( 26 ch cái thường)
- Các ch s : 0,1,..., 9.
- Ký t gch ni _ ( chú ý phân bit du - ).
- Du cách ( space) : dùng để phân bit các t :
Ví d : lop Hc( 7 kí t) - LopHoc( 6 kí t).
1.2/ Tên ( định danh ) : là 1 dãy kí t bt đu bng ch hoc ký t gch dưới, theo sau là ch cái,
ch s hoc ký t gch ni (-).
- Tên : dùng làm tên hnp, tên biến , nhãn , tên hàm....
Ví d : Tên đúng : _abc, Delta_1, BETA.
Tên sai : 1xyz ( vì bt đầu là 1 ch s )
A#B ( vì có dâu #)
Delta ( vì có khong trng) , X-1 (vì s dng du gch ngang).
* Chú ý :
+ Tên : ch hoa và ch thường được xem là khác nhau ( ( # pascal )
+ Thông thường :
. Ðặt ch hoa cho các hng, ch thường cho các đại lượng còn li(biến, hàm..).
. Nên đặt 1 cách gi nh ( 8 kí t đầu là có nghĩa và tu thuc chương trình ).
1.3/ T khoá : là t dành riêng cho ngôn ng. Tên biến, hng, hàm ...không đưc trùng vi t
khoá, luôn luôn viết bng ch thường. Các t khoá trong C gm : Break, char, continue, case, do,
double, default, else, float, for, goto, int,if, long, return, struct, switch, unsigned, while, typedef,
union voi, volatile,..
1.4/ Các kiu d liu cơ bn trong C : 4 kiu : char, Int, float, double.
- Kiu char ( 1 byte ) : biu din 1 ký t thuc ASCII ( thc cht là s nguyên t 0 đến 255)
Ví d : Ký t ASCII
0 048
A 065
a 097
- Kiu Int : 3 loi : Int, long Int ( long ) và unsigned Int ( unsigned).
- Kiu Float : biu din các s thc độ chính xác định.
- Kiu double : biu din các s thc đ chính xác kép.
Stt Kiu Phm vi Kích thước
1 Char 0..255 1 byte
2 Int -32768..32767 2 bytes
3 Long -2147483648..2147484647 4bytes
4 Unsigned 0..65535 2 bytes
5 Float 3.4e - 38..3.4e + 38 4 bytes
6 double 1.7e - 308 .. 1.7e + 308 8 bytes
- Kiu void: Kiu không giá tr, c dùng để biu din kết qu hàm cũng như ni dung c
pointer. Kiu này s nói chi tiết các phn liên quan.
1.5/ Biến và mng :
a/ Biến : Biến đại lượng thay đổi; mi biến có 1 tên và địa ch vùng nh danh riêng cho nó.
Khai báo biến : Cú pháp < Kiu d liu > < Danh sách các biến >;
Ví d : Int i,j ;
long cucdai;
double tongsothue;
Int a,b = 20; float e = 35.1; x=30.5;
b/ Mng: là tp hp các phn t có cùng 1 kiu và chung 1 tên.
Khai báo :
Ví d : Int Mang1[ 10 ];
Float Bang [10][10];
- Mng mt chiu : là mt dãy các ký t phn t tun t trong b nh, mi mt phn t chiếm mt
s byte tương ng vi kiu ca nó.
- Mng nhiu chiu : Gm các phn t sp liên tiếp t hàng này sang hàng kia. Các ch s được
đánh s t 0 tr đi.
Ví d :
- Mãng 1[0] ..Mãng1[9]
- Bang [0][0] Bang [0][1]..Bang [0][9].
Bang[][] Bang[2][0]..Bang[1][9]
.....
Bang[9][0].. Bang[9][9]
* Chú ý : &Mang1[3] đúng nhưng &Bang[2][5]sai ( Ðúng đối vi 1 chiu và sai đối vi nhiu chiu)
1.6 / Hng : Ðại lượng không thay đổi
a/ Hng nguyên ( Int ): có giá tr t -32768 đến 32767
- Có th viết theo h 16 bng cách thêm tin t Ox hoc theo cơ s 8 bng cách thêm tin t O
( Octal = bát phân ).
* Ví d : O306 viết theo cơ s 8 : Giá tr = 6 * 8 0 + 3* 8 * 8 = 198 trong h 10.
O345 = 3*8*8 + 4*8 + 5 = 229
Ox147 = 1*16*16 + 4*16 +7 =327 trong h 10.
OxAa= 10*16+13=173
- Lý do a hoc A =10
b hoc B =11
c hoc C =12
d hoc D =13
e hoc E = 14
f hoc F = 15
b/Hng long ( long Int : nguyên ln ) : ging như hng nguyên, ch khác thêm L hoc l đầu.
* Ví d : 180L, 123456789l ( Hng nguyên là giá tr vượt quá s nguyên là hng nguyên ln (long)
c/Hng thc ( float và double ) : Có 2 cách viết
- Cách 1 : ( dng thp phân) S gm : phn nguyên, du chm thp phân và phn phân.
* Ví d : 214.35 , - 234.34.
- Cách 2 : Viết theo dng khoa hc
* Ví d : 1.543e7 = 15430000
123.456E-4 = 0.123456 ( 123.456/105)
d/Hng ký t : Viết trong 2 du nháy đơn. Giá tr ca hng chính là mã ASCII ca ch.
* Ví d : 'A' = 65;
'd' = 100,
'9 ' - '0 ' = 57 - 48 = 9
- Hng ký t còn có th viết \X1X2X3 , \x1x2x3 : trong đó x1,x2,x3 là s nguyên h 8.
*Ví d : ch a mã h 10 là 97 đổi ra h 8 là O141 => \141='a';
\ 101='A';
\ 142 ='b'
* Mt s hng đặc bit đưc viết theo qui ước như sau :
Viết Ký t Din gii
' \ " ' du nháy đơn
' \" ' " du nháy kép
' \\ ' \ du chéo ngược
'\n ' \n ký t xung dòng
' \0 ' \0 ký t rng ( null)
Chú ý : - Phân bit ký t '0 ' và ' \0 '. Hng ' 0 ' cùng vi ch s 0 có mã = 48
- Hng '\0 ' cùng vi ký t \0 (null) có mã 0.
- Hng ký t thc s là s nguyên => có th dùng s nguyên h 10 đê biu din ký t .
* Ví d : printf( " %c%c", 65,66) s in ra AB.
e/Hng xâu ký t : đặt trong du nháy kép ( " "). Hng được lưu tr trong 1 mãng ký t mà ký t
cui cùng là rng
(null) ' \0 '.
Ví d : "Lơp Hoc"
- Hng có th được đinh nghĩa đối vi toán t define .
+ Cú pháp : # define < tên hng > < giá tr>
Trong chương trình mi biến max đều đưc thay đổi giá tr 100.
Ví d : # define MAX 100
# Define pi 3.141593
1.7/ Phép toán :
+ Phép toán s hc gm : +,-,*, / ( Phép chia ly phn nguyên ), % ( phép chia ly phn dư).
+ Phép toán quan h : <, >, <=,>=, = =, ! = ( khác).
+ Phép toán logic : || ( hoc ) , && ( và) ! ( not ), #0 hay =1 : True( đúng) ; =0 : Falsse ( sai)
+ Phép toán tăng gim : ++ cng thêm 1 vào toán hng.
* Ví d : Int n=10; n++;=> n=11 <=> n=n+1;
Chú ý : - n++ : giá tr n được ly trước khi tăng n.
- ++n : giá tr n được ly sau khi tăng n
- tương t n-- , --n ;
+ Toán t thao tác bit : Không áp dng cho kiu float hoc double.
& : phép hi các bít ( và)
| : phép tuyn các bit ( hoc)
^ : phép tuyn các bit loi tr
<< : phép dch trái
>> : phép dch phi.
: phép ly phn bù.
Ví d : 105 & 7 = 1 /* 0111 1001 & 0000 0111 = 0000 0001 */
105 | 17 = 127 /* 0111 1001 | 0000 0111 = 0111.1111 */
0x60 = 0x96 /* 0110 1001 = 1001 0110 */
+ Toán t chuyn đổi kiu : ta có th dùng toánt chuyn kiu để chuyn 1 kiu bt k sang kiu
mong mun bng cách dùng toán t sc thái ( cast) theo quy tc sau :
ép Kiu ( type cast ) : ( kiu ) Biến Kiu mong mun
* Ví d : int i = 10
----ă ( float ) i => 10.0
- Chú ý : + Mt s kiu float khi chuyn sang kiu Int s b cht ct phn thp phân.
+ Mt s kiu long khi chuyn sang kiu Int s ct b vài ch s.
* Ví d : n = 2560.70 thì (int)n = 2560
+ Toán t gán :
- Cú pháp : < biến> = < biu thc>
* Ví d : c = a + b ; d= t + 3 ;
i= i+2 (Viết gn i+=2; )
i= i*2 (i*=2; )
x = x >> 1 (x >> = 1;)
Chú ý : Các phép toán trong C có độ ưu tiên khác nhau và quy tc kết hp khác nhau => Bng
lit kê các phép toán theo th t ưu tiên t trên xung dưới, các phép toán trên dòng có th t như
nhau.
Phép toán Trình t kết hp
(),[ ], ă trái qua phi
|, du ngã, &*, - -, + + , ( type ) size of phi qua trái
*,/, % trái qua phi
+, - trái qua phi
<< ,>> trái qua phi
<,<= ,> ,>= trái qua phi
& trái qua phi
| trái qua phi
&& trái qua phi
|| trái qua phi
? phi qua trái
= =, !=, +=, -= phi qua trái
1.8/ Biu thc : được xây dng bng các toán t , toán hng là các hng, biến, hàm....
- Biu thc gán : Ví d : A = B =C =5 => A=5, B = 5, C = 5.
- Biu thc điu kin có dng : B1?E1 : E2 : Nếu B 1 đúng giá tr biu thc = E1. ngược li E2.
* Ví d : S=x>y ? x:y cho giá tr ln nht ca x và y.
1.9/ Cu trúc tng quát ca chương trình viết bng ngôn ng C :
#include < Thuvien.h> nhng khai báo, nhng ch th tin x lý.
#define ....
/* Các khai báo kiu d liu, hng */
Type of....
{ Các biến toàn cc, biến ngoài}
prototype { khai báo tiêu đề hàm}
main ()
{ x1,x2,........xn}
* Ví d : Viết chương trình s ln nht cho trước a, b, c
/* Chương trình tìm s ln nht trong 3 s*/
# include < stdio.h>
# Include < conio.h>
void main (void)
{ int n1,n2, n3, nmax ;
do
{
/* đọc 3 s t bàn phím*/
printf(" nhp s th nht : "); scanf( " %d", &n1);
printf(" nhp s th hai : "); scanf( " %d", &n2);
printf(" nhp s th ba : "); scanf( " %d", &n3);
/* tìm s ln nht */
nmax = n1>n2 ? n1:n2;
nmax = nmax > n3 ? nmax : n3;
/* In ra kết qu */
printf ( " s ln nht trong 3 s %d%d%d là : %d \ n ", n1,n2,n3 ,nmax);
}
printf ( " n ESC để kết thúc );
while ( getch ()! = 27 );
}
2/ CÁC LNH XUT NHP CHUN:
2.1/ Hàm Printf
- Printf (" formated string ", <biu thc> );
Biu thc có th là : const ( hng), var ( biến), function (hàm).
* Ví d : int Siso= 30;
Printf ( " In sĩ s lp hc là %d, Siso );
a/ Các ký t điu khin :
\n : sang dòng mi
\b : lùi li 1 tab.
\f : sang trang mi
\t : du tab
\' : In ra du '
\" : in ra du "
\ \ : in ra du \