පරිගණක විද්යාවේ දී, C (, C අකුර ශබ්ද කරන අයුරින්) යනු පොදු කාර්ය පරිගණක භාෂාවක් වන අතර, මෙය ලොවට හඳුන්වාදුන්නේ 1969-1979 කාලය අතර AT&T බෙල් පර්යේෂණාගාරයේ දී ඩෙනිස් රිචී මහතා විසිනි.ALGOL සම්ප්රදායේ පවතින බොහෝ විධානාත්මක භාෂා වල මෙන්, C පරිගණක භාෂාවද ස්තිථික ටයිප් පද්ධති, බොහෝ අපෙක්ෂා නොකල කාරකයන් වළක්වද්දීත් ව්යූහාත්මක වැඩසටහන්කරණයට පහසුකම් සැළසීම සහ lexical විචල්ය අවකාශයකට හා සහානුයාත වලට ඉඩදීම සිදු කරයි. C භාෂාවේ ප්රභව කේතයන් නිදහස් ආකෘතියක් ගන්නා අතර වැකි අවසන් කිරීමට තිත් කොමාව(;) ද වැකි කාණඩගත කිරීමට සඟල වරහන ද භාවිතා කරයි. එහි පවතින සැකැස්ම නිසා කාර්යක්ෂමව වැඩසටහනක ඇති අංගයන් ඊට අදාළ යන්ත්ර උපදෙස් වලට ඈඳීම කල හැකි අතර එම නිසා Unix පරිගණක මෙහෙයුම් පද්ධතියේ අඩංගු පද්ධති මෘදුකාංග වැනි Assembly පරිගණක භාෂාව භාවිතයෙන් ලියන ලද වැඩසටහන් පවා දිගින් දිගටම භාවිතා කිරීමට හැකියාව ලැබී ඇත.
යා | ඩෙනිස් රිචී & බෙල් පර්යේෂණාගාරය (නිර්මාපකයන්); ANSI X3J11 (); ISO/IEC JTC1/SC22/WG14 (ISO C) |
---|---|
පළමුව ප්රකාශය | 1972 |
ස්ථායි නිකුතුව | C11 / දෙසැම්බර් 2011 |
Static, weak, manifest, nominal | |
අන්තර්-භාවිත කරළිය (බහු-කරළි) | |
.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,Assembly, PL/I, FORTRAN | |
බලපෑම් කළේ | |
: AMPL, AWK, csh, , C--, C#, Objective-C, BitC, D, Go, Java, JavaScript, Limbo, LPC, Perl, PHP, Pike, Processing, Seed7 | |
|
C යනු මෙතෙක් ලොව වැඩියෙන්ම භාවිතා කර ඇති පරිගණක භාෂාව වන අතර 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 භාෂාවේ මව් කුලකයක් (superset) ලෙස පවතී.
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) පමණක් ඇති අතර භාවිතා කරන්නන් සාදන ලද නාම කිසිම අයුරකින් පවතින මුලපද වලට සමාන නොවිය යුතුය +
,+=
,++
,&
,~
වැනි ගණිතමය හා තාර්කික කාරකයන් විශාල ප්රමාණයක් පවතී.- එක් වගන්තියක් තුලදී ආදේශයන් එකකට වඩා වැඩි ගණනක් සිදුකල හැක.
- කාර්යයන් මඟින් පිටතට නිකුත් කරන අගයන් අනවශ්යය අවස්තා වලදී නොසලකා හැරිය හැක. එනම් එම අගයන් භාවිතා කිරීම අනිවාර්යය නොවේ.
- ස්තිථික, අඩු වශයෙන් බලාත්මක වර්ගයන් (typing) පවතී. එනම් සියලුම දත්ත වලට දත්ත වර්ගයක් පවතින අතර අවශ්යය අවස්තා වලදී වර්ගය මාරු කොට භාවිතා කල හැක. උදාහරණයක් ලෙස අකුරක් සංඛ්යාවක් ලෙස භාවිතා කල හැකිය.
- ආකෘතීන් අර්ථ දැක්වීම පහසුය. එනම් අර්ථ දැක්වීමක් ඉදිරිපස “define” යනුවෙන් මුලපදයක් නොයොදයි. තවද කාර්යයක් අර්ථ දැක්වීමේදී “function” යනුවෙන් මුලපදයක් නොයොදන අතර කාර්යයන් පරාමිතීන් සමූහය දැක්වීමට භාවිතාකරන වරහන් මඟින් හඳුනාගනු ලබයි.
- භාවිතා කරන්නන් මඟින් හඳුන්වා දෙනු ලබන වර්ගයන් (
typedef
) සහ සංයුක්ත වර්ගයන් භාවිතා කිරීමට හැකිය.- විෂමජාතීය සමූහ දත්ත වර්ග (
struct
) භාවිතා කල හැකි අතර එලෙස සකස් කරන ලද දත්තයන් ඒකක ලෙස භාවිතා කිරීම සිදු කරයි. - ආරාවන් අංකනය කිරීම සූචක ගණිතයේ සඳහන් වන පරිදි සිදුවන ද්විතීයක අංකනයකි. විෂම ජාතීය සමූහ දත්ත වර්ග මෙන් නොව ආරාවන් මූලික වස්තූන් (fist-class objects) ගණයට අයත් නොවේ. එනම් ඒවා භාවිතා කිරීම හෝ ඒවාට ආදේශ කිරීම තනි නිර්මිත කාරකයක් (built-in operator) භාවිතයෙන් සිදු කල නොහැක. අර්ථ දැක්වීමේදී Array යනුවෙන් මුලපදයක් භාවිතා නොකරන අතර කොටු වරහන මඟින් ආකෘතීමය වශයෙන් ආරවක් දක්වනු ලබයි. උදා.
month[11]
- Enumerated වර්ගයන් භාවිතා කල හැකි අතර එය
enum
මුලපදය මඟින් අර්ථ දක්වයි. ඒවා නිඛිල සමඟ අන්තර් පරිවර්තනය සිදුකල හැකි පරිදි නිදහස්ව පවතී. - String යනුවෙන් වෙනම දත්ත වර්ගයක් නොමැති නමුත් එය ශුන්යය අකුරකින් අවසන් වන අකුරු ආරාවක් මඟින් නිරූපණය කල හැක.
- විෂමජාතීය සමූහ දත්ත වර්ග (
- දෘඩාංග මට්ටමේ පරිගණය මතක භාවිතය පරිගණය මතකයේ යාන්ත්රික ලිපින, සූචක මඟින් පරිහරණය කල හැකි වන පරිදි පරිවර්තනය කිරීම තුලින් සිදුකරයි.
- කාර්යය පටිපාටි (procedures) එනම් අගයන් භාහිරට නිකුත් නොකරන කාර්යයන්
void
නිකුතු වර්ගය භාවිතයෙන් අර්ථ දක්වයි.void
යනු untyped නිකුතු වර්ගයකි. එනම් වර්ගයක් නොමැති නිකුතු වර්ගයකි. - කාර්යයන් වෙනත් කාර්යයන්ට අයත් lexical පරාසය තුල අර්ථ දැක්වීම සිදුකල නොහැක.
- පෙර සැකසුම් මඟින් macro අර්ථ දැක්වීම (defines), භාහිර කේත ගොනු ඈදීම (includes) සහ තාර්කික පරිවර්තනයන් (if def) සිදුකිරීම යන දෑ සිදුකරයි.
- මූලික මොඩියුල භාවිත ආකාරයන්:
static
සහextern
ගුණාංග භාවිතයෙන් කේත ගොනු වෙනම පරිවර්තනය කර C වැඩසටහන් සමඟ ඈදිය හැකිය. එවිට ඒවායේ අන්තර්ගත කාර්යයන් සහ දත්ත වස්තූන් වැඩසටහන තුල භාවිතා කල හැකි වේ. - ආදාන / ප්රතිදාන, අකුරු සමූහ භාවිතය, සහ ගණිතමය ශ්රිත වැනි සංකීර්ණ ක්රියාවන් C භාෂාව තුල ඇති කලින් ලියන ලද කේතයන් හෝ භාහිරින් ලබා ගත් එවැනි කේතයන් භාවිතයෙන් සිදුකරනු ලබයි.
C භාෂාව තුල පරිගණක වැඩසටහන්කරණයට අලුතින් එක් වූ වස්තු මූලික වැඩසටහන්කරණ සංකල්පයන් (OOP Concepts) වැනි නූතන ඉහල මට්ටමේ භාෂාවන් වල ඇති ගුණාංග සමහරක් අන්තර්ගත නොවේ.
ඉතිහාසය
මුල් ප්රවර්ධනයන්
C භාෂාවේ ආරම්භක ප්රවර්ධනයන් 1969 – 1973 අතර කාලයේ දී AT&T බෙල් පර්යේෂණාගරයේදී සිදුවිය. 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 නොවූ පරිගණක භාෂාවක් භාවිතා කොට සකස් කරනු ලැබූ මෙහෙයුම් පද්ධති කර්නලය වේ.
K&R C
1978 දී බ්රයන් කර්නගාන් සහ ඩෙනිස් රිචී දෙදෙනා විසින් The C Programming Language නම් ග්රන්ථය මුල්ම සංස්කරණය ප්රකාශයට පත් කරන ලදි. පරිගණය වැඩසටහන්කරුවන් අතර K&R නමින් ප්රචලිත වූ මෙය බොහෝ කලක් යන තෙක්ම C භාෂාව සඳහා වූ අවිධිමත් පිරිවිතරක් ලෙස භාවිතා කර ඇත. මෙම ග්රන්ථයේ සඳහන් වන C සංස්කරණය K&R C ලෙස සාමන්ය ව්යවහාරයේ දී හැඳින්වේ. මෙහි දෙවන සංස්කරණයANSI C ප්රමිතීන් ආවරණය වන පරිදි රචනා කර ඇත.
ANSI C සහ ISO 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 එකම පරිගණක භෂාවක් සඳහා භාවිතා වූ ප්රමිතීන් වේ.
C99
ANSI/ISO ප්රමිතිකරණ ක්රියාවලියෙන් පසුව වසර ගණනාවක් C භාෂා පිරිවිතර සාපේක්ෂව ස්ථීර ලෙස පැවතුනි. 1995 දී ප්රමිතියේ පවතින සමහර කරුණු නිවැරදි කිරීමටත් ජාත්යන්තර අක්ෂර මාලාවට වැඩි දායකත්වයක් ලබා දීමටත් C90 සඳහා පළමු ප්රමාණික සංශෝධනය (Normative Amendment 1) සිදුවිය. එය තවදුරටත් 1990 අග භාගයේ දී සංශෝධනය වී ISO/IEC 9899:1999 ලෙස ප්රකාශයට පත් කරන ලදි. එම ප්රමිතිය සාමන්ය ව්යවහාරයේ දී "C99" ලෙස හැඳින්වේ. Technical Corrigenda මඟින් එය ද මේ වන විට තුන් වරක් නැවත සංශෝධනය වී ඇත.
C11
2007 දී C භාෂාවේ තවත් සංස්කරණයක් සිදුකිරීම සඳහා කටයුතු ආරම්බ කෙරින. නිල වශයෙන් 2011-12-08 වනදා ප්රකාශයට පත් වීමට පෙර එය “C1X” ලෙස හැඳින්විය. මෙහිදී C ප්රමිති කමිටුව දැනට පවත්නා නිර්මාණයන් තුල පරීක්ෂා කර නොමැති භාෂාවේ නව අංග භාවිතය සීමා කිරීමට කටයුතු කරන ලදි.
පොදු වර්ගයේ macros (type generic macros), නිර්නාමික ආකෘතීන්, වැඩි දියුණු කල යුනිකෝඩ් භාවිතය, අණුක කාර්යයන් (atomic operations), සමාන්තරව ක්රියාත්මක කල හැකි ගැලීම් (multi-threading) සහ සීමා පරීක්ෂක ශ්රිත (bounds checked functions) වැනි නව අංග ගණනාවක් C11 ප්රමිතියේදී C භාෂාවට හා එහි පුස්ථකාලයට එක් විය. තවද එය පරිගණක භාෂාව සමඟ C භාෂාවේ ගැළපීමද වැඩි දියුණු කරන ලදි.
Embedded C
ඓතිහාසිකව, පරිපථ සඳහා වූ C වැඩසටහන්කරණය, ස්ථීර-ලක්ෂ්ය ගණිතය (fixed point arithmetic), ප්රභින්න මතක ගබඩා එකකට වැඩි ගණනක් භාවිතය සහ මූලික ආදාන ප්රතිදාන කාර්යයන් වැනි ලක්ෂණ ලබා දීමට ප්රමිතිකරණය නොකල දිගු භාවිතා කරන ලදි.
2008 දී C ප්රමිති කමිටුව, C භාෂාව වර්ධනය කරමින් තාක්ෂණික වාර්ථාවක් පළ කල අතර එමඟින් මෙම ගැටළු වලට විසඳුම් ලෙස සියළුම නිර්මාණයන් පිළිපැදිය යුතු පොදු ප්රමිතියක් හඳුන්වා දෙනු ලැබුවේය. එහි ස්ථීර-ලක්ෂ්ය ගණිතය (fixed point arithmetic), නාමික මතක අවකාශ සහ මූලික ආදාන ප්රතිදාන දෘඩංග භාවිතය වැනි සාමන්ය C භාෂාවේ නොමැති ලක්ෂණ ගණනාවක් අන්තර්ගත වේ.
ආකෘතීන්
සංකේත මාලාව
C භාෂාවේ කේතයන්හි භාවිතා වන අක්ෂර මාලාවට පහත අක්ෂර ඇතුළත් වේ.
- අක්ෂර:
a
–z
,A
–Z
,_
- සංඛ්යාංක:
0
–9
- විරාම ලක්ෂණ:
~ ! @ # % ^ & * ( ) - + = : ; " ' < > , . ? | / \ { } [ ]
- හිස් අවකාශ දැක්වීමට භාවිතා කරන අක්ෂර: space, horizontal tab, vertical tab, form feed, newline
නව පේළියකට යොමු කිරීමේ අක්ෂරය අක්ෂර පේළියක අවසානය දක්වයි; එය තනි අක්ෂරයක් ම වීම අවශ්යය නොමැති අතර එකකට වැඩි අවස්ථා වලදී ඒ සියල්ලම C භාෂාව එකක් ලෙස සළකයි.
අමතර බහු-බයිට් කේතාංකනය කරන ලද අක්ෂර භාවිතා කල හැකි වුවත් විවිධ පද්ධතීන් සමඟ භාවිතා කිරීමේදී ගැටළු මතු විය හැක. මෑතකදී ප්රකාශයට පති කරන ලද C11 ප්රමිතිය මඟින් බහු ජාතික යුනිකේත අක්ෂර භාවිතයට අවසර දී ඇති නමුත් \uDDDD
කේතාංකනය (DDDD
මඟින් යුනිකේත අක්ෂර සඳහා පොදු භාවිතය දක්වයි උදා: \u4025) භාවිතයෙන් C කේතය පද්ධති අතර පහසුවෙන් භාවිතා කල හැකි පරිදි ලිවිය යුතුය. මෙම අංගය පුළුල්ව නිර්මාණය කර නැත.
මූලික C ක්රියාත්මක කරවීමේ අක්ෂර මාලාවේ දී alert, backspase හා carriage return සඳහා නිරූපණ අක්ෂර සමඟ C භාෂාවේ භාවිතා කල අක්ෂර ම භාවිතා වේ.
මුලපද
C89 ප්රමිතියේ මුලපද (වෙන්කල විශේෂිත තේරුම් සහිත වචන) 32 ඇත.
|
|
|
|
C99 ප්රමිතියේ දී තවත් මුල පද 5 එකතු විය.
|
|
|
C11 ප්රමිතියේ දී තවත් මුල පද 7 එකතු විය.
|
|
|
|
බොහෝමයක් අලුතින් එක් වූ මුලපද underscore සළකුණකට පසුව වූ ඉංග්රීසි කැපිටල් අක්ෂරයකින් පසුව ආරම්භ වේ. එයට හේතුව නම් එම ආකෘතීන් සහිත මුල පද කලින් භාෂාවේ නිර්මාණයන් සඳහා C ප්රමිති මඟින් වෙන්කර තිබීමයි. මේවා පවතින වැඩසටහනේ ප්රභව කේතයන්හි භාවිතා කිරීම කල නොහැකිව තිබූ නිසාම C භාෂා නිර්මාණයන් මඟින් වැඩසටහන්කරණ භාෂාවට මෙම දිගු වල සහභාගීත්වය ලබාදීම ආරම්භ කරන තුරු එමඟින් කිසිඳු බලපෑමක් නොවීය. සමහර සම්මත ශීර්ෂ (headers) මෙවැනි underscore සළකුණු සහිත පද සඳහා සුදුසු තුල්ය අර්ථදැක්වීම් (define) සිදුකරයි.
කාරකයන්
C භාෂාව සතුව පොහොසත් කාරකයන් සමූහයක් පවතී. ඒවා සමහරක් ප්රකාශනයක් ක්රියාත්මක වීමේදී කුමන ආකාරයෙන් සංචාලන සිදුවිය යුතුද යන්නද නියම වශයෙන් සඳහන් කරයි. C භාෂාවේ කාරකයන් පහත පරිදි වේ.
- ගණිතමය:
+
,-
,*
,/
,%
: - ආදේශක:
=
- ආවර්ධක (augmented) ආදේශක:
+=
,-=
,*=
,/=
,%=
,&=
,|=
,^=
,<<=
,>>=
- බිට් සලකා සිදුකරන තර්කන:
~
,&
,|
,^
- බිට් සලකා සිදුකරන තල්ලු කිරීම්:
<<
,>>
- බූලියන් තර්කන:
!
,&&
,||
- තත්වයන් ඇගයීම:
? :
- සමානාත්මතාවය පරීක්ෂාකිරීම:
==
,!=
- කාරයයන් ක්රියාත්මක කරවීම:
( )
- වැඩි කිරීම් සහ අඩු කිරීම්:
++
,--
- සාමාජිකයින් තේරීම:
.
,->
- වස්තු වල ප්රමාණය ගණනය කිරීම:
sizeof
- පටිපාටිගත සම්බන්දතා:
<
,<=
,>
,>=
- සමුද්දේශ සහ (වි)සමුද්දේශ (dereference):
&
,*
,[ ]
- අනුක්රමයන්:
,
- අනු ප්රකාශන (subexpression) කාණ්ඩ කිරීම්:
( )
- වර්ග පෙරැළීම්:
(typename)
ගණිතයේ දී මෙන් නොව C භාෂාවේ දී =
කාරකය සමානතාවය දැක්වීම වෙනුවට ආදේශ කිරීම සඳහා යොදා ගනී. එය Fortran සහ PL/I භාෂා වල පූර්වාදර්ශයෙන් ලබා ගෙන ඇත. සමානතාවය දැක්වීමට ==
භාවිතා වේ. එසේ වුවද මෙම කාරකයන් දෙක පටලවා භාවිතා කරන සමහර අවස්තා වලදී C භාෂා පරිවර්ථකය මඟින් කිසිඳු දෝෂ පණිවිඩයක් ලබා නොදෙයි. උදාහරණයක් ලෙස if(a=b+1)
යන ප්රකාශනයේදී a
හි අගය බින්දුවට වඩා විශාලව පවතින තාක් if
සඳහා සත්යය යන අගය ලැබේ. අමතර වශයෙන් C භාෂාවේ කාරක ප්රමුඛතාවය සහජ ඥානය සහිත නොවූවක් වන අතර ==
සළකුණ &
සහ |
සළකුණු වලට වඩා තදින් ප්රකාශන වලට බැඳී පවතී. එනම් x & 1 == 0
යන්න නිවැරදිව ක්රියාත්මක වීමට නම් එය (x & 1) == 0
පරිදි ලිවිය යුතු වේ.
"hello, world" උදාහරණ වැඩසටහන
K&R ග්රන්ථයේ මුල්ම සංස්කරණයේ සඳහන් "hello, world" උදාහරණය සෑම පරිගණක භාෂාවකම පාහේ මූලික අරම්බක වැඩසටහන් ආකෘතිය ලෙස භාවිතා කෙරින. මෙහිදී වැඩසටහන මඟින් "hello, world" යන්න පරිගණක තිරය මත දිස්වීම පමණක් සිදුවේ.
මුල්ම සංස්කරණය:
main() { printf("hello, world\n"); }
ප්රමිතිකරණය මඟින් තහවුරු කරන ලද "hello, world" වැඩසටහන:
#include <stdio.h> int main(void) { printf("hello, world\n"); }
මෙහි පළමුවෙන්ම සඳහන් වන #include
පෙර සැකසුමෙන් සිදුකරන්නේ එම පේළිය stdio.h
නම් ශීර්ෂ ගොනුවෙන් ප්රතිස්ථාපනය කිරීමයි. එය භාෂා පරිවර්ථකය මඟින් සිදුකරන කාර්යයකි. stdio.h
ශීර්ෂ ගොනුවේ printf
වැනි මූලික ආදාන ප්රතිදාන වලට සම්බන්ඳ කාර්යයන් අර්ථදක්වා ඇත. කෝණික වරහන් මඟින් දැක්වෙන්නේ මෙම ශීර්ෂ ගොනුව සම්මත C ශීර්ෂයන් තිබෙන ස්ථානයේ පවතිනවා යන්නයි. අපගේ වැඩසටහන් පවතින ෆෝල්ඩරයේ පවතින ශීර්ෂ ගොනුවක් මෙලෙස වැඩසටහනට ලබා ගැනීමට උදෘත පාඨ සළකුණු තුල එය ලිවිය යුතුය.
ඉන් පසුව දැක්වෙන main
නම් වදනින් දැක්වෙන්නේ වැඩසටහනේ ප්රධාන කාර්යයේ අර්ථ දැක්වීමයි. වැඩසටහනක ප්රධාන කාර්යයට විශේෂ වටිනාකමක් ඇති අතර සෑම විටම වැඩසටහන ක්රියාත්මක වීම ආරම්භ කරන්නේ මෙම ප්රධාන කාර්යයෙන් වේ. එහි වරහන් මඟින් ප්රධාන කාර්යයට ලබා දෙන පරාමිතීන් නිරූපණය කරන අතර එම පරාමිතීන් වැඩසටහන ක්රියාත්මක කරන අවස්ථාවේ දී ලබාදේ. මෙම වැඩසටහනේ void
ලෙස දැක්වෙන්නේ එලෙස භාහිරින් පරාමිතීන් වැඩසටහන තුළට ලබා නොගන්නා බවයි.
ආරම්භක සඟල වරහන ප්රධාන කාර්යයේ ආරභය දක්වයි.
ඊළඟ පේළියේ දැක්වෙන්නේ printf
කාර්යය ක්රියාත්මක කරවීමයි. එහිදී එම කාර්යයට “hello, world\n”
යනුවෙන් අක්ෂරමය පරාමිතික අගයක් ලබා දී ඇති අතර \n
යනු පැනයාමේ සළකුණ (escape sequence) වේ. භාෂා පරිවර්ථන කර්යයේ දී එය නව පේලීයක් ලබා ගැනීමට භාවිතා කරන සළකුණ (new line character) බවට වෙනස් කරයි. printf
යනු ලබා දිය හැකි පරාමිතීන් ගණන සීමා කර නොමැති කාර්යයක් වේ. එය printk
යන පද්ධති කාර්යය (system call) භාවිතයෙන් සම්මත ප්රතිදානය වන පරිගණක තිරය මතට උදෘත ලකුණු අතර ඇති අක්ෂර ඛණ්ඩය ලබා දේ. අවසන ඇති තිත් කොමාව මඟින් එම වගන්තියේ අවසානය දක්වයි.
අවසානයේ ඇති සඟල වරහන මඟින් ප්රධාන කර්යයේ අවසානය දක්වයි. මෙහිදී නම් එය මුළු වැඩසටහනේ ම අවසානය වේ. සාර්ථකව ධාවනය වී අවසන් වූ වැඩසටහනක් මඟින් මෙහෙයුම් පද්ධතියට ශුන්යය (0
) නිකුත් කරන අතර එය වැඩසටහනේ නික්මයාමේ තත්වය (exit code) වේ.
මේවාත් බලන්න
- Comparison of Pascal and C
- Comparison of programming languages
- International Obfuscated C Code Contest
- List of C-based programming languages
- List of compilers#C compilers
සටහන්
- The original example code will compile on most modern compilers that are not in strict standard compliance mode, but it does not fully conform to the requirements of either C89 or C99. In fact, C99 requires that a diagnostic message be produced.
- The
main
function actually has two arguments,int argc
andchar *argv[]
, respectively, which can be used to handle command line arguments. The C standard requires that both forms ofmain
be supported, which is special treatment not afforded any other function.
යොමුව
- (1993). "The Development of the C Language". සම්ප්රවේශය 1 January 2008.
Thompson had made a brief attempt to produce a system coded in an early version of C—before structures—in 1972, but gave up the effort.
{{}}
: Unknown parameter|month=
ignored () - (1993). "The Development of the C Language". සම්ප්රවේශය 1 January 2008.
The scheme of type composition adopted by C owes considerable debt to Algol 68, although it did not, perhaps, emerge in a form that Algol's adherents would approve of.
{{}}
: Unknown parameter|month=
ignored () - ; (February 1978). (1st ed.). : . ISBN . Regarded by many to be the authoritative reference on C.
- Giannini, Mario; Code Fighter, Inc.; (2004). "C/C++". in Hossein, Bidgoli. The Internet encyclopedia. 1. John Wiley and Sons. p. 164. . http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471222011.html. ප්රතිෂ්ඨාපනය 21 March 2013.
- Lawlis, Patricia K. (1997). "Guidelines for Choosing a Computer Language: Support for the Visionary Organization". Ada Information Clearinghouse. සම්ප්රවේශය 18 July 2006.
{{}}
: Unknown parameter|month=
ignored () - "Programming Language Popularity". 2009. සම්ප්රවේශය 16 January 2009.
- "TIOBE Programming Community Index". 2009. සම්ප්රවේශය 6 May 2009.
- (1993). "A History of C++: 1979−1991" (PDF). 1 May 2011 දින මුල් පිටපත (PDF) වෙතින් සංරක්ෂණය කරන ලදී. සම්ප්රවේශය 9 June 2011.
- ; (1978). (PDF). Bell System Tech. J. 57 (6): 2021–2048. 3 February 2015 දින මුල් පිටපත (PDF) වෙතින් සංරක්ෂණය කරන ලදී. සම්ප්රවේශය 16 December 2012.
- ; (1988). (2nd ed.). : . ISBN .
{{}}
: Unknown parameter|month=
ignored () - "JTC1/SC22/WG14 – C". Home page. ISO/IEC. සම්ප්රවේශය 2 June 2011.
- "TR 18037: Embedded C" (PDF). ISO / IEC. සම්ප්රවේශය 26 July 2011.
- ISO/IEC 9899:201x (ISO C11) Committee Draft
- "10 Common Programming Mistakes in C++". Cs.ucr.edu. සම්ප්රවේශය 26 June 2009.
- Schultz, Thomas (2004). C and the 8051 (3rd ed.). Otsego, MI: PageFree Publishing Inc. p. 20. ISBN . සම්ප්රවේශය 10 February 2012.
- Page 6 of the original K&R
- (2013). 21st Century C. . ISBN .
භාහිර සබැඳි
- ISO C Working Group official website
- comp.lang.c Frequently Asked Questions
- ISO/IEC 9899. Official C99 documents.
- ANSI C Standard (ANSI X3J11/88-090) (Published 13 May 1988), Third Public Review
- ANSI C Rationale (ANSI X3J11/88-151) (Published 18 November 1988)
- C99 with Technical corrigenda TC1, TC2, and TC3 includedPDF (3.61 MB)
විකිපීඩියාව, විකි, සිංහල, පොත, පොත්, පුස්තකාලය, ලිපිය, කියවන්න, බාගන්න, නොමිලේ, නොමිලේ බාගන්න, mp3, වීඩියෝ, mp4, 3gp, jpg, jpeg, gif, png, පින්තූරය, සංගීතය, ගීතය, චිත්රපටය, පොත, ක්රීඩාව, ක්රීඩා., ජංගම දුරකථන, android, ios, apple, ජංගම දුරකථන, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, පීසී, වෙබ්, පරිගණකය
පර ගණක ව ද ය ව ද C ˈ s iː C අක ර ශබ ද කරන අය ර න යන ප ද ක ර ය පර ගණක භ ෂ වක වන අතර ම ය ල වට හඳ න ව ද න න 1969 1979 ක ලය අතර AT amp T බ ල පර ය ෂණ ග රය ද ඩ න ස ර ච මහත ව ස න ALGOL සම ප රද ය පවත න බ හ ව ධ න ත මක භ ෂ වල ම න C පර ගණක භ ෂ වද ස ත ථ ක ටය ප පද ධත බ හ අප ක ෂ න කල ක රකයන වළක වද ද ත ව ය හ ත මක ව ඩසටහන කරණයට පහස කම ස ළස ම සහ lexical ව චල ය අවක ශයකට හ සහ න ය ත වලට ඉඩද ම ස ද කරය C භ ෂ ව ප රභව ක තයන න දහස ආක ත යක ගන න අතර ව ක අවසන ක ර මට ත ත ක ම ව ද ව ක ක ණඩගත ක ර මට සඟල වරහන ද භ ව ත කරය එහ පවත න ස ක ස ම න ස ක ර යක ෂමව ව ඩසටහනක ඇත අ ගයන ඊට අද ළ යන ත ර උපද ස වලට ඈඳ ම කල හ ක අතර එම න ස Unix පර ගණක ම හ ය ම පද ධත ය අඩ ග පද ධත ම ද ක ග ව න Assembly පර ගණක භ ෂ ව භ ව තය න ල යන ලද ව ඩසටහන පව ද ග න ද ගටම භ ව ත ක ර මට හ ක ය ව ල බ ඇත Cය ඩ න ස ර ච amp බ ල පර ය ෂණ ග රය න ර ම පකයන ANSI X3J11 ISO IEC JTC1 SC22 WG14 ISO C පළම ව ප රක ශය1972ස ථ ය න ක ත වC11 ද ස ම බර 2011Static weak manifest nominalඅන තර භ ව ත කරළ ය බහ කරළ 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 Assembly PL I FORTRANබලප ම කළ AMPL AWK csh C C C Objective C BitC D Go Java JavaScript Limbo LPC Perl PHP Pike Processing Seed7C Programming at Wikibooks C යන ම ත ක ල ව ව ඩ ය න ම භ ව ත කර ඇත පර ගණක භ ෂ ව වන අතර 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 ල ස පවත C භ ෂ ව සඳහ න ල ප රම ත යක ත බ මට ප රථම ඩ න ස ර ච සහ බ රයන කර නග න ව ස න රච ත අව ධ මත ප ර ව තරක මත බ හ භ ව ත කරන නන සහ ක ර ය වටන වන නන ව ශ වසය තබ ත බ න එම ප ර ව තර K amp 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 ද ක ව න ක ර යයන තරම ද ඩ අදහසක න දරය ක ර යයන සඳහ වන පර ම ත න ස මව ටම අගයන මඟ න ලබ ද ම ස ද කරය සම ද ද ශ භ ව තය න වන පර ම ත ක ලබ ද ම pass by reference ස චක pointers අගයන භ ව තය න ස ද කරය C භ ෂ ව පහත ද ක ව න ලක ෂණ වල න සමන ව ත ව ම ල ක ග ල ම ප ලකයන වන for if else while switch සහ do while යන ඒව ත ඇත ලත ව ම ලපද keywords න ශ ච ත ක ඩ ප රම ණයක පවත ම ල කව එක න ම අවක ශයක namespace පමණක ඇත අතර භ ව ත කරන නන ස දන ලද න ම ක ස ම අය රක න පවත න ම ලපද වලට සම න න ව ය ය ත ය amp ව න ගණ තමය හ ත ර ක ක ක රකයන ව ශ ල ප රම ණයක පවත එක වගන ත යක ත ලද ආද ශයන එකකට වඩ ව ඩ ගණනක ස ද කල හ ක ක ර යයන මඟ න ප ටතට න ක ත කරන අගයන අනවශ යය අවස ත වලද න සලක හ ර ය හ ක එනම එම අගයන භ ව ත ක ර ම අන ව ර යය න ව ස ත ථ ක අඩ වශය න බල ත මක වර ගයන typing පවත එනම ස යල ම දත ත වලට දත ත වර ගයක පවත න අතර අවශ යය අවස ත වලද වර ගය ම ර ක ට භ ව ත කල හ ක උද හරණයක ල ස අක රක ස ඛ ය වක ල ස භ ව ත කල හ ක ය ආක ත න අර ථ ද ක ව ම පහස ය එනම අර ථ ද ක ව මක ඉද ර පස define යන ව න ම ලපදයක න ය දය තවද ක ර යයක අර ථ ද ක ව ම ද function යන ව න ම ලපදයක න ය දන අතර ක ර යයන පර ම ත න සම හය ද ක ව මට භ ව ත කරන වරහන මඟ න හඳ න ගන ලබය භ ව ත කරන නන මඟ න හඳ න ව ද න ලබන වර ගයන typedef සහ ස ය ක ත වර ගයන භ ව ත ක ර මට හ ක ය ව ෂමජ ත ය සම හ දත ත වර ග struct භ ව ත කල හ ක අතර එල ස සකස කරන ලද දත තයන ඒකක ල ස භ ව ත ක ර ම ස ද කරය ආර වන අ කනය ක ර ම ස චක ගණ තය සඳහන වන පර ද ස ද වන ද ව ත යක අ කනයක ව ෂම ජ ත ය සම හ දත ත වර ග ම න න ව ආර වන ම ල ක වස ත න fist class objects ගණයට අයත න ව එනම ඒව භ ව ත ක ර ම හ ඒව ට ආද ශ ක ර ම තන න ර ම ත ක රකයක built in operator භ ව තය න ස ද කල න හ ක අර ථ ද ක ව ම ද Array යන ව න ම ලපදයක භ ව ත න කරන අතර ක ට වරහන මඟ න ආක ත මය වශය න ආරවක දක වන ලබය උද month 11 Enumerated වර ගයන භ ව ත කල හ ක අතර එය enum ම ලපදය මඟ න අර ථ දක වය ඒව න ඛ ල සමඟ අන තර පර වර තනය ස ද කල හ ක පර ද න දහස ව පවත String යන ව න ව නම දත ත වර ගයක න ම ත නම ත එය ශ න යය අක රක න අවසන වන අක ර ආර වක මඟ න න ර පණය කල හ ක ද ඩ ග මට ටම පර ගණය මතක භ ව තය පර ගණය මතකය ය න ත ර ක ල ප න ස චක මඟ න පර හරණය කල හ ක වන පර ද පර වර තනය ක ර ම ත ල න ස ද කරය ක ර යය පට ප ට procedures එනම අගයන භ හ රට න ක ත න කරන ක ර යයන void න ක ත වර ගය භ ව තය න අර ථ දක වය void යන untyped න ක ත වර ගයක එනම වර ගයක න ම ත න ක ත වර ගයක ක ර යයන ව නත ක ර යයන ට අයත lexical පර සය ත ල අර ථ ද ක ව ම ස ද කල න හ ක ප ර ස කස ම මඟ න macro අර ථ ද ක ව ම defines භ හ ර ක ත ග න ඈද ම includes සහ ත ර ක ක පර වර තනයන if def ස ද ක ර ම යන ද ස ද කරය ම ල ක ම ඩ ය ල භ ව ත ආක රයන static සහ extern ග ණ ග භ ව තය න ක ත ග න ව නම පර වර තනය කර C ව ඩසටහන සමඟ ඈද ය හ ක ය එව ට ඒව ය අන තර ගත ක ර යයන සහ දත ත වස ත න ව ඩසටහන ත ල භ ව ත කල හ ක ව ආද න ප රත ද න අක ර සම හ භ ව තය සහ ගණ තමය ශ ර ත ව න ස ක ර ණ ක ර ය වන C භ ෂ ව ත ල ඇත කල න ල යන ලද ක තයන හ භ හ ර න ලබ ගත එව න ක තයන භ ව තය න ස ද කරන ලබය C භ ෂ ව ත ල පර ගණක ව ඩසටහන කරණයට අල ත න එක ව වස ත ම ල ක ව ඩසටහන කරණ ස කල පයන OOP Concepts ව න න තන ඉහල මට ටම භ ෂ වන වල ඇත ග ණ ග සමහරක අන තර ගත න ව ඉත හ සයම ල ප රවර ධනයන Ken Thompson and Dennis Ritchie developers of the C programming language C භ ෂ ව ආරම භක ප රවර ධනයන 1969 1973 අතර ක ලය ද AT amp T බ ල පර ය ෂණ ගරය ද ස ද ව ය 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 න ව පර ගණක භ ෂ වක භ ව ත ක ට සකස කරන ල බ ම හ ය ම පද ධත කර නලය ව K amp R C 1978 ද බ රයන කර නග න සහ ඩ න ස ර ච ද ද න ව ස න The C Programming Language නම ග රන ථය ම ල ම ස ස කරණය ප රක ශයට පත කරන ලද පර ගණය ව ඩසටහන කර වන අතර K amp R නම න ප රචල ත ව ම ය බ හ කලක යන ත ක ම C භ ෂ ව සඳහ ව අව ධ මත ප ර ව තරක ල ස භ ව ත කර ඇත ම ම ග රන ථය සඳහන වන C ස ස කරණය K amp R C ල ස ස මන ය ව යවහ රය ද හ ඳ න ව ම හ ද වන ස ස කරණයANSI C ප රම ත න ආවරණය වන පර ද රචන කර ඇත ANSI C සහ ISO C ප රධ න ල ප ය en 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 එකම පර ගණක භෂ වක සඳහ භ ව ත ව ප රම ත න ව C99 ප රධ න ල ප ය en C99 ANSI ISO ප රම ත කරණ ක ර ය වල ය න පස ව වසර ගණන වක C භ ෂ ප ර ව තර ස ප ක ෂව ස ථ ර ල ස ප වත න 1995 ද ප රම ත ය පවත න සමහර කර ණ න ව රද ක ර මටත ජ ත යන තර අක ෂර ම ල වට ව ඩ ද යකත වයක ලබ ද මටත C90 සඳහ පළම ප රම ණ ක ස ශ ධනය Normative Amendment 1 ස ද ව ය එය තවද රටත 1990 අග භ ගය ද ස ශ ධනය ව ISO IEC 9899 1999 ල ස ප රක ශයට පත කරන ලද එම ප රම ත ය ස මන ය ව යවහ රය ද C99 ල ස හ ඳ න ව Technical Corrigenda මඟ න එය ද ම වන ව ට ත න වරක න වත ස ශ ධනය ව ඇත C11 ප රධ න ල ප ය en C11 C standard revision 2007 ද C භ ෂ ව තවත ස ස කරණයක ස ද ක ර ම සඳහ කටය ත ආරම බ ක ර න න ල වශය න 2011 12 08 වනද ප රක ශයට පත ව මට ප ර එය C1X ල ස හ ඳ න ව ය ම හ ද C ප රම ත කම ට ව ද නට පවත න න ර ම ණයන ත ල පර ක ෂ කර න ම ත භ ෂ ව නව අ ග භ ව තය ස ම ක ර මට කටය ත කරන ලද ප ද වර ගය macros type generic macros න ර න ම ක ආක ත න ව ඩ ද ය ණ කල ය න ක ඩ භ ව තය අණ ක ක ර යයන atomic operations සම න තරව ක ර ය ත මක කල හ ක ග ල ම multi threading සහ ස ම පර ක ෂක ශ ර ත bounds checked functions ව න නව අ ග ගණන වක C11 ප රම ත ය ද C භ ෂ වට හ එහ ප ස ථක ලයට එක ව ය තවද එය C පර ගණක භ ෂ ව සමඟ C භ ෂ ව ග ළප මද ව ඩ ද ය ණ කරන ලද Embedded C ප රධ න ල ප ය en Embedded C ඓත හ ස කව පර පථ සඳහ ව C ව ඩසටහන කරණය ස ථ ර ලක ෂ ය ගණ තය fixed point arithmetic ප රභ න න මතක ගබඩ එකකට ව ඩ ගණනක භ ව තය සහ ම ල ක ආද න ප රත ද න ක ර යයන ව න ලක ෂණ ලබ ද මට ප රම ත කරණය න කල ද ග භ ව ත කරන ලද 2008 ද C ප රම ත කම ට ව C භ ෂ ව වර ධනය කරම න ත ක ෂණ ක ව ර ථ වක පළ කල අතර එමඟ න ම ම ග ටළ වලට ව සඳ ම ල ස ස යළ ම න ර ම ණයන ප ළ ප ද ය ය ත ප ද ප රම ත යක හඳ න ව ද න ල බ ව ය එහ ස ථ ර ලක ෂ ය ගණ තය fixed point arithmetic න ම ක මතක අවක ශ සහ ම ල ක ආද න ප රත ද න ද ඩ ග භ ව තය ව න ස මන ය C භ ෂ ව න ම ත ලක ෂණ ගණන වක අන තර ගත ව ආක ත න ප රධ න ල ප ය ස ක ත ම ල ව C භ ෂ ව ක තයන හ භ ව ත වන අක ෂර ම ල වට පහත අක ෂර ඇත ළත ව අක ෂර a z A Z ස ඛ ය ක 0 9 ව ර ම ලක ෂණ amp lt gt හ ස අවක ශ ද ක ව මට භ ව ත කරන අක ෂර space horizontal tab vertical tab form feed newline නව ප ළ යකට ය ම ක ර ම අක ෂරය අක ෂර ප ළ යක අවස නය දක වය එය තන අක ෂරයක ම ව ම අවශ යය න ම ත අතර එකකට ව ඩ අවස ථ වලද ඒ ස යල ලම C භ ෂ ව එකක ල ස සළකය අමතර බහ බය ට ක ත කනය කරන ලද අක ෂර භ ව ත කල හ ක ව වත ව ව ධ පද ධත න සමඟ භ ව ත ක ර ම ද ග ටළ මත ව ය හ ක ම තකද ප රක ශයට පත කරන ලද C11 ප රම ත ය මඟ න බහ ජ ත ක ය න ක ත අක ෂර භ ව තයට අවසර ද ඇත නම ත u i DDDD i ක ත කනය i DDDD i මඟ න ය න ක ත අක ෂර සඳහ ප ද භ ව තය දක වය උද u4025 භ ව තය න C ක තය පද ධත අතර පහස ව න භ ව ත කල හ ක පර ද ල ව ය ය ත ය ම ම අ ගය ප ළ ල ව න ර ම ණය කර න ත ම ල ක C ක ර ය ත මක කරව ම අක ෂර ම ල ව ද alert backspase හ carriage return සඳහ න ර පණ අක ෂර සමඟ C භ ෂ ව භ ව ත කල අක ෂර ම භ ව ත ව ම ලපද C89 ප රම ත ය ම ලපද ව න කල ව ශ ෂ ත ත ර ම සහ ත වචන 32 ඇත auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while C99 ප රම ත ය ද තවත ම ල පද 5 එකත ව ය Bool Complex Imaginary inline restrict C11 ප රම ත ය ද තවත ම ල පද 7 එකත ව ය Alignas Alignof Atomic Generic Noreturn Static assert Thread local බ හ මයක අල ත න එක ව ම ලපද underscore සළක ණකට පස ව ව ඉ ග ර ස ක ප ටල අක ෂරයක න පස ව ආරම භ ව එයට හ ත ව නම එම ආක ත න සහ ත ම ල පද කල න භ ෂ ව න ර ම ණයන සඳහ C ප රම ත මඟ න ව න කර ත බ මය ම ව පවත න ව ඩසටහන ප රභව ක තයන හ භ ව ත ක ර ම කල න හ ක ව ත බ න ස ම C භ ෂ න ර ම ණයන මඟ න ව ඩසටහන කරණ භ ෂ වට ම ම ද ග වල සහභ ග ත වය ලබ ද ම ආරම භ කරන ත ර එමඟ න ක ස ඳ බලප මක න ව ය සමහර සම මත ශ ර ෂ headers ම ව න underscore සළක ණ සහ ත පද සඳහ ස ද ස ත ල ය අර ථද ක ව ම define ස ද කරය ක රකයන ප රධ න ල ප ය en Operators in C and C C භ ෂ ව සත ව ප හ සත ක රකයන සම හයක පවත ඒව සමහරක ප රක ශනයක ක ර ය ත මක ව ම ද ක මන ආක රය න ස ච ලන ස ද ව ය ය ත ද යන නද න යම වශය න සඳහන කරය C භ ෂ ව ක රකයන පහත පර ද ව ගණ තමය ආද ශක ආවර ධක augmented ආද ශක amp lt lt gt gt බ ට සලක ස ද කරන තර කන amp බ ට සලක ස ද කරන තල ල ක ර ම lt lt gt gt බ ල යන තර කන amp amp තත වයන ඇගය ම සම න ත මත වය පර ක ෂ ක ර ම ක රයයන ක ර ය ත මක කරව ම ව ඩ ක ර ම සහ අඩ ක ර ම ස ම ජ කය න ත ර ම gt වස ත වල ප රම ණය ගණනය ක ර ම sizeof පට ප ට ගත සම බන දත lt lt gt gt සම ද ද ශ සහ ව සම ද ද ශ dereference amp අන ක රමයන අන ප රක ශන subexpression ක ණ ඩ ක ර ම වර ග ප ර ළ ම i typename i ගණ තය ද ම න න ව C භ ෂ ව ද ක රකය සම නත වය ද ක ව ම ව න වට ආද ශ ක ර ම සඳහ ය ද ගන එය Fortran සහ PL I භ ෂ වල ප ර ව දර ශය න ලබ ග න ඇත සම නත වය ද ක ව මට භ ව ත ව එස ව වද ම ම ක රකයන ද ක පටලව භ ව ත කරන සමහර අවස ත වලද C භ ෂ පර වර ථකය මඟ න ක ස ඳ ද ෂ පණ ව ඩයක ලබ න ද ය උද හරණයක ල ස if a b 1 යන ප රක ශනය ද a හ අගය බ න ද වට වඩ ව ශ ලව පවත න ත ක if සඳහ සත යය යන අගය ල බ අමතර වශය න C භ ෂ ව ක රක ප රම ඛත වය සහජ ඥ නය සහ ත න ව වක වන අතර සළක ණ amp සහ සළක ණ වලට වඩ තද න ප රක ශන වලට බ ඳ පවත එනම x amp 1 0 යන න න ව රද ව ක ර ය ත මක ව මට නම එය x amp 1 0 පර ද ල ව ය ය ත ව hello world උද හරණ ව ඩසටහනK amp R ග රන ථය ම ල ම ස ස කරණය සඳහන hello world උද හරණය ස ම පර ගණක භ ෂ වකම ප හ ම ල ක අරම බක ව ඩසටහන ආක ත ය ල ස භ ව ත ක ර න ම හ ද ව ඩසටහන මඟ න hello world යන න පර ගණක ත රය මත ද ස ව ම පමණක ස ද ව ම ල ම ස ස කරණය main printf hello world n ප රම ත කරණය මඟ න තහව ර කරන ලද hello world ව ඩසටහන include lt stdio h gt int main void printf hello world n ම හ පළම ව න ම සඳහන වන include ප ර ස කස ම න ස ද කරන න එම ප ළ ය stdio h නම ශ ර ෂ ග න ව න ප රත ස ථ පනය ක ර මය එය භ ෂ පර වර ථකය මඟ න ස ද කරන ක ර යයක stdio h ශ ර ෂ ග න ව printf ව න ම ල ක ආද න ප රත ද න වලට සම බන ඳ ක ර යයන අර ථදක ව ඇත ක ණ ක වරහන මඟ න ද ක ව න න ම ම ශ ර ෂ ග න ව සම මත C ශ ර ෂයන ත බ න ස ථ නය පවත නව යන නය අපග ව ඩසටහන පවත න ෆ ල ඩරය පවත න ශ ර ෂ ග න වක ම ල ස ව ඩසටහනට ලබ ග න මට උද ත ප ඨ සළක ණ ත ල එය ල ව ය ය ත ය ඉන පස ව ද ක ව න main නම වදන න ද ක ව න න ව ඩසටහන ප රධ න ක ර යය අර ථ ද ක ව මය ව ඩසටහනක ප රධ න ක ර යයට ව ශ ෂ වට න කමක ඇත අතර ස ම ව ටම ව ඩසටහන ක ර ය ත මක ව ම ආරම භ කරන න ම ම ප රධ න ක ර යය න ව එහ වරහන මඟ න ප රධ න ක ර යයට ලබ ද න පර ම ත න න ර පණය කරන අතර එම පර ම ත න ව ඩසටහන ක ර ය ත මක කරන අවස ථ ව ද ලබ ද ම ම ව ඩසටහන void ල ස ද ක ව න න එල ස භ හ ර න පර ම ත න ව ඩසටහන ත ළට ලබ න ගන න බවය ආරම භක සඟල වරහන ප රධ න ක ර යය ආරභය දක වය ඊළඟ ප ළ ය ද ක ව න න printf ක ර යය ක ර ය ත මක කරව මය එහ ද එම ක ර යයට hello world n යන ව න අක ෂරමය පර ම ත ක අගයක ලබ ද ඇත අතර n යන ප නය ම සළක ණ escape sequence ව භ ෂ පර වර ථන කර යය ද එය නව ප ල යක ලබ ග න මට භ ව ත කරන සළක ණ new line character බවට ව නස කරය printf යන ලබ ද ය හ ක පර ම ත න ගණන ස ම කර න ම ත ක ර යයක ව එය printk යන පද ධත ක ර යය system call භ ව තය න සම මත ප රත ද නය වන පර ගණක ත රය මතට උද ත ලක ණ අතර ඇත අක ෂර ඛණ ඩය ලබ ද අවසන ඇත ත ත ක ම ව මඟ න එම වගන ත ය අවස නය දක වය අවස නය ඇත සඟල වරහන මඟ න ප රධ න කර යය අවස නය දක වය ම හ ද නම එය ම ළ ව ඩසටහන ම අවස නය ව ස ර ථකව ධ වනය ව අවසන ව ව ඩසටහනක මඟ න ම හ ය ම පද ධත යට ශ න යය 0 න ක ත කරන අතර එය ව ඩසටහන න ක මය ම තත වය exit code ව ම ව ත බලන නComparison of Pascal and C Comparison of programming languages International Obfuscated C Code Contest List of C based programming languages List of compilers C compilersසටහන The original example code will compile on most modern compilers that are not in strict standard compliance mode but it does not fully conform to the requirements of either C89 or C99 In fact C99 requires that a diagnostic message be produced The 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 ය ම ව 1993 The Development of the C Language සම ප රව ශය 1 January 2008 Thompson had made a brief attempt to produce a system coded in an early version of C before structures in 1972 but gave up the effort a href wiki E0 B7 83 E0 B7 90 E0 B6 9A E0 B7 92 E0 B6 BD E0 B7 8A E0 B6 BD Cite web class mw redirect title ස ක ල ල Cite web cite web a Unknown parameter month ignored help 1993 The Development of the C Language සම ප රව ශය 1 January 2008 The scheme of type composition adopted by C owes considerable debt to Algol 68 although it did not perhaps emerge in a form that Algol s adherents would approve of a href wiki E0 B7 83 E0 B7 90 E0 B6 9A E0 B7 92 E0 B6 BD E0 B7 8A E0 B6 BD Cite web class mw redirect title ස ක ල ල Cite web cite web a Unknown parameter month ignored help February 1978 1st ed ISBN 0 13 110163 3 Regarded by many to be the authoritative reference on C Giannini Mario Code Fighter Inc 2004 C C in Hossein Bidgoli The Internet encyclopedia 1 John Wiley and Sons p 164 ISBN 0 471 22201 1 http www wiley com WileyCDA WileyTitle productCd 0471222011 html ප රත ෂ ඨ පනය 21 March 2013 Lawlis Patricia K 1997 Guidelines for Choosing a Computer Language Support for the Visionary Organization Ada Information Clearinghouse සම ප රව ශය 18 July 2006 a href wiki E0 B7 83 E0 B7 90 E0 B6 9A E0 B7 92 E0 B6 BD E0 B7 8A E0 B6 BD Cite web class mw redirect title ස ක ල ල Cite web cite web a Unknown parameter month ignored help Programming Language Popularity 2009 සම ප රව ශය 16 January 2009 TIOBE Programming Community Index 2009 සම ප රව ශය 6 May 2009 1993 A History of C 1979 1991 PDF 1 May 2011 ද න ම ල ප ටපත PDF ව ත න ස රක ෂණය කරන ලද සම ප රව ශය 9 June 2011 1978 PDF Bell System Tech J 57 6 2021 2048 3 February 2015 ද න ම ල ප ටපත PDF ව ත න ස රක ෂණය කරන ලද සම ප රව ශය 16 December 2012 1988 2nd ed ISBN 0 13 110362 8 a href wiki E0 B7 83 E0 B7 90 E0 B6 9A E0 B7 92 E0 B6 BD E0 B7 8A E0 B6 BD Cite book class mw redirect title ස ක ල ල Cite book cite book a Unknown parameter month ignored help JTC1 SC22 WG14 C Home page ISO IEC සම ප රව ශය 2 June 2011 TR 18037 Embedded C PDF ISO IEC සම ප රව ශය 26 July 2011 ISO IEC 9899 201x ISO C11 Committee Draft 10 Common Programming Mistakes in C Cs ucr edu සම ප රව ශය 26 June 2009 Schultz Thomas 2004 C and the 8051 3rd ed Otsego MI PageFree Publishing Inc p 20 ISBN 1 58961 237 X සම ප රව ශය 10 February 2012 Page 6 of the original K amp R 2013 21st Century C ISBN 1449327141 භ හ ර සබ ඳ ISO C Working Group official website comp lang c Frequently Asked Questions ISO IEC 9899 Official C99 documents ANSI C Standard ANSI X3J11 88 090 Published 13 May 1988 Third Public Review ANSI C Rationale ANSI X3J11 88 151 Published 18 November 1988 C99 with Technical corrigenda TC1 TC2 and TC3 included PDF 3 61 MB