Skip to content
Home » மலைப்பாம்பு மொழி 13 – நேர்காணலுக்காக நேர்ந்துவிட்டவை

மலைப்பாம்பு மொழி 13 – நேர்காணலுக்காக நேர்ந்துவிட்டவை

Python

நேர்காணல்களுக்கு என்று நேர்ந்துவிட்ட ஒரு தலைப்பு என்று மறு செய்கை வரிகளைச் (Iterative Statements) சொல்லலாம். இதில் ஒருவர் தெளிவாக இருந்துவிட்டால் போதும், எத்தனை பெரிய நிறுவனமாக இருந்தாலும் சரி, அதன் கேள்விகளைச் சமாளித்து நீந்தி வந்துவிடலாம். காரணம், இந்த தலைப்பில் அதிக அளவு தர்க்கத்தைப் பயன்படுத்த வேண்டியிருக்கும். உங்களால் ஒரு பிரச்சனையைத் தீர்க்க தர்க்கத்தை உருவாக்க முடிந்தால் ‘வாழ்த்துகள், எங்கள் நிறுவனத்திற்கு உங்களை மனதார வரவேற்கிறோம்’.

தொடர்ந்து for loopற்க்கு சில உதாரணங்களைப் பார்ப்போம். எண் தொடரை (number series) மனதில் வைத்துக் கொள்ளுங்கள், அங்கெல்லாம் தவறாமல் for loop ஆஜராகிவிடும்.

எ. கா. 1: 1லிருந்து 10 வரை உள்ள எண்களை அச்சிடுதல்

நிரல்:

வெளியீடு:

விளக்கம்:

நிரலின் முதல் வரியைக் கவனியுங்கள். அதில் நிரலாளராக நாம் செய்யக்கூடியது என்ன என்பதைக் கொஞ்சம் பாருங்கள். for, in ஆகியவை ஒதுக்கப்பட்ட வார்த்தைகள் (reserved words), அவற்றிற்கு உண்டான பிரத்தியேக அர்த்தங்களை நிரலே புரிந்துகொள்ளும். இதில் நாம் செய்யக்கூடியது என ஒன்றுமே இல்லை. range() பற்றிக் கேட்கவே வேண்டாம், அதுவுமே முன் வரையறுக்கப்பட்ட செயல்பாடு.

‘எதுக்குடா நான் சரிப்பட்டு வரமாட்டேன்?’ என்று கேட்பவர்கள் தொடர்ந்து படிக்கவும். எனில், 2 விஷயங்கள் மட்டும் தான் நமது கட்டுப்பாட்டில் உள்ளன.

1) அடையாளங்காட்டியின் பெயரை முடிவு செய்வது

2) for loop எத்தனை முறை இயங்கவேண்டும் என்ற எண்ணிக்கையைக் குறிப்பிடுவது

மேற்கண்ட நிரலில் num அடையாளங்காட்டி, ஒவ்வொருமுறையும் range() தரும் மதிப்பினைச் சேமித்து அச்சிடும்.

range(1,11) -> 1,2,3,4,5,6,7,8,9,10 (numன் மதிப்புகள்)

தொடக்கமும் நிலையும் range()ற்குள் குறிப்பிடப்பட்டு இருக்கின்றன. ஆக, மேம்படுத்தல் இல்லாத காரணத்தால் அதை 1ஐ கொண்டு நிரப்புக.

ஒரே வரியில் இந்த நிரலை எப்படி விளக்குவது?

எண் தொடரின் ஒரு மதிப்பை (ஒரு சமயத்தில் 1 மட்டும்) numல் சேமித்து அதை அச்சிடுகிறோம்.

இதன் தொடர்ச்சியாக இன்னொரு நிரலைக் கொஞ்சம் முயன்று பாருங்களேன். 1லிருந்து 50 வரை உள்ள எண்களில், இரட்டைப்படை எண்களை மட்டும் அச்சிட முடியுமா?

