புரோகிராமிங் என்றால் என்ன? தொடர் 6
Algorithm (அல்காரிதம்) என்றால் என்ன?
ஒரு Problem முக்கு நாம் எப்படி Solution கொடுக்கப் போகிறோம் என்கிற விவரத்தை step by step களாக எழுதுவதையே Algorithm என்கிறோம். எனவே நாம் எழுதும் step கள் அனைத்தும் ஒழுங்கான order ல் தெளிவாக இருக்க வேண்டும். அதாவது logic சரியாக இருக்கவேண்டும்.
Algorithm மானது Sequence, Selection, and Repetition என்கிற method களில் எழுதப்படுகிறது.அவை ஒவ்வொன்றையும் இங்கே நாம் பார்ப்போம்.
1. Sequential Control Algorithm
Sequential Control Algorith தத்தில் எழுதப்பட்ட step கள் அனைத்தும் எழுதப்பட்ட வரிசையில் execute செய்யப்படும். அதாவது அனைத்து step களும் ஒரேயொரு முறை execute செய்யப்படும்.
இரண்டு எண்களை கூட்டி விடையை காண்பிக்க Sequential Control முறைப்படி ஒரு Algorithm எழுத முடியும். அந்த Algorithm எப்படி இருக்கும் என்பதை இங்கே கவனியுங்கள்...
1. முதல் எண்ணை வாங்கவேண்டும்
2. இரண்டாம் எண்ணை வாங்கவேண்டும்
3. முதல் எண்ணையும் இரண்டாம் எண்ணையும் கூட்ட வேண்டும்
4. கூட்டி வந்த விடையை காட்ட வேண்டும்
இந்த Alogrith தத்தில் 4 step கள் எழுதப்பட்டுள்ளன. மேற்கண்ட step களை எழுதப்பட்ட வரிசையில் ஒரு தடவை செயல்படுத்தினாலே விடை கிடைத்துவிடும். இதைத்தான் Sequential control Algorithm என்கிறோம்.
இங்கே நாம் ஒன்றை கவனிக்கவேண்டும். அதாவது இந்த Algorithm தமிழில் எழுதப்பட்டுள்ளது. இப்படி மனித மொழியில் எழுதுவதை Pseudo code என்று சொல்கிறோம். இதுமட்டுமல்லாமல் நமது Algorith தத்தை வடிவங்கள் மூலமாகவும் (graphical representation) விவரிக்க முடியும். இதைத்தான் flowchart என்று கூறுகிறோம்.
Pseudo code (ஸூடோகோட்) என்றால் என்ன?
மனிதர்களுக்கு (கவனிக்கவும் கம்ப்யூட்டருக்கு அல்ல) விளங்கக்கூடிய முறையில் விளக்கமாக High level language ல் Algorithm எழுதுவதை Pseudo code என்கிறோம். எனவே Computer க்கு புரியும் மாதிரி எழுதும் Program ல் இருப்பது போன்று variable declaration, syntax, subroutine எல்லாம் Pseudo code ல் இருக்காது.
நீங்கள் algorithm சம்பந்தப்பட்ட புத்தகங்களை படித்தீர்களானால் இந்த முறையில் தான் Program கள் எழுதப்பட்டிருக்கும். அவற்றை உங்களுக்கு விருப்பமான மொழியில் (c, vb, java, Delphi) Programming command டுகளாக மாற்றி எழுதிக்கொள்ளலாம்.
ஒரு Program எழுதி அதை எழுதச்சொன்னவருக்கு புரியவைப்பதை விட Pseudo code ன் வாயிலாக எளிதில் புரியவைத்துவிடலாம். Algorith தத்தை Pseudo code ல் எழுதும் போது program symbol களையும் இணைத்து எழுதலாம். அதை இங்கே பார்ப்போம்...
1. READ first number
2. READ second number
3. COMPUTE Total = first number + second number
4. DISPLAY Total
இங்கே READ, COMPUTE, DISPLAY ஆகியவை Program symbol ஆகும்.
Flowchart என்றால் என்ன?
நமது Algorith தத்தை வடிவங்கள் மூலமாக (graphical representation) குறிப்பிடுவதைத்தான் flowchart என்று கூறுகிறோம்.
நமது Algorith தத்தை வடிவங்கள் மூலமாக (graphical representation) குறிப்பிடுவதைத்தான் flowchart என்று கூறுகிறோம்.
விளங்கும்படி சொல்வதானால் வீடு கட்ட engineer போட்டுத்தரும் blue print plan போன்றதுதான் இந்த flowchart. அந்த கட்டிட பிளானை பார்த்தாலே நமக்கு வீடு எப்படி இருக்கப்போகிறது என்பது விளங்கும். இந்த பிளானை (வடிவங்களின் அர்த்தம் தெரிந்த) எந்த ஒரு மனிதரும் புரிந்து கொள்ளமுடியும். பிரச்சனைகளை எளிதாக கண்டுபிடித்துவிட முடியும். வாசற்படியை இங்கே வையுங்கள்; ஒரு ஜன்னல் போதாது; மாடிப்படியை காணோம் என்று பிரச்சனைகளை கண்டுபிடித்து விடலாம்.
Flowchart ல் ஒவ்வொரு step or process ம் ஒரு கட்டத்தில் குறிப்பிடப்பட்டிருக்கும். இரு கட்டங்களுக்கிடையில் உள்ள அம்புக்குறி அவையிரண்டுக்கும் இடையில் data flow எப்படி நடக்கிறது என்பதை விவரிக்கும். மேற்கண்ட Algorith தத்தை flowchart ல் இப்படி எழுதலாம்.
2. Selection control Algorithm
Selection Control Algorith தத்தில் step கள் பல கிளைகளாக எழுதப்பட்டிருக்கும். அவற்றில் ஏதேனும் ஒரு கிளையில் எழுதப்பட்ட step கள் மட்டும் எழுதப்பட்ட வரிசையில் execute செய்யப்படும்.
அதாவது சில வேளைகளில் சூழ்நிலைகளுக்கு தகுந்தவாறு காரியங்களை நாம் செய்ய நேரிடும். உதாரணத்திற்கு அம்மா அரிசி வாங்கி வர சொல்கிறார் என்று வைத்துக் கொள்வோம். நமது Algorithm எப்படி இருக்கும்?
1. வீட்டை விட்டு புறப்பட்டு வெளியே போகிறோம்
2. தெருவில் இறங்கி நடக்கிறோம்
3. கடைக்கு போய் அரிசி வாங்குகிறோம்
4. திரும்பி வீட்டுக்கு வருகிறோம்
இது இன்னமும் Sequential control Algorithm ஆகத்தான் இருக்கிறது.
சரி. கடைக்கு போகும் வழியில் எதிரே நண்பர் வந்துவிட்டார் என்று வைத்துக்கொள்வோம். நமது algorithm எவ்வாறு மாற்றப்படுகிறது என பாருங்கள்.
1. வீட்டை விட்டு புறப்பட்டு வெளியே போகிறோம்
2. தெருவில் இறங்கி நடக்கிறோம்
3. எதிரே வந்த நம் நண்பர் அவர் வீட்டுக்கு நம்மை அழைக்கிறார்
4. போகிறதா வேண்டாமா என்று முடிவெடுக்க வேண்டிய சூழ்நிலை
இங்கே sequential control algorithm வேலை செய்யாது. ஏனெனில் decision எடுக்கவேண்டிய சூழ்நிலை. Decision எடுத்தால் இரண்டில் ஒன்றுதான் சாத்தியப்படும். ஒன்று அவர் வீட்டுக்கு போகவேண்டும்; இல்லை போகக்கூடாது. என்ன செய்வது? நமது மூளை இப்போது Selection control algorithm போட்டு அதன்படி வேலைசெய்கிறது. விளைவு? 4 வது step இரு பிரிவுகளாக பிரிக்கப்படுகிறது.
4.1. அவர் வீட்டுக்கு போகலாமா? என்ற கேள்வியை தயார் செய்கிறது.
4.2. போகலாம் என்று பதில் கிடைத்தால் அதை செயல்படுத்த அவர் வீட்டுக்கு போகச்சொல்லி ஒரு பக்கம் algorithm எழுதுகிறது.
4.3. போகவேண்டாம் என்று பதில் கிடைத்தால் அதை செயல்படுத்த அவர் வீட்டுக்கு போகவேண்டாம் என்று மறுபக்கம் இன்னொரு algorithm எழுதுகிறது.
5. அடுத்து கடைக்கு போய் அரிசி வாங்கிக்கொண்டு வீட்டுக்கு திரும்புகிறோம்.
மேலை உள்ள algorithm இரு வகையில் செயல்படும் வண்ணம் வடிவமைக்கப்பட்டுள்ளதை நீங்கள் காணலாம்.
முதல் வகை: நண்பர் வீட்டுக்கு செல்லுதல்
Execution Order is 1, 2, 3, 4.1, 4.2, 5
இரண்டாம் வகை: நண்பர் வீட்டுக்கு செல்லவில்லை
Execution Order is 1, 2, 3, 4.1, 4.3, 5
இன்னொரு உதாரணம்: இரண்டு எண்களில் எது பெரியது என்பதை கண்டுபிடிக்க Algorithm எழுதப்பட்ட முறையை கவனியுங்கள்.
1. முதல் எண்ணை வாங்கவேண்டும்
2. இரண்டாம் எண்ணை வாங்கவேண்டும்
3. இரண்டு எண்களில் எது பெரியது என்பதை காட்ட வேண்டும்
இதை Pseudo code ல் எழுதுவோமா?
1. READ first number
2. READ second number
3. DISPLAY biggest number
மேலே நாம் கண்ட algorithm மேலோட்டமாக சொல்லப்பட்டுள்ளது. அதாவது 1,2 ல் ஒன்றும் பிரச்சினை இல்லை. ஆனால் 3 ல் எழுதியுள்ள பெரிய நம்பரை எப்படி கண்டுபிடிக்கப்போகிறோம் என்பதை விளக்கமாக சொல்லவில்லை. இதை நாம் divide and conquer method பிரகாரம் சிறிய step களாக எழுதப்போகிறோம்.
1. READ first number
2. READ second number
3. IF First number is BIGGER THAN second number THEN
3.1 DISPLAY First number
ELSE
3.2 DISPLAY Second number
இரண்டு நம்பரில் பெரிய நம்பர் எதுவென்று கண்டுபிடிக்க Sequence Control Algorithm உதவாது. ஏனென்றால் இரண்டில் ஏதாவது ஒன்றுதான் பெரியதாக இருக்கமுடியும். இதுவா அல்ல அதுவா என்ற நிலை வரும்போது Selection Control Algorithm பயன்படுத்தப்படுகிறது.
மேலே உள்ள step 3 ல் உள்ள condition true என்றால் 3.1 step execute செய்யப்பட்டு 3.2 execute செய்யப்படாமல் Program முடிந்துவிடும்.
மேலே உள்ள step 3 ல் உள்ள condition false என்றால் 3.1 step execute செய்யப்படாமல் 3.2 execute செய்யப்பட்டு Program முடிந்துவிடும்.
3. Repetition control Algorithm
Repetition control Algorith தத்தில் எழுதப்பட்ட step கள் குறிப்பிட்ட எண்ணிக்கையில் திரும்ப திரும்ப execute செய்யப்படும்.
அதாவது சில வேளைகளில் ஒரே காரியத்தை திரும்ப திரும்ப செய்யும் சூழ்நிலை ஏற்படலாம். உதாரணத்திற்கு கோடைகாலம் வந்துவிட்டது, தெருவில் போகின்றவர்களுக்கு தாகம் தணிக்க வீட்டு வாசலில் ஒரு பானையில் தண்ணீரை வைத்துவிட்டு தாகம் என்று வருபவர்களுக்கு தண்ணீர் கொடு என்று அம்மா நம்மிடம் சொல்கிறார்கள் என்று வைத்துக் கொள்வோம். நமது Algorithm எப்படி இருக்கும்?
1. திண்ணையில் அமர்ந்து கொள்ளுதல்
2. தண்ணீர் கேட்டு வருபவருக்கு
3. குவளையை கழுவிவிட்டு தண்ணீர் முகர்ந்து கொடுப்பது
இது Sequential control method ல் எழுதப்பட்டுள்ளது. அடுத்து
4. தண்ணீர் கேட்டு வேறொருவர் வருகிறார்
5. குவளையை கழுவிவிட்டு தண்ணீர் முகர்ந்து கொடுப்பது
இதுவும் Sequential control method ல் எழுதப்பட்டுள்ளது. அடுத்து
6. தண்ணீர் கேட்டு வேறொருவர் வருகிறார்
7. குவளையை கழுவிவிட்டு தண்ணீர் முகர்ந்து கொடுப்பது
இதுவும் Sequential control method ல் எழுதப்பட்டுள்ளது. அடுத்து வேறொருவர் வருகிறார்.... இப்படியே 2 மற்றும் 3 வது step திரும்ப திரும்ப செயல்படுத்தப்படுகிறது. இப்போது 1000 நபர் வந்தால்.... அப்பப்பா நமது algorith தத்தில் 2001 step கள் தேவைப்படும்.
என்னங்க இப்படியே algorithm எழுதிக்கொண்டு போனால் இதற்கு ஒரு முடிவே இருக்காதே.... புரோகிராம் நீண்டு கொண்டே போகிறதே என்ன செய்வது என்று திகைக்கிறீர்கள்....
இங்குதான் repetitive control algorithm நமக்கு கைகொடுக்கிறது. ஆம்! நமது மூளையும் அந்த method ல் தான் algorithm எழுதுகிறது.
ஒரே செயலை திரும்ப திரும்ப செயல்படுத்த sequential control and selection control இரண்டுமே உதவாது. Repetitive control algorithm தான் சரிப்பட்டுவரும். இப்போது திருத்தப்பட்ட algorithm எப்படி இருக்கும் என்று பார்க்கலாம்.
1. திண்ணையில் அமர்ந்து கொள்ளுதல்
2. தண்ணீர் கேட்டு வரும் ஒவ்வொருவருக்கும்
3. குவளையை கழுவிவிட்டு தண்ணீர் முகர்ந்து கொடுப்பது
இங்கே 2 வது step ஐ சிறிது மாற்றிவிட்டால் எத்தனை பேர் வந்தாலும் தண்ணீர் கொடுக்க வேண்டும் என்று நமது program செயல்படும்.
இதை Pseudo code ஆக மாற்றுவோமா?
1. READY to serve
2. FOR EACH Person who ask water
3. WASH Tumbler
4. GIVE water
5. END FOR
Step 2 முதல் 5 வரை உள்ளதைத்தான் Loop (sequence of computer operations repeated until some condition is satisfied) என்று சொல்வார்கள்.
Flowchart shows repetitive control algorithm |
Algorithm, pseudo code, flowchart என்றால் என்னவென்பது இப்போது உங்களுக்கு விளங்கியிருக்கும் என நம்புகிறேன். அடுத்து Program எழுதவேண்டியதுதான் பாக்கி.அதை எழுத தேவையான basic elements அதாவது programming building blocks என்னென்னஎன்பதை அடுத்து பார்க்கலாம்...
No comments:
Post a Comment