நிரலாக்க மொழிகள் அனைத்திற்கும் பொதுவான ஒரு தரவு வகையைத்தான் இப்போது பார்க்கவிருக்கிறோம். String(சரம்) என்று அன்போடு அழைக்கப்படும் இத்தரவு வகை, சொற்களை நிரலில் கையாள பயன்படுத்தப்படுகிறது. சொற்கள் என்றால்?
பெயர், முகவரி, வாழ்த்துச்செய்தி, நன்றி நவில்தல் இதையெல்லாம் ஒரு நிரலில் சொற்களின் மூலமாகத்தான் தெரியப்படுத்தமுடியும். ஆக அதற்கென்று ஒரு தரவு வகை அவசியமாகிறது. ஒரு சொல்லை உருவாக்கி, அல்லது பயனரிடமிருந்து பெற்று, எப்படியெல்லாம் கலைத்துப்போட்டு விளையாட முடியுமோ அதற்குண்டான அனைத்து வாய்ப்புகளையும் பைத்தான் வாரி வழங்குகிறது. மா.பட்டியலைப் போலவே சரமும் மாறாத தன்மைகொண்ட(immutable) ஒரு தரவு வகையைச் சேர்ந்ததாகும்.
ஒரு சரத்தை எப்படி உருவாக்குவது?
நிரல் 1: சரத்தை உருவாக்குதல்
ஒற்றை(‘ ‘)/இரட்டை(” “)/மூன்று(“”” “””) மேற்கோள் குறிகளுக்கு உள்ளே குறிப்பிடப்படும் எதுவும் சரம் என்றே பைத்தானால் புரிந்துகொள்ளப்படும். எதுவும் என்றால்? எதுவும் தான். சொற்கள் மட்டுமல்ல எண்கள், சின்னங்கள், இடைவெளி என அனைத்துமே மேலே குறிப்பிடப்பட்டிருக்கும் மேற்கோள் குறிகளுக்கு உள்ளே வருமானால், அது சரம் என்றே அறியப்படும், டும்.
s1 என்ற அடையாளங்காட்டியில் “MalaiPaambu Mozhi” என்ற சரம் சேமிக்கப்பட்டிருப்பதை நிரல் 1 காட்டுகிறது.
இப்போது s1ன் தரவு வகையை எப்படிக் கண்டறிவது? type() என்கிற மு.வ.செயல்பாடு குறித்து ஏற்கனவே பார்த்திருந்தோம் நினைவிருக்கிறதா?
உருவாக்கிய சரத்தில் ஒரு மாற்றம் செய்ய வேண்டும் என்கிற சூழல், பைத்தான் அதற்கு அனுமதிக்கிறதா என்பதையும் பார்த்துவிடுவோம்.
ஒருமுறை உருவாக்கபட்டுவிட்டால் அவ்வளவுதான், மீள் உருவாக்கம் தான் சாத்தியமே ஒழிய, உருவாக்கப்பட்டதில் மாற்றம் செய்ய இயலாது. அதைத்தான் மேலே இருக்கும் திரைசொட்டு காட்டுகிறது.
ஒரு சரம் உருவாக்கப்படும் பொழுது நிரலாளர் செய்யக்கூடிய தவறுகள் என சில உண்டு. அவற்றில் முதன்மையானது,
ஒற்றை மேற்கோள் குறியில் ஆரம்பிக்கப்பட்ட சரம், ஒற்றை மேற்கோள் குறியாலேயே முடித்து வைக்கப்படவேண்டும். ஆரம்பிக்க ஒன்று, முடிக்க மற்றொன்று என்ற அலட்சியத்தை பைத்தான் அனுமதிக்காது. இது இரட்டை/மூன்று மேற்கோள் குறிகளுக்கும் பொருந்தும்.
நிரல் 2: சரத்தின் உறுப்புகளை அணுகுதல்
நேர்மறை குறியீட்டு எண்களைப் பயன்படுத்தி, சரத்தின் முதலாவது, இரண்டாவது உறுப்புகளைத் தனியே பிரித்து அச்சிடுகிறோம்.
நிரல் 3: எதிர்மறை குறியீட்டு எண்களை வைத்து, சரத்தின் உறுப்புகளை அணுகுதல்
எதிர்மறை எண்களைக் கொண்டு சரத்தின் உறுப்புகளை அணுகியிருக்கிறோம்.
நிரல் 4: சரத்தின் குறிப்பிட்ட உறுப்புகளை மட்டும் பிரித்தெடுத்தல்
பின்வரும் குறியீட்டு எண்களை அப்படியே மேலே இருக்கும் படத்தில் வைத்தீர்களேயானால் , நிரலின் வெளியீடு தயார்.
s1[6:12] -> 6,7,8,9,10,11
s1[13:18]-> 13,14,15,16,17
இரண்டு நிரல் வரிகளிலும் மூன்றாவது காரணி குறிப்பிடப்படவில்லை, ஆகவே 1ஐ வைத்து நிரப்பிக்கொள்ளவேண்டியது தான்.
நிரல் 5: சரத்தின் குறிப்பிட்ட உறுப்புகளை மட்டும் பிரித்தெடுத்தல்(2)
s1[2:13:3] -> 2,5,8,11
இந்த குறியீட்டு எண்கள் காட்டும் திசையில் இடம்பெற்றிருக்கும் உறுப்புகள் அச்சிடப்பட்டு இருக்கின்றன.
நிரல் 6: எதிர்மறை எண்களைக் கொண்டு சரத்தின் உறுப்புகளை அணுகுதல்
s1[-5:-1] -> -5,-4,-3,-2
அதே டைலர், அதே வாடகை. ஒரே வித்தியாசம் இந்நிரலில் எதிர்மறை எண்களைக் கொண்டு விளையாடியிருக்கிறோம்.
நிரல் 7: தாவும் நிரல்
தொடக்கமும், நிலையும் இல்லை. அதனால் வழக்கம்போல தொடக்கத்தை 0ஐ வைத்தும், நிலைக்குச் சரத்தின் மொத்த உறுப்புகளை எண்ணியும் காரியத்தை முடிப்போம்.
s1[::2] -> s[0:len(s1):2] -> s[0:17:2] -> 0,2,4,6,8,10,12,14,16.
அவ்வளவுதான். இந்த குறியீட்டு எண்களை நிரலில் பொருத்திப் பார்த்தால் வெளியீடு கிடைத்துவிடும்.
நிரல் 8: for loopஐ பயன்படுத்தி சரத்தின் உறுப்புகளை அணுகுதல்
in இயக்கியைப் பயன்படுத்தி சரத்தின் ஒவ்வொரு உறுப்பாக எடுத்து அச்சிடுகிறோம். முதல் செய்கையில் charன் மதிப்பு ‘M’, இரண்டாவது செய்கையில் ‘a’, இப்படியாக ஒவ்வொரு செய்கையிலும் charன் மதிப்பு மாறி, சரத்தின் கடைசி உறுப்பை அடையும் வரை இம்முறை மீண்டும் மீண்டும் செயல்படுத்தப்படுகிறது.
வெளியீடு:
for loop இந்நிரலில் எத்தனைமுறை இயங்குகிறது என்பதை எப்படிக் கண்டறிவீர்கள்? சரத்தின் நீளம்(உறுப்புகளின் எண்ணிக்கை) தான் for loopன் மொத்த செய்கை மதிப்பு, ஆக மொத்தம் 17 முறை இயங்குகிறது.
நிரல் 8: for loopஐ பயன்படுத்தி சரத்தின் குறியீட்டு எண்களை அணுகுதல்
பட்டியல், மா.பட்டியல் மற்றும் சரம் என அனைத்திலும் இரண்டு விதங்களில் for loopஐ பயன்படுத்தலாம். அதன் முதல் வடிவத்தை மேலே பார்த்தோம், அதாவது நேரடியாகவே ஒரு தரவு கட்டமைப்பின் உறுப்புகளை in இயக்கியைக் கொண்டு அணுகுவது. இரண்டாவது விதம், in மற்றும் range()ஐ பயன்படுத்தி தரவு கட்டமைப்பின் குறியீட்டு எண்களின் மூலம் அதன் உறுப்புகளை அணுகுவது.
இந்நிரலில் உறுப்புகளின் குறியீட்டு எண்களை மட்டும் எடுத்து அச்சிட்டிருக்கிறோம்.
நிரல் 9: for loopஐ பயன்படுத்தி சரத்தின் குறியீட்டு எண்களைக் கொண்டு அதன் உறுப்புகளை அணுகுதல்
போன நிரலின் மூலம் அணுகிய குறியீட்டு எண்களைச் சரத்திற்கு அனுப்புவதன் மூலம் அதன் உறுப்புகளை அடைகிறோம்.
நிரல் 10: in இயக்கியைக்கொண்டு சரத்தின் உறுப்புகளின் இருப்பைக் கண்டறிதல்
போனவராம் ASCII குறித்து விரிவாகப் பார்த்தோம் இல்லையா? அதைக்கொண்டு சரத்தில் ஒரு உறுப்பின் இருப்பை கண்டறியலாம்.
நிரல் 11: ASCII மதிப்பை நிரலின் மூலம் பெறுதல்
சதா சர்வ காலமும் ASCIIயின் மதிப்பை மண்டையில் பத்திரமாக வைத்திருக்க முடியாது இல்லையா? அதனால் இரண்டு மு.வ.செயல்பாடுகளை தந்துதவுகிறது பைத்தான்.
ord()யின் மூலம் ஒரு சர மதிப்பைத் தந்து அதற்கு இணையான ASCIIயை பெற்றுக்கொள்ளலாம். எனக்கு ASCII தெரியும், அதற்கு நிகரான மதிப்பு தேவைப்படுகிறது என்பவர்கள் chr()ஐ பயன்படுத்தலாம்.
இதன் தொடர்ச்சியாக சரங்களைக்கூட நீங்கள் ஒப்பீட்டு பார்த்துக்கொள்ளலாம். சமம், சமம் அற்றது, சிறியது (அ) பெரியது என்கிற அடிப்படையில் மூன்று நிரல்கள் எழுதப்பட்டு இருக்கின்றன. “Dry Run” அடிப்படையில் அவற்றைப் புரிந்துகொள்ள முடிகிறதா பாருங்கள்.
நிரல் 12:
நிரல் 13:
நிரல் 14:
சரம் வழங்கும் மு.வ.செயல்பாடுகளின் பட்டியல் நீளமானது. அவற்றை வரும் வாரத்தில் பார்த்துவிடுவோம்.
(தொடரும்)