Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Nguyễn Hữu Tuấn Ch­ng 1






Gií i thiÖ u

 

Tin hä c lµ mé t ngµnh khoa hä c mò i nhä n ph¸ t triÓ n hÕ t sø c nhanh chã ng trong vµi chô c n¨ m l¹ i ®©y vµ ngµy cµng më ré ng lÜ nh vù c nghiª n cø u, ø ng dô ng trong mä i mÆ t cñ a ®ê i sè ng x· hé i.

Ng«n ng÷ lË p tr× nh lµ mé t lo¹ i c«ng cô gió p con ng­ê i thÓ hiÖ n c¸ c vÊ n ®Ò cñ a thù c tÕ lª n m¸ y tÝ nh mé t c¸ ch h÷ u hiÖ u. Ví i sù ph¸ t triÓ n cñ a tin hä c, c¸ c ng«n ng÷ lË p tr× nh cò ng dÇ n tiÕ n ho¸ ®Ó ®¸ p ø ng c¸ c th¸ ch thø c mí i cñ a thù c tÕ.

Kho¶ng cuè i nh÷ ng n¨ m 1960 ®Ç u 1970 xuÊ t hiÖ n nhu cÇ u cÇ n cã c¸ c ng«n ng÷ bË c cao ®Ó hç trî cho nh÷ ng nhµ tin hä c trong viÖ c x©y dù ng c¸ c phÇ n mÒ m hÖ thè ng, hÖ ®iÒ u hµnh. Ng«n ng÷ C ra ®ê i tõ ®ã, nã ®· ®­î c ph¸ t triÓ n t¹ i phß ng thÝ nghiÖ m Bell. §Õ n n¨ m 1978, gi¸ o tr× nh " Ng«n ng÷ lË p tr× nh C " do chÝ nh c¸ c t¸ c gi¶ cñ a ng«n ng÷ lµ Dennish Ritchie vµ B.W. Kernighan viÕ t, ®· ®­î c xuÊ t b¶n vµ phæ biÕ n ré ng r·i.

C lµ ng«n ng÷ lË p tr× nh v¹ n n¨ ng. Ngoµi viÖ c C ®­î c dï ng ®Ó viÕ t hÖ ®iÒ u hµnh UNIX, ng­ê i ta nhanh chã ng nhË n ra sø c m¹ nh cñ a C trong viÖ c xö lý cho c¸ c vÊ n ®Ò hiÖ n ®¹ i cñ a tin hä c. C kh«ng g¾ n ví i bÊ t kú mé t hÖ ®iÒ u hµnh hay m¸ y nµo, vµ mÆ c dÇ u nã ®· ®­î c gä i lµ " ng«n ng÷ lË p tr× nh hÖ thè ng" v× nã ®­î c dï ng cho viÖ c viÕ t hÖ ®iÒ u hµnh, nã cò ng tiÖ n lî i cho c¶ viÖ c viÕ t c¸ c ch­ng tr× nh xö lý sè, xö lý v¨ n b¶n vµ c së d÷ liÖ u.

Vµ b©y giê chó ng ta ®i t× m hiÓ u thÕ gií i cñ a ng«n ng÷ C tõ nh÷ ng kh¸ i niÖ m ban ®Ç u c b¶n nhÊ t.

Hµ né i th¸ ng 11 n¨ m 1997

Nguyễ n Hữ u Tuấ n Ch­ng 1

c¸ c kh¸ i niÖ m c b¶n

1.1. TË p ký tù dï ng trong ng«n ng÷ C:

Mä i ng«n ng÷ lË p tr× nh ®Ò u ®­î c x©y dù ng tõ mé t bé ký tù nµo ®ã. C¸ c ký tù ®­î c nhã m l¹ i theo nhiÒ u c¸ ch kh¸ c nhau ®Ó t¹ o nª n c¸ c tõ. C¸ c tõ l¹ i ®­î c liª n kÕ t ví i nhau theo mé t qui t¾ c nµo ®ã ®Ó t¹ o nª n c¸ c c©u lÖ nh. Mé t ch­ng tr× nh bao gå m nhiÒ u c©u lÖ nh vµ thÓ hiÖ n mé t thuË t to¸ n ®Ó gi¶i mé t bµi to¸ n nµo ®ã. Ng«n ng÷ C ®­î c x©y dù ng trª n bé ký tù sau:

26 ch÷ c¸ i hoa: A B C.. Z

26 ch÷ c¸ i th­ê ng: a b c.. z

10 ch÷ sè: 0 1 2.. 9

