Community project by students of the Faculty of Information Technology, University of Moratuwa, Sri Lanka.

7.3.1 ගැටලු විසඳීම සඳහා ඇල්ගොරිතම යොදා ගැනීම හා ගැලීම් සටහන් ඇඳීම (Problem solving using Algorithms and Flowcharts)

 

ඔබ ස්වයංක්‍රීය ටේලර් යන්ත්‍රයක් මගින් යම් කෙනෙකු මුදල් ලබාගන්නා ආකාරය නිරීක්ෂණය කර තිබේද?එහිදී අනුගමනය කරන පියවර සිහියට නගන්න .
පළමුව අප මුදල් ලබාගැනීම ආරම්භ කිරීම සඳහා අපගේ ටේලර් කාඩ් පත යන්ත්‍රයට ඇතුලත් කල යුතුයි.  දෙවනුව අප අපගේ රහස් අංකය ඇතුලත් කල යුතුයි. රහස් අංකය වැරදි නම් අපට එතනින් ඉදිරියට යන්නට නොහැකි වන අතර නැවත රහස් අංකය නිවැරදිව ඇතුලත් කරන්නට අවස්ථාවක් ඔබට ලැබෙනවා. ඉන්පසු අප තිරයේ දිස්වෙන විකල්පයන් අතුරින් එක් විකල්පයක් තෝරාගන්නවා. මෙහිදී නම් “මුදල් ආපසු ගැනීම” යන පියවර තෝරාගන්නවා. එවිට අපට ලබාගත යුතු මුදල් ප්‍රමාණය සටහන් කිරීමට සිදුවෙනවා. අනතුරුව, එම ප්‍රමාණය නිවැරදි දැයි නැවත පරීක්ෂා කර නැවත ගනුදෙනුවක් කිරීමට අවශ්‍ය නැත්නම් අපට අපගේ කාඩ් පත සහ මුදල් ලැබෙනවා.
දැන් බලන්න, මුදල් ලබාගන්න අපට පියවර කීයක් පසු කරන්නට සිදු වුනාද? මෙහිදී විස්තර කර ඇත්තේ මුදල් ලබාගත හැකි එක සරල ආකාරයක් පමණයි. මෙවැනි පියවර අනුපිළිවෙලක් අපට ක්‍රමවේදයක් ලෙස හදුන්වන්නට පුළුවනි. එසේම, එකම ගැටළුවක් විසඳීම සඳහා ක්‍රමවේදයන් කීපයක් තිබෙන්නටත් පුළුවනි.  මෙම පාඩමෙන් ඉදිරිපත් කරන ඇල්ගොරිතම ලෙස හඳුන්වන්නේ ද මෙවැනි ක්‍රමවේදයක් වේ. මෙම පාඩමේදී  ,ඇල්ගොරිතම යනු මොනවාද , ඇල්ගොරිතම ලියා දක්වන ආකාර මොනවාද ,  එසේ ලියා දක්වන ආකාරය සහ ගැටළුවක් විසඳීම සඳහා අනුගමනය කරන්නට අවශ්‍ය පියවර මොනවාද යන කරුණු  සලකා බලමු.
 

ඇල්ගොරිතමයක් (Algorithm) යනු කුමක්ද?

ඇල්ගොරිතම යනු ගැටළු විසඳීම සඳහා අනුගමනය කරන ක්‍රමවේදයකි. එය පියවරෙන් පියවර ගැටලුව විසඳන ආකාරය විදහා දක්වයි. ඇල්ගොරිතම ලිවීම සඳහා විශේෂිත පරිගණක භාෂාවන් අවශ්‍ය නොවේ. ඒවා සාමාන්‍ය ඉංග්‍රීසි භාෂාවෙන්ම ලිවිය හැක. ඇල්ගොරිතම ආශ්‍රයෙන් අපට පහසුවෙන් ගැලීම් සටහන් (Flowcharts), පරිගණක ක්‍රමලේඛ (computer programs) ලිවිය හැක.

 

ගැටළුවක් විසඳීමේ අදියර.
  1. ගැටලුව විශ්ලේෂණය කිරීම.
  2. ගැටලුව සඳහා ඇල්ගොරිතම ගොඩනැගීම.
  3. පරිගණක ක්‍රමලේඛය සැකසීම.
  4. පරිගණක ක්‍රමලේඛයෙහි ඇති දෝෂ හඳුනාගැනීම, නිවැරදි කිරීම සහ ක්‍රියාත්මක කිරීම.
