Skip to main content

Dark clouds and silver linings

Today I heard about a grand wedding of an Indian tycoon (Ambani's son) from a friend of mine, and he showed me some videos of it too. He said famous and powerful people from around the world have been invited to it, and the cost of the event was going to be several Billions (of Indian Rupees or USD, I don't know). If you think about it, India is a country with a higher population of substandard living conditions. There are innocent and miserable children who are forced to work for a mere subsistence, being deprived of education, health facilities, and food and water. I remember a movie based on a true story in which Akshey Kumar was playing the leading role where he makes sanitary towels (pads) for poor women who could not afford it. In such a country, a single wedding event spends billions of money. What a crappy world we are living! You could imagine how much wealth this family has amassed. On the other, this "mental disease" of exorbitant spending must be highly we

c හා c++ ප්‍රෝග්‍රැමිං - 8


ප්‍රෝග්‍රෑම් එකක් යනු දත්ත මත යම් යම් කර්මයන් සිදු කිරීම බව ඔබ දැන් දන්නවා. බහුලවම භාවිතා වන කර්මයන් තමයි එකතු කිරීම, බෙදීම ආදී ගණිත කර්මයන්. දැන් අපි බලමු කොහොමද ඒවා සිදු කරන්නේ කියා. ඔබ සාමාන්‍යයෙන් "එකතු කිරීම" නම් ගණිත කර්මය සිදු කරන්නේ දත්තයන් දෙකක් සමගයි. එය "x + y” වැනි ක්‍රමයකට නේද සංඛේතාත්මකවත් කෙටියෙනුත් නිවැරදිවත් ලියන්නේ? “අඩු කිරීම" නම් කර්මය "a – b” ආකාරයටනෙ ලියන්නේ. ඇත්තටම සී හිදිත් අප දත්තයන් සමග ගණිත කර්මයන් සිදු කරන විට, එවැනිම +, - වැනි සංඛේතමයි භාවිතා කරන්නේ. මෙවැනි +, / වැනි ගණිත කර්ම සඳහා යොදන සංඛේත ගණිත කාරක (mathematical operators) ලෙස හැඳින්වෙනවා. පහත දැක්වෙන්නේ සී හිදී යොදා ගන්නා ගණිත කර්මයි.

කාරකය
තේරුම/කර්මය
උදාහරණය
+
එකතු කිරීම
intVar1 + intVar2
-
අඩු කිරීම
intVar3 – intVar4
*
ගුණ කිරීම
intVar5 * intVar6
/
බෙදීම
intVar7 / intVar8
%
මොඩ්‍යුලස්
intVar9 % intVar10

ඉහත වගුවේ මුල් කර්ම 4 ගැන නම් ඔබට කිසිදු ගැටලුවක් නැති වුවත්, සමහරෙකුට මොඩ්‍යුලස් කියන ගණිත කර්මය ගැන වැටහීමක් නැතිව ඇති. මොඩ්‍යුලස් ගණිත කර්මයේ තේරුම උදාහරණයක් ඇසුරින්ම තේරුම් ගමු. A % B යන්නෙන් කියන්නේ A අගය B අගයෙන් බෙදූ විට ඉතිරි වන අගය ලබා දෙන ලෙසයි. ඒ අනුව A = 5 හා B = 2 නම්, A % B යන්නෙහි පිළිතුර වනුයේ 1යි (මොකද, 5 යන අගය 2න් බෙදූ විට 1ක් ඉතිරි වන නිසා). එලෙසම A = 10, B = 5 වූවා නම්, A % B = 0 වනු ඇති (මොකද 10 යන අගය 5න් බෙදූ විට ඉතිරි අගය 0 නිසා).