எ. கா. 2: சின்ன வயதில் நீங்கள் எப்படியோ தெரியாது, நான் vowelsஐ அய்யோ (aeiou) என்றுதான் நினைவில் வைத்திருந்தேன். அதற்கும் ஒரு நிரலைப் போட்டுவிடுவோம். பயனரிடமிருந்து ஒரு வார்த்தையைப் பெறுவது, உதாரணத்திற்கு ‘Malaipaambu Mozhi’, இதில் எத்தனை vowels இருக்கின்றன என்பதை நிரலைக் கணக்கிட்டுச் சொல்லச் சொல்வது.

நிரல்:

வெளியீடு:

விளக்கம்:

பயனரிடமிருந்து பெற்றதை word எனும் அடையாளங்காட்டியில் சேமிக்கிறோம். for loopஐ பயன்படுத்தி சொல்லின் ஒவ்வொரு எழுத்தாகப் பிரித்தெடுத்து அதை cயில் வைக்கிறோம். உதாரணத்துக்கு முதல் செய்கையில், cயின் மதிப்பு ‘M’, அடுத்த செய்கையில் ‘a’ எனச் சொல்லின் கடைசி எழுத்து வரை for loop பயணிக்கும்.

அப்படி தனித்தனியாக எடுக்கப்படும் எழுத்துகள், “aeiou” என்னும் கூட்டிற்குள் இருந்தால் countன் மதிப்பில் ஒன்றைக் கூட்டுகிறோம். இறுதியில் countஐ அச்சிட்டால், “Malaipaambu Mozhi”யில் எத்தனை vowels என்பதன் எண்ணிக்கை தெரியவரும்.

எ. கா. 3: பயனர் எந்த எண்ணைக் கொடுத்தாலும் சரி, அதன் பெருக்கல் வாய்ப்பாட்டை அச்சிடுவது

நிரல்:

வெளியீடு:

விளக்கம்:

நேரடியான ஒரு நிரல்தான், பயனரிடமிருந்து எண்ணைக் கேட்டுப்பெறும் முதல் வரியை விடுத்துப் பார்த்தால் மொத்தமே இரண்டே வரிகள் தான். range()ற்குள் 10 வரை கொடுத்திருக்கிறோம். பயனர் தரும் எண்ணை 1லிருந்து 10வரை பெருக்கினால் என்ன கிடைக்கும் என்பதே நிரலின் வெளிப்பாடு, ஒருவேளை உங்களுக்கு 16 வரை தேவைப்பட்டால் range()ன் நிலையை அதற்குத் தகுந்தபடி மாற்றிக்கொள்ளுங்கள்.

‘சின்ன வயசில் இந்த வாய்ப்பாட்டுக்குத் தான் என்னா அடி? இப்போ 2 வரியில வேலை முடிஞ்சது. இதுக்கு எதுக்குடா யூ டர்ன் போட்டு, பர்னிச்சர ஒடச்சி’ என்று கணித வாத்தியாரை நன்றியுடன் நினைவு கூறுபவர்கள் தண்ணீர் குடித்துவிட்டுத் தொடரவும்.

இந்த நிரலில் print() செயல்பாட்டுக்குக் கொஞ்சம் நேரம் ஒதுக்குவது அவசியம்.

5 x 1 = 5
5 x 2 = 10
5 x 3 = 15

மேலிருக்கும் ஐந்தாம் வாய்ப்பாட்டில் எவையெல்லாம் மதிப்புகள்? எதெல்லாம் அச்சின் மதிப்புக்காக/புரிதலுக்காகச் சேர்க்கப்பட்டு இருக்கிறது என்பதைப் பாருங்கள். முதல் வரியை எடுத்துக்கொள்வோம், இதில் 5 x 1 = 5, இவற்றில் 5,1,5 ஆகிய மூன்றும் மதிப்புகள் (பெருக்கல் செயல்பாட்டில் ஈடுபடுகின்றன), ஆனால் x, = பங்கு என்ன? வெளியீட்டைப் பார்க்கும்பொழுது புரிய வேண்டும் என்பதற்காகச் சேர்த்திருக்கிறோம்.

