Vous êtes sur la page 1sur 31

Chng III

HNG, BIN VA MANG


Trong chng trnh C s dung cac dang
thng tin (kiu gia tr) sau: s nguyn
(int), s thc hay s du phy ng
(float), s du phy ng co chnh
xac gp i (double) va ky t (char).
Hng chnh la mt gia tr thng tin cu
th. Bin va mang la cac ai lng
mang tin. Mi loai bin (mang) co th
cha mt dang thng tin nao o, v du
bin kiu int cha c cac s

Ngi ta chia bin ( mang) thanh:


Bin (mang) t ng
Bin (mang) ngoai
Bin (mang) tnh.
Bin (mang) t ng ch tn tai (c
cp phat b nh) khi nao chung c
s dung.
Bin (mang) ngoai va tnh tn tai trong
sut thi gian lam vic cua chng trnh.
Cach t chc nh vy va tit kim
b nh (v cung mt khoang nh luc th
phn cho bin nay, luc th phn cho bin
khac), va cho phep s dung mt tn
bin cho cac i tng khac nhau ma

I Kiu d liu
Trong C s dung cac kiu d liu sau:
Ky t (char)
S nguyn (int)
S du phy ng chnh xac
n (float)
S du phy ng chnh xac
gp i (float)
1. Mt gia tr kiu char chim mt byte
(8bit) va biu din c mt ky t
thng qua bang ma ASCII
Thc cht d liu kiu char la mt s

Di y la pham vi va kch c biu


din cua gia tr kiu char
Kiu

Pham vi biu
din

S ky
t

Kch thc

char

0 255

256

1 byte

2. Gia tr kiu nguyn (int). Trong C cho


phep s dung: S nguyn (int), s
nguyn dai (long) va s nguyn khng du
(unsigned). Kch thc va pham vi biu
din cua chung la:
Kch
Kiu

Pham vi biu din

int
long int
unsigned

-32768 32767
-2145483648 2145483648

thc
2 byte
4 byte

3. Gia tr du phy ng. Trong C cho


phep s dung 2 loai gia tr du phy
ng la float va double. Kch thc va
pham v biu din la: S ch
Kiu

Pham vi biu
din

s co
ngha

Kch
thc

1.5e-45 3.4e+38
float
7-8
4 byte
5.0e-324
Giai thch: May co th lu
tr c
double
15-16
8 bytes
1.7e+308

du phay dng co gia tr tuyt i trong


khoang t 1.5e-45 n 3.4e+38. S co gia
tr tuyt i nho hn 1.5e-45 c xem
bng 0. Pham vi biu din cua s double
c hiu theo ngha tng t.

II. Hng
Hng la cac ai lng ma cac gia tr cua no khng
thay i trong qua trnh tnh toan. Cac loai hng c
s dung:
Hng du chm ng (float va double) c vit
theo hai cach
Cach 1: (Ky phap t nhin): S c vit theo cach
thng thng ch co khac la du phy thp phn
c thay bi du chm.
V du:
44.356, -43442.54546
Cach 2: (Ky phap khoa hoc): S c tach thanh hai
phn la phn nh tr va phn bc. Phn nh tr
la mt s nguyn hoc s thc c vit theo ky
phap t nhin, phn bc la mt s nguyn. Hai
phn nay cach nhau bi ky t e hoc E
V du:
123.456e-5 (Biu din gia tr 0.00123456)

Hng int la s nguyn co gia tr trong khoang


t -32768 32767
Hng long c vit theo kiu:
-4234253l hoc -4234253l
(Thm l hoc L). Mt s nguyn vt ra ngoai
min xac nh cua int cung c xem la hng
long.
Hng int h 8 c vit theo cach:
0x1x2x3...
y x1, x2, x3, ... la s nguyn trong khoang t
0 n 7. Hng nguyn h 8 lun lun nhn gia
tr dng.
Hng int h 16 c vit theo cach:
0xx1x2x3... hoc 0Xx1x2x3...
y x1, x2, x3, ... la s nguyn trong khoang t

Hng ky t la mt ky t ring bit c