දැන් අප ගැටළුවක් විසඳීමේ අදියර 4 පියවරෙන් පියවර බලමු.

 

1. ගැටලුව විශ්ලේෂණය කිරීම.

ගැටලුව විශ්ලේෂණය කිරීමේදී ආදාන (input), ප්‍රතිදාන (output) සහ ක්‍රියාවලිය (process) පිළිබඳව අවබෝධයක් තිබිය යුතුය.

උදාහරණය: සංඛ්‍යා 3ක සාමාන්‍ය යේ  අගය සෙවීම.

      ආදාන (Inputs)             : පළමු සංඛ්‍යාව, දෙවන සංඛ්‍යාව සහ තෙවන සංඛ්‍යාව

      ක්‍රියාවලිය (Process)   : සංඛ්‍යා තුනේ එකතුව / 3

      ප්‍රතිදානය (Output)       : සාමාන්‍යය

2. ගැටලුව විසඳීම සඳහා ඇල්ගොරිතම ගොඩනැගීම

ඇල්ගොරිතම රූපමය (Graphically) ආකාරයෙන් හෝ ලිඛිත (Text) ආකාරයෙන් දැක්විය හැක. රූපමය ආකාරයෙන් දැක්වීමේදී ඒවා ගැලීම් සටහන් (Flowcharts) ලෙසත්, ලිඛිත ආකාරයෙන් දැක්වීමේදී ඒවා කල්පිත ක්‍රමලේඛ හෝ ව්‍යාජ කේත (Pseudo codes) ලෙසත් හැඳින්වේ.

ඇල්ගොරිතම ලිඛිත ආකාරයෙන් දැක්වීම 

                  Algorithm:
                     Enter the first number
                     Enter the second number
                     Enter the third number
                     Average = ( first number + second number + third number ) / 3
                     Display the Average

ඇල්ගොරිතම රූපමය ආකාරයෙන් දක්වන අයුරු අප පසුව පහත එන “ගැලීම් සටහන් ඇදීම” යන මාතෘකාව යටතේ බලමු.

3. පරිගණක ක්‍රමලේඛය සැකසීම

මෙහිදී ඇල්ගොරිතමය පරිගණක භාෂාවක් ආකාරයෙන් ලිය දැක්වීම සිදු කරනු ලබයි.

4. පරිගණක ක්‍රමලේඛයෙහි ඇති දෝෂ හඳුනාගැනීම, නිවැරදි කිරීම සහ ක්‍රියාත්මක කිරීම.

පරිගණක ක්‍රමලේඛයෙහි දෝෂ ඇතිදැයි පරීක්ෂා කර, වැරදි තිබේනම් මෙම පියවරේදී ඒවා නිවැරදි කරනු ලැබේ. මෙම ක්‍රියාවලිය debugging ලෙස හඳුන්වයි.

ගැලීම් සටහන් ඇදීම


ක්‍රමලේඛයක ක්‍රියාකාරිත්වය අනුපිළිවෙළින් දැක්වෙන රෑපමය නිරෑපණයක් ගැලීම් සටහනක් ලෙස හඳුන්වයි. එවැනි ගැලීම් සටහනක් දත්ත ගලා යන ආකාරයත්, ඒවා යම් යම් ක්‍රියාකාරකම් වලට භාජනය වන ආකාරයත් පෙන්නුම් කරයි. ඒ එක් එක් ක්‍රියාකාරකම් විවිධාකාර සංකේත මගින් පෙන්වනු ලැබේ.


ගැලීම් සටහන් ඇඳීම සඳහා භාවිතා කරන ප්‍රධාන සංකේත 

 
ආරම්භය/අවසානය 

 

ගැලීම් සටහනක ආරම්භය සහ අවසානය පෙන්වීම සඳහා මෙම සංකේතය භාවිතා කරයි.
 
සැකසුම 

 

දත්ත සැකසීමේ ක්‍රමයක් පෙන්වීමට මෙම සංකේතය භාවිතා කරයි.
 
ආදාන/ප්‍රතිදාන

 

දත්ත ආදානය සහ ප්‍රතිදානය පෙන්වීමට මෙම සංකේතය භාවිතා කරයි.
 
තීරණ ගැනීම

 

තීරණ ගැනීම නිරුපණය කිරීම සඳහා මෙම සංකේතය භාවිතා කරයි.
 
අනු සැකසුම 

 

