ð£ì 4 Cè b° ¸ðèÀ C-ªñ£N Góô£èº 4.1 Cè b° ¸ðè (Problem Solving Techniques) ï£ ªê» èEðE, ï£ ðò¡ð´¶ èEªð£P ªñ£N ¬ò ê£ó£î¶ Ý°. èEªð£P¬ò» ê£ó£î¶ Ý°. èE ªð£P¬ò» ªñ£N¬ò» «îªî´ð¶ ªð¼ð£½, °PHì G¬ô¬ñJ ÜõP¡ ªð£¼îº¬ì¬ñ¬ò ê£î. å¼ Gó¬ô à¼õ£°«ð£¶, îI Üô¶ ÝAô «ð£¡ø Þò¬è ªñ£NJ CFA«ø£. è¬ìC «ïóF, õ®õ£è¬î (design) àòG¬ô ªñ£NJ å¼ Góô£è ⿶A«ø£. èEªð£P ªñ£NèO, åªõ£¼ ÃÁ, 裹O, ܬó ¹Oè àðì ¶Lòñ£è â¿îðì «õ´. èì¬÷ õK è¬÷ ⿶«ð£¶ å¼õ I°î èõù¶ì¡ Þ¼è«õ´. Þò¬è ªñ£NèO, ªê£ªî£ìè (sentences) Iè¾ c÷ñ£è Þ¼èô£. Cô «õ¬÷èO ܬõ ªîOõøî£ Þ¼èô£. ܬù¶ Þò¬è ªñ£NèÀ°«ñ ÞMò¹ à´. âù«õ Cèè¬÷ âMî °öðºI¡P ªîOõ£è ¹K¶ªè£÷, æ Þ¬ìG¬ô ªñ£NJ ( Intermediary Language) ⿶A«ø£. Þ¬î ⿶õ¶ ¹K¶ ªè£õ¶ âO¶. âMî °öðº âö£¶. Þî¬èò Þ¬ìG¬ô ªñ£N Þò¬è ªñ£NèÀ° èEªð£P ªñ£NèÀ° Þ¬ìðì ªñ£Nò£°. Üî¬èò Þ¬ìG¬ô ªñ£Nè Þó®¬ù ï£ ð®è Þ¼A«ø£. ܬõ, Iè ªð¼ ñ÷M ðò¡ð´îð´A¡ø ð£¾ðì (Flow Chart) ñÁ «ð£L °Pº¬ø (Pseudo Code) ÝAò¬õ Ý°. ºîL ï£ ð£¾ðì¬î â´¶ ªè£«õ£. èE¹ G¬ôð£¬îèO¡ ð£¾è ðìñ£è à¼õAèð´õî£ Þ¶ 𣠾ðì âù ªðòªðø¶. æ â´¶è£´ì¡ ªî£ì°«õ£. Þó´ âèO¡ ô ªî£¬è¬ò», Þó® ªðKò â¬í» è´H®è «õ´. ÞðE¬ò G¬ø«õP º®è, ºîL Þó´ âè¬÷ àkì£è ªðÁ Üõ¬ø îQîQ 200
ÞìèO îQîQ ªðòèO Þ¼F¬õè «õ´. Hø° ÜõP¡ ô ªî£¬è¬ò èE¶ F¬óJ è£ì «õ ´. Ü´¶ Þó´ âèO ªðKò â èìPòð´ F¬ó Jìðì «õ´. Þîè£ù ð£¾ðì ðì 4.1- îóð´ ÷¶. 𣾠ðìF åªõ£¼ õ®õº å¼ °PHì ªð£¼ ¬÷ °PA¡øù. ܬõ ðì 4.2- îóð´÷ù.
ªî£ìè A,A,BBä äð®
C=A+B
Cä Cä ÜC´ Þ¬ô
Bä Bä ÜC´ ä
A > B?
º®¾ ð£¾ðì 4.1
201
Ý Aä Aä ÜC´ ä
ªî£ìè, º®¾
àk´, ªõOf´
ªêòð£´
bñ£ù ªð®
è´ð£´ ªê½ F¬ê
Þ¬í¹ º¬ù
ð£¾ðì 4.2
«ñ«ô °PHì ð£¾ðìF, C=A+B
â¡Á â¿îð´÷î° Cøð£ù ªð£¼ à´. ï£ õöè ñ£ù Gè𣴠(equal to) °P¬ò (=) ðò¡ð´F»÷ «ð£F ½, å¼ Gè𣮠(equation) à÷ ªð£¼O ܶ ðò¡ð´î ðìM¬ô. à¬ñJ Þî ÃP¡ (statement) ªð£¼, õô ðèF ÞìªðÁ÷ A, B ÝAòõP¡ Þ«ð£¬îò ñF¹ è¬÷ î, ô ªî£¬è¬ò Þìðèº÷ C- ¡ ¹Fò ñF ð£è, Þ¼F¬õ â¡ð. â´¶è£ì£è, Þî M÷èF¡ ð®, A=A+1
â¡ð¶ ãè î°î ÃÁ. A- ¡ ñFH 塬ø î, ܹFò ñF¹ e´ A- J«ô«ò Þ¼F¬õèð´Aø¶. Üî£ õ¶, A- ¡ ñF¹ å¡Á Ãìð´Aø¶. A=A+B
â¡Á â¿îô£ â¡ð¬î G¬ùM ªè£è. Ýù£, A+B=A
202
â¡Á â¿îº®ò£¶. ÞìðèF, õôðèF¡ M¬ì¬ò Þ¼F ¬õè å«óªò£¼ ªðò ñ´«ñ Þ¼è «õ´. èEªð£P Íô ªêò º®Aø ܬù¶ èE¹è¬÷» ð£¾ðìñ£è õ¬ó¶ è£ì º®». Cè CPî£è Þ¼H¡ ð£¾ðìº CPî£è Þ¼°. ªðKò CèèÀè£ù 𣾠ðì âð® Þ¼° âù âE ð£¼è. ï¬ìº¬ø õ£ ¬èJ¡ Cèè â«ð£¶ Iè ªðKò¬õ. Ýù£ õ°ð¬ø èí°è CPò¬õ«ò. è£óí, õó¹°ðì «ïó¶° Cô °PHì 輶¼è¬÷ (Concepts) èÁ î¼õîè£è ܬõ à¼õ£èð´A¡øù. ªðKò CèèÀ° 𣾠ðì ªðKî£è Þ¼°. Ýù£ ï£ ðò¡ð´¶ î£O¡ Ü÷¾ CPò¶. âù«õ, å¼ ð£¾ ðì õ¬óò ðô î£è «î¬õðìô£. Ýù£ å¼ î£OL ¼¶ Ü´î î£À° ªêõ¶ âð®? Þ¬íHè (Connectors) â¡Á ܬöèð´ CPò õìè Íô ÞCè¬ô bèô£. Þî õìF æ â¿¬î °PHì «õ´. å«ó â¿¬î ªè£ì ܬù¶ õìèÀ ܬõ âA¼î£½ å«ó ¹O¬ò °PA¡øù. ܬõ å«ó ðèF Þ¼èô£ Üô¶ ªõ«õø£ù ðèèO Þì ªðP¼èô£. 𣾠ðì 4.3- æ ⴶ裴 è£è:
B
A
A
B
B
ð£¾ðì 4.3
203
ð£¾ðìèO¡ ñè ð£¾ðìè ¶Lòñ£ù¬õ. ïñ¶ âíè¬÷ Iè êK ò£è à¼õèð´¶ð¬õ. CPò ð£¾ðìè¬÷ âOî£è ¹K¶ ªè£÷ º®». ï¬ìº¬ø õ£M¡ CèèÀè£ù 𣾠ðìè ðô ðèèè¬÷ â´¶ ªè£À, âù«õ Üõ¬ø ¹K¶ªè£õ¶ Iè¾ è®ù â¡ð¶ å¼ °¬ø𣴠ݰ. âù«õ, Üî¬èò G¬ô¬ñèO âõ¼ ð£¾ðìè¬÷ ðò¡ ð´î ñ£ì£è. W«ö 裵 èí°èÀè£ù CPò ð£¾ðìè¬÷ â´ ¶ ªè£Àè. ܬõ, èí°èÀè£ù b¬õ õö°A¡ø ùõ£ âù ð£¼è. Üõ¬ø ñùð£ì ªêò«õì£. Üõ ¬ø ¹K¶ªè£÷ ºò½è. å¼ Gó¬ô ⿶õî° º¡ð£è ï£ âõ÷¾ CFè «õ®»÷¶ â¡ð¬î èõùF ªè£ Àè. å¼ ªð®J¡ c÷, Üèô, àòó ÝAòõ¬ø ªè£´ Üî¡ ªè£÷÷¾ èíAìð´õ¬î ð£¾ðì 4.4- è£è.
ªî£ìè
c÷, Üèô, Üèô,àòó àòó c÷, Þõ¬ø Þõ¬øð®ð®
ªè£÷÷¾=c÷*Üèô*àòó
ªè£÷÷¬õ C º®¾ ð£¾ðì 4.4
204
ð£¾ðì 4.5, 0L¼¶ 3 õ¬óJô£ù âè¬÷ ð®¶, Üõ¬ø â¿F â¿F 裴Aø¶.
ªî£ìè
Nä Nä ð® ²N âù ⿶ ⿶
Ý Ý N = 0? ⿶ å¡Á âù ⿶ ⿶
Þ¬ô
Þ¬ô
Ý Ý = NN = 1? 1?
Þó Þó´ ´ âù âù ⿶
Ý Ý
Í¡Á Í¡ âù Á âù ⿶
º®¾ ð£¾ðì 4.5 205
= NN = 2? 2? Ý Ý
Þ¬ô
= NN= 3? 3?
Þ¬ô no
ð£¾ðì 4.6, ªè£´èðì Í¡Á âèO CPò â ¬í èìP¶ ªê£Aø¶.
ªî£ìè
a, b, c ä ð®
Þ¬ô
b b<
aa<
Þ¬ô Þ¬ô
?
a a<
Ý Ý bä ÜC´ bä
Ý Ý
cc ä ä ÜC´
º®¾ ð£¾ðì 4.6
206
a ä ÜC´
ð£¾ðì 4.7, Þ¼ð® Gèð£¬ì (Quadratic equation) bð îè£ù å¼ õNº¬ø¬ò õö°Aø¶.
ªî£ìè a, ä ð® a, b, b, cc ä
Þ¬ô
Ý Ý
Þ¼ð® êñ¡ð£´ Þ¬ô âù ⿶
d=b2-4ac
aa ==0?
Ý Ý
Þ¬ Þ¬ô
d d< <0? 0?
Þ¬ô Þ¬ô
d d= =0? 0?
Ý Ý
e=Öd r1=(b+e)/2a
Þ¼ Þ¼ «õÁ «õÁ M¬ìè r1 r2 M¬ìè, r1,
Þñ£TùK Þñ£TùK M¬ìè M¬ìè âù ⿶ ⿶ âù
r = -b/a
Þ¼ Þ¼ êñ êñ M¬ìè, M¬ìè r,r r
º®¾
º®¾ 𣾠ðì 4.7 207
º®¾
ªî£ìè n=1,n=1, sum=0
Þ¬ô n<=100? n<=100 ? Sumää Sum ªõOJ´ ªõOJ´
Ý
aa ä ä ð®
Sum=sum+ Sum=sum+a a
º®¾ ð£¾ðì 4.8
208
ð£¾ðì 4.9, ªè£´èðì å¼ º¿â (Integer), ð° âí£ (prime number) Üô¶ ðè£ âí£ â¡ð¬î bñ£Q Aø¶.
ªî£ìè ä ð® nn ä i=2
Þ¬ô
Ý
i
i=i+1 Þ¬ô
õ°ðì£ õ°ðì£ â â âù ⿶ âù
º®¾ end
Ý
õ°ð´ õ°ð´ â â âù ⿶ âù
º®¾
ð£¾ðì 4.9
209
nä i õ°°ñ£
ð£¾ðì 4.10, 1+2+3+............+ n â¡ðî¡ Ã´ ªî£¬è êK ò£è 1000 Üô¶ Üî° ê«ø ôîô£è õ¼ñ£Á, eCÁ º¿ â¬í (smallest integer) èìP¶ ªê£Aø¶.
ªî£ìè i=1, i=1, sum=1
Þ¬ô
sum, ä sum, ii ä ªõOJ´ ªõOJ´
Ý
sum<10 sum<100? 0?
i=i+1 i=i+1 sum=sum+i sum=sum+
º®¾ ð£¾ðì 4.10
4.1.1 Ü®ð¬ìò£ù Gðî¬ù ñÁ è´ð£´ èì¬ñ¹è(Fundamental Conditional and Control Structures) èEªð£P «ð£L °Pº¬øJ (Computer pseudo code) å ªõ£¼ ð®G¬ô (step) ¬ò» ï£ èEªð£P° ÜP¾Áî «õ ´. â¡ù ªêò «ð£A«ø£ â¡ð¬îðP ïñ° ªîOõ£ù ¹Kî Þ¼î£ ñ´«ñ ïñ£ èEªð£P «ð£L °P º¬ø¬ò â¿î º®». ï£ ªê£õ¬î ï£ ªê£Aøð®«ò èEªð£P ªê». ܶ î£ù£è«õ â¬î» ªêò£¶. èE ªð£P¬ò ðóñ£î °¼M¡ äî£õ¶ Cwò¡ â¡ÁÃì ªê£ ôô£. ã¡ âù Mòð¬ìAlè÷£? 210
ðóñ£î °¼M¡ Cwòè¬÷ ðPò ðô è¬îèÀ å¼ è¬î¬ò ð£«ð£. ðóñ£î °¼¾° ° Cwòè à´. ñ®, ñ¬ìò¡, Íì¡, ºì£ â¡ð¶ ÜõèO¡ ªðòè. Þî ° ªðòèÀ ÜPML â¡Â å«ó ªð£¼¬÷«ò àí¶A¡øù. Þõè ï£õ¼ îè °¼¾è£è å¼ õò î£ù °F¬ó¬ò õ£Aù. °¼¬õ °F¬óJ àè£ó¬õ¶ ªè£´ ï£õ¼ ïì¶ õîù. °¼M¡ î¬ôð£¬è å¼ ñóA¬÷J «ñ£F W«ö M¿¶Mì¶. CP¶ «ïó èN¶ °¼ î¡ î¬ôð£¬è â«è â¡Á «èì£. W«ö M¿¶Mì î£è Cwòè ÃPù. 㡠ܬî â´èM¬ô â¡Á «èì «ð£¶, Üõ£Á cè ªê£ôM¬ô«ò â¡Á ðFLÁîù. àì«ù °¼, ÞQ«ñ ⶠW«ö M¿î£½ ܬî â´¶ àì¡ ªè£´ õó«õ´ â¡Á èì¬÷Jì£. å¼ Cwò¡ H¡«ù£A ïì¶ ªê¡Á î¬ôð£¬è¬ò â´¶ õ. î¬ôð£¬è G¬øò °F¬óJ¡ ê£í Þ¼ð¬î 𣶠°¼¾° «è£ð õî¶. î¬ôð£¬è«ò£´ ê£í¬î» âîè£è â´¶ õbè â¡Á °¼ «èè, cèù, W«ö ⶠM¿  â´¶õó ªê£¡mè. â¬î â´ð¶, â¬î M´ð¶ â¡ð¶ âèÀ° âð® ªîK»? âù«õ, âõ¬øªòô£ â´è «õ´ âù å¼ ð®ò ªè£´¶M´è. âèÀ° âMî °öðº ޼裶 â¡Á ðF ÃPù. °¼ å¼ cì ð®ò¬ô ªè£´î£. Üõè÷¶ ðòí ªî£ìî¶. CP¶ «ïó èN¶, õòî£ù Üî °F¬ó î´ñ£P W«ö M¿î¶. °¼¾ Üõ¼¬ìò ªð£¼èÀ W«ö M¿¶ CîPù. àì«ù, å¼ Cwò¡ ð®òLL¼î ªð£¼è¬÷ õ£Cè ªî£ì Aù£¡. î¬ôð£¬è, «õ®, ¶´ âù åªõ£¡ø£è â´¶ «êèKîù. °¼ ªõÁ Þ´¹ ¶E«ò£´ Aìî£. ù ÉA °F¬óJ¡«ñ Aì¶ð® CwòèOì «è´ ªè£ ì£. ð®òL cè ÞìªðøM¬ô °¼«õ â¡Á àìù® ò£è ðF õî¶. Üõó¶ «õ´«è£¬÷ Üõè 裶 ªè£´¶ «èè îò£ó£J¬ô. ð®ò¬ô F¼F ܬñ°ð®» ð ®òL î¡Â¬ìò ªðò¬ó» «ê¶ ªè£Àð®» °¼ «è´ ªè£ì£. Üî¡Hø°, ð®ò¬ô e´ êKð£°ð® ݬíJì£. Þ«ð£¶, Cwòè °¼¬õ ÉAMìù. èEªð£P «ð£L °Pº¬ø» Þî ð®ò «ð£¡ø¶î£¡. 211
èEªð£P, ðóñ£î °¼M¡ CwòèO å¼õ¬ó «ð£¡ø¶. Þó´° ÜFè «õÁ𣮬ô. èEªð£P° ªîOõ£è, M÷èñ£è ݬíè¬÷ õöè «õ´. Üõ£Á M÷èñ£ù º¬øJ CFè ï£ ðJCªðø «õ´. ªñ£îF ð£î£, Í¡«ø Í¡Á ¸ðè«÷ e´ e´ ÞìªðÁA¡øù. Þî ¸ðè¬÷ ðò¡ð´F å´ªñ£î èEðE» G¬ø«õøð´Aø¶. Þõ¬ø è Áªè£÷ «õ´ â¡ð¶, eùõ cê èÁªè£÷ «õ ®ò¶ âõ÷¾ èì£ò«ñ£ Üõ÷¾ èì£òñ£°. õK¬êº¬øð´î (Sequencing)
ªð£¶õ£è èíW´è å¡ø¡H¡ å¡ø£è õK¬ê º¬øJ ªêòð´A¡øù. Ü®ð¬ìò£ù è´ð£´ èì¬ñ¹èÀ õK¬êº¬ø» å¡ø£°. 4.1.1.1 A¬÷HKî (Branching) Þ¼õN A¬÷HKî (Two-way branching)
å¼ Mù£¬õ «èÀè. Ý Üô¶ Þ¬ô â¡Â M¬ì¬ò ªðÁè. M¬ì«èð, Þó´ ð£¬îèÀ å¡P A¬÷HK¶ ܹè. Þ¶ å¼ ê£ê¶ó ªð® Íô M÷ A è£ìð´Aø¶. ðô ð£¾ðìèO Þî¬èò ªð®¬ò ð£F¼dè. å«ó ð£¾ðìF ðô ÞìèO ð£F ¼dè. A¬÷HKî â¡ð¶ Ü®ð¬ìò£ù è´ð£´ èì¬ñ¹èÀ å¡ø£°. ⴶ裴: If A > B Then Print A, Otherwise Print B
â¡ø èì¬÷ ܬñ¹ If......Then.......Else èì¬ñ¹ Ý°. å¼ ð£¬îJ ªêò ⶾ Þ¬ô âQ, If..... Then èì ¬ñ¬ð ðò¡ð´îô£. Þõ¬ñH ðF Þ¬ô âQ, ⶾ ªê ò£ñ«ô«ò, ªêò𣴠ܴî ÃÁ° ªêô «õ´. ⴶ裴: If you find anyone there, then say hello
ðôõN A¬÷HKî (Multi-way Branching)
Cô Mù£èÀ°, Ý Üô¶ Þ¬ô â¡Aø ðF ñ´ 212
Þ¼è º®ò£¶. â´¶è£ì£è, Þî ¬ðòQ¡ õò¶ â¡ù? â¡ø «èM° âî¬ù«ò£ âèO å¼ â ðFô£è Þ¼°. ðFL¡ Ü®ð¬ìJ, ªõ«õÁ ð£¬îèO ªê¡Á ªõ«õÁ èEd´è¬÷ ªêò «õ®J¼èô£. Þ¶ ðôõN A¬÷ HKî âùð´Aø¶. Þî¬ù W«ö»÷ ð£¾ðìF à÷ õ£Á M÷A è£ìô£.
ªî£ìè i=1, i=1, sum=1
=0 =1 ²N âù ⿶
sum<100? sum<10 0?
å¡Á âù ⿶
Þó´ âù ⿶
º®¾ ð£¾ðì 4.11
213
=3 =2 Í¡Á âù ⿶
ⴶ裴: If n is 0 then print Zero 1 then print One 2 then print Two 3 then print Three
4.1.2 𡺬ø ªêò (Iteration) GêJî 𡺬ø ªêò (Definite Iteration)
Í¡ø£õ¶ Ü®ð¬ìò£ù ¸ð 𡺬ø ªêò Ý°. Üî£õ¶, °PHì ªêòð£´è¬÷ e´ e´ ªêî. Ýù£½, Ü«î îó¾è e¶ Ü«î ªêòð£´è¬÷ F¼ð ªêò «ð£õF¬ô. Üõ£Á ªêõ¶ «ïó¬î ií®ð. â´¶è£ì£è, ËÁ âè¬÷ ªðÁî, ÝJó õ£®¬èò£ ÷èÀ° îó«õ®ò õ®¬ò èìPî. Þî Þó´ â´ ¶è£´èO½, å«ó ðE¬ò âî¬ù º¬ø F¼ð ªêò «õ´ â¡ð¬î ÜPF¼A«ø£. âù«õ Þî¬ù Gê Jî 𡺬ø ªêò â¡A«ø£. Þî õNº¬øJ, °P Hì ªêò𣴠âî¬ù º¬ø ªêòð´Aø¶ â¡ð¬î âE ªè£«ì õó«õ´. Þõ£Á âµõî° ðò¡ð´ ñ£P ²´ ñ£P (Index veriable) Üô¶ è´ð£´ ñ£P (Control Variable) â¡Á ܬöèð´Aø¶. ² ´ ñ £ P ¬ ò ð ò ¡ ð ´ ¶ õ F ï £ ¡ ° Ü ® ð ¬ ì ð® G¬ôè à÷ù: 1) ²´ ñ£PJ ªî£ìèF å¼ ªî£ìè ñF¬ð Þ¼î «õ´. 2) ²´ ñ£PJ¡ Þ«ð£¬îò ñF¹ (v) Üî¡ ÞÁF ñF¹ ì¡ åHìð´, ÞQ«ñ½ F¼ð ªêò«õ´ñ£ â¡ð¬î bñ£Qè «õ´. 3) M¬ì Ý âQ, u «î¬õò£ù ªêòð£´è¬÷ 强¬ø G¬ø«õø¾. u ²´ ñ£PJ¡ ñF¬ð å¡Á Ãì¾. u
Þóì£õ¶ ð®G¬ô° ªê¡Á, êKð£î¬ô e´ ªêè. 214
4) M¬ì Þ¬ôâQ, u
F¼ð ªêî º®¶ «ð£ù¶.
u
õK¬êò¬ñH Ü´î èì¬÷° ªêô¾.
ð£¾ðì 4.12 GêJî 𡺬ø ªêò¬ô M÷°Aø¶. ðìF, F¬êMèðì «è£´è÷£ Ýù å¼ ñìA¡ (Loop) Íô 𡺬ø ªêò è£ìð´÷¶.
i=1
Þ¬ô
i<=1000 i<=1000? ?
Ý
«î¬õò£ù «î¬õò£ù ªêò
ªêò
i=i+1
Ü´î õK ð£¾ðì 4.12
Cô ÅG¬ôèO, âî¬ùº¬ø F¼ð ªêò«õ´ â¡ð¬î ªî£ìèF èEè º®ò£ñ «ð£èô£. â´¶è£ ì£è, 1+2+3+..... +n â¡ðî¡ Ã´ ªî£¬è ˬø â´ õ¬èJ, eCÁ n- ¡ ñF¬ð è£í «õ´. å«õ£ âí£è Ãì «õ´. Üõ£Á ô«ð£¶ ˬø â®Mìî£ â¡ð¬î «ê£Fè«õ´. ˬø â®ò¶ GÁFMì «õ´. âè¬÷ ô ªêò¬ô âî¬ùº¬ø ªê«õ£ â¡ð¬î º¡Ã®«ò æ âE¬èò£è ªê£ô º®ò£¶. Þî¬ù º¬ø âù â E ªè£®¼ð¶ ðò¡îó£¶. ˬø â®Mìî£ â¡Aø Gð î¬ù¬ò ðK«ê£Fè «õ´. Þî¬èò 𡺬ø ªêò, GêòFì£ ð¡º¬ø ªêò (Indefenite Iteration) âùð´Aø¶. õK¬êº¬øð´î (Sequencing), A¬÷HKî (Branching), 𡺬ø ªêò (Interation) ÝAòõ¬ø ðò¡ð´F ܬù¶ èEd´è¬÷» ªê¶ º®è º®». 215
4.1.3 «ð£L °Pº¬ø (Pseudo Code) å¼ °PHì ðE¬ò G¬ø«õÁõîè£ù ªêòº¬ø¬ò ð£¾ðì Íôñ£è õ¬ó¶ 裴õî° ðFô£è, «ð£L °P º¬ø Íôñ£è¾ â¿F è£ìô£. «ð£L °Pº¬ø â¡ð¶, ÝAô ªñ£N ªî£ì¼° àJG¬ô èEªð£P ªñ£N èì¬÷èÀ° Þ¬ìðì¶. ÝAôF ªî£ìè c÷ñ£è Þ¼°; ¶Lòñ£è ޼裶. èEªð£P ªñ£NèO èì¬÷ ªî£ìó¬ñ¹ èø£ó£è H¡ðøðì «õ´. «ð£L °Pº¬ø J Þî Þó´ àÁîèÀ A¬ìò£¶. Iè Cô ªî£ìõ¬èè«÷ ÞF à÷ù. ܬõ» Iè CPò¬õ. Ýù£½, âîªõ£¼ ªêòº¬ø¬ò» õ¬óòÁ° Fø¡ ªè£ì¬õ. ïñ° ñÁªñ£¼ ïòñ£ù ªî£ìó¬ñ¹ õê F» à÷¶. å«ó ªî£ìK ðô ÃÁè¬÷ å¡Á «êè, õöè ñ£ù ܬ칰Pè¬÷ õöèñ£ù ªð£¼O ðò¡ð´î º® ». õKè¬÷ àî÷ (Indentation) Íôñ£è¾, å¡Á° «ñ ðì ÃÁè¬÷ å¡Á«êè º®». «ð£L °Pº¬øJ â¿ îð´ Mõóè¬÷ âOî£è ¹K¶ªè£÷ º®». ð£¾ðìF ï£ ð£î A¬÷HKî, F¼ð ªêî «ð£¡ø è´ð£´ èì¬ñ¹è¬÷ «ð£L °Pº¬øJ Þ õ£Á â¿îô£: * If.... then............else............. * If....... then.............. * For.............. to........do..... * While.............do......... ÞõÁè£ù Cô ⴶ裴 °Pº¬øè: • • •
If a > b then print a else print b
•
While sum < 100 do sum = sum + i i=i+1
If a < 10 then b = c + d For i = 1 to 20 do n=n+i
216
ⴶ裮¡, àî÷ðì Þó´ õKèÀ å¡ø£è «êèð´, å«ó ªêò𣴠èì¬÷ò£è è¼î ðì«õ´ â¡ð¬î èõùF ªè£è. «ñèì â´¶ 裴èÀè£ù ð£¾ðìè¬÷ W«ö è£è: While......do
Þ¬ô no
a > b?
Ý yes
Þ¬ô no
a- ä Print a ÜC´
b- ä Print b ÜC´
a<10?
Ý yes b=c+d
i=1
Þ¬ô no
i<=20?
Ý yes
Þ¬ô no
sum< 1000?
n=n+i i=i+1
Ý yes sum = sum+i i=i+1
ð£¾ðì 4.13
ܬù¶ è´ð£´ èì¬ñ¹èÀ, å«óªò£¼ ¸¬ö¾ º¬ù, å«óªò£¼ ªõO«òÁ º¬ù¬ò«ò ªè£´÷ù â¡ð¬î «ï£°è. Üî£õ¶ Þèì¬÷ ܬñ¹èO °PHìð´÷ ªêòð£´è¬÷ G¬ø«õP º®îH¡, è´ð£´ Ü´¶÷ ÃÁ° ñ£øð´ M´. Üî£õ¶, èEªð£P õK¬êº¬øJ Ü´¶ ÞìªðÁ÷ èì¬÷¬ò G¬ø«õø ªî£ì°. Þ¶  Þèì¬÷ ܬñ¹èO¡ å¼ Cø¹ Ãø£°. ¹Kî¬ô», H¬öè¬÷ èìP¶ c°î¬ô» Þ¶ âOî£A M´Aø¶. º¬îò ð°FJ ï£ b¶¬õî CèèÀè£ù «ð£L °Pº¬øè W«ö ªè£´èð´÷ù. ð£¾ðìè¬÷», «ð£L °Pº¬øè¬÷» åH´, ܬõJó´ åF¼ð¬î àÁF ªê¶ ªè£è. 217
u
ªè£÷÷¾
èìPî start read length, breadth and height. volume = length x breadth x height print volume end
«ñèì ⴶ裮, õK¬êº¬ø ÃÁè ñ´«ñ ðò¡ð´îð´÷ù. u
âè¬÷ â¿î£ ⿶î start read n if n is 0 then write zero 1 then write one 2 then write two 3 then write three end
u
Í¡Á âèO CPò â¬í èìPî start read a, b, c if a < b then (if a < c then print a else print c ) else (if b < c then print b else print c ) end
218
u
Þ¼ð® Gèð£¬ì bî start read a, b, c if a = 0 then ( write this is not a quadratic equation exit ) else find d = b2 - 4ac if d < 0 then write imaginary roots else if d = 0 then r = -b/a write equal roots write r, r else r1 = (-b + d)/ 2a r2 = (-b - d)/2a write unequal roots write r1, r2 end
u
100 õ¬óJô£ù âèO¡ ô ªî£¬è è£í start sum = 0 n=1 while n <= 100 then do read a sum = sum + a n= n+1 print sum end
u
ðè£ âè¬÷ è£í start read n for i = 1 to n-1 do if i divides n then (write not a prime exit program ) write prime number end
219
u
ô ªî£¬è ÝJó¬î â´ õ¬ó start i=1 sum = 1 while sum < 1000 do i=i+1 sum = sum + i print i and sum end
àè èõù¶° Cô °P¹è å¼ If... then....else ÃÁ° Þ¡ªù£¼ If.... then..... else ÃÁ îóð´÷¶. Þî¬ù ªîOõ£è àí¶ ªð£¼´ àîO â¿îð´÷¶. u
å¼ ÃÁ°«÷«ò ÞìªðÁ Þ¡ªù£¼ ÃÁ «ñ½ àîO â¿îð´÷¶. ñøð® õK¬êº¬ø ܬñ H½÷ ÃÁè å«ó Ü÷õ£è àî÷ð´ â¿îð´÷ù. u
èEîF Ü¬ì¹ °Pè¬÷ ðò¡ð´¶õ¶ «ð£¡«ø, Þ«è» å¡Á «êè Ü¬ì¹ °Pè¬÷ ðò¡ð´F à «÷£. u
u «ð£L °Pº¬øJ â¿îð´÷ ªêòº¬øè, å¼ èEªð£P Gó¬ô ªðK¶ åF¼ðî£, Þõ¬ø àòG¬ô ªñ£N èEªð£P Góè÷£è ñ£P ܬñð¶ Iè¾ âOî£ °.
4.1.4 êK𣹠(Walkthrough) å¼ Gó ⿶õF ºîð®, b¾è£ù õNº¬ø¬ò Mõ K° å¼ ð£¾ðì Üô¶ «ð£L °Pº¬ø¬ò à¼õ£° î Ý°. Cè½è£ù å¼ bM¬ù õ®õ¬ñðF Þ¶ ªî£ìè G¬ô Ý°. ð£¾ðì Üô¶ «ð£L °Pº¬ø¬ò Ü® ð¬ìò£è ¬õ¶, å¼ °PHì ªñ£NJ¡ èì¬÷ ܬñ¹ MFèÀ° àð´ Gó â¿îð´Aø¶. å¼ Gó¬ô ⿶õî° º¡ð£è, Cè b¾è£ù õNº¬ø êKò£ùî£ â¡ð¬î ðK «ê£Fè «õ´. âù«õ, ï£ à¼õ£Aò ð£¾ðìº, «ð£L °Pº¬ø» êKò£ùð® ܬñ¶÷ùõ£ â¡ð¬î ðK«ê£Fè «õ´. ðK«ê£î¬ù° º¡ð£è, b¾ªïP (Algorithm) â¡ø£ 220
â¡ù â¡Á ð£«ð£. Üî¡Hø°, ð£¾ðì Üô¶ «ð£L °Pº¬ø¬ò ðK«ê£Fè å¼ õNº¬ø¬ò 裫ð£. b¾ªïP â¡ð¶, W裵 ð¹è¬÷ ªè£ì å¼ ªêò º¬ø Ý°: õó¹Á (finite) âE¬èJô£ù ð®G¬ôè (steps) Þ¼è «õ´. u
u åªõ£¼ ð®G¬ô», âMî °öðºI¡P ªêòð ´¶ G¬ôJ Þ¼è «õ´.
åªõ£¼ ð®G¬ô», õó¹°ðì G¬ùõè ð°F¬ò ðò¡ð´F, õó¹°ðì «ïó¶° ªêòð´¶ G¬ôJ Þ¼è «õ´. u
u º¿¬ñò£ù Gó½, õó¹°ðì «ïó¶° Þò °ð® Þ¼è «õ´.
å¼ b¾ªïPè£ù ð£¾ðì Üô¶ «ð£L °Pº¬ø ªè£´èð´÷î£è ¬õ¶ ªè£«õ£. Þî¬ù Ü®ð¬ì ò£è ªè£´ å¼ èEªð£P âõ£Á ªêòð´ â¡ð¬î ðK«ê£F° õNº¬ø¬ò, åF¬è Üô¶ êK𣹠âùô£. ÝAôF walkthrough â¡ø¬öèð´Aø¶. â´¶è£ì£è, å¼ ð£¾ðì¬î â´¶ ªè£«õ£. àè¬÷ å¼ èEªð£P ò£è à¼õA¶ ªè£Àè. ªî£ì° (Start) âù °PH ´÷ ªð®JL¼¶ ªî£ìè «õ´. Þî ÞìFL¼¶, ܹ°Pè÷£ °Pèðì ð£¬îJ cè ðòEè «õ ´. å¼ ªêõè ªð®° ¸¬öî£, «î¬õò£ù èEd´ è¬÷ ªêò«õ´. ܶ æ àk´ ªð® âQ, °PHì ñ£PèÀ°Kò ñF¹è¬÷ â´¶ ªè£÷«õ´. åªõ£¼ º¬ø» ªõ «õÁ ªî£°F ñF¹è¬÷ â´¶ ªè£÷«õ´. ܪ𣿶  ªõ«õÁ ð£¬î õN«ò ðòE¶ ðK«ê£Fè º®». CPò GóèÀ°, ªî£ìèFL¼¶ º®¾õ¬ó Þ¼A¡ø ܬù¶ ð£¬îèO½ ðòEð¶ è®ùñ£ù ðEò¡Á. å¼ õNº¬ø êK ò£ùî£ â¡ð¬î àÁFð´¶õF Þ¶ å¼ ð®G¬ôò£°. ܶ å¼ ªõOf´ ªð® âQ, ñ£PèO¡ î«ð£¬îò ñF¹è¬÷ ªõOJì «õ´. 221
4.1.5 å¼ Gó¬ô à¼õ£°î å¼ CPò Gó¬ô ⿶õ¶ âO¶. âù«õ, å¼ CPò Gó½ è£ù «ð£L °Pº¬ø Üô¶ ð£¾ðì¬î ºîL õ¬ó «õ£. Üî¡ Ü®ð¬ìJ Gó¬ô ⿶õ¶ âO¶. Ýù£½, ï¬ìº¬ø õ£¬èJ ï£ è£µ IèªðKò CèèÀ° Þî õNº¬ø àîõ£¶. Üî°, º¬øð®ò£ù æ ܵ°º¬ø IèIè «î¬õò£°. å¼ GóL ãó£÷ñ£ù Mõóè¬÷ îó «õ®J¼°. Ýù£, Iè ªðKò ºòCJ ÞøA, Iè ¸µèñ£ù Mõóè¬÷ ðPªòô£ CFè ªî£ìAù£, à¬ñò£ù ðEJ èõù ªê½î º®ò£ñ «ð£M´. Þð®ðì Å G¬ôJ å¼õ, Iè ºAòñ£ù ðEè¬÷ ñ´ Üõ«ó 𣶠ªè£÷«õ´. CÁCÁ ð°Fè¬÷ Üõ¼° W ðE ¹Kðõ èOì M´Mì «õ´. å¼ ªðKò ðE¬ò ªê¶ º®ðî° Þ¶î£¡ êKò£ù º¬øò£°. åÁ¬ñJ¡ õL¬ñ¬ò ï£ñP«õ£. Þ¬î M÷ ° ðô è¬îè¬÷ ð®F¼A«ø£. â´¶è£ì£è, CPò °C è¬÷ å¡ø£è 讬õî£ à¬ìè º®ò£¶. Ýù£, Üõ¬ø îQîQ«ò HKªî´î£ Iè âOî£è ºP¶Mì º®». Þ õ£Á HK¶¬õ¶ ªõPªè£À ܵ°º¬ø ðô ÞìèO ðò¡ð´îð´Aø¶. å¼ ªðKò Gó¬ô ⿶õî° Þ«î õN º¬ø Iè¾ ðò¡îó îè. å¼ Gó¬ô à¼õ£°õî° º¡ð£è, Üî Cè¬ô CPò Cèè÷£è HK¶ ªè£÷«õ´. Üî¬èò CPò Cè èÀ° èìPòð´ M¬ìè¬÷ å¡Á«ê¶, ªðKò Cè ½° M¬ì裵 õNº¬ø¬ò ï£ ÜP¶ ¬õF¼è «õ ´. å¼ Gó¬ô à¼õ£°õF Þ¶ å¼ ð®G¬ô Ý°. å¼ ð£¾ðì Üô¶ «ð£L °Pº¬ø õ¬óò º®Aø Ü÷¾° CP õ¬ó, ªðKò Cè¬ô e´ e´ à¬ì¶ HK¶ ªè£«ì õó«õ´. ïñ° ãªèù«õ ðöèñ£ù «ð£L °Pº¬ø¬ò ðò¡ ð´F«ò, ꣹ Góè¬÷ å¼A¬í° î¼è º¬ø¬ò» â¿FMì º®». ð£¾ðìèO¡ Íôñ£è¾ Þî¬ù ê£Fè º®». âù«õ, ðô «ð£L °Pº¬øè¬÷» 𣾠ðì è¬÷» ðò¡ð´F, º¿ GóL¡ õNº¬ø ¸ð¬î» â¿F 222
Mì º®». Üî¡Hø°, Þõ¬ø èEªð£P Góô£è ñ£Áõ¶ Iè¾ âOò ðEò£AM´. å¼ Gó¬ô à¼õ£°õF Þ¶«ð£¡ø ܵ°º¬ø «ñL ¼¶ W ܵ°º¬ø (Top Down Approach) âùð´Aø¶. åªõ£¼ ð®G¬ôJ½, å«óªò£¼ CÁðEJ ñ´«ñ èõù ªê½¶ A«ø£. CPò CèèO¡ M¬ìè¬÷ å¼A¬í¶ bM¬ù ܬìõ¶ âð® â¡ð¬î èìPA«ø£. èEªð£P Gó è¬÷ ªð£Áîõ¬ó, Þî õNº¬ø¬ò ºîL ðò¡ð´¶ «ð£¶, ªêòº¬øèÀ«è (procedures) ºAò¶õ î¼A«ø£, Üî£õ¶, âð® ªêòð´¶õ¶ â¡Aø õNº¬øèÀ«è º Aò¶õ î¼A«ø£, îó¾èÀ° (data) Üô. Þ¶«õ èì¬ñ¹ Góô£è âùð´Aø¶. å¼ Cè¬ô CPò Cèè÷£è à¬ì °«ð£¶, ªêòº¬ø«ò£´ îó¾èÀ èíA â´¶ ªè£÷ ð´ñ£J¡, Üî¬ù ªð£¼«ï£° ܵ° º¬ø (Object Oriented Approach) â¡A«ø£. Góè¬÷ à¼õ£°õî° Þ¶«õ Iè¾ ã¹¬ìò ܵ°º¬ø âù èìPòð´÷¶. ªð£¼«ï£° ܵ°º¬øJ¡ Ü®ð¬ìJ à¼õ£èð´ Góè¬÷ ⿶ õî°, C++ ñÁ ü£õ£ «ð£¡ø èEªð£P ªñ£Nè àî¾A¡ øù. Þî ܵ°º¬øðP ï£ MKõ£è ð®è «ð£õ¶ Þ¬ô. «ñL¼¶ W ܵ°º¬øJ¡ ðò¡ð£¬ì æ â´¶ 裮¡ Íô M÷è Þ¼A«ø£. âîªõ£¼ Gó¬ô ⿶õ î° Þ«î õNº¬ø¬ò H¡ðÁè.
ËÁ âè¬÷ ãÁºè õK¬êJ å¼è¬ñè å¼ Gó ⿶è. Cè:
õNº¬ø: ®
ËÁ âè¬÷ ªðÁ a1, a2,....... ÝAòõP Þ¼¶è.
®
ÜõÁ eCÁ â¬í èìPè.
®
Þî â¬í ºî âµì¡ Þìñ£ø ªêè.
®
Þ«î«ð£ô, Þóì£ â, Í¡ø£ âEL¼¶ ªî£ìA 98 º¬ø (ã¡ â¡Á ªê£ô º®»ñ£?) «ñ èì Þó´ ð®G¬ôè¬÷ F¼ð F¼ð ªêò¾.
®
ËÁ âè¬÷»
F¬óJ è£ì¾ 223
«ñèì ð®G¬ôè¬÷ º¬øð®ò£ù èì¬÷è÷£è â¿F ð£«ð£.
«ð£L °Pº¬ø
Read 100 numbers and put them in an array, as a(1), a(2) etc. Do for i = 1 to 99 Find the smallest of a(i) to a(100) Let the smallest number be at the jth position Interchange a(i) and a(j) Output a(1), a(2) ... a(100)
W«ö»÷ CPò ðEè¬÷ ïñ£ ªê¶ º®è º®»ªñQ, å´ªñ£î Cè½° âOî£è b¾ è´Mì º®». u ËÁ âè¬÷ àkì£è ªðÁî½, ªõOJ´î½ u ªè£´èðì ⠪FJ eCÁ âí èìPî u Þó´ âè¬÷ Þì ñ£Áî Þî ðEè¬÷ âõ£Á ªê¶º®è «ð£A«ø£ â¡Aø Mõóè¬÷ ðP Þ«ð£¶ ï£ èõ¬ôðì «ð£õF¬ô. Ü´î èì ªêòô£èF Þ¬î èõQ«ð£. ޫ𣶠Þóì£ ð®G¬ôJ, «ñèì CÁðEè åªõ£¡ø£è â´¶ ªè£´ b¾è£í ºò«õ£. ËÁ âè¬÷ ð®î: For Count = 1 to 100 do Read a(count)
Þ«î õNº¬ø¬ò ËÁ âè¬÷ ªõOJì¾ ðò¡ð´îô£. a(1) ºî a(100) õ¬óJô£ù ËÁ âèO eCÁ â¬í èìPî: Let i = 1 Let position = 1 Let min = a(i) For n = i+1 to 100 do If a(n) < min then min = a(n) position = n Let j=position
224
a(i) ñÁ a(i)
Þó®¡ ñF¹è¬÷» Þì ñ£Áî:
Let temp = a(i) a(i) = a(j) a(j) = temp
Þ«è, Þõ£Á â¿Fù£ H¬öò£A «ð£°. a(i) = a(j) a(j) = a(i)
è£óí, ºî èì¬÷ G¬ø«õøðì¾ì«ù a(i)- ¡ ð¬öò ñF¹ Þöèð´Aø¶.
4.2 C-ªñ£N Góô£è - æ ÜPºè Góô£è¶° Iè¾ ðóõô£è ðò¡ð´îð´ ªêõ£ ° ªðø Góô£è ªñ£N C-ªñ£Nò£°. ºð¶ Ý´èÀ° º¡ù£ ã¯&¯ ªð ݾ ÃìF ªì¡Qv â.KC, Cªñ£N¬ò à¼õ£Aù£. ªî£ìèF, ÎQv Þòè º¬ø¬ñ «ò£´ Þ¬í¶ ðò¡ð´¶õîªèù õ®õ¬ñèðì «ð£F ½, C-ªñ£N å¼ ªð£¶ðò¡ ªñ£Nò£è FèAø¶. C-ªñ£N, ªêòFø¡ Iè¶; ªïA¾ ñ ªè£ì¶; ªðò¾Fø¡ (Portability) ªðø¶. å¼õ¬è èEªð£PJ Þò°õîè£è â¿î ðì ªñ¡ªð£¼¬÷, âMî ñ£øº Þ¡P«ò£ Üô¶ CPî÷¾ ñ£ø¶ì«ù£ «õÁõ¬è èEªð£PJ GÁM Þòè º®». Þî° ð¬ð«ò ªðò¾ Fø¡ â¡A«ø£. C-ªñ£N ð«õÁ ðì ªêò°Pè¬÷» (Operators) èì¬÷è¬÷» (Commands) ªè£´÷¶. Þòè º¬ø¬ñè (Operating Systems), Gó ªðòH è (Compilers), à¬ó ªêòLè (Text Processors), îó¾î÷ «ñô£ º¬ø¬ñè (Database Management Systems) «ð£¡ø ðô Mîñ£ù º¬ø¬ñ ªñ¡ªð£¼è¬÷ C-ªñ£NJ à¼õ£è º®». ܶ ñ´I¡P ðò¡ð£´ ªñ¡ªð£¼è¬÷ (Application Software) ༠õ£°õî° C-ªñ£N Iè¾ ãø¶. C-ªñ£Nò£ù¶ W裵 Ü®ð¬ì õ¬è àÁ¹è÷£ Ýù¶: ® ñ£PLè (Constants) ® °Pªðòè (Identifiers) ® GÁî°Pè (Punctuation) ® Cø¹ ªê£è (Keywords) 225
Þî àÁ¹è ܬù¬î» «ê¶ ªñ£îñ£è M¬ôè (tokens) â¡A«ø£. GóªðòHò£ù¶ «ñ½ CPò àÁ¹ è÷£è Ãø£è º®ò£î, Íô GóL¡ à¬óð°F«ò M¬ô âùð´Aø¶. number = number + 1;
â¡Â ìø â´¶ ªè£Àè. ÞF½÷ M¬ôè õ¼ ñ£Á: number -
°Pªðò (ñ£P)
=
-
ªêò°P
+
-
ªêò°P
1
-
ñ£PL
;
-
GÁî°P
Ýè, «ñèì ÃÁ, °Pªðò, ñ£PL, ªêò°P «ð£¡ø M¬ôèO¡ ªî£°ð£°. C-ªñ£N Góô£èF if, while, for «ð£¡ø ªê£è¬÷ Cø¹ ªê£è â¡A«ø£. Üõ¬ø °PHì ðò¡ð£´èÀ° ñ´«ñ ðò¡ð´F ªè£÷º®». Þî ð£ì F H¡ù£ õ¼ ð°FJ Cø¹ ªê£è¬÷ ðP ð® «ð£. 4.2.1 ñ£PLè (Constants) ñ£PL â¡ð¶ âõ¬èò£è Þ¼èô£. Üô¶ âõ¬è Üô£îî£è¾ ޼躮». æ âí£è«õ£, æ â¿î£ è«õ£, æ ⿶ êóñ£è«õ£ Þ¼èô£. ñ£PL¬ò å¼ GóL îó¾ ñFð£è ðò¡ð´Fªè£÷ º®». ñ£PL â¡Aø ªðò ¼«èð, å¼ º¬ø õ¬óòÁèðì ñF¬ð ñ£Pò¬ñè º®ò£¶. ñ£PL â¡ð¶ ñ£ø º®ò£î¶. âõ¬è îó¾ ªð¼ 𣽠âè÷£ Ýù¶. ðF¡ñ ¹O (decimal point) Þìªðø ô£. âõ¬è Üô£î îó¾ â¡ð¶ âè, ⿶è, Þì ªõOè, º¬ø¬ñ ãA¡ø «õªøî Cø¹ °Pè¬÷» ªè£ ®¼èô£. «õÁ õ¬èJ ªê£õªîQ ⿪î (alphanumeric) °Pf´è¬÷ ªè£®¼°. Þõ¬è îó¬õ ñF¹¼ (literal) âù¾ Ãøô£. ñ£PLè å¼ îóMù¬î», å¼ ñF¬ð » àíF GA¡øù. âõ¬è ñ£PL Íõ¬èð´: 226
®
ººâ ñ£PL (Integer Constant)
®
Iî¬õ ¹O ñ£PL (Floating - point constant)
®
°P»¼ ñ£PL (Character constant)
C-ªñ£NJ¡ Ü®ð¬ì îóMùè ðP Þð£ìF¡ ð°FJ ð®«ð£.
H
4.2.1.1 º¿â ñ£PL (Interger Constant) º¿â ñ£PL å¼ ðF¡ñ â (Ü®ªò 10) Ý°. ªî£¬è ñF¬ð °P° º¿ â Ý°. 0 ºî 9 õ¬óJ ô£ù Þôèè÷£ Ýù¶. å¼ º¿â ñ£PL 0x Üô¶ 0X âù ªî£ìAù£ ܶ å¼ ðFùÁñ (Ü®ªò 16) ñ£PL Ý°. 0 âù ªî£ìAù£ âñ (Ü®ªò 8) ñ£PL Ý°. Þõ£ªøô£ Þ¬ôªòQ ðF¡ñ â â¡«ø ªè£÷ ð´. 23, 36, 48
ÝAò¬õ ðF¡ñ (decimal)
0 x1C, 0XAB, 0x23 071,023, 035
ñ£PLè
ÝAò¬õ ðFùÁñ (hexadecimal) ñ£PLè
ÝAò¬õ âñ (octal) ñ£PLè
º¿â ñ£PLè¬÷ ªð£Áîõ¬ó èNî °P»ì¡ Þ¬ô ªòQ «ïñâ (Positive) Ýè«õ ªè£÷ð´. -18 â¡ð¶ ãèî° º¿â ñ£PL«ò. 2,345 â¡Â ñ£PL, 㹬ìò¶ Ü¡Á. è£óí Þî âE Cø¹ °P (裹O) Þì ªð Á÷¶. 4.2.1.2 Iî¬õ ¹O ñ£PL (Floating Point Constant) Iî¬õ ¹O ñ£PL â¡ð¶ å¼ °PJì ªñ â (signed Ý°. Þõ¬è â, º¿â ð°F, ðF¡ñ ¹O è, H¡ù ð°F, Ü´ªè ð°F ÝAòõ¬ø ªè£®¼ °. å¼ Iî¬õ ¹O ñ£PL¬ò °PH´«ð£¶, ðF¡ñ ¹O° º¬îò Þôèè (º¿â ð°F) Üô¶ ðF¡ñ ¹O° Ü´F¼° Þôèè (H¡ùð°F) Þô£ñ Þ¼ èô£. Ýù£ Þó´«ñ Þô£ñ Þ¼è º®ò£¶. Ü´ªè ð°F «êèð´ñ£J¡ ðF¡ñ ¹O¬ò M´Mìô£. Ü´ ªè ð°F, ðF¡ñ â ܬñH 10-Þ¡ Ü´°è¬÷ ªè£ ®¼°. real number)
227
ⴶ裴:
58.64 â¡ð¶ å¼ Iî¬õ ¹O ªñªò ñ£PL Ý°. Þî¬ù Ü´ªè º¬øJ Þõ£ªøô£ â¿îô£: 5.864E1 => 5.864 X 101 => 58.64 5864E-2 => 5864 X 10-2 => 58.64 0.5864e2 => 0.5864 X 102 => 58.64 E Üô¶ e â¡Â ⿶è, Iî¬õ ¹O ñ£PL Ü´ ªè (exponent) õ®M à÷¬î àí¶Aø¶.
4.2.1.3 °P»¼ ñ£PL (Character Constant) °P»¼ (Character) â¡ð¶ ÜèóõK¬ê ⿶è, âè, èEªð£P º¬ø¬ñ ¬èò£À Hø Cø¹ °Pf´è ÝAò õ¬ø à÷ìAò. «ñèì °P»¼èO¡ ªî£°F¬ò èEªð£P º¬ø¬ñJ¡ °P»¼ ªî£°F (Character Set) â¡A«ø£. ުFJ½÷ å¼ °P»¼¬õ å¬ø «ñ«è£°PèÀ° ܬñî£ Ü¶ å¼ °P»¼ ñ£PL¬ò °P°. C-ªñ£NJ ðò¡ð´îð´ °P»¼è¬÷ Í¡Á HK¾èO õ¬èð´îô£. ®
⿶ õ¬è °P»¼è: a,b,c,.........., z, A,B,C,...........,Z
®
âõ¬è °P»¼è: 0 ºî 9 õ¬ó
®
Cø¹ °P»¼è: +,-, * / % #
= , . ( ) [ ] ; : ?
ⴶ裴: 1, a, +, -
ÝAò¬õ 㹬ìò °P»¼ ñ£PLè Ý°.
å¼ °P»¼ ñ£PL¬ò °PHì Þó´ å¬ø «ñ«è£ °Pè¬÷ ðò¡ð´¶A«ø£. Üð®ªòQ, å¬ø «ñ«è£ °P¬ò âð® å¼ °P»¼ ñ£PLò£è °PH´õ¶? å¬ø «ñ«è£ °P¬ò Þó´ å¬ø «ñ«è£ °PèÀ° ܬñ¶ âù ⿶õ¶ ãÁ ªè£÷ð죶. å¬ø «ñ«è£ °P¬ò å¼ °P»¼ ñ£PLò£è °PHì M´ð´ õK¬ê¬ò (escape sequence) ðò¡ð´îô£. H¡ê£¾ «è£¬ì Ü´¶ æ ⿶ «êî °P»¼ «êñ£ùè¬÷ M´ð´ õK¬êè â¡A«ø£. \
â¡ð¶ 㹬ìò å¬ø «ñ«è£ °P»¼ ñ£PL. 228
Ü«î«ð£ô, M´ð´ õK¬ê¬ò ðò¡ð´F, Cô ÜCìMò ô£î °P»¼è¬÷ °PHìô£. ⴶ裴è: \a \b \f \r \n \0
ñE (Beep) H¡QìªõO (Back Space) ð®õ ªê½¶¬è (Form Feed) ªê½F F¼ð (Carriage Return) ¹Fò õK (New Line) Þ¡ñ °P»¼ (null character)
H¡ê£¾ «è£¬ì«ò å¼ °P»¼ ñ£PLò£è °PHì, Þó´ H¡ê£¾ «è£´è¬÷ (\\) ðò¡ð´î «õ´. 4.2.1.4 êó G¬ô»¼ (String literal) êó G¬ô»¼ Üô¶ êó ñ£PL â¡ð¶, º¬ø¬ñJ¡ °P»¼ ªî£°FJ½÷ °P»¼èO¡ êó¬î Þó¬ì «ñ«è£ °PèÀ° î¼õ. º¡Qòð£è (by default), Þ¡ñ °P»¼ (\0) êó G¬ô»¼M¡ ÞÁF °P»¼õ£è «ê¶ ªè£÷ð´. å¼ êó ñ£PLJ¡ ð°Fò£è Þó¬ì «ñ«è£ °P» Þìªðø «õ´ªñQ M´ð´ M¬ê¬ò (\) ðò¡ð´î «õ´. â¡ð¶ 㹬ìò êó G¬ô»¼. Þî êó G¬ô»¼M à÷ ⿶èO¡ êKò£ù âE¬è, ÞÁFJ à÷ Þ¡ñ °P»¼¬õ» «ê¶ 6 Ý°. Þ¡ñ °P»¼ èE ¹ô ð죶. G¬ùõèF Þî êó¬î Þ¼F¬õè ÝÁ ¬ð´è «î¬õ. â¡ø£½ ÞêóF¡ c÷ (length) â¡ð¶ 5 ⿶è«÷ Ý°. hello
4.2.2. °Pªðòè (Identifiers) å¼ GóL à÷ ñ£Pè (Variables), ªêòÃÁè (functions), îóMùè (data types), C¬ìè (labels) ÝAòõ¬ø °P° ªðòè °Pªðòè âùð´A¡øù. å¼ ñ£PJ¡ ªðò ⿶ è, âè¬÷ ªè£®¼èô£. Hø °P»¼è Þìªðø Ã죶. ñ£PJ¡ ªðòK Ü®WÁ (underscore) ñ´ Þì ªðøô£. °¬øî Ü÷¾ æªó¿¶. ÜFè Ü÷õ£è 32 ⿶è Þìªðø ô£. ºî ⿶, Üèó õK¬ê â¿î£è (alphabet) Þ¼è «õ´. âè Þìªðø Ã죶. 㹬ìò ñ£P ªðòè: 229
x length x_value y_value a123
C-ªñ£NJ¡ Cø¹ ªê£è¬÷ (èì¬÷ ªê£è) °P ªðòè÷£è ðò¡ð´î Ã죶. W裵 ªðòè ñ£PJ¡ ªðòè÷£è ãè Þòô£î¬õ. Üîè£ù è£óí îóð´÷¶. 123 ºî °P»¼ âí£°. 1abc ºî °P»¼ âí£°. x value ªðòK ÞìªõO (space) à÷¶. x &y ãèMòô£î Cø¹ °P»¼ (&) Þì ªðÁ÷¶. for C-ªñ£NJ¡ Cø¹ ªê£ 4.2.3 Ü®ð¬ì îóMùè (Fundamental Data Types) Góô£èF ÜFèñ£è «ðêð´ ªê£èÀ îó¾ â¡ð ¶ å¡Á. èEªð£P° àkì£è îóð´ ªêòô£è ªðø£î îèõ«ô, îó¾ âù õ¬óòÁèð´Aø¶. C-ªñ£NJ îó¾ â¡ð¶ ð«õÁ Þùñ£è õ¬èð´îð´÷¶. âõ¬è îó¾ è int, float, char âù Í¡Á Þùè÷£è HKèð´÷ù. Þ¬õ Ü®ð¬ì îóMùè Üô¶ ºîQ¬ô îóMùè â¡Á ܬöèð´A¡øù. C-ªñ£NJ Þ¬õ º¡ õ¬óòÁèðì¬õ (pre-defined). Þõ¬ø C-GóªðòH (C-Compiler) ܬìò£÷ è´ªè£À; ÞõP¡ ñF¹è¬÷ ªêòð£´èO ðò¡ ð´F ªè£À. âù«õ ÞîóMùè¬÷ Íô îóMùè (primitive data types) â¡Á ܬöð¶´. «ñèì îóMùèO ñ£Pè¬÷ ÜPM° º¬ø: int x; float f; char ch;
ÞõÁ int â¡ð¶ º¿â¬í» (Interger), float â¡ð¶ ªñ â¬í», char â¡ð¶ å¬ø °P»¼¬õ» °PA¡øù.
(real)
230
ⴶ裴:
1 º¿ â (int) 1.0 ªñªò (float) 1 °P»¼ ñ£PL (char constant) 1 êó G¬ô»¼ (string literal) C-ªñ£NJ êó (string) âù îQò£ù îóMù Þ¬ô. âQ êó G¬ô»¼¾ì¡ ªî£ì¹¬ìò îóMù char * (°P»¼ ²´- character pointer) Ý°. Þ¬î ðPò M÷è, Þð£ìF ÜEè (Arrays) ðPò ð°FJ îóð´÷¶. ñF¬ð G¬ùõèF Þ¼F¬õè 2 ¬ð´è «î¬õ. float ñF¹° 4 ¬ð´èÀ, char ñF¹° 1 ¬ð´ «î¬õ. int
4.2.3.1 î¼Mèðì îóMùè (Derived Data Types) long, double, unsigned ñÁ ÜEè(Arrays), ²´è(Pointers) ÝA ò¬õ Íô îóMùèOL¼¶ î¼Mèðì îóMùè Ý°. long â¡ð¶ int L¼¶, double â¡ð¶ float- L¼¶ î¼Mèð ì¬õ. long int ñ£P¬ò ÜPM° º¬ø: long int i ;
Üô¶ long i;
Þù ñF¬ð G¬ùõèF Þ¼î, 4 ¬ð´è «î¬õ. ªñªòè¬÷ (real ) Iè¾ ¶Lòñ£è ¬èò£÷ «õ´ªñQ double Þù¬î ðò¡ð´î «õ´. Þ¶ G¬ùõèF 8 ¬ð´ è¬÷ â´¶ªè£À. long
â¡ð¶ int Þù¬î «ð£ô«õ 2 ¬ð´è¬÷«ò â´¶ ªè£À. Ýù£ ÜF½÷ ܬù¶ H´èÀ ñF H¬ù Þ¼î ðò¡ð´F ªè£÷ð´. Ýù£ ê£î£óí int ñFH, àòñF¹ H (Þì¶ æó H) «ïñ (positive) Üô¶ âFñ (negative) â â¡ð¬î °P° °P (sign) H Ý°. int- ¡ ñF¹ - 32768 ºî +32767 õ¬ó. unsigned int- ¡ ñF¹ 0 ºî 65535 õ¬ó. Þ¶«ð£ô«õ unsigned long, unsigned char ÝAò îó MùèÀ à÷ù. unsigned int
231
4.2.3.2. ²´ ñ£Pè (Pointer Variables) C-ªñ£NJ¡ ñ£Pè¬÷ ê£î£óí ñ£Pè (ordinary variables), ²´ ñ£Pè (pointer variables) âù õ¬èð´îô£. ê£î£óí ñ£P ܶ ªî£ì¹¬ìò ÞùF¡ ñF¹è¬÷ â´¶ªè£À. ⴶ裴: int x;
Þ«è, x â¡ð¶, int ÞùF å¼ ê£î£óí ñ£P; º¿ â¬í Üî¡ ñFð£è ãÁªè£À. x = 10;
²´ ñ£P ÜPMèð´ º¬ø: int *y ;
«ñèì ÜPMH y â¡ð¶ ²´ ñ£P. Þî¡ Þù º¿â ²´ (int *). ²´ ñ£P â«ð£¶ å¼ ºèõK¬ò«ò ñFð£è ã°. ªð£¶õ£è, åªõ£¼ ñ£P», ܶ ê£î Þù¶° ãð, G¬ù õèF ÞìH®¶ ªè£Aø¶. ºî¡¬ñ G¬ùõèF½÷ å «õ£ Þ¼Hì¬î» Üî¡ ºèõK Íô Üµè º®». «ñèì ⴶ裮 x â¡ð¶ ê£î£óí ñ£P, y â¡ð¶ ²´ ñ£P. x â¡ð¶ å¼ ê£î£óí º¿â, y â¡ð¶ å¼ º¿ â µè£ù ²´. âù«õ, x Þ¡ ºèõK¬ò y - Þ¼î º®». y = &x;
²´è¬÷ ªð£Áîõ¬ó Þó«ì Þó´ ªêò°Pè«÷ à÷ù. å¡Á ºèõK ²´ (address of -&) ªêò°P. ñªø£¡Á à«ï£° (indirection-*) ªêò°P. Þó´«ñ å¼ñ ªêò°Pè (unary operators). å«óªò£¼ ñ£PJ¡ e¶ ñ´«ñ ªêòð´ð¬õ. å¼ñ ªêò°Pè ðP Ü´î ð°FJ ð®«ð£. x å¼ º¿â â¡ðî£, G¬ùõèF Þó´ ¬ð´è¬÷ â´¶ ªè£À. Üî¡ ºèõKè¬÷ W«ö à÷õ£Á ðìñ£è à¼õAèô£: 948 949
X
232
¡ ºèõK 948 â¡ð¬î ðìF è£è. ºî¡¬ñ G¬ù õèF åªõ£¼ ¬ð¬ì» Üî¡ ºèõK Íô Üµè º® ». G¬ùõèF å¼ ñ£P Þ¼° ÞìF¡ ºèõK¬ò ÜPò ºèõK ²´ (address of - &) ªêò°P¬ò ðò¡ð´î «õ´. x-
y = &x;
â¡ø ÃP, x- ¡ ºèõK y â¡Â ²´ ñ£PJ ðF¾ ªêò ð´÷¶. y ²´ ñ£P â¡ðî£, ܶ ºèõK ñF¬ð ñ´«ñ ã° â¡ðîP«õ£. y, x- ä ²´Aø¶ âù ªê£ôô£. Þî¬ù Þõ£Á à¼õAèô£: 948
Y
949
X
¡ ñF¹ 10 â¡è. x- ¡ ñF¬ð y â¡Â ²´ ñ£PJ¡ Íôñ£è (ãªùQ, y, x - ä ²´Aø¶ Üôõ£?) ªðø º®». Üî°, à«ï£° (indirection - *) ªêò°P¬ò ðò¡ð´î «õ ´. Üî£õ¶, *y â¡ð¶, y- Ý ²ìð´ ºèõKJ Þ¼F ¬õèð´÷ ñF¬ð ªðÁî¼. âù«õ, x- ¡ ñF¹ 10, ²´ñ£P y, x -ä ²´Aø¶ âQ, * y - ¡ ñF¹ 10 Ý°. x-
«ñèì ⴶ裮 cè G¬ùM ªè£÷ «õ® ò¬õ: y, x *y, x
â¡ø ñ£PJ¡ ºèõK¬ò ªè£´÷¶ (&x) â¡ø ñ£PJ¡ ñF¬ð ªè£´÷¶ (x)
ºèõK ²´ (address of - &), à«ï£° (indirection -*) ªêò°P è Þó´«ñ å¼ñ ªêò°Pè â¡ð¬î G¬ùM ªè£è. 4.2.4 ªêò°Pè (Operators) C-ªñ£N õ÷ñ£ù ªêò°Pè¬÷ ªè£´÷¶. ªêò°P è ªêòè¬÷ Gè¶A¡øù. G¬ø«õøðì «õ®ò å¼ ªêòð£¬ì (operaton) °PA¡ø å¼ °Pf´ (symbol) âù ªêò °P¬ò (operator) õ¬óòÁèô£. ⡪ù¡ù ðEè¬÷ ªêò «õ´, Üõ¬ø âî õK¬êJ ªêò«õ´ â¡ð¬î 233
ªêò°Pè èEªð£P° àí¶A¡øù. ªêòð£´è G¬ø «õøð´A¡ø õK¬êº¬ø º¡ÂK¬ñ õK¬ê (order of precedence) â¡Á ܬöèð´A¡øù. ð®ñó¹ (hierarchy) â¡Á ܬö èð´. ªêòð£´è G¬ø«õøð´ F¬êºè (ÞìI¼¶ õô Üô¶ õôI¼¶ Þì`) ªî£ì¹Áî (associatirity), âù ð´Aø¶. C-ªñ£NJ Íõ¬è ªêò°Pè à÷ù: ®
å¼ñ ªêò°Pè (Unary operators)
®
Þ¼ñ ªêò°Pè (Binary operators)
®
ºñ ªêò°P (Ternary operators)
4.2.4.1 å¼ñ ªêò°Pè (Unary operators) å¼ñ ªêò°Pè º¡ÂK¬ñ õK¬êJ ºîG¬ôJ à÷ù. Þ¬õ å«óªò£¼ ªêò«ôH¬ò (operand) ªè£´÷ù. èEH´ F¬êºè (associativity) õôI¼¶ Þìñ£°. å¼ñ ªêò°PèO¡ ð®ò¬ô» ÜõP¡ ðEè¬÷» Üìõ¬í 4.1- è£è: Üìõ¬í 4.1 å¼ñ ªêò°Pè
°Pf´
ªêò𣮡 õ¬è
++
I°¹ (increment)
--
°¬ø¹ (decrement)
*
à«ï£è(indirection)
&
ºèõK²ì (address of)
!
âFñ¬ø (logical NOT)
F¬êºè õôI¼¶ Þì
I°¹, °¬ø¹ ªêò°Pè º¬ø«ò å¼ ñ£PJ¡ î«ð£ ¬îò ñFH å¡Á Ãì¾, å¡Á °¬øè¾ ðò¡ð´î ð´A¡øù. å¼ñ ªêò°Pè ªð£¶õ£è ñ£P° º¡ð£è Þì ªðÁA¡øù. â´¶è£ì£è, x â¡Â int ñ£PJ¡ ºèõK¬ò ÜPò, &x âù ðò¡ð´¶A«ø£. Ýù£, I°¹, °¬ø¹ ªêò °Pè¬÷ ªð£Áîõ¬ó ªêò«ôHJ¡ (ñ£PJ¡) º¡ù£ Ü ô¶ H¡ù£ Þì ªðøº®». 234
âù«õ, I°¹, °¬øH Þó´ õ®õè à÷ù: ®
H¡ªù£´ (postfix) I°¹ Üô¶ °¬ø¹
®
º¡ªù£´ (prefix) I°¹ Üô¶ °¬ø¹
ÝAò å¼ñ ªêò°Pè ªêò«ôHJ¡ (ñ£PJ¡) º¡ù£ ÞìªðÁñ£J¡, º¬ø«ò º¡ªù£´ I°¹ Üô¶ º¡ªù£´ °¬ø¹ â¡Á ܬöèð´A¡øù. ܬõ ªêò «ôH¬ò Ü´¶ ÞìªðÁñ£J¡, º¬ø«ò H¡ªù£´ I°¹ Üô¶ H¡ªù£´ °¬ø¹ â¡Á ܬöèð´A¡øù. Þõ P¡ ðò¡ð£´èðP Þð£ìF¡ Hð°FJ ð®«ð£. ++, --
4.2.4.2 Þ¼ñ ªêò°Pè Binary Operators) èíW´ ªêò°Pè (Arithmatic operators)
+, -, *, /, % ÝAò èíW´ ªêò°Pè Þó´ ªêò «ô Hè e¶ ªêòð´ â¡ðî£ Þ¬õ Þ¼ñ ªêò°Pè â¡Á ܬöèð´A¡øù. èíW´ ªêò°PèO¡ ð®ò¬ô Üìõ¬í 4.2- è£è. ܬù¶ èíW´ ªêò°PèO¡ F¬êºè ÞìI¼¶ õô Ý°. Üìõ¬í 4.2 èíW´ ªêò°Pè
°Pf´
ªêò𣴠õ¬è
+
Ãì (Addition)
-
èNî (Subtraction)
*
ªð¼è (Multiplication)
/
õ°î (Division)
%
õ°eF (Modulus)
F¬êºè
ÞìI¼¶ õô
èíW´ ªêò°Pè¬÷ º¿â (int) ñÁ Iî¬õ (float) ñF¹À° ðò¡ð´î º®». õ°eF (modulus) ªêò°P º¿ â ñF¹èO ñ´«ñ ªêòð´. õ°îH¡ õ¼ eF¬ò M¬ìò£è î¼. º¿â õ°îL¡ ß¾ º¿âí£è«õ Þ¼ °. H¡ù ð°F ¹øèEèð´. 235
ⴶ裴:
5 / 2 = 2 (H¡ù ð°F ¹øèEèð´÷¶) 5 % 2 = 1 (õ°îH¡ õ¼ eF) º¿âè¬÷ ªð£Áîõ¬ó, õ°î ªêò°P, õ°îH¡ õ¼ ßM¬ù M¬ìò£è î¼. õ°eF ªêò°P, õ°îH¡ õ¼ eF¬ò M¬ìò£è î¼. õ°î, ªð¼è, õ°eF ªêò °Pè, Ãì ñÁ èNî ªêò°Pè¬÷ 裮½ àò º¡ÂK¬ñ ªðø¬õ. * °Pf´, ªð¼è½è£ù Þ¼ñ ªêò°Pò£è ¾, ²´ ñ£PèO¡ å¼ñ ªêò°Pò£è¾ (à « ï £ è - indirection) ðò¡ð´îð´Aø¶. * °Pf´ ðò¡ ð´îð´ Åö¬ô ªð£Á¶ Üî¡ ªêò𣴠ܬñ ».
°P¹:
4.2.4.3 åd´ ªêò°Pè (Relational Operators) åd´ Üô¶ ÌLò¡ ªêò°Pè â«ð£¶«ñ Þó´ ªêò«ôHèO¡ e¶ ªêòð´õî£ Ü¬õ Þ¼ñ ªêò°P è÷£è«õ è¼îð´A¡øù. å«óªò£¼ MFMô° ! â¡Â ÌL ò¡ ªêò°P (âFñ¬ø ªêò°P â¡Á ܬöèð´) å¼ñ ªêò°P Ý°. Üî£õ¶, å«óªò£¼ ªêò«ôHJ¡ e«î ªêò ð´. Üìõ¬í 4.3- åd´ ªêò°PèO¡ ð®ò¬ô è£è. ܬù¶ åd´ ªêò°PèO¡ F¬êºè ÞìI¼¶ õôñ£°. Üî£õ¶, å¡Á° «ñðì ªêò°Pè å¼ èí W´ «è£¬õJ ÞìªðP¼°ñ£J¡ ÞìI¼¶ õôñ£è å ªõ£¡ø£è ªêòð´îð´. Üìõ¬í 4.3 åd´ ªêò°Pè
°Pf´
ªêò𣴠õ¬è
== < > <=
Gèó£ù (equla to) Mì CPò (less than) Mì ªðKò (greater than) Mì CPò Üô¶ Gèó£ù (less than or equal to)
>= !=
Mì ªðKò Üô¶ Gèó£ù
(greater than or equal to) Gè Üô£î (not equal to)
236
F¬êºè
ÞìI¼¶ õô
åd´ ªêò°Pè Þó´ ñF¹è¬÷ (àÁ¹è¬÷) å H´ M¬ì ÜPò ðò¡ð´îð´A¡øù. M¬ì, êK (True), îõÁ (False) ÝAò Þó® å¡ø£è Þ¼°. &&, || ÝAò î¼è ªêò°Pè, Þó´ Üô¶ Üî° «ñðì åd´ «è£¬õ è¬÷ Þ¬íè ðò¡ð´îð´A¡øù. && ªêò°P, î¼è à (logical AND) ªêò°P Ý°. Þî ªêò°P,  Þ¬í A¡ø Þó´ åd´ «è£¬õèÀ«ñ êK âù M¬ì î¼ñ£J¡ Þ¶¾ êK â¡ø M¬ì¬ò î¼. Þó® å¡Á Üô¶ Þó´«ñ îõÁ âù M¬ì î¼ñ£J¡ Þ¶¾ îõÁ âù M¬ì î¼. î¼è Üô¶ (logical OR) ªêò°P ÞFL¼¶ ñ£Áðì¶.  Þ¬íA¡ø Þó´ åd´ «è£¬õèÀ«ñ îõÁ âù M¬ì î¼ñ£J¡ Þ¶¾ îõÁ â¡ø M¬ì î¼. Þó® å¡Á Üô¶ Þó´«ñ êK â¡Á M¬ì î¼ñ£J¡ Þ¶¾ êK â¡ø M¬ìî¼. åd´ ªêò°Pè, èíW´ ªêò°Pè¬÷ 裮½ °¬øõ£ù º¡ÂK¬ñ ªè£ì¬õ. &&, || ÝAò¬õ å d´ ªêò°Pè¬÷ Mì¾ º¡ÂK¬ñ °¬øî¬õ. ⴶ裴:
â¡Â «è£¬õ â«ð£¶«ñ êK â¡ø M¬ì ¬ò«ò î¼. Þî «è£¬õ ÞìI¼¶ õôñ£è ñFHìð´. Þó´ åd´ «è£¬õè, î¼è && ªêò°Pò£ Þ¬íè ð´÷ù. && ªêò°P º¿«è£¬õ¬ò» ñFH´õî° º¡ ð£è, Þó´ åd´ «è£¬õèÀ Ü´î´¶ ñFHìð´. Þ¡«ù£ ⴶ裬ì ð£«ð£. (10<15) && (14<23)
(10<15) || (14<23) â¡Â «è£¬õ» êK â¡ø M¬ì¬ò«ò î¼. î¼è || ªêò°P, Þó´ åd´ «è£¬õè¬÷ Þ¬í
A¡øù. î¼è Üô¶ MFJ¡ð®, Þó´ åd´ «è£¬õ èÀ«ñ êK âQ, å´ªñ£î «è£¬õ» êK . Þî â´ ¶è£® ºî åd´ «è£¬õ êK â¡ðî£, Þóì£õ¶ åd´ «è£¬õ ñFHìð죶. Þî 輶¼¾° ªðò °Á° ²Á ñFd´ (Short Circuit Evaluation) Ý°. î¼è à (logical AND-&&) ªêòð£®, Þó´ «è£¬õ èÀ ºî «è£¬õ îõÁ âQ, å´ªñ£î «è£¬õ»«ñ îõÁ Ý°. âù«õ Þóì£õ¶ «è£¬õ ñFHìð죶.
237
4.2.4.4 ñFH¼¶ ªêò°Pè (Assignment Operators) ñFH¼¶ ªêò°P (=), õôðèº÷ ªêò«ôHJ¡ ñF¬ð, Þìðè ªêò«ôHJ Þ¼¶. C-ªñ£NJ, +=, -=, *=, /=, %= ÝAò èíA´-ñFH¼¶ ªêò°PèÀ à÷ù. i=i+1;
â¡Â ìø «ï£°è. ÞF, i â¡Â ñ£PJ¡ º¬îò ñFH å¡Á I°èð´, I°èðì ñF¹, i- ¡ ¹Fò ñF ð£è Þ¼îð´Aø¶. Þî ÃP¬ù, èíA´-ñFH¼¶ ªêò°PJ¡ àîM»ì¡, i +=1 ;
â¡Á â¿îô£. «ñèì ÃP, i- ¡ ñFH å¡Á I°èð´ ¹Fò ñF¬ð i- J«ô«ò Þ¼¶õî° += ªêò°P ðò¡ð´îð ´÷¶. Þ«î«ð£ô, i *= 2 ; â¡Â ÃP, i - ¡ º¬îò ñF¹ 2-Ý ªð¼èð´, ¹Fò ñF¹ i-J«ô«ò Þ¼îð´Aø¶. ܬù¶ ªêò°PèO½, ñFH¼¶ ªêò°Pè«÷ Iè °¬øî º¡ÂK¬ñ ªè£ì¬õ. 4.2.4.5 ñFHì õK¬ê (The order of evaluation) ªêò°PèO¡ º¡ÂK¬ñ ðP ãªèù«õ Mõ£F¶ «÷£. ªêò°PèO¡ º¡ÂK¬ñ Ü®ð¬ìJ å¼ «è£¬õ¬ò âõ£Á ñFH´õ¶ âù ð£«ð£. âô£õÁ° º¡ð£è, H¬ø ܬ칰PèÀ° à÷ «è£¬õ ñFHìðì «õ ´. 5 * 2 + 8 + 3 ( 3 - 2 ) * 5 â¡Â «è£¬õ¬ò â´¶ªè£«õ£. Þ¶, W«ö à÷õ£Á ñFHìð´: 5 * 2 + 8 + 1 * 5 (ܬ칰PèÀ° Þ¼î «è£¬õ ºîL ñFHìð´÷¶) 10 + 8 + 5 23
(ªð¼è, Ãì¬ôMì º¡ÂK¬ñ ªðÁAø¶) (Ãì º®îH¡ «è£¬õJ¡ ñF¹ 23) 238
4.2.4.6 ºñ ªêò°P
Ternary Operator)
C-ªñ£NJ å¼ ºñ ªêò°P à÷¶. Þ¶ªõ£¼ Gðî ¬ù ªêò°P (Conditional Operator) Ý°. Þ ªêò°P° ðò¡ ð´ °Pf´ ? : Ý°. Þ¶ Í¡Á ªêò«ôHè¬÷ ªè£® ¼°. Gðî¬ù ªêò°PJ¡ èì¬÷ ܬñ¹: (Gðî¬ù «è£¬õ) ? «è£¬õ1 : «è£¬õ2 ; Gðî¬ù «è£¬õ êK âQ, «è£¬õ1 ñFHìð´. Gðî¬ù «è£¬õ îõÁ âQ, «è£¬õ2 ñFHìð´. ⴶ裴: j = ( i < 0 ) ? -i : i;
â¡ø èì¬÷J Gðî¬ù ªêò°PJ¡ ðò¡ð£¬ì «ï£ °è. i-¡ ºÁ ñF¬ð (absolute value) j- J Þ¼¶õ«î Þî¡ «ï£è. i- ¡ ñF¹ 0-äMì CPªîQ, j-J -i Þ¼îð´. i- J¡ ñF¹ 0-¾° Gè Üô¶ 0-äMì ªðKªîQ j- i- Þ¼îð´. 4.2.5 GÁî°PèÀ Cø¹ ªê£èÀ (Punctuations and Keywords):
C-ªñ£NJ ðò¡ð´îð´ GÁî °PèÀ ÜõP¡ ðò¡èÀ ð®òLìð´A¡øù: [ ] - Ü EJ ²´ â¬í [index] ° P è ð ò ¡ ð ´ A ø ¶ [ ê¶óܬ칰P ]. { } - ªêòÃP¡ àìð°F° õóHì ðò¡ð´Aø¶ {ªïO¾ ܬ칰P }. ( ) - ªêòìø °PHì¾, àÁ¹è¬÷ °¿õ£è¾, «è£¬õè¬÷ °¿õ£è¾ ðò¡ð´Aø¶ (ê£î£óí ܬ칰Pè). < > - º¡-ªêòL (preprocessor) ÃP, î¬ô¹ «è£H¡ ªðò¬ó àð´î ðò¡ð´Aø¶ <«è£í ܬ칰Pè > -êó G¬ô»¼è¬÷ °PHì ðò¡ð´Aø¶ (Þó¬ì «ñ«è£). - å¬ø °P»¼ ñ£PLè¬÷ °PHì ðò¡ð´Aø¶ (å¬ø «ñ«è£). 239
/* */- °P¹¬ó (Comment) ܬñðî°. ; - å¼ ÃP¡ º®¾°P (ܬó¹O) , - àÁ¹è¬÷ HK¶è£ì ðò¡ð´Aø¶ (裹O) ªõÁ, ªõ ÞìªõOè - GóL¡ ð®ªðO¬ñ¬ò (read ability) «ñð´î (Blank, white spaces) ðò¡ð´A¡øù. ºAò Cø¹ ªê£èO¡ ð®ò W«ö îóð´÷¶. å¼ GóL ñ£PèO¡ ªðòè÷£è Þõ¬ø ðò¡ð´î Ã죶. auto break else if switch while
case float
char for
continue int
default return
do static
Cø¹ ªê£è, ð®òL âõ£Á à÷ù«õ£ Üõ£«ø ¶Lòñ£è îóðì«õ´. â´¶è£ì£è, auto â¡ð¶î£¡ Cø¹ ªê£. Auto, AUTO ÝAò¬õ Cø¹ ªê£è Üô. 4.3 ñ£FK C-Gó M¼¹A¡ø M¬ì¬ò ªðÁõîè£è, ªî£ìCò£è ªêò ð´î «õ®ò ݬíèO¡ ªî£°F«ò Gó (Program) âùð´ Aø¶. å¼ ªî£°F«ò ªðKò GóL¡ CPò ðE¬ò ªê¶ º® ðîè£è ðò¡ð´îð´Aø å¼ Gó«ô ªêòÃÁ (Function) Ý°. C- Góè Iè CPò¬õò£è¾ Þ¼èô£. C-Góè ªêò ÃÁè÷£ Ýù¬õ. ªêòÃÁ Þô£ñ C-ªñ£NJ å¼ Gó¬ô â¿î º®ò£¶. ªêòÃÁ, º¡«ð õ¬óòÁèð´ C-ªñ£NJ àO¬íèðìî£è Þ¼èô£ Üô¶ ðòù ñ õ¬ó òÁî£è Þ¼èô£. å¼ C - GóL¡ °Pº¬ø¬ò W«ö è£è:
#include <stdio.h> main() { printf(Hello World); } C-ªñ£NJ å¼ ñ£FK Gó
240
Þî Gó¬ô ÞòAù£, Hello world â¡Â ªêF¬ò F¬ó J 裴. C-GóL, main() âù õ¬óòÁèð´ å¼ ªêòÃÁ main() - ðòù õ¬óòÁ° ªêò èì£òñ£è Þ¼è «õ´. Ãø£°. Þîè£ù èì¬÷ ªî£°F¬ò ðòù â¿î«õ´. å¼ C-Gó¬ô Þò°«ð£¶, è´ð£´ main() ªêò½ÃÁ° ñ£ øð´Aø¶. Þî ªêòÃÁ, GóL¡ ¸¬ö¾ õ£J âùð´A ø¶. «ñ«ô»÷ GóL Þó´ ªêòÃÁè à÷ù. ÜF å¡Á, GóL¡ ¸¬ö¾ õ£Jô£è M÷° main( ) - ðòù õ¬ó òÁî¶. Þ¡ªù£¡Á, printf() - º¡ õ¬óòÁèðì¶. Ü®ð¬ì ªõOf® (F¬ó Üô¶ F¬óòè) GóL¡ M¬ì¬ò 裴 õî° ðò¡ð´îð´÷¶. ªêòÃÁ â¡ð¬î àíFì H¬ø ܬ칰Pè ( ) ðò¡ð´îð´÷ù. Þó´ ªêò ÃÁèÀ main( ), ܬö° ªêòÃø£°. printf() ܬöèð´ ªêòÃø£°. Hello world Gó «î¬õò£ù M÷èèÀì¡ W«ö îóð´÷¶. #include <stdio.h> /* <= preprocessor statement */ main() /* <= function header statement */ /* function definition starts <= comment statement */ { function call statement function body
printf(Hello World); }
GóL¡ ºîõK #include <stdio.h> â¡ð¶ º¡-ªêòL (PreproÃø£°. #include â¡ð¶ º¡-ªêòL ªïP»Áî Ý°. º¡ -ªêòL â¡ð¶, Gó¬ô ªñ£N ªðò° «ð£¶ (compile time) Íô °Pº¬ø¬ò MKªî¿¶ å¼ ªñ¡ªð£¼ Góô£°. # include <stdio.h> â¡Â ÃÁ, stdio.h (standard input and output header file) â¡Â «è£H¡ à÷ìè¬î GóL main() ªêòÃP¡ º¡ð£è «ê¶ ªè£Aø¶. printf(), scanf() «ð£¡ø º¡-õ¬óò Áèðì àk´, ªõOf´ ªêòÃÁèO¡ ÜPM¹ ÃÁ è«÷ stdio.h «è£H Þì ªðÁ÷ù. cessor)
241
printf() , scanf()
ÝAò ªêòÃÁèO¡ ÜPM¹è,
int printf(char *, ...); int scanf (char *, ...) ;
â¡Á ܬñF¼°. «ñèì ªêòÃÁè åªõ£¡Á ªõ«õÁ âE ¬èJ Ü÷¹¼è¬÷ (variable numbers of parameters) ãè º®» â¡ð¬î º¹Oè(...) àí¶A¡øù. ºîô£õî£è ÞìªðÁ Ü÷¹¼ å¼ êóñ£è«õ (string) Þ¼°. Ü÷¹¼ â¡ð¶, ܬö èð´ ªêòÃP° õöèð´ îó¾ Üô¶ îèõ¬ô °P°. ªð£¶õ£è, ªêòÃÁèÀ° Þî¬èò Ü÷¹¼è Cô ÜÂððìô£ Üô¶ ÜÂððì£ñ½ Þ¼èô£. å¡Á° «ñðì Ü÷¹¼è ÞìªðÁ«ð£¶ ܬõ, ªêòÃP¡ ªðò¬ó Ü´¶, ܬ칰PèÀ° 裹OJ´ å¡ø¡H¡ å¡ ø£è °PHìð´A¡øù. «ñ«ô»÷ GóL printf( ) ªêòÃP å«óªò£¼ Ü÷¹¼ ñ´«ñ ÞìªðÁ÷¶. ܶ, F¬óòèF è£ìðì«õ®ò å¼ êóñ£°. ºî Ü÷¹¼õ£è Þìªð Á÷ char * â¡Â (êó Þù) Ü÷¹¼, °P»¼ ²´ (Character pointer) â¡Á ܬöèð´Aø¶. Þ¬îðP Hø° ð®«ð£. C-ªñ£N GóªðòH (Compiler), º¡-õ¬óòÁèðì ªêò ÃÁè¬÷ ܬìò£÷ è´ªè£À. è£óí, GóL ï£ «ê ¶ªè£´÷ î¬ô¹ «è£¹èO (Header Files) ܬõ º¬ø ð® ÜPMèð´÷ù. î¬ô¹ «è£¹èO¡ ðò¡ð£®¬ù W«ö»÷ GóL è£è: #include <stdio.h> #include main() { clrscr(); printf(hello); }
242
Þî GóL ðò¡ð´îð´÷ clrscr() â¡Â º¡-õ¬óò Áèðì ªêòÃP¡ ñ£FK õ®õ (ÜPM¹) conio.h â¡Â î¬ô¹ «è£H ÞìªðÁ÷¶. âù«õ, Ü«è£H¬ù Þî GóL Þ¬í¶ªè£´«÷£. # include â¡Â ÃÁ Þî GóL Þ¬íèðìM¬ôªòQ, C-ªñ£N Gó ªðòH (Compiler), clrscr() ªêòÃP¬ù Góô«ó õ¬óòÁ¶÷£ó£ âù ð£°. Üð® Þ¬ôªòQ, H¬ö âù ÜPM°. 4.3.1 ÃÁè (Statements) C - GóL¡ åªõ£¼ õKèÀ å¼ Ãø£è (Statement) è¼î ð´A¡øù. ªð£¶õ£è, ° õ¬èò£ù ÃÁè à÷ù. ܬõ ® º¡-ªêòL ÃÁè (Preprocessor Statements) ® ªêòÃÁ î¬ô¹ ÃÁè (Function Header Statements) ® ÜPM¹ ÃÁè (Declaration Statements) ® ªêò𣴠ÃÁè (Executable Statements) cè ãªèù«õ ÜPîð®, º¡ -ªêòLÃÁ, °PHì î¬ô¹ «è£¹èOL¼¶ ªêòÃÁèO¡ ÜPM¹ ÃÁè¬÷ â´¶ «ê¶, Íô Gó¬ô MK¾ð´¶ ðE¬ò ªêA¡øù. ªêòÃÁ î¬ô¹ ÃÁ, å¼ ªêòÃP¡ õ¬óò¬øJ ºî õKò£è ÞìªðÁAø¶. ÜPM¹ ÃÁè¬÷, ñ£P ÜPM¹ ÃÁ (variable declaration statement), ªêòÃÁ ÜPM¹ ÃÁ (function declaration statement) âù «ñ½ Þ¼õ¬èò£è HKèô£. #include <stdio.h> => º¡-ªêòL ÃÁ main() => ªêòÃÁ î¬ô¹ ÃÁ { int a,b,c; => ñ£P ÜPM¹ ÃÁ int add(int,int); => ªêòÃÁ ÜPM¹ ÃÁ a = 10; => ªêò𣴠ÃÁ } ðòù õ¬óòÁ° ªêòÃÁèO¡ ÜPM¹ ñÁ õ¬ó ò¬ø ðP ªêòÃÁè â¡Â ð°FJ M÷èð´÷¶. ªêò𣴠ÃÁèO ðô õ®õè à÷ù. ÜõÁ ñF H¼¶ ÃÁ (assignment statement) Ü®ð¬ìò£ù å¡Á. å¼ ñ£P J ñF¬ð Þ¼î ܶ ðò¡ð´Aø¶. 243
4.3.1.1 ñFH¼¶ ÃÁè Assignment Statements) ñFH¼¶ ÃÁ Þõ£Á ܬñ»: ñ£P (Variable) = «è£¬õ (Expression) ; æ ܬó¹O ìø º®¶¬õAø¶. «è£¬õ â¡ð¶ ðô õ¬èð´. ܶðP Hø° ð£«ð£. å¼ «è£¬õ ñF Hìð´«ð£¶, ܶ å¼ M¬ì¬ò î¼. Üî£õ¶, ܶ ⠫𣶫ñ å¬ø ñFð£è ²¼èð´M´. «è£¬õJ Üî å¬ø ñF¹, Þìðèº÷ ñ£PJ Þ¼îð´Aø¶. = â¡Â °P, ñFH¼¶ ªêò°Pò£°. å¼ ñ£PJ ñF¬ð Þ¼¶ õî° ðò¡ð´Aø¶. ñFH¼¶ ªêò°P° (=) õôðè ÞìªðÁ÷ ܬù¶ å¼ «è£¬õò£è è¼îð´A¡øù. ãªèù«õ ï£ ÜPîð®, å¼ ªêòÃP ÞìªðÁ÷ ܬù¶ ÃÁèÀ ªïO¾ ܬ칰PèÀ° ܬñè ð´A¡øù. printf (hello) ;
â¡ð¶ å¼ ªêòÃÁ ܬö¹ ÃÁ (function call statement) Ý°. Þî ªêòÃÁ Þòèð´«ð£¶, hello â¡Â ªêF F¬óJ è£ìð´. F¬óJ âî¬ù ⿶è è£ìðìù â¡Aø âE¬è¬ò ªêòÃÁ F¼H ܹ. printf() ªêòÃP¡ õ¬óò¬ø¬ò «ï£°«ð£«î, ܶ å¼ º¿â ñF¬ð F¼ Hò¹ â¡ð¬î ï£ ¹K¶ªè£÷ º®». â´¶è£ì£è, å¼ GóL¡ ð°F¬ò 裵è: int n ; /* ñ£P ÜPM¹ ÃÁ */ n = printf (hello) ; */ ñFH¼¶ ÃÁ */ Þ«è, n â¡Â ñ£P å¼ º¿â (integer) âù ÜPMè ð´÷¶. ñFH¼¶ ÃÁ ªêòð´«ð£¶, ºîL õôðè º÷ «è£¬õ ñFHìð´. Hø°, Üî¡ ñF¹ Þìðè ñ£P J Þ¼îð´. Þî ⴶ裮, ñFH¼¶ ÃP¡ õôðè, å¼ ªêòÃÁ ܬö¹ «è£¬õ (function call expression) ÞìªðÁ÷¶. âù«õ, ޫ𣶠printf() â¡Â ªêòÃÁ Þòèð´, hello â¡Â ªêF F¬óJ è£ìð´. printf() ªêò ÃÁ, 5 ⿶è¬÷ F¬óJ 裴õî£ 5 â¡Â ñF¬ð F¼Hò¹. ܶ«õ õôðè «è£¬õJ¡ ñFð£°. 5 â¡Â ÞñF¹ Þìðèº÷ n â¡Â ñ£PJ Þ¼îð´. 244
4.3.1.2 I°¹, °¬ø¹ ÃÁè (Increment and Decrement Statements)
å¼ ñ£PJ¡ º¬îò ñFH 1 î ¹Fò ñF¬ð Ü«î ñ£PJ Þ¼F¬õè, i =i+1;
â¡Â ÃÁ ðò¡ð´Aø¶. Þ«î ðE¬ò, I°¹ ÃÁ è¾ ªê¶ º®èô£. Þõ£ø£è: i ++
(Increment Statement)
Íôñ£
; /* H¡ªù£´ õ®õ */
++i;/*
º¡ªù£´ õ®õ
*/
«ñ«ô 裮òõ£Á, I°¹ ªêò°P¬ò îQG¬ô ÃÁ èO (stand-alone statements) ðò¡ð´Fù£, º¡ªù£´° H¡ ªù£´° «õÁ𣴠ⶾI¬ô. Þ󮽫ñ i- ¡ ñF¹ å¡Á I°èð´. i- ¡ º¬îò ñFH 塬ø °¬øè, °¬ø¹ ªêò°P¬ò ðò¡ð´î«õ´. i -- ; Üô¶ -- i; I°¹, °¬ø¹ ªêò°Pè «õÁ ÅG¬ô¬ñèO «õÁMî M¬÷¾è¬÷ î¼. ܶðP Hø° ð£«ð£. 4.3.1.3 «è£¬õ (Expression) «è£¬õ â¡ð¶ ªð¼ð£½, å¼ ñFH¼¶ ªêò°P° õôðèñ£è ܬñõ¶´. ܬî ñFH´«ð£¶, å¼ ñF¹ M¬ìò£è A¬ì°. «è£¬õè ð«õÁ õ®õ ªè£ì¬õ. ÜõÁ Cô: int a,b,c;
/* ñ£P ÜPM¹ ÃÁ */
a =10 ;
/* ñFH¼¶ ÃÁ
*/
Þóì£õ¶ ÃP, 10 â¡Â ñ£ø£ ñF¹ õôðè ÞìªðÁ÷¶. âù«õ Þ¶ ñ£PL «è£¬õ (constant expression) âùð´Aø¶. Üî¡ ñF¹ 10. b= a ;
ÞF, õôðè å¼ ñ£P «è£¬õ (variable expression) Þì ªðÁ÷¶. Üî¡ ñF¹ 10. ñFH¼¶ ÃP¡ õôðè Þ¼ õ¬èò£ù ñF¹è Þìªðø º®». å¼ ñ£PJ¡ ñF¹ Ü 245
ô¶ å¼ «è£¬õJ¡ ñF¹. Þî ⴶ裮 Þó´ å¡«ø. Ýù£½, «è£¬õJ¡ ñF«ð Þìðè ñ£PJ Þ¼îð´A ø¶ â¡ð¬î â«ð£¶ G¬ùM ªè£è. ðò¡ð´îð´ ªêò°PèO¡ Ü®ð¬ìJ «è£¬õè ܬöèð´õ¶´. «õÁCô «è£¬õè W«ö: «è£¬õ
õôðè
c=a+b;
èíW´ «è£¬õ
c=a>b;
åd´ «è£¬õ
f=d =e;
ñFH¼¶ «è£¬õ
åd´ «è£¬¬õ¬ò ªð£Áîõ¬ó, êK (true) Üô¶ îõÁ (false) â¡Â ñF¹. Þìðè ñ£PJ Þ¼îð´. Üî£ õ¶ 1 Üô¶ 0 â¡Â ñF¹ c â¡Â ñ£PJ Þ¼îð´. = â¡Â °P, ñFH¼¶ ªêò°Pò£è ðò¡ð´îð´Aø¶. âù«õ, C-ªñ£NJ ñFH¼¶ «è£¬õ ãèð´Aø¶ â¡Á ªð£¼. ªî£ì ñFH¼î½ ÜÂñFèð´Aø¶. Í¡ø£õ¶ ÃP, ñFH¼¶ «è£¬õJ¡ ñF¹ (Üî£õ¶, d- Þ¼î ð´ ñF«ð, ñFH¼¶ «è£¬õJ¡ ñFð£°) f â¡Â ñ£PJ Þ¼îð´Aø¶. f = d =10;
â¡Á ìø â´¶ªè£«õ£. ÞF ñFH¼¶ «è£¬õ J¡ ñF¹ 10 Ý°. ÞñF¹ d- Þ¼îð´Aø¶. Hø°, ñFH¼¶ «è£¬õJ¡ Þî ñF¹ f- Þ¼îð´Aø¶. 4.3.1.4 H¡ªù£´, º¡ªù£´ I°¹ «è£¬õè (Postfix and Prefix Increment Expressions)
W«ö»÷ Gó ð°F¬ò «ï£°è: int x, i; i = 10; x = i++; /* õôðè printf(%d %d\n, x, i);
H¡ªù£´ I°¹«è£¬õ*/
å¼ñ ªêò°P ++ e¾ò º¡ÂK¬ñ ªðø¶. ñFH¼¶ ªêò°P e°¬øî º¡ÂK¬ñ ªðø¶. H¡ªù£´ õ®M, ºîL ñ£PJ¡ ñF¹, «è£¬õJ¡ ñFð£è ðò¡ð´îð´ 246
Aø¶. Üî¡Hø«è, ñ£PJ¡ ñF¹, å¡Á I°èð´Aø¶. âù«õ, õôðèF Þó´ ªõ«õÁ ñF¹è à÷ù. å¡Á, «è£¬õ J¡ ñF¹; ñø¶ ñ£PJ¡ ñF¹. «ñ«ô»÷ ñFH¼¶ à P «è£¬õJ¡ ñF¹ 10. ܶ«õ Þìðè ñ£P x- Þ¼î ð´Aø¶. ޫ𣶠i-¡ ñF¹ 11 ÝAø¶. å¼ ñFH¼¶ à P Þìðè ñ£PJ å¼ ñF¬ð Þ¼î º¬ù»«ð£¶, õôð è«è£¬õJ¡ ñF¬ð«ò â«ð£¶ èíA â´¶ªè£÷ «õ´. âù«õ, printf() ªêòÃP¡ ªõOf´, 10 11
â¡Á ܬñ». W«ö»÷ Gó ð°F¬ò «ï£°è: int x, i; i = 10; x = ++i; /*õôðè printf(%d %d\n, x, i);
º¡ªù£´ I°¹«è£¬õ*/
º¡ªù£´ õ®M, ºîL ñ£PJ¡ ñF¹, å¡Á I°è ð´, ¹Fò ñF¹, «è£¬õJ¡ ñFð£è ðò¡ð´îð´Aø¶. «è£¬õJ¡ ñF¹ 11 â¡ðî£ Ü¶«õ Þìðè ñ£P x- Þ¼î ð´Aø¶. âù«õ ªõOf´, 11
11
âù ܬñ». åd´ «è£¬õ ÞìªðÁ÷ â´¶è£ ¬ì W«ö è£è: nt x, z; x = 100; z = (x == x++);
H¡ªù£´ I°¹ «è£¬õ¬ò å¼ ªêò«ôHò£è ªè£ì åd´ «è£¬õ */ /*
printf(%d %d\n, z, x);
Þî¡ ªõOf´ â¡ùõ£è Þ¼°?
«ñèì ñFH¼¶ ÃP ÞìªðÁ÷ åd´ «è£¬õ, êK Üô¶ îõÁ Üî£õ¶, 1 Üô¶ 0 â¡Â ñF ¬ð î¼. âù«õ, z â¡Â ñ£PJ¡ ñF¹ 1 Üô¶ 0 Ýè Þ¼èô£. ++ ªêò°PJ¡ e¾ò º¡ÂK¬ñ è£óíñ£è, åd´ «è£¬õJ¡ õôðè ªêò«ôH«ò ºîL ñFHì ð´. ܶ H¡ªù£´ «è£¬õ â¡ðî£, «è£¬õJ¡ ñF¹ 247
100 Ý°. Üî¡Hø° x-¡ ñF¹ I°èð´ Üî¡ ñF¹ 101 ÝAø¶. ޫ𣶠åd´ «è£¬õJ¡ Þìðè ªêò«ôH (å¼ ñ£P «è£¬õ) 101 â¡Â ñF¬ð ªðÁ. âù«õ, å Hì«õ®ò ñF¹è 101 ñÁ 100 Ý°. ܬõJó´ Gè ó£ù¬õ Üô. âù«õ, z- 0 Þ¼îð´. Þî¡ ªõOf´, 0 101 âù ܬñ». ñFH¼¶ ÃP, «è£¬õJ¡ ñF ¹«è ºAò¶õ îó«õ´. ñ£PJ¡ ñF¹° Üô.
G¬ùM ªè£è:
4.3.1.5 àk´, ªõOf´ ÃÁè: (Input and Output Statements)
ï£ ãªèù«õ ÜPîð®, M¬ì¬ò Ü®ð¬ì ªõOf® (F¬óJ) è£Hè printf() ªêòÃÁ ðò¡ð´Aø¶. F¬óòèF å¼ êó¬î 裴õî° printf() ðò¡ðì¬î ãªèù«õ ï£ ð£«î£. à¬ñJ, printf() ªêòÃP¡ ºî Ü÷¹¼ å¼ êó Ý°. ªõOf¬ì è´ð´î («î¬õ«èð ܬñ ¶ªè£÷) ܶ ðò¡ð´Aø¶. âù«õ ܶ è´ð£´ êó (control string) â¡Á ܬöèð´Aø¶. Þî Ü÷¹¼, ªõOf¬ì F¬óJ 裴õî° ãøõ£Á õ®õ¬ñèð´õî£ Þî¬ù õ®õ¬ñ¹ êó (formatting string) â¡Á ܬöèô£. ⴶ裴:
å¼ º¿â ñF¬ð ªõOJì: int n ; /* º¿ â ñ£Pò£è n ÜPMèð´Aø¶ */ n = 10; printf (%d ,n);
Þî ⴶ裮, %d â¡Â õ®õ¬ñ¹ °P»¼ ªêòÃP¡ è´ð£´ êó¶å¼ º¿ â ñF¬ð ªõOJì, ðò¡ð´îð´÷¶. printf() ªêòÃP¡ è´ð£´ êó, Í¡Á õ¬èò£ù °P»¼ è¬÷ ãÁªè£À. ® ê£î£óí °P»¼è (Ordinary Characters) ® õ®õ¬ñ¹ °P»¼è (Formatting Characters) ® M´ð´ õK¬ê °P»¼è (Escape Sequence Characters) 248 (formatting character) printf()
è´ð£´ êóF½÷ ê£î£óí °P»¼è Ü ð®«ò à÷õ£«ø è£ìð´. printf (hello); â¡Â ÃP è´ ð£´ êó ê£î£óí °P»¼è¬÷«ò ªè£´÷¶. âù«õ, ܬõ à÷õ£«ø F¬óJ è£ìð´A¡øù. ð«õÁ îóMù ñF¹è¬÷ F¬óJ è£ì ðò¡ð´ õ®õ¬ñ¹ °P»¼è O¡ ð®ò¬ô Üìõ¬í 4.4- è£è:
õ®õ¬ñ¹ °P»¼
îóMù
%d
int
%f
float
%c
char
%s
char [ ]
%ld
long int
%lf
long float or double
Üìõ¬í 4.4 õ®õ¬ñ¹ õ¬óòÁ¹è
ï£ ãªèù«õ ÜPîð®, M´ð´ õK¬ê °P»¼è â¡ð¬õ, å¼ H¡ê£¾ «è£¬ì Ü´¶ æ â¿¬î ªè£ ®¼°. à¬ñJ ܬõ å¬ø °P»¼ ñ£PLè«÷ Ý°. ܬõ å¬ø °P»¼è÷£è«õ «êIèð´A¡øù, ¬èò£÷ ð´A¡øù. ªõOf®¡ õ®õ¬ñ¬ð æó÷¾ è´ð´î M´ ð´ õK¬êè ðò¡ð´A¡øù. printf() ªêòÃP¡ è´ð£g êóF Ü®è® ðò¡ð´îð´A¡ø M´ð´ õK¬êè Cô: \n \t
¹Fò õK °P»¼
- îî °P»¼
\b -
H¡ ÞìªõO °P»¼
W«ö»÷ printf() ªêòÃÁ ܬö¹ ìø «ï£°è: int i =15; printf (the value of i = &%d\n, i);
249
F¬óJ è£ìð´ ªõOf´: the value of i = 15
«ñèì printf() ªêòÃP, ê£î£óí °P»¼è, õ®õ ¬ñ¹ °P»¼è, M´ð´ õK¬ê °P»¼è ÝAò Í¡Á õ¬è °P»¼èÀ«ñ ðò¡ð´îð´÷ù. ê£î£óí °P»¼ è à÷õ£«ø è£ìð´÷ù. %d â¡Â õ®õ¬ñ¹ °P »¼M¡ è£óíñ£è Ü´¶÷ º¿ â ñF¹ F¬óJ è£ì ð´÷¶. ¹Fò õK °P»¼ \n Þ¼ðî¡ è£óíñ£, ªõOf´ è£ìðì õK° Ü´î õKJ, 裮 õ¶ GAø¶. Ü´¶ õ¼ ªõOf´è ¹Fò õKJ è£ìð´A¡øù. printf (one\n two\n three\n) ;
â¡Â ÃÁ, one two three
âù F¬óJ 裴. ¹FòõK °P»¼ \n Þì ªðÁ÷ è£óíî£ åªõ£¼ ªê£½ îQ õKJ è£ìð´Aø¶. W«ö õ¼ GóL¡ ð°F¬ò «ï£°è: int x; float y; x = 10; y = 10.5; printf(%d %f, x, y);
Þî¡ ªõOf´, 10 âù Þ¼°.
10.500000
Iî¬õ ¹O ñF¹è º¡Qòð£è (by default) ÝÁ Þô è ¶LòF è£ìð´. Þó´ Þôè ¶LòF ªõO Jì M¼Hù£, õ®õ¬ñ¹ õ¬óòÁ¹ % 0.2f â¡Á ܬñò «õ´. ÞF, ðF¡ñ H¡ù Þó´ Þôè ¶Lòñ£è è´ð´îð´Aø¶. âù«õ, 250
printf ( %0.2f , y);
â¡Â ÃP¡ ªõOf´ 10.50 âù ܬñ». Ýè, ªõOf ¬ì F¬óJ 裴«ð£¶ Üî¡ Üèô¬î è´ð´î, õ® õ¬ñ¹ õ¬óòÁ¹èO Üèô¬î» àì¡ «ê¶ªè£÷ º®». printf ( %10d %10.2f , x, y);
â¡Â ÃÁ, bbbbbbbb10bbbbb10.50 /* b
â¡ð¶ ªõÁ ÞìªõO¬ò °PAø¶ */
M¬êðô¬èJL¼¶ àk´ (Input from keyboard) M¬ê ðô¬èJL¼¶ (Ü®ð¬ì àk´) ñF¹è¬÷ à kì£è ªðø scanf() ªêòÃÁ ðò¡ð´Aø¶. scanf()- ¡ ñ£FK õ®õ (prototype), printf()-¡ ñ£FK õ®õ¬î åî. Þ¶¾ «õÁðì âE¬èJ Ü÷¹¼è¬÷ ã°. å¼ º¿â ñ£P x-¡ ñF¬ð M¬êðô¬è Íô ªðø, int x ; scanf (%d, &x);
â¡Â °Pº¬ø (code) ðò¡ð´îð´Aø¶. ªêòÃÁ Þòèð´«ð£¶, ðòùK¡ àk´è£è èEªð£P è£F¼°. ðòù M¬êðô¬è Íôñ£è îóM¬ù Enter M¬ê¬ò Ü¿Fò Hø«è, à àOì«õ´. ðòù Oì îó¾ G¬ùõèF x-°Kò ÞìF Þ¼îð´Aø¶. scanf() ªêòÃP¡ Þóì£õ¶ Ü÷¹¼õ£è &x ÞìªðÁ÷¶. Þ¶ x â¡Â ñ£PJ¡ G¬ùõè ºèõK¬ò °PAø¶. & â¡ð¶ ºè õK ²´ ªêò°P â¡ð¬î ÜP«õ£. Üî¬ù å¼ ñ£P»ì¡ «ê¶ ðò¡ð´¶«ð£¶, Üî ñ£PJ¡ ºèõK¬ò °PAø¶. scanf()
4.3.2 ðòù õ¬óòÁ° ªêòÃÁè (User -defined Functions) å¼ GóL å¼ °PHì ðE¬ò e´ e´ ªêò «õ®J¼î£«ô£, ÜðE¬ò ÜGóL ªõ«õÁ ÞìèO G¬ø«õø «õ®ò «î¬õ ãð죫ô£, ÜðE¬ò å¼ ªêò ÃPì åð¬ì¶M´, «õ®ò«ð£¶ Üî ªêòÃP¬ù ܬö¶ªè£÷ô£. ðòù Üô¶ Góô (Programmer) °P Hì ðEè¬÷ G¬ø«õÁõîè£è ñ ªêòÃÁè¬÷ ༠251
õ£A ¬õ¶ªè£´, GóL¡ ð«õÁ ÞìèO Üõ¬ø ðò¡ð´Fªè£÷ º®». âù«õ, ªêòÃÁ â¡ð¶, M¼ ¹ M¬ì¬ò ªðÁõîè£è, õK¬êò£è ªêòð´î «õ®ò èì¬÷ ªî£°F¬ò à÷ìAò å¼õ¬è Gó«ô Ý°. «õªø£¼ ªêòìø ܬöA¡ø ªêòÃÁ ܬö° ªêòÃÁ (calling function) â ù ð ´ . ܬöèð´A¡ø ªêòÃÁ, ܬöèð´ ªêòÃÁ (called function) âùð´. ܬöè ð´ ªêòÃÁ Ü÷¹¼è¬÷ ªè£®¼èô£. Þô£ñ½ Þ¼èô£. ªêòÃÁè, ªêòÃÁ ܬöH¡ Íô Þòèð´A¡ øù. ªêòÃÁ ܬö¹, °PHì ªêòÃP¡ ªðò¬ó °P H´ ܬöAø¶. Üõ£Á ܬö°«ð£¶, °PHì ðE ¬ò ªê¶ º®° ªð£¼´, ܬöèðì ªêòÃP° «î¬õð´ îèõè¬÷ Ü÷¹¼è õ®M ÜÂH¬õAø¶. ñ£Pè¬÷ ÜPMð¶«ð£¡«ø ªêòÃÁèÀ ÜPMèð´õ¶ C-ªñ£NJ H¡ðøð´ Cøî ï¬ìº¬øò£°. å¼ ªêò ÃÁ ÜPM¹ (function declaration) â¡ð¶, ªêòÃP¡ ñ£FK õ® õ (Function Prototype) Üô¶ ªêòÃÁ ñ£FKò (Function Model) â¡Á ܬöèð´Aø¶. ªêòÃP¡ ñ£FK õ®õ ° ÃÁ è¬÷ ªè£ì¶: ®
ªêòÃP¡ ªðò
®
F¼H ÜÂðð´ ñFH¡ îóMù
®
Ü÷¹¼èO¡ âE¬è
®
å«õ£ Ü÷¹¼M¡ îóMù
â´¶è£ì£è, Þó´ âè¬÷ î, M¬ì¬ò, ܬö ðõ° ÜÂH¬õ° å¼ ðòù-õ¬óòÁî ªêòÃP¬ù è£è: int add (int, int);
«ñèì ªêòÃÁ ÜPM¹ ÃP add â¡ð¶ ªêò ÃP¡ ªðò. Þó´ Ü÷¹¼è¬÷ ãAø¶. Þó´ int Þù¬î ê£î¬õ. ÞÁFJ æ int ñF¬ð«ò F¼Hò¹. ªêòÃÁ Þõ£Á õ¬óòÁèð´Aø¶: 252
int add(int a, int b) /* function header statement */ { return (a+b); } ðòù-õ¬óòÁî ªêòÃÁ
ªêòÃP¡ ñ£FK õ®õ Üî£õ¶ ªêòÃÁ ÜPM¹ ÃÁ, ܬó¹O»ì¡ ºÁªðÁAø¶. Ýù£ ªêòÃP¡ î¬ô¹ ÃÁ ܬó¹O»ì¡ ºÁªðÁõF¬ô. å¼ ªêò ÃÁ õ¬óòÁèð´«ð£¶ ºî Ãø£è ܬñõ¶, ªêòÃÁ î¬ô¹ Ãø£°. å¼ ªêòìø õ¬óòÁð¶ â¡ðî¡ ªð£¼, Üî°Kò èìì¬÷è¬÷ ªïO¾ ܬ칰PèÀ° { } ⿶õ. ªïO¾ ܬ칰PèÀ° â¿îð´ °Pº¬ø (code), ªêò ÃP¡ àìð°F (body) Üô¶ ªî£°F (block) â¡Á ܬöè ð´. å¼ ªêòÃP ÜPMèð´ ñ£Pè ܬù¶ à ÷¬ñ ñ£Pè (local variables) Ý°. ܬõ âî ªêòÃP õ¬óòÁèðìù«õ£ Üî ªêòÃP° ñ´«ñ ªîKî¬õ. å¼ ªêòÃP¡ Ü÷¹¼èÀ à÷¬ñ ñ£Pè«÷. ܬö° ªêòÃÁ, ܬöèð´ ªêòÃÁ-Þó´° Þ¬ì«ò îèõ ðKñ£ø¶è£ù å¼ õNº¬ø¬ò Ü÷¹¼è õö°A¡øù. add()
ªêòÃP¬ù Þò° º¿ Gó¬ô W«ö è£è:
253
#include <stdio.h> #include main() { int a, b,c; int add(int, int); a = 12; b = 11; c = add(a,b); /* a » b » ªñò£ù Ü÷¹¼è */ printf(%d\n, c); } int add(int x, int y) /* x à y à º¬øò£ù Ü÷¹¼è*/ { return(x+y); } ܬö° ªêòÃP õ¬óòÁèð´ Ü÷¹¼è ªñ ò£ù Ü÷¹¼è (Actual Parameters) âùð´A¡øù. ܬöè ð´ ªêòÃP° ÜÂððì«õ®ò ªñò£ù ñF¹è¬÷ ܬõ ªè£´÷ù. ܬöèð´ ªêòÃP õ¬óòÁèð´ Ü÷¹¼è ªêò º¬øò£ù Ü÷¹¼è (Formal Parameters) âùð´A¡øù. ÃÁ Þòèð´«ð£¶, ªñò£ù Ü÷¹¼èO¡ ñF¹è¬÷ Þ¬õ«ò ªðÁªè£A¡øù. «ñèì GóL, c = add (a+b);
â¡Â ñFH¼¶ ÃÁ ªêòð´îð´«ð£¶, GóL¡ è ´ ð £ ´ add() ª ê ò à P  ° ñ £ ø ð ´ A ø ¶ . a, b Ý A ò ¬ õ ª ñ ò £ ù Ü ÷ ¹ ¼ è Ý ° . è £ ó í , add( ) ª ê ò à Á Þòèð´«ð£¶, Üî° ÜÂH¬õèðì«õ®ò ªñò£ù ñF¹è¬÷ Þî Ü÷¹¼è«÷ ªè£´÷ù. Þî ñF¹è¬÷ ܬöèðì ªêòÃP¡ º¬øò£ù Ü÷¹¼è÷£ù x, y ÝA ò¬õ ªðÁªè£A¡øù. add( ) ªêòÃÁ ܬöèð´«ð£¶, ªñò£ù Ü÷¹¼èO¡ ñF¹è, º¬øò£ù Ü÷¹¼èO å¡ 254
Á° å¡Á ªð£¼îºÁð®ò£è, ïèªô´èð´A¡øù. Þî ¬èò ªêò¸ð ñF¹ Íô ܬö¹ (call by value) â¡Á add( ) ªêòÃÁ, M¬ì¬ò ܬö° ªêò ܬöèð´Aø¶. ÃP° F¼H ܹAø¶. C = add(a+b) â¡Â ÃP¡ õô ðè å¼ ªêòÃÁ ܬö¹ «è£¬õ à÷¶. ܫ裬õJ¡ ñF¹, add() ªêòÃÁ F¼H ܹ ñFð£°. ªêòÃÁ ÞòA º®î¶, GóL¡ è´ð£´, ܬö° ªêòÃP, âî ÞìFL¼¶ è´ð£´ ñ£øðì«î£ Üî Þ춫è F¼Hõ¼. ªêòÃÁ ܬö¹ ìø ªð£Áî õ¬ó GóL¡ è´ð£´, ܬö° ªêòÃP Ü´î ÃÁ ° F¼Hõ¼. Þ¡ªù£¼ ºAò Mõó¬î ñùF ªè£÷ «õ´. ܬöèðì ªêòÃP½÷ à÷¬ñ ñ£PèO¡ ñF ¹è Þöèð´A¡øù. ªêòÃÁ ªêòð´ º®î¶ ܬö èðì ªêòÃP¡ à÷¬ñ ñ£Pè ÜNèð´A¡øù. å¼ ªêòÃP° ÜPMèð´A¡ø, õ¬óòÁèð´A¡øù, ðò¡ ð´îð´A¡ø ñ£Pè«÷ à÷¬ñ ñ£Pè âùð´A¡øù. «ñèì ⴶ裮, add() ªêòÃÁ, ñF¹ Íô ܬöî º¬øJ Þòèð´Aø¶. ñF¹ Íô ܬöî º¬øJ Ü÷¹¼è ÜÂðð´«ð£¶, Ü÷¹¼ ñF¹èO¡ ïèè à¼õ£èð´, ܬöèðì ªêòÃP° ÜÂH ¬õèð´A¡øù. ܬöèðì ªêòÃP ÜñF¹èO ªêòð´ ñ£øè, ܬö° ªêòÃP½÷ Íô ñ£Pè O¡ ñF¹è¬÷ âõ¬èJ½ ð£FðF¬ô. ܬö° ªêò ÃP½÷ à÷¬ñ ñ£PèO¡ ºèõKè¬÷ ܬöèð´ ªêò ÃÁ ÜP¶ ¬õF¼H¡, ܬöèðì ªêòÃÁ, ܬö° ªêòÃP½÷ à÷¬ñ ñ£PèO¡ ñF¹è¬÷ ñ£Pò¬ñè º®». ºèõK Íô ܬö¹ (call by address) 輶¼ Íô ÞðE¬ò ê£Fè º®». ⴶ裴:
W«ö à÷ Gó¬ô «ï£°è:
255
#include <stdio.h> main() { int i; void change(int *); i = 20; change(&i); printf(%d\n, i); } void change(int *x) { *x = 23; } Þî GóL¡ ªõOf´ 23 Ýè Þ¼°. Üî£õ¶, ܬö° ªêòÃP½÷ à÷¬ñ ñ£PJ¡ ñF¹ ñ£øð´ Mì¶. change() ªêòÃP¡ º¬øò£ù Ü÷¹¼ x, å¼ º¿â ²´ (in teger pointer) Ý°. Þ¶, ܬö° ªêòÃP¡ à÷¬ñ ñ£P i-¡ ºèõK¬ò ãÁªè£Aø¶. âù«õ x, i- ä ²´Aø¶. ܬöè ðì ªêòÃP, *x = 23; â¡ø ñFH¼¶ ÃÁ, x ²´ ºèõK J ¹Fò ñF¬ð Þ¼¶Aø¶. x, i-ä ²´õî£, i- ¡ ñF¹ ñ£PM´Aø¶. å¼ ²´, ²´A¡ø G¬ùõè ºèõKJ Þ¼° ñF¬ð ªðÁîó, à«ï£° ªêò°P * ðò¡ð´îð´Aø¶ â¡ð¬î ãªèù«õ ð£«î£. W«ö»÷ Góð°F¬ò «ï£°è: int i = 32; int * p; int m; p = &i; m = *p;
ñFH¼¶ ÃP¡ õôðè Þ¼° *p, p-Jù£ ²ìð ´ ºèõKJ½÷ ñF¬ð ªðÁ î¼Aø¶. ÜñF¹, i â¡ø ñ£PJ¡ ñF«ð Ý°. õôðè *p ðò¡ð´¶õî¡ Íô, å¼ G¬ùõè ºèõKJ Þ¼° ñF¬ð ªðÁîó º®»«ñ åNò Ü°÷ ñF¬ð ñ£Pò¬ñè º®ò£¶. change() ªêò 256
ÃP, ²´ ñ£P p- àì¡, à«ï£° ªêò°P * «ê¶ (*p âù), ñFH¼¶ ÃP¡ Þìðè ðò¡ð´F»«÷£. Þõ£Á, à«ï£° ªêò°P»ì¡ ²´ ñ£P, Þìðè ÞìªðÁñ£ J¡ ܶ, G¬ùõè Þ¼HìF¡ ºèõK¬ò ñ Üô£¶ ÜF½÷ ñFH¬ù îó£¶. âù«õ *x = 23; â¡ø ÃP¡ Íô, x ²´ ºèõKJ 23 â¡Aø ñF¹ Þ¼îð´Aø¶. ²¼èÃP¡, à«ï£° ªêò°P¬ò( *), õôðè ðò¡ ð´Fù£, ܶ îóM¡ ñF¬ð ªðÁî¼; ñF¬ð ñ£P ܬñ裶. ܶ ð®è ñ´ Ýù ñF¹. à«ï£° ªêò °P, Þìðè ðò¡ð´îð´ñ£J¡, ܶ Þ¼Hì ºèõK ¬ò î¼; ÜF½÷ ñF¬ð ñ£Pò¬ñè º®». ªêòÃÁ ðPò ñÁªñ£¼ 輶¼¬õ cè ÜP¶ ªè£÷ «õ´. W«ö»÷ Góð°F¬ò «ï£°è. Þ¶ ªêò ð´Mî ê«ø «õÁð£ì£ù¶. Þ¬î cè ÜPF¼èñ£¯è. int i = 10; printf (%d %d, i, i++);
Þî¡ ªõOf´ 10 10 Üô¶ 10 11 âù Þ¼° â¡Á cè âEù£ ãñ£ø ܬìiè. Þî Góð°FJ å¼ è¼¶¼ ñ¬ø¶ AìAø¶. C-ªñ£NJ, å¼ ªêòÃÁ Þò èð´«ð£¶, Üî¡ Ü÷¹¼è õôI¼¶ Þìñ£è, æ Ü´ èF (Stack) Þ¼îð´A¡øù. Ü´è â¡ð¶ è¬ì¹°-ºî M´ (Last - In- First - Out /LIFO) ܬñH Þ¼°. ê£H´ î´è Üô¶ ì÷è Ü´A¬õèð´õ¬î «ï£°è. ê£ð£´ ܬøJ, è¿õðì H¡, ܬõ å¡ø¡e¶ å¡ø£è Ü´A¬õèð´A¡øù. è¬ìCò£è ¬õèðì î´ Üô¶ ì÷ (àCJ Þ¼ð¶) ºîL â´èð´. Hø° Ü´î¶ â´èð´. Ü´è â¡ð¬î ðìF è£è:
257
%d %d Ü´èF¡ àC 11
Ü´è
10
Ü´èF î÷ðì ºî àÁ¹
«ñ«ô èì printf() ªêòÃÁ ܬöèð´«ð£¶, Ü´ èF ºîL î÷ð´ ñF¹, i++ «è£¬õJ¡ ñFð£°. Þ¶ å¼ H¡ªù£´ «è£¬õ â¡ðî£, «è£¬õJ¡ ñF¹ 10 Ü´ èF î÷ð´. Üî¡Hø° I°¹ ªêò°PJ¡ (++) ðô ù£è, i-¡ ñF¹ å¡Á I°èð´, 11 âù Ý°. õôI¼¶ Þìñ£è Ü´¶ ÞìªðÁ Ü÷¹¼ i . Üî¡ ñF¹ Þóì£õî£è Ü´èF î÷ð´. Üî£õ¶, 11 Ü´èF¡ «ñL¼°. è¬ìC Ü÷¹¼õ£è, %d %d â¡Â è´ð£´ êó Ü´è F î÷ð´. ÞQ î÷ð´õî° Ü÷¹¼è ⶾ Þ ô£î«ð£¶, printf() ªêòÃÁ, Ü´èF¡ àÁ¹è¬÷ àCJL ¼¶ åªõ£¡ø£è â´è ªî£ì°. ºîL ªõOJ â´ èð´ àÁ¹ %d %d. ªêòÃÁ è´ð£´ êó¬î ݾ ªê». ºîL %d Þ¼ðî£, Ü´èFL¼¶ Ü´î àÁ¬ð (ñF¹ 11) ªõOJªô´¶ å¼ º¿âí£è 裴. Ü´¶÷ %d-°, Ü´ èF½÷ Ü´î àÁ¬ð (ñF¹ 10) ªõOJ â´¶ å¼ º¿â ñFð£è 裴. ޫ𣶠ܴè è£L ÝAMì¶. F¬óJ, 11 10 â¡Â ªõOf¬ì è£íô£. C-ªñ£N ªêòÃÁ ªêòð´ Mî¬î ޫ𣶠 ¹KF¼dè. 4.4 «êI¹ Þù°¿è (Storage Classes) å¼ ñ£PJ¡ ð¹ÃÁè÷£è Þ¶õ¬óJ ï£ ð£î¬õ ® ªðò (Name) ® Þù (Type) ® ñF¹ (Value) 258
«êI¹ Þù°¿ â¡ð¶, ñ£P»ì¡ ªî£ì¹¬ìò ñªø£¼ ð¹Ãø£°. C-ªñ£N ° Þù°¿è¬÷ õö°Aø¶. ® auto ® static ® register ® extern
å¼ ñ£PJ¡ õ¬óªò¬ô¬ò» õ£ï£¬÷» (scope and bñ£Qðî° Üî¡ «êI¹ Þù°¿ ðò¡ð´Aø¶. auto ñ£Pè à¬ñJ à÷¬ñ (local) ñ£Pè÷£°. ܬõ ÜPM èð´÷ ªêòÃP GóL¡ è´ð£´ ¸¬ö»«ð£¶ ܬõ à¼õ£èð´A¡øù. ªêòìøM´ ªõO«òÁ«ð£¶ ܬõ ÜNèð´A¡øù. å¼ ªêòÃP à¼õ£èð´ñ ñ£Pè ܪêòÃP¡ à÷¬ñ ñ£Pè Ý°. ÜõP¡ õ¬óªò ¬ô» õ£ï£À ܪêòÃP«÷«ò º®¶M´A¡øù. å¼ ªêòÃÁ ªêòð´ º®»«ð£¶, ܬù¶ à÷¬ñ ñ£PèÀ ÜNèð´A¡øù â¡ð«î Þð£¼. à÷¬ñ ñ£PèO¡ ñF¹è¬÷ ܪêòÃP° ªõO«ò Üµè º®ò£¶. Üî£ õ¶, à÷¬ñ ñ£PèO¡ õ¬óªò¬ô ܬõ ÜPMèð´÷ ªêòÃP ÜìAM´Aø¶. W«ö»÷ Gó¬ô «ï£°è:
lifetime)
#include <stdio.h> main() { add(); add(); } add() { int i = 0; i = i + 1; printf(%d\n, i); } Þî GóL¡ ªõOf´, 1 1 259
âù ܬñ». i â¡ð¶, add() ªêòÃP¡ à÷¬ñ ñ£P. å ªõ£¼ º¬ø add() ªêòÃÁ ܬöèð´«ð£¶, i â¡Â ñ£P ¹Fî£ à¼õ£èð´ 0 â¡Â ªî£ìèñF¹ Þ¼îð´Aø¶. âù«õ M¬ì â«ð£¶«ñ 1 Ýè Þ¼°. Þ«î ñ£P static Þùñ£è ÜPMèð®¼H¡, ªêòÃÁ ªêòð´ º®î H¡  Üî¡ ñF¹ îè¬õ¶ ªè£÷𮼰. add() ªêò ÃP¬ù W裵ñ£Á ñ£P ܬñè¾: add() { static int i = 0; i = i + 1; printf(d\n, i); }
ÞF, i â¡Â ñ£P static Þùñ£è ÜPMèð´÷¶. Þ¶ add() ªêòÃP¡ à÷¬ñ ñ£Pò£°. Þî¡ õ¬óªò¬ô add() ªêòÃÁ° ñ´«ñ. Þî¡ ñF¬ð «õªøî ªêòÃÁ Üµè º®ò£¶. static ñ£Pè, ºî¡ºîL ªêòÃÁ ܬö èð´«ð£¶ å«óªò£¼ º¬ø ñ´«ñ à¼õ£èð´A¡øù. ªêò ÃÁ ªêòð´ º®îH¡Â ÜõP¡ ñF¹è¬÷ îè¬õ¶ ªè£÷ º®». Þ¶«õ static ñ£PèO¡ Iè ªðKò ÜÂÃôñ£°. âù«õ åªõ£¼ º¬ø add() ªêòÃÁ ܬöè𴠫𣶠i-¡ ñF¹ å¡Á I°èð´ ªõOf´, 1 2 âù ܬñ». «ñèì GóL, i â¡Â ñ£P¬ò å¼ º¿î÷£Mò (global) ñ£Pò£è ÜPM¶, ê«ø ñ£P â¿F ð£«ð£. º¿î÷£Mò ñ£Pè main() ªêòÃP° «ñ«ô ÜPMèð´A¡øù. Þî ñ£Pè¬÷, GóL à÷ ܬù¶ ªêòÃÁèÀ ܵèô£, ñ£Pò¬ñèô£.
260
#include <stdio.h> int i = 0; main() { add(); add(); } add() { i = i + 1; printf(%d\n,i); } Þî
GóL¡ ªõOf´ Þõ£Á ܬñ»: 1 2
«ñèì GóL, i â¡ð¶ å¼ º¿î÷£Mò ñ£Pò£°. ܬù¶ ªêòÃÁèÀ Þî¬ù Üµè¾ ñ£Pò¬ñè¾ º®». static ñ£Pè, à÷¬ñ ñ£PèO¡ ðHò¹è¬÷ ªè£ ´÷ù. º¿ Gó½ ªêòð´ º®îHø«è static ñÁ º¿î ÷£Mò ñ£PèO¡ õ£ï£ º®¾° õ¼A¡ø¶. static ñ£PJ¡ õ¬óªò¬ô ܶ ÜPMèð´÷ ªêòÃÁ° ñ´«ñ. Ýù£ º¿î÷£Mò ñ£PJ¡ õ¬óªò¬ô, GóL½÷ ܬù¶ ªêòÃÁèÀ° ðóM AìAø¶. Þî «õÁð£´è îMó, å¼ ªêòÃP° ªõO«ò ÜPMèð´ º¿î÷£Mò ñ£Pè Þòð£è«õ static Þù°¿¬õ ê£î¬õ«ò. Ýù£, static ñ£P, å¼ º¿î÷£Mò ñ£P Üô â¡ð¬î ñùF ªè£è. register ñ£Pè, auto ñ£Pè¬÷ «ð£¡«ø Þò°A¡øù. å¼ ñ£P register Þùñ£è ÜPMèð´ñ£J¡, Üî¡ ñF¹, èE ªð£PJ¡ ÜF«õè õ¡ªð£¼ ðFõèè (registers) å¡P Þ¼F ¬õèð´Aø¶. G¬ùõè Üµè «ïó¬î °¬ø¶, ªêò ð£´è¬÷ «õèð´î register ñ£Pè ðò¡ð´A¡øù.
º¿î÷£Mò ñ£Pè¬÷, å¼ Gó «è£H à÷ ªêò 261
ÃÁè÷£ ܵ躮». º¿î÷£Mò ñ£Pè ÜPMèð´÷ «è£¹ Üô£î Hø «è£¹èO à÷ ªêòÃÁè Üµè «õ®ò «î¬õJ¼H¡, Üõ¬ø extern Þù°¿M ÜPM¶ ¬èò£÷ô£. â´¶è£ì£è, count â¡Â º¿î÷£Mò º¿â ñ£P¬ò å¼ «è£H ÜPM¶, Üî¬ù «õªø£¼ «è£H â´î£÷ «õ´ªñQ, Þóì£õ¶ «è£H, Üî ñ£P¬ò ðò¡ð´¶õî° º¡ð£è, extern int count ;
â¡Aø ÜPM¹ Þ¼è «õ´. extern ñ£Pè º¿î÷£Mò õ¬óªò¬ô ªè£ì¬õ. ÜõP¡ õ£ï£, Gó ªêò𴠪裮¼° õ¬ó ªî£ì¶ G¬ôF¼°. 4.5 Gðî¬ù ÃÁè (Conditional Statements) 4.5.1 if ÃÁ C-ªñ£NJ Gðî¬ù ÃÁè ÌLò¡ «è£¬õè â¡Â 輬î«ò ꣶ÷ù. if ÃÁ, Gðî¬ù A¬÷HKî¬ô è´ð´¶Aø¶. ÌLò¡ «è£¬õ Üô¶ «õÁ ªðòK ÃÁõ ªîQ åd´ «è£¬õ, êK Üô¶ îõÁ â¡Aø ñF¬ð«ò M¬ìò£è î¼. C-ªñ£NJ 0 â¡ð¶ îõÁ, 0 Üô£î ñF¹ êK âù ªè£÷ð´. Gðî¬ù «è£¬õJ¡ ñF¹ êK Üî£õ¶ 0 Üô£î ñFð£è Þ¼î£ if ÃP¡ àìð°FJ ½÷ èì¬÷è G¬ø«õøð´. if ÃÁ° Þó´ õ®õ è à÷ù: 1. if (åd´ «è£¬õ) èì¬÷; 2. if (åd´ «è£¬õ) èì¬÷-1; else
èì¬÷-2 ; ºî õ®M, åd´ «è£¬õ êK (0 Üô£î ñF¹) âQ, Ü´¶÷ èì¬÷ ªêòð´îð´. «è£¬õJ¡ ñF¹ îõÁ (0 ñF¹) âQ, Ü´¶÷ èì¬÷ ¹øèEèð´. Þóì£õ¶ õ®M, else ðò¡ð´îð´÷¶. «è£¬õJ¡ ñF¹ îõÁ âQ èì¬÷-2 G¬ø«õøð´. Þó´ õ®õèO 262
½ GóL¡ è´ð£´, Ü´¶ if ÃÁ° Hø°÷ èì¬÷° î£MM´. ê£î£óí if ìø M÷° C-Gó¬ô è£è: #include <stdio.h> main() { int x; printf(Enter an integer: ); scanf(%d, &x); if (x > 0) printf(The value is positive\n); }
Þî Gó, ðòQìI¼¶ æ â¬í ã°. if ÃP¡ Gð î¬ù «è£¬õÍô Üî â 0-äMì ªðKî£ âù ðK «ê£F°. ªðKªîQ å¼ ªêF¬ò F¬óJ 裴. Þ¬ô «ò Gó ñ¾ùñ£AM´. ªõOf´ ⶾ Þó£¶. GóL à÷ (x > 0) â¡Â ð°F ÌLò¡ «è£¬õ âùð´Aø¶. C-ªñ£N, Þî «è£¬õ¬ò ñFH´, ªêF¬ò è£ìô£ñ£ Ãì£î£ â¡ ð¬î bñ£QAø¶. ÌLò¡ «è£¬õJ¡ ñF¹ êK âQ, if ÃÁ° Ü´F¼° å¬ø èì¬÷¬ò (Üô¶ if ÃÁ° Ü´F¼° ªïO¾ Ü¬ì¹ °PèÀ° Þ¼° èì¬÷ èO¡ ªî£°F¬ò) C-ªñ£N G¬ø«õÁ. ÌLò¡ «è£¬õ îõÁ âQ, if ÃÁ° Ü´F¼° èì¬÷¬ò Üô¶ èì¬÷ èO¡ ªî£°F¬ò C-ªñ£N G¬ø«õø£ñ îM¶M´. Þ¡ «ù£ ⴶ裬ì ð£¼è: #include <stdio.h> main() { int x; scanf(%d, &x); if (x < 0) printf(The value is egative\n); else if (x == 0) printf(The value is zero\n); else printf(The value is positive\n); }
263
Þî ⴶ裮, if-else-if èì¬÷ ܬñ¹ ðò¡ ð´îð´÷¶. Þî¬ù H¡ù (nested) if-else ܬñ¹ âù ܬöèô£. ªîK¾èO¡ (choices) Ü®ð¬ìJ Cô ªêò𣴠è¬÷ G¬ø«õø H¡ù if-else ܬñ¹ ðò¡ð´îð´Aø¶. èEîF æ âO¬ñò£ù èí¬è â´¶ªè£«õ£. ðòù K¡ ªîK¾ Ü®ð¬ìJ Ãì, èNî, ªð¼è, õ°î ÝAò ªêòð£´è G¬ø«õøðì«õ´. ªîK¾è¬÷ F¬ó J 裮 ðòùK¡ M¼ð¬î ªðøô£. Þî Gó¬ô Þó´ õNèO â¿îº®»:
âOò if ðò¡ð´F#include <stdio.h> main() { int a,b,c,choice; scanf(%d%d, &a,&b);
/*b ²Nò Þ¬ô */
printf(1. addition\n);
/* «î¾ 1 */
printf(2. subtraction\n);
/* «î¾ 2 */
printf(3. multiplication\n);
/* «î¾ 3 */
printf(4. division\n); /* «î¾ 4 */ scanf(%d, &choice); if(choice == 1) c = a + b; if(choice == 2) c = a - b; if(choice == 3) c = a * b; if(choice == 4) c = a / b; printf(the result = %d\n, c); }
«ñèì Gó, ªîKM¡ Ü®ð¬ìJ èíW¬ì ªê¶ º®¶ M¬ì¬ò F¬óJ 裴. ðòù ªîK¾ â¶õ£JÂ, Þî GóL ªêòð´ åd´è ° Ý°. «î¬õòø åd´èÀ ªêòð´A¡øù. (choice ==1) â¡ð¶ êK Ýè Þ¼ 264
°«ð£¶, Hø åd´è¬÷ ªêò «î¬õJ¬ô; îM¶Mì ô£. Üõ£Á ªêò«õ´ªñQ H¡ù if-else ðò¡ð´î «õ´.
H¡ù if-else ܬñ¬ð ðò¡ð´F#include <stdio.h> main() { int a,b,c; int choice; printf(Enter two integers: ); scanf(%d%d, &a,&b); /* b ²Nò Þ¬ô */ printf(1. addition\n); /* «î¾ 1 */ printf(2. subtraction\n); /* «î¾ 2 */ printf(3. multiplication\n); /* «î¾ 3 */ printf(4. division\n); /* «î¾ 4 */ printf(Enter your choice: ); scanf(%d, &choice); if(choice == 1) c = a + b; else if(choice == 2) c = a - b; else if(choice == 3) c = a * b; else if(choice == 4) /* åH´ èì£òI¬ô */ c = a / b; printf(the result = %d\n, c); }
«ñèì Gó, H¡ù if-else ܬñ¬ð ðò¡ð´F»÷¶. ºî Gðî¬ù êK âQ, Üî£õ¶ (choice == 1) â¡ð¶ êK âQ, c = a + b ; â¡Â èì¬÷ G¬ø«õøð´. else- ° 265
Hø° ܬñ¶÷ èì¬÷ îMèð´. âù«õ, ºî Gð î¬ù êK Ýè Þ¼H¡ å«ó«ò£ åd´ ñ´«ñ ªêòð´ Aø¶; Hø åd´è îMèð´A¡øù. ºî Gðî¬ù îõÁ âù Ý°«ð£¶î£¡, Góô£ù¶ Þóì£õ¶ åd´° ªê ½. Þ¶«ð£ô«õ, Ü´î´î Gðî¬ù êK ð£èð´. Þî Gó º¬îò Gó¬ôMì «õèñ£è ªêòð´. Ýù£ ªîK¾ 4 âQ, Þó´ GóèÀ«ñ ° åd´è¬÷ ªêò«õ®J ¼°. 4.5.2 switch-case ÃÁ C-ªñ£N GóL Cô ÅG¬ôèO CèI°î H¡ù ifelse ܬñ¹° ñ£ø£è switch-case ÃP¬ù ðò¡ð´î º® ». Cèô£ù Gðî¬ù ñÁ A¬÷HKî ªêòð£´è¬÷ è´ð´î switch-case ÃÁ àî¾Aø¶. switch ÃÁ GóL¡ è´ ð£¬ì Üî¡ àìð°FJ½÷ å¼ ÃÁ° ñ£ÁAø¶. switchcase ÃP¡ ªî£ìó¬ñ¬ð è£è: switch (Gðî¬ù «è£¬õ) { case
ñ£PL«è£¬õ-1: ............................... break ;
case
ñ£PL«è£¬õ-2: ...............................
break ; ............................... .............................. default : .................................... }
ÃP ޼° Gðî¬ù «è£¬õ ñÁ ñ£PL «è£¬õèO¡ îóMù º¿â Þùñ£è Þ¼è«õ´. âî case- ¡ ñ£PL «è£¬õ ñF¹, switch- ¡ Gðî¬ù «è£¬õ ñF¹ì¡ å¶÷«î£ Üî case ÃÁ° GóL¡ è´ð£´ ñ£øð´. switch ÃP âî¬ù case ÃÁè «õ´ñ£ù£ ½ Þ¼èô£. Ýù£, å¼ switch ÃÁ° Þó´ case ÃÁè å«ó ñ£PL «è£¬õ¬ò ªè£®¼èÃ죶. switch ÃP¡ àìð°F° G¬ø«õø¶° «îªî´èðì case switch
266
ÃP ªî£ìA, àìð°FJ¡ ÞÁF õ¬óJ«ô£ Üô¶ å¼ break ìø êF° õ¬óJ«ô£ ܬù¶ case ÃÁèO¡ è ì¬÷èÀ G¬ø«õøð´. å¼ °PHì case ÃP¡ W¿÷ èì¬÷ªî£°F G¬ø«õøðìH¡ GóL¡ è´ð£´ switch- ¡ àìð°F¬ò M´ ªõO«ò õ¶Mì break èì¬÷¬ò ðò¡ ð´î «õ´. Þ¬ô«ò Ü´¶÷ case ÃP¡ èì¬÷ ªî£°FèÀ G¬ø«õøð´. âîªõ£¼ case -¡ ñ£PL «è£¬õ ñF¹ switch -¡ Gð î¬ù «è£¬õ ñF¹° Gèó£ Þ¬ôªòQ, default ÃÁ° H¡Â÷ èì¬÷ ªî£°F G¬ø«õøð´. switch- ¡ àì ð°FJ default ð°F Þô£î«ð£¶, âîªõ£¼ case ÃP¡ ñF ¹ Gðî¬ù «è£¬õJ¡ ñF«ð£´ 嶫ð£èM¬ô âQ switch-¡ àìð°FJ½÷ âîªõ£¼ ÃP¡ èì¬÷èÀ G¬ø «õøðì ñ£ì£¶. default ÃÁ èì£òñø¶. «î¬õªòQ °P Hìô£. àìð°FJ¡ ÞÁFJ Þìªðø«õ´ â¡ð F¬ô. â° «õ´ñ£ù£½ Þìªðøô£. âOò èEî ªêò ð£´è¬÷ G¬ø«õø H¡ù if-else ܬñ¬ð ðò¡ð´F â¿ Fò Gó, switch-case ìø ðò¡ð´F â¿îð´÷¶ è£è: #include <stdio.h> main() { int a,b,c; int choice; printf(Enter two integers: ); scanf(%d%d, &a,&b); /*b ²Nò Þ¬ô*/ printf(1. addition\n); /* «î¾ 1 */ printf(2. subtraction\n); /* «î¾ 2 */ printf(3. multiplication\n); /* «î¾ 3 */ printf(4. division\n); /* «î¾ 4 */ printf(Enter your choice: ); scanf(%d, &choice); switch(choice) { case 1: c = a + b; printf(%d, c); break; case 2: c = a - b; printf(%d, c); break;
267
case 3: c = a * b; printf(%d, c); break; case 4: c = a / b; printf(%d, c); break; default: printf(the choice is out of range\n); } Þî Gó ÃÁG¬ô (Modular) ܬñH à÷¶. H¡ù ifܬñ¹ ðò¡ð´îðì Gó¬ô 裮½ 𮶠¹K¶ ªè£÷ âO¬ñò£ à÷¶. îóðì ⿶, àJªó¿î£ (vowel), ªñªò¿î£ (consonant) â¡ð¬î èìP» Þ¡«ù£ â´¶ 裴 Góð°F è£è: else
char ch; ch = a; switch(ch) { case a: case e: case i: case o: case u: printf(the given character is vowel); break; default: printf(the given character is consonant); } «ñ«ô»÷ ⴶ裮, ch â¡Â ñ£PJ¡ ñF¹ a â¡ðî£ ºî case êK â¡ø£Aø¶. ÜF break ÃÁ Þ¬ô â¡ðî£, Gó, Ü´î case ÃÁ° ªê½. Ü° break Þ¬ô. break ìø êF° õ¬ó Ü´î´î case ÃÁèÀ° ªê½. ÞÁFò£è case u: ìø ܬì». îóðì ⿶ a, 268
, u ÞõÁ â¶õ£è ޼, Góô£ù¶ u-¾° õ¶ «ê¼. Üî°Kò èì¬÷è¬÷ G¬ø«õÁ. given character is vowel â¡ø ªêF F¬óJ è£ìð´. Ü´¶, break èì¬÷ Þ¼ðî£, Gó, switch ìøM«ì ªõO«òÁ. îóðì ⿶ àJ â¿î£ Þô£î«ð£¶, default ð°F°Kò èì¬÷è G¬ø «õøð´. Üî¡H¡ Gó, ªïO¾ Ü¬ì¹ °Pè¬÷ M«ì ªõO«òÁ. e, i, o
4.6 è´ð£´ ÃÁè (Control Statements) ÃP Gðî¬ù êK âQ, Üî£õ¶ if - à÷ åd ´ «è£¬õJ¡ ñF¹ êK âQ, if- ÃP¡ àìð°F å«ó ªò£¼ º¬ø ñ´«ñ G¬ø«õøð´. Cô ÅG¬ô¬ñèO, °PHì Gðî¬ù êK Ýè Þ¼¶ ªè£®¼°õ¬ó, å¼ èì¬÷ ªî£°F¬ò F¼ð F¼ð G¬ø«õø «õ®ò «î¬õ Þ¼èô£. Þ«î¬õ¬ò G¬ø¾ªêò è´ð£´ (control) ÃÁè Üî£õ¶ ñì° (looping) ÃÁè «î¬õ. ñì° (Loop) â¡ð¶ GóL¡ å¼ ð°F. ªî£ìAò Þ춫è e´ õ¶ «î¬õò£ù îì¬õè F¼ð F¼ð G¬ø«õøð´ èì ¬÷èO¡ ªî£°F. C-ªñ£NJ Í¡Á õ¬èò£ù è´ð£´ ÃÁè (ñì°è) à÷ù. ܬõ: while, for,do while ÝAòù. if
4.6.1 while ÃÁ °PHì Gðî¬ù êK â¡ø G¬ôJ Þ¼°õ¬ó, è ì¬÷èO¡ ªî£°F¬ò F¼ð F¼ð ªêòð´î while ÃÁ ðò¡ð´Aø¶. while ÃP, èì¬÷ ªî£°F° ¸¬ö» G¬ô J«ô«ò Gðî¬ù êKð£èð´Aø¶. (ñì°, âî¬ù º¬ø ªêòð´îðì «õ´ â¡ð¬î å¼ è´ð£´ ñ£P Íô bñ£Qèô£). W«ö»÷ Gó å¡Á ºî ð¶ õ¬óJô£ù âè¬÷ Ü´î´î õKèO F¬óJ 裴. Þ«è, printf( ) ªêòìø 10 º¬ø ªêòð´î ñì° «î¬õð´÷¶.
269
#include <stdio.h> main() { int i; i = 1; /* ªî£ìè ñFH¼î */ while(i <= 10) /*Gðî¬ù */ { printf(%d\n, i); /*ªêòô£è ÃÁ */ i = i + 1; /*¹¶Hî */ } } Þî GóL, i â¡Â ñ£P è´ð£´ ñ£Pò£è ðò¡ð´Aø¶. while ñìA¡ G¬ø«õø¬î ܶ«õ è´ð´¶Aø¶. while ÃÁ° º¡«ð è´ð£´ ñ£P º¬øð® ÜPMèð´, ªî£ìè ñFH¼îð´÷¶. Þî Gó, ºî ð¶ Þò¹ âè¬÷ è£ì«õ´ â¡ð, è£ì«õ®ò ºî â 1 â¡ð è´ð£´ ñ£PJ ªî£ìè ñFð£è 1 Þ¼î ð´÷¶. ñì°, 10 º¬ø G¬ø«õøðì«õ´. âù«õ Gð î¬ù i <= 10 âù ܬñèð´÷¶. °Pðì Gðî¬ù êK âQ while ñìA¡ àìð°F 10 º¬ø G¬ø«õøð´. å ªõ£¼ º¬ø ñì° G¬ø«õø𴠫𣶠è´ð£´ ñ£P J¡ ñF¹ 1 I°èð´Aø¶. è£óí, êKò£è 𶺬ø ñ ´«ñ ñì° G¬ø«õøðì«õ´. «ê£î¬ù Gðî¬ù îõÁ âQ, GóL¡ è´ð£´ ñìA¬ù M´ ªõO«ò õ¶M´. ªõO«òPòH¡, ñìA¡ àìð°F¬ò Ü´¶ Þì ªðÁ÷ èì¬÷JL¼¶, GóL¡ ªêòô£è ªî£ì¼. e´ 强¬ø Gó¬ô àÁ «ï£°è. è´ð£´ ñ£PJ ªî£ìè ñF¹ Þ¼îðì àì«ù Üî¡ ñF¹ while ÃP ðK«ê£Fèð´ Aø¶. while ñì° º®õî° êÁ º¡ð£è (ªïO¾ ܬ칰 P° º¡ð£è) è´ð£´ ñ£PJ¡ ñF¹, 1 I°èð´Aø¶. while ÃP¡ ªî£ìó¬ñ¹: /* è´ð£´ ñ£Pè¬÷ ªî£ìA¬õî */ while (Gðî¬ù) { .................. ; /* èì¬÷è */ .................. ; ä è´ð£´ ñ£P¬ò ¹¶Hî ; } 270
è´ð£´ ñ£PJ¡ ñF¹, while ÃP¡ Gðî¬ù«ò£´ å H´ ð£èð´Aø¶. while ñìA¬ù º¬øò£è º®¶¬õè ñì°° è´ð£´ ñ£P º¬øò£è ¹¶Hèðì«õ´. i- ¡ ñF¬ð ¹¶H°. i = i +1 ;
â¡Aø õK, M´ð´ «ð£°ñ£J¡, è´ð£´ ñ£PJ¡ ñF¹ â«ð£¶ 1 Ýè«õ Þ¼°. ñì° â«ð£¶ º®¾° õó£¶. «ñèì GóL ªî£ìè ñFH¼î, Gðî¬ù, ¹¶H printf (%d\n, i) ; ° èì¬÷ ÝAòõ¬ø cAM´ ð£î£, â¡Â å«óªò£¼ èì¬÷ ñ´«ñ I
²Aø¶. ܶ«õ, Þî GóL¡ «ï£è¬î G¬ø«õP ¬õAø¶. HP«î£ ⴶ裴 ð£«ð£. 1, 2, 4, 7, 11, 16........ â¡ø â õK¬êJ 15 âè¬÷ 裴õ î° å¼ Gó¬ô â¿F ð£«ð£. â õK¬êJ Þóì£õ¶ â, º¬îò â«í£´ å¡ ¬ø îòH¡ ªðøð´Aø¶. Í¡ø£õ¶ â, º¬îò â «í£´ Þó¬ì îòH¡ ªðøð´Aø¶. è£õ¶ â, º¬îò â«í£´ Í¡¬ø îòH¡ ªðøð´Aø¶. Þ õ£ø£è Hø âèÀ ªðøð´A¡øù. Þî ñì° 15 º¬ø G¬ø«õøðì«õ´. Þ«î£ Gó: #include <stdio.h> main() { int term; int i; i = 1; /* ªêòô£è ñ£P*/ term = 1; /*è´ð£´ ñ£P*/ while(term <=15) { printf(%d\n, i); i = i + term; term = term + 1; } } 271
Þî GóL, term â¡Â ñ£P, ñìA¡ ªêòð£¬ì è ´ð´î ðò¡ð´îð´÷¶. i â¡Â ñ£P ªêòô£è ñ£P ò£è ðò¡ð´÷¶. Þî GóL ܬñ¶÷ î¼è (logic), i=i+term â¡Â èì¬÷¬ò ꣶ÷¶. õK¬êJ º¬îò âµì¡ term -¡ ñF¬ð î Ü´î â ªðøð´Aø¶. åªõ£¼ º¬ø ñì° ªêòð´«ð£¶ term-¡ ñF¹ 1 I°è ð´Aø¶. while ñìA¬ù ðò¡ð´F»÷ Þî GóL¡ ªõP, è´ð£´ ñÁ ªêòô£è ñ£Pè¬÷ º¬øò£è ðò¡ð´¶ õ¬î«ò ê£F¼Aø¶. è´ð£´ ñ£PJ ªî£ìè ñFH ¼î «õ´; Gðî¬ùJ ðK«ê£Fè «õ´, ñìA ¹¶Hè «õ´. ªêòô£è ñ£P» î¡ ð¬è ÝP»÷¶. æ while ÃP ޡ«ù£ while ìø H¡ùô£ ܬñè º®». àO¼° while ñì° ªõO while ñì¬èMì «õè ñ£è ªêòð´. Üî£õ¶ ªõO while ñì° º®¾° õ¼ º¡«ð à while ñì° º®¾° õ¶M´. å«õ£ while ñì °° è´ð£´ ñ£PèO º¬øò£è ªî£ìè ñFH¼î «õ´. ñì°è F¼ð F¼ð ªêòð´ âE¬è ¬ò è´ð´î º¬øò£ù Gðî¬ù¬ò ܬñè«õ´. ñìAÂ, è´ð£´ ñ£Pè º¬øð® ¹¶Hèðì«õ´. ⴶ裴:
å¼ Gó ⿶è: 1 强¬ø, Ü´î õKJ 2 Þ¼º¬ø, Ü´î õKJ 3 ºº¬ø... Þõ£ø£è 10 õ¬ó F¬óJ è£ì «õ´. ðî£õ¶ õKJ 10 𶺬ø Þìªðø «õ´. Þî Gó½° Þ¼ ñì°è «î¬õ. à-ñì° âî¬ù º¬ø ªêòðì«õ´ â¡ð¬î ªõOñì° bñ£Q°. Üî£õ¶, ªõO-ñìA¡ è´ð£´ ñ£PJ¡ ñF¹° ãð, åªõ£¼ º¬ø» à-ñì° F¼ð ªêòð´ âE¬è ܬñ». Gó¬ô «ï£°è:
272
#include <stdio.h> main() { int i, j; i = 1; while(i<=10) { j = 1; while(j <= i) { printf(%d , i); j++; } printf(\n); i++; } } Þî GóL¡ ªõOf´ Þõ£Á ܬñ»: 1 2 2 3 3 3 ................... 1 0 10 10 10 10 10 10 10 10 10 Þî GóL, å«õ£ âµ° à-ñì° i îì¬õè F¼ð¾ Þòèð´Aø¶. i â¡ð¶ ªõO-ñìA¡ è´ð£´ ñ£Pò£°. 4.6.2 for ÃÁ C-ªñ£NJ¡ for ñì°, while ÃP¬ù ²¼ªè¿¶ º¬øJ ⿶õ«î Ý°. â´¶è£ì£è, å¼ C-GóL¡ å¼ ð°F¬ò è£è: x=1; while (x<=10) { printf(%d\n, x); x++; }
273
Þð°F¬ò for ñì° ðò¡ð´F W«ö à÷õ£Á ñ£P ò¬ñèô£: for(x=1; x<=10; x++) { printf(%d\n, x); } while ñìA å¼ ªî£ìè ñFH¼î (x=1), å¼ ðK«ê£î¬ù (x<=10), å¼ ñF¹ I°¹ (x++) ÝAò Í¡Á ð®G¬ôè Þ¼
ð¬î «ï£°è. Þî Í¡Á ð°Fè¬÷» å«ó õKJ ܬñ ¶ªè£÷ for ñì° Þì ªè£´Aø¶. for ñìA½, ¸¬ö» G¬ôJ«ô«ò Gðî¬ù ðK«ê£Fèð´Aø¶. for ñìA¡ àì ð°F 10º¬ø ªêòð´Aø¶. ÞF, è´ð£´ ñ£PJ ºîL ªî£ìè ñF¹ Þ¼îð´Aø¶. Hø° Üî¡ ñF¹ ðK«ê£Fè ð´Aø¶. Gðî¬ù êK âQ, ñìA¡ àìð°F ªêòð´î ð´Aø¶. Þ¬ô«ò, ñì° º®¶ªè£÷ð´, ñì°° Ü´¶ ÞìªðÁ÷ ÃÁè¬÷ G¬ø«õø ªî£ì°Aø¶. ñìA¡ àìð°F ªêòð´îðìH¡, GóL¡ è´ð£´ e´ for ÃÁ° õ¼. è´ð£´ ñ£P ¹¶Hèð´. Ü´¶, Gðî¬ù ðK«ê£Fèð´. Gðî¬ù êK Ýè Þ¼ °õ¬ó ñì° F¼ð F¼ð Þòèð´. for for {
}
ñìA¡ ªî£ìó¬ñ¹: (ªî£ìè ñF¹ Þ¼î; Gðî¬ù; ¹¶Hî) ñìA¡ àìð°F ;
for ñì¬è» å¡P å¡ø£ ܬñèô£. 1 å¼ º¬ø, 2 Þ¼º¬ø, 3 ºº¬ø, .......... ⿶ Gó¬ô H¡ù for ñì° ðò¡ð´F â¿F ð£«ð£:
274
#include <stdio.h> main() { int i; int j; for(i=1;i<=10;i++) { for(j=0;j<=i;j++) printf(%d , i);
}
à-ñì° Inner Loop
printf(\n); }
à for ñìA å«óªò£¼ èì¬÷ à÷¶. ªõO for ñìA Þó´ èì¬÷è à÷ù. ñìA¡ àìð°FJ å«óªò£¼ èì¬÷ ñ´«ñ Þ¼°ñ£J¡, ñìA¡ àìð° F¬ò ªïO¾ ܬ칰PèÀ° ܬñè «õ®òF¬ô. ñì° ðò¡ð´F ªêòð´ å¼ ðE¬ò for ñì° ðò¡ð´F» ªêò º®». âî¬ù º¬ø ñìA¬ù ªêò ð´î«õ´ â¡Aø âE¬è ¶Lòñ£è º¡«ð ªîK» ªñQ ÜðE° for ñìA¬ù ðò¡ð´¶õ¶ Cøî Góô£è ï¬ìº¬ø Ý°. âî¬ù º¬ø â¡ð¬î ñì° ªî£ì° º¡«ð GêJè º®ò£î ÅG¬ôèO while ñì° àèî¶. while
275
ⴶ裴:
#include <stdio.h> main() { char ch; int count = 0; ch = getchar(); while(ch != \n) { }
/* Gðî¬ù*/
count++; ch = getchar();
printf(the number of characters entered: %d\n, count); } «ñèì ⴶ裮, ðòù M¬êðô¬èJ Enter M¬ê¬ò Ü¿¶ õ¬ó ñì° ªêòð´. ܶõ¬óJ, â î¬ù º¬ø ñì° ªêòðì«õ´ â¡ð¬î º¡Ã®«ò èE躮ò£¶. ch â¡Â ñ£P, ¹Fò õK °P»¼¬õ (\n) M¬ê ðô¬è õNò£è ªðø¾ì¡ (ðòù Enter M¬ê¬ò Ü¿Fò ¾ì¡), Gðî¬ù îõÁ â¡Á Ý°. GóL¡ è´ð£´ while ñìA¡ àìð°F° Ü´¶ ÞìªðÁ÷ printf() ÃÁ° ªê¡Á M´. Þî ðE° while ñì° àèî¶. è£óí, ðòù âî¬ù ⿶è¬÷ àk´ ªêõ£ â¡ð¬î ¶Lòñ£è º¡«ð èEè º®ò£¶. Þî GóL, M¬êðô¬è JL¼¶ å¼ «ïóF æ â¿¬î ªðÁõî° getchar() â¡Â ªêòÃÁ ðò¡ð´îð ´÷¶. Þ¶ º¡-õ¬óòÁèðì ªêò Ãø£°. 4.6.3 do-while ÃÁ ñìA ¸¬ö» G¬ôJ«ô«ò Gðî¬ù êKð£è ð´Aø¶. ºî îì¬õ«ò Gðî¬ù îõÁ ÝA«ð£ù£, ñì A¡ àìð°F 强¬øÃì ªêòð´îð죶. do-while ÃP, ªõO«òÁ G¬ôJ Gðî¬ù êKð£èð´Aø¶. âù«õ, Gðî¬ù êK Üô¶ îõÁ âð® Þ¼HÂ, ñìA¡ àì 276 while
ð°F °¬øî¶ å¼ º¬ø«ò ªêòð´îð´. do-while ñì A¡ ÞÁFJ Gðî¬ù êKð£èð´, êK âQ ñì° e ´ å¼ º¬ø ªêòð´îð´. Gðî¬ù êK Ýè Þ¼° õ¬ó Þªêòô£è ªî£ì¼. Gðî¬ù îõÁ Ýù¾ì¡, ñì° º®¾° õ¼. GóL¡ è´ð£´, do-while ÃÁ° Ü´¶÷ èì¬÷° ñ£øð´. ⴶ裴: x = 14; do { y = x + 2; x; } while (x > 0);
Þî do-while ÃP, x-¡ ªî£ìè ñF¹ â¡ùõ£è ޼, y=x+2; x -- ;
â¡ø Þ¼ èì¬÷èÀ ºîº¬ø ªêòð´îð´. Üî¡Hø° x > 0 â¡Â Gðî¬ù ñFHìð´. x, 0 -äMì ªðKî£è Þ¼ H¡, ñìA¡ àìð°F e´ ªêòð´îð´. Hø° x > 0 â¡Â Gðî¬ù e´ ñFHìð´. x-¡ ñF¹ 0-äMì ªðKî£è Þ¼°õ¬ó ñìA¡ àìð°F e´ e´ ªêò ð´îð´. x-¡ ñF¹ 0 Ý°«ð£«î£, âFñ (negative) â Ý°«ð£«î£ do-while ÃP¡ ªêòô£è GÁîð´. Ýè, dowhile ñìA àìð°F °¬øî¶ å¼ º¬ø«ò ªêòð´ îð´.
4.7 ÜEè (Arrays) å¼ð®î£ù àÁ¹èO¡ Üî£õ¶ å«ó îóMù àÁ¹èO¡ ªî£°¹ ÜE âùð´Aø¶. ÜEè¬÷ ðò¡ð´Fù£ ðô «ïóèO Góô£è (programming) âOî£A «ð£°. â´¶è£ ì£è, Í¡Á º¿âèO ªðKò â¬í èìPò «õ´. Í¡Á îQîQ ñ£Pè¬÷ ðò¡ð´î º®». âOò if ÃÁ è¬÷ ðò¡ð´F â¿îðì Gó¬ô W«ö è£è: 277
#include <stdio.h> main () { int a, b, c; int max; printf(Enter the 3integers:); scanf(%d %d %d,&a,&b,&c); max = a; if(b > max) max = b; if(c > max) max = c; printf (%d is the maximum ,max); } Þî Gó¬ô, 100 âèO ªðKò â¬í èìP»ñ£Á c®«ð£ âQ, 100 îQîQ ñ£Pè¬÷ ðò¡ð´î«õ´. ËÁ° «ñðì if- ÃÁè¬÷ ðò¡ð´î «õ®J¼°. Þ¶ Gó¬ô ÜFè Cèô£°. Iè cì. «ñ½, Þ¶ êKò£ù Góô£è õNº¬ø Ý裶. Þî Cè¬ô bè âOò õN 100 º¿ âèÀè£ù å¼ ÜE¬ò ÜPMð«î:
int a [100]; Þù type
Array name ÜE array name ªðò
Number of number of elements àÁ¹èO¡ elements
âE¬è
å¼ õK¬ê° Þ¼° 100 ªõ«õÁ âè¬÷ àKò ²´ â (index) Íô ܵ躮». 100 ªõ«õÁ ñF¹è¬÷ Þ¼F ¬õè 100 ñ£Pè¬÷ ðò¡ð´î «õ®ò Cèð£¬ì °¬ø Aø¶. æ ÜE ÜPM¹, ÜEJ¡ ªðò¬ó °PH´Aø¶; Üî¡ àÁ¹èO¡ îóMù¬î ªîKMAø¶. ê¶ó ܬ칰P èÀ° å¼ ñ£PL «è£¬õ¬ò ðò¡ð´î «õ´. ܶ àÁ¹èO¡ âE¬è¬ò °PAø¶. Üî¡ ñF¹ â«ð£¶ 0-äMì ªðKòî£è Þ¼è «õ´. æ ÜEJ¡ «êIHì â¡ð¶ Üî ÜEJ½÷ ܬù¶ àÁ¹è¬÷» «êIè «î¬õò£ù Þì¬î °PAø¶. æ ÜEJ¡ àÁ¹è ºî 278
àÁH ªî£ìA è¬ìC àÁ¹ õ¬ó, G¬ùõèF Ü´î´î Þ¼HìèO Þ¼îð´A¡øù. C-ªñ£NJ ÜE (array) â¡ð¶ å¼ ðKñ£í ªè£ìî£è Þ¼èô£ Üô¶ ðôðKñ£í ªè£ìî£è¾ Þ¼èô£. ÜE J¡ àÁ¹è¬÷ ²´ âè Íô Üµè º®». 10 º¿ â è ªè£ì æ å¼ðKñ£í ÜE¬ò Þõ£Á ÜPMèô£. int a[10]
/*
ÜE ÜPM¹ ÃÁ */
Gó ªêòðì ªî£ì°ªð£¿¶, GóªðòH (Compiler) Þî õK¬êJ¡ 10 àÁ¹è¬÷ Þ¼F¬õè ºî¡¬ñ G¬ùõ èF 20 ¬ð´è¬÷ å¶A¬õ°. è£óí å¼ º¿â µ° Þó´ ¬ð´ G¬ùõè Þì «î¬õ. Þî 10 àÁ¹ èÀ Ü´î´¶÷ G¬ùõè ÞìèO Þ¼îð´A¡øù. ÜE J¡ ²´â 0- ªî£ì°. æ ÜEJ n àÁ¹è Þ¼° ñ£J¡ 0- ªî£ìA n-1 õ¬ó»÷ ²´ âè Íô Üõ¬ø ܵèô£. ÜE àÁ¹èO W«ö à÷õ£Á ñFH¼îð´ A¡øù. a [0] = 10; a[1] = 20 ; ................... a[9] = 100;
ÜEJ¡ ²´ âEì ðPò Cø¹ ªêF â¡ùªõQ, ²´ âè¬÷ ¬èò£÷ å¼ ñìA¬ù ðò¡ð´î º®». â´¶è£ìì£è, W«ö»÷ Góð°F, ÜEJ¡ àÁ¹èO õK ¬êò£è ªî£ìè ñF¹ Þ¼¶Aø¶. int i; int a[10]; for(i=0;i<10;i++) scanf(%d, &a[i]);
«ñ«ô»÷ scanf() ÃP à÷ Þóì£õ¶ Ü÷¹¼ &a[i] â¡ð¶, i = 0 ºî 9 õ¬ó Þ¼° G¬ôJ i-õ¶ àÁH¡ ºèõK¬ò ²´Aø¶. scanf() ªêòÃÁ M¬êðô¬èJL¼¶ ñF 279
H¬ù ªðÁ, G¬ùõèF àKò ÞìF (ºèõKJ) Þ¼F ¬õAø¶. æ ÜEJ Þð®» ªî£ìè ñFH¼îô£. int a[3] = {10,15,20} ;
ÜEJ¡ àÁ¹è G¬ùõèF Þõ£Á Þ¼î𮼰: 948
950
952
ºèõK
10
15
20
àÁ¹èO¡ ñF¹è
a[0]
a[1]
a[2]
àÁ¹è¬÷ ܵ° ªðòè
åªõ£¼ º¿âµ 2 ¬ð´ G¬ùõè¬î â´¶ ªè£Aø¶. GóªðòH (Compiler) ªî£ìCò£è ÝÁ ¬ð´è¬÷ å¶A î¼Aø¶. Þ¶ G¬ùõè ªî£°F (block of memory) âù ð´Aø¶. ުFJ¡ ªî£ìè ºèõK ðìF è´÷ð® 948. a[0], a[1], a[2] ÝAò àÁ¹èO¡ ºèõKè º¬ø«ò 948, 950, 952 Ý°. ºî àÁH¡ ºèõK &a[0] â¡Á °PHìð´Aø¶. ïñ¶ ⴶ裮 Þî ºèõK 948 Ý°. Þî ºèõKJ ðFõ£A »÷ ñF¹ 10. a[0] â¡ø, àÁH¡ ªðò Íôñ£è Þî ñF¬ð ªðÁªè£÷ º®». âù«õ, a[0] -¡ ñF¹ 10, ºèõK 948 âù ªè£÷«õ´. GóªðòH, Þî ÜE°Kò G¬ù õè ªî£°F¬ò å¶W´ ªêîHø°, ܪFJ¡ ªî£ìè ºèõK¬ò (948), ÜEJ¡ ªðòK«ô«ò Þ¼F¬õAø¶. âù«õ, a, &a[0] ÝAò Þó´«ñ ÜEJ¡ ªî£ìè ºèõK¬ò °PA¡ øù. ÜEJ¡ ªðò a, ÜE¬ò ²´Aø¶ âù ªê£ôô£. Þð£¼, a, ªî£ìè ºèõK¬ò ²´Aø¶ â¡ð. «õÁ õ¬èJ ªê£õªîQ, a, ÜEJ¡ ºî àÁH¬ù ²´Aø¶ âùô£. a
948
950
952
10
15
20
a[0]
a[1]
a[2]
ï£ ãªèù«õ ÜPîð® à«ï£° ªêò°P¬ò ðò¡ð´F G¬ùõè ÞìF½÷ ñF¬ð ªðÁîó º®». âù«õ, *a â¡ð¶ 10 â¡Â ñF¬ð ªðÁî¼. «ñ½, 280
a[0]
*a *(&a[0]) ÝAò Í¡Á «è£¬õèÀ«ñ 10 â¡Aø ñF¬ð«ò î¼ â¡ð îPè. Ýè, a[0]
⇔ *a ⇔ *(&a[0])
âù ªê£ôô£. Þ«è, ⇔ â¡Â °Pf´, âô£õ¬èJ½ Þó´ å¡«ø â¡Â ªð£¼¬÷ î¼Aø¶. Þ°Pf´ C-ªñ£N ªêò°P Ü¡Á. «ñèì M÷èèOL¼¶, æ ÜEJ¡ ªî£ìè ºèõK (Üô¶ î÷ ºèõK) Üî ÜEJ¡ ªðòK«ô«ò Þ¼îð´A ø¶ â¡ð¬î ¹K¶ ªè£®¼dè. ÜEJ¡ ªðò, ºèõ K¬ò ªè£®¼ðî£ Ü¶ å¼ ²´ (pointer) ÝAø¶. Üî ªðò, ÜEJ¡ ºî àÁH¬ù ²®ªè£®¼Aø¶. ÜE J¡ ªðò, â«ð£¶ õK¬êJ¡ ªî£ìè ºèõK¬ò ²® ªè£®¼° â¡ð¬î ñùF ªè£è. æ ÜEJ¡ î÷ ºè õK¬ò (base address) ñ£Pò¬ñè º®ò£¶. Üî£õ¶, ÜEJ¡ ªðò Þóì£õ¶ àÁ¬ð ²®ªè£®¼°ñ£Á ñ£Pò¬ñè º®ò£¶. ÜEJ¡ ªðòK Þ¼îð´÷ ºèõK¬ò ñ£Pò ¬ñè º®ò£¶ â¡ðî£ Ü¶ ²´ ñ£PL (pointer constant) ÝAø¶. ÜEèÀ ²´èÀ å¡Áªè£¡Á ªï¼èñ£ù ªî£ì¹ ¬ìò¬õ. x â¡Â ²´ ñ£P¬ò â´¶ªè£«õ£. int *x;
ãªèù«õ M÷Aòð®, Í¡Á º¿â àÁ¹è ªè£ì æ ÜE¬ò â´¶ªè£«õ£. int a[3] = {10, 15, 20};
ÞF x â¡ð¶ å¼ ²´ ñ£P (pointer variable). Þ¶ int Þù â¡ðî£, Þ¡«ù£ int Þù ñ£PJ¡ ºèõK¬ò ãÁªè£À. a â¡ð¶, æ int Þù ñF¬ð ²´. Üî£õ¶, ÜEJ¡ ºî àÁH¬ù ²´ ²´ ñ£PL (pointer constant) ÜEJ¡ î÷ ºè õK¬ò x â¡Â ²´ ñ£PJ Þ¼F ¬õ躮». 281
x=a;
Þ«ð£¶, x â¡Â ²´ ñ£P, ÜEJ¡ ªî£ìè ºèõK ¬ò ²® ªè£®¼°ñ£Á ªê¶«÷£. x â¡ð¶ (²´) ñ£P (variable) â¡ðî£, Gó ÞòAªè£®¼° «ð£«î Üî¡ ñF¬ð ñ£Pò¬ñ¶, ÜEJ «õªøî àÁH¬ù» ²´ ñ£Á ªêò º®». Þî¬èò ²´ èíW´ (pointer arithmatic) C-ªñ£NJ¡ à¡ùîñ£ù Cø¹ÃÁ Ý°. ²´è¬÷ º®»:
ªè£´ W裵 ªêòð£´è¬÷ Gèî
l
å¼ ²®¡ ñFH å¼ º¿â¬í Ãì«õ£, èN è«õ£ º®».
l
Þó´ ²´èO¡ ñF¹èO¬ì«ò èNî ªêòº®». W«ö»÷ M÷è ðì è£è: x a
948
950
952
10
15
20
a[0]
a[1]
a[2]
â¡ø ÃP¡ è£óíñ£è, x, a ÝAò Þó´«ñ ÜEJ¡ ºî àÁ¬ð«ò ²®ªè£´÷ù. Üî£õ¶, x, a Þó´ 948 â¡Â ºèõK¬ò ²´A¡øù. Þó®½ 0-ä îù£, x, a ÝAòõP¡ ºèõK ñF¹èO âMî ñ£øº ãð죶. à «ï£° ªêò°P * ðò¡ð´F Üî ºèõKJ½÷ ñFH¬ù ªðÁªè£÷ º®». âù«õ, *(a+0), * (x+0) ÝAò Þó´«ñ 10 â¡Â ñF¬ð ªðÁ î¼A¡øù. *(a+0) â¡Â «è£¬õ, ÜE J ºî àÁH¡ ñF¬ð ܵ°õîè£ù °Pñ£ù (notation) Ý°. ÜE¬êJ ºî àÁH¡ ñF¬ð õöèñ£è a[0] â¡Â ÜE °Pñ£ù ªè£´ ªðø º®» â¡ð¬î ÜP«õ£. W«ö »÷ Gèð£´è¬÷ è£è: x = a
x+0
⇔
*( x + 0 )⇔
*( a + 0 )
*( a + 0 ),
a[0]
a+0
ÝAò Þó´ å¡«ø â¡ðî£,
* (x+0) ⇔x[0] 282
â¡Á â¿î º®». ÞF, x â¡Â ²´ ñ£P»ì¡ 0 â¡Â Wå´ (subscript) Üô¶ ²´ â (index) «ê¶, ܶ ²® ªè£®¼° ÜEJ¡ ºî àÁ¬ð ܵ躮Aø¶. å¼ ² ®¬ù ²´õK¬ê Ýè º®» (a pointer can be idexed) â¡ð¬î Þî¡Íô ÜPòô£. å¼ ²´, ªî£ìCò£ù G¬ùõè ªî£° F¬ò ²® ªè£®¼°«ð£¶î£¡ Þ¶ ê£Fòñ£°. x+0 â¡ð¶ ºî àÁH¡ ºèõK. * (x+0) â¡ð¶ Üî ºèõKJ à÷ ºî àÁH¡ ñF¹. ÜEJ¡ ªðò a Üô¶ ²´ ñ£P x-àì¡ 1-ä îù£, Þóì£õ¶ àÁH¡ ºèõK A¬ì°. ⇔ a+1
x+1
Þ«è, å¼ ºèõKJ å¼ º¿â Ãìð´Aø¶. Þ¶, ê£î£óí èíW´ Ü¡Á, ²´ èíW´ Ý°. ºAòñ£ù Þî MFº¬ø¬ò G¬ùM ªè£è. ²´ èíW´èO, Ü ²´ ê£î îóMùF¡ Ü®ð¬ìJ«ô«ò Ü÷i´è ܬñ». Þ«è x, int Þù ñF¬ð ²´Aø¶. int Þù 2 ¬ð´è¬÷ ªè£ì¶. âù«õ Ü÷i´ è£óE (scale factor) 2 Ý°. Ýè, x+1 ⇔ 948 + 1 * 2 = 950 a+1 ⇔ 948 + 1 * 2 = 950 ⇔ &a[ 1 ] ............................. ............................. a+i
⇔ &a[ i ] ⇔ x + i
⇔ &x[ i ]
a+i â¡ð¶ ÜEJ i- õ¶ àÁH¡ ºèõK¬ò °PAø¶. *(a+i), i-õ¶ àÁH¡ ñF¬ð °PAø¶.
«ñèì M÷èèOL¼¶ cè ¹K¶ªè£÷ «õ® ò¬õ: ®
ÜEèÀ ²´èÀ ªï¼èñ£ù àø¾ ªè£ì¬õ.
®
å¼ ²®¬ù, æ ÜE «ð£ô«õ ð£Mè º®».
ⴶ裴:
10 º¿âè ªè£ì å¼ ÜE°Kò ñF¹è¬÷ M¬ê ðô¬èJL¼¶ ãÁªè£÷ å¼ Gó ⿶è: 283
#include <stdio.h> main() { int i; int a[10]; for(i=0;i<10;i++) scanf(%d, a+i); }
ªêòÃP, &a[i] â¡Á Þ¼è «õ®ò ÞìF a + i â¡Á ðò¡ ð´îð´÷¬î «ï£°è. è£óí, Þó´ å¡ Áªè£¡Á Gèó£ù¬õ â¡ð¬î ãªèù«õ GÁM»«÷£. i = 0 Ýè Þ¼°«ð£¶, a + i â¡ð¶ ºî àÁH¡ ºèõK¬ò î¼ Aø¶. i = 1 Ýè Þ¼°«ð£¶, Þóì£õ¶ àÁH¡ ºèõK¬ò î¼Aø¶. Þõ£ø£è, a + i Íô ܬù¶ ºèõKè¬÷» ªðø º®Aø¶. scanf()
Þ¶õ¬óJ ï£ º¿â ÜEè¬÷», ²´è Íô Üõ¬ø âõ£Á ¬èò£õ¶ â¡ð¬î» ð£«î£. ïñ¶ Ü´î «ï£è °P»¼ ÜE Ý°. 24 ⿶è (ªð¼ð£ô£ù Å G¬ôèO °P»¼ â¡ð¶ ⿬î«ò °PAø¶) ªè£ì æ ÜE¬ò ÜPM«ð£. char name [24];
ÞF, name â¡ð¶ 24 â¿¶è ªè£ì æ ÜEò£°. G¬ùõèF ªî£ìCò£è 24 ¬ð´è å¶èð´. ªî£ìè ºèõK ÜEJ¡ ªðò name- Þ¼îð´. êó (string) â¡ð¶, Þ¡ñ °P»¼ (null character - \0) ¾ì¡ º®¾Á ⿶èO¡ ªî£°¹ âù õ¬óòÁèô£. âù«õ, å¼ êó¬î ¬èò£÷, ⿶èO¡ ÜE «î¬õð´Aø¶. M¬êðô¬èJL¼¶ å¼ êó¬î ªðÁõî°, scanf (%s, name);
â¡Â ÃÁ ðò¡ð´Aø¶. ÞF, å¼ êó¬î ð®è %s â¡Â õ®õ¬ñ¹ õ¬óò Á ¹ ð ò ¡ ð ´ î ð ´ ÷ ¶ . %s, ê ó F L ¼ ° ª õ Á Þ ì ªõO¬ò (blank space) õóªð¬ô °P»¼õ£è (delimiting character) è¼Fªè£À. âù«õ, ï´M ªõÁ ÞìªõO ªè£ì êó¬î ªðÁõî° Þî¬ù ðò¡ð´î Þòô£¶. «ñèì 284
ìø Þò°«ð£¶, ðòùK¡ àk´è£è è£F¼°. ðòù àO´ ܬù¶ ⿶èÀ name ²® ªè£®¼° ºè \0 â¡Â õKJ ªî£ìA, õK¬êò£è Þ¼îð´. ÞÁFJ Þ¡ñ °P»¼ î£ù£è«õ «ê¶ªè£÷ð´. êó¬î F¬ó J è£ì, printf (%s, name);
â¡ø ÃP¬ù ܬñèô£. õ®õ¬ñ¹ õ¬óòÁ¹ °P»¼õ£ù %s, name ²´ ªî£ìè ºèõK ªî£ìA, Þ¡ñ °P»¼ õ¬ó»÷ â¿¶è ¬÷ ªî£ìCò£è ªðÁ î¼. êó â¡ð¶, ⿶èO¡ ªî£°F (æ ÜE) â¡ðî£ Üî¡ îóMù char * Ý°. êó ñ£PL (string constant) »ì¡ ªî£ì¹¬ìò îóMù å¼ ²´ (char *) â¡ðî£, Üî¡ ñF¹ å¼ ºèõKò£ è Þ¼è º®», êóF¡ à÷ìè ñFð£è Þ¼è º® ò£¶. Ýè, å¼ êó ñ£PLJ¡ ñF¹, Üêó Þ¼îð´÷ G¬ùõè ªî£°FJ¡ ªî£ìè ºèõKò£°. W«ö»÷ Gó ð°F¬ò «ï£°è: if(rama == rama) printf(equal); else printf(not equal);
ÞF, Hø ñ£PLè åHìð´õ¬î «ð£ô«õ Gè ªêò°P Íô Þó´ êóè åHìð´÷ù. C-ªñ£N GóªðòH (Compiler) Þªî£ìó¬ñ¬ð ãÁ ªè£À. Þî Góð°F not equal â¡Â M¬ì¬ò î¼. ÞF, º¿è¾ å«ó ñ£FKò£ù Þ¼ êóè åHìðì«ð£¶, Þó´ êóèÀ G¬ùõèF ªõ«õÁ ÞìèO Þ¼îð´÷ù â¡ð¬î ñøè Ã죶. å¼ êó ñ£PLJ¡ ñF¹, ÜêóF¡ ªî£ìè ºèõK, êóF¡ à÷ìè¬î °P裶 â¡ð¬î ï£ ãªèù«õ ÜP«õ£. âù«õ, «ñèì åd®, G¬ùõè ÞìF¡ ºèõKè«÷ å Hìð´÷ù. ܬõ å¡ø£ù¬õ Üô. âù«õ, «ñèì Góð°F not equal â¡Â ªõOf¬ì î¼Aø¶. °PHì êóF½÷ ⿶è¬÷ âE ªê£½ å¼ Gó¬ô 裫ð£. string.h â¡Â î¬ô¹ «è£¹, êó¬î 285
¬èò£À ªêòÃÁè ðôõ¬ø à÷ìA»÷¶. å¼ êó ªêòÃÁ ðò¡ð´Aø¶. F¡ c÷¬î èìPò strlen() â¡Â strlen() â¡ð¶ º¡-õ¬óòÁèðì ªêòÃÁ. Þî¡ ñ£FK õ®õ string.h «è£H ÜPMèð´÷¶. strlen() ªêòÃP¡ ñ£FK õ®õ: int strlen (char * ); strlen() ªêòÃÁ, Ü÷¹¼õ£è å¼ êó¬î ãÁ, Üî¡ c÷¬î å¼ º¿âí£è F¼H ܹ. #include <stdio.h> #include <string.h> main() { char name[24]; int len; printf(enter a string: ); scanf(%s, name); len = strlen(name); printf(%d\n, len); }
Þî Gó M¬êðô¬èJL¼¶ å¼ êó¬î ªðÁ, Üî¡ c÷¬î èìP¶ M¬ì¬ò F¬óJ 裴. å¼ ªêòÃP°, æ ÜE¬ò Ü÷¹¼õ£è ÜÂH ¬õè «õ®J¼î£, ²´è¬÷ ðò¡ð´Fªè£÷ º®». êóF¡ c÷¬î ÜPò, ïñ¶ ªê£î ªêòÃP¬ù â¿F ð£«ð£. W«ö»÷ °Pº¬øJ, lenstr() â¡Â ªêòÃÁ, ðòù-õ¬óòÁî ªêòÃÁ (user-defined function) Ý°. õ®õ- 1: int lenstr(char *s) { int count = 0; while(s[count] != \0) count++; return(count); } rama â¡Â êó¬î Ü÷¹¼õ£è lenstr() ªêòÃP° ÜÂH¬õî£, ªêòÃP¡ º¬øò£ù Ü÷¹¼õ£ (s) ªðÁ ªè£÷ð´. ܶ å¼ °P»¼ ²´ (character pointer) Ý°. 286
âù«õ, s â¡ð¶ rama â¡Â êó¬î ²®ªè£®¼°. while ñì° count = 0-L¼¶ ªî£ì°Aø¶ â¡ðî£, s[0] êóF¡ ºî â¿¬î °P¶ GAø¶. Üî£õ¶ r â¡Â â¿¬î °PAø¶. ܶ Þ¡ñ°P»¼ Ü¡Á. while ÃP¡ Gðî¬ù êK â¡ø£Aø¶. âù«õ, while ñìA¡ àìð°F ªêòð´îð´Aø¶. count -¡ ñF¹ å¡Á I°èð´Aø¶. s[count] == \0 â¡ø£° õ¬ó, ñì° ªî£ì¶ ªêòð´îð´. ÞÁFJ ªêòÃÁ count- ¡ ñF¬ð F¼H ܹ. ܶ«õ, êóF ½÷ ⿶èO¡ âE¬è Ý°. õ®õ-2
int lenstr(char *s) {
int count = 0; while(*s != \0) { }
count++; s++;
return(count);
}
GóL¡ è´ð£´ ºî º¬ø ñìA ¸¬ö»«ð£¶, *s- , â¡ø êóF¡ ºî â¿î£ù r â¡ø ⿶ Þ¼°. while ñìA¡ àìð°FJ, åªõ£¼ º¬ø», ²´ I°èð´, êóF½÷ Ü´î´î ⿶è¬÷ ²´. *s, \0 Ý°õ¬ó Þî ªêòô£è ªî£ì¼. rama
õ®õ - 3
int lenstr(char *s) { char *start, *end; start = end = s; while(*end) end++; return(end start); }
287
ªêòÃÁ Þòèð´«ð£¶, start, end, s ÝAò ܬù ¶ °P»¼ ²´èÀ rama â¡Â êó¬î ²´ñ£Á ܬñ èð´÷ù. rama â¡Â êó Ü÷¹¼õ£è ÜÂH¬õè ð´Aø¶ . lenstr()
ªî£ìè
º®¾
ÝAò¬õ, êóF¡ ºî â¿F¡ ºèõKò£Aò 948-ä ²´Aø¶. end ²®¬ù \0 ä ²´õ¬ó ïèF ªêô while ñìA¬ù ðò¡ð´F»«÷£. ñì°, ªêòð£¬ì º® °«ð£¶, end ²´ 952 â¡Â ºèõK¬ò ²®ªè£®¼°. while ÃP¡ Gðî¬ù¬ò «ï£°è. ªî£ìèF * end - r â¡Â ñF¹ Þ¼°. ܶ 0 Üô â¡ðî£ Gðî¬ù êK â¡ø£°. * end - \0 â¡Â ñF¹ Þ¼°«ð£¶, ܶ 0 â¡ðî£ Gðî¬ù îõÁ ÝAM´Aø¶. while ñì° º®¾Á «ð£¶, end ²´ 952 â¡Â ºèõK¬ò ²®ªè£®¼°. start â«ð£¶ 948 â¡Â ºèõK¬ò«ò ²®ªè£®¼°. end-start (952-948) â¡Â «è£¬õ 4 â¡ø M¬ì¬ò î¼. Þî ñF¹ îóðì êóF à÷ ⿶èO¡ âE¬èò£è F¼H ÜÂðð´. å¼ ²®L¼¶ Þ¡ªù£¼ ²®¬ù èN °«ð£¶, Þó´ ²´èÀ° Þ¬ì«ò»÷ ¬ð´èO¡ â E¬è M¬ìò£è A¬ì°. ²´è¬÷ ªè£´ ÜEè¬÷ ¬èò£õ¬î, ²´ èíW´ â¡Â ð¹Ã«ø ê£Fòñ£A »÷¶ â¡ð¬î èõùF ªè£è. start, end, s
4.7.1 ðôðKñ£í ÜEè (Multi dimensional Arrays) C-ªñ£NJ ðôðKñ£í ÜE â¡ð¶, ÜEèO¡ ÜEò£ è è¼îð´Aø¶. Þ¼ðKñ£í ÜE Þõ£Á ÜPMèð´Aø¶: int a[3][3];
Þî ÜPM¹, 3x3 ÜE «è£¬õ¬ò (matrix) à¼õAAø¶. ÞF 9 àÁ¹è à÷ù. GóªðòH, Þî ÜE«è£¬õJ¡ àÁ¹è¬÷ Þ¼F¬õè, ªî£ìCò£ù 18 ¬ð´è¬÷ å¶A ¬õAø¶. ºî ðKñ£í, Aì¬èèO¡ (rows) âE¬è¬ò 288
°PAø¶. Þóì£õ¶ ðKñ£í ªï´¬èèO¡ (columns) â E¬è¬ò °PAø¶. Þî ÜE«è£¬õ° (Þ¼ðKñ£í) ñF¹è¬÷ ªðø, ïñ° Þó´ ²´ õK¬ê âè «î¬õ. å¡Á Aì¬è ²´ â (Row Index), ñø¶ ªï´¬è ²´ â (Column Index). C-ªñ£NJ ÜE ²´ â 0-M ªî£ì° Aø¶. ºî àÁ¬ð a[0][0] Íô ܵèô£. W«ö»÷ Gó ð°F¬ò «ï£°è: int a[3[[3]; int i; int j; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(%d, &a[i][j]);
Þî Góð°F, ÜE «è£¬õ°Kò ñF¹è¬÷ Aì¬è õ£Kò£è ªðÁAø¶. ªõO for ñìA i = 0 Ýè Þ¼°«ð£¶, à - ñì° j = 0, 1, 2 ÝAò ñF¹èÀ° Í¡Á º¬ø ªêò ð´Aø¶. âù«õ, ºî Aì¬èJ¡ Í¡Á â¬í ªðÁAø¶. Þ¶«ð£«õ, i = 1, i = 2 ÝAò ñF¹èÀ° à-ñì° ªêòð´ Aø¶. ñF¹è¬÷ àO´«ð£¶, âèÀA¬ì«ò å¡Á Ü ô¶ «ñðì ªõÁ ÞìªõO(è) M´ å¡ð¶ âè¬÷» ªî£ìCò£è àOì«õ´. Þî ÜE«è£¬õJ Í¡Á Aì¬èè à÷ù. åªõ£¼ Aì¬è» Í¡Á âè ªè£ì æ ÜE¬ò °PA¡øù. Þ¶, ÜEèO¡ ÜE õ®M à÷¶. ºî ðKñ£í Í¡Á àÁ¹è¬÷ ªè£´÷¶. å«õ£ àÁ¹ Í¡Á âè¬÷ ªè£ì æ ÜE¬ò °PA¡øù. ãªùQ Þóì£õ¶ ðK ñ£íº 3 âù à÷¶. W«ö»÷ ÜE «è£¬õ¬ò «ï£°è:
1 4 7
2 5 8
3 6 9
Þ¬î«ò, ÜEèO¡ ÜEò£è, Þõ£Á °PHìô£: 289
a[0] a[1] a[2]
{1, 2. 3} {4, 5, 6} {7, 8, 9}
ºî ðKñ£í 3 àÁ¹è ªè£ì æ ÜE. å«õ£ àÁ¹ å¼ º¿â ÜEò£°. âù«õ å«õ£ àÁ¹ å¼ º¿â ²´ (integer pointer) Ý°. Ýè , int a[3] [3] â¡Â ÜP M¹° Þõ£Á ªð£¼ M÷è îóô£. ºî ðKñ£í 3 º¿ â ²´è¬÷ ªè£ì æ ÜEò£°. Þóì£õ¶ ðK ñ£í 3 º¿ âè¬÷ ªè£ì æ ÜEò£°. Þóì£õ¶ ðKñ£í 3 º¿ âè¬÷ ªè£ì ºî Aì¬è¬ò ²´ Aø¶; ܶ å¼ º¿â ²´ Ý°. Ü«î «õ¬÷J a[0][0] â¡ð¶ ÜE «è£¬õJ¡ ºî àÁð£°. Üî£õ¶, ºî Aì¬èJ¡ ºî àÁ¹. a[1] â¡ð¶ Í¡Á º¿âè ªè£ì Þóì£õ¶ Aì¬è¬ò ²´Aø¶. C-ªñ£N GóªðòH, Þ¼ ðKñ£í ÜE¬ò Þî º¬øJ ¬èò£Aø¶. Ýù£ ñ£ ºî ðKñ£í Aì¬èè¬÷», Þóì£õ¶ ðKñ£í ªï´¬è è¬÷» °PA¡øù â¡Á è¼Fªè£A«ø£. 3x3 ðKñ£íº÷ ÜE«è£¬õ°Kò ñF¹è¬÷ ªðÁõ¶ âð® â¡ð¬î ï£ñP«õ£. Ü´¶, ÜE«è£¬õJ¡ àÁ¹ è¬÷ Aì¬è õ£Kò£è F¬óJ 裴 Góð°F¬ò â¿F ð£«ð£. for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) printf(%d , a[i][j]); printf(\n); } 3x3 ðKñ£í ªè£ì Þó´ ÜE«è£¬ õè¬÷î M¬ì¬ò Í¡ø£õ¶ ÜEJ ⿶, ÜE«è£¬õÃì (matrix Addition) Gó¬ô W«ö è£è:
290
#include <stdio.h> #include main() { int a[3][3], b[3][3], c[3][3]; int i, j; /* read values for the input matrix a */ for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(%d, &a[i][j]); /* read values for the input matrix b */ for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(%d, &b[i][j]); /* initialize the output matrix c with all elements 0 */ for(i=0;i<3;i++) for(j=0;j<3;j++) c[i][j] = 0; /* add matrix a and b and store the result in matrix c */ for(i=0;i<3;i++) for(j=0;j<3;j++) c[i][j] = a[i][j] + b[i][j]; /* print the resultant matrix c */ for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(%d , c[i][j]); printf(\n); } }
291
Þî GóL¡ åªõ£¼ ð°F¬ò» ï¡° ¹K¶ªè£À ªð£¼´ Ý裫è M÷辬óè (comments) «êèð´ ÷ù. æ ÜE«è£¬õJ½÷ Aì¬èè¬÷ îQîQò£è ¬èò£ À º¬ø¬ò M÷° Gó¬ô W«ö è£è. Þî Gó, ªè£´è ðì 3x3 ðKñ£í ªè£ì ÜE«è£¬õJ åªõ£¼ Aì¬è J½ à÷ âèO ªð¼ñ ñF¹ (maximum value) ⶪõù èìPAø¶. #include <stdio.h> #include main() {
int a[3][3], max[3]; int maximum(int *); /* declaration of user-defined function */ int i, j; clrscr();
/* to clear the contents of the screen */
/* read values for the input matrix a */ for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(%d, &a[i][j]); /* find the maximum in each row and store in the array max */ for(i = 0; i < 3; i++) max[i] = maximum(a[i]); /* print the max array */ for(i =0; i < 3; i++) printf(The maximum value of row %d = %d\n, i+1, max[i] ); } int maximum(int *x) {
int mvalue; mvalue = x[0]; for(i = 1; i < 3; i++) if(x[i] > mvalue) mvalue = x[i]; return(mvalue);
}
292
Þî GóL, 3 º¿â àÁ¹è ªè£ì ÜEJ ªð¼ñ ñF¬ð èìPò å¼ ðòù-õ¬óòÁî ªêòÃÁ â¿îð ´÷¶. ܪêòÃP¡ ªðò maximum() . ܶ, å«óªò£¼ int * Þù Ü÷¹¼¬õ ã°. å¼ º¿â ñF¬ð F¼H Ü ¹. ܶ«õ ªð¼ñ ñFð£°. Þî ªêòÃÁ main() ªêò ÃP, å¼ for ñìA 3 º¬ø ܬöèð´Aø¶. åªõ£¼ º¬ø maximum() ªêòÃÁ ܬöèð´«ð£¶, Í¡Á º¿ âè ªè£ì å¼ Aì¬è Ü÷¹¼õ£è ÜÂH¬õèð´ Aø¶. a[i], i =0,1,2 ÝAò Aì¬èè«÷ Ü÷¹¼è Ý°. ܬö èðì ªêòÃP, º¿â ²´ x â¡Â º¬øò£ù Ü÷ ¹¼M, åªõ£¼ Aì¬èJ¡ ªî£ìè ºèõK» ªðøð´ Aø¶. ãªèù«õ ï£ ÜPîð®, x â¡Â ²®¬ù ²´õK¬ê ò£è (ܶ 3 àÁ¹è ªè£ì õK¬ê¬ò ²´Aø¶ â¡ðî£) º®». Üî¡õN«ò ÜEJ¡ àÁ¹è¬÷ Üµè º®». å ªõ£¼ Aì¬èJ¡ ªð¼ñ ñF¹, º¬ø«ò mx â¡Â ÜE J Þ¼F¬õèð´A¡øù. Þõ£ø£è, æ ÜE«è£¬õJ½÷ åªõ£¼ Aì¬è¬ò» Üî¡ ªî£ìè ºèõK¬ò ðò¡ ð´F îQîQ«ò ¬èò£÷º®» â¡ðîPè.
4.8 è´¼è (Structures) C-ªñ£NJ è´¼ (structure) â¡ð¶ î¼Mèðì îó¾ Þù Ý°. Hø îóMù ñ£Pè¬÷ ªè£´ à¼õ£ èð´A¡ø¶. (ðô ñ£Pè¬÷ å¡ø£è è® à¼õ£èð´õî£ è´¼ ÝJÁ). ðòù-õ¬óòÁ° îóMùè¬÷ à¼õ£è è´¼è ðò¡ð´A¡øù. ªð£¶õ£è, å¼ «è£HQ «êI èð´ ã´è¬÷ (record) õ¬óòÁè è´¼è ðò¡ð´A¡øù. «è£¹ â¡ð¶ ã´èO¡ ªî£°¹. ã´ â¡ð¶ îèõ ¹ôèO¡ (fields of information) ªî£°ð£°. (derived data type)
å¼ ñ£íõ-ã´ W裵 ¹ôè¬÷ ªè£®¼èô£: õK¬ê â, ªðò, õò¶ Þ¹ôèO¡ ñF¹, 1001, Ýù, 18 âù Þ¼èô£. «ñèì ã´ Ýù â¡ø ñ£íõ¬ó ðPò îèõ 293
è¬÷ ªè£´÷¶. Üõó¶ õK¬êâ
1001, õò¶ 18 Ý°.
ÜE
â¡ð¶ å«ó îóMù àÁ¹èO¡ ªî£°ð£°. è ´¼ â¡ð¶ ªõ«õÁ îóMù àÁ¹èO¡ ªî£°ð£°. ÜE â¡ð¶ å¼ð®î£ù (homegeneous) àÁ¹èO¡ ªî£°¹. è´¼ â¡ð¶ èîð (hetrogeneous) àÁ¹èO¡ ªî£°¹. «ñèì ⴶ裮 ªê£ôðì ñ£íõ 㮽÷ ¹ôè ªõ«õÁ îóMùè¬÷ ê£î¬õ: õK¬êâ
: º¿â ¹ô
ªðò
: ⿶èO¡ ÜE
õò¶
: º¿â ¹ô
W«ö»÷
è´¼ õ¬óò¬ø¬ò
«ï£°è:
struct student { int rollno; char name[24]; int age; };
â¡ð¶ C-ªñ£NJ¡ Cø¹ ªê£. å¼ è´¼¬õ õ¬ó òÁè ðò¡ð´Aø¶. student â¡Â °Pªðò è´¼ å´ (structure tag) Üô¶ å´ ªðò (tag name) âùð´Aø¶. «ñ èì õ¬óò¬ø, 㮡 èì¬ñ¹ ðP, Üî£õ¶ âî¬ù ¹ôè¬÷ ªè£´÷¶, ܬõ âî îóMù¬î «êî¬õ â¡ø Mõóè¬÷ ïñ° ªîKMAø¶. è´¼M¡ õ¬óò¬ø 㮡 õ£¹¼¬õ (template) ñ´«ñ õö°Aø¶. ܶ 㮡 ªõÁ à¼õ¬ó«õ (skeleton) Ý°. è´¼ õ¬óò¬øJ, ªïO¾ ܬ칰PèÀ° ÜPMèð´÷ ñ£Pè (¹ôè) è ´¼M¡ àÁ¹è÷£° (members). å¼ è´¼ àÁ¹è ܬù¶ îQî (unique) ªðòè¬÷ ªè£®¼è «õ´. è´¼ õ¬óò¬ø ܬó¹O»ì¡ º®¾Á. è´¼ õ¬óò¬ø G¬ùõèF Þì â¬î» å¶W´ ªêò£¶. Üî£õ¶, è´¼¬õ õ¬óòÁ°«ð£¶ Üîè£ù G¬ùõè ð°F å¶èðì ñ£ì£¶. âù«õ, è´¼ õ¬óò¬ø°«÷ àÁ¹èO ªî£ìè ñFH¼î º®ò£¶. 294 struct
«ñèì ⴶ裮, è´¼M¡ Þù struct student â¡ ð. Þ«ð£¶, struct student â¡ð¶ ðòù-õ¬óòÁî å¼ ¹Fò îóMù ÝAM´. è´¼ õ¬óò¬ø å¼ ¹Fò îóMù¬î à¼õ£°Aø¶. ÜMùF, ñ£Pè¬÷ ÜPMè º®». Hø ñ£Pè¬÷ «ð£ô«õ è´¼ ñ£Pè¬÷ ÜPMè º®». ⴶ裴: struct student x, y; x, y ÝAò¬õ struct student Þù ñ£Pè÷£°. åªõ£¼ ñ£P » è´¼M õ¬óòÁîð® Í¡Á ¹ôè¬÷ ªè£´÷ù. åªõ£¼ struct student Þù ñ£P° ªñ£î 28 ¬ð´è å¶ èð´A¡øù.
è´¼¬õ â«ð£¶ å¼ º¿î÷£Mò ༪ð£¼÷£ (global entity) õ¬óò¬ø ªêõ¶ ïô¶. è£óí, GóL à÷ ܬù¶ ªêòÃÁèÀ° Üî¡ õ¬óò¬ø A¬ìèªðÁ. è´¼ ñ£Pè¬÷» º¿î÷£Mò ñ£Pè÷£è ÜPMè º® ». â´¶è£ì£è, struct student { int rollno; char name[24]; int age; } x, y ;
ÞF, è´¼¬õ õ¬óòÁ°«ð£«î è´¼ ñ£PèÀ ÜP Mèð´÷ù. å´ ªðò (tag name) Þô£ñ½ å¼ è´¼¬õ õ¬óòÁè º®». Üð® õ¬óòÁî£ Üîè£ù ñ£Pè¬÷ Ü«ð£«î ÜPM¶Mì«õ´. å´ ªðò Þ ¬ô«ò, è´¼ õ¬óò¬ø ðòù-õ¬óòÁî å¼ îóMùñ£è ãÁ ªè£÷ðì ñ£ì£¶. 295
ⴶ裴: struct { int empno; float salary; } x, y ;
Þî ⴶ裮 îóð´÷ è´¼ õ¬óò¬øJ¡ Ü® ð¬ìJ, x,y îMó «õÁ ¹Fò è´¼ ñ£Pè¬÷ à¼õ£è Þò ô£¶. å´ªðò Þô£ñ½, ¹ôè ⶾ Þô£ñ½ õ¬ó òÁèð´ è´¼è ðòùø¬õ, ܬìò£÷ñø¬õ. W«ö»÷ è´¼ õ¬óò¬ø¬ò ªè£´ ⶾªêò Þòô£¶: struct { int empno; float salary ; };
4.8.1 è´¼M¡ àÁ¹è¬÷ ܵ°î (Accessing the members of the structure)
è´¼M¡ àÁ¹è¬÷ (¹ôè) ܵ°õî°, ¹O ªêò°P (dot operator) ðò¡ð´Aø¶. ¹O ªêò°P»ì¡ è´¼ M¡ àÁ¹è¬÷ ܵ°«ð£¶, è´¼ñ£P å¼ ð¹íF (Qualifier) ò£è ðò¡ð´îð´Aø¶. â´¶è£ì£è, ñ£íõK¡ õK¬ê â¬í ܵè, Üî£õ¶, è´¼ ñ£P x Íôñ£è, rollno ¹ô¬î ܵè, ðò¡ð´îð´ °Pñ£ù: x.rollno
¹ôèO ñFH¼îô£; ¹ôèO¡ ñF¬ð ð®îPò ô£. x, y â¡Â ñ£íõèO¡ rollno ¹ôF ñFH¼¶ à Áè: x.rollno = 1000; y.rollno = 1001;
296
㮡 àÁ¹èÀ° ñF¬ð ªðÁõî° scanf() ªêò ìø Þõ£Á ܬñèô£: student
scanf (%d %s %d, &x.rollno, x.name, &x.age); student â¡Â è´¼M name â¡Â ¹ôªðò, 24 â¿¶è ªè£ì å¼ õK¬êJ¡ ªî£ìè ºèõK¬ò °PA ø¶. âù«õ, scanf() ªêòÃP, ñ£íõ x-¡ ªðò¬ó ªðÁ ªè£÷ x.name â¡Á ñ´ °PHì£ «ð£¶. ªõOð¬ì ò£è & ªêò°P¬ò ðò¡ð´F, &x.name â¡Á ܬñè«õ ®ò «î¬õJ¬ô â¡ð¬î ñùF ªè£è.
4.8.2 è´¼èÀè£ù ²´è (Pointers to Structures) Íô îóMùèÀè£ù ²´è¬÷ «ð£ô«õ è´¼è Àè£ù ²´è¬÷» ÜPMè º®». â´¶è£ì£è, struct student *ptr;
Þî ÜPM¹ ÃP, ptr â¡ð¶ ðòù-õ¬óòÁî îóM ùñ£ù struct student -ä ²´A¡ø å¼ ²ì£°. Ü«î Þù¬î ê£î «õªø£¼ è´¼ ñ£PJ¡ ºèõK¬ò ptr- Þ Þ¼îº® ». ⴶ裴: struct student s1; ptr = &s1 ;
/* ptr
âÂ
²´ è´¼ s1- ä ²´Aø¶ */
ptr Íôñ£è, è´¼ s1-¡ àÁ¹è¬÷ ܵè, ¹O ªêò °P° ðFô£è ܹ ªêò°P¬ò (->) ðò¡ð´î «õ´.
Üî£õ¶, rollno ¹ô¬î ܵè ptr->rollno â¡Â «è£¬õ¬ò ðò¡ð´î«õ´. (*ptr).rollno â¡ð¶ ð¬öò ªî£ìó¬ñð£°. 4.8.3 è´¼èO¡ ÜE (An array of structures) è´¼èO¡ ÜE¬ò Þõ£Á ÜPMèô£: struct student x[5] ;
ÞF, x â¡ð¶, ä¶ è´¼ àÁ¹èO¡ ÜEò£°. x[0], x[1], .....x[4] ÝAò¬õ, struct student Þù è´¼M¡ îQîQ àÁ¹è÷£°. ÞõP¡ ¹ôè¬÷, Þõ£Á ܵèô£: 297
x[0].rollno, x[0].name, x[0].age
ÜEJ à÷ Þóì£õ¶ àÁH¡ ¹ôèÀ° ñF¹ è¬÷ ªðÁªè£÷, scanf (%d %s %d,& x [1] -rollno, x [1].name, &x [1].age);
5 ñ£íõèO¡ ã´èÀ°Kò Mõóè¬÷ ªðÁõî°, for ñìA¬ù ðò¡ð´îô£. for (i=0; i<5; i++) scanf (%d %s %d, &x[i].rollno, x[i].name, &x[i].age);
Þ«î«ð£ô, ñ£íõèO¡ ã´è¬÷ å¡ø¡H¡ å¡ø£è F¬ó J 裴õî° for ñìA¬ù ðò¡ð´î º®». ã´è¬÷ õK¬êâ õ£Kò£è, ªðò õ£Kò£è Üô¶ õò¶õ£Kò£è «êIè º®». îQîQ ÜP¬èè¬÷ îò£Kè º®». ã´è¬÷ è´¼ õ®M ¬èò£÷ º®» â¡ðî£, îó¾î÷ ªêò𣴠èÀ° ªð¼ð£½ è´¼è ðò¡ð´îð´A¡øù.
ðJC Mù£è I. êK Üô¶ îõÁ âù °PH´è
1.
å¼ Gó¬ô ⿶õî° º¡ð£è ð£¾ðì õ¬óõ¶ èì£òñ£°.
2.
«ð£L °Pº¬øè¬÷Mì ð£¾ðìè âOî£ù¬õ.
3.
b¾ªïP (Algorithm) â¡ð¶ õó¹Á âE¬èJô£ù ð® G¬ôè¬÷ ªè£®¼è «õ´.
4.
GêJFì£î 𡺬ø ªêòL (Indefinite Iteration) ²´ â ñ£P (Index variable) ðò¡ð´îð´Aø¶.
5.
GêJFì£î 𡺬ø ªêòL åªõ£¼ º¬ø» Gð î¬ù êKð£èð´Aø¶.
298
II ¹OJì Þìè¬÷ Gó¹è
1.
Gó ⿶õî° Aø¶.
_________ ð£¾ðì õ¬óòð´
2.
«ð£L °Pº¬ø¬ò ¹K¶ ªè£õ¶, ð£¾ðì¬î ¹K¶ ªè£õ¬îMì _________.
3.
åªõ£¼ Gó¬ô» å¼ ð£¾ðìî£ à¼õAè _________.
4.
êK𣹠(walkthrough) Íô õ®õ¬ñH à÷ ܬù¶ H¬öè¬÷» èìPò _________ .
5.
b¾ ªïPJ (Algorithm) à÷ åªõ£¼ ð®G¬ô» _________ Ü÷M _________», _________» â´ ¶ ªè£÷«õ´.
III. ðF õ¬óè
1.
ð£¾ð춰 «ð£L °Pº¬ø° Þ¬ì«ò à÷ Þó´ «õÁð£´è¬÷ ÃÁè.
2.
ð£¾ðìF ðò¡ð´îð´ ð«õÁ õ¬èò£ù ªð® è¬÷ õ¬ó¶ 裴è. åªõ£¡P¡ ðò¡ð£¬ì» M÷°è.
3.
ðôõN A¬÷HKî½° Þó´ ⴶ裴è î¼è. «ð£L °Pº¬ø â¿F 裴è.
4.
Þ¼õN A¬÷HKî½° Þó´ ⴶ裴è î¼è. ð£¾ðì õ¬ó¶ 裴è.
5.
²´â ñ£P° Þó´ ⴶ裴è î¶ M÷°è.
6.
GêJî 𡺬ø ªêò¬ô Þó´ ⴶ裴èÀì¡ M÷°è.
7.
GêòFì£î 𡺬ø ªêò¬ô Þó´ ⴶ裴 èÀì¡ M÷°è
8.
GêJî, GêòFì£î 𡺬ø ªêòèÀ°÷ «õÁð£´è¬÷ °PH´è. 299
Í¡Á
9.
Þ¼õN A¬÷HKî¬ôMì ðôõN A¬÷HKî Iè ¾ Þòð£ù¶ â¡ð¬î M÷è Þó´ ⴶ裴è î¼è.
10. «ð£L °Pº¬ø Íô Ü®ð¬ìò£ù è´ð£´ ܬñ ¹è¬÷ M÷°è. 11.
b¾ªïP (Algorithm) J¡ ð¹ÃÁè â¬õ?
IV. Góô£è ðJCè: åªõ£¼ Gó½°,ªð£¼îñ£ù
ð£¾ðì õ¬ó¶, «ð£L °Pº¬ø» ⿶è. 1.
F¬óòèF àè ªðò¬ó 5 º¬ø è£ì å¼ C-Gó ⿶è
2.
Þó´ ñ£PèO¡ ñF¹è¬÷ Þì ñ£ø å¼ C-Gó ⿶è
3.
W裵 ðEè¬÷ ªêò C-Góè ⿶è: (i)
å¼ º«è£íF¡ ðóð÷¬õ èìPò
(ii)
ªõðG¬ô¬ò çð£ó¡q®L¼¶ ªêCòú§° ñ£ø
ñE: GIì: Mù£® âù Þ¼° «ïó¬î Mù£®èO ñ£ø 4 . Þó´ º¿ âèO ªðKò â¬í èìPò C-Gó ⿶è (i) if ÃÁ ðò¡ð´F (ii) if ÃÁ ðò¡ð´î£ñ [àîM°P¹ : max =((a+b)+abs(a-b)/2] (iii)
5.
Þ¡¬øò «îFJ àè õò¬î Þî¬ù Ý´è, ñ£îè, ï£è âù èíA´ ªê£ô å¼ C-Gó ⿶è. (âO¬ñ è¼F åªõ£¼ ñ£î¶° 30 ï£è âù ¬õ¶ªè£è).
6.
ºî ð¶ ÞòªðèO¡ ô ªî£¬è¬ò èìPò Üî£õ¶ 1+2+3+..... +10 èìPò C-Gó ⿶è.
7.
ç¬ð«ð£ù£C õK¬êJ (Fibonacci series) ºî 15 âè¬÷ èìPò å¼ C-Gó ⿶è. 300
8.
àè ªðòK à÷ àJªó¿¶è¬÷ âE ªê£½ C-Gó¬ô ⿶è
9.
ªè£´èðì Þ¼ âè¬÷» õ°èîò eªð¼ ªð£¶ è£óE¬ò (greatest common factor) è ì P » C-Gó¬ô ⿶è. (àîM°P¹: e.ªð£.è£. èìPò W裵 ðòùõ¬óòÁî ªêòÃP¬ù ðò¡ð´¶è: int gcf(int first, int second) {
int temp; while(second > 0) { temp = first % second; first = second; second = temp; } return (first);
}
10. «ñèì gcf() ªêòìø ðò¡ð´F, ªè£´èðì H¡ ù â¬í ²¼° C - Gó¬ô ⿶è. 16/64 âù à k´ îóðì£ 1/4 âù ªõOf´ ܬñò«õ´. 11.
3025 â¡ø âE¡ ºî ð£F¬ò» (30), Þóì£õ¶ ð£F¬ò» (25) î, Þó®¡ ñì° (Square) èí Aì£ Ü«î â (3025) M¬ìò£è A¬ì°. Üî£õ¶ (30+25)2 = 3025. Þ«î«ð£ ܬñî ܬù¶ ° Þôè âè¬÷» èìPò å¼ C-Gó ⿶è.
12 . Ýì â â¡ðî¡ Þôèí: æ âE¡ Þó®¡ ñì¬è (square) F¼H «ð£ì£ õ¼ â, Üî â¬í F¼H «ð£´ õ¼ âE¡ Þ ó ® ¡ ñì°° Gèó£ù¶. â´¶è£ì£è, Üî â 12 â¡è. 122 =144. 12 ä F¼H «ð£ì£ 21. 212 = 441 (144 ä F¼H «ð£ì£ A¬ì°) ! 10 ºî 100 õ¬ó»÷ Ýì âè¬÷ èìPò C-Gó ⿶è. 301
13. ªè£´èðì â, ç¬ð«ð£ù£C õK¬êJ ÞìªðÁ âí£ â¡ð¬î ðK«ê£Fè å¼ C-Gó ⿶è. 14. CPò â¿F (lower case) ܬñ¶÷ êó¬î ªðKò â¿F (upper case) ñ£ø¾, ªðKò ⿶ êó¬î CPò â¿F ñ£ø¾ å¼ C-Gó ⿶è. 15. å¼ ðF¡ñ â¬í (Decimal Number) Üî° ßì£ù Þ¼ñ (binary), âñ(octal), ðFùÁñ (hexa decimal) âí£è ñ£ø å¼ C-Gó ⿶è. 16. æ Þ¼ñ â¬í ðF¡ñ âí£è ñ£ø C-Gó ⿶è 17. å¼ º¿G¬ø¾ (perfect) â â¡ð¶, ܪõ îM¶ Hø õ°âèO¡ (divisions) ô ªî£¬è° Gèó£è Þ¼ °. 6 å¼ º¿G¬ø¾ â Ý°. è£óí, 6 îMî Hø õ° âèO¡ ô ªî£¬è 1+2+3=6. 1 ºî 10000 õ¬ó »÷ º¿G¬ø¾ âè¬÷ èìPò å¼ C-Gó ⿶è. 18. å¼ I°G¬ø¾ (abundant) â â¡ð¶, ܪõ îMî Hø õ° âèO¡ ô ªî£¬è¬òMì CPî£è Þ¼ °. 12 å¼ I°G¬ø¾ â Ý°. è£óí 1 2 î M î , Hø õ° âèO¡ ô ªî£¬è (1+2+3+4+6=16) 12ä Mì ªðKò. 1 ºî 10000 õ¬ó»÷ I°G¬ø¾ âè¬÷ èìPò å¼ C-Gó ⿶è. 19. å¼ °¬øð´ (deficient) â â¡ð¶, ܪõ îMî Hø õ° âèO¡Ã´ ªî£¬è¬òMì ªðKî£è Þ¼°. 9 å¼ °¬øð´ â Ý°. è£óí 9 îMî Hø õ°â èO¡ ô ªî£¬è (1+3), 9ä MìCPò. 1 ºî 10000 õ¬ó»÷ °¬øð´ âè¬÷ èìPò å¼ C-Gó ⿶è. 2 0 . å¼ êóF½÷ ⿶è¬÷ º¡H¡ù£è (reverse) ñ£ø CGó ⿶è. àk´ êó rama âQ ªõOf´ êó amar âù Þ¼è«õ´. 2 1 . ªè£´èðì å¼ êó ð£L«ó£ êóñ£ (º¡H¡ù£è â¿Fù£½ å¡ø£è«õ Þ¼ð¶ - MèìèM, malayalam) â¡ð¬î èìP¶ ªê£ô å¼ C-Gó ⿶è. 302
2 2 . å¼ õK¬êJ½÷ 10 âè¬÷ °¬ø¶ ªê½ õK¬ê º¬øJ å¿è¬ñè C-Gó ⿶è. 2 3 . å¼ ªêòìø ðò¡ð´F Þó´ âèO¡ ñF¹è¬÷ Þìñ£P ܬñè å¼ C-Gó ⿶è. 2 4 . 10 âèO¡ êó£êK¬ò èìPò å¼ C-Gó ⿶è. 25. a â¡Â æ ÜE n âè¬÷ ªè£´÷¶. âè ãÁºèñ£è ܬñF¼è «õ´. ãÁºè ÜE¬ò ðK«ê£F¶, ã«î æ â õK¬êñ£P H¬öò£è Þì ªðP¼H¡ å¼ H¬ö²´ ªêF¬ò è£ì«õ´. õK¬êð® ܬñF¼H¡ Üîè£ù ªêF¬ò 裴è. 2 6 . æ ÜE «è£¬õJ (Matrix) ͬôMì (diagonal) àÁ¹ èO¡ ô ªî£¬è¬ò èìPò å¼ C-Gó ⿶è. 2 7 . æ ÜEJ¡ Þìñ£Á ÜE «è£¬õ¬ò (Transpose) ªðø å¼ C-Gó ⿶è. 2 8 . ÜE «è£¬õ ªð¼è (Matrix Multiplication) ªê¶ M¬ì è£í C-Gó ⿶è. 2 9 . ªè£´èðì æ ÜE «è£¬õJ åªõ£¼ ªï´ ¬èJ½ ªð¼ñ, CÁñ ñF¹è¬÷ èìPò å¼ C-Gó ⿶è. ªð¼ñ, CÁñ ñF¹è¬÷ èìPò ªêòÃÁè ⿶è. åªõ£¼ ªêòÃÁ å¼ º¿â ²®¬ù (integer pointer) Ü÷¹¼õ£è ªè£®¼è«õ´. (àîM °P¹: åªõ£¼ ªï´¬è» æ ÜEò£è ªêòÃP ° ÜÂH¬õèðì «õ´. åªõ£¼ ªï´¬èJ¡ àÁ¹è¬÷» å¼ îè£Lè õK¬êJ Þ¼F¬õ¶, ªêòÃP° ÜÂH¬õè¾). 30. 10 ªðòè¬÷ å¼ ÜEJ «êI¶ ¬õ¶, åªõ£¼ ªðò¬ó» å¼ õKJ 裴ñ£Á, C-Gó ⿶è.
303