vit trong du nhay n (), v du: a, gia tr a
chnh la ma ASCII cua ch a. Nh vy gia tr
cua a la 97. Hng ky t co th tham gia vao
cac phep toan nh moi s nguyn khac.
V du, gia tr cua biu thc:
a - A = 97 - 65 = 32
Hng ky t con co th c vit theo
cach
\x1x2x3...
y x1, x2, x3, ... la mt s h 8 ma h gia
tr cua no bng ma ASCII cua ky t cn biu
din.
V du:

Hng xu ky t: la mt day cac ky t


bt ky t gia hai du nhay kep ()
V du:
Dai Hoc Su Pham
/* Xu rng */
Cach nh ngha mt hng:
#define <Tn hng> <Gia tr cua
hng>
Hoc:
const <kiu> <tn hng> = <Gia
tr>

III. Bin
Moi bin cn phai khai bao trc khi s dung.
Cach khai bao mt bin:
type <tn bin>
V tr khai bao bin: Cac bin khai bao cn
t ngay sau du { u tin cua thn ham va
cn ng trc moi cu lnh. Nh vy, sau
mt cu lnh gan chng han th khng c
khai bao na.
Vic khi u cho cac bin: Nu trong khai
bao, ngay sau tn in ta t du = va mt gia
tr nao o th y chnh la cach va khai bao
va khi u cho mt bin.
V du:

Cac kiu d liu


TYPE

FORMAT

BYTES MINIUM

MAXIMUM

Integer

char
signed char
unsigned char
short [int]
unsigned
short
int
unsigned int
long
unsigned long

%c
%c
%c
%hi
%hu
%i
%u
%li
%lu

CHAR_MIN
1
SCHAR_MI
1
N
1
0
2
SHRT_MIN
2
0
2 or 4
INT_MIN
2 or 4
0
4
LONG_MIN
4
0

CHAR_MAX
SCHAR_MAX
UCHAR_MAX
SHRT_MAX
USHRT_MAX
INT_MAX
UNIT_MAX
LONG_MAX
ULONG_MAX

TYPE

FORMAT

BYTES MINIUM

MAXIMUM

Real

float
%f %e %g
4
double
%lf %le %lg 8
long double %Lf %Le %Lg 10

FLT_MIN
DBL_MIN
LDBL_MIN

FLT_MAX
DBL_MAX
LDBL_MAX

IV Mt s v du v hng va bin:
V du 1: Chng trnh hin th cac gia tr ln nht va
nho nht trong kiu s nguyn
#include "stdio.h"
#include "limits.h"
int main(void)
{
unsigned long big = ULONG_MAX;
clrscr();
printf(" Minimum int = %i ", INT_MIN);
printf(" \n Maximum int = %i ", INT_MAX);
printf(" \n Maximum unsigned = %u ", UINT_MAX);
printf(" \n Maximum long int = %li ", LONG_MAX);
printf(" \n Maximum unsigned long = %lu ", big);
getch();
return 0;
}

V du 2: Chng trnh hin th cac gia tr trong


kiu char
#include "stdio.h"
#include "limits.h"
int main(void)
{
char lower_a ='a';
char lower_z ='z';
clrscr();
printf(" Minimum char = %i ", CHAR_MIN);
printf(" \n Maximum char = %i ", CHAR_MAX);
printf(" \n Sau ky tu '%c' la ky tu '%c' ",lower_a, lower_a+1);
printf(" \n Ky tu hoa cua '%c' la '%c' ", lower_z,lower_z-'a'+'A');
getch();
return 0;

V du 3: Hay vit chng trinh chuyn i gia cac h


c s:
#include "stdio.h"
int main(void)
{
int dec = 45 , oct = 045, hex = 0xA5, heX =0XA5;
clrscr();
printf("Decimal = %d Octan = %d Hexa = %d, Hexa = %d \n",
dec, oct, hex,heX);
printf("Decimal = %d Octan = %o Hexa = %x\n", dec, oct, hex);
printf("Decimal = %d Octan = %o Hexa = %X", dec, oct, heX);
getch();
return 0;
}

VI.

Mang

Mt bin ch co th biu din


c mt gia tr. biu din mt day
hay mt bang s ta co th dung nhiu
bin nhng cahc nay khng tin li. Vic
s dung mang la cach tt hn nhiu trong
nhng trng hp nh vy.
Mang co th hiu la tp hp nhiu
phn t co cung mt kiu gia tr va co
chung mt tn. Mi phn t cua mang
biu din c mt gia tr
Co bao nhiu kiu bin th cung co
by nhiu kiu mang.
Mang cn c khai bao nh ro:
- Loai mang (int, float, double,...)
- Tn mang

Khai bai mang:


Mang mt chiu:
<Type > <Array name>[Number of elements]
Mang nhiu chiu:
<Type> <Array name>[Num of elements1][Num
of elements ]
V du:
Khai bao mang 1 chiu:
int a[10] /*Khai bao mt mang cha 10
s nguyn*/
Khai bao mang 2 chiu:
int b[5][4] /Khai bao mt ma trn co
5dong 4 ct*/

Chu y:
Cac phn cua mang c cp phat
cac khoang nh lin tip nhau trong b
nh. Noi cach khac phn t co a ch
lin tip nhau trong b nh.
Trong b nh, cac phn t cua mang
hai chiu c sp xp theo hang.
Truy cp n tng phn t cua mang:
Mi phn t cua mang c xac nh
nh cac ch s cua no.
Ch s cua mang phai co gia tr int
khng vt qua kch thc cua chiu
tng ng.
V du:

V.
1.

Chu y:
Cho phep ly a ch cua mang mt
chiu:
&a[I]
Va khng chp nhn phep tnh:
&b[i][j]
Khi lnh:
nh ngha:
Mt khi lnh la gm day cac cu lnh
c bao bi cac du { va }
V du:
{
a = 4;
b = 5;
printf(\n %6d%6d,a,b)

May xem mt khi lnh cung nh mt cu


lnh ring le. Noi cahc khac, ch nao trong
chng trnh t c mt cu lnh th co
th t mt khi lnh
2. Khai bao bin u khi lnh:
Cac khai bao chng nhng co th t
u mi ham ma con co th vit u
khi lnh.
V du:
{
int a ,b;
float x, y,z;
a=b=3;
x=5; y=a*x;
z= 5-b*y;

3. S long nhau cua cac khi lnh:


Bn trong mt khi lnh lai co th vit thm
cac khi lnh khac. S lng nhau theo cach
nh vy la khng hanh ch.
4. Pham vi hoat ng cua bin va mang:
Mt im cn nh ky la: nu ta quan min
cac bin va cac mang khai bao trong mt
khi lnh se tn tai sut thi gian lam vic
cua chng trnh va c s dung trong toan
b chng trnh, th cach hiu nh vy la
khng dung.
Thc cht la: Khi may bt u lam vic
vi khoi lnh th cac bin va cac mang khai
bao bn trong no mi c hnh thanh va
c cp phat b nh. Cac bin nay ch

T o cn nh:
- Gia tr cua mt bin hay mt mang khai bao
bn trong mt khi lnh khng th a ra
s dung bt ky ch nao ngoai khi lnh
o
- bt ky ch nao bn ngoai mt khi lnh
ta khng th can thip n cac bin va cac
mang c khai bao bn trong khi lnh o.
- Nu bn trong mt khi lnh ta dung mt
bin (hay mt mang) co tn la a, th iu nay
khng lam thay i ga tr cua mt bin khac
cung co tn la a (nu co) c dung u
o bn ngoai khi lnh o.
- Tuy nhin, nu mt bin (mang) a c
khai bao ngoai mt khi lnh va trung tn

V du:
#include "stdio.h"
main()
{
int a, b=50, c, d=30;
float x=35, y,z;
a=c=40;
y=z=a+b+c+d;
{
float y,z;
y=z=a+b-x;
printf("\ny trong = %8.2f \nz trong = %8.2f",y,z);
}
printf("\ny ngoai = %8.2f \nz ngoai = %8.2f",y,z);
getch();
return 0;
}

VI. Vai net v ham va chng trnh.


Ham la mt n v c lp cua
chng trnh. Tnh c lp cua ham
c th hin trn hai im:
Khng cho phep xy dng mt ham
bn trong ham khac.
Mi ham co cac bin, mang,... Ring
cua mnh va chung ch c s
dung ni b bn trong ham o.

Mt chng trnh bao gm mt hoc


nhiu ham. Ham main() la thann phn
bt buc cua chng trnh. Chng
trnh bt u thc hin t lnh u
tin cua ham main() va kt thc khi
gp du } cui cung. Khi chng trnh

Vic truyn d liu va kt qua t ham


nay sang ham khac c thc hin theo
mt trong hai cach sau:
S dung i cua ham
S dung bin ngoai, mang ngoai, bin tnh
ngoai va mang tnh ngoai.

VII. Bin, mang t ng:


nh ngha:
Bin (mang) khai bao bn trong thn cua
mt ham (k ca ham main()) goi la bin
(mang) t ng. i cua ham cung c
xem la bin t ng.
c trng cua bin, mang t ng:
Pham v hoat ng: Cac bin (mang)
t ng ch hoat ng bn trong thn cua

Thi gian tn tai: Cac bin (mang)


t ng cua mt ham se tn tai
(c cp phat b nh) trong khoang
thi gian t khi may bt u lam vic
vi ham n khi may ra khoi ham.
Do chng trnh bt u lam vic
t cu lnh u tin cua ham main() va
khi may ra khoi ham main() th chng
trnh kt thuc, nn nu cac bin, mang
khai bao trong main() se tn tai trong
sut thi gian lam vic cua chng
trnh.
Khoi u:
Ch co th ap dung c ch khi
u cho bin t ng.

VIII. Bin, mang ngoai:

nh ngha:
Bin (mang) khai bao ngoai ham goi la
bin (mang) ngoai.
c trng cua bin, mang ngoai:
Pham v hoat ng: Cac bin (mang)
ngoai hoat ng t v tr khai bao cho
n cui chng trnh. Nh vy, nu
mt bin (mang) ngoai c khai bao
u chng trnh (ng trc tt
cua cac ham) th no co th c s
dung trong bt ky ham nao min la

Thi gian tn tai: Cac bin (mang) ngoai se


tn tai (c cp phat b nh) trong sut
thi gian lam vic cua chng trnh.
Cac quy tc v khi u:
1. Cac bin (mang) ngoai co th khi u
(mt ln) vao luc dch chng trnh bng
cach s dung cac biu thc hng. Nu
khng c khi u, may se gan gia tr
khng.
2. Khi khi u mang ngoai co th khng cn
ch ra kch thc (s phn t) cua no. Khi
o, may se danh cho mang mt khoang
nh u thu nhn danh sach gia tr khi
u.
3. Khi ch ra kch thc cu th cua mang, th
kch thc nay cn khng nho hn kch
thc cua b khi u.
4. B khi u cua mt mang char co th:

V du:
#include "stdio.h"
int a= 35, t[][3] ={ {2,4,5},{6,7,8}};
float y[5] = {45.8, 35.6};
float x[4][2] = {{32.5,21.6},{32,65}};
char ch1[]={'I', 'l','o','v','e'};
char ch2[]="I love";
char ch3[6]={'I', 'l','o','v','e'};
char ch4[6]="I love";
main()
{
clrscr();
printf("\n\na = %6d
t(1,2) = %6d
t(1,1) =
%6d",a,t[1][2],t[1][1]);
printf("\n\nx(1,1) = %6.2f x(0,1) = %6.2f x(1,1) =
%6.2f",x[1][1],x[0][1],x[1][1]);
printf("\n\n%5s %10s %10s %15s",ch1,ch2,ch3,ch4);
getch();
return 0;
}

IX. Bin tnh, mang tnh


Khi khai bao bin (mang ) tnh ta vit
thm t khoa static vao ng trc
Cu phap:
static <Kiu d liu> <Tn bin>[S
phn t]...
Bin (mang) tnh co th t bn trong
hoc bn ngoai cac ham. Nu t bn
trong, ta co cac bin (mang) tnh trong,
trng hp trai lai, ta co cac bin
(mang) tnh ngoai.
Cac bin (mang) tnh (trong va ngoai)
ging bin (mang) ngoai ch:
+ Chung c cp phat b nh trong

+ Chung co th c khi u mt ln khi

dch chng trnh nh cac biu thc hng.


Cac quy tc khoi u i vi bin (mang)
ngoai ap dung cho bin mang tnh. S
khac nhau gia bin (mang) ngaoi vi bin
(mang) tnh ch pham vi hoat ng.
+ Cac bin (mang) tnh trong khi hoat ng
c bn trong thn cua ham ma tai o
chung c khai bao.
+ Pham vi hoat ng cua cac bin (mang)
tnh ngoai c tnh t khi chung khai bao
n cui tp gc cha chung.

Vous aimerez peut-être aussi