From Wikipedia, the free encyclopedia
පරිගණක විද්යාවේ දී, C (/ˈsiː/, C අකුර ශබ්ද කරන අයුරින්) යනු පොදු කාර්ය පරිගණක භාෂාවක් වන අතර, මෙය ලොවට හඳුන්වාදුන්නේ 1969-1979 කාලය අතර AT&T බෙල් පර්යේෂණාගාරයේ දී ඩෙනිස් රිචී මහතා විසිනි.[3] ALGOL සම්ප්රදායේ පවතින බොහෝ විධානාත්මක භාෂා වල මෙන්, C පරිගණක භාෂාවද ස්තිථික ටයිප් පද්ධති, බොහෝ අපෙක්ෂා නොකල කාරකයන් වළක්වද්දීත් ව්යූහාත්මක වැඩසටහන්කරණයට පහසුකම් සැළසීම සහ lexical විචල්ය අවකාශයකට හා සහානුයාත වලට ඉඩදීම සිදු කරයි. C භාෂාවේ ප්රභව කේතයන් නිදහස් ආකෘතියක් ගන්නා අතර වැකි අවසන් කිරීමට තිත් කොමාව(;) ද වැකි කාණඩගත කිරීමට සඟල වරහන ද භාවිතා කරයි. එහි පවතින සැකැස්ම නිසා කාර්යක්ෂමව වැඩසටහනක ඇති අංගයන් ඊට අදාළ යන්ත්ර උපදෙස් වලට ඈඳීම කල හැකි අතර එම නිසා Unix පරිගණක මෙහෙයුම් පද්ධතියේ අඩංගු පද්ධති මෘදුකාංග වැනි Assembly පරිගණක භාෂාව භාවිතයෙන් ලියන ලද වැඩසටහන් පවා දිගින් දිගටම භාවිතා කිරීමට හැකියාව ලැබී ඇත.[4]
![]() | |
සැලසුම් කළේ | ඩෙනිස් රිචී |
---|---|
සංවර්ධකයා | ඩෙනිස් රිචී & බෙල් පර්යේෂණාගාරය (නිර්මාපකයන්); ANSI X3J11 (ANSI C); ISO/IEC JTC1/SC22/WG14 (ISO C) |
පළමුව ප්රකාශය | 1972[1] |
ස්ථායි නිකුතුව | C11
/ දෙසැම්බර් 2011 |
ප්රරූප නීතිය | Static, weak, manifest, nominal |
OS | අන්තර්-භාවිත කරළිය (බහු-කරළි) |
ගොනු දිගුව | .h .c |
වෙබ් අඩවිය | https://www.open-std.org/jtc1/sc22/wg14/ iso.org/standard/74528.html, https://www.open-std.org/jtc1/sc22/wg14/ |
ප්රධාන ක්රියාත්මක කිරීම | |
Clang, GCC, Intel C, MSVC, Pelles C, Watcom C | |
උප භාෂෘව | |
Cyclone, Unified Parallel C, Split-C, Cilk, C* | |
ආභාෂය ලද්දේ | |
B (BCPL, CPL), ALGOL 68,[2] Assembly, PL/I, FORTRAN | |
බලපෑම් කළේ | |
Numerous: AMPL, AWK, csh, C++, C--, C#, Objective-C, BitC, D, Go, Java, JavaScript, Limbo, LPC, Perl, PHP, Pike, Processing, Seed7 | |
|
C යනු මෙතෙක් ලොව වැඩියෙන්ම භාවිතා කර ඇති පරිගණක භාෂාව වන අතර[5][6] C භාෂාව සඳහා භාෂා පරිවර්තකයක් දක්නට නොමැත්තේ ඉතා අඩු පරිගණක ආකෘතීන් කිහිපයක පමණකි.
C#, D, Go, Java, JavaScript, Limbo, LPC, Perl, PHP, Python, සහ Unix's C shell වැනි බොහෝ පසු කාලීන පරිගණක භාෂාවන් C පරිගණක භාෂාවේ ආභාෂය සෘජුව හෝ වක්රව ලබා ඇත. මෙවැනි භාෂාවල (Python භාෂාවේ හැර) වැඩිපුරම දක්නට ලැබෙන C භාෂාවේ බලපෑම් වන්නේ ඒවා සරල ආකෘතීමය රීතීන් වශයෙන් පැවතීම (syntactical) සහ C භාෂාවේ පවතින හඳුනාගන්නා ලද ප්රකාශනයන් හා වගන්ති ආකෘතීන් (syntax of C), බොහෝ විට වෙනස් විය හැකි මූලික type පද්ධති, දත්ත ආකෘතීන් හා අර්ථවිචාර සමග සංයුක්ත කිරීමට නැඹුරු වීමයි. C++ පරිගනක භාෂාව C භාෂාවේ පෙර සැකසුම් එකතුවක් වශයෙන් ආරම්භ වූ අතර වර්තමානය වන විට එය C භාෂාවේ මව් කුලකයක් (superset) ලෙස පවතී.[7]
C භාෂාව සඳහා නිල ප්රමිතියක් තිබීමට ප්රථම ඩෙනිස් රිචී සහ බ්රයන් කර්නගෙන් විසින් රචිත අවිධිමත් පිරිවිතරක් මත බොහෝ භාවිතාකරන්නන් සහ ක්රියාවටනංවන්නන් විශ්වසය තබා තිබින. එම පිරිවිතර “K&R” C ලෙස හඳුන්වන ලදි. 1989 දී ඇමරිකානු ජාතික ප්රමිති ආයතනය C භාෂාව සඳහා ප්රමිතියක් ප්රකාශයට පත් කල අතර එය “ANSI C” හෝ C89 ලෙස හැඳින්වේ. ඉනික්බිති වර්ෂයේදී එම පිරිවිතරම ප්රමිතිකරණය සඳහා වන ජාත්යන්තර ආයතනය (ISO) අන්තර්ජාතික ප්රමිතියක් ලෙස (ව්යවහාරයේදී C90) ප්රකාශයට පත් කරන ලදි. 1995 දී ISO ව විසින් පසුව එම ප්රමිතියේ අන්තර්ජාතික සහයෝගීතවය උදෙසා තවත් දිගුවක් නිකුත් කරන ලදි. මෙම ප්රමිතිය 1999 දී සංශෝධනය කරන ලදි (ව්යවහාරයේදී C99). වර්ථමානයේදී භාවිතා කරන්නේ 2011 දෙසැම්බරයේ සම්මත කරන ලද C11 නම් ප්රමිතියයි.
C යනු විධානත්මක (පටිපාටිගත / procedural) භාෂාවකි. එය සැළසුම් කර ඇත්තේ එහි භාෂා පරිවර්තන කාර්යය සාපේක්ෂ වශයෙන් සරලව සිදුවීමටත්, පහළ මට්ටමේ (දෘඩාංග මට්ටමේ) පරිගණක මතක භාවිතයක් ලබාදීමටත්, කාර්යක්ෂමව වැඩසටහන් අන්තර්ගතයන් යාන්ත්රික භාෂාවේ උපදෙස් සමඟ ඈඳීමට හැකිවන පරිදිත් සහ අඩු ධාවන කාලයකින් වැඩසටහන් ක්රීයාත්මක වන පරිදිත් වේ. එහෙයින් C භාෂාව, පෙරාතුව assembly භාෂාවෙන් කේතනය කරන ලද පද්ධති වැඩසටහන් වැනි වැඩසටහන් සඳහා ප්රයෝජනවත් වේ.
දෘඩාංග මට්ටමේ වැඩසටහන්කරණ හැකියාවන් තිබියදීත් මෙම භාෂාව cross-platform වැඩසටහන්කරණය කිරීමට හැකිවන පරිදිද නිර්මාණය කර ඇත. ප්රමිතීන්ට අනුකූලව හා පද්ධතියෙන් පද්ධතියට ගෙනයාමේ අදහසින් ලියන ලද C වැඩසටහන් විවිධ වෙනස්කම් සහිත මූලික තලයන් (platform) හා මෙහෙයුම් පද්ධති ඉතා ඉහළ පරාසයක් සඳහා ප්රභව කේතයේ සුළු වෙනස්කම් සිදුකිරීම මඟින් පරිවර්තනය කල හැක. මෙම භාෂාව පරිපත තුල එබ්බවූ ක්ෂුද්ර පාලක (embedded microcontrollers) සිට සුපිරි පරිගණක දක්වා වූ ඉතා ඉහළ පරාසයක මූලික තලයන් (platform) රැසක් සඳහා භාවිතා කල හැකිය.
ALGOL සම්ප්රදායට අයිති බොහෝ විධානාත්මක භාෂා වල මෙන් C භාෂාවේද ස්තිථික type පද්ධති බොහෝ අදහස් නොකරන ලද කාරකයන් වලක්වද්දීත් ව්යුහාතමක වැඩසටහන්කරණය සහ lexical විචල්යය කාණ්ඩ හා සහානුයාත (recursion) දැකිය හැක. C භාෂාවේදී සියලුම ක්රියාත්මක වන කේතයන් වෙන වෙනම හඳුන්වා දෙන ලද මාර්ග (subroutines) තුල පවතී. එම කොටස් “කාර්යයන්” (functions) ලෙස හඳුන්වන අතර ඒවා කෘත්යාත්මක වැඩසටහන්කරණයේ (functional programming) දැක්වෙන කාර්යයන් තරම් දැඩි අදහසක් නොදරයි. කාර්යයන් සඳහා වන පරාමිතීන් සෑමවිටම අගයන් මඟින් ලබාදීම සිදුකරයි. සමුද්දේශ භාවිතයෙන් වන පරාමිතික ලබාදීම් (passbyreference) සූචක (pointers) අගයන් භාවිතයෙන් සිදුකරයි.
C භාෂාව පහත දැක්වෙන ලක්ෂණ වලින් සමන්විත වේ.
for
, if/else
, while
, switch
, සහ do/while
යන ඒවාත් ඇතුලත්ව මුලපද (keywords) නිශ්චිත කුඩා ප්රමාණයක් පවතී. මූලිකව එක් නාම අවකාශයක් (namespace) පමණක් ඇති අතර භාවිතා කරන්නන් සාදන ලද නාම කිසිම අයුරකින් පවතින මුලපද වලට සමාන නොවිය යුතුය+
, +=
, ++
, &
, ~
වැනි ගණිතමය හා තාර්කික කාරකයන් විශාල ප්රමාණයක් පවතී.typedef
) සහ සංයුක්ත වර්ගයන් භාවිතා කිරීමට හැකිය.
struct
) භාවිතා කල හැකි අතර එලෙස සකස් කරන ලද දත්තයන් ඒකක ලෙස භාවිතා කිරීම සිදු කරයි.month[11]
enum
මුලපදය මඟින් අර්ථ දක්වයි. ඒවා නිඛිල සමඟ අන්තර් පරිවර්තනය සිදුකල හැකි පරිදි නිදහස්ව පවතී.void
නිකුතු වර්ගය භාවිතයෙන් අර්ථ දක්වයි. void
යනු untyped නිකුතු වර්ගයකි. එනම් වර්ගයක් නොමැති නිකුතු වර්ගයකි.static
සහ extern
ගුණාංග භාවිතයෙන් කේත ගොනු වෙනම පරිවර්තනය කර C වැඩසටහන් සමඟ ඈදිය හැකිය. එවිට ඒවායේ අන්තර්ගත කාර්යයන් සහ දත්ත වස්තූන් වැඩසටහන තුල භාවිතා කල හැකි වේ.C භාෂාව තුල පරිගණක වැඩසටහන්කරණයට අලුතින් එක් වූ වස්තු මූලික වැඩසටහන්කරණ සංකල්පයන් (OOP Concepts) වැනි නූතන ඉහල මට්ටමේ භාෂාවන් වල ඇති ගුණාංග සමහරක් අන්තර්ගත නොවේ.
C භාෂාවේ ආරම්භක ප්රවර්ධනයන් 1969 – 1973 අතර කාලයේ දී AT&T බෙල් පර්යේෂණාගරයේදී සිදුවිය[2]. 1975 වර්ෂය මෙම ප්රවර්ධනයන්ගේ වඩාත්ම නිර්මාණශීලී අවධිය ලෙස රිචී විසින් හඳුන්වයි. මෙම භාෂාව C නමින් හැඳින්වූයේ එහි ගුණාංග B නම් වූ පෙර පැවති භාෂාවකින් සම්භවය ලබා ඇති නිසාවෙනි. කෙන් තොම්සන් ට අනූව නම් C භාෂාව BCPL පරිගණක භාෂාවේ ලඝු කොට තැනූ සංස්කරණයකි.
තම සගයන් කිහිප දෙනුකුගේද අදහස් මත PDP-7 මත ක්රියාත්මක වූ assembly භාෂාවෙන් ලියන ලද Unix මෙහෙයුම් පද්දතියේ ප්රවර්ධනයන් සමඟ C භාෂාවේ සම්භවය තදින් බැඳී තිබිනි. අවස්ථානුකූලව ඔවුන් මෙහෙයුම් පද්ධතිය PDP-11 මතට ගෙන යන ලදි. මතකය බයිට් කොටස් වශයෙන් භාවිතා කිරීමට නොහැකි වීම වැනි PDP-11 හි පැවති සමහර වාසිසහගත ගුණාංග භාවිතා කිරීමට B භාෂාවට නොහැකි වූ බැවින් C භාෂාවේ මුල්ම සංස්කරණයන් ප්රවර්ධනය කිරීමට තීරණය කෙරින.
Unix මෙහෙයුම් පද්ධතියේ නියම PDP-11 සංස්කරණය assembly භාෂාව භාවිතයෙන් සිදු විය. 1973 දී struct
වර්ගයන් C භාෂාවට එකතු වීමත් සමඟ Unix කර්නලය නැවත C භාෂාවෙන් ලිවීමට තරම් භාෂාව ප්රභල විය. මෙය ලොව මුල්ම assembly නොවූ පරිගණක භාෂාවක් භාවිතා කොට සකස් කරනු ලැබූ මෙහෙයුම් පද්ධති කර්නලය වේ.[8]
1978 දී බ්රයන් කර්නගාන් සහ ඩෙනිස් රිචී දෙදෙනා විසින් The C Programming Language[9] නම් ග්රන්ථය මුල්ම සංස්කරණය ප්රකාශයට පත් කරන ලදි. පරිගණය වැඩසටහන්කරුවන් අතර K&R නමින් ප්රචලිත වූ මෙය බොහෝ කලක් යන තෙක්ම C භාෂාව සඳහා වූ අවිධිමත් පිරිවිතරක් ලෙස භාවිතා කර ඇත. මෙම ග්රන්ථයේ සඳහන් වන C සංස්කරණය K&R C ලෙස සාමන්ය ව්යවහාරයේ දී හැඳින්වේ. මෙහි දෙවන සංස්කරණය[10] ANSI C ප්රමිතීන් ආවරණය වන පරිදි රචනා කර ඇත.
1970 සහ 1980 අග භාගයන් වලදී mainframe පරිගණක, mini පරිගණක සහ IBM PC ද ඇතුළු ක්ෂුද්ර පරිගණක සඳහා වූ ඉල්ලුම ඉහල ගිය අතර ඉහල පරාසයක වෙනස්කම් සහිත එම පරිගණක සඳහා ද C භාෂාවේ සංස්කරණයක් නිර්මාණය කරන ලදි.
1983 දී C සඳහා ප්රමිති පිරිවිතරක් පිහිටු වීමට X3J11 නමින් කමිටුවක් ඇමරිකානු ජාතික ප්රමිති ආයතනය විසින් පත් කලේය. කමිටුව මඟින් Unix නිර්මිතයන් සඳහා භාවිතා කල C භාෂාව සඳහා ප්රමිතියක් නිර්මාණය කලේය . එසේ වුවත් Unix හි C පුස්ථකාලයේ අඩංගු විවිධ පද්ධතීන් සමඟ ඈඳිය නොහැකි කොටස 1003 IEEE සේවා කාණ්ඩයට භාර දෙන ලදි. එහි අරමුණ වූයේ 1988 POSIX ප්රමිතීන් නිර්මාණය කිරීමයි. 1989 දී ANSI X3.159-1989 “C පරිගණක භාෂාව” නමින් C ප්රමිතිය ස්ථීර කරන ලදි. C භාෂාවේ මෙම සංස්කරණය ANSI C, ප්රමිතිකරණය කල C හෝ සාමන්ය ව්යවහාරයේ දී C89 ලෙසත් හඳුන්වයි.
1990 දී ANSI C ප්රමිතිය ආකෘතිමය වෙනස්කම් සහිතව අන්තර්ජාතික ප්රමිති ආයතනය විසින් ප්රමිතිකරණය සඳහා ලබා ගන්නා ලදි. එය ISO/IEC 9899:1990 නමින් (සාමන්ය ව්යවහාරයේ දී C90) ප්රමිතිකරණය කරන ලදි. එහෙයින් C89 හා C90 එකම පරිගණක භෂාවක් සඳහා භාවිතා වූ ප්රමිතීන් වේ.
ANSI/ISO ප්රමිතිකරණ ක්රියාවලියෙන් පසුව වසර ගණනාවක් C භාෂා පිරිවිතර සාපේක්ෂව ස්ථීර ලෙස පැවතුනි. 1995 දී ප්රමිතියේ පවතින සමහර කරුණු නිවැරදි කිරීමටත් ජාත්යන්තර අක්ෂර මාලාවට වැඩි දායකත්වයක් ලබා දීමටත් C90 සඳහා පළමු ප්රමාණික සංශෝධනය (Normative Amendment 1) සිදුවිය. එය තවදුරටත් 1990 අග භාගයේ දී සංශෝධනය වී ISO/IEC 9899:1999 ලෙස ප්රකාශයට පත් කරන ලදි. එම ප්රමිතිය සාමන්ය ව්යවහාරයේ දී "C99" ලෙස හැඳින්වේ. Technical Corrigenda මඟින් එය ද මේ වන විට තුන් වරක් නැවත සංශෝධනය වී ඇත.[11]
2007 දී C භාෂාවේ තවත් සංස්කරණයක් සිදුකිරීම සඳහා කටයුතු ආරම්බ කෙරින. නිල වශයෙන් 2011-12-08 වනදා ප්රකාශයට පත් වීමට පෙර එය “C1X” ලෙස හැඳින්විය. මෙහිදී C ප්රමිති කමිටුව දැනට පවත්නා නිර්මාණයන් තුල පරීක්ෂා කර නොමැති භාෂාවේ නව අංග භාවිතය සීමා කිරීමට කටයුතු කරන ලදි.
පොදු වර්ගයේ macros (type generic macros), නිර්නාමික ආකෘතීන්, වැඩි දියුණු කල යුනිකෝඩ් භාවිතය, අණුක කාර්යයන් (atomic operations), සමාන්තරව ක්රියාත්මක කල හැකි ගැලීම් (multi-threading) සහ සීමා පරීක්ෂක ශ්රිත (bounds checked functions) වැනි නව අංග ගණනාවක් C11 ප්රමිතියේදී C භාෂාවට හා එහි පුස්ථකාලයට එක් විය. තවද එය C++ පරිගණක භාෂාව සමඟ C භාෂාවේ ගැළපීමද වැඩි දියුණු කරන ලදි.
ඓතිහාසිකව, පරිපථ සඳහා වූ C වැඩසටහන්කරණය, ස්ථීර-ලක්ෂ්ය ගණිතය (fixed point arithmetic), ප්රභින්න මතක ගබඩා එකකට වැඩි ගණනක් භාවිතය සහ මූලික ආදාන ප්රතිදාන කාර්යයන් වැනි ලක්ෂණ ලබා දීමට ප්රමිතිකරණය නොකල දිගු භාවිතා කරන ලදි.
2008 දී C ප්රමිති කමිටුව, C භාෂාව වර්ධනය කරමින් තාක්ෂණික වාර්ථාවක් පළ කල අතර එමඟින් මෙම ගැටළු වලට විසඳුම් ලෙස සියළුම නිර්මාණයන් පිළිපැදිය යුතු පොදු ප්රමිතියක් හඳුන්වා දෙනු ලැබුවේය.[12] එහි ස්ථීර-ලක්ෂ්ය ගණිතය (fixed point arithmetic), නාමික මතක අවකාශ සහ මූලික ආදාන ප්රතිදාන දෘඩංග භාවිතය වැනි සාමන්ය C භාෂාවේ නොමැති ලක්ෂණ ගණනාවක් අන්තර්ගත වේ.
C භාෂාවේ කේතයන්හි භාවිතා වන අක්ෂර මාලාවට පහත අක්ෂර ඇතුළත් වේ.
a
–z
, A
–Z
, _
0
–9
~ ! @ # % ^ & * ( ) - + = : ; " ' < > , . ? | / \ { } [ ]
නව පේළියකට යොමු කිරීමේ අක්ෂරය අක්ෂර පේළියක අවසානය දක්වයි; එය තනි අක්ෂරයක් ම වීම අවශ්යය නොමැති අතර එකකට වැඩි අවස්ථා වලදී ඒ සියල්ලම C භාෂාව එකක් ලෙස සළකයි.
අමතර බහු-බයිට් කේතාංකනය කරන ලද අක්ෂර භාවිතා කල හැකි වුවත් විවිධ පද්ධතීන් සමඟ භාවිතා කිරීමේදී ගැටළු මතු විය හැක. මෑතකදී ප්රකාශයට පති කරන ලද C11 ප්රමිතිය මඟින් බහු ජාතික යුනිකේත අක්ෂර භාවිතයට අවසර දී ඇති නමුත් \uDDDD
කේතාංකනය (DDDD
මඟින් යුනිකේත අක්ෂර සඳහා පොදු භාවිතය දක්වයි උදා: \u4025) භාවිතයෙන් C කේතය පද්ධති අතර පහසුවෙන් භාවිතා කල හැකි පරිදි ලිවිය යුතුය. මෙම අංගය පුළුල්ව නිර්මාණය කර නැත.
මූලික C ක්රියාත්මක කරවීමේ අක්ෂර මාලාවේ දී alert, backspase හා carriage return සඳහා නිරූපණ අක්ෂර සමඟ C භාෂාවේ භාවිතා කල අක්ෂර ම භාවිතා වේ.
C89 ප්රමිතියේ මුලපද (වෙන්කල විශේෂිත තේරුම් සහිත වචන) 32 ඇත.
|
|
|
|
C99 ප්රමිතියේ දී තවත් මුල පද 5 එකතු විය.
|
|
|
C11 ප්රමිතියේ දී තවත් මුල පද 7 එකතු විය.[13]
|
|
|
|
බොහෝමයක් අලුතින් එක් වූ මුලපද underscore සළකුණකට පසුව වූ ඉංග්රීසි කැපිටල් අක්ෂරයකින් පසුව ආරම්භ වේ. එයට හේතුව නම් එම ආකෘතීන් සහිත මුල පද කලින් භාෂාවේ නිර්මාණයන් සඳහා C ප්රමිති මඟින් වෙන්කර තිබීමයි. මේවා පවතින වැඩසටහනේ ප්රභව කේතයන්හි භාවිතා කිරීම කල නොහැකිව තිබූ නිසාම C භාෂා නිර්මාණයන් මඟින් වැඩසටහන්කරණ භාෂාවට මෙම දිගු වල සහභාගීත්වය ලබාදීම ආරම්භ කරන තුරු එමඟින් කිසිඳු බලපෑමක් නොවීය. සමහර සම්මත ශීර්ෂ (headers) මෙවැනි underscore සළකුණු සහිත පද සඳහා සුදුසු තුල්ය අර්ථදැක්වීම් (define) සිදුකරයි.
C භාෂාව සතුව පොහොසත් කාරකයන් සමූහයක් පවතී. ඒවා සමහරක් ප්රකාශනයක් ක්රියාත්මක වීමේදී කුමන ආකාරයෙන් සංචාලන සිදුවිය යුතුද යන්නද නියම වශයෙන් සඳහන් කරයි. C භාෂාවේ කාරකයන් පහත පරිදි වේ.
+
, -
, *
, /
, %
:=
+=
, -=
, *=
, /=
, %=
, &=
, |=
, ^=
, <<=
, >>=
~
, &
, |
, ^
<<
, >>
!
, &&
, ||
? :
==
, !=
( )
++
, --
.
, ->
sizeof
<
, <=
, >
, >=
&
, *
, [ ]
,
( )
(typename)
ගණිතයේ දී මෙන් නොව C භාෂාවේ දී =
කාරකය සමානතාවය දැක්වීම වෙනුවට ආදේශ කිරීම සඳහා යොදා ගනී. එය Fortran සහ PL/I භාෂා වල පූර්වාදර්ශයෙන් ලබා ගෙන ඇත. සමානතාවය දැක්වීමට ==
භාවිතා වේ. එසේ වුවද මෙම කාරකයන් දෙක පටලවා භාවිතා කරන සමහර අවස්තා වලදී C භාෂා පරිවර්ථකය මඟින් කිසිඳු දෝෂ පණිවිඩයක් ලබා නොදෙයි. උදාහරණයක් ලෙස if(a=b+1)
යන ප්රකාශනයේදී a
හි අගය බින්දුවට වඩා විශාලව පවතින තාක් if
සඳහා සත්යය යන අගය ලැබේ.[14] අමතර වශයෙන් C භාෂාවේ කාරක ප්රමුඛතාවය සහජ ඥානය සහිත නොවූවක් වන අතර ==
සළකුණ &
සහ |
සළකුණු වලට වඩා තදින් ප්රකාශන වලට බැඳී පවතී. එනම් x & 1 == 0
යන්න නිවැරදිව ක්රියාත්මක වීමට නම් එය (x & 1) == 0
පරිදි ලිවිය යුතු වේ.[15]
K&R ග්රන්ථයේ මුල්ම සංස්කරණයේ සඳහන් "hello, world" උදාහරණය සෑම පරිගණක භාෂාවකම පාහේ මූලික අරම්බක වැඩසටහන් ආකෘතිය ලෙස භාවිතා කෙරින. මෙහිදී වැඩසටහන මඟින් "hello, world" යන්න පරිගණක තිරය මත දිස්වීම පමණක් සිදුවේ.
මුල්ම සංස්කරණය:[16]
main()
{
printf("hello, world\n");
}
ප්රමිතිකරණය මඟින් තහවුරු කරන ලද "hello, world" වැඩසටහන:[nb 1]
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
}
මෙහි පළමුවෙන්ම සඳහන් වන #include
පෙර සැකසුමෙන් සිදුකරන්නේ එම පේළිය stdio.h
නම් ශීර්ෂ ගොනුවෙන් ප්රතිස්ථාපනය කිරීමයි. එය භාෂා පරිවර්ථකය මඟින් සිදුකරන කාර්යයකි. stdio.h
ශීර්ෂ ගොනුවේ printf
වැනි මූලික ආදාන ප්රතිදාන වලට සම්බන්ඳ කාර්යයන් අර්ථදක්වා ඇත. කෝණික වරහන් මඟින් දැක්වෙන්නේ මෙම ශීර්ෂ ගොනුව සම්මත C ශීර්ෂයන් තිබෙන ස්ථානයේ පවතිනවා යන්නයි. අපගේ වැඩසටහන් පවතින ෆෝල්ඩරයේ පවතින ශීර්ෂ ගොනුවක් මෙලෙස වැඩසටහනට ලබා ගැනීමට උදෘත පාඨ සළකුණු තුල එය ලිවිය යුතුය.
ඉන් පසුව දැක්වෙන main
නම් වදනින් දැක්වෙන්නේ වැඩසටහනේ ප්රධාන කාර්යයේ අර්ථ දැක්වීමයි. වැඩසටහනක ප්රධාන කාර්යයට විශේෂ වටිනාකමක් ඇති අතර සෑම විටම වැඩසටහන ක්රියාත්මක වීම ආරම්භ කරන්නේ මෙම ප්රධාන කාර්යයෙන් වේ. එහි වරහන් මඟින් ප්රධාන කාර්යයට ලබා දෙන පරාමිතීන් නිරූපණය කරන අතර එම පරාමිතීන් වැඩසටහන ක්රියාත්මක කරන අවස්ථාවේ දී ලබාදේ. මෙම වැඩසටහනේ void
ලෙස දැක්වෙන්නේ එලෙස භාහිරින් පරාමිතීන් වැඩසටහන තුළට ලබා නොගන්නා බවයි.[nb 2]
ආරම්භක සඟල වරහන ප්රධාන කාර්යයේ ආරභය දක්වයි.
ඊළඟ පේළියේ දැක්වෙන්නේ printf
කාර්යය ක්රියාත්මක කරවීමයි. එහිදී එම කාර්යයට “hello, world\n”
යනුවෙන් අක්ෂරමය පරාමිතික අගයක් ලබා දී ඇති අතර \n
යනු පැනයාමේ සළකුණ (escape sequence) වේ. භාෂා පරිවර්ථන කර්යයේ දී එය නව පේලීයක් ලබා ගැනීමට භාවිතා කරන සළකුණ (new line character) බවට වෙනස් කරයි. printf
යනු ලබා දිය හැකි පරාමිතීන් ගණන සීමා කර නොමැති කාර්යයක් වේ. එය printk
යන පද්ධති කාර්යය (system call) භාවිතයෙන් සම්මත ප්රතිදානය වන පරිගණක තිරය මතට උදෘත ලකුණු අතර ඇති අක්ෂර ඛණ්ඩය ලබා දේ. අවසන ඇති තිත් කොමාව මඟින් එම වගන්තියේ අවසානය දක්වයි.
අවසානයේ ඇති සඟල වරහන මඟින් ප්රධාන කර්යයේ අවසානය දක්වයි. මෙහිදී නම් එය මුළු වැඩසටහනේ ම අවසානය වේ. සාර්ථකව ධාවනය වී අවසන් වූ වැඩසටහනක් මඟින් මෙහෙයුම් පද්ධතියට ශුන්යය (0
) නිකුත් කරන අතර එය වැඩසටහනේ නික්මයාමේ තත්වය (exit code) වේ.[17]
main
function actually has two arguments, int argc
and char *argv[]
, respectively, which can be used to handle command line arguments. The C standard requires that both forms of main
be supported, which is special treatment not afforded any other function.Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.