ප්‍රධාන සැකසුමකට පරිබාහිරව සිදුවන ඊට අදාළ වෙනත් සැකසුම් නිරුපණය කිරීම සඳහා මෙම සංකේතය භාවිතා කරයි. 
 
සම්බන්ධක 

 

ගැලීම් සටහනක කොටස් සම්බන්ධ කරගැනීම නිරුපණය කිරීම සඳහා මෙම සංකේතය භාවිතා කරයි. 
 
දත්ත ගලා යාම 

 

දත්ත ගලා යාම නිරුපණය කිරීම සඳහා මෙම සංකේතය භාවිතා කරයි. 
 

අනුක්‍රම  (Sequence)

 
එක් පියවරකට පසු තවත් පියවරක් වශයෙන් රේඛීය ශ්‍රේණියක ආකාරයට සිදුවන ක්‍රියාවලි අනුක්‍රම ගැලීම් සටහන් අනුසාරයෙන් විස්තර කල හැක. 
 
උදාහරණය: සංඛ්‍යා 2ක එකතුව ලබාගැනීම සඳහා ගැලීම් සටහන 
 
Algorithm:
                     Enter the first number
                     Enter the second number
                     Add first number and second number
                     Display total

වරණය (Selection)

 
යම්කිසි කොන්දේසියකට (condition) අනුව විකල්ප පියවර (alternative steps) සහිත ක්‍රියාවලි වරණ ගැලීම් සටහන් අනුසාරයෙන් පෙන්විය හැක. If – then – else ක්‍රියාකාරීත්වය මගින් තීරණ ගැනීමක් නිරුපණය කල හැක.එහිදී තෝරාගැනීම සිදුවන්නේ විකල්ප දෙකක් අතුරින්ය. If – then – else හි අදහස වන්නේ “එසේ නම් මෙසේ සිදු වේ . එසේ නොවේ නම් මෙසේ සිදු වේ” යන්නය.
උදාහරණය:උදැසන ආහාරය මිලදී ගන්න විට ඉදි අප්ප නොමැතිනම් පාන් හෝ වෙනත් ආහාරයක් මිලදී ගැනීම , එකිනෙකට වෙනස් සංඛ්‍යා දෙකක් ලබාගෙන ඒවායින් විශාලතම සංඛ්‍යාව ප්‍රතිදානය කිරීම .
Algorithm:
                     Enter student index number
                     Enter marks obtained by student
                     If mark is less than 50 
                                  Then display index number and “Fail”
                                  Else display index number and “Pass”

උදාහරණය: සිසුවෙකුගේ හැඳුනුම් අංකය සහ ලකුණු ආදානය කර සිසුවාගේ ශ්‍රේණිය තීරණය කිරීම 

Algorithm:
                     Set variable grade (to empty)
                     Enter student index number
                     Enter marks obtained by student
                     If mark is less than 25 
                          Then set variable grade = “F” 
                           Else if mark is between 50 and 25 
                                Then set variable grade = “C” 
                                Else if mark is between 75 and 50
                                      Then set variable grade = “B” 
                                      Else if mark is greater than or equal 75
                                           Then set variable grade = “A” 
                    Display index number and grade

 

ගැලීම් සටහන් සඳහා සම්බන්ධක යොදාගන්න ආකාරය 

 
ගැලීම් සටහනක් දිගින් වැඩි වූ විට හෝ ගැලීම් සටහන පිටුවක් අවසානයේදී අනික් පිටුව සමග සම්බන්ධ වන බව දැක්වීමට අවශ්‍ය වූ විට අපට සම්බන්ධක යොදාගත හැක.

සම්බන්ධක කුඩා වෘත්ත මගින් නිරුපනය කරයි. මෙම වෘත්ත තුල ඉංග්‍රීසි අක්ෂර හෝ අංක ලිවීම මගින් එකිනෙක සම්බන්ධ වන (joining) වෘත්ත/සම්බන්ධක හඳුනා ගැනේ.

 



Iterations (නැවත නැවත සිදුවන පියවර සහිත ක්‍රියාවලි )