ඉහත ආකාරයට "එකතු කිරීම" සඳහා + භාවිතා වූවත්, ඊට අමතරව එම සංඛේතයම යොදා ගන්නවා තවත් රාජකාරි සඳහා. ඉන් ප්‍රධානම වෙනත් රාජකාරියක් නම්, යම් සංඛ්‍යාවක් ධන සංඛ්‍යාවක් කියා ලිවීමයි. උදාහරණයක් ලෙස, int var1 = +345 ලෙස ලියූ විට, ඉන් කියන්නේ ධන 345 යන සංඛ්‍යාව var1 නම් වේරියබල් එකේ ගබඩා කරන ලෙසයි. එහෙත් ප්‍රායෝගිකව අප ගණිතයේදීත් අමුතුවෙන් + ලකුණ සංඛ්‍යා ඉදිරියෙන් නොදමා නිකංම සංඛ්‍යාව ලියනවානේ; එවිටද එය ධන සංඛ්‍යාවක් ලෙසයි සැලකෙන්නේ. ඉතිං සී හිදිත් එලෙසමයි. ඔබට කැමති නම් සංඛ්‍යාවක් ඉදිරියෙන් + යොදා එය ධන සංඛ්‍යාවක් කියා දැක්විය හැකියි (+ නොදැම්මත් එය කොහොමත් ධන සංඛ්‍යාවක් ලෙස සැලකෙනවා). එලෙසම - යන්න සංඛ්‍යාවක් ඉදිරියෙන් දැමූ විට එය - සංඛ්‍යාවක් ලෙස දක්වා සිටිනවා (සාමාන්‍ය ගණිතයේදී මෙන්ම). ඒ අනුව "අඩු කිරීම" යන්නට අමතරව ඍණ සංඛ්‍යා දැක්වීමේ රාජකාරියත් - ට තිබෙනවා නේද?

කොම්පියුටර්වලදී අපට ගුණ කිරීම සඳහා x හමු වන්නේ නැත. ඒ වෙනුවට හැමවිටම භාවිතා කෙරෙන්නේ * යන්නයි (එය "තරු ලකුණ" හෙවත් asterisk ලෙස හැඳින්වෙනවා). සී වල පමණක් නොව, පරිගණක ක්ෂේත්‍රයේ හැමතැනම ගුණ කිරීම හඟවන්නේ * මඟිනි.

බෙදීම ගැනත් යමක් කිව යුතුමයි. / වලින් සංඛේතවත් කරන බෙදීම යන ගණිත කර්මය සිදු කරන කාරකය ඇත්තටම දෙයාකාරයකින් ක්‍රියා කරනවා. / ට දෙපස ඇත්තේ නිඛිල වර්ගයේ දත්තයන් දෙකක් නම් (එනම්, int, short, long, char යන දත්ත වර්ගයෙන් යුත් දත්ත දෙකක් නම්), එවිට / සිදු කරන්නේ "නිඛිල බෙදීම" (integer division) යන කර්මයයි. එහිදී / ට වම් අත පැත්තේ ඇති අගය / ට දකුණත පැත්තේ ඇති අගයෙන් බෙදන්නේ උපරිම පූර්ණ සංඛ්‍යාව ලැබෙන පරිදිය. උදාහරණයක් ලෙස, 5 / 2 = 2 වේ. ඊට හේතුව 5 යන්න 2න් බෙදූ විට 2ක් ලැබී 1ක් ඉතිරි වන අතර, එම ඉතිරි වන ගණන හෙවත් දශම කොටස නොසලකා හරී (බෙදීමෙන් පසු ලැබෙන පිළිතුරෙහි පූර්ණ සංඛ්‍යා කොටස පමණක් සලකන නිසා). එලෙසම 23/5 = 4 වේ (මොකද 23 ට පහේ ඒවා 4ක් ඇති අතර, 3ක් ඉතිරි වේ; එම ඉතිරිය නොසලකා හැරේ). එහෙත් / ට දෙපසින් ඇති දත්තයන් දෙකෙන් එකක් හෝ දෙකම දශම සංඛ්‍යා දැක්විය හැකි දත්ත වර්ගයට අයත් නම් (එනම් float හෝ double) සාමාන්‍ය පරිදි එම බෙදීම දශමස්ථාන සහිතවම සුලු කරයි. මේ සියලු කරුණු පහත උදාහරණය ඇසුරින් අත්හදා බලන්න.

#include <stdio.h>