C¸ c ký hiÖ u to¸ n hä c: + - * / = ()

Ký tù g¹ ch nè i: _

C¸ c ký tù kh¸ c:.,:; [ ] {}! \ & % # $...

DÊ u c¸ ch (space) dï ng ®Ó t¸ ch c¸ c tõ. VÝ dô ch÷ VIET NAM cã 8 ký tù, cß n VIETNAM chØ cã 7 ký tù.

 

Chó ý:

Khi viÕ t ch­ng tr× nh, ta kh«ng ®­î c sö dô ng bÊ t kú ký tù nµo kh¸ c ngoµi c¸ c ký tù trª n.

VÝ dô nh­ khi lË p ch­ng tr× nh gi¶i ph­ng tr× nh bË c hai ax2 +bx+c=0, ta cÇ n tÝ nh biÖ t thø c Delta D= b2 - 4ac, trong ng«n ng÷ C kh«ng cho phÐ p dï ng ký tù D, v× vË y ta ph¶i dï ng ký hiÖ u kh¸ c ®Ó thay thÕ.

 

1.2. Tõ kho¸:

Tõ kho¸ lµ nh÷ ng tõ ®­î c sö dô ng ®Ó khai b¸ o c¸ c kiÓ u d÷ liÖ u, ®Ó viÕ t c¸ c to¸ n tö vµ c¸ c c©u lÖ nh. B¶ng d­í i ®©y liÖ t kª c¸ c tõ kho¸ cñ a TURBO C:

  asm break case cdecl
  char const continue default
  do double else enum
  extern far float for
  goto huge if int
  interrupt long near pascal
  register return short signed
  sizeof static struct switch
  tipedef union unsigned void
  volatile while    

ý nghÜ a vµ c¸ ch sö dô ng cñ a mç i tõ kho¸ sÏ ®­î c ®Ò cË p sau nµy, ë ®©y ta cÇ n chó ý:

- Kh«ng ®­î c dï ng c¸ c tõ kho¸ ®Ó ®Æ t tª n cho c¸ c h»ng, biÕ n, m¶ng, hµm...

- Tõ kho¸ ph¶i ®­î c viÕ t b»ng ch÷ th­ê ng, vÝ dô: viÕ t tõ kho¸ khai b¸ o kiÓ u nguyª n lµ int chø kh«ng ph¶i lµ INT.

 

1.3. Tª n:

Tª n lµ mé t kh¸ i niÖ m rÊ t quan trä ng, nã dï ng ®Ó x¸ c ®Þ nh c¸ c ®¹ i l­î ng kh¸ c nhau trong mé t ch­ng tr× nh. Chó ng ta cã tª n h»ng, tª n biÕ n, tª n m¶ng, tª n hµm, tª n con trá, tª n tÖ p, tª n cÊ u tró c, tª n nh·n,...

Tª n ®­î c ®Æ t theo qui t¾ c sau:

Tª n lµ mé t d·y c¸ c ký tù bao gå m ch÷ c¸ i, sè vµ g¹ ch nè i. Ký tù ®Ç u tiª n cñ a tª n ph¶i lµ ch÷ hoÆ c g¹ ch nè i. Tª n kh«ng ®­î c trï ng ví i kho¸. §é dµi cù c ®¹ i cñ a tª n theo mÆ c ®Þ nh lµ 32 vµ cã thÓ ®­î c ®Æ t l¹ i lµ mé t trong c¸ c gi¸ trÞ tõ 1 tí i 32 nhê chø c n¨ ng: Option-Compiler-Source-Identifier length khi dï ng TURBO C.

VÝ dô:

C¸ c tª n ®ó ng:

a_1 delta x1 _step GAMA

C¸ c tª n sai:

  3MN Ký tù ®Ç u tiª n lµ sè
  m#2 Sö dô ng ký tù #
  f(x) Sö dô ng c¸ c dÊ u ()
  do Trï ng ví i tõ kho¸
  te ta Sö dô ng dÊ u tr¾ ng
  Y-3 Sö dô ng dÊ u -

 

Chó ý:

Trong TURBO C, tª n b»ng ch÷ th­ê ng vµ ch÷ hoa lµ kh¸ c nhau vÝ dô tª n AB kh¸ c ví i ab. trong C, ta th­ê ng dï ng ch÷ hoa ®Ó ®Æ t tª n cho c¸ c h»ng vµ dï ng ch÷ th­ê ng ®Ó ®Æ t tª n cho hÇ u hÕ t cho c¸ c ®¹ i l­î ng kh¸ c nh­ biÕ n, biÕ n m¶ng, hµm, cÊ u tró c. Tuy nhiª n ®©y kh«ng ph¶i lµ ®iÒ u b¾ t bué c.

 