print() செயல்பாட்டிற்குள், “” குறிக்குள் நீங்கள் தரும் ஏதுவாக இருந்தாலும் சரி அது கண்மூடித்தனமாக அச்சிடப்படும். அப்படித் தரப்படாத மற்றவை அடையாளங்காட்டிகள், அவற்றினுள் மதிப்புகள் சேமிக்கப்பட்டு இருக்கும். இப்போது 5 x 2 = 10 என்பதை எப்படி நிரல் வரியாக மாற்றுவது?

print(num, “x”, i, “=”, num*i).

பைத்தானில் x என்ற பெருக்கல் குறி பயன்பாட்டில் இல்லை என்பதை நினைவில் கொள்க, இங்கே பெருக்கல் செயல்பாட்டை மேற்கொள்ள நாம் பயன்படுத்தியிருப்பது *. அப்படியென்றால் 5 x 3 எப்படிச் சாத்தியமானது என்று கேட்கிறீர்களா? பயனருக்குப் புரியவேண்டும் என்பதற்காக “x” என்னும் ஆங்கில எழுத்தைப் பயன்படுத்தியிருக்கிறோம்.

எ. கா. 4: முழு எண்ணின் காரணிகளைக் கண்டறிவது. Factorial என்று கேட்டுப் பார்த்தால் பேட்டையில் மிகப் பிரபலம்.

4 என்ற முழு எண்ணின் காரணிகள் இவை 4,3,2,1. காரணிகளைப் பெருக்கி அச்சிட்டால் Factorial நிரல் முடிந்தது.

நிரல்:

வெளியீடு:

விளக்கம்:

எந்த எண்ணாக இருந்தாலும் சரி, அதன் காரணிகள் 1லிருந்து தான் தொடங்குகின்றன. தொடக்கம் கிடைத்துவிட்டது, இப்போது நிலையை எப்படிக் கண்டறிவது? 1லிருந்து தொடங்கி காரணிகள் கண்டுபிடிக்கப்பட வேண்டிய குறிப்பிட்ட அந்த எண் வரைக்கும் செல்லவேண்டும். அவ்வளவுதான் range()ற்கான மதிப்புகள் கிடைத்துவிட்டன. காரணிகளைப் பெருக்கி அச்சிட்டால் நிரல் முடிந்தது.

எ. கா. 5: தமிழ் சினிமா நேர்காணல் காட்சிகளில் கூட கேட்கப்படும் அளவுக்கு அடித்துத்  துவைத்து கந்தலான ஒரு கேள்விக்குத் தான் நிரல் எழுத இருக்கிறோம்.

பயனரிடமிருந்து 5 எண்களைப் பெற்று அதன் கூட்டுத்தொகையை அச்சிடவிருக்கிறோம்.

நிரல்:

வெளியீடு:

விளக்கம்:

‘Dry Run’ற்கு என்றே அளவெடுத்துச் செய்து நிரல் இது. முயன்று பாருங்கள்.

0

போனவாரம் நாம் விவாதித்த பரோட்டா நிரலுக்காகக் காத்திருக்கிறேன். ‘பாத்து செய்ங்க.’

(தொடரும்)

பகிர:
ரிஷிகேஷ் ராகவேந்திரன்

ரிஷிகேஷ் ராகவேந்திரன்

நாமக்கல் மாவட்டம் இராசிபுரத்தை அடுத்த புதுப்பாளையம் என்னும் கிராமத்தைச் சேர்ந்தவர். தொழில்நுட்பத் துறை சார்ந்து தொடர்ந்து எழுதிவருபவர். இவர் எழுதிய ‘தமிழ் ராக்கர்ஸ் தோற்றமும் மறைவும்‘ என்னும் மின்னூல் பரவலான கவனத்தைப் பெற்றது. ரூபியா ரிஷி என்ற பெயரில் புனைவுகள் எழுதி வருகிறார்.View Author posts

1 thought on “மலைப்பாம்பு மொழி 13 – நேர்காணலுக்காக நேர்ந்துவிட்டவை”

  1. மலைப்பாம்பு மொழி சாகாது, இப்படியே போனால் சீக்கிரம் தமிழ் மொழி செத்துவிடும்.

பின்னூட்டம்

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