int main()
{

int num1, num2, sum; /* number1 and number2 */
float num3, num4; /* number3 and number4 */

/* addition of 2 integers */
printf("Enter two integer numbers for addition:\n");
scanf("%d\n%d",&num1,&num2);
sum = num1 + num2;
printf("The addition of number1 and number2 is %d \n", sum);

/* addition of 2 decimal (floating point) numbers */
printf("Enter two decimal numbers for addition:\n");
scanf("%f\n%f", &num3, &num4);
printf("The addition of number3 and number4 is %f \n", num3+num4);

/* addition of an integer number and a decimal number */
printf("Enter first an integer number, followed by a decimal number for addition\n");
scanf("%d\n%f", &num1,&num3);
printf("The addition of number1 and number3 is %f \n", num1+num3);

/* subtraction of 2 integers and 2 decimals at once */
printf("Enter a pair of integers first, and a pair of decimals next for subtraction\n");
scanf("%d\n%d\n%f\n%f", &num1, &num2, &num3, &num4);
printf("The subtraction of first pair is: %d \nThe subtraction of second pair is: %f\n", num1 - num2, num3-num4);

/* multiplication of 2 integers and 2 decimals at once */
printf("Enter a pair of integers first, and a pair of decimals next for multiplication\n");
scanf("%d\n%d\n%f\n%f", &num1, &num2, &num3, &num4);
printf("The multiplication of first pair is: %d \nThe multiplication of second pair is: %f\n", num1 * num2, num3*num4);
printf("The multiplication an integer (number1) and a decimal (number3) is: %f\n", num1*num3);
/* division of 2 integers and 2 decimal at once */
printf("Enter a pair of integers first, and a pair of decimals next for multiplication\n");
scanf("%d\n%d\n%f\n%f", &num1, &num2, &num3, &num4);
printf("The integer division of first pair is: %d \nThe division of second pair is: %f \nThe division of an integer (number1) and a decimal (number3) is: %f\n", num1 / num2, num3/num4, num1/num3);

/* modulus operation of 2 integers */
printf("Enter two integers for modulus operation\n");
scanf("%d\n%d", &num1, &num2);
printf("The modululs of number1 and number2 is: %d\n",num1 % num2);


return(0);

}

ඇත්තටම යම් පොදු ලක්ෂණයක් මෙහිදී ඔබට පැහැදිලි විය යුතුයි. එනම්, පූර්ණ සංඛ්‍යා හෙවත් නිඛිල සංඛ්‍යාවක් සමග දශම සංඛ්‍යාවක් යම් ගණිත කර්මයකට ලක් කළ විට ලැබෙන පිළිතුරේ දත්ත වර්ගය වන්නේද double යන (දශම සංඛ්‍යා දැක්විය හැකි) දත්ත වර්ගයයි. ඒ කියන්නේ දශම සංඛ්‍යාවක් පිළිතුරු ලෙස ලැබෙන ගණිත කර්මයකදී, එම පිළිතුර ගබඩා කළ යුතු නම්, double යන වේරියබල් එකක එය ගබඩා කළ යුතුයි. උදාහරණයක් බලමු. බලන්න පහත කෝඩිංවලදී සෑම ගණිත කර්මයකම දශම සංඛ්‍යා නිරූපණය කළ හැකි (float හෝ double) දත්ත වර්ගයක් ඇති අතර, එම ගණිත කර්මයන්ගේ පිළිතුර num4 යන double වර්ගයේ වේරියබල් එකකයි ගබඩා කරන්නේ.

int num1, num2;
float num3;
double num4;

num1 = 10;
num2= 20;
num3=5.5;

num4 = num1 + num3;
num4 = num2 * num3;
num4 = num1/num3;

+, * ආදී කාරක කිහිපයකින් යුතු සංයුක්ත ගණිත ප්‍රකාශයක් වුවද ලිවිය හැකියි. පහත දැක්වෙන්නේ එවැනි සරල ගණිත ප්‍රකාශ කිහිපයකි (තද අකුරින් දක්වා තිබෙන්නේ).

float mass = 5, length, width, height, volume, density, surfaceArea;
length = width = height = 2;
volume = height * width * length;
density = mass/volume;
/* or density = mass/(height * width * length) */
surfaceArea = 6 * length * width;

ඔබ දන්නවා සාමාන්‍ය ගණිතයේදී වුවද මෙවැනි කාරක කිහිපයකින් යුතුව සංයුක්ත ගණිත ප්‍රකාශ ලියන විට, ඒවා විසඳන ක්‍රමයක් තිබෙනවා. උදාහරණයක් ලෙස, 4 + 2 * 5 ලෙස දී ඇති ප්‍රකාශය සුලු කරන්නේ කෙසේද? පළමුව 4 හා 2 එකතු කර ඉන්පසු එය 5න් ගුණ කරනවාද, නැතහොත් 2 හා 5 එකිනෙකට ගුණ කර එය 4ට එකතු කරනවාද? ඔබට දැන් මතක් වෙනවා ඇති "වන්බෙගුඑඅ" වැනි කෙටි ක්‍රමයක් පාසල් කාලයේදී ඉගෙන ගත්තා මෙවැනි ගණිත ප්‍රකාශ සුලු කිරීමට යොදා ගත්. ඒ අනුව පළමුව වරහන් තිබේ නම් වරහන් තුල තිබෙන කොටස සුලු කළ යුතුය. දෙවැනියට ගුණකිරීම් හා බෙදීම් සිදු කළ යුතුයි. ඉන්පසුව එකතු කිරීම් හා අඩු කිරීම් සිදු කළ යුතුයි. එම රීතිය precedence rule ලෙසයි හැඳින්වෙන්නේ. ඇත්තටම මෙම ප්‍රිසීඩන්ස් රීතිය එලෙසම සී වලත් වලංගු වේ (ප්‍රිසීඩන්ස් යන ඉංග්‍රීසි වචනයේ තේරුම අනුපිලිවෙල හෙවත් ප්‍රමුඛතා පිලිවෙල යන්නයි). ඒ අනුව පහත ප්‍රකාශය සුලු කළ විට ලැබෙන පිළිතුර කුමක්ද?