1.4. KiÓ u d÷ liÖ u:

Trong c sö dô ng c¸ c c¸ c kiÓ u d÷ liÖ u sau:

1.4.1. KiÓ u ký tù (char):

Mé t gi¸ trÞ kiÓ u char chiÕ m 1 byte (8 bit) vµ biÓ u diÔ n ®­î c mé t ký tù th«ng qua b¶ng m· ASCII. VÝ dô:

  Ký tù M· ASCII  
       
       
       
  A    
  B    
  a    
  b    

Cã hai kiÓ u d÷ liÖ u char: kiÓ u signed char vµ unsigned char.

  KiÓ u Ph¹ m vi biÓ u diÔ n Sè ký tù   KÝ ch th­í c  
  Char (Signed char) -128 ®Õ n 127   1 byte  
  Unsigned char 0 ®Õ n 255   1 byte  

 

VÝ dô sau minh ho¹ sù kh¸ c nhau gi÷ a hai kiÓ u d÷ liÖ u trª n: XÐ t ®o¹ n ch­ng tr× nh sau:

char ch1;

unsigned char ch2;

......

ch1=200; ch2=200;

Khi ®ã thù c chÊ t:

ch1=-56;

ch2=200;

Nh­ng c¶ ch1 vµ ch2 ®Ò u biÓ u diÔ n cï ng mé t ký tù cã m· 200.

 

Ph©n lo¹ i ký tù:

Cã thÓ chia 256 ký tù lµm ba nhã m:

Nhã m 1: Nhã m c¸ c ký tù ®iÒ u khiÓ n cã m· tõ 0 ®Õ n 31. Ch¼ ng h¹ n ký tù m· 13 dï ng ®Ó chuyÓ n con trá vÒ ®Ç u dß ng, ký tù 10 chuyÓ n con trá xuè ng dß ng d­í i (trª n cï ng mé t cé t). C¸ c ký tù nhã m nµy nã i chung kh«ng hiÓ n thÞ ra mµn h× nh.

Nhã m 2: Nhã m c¸ c ký tù v¨ n b¶n cã m· tõ 32 ®Õ n 126. C¸ c ký tù nµy cã thÓ ®­î c ®­a ra mµn h× nh hoÆ c m¸ y in.

Nhã m 3: Nhã m c¸ c ký tù ®å ho¹ cã m· sè tõ 127 ®Õ n 255. C¸ c ký tù nµy cã thÓ ®­a ra mµn h× nh nh­ng kh«ng in ra ®­î c (b»ng c¸ c lÖ nh DOS).

1.4.2. KiÓ u nguyª n:

Trong C cho phÐ p sö dô ng sè nguyª n kiÓ u int, sè nguyª n dµi kiÓ u long vµ sè nguyª n kh«ng dÊ u kiÓ u unsigned. KÝ ch cì vµ ph¹ m vi biÓ u diÔ n cñ a chó ng ®­î c chØ ra trong b¶ng d­í i ®©y:

  KiÓ u Ph¹ m vi biÓ u diÔ n KÝ ch th­í c
  int -32768 ®Õ n 32767 2 byte
  unsigned int 0 ®Õ n 65535 2 byte
  long -2147483648 ®Õ n 2147483647 4 byte
  unsigned long 0 ®Õ n 4294967295 4 byte

Chó ý:

KiÓ u ký tù cò ng cã thÓ xem lµ mé t d¹ ng cñ a kiÓ u nguyª n.

1.4.3. KiÓ u dÊ u ph¶y ®é ng:

Trong C cho phÐ p sö dô ng ba lo¹ i d÷ liÖ u dÊ u ph¶y ®é ng, ®ã lµ float, double vµ long double. KÝ ch cì vµ ph¹ m vi biÓ u diÔ n cñ a chó ng ®­î c chØ ra trong b¶ng d­í i ®©y:

KiÓ u Ph¹ m vi biÓ u diÔ n Sè ch÷ sè cã nghÜ a KÝ ch th­í c
Float 3.4E-38 ®Õ n 3.4E+38 7 ®Õ n 8 4 byte
Double 1.7E-308 ®Õ n 1.7E+308 15 ®Õ n 16 8 byte
long double 3.4E-4932 ®Õ n 1.1E4932 17 ®Õ n 18 10 byte

 