අවශ්‍ය අරමුණට ලගාවන  තෙක් , එකම පියවර අපට නැවත නැවත සිදු කිරීමට සිදුවන අවස්ථාවන් සැබෑ ලෝකයේදී බහුලව දැකගත හැක. සරල උදාහරනයක් ලෙස මිරිස් ඇඹරීම සැලකිය  හැක.අවශ්‍ය පාඩම ලැබන තෙක් එකම ක්‍රියාවලිය නැවත නැවත සිදු වේ. ඉහත උදහාරණයට අනුව ,ටේලර් යන්ත්‍රයකට වැරදි රහස් අංකයක් ඇතුලත් කල විට නැවත එම අංකය ඇතුලත් කරන්නට සිදුවූ අවස්ථාවත් ගත හැක. එබැවින් මෙසේ නැවත නැවත (repeatedly) සිදුකල යුතු පියවර ඇල්ගොරිතම වලදී  Iterations/Loops ලෙසින් නිරුපණය කෙරේ.

Iterations ආකාර දෙවර්ගයක් තිබේ. While සහ for loop වශයෙනි. While loops යනු යම් condition එකක් සත්‍ය වී තිබෙන අතරතුරදී (while) ක්‍රියාත්මක වන loops වන අතර for loops යනු යම් condition එකක් සත්‍ය වන තෙක් (until) ක්‍රියාත්මක වන loops වේ.ඔබට තවම ඒ දෙකෙහි වෙනසක් වැටහෙන්නේ නැති නම් පහත උදාහරණ සලකන්න.


පහත පෙන්වන්නේ සාමාන්‍යයෙන් While සහ For Loops නිරුපණය කරන ආකාරයයි. මේ දෙකම එක සමාන කර්තව්‍යක් ඉටු කරන අතර ප්‍රධාන වෙනස වන්නේ අප iterations සංඛ්‍යාව දන්නා විට for loop භාවිතා කරන අතර එසේ නොදන්නා අවස්ථාවන්හිදී while loops භාවිතා කෙරේ.


While loop: මෙහිදී condition එක true නම් ඊලග පියවරයන්  සිදු කෙරෙන අතර false නම් එම පියවරයන් සිදු නොවී while loop එකෙන් ඉවත් වී ඉතිරි පියවර ක්‍රියාත්මක වේ.


For Loop: මෙහිදී control_variable එකක් ලෙස for loop එක පාලනය කිරීමට විචල්‍යයක් (variable) බොහෝවිට භාවිතා කරනු ලබයි. එම විචල්‍යයට පටන් ගැන්මේදී යම්කිසි ආරම්භක අගයක් නියම කරන අතර සෑම iteration එකකදීම එම විචල්‍යය යම්කිසි ප්‍රමාණයකින් අඩු හෝ වැඩි කිරීම මගින් එහි අගය වෙනස් කල හැක. මෙසේ එම control_variable එකේ අගය අපට අවශ්‍ය අගයට (end value) පැමිණෙන තාක් for loop එක තුල ඇති පියවර යන් ක්‍රියාත්මක වේ. control_variable එක end value එකට වඩා වැඩි වූ සැනින් (හෝ මෙහිදී නම් සමාන වූ විට) condition එක false වීම නිසා loop එක අවසන් වේ.

උදාහරණය: සංඛ්‍යා  පහක් ආදානය කර ගෙන ඒවායේ එකතුව ප්‍රතිදානය කිරිම. (While loop ආධාරයෙන්)


උදාහරණය: 1 සිට 100 දක්වා සංඛ්‍යා ප්‍රතිදානය කිරීම. (For loop ආධාරයෙන්)



හොඳින් බැලුවහොත් ඉහත ගැලීම් සටහන් දෙකෙහිම කැපී පෙනෙන වෙනසක් නැති බව ඔබට වැටහෙනු ඇති. මුල් ගැලීම් සටහනේ count ලෙසින් විචල්‍යයක් තබාගෙන එය එක් iteration එකකදී 1 බැගින් ඉහල දමමින් loop එක ක්‍රියාත්මක වේ. දෙවන ගැලීම් සටහනේදීද number විචල්‍යය ඉහල දැමීම මගින් loop එක ක්‍රියාත්මක වේ. ඇත්තෙන්ම ගැලීම් සටහන් මගින් මෙම loops වර්ග 2හි වෙනස පැහැදිලිව පෙන්වීම තරමක් අපහසු වුවත්, ඉදිරියේදී එන පාඩම් වලදී පරිගණක ක්‍රමලේඛන (computer programs) ලියන විට ඔබට එය පැහැදිලිව තේරුම් ගත හැකි වනු ඇත.

The following two tabs change content below.

Paba

Latest posts by Paba (see all)

Comments
  1. nalin
  2. samanthi
  3. Manoj
  4. Hiruth D.Nanayakkara
  5. Thushantha

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.