Lanka Developers Community

    Lanka Developers

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Shop
    1. Home
    2. Kalana
    3. Best
    • Profile
    • Following 8
    • Followers 5
    • Topics 17
    • Posts 53
    • Best 29
    • Controversial 0
    • Groups 0

    Best posts made by Kalana

    • C Programming මුල සිට ඉගෙනගනිමු (part 14 - Strings)

      සුබ දවසක් වේවා ඔයාලට. අද මන් මේ ලිපිය මඟින් කතා කිරීමට බලාපොරොත්තු වන්නේ C Programming වල එන Strings ගැනයි. මොනාද මේ Strings කියලා කියන්නේ. සරලව පැහැදිලි කලොත් String එකක් කියලා කියන්නේ characters කිහිපයක් එකතු වී සෑදුණු array එකක් කියලා කිව්වොත් නිවැරදියි. අපි characters(char) පාවිච්චි කරද්දි අපිට එක්වරකට output කරන්න පුලුවන් එක character එකක් විතරයි, හැබැයි Strings වලදී අපිට ඕන තරම් characters එකවර output කරන්න පුලුවන්. අපි මෙහිදී සාකච්ජා කිරීමට බලාපොරොත්තු වන්නේ Strings යොදා ගනිමින් කරන්න පුලුවන් වැඩ, දිගු කාර්යයන් කෙටියෙන් කරගන්න වගේ දේවල් ගැන.

      මන් මගේ පලවෙනි ලිපියේ කිව්වා prinf(), scanf() වගේ දේවල් store වෙලා තියෙන්නේ #include <stdio.h> යන header file එක ඇතුලේ කියලා. එතකොට Strings වලටත් අපි වෙනම header file එකක් භාවිතා කරනවා. ඒ තමයි #include <string.h> කියන header file එක.

      Array එකක් භාවිතා කර String එකක් ලිවිය හැකි ආකාර දෙකක් පවතිනවා.

      1. char name[]={'K', 'A', 'L', 'A', 'N', 'A', \0'} -: \0 යොදාගන්නේ String එක එම ලකුණින් අවසන් වන බව පෙන්වීමටයි. මෙය NULL character ලෙස හදුන්වයි.

      2. char name[]="KALANA"; -: මෙහිදී \0 ලකුණ යොදන්නේ නැත්තේ එය automatically වචනය අවසානයේ add වන නිසාවෙනි.

      අපි දැන් මේ සාකච්ජා කල කරුණු භාවිතා කර සරල C Program එකක් ලියමු.

      #include <stdio.h>
      #include <string.h> // string header එක භාවිතා කල යුතු වේ.
      
      int main()
      {
          char name[20];
      
          printf("Enter your Name = ");
          scanf("%s", name); // අනික් ඒවා මෙන් නොව මෙහිදී & ලකුණ යෙදිය යුතු නොවේ.
      
          printf("Your name is = %s",name); //string එකක් input කිරීමට හා output කිරීමට %s යොදා ගනී
      
          return 0;
      }
      

      Output -:

      Enter your Name = Kalana
      Your name is = Kalana
      

      මම මගේ 4වෙනි ලිපියෙන් කතා කලා gets() හා puts() ගැන. අපි ඒවා යොදා ගනිමින් ඉහත Program එක නැවත ලියමු.

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
        
          char nickname[20];
      
          puts("Enter your Name = ");
          gets(nickname);
      
      	puts("Your name is = ");
          puts(nickname);
      
          return 0;
      }
      

      Output -:

      Enter your Name = 
      Kalana
      Your name is = 
      Kalana
      

      ඉහත උදාහරණ වලින් ඔබට පෙනෙනවා ඇති Strings වල ක්‍රියාකාරිත්වය. අපි දැන් කතා කරමු Strings වල එන functions මොනාද කියලා.

      • strlen -: string එකක දිග සංඛ්‍යාත්මකව ගැනීම මෙමගින් සිදු කරයි.
      • strlwr -: string එකක තියෙන සියලුම අකුරු simple letters එනම් lowercase වලට හැරවීම සිදු කරයි
      • strupr -: string එකක තියෙන සියලුම අකුරු capital letters එනම් uppercase වලට හැරවීම සිදු කරයි
      • strcat -: string දෙකක් වෙන වෙනම ඇති අවස්තාවකදී එක් string එකක් තව string එකකට බද්ද කිරීම සිදු කරයි.
      • strncat -: string දෙකක් වෙන වෙනම ඇති අවස්තාවකදී එක් string එකක් තව string එකකට බද්ද කිරීමෙන් අනතුරුව අවසාන කොටසින් අපට කැමති අකුරු ගණනක් තබාගෙන ඉතුරු අකුරු ඉවත් කිරීම මෙමඟින් සිදු කරයි.
      • strcpy -: string එකක් තව string එකකට copy and paste කිරීම සිදු කරයි.
      • strncpy -: string එකක් තව string එකකට copy and paste කර අපට කැමති අකුරු ප්‍රමාණයක් තබාගෙන ඉතුරු අකුරු ඉවත් කිරීම මෙමඟින් සිදු කරයි.
      • strcmp -: string එකක් තව string එකකට සෑම අතින්ම සමානදැයි පරීක්ෂා කිරීම මෙමඟින් සිදු කරයි.
      • strncmp -: string එකක් තව string එකකට සෑම අතින්ම සමානදැයි string දෙකෙන්ම තෝරාගත් එකලඟ අකුරු කිහිපයක් මඟින් පරීක්ෂා කර බැලීම.
      • strcmpi -: simple හා capital අකුරු නොසලකා හරිමින් string එකක් තව string එකකට සෑම අතින්ම සමානදැයි පරීක්ෂා කිරීම මෙමඟින් සිදු කරයි.
      • stricmp -: මෙහි කාර්යය strcmpi කාර්යයට සමාන වේ.
      • strnicmp -: simple හා capital අකුරු නොසලකා හරිමින් string එකක් තව string එකකට සෑම අතින්ම සමානදැයි string දෙකෙන්ම තෝරාගත් එකලඟ අකුරු කිහිපයක් මඟින් පරීක්ෂා කර බැලීම මෙමඟින් සිදු කරයි.
      • strdup -: string එකක duplicate එකක් හදන එකයි මේකෙන් කරන්නේ.
      • strchr -: අපි අකුරක් දුන්නොත් ඒ අකුර පලමුවට හමුවන ස්තානයේ සිට string එක අවසන් වන ස්තානය දක්වා වචන ටික output වේ.
      • strrchr -: අපි අකුරක් දුන්නොත් ඒ අකුර අවසන් වතාවට හමුවන ස්තානයේ සිට string එක අවසන් වන ස්තානය දක්වා වචන ටික output වේ.
      • strstr -: අපි වචනයක් දුන්නොත් ඒ වචනය පලමුවට හමුවන ස්තානයේ සිට string එක අවසන් වන ස්තානය දක්වා වචන ටික output වේ.
      • strset -: string එකක ඇති අකුරු වෙනුවට අපට කැමති අකුරක් එම string එකේ තිබූ අකුරු ගණනට සමාන ලෙස ආදේශ කිරීම මෙමඟින් සිදු කරයි. passwords වලදී මෙය බොහෝ විට භාවිතා කරයි.
      • strnset -: string එකක මුල් අකුරින් පටන් අරන් අපට කැමති අකුරක් string එකේ තිබූ අකුරු ගණනට සමාන ලෙස ආදේශ කිරීම මෙමඟින් සිදු කරයි
      • strrev -: string එකක් ආපස්සට(reverse) එකට ලිවීම මෙමඟින් සිදු කරයි.

      මේ විදිහට පැහැදිලි කලාට සමහර දේවල් ඔයාලට පැහැදිලි මදියි. ඒ හින්දා දැන් මන් ඉහත සඳහන් කරපු functions ගැන එකින් එක අරන් උදාහරණ මඟින් පහදලා දෙන්නම්.


      strlen

      string එකක දිග සංඛ්‍යාත්මකව ගැනීම මෙමගින් සිදු කරයි.

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char name[20] = "Kalana";
           
           printf("Length of the string = %d", strlen(name)); // මම ඇතුලත් කරපු නමේ දිග මෙයින් output කරයි. Kalana කියන එකේ අකුරු 6ක් ඇති නිසා එහි දුග 6ක් වේ.
           return 0;
      }
      

      Output -:

      Length of the string = 6
      

      strlwr

      string එකක තියෙන සියලුම අකුරු simple letters එනම් lowercase වලට හැරවීම සිදු කරයි. මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.

      #include<stdio.h> 
      #include<string.h> 
        
      int main() 
      { 
          char name[20] = "Kalana ERANDA"; 
        
          printf("My name is = %s", strlwr(name)); 
        
          return  0; 
      } 
      

      Output -:

      My name is = kalana eranda
      

      strupr

      string එකක තියෙන සියලුම අකුරු capital letters එනම් uppercase වලට හැරවීම සිදු කරයි. මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.

      #include<stdio.h> 
      #include<string.h> 
        
      int main() 
      { 
          char name[20] = "KalanA eranda"; 
        
          printf("My name is = %s", strupr(name)); 
        
          return  0; 
      } 
      

      Output -:

      My name is = KALANA ERANDA
      

      strcat

      string දෙකක් වෙන වෙනම ඇති අවස්තාවකදී එක් string එකක් තව string එකකට බද්ධ කිරීම සිදු කරයි.

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char word1[10] = "Hello"; //අපගේ පලමු string එක
           char word2[10] = "World"; // අපගේ දෙවන string එක
           
           strcat(word1, word2); //දෙවන string එක පලමුවන string එකට බද්ධ කිරීම
           printf("Output after connecting two strings =  %s", word1); //බද්ධ කිරීමෙන් අනතුරුව පලමු string එකේ නවතම අගය.
           
           return 0;
      }
      

      Output -:

      Output after connecting two strings = HelloWorld
      

      strncat

      string දෙකක් වෙන වෙනම ඇති අවස්තාවකදී එක් string එකක් තව string එකකට බද්ද කිරීමෙන් අනතුරුව අවසාන කොටසින් අපට කැමති අකුරු ගණනක් තබාගෙන ඉතුරු අකුරු ඉවත් කිරීම මෙමඟින් සිදු කරයි.

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char word1[10] = "Hello";
           char word2[10] = "World";
           
           strncat(word1, word2, 3); //මෙහි 3න මඟින් කියැවෙන්නේ string දෙක බද්ධ වූ පසු දෙවෙනියට බද්ධ කල වචනයෙන් පලමු අකුරු තුන තියාගෙන ඉතුරු අකුරු ටික අයින් කරලා දාන ලෙසයි.
           printf("Output after connecting two strings =  %s", word1);
           
           return 0;
      }
      

      Output -:

      Output after connecting two strings = HelloWor  //3 යෙදූ නිසා World වලින් පලමු අකුරු තුන පමණක් output වේ.
      

      strcpy

      string එකක් තව string එකකට copy and paste කිරීම සිදු කරයි.

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char word1[30] = "Hello";
           char word2[30] = "My name is kalana";
      
           strcpy(word1, word2); // word2 වල ඇති මුලු අගය word1 වලට copy කරයි. එවිට word1 හි නවතම අගය වන්නේ "Hello" නොව "My name is kalana" යන්නයි.
           printf("After copying, word1's value is =  %s", word1);
           
           return 0;
      }
      

      Output -:

      After copying, word1's value is =  My name is kalana
      

      strncpy

      string එකක් තව string එකකට copy and paste කර අපට කැමති අකුරු ප්‍රමාණයක් තබාගෙන ඉතුරු අකුරු ඉවත් කිරීම මෙමඟින් සිදු කරයි.

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char word1[30] = "Hello";
           char word2[30] = "My name is kalana";
      
           strncpy(word1, word2, 7); // word2 වල ඇති පලමු අගයන් 7 පමණක් word1 වලට copy කිරීම සිදු කරයි. එවිට word1 හි නවතම අගය වන්නේ "Hello" නොව "My name" යන්නයි.
           printf("After copying, word1's value is =  %s", word1);
           
           return 0;
      }
      

      Output -:

      After copying, word1's value is =  My name
      

      strcmp

      string එකක් තව string එකකට සෑම අතින්ම සමානදැයි පරීක්ෂා කිරීම මෙමඟින් සිදු කරයි.

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char word1[20] = "google";
           char word2[20] = "google.com";
           
           if (strcmp(word1, word2) == 0) //word1 හා word2 වල අගයන් එකිනෙකට සමාන කර බලා එය 0ට සමානනම් එම අගයන් දෙක එකිනෙකට සමාන වේ.
           {
              printf("word1 and word2 are equal");
           }
           else //එසේ නොමැතිනම් word1 හා word2 වල අගයන් එකිනෙකට සමාන කර බලා එය 1ට සමානනම්  එම අගයන් දෙක එකිනෙකට අසමාන වේ.
           {
              printf("word1 and word2 are different");
           }
           
           return 0;
      }
      

      Output -:

      word1 and word2 are different
      
      • second run
      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char word1[20] = "google";
           char word2[20] = "google";
           
           if (strcmp(word1, word2) == 0) //word1 හා word2 වල අගයන් එකිනෙකට සමාන කර බලා එය 0ට සමානනම් එම අගයන් දෙක එකිනෙකට සමාන වේ.
           {
              printf("word1 and word2 are equal");
           }
           else //එසේ නොමැතිනම් word1 හා word2 වල අගයන් එකිනෙකට සමාන කර බලා එය 1ට සමානනම්  එම අගයන් දෙක එකිනෙකට අසමාන වේ.
           {
              printf("word1 and word2 are different");
           }
           
           return 0;
      }
      

      Output -:

      word1 and word2 are equal
      

      strncmp

      string එකක් තව string එකකට සෑම අතින්ම සමානදැයි string දෙකෙන්ම තෝරාගත් එකලඟ අකුරු කිහිපයක් මඟින් පරීක්ෂා කර බැලීම.

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char word1[20] = "google";
           char word2[20] = "google.com";
           
           if (strncmp(word1, word2, 6) == 0) //word2 වල එන පලමු අකුරු 6 පමණක් word1 වල අගයට සමාන කරයි. 6 මඟින් සිදු කරන්නේ එම කාර්යයයි.
           {
              printf("word1 and word2 are equal");
           }
           else
           {
              printf("word1 and word2 are different");
           }
           
           return 0;
      }
      

      Output -:

      word1 and word2 are equal
      
      • second run
      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char word1[20] = "google";
           char word2[20] = "google.com";
           
           if (strncmp(word1, word2, 8) == 0) //word2 වල එන පලමු අකුරු 6 පමණක් word1 වල අගයට සමාන කරයි. 6 මඟින් සිදු කරන්නේ එම කාර්යයයි.
           {
              printf("word1 and word2 are equal");
           }
           else
           {
              printf("word1 and word2 are different");
           }
           
           return 0;
      }
      

      Output -:

      word1 and word2 are different
      

      strcmpi හා stricmp

      simple හා capital අකුරු නොසලකා හරිමින් string එකක් තව string එකකට සෑම අතින්ම සමානදැයි පරීක්ෂා කිරීම මෙමඟින් සිදු කරයි. මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char word1[20] = "google";
           char word2[20] = "GOOGLE";
           
           if (strcmpi(word1, word2) == 0)
           {
              printf("word1 and word2 are equal"); //simple හා capital අකුරු නොසලකා හරිමින් word1, word2 වලට සමානදැයි පරීක්ෂා කර බලයි. 
           }
           else
           {
              printf("word1 and word2 are different");
           }
           
           return 0;
      }
      

      Output -:

      word1 and word2 are equal
      

      strnicmp

      simple හා capital අකුරු නොසලකා හරිමින් string එකක් තව string එකකට සෑම අතින්ම සමානදැයි string දෙකෙන්ම තෝරාගත් එකලඟ අකුරු කිහිපයක් මඟින් පරීක්ෂා කර බැලීම මෙමඟින් සිදු කරයි.
      මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char word1[20] = "google";
           char word2[20] = "GooGLe.COM";
           
           if (strnicmp(word1, word2, 6) == 0) //පලමු අකුරු 6 පමණක් සසඳා බලයි
           {
              printf("word1 and word2 are equal");
           }
           else
           {
              printf("word1 and word2 are different");
           }
           
           return 0;
      }
      

      Output -:

      word1 and word2 are equal
      

      strdup

      string එකක duplicate එකක් හදන එකයි මේකෙන් කරන්නේ. මෙය අනිත් ඒවා මෙන් නොව මුල් variable එකට හානියක් නොකරයි.

      #include<stdio.h> 
      #include<string.h> 
        
      int main() 
      { 
          char name[] = "Kalana Eranda"; //ප්‍රධාන variable එක
        
          char *duplicate = strdup(name);  // ප්‍රධාන variable යොදා ගනිමින් සෑදූ එහි duplicate variable එක.
        
          printf("name is = %s", name); //ප්‍රධාන variable එක output කිරීම.
          printf("\nduplicate of name is = %s", duplicate); //duplicate variable එක output කිරීම.
          
          return 0; 
      } 
      

      Output -:

      name is = Kalana Eranda
      duplicate of name is = Kalana Eranda
      

      strchr

      අපි අකුරක් දුන්නොත් ඒ අකුර පලමුවට හමුවන ස්තානයේ සිට string එක අවසන් වන ස්තානය දක්වා වචන ටික output වේ.

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char word[50] = "I am an example of function strchr from strings";
           
           printf ("%s", strchr(word, 'f')); //අපිට මෙහි පලවෙනියටම හමුවන f අකුර පවතින්නේ of තුලයි. එබැවින් එම f අකුරේ සිට word එක අවසානය දක්වා සියලු වචන output වේ.
           return 0;
      }
      

      Output -:

      f function strchr from strings
      

      strchr

      අපි අකුරක් දුන්නොත් ඒ අකුර අවසන් වතාවට හමුවන ස්තානයේ සිට string එක අවසන් වන ස්තානය දක්වා වචන ටික output වේ.

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char word[50] = "I am an example of function strchr from strings";
           
           printf ("%s", strrchr(word, 'f')); //මෙහිදී අපට අවසානයටම f අකුරක් ලැබෙන ස්තනය වන්නේ from කියන තැන f අකුරයි. එම f අකුර පටන් ගන්නා ස්තානයේ සිට word එක අවසානය දක්වා සියලු වචන output වේ.
           return 0;
      }
      

      Output -:

      from strings
      

      strstr

      අපි වචනයක් දුන්නොත් ඒ වචනය පලමුවට හමුවන ස්තානයේ සිට string එක අවසන් වන ස්තානය දක්වා වචන ටික output වේ.

      #include <stdio.h>
      #include <string.h>
      
      int main()
      {
           char word[50] = "I am an example of function strchr from strings";
           
           printf ("%s", strstr(word, "ampl")); //ampl කියන කොටස ඇත්තේ example කියන වචනය තුලයි. එබැවින් ampl කියන කොටසේ සිට word එක අවසානය දක්වා සියලු වචන output වේ.
           return 0;
      }
      

      Output -:

      ample of function strchr from strings
      

      strset

      string එකක ඇති අකුරු වෙනුවට අපට කැමති අකුරක් එම string එකේ තිබූ අකුරු ගණනට සමාන ලෙස ආදේශ කිරීම මෙමඟින් සිදු කරයි. passwords වලදී මෙය බොහෝ විට භාවිතා කරයි. මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.

      #include<stdio.h>
      #include<string.h>
      
      int main()
      {
        char password[20] = "kalana";
         
        printf("Original string is = %s", password); //අපගේ Original වචනය මෙමගින් output කෙරේ.
         
        printf("After using strset() = %s", strset(password,'*')); // kalana වල එන අකුරු 6වෙනුවට එම අකුරු 6ට '*' ලකුන ආදේශ කර නවතම තරු අගය output කෙරේ.
        return 0;
      }
      

      Output -:

      Original string is = kalana
      After using strset() = ******
      

      strnset

      string එකක මුල් අකුරින් පටන් අරන් අපට කැමති අකුරක් string එකේ තිබූ අකුරු ගණනට සමාන ලෙස ආදේශ කිරීම මෙමඟින් සිදු කරයි. මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.

      #include<stdio.h>
      #include<string.h>
      
      int main()
      {
        char password[20] = "kalana";
         
        printf("Original string is = %s", password); //අපගේ Original වචනය මෙමගින් output කෙරේ.
         
        printf("After using strset() = %s", strset(password,'*', 3)); // kalana වල එන පලමු අකුරු 3 වන kal වෙනුවට එම අකුරු 3ට '*' ලකුන ආදේශ කර නවතම තරු අගය output කෙරේ.
        return 0;
      }
      

      Output -:

      Original string is = kalana
      After using strset() = ***ana
      

      strrev

      string එකක් ආපස්සට(reverse) එකට ලිවීම මෙමඟින් සිදු කරයි. මතක තියාගන්න මෙම function එක භාවිතා කල හැක්කේ පරණ C version වල පමණි.

      #include<stdio.h> 
      #include<string.h> 
        
      int main() 
      { 
         char name[50] = "kalana"; 
        
         printf("Original name is = %s\n", name); 
         printf("After reversing, new name is = %s", strrev(name)); //අපි ඇතුලත් කල වචනය කණපිට හැරවීම සිදු කරයි.
        
         return 0; 
      } 
      

      Output -:

      Original name is = = kalana
      After reversing, new name is = analak
      

      • C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR

      ඔබට අවශ්‍යනම් ඔබේ බ්‍රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්

      • https://www.onlinegdb.com/online_c_compiler
      • https://www.tutorialspoint.com/compile_c_online.php
      • https://repl.it/languages/c

      සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site කිහිපයක් මන් දාන්නම්

      • https://www.geeksforgeeks.org/c-programming-language/
      • https://www.tutorialspoint.com/cprogramming/index.htm
      • https://beginnersbook.com/2014/01/c-tutorial-for-beginners-with-examples/

      web url කෙටි කරන්න lankadevelopers ලා හදපු එයාලගෙම සයිට් එකක් තියෙනවා. -> https://link.lankadevelopers.com/

      මගේ කලින් ලිපි

      • C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction) -: https://link.lankadevelopers.com/4WpH
      • C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables) -: https://link.lankadevelopers.com/mXio
      • C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://link.lankadevelopers.com/SHNt
      • C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions) -: https://link.lankadevelopers.com/2MNku
      • C Programming මුල සිට ඉගෙනගනිමු (part 5 - create simple applications) -: https://link.lankadevelopers.com/KUF6
      • C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 1)) -: https://link.lankadevelopers.com/8Xe71
      • C Programming මුල සිට ඉගෙනගනිමු (part 7 - Format Specifiers in C) -: https://link.lankadevelopers.com/761PT
      • C Programming මුල සිට ඉගෙනගනිමු (part 8 - Switch Statement) -: https://link.lankadevelopers.com/7jncK
      • C Programming මුල සිට ඉගෙනගනිමු (part 9 - While loop) -: https://link.lankadevelopers.com/4TBV5
      • C Programming මුල සිට ඉගෙනගනිමු (part 10 - do-while loop) -: https://link.lankadevelopers.com/4WcNd
      • C Programming මුල සිට ඉගෙනගනිමු (part 11 - for loop) -: https://link.lankadevelopers.com/8utoa
      • C Programming මුල සිට ඉගෙනගනිමු (part 12 - arrays) -: https://link.lankadevelopers.com/46cyf
      • C Programming මුල සිට ඉගෙනගනිමු (part 13 - 2D-arrays) -: https://link.lankadevelopers.com/4Q9Gt

      මේ ලිපියෙන් Strings වල එන මූලික කරුණු සියල්ලක්ම පාහේ අපි සාකච්ජා කලා. මන් ඊලග ලිපියෙන් Strings යොදාගෙන ගැටලු විසඳන හැටි ඔයාලට කියලා දෙන්නම්. මගේ ලිපි වල අඩුපාඩු තියෙනවනම් දන්නේ නැති දේවල් තියෙනවනම් පහලින් කමෙන්ට් එකක් දාන්න.
      තව ලිපියකින් හම්බෙමු ජය වේවා.

      posted in Blogs
      Kalana
      Kalana
    • RE: ලංකා ඩිවෙලොපර්ස් වෙනස් වෙන්න ඕනෙද ?

      ඔව් අනිවාර්යයෙන්. මේ සයිට් එක තව promote උනානම් campus අතරේ ලොකු වැඩිදියුණුවක් වෙයි.

      posted in General Discussion
      Kalana
      Kalana
    • C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators)

      සුබ දවසක් ඔයාලට. කලින් දවසේ මන් ඔයාලට කියලා දුන්නා variables කියන්නේ මොනාද ඒවා වැඩ කරන්නේ කොහොමද කියලා. අද මන් කියලා දෙන්න යන්නේ C programming වල එන operators
      ගැනයි

      Operators

      • operator එකක් කියන්නේ කිසියම් අගයක් හෝ විචල්‍යයක්(variable) හසුරුවන කිසියම් සංකේතයකටයි.
        උදා -: +, -, /, *, =, >, <.......

      • C programming වල අපි ප්‍රධාන වශයෙන් operators වර්ග 4ක් ගැන අධ්‍යනය කරනවා

          1. Arithmetic Operators -: ගණිතමය ක්‍රියාකාරකම් සඳහා මේවා යොදා ගනී. (උදා -: +, -, *, /, %)
          2. Assignment Operators -: යම් කිසි අගයක් variable එකකට assign කරන්න මේවා යොදා ගනී. (උදා -: =, +=, -=, *=, /=, %=)
          3. Relational Operators -: මෙහෙයුම් දෙකක් අතර සම්බන්ධතාවය පරීක්ෂා කිරීමට මේවා යොදා ගනී. (උදා -: ==, >=, <=, !=, >, <)
          4. Logical Operators    -: සරලව කිව්වොත් AND, OR, NOT වලට තමා logical pperators කියන්නේ(උදා -: &&, ||, !)
        

      Arithmetic Operators

      • කලින් කිව්වා වගේ මේවා යොදා ගන්නේ ගණිතමය ක්‍රියාකාරකම් සඳහා වේ.
      	    operator		         meaning			example
      		+			එකතු කිරීම			3 + 2 = 5
      		-			අඩු කිරීම			3 - 2 = 1
      		*			ගුණ කිරීම			3 * 2 = 6
      		/			බෙදීම				4 / 2 = 2
      		%			බෙදීමෙන් පසු ඉතුරු		3 % 2 = 1, 4 % 2 = 0
      
      • අපි දැන් මෙම operators භාවිතා කරලා programm එකක් ලියමු.
      	#include <stdio.h>
      
      	int main()
      	{
      		int num1 = 3, num2 = 2;
      		int ans;
      		
      		ans = num1 + num2;
      		printf("num1 + num2 = %d\n", ans);
      		
      		ans = num1 - num2;
      		printf("num1 - num2 = %d\n", ans);
      		
      		ans = num1 * num2;
      		printf("num1 * num2 = %d\n", ans);
      		
      		ans = num1 / num2;
      		printf("num1 / num2 = %d\n", ans);
      		
      		ans = num1 % num2;
      		printf("reminder    = %d\n", ans);
      		
      		return 0;
      	}
      
      • මෙය run කල පසු output එක වන්නේ
      	num1 + num2 = 5                                                                                                       
      	num1 - num2 = 1                                                                                                       
      	num1 * num2 = 6                                                                                                       
      	num1 / num2 = 1                                                                                                       
      	reminder    = 1 
      

      විශේෂ

      • ඔයාලට මෙතන පේනවා ඇති බෙදීම වෙන තැන උත්තරය 1.5 ලැබිය යුතු වුවත් අපිට ලැබුනේ 1 පමණක් බව. මේකට ප්‍රධාන හේතුව වන්නේ අපේ ans, num1, num2 යන variables සේරම integers
        වීමයි. integers වලින් output කරන්නේ පූර්ණ සංඛ්‍යා විතරයි. මේ ප්‍රශ්නය මඟහැර ගන්න මේ පියවර අනුගමනය කරන්න
      	#include <stdio.h>
      
      	int main()
      	{
      		int num1 = 3, num2 = 2;
      		int ans;
      		float answer;
      		
      		answer = num1 / (float)num2; //මෙහිදී අපි තාවකාලිකව num2 ව float අගයක් බවට පත්කරනවා.
      		printf("num1 / num2 = %.2f\n", answer);
      		
      		answer = (float)num1 / num2; //මෙහිදී අපි තාවකාලිකව num1 ව float අගයක් බවට පත්කරනවා.
      		printf("num1 / num2 = %.2f\n", answer);
      		
      		return 0;
      	}
      
      • මෙය run කල පසු output එක වන්නේ
      	num1 / num2 = 1.50                                                                                                                          
      	num1 / num2 = 1.50 
      
      • තවදුරටත් Arithmetic Operators ගැන කතා කිරීමේදී අපිට හමුවනවා Increment and Decrement Operators යන වර්ග දෙක.
        උදා -: num1 = 5 ලෙස ගනිමු.

      • num++ --> num = num + 1;

      1. ans = num1++ --> මෙහි තේරුම වන්නේ
      ans = num1;
      num1 = num1 + 1;
      
      1. ans = ++num1 --> මෙහි තේරුම වන්නේ
      num1 = num1 + 1;
      ans = num1;
      
      • මෙය භාවිතා කොට programm එකක් ලියමු.
      	#include <stdio.h>
      
      	int main()
      	{
      		int num1 = 3;
      		int num2 = 3;
      		int num3 = 3;
      		int num4 = 3;
      		
      		int ans;
      		
      		ans = num1++;
      		printf("answer = %d\n", ans);
      		
      		ans = ++num2;
      		printf("answer = %d\n", ans);
      		
      		ans = num3--;
      		printf("answer = %d\n", ans);
      		
      		ans = --num4;
      		printf("answer = %d\n", ans);
      	   
      		return 0;
      	}
      
      • මෙය run කල පසු output එක වන්නේ
      	answer = 3                                                                                                                                  
      	answer = 4                                                                                                                                  
      	answer = 3                                                                                                                                  
      	answer = 2 
      

      Assignment Operators

      • යම් කිසි අගයක් variable එකකට assign කරන්න මේවා යොදා ගනී
          Operator	       Example		Meaning
      	=		a = b		a = b
      	+=		a += b		a = a +	b
      	-+		a -= b		a = a - b
      	*=		a *= b		a = a * b
      	/=		a /= b		a = a / b
      	%=		a %= b		a = a % b
      
      • අපි දැන් මෙම operators භාවිතා කරලා programm එකක් ලියමු.
      	#include <stdio.h>
      
      	int main()
      	{
      		int ans;
      		int num1 = 4;
      		
      		ans = num1; 	// ans = 4
      		printf("answer = %d\n", ans);
      		
      		ans += num1; 	//ans = 4 + 4 = 8
      		printf("answer = %d\n", ans);
      		
      		ans -= num1; 	//ans = 8 - 4 = 4
      		printf("answer = %d\n", ans);
      		
      		ans *= num1; 	// ans = 4 * 4 = 16
      		printf("answer = %d\n", ans);
      		
      		ans /= num1; 	// ans = 16 / 4 = 4
      		printf("answer = %d\n", ans);
      		
      		ans %= num1; 	// ans = 4 % 4 = 0
      		printf("answer = %d\n", ans);
      	   
      		return 0;
      	}
      
      • මෙය run කල පසු output එක වන්නේ
      	answer = 4                                                                                                                                    
      	answer = 8                                                                                                                                    
      	answer = 4                                                                                                                                    
      	answer = 16                                                                                                                                   
      	answer = 4                                                                                                                                    
      	answer = 0  
      

      Relational Operators

      • මෙහෙයුම් දෙකක් අතර සම්බන්ධතාවය පරීක්ෂා කිරීමට මේවා යොදා ගනී.

      • සම්බන්ධතාවය සත්‍ය නම් output ලෙස 1 ලැබේ.(එනම් එම condition එක true වේ)

      • සම්බන්ධතාවය අසත්‍ය නම් output ලෙස 0 ලැබේ.(එනම් එම condition එක false වේ)

           Operator	         Meaning								Example
      	==		සමාන වේද			5 == 3 පහ කිසිසේත්ම තුනට සමාන නොවේ, එනම් මෙය false වේ. එබැවින් output එක 0 වේ.
      							5 == 5 පහ හැමවිටම පහට සමාන වේ. මෙය true වේ. එබැවින් output එක 1 වේ.
      							
      	>		විශාල වේද			5 > 3 පහ හැමවිටම තුනට වඩා විශාල වේ. එබැවින් output එක 1 වේ.
      							5 > 7 පහ කිසිවිටකත් හතට වඩා විශාල නොවේ. එබැවින් output එක 0 වේ.
      							
      	<		කුඩා වේද			5 < 7 පහ හැමවිටම හතට වඩා කුඩා වේ. output = 1
      							5 < 3 පහ කිසිවිටකත් තුනට වඩා කුඩා නොවේ. output = 0
      							
      	!=		අසමාන වේද			5 != 3 පහ සෑම විටම තුනට අසමාන වේ. එබැවින් මෙය සත්‍ය වේ. output = 1
      							5 != 5 පහ සෑම විටම පහට සමාන වේ. එබැවින් මෙය අසත්‍ය වේ. output = 0
      							
      	>=		විශාල හෝ සමාන වේද	        5 >= 3 පහ තුනට සමාන නොවුනත් තුනට වඩා විශාල වේ. එබැවින් මෙය සත්‍ය වේ. output = 1
      							5 >= 5 පහ පහට වඩා විශාල නොවුනත් පහට සමාන වේ. එබැවින් මෙය සත්‍ය වේ. output = 1
      							5 >= 7 පහ හතට වඩා විශාලවත් සමානවත් වන්නේ නැත. එබැවින් මෙය අසත්‍ය වේ. output = 0
      							
      	<=		කුඩා හෝ සමාන වේද	        5 <= 7 පහ හතට සමාන නොවුනත් හතට වඩා කුඩා වේ. එබැවින් මෙය සත්‍ය වේ. output = 1
      							5 <= 5 පහ පහට වඩා කුඩා නොවුනත් පහට සමාන වේ. එබැවින් මෙය සත්‍ය වේ. output = 1
      							5 <= 3 පහ තුනට වඩා කුඩාවත් සමානවත් වන්නේ නැත. එබැවින් මෙය අසත්‍ය වේ. output = 0
      
      • අපි දැන් මෙම operators භාවිතා කරලා programm එකක් ලියමු.
      	#include <stdio.h>
      
      	int main()
      	{
      		int ans;
      		
      		ans = (5 == 5);
      		printf("(5 == 5)answer = %d\n", ans);
      		
      		ans = (5 == 3);
      		printf("(5 == 3)answer = %d\n\n", ans);
      		
      		ans = (5 > 3);
      		printf("(5 > 3)answer = %d\n", ans);
      		
      		ans = (5 > 7);
      		printf("(5 > 7)answer = %d\n\n", ans);
      		
      		ans = (5 != 3);
      		printf("(5 != 3)answer = %d\n", ans);
      		
      		ans = (5 != 5);
      		printf("(5 != 5)answer = %d\n\n", ans);
      		
      		ans = (5 >= 3);
      		printf("(5 >= 3)answer = %d\n", ans);
      		
      		ans = (5 >= 5);
      		printf("(5 >= 5)answer = %d\n", ans);
      		
      		ans = (5 >= 7);
      		printf("(5 >= 7)answer = %d\n\n", ans);
      		
      		ans = (5 <= 5);
      		printf("(5 <= 5)answer = %d\n", ans);
      		
      		ans = (5 <= 7);
      		printf("(5 <= 7)answer = %d\n", ans);
      		
      		ans = (5 <= 3);
      		printf("(5 <= 3)answer = %d\n", ans);
      	   
      		return 0;
      	}
      
      • මෙය run කල පසු output එක වන්නේ
      (5 == 5)answer = 1                                                                                                                            
      (5 == 3)answer = 0                                                                                                                            
                                                                                                                                                    
      (5 > 3)answer = 1                                                                                                                             
      (5 > 7)answer = 0                                                                                                                             
                                                                                                                                                    
      (5 != 3)answer = 1                                                                                                                            
      (5 != 5)answer = 0                                                                                                                            
                                                                                                                                                    
      (5 >= 3)answer = 1                                                                                                                            
      (5 >= 5)answer = 1                                                                                                                            
      (5 >= 7)answer = 0                                                                                                                            
                                                                                                                                                    
      (5 <= 5)answer = 1                                                                                                                            
      (5 <= 7)answer = 1                                                                                                                            
      (5 <= 3)answer = 0 
      

      Logical Operators

      • සරලව කිව්වොත් AND, OR, NOT වලට තමා logical pperators කියන්නේ

      • AND(ගුණ කිරීම)

      	x		y		output
      	0		0		  0
      	0		1		  0
      	1		0		  0
      	1		1		  1
      
      • OR(එකතු කිරීම)
      	x		y		output
      	0		0		  0
      	0		1		  1
      	1		0		  1
      	1		1		  1
      
      • NOT(ප්‍රතිවිරුද්ධ binary number එක)
      	x		output
      	0		  1
      	1		  0
      
      • මෙම operators C programming වල භාවිතා වන්නේ මේ ආකාරයෙනි.
            Operator		                        Meaning													Example
      	&&			සියලු කාරණා සත්‍ය නම් සත්‍ය වේනම්			((5 > 3) && (5 < 7)). (5 > 3) හා (5 < 7) යන කාරණා දෙකම සත්‍ය වේ. එබැවින් output එක 1 වේ.
      										          ((5 == 3) && (5 < 7)). (5 < 7) සත්‍ය වුවත් (5 == 3) සත්‍ය නොවේ. එබැවින් output එක 0 වේ.
      										          ((5 == 3) && (5 < 3)). (5 == 3) හා (5 < 3) යන දෙකම අස්ත්‍ය වේ. එබැවින් output එක 0 වේ.
      										
      	||			සියලු කාරණා වලින් එකක් හෝ සත්‍ය වේනම්		((5 > 3) && (5 < 7)). (5 > 3) හා (5 < 7) යන කාරණා දෙකම සත්‍ය වේ. එබැවින් output එක 1 වේ.
      										         ((5 == 3) && (5 < 7)). (5 == 3) අසත්‍ය වුවත් (5 < 7) සත්‍ය වේ. එබැවින් output එක 1 වේ.
      										          ((5 == 3) && (5 < 3)). (5 == 3) හා (5 < 3) යන දෙකම අස්ත්‍ය වේ. එබැවින් output එක 0 වේ.
      											
      	!			දී ඇති කාරණය සත්‍ය නම් එය අසත්‍යක් ලෙස ගනී	(!(5 == 3)). පහට තුන අසමාන හා කාරණය අසත්‍ය නමුත් එය සත්‍යක් ලෙස සලකයි. එබැවින් output එක 1 වේ.
      												        (!(5 == 5)). පහට පහ සමාන හා කාරණය සත්‍ය නමුත් එය අසත්‍යක් ලෙස සලකයි. එබැවින් output එක 0 වේ.
      
      • අපි දැන් logical operators භාවිතා කරලා programm එකක් ලියමු.
      	#include <stdio.h>
      
      	int main()
      	{
      		int ans;
      		
      		ans = (5 > 3) && (5 < 7);
      		printf("(5 > 3) && (5 < 7)answer  = %d\n", ans);
      		
      		ans = (5 == 3) && (5 < 7);
      		printf("(5 == 3) && (5 < 7)answer = %d\n", ans);
      		
      		ans = (5 == 3) && (5 < 3);
      		printf("(5 == 3) && (5 < 3)answer = %d\n\n", ans);
      		
      		ans = (5 > 3) || (5 < 7);
      		printf("(5 > 3) || (5 < 7)answer   = %d\n", ans);
      		
      		ans = (5 == 3) || (5 < 7);
      		printf("(5 == 3) || (5 < 7)answer  = %d\n", ans);
      		
      		ans = (5 == 3) || (5 < 3);
      		printf("(5 == 3) || (5 < 3)answer  = %d\n\n", ans);
      		
      		ans = !(5 == 3);
      		printf("!(5 == 3)answer  = %d\n", ans);
      		
      		ans = !(5 == 5);
      		printf("!(5 == 5)answer  = %d\n", ans);
      	   
      		return 0;
      	}
      
      • මෙය run කල පසු output එක වන්නේ
      (5 > 3) && (5 < 7)answer  = 1                                                                                                                
      (5 == 3) && (5 < 7)answer = 0                                                                                                                
      (5 == 3) && (5 < 3)answer = 0                                                                                                                
                                                                                                                                                   
      (5 > 3) || (5 < 7)answer   = 1                                                                                                               
      (5 == 3) || (5 < 7)answer  = 1                                                                                                               
      (5 == 3) || (5 < 3)answer  = 0                                                                                                               
                                                                                                                                                   
      !(5 == 3)answer  = 1                                                                                                                         
      !(5 == 5)answer  = 0
      
      • මූලාශ්‍ර -: https://www.programiz.com/c-programming/c-operators

      • C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR

      ඔබට අවශ්‍යනම් ඔබේ බ්‍රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්

      • https://www.onlinegdb.com/online_c_compiler
      • https://www.tutorialspoint.com/compile_c_online.php
      • https://repl.it/languages/c

      සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site දෙකත් මන් දාන්නම්

      • https://www.geeksforgeeks.org/c-programming-language/
      • https://www.tutorialspoint.com/cprogramming/index.htm

      කලින් ලිපි වල වගේ මේ ලිපියෙත් ඉල්ලනවා අඩු පාඩු තිබ්බොත් පහලින් කමෙන්ට් එකක් දාන්න. තව වැඩි දියුණු වෙන්න ඕන ඒවා තියෙනවනම් ඒවත් දාන්න.

      posted in Blogs
      Kalana
      Kalana
    • C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions)

      සුබ දවසක් ඔයාලට. කලින් දවසේ මන් ඔයාලට කියලා දුන්නා operators කියන්නේ මොනාද ඒවා වැඩ කරන්නේ කොහොමද කියලා. අද මන් කියලා දෙන්න යන්නේ C programming වල එන Input & Output
      function ගැනයි.

      • Input -: සරලව පැහැදිලි කලොත් programm එකකට දත්ත ඇතුලත් කිරීමට තමා අපි Input එකක් කියලා කියන්නේ.
      • Output -: සරලව කිව්වොත් යම්කිසි දත්තයක් අපේ screen එකේ display කරන functions වලට තමා Output function කියලා කියන්නේ.

      C programming වල අපි Input & Output functions වර්ග තුනක් ගැන කතා කරනවා.
      1. getchar() and putchar()
      2. gets() and puts()
      3. scanf() and printf()

      getchar() and putchar()

      • getchar() -: මෙම function එකෙන් එක්වරකට එක character value එකක් පමණක් Input කර ගනී.
      • putchar() -: මෙම function එකෙන් එක්වරකට එක character value එකක් පමණක් Output කරයි

      උදා -:

      #include <stdio.h>
      
      int main()
      {
          int c;
      
          printf( "Enter a value :");
          c = getchar( ); //මෙහිදී අපට අවශ්‍ය දත්තය keyboard එක ආධාරයෙන් Input කල යුතුය.
      
          printf( "\nYou entered: ");
          putchar( c ); //මෙහිදී අප කලින් keyboard එකෙන් Input කල දත්තය අපගේ පරිගණක තිරයේ  display කරයි.
          
          return 0;
      }
      
      output(1st run) -: Enter a value : aaaa 
      		   You entered: a //ඔබ කෙතරම්  characters ප්‍රමානයක් Input කලත්  Output වන්නේ එක a එකක් පමනි.
      
      output(2nd run) -: Enter a value : 1111 
      		   You entered: 1
      

      gets() and puts()
      arrays භාවිතා කර Input හා Output කිරීමට මෙම function දෙක යොදා ගනී.

      උදා -:

      #include <stdio.h>
      int main( ) {
      
         char comment[100];
      
         printf( "Enter a value :");
         gets(comment); //මෙහිදී අපට අවශ්‍ය දත්ත keyboard එක ආධාරයෙන් Input කල යුතුය.
      
         printf( "\nYou entered: ");
         puts(comment); ////මෙහිදී අප කලින් keyboard එකෙන් Input කල දත්ත අපගේ පරිගණක තිරයේ  display කරයි.
      
         return 0;
      }
      
      output(1st run) -: Enter a value : kalana123
      		   You entered: kalana123
      
      • scanf() and printf()

      C programming වල අප වැඩියෙන්ම Input & Output සඳහා භාවිතා කරන්නේ මෙමෙ function දෙකයි. ඉහත සදහන් කල සියලුම දේවල් මෙම function දෙකෙන් ලේසියෙන්ම කරගන්න
      පුලුවන් නිසා තමා මෙම function දෙක නිතරම අපි භාවිතා කරන්නේ.

      උදා -:

      #include <stdio.h>
      int main( ) {
      
         int num;
         float height;
         char letter;
         char word[10];
         
         printf("Enter a number = ");
         scanf("%d", &num);
         
         printf("Enter a height = ");
         scanf("%f%*c", &height); // මෙහිදී  %f ට පසුව %*c යොදන්නේ ඊළගට ඇත්තේ char Input එකක් නිසායා. නැතහොත් අපට char අගයක් Input කල නොහැක.
      			    // සෑම විටම  scanf("%c",) පෙර ඇති scanf එකකටම මෙමෙ %*c යෙදිය යුතු වේ.
         
         printf("Enter a letter = ");
         scanf("%c", &letter);
         
         printf("Enter a word   = ");
         scanf("%s", &word);
         
         printf("\nNumber is = %d\n", num);
         printf("Height is = %f\n", height);
         printf("Letter is = %c\n", letter);
         printf("Word is   = %s", word);
      }
      
      output -: 
      Enter a number = 1996                                                                                                    
      Enter a height = 2.22                                                                                                 
      Enter a letter = a                                                                                                    
      Enter a word   = kalana123  
                                                                                                        
      Number is = 1996                                                                                                         
      Height is = 2.220000                                                                                                  
      Letter is = a                                                                                                         
      Word is   = kalana123 
      

      සාරාංශය

      • scanf("%d", &xx); -: Integers(int) Input කිරීමට මෙය යොදා ගනී. xx යනු ඕනෑම variable එකකි.
      • scanf("%f", &xx); -: Float numbers(float) Input කිරීමට මෙය යොදා ගනී.
      • scanf("%c", &xx); -: Charachter values(char) Input කිරීමට මෙය යොදා ගනී.
      • scanf("%s", &xx); -: String(char arrays) values Input කිරීමට මෙය යොදා ගනී.

      මූලාශ්‍ර -: https://www.tutorialspoint.com/cprogramming/c_input_output.htm

      C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR

      ඔබට අවශ්‍යනම් ඔබේ බ්‍රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්

      • https://www.onlinegdb.com/online_c_compiler
      • https://www.tutorialspoint.com/compile_c_online.php
      • https://repl.it/languages/c

      සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site දෙකත් මන් දාන්නම්

      • https://www.geeksforgeeks.org/c-programming-language/
      • https://www.tutorialspoint.com/cprogramming/index.htm

      මගේ කලින් ලිපි

      • C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction) -: https://bit.ly/2O6rLXR
      • C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables) -: https://bit.ly/2spD6Kn
      • C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://bit.ly/2ruMH22

      කලින් ලිපි වල වගේ මේ ලිපියෙත් ඉල්ලනවා අඩු පාඩු තිබ්බොත් පහලින් කමෙන්ට් එකක් දාන්න. තව වැඩි දියුණු වෙන්න ඕන ඒවා තියෙනවනම් ඒවත් දාන්න.

      posted in Blogs
      Kalana
      Kalana
    • C Programming මුල සිට ඉගෙනගනිමු (part 11 - for loop)

      සුබ දවසක් වේවා ඔයාලට. කලින් ලිපියේ මන් do-while loop එක ගැන කතා කලා. අද මන් කතා කිරීමට බලාපොරොත්තු වෙන්නේ for loop එක ගැන. මෙම loop එකෙන් කරන්නේද් අනිත් loop වර්ග දෙකෙන් කරන කාර්යයම වේ. මෙහි ක්‍රියාකාරිත්වය වැඩි වශ්‍යෙන් සමාන වන්නේ while loop එකේ ක්‍රියාකාරිත්වයටයි. සාමාන්‍යයෙන් loop වලින් වැඩි වශයෙන් අප භාවිතා කරන loop එක වන්නේද for loop එකයි. පලමුව මන් මෙහි ආකෘතිය ගෙනහැර දක්වන්නම්.

      for (initialization; condition test; increment or decrement)
      {
          //Statements to be executed repeatedly
      }
      

      මන් ඉහත ආකෘතිය උදාහරණයක් මගින් පැහැදිලි කරන්නම්. අපි මේ ආකෘතිය යොදා ගනිමින් 1 සිට 10 ට දක්වා ඇති සංඛ්‍යා diplay කරමු.

      #include <stdio.h>
      
      int main()
      {
         int i;
         
         for (i = 1 ; i <= 10 ; i++)
         {
             printf("%d ", i);
         }
         
         return 0;
      }
      
      Output -: 1 2 3 4 5 6 7 8 9 10
      

      ඉහත උදාහරණයෙන් ඔබට පෙනෙනවා ඇති while loop එකේදී අපි තැන තැන භාවිතා කල සියලු loop එකට අදාල කොටස් for loop එකේදී එක තැනකට ඇවිත් ඇති බව. මෙය මූලික ආකෘතිය වුවත් මෙය භාවිතා කල හැකි අනු ආකෘති කිහිපයක් පවතිනවා. එනම්

      1. i++ වෙනුවට i = i + 1 භාවිතා කල හැකිය.
      for (i = 1 ; i <= 10 ; i = i + 1)
      {
          printf("%d ", i);
      }
      
      1. for loop එකේ i වල අගය විශේෂණය කර ඇති කොටස එනම් i = 1 කියන කොටස for loop එක එලියෙන් මෙසේ ලිවිය හැකිය. නමුත් ; ලකුණ තිබෙන පරිදි තිබීමට දිය යුතුය.
      int i = 1;
      
      for ( ; i <= 10 ; i++)
      {
          printf("%d ", i);
      }
      
      1. i++ හෙවත් i වල අගය ඉදිරියට ගෙනියන code එක අපට for loop එක ඇතුලත් ඕනෑම තැනක යෙදීමට පුලුවන් වේ. මෙහිද ; ලකුණ තිබෙන පරිදි තිබීමට දිය යුතුය.
      for (i = 1 ; i <= 10 ; )
      {
          printf("%d ", i);
      	i++;
      }
      
      1. i = 1 කොටස හා i++ යන කොටස් දෙකම for එක තුලින් ඉවත් කොට while loop ආකෘතිය මෙන් ලිවීමට හැකියාව ඇත.
      int i = 1;
      
      for ( ; i <= 10 ; )
      {
          printf("%d ", i);
      	i++;
      }
      
      1. i++ විතරක් නොව i වල අගය අඩු කල හැකි i-- ද අපට for loop එකක භාවිතා කල හැකිය.
      for (i = 10 ; i >= 1 ; i--)
      {
          printf("%d ", i);
      }
      
      Output -: 10 9 8 7 6 5 4 3 2 1
      

      මේකෙදිත් මන් ඔයාලට ප්‍රශ්න දීමට බලාපොරොත්තු වෙන්නේ නෑ. මොකද while loop ලිපියේ දීපු ප්‍රශ්න මේකෙදිත් ඔයාලට කරන්න පුලුවන් නිසා. ඒ උණත් මන් for loop එකට ආවේණික ප්‍රශ්න කිහිපයක් කරන්නම්.

      Question -: Write a C program to print below format using for loops.

      *******
      *******
      *******
      *******
      

      for loop කිහිපයක් යොදා ගනිමින් ඉහත හැඩතලය නිරූපණය කරන program එකක් code කරන්න කියලා අපට කියනවා. අපි මෙය පියවර වශයෙන් පැහැදිලි කරගම්මු.

      • අපි පලමුව මෙම මුළු හැඩතලයෙන් කොටසක් එනම් පලමු පේලිය(*******) පමණක් for loop එකක් මගින් output කරමු .
      #include <stdio.h>
      
      int main()
      {
          int i;
          
          for(i = 1 ; i <= 7 ; i++)
          {
              printf("*");
          }
          return 0;
      }
      
      Output -: *******
      
      • ඔබට පෙනෙනවා ඇති එක for loop එකක් මගින් එක් පේලියක් කැමති තරු ගණනකින් පිරවිය හැකි බව. නමුත් අපට අවශ්‍ය වන්නේ ඒ වගේ පේලි 4ක් වේ. තරු 7ක් Output කරන්න එක් for loop
        එකක් අවශ්‍ය නම් ඒ වගේ තරු 7 පේලි 4 ගැනීමට අවශ්‍යනම් තව for loop එකක් අව්ශ්‍ය බව ඔබට පෙනෙනවා ඇති. අපි එය මේ විදිහට කරමු.
           තීරු තීරු
      පේලි  *    *    
      පේලි  *    *
      පේලි  *    *
      

      තීරු ගණන වන තීරු 7 ඉහත for loop එක මගින් අප අරගෙන ඉවර නිසා පේලි 4 ගන්න විදිහ දැන් බලමු.

      • තීරු -: columns
      • පේලි -: raws
      #include <stdio.h>
      
      int main()
      {
          int raw; //පේලි ගණන නිරූපණය කරන variable එක
          int col; //තීරු ගණන නිරූපණය කරන variable එක
          
          for(raw = 1 ; raw <= 4 ; raw++) //පේලි 4ක් print කිරීමට යොදා ගනී.
          {
              for(col = 1 ; col <= 7 ; col++) // තීරු 7ක් එනම් තරු 7 print කිරීමට යොදා ගනී
              {
                  printf("*");
              }
              printf("\n"); //තීරු 7ක් එනම් තරු 7ක් print වීමෙන් අනතුරුව ඉතුරු තරු 7 ඒවා පහලින් පහලට print කිරීමට මෙය යොදා ගනී.
          }
          return 0;
      }
      
      Output -:*******
               *******
               *******
               *******
      

      ඔයාලට තරු රටා පිලිබද වැඩි දුරටත් ඉගෙන ගන්න ඕනනම් මන් ලින්ක් කිහිපයක් දාන්නම් නැත්තම් Google search bar එකට ගිහින් star patterns in C කියලා search කරන්න.
      Link1 -: https://codeforwin.org/2015/07/star-patterns-program-in-c.html
      Link2 -: https://www.programiz.com/c-programming/examples/pyramid-pattern
      Link3 -: https://www.programmingsimplified.com/c-program-print-stars-pyramid

      මන් ඔයාලට සරල වගේම ටිකක් සංකීර්ණ ගැටලු කිහිපයක් දෙන්නම්, නිකන් ඉන්න වෙලාවට කරලා බලන්න.

      Question 1 -: Write for statements that print the following sequence of values:

      a) 3, 8, 13, 18, 23
      b) 20, 14, 8, 2, -4, -10
      c) 19, 27, 35, 43, 51
      

      answer for a -: https://drive.google.com/open?id=1hT_MzDFb7UBIscO1UpGnFXtPbykzjHH2
      answer for b -: https://drive.google.com/open?id=1PAuJdwDuWA1_VflDKTaNLW_hLax-Poeg
      answer for c -: https://drive.google.com/open?id=1HpibNCAQ7lV-Ed-OAt8pm_ktvGjWLIxl


      Question 2 -: Write a C program using for loops to display the following pattern on the screen

      *
      **
      ***
      ****
      *****
      ******
      *******
      *******
      *****
      ***
      *
      

      answer -: https://drive.google.com/open?id=147j8QuV7y-tSYNKTsRGkSoIq1ADAvWgU


      Question 3 -: Calculate the value of pie(3.14) from the infinite series

      = 4 − 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + ....
      

      Print a table that shows the value of pie approximated by one term of this series, by two terms, by
      three terms, and so on. How many terms of this series do you have to use to get 3.14159?

      answer -: https://drive.google.com/open?id=1AC1XYfbCRTj3PU5NPZjkiDC1MUj5mNmZ


      Question 4 -: The factorial of a nonnegative integer n is written n! and is defined as follows:

      n! = n * (n-1) * (n-2) * ……1
      

      and

      n! = 1 (for n =0)
      

      For example, 5! = 5 * 4 * 3 * 2 * 1, which is 120
      Write a C program that reads a nonnegative integer and computes and print its factorial using a
      for loop.

      answer -: https://drive.google.com/open?id=1Pjo-p8CKhgnJ5WxuM6naT2El-mJ3pjpX


      • C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR

      ඔබට අවශ්‍යනම් ඔබේ බ්‍රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්

      • https://www.onlinegdb.com/online_c_compiler
      • https://www.tutorialspoint.com/compile_c_online.php
      • https://repl.it/languages/c

      සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site කිහිපයක් මන් දාන්නම්

      • https://www.geeksforgeeks.org/c-programming-language/
      • https://www.tutorialspoint.com/cprogramming/index.htm
      • https://beginnersbook.com/2014/01/c-tutorial-for-beginners-with-examples/

      web url කෙටි කරන්න lankadevelopers ලා හදපු එයාලගෙම සයිට් එකක් තියෙනවා. -> https://link.lankadevelopers.com/

      මගේ කලින් ලිපි

      • C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction) -: https://link.lankadevelopers.com/4WpH
      • C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables) -: https://link.lankadevelopers.com/mXio
      • C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://link.lankadevelopers.com/SHNt
      • C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions) -: https://link.lankadevelopers.com/2MNku
      • C Programming මුල සිට ඉගෙනගනිමු (part 5 - create simple applications) -: https://link.lankadevelopers.com/KUF6
      • C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 1)) -: https://link.lankadevelopers.com/8Xe71
      • C Programming මුල සිට ඉගෙනගනිමු (part 7 - Format Specifiers in C) -: https://link.lankadevelopers.com/761PT
      • C Programming මුල සිට ඉගෙනගනිමු (part 8 - Switch Statement) -: https://link.lankadevelopers.com/7jncK
      • C Programming මුල සිට ඉගෙනගනිමු (part 9 - While loop) -: https://link.lankadevelopers.com/4TBV5
      • C Programming මුල සිට ඉගෙනගනිමු (part 10 - do-while loop) -: https://link.lankadevelopers.com/4WcNd

      මන් ඊළග ලිපියෙන් කියලා දෙන්නම් arrays ගැන . මගේ ලිපි වල අඩුපාඩු තියෙනවනම් දන්නේ නැති දේවල් තියෙනවනම් පහලින් කමෙන්ට් එකක් දාන්න.
      තව ලිපියකින් හම්බෙමු ජය වේවා.

      posted in Blogs
      Kalana
      Kalana
    • RE: C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions)

      @ciaompe එල මන් කිහිපයක්ම දාන්නම්.තෑන්ක් යූ

      posted in Blogs
      Kalana
      Kalana
    • C Programming මුල සිට ඉගෙනගනිමු (part 5 - create simple applications)

      අද අපි කරන්න යන්නේ අපි මෙතෙක් කරන් ආපු පාඩම් උපයෝගී කරගෙන එදිනෙදා භාවිතා කල හැකි සරල applications කිහිපයක් නිර්මාණය කිරීමටයි. මන් කෙලින්ම ප්‍රශ්න වලට යොමු වෙන්නම්.

      Question 1 -: Write a C program to enter the length and width of a rectangle and displays the diameter and area.

      • මෙයින් කියවෙන්නේ දිග හා පළල උපයෝගී කරගනිමින් සෘජුකෝණාස්‍රයක පරිමිතිය හා වර්ගපලය සොයන්න යන්නයි.

      • මෙවැනි ප්‍රශ්නයකදී අප පලමුව අප කල යුත්තේ අපගේ inputs හා outputs හඳුනාගැනීමයි.
        inputs -: මෙහිදී අපට keyboard එකෙන් දත්ත ඇතුලත් කර යුත්තේ දිග(length) හා පළල(width) යන ඒවාගේය.
        outputs-: මෙහිදී අපට පරිගනක තිරයේ display කල යුත්තේ පරිමියතිය(diameter) හා වර්ගපලයයි(area).

      • ඔබට දැන් පෙනෙනවා මෙම ප්‍රශ්නයේදි අපි variables 4ක් මතු කලා. ඒවා නම්

        1. length
        2. width
        3. diameter
        4. area
      • අපි දැන් බැලිය යුත්තේ මේවා පූර්ණ සංඛ්‍යාද, දශම සංඛ්‍යාද යන වගයි. මෙම variables 4 සැලකූ කල මේවා පූර්ණ සංඛ්‍යා හා දශම සංඛ්‍යා යන දෙයාකාරයෙන්ම පවතී. එබැවින් මෙයට සුදුසුම variable type
        එක float වේ.

      #include <stdio.h>
      
      int main()
      {
          float length, width; // අපගේ input variables දෙක
          float diameter = 0, area = 0; // මෙහිදී මෙම variables දෙක බිංදුවට සමාන කරන්නේ මෙම variables දෙක keyboard එකෙන් දත්ත input නොකරන නිසා වේ.
      	                          // මෙහිදී අප මේවා බිංදුවට සමාන නොකලහොත් අවසන් පිලිතුර වැරදි පිලිතුරක් වීමේ ඉඩකඩක් පවතී.
          
          printf("Enter length = ");
          scanf("%f", &length); // දිග ඇතුලත් කිරීම 
      
          printf("Enter width  = ");
          scanf("%f", &width); // පලළ ඇතුලත් කිරීම.
          
          diameter = 2 * (length + width); // පරිමිතිය ලබා ගන්නා සමීකරණය
          
          area = length * width; // වර්ගපලය ලබා ගන්නා සමීකරණය
          
          printf("\nDiameter is  = %.2f\n", diameter); // අවසාන දශම ස්තාන දෙකට පිලිතුර ලබා ගැනීම සදහා %f අතර මැදට .2 යොදයි
          printf("Area is      = %.2f", area);
          
          return 0;
      }
      

      මෙහිදී අපට ලැබෙන output එක වන්නේ

      Enter length = 3.5                                                                                                      
      Enter width  = 2.5                                                                                                      
                                                                                                                            
      Diameter is  = 12.00                                                                                                  
      Area is      = 8.75
      

      අපි දැන් තව උදාහරණයකට අවදානය යොමු කරමු.

      Question 2 -: An Ice cream seller charge Rs.50/= for one ice creame. You can buy multiple ice creams from him. Write a C program to
      find total bill and balance.

      • මෙහි සදහන් පරිදි අයිස්ක්‍රීම් එකක මිල රුපියල් 50කි. ඔබට අයිස්ක්‍රීම් කිහිපයක් මිලදී ගත හැකිය. හිතන්න අයිස්ක්‍රීම් පහක් ගත්තා කියලා එතකොට මුළු බිල(total bill) රුපියල් 250යි. ඔයා මුදලාලිට 500ක්
        දුන්නොත් ඔයාට 250ක් ඉතුරු(balance) හම්බෙනවා.

      • කලින් වගේම මෙහිදීත් inputs හා outputs හදුනා ගනිමු
        inputs -: මිලදී ගන්නා අයිස්ක්‍රීම් ගණන(quantity), අපි මුදලාලිට දෙන මුදල(given money)
        outputs-: මුලු බිල(total bill), ඉතුරු මුදල(balance)

      • මෙහිදීත් අප variables 4ක් මතු කලා.

        1. quantity
        2. given money
        3. total bill
        4. balance
      • වර්තමානයේදී අප සත භාවිතා නොකරන නිසා අපිට මෙහිදී සියලුම variables වලට int භාවිතා කල හැකිය. නමුත් සම්මත භාවිතයේදී float භාවිතා කිරීම වඩාත් සුදුසු වේ.

      int main()
      {
          int quantity;
          float given_money;
          float total_bill = 0, balance = 0;
          
          printf("Enter icecream quantity = "); 
          scanf("%d", &quantity); // මිලදී ගැනීමට අව්ශ්‍ය අයිස්ක්‍රීම් ගණන ඇතුලත් කිරීම
          
          total_bill = 50.00 * quantity; // මුලු බිල ගණනය කිරීම
          
          printf("\nTotal bill is = %.2f\n", total_bill);
      
          printf("Money given by customer  = ");
          scanf("%f", &given_money); // පාරිභෝගිකයා ලබා දුන් මුදල ඇතුලත් කිරීම
          
          balance = given_money - total_bill; // ඉතුරු මුදල ගණනය කිරීම
          
          printf("Balance is = %.2f", balance);
          
          return 0;
      }
      

      මෙහිදී අපට ලැබෙන output එක වන්නේ

      Enter icecream quantity = 5                                                                                           
                                                                                                                            
      Total bill is = 250.00                                                                                                
      Money given by customer  = 500                                                                                        
      Balance is = 250.00  
      

      C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR

      ඔබට අවශ්‍යනම් ඔබේ බ්‍රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්

      • https://www.onlinegdb.com/online_c_compiler
      • https://www.tutorialspoint.com/compile_c_online.php
      • https://repl.it/languages/c

      සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site දෙකත් මන් දාන්නම්

      • https://www.geeksforgeeks.org/c-programming-language/
      • https://www.tutorialspoint.com/cprogramming/index.htm

      මගේ කලින් ලිපි

      • C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction) -: https://bit.ly/2O6rLXR
      • C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables) -: https://bit.ly/2spD6Kn
      • C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://bit.ly/2ruMH22
      • C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions) -: https://bit.ly/2qU8IaK

      ඉහත ක්‍රමවේද අනුගමනය කරමින් අපට බොහෝ applications C programing භාවිතා කර නිර්මාණය කරගත හැකිය. තව උදාහරණ අව්ශ්‍යනම්, අඩුපාඩු තියෙනවනම්, දන්නේ නැති දේවල් තියෙනවනම්
      පහලින් කමෙන්ට් එකක් දාන්න. තව ලිපියකින් හම්බෙමු ජය වේවා!

      posted in Blogs
      Kalana
      Kalana
    • C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 1))

      Decision making පිලිබද සරල හැදින්වීමක් කලොත් එයින් අදහස් වන්නේ යම් කිසි තීරණයක් ගැනීමයි. එනම් යම් කිසි නිර්ණායකයක් මත ගැලපෙන හොදම තීරණය ගැනීමයි. මෙය සංකීර්ණ වගේ පෙනුනට හරිම
      සරලයි. මන් පොඩි උදාහරණයක් අරගෙන මේ දේ පැහැදිලි කරන්නම්.

      උදා -: මන් වර්ණ කිහිපයකින් සමන්විත බෝල මල්ලක් ඔයාට දෙනවා දීලා කියනවා රතු පාට බෝලයි නිල් පාට බෝලයි ඉතුරු වෙන අනිත් පට බෝලයි වෙන වෙනම පෙට්ටි තුනකට දාන්න කියලා. ඔයා ඊට පස්සේ මේ බෝල
      විශ්ලේශණය කරලා පාට අනූව ගොඩවල් තුනට වෙන් කරනවා.

      • පලමුව ලබා ගන්නා බෝලය නිල් පාටනම් එය පලමු පෙට්ටියට දානවා.
      • එසේ නොවේනම් පලමුව ලබා ගන්නා බෝලය රතු වේ නම් එය දෙවන පෙට්ටියට දානවා.
      • ඉහත කී පාටවල් දෙකම නොවී වෙන පාටක් ලැබුනේ නම් එය තුන්වන පෙට්ටියට දානවා.

      ඉහත මන් සදහන් කලේ ඔබට ගත හැකි තීරණ(Decision) ගණනයි.

      C Programming වල Decision making(තීරණ ගතහැකි) නිර්ණායක 4ක් තිබේ.
      1. if statement.
      2. switch statement.
      3. ? : operator.
      4. goto statement.

      C Programming වල අප වැඩි වශයෙන් භාවිතා කරන්නේ පලමු කාරණා දෙක පමණි.

      if statement

      • if යන්නේ සරල අදහස වන්නේ එනම් යන්නයි. මෙය C Program වල පවතින ආකෘතිය වන්නේ
      if(expression) //expression යනු අපගේ නිර්ණායකයයි
      {
      	statement; //statement යනු අපගේ නිර්ණායකය සත්‍ය වුවහොත් run වෙන අපගේ code එකයි.
      }
      

      අපි දැන් if පාවිච්චි කරලා සරල c code එකක් ලියමු. මෙහිදී අප කරන්නේ ඉලක්කම් දෙකක් ගෙන පලමු ඉලක්කම දෙවන ඉලක්කමට වඩා වැඩිනම් message එකක් පරිගණක තිරයේ display කරන එකයි.
      මගේ කලින් ලියපු C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://bit.ly/2ruMH22 කියවලා තිබ්බනම් දැන් කියන් දේ ගොඩක් පැහැදිලි වෙයි.

      #include <stdio.h>
      
      int main()
      {
          int num1 = 10; 
          int num2 = 5;
          
          if(num1 > num2) //10 සෑම විටම 5 ට වඩා විශාල වන නිසා මෙම නිර්ණායකය සත්‍ය වේ. එම නිසා if එක ඇතුලේ ඇති printf එක run වේ.
          {
              printf("Number1 is greater than Number2");
          }
      
          return 0;
      }
      
      output -: Number1 is greater than Number2
      

      else
      නමුත් මොකද වෙන්නේ Number1 වලට වඩා Number2 විශාල උනොත්. ඔබට පේනව ඇති හැම විටම අපිට if වලින් විතරක් සෑහීමකට පත්වීමට බැරි බව. එබැවින් අපි if සමග else භාවිතා
      කල යුතු වේ.

      else යන්නේ සරල අදහස වන්නේ එසේ නොවේනම් යන්නයි. else statement කිසිවිටකත් තනිව යෙදිය නොහැකිය. එය සෑම විටම if එකක් සමග යෙදිය යුතු වේ. එමෙන්ම if වල
      ආකාරයට වරහන් තුල නිර්ණායක ලිවීම සිදු නොකරයි.

      if(expression) 
      {
      	statement;
      }
      else //මෙහි නිර්ණායක ලිවීමක් සිදු නොකරයි.
      {
      	statement; //if තුල ඇතු නිර්ණායකය(expression එක) වැරදි නම්  මෙය run වේ.
      }
      

      අපි මෙය scanf යොදා ගනිමින් පරික්ෂා කරමු.

      #include <stdio.h>
      
      int main()
      {
          int num1;
          int num2;
          
          printf("Enter number1 = ");
          scanf("%d", &num1); //number1 හි අගය ඇතුලත් කිරීම.
          
          printf("Enter number2 = ");
          scanf("%d", &num2); //number2 හි අගය ඇතුලත් කිරීම.
          
          if(num1 > num2) //number1 හි අගය number2 හි අගයට වඩා විශාලනම් මෙය run වේ.
          {
              printf("Number1 is greater than Number2");
          }
          else //number2 හි අගය number1 හි අගයට වඩා විශාලනම් මෙය run වේ.
          {
              printf("Number2 is greater than Number1");
          }
      
          return 0;
      }
      
      First run -: Enter number1 = 10                                                                                                  
                   Enter number2 = 5                                                                                                   
                   Number1 is greater than Number2
      
      Second run-: Enter number1 = 5                                                                                                   
                   Enter number2 = 10                                                                                                  
                   Number2 is greater than Number1   
      

      අපි දැන් if-else භාවිතා කරමින් සරල c application එකක් හදමු.

      Question 1 -: When you enter a number from keyboard that number should be categorized into positive and negative.
      Write a C program to fulfill this.

      මෙයින් කියවෙන්නේ ඔබ යම්කිසි සංඛ්‍යාවක් input කල විට එම සංඛ්‍යාව ධන සංඛ්‍යාවක්ද සෘණ සංඛ්‍යාවක්ද යන්න නිර්ණය කරන්න යන්නයි.

      • ධන සංඛ්‍යා(possitive numbers) -: 0 ට වඩා වැඩි සංඛ්‍යා
      • සෘණ සංඛ්‍යා(negative numbers) -: 0 ට වඩා අඩු සංඛ්‍යා
      #include <stdio.h>
      
      int main()
      {
          int number;
          
          printf("Enter a number = ");
          scanf("%d", &number); //යම්කිසි සංඛ්‍යාවක් ඇතුලත් කිරීම
          
          if(number > 0)  //ඇතුලත් කල සංඛ්‍යාව 0ට වඩා විශාලනම්
          {
              printf("Positive number");
          }
          else // ඇතුලත් කල සංඛ්‍යාව 0ට වඩා කුඩානම්
          {
              printf("Negative number");
          }
      
          return 0;
      }
      
      First run -: Enter a number = 3                                                                                                  
                   Positive number  
      
      Second run-: Enter a number = 3                                                                                                  
                   Positive number     
      

      Question 2 -: Improve above code to check whether entered number is odd or even.

      මෙහි සඳහන් වන්නේ අපි ඇතුලත් කරන සංඛ්‍යාව ඔත්තේ(odd) ද ඉරට්ටේද(even) යන්න නිර්ණය කරන ලෙසයි. ප්‍රශ්නය සදහන් කර ඇති පරිදි කලින් අපි run කල code එක වැඩි දියුනු කරන්න කියලා තමා
      ප්‍රශ්නයේ සඳහන් කරන්නේ. මෙය කරන විදිහ පියවර ආකාරයෙන් මන් පැහැදිලි කරන්නම්.

      • අපි සංඛ්‍යාවක් ධනද සෘණද යන්න වෙන් කර අවසන් දැන් තිබෙන්නේ එය

        1. ධන ඔත්තේද(possitive odd)
        2. ධන ඉරට්ටේද(possitive even)
        3. සෘණ ඔත්තේද(negative odd)
        4. සෘණ ඉරට්ටේද(negative even)
      • කොහොමද අපි සංඛ්‍යාවක් ඔත්තේද ඉරට්ටේද යන්න සොයා බලන්නේ. මන් ඔයාලට කියලා දෙන්නම් සරල ක්‍රමයක්.

        1. යම් කිසි සංඛ්‍යාවක් 2න් ඉතුරු නැතුව බෙදේ නම් එය ඉරට්ටේ සංඛ්‍යාවක් වේ. C program වල ගත්තොත් number % 2 == 0(2න් බෙදූ විට ඉතුරු බිංදුවට සමාන නම්).
        2. යම් කිසි සංඛ්‍යාවක් 2න් බෙදූ විට ඉතුරු 1ක් ලැබේ නම් එය ඔත්තේ සංඛ්‍යාවකි. C program වල ගත්තොත් number % 2 == 1(2න් බෙදූ විට ඉතුරු එකට සමාන නම්).
      • ඔබ දන්නවාද අපිට if-else ඇතුලේ තවත් if-else ලිවිය හැකි බව. ඒ if-else තුලත් තවත් if-else ලිවිය හැකි බව. මෙය අනන්තය දක්වා ලිවිය හැක.
        උදා -:

      if(expression)
      {
      	if(expression)
      	{
      		statement; 
      	}
      	else
      	{
      		statement; 
      	}
      }
      else
      {
      	if(expression)
      	{
      		statement; 
      	}
      	else
      	{
      		statement; 
      	}
      }
      

      මෙම ආකෘතිය යොදා ගනිමින් Question 2 එක විසදමු.

      #include <stdio.h>
      
      int main()
      {
          int number;
          
          printf("Enter a number = ");
          scanf("%d", &number); //යම්කිසි සංඛ්‍යාවක් ඇතුලත් කිරීම
          
          if(number > 0) //සංඛ්‍යාව 0ට වඩා විශාලදැයි බැලීම
          {
              if(number % 2 == 0) //සංඛ්‍යාව 2න් ඉතුරු නැතිව බෙදේදැයි බැලීම. එනම් ඉතුරි 0 ට සමාන වේදැයි බැලීම.
              {
                  printf("Positive even number");
              }
              else
              {
                  printf("Positive odd number");
              }
             
          }
          else //ඇතුලත් කල සංඛ්‍යාව 0ට වඩා කුඩානම්
          {
               if(number % 2 == 1) //සංඛ්‍යාව 2න් බෙදූවිට ඉතුරු 1ක් ලැබේදැයි බැලීම
              {
                  printf("Negative even number");
              }
              else
              {
                  printf("Negative odd number");
              }
          }
      
          return 0;
      }
      
      First run -: Enter a number = 4                                                                                                  
                   Positive even number
      
      Second run-: Enter a number = 3                                                                                                  
                   Positive odd number    
      
      Third run -: Enter a number = -4                                                                                                 
                   Negative even number 
      
      Forth run -: Enter a number = -3                                                                                                  
                   Negative odd number
      

      else if
      කලින් ප්‍රශ්න වලදි ඔයාට කිව්වා සංඛ්‍යාවක් input කල විට එය ධනද සෘණද යන්න සොයා බලන විට. නමුත් අපි 0 ඇතුලත් කලොත් එයට කුමක් සිදු වේද. 0 යනු ධනත් නොවේ සෘණත් නොවේ. එමනිස ඔබට පේනවා ඇති
      if-else පමණක් අපට සෑහීමකට පත්විය නොහැකි බව. එම නිසා අපිට else if මෙහිදී භාවිතා කිරීමට සිදු වනවා.

      • else if සරල අදහස වන්නේ එසේත් නැතිනම් යන්නයි.
      • else if භාවිතා කල හැක්කේ if තිබ්බොත් පමණි. if වලට පසුවත් else වලට කලිනුත් else if යොදා භාවිතා කරයි.
      • මෙහි ඇති තවත් විශේශත්වයක් වන්නේ අපිට කැමති ප්‍රමාණයක් else if භාවිතා කල හැකි වීමයි.

      උදා-:

      if(expression) 
      {
      	statement;
      }
      else if(expression)
      {
      	statement;
      }
      else 
      {
      	statement;
      }
      

      Question 3 -: When you enter a number from keyboard that number should be categorized into positive and negative.
      And also if you enter 0(zero) program should display a message. Write a C program to fulfill this.

      මෙහි පවසන ආකාරයට කලින් පරිදි සංඛ්‍යාවක් ධනද සෘණද යන්න නිර්ණය කල යුතු අතර. 0 ඇතුලත් කරොත් එය මෙනම display කල යුතු වේ.

      #include <stdio.h>
      
      int main()
      {
          int number;
          
          printf("Enter a number = ");
          scanf("%d", &number); //යම්කිසි සංඛ්‍යාවක් ඇතුලත් කිරීම
          
          if(number > 0)  //සංඛ්‍යාව 0ට වඩා විශාලදැයි බැලීම
          {
              printf("Positive number");
          }
          else if(number < 0)  //සංඛ්‍යාව 0ට වඩා කුඩාදැයි බැලීම
          {
              printf("Negative number");
          }
          else //සංඛ්‍යාව ධන හෝ සෘණ යන දෙකම නොවේනම්
          {
              printf("Zero");
          }
      
          return 0;
      }
      
      First run -: Enter a number = 4                                                                                                  
                   Positive number
      
      Second run-: Enter a number = -4                                                                                                  
                   Negative number    
      
      Third run -: Enter a number = 0                                                                                                 
                   Zero 
      
      • මූලාශ්‍ර -: https://www.studytonight.com/c/decision-making-in-c.php
      • C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR

      ඔබට අවශ්‍යනම් ඔබේ බ්‍රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්

      • https://www.onlinegdb.com/online_c_compiler
      • https://www.tutorialspoint.com/compile_c_online.php
      • https://repl.it/languages/c

      සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site දෙකත් මන් දාන්නම්

      • https://www.geeksforgeeks.org/c-programming-language/
      • https://www.tutorialspoint.com/cprogramming/index.htm

      මගේ කලින් ලිපි

      • C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction) -: https://bit.ly/2O6rLXR
      • C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables) -: https://bit.ly/2spD6Kn
      • C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://bit.ly/2ruMH22
      • C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions) -: https://bit.ly/2qU8IaK
      • C Programming මුල සිට ඉගෙනගනිමු (part 5 - create simple applications) -: https://bit.ly/2DDfy7b

      මන් ඊළග ලිපියෙන් කියලා දෙන්නම් &&, ||, != භාවිතා කරලා if-else statement ලියන විදිහ . මගේ ලිපි වල අඩුපාඩු තියෙනවනම් දන්නේ නැති දේවල් තියෙනවනම් පහලින් කමෙන්ට් එකක් දාන්න.
      තව ලිපියකින් හම්බෙමු ජය වේවා.

      posted in Blogs
      Kalana
      Kalana
    • C Programming මුල සිට ඉගෙනගනිමු (part 7 - Format Specifiers in C)

      සුභ අලුත් අවුරුද්දක් වේවා හැමෝටම!

      සමාවෙන්න මේ දවස් ටිකේ පෝස්ට් දාන්න බැරු උනාට. පොඩි වැඩ වගයක හිටියේ. ලොකු වෙලාවක් තිබ්බේ නැති නිසා මන් මේක ඉංග්‍රීසි වලින් ලිව්වේ. ඊලඟ ලිපි අනිවාර්‍යයෙන් සිංහලෙන් එනවා. මේක තේරෙන් නැත්තම් පොඩ්ඩක් කියන්න. මන් සිංහලට පරිවර්තනය කරන්නම්.

      Many peoples have lot of problems with C format specifiers. Most of them don't know how to use it,
      when can use it, ranges of data types and etc. I have studied these format specifiers and it takes few hours to
      complete this article.

      I would like to show these using table and give an example to each format specifier by explain them.

      char

      Format specifier	Description			Type				range					Uses
      	%c		Character			char				-128 to 128				Use to output single character
      	%c		Character			unsigned char		        0 to 255				Use to output single character
      	%s		String				char * , char []		-					Use to output any range of strings
      

      Examples

      #include <stdio.h>
      
      int main()
      {
          char letter1 = 'a';
          unsigned char letter2 = 'a';
          
          char *words1 = "Hello World!";
          char words2[] = "Hello Guys!";
          
          printf("letter 1 = %c", letter1); //Output only one character
          printf("\nletter 2 = %c\n", letter2);
      
          printf("\n%s", words1); //Output any range of strings
          printf("\n%s", words2);
          
          letter1 = 255;
          letter2 = 255;
          
          printf("\n\nchar          = %d\n", letter1); //Diferrence between char and unsigned char
          printf("Unsigned char = %d\n", letter2);
          
          return 0;
      }
      

      Output

      letter 1 = a
      letter 2 = a
      
      Hello World!
      Hello Guys!
      
      char          = -1
      Unsigned char = 255
      

      Integer(short)

      Format specifier	Description			Type				range(Uses)	
      	%hd		Integer				short int			-32,768 to 32,767
      	%hu		"				unsigned short int	              0 to 65,535
      

      Examples

      #include <stdio.h>
      
      int main()
      {
          short int min1 = -32768;
          short int max1 = 32767;
          
          unsigned short int min2 = 0;
          unsigned short int max2 = 65535;
        
          printf("Minimum value of short int = %hd", min1); 
          printf("\nMaximum value of short int = %hd", max1); 
          
          printf("\n\nMinimum value of unsigned short int = %hu", min2); 
          printf("\nMaximum value of unsigned short int = %hu", max2); 
          
          return 0;
      }
      

      Output

      Minimum value of short int = -32768
      Maximum value of short int = 32767
      
      Minimum value of unsigned short int = 0
      Maximum value of unsigned short int = 65535
      

      Integer

      Format specifier	Description		Type					range						Uses
      	%d		Integer			int				-2,147,483,648 to 2,147,483,647		Can take integers as decimals
      	%u		"			unsigned int				 0 to 4,294,967,295		Output only positive numbers
      	%i		"			unsigned int	                -2,147,483,648 to 2,147,483,647		Can take integers as decimals, 
      															hexadecimals and octals type.
      

      Examples

      #include <stdio.h>
      
      int main()
      {
          int min1 = -2147483648;
          int max1 = 2147483647;
          
          unsigned int min2 = 0;
          unsigned int max2 = 4294967295;
          
          unsigned int min3 = -2147483648;
          unsigned int max3 = 2147483647;
          
          unsigned int decimal = 12;
          unsigned int octal = 012;
          unsigned int hexadecimal = 0X12;
          
          
          printf("Minimum value of int = %d", min1); 
          printf("\nMaximum value of int = %d", max1);
          
          printf("\n\nMinimum value of unsigned int(u) = %u", min2); 
          printf("\nMaximum value of unsigned int(u) = %u", max2);
          
          printf("\n\nMinimum value of unsigned int(i) = %i", min3); 
          printf("\nMaximum value of unsigned int(i) = %i", max3);
          
          printf("\n\n12 in decimal format       = %i", decimal); 
          printf("\n012 in octal format        = %i", octal);
          printf("\n0X12 in hexadecimal format = %i", hexadecimal);
          
          return 0;
      }
      

      Output

      Minimum value of int = -2147483648
      Maximum value of int = 2147483647
      
      Minimum value of unsigned int(u) = 0
      Maximum value of unsigned int(u) = 4294967295
      
      Minimum value of unsigned int(i) = -2147483648
      Maximum value of unsigned int(i) = 2147483647
      
      12 in decimal format       = 12
      012 in octal format        = 10
      0X12 in hexadecimal format = 18
      

      Integer(long and long long)

      Format specifier	Description		Type											range(Uses)
      	%ld or %li	Integer			long int							-2,147,483,648 to 2,147,483,647
      	%lu		"			unsigned long int					 		     0 to 4,294,967,295
      	%lld or %lli	"			long long int			          -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807(-(2^63) to (2^63)-1)
      	%llu		"			unsigned long long int				 			 0 to 18,446,744,073,709,551,615 
      

      Examples

      #include <stdio.h>
      
      int main()
      {
          long int min1 = -2147483648;
          long int max1 = 2147483647;
          
          unsigned long int min2 = 0;
          unsigned long int max2 = 4294967295;
          
          long long int min3 = -9223372036854775808; // 2^63
          long long int max3 = 9223372036854775807; // 2^63 - 1
          
          unsigned long long int min4 = 0;
          unsigned long long int max4 = 18446744073709551615;
      
          
          printf("Minimum value of long int(ld) = %ld", min1); 
          printf("\nMaximum value of long int(ld) = %ld", max1);
          
          printf("\n\nMinimum value of long int(li) = %li", min1); 
          printf("\nMaximum value of long int(li) = %li", max1);
          
          printf("\n\nMinimum value of unsigned long int(lu) = %lu", min2); 
          printf("\nMaximum value of unsigned long int(lu) = %lu", max2);
          
          printf("\n\nMinimum value of long long int(lld) = %lld", min3); 
          printf("\nMaximum value of long long int(lld) = %lld", max3);
          
          printf("\n\nMinimum value of long long int(lli) = %lli", min3); 
          printf("\nMaximum value of long long int(lli) = %lli", max3);
          
          printf("\n\nMinimum value of unsigned long long int(llu) = %llu", min4); 
          printf("\nMaximum value of unsigned long long int(llu) = %llu", max4);
          
          return 0;
      }
      

      Output

      Minimum value of long int(ld) = -2147483648
      Maximum value of long int(ld) = 2147483647
      
      Minimum value of long int(li) = -2147483648
      Maximum value of long int(li) = 2147483647
      
      Minimum value of unsigned long int(lu) = 0
      Maximum value of unsigned long int(lu) = 4294967295
      
      Minimum value of long long int(lld) = -9223372036854775808
      Maximum value of long long int(lld) = 9223372036854775807
      
      Minimum value of long long int(lli) = -9223372036854775808
      Maximum value of long long int(lli) = 9223372036854775807
      
      Minimum value of unsigned long long int(llu) = 0
      Maximum value of unsigned long long int(llu) = 18446744073709551615
      

      Float, Double and Long Double

      Format specifier	Description		Type			Range					Uses
      	%f		Float			float			1.2E-38 to 3.4E+38		Use when number has 6 decimal places
      	%lf		Double			double			2.3E-308 to 1.7E+308	Use when number has 15 decimal places
      	%Lf		Long Double		long Double		3.4E-4932 to 1.1E+4932	Use when number has 19 decimal places
      	%e or %E	Float, Double	        float, double					Scientific notation of float values
      	%g or %G	Float, Double	        float, double					Scientific notation of float values
      												Accept integers and float double also
      

      Examples

      #include <stdio.h>
      
      int main()
      {
          float number1 = 5.12;
          double number2 = 5;
          long double number3 = 5;
          
          printf("Float number is(f)        = %f", number1);
          printf("\nDouble number is(lf)      = %lf", number2);
          printf("\nLong Double number is(Lf) = %Lf", number3);
          
          printf("\n\nFloat number is(e)       = %e", number1);
          printf("\nDouble number is(e)      = %e", number2);
          
          printf("\n\nFloat number is(E)       = %E", number1);
          printf("\nDouble number is(E)      = %E", number2);
          
          printf("\n\nFloat number is(g)       = %g", number1); //Support for both integers and floats, doubles
          printf("\nDouble number is(g)      = %g", number2);
          
          printf("\n\nFloat number is(G)       = %G", number1); //Support for both integers and floats, doubles
          printf("\nDouble number is(G)      = %G", number2);
          
          return 0;
      }
      

      Output

      Float number is(f)        = 5.120000
      Double number is(lf)      = 5.000000
      Long Double number is(Lf) = 5.000000
      
      Float number is(e)       = 5.120000e+00
      Double number is(e)      = 5.000000e+00
      
      Float number is(E)       = 5.120000E+00
      Double number is(E)      = 5.000000E+00
      
      Float number is(g)       = 5.12
      Double number is(g)      = 5
      
      Float number is(G)       = 5.12
      Double number is(G)      = 5
      

      Other Specifiers

      Format specifier	Description		Type							Uses
      	%o		Integer			short int, unsigned short int	Octal representation of Integer.
      						int, unsigned int, long int
      									
      	%x or %X	Integer			short int, unsigned short int   Hexadecimal representation of an Integer.
      						int, unsigned int, long int
      									
      	%p		Void *			void *				Use to get address of pointer or any other variable
      										Address of pointer to void void *
      																	
      	%n		-				-			Prints nothing.It cause printf() to load the variable 
      										pointed by corresponding argument. The loading is done with
      										a value which is equal to the number of characters printed 
      										by printf() before the occurrence of %n.
      																	
      	%%		-				-			Prints % character.
      

      Examples

      #include <stdio.h>
      
      int main()
      {
          int num1 = 65;
          int num2 = 67;
          int num3 = 15;
          
          int* ptr =&num3;
          
          int num4;
          int num5 = 20;
          
          printf("Octal representation of 65 = %o", num1);
          printf("\nOctal representation of 67 = %o", num2);
          
          printf("\n\nHexadecimal representation of 15(x) = %x", num3);
          printf("\nHexadecimal representation of 15(X) = %X", num3);
          
          printf("\n\nAddress of pointer = %p",ptr);
          
          printf("\n\nThe value of %nnum4 and %nnum5 is =  ", &num4, &num5); //Uses of %n
          printf("%d   %d", num4, num5); 
          
          printf("\n\nI got 50%% discount when I was shopping"); //Uses of %%
          
          return 0;
      }
      

      Output

      Octal representation of 65 = 101
      Octal representation of 67 = 103
      
      Hexadecimal representation of 15(x) = f
      Hexadecimal representation of 15(X) = F
      
      Address of pointer = 0x7ffe402adda4 
      
      The value of num4 and num5 is =  15   24
      
      I got 50% discount when I was shopping
      

      I hope this will help who are stuck with format specifiers in c. If I have done any mistakes please mentioned that.

      • C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR

      ඔබට අවශ්‍යනම් ඔබේ බ්‍රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්

      • https://www.onlinegdb.com/online_c_compiler
      • https://www.tutorialspoint.com/compile_c_online.php
      • https://repl.it/languages/c

      සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site දෙකත් මන් දාන්නම්

      • https://www.geeksforgeeks.org/c-programming-language/
      • https://www.tutorialspoint.com/cprogramming/index.htm

      මගේ කලින් ලිපි

      • C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction) -: https://bit.ly/2O6rLXR
      • C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables) -: https://bit.ly/2spD6Kn
      • C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://bit.ly/2ruMH22
      • C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions) -: https://bit.ly/2qU8IaK
      • C Programming මුල සිට ඉගෙනගනිමු (part 5 - create simple applications) -: https://bit.ly/2DDfy7b
      • C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 1)) -: https://bit.ly/2LiVsmZ
      • C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 2)) -: https://bit.ly/2SJAEJQ

      මන් ඊළග ලිපියෙන් කියලා දෙන්නම් switch statement ගැන . මගේ ලිපි වල අඩුපාඩු තියෙනවනම් දන්නේ නැති දේවල් තියෙනවනම් පහලින් කමෙන්ට් එකක් දාන්න.
      තව ලිපියකින් හම්බෙමු ජය වේවා.

      posted in Blogs
      Kalana
      Kalana
    • C Programming මුල සිට ඉගෙනගනිමු (part 9 - While loop)

      සුබ දවසක් වේවා ඔයාලට. අද මන් කතා කිරීමට බලාපොරොත්තු වෙන්නේ loops ගැන. මොනවද මේ loops නැතහොත් Iterative statements කියලා කියන්නේ. මන් ඔයාලට කියනවා එකේ ඉදන් දහයට ඇති සියලුම සංඛ්‍යා diplay වෙන විදිහට program එකක් ලියන්න කියලා. අපි දන්නවා අපිට පුලුවන් මේ වැඩේ printf() දහයකින් මේ වැඩේ කරන්න පුලුවන් කියලා. නමුත් ඔයාට කිව්වොත් එකේ ඉදන් සීයට ඇති සියලුම සංඛ්‍යා diplay වෙන විදිහට program එකක් ලියන්න කියලා. මෙය printf() සීයකින් කරන්න ගියොත් ගොඩක් වෙලා යන බව ඔබට තේරෙනෙවා ඇති. එම නිසා එවැනි කාර්‍යයන් සිදු කිරීම සදහා
      ක්‍රම තුනක් C Programming වල අප භාවිතා කරනවා.

      1. while loop.
      2. do-while loop.
      3. for loop.

      මෙම වර්ග තුනෙන් අද මම පැහැදිලි කිරීමට බලාපොරොත්තු වන්නේ while loop ගැන පමණි. පලමුව මම මෙහි ආකෘතිය ලියා පෙන්වන්නම්.

      while(condition)
      {
          //ඔබට නැවත නැවත run කිරීමට අවශ්‍ය code එක හෝ codes කිහිපය
          //Increment(++) or Decrement(--) operator
      }
      

      මේ ආකෘතිය භාවිතා කරන උදාහරණයක් දැන් බලමු. මන් කලින් කිව්ව එකේ සිට දහයට ඇති සංඛ්‍යා while loop මඟින් diplay කරමු.

      #include <stdio.h>
      
      int main()
      {
          int i = 1;
          
          while(i <= 10)
          {
              printf("%d ", i);
              i++;
          }
      
          return 0;
      }
      
      Output -: 1 2 3 4 5 6 7 8 9 10
      

      අපි දැන් මේ codes කිහිපය පැහැදිලි කර ගනිමු.

      1. int i = 1; -: අපිට ලැබුනු අභියෝගය උනේ එකේ සිට දහයට වෙනතෙක් සංඛ්‍යා diplay කිරීමටයි. එම නිසා අපගේ ආරම්භක ඉලක්කම මම int i වලට සමාන කලා.
      2. while(i <= 10) -: මෙහිදී උබට පෙනෙනවා while loop එක තුල කිසියම් condition එකක් ඇති බව. එම condition එක සත්‍ය වුවහොත් පමණයි අපට loop එක ඇතුලේ තියෙන codes run කිරීමට හැකි වන්නේ. ඉහතදී අප i වල අගය එකට සමාන කලා එමනිසා while(i <= 10) දී එක දහයට වඩා කුඩා බව සත්‍ය නිසා loop එක ඇතුලේ තියෙන codes run කිරීමට අපට හැකියාව ලැබෙනවා.
      3. printf("%d ", i); -: ඉහත දැක්වූ condition සත්‍ය වූ නිසා මෙය run වේ. මෙහිදී i වල වර්තමාන අගය diplay කරයි. මෙම අවස්තාව වන විට i වල වර්තමාන අගය එක වන නිසා එක diplay වේ.
      4. i++; -: මෙහි අරුත වන්නේ i = i + 1 යන්නයි. i වල කලින් අගය එක වේ. එයට තව එකක් එකතු වූ විට දෙක වේ. දැන් i වල නවතම අගය 2 වේ. මෙය නැවතත් while(i <= 10) වලට ගමන් කර සත්‍ය දැයි පරීක්ෂා කරයි දෙක දහයට වඩා කුඩා නිසා condition එක සත්‍ය වී නැවත loop එක ක්‍රියාත්මක වේ. මෙය i = 11 වූ විට නතර වේ. මක් නිසාදයත් එකලොහ දයට වඩා විශාල වන නිසා condition එක අසත්‍ය වන බැවිනි.

      ඉහත සදහන් කල දේවල් මම while loop එකට ඉලක්කම් යොදමින් පැහැදිලි කරන්නම්.

      1. පලමු වටය
      int i = 1;
          
          while(i <= 10) // 1<=10
          {
              printf("%d ", i); //output -: 1
              i++; // i = 1 + 1;
      		     // i = 2
          }
      
      1. දෙවන වටය(i වල නවතම අගය 2 වේ)
          while(i <= 10) // 2<=10
          {
              printf("%d ", i); //output -: 1 2
              i++; // i = 2 + 1;
      		     // i = 3
          }
      

      3.තුන්වන වටය(i වල නවතම අගය 3 වේ)

          while(i <= 10) // 3<=10
          {
              printf("%d ", i); //output -: 1 2 3
              i++; // i = 3 + 1;
      		     // i = 4
          }
      
      1. මෙලෙස වට සියල්ල ගමන් කර අවසන් වටයට කලින් වටය වන 10 වටය(මෙහිදී i වල නවතම අගය 10 වේ)
          while(i <= 10) // 10<=10
          {
              printf("%d ", i); //output -: 1 2 3 4 5 6 7 8 9 10
              i++; // i = 10 + 1;
      		     // i = 11
          }
      
      1. අවසන් වටය හෙවත් එකලොස්වන වටය
      while(i <= 10) // 11<=10 මෙය අසත්‍ය වන නිසා loop එකෙන් එලියට ගොස් එලියේ ඇති codes run වේ.
      {
          //condition එක අසත්‍ය වූ නිසා ඇතුලේ ඇති දේවල් run නොවේ.
      }
      
      return 0; //loop එකෙන් එලියේ ඇත්තේ මෙය පමණක් වන නිසා මෙය run වේ.
      

      මම හිතනවා ඔබට දැන් තේරෙන්න ඇති කියලා while loop එකක ක්‍රියාකාරිත්වය මොකක්ද කියලා.

      අපි කලින් කතා කලා එකේ සිට දහයට සංඛ්‍යා diplay කරන්නේ කොහොමද කියලා.අපි දැන් බලමු දහයේ සිට එක දක්වා සංඛ්‍යා diplay කරන ආකාරය.

      #include <stdio.h>
      
      int main()
      {
          int i = 10; // දහයේ සිට එකට නිසා ආරම්භක අගය 10 ලෙස ගැනීම
          
          while(i >= 1) // දහය එකට වඩා විශාල නිසා condition එක සත්‍ය වේ. මෙහිදී අප එක ගත්තේ මෙම සංඛ්‍යා රටාව අප අවසන් කල යුත්තේ එකෙන් වන බැවිනි.
          {
              printf("%d ", i);// වර්තමාන අගය වන දහය diplay කිරීම
              i--; // i = i - 1 එනම් i = 10 - 1;
      		     // i = 9;
          }
      
          return 0;
      }
      
      Output -: 10 9 8 7 6 5 4 3 2 1
      

      අපි දැන් මෙම while loop යොදා ගනිමින් සරල ගැටලුවක් විසදමු.

      1. write a C program to print 1 to 100 even numbers by using while loop.

      මෙමගින් කියන්නේ එකේ සිට සීයට දක්වා ඇති සියලු ඉරට්ටේ සංඛ්‍යා while loop එකක් මගින් diplay කරන ලෙසයි. මම එය මෙසේ පියවර ආකාරයෙන් කරන්නම්.

      • එකේ සිට සීය දක්වා සංඛ්‍යා while loop එකක් මගින් diplay කරන විදිහ ඔයාලට මන් කියලා දුන්නා.
      • අපි ඇතුලත් කරන සංඛ්‍යාවක් ඉරට්ටේ වන්නේ කෙසේදැයි බලන ආකාරය කලින් ලිපි වල මන් ඔයාලට කියලා දුන්නා, ඒ උනාට මන් ආයේ ඒක කියන්නම්. යම්කිසි සංඛ්‍යාවක් දෙකෙන් ඉතුරු නැතිව බෙදේ නම්එය ඉරට්ටේ සංඛ්‍යාවක් වේ. එනම් if(number % 2 == 0) නම් එම සංඛ්‍යාව ඉරට්ටේ සංඛ්‍යාවකි.
      #include <stdio.h>
      
      int main()
      {
          int number = 1; //අපගේ ආරම්භක සංඛ්‍යාව
          
          while(number <= 100) // condition එක ස්ත්‍ය නම් අප අවසන් කල යුතු සංඛ්‍යාව තෙක් දිගටම loop එක ක්‍රියාත්මක කිරීම
          {
              if(number % 2 == 0) // අපගේ සංඛ්‍යාව දෙකෙන් ඉතුරු නැතිව බෙදේදැයි පරීක්ෂා කිරීම.
              {
                  printf("%d\n", number); // සංඛ්‍යාව දෙකෙන් බෙදේ නම් එම සංඛ්‍යාව diplay කිරීම
              }
              number++; //සංඛ්‍යාවට එකක් එකතු කිරීම.
          }
      
          return 0;
      }
      

      මෙම ගැටලුව while loop දෙකකින් හෙවත් nested while loop වලින්ද කල හැකිය

      #include <stdio.h>
      
      int main()
      {
          int number = 1; //අපගේ ආරම්භක සංඛ්‍යාව
          
          while(number <= 100)// condition එක ස්ත්‍ය නම් අප අවසන් කල යුතු සංඛ්‍යාව තෙක් දිගටම loop එක ක්‍රියාත්මක කිරීම
          {
              while(number % 2 == 0)// ලැබෙන සංඛ්‍යාව දෙකෙන් බෙදේනම් මෙම loop එක ක්‍රියාත්මක කිරීම.
              {
                  printf("%d\n", number);// සංඛ්‍යාව දෙකෙන් බෙදේ නම් එම සංඛ්‍යාව diplay කිරීම
                  number++;//සංඛ්‍යාවට එකක් එකතු කිරීම. එවිට එම සංඛ්‍යාව ඔත්තේ සංඛ්‍යාවක් වේ එම නිසා මෙම  loop එක අසත්‍ය වන බැවින් මෙම loop එකෙන් පිටත codes run වේ.
              }
              number++;//සංඛ්‍යාවට එකක් එකතු කිරීම. එවිට මෙය ඉරට්ටේ සංඛ්‍යාවක් වේ. තවද මෙය තවදුරටත් 100ට වඩා කුඩානම් දෙවන loop එක නැවත සත්‍ය වී එම loop එක ක්‍රියා කරයි.
          }
      
          return 0;
      }
      

      Both will give same output -:

      2
      4
      6
      8
      10
      12
      14
      16
      18
      20
      22
      24
      26
      28
      30
      32
      34
      36
      38
      40
      42
      44
      46
      48
      50
      52
      54
      56
      58
      60
      62
      64
      66
      68
      70
      72
      74
      76
      78
      80
      82
      84
      86
      88
      90
      92
      94
      96
      98
      100
      

      මන් දැන් කලින් එකට වඩා සංකීර්ණ ප්‍රශ්නයක් දෙන්නම්.
      Write a C programm to input marks of three subjects from keyboard and output the total mark and average mark using while loop.

      • මෙයින් කියන්නේ විෂයන් තුනක ලකුණු ඇතුලත් කර මුළු ලකුනු සහ ලකුණු වල සාමාන්‍යය while loop එකක් මගින් diplay කරන ලෙසයි.
      • අප මෙහිදී විෂයයන් තුන subject1, subject2, subject3 ලෙස ගනිමු. මෙහිදී මුලු ලකුනු ලබා ගැනීමටනම් ලකුනින් ලකුන එකතු කිරීමට සිදුවනවා. එමනිසා එම එකතු කිරීම loop එකක් තුල සිදු කල යුතු වනවා.
      • මුළු ලකුණු සහ සාමාන්‍යය ලබාගන්නේ එක්වරක් පමණක් නිසා එය loop එකට පිටින් සිදු කල යුතු බව ඔබට පෙනෙනවා ඇති.
      #include <stdio.h>
      
      int main()
      {
          float mark;
          float total = 0; //මෙය අප keyboard එක මගින් input කරන දත්තයක් නොවන නිසා 0ට සමාන කරයි.
          float average = 0;//මෙය අප keyboard එක මගින් input කරන දත්තයක් නොවන නිසා 0ට සමාන කරයි.
          int i = 1;
          
          while(i <= 3)
          {
              printf("Enter mark of subject%d = ", i);//මෙහිදී i වල වර්තමාන අගය subject එක ඉදිරියෙන් diplay වේ.(උදා -: subject1, subject2..)
              scanf("%f", &mark); //විශයට අදාල ලකුණු මෙමගින් input කිරීම සිදු කරයි.
              
              total = total + mark; // total වල වර්තමාන අගය 0 බැවින් අප ඇතුලත් කල mark වල අගය එම 0ට එකතුවී total වලට නව අගයක් ලැබේ. විශයන් 3ම නිරූපණය වන පරිදි මෙය තුන්වරක් එකතු වේ.
              i++; // පලමු විශයට 1ක් එකතු කර දෙවන විශයට යාම.
          }
          
          average = total / 3; // විශයන් තුනම එකතු වූ පසු එය මෙතනට totalලෙස පැමිණ සම්පූර්ණ විශයන් ගණන වූ 3 මගින් බෙදීමෙන් average එක ලබා ගනී.
      
          printf("\nTotal is   = %0.2f", total); //මුලු ලකුනු diplay කරයි
          printf("\nAverage is = %0.2f", average);// ලකුනු වල සාමාන්‍යය diplay කරයි
          return 0;
      }
      

      Output -:

      Enter mark of subject1 = 30
      Enter mark of subject2 = 30
      Enter mark of subject3 = 60
      
      Total is   = 120.00
      Average is = 40.00
      

      මන් ඔයාලට ප්‍රශ්න කිහිපයක් දෙන්නම් උත්තරත් එක්ක උත්සහ කරලා බලන්න කරන්න පුලුවන්ද කියලා. බැරි උනොත් හරි තේරෙන් නැත්තම් හරි මට message එකක් දාන්න.

      Question 1 -: Write a program that sums a sequence of integers. Assume that the first integer read the number of values remaining to be entered. Your program should read only one value each time scanf is executed.

      Answer -: https://drive.google.com/open?id=1wobH_o7GhW2p2_F51MrQRNPGqd4yahu1


      Question 2 -: Write a program that finds the smallest of several integers. Assume that the first value read specifies the number of values remaining

      Answer -: https://drive.google.com/open?id=12CwgubdYTySRXkkoveYlArUZxaXlFhKd


      Question 3 -: Collecting money becomes increasingly difficult during periods of recession, so companies may tighten their credit limits to prevent their accounts receivable (money owed to them) from becoming too large. In response to pronologed recession, one company has cut its customers’
      credit limits in half. Thus, if a particular customer had a credit limit of $2000, it is now $1000.

      Write a program that analyzes the credit status of three customers of this company. For each customer you are given:

      • The customer’s account number
      • The customer’s credit limit before the recession
      • The customer’s current balance

      Your program should calculate and print the new credit limit for each customer and should determine (and print) which customers have current balances that exceed their new credit limits.

      Answer -: https://drive.google.com/open?id=19I4YBXAoIRad7ffQESDTzfjNJX-OcZLP


      Question 4 -: The simple interest on a loan is calculated by the formula
      Interest = principal * rate * days / 365 ;

      The proceeding formula assumes that rate is the annual interest rate, and therefore includes the division by 365 (days). Develop a program that will input principle, rate and days for several loans, and calculate and display the simple interest for each loan, using the preceding formula.
      Here is a simple input/output dialog:

      Enter loan principal (-1 to end) : 1000.00
      Enter interest rate : 0.1
      Enter term of the loan in days : 365
      The interest charge is 100.00
      
      Enter loan principal (-1 to end) : 1000.00
      Enter interest rate : 0.08375
      Enter term of the loan in days : 224
      The interest charge is 1.40
      
      Enter loan principal (-1 to end) : -1
      

      Answer -: https://drive.google.com/open?id=1qEIpcjMSb14EsLEr4VC18Mz2I44KppOZ


      • C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR

      ඔබට අවශ්‍යනම් ඔබේ බ්‍රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්

      • https://www.onlinegdb.com/online_c_compiler
      • https://www.tutorialspoint.com/compile_c_online.php
      • https://repl.it/languages/c

      සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site කිහිපයක් මන් දාන්නම්

      • https://www.geeksforgeeks.org/c-programming-language/
      • https://www.tutorialspoint.com/cprogramming/index.htm
      • https://beginnersbook.com/2014/01/c-tutorial-for-beginners-with-examples/

      web url කෙටි කරන්න lankadevelopers ලා හදපු එයාලගෙම සයිට් එකක් තියෙනවා. -> https://link.lankadevelopers.com/

      මගේ කලින් ලිපි

      • C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction) -: https://link.lankadevelopers.com/4WpH
      • C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables) -: https://link.lankadevelopers.com/mXio
      • C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://link.lankadevelopers.com/SHNt
      • C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions) -: https://link.lankadevelopers.com/2MNku
      • C Programming මුල සිට ඉගෙනගනිමු (part 5 - create simple applications) -: https://link.lankadevelopers.com/KUF6
      • C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 1)) -: https://link.lankadevelopers.com/8Xe71
      • C Programming මුල සිට ඉගෙනගනිමු (part 7 - Format Specifiers in C) -: https://link.lankadevelopers.com/761PT
      • C Programming මුල සිට ඉගෙනගනිමු (part 8 - Switch Statement) -: https://link.lankadevelopers.com/7jncK

      මන් ඊළග ලිපියෙන් කියලා දෙන්නම් do-while loop එක ගැන . මගේ ලිපි වල අඩුපාඩු තියෙනවනම් දන්නේ නැති දේවල් තියෙනවනම් පහලින් කමෙන්ට් එකක් දාන්න.

      තව ලිපියකින් හම්බෙමු ජය වේවා.

      posted in Blogs
      Kalana
      Kalana
    • C Programming මුල සිට ඉගෙනගනිමු (part 12 - arrays)

      සුබ දවසක් වේවා ඔයාලට. අද මන් මේ ලිපිය මඟින් කතා කිරීමට බලාපොරොත්තු වන්නේ C Programming වල එන arrays ගැනයි. මොනාද මේ array එකක් කියන්නේ. මුල් ලිපි වල මන් variables ගැන කතා කලා. array එකක් එක්ක variable එකක් සංසන්දනය කරන විට variable එකක් කියන්නේ හරියට කාමරයක් වගේ. මොකද කිව්වොත් එයාට එක සැරේකට තියාගන්න පුලුවන් එක අගයක් විතරයි.

      variable එකක් එක්ක බලද්දි array එකක් කියලා කියන්නේ කාමර විශාල සංඛ්‍යාවක් ඇති ගොඩනැගිල්ලක් වගේ. අපිට තීරණය කරන්න පුලුවන් එම ගොඩනැගිල්ලට අවශ්‍ය කාමර සංඛ්‍යාව කොපමණක්ද කියලා. ඒ කියන්නේ එකවර අගයන් විශාල සංඛ්‍යාවක් array එකකට store කරගන්න පුලුවන් කියන එකයි.

      උදාහරණයක් ගත්තොත් මන් ඔබට කියනවා සිසුන් 100කගේ ලකුණු ඇතුලත් කර ඔවුන්ගේ ලකුණු පිලිවෙලට නැවත output කරන ලෙස. හැබැයි එය විය යුත්තේ සිසුන් 100 දෙනාගෙම ලකුණු ඇතුලත් කිරීමෙන් අනතුරුවයි.

      ඉහතදී ඔබට පෙනෙනවා ඇති අපි loop එකක් පාවිච්චි කලත් ඉහත කාරණය සපුරාලිය නොහැකි බව. variable 100ක් අරන් මේ වැඩේ කිරීමට පුලුවන් උනත් එය ඉතා දුශ්කර කටයුත්තක් බව ඔබට පෙනේ. මේ වගේ දුශ්කර අවස්තා වලදී තමයි අපිට arrays උදව්වට එන්නේ.

      අපි Program එකක් ලියන්න කලින් arrays වල එන වැදගත් කරුණු දැන ගනිමු.

      • array එකක data type වර්ග variable data type වර්ග වලට සමාන වේ. (int, float, char, short,...,etc).
      • array එකක මූලික ආකෘතිය වන්නේ <data type> <array name>[] (උදා -: int number[], float marks[], char words[],....,etc).
      • array එකක් භාවිතා කරන සම්මත ආකාර වන්නේ int numbers[5] = {1, 2, 3, 4 ,5}; හෝ int numbers[] = {1, 2, 3, 4, 5}; අකාරවලින් වේ.
      • ඔබ array එකක් int numbers[5] ලෙස භාවිතා කලොත් එයින් අදහස් වන්නේ එය තුල 0, 1, 2, 3, 4, 5 යන සංඛ්‍යා ඇති බවයි. එනම් 0 සිට 5 දක්වා කාමර ඇති බවයි. එය කාමර වලට කැඩුවොත් පහත පරිදි අර්ත දැක්විය හැකිය.
      int numbers[5] = {1, 2, 3, 4 ,5};
      //ඉහත 1 සිට 5 දක්වා සංඛ්‍යා පහත පරිදි array එකට ආදේශ වේ.
      
      int numbers[0] = 1
      int numbers[1] = 2
      int numbers[2] = 3
      int numbers[3] = 4
      int numbers[4] = 5
      int numbers[5] // අපට array වලදී සෑම විටම භාවිතා කල හැක්කේ numbers[n - 1] දක්වා පමණි. එමනිසා අපට numbers[5] යන්න සංඛ්‍යාවක් ආදේශ කිරීම සදහා භාවිතා කල නොහැක.
      
      #include <stdio.h>
      
      int main()
      {
          int number[5] = {1, 2, 3, 4 ,5};
          
          printf("%d\n", number[0]);
          printf("%d\n", number[1]);
          printf("%d\n", number[2]);
          printf("%d\n", number[3]);
          printf("%d\n", number[4]);
      
          return 0;
      }
      

      Output -:

      1
      2
      3
      4
      5
      

      අපි බලමු දැන් මේකෙදි number[5] භාවිතා කලොත් මොකද වෙන්නේ කියලා.

      #include <stdio.h>
      
      int main()
      {
          int number[5] = {1, 2, 3, 4 ,5, 6}; // 0 සිට 5 දක්වා සංඛ්‍යා 6ක් ඇති බැවින් 6 ඇතුලත් කිරීම.
          
          printf("%d\n", number[0]);
          printf("%d\n", number[1]);
          printf("%d\n", number[2]);
          printf("%d\n", number[3]);
          printf("%d\n", number[4]);
          printf("%d\n", number[5]); // 6 Output කිරීම සදහා
      
          return 0;
      }
      

      Output -:

      1
      2
      3
      4
      5
      32764 // 6 Output නොවේ.
      

      මන් ඉහත කියූ කාරණ සත්‍ය බව ඔබට මෙමගින් පෙනෙනවා ඇති.

      අපි දැන් arrays පාවිච්චි කරලා සරල ගැටලුවක් විසදමු.

      Question -: Write a C program using arrays to fulfill below statements

      1. Enter marks of five students using arrays.
      2. Output marks of all students that you have entered.
      3. Modify your code if user input more than 100 or less than 0 marks user told to input that mark again.

      hint -: you can use loops.

      1. ඉහත ප්‍රශ්න මාලාවලියේ පලවෙනි ප්‍රශ්නය මන් විසඳන්නම්. පලවෙනි ප්‍රශ්නයෙන් කියැවෙන්නේ array එකක් භාවිතා කරමින් සිසුන් 5 දෙනෙකුගේ ලකුණු input කරන ලෙසයි. අපිට hint එකකුත් මේකේ දීලා තියෙනවා loops පාවිච්චි කරන්න කියලා. අපි බලමු එහෙනම් මේ කොටස විසදන හැටි.
      #include <stdio.h>
      
      int main()
      {
          int i;
          int number[i]; // මෙහිදී අප array එකේ විශාලත්වය සදහන් කල නොමැත 
          
          for(i = 0 ; i < 5 ; i++) // array එකක විශාලත්වයේ ආරම්භක අවස්තාව 0 නිසා i = 0 ලෙසත් සිසුන් 5දෙනෙකුගේ ලකුණු ඇතුලත් කරන නිසා i < 5 ලෙස ගනිමු.
          {
              printf("Enter Student mark = ");
              scanf("%d", &number[i]); //වටයෙන් වටයට i++ මගින් i වල අගය එකකින් වැඩි කරයි. ඒ නිසා තමයි අපිට 5දෙනෙකුගේ ලකුණු ඇතුලත් කිරීමට හැකි වන්නේ.
          }
      
          return 0;
      }
      

      Output -:

      Enter Student mark = 12
      Enter Student mark = 23
      Enter Student mark = 45
      Enter Student mark = 56
      Enter Student mark = 67
      
      1. පලවෙනි ප්‍රශ්නය අපි ඉහතදී විසදුවා. දැන් අප දෙවන ප්‍රශ්නය බලමු. අපිට දැන් සිසුන් 5 දෙනාගේ ලකුණු ඇතුලත් කල පිලිවෙලට නැවත Output කල යුතු බවයි දෙවන ප්‍රශ්නයෙන් කියැවෙන්නේ. 5 දෙනෙකුගේ ලකුණු ඇතුලත් කිරීමට loop එකක් අවශ්‍ය උනා වගේ Output කිරීමටත් loop එකක් අවශ්‍ය බව ඔබට පෙනෙනවා ඇති. අපි බලමු එහෙනම් ඒ කොටස විසදන හැටි.
      #include <stdio.h>
      
      int main()
      {
          int i;
          int number[i];
          
          for(i = 0 ; i < 5 ; i++)  // ලකුණු ඇතුලත් කිරීමට භාවිතා කල loop එක
          {
              printf("Enter Student mark = ");
              scanf("%d", &number[i]);
          }
          
          printf("\n");
          
          for(i = 0 ; i < 5 ; i++) //ලකුණු Output කිරීම සඳහා භාවිතා කරන loop එක.
          {
              printf("Student mark is = %d \n", number[i]); ////වටයෙන් වටයට i++ මගින් i වල අගය එකකින් වැඩි කරයි. එමගින් අපට ගබඩා කරගෙන තිබූ ලකුණු පිලිවෙලට Output කල හැකිය
          }
      
          return 0;
      }
      

      Output -:

      Enter Student mark = 12
      Enter Student mark = 23
      Enter Student mark = 45
      Enter Student mark = 56
      Enter Student mark = 67
      
      Student mark is = 12 
      Student mark is = 23 
      Student mark is = 45 
      Student mark is = 56 
      Student mark is = 67 
      
      1. තුන්වන ප්‍රශ්නයෙන් අපට කියන්නේ කිසියම් අවස්තාවක ලකුණු 100ට වඩා හෝ 0 ට වඩා කුඩා සංඛ්‍යාවක් ඇතුලත් කලොත් එම සංඛ්‍යාව වැරදි බවත් නිවැරදි සංඛ්‍යාව නැවත ඇතුලත් කරන ලෙසත් අපගේ program එක වැඩිදියුණු කරන ලෙසයි. ඔබට පෙනෙනවා ඇති මෙය තීරණ ගැනීමේ අවස්තාවක් බව. එම නිසා මෙහිදී අප if හෝ switch භාවිතා කල යුතු වනවා. මන් මේ අවස්තාවේදී ඕන කෙනෙක්ට තේරෙන if එක භාවිතා කරන්නම්.
      #include <stdio.h>
      
      int main()
      {
          int i;
          int number[i];
          
          for(i = 0 ; i < 5 ; i++)// ලකුණු ඇතුලත් කිරීමට භාවිතා කල loop එක            
          {
              printf("Enter Student mark = ");
              scanf("%d", &number[i]);
              
              if(number[i] < 0 || number[i] > 100) //ඇතුලත් කල සංඛ්‍යාව 100ට වඩා විශාල හෝ 0ට වඩා කුඩා දැයි බැලීම.
              {
                  printf("Wrong mark!, Please enter that mark again\n\n"); //ඉහත කාරණ දෙකෙන් එකක් සත්‍ය වුවහොත් මෙය ක්‍රියාත්මක වීම.
                  i--; //loop එක අවසානයේ i++ ක්‍රියාකරන නිසා array එක අකකින් වැඩි වේ. එවිට අප ඇතුලත් කල 100ට වඩා වැඩි 0ට වඩා අඩු සංඛ්‍යා ද output වේ. මෙය වැලැක්වීම සදහා අප i--; භාවිතා කරයි. එමගින් වැරදි සංඛ්‍යා array එකේ ගබඩා වීම වලකී.
              }
          }
          
          printf("\n");
          
          for(i = 0 ; i < 5 ; i++)
          {
              printf("Student mark is = %d \n", number[i]);
          }
      
          return 0;
      }
      

      Output -:

      Enter Student mark = 50
      Enter Student mark = 34
      Enter Student mark = 125
      Wrong mark!, Please enter that mark again
      
      Enter Student mark = 100
      Enter Student mark = -45
      Wrong mark!, Please enter that mark again
      
      Enter Student mark = 45
      Enter Student mark = 0
      
      Student mark is = 50 
      Student mark is = 34 
      Student mark is = 100 
      Student mark is = 45 
      Student mark is = 0 
      

      අපි දැන් array එකක් භාවිතා කරමින් strings සම්බන්ද ගැටළුවක් විසදමු.

      Question -: Write a C program to output any paragraph which you enter by using arrays.

      ඉහත ගැටළුවේ කියන්නේ අපි enter කරන ජේදයක් array එකක් මගින් output කරන ලෙසයි. එසේනම් ඔබට පෙනෙනවා ඇති මෙම ගැටළුවට char හා %s සම්බන්ද වන බව.අපි දැන් මේ ගැටළුව විසදීමට උත්සහ කරමු.

      #include <stdio.h>
      
      int main()
      {
          char str[20];
      	
          printf("Enter a string = ");
          scanf("%s", &str);  //string එකක් ඇතුලත් කිරීම.
          
          printf("%s", str);
      
          return 0;
      }
      

      First try Output -:

      Enter a string = hello world
      hello
      

      Second try Output -:

      Enter a string = helloworld
      helloworld
      

      ඉහතදී ඔබට පෙනෙනවා ඇති හිස්තැනක් තියලා තිබ්බ වාක්‍යයෙන් පලමු වචනය පමණක් output උන අතර හිස්තැනක් තියන්නැතුව එක ගොඩේ ලියපු වාක්‍ය කිසි අවුලක් නැතුව output උනා. ඔබට පෙනෙනවා ඇති ඉහත code එක මගින් අප තබන හිස්තැන් පිලිගන්නේ නැති බව. එබැවින් හිස්තැන් පිලිගැනීමට නම් ඉහත code එකේ පොඩි වෙනසක් කල යුතු වනවා. අප දැන් බලමු ඒ වෙනස මොකක්ද කියලා.

      #include <stdio.h>
      
      int main()
      {
          char str[20];
      	
          printf("Enter a string = ");
          scanf("%[^\n]", &str);  //%s ඉවත් කොට %[^\n] මගින් සිදුවන්නේ අප තබන හිස්තැන් code එක මගින් පිලිගැනීමයි.
      	
          printf("%s", str);
      
          return 0;
      }
      

      Output -:

      Enter a string = hello world
      hello world
      

      ඔබට පෙනෙනවා ඇති %s වෙනුවට %[^\n] භාවිතා කිරීමෙන් හිස්තැන් ගැටළුව මගහරවා ගත හැකි බව.

      මන් මේකෙන් ප්‍රශ්න දෙකක් දෙන්නම් ඔයාලට කරන්න. උත්සහ කරලා බලන්න උත්තර බලන් නැතුව තනියම කරන්න.

      Question 1 -: Computers are commonly used for data analysis. Studnets in a class has scored marks between 0 to 20 for their mid semester examination. Write a C program that reads marks of 15 students in to a single subscripted array and find the mean of the marks.

      Answer -: https://drive.google.com/open?id=1oD9nBgkkGzvqa7JTHiwlXZ3h3-PXjdlk


      Question 2 -: Write a C program that read numbers from an integer array and graph the information in the form of bar chat. Sample output is given below.

      Element Value   Histogram
         0      19    *******************
         1       3    ***
         2      15    ***************
         3       7    *******
         4      11    ***********
         5       9    *********
         6      13    *************
         7       5    *****
         8      17    *****************
         9       1    *
      

      Answer -: https://drive.google.com/open?id=17lDMNZ2KVDWZm4At4ho_ztjVHE4xzDli


      • C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR

      ඔබට අවශ්‍යනම් ඔබේ බ්‍රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්

      • https://www.onlinegdb.com/online_c_compiler
      • https://www.tutorialspoint.com/compile_c_online.php
      • https://repl.it/languages/c

      සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site කිහිපයක් මන් දාන්නම්

      • https://www.geeksforgeeks.org/c-programming-language/
      • https://www.tutorialspoint.com/cprogramming/index.htm
      • https://beginnersbook.com/2014/01/c-tutorial-for-beginners-with-examples/

      web url කෙටි කරන්න lankadevelopers ලා හදපු එයාලගෙම සයිට් එකක් තියෙනවා. -> https://link.lankadevelopers.com/

      මගේ කලින් ලිපි

      • C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction) -: https://link.lankadevelopers.com/4WpH
      • C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables) -: https://link.lankadevelopers.com/mXio
      • C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://link.lankadevelopers.com/SHNt
      • C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions) -: https://link.lankadevelopers.com/2MNku
      • C Programming මුල සිට ඉගෙනගනිමු (part 5 - create simple applications) -: https://link.lankadevelopers.com/KUF6
      • C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 1)) -: https://link.lankadevelopers.com/8Xe71
      • C Programming මුල සිට ඉගෙනගනිමු (part 7 - Format Specifiers in C) -: https://link.lankadevelopers.com/761PT
      • C Programming මුල සිට ඉගෙනගනිමු (part 8 - Switch Statement) -: https://link.lankadevelopers.com/7jncK
      • C Programming මුල සිට ඉගෙනගනිමු (part 9 - While loop) -: https://link.lankadevelopers.com/4TBV5
      • C Programming මුල සිට ඉගෙනගනිමු (part 10 - do-while loop) -: https://link.lankadevelopers.com/4WcNd
        C Programming මුල සිට ඉගෙනගනිමු (part 11 - for loop) -: https://link.lankadevelopers.com/8utoa

      මන් ඊළග ලිපියෙන් කියලා දෙන්නම් 2D-arrays ගැන . මගේ ලිපි වල අඩුපාඩු තියෙනවනම් දන්නේ නැති දේවල් තියෙනවනම් පහලින් කමෙන්ට් එකක් දාන්න.
      තව ලිපියකින් හම්බෙමු ජය වේවා.

      posted in Blogs
      Kalana
      Kalana
    • RE: ලොවම මවිත කරන අලුත්ම malware එක XHelper

      ස්තූතියි සහෝදරයා, xhelper ගැන අහලා තිබ්බට ඒකේ භයානකකම දැන ගත්තේ අද. මේකට තාම solution එකක් හොයාගෙන නැද්ද තාම.

      posted in Blogs
      Kalana
      Kalana
    • RE: Gmail වල important emails හදුනාගන්නේ මෙහෙමයි

      important emails විතරක් තියාගෙන අනෙක් emails සේරම delete කරන විදිහක් තියෙනවා. අපිට අවශ්‍ය කරන සියලුම emails, important ටැග් එකත් එක්ක එනවා අනිත් ඒවා inbox එකේ තියෙනවා. emails ගොඩගැහිලා තියෙන කෙනෙක්ට important ඒව ඇරෙන්න ඉතුරු සේරම mails delete කරන්න ඕනනම් මේ දේවල් කරන්න පුලුවන්.

      • මුලින්ම gmail එකට ගිහින් එකේ search bar එකට යන්න.
      • ඊට පස්සේ search bar එකේ label:unimportant ටයිප් කරලා search කරන්න. මේකෙන් වෙන්නේ සේරම important mails බේරිලා අනික් mails විතරක් select වෙන එක. ඊට පස්සේ ඔයාට බය නැතුව mails delete කරන්න පුලුවන්
      posted in Blogs
      Kalana
      Kalana
    • RE: මොනවද මේ RANSOMWARE?

      මගේ PC එකටත් ransomware එකක් ආවා. ඩොලර් 1000ක් ඉල්ලුවා ෆයිල් ටික decrypt කරන password එක දෙන්න. මන් මේකට solution එකක් හොයා ගත්තා. ransomware එකේ වර්ගේ අනූව මේ solution එක කොහොම වැඩ කරයිද දන්නෑ.

      • මුලින්ම කරන්න ඕනා ransomware එකෙන් infected උන file සේරම delete කරන එක.
      • ඊට පස්සේ PC එක format කරන්න ඕනා.
      • ඊට පස්සේ media recovery කරන්න පුලුවන් software එකක් install කරලා අර delete කරපු file ටික recover කරන එක. මේකෙන් අර infection නැතුව ගිහින් original file එක ගන්න පුලුවන්. මගේ ෆොටෝ වලින් 60% විතර මන් ඒ විදිහට recover කරගත්තා. 100% recover කරගන්න තිබ්බා infection එක උන කාලෙම ඒ දේ කලානම්.
      posted in Blogs
      Kalana
      Kalana
    • RE: ලොවම මවිත කරන අලුත්ම malware එක XHelper

      @GeethOnion අලුතින් OS ගහන්න වෙන සීන් එකක් තියෙන්නේ

      posted in Blogs
      Kalana
      Kalana
    • C Programming මුල සිට ඉගෙනගනිමු (part 16 - C functions)

      සුබ දවසක් වේවා ඔයාලට. අද මන් කතා කිරීමට බලාපොරොත්තු වන්නේ C programming වල එන ඉතා වැදගත් අංගයක් වන functions ගැනයි. අපි බලමු මොනාද මේ functions කියන්නේ කියලා.

      ඔයාලා හිතන්න මෙහෙම ඔයාලගේ ගෙදර සේරම බල්බ් ටික පත්තු වෙන්නේ එක ස්විච් එකකින් කියලා. බැලූ බැල්මට වැඩේ ලේසියි වගේ පෙනුනට එක ස්විච් එකකින් බල්බ් එකක් පත්තු කරනවා කියන්නේ ප්‍රශ්න රැසකට මුහුණ දෙන වැඩක් එක බල්බ් එක කැඩුනොත් සේරම වයර් චෙක් කරන්න ඕනා. අනෙක් අතට බල්බ් ගොඩක් වැඩ කරන්නෙත් නැතුව යනවා මේ වැඩේ නිසා.

      නමුත් හිතන්න හැම බල්බ් එකකටම එක ස්විච් එක ගානේ තියෙනවා කියලා. මෙහෙම උනොත් බල්බ් එකක් වැඩ කරන්නේ නැතිව ගියොත් අනිත් බල්බ් වලට ප්‍රශ්නයක් නෑ. ඒ වගේම මොන බල්බ් එකද වැඩ කරන්නේ නැත්තේ කියලා අපිට කෙලින්ම කියන්න පුලුවන්.

      අපි මේ දක්වා අපේ program කරන් ආවේ ඔය මන් කිව්ව පලවෙනි ක්‍රමේට. සේරම වැඩ කරන්නේ එක ස්විච් එකකින් එනම් සේරම තියෙන්නේ int main() එක ඇතුලේ. එක පේලියක් වැඩ කලේ නැත්තම් සේරම අවුල් යනවා ඒ හින්දා එම අවුල් ජාලය වලක්වන්න තමා අපි functions ඔයාලට හදුන්වා දෙන්නේ. int main() එකේ run වෙන්න ඕන ගොඩක් codes අපි ලබා දෙන functions ඔස්සේ run අවසන් පිලිතුර int main() එකට ලබා දීම මෙම functions සිදු කරයි.

      සරලව කිව්වොත් functions වලින් කරන්නේ අපිට ලබා දුන්නු වැඩ ප්‍රමාණය කොටස් වලට බෙදාගෙන එම භාරගත් කොටස් ඉවර කොට නැවතත් main() එකට ලබා දෙන එකයි.

      අපි බලමු functions වල අකෘතිය කොයි වගේද කියලා

      #include <stdio.h>
      
      <return_type> <function_name>;
      
      int main()
      {
          printf("Hello World");
          return 0;
      }
      
      <return_type> <function_name> (<argument list>)
      {
          //Set of statements – Block of code
      }
      
      • <return_type> -: return_type කියලා කියන්නේ අපි variables හඳුන්වන්න ගන්න data type වලටයි. එනම්
        int, float, char, short,..., etc -: return එකක් අනිවාර්යයෙන් තිබිය යුතුය.
        void -: return එකක් නොතිබිය යුතුය.

      • <function_name> -: function name සඳහා අපිට කැමති නමක් භාවිතා කල හැකිය හරියට variable name එකක් භාවිතා කරනවා වගේ.

      • <argument list> -: argument list වලදී අපි අපේ variable එකත් එක්ක එයට අදාල data type එකත් දැක්විය යුතුය.
        int, float, char, short,..., etc වලදී argument list අනිවාර්‍යයෙන් තිබිය යුතු අතර
        void වලදී argument list අනිවාර්‍යය නොවේ.

      උදාහරණ -:

      int sum(int num1, int num2)
      {
          //codes
      	return;
      }
      
      void sum()
      {
           //codes
      }
      

      මන් දැන් සරල C program එකක් function එකක් යොදගෙන කරන්නම්. එතකොට ඔයාලට තේරෙයි මන් කිව්වේ මොනාද කියලා.

      1. write a c program to input two numbers from key board and get sum of them using function.

      මෙහිදී කියන්නේ function භාවිතා කර ඉලක්කම් දෙකක එකතුවක් ලබා ගන්නා ලෙසයි.

      #include <stdio.h>
      
      int sum(int, int); //sum කියන function එක තුල ඇත්තේ int වර්ගයේ variable බව මෙතනින් පැහැදිලි කරයි.
      
      int main()
      {
          int num1 = 5;
          int num2 = 6;
          int total = 0;
          
          total = sum(num1, num2); //මෙතන සත්‍ය වශයෙන්ම් ඇත්තේ sum(5, 6) යන්නයි. මෙම අගයන් දෙක int sum(int number1, int number2) වලට ලබා දී එහි ඇති return මඟින් පිලිතුර මෙයට නැවත ලබා ගනී.
          
          printf("Total is = %d", total); අවසන් පිලිතුර output වේ.
      	
      	return 0;
      }
      
      int sum(int number1, int number2)// sum(num1, num2) හි ඇති සංඛ්‍යා දෙක වන 5 සහ 6 මෙතනට පැමිණ number1ට හා number2ට ආදේශ වේ.
      {
          return (number1 + number2); //ආදේශ වූ පසු 5 හ 6 එකට එකතු වී එකතුව වන 11 කියන අගය sum(num1, num2); දක්වා ගෙන ගොස් එයට ලබා දේ.
      }
      

      Output -:

      Total is = 11
      

      මෙම ගැටළුව කල හැකි තව ආකාරයක් බලමු.

      #include <stdio.h>
      
      int sum(); //int sum() එක තුල  argument කිසිවක් නොමැති නිසා මේ ආකාරයෙන් ලියයි.
      
      int main()
      {
          int total = 0;
          
          total = sum(); //මෙහිදී sum() මඟින් int sum() function එක ක්‍රියාකරවන් අතර අවසන් පිලිතුර return එකක් මඟින් පිලිතුර ලබාගෙන එය total එකට ලබා දේ.
          
          printf("Total is = %d", total);
      	
      	return 0;
      }
      
      int sum()
      {
          int num1 = 5;
          int num2 = 6;
          
          return (num1 + num2);
      }
      

      Output -:

      Total is = 11
      

      අපි දැන් void යොදා ගෙන මෙම ගැටළුව විසදමු.

      #include <stdio.h>
      
      void sum(int, int); 
      
      int main()
      {
          int num1 = 5;
          int num2 = 6;
          
          sum(num1, num2); // මෙහිදී 5 හා 6 කියන ඉලක්කම් num1හා num2 වලට ආදේශ වී void sum(int number1, int number2) කියන function එක ක්‍රියාකරවා අවසන් පිලිතුර අපට ලබා දේ.
      	
      	return 0;
      }
      
      void sum(int number1, int number2)
      {
          int total = 0;
          
          total = number1 + number2; 
          
          printf("Total is = %d", total); //ඔබට පෙනෙනවා ඇති void සඳහා return අවස්තාවක් නොමැති බව.
      }
      

      Output -:

      Total is = 11
      

      අපි දැන් void යොදාගෙන තව ආකාරයකට මෙය විසඳමු.

      #include <stdio.h>
      
      void sum(); 
      
      int main()
      {
          sum(); //main() එකේ තිබිය යුතු සියල්ල function එකකට පවරා අපට main() එක මේ ආකාරයෙන් කෙටි කර ගත හැකිය.
          
          return 0;
      }
      
      void sum()
      {
          int num1 = 5;
          int num2 = 6;
          int total = 0;
          
          total = num1 + num2; 
          
          printf("Total is = %d", total);
      }
      

      Output -:

      Total is = 11
      

      ඉහත මන් සාකච්ජා කලා ගැටලුවක් function මඟින් විසඳිය හැකි ආකාර 4ක්. ඔයාලට කැමති ආකාරයකින්, ඔයාලට ලේසි කියලා හිතන ආකාරයකින් ගැටළු විසදන්න පුලුවන්.

      අපි දැන් බලමු function භාවිතයෙදී අපට වැදගත් වෙන කරුණු පිලිබඳව

      • int main() යනුත් function එකකි. එය අපේ ප්‍රධාන function එක වේ.

      • Program එකක function එකකට වඩා කැමති ගණනක් තිබිය හැකිය.

      • function එකක් ලියන විට එය තුල ඕනෑ තරම් argument තිබිය හැකිය.
        උදා -: int sum(int num1, int num2, int num3,int num4)

      • function එකක් int වලින් හඳුන්වාදෙන්නේ නම් එම function එක තුල තිබිය හැක්කේ int argument පමණි. float, char, ..., etc තිබිය නොහැක.

      උදා -:
      int sum(int num1, int num2)
      float subject(float mark1, float mark2)
      char words(char name1, char name2)

      • function එකක් void වලින් හඳුන්වාදෙන්නේ නම් එම function එක තුල ඕනෑම වර්ගයක argument තිබිය හැකිය.
        උදා -: void sum(int num, float mark, char name)

      අපි දැන් බලමු function භාවිතා කිරීමෙන් අපට ලැබෙන වාසි මොනාද කියලා

      • code එක වටහා ගැනීමේ පහසුව සඳහා.

      • විවිධ අවස්තා වලදී එකම function එක නැවත නැවත පාවිච්චි කල හැකි වීම.

      • Errors පහසුවෙන් සොයා ගැනීමට හැකි වීම.

      • අපගේ code එකේ දිග අඩු වීම. එමගින් program එකක් කාර්යක්ෂමව භාවිතා කල හැකි වීම.


      • C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR

      ඔබට අවශ්‍යනම් ඔබේ බ්‍රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්

      • https://www.onlinegdb.com/online_c_compiler
      • https://www.tutorialspoint.com/compile_c_online.php
      • https://repl.it/languages/c

      සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site කිහිපයක් මන් දාන්නම්

      • https://www.geeksforgeeks.org/c-programming-language/
      • https://www.tutorialspoint.com/cprogramming/index.htm
      • https://beginnersbook.com/2014/01/c-tutorial-for-beginners-with-examples/

      web url කෙටි කරන්න lankadevelopers ලා හදපු එයාලගෙම සයිට් එකක් තියෙනවා. -> https://link.lankadevelopers.com/

      මගේ කලින් ලිපි

      • C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction) -: https://link.lankadevelopers.com/4WpH
      • C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables) -: https://link.lankadevelopers.com/mXio
      • C Programming මුල සිට ඉගෙනගනිමු (part 3 - Operators) -: https://link.lankadevelopers.com/SHNt
      • C Programming මුල සිට ඉගෙනගනිමු (part 4 - Input & Output functions) -: https://link.lankadevelopers.com/2MNku
      • C Programming මුල සිට ඉගෙනගනිමු (part 5 - create simple applications) -: https://link.lankadevelopers.com/KUF6
      • C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 1)) -: https://link.lankadevelopers.com/8Xe71
      • C Programming මුල සිට ඉගෙනගනිමු (part 6 - Decision making(if-else statement - part 2)) -:https://link.lankadevelopers.com/9drmY
      • C Programming මුල සිට ඉගෙනගනිමු (part 7 - Format Specifiers in C) -: https://link.lankadevelopers.com/761PT
      • C Programming මුල සිට ඉගෙනගනිමු (part 8 - Switch Statement) -: https://link.lankadevelopers.com/7jncK
      • C Programming මුල සිට ඉගෙනගනිමු (part 9 - While loop) -: https://link.lankadevelopers.com/4TBV5
      • C Programming මුල සිට ඉගෙනගනිමු (part 10 - do-while loop) -: https://link.lankadevelopers.com/4WcNd
      • C Programming මුල සිට ඉගෙනගනිමු (part 11 - for loop) -: https://link.lankadevelopers.com/8utoa
      • C Programming මුල සිට ඉගෙනගනිමු (part 12 - arrays) -: https://link.lankadevelopers.com/46cyf
      • C Programming මුල සිට ඉගෙනගනිමු (part 13 - 2D-arrays) -: https://link.lankadevelopers.com/4Q9Gt
      • C Programming මුල සිට ඉගෙනගනිමු (part 14 - Strings) -: https://link.lankadevelopers.com/58zWd
      • C Programming මුල සිට ඉගෙනගනිමු (part 15 - Strings Q&A) -: https://link.lankadevelopers.com/7RuFa

      මගේ ලිපි වල අඩුපාඩු තියෙනවනම් දන්නේ නැති දේවල් තියෙනවනම් පහලින් කමෙන්ට් එකක් දාන්න.

      තව ලිපියකින් හම්බෙමු ජය වේවා.

      posted in Blogs
      Kalana
      Kalana
    • C Programming මුල සිට ඉගෙනගනිමු(part 1 - Introduction)

      මේ මගේ පලවෙනි පෝස්ට් එක, ඒ නිසා අඩුපාඩු ඇති, සමාවෙන්න අඩුපාඩු තිබ්බොත්. මන් කෙලින්ම කතාවට බහින්නම්. මොකක්ද මේ C Language කියන්නේ.

      චාල්ස් බැබේජ් පරිඝනකය සොයා ගත් කාලයේ සිට මේ දක්වා මෘදුකාංග නිර්මාණය සදහා විවිධ වූ පරිඝනක භාශා භාවිතා කලා. මෙම පරිඝනක භාශා සංකීර්ණත්වය අනූව කොටස් දෙකකට බෙදා වෙන්කර තිබෙනවා.

      	1. Low-level programming languages
      			- Machine Language(1 හා  0  සමන්විත භාශාව)
      				උදා -: 110110, 111000110
      			- Assembly Language
      			
      	2. High-level programming languages(අපි කතා කරන  C Language එකත් අයිති වෙන්නේ මේකට තමා)
      

      මේ කොටස් දෙක ගැන වැඩි විස්තර අවශ්‍යනම් පහලින් කමෙන්ට් එකක් දාන්න. මන් දැන් මාතෘකාවට එන්නම්.

      • C Language එක මේ තියන තත්වෙට ගෙනාවේ Dennis Ritchie(සොයා ගත් වර්ශය - 1972) විසින්. ඒ BCPL සහ B භාශා දෙක උපයෝගී කරගනිමින්.

      • මෙම භාශාව ගොඩක් දෙනා හඳුනන්නේ UNIX operating system එක develop කරන භාශාවක් ලෙසයි.

      අපි C Language එකේ origin එක යම් තරමකට දැන ගත්තනේ. අපි දැන් පොඩි code එකක් ලියමු C වලින්.

      ඔයා windows user කෙනෙක්නම් මේ පියවරවල් වලට කරන්න.

      පලමු පියවර -: ඔයා ඔයාගේ Desktop එකට ගිහින් ඒක උඩ right-click කරන්න.

      • ඊට පස්සේ new වලට ගිහින් Text Document එකක් create කරන්න.
      • දැන් ඒ Text Document එක rename කරන්න First.c විදිහට.
        උදා -: New Text Document.txt ----> First.c

      දෙවන පියවර -: දැන් ඒ ෆයිල් එක උඩ double click කරන්න. අපි දැන් හදන්නේ අපිට run කරන්න අව්ශ්‍ය code එක ෆයිල් එක ඇතුලේ ටයිප් කරන්නයි

      • අපිට සෙල්ලම් කරන්න ඕන උනාම අපි කරන්නේ පිට්ටනියට යන එක ඒ වගේ තමා C run කරන්නත් අපිට පිට්ටනියක් අවශ්‍ය වෙනවා. මම දැන් හදන්නේ ඒ අවශ්‍ය කරන පිටිය හදන්නයි.
      #include<stdio.h>
      
      int main(void)
      { 
          printf("Hello World");
      
          return 0;		
      }	
      
      • int main(void){ } -: මේක තමා අපේ main function එක. මේක ඇතුලේ තමා සේරම code ලියන්නේ. මේක තමා අපේ පිට්ටනිය සරලවම කිව්වොත්.

      • printf("Hello World"); -: මේක තමා අපේ code එක. මේකෙන් වෙන්නේ මේ file එක run කලාම Hello World කියන එක අපිට පේන්න display කරන එක.
        Hello World කියන එක හරියට පිට්ටනියේ සෙල්ලම් කරන ලමයි වගේ.
        printf(); කියන්නේ ලමයි සෙල්ලම් කරන ක්‍රිකට් පිත්ත වගේ.

      • #include<stdio.h> -: මෙයා තමා printf(); අයිති කරන් ඉන්න library එක. printf(); වගේ තව ඒවා මෙයා අයිති කරන් ඉන්නවා. ඉස්සරහට ඒ ගැන කියන්නම්.
        මෙයා හරියට ක්‍රිකට් පිත්තේ අයිතිකාරයා වගේ. මෙයා නැත්තම් ලමයින්ට ක්‍රිකට් ගහන්න බෑ. මොකද පිත්ත අයිති එයාටනේ.

      • return 0; -: මෙයා තමා programm එකට දිගටම run වෙන්න දෙන් නැතුව terminate කරන්නේ. හරියට ඉන්ටර්වල් ඉවරයි කියලා ගහන බෙල් එක වගේ. මේක ගැහුවට පස්සේ
        ලමයි සෙල්ලම නවත්තලා පන්තිවලට යනවා නැත්තම් දිගටම සෙල්ලම් කරනවා.

      මන් හිත්නවා මන් කිව්ව දේ තේරෙන්න ඇති කියලා ඔයාලට. උඩ තියෙන code එක ටයිප් කරලා ඉවරනම් ඒක දැන් save කරලා ෆයිල් එක close කරන්න.

      වැදගත්
      ඔයා linux user කෙනෙක්නම් ඔයාට linux වල එන terminal එකේ C programs run කරන්න පුලුවන්.

      ඔයාට C programs, windows වල run කරන්න මේ ෆයිල් එක ඩවුන්ලෝඩ් කරලා ඉන්ස්ටෝල් කරගන්න ඕනා. ලින්ක් එක -: https://sourceforge.net/projects/tdm-gcc/ ඕක ඩවුන්ලෝඩ් කරලා ඉන්ස්ටෝල් කරද්දි දිගටම next දීගෙන යන්න.

      තුන්වන පියවර -: දැන් ඔයාගේ cmd(comand prompt) එක run කරන්න, task bar එකේ cmd කියලා සර්ච් කලාම එනවා.

      • මම මගේ ෆයිල් එක Desktop එකේ හදපු නිසා එතනට navigate කරන්න මට සිද්ධ වෙනව. Desktop එකට navigate කරන්න මේ පියවර අනුගමනය කරන්න.
       C:\Users\User>cd Desktop
       C:\Users\User\Desktop>
      
      • ඔයාලට පේනවා අපි දැන් ඉන්නේ Desktop එකේ ආයේ Back යන්න ඕනා උනොත් cd .."කියලා ටයිප් කරන්න

      හතරවන පියවර -: දැන් කරන්න යන්නේ අපි අපේ ෆයිල් එක compile කරන එක. compile කරන එකෙන් වෙන්නේ අපේ code එකේ කෙහේ හරි වැරද්දක් තිබ්බොත් ඒක comand prompt එකේ display
      කරන එක වැරද්දක් නැත්තම් කිසි ප්‍රශ්නයක් නෑ ඒ කියන්නේ compile errors නෑ කියන එකයි.

      • දැන් compile කරන්න මේ command එක ටයිප් කරන්න.
        gcc -o first(first වෙනුවට ඔයාලට කැමති ඕනම නමක් දෙන්න පුලුවන්) First.c
        C:\Users\User\Desktop>gcc -o first First.c

      පස්වන පියවර -: compile errors නැත්තම් දැන් ඔයාලට First.c ෆයිල් එක run කරන්න පුලුවන්. run කරද්දි එන errors වලට කියන්නේ runtime errors කියලා

      • දැන් run කරන්න මේ command එක ටයිප් කරන්න.
        C:\Users\User\Desktop>first

      අපි මේ කලේ සරල C programm එකක් windows වල run කරපු එකයි. අපි දැන් මෙතෙක් කරපු සාරාංශය බලමු.

      සාරාංශය

      • Desktop එකේ New Text Document එකක් හදලා ඒ ෆයිල් එක rename කරන්න First.c විදිහට.

      • First.c උඩ ඩබල් ක්ලික් කරලා මේ code එක ලියලා ෆයිල් එක save කරන්න.

      #include<stdio.h>
      
      int main(void)
      { 
          printf("Hello World");
      
          return 0;
      }	
      
      • comand prompt එක open කරලා මේවා පිලිවෙලට run කරන්න
      C:\Users\User>cd Desktop
      C:\Users\User\Desktop>gcc -o first First.c
      C:\Users\User\Desktop>first
      

      වැඩිදුර කරුණු

      ඔබට කැමති තරම් printf(); ප්‍රමාණයක් ටයිප් කරන්න පුලුවන්. වචන පහලින් පහලට ලිවීමට අවශ්‍ය නම් \n සංකේතය ඔබට වෙන්කිරීමට අවශ්‍ය ස්තානයට යොදන්න
      උදා -:

      printf("Hello World \n");
                           ^
      printf("Hello \n World");
                     ^
      

      output -:

      Hello World
      Hello
      World
      

      ඔබට අවශ්‍යනම් ඔබේ බ්‍රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්

      • https://www.onlinegdb.com/online_c_compiler
      • https://www.tutorialspoint.com/compile_c_online.php
      • https://repl.it/languages/c

      සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site දෙකත් මන් දාන්නම්

      • https://www.geeksforgeeks.org/c-programming-language/
      • https://www.tutorialspoint.com/cprogramming/index.htm

      මේකේ අඩුපාඩු තියෙනවනම් ඒවා නිවැරදි කරගන්න මට උදව් කරන්න කියලා කාරුණික ඉල්ලීමක් කරනවා. මේ article එක ඉස්සරහට කරන් යන්න ඕනනම් පහලින් කමෙන්ට් එකක් දාන්න. ජය වේවා!

      posted in Blogs
      Kalana
      Kalana
    • RE: lanka developers Mug

      good idea

      posted in Comments & Feedback
      Kalana
      Kalana
    • RE: PIXY (Version 1.1) now available!

      Congratulations brother. Good work!

      posted in Mobile Application Development
      Kalana
      Kalana
    • C Programming මුල සිට ඉගෙනගනිමු (part 2 - Variables)

      සුබ දවසක් ඔයාලට. අපි අද ලෑස්ති වෙන්නේ තවදුරටත් C පිළිබඳ ඉගෙනගන්න. කලින් පෝස්ට් එකේදි මන් ඔයාලට කියලා දුන්නා C වල origin එකයි කොහොමද C programm එකක් code කරන එකයි.

      අද මන් බලාපොරොත්තු වෙන්නේ C programming වල එන variables ගැනයි ඒවා ක්‍රියාත්මක වෙන විදිහයි කියලා දෙන්න.

      Variables (විචල්‍යයන්)

      • සාමාන්‍ය සිංහල විව්‍යහාරයේදී variable එකක් නැත්තම් විචල්‍යයක් කියලා කියන්නේ යම් කිසි දත්තයක් ගබඩා කරගත් හැකි දෙයකටයි.
      	උදා -:   x = 10 (මෙතන variable එක x වන අතර දත්තය 10 වේ)
      	          apples = 5
      		  උස = 172.5 cm
      		  name = john
      
      • මෙම variables වලයි C programming වල එන variables වලයි ලොකු වෙනකක් නෑ. C programming වල variable එකක් කියන්නේ යම්කිසි programm එකක් භාවිතා කර
        දත්තයක් ගබඩා කල හැකි memory location එකක්.

      • විශේෂත්වය වන්නේ අපේ variable එක අපි විශේෂ කරලා පෙන්නන්න ඕනා එය පූර්ණ සංඛ්‍යාවක්ද, දශම සංඛ්‍යාවක්ද නැත්නම් සංඛ්‍යාත්මක නොවන දෙයක්ද වන බව. එනම් අපි C වල variable වර්ග
        තුනක් ගැන කතා කරනවා

          1. Integers(පූර්ණ සංඛ්‍යා)  - short    --> -32,768 සිට 32,767 දක්වා සංඛ්‍යා ගබඩා කර ගත හැකිය.
          		              - int      --> -2,147,483,648 සිට 2,147,483,647  දක්වා සංඛ්‍යා ගබඩා කර ගත හැකිය.
          			      - long int --> -9223372036854775808 සිට 9223372036854775807 දක්වා සංඛ්‍යා ගබඩා කර ගත හැකිය.
          
          2. Real Numbers(දශම සංඛ්‍යා)  - float      --> 1.2E-38 සිට 3.4E+38 දක්වා සංඛ්‍යා ගබඩා කර ගත හැකිය.
          				 - double      --> 2.3E-308 සිට 1.7E+308 දක්වා සංඛ්‍යා ගබඩා කර ගත හැකිය.
          				 - long double --> 3.4E-4932 සිට 1.1E+4932 දක්වා සංඛ්‍යා ගබඩා කර ගත හැකිය.
          						
          3. Characters(සංඛ්‍යාත්මක නොවන) - char --> 'k', 'a', '@', '+' වැනි දෑ
        
      • variable වර්ග ගණනාවක් තිබුනත් අපි ගොඩක් අවස්තා වලදී පාවිච්චි කරන්නේ int, float, double, char වර්ග පමණි

      මේ ගැන වැඩි විස්තර දැන ගැනීමට අවශ්‍ය නම් මේ ලින්ක් එකට ගිහින් බලන්න --> https://www.tutorialspoint.com/cprogramming/c_data_types.htm

      • අපි දැන් කතා කලා variable එකක් විශේෂ කරන්නේ කොහොමද කියලා. අපි දැන් කරන්න හදන්නේ variable එකක් ලිවීමේදී අනුගමනය කල යුතු නීති.
      	වැරදි											නිවැරදි
      int mymarks						      				int myMarks හෝ int my_marks
      
      int 3cars (සංඛ්‍යාවකින් variable එකක් ආරම්භ කල නොහැක)			        int cars3
      
      int my car(වචන අතර හිස්තැන් තිබිය නොහැක)					int my_car හෝ int myCar
      
      int float, int return C වල භාවිතා වන වචන ලිවීමට නොහැක
      
      විරාම ලකුණු භාවිතා කල නොහැකිය. (underscore(_)) එක හැර.
      

      තවද int Mark හා int mark යනු එකක් නොවේ variable වර්ග දෙකකි.

      දැන් අපි variables භාවිතා කරලා programm එකක් ලියමු.

      #include<stdio.h>
      
      int main(void){ 
      	// මෙම ඇල ඉරි දෙකෙන් සිදුවන්නේ මම මේ ලියන එක කමෙන්ට් එකක් ලෙස දිස් වීමයි. programm එක run කරන විට මේ කමෙන්ට්ස්  run නොවේ. 
      	
      	int age = 23;
      	float price = 10.50;
      	char letter = 'a';        //char variable එකක් භාවිතා කරන විට තනි කොමා යටතේ වචන ලිවිය යුතු වේ. නමුත් මෙමගින් ලිවිය හැක්කේ එක් අකුරක් පමණි
      	char name[20] = "Kalana"; //මෙම char variable එක මගින් අකුරු  එකකට වඩා ලිවිය හැකිය. ඔබට ලිවීමට අව්ශය අකුරු ගණන ඉලක්කමෙන් කොටු වරහන් තුල දැක්විය යුතුය.
      	
      	//අපි දැන් මේ ඉලක්කම් printf කිහිපයක් මගින් output කරමු.
      	
      	printf("Age is = %d    \n", age);    //%d යනු int variable එකේ අගය display කරන නිරූපකයයි.
      	printf("Price is = %f  \n", price);  //%f යනු float variable එකේ අගය display කරන නිරූපකයයි.
      	printf("Letter is = %c \n", letter); //%c , %s යනු char variable එකේ අගය display කරන නිරූපකයයි.
      	printf("Name is = %s \n", name);
      	
      	/*
      	පේලි එකකට
      			වඩා
      				කමෙන්ට් කල හැකිය
      	*/
      	
      	return 0;
      }	
      

      මේ code එක run කලාම අපිට ලැබෙන output එක වන්නේ.
      0_1574327704026_C programm1.PNG

      C programm එකක් windows වල run කරන විදිහ මන් කලින් ලිපියේ සදහන් කලා --> https://bit.ly/2O6rLXR

      අමතර දැනුම

      • // -: මෙම ලකුණින් කියවෙන්නේ එක් පේලියක් කමෙන්ට් කිරීමට හැකි බවයි.
      • /* */ -: මෙම ලකුණින් කියවෙන්නේ පේලි එකකට වඩ කමෙට් කල හැකි බවයි.
      • float වලදී ඔබට ආසන්න දශම ස්තාන දෙකකට තිබීමට අවශ්‍යනම් %0.2f යොදන්න.

      සාරාංශය

      • C programm වල අප වැඩි වශයෙන් භාවිතා කරන variable types වන්නේ int, float, double, char වේ.

      • C programm වල නිවැරදිව variable ලියන ආකාරය අපි ඉගෙනගත්තා

      • මේ තියෙන්නේ අපි උදාහරණයක් වශයෙන් ගහපු code එක

      #include<stdio.h>
      
      int main(void){ 
      	
      	int age = 23;
      	float price = 10.50;
      	char letter = 'a'; 		
      	char name[20] = "Kalana";
      	
      	printf("Age is = %d    \n", age);
      	printf("Price is = %0.2f  \n", price);
      	printf("Letter is = %c \n", letter);
      	printf("Name is = %s \n", name);
      	
      	return 0;
      }	
      
      • C programm එකක් windows වල run කරන විදිහ --> https://bit.ly/2O6rLXR

      ඔබට අවශ්‍යනම් ඔබේ බ්‍රව්සර් එක හරහා online C programms run කරන්න පුලුවන්. එහෙම කරන්න පුලුවන් ලින්ක්ස් මන් පහතින් දාන්නම්

      • https://www.onlinegdb.com/online_c_compiler
      • https://www.tutorialspoint.com/compile_c_online.php
      • https://repl.it/languages/c

      සරලව මුල ඉදන් C programming ඉගෙන ගන්න පුලුවන් හොදම site දෙකත් මන් දාන්නම්

      • https://www.geeksforgeeks.org/c-programming-language/
      • https://www.tutorialspoint.com/cprogramming/index.htm

      මන් ඊළඟ ලිපියෙන් මේ variables අතර සිද්ධ වෙන operations(+, -, /, *) ගැන කියලා දෙන්නම්.

      මම දාන ලිපි කෙටි වැඩීනම් පහලින් කමෙන්ට් එකක් දාන්න. තව අඩු පාඩු තියෙනවනම් ඒවත් දාන්න.

      posted in Blogs
      Kalana
      Kalana
    • 1
    • 2
    • 1 / 2