Gi¶i thÝ ch:

M¸ y tÝ nh cã thÓ l­u tr÷ ®­î c c¸ c sè kiÓ u float cã gi¸ trÞ tuyÖ t ®è i tõ 3.4E-38 ®Õ n 3.4E+38. C¸ c sè cã gi¸ trÞ tuyÖ t ®è i nhá hn3.4E-38 ®­î c xem b»ng 0. Ph¹ m vi biÓ u diÔ n cñ a sè double ®­î c hiÓ u theo nghÜ a t­ng tù.

 

1.5. §Þ nh nghÜ a kiÓ u b»ng TYPEDEF:

1.5.1. C«ng dô ng:

Tõ kho¸ typedef dï ng ®Ó ®Æ t tª n cho mé t kiÓ u d÷ liÖ u. Tª n kiÓ u sÏ ®­î c dï ng ®Ó khai b¸ o d÷ liÖ u sau nµy. Nª n chä n tª n kiÓ u ng¾ n vµ gä n ®Ó dÔ nhí. ChØ cÇ n thª m tõ kho¸ typedef vµo tr­í c mé t khai b¸ o ta sÏ nhË n ®­î c mé t tª n kiÓ u d÷ liÖ u vµ cã thÓ dï ng tª n nµy ®Ó khai b¸ o c¸ c biÕ n, m¶ng, cÊ u tró c, vv...

1.5.2. C¸ ch viÕ t:

ViÕ t tõ kho¸ typedef, sau ®ã kiÓ u d÷ liÖ u (mé t trong c¸ c kiÓ u trª n), rå i ®Õ n tª n cñ a kiÓ u.

VÝ dô c©u lÖ nh:

typedef int nguyen;

sÏ ®Æ t tª n mé t kiÓ u int lµ nguyen. Sau nµy ta cã thÓ dï ng kiÓ u nguyen ®Ó khai b¸ o c¸ c biÕ n, c¸ c m¶ng int nh­ vÝ dô sau;

nguyen x, y, a[10], b[20][30];

T­ng tù cho c¸ c c©u lÖ nh:

typedef float mt50[50];

§Æ t tª n mé t kiÓ u m¶ng thù c mé t chiÒ u cã 50 phÇ n tö tª n lµ mt50.

typedef int m_20_30[20][30];

§Æ t tª n mé t kiÓ u m¶ng thù c hai chiÒ u cã 20x30 phÇ n tö tª n lµ m_20_30.

Sau nµy ta sÏ dï ng c¸ c kiÓ u trª n khai b¸ o:

mt50 a, b;

m_20_30 x, y;

1.6. H»ng:

H»ng lµ c¸ c ®¹ i l­î ng mµ gi¸ trÞ cñ a nã kh«ng thay ®æ i trong qu¸ tr× nh tÝ nh to¸ n.

1.6.1. Tª n h»ng:

Nguyª n t¾ c ®Æ t tª n h»ng ta ®· xem xÐ t trong mô c 1.3.

§Ó ®Æ t tª n mé t h»ng, ta dï ng dß ng lÖ nh sau:

#define tª n h»ng gi¸ trÞ

VÝ dô:

#define MAX 1000

Ló c nµy, tÊ t c¶ c¸ c tª n MAX trong ch­ng tr× nh xuÊ t hiÖ n sau nµy ®Ò u ®­î c thay b»ng 1000. V× vË y, ta th­ê ng gä i MAX lµ tª n h»ng, nã biÓ u diÔ n sè 1000.

Mé t vÝ dô kh¸ c:

#define pi 3.141593

§Æ t tª n cho mé t h»ng float lµ pi cã gi¸ trÞ lµ 3.141593.

1.6.2. C¸ c lo¹ i h»ng:

1.6.2.1. H»ng int:

H»ng int lµ sè nguyª n cã gi¸ trÞ trong kho¶ng tõ -32768 ®Õ n 32767.

VÝ dô:

  #define number1 -50 §Þ nh nghi· h»ng int number1 cã gi¸ trÞ lµ -50  
  #define sodem 2732 §Þ nh nghi· h»ng int sodem cã gi¸ trÞ lµ 2732  

 

Chó ý:

CÇ n ph©n biÖ t hai h»ng 5056 vµ 5056.0: ë ®©y 5056 lµ sè nguyª n cß n 5056.0 lµ h»ng thù c.

1.6.2.2. H»ng long:

H»ng long lµ sè nguyª n cã gi¸ trÞ trong kho¶ng tõ -2147483648 ®Õ n 2147483647.