Short var1 = 2, var2 = 10, var3 = 2, var4 = 1, var5 = 3, var6 = 10, Result;
Result = var1 + var2 – var3 / (var4 – var5) * var6;

වන්බෙගුඑඅ රීතිය අනුව පළමුව වරහන් තුළ තිබෙන ප්‍රකාශය සුලු වේ; එවිට var4 – var5 යනු 1 – 3 නිසා -2 ලැබේ. ඉන්පසුව ගුණ කිරීම් හා බෙදීම් සුලු කළ යුතුයි. මෙහිදී පළමුව ගුණ කරනවාද බෙදනවාද යන්න වැදගත් නැත. ඒ කියන්නේ ගුණ කිරීම හා බෙදීම යන කර්මයන් දෙකම එකම මට්ටමින් සැලකේ. එහෙත් මෙහිදී පළමුව සුලු කළ යුත්තේ කුමක්දැයි තීරණය වන්නේ ගණිත ප්‍රකාශයේ වමේ සිට දකුණට යන විට එම කාරකයන් හමු වෙන පිළිවෙලයි. ඒ අනුව ඉහත උදාහරණයේදී පළමුව හමුවන්නේ / යි. ඒ අනුව var3/(var4 – var5) යන්න සුලු කළ යුතුයිනෙ (වරහන් සහිත විට එම මුලු වරහනම තනි ඒකකයක් වශයෙන් ගණිතයේදී සලකන බව ඔබ දන්නවා). දැනටමත් වරහන සුලු කර තිබෙන අතර එම අගයද ආදෙශ කළ විට 2/-2 යන බෙදීමයි සිදු කිරීමට තිබෙන්නේ. එම අගය -1 වේ. බෙදීම සිදු කළ පසු අපට ඊළඟට හමුවන්නේ ගුණ කිරීමයි. ඒ අනුව -1 * 10 නිසා, -10 ලැබේ. දැන් වරහන්, ගුණ කිරීම් හා බෙදීම් සියල්ල සිදු කර අවසන් අතර, එකතු කිරීම් හා අඩු කිරීම් සිදු කළ යුතුය. මෙහිදීද ඒ දෙක එකම මට්ටමේ සැලකෙන අතර, වමේ සිට දකුණට පැත්තට ඇති පිළිවෙල අනුව එම සුලු කිරීම් සිදු කළ යුතුය. එවිට, පළමුව var1 + var2 සුලු කරමු. එය 2 + 10 නිසා 12 ලෙස ලැබේ. මෙම 12 ඊට පිටුපසින් ඇති පදයෙන් අඩු කිරීමටයි තිබෙන්නේ. දැනටමත් var3/(var4 – var5) * var6 යන කොටස සම්පූර්ණයෙන්ම සුලු කර -10 යන අගය ලබා ගෙන ඇති නිසා, 12 - -10 ලෙස සුලු කිරීමට සිදු වේ. එවිට, 12 - (-10) = 12 + 10 = 22 ලෙස අවසන් පිළිතුර ලැබේ. ඒ අනුව Result යන වේරියබල් එකේ 22 යන අගය ගබඩා වේවි. (මේ සරල සිද්ධාන්ත ගැන තවමත් හරිහැටි දැනුමක් නැතිනම් කරුණාකර එම සරල කාරණා පළමුව ඉගෙන ගන්න; ගණිත දැනුමක් නැතිව ප්‍රෝග්‍රැමිං සිදු කළ නොහැකිය.)

