ஒரு தேர்ந்த சமையல் கலைஞரைக் கவனித்து இருக்கிறீர்களா? அவர் பரிமாற இருக்கும் உணவைச் சமைப்பதற்கு முன்பாக தேவையான பொருட்களைச் சேகரிப்பதில் தொடங்கி, அவ்வுணவின் மணம் ருசி எப்படியெல்லாம் இருக்கவேண்டும் என்று கற்பனை செய்து பார்ப்பது வரைக்கும் அவர் தன்னைத் தயார்ப்படுத்திக் கொள்ளும் விதமே அலாதியானதுதான். நாம் உண்ணும் ஒரு ருசியான உணவுக்குப் பின்னால், முன் தயாரிப்புகளுக்கு என்று செலவிடப்படும் அந்த நேரம் தரமானது மட்டுமல்ல, அத்தியாவசியமானதும் கூட.
மேலே சொல்லியிருப்பதை இந்நேரம் உங்களது மூளை ஒரு நிரல் எழுதும் முறையோடும் ஒப்பிட்டுப் பார்த்திருந்தால், நீங்கள் நம் தொடருக்கு ‘செட்’ ஆகிவிட்டீர்கள் என்று அர்த்தம். வாழ்த்துகள். புதிதாக ஒரு நிரலாக்க மொழியைக் கற்கத் தொடங்குபவர்கள், ஒரு நிரலை எழுதத் தொடங்குவதற்கு முன்பாக அது குறித்து சில முன் தயாரிப்புகளில் ஈடுபடுத்திக்கொள்ளும் பயிற்சி அவசியமானது.
ஏன்?
உதாரணத்திற்கு 1 முதல் 100வரை உள்ள எண்களில், 3 மற்றும் 5 ஆகிய எண்களால் மட்டும் வகுபடும் எண்களின் கூட்டுத்தொகையைக் கண்டுபிடிக்க ஒரு நிரல் எழுதவேண்டும் என்று வைத்துக்கொள்வோம்.
ஒரே நேரத்தில் நீங்களும், உங்கள் நண்பரும் இதை முயற்சி செய்கிறீர்கள்.
நீங்கள் உடனடியாக கணினியில் அமர்ந்து நிரலைத் தட்டச்சு செய்ய ஆரம்பிக்கிறீர்கள். முதல் வரி அடித்தாயிற்று, இரண்டாவது வரி கொஞ்சம் பெருமூச்சு விடுகிறது, மூன்றாவது வரி சுத்தம், படுத்தேவிட்டது. இப்போது லேசாகத் திரும்பி உங்கள் நண்பரைப் பார்க்கிறீர்கள். அவர், இன்னும் மோசம். ஒரு பேனாவையும், பேப்பரையும் வைத்துக்கொண்டு எதையோ கிறுக்கிக்கொண்டு இருக்கிறார்.
ஆனால் அந்த நிரலை எழுதி முடிக்கச் சாத்தியமுள்ள ஆள் யார் என்று கேட்டால், உங்களது நண்பரைத்தான் சுட்டிக்காட்ட முடியும். காரணம் என்ன?
1) உங்களுக்குக் கொடுக்கப்பட்ட கேள்விக்கு, ஒரு நிரலாக்க மொழியை வைத்தோ அல்லது ஒரு பேனா பேப்பரை வைத்தோ கூட உங்களால் ஒரு தீர்வைக் கண்டடைய முடியவில்லை.
2) மறுபக்கம் உங்கள் நண்பர் தனது கணினியின் விசைப்பலகையில் கூட கையை வைக்கவில்லை. மாறாக ஒரு கேள்விக்கு பேனா பேப்பரை வைத்து விடையைக் கண்டறிவது எப்படி என்று தெரிந்து வைத்திருக்கிறார்.
விஷயம் எளிமையானதுதான். ஒரு நிரலாக்க மொழி உங்களுக்கான சிக்கலை (நிரல் எழுதுவதைக் குறிக்கிறது) சுயமாகத் தீர்த்து வைப்பதில்லை. மாறாக, ஒரு பிரச்சனையைத் தீர்த்து வைக்கும் கட்டளைகளை எழுத உதவுகிறது. சரி, இவை யாருக்கான கட்டளைகள்? ஒரு இயந்திரத்திற்கானவை.
இந்த இடத்தில் இன்னொரு கேள்வி. 2ஐயும், 3ஐயும் பெருக்கினால் என்ன வரும் என்பதுதான் எனக்கே தெரியுமே? மெனக்கெட்டு எதற்காக ஒரு நிரலாக்க மொழியைக் கற்றுக்கொண்டு, அதில் கட்டளைகளை எழுதி, ஒரு இயந்திரத்திடம் தந்து, அதன் திரையைப் பார்த்துக் கொண்டிருக்க வேண்டும்?
நல்ல கேள்விதான். ஒரு நிரலாக்க மொழியின் சாத்தியம் வெறுமனே எண்கணித செயல்பாடுகளில் (Arithmetic Operations) மட்டும் அடங்கிவிடுவதல்ல. அதன் எல்லைகள் ஓர் இயந்திர மனிதனை உருவாக்குவது வரைக்கும் கூட விரிவானவை. அகரத்திலிருந்து தமிழைக் கற்கத் தொடங்குவது போல, எண்கணித செயல்பாடுகளிலிருந்து ஒரு நிரலாக்க மொழியைக் கற்பது ஒரு நல்ல தொடக்கம். மேலும் நி.மொயும், கணிதமும் பல ஆண்டுகளாகவே பிரிக்கமுடியாத காதலர்கள். ஒன்றை முழுவதுமாக விடுத்து இன்னொன்றைக் கற்க இயலாது.
பேனாவை வைத்துக் கிறுக்கிக் கொண்டிருந்த உங்கள் நண்பரைப் பொறாமையாகப் பார்ப்பதைக் கொஞ்சம் நிறுத்துங்கள். ஒரு நிரல் எழுதுவதற்கு முன்பு அதுபோன்ற முன் தயாரிப்புகள் அவசியம். அதில் நம்மை ஈடுபடுத்திக்கொள்ள நிறைய வழிமுறைகள் பின்பற்றப்படுகின்றன. அவற்றில் பிரபலமாக இருக்கும் இரண்டை மட்டும் எடுத்துக்கொண்டு கொஞ்சம் விளையாடுவோம்.
அல்காரிதம்
நாம் நிறையக் கேள்விப்பட்ட ஒரு வார்த்தைதான். நம் முன் இருக்கும் சிக்கலுக்குத் தீர்வை காண படிப்படியாக மேற்கொள்ளப்படும் செயல்முறையைத்தான் அல்காரிதம் என்ற வார்த்தையால் குறிக்கிறோம். மீண்டும் அந்த 3 மற்றும் 5ஆல் வகுப்படும் எண்களின் கூட்டுத்தொகை சிக்கலை எடுத்துக்கொள்வோம்.
எப்படிப் படிப்படியாகக் கட்டளைகளை எழுதி அதற்குத் தீர்வு காண்பது?
கட்டளை எண் 1: தொடக்கம்.
க.எண் 2: இறுதியாகக் கணக்கிடப்பட இருக்கும் கூட்டுத்தொகையைக் குறிக்க s என்ற எழுத்தைப் பயன்படுத்துவோம்.
க.எண் 3: 1லிருந்து 100 வரை உள்ள எண்களே இந்த சிக்கலைத் தீர்ப்பதற்கு உண்டான உள்ளீடு (Input).
க.எண் 4: வரிசையாக ஒவ்வொரு எண்ணாக எடுத்து, அதைக் குறிக்க i என்ற எழுத்தை நியமிப்போம்.
க.எண் 5: 3 மற்றும் 5ஆல் i வகுப்போம் பொழுது அதன் மிச்சத்தை r என்ற எழுத்து சேமித்து வைத்திருக்கும்.
க.எண் 6: ஒருவேளை rன் மதிப்பு 0வாக இருந்தால், s=s+i.
க.எண் 7: ஒருவேளை rன் மதிப்பு 0வாக இல்லாமல் இருந்தால், கட்டளை எண் 2ற்கு செல்லவும்.
க.எண் 8: iன் மதிப்பு 100 ஆகும் வரைக்கும் கட்டளை எண் 2,3,4,5ஐ தொடர்ச்சியாகச் செயல்படுத்தவும்.
க.எண் 9: iன் மதிப்பு 100ஐ எட்டியதும், மொத்த கூட்டுத்தொகையைக் குறிக்கும் sஐ அச்சிடவும்.
க.எண் 10: நிறுத்தம்.
விளக்கம்:
அல்காரிதத்தை வாசித்துவிட்டு ‘போங்கடா நீங்களும் உங்க பைத்தானும்’ என்று திட்டுபவர்களுக்காக இந்த விளக்கம்.
அல்காரிதம் எப்படி அந்தச் சிக்கலுக்குத் தீர்வு எழுதியது என்பதைப் பிறகு பார்ப்போம். ஒரு பேனா பேப்பர் இருந்தால் நாம் எப்படி இந்த சிக்கலை அணுகுவோம்?
உள்ளீடு: 1 முதல் 100 வரை. வரிசையாக ஒவ்வொரு எண்ணாக எடுத்துக் கொள்வோம்.
1, இவ்வெண் 3 மற்றும் 5ஆல் வகுப்படுமா? இல்லை.
(இல்லையென்ற முடிவுக்கு எப்படி வருகிறோம்? 1 என்ற எண், 3 மற்றும் 5ஆல் வகுப்பதும் பொழுது, மிச்சம் 0ஆக இருந்தால் வகுப்படுகிறது என்று அர்த்தம்)
2, இவ்வெண் 3 மற்றும் 5ஆல் வகுப்படுமா? இல்லை.
3, இவ்வெண் 3 மற்றும் 5ஆல் வகுப்படுமா? இல்லை.
அப்படியே ஒரு மனக்கணக்கு போட்டு முன்னே செல்வோம்.
15, இவ்வெண் 3 மற்றும் 5ஆல் வகுப்படுமா? ஆம்.
30, இவ்வெண் 3 மற்றும் 5ஆல் வகுப்படுமா? ஆம்.
45, இவ்வெண் 3 மற்றும் 5ஆல் வகுப்படுமா? ஆம்.
60, இவ்வெண் 3 மற்றும் 5ஆல் வகுப்படுமா? ஆம்.
75, இவ்வெண் 3 மற்றும் 5ஆல் வகுப்படுமா? ஆம்.
90, இவ்வெண் 3 மற்றும் 5ஆல் வகுப்படுமா? ஆம்.
வகுப்படும் எண்களின் கூட்டுத்தொகை 315.
ஆனால் நாம் யாருமே மேற்கூறிய விதத்தில் ஒரு சிக்கலுக்குத் தீர்வு காண விரும்புவதில்லை. இல்லையா? அதற்கு உண்டான நேரமோ, பொறுமையோ யாரிடமும் இல்லை. மேலும் இதை விடவும் சிறப்பான வேறு வழிகள் இருக்கும் பொழுது நாம் ஏன் இவ்வளவு சிரமப்பட வேண்டும்.
நம் முன் இரண்டு வாய்ப்புகள் உள்ளன.
1) நாம் முன்பே அறிந்து வைத்திருக்கும் கணித சூத்திரத்தைப் பின்பற்றி விடையைக் கண்டறிவது. இம்முறையை நிறுவனங்கள் பெரும்பாலும் விரும்புவதில்லை. காரணம், உங்களால் ஒரு நிரலை எழுத முடிகிறது என்றால், என்ன மாதரியான தர்க்கத்தை உருவாக்கிச் சிக்கலைத் தீர்க்க முயற்சி செய்கிறீர்கள் என்று காண்பிப்பது அவசியம். அந்தத் தர்க்க உருவாக்கத்தில், சிக்கலைத் தீர்ப்பதற்கு உண்டான உங்களது வழி பளிச்சிடும். அதுவே ஒரு நிரலாளராக உங்களது முதல் தகுதி. எந்தப் புரிதலும் இல்லாமல் கண்மூடித்தனமாக ஒரு கணித சூத்திரத்தை மனனம் செய்வது இங்கே வேலைக்கு ஆகாது.
2) நாம் எழுத இருக்கும் நிரலுக்கான தர்க்கம் என்ன? அதை நாம் எப்படிக் கண்டறிவது/உருவாக்குவது?
ஒரு அல்காரிதத்தை எழுதியதன் மூலமாக நாம் ஏற்கெனவே அதைக் கண்டறிந்து விட்டோம். இப்போது மேலே சென்று, அல்காரிதத்தை மீண்டுமொருமுறை வாசித்துவிட்டு வாருங்கள். நாம் உருவாக்கிய தர்க்கம் என்ன என்பது விளங்கும்.
ஒவ்வொரு எண்ணாக எடுப்பதற்குப் பதிலாக எண்களைக் குறிக்க i என்ற எழுத்தை நியமிக்கிறோம். அதேபோல இறுதியாக நாம் கணக்கிட இருக்கும் கூட்டுத்தொகையைக் குறிக்க s என்று எழுத்தைப் பயன்படுத்துகிறோம். i, ஒவ்வொருமுறையும் 3 மற்றும் 5ஆல் வகுபடும்பொழுது அதன் மிச்சத்தைக் குறிக்க r. rன் மதிப்பு 0வாக இருந்தால் s=s+i(15+30+45+60+75+90).
தர்க்கம் தயார்.
0
ஓட்ட விளக்கப்படம் (Flow Chart)
ஒரு சிக்கலுக்குத் தீர்வு காணும்பொழுது, படிப்படியாக எழுதி ஒரு தர்க்கத்தை உருவாக்குவதைக் காட்டிலும், என் மூளையின் அமைப்பு அதை ஒரு படமாகப் பார்க்க விரும்புகிறது என்று நீங்கள் நினைத்தால், அதற்கும் ஒரு வழி இருக்கிறது. அதுதான் ஓட்ட விளக்கப்படம்.
படத்தில் பயன்படுத்தப்பட்டு இருக்கும் வடிவங்களின் மீதும் அப்படியே ஒரு கண் வைத்துக்கொள்ளுங்கள்.
0
சரி. இப்போது வாசகர்கள் அடித்து ஆடுவதற்கான நேரம். அடிப்படையில் வளரும் பிள்ளைகளான உங்களுக்கு லெக் பீசை தந்துவிட்டு, குஸ்கா மட்டும் சாப்பிடும் நல்ல ஏகாம்பரம் நான் என்பதால் இம்முறை எளிமையான ஒரு கேள்வி மட்டும். அதற்கான அல்காரிதத்தை நீங்கள் தமிழில் எழுதி அனுப்பலாம். தேர்ந்தேடுக்கபடுபவை உங்கள் பெயர், விவரங்களோடு அடுத்த அத்தியாயத்தில் வெளியாகும்.
என்ன கேள்வி?
7 என்ற எண், ஒற்றைப்படையா அல்லது இரட்டைப்படையா என்று தீர்மானிக்க ஒரு அல்காரிதத்தை எழுதுவது.
எப்படி அனுப்புவது?
இங்கே commentsஇல் எழுதுங்கள். இல்லையென்றால் raghavan0303@gmail.com என்ற மின்னஞ்சலுக்கு அனுப்புங்கள்.
எப்படி எழுதுவது?
எப்படி வேண்டுமென்றாலும். ஒரு பேப்பரில் எழுதி அதை ஒரு போட்டாவாக கூட அனுப்பலாம்.
வாட்ஸ்அப் எண்: 9789855667
அனுப்பவேண்டிய கடைசி தேதி.
மார்ச் 7, 2023.
இது நீங்களும் நானும் சேர்ந்து எழுதும் தொடர் என்பதால் வாங்க வாங்க என்று இருகரம் கூப்பி வரவேற்கிறேன்.
(தொடரும்)