H»ng long ®­î c viÕ t theo c¸ ch:

1234L hoÆ c 1234l

(thª m L hoÆ c l vµo ®u«i)

Mé t sè nguyª n v­î t ra ngoµi miÒ n x¸ c ®Þ nh cñ a int cò ng ®­î c xem lµ long.

VÝ dô:

  #define sl 8865056L §Þ nh nghi· h»ng long sl cã gi¸ trÞ lµ 8865056
  #define sl 8865056 §Þ nh nghi· h»ng long sl cã gi¸ trÞ lµ 8865056

1.6.2.3. H»ng int hÖ 8:

H»ng int hÖ 8 ®­î c viÕ t theo c¸ ch 0c1c2c3....ë ®©y ci lµ mé t sè nguyª n d­ng trong kho¶ng tõ 1 ®Õ n 7. H»ng int hÖ 8 lu«n lu«n nhË n gi¸ trÞ d­ng.

VÝ dô:

  #define h8 0345 §Þ nh nghi· h»ng int hÖ 8 cã gi¸ trÞ lµ
    3*8*8+4*8+5=229

1.6.2.4. H»ng int hÖ 16:

Trong hÖ nµy ta sö dô ng 16 ký tù: 0, 1.., 9, A, B, C, D, E, F.

 

  C¸ ch viÕ t Gi¸ trÞ  
  a hoÆ c A    
  b hoÆ c B    
  c hoÆ c C    
  d hoÆ c D    
  e hoÆ c E    
  f hoÆ c F    

 

H»ng sè hÖ 16 cã d¹ ng 0xc1c2c3... hÆ c 0Xc1c2c3... ë ®©y ci lµ mé t sè trong hÖ 16.

VÝ dô:

#define h16 0xa5

#define h16 0xA5

#define h16 0Xa5

#define h16 0XA5

Cho ta c¸ c h¾ ng sè h16 trong hÖ 16 cã gi¸ trÞ nh­ nhau. Gi¸ trÞ cñ a chó ng trong hÖ 10 lµ:

10*16+5=165.

 

1.6.2.5. H»ng ký tù:

H»ng ký tù lµ mé t ký tù riª ng biÖ t ®­î c viÕ t trong hai dÊ u nh¸ y ®n, vÝ dô 'a'.

Gi¸ trÞ cñ a 'a' chÝ nh lµ m· ASCII cñ a ch÷ a. Nh­ vË y gi¸ trÞ cñ a 'a' lµ 97. H»ng ký tù cã thÓ tham gia vµo c¸ c phÐ p to¸ n nh­ mä i sè nguyª n kh¸ c. VÝ dô:

'9'-'0'=57-48=9

VÝ dô:

  #define kt 'a' §Þ nh nghi· h»ng ký tù kt cã gi¸ trÞ lµ 97

 

H»ng ký tù cß n cã thÓ ®­î c viÕ t theo c¸ ch sau:

' \c1c2c3'

trong ®ã c1c2c3 lµ mé t sè hÖ 8 mµ gi¸ trÞ cñ a nã b»ng m· ASCII cñ a ký tù cÇ n biÓ u diÔ n.

VÝ dô: ch÷ a cã m· hÖ 10 lµ 97, ®æ i ra hÖ 8 lµ 0141. VË y h»ng ký tù 'a' cã thÓ viÕ t d­í i d¹ ng '\141'. §è i ví i mé t vµi h»ng ký tù ®Æ c biÖ t ta cÇ n sö dô ng c¸ ch viÕ t sau (thª m dÊ u \):

  C¸ ch viÕ t Ký tù  
  '\'' '  
  '\" ' "  
  '\\' \  
  '\n' \n (chuyÓ n dß ng)  
  '\0' \0 (null)  
  '\t' Tab  
  '\b' Backspace  
  '\r' CR (vÒ ®Ç u dß ng)  
  '\f' LF (sang trang)  

 

Chó ý:

CÇ n ph©n biÖ t h»ng ký tù '0' vµ '\0'. H»ng '0' ø ng ví i ch÷ sè 0 cã m· ASCII lµ 48,

cß n h»ng '\0' ø ng ví i ký tù \0 (th­ê ng gä i lµ ký tù null) cã m· ASCII lµ 0.

H»ng ký tù thù c sù lµ mé t sè nguyª n, v× vË y cã thÓ dï ng c¸ c sè nguyª n hÖ 10 ®Ó biÓ u diÔ n c¸ c ký tù, vÝ dô lÖ nh printf(" %c%c", 65, 66) sÏ in ra AB.

 