ඔබ ඉහත කෝඩිංවල දුටුවා සේම, සී වලදී යම් ගණිත ප්‍රකාශයක් දෙපසට () යන වරහන් යෙදිය හැකියි. එවිට එම වරහන් තුල ඇති කොටස්වලට ඉබේම ප්‍රමුඛතාව ලැබෙන බව දැන් ඔබට වැටහෙනවා ඇති. ඒ කියන්නේ ගණිත ප්‍රකාශයක් තුල ඇති කොටස් සුලු වන අනුපිලිවෙල හෙවත් සුලුවන ප්‍රමුඛතාව වරහන් යොදා වෙනස් කළ හැකියි. පහත කෝඩිං බලන්න.

20 + 12 / 2 – 4

සුපුරුදු පරිදි වන්බෙගුඑඅ රීතිය යොදා සුලු කරන්න. එවිට එය පහත ආකාරයට සුලු වේවි.

20 + 12 / 2 – 4 → 20 + 6 – 4 → 26 – 4 = 22

එහෙත් ඔබට අවශ්‍ය නම් පළමුව 2-4 යන කොටස සුලු වීමට, එවිට ඔබට හැකියි එම කුඩා කොටස දෙපසට පහත ආකාරයට වරහනක් යොදන්න. එවිට එය සුලු වන ආකාරය නැවතත් වන්බෙගුඑඅ අනුව පහත ආකාරයට සිදු විය යුතුයි නේද?

20 + 12 / (2 – 4) → 20 + 12 / -220 + -614

ඒ අනුව සාමාන්‍ය ගණිත ප්‍රකාශ සුලු කිරීමේදීත් සී ප්‍රෝග්‍රෑම් සෑදීමේදීත් වරහන්වල එම ප්‍රබල හැකියාව හා හැසිරීම ගැන සැලකිලිමත් වන්න.

පසුවට ඔබ ඉගෙන ගනීවි ප්‍රෝග්‍රැමිංවල නිතරම යම් වේරියබල් එකක් 1 බැගින් වැඩි කිරීමට අවශ්‍ය වෙනවා. උදාහරණයක් ලෙස, count යන නමින් වේරියබල් එකක් ඇති විට, එහි අගය වරකට 1 බැගින් වැඩි කරගෙන යෑමට අවශ්‍ය වෙනවා. දැනට count වේරියබල් එකේ ගබඩා වී තිබෙන අගය 0 නම්, ඊළඟට ඊට 1ක් එකතු වේ. එවිට එහි නව අගය 0+1 = 1 වේ. ඊළඟට එය නැවතත් 1කින් වැඩි වී 1+1 = 2 බවට පත් වේ. මේ ආකාරයට ක්‍රමයෙන් 3, 4, 5, 6, ආදී ලෙස එකින් එක වැඩි වේ. මෙලෙස 1න් එක වැඩි වෙන විචල්‍යන්ට counter හෝ counter variable යන නම භාවිතා වේ. කොහොමද කවුන්ටර් වේරියබල් එකක් සාදා ගන්නේ? එය පහසුය. කරන්නට තිබෙන්නේ දැනට තිබෙන අගයට 1ක් එකතු කර ගන්නා ලෙස ස්ටේට්මන්ට් එකක් සෑදීමයි.

short count = 0;
……..
count = count + 1;

සාමාන්‍යයෙන් කවුන්ටර් වේරියබල් එකක් 0 අගටය ඉන්ෂියලයිස් කරනවා (මොකද ගණන් කිරීමක් සාමාන්‍යයෙන් ආරම්භ කරන්නේ 0 සිටනෙ). එහෙත් කුමක් හෝ හේතුවක් නිසා ගණන් කිරීම 10, 102 වැනි කුමක් හෝ මුල් අගයක සිට ආරම්භ කිරීමට අවශ්‍ය නම්, 0 වෙනුවට එම අගය ආදේශ කරගන්න (short count = 100). තවද, එකින් එක එකතු කරන්නේ නැතිව 2න් 2 හෝ 10න් 10 හෝ වෙනත් අගයකින් වැඩිවීගෙන යෑමට අවශ්‍ය නම්, 1 වෙනුවට එම තමන් කැමති අගය වුවද ලිවිය හැකියි. ඒ අනුව, count = count + 10 යන කවුන්ටර් ප්‍රකාශයෙන් කියන්නේ අගය 10න් 10ට වැඩිකරගෙන යන ලෙසයි.