1.6.2.5. H»ng x©u ký tù:

H»ng x©u ký tù lµ mé t d·y ký tù bÊ t kú ®Æ t trong hai dÊ u nh¸ y kÐ p.

VÝ dô:

#define xau1 " Ha noi"

#define xau2 " My name is Giang"

X©u ký tù ®­î c l­u tr÷ trong m¸ y d­í i d¹ ng mé t b¶ng cã c¸ c phÇ n tö lµ c¸ c ký tù riª ng biÖ t. Tr× nh biª n dÞ ch tù ®é ng thª m ký tù null \0 vµo cuè i mç i x©u (ký tù \0 ®­î c xem lµ dÊ u hiÖ u kÕ t thó c cñ a mé t x©u ký tù).

Chó ý:

CÇ n ph©n biÖ t hai h»ng 'a' vµ " a". 'a' lµ h»ng ký tù ®­î c l­u tr÷ trong 1 byte, cß n " a" lµ h»ng x©u ký tù ®­î c l­u tr÷ trong 1 m¶ng hai phÇ n tö: phÇ n tö thø nhÊ t chø a ch÷ a cß n phÇ n tö thø hai chø a \0.

 

1.7. BiÕ n:

Mç i biÕ n cÇ n ph¶i ®­î c khai b¸ o tr­í c khi ®­a vµo sö dô ng. ViÖ c khai b¸ o biÕ n ®­î c thù c hiÖ n theo mÉ u sau:

KiÓ u d÷ liÖ u cñ a biÕ n tª n biÕ n;

VÝ dô:

  int a, b, c; Khai b¸ o ba biÕ n int lµ a, b, c
  long dai, mn; Khai b¸ o hai biÕ n long lµ dai vµ mn
  char kt1, kt2; Khai b¸ o hai biÕ n ký tù lµ kt1 vµ kt2
  float x, y Khai b¸ o hai biÕ n float lµ x vµ y
  double canh1, canh2; Khai b¸ o hai biÕ n double lµ canh1 vµ canh2

 

BiÕ n kiÓ u int chØ nhË n ®­î c c¸ c gi¸ trÞ kiÓ u int. C¸ c biÕ n kh¸ c cò ng cã ý nghÜ a t­ng tù. C¸ c biÕ n kiÓ u char chØ chø a ®­î c mé t ký tù. §Ó l­u tr÷ ®­î c mé t x©u ký tù cÇ n sö dô ng mé t m¶ng kiÓ u char.

 

VÞ trÝ cñ a khai b¸ o biÕ n:

C¸ c khai b¸ o cÇ n ph¶i ®­î c ®Æ t ngay sau dÊ u { ®Ç u tiª n cñ a th©n hµm vµ cÇ n ®ø ng tr­í c mä i c©u lÖ nh kh¸ c. Sau ®©y lµ mé t vÝ dô vÒ khai b¸ o biÕ n sai:

(Kh¸ i niÖ m vÒ hµm vµ cÊ u tró c ch­ng tr× nh sÏ nghiª n cø u sau nµy)

 

main()

{

int a, b, c;

a=2;

int d; /* VÞ trÝ cñ a khai b¸ o sai */

.....

}

 

Khë i ®Ç u cho biÕ n:

NÕ u trong khai b¸ ongay sau tª n biÕ n ta ®Æ t dÊ u = vµ mé t gi¸ trÞ nµo ®ã th× ®©y chÝ nh lµ c¸ ch võ a khai b¸ o võ a khë i ®Ç u cho biÕ n.

VÝ dô:

int a, b=20, c, d=40;

float e=-55.2, x=27.23, y, z, t=18.98;

ViÖ c khë i ®Ç u vµ viÖ c khai b¸ o biÕ n rå i g¸ n gi¸ trÞ cho nã sau nµy lµ hoµn toµn t­ng ®­ng.

LÊ y ®Þ a chØ cñ a biÕ n:

Mç i biÕ n ®­î c cÊ p ph¸ t mé t vï ng nhí gå m mé t sè byte liª n tiÕ p. Sè hiÖ u cñ a byte ®Ç u chÝ nh lµ ®Þ a chØ cñ a biÕ n. §Þ a chØ cñ a biÕ n sÏ ®­î c sö dô ng trong mé t sè hµm ta sÏ nghiª n cø u sau nµy (vÝ dô nh­ hµm scanf).

§Ó lÊ y ®Þ a chØ cñ a mé t biÕ n ta sö dô ng phÐ p to¸ n:

& tª n biÕ n

 

1.8 M¶ng:

Mç i biÕ n chØ cã thÓ biÓ u diÔ n mé t gi¸ trÞ. §Ó biÓ u diÔ n mé t d·y sè hay mé t b¶ng sè ta cã thÓ dï ng nhiÒ u biÕ n nh­ng c¸ ch nµy kh«ng thuË n lî i. Trong tr­ê ng hî p nµy ta cã kh¸ i niÖ m vÒ m¶ng. Kh¸ i niÖ m vÒ m¶ng trong ng«n ng÷ C cò ng giè ng nh­ kh¸ i niÖ m vÒ ma trË n trong ®¹ i sè tuyÕ n tÝ nh.

M¶ng cã thÓ ®­î c hiÓ u lµ mé t tË p hî p nhiÒ u phÇ n tö cã cï ng mé t kiÓ u gi¸ trÞ vµ chung mé t tª n. Mç i phÇ n tö m¶ng biÓ u diÔ n ®­î c mé t gi¸ trÞ. Cã bao nhiª u kiÓ u biÕ n th× cã bÊ y nhiª u kiÓ u m¶ng. M¶ng cÇ n ®­î c khai b¸ o ®Ó ®Þ nh râ:

Lo¹ i m¶ng: int, float, double...

Tª n m¶ng.

Sè chiÒ u vµ kÝ ch th­í c mç i chiÒ u.

Kh¸ i niÖ m vÒ kiÓ u m¶ng vµ tª n m¶ng cò ng giè ng nh­ kh¸ i niÖ m vÒ kiÓ u biÕ n vµ tª n biÕ n. Ta sÏ gi¶i thÝ ch kh¸ i niÖ m vÒ sè chiÒ u vµ kÝ ch th­í c mç i chiÒ u th«ng qua c¸ c vÝ dô cô thÓ d­í i ®©y.

C¸ c khai b¸ o:

int a[10], b[4][2];

float x[5], y[3][3];

sÏ x¸ c ®Þ nh 4 m¶ng vµ ý nghÜ a cñ a chó ng nh­ sau:

 

Thø tù Tª n m¶ng KiÓ u m¶ng Sè chiÒ u KÝ ch th­í c C¸ c phÇ n tö
  A Int     a[0], a[1], a[2]...a[9]
  B Int   4x2 b[0][0], b[0][1] b[1][0], b[1][1] b[2][0], b[2][1] b[3][0], b[3][1]  
  X Float     x[0], x[1], x[2]...x[4]
  Y Float   3x3 y[0][0], y[0][1], y[0][2] y[1][0], y[1][1], y[1][2] y[2][0], y[2][1], y[1][2]

 

Chó ý:

C¸ c phÇ n tö cñ a m¶ng ®­î c cÊ p ph¸ t c¸ c kho¶ng nhí liª n tiÕ p nhau trong bé nhí. Nã i c¸ ch kh¸ c, c¸ c phÇ n tö cñ a m¶ng cã ®Þ a chØ liª n tiÕ p nhau.

Trong bé nhí, c¸ c phÇ n tö cñ a m¶ng hai chiÒ u ®­î c s¾ p xÕ p theo hµng.

ChØ sè m¶ng:

Mé t phÇ n tö cô thÓ cñ a m¶ng ®­î c x¸ c ®Þ nh nhê c¸ c chØ sè cñ a nã. ChØ sè cñ a m¶ng ph¶i cã gi¸ trÞ int kh«ng v­î t qu¸ kÝ ch th­í c t­ng ø ng. Sè chØ sè ph¶i b»ng sè chiÒ u cñ a m¶ng.

Gi¶ sö z, b, x, y ®· ®­î c khai b¸ o nh­ trª n, vµ gi¶ sö i, j lµ c¸ c biÕ n nguyª n trong ®ã i=2, j=1. Khi ®ã:

a[j+i-1] lµ a[2]

b[j+i][2-i] lµ b[3][0]

y[i][j] lµ y[2][1]

Chó ý:

M¶ng cã bao nhiª u chiÒ u th× ta ph¶i viÕ t nã cã bÊ y nhiª u chØ sè. V× thÕ nÕ u ta viÕ t nh­ sau sÏ lµ sai: y[i] (V× y lµ m¶ng 2 chiÒ u) vv..

BiÓ u thø c dï ng lµm chØ sè cã thÓ thù c. Khi ®ã phÇ n nguyª n cñ a biÓ u thø c thù c sÏ lµ chØ sè m¶ng.

VÝ dô:

a[2.5] lµ a[2]

b[1.9] lµ a[1]

* Khi chØ sè v­î t ra ngoµi kÝ ch th­í c m¶ng, m¸ y sÏ vÉ n kh«ng b¸ o lç i, nh­ng nã sÏ truy cË p ®Õ n mé t vï ng nhí bª n ngoµi m¶ng vµ cã thÓ lµm rè i lo¹ n ch­ng tr× nh.

LÊ y ®Þ a chØ mé t phÇ n tö cñ a m¶ng:

Cã mé t vµi h¹ n chÕ trª n c¸ c m¶ng hai chiÒ u. Ch¼ ng h¹ n cã thÓ lÊ y ®Þ a chØ cñ a c¸ c phÇ n tö cñ a m¶ng mé t chiÒ u, nh­ng nã i chung kh«ng cho phÐ p lÊ y ®Þ a chØ cñ a phÇ n tö cñ a m¶ng hai chiÒ u. Nh­ vË y m¸ y sÏ chÊ p nhË n phÐ p tÝ nh: & a[i] nh­ng kh«ng chÊ p nhË n phÐ p tÝ nh & y[i][j].

 

§Þ a chØ ®Ç u cñ a mé t m¶ng:

Tª n m¶ng biÓ u thÞ ®Þ a chØ ®Ç u cñ a m¶ng. Nh­ vË y ta cã thÓ dï ng a thay cho & a[0].

 

Khë i ®Ç u cho biÕ n m¶ng:

C¸ c biÕ n m¶ng khai b¸ o bª n trong th©n cñ a mé t hµm (kÓ c¶ hµm main()) gä i lµ biÕ n m¶ng cô c bé.

Muè n khë i ®Ç u cho mé t m¶ng cô c bé ta sö dô ng to¸ n tö g¸ n trong th©n hµm.

C¸ c biÕ n m¶ng khai b¸ o bª n ngoµi th©n cñ a mé t hµm gä i lµ biÕ n m¶ng ngoµi.

§Ó khë i ®Ç u cho biÕ n m¶ng ngoµi ta ¸ p dô ng c¸ c qui t¾ c sau:

C¸ c biÕ n m¶ng ngoµi cã thÓ khë i ®Ç u (mé t lÇ n) vµo ló c dÞ ch ch­ng tr× nh b»ng c¸ ch sö dô ng c¸ c biÓ u thø c h»ng. NÕ u kh«ng ®­î c khë i ®Ç u m¸ y sÏ g¸ n cho chó ng gi¸ trÞ 0.

 

VÝ dô:

....

float y[6]={3.2, 0, 5.1, 23, 0, 42};

int z[3][2]={

{25, 31},

{12, 13},

{45, 15}

{

....

main()

{

....

}

Khi khë i ®Ç u m¶ng ngoµi cã thÓ kh«ng cÇ n chØ ra kÝ ch th­í c (sè phÇ n tö) cñ a nã. Khi ®ã, m¸ y sÏ dµnh cho m¶ng mé t kho¶ng nhí ®ñ ®Ó thu nhË n danh s¸ ch gi¸ trÞ khë i ®Ç u.

 

VÝ dô:

....

float a[]={0, 5.1, 23, 0, 42};

int m[][3]={

{25, 31, 4},

{12, 13, 89},

{45, 15, 22}

};

Khi chØ ra kÝ ch th­í c cñ a m¶ng, th× kÝ ch th­í c nµy cÇ n kh«ng nhá hn kÝ ch th­í c cñ a bé khë i ®Ç u.

VÝ dô:

....

float m[6]={0, 5.1, 23, 0};

int z[6][3]={

{25, 31, 3},

{12, 13, 22},

{45, 15, 11}

};

....

§è i ví i m¶ng hai chiÒ u, cã thÓ khë i ®Ç u ví i sè gi¸ trÞ khë i ®Ç u cñ a mç i hµng cã thÓ kh¸ c nhau:

VÝ dô:

....

float z[][3]={

{31.5},

{12, 13},

{-45.76}

};

int z[13][2]={

{31.11},

{12},

{45.14, 15.09}

};

 

Khë i ®Ç u cñ a mé t m¶ng char cã thÓ lµ

Mé t danh s¸ ch c¸ c h»ng ký tù.

Mé t h»ng x©u ký tù.

VÝ dô:

char ten[]={'h', 'a', 'g'}

char ho[]='tran'

char dem[10] = " van"

 







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.