ඇත්තටම ඉහත count = count + 1 හෝ count = count + 5 වැනි ප්‍රකාශවල ඇති + වෙනුවට වෙනත් ගණිත කාරකයක්ද ලිවිය හැකියි අවශ්‍ය නම්. + ට අමතරව නිතරම අවශ්‍ය කරන කාරකයක් තමයි - යන කාරකය. + මඟින් කවුන්ටරයේ අගය ක්‍රමයෙන් ඉහල දමන අතර, - මඟින් එහි අගය ක්‍රමයෙන් පහල දමනවා. (කවුන්ටරයක් වුණාම අගය ඉහල දැමීමට මෙන්ම පහල දැමීමටත් අවශ්‍ය කෙරෙනවා.)

count = count – 1;
count = count – 2;

ඊට අමතරව var1 = var1 * 2 හෝ var1 = var1/10 වැනි ප්‍රකාශත් ලිවිය හැකි බව වැටහෙනවානේ. +, -, *, /, % යන කාරක උපයෝගී කොටගෙන සාදනු ලබන ඉහත ප්‍රකාශ ලිවිය හැකි කෙටි ක්‍රමයක්ද සී වල හඳුන්වා දී තිබෙනවා. එම ක්‍රමය පහසුවෙන් අවබෝධ වනු පිණිස මා ඒවා සියල්ල පහත දක්වනවා. මෙහිදී අදාල කාරකය හා = යන සලකුණ සමග කැටි කොට දක්වනවා. මෙවිට, +=, -=, *= යන කාරක compound assignment operator ලෙස හැඳින්වෙනවා.

count = count + 1 → count += 1
count = count – 2 → count -= 2
count = count * 3 → count *= 3
count = count / 5 → count /= 5
count = count % 11 → count %= 11

මා පෙරත් පැවසූ ලෙසම කවුන්ටර් වේරියබල් අපට නිතරම ප්‍රෝග්‍රැමිංවල අවශ්‍ය කරනවා. ඉතිං කවුන්ටර් සඳහාම සී භාෂාවේ වෙනම ඔපරේටර් දෙකක් හඳුන්වා දී තිබෙනවා (එක් ඔපරේටරයකින් කවුන්ටරයේ අගය ඉහල දමන අතර, අනෙකෙන් කවුන්ටරයේ අගය පහත දමනවා). එම ඔපරේටර් දෙක වන්නේ ++ හා - - යන්නයි (ධන ලකුණු දෙකක් හා ඍණ ලකුණු දෙකක්). යම් වේරියබල් එකකට පසුව හෝ පෙර (හිස් තැන් නොතබා) මෙම ඔපරේටර් එකක් යොදන්නටයි තිබෙන්නේ.

count++ යනු count = count +1 හෙවත් count += 1 යන්නයි. එයම ++count ලෙසත් ලිවිය හැකියි. මෙයින් කවුන්ටරයේ අගය එකින් එක වැඩි කරන නිසා, ඊට increment operator (increment යන්නෙහි තේරුම "ක්‍රමයෙන් අගය ඉහල යනවා" යන්නයි) ලෙස හැඳින්වෙනවා.

count-- යනු count = count -1 හෙවත් count -= 1 යන්නයි. එයම --count ලෙසත් ලිවිය හැකියි. මෙයින් කවුන්ටරයේ අගය එකින් එක අඩු කරන නිසා, ඊට decrement operator (decrement යනු "කමයෙන් අගය අඩු වෙනවා" යන්නයි) ලෙස හැඳින්වෙනවා.

වේරියබල් එකට පසුව ++ හෝ - - යොදන විට, දළ වශයෙන් එහි වෙනසක් නැතත්, ඇත්තෙන්ම එහි සියුම් වෙනසක් තිබෙනවා (එම වෙනස ඉදිරියේදී සුදුසු අවස්ථාවේදී පෙන්වා දෙන්නම්). ++var1 හෝ - -var2 වැනි ආකාරයට ඉදිරියට ඔපරේටරය දමන විට, ඊට prefix increment operator (pre-increment operator) හෝ prefix decrement operator (pre-decrement operator) ලෙස කියන අතර, var3++ හෝ var4-- වැනි ආකාරයට පසුපසට දමන විට, ඊට postfix operator (post-increment operator හෝ post-decrement operator) කියා කියනවා.

මී ළඟට අප ඉගෙන ගන්නට යන්නේ ප්‍රෝග්‍රැමිංවල ඉතාම වැදගත් මාතෘකාවක් වන ෆන්ක්ෂන් ගැනයි. ෆන්ක්ෂන් ගැන ඉගෙන ගත් පසුව සෑම සී ප්‍රෝග්‍රෑම් එකකම දක්නට ලැබෙන main() ගැනත් අපට හොඳින් වටහ ගත හැකියි.