Wednesday, August 7, 2013

Nested Loops என்றால் என்ன?

  
முந்தைய பாகத்தில் for loop என்றால் என்னவென்பதை பார்த்தோம். இனி nested for loop ஐ பற்றி பார்ப்போம்.

Nested என்பதை அடுக்குகள் என்று புரிந்துகொள்ளலாம். அதாவது ஒரு for loop பின் உள்ளே இன்னொரு for loop இருப்பதுதான் nested for loop ஆகும்.

இது எதற்காக பயன்படுகிறது என்பதை ஒரு உதாரணத்துடன் பார்ப்போம், நெல் அறுவடை முடிந்ததும் கூலி கொடுக்கவேண்டும். தொழிலாளர்கள் கூலியாக பணத்தை வாங்காமல் நெல்லைத்தான் கேட்பார்கள். ஒருவருக்கு பத்து மரக்கால் நெல் கூலியாக கொடுக்க முடிவாகிவிட்டது.

கூலி கொடுப்பதற்கென ஒரு கம்ப்யூட்டர் program ஐ நீங்கள் உருவாக்கியுள்ளீர்கள் என்று வைத்துக்கொள்வோம். உங்களுடைய algorithm எப்படி இருக்கும்? இப்படித்தானே...

For COUNT := 1 to 10 do
showmessage(“சாக்கு பையில் 1 மரக்கால் நெல் அளந்து போடவும்”)

அதாவது 10 மரக்கால் என்பது முடிவான பின்பு அதை எளிதாக for loop ல் எழுதிவிட்டோம். இந்த algorith தத்தை execute செய்தால் சாக்குபையில் 10 முறை நெல் அளந்து போடப்பட்டுவிடும்.

இது சாதாரண for loop தானே, இதில் nested for loop concept எங்கே இருக்கிறது என்கிறீர்களா? சூழ்நிலைகள்தான் புதுப்புது concept களை நமக்கு உருவாக்கி தருகின்றன. அன்றைய தினம் 5 பேர் வேலை செய்தார்கள் என்று வைத்துக்கொள்ளுங்கள். மேற்கண்ட algorithm படி பத்து மரக்கால் நெல்லை அளந்து போட்டுவிடுவீர்கள். ஒருவருடைய கூலி கொடுத்தாகி விட்டது. மற்ற 4 நபர்களுக்கு என்ன செய்வீர்கள். இந்த algorithm உதவாது அல்லவா? இப்பொழுது என்ன செய்யவேண்டும் என்று யோசியுங்கள்.

ஐடியா வந்துவிட்டது....

For COUNT := 1 to 10 do
showmessage(“சாக்கு பையில் 1 மரக்கால் நெல் அளந்து போடவும்”)

For COUNT := 1 to 10 do
showmessage(“சாக்கு பையில் 1 மரக்கால் நெல் அளந்து போடவும்”)

For COUNT := 1 to 10 do
showmessage(“சாக்கு பையில் 1 மரக்கால் நெல் அளந்து போடவும்”)

For COUNT := 1 to 10 do
showmessage(“சாக்கு பையில் 1 மரக்கால் நெல் அளந்து போடவும்”)

For COUNT := 1 to 10 do
showmessage(“சாக்கு பையில் 1 மரக்கால் நெல் அளந்து போடவும்”)

இவ்வாறாக Program மை மாற்றி எழுதி விடை கொண்டுவந்துவிட்டீர்கள். இதன் மூலம் 5 தடவை பத்து பத்து மரக்கால் நெல்லை கொடுக்கமுடியும். இப்படித்தான் நீங்களும் யோசனை செய்தீர்களா?

சரி 5 நபருக்கு ஓகே. ஒருவேளை 4 அல்லது 6 நபர்கள் வேலை செய்திருந்தால்... உங்கள் algorithm வேலை செய்யாதே... பிறகு எப்படி இதை solve செய்வது?

மறுபடியும் program ஐ திருத்தி எழுதுவீர்களா? உங்களுடைய program ஐ திருத்தாமல் எத்தனை நபர் வந்தாலும் கூலி கொடுப்பது மாதிரி எழுத முடியாதா?

யோசியுங்கள்...

நம்முடைய original code எப்படி இருந்தது?

For COUNT := 1 to 10 do
showmessage(“சாக்கு பையில் 1 மரக்கால் நெல் அளந்து போடவும்”)

இப்படித்தானே? பிறகு இதை 5 தடவை திரும்பத்திரும்ப எழுதினோமா? அவ்வாறு இல்லாமல் இதை 5 நபருக்கு கொடுப்பது மாதிரி மாற்ற என்ன செய்வது?

மேற்கண்ட original code ஐ 5 தடவை திரும்பத்திரும்ப செயல்படுத்தினால் என்ன?

சரி வாங்க algorith தத்தை மாற்றுவோம்.

For labor := 1 to 5 do
  For COUNT := 1 to 10 do
     showmessage(“சாக்கு பையில் 1 மரக்கால் நெல் அளந்து போடவும்”)

மேற்கண்ட algorith தத்தில் ஒரு for loop பின் உள்ளே இன்னொரு for loop இருக்கிறதல்லவா? இதுதான் nested for loop ஆகும். இதில் 2 level கள் இருக்கின்றன. நமது தேவைக்கு தகுந்தவாறு எத்தனை level வேண்டுமானாலும் எழுதிக்கொள்ளலாம்.

மறுபடியும் ஒரு பிரச்சனை. இங்கே 5 labor களுக்குத்தான் நமது program செயல்படும். இதை dynamic க்காக மாற்றுவோமா? அதாவது எத்தனை நபர் என்பதை கூலி கொடுப்பவர்தான் தீர்மானிக்க வேண்டும். அதுதான் logic.

இதற்காக நமது program ஐ கொஞ்சம் மாற்றவேண்டும்.

//please enter total number of labors. Let us assume 5 labors

TotalLabor := 5;

For labor := 1 to TotalLabor do
  For COUNT := 1 to 10 do
     showmessage(“சாக்கு பையில் 1 மரக்கால் நெல் அளந்து போடவும்”)

முதலாளிக்கு கொஞ்சம் நல்ல மனசு. 12 மரக்கால் கூலி கொடுக்க விரும்புகிறார். ஆனால் நமது program அதற்கு use ஆகாதே!

அதற்காகவும் program ஐ கொஞ்சம் மாற்றவேண்டும்.

//please enter total number of labors. Let us assume 5 labors

TotalLabor := 5;

//please enter total number of wages (in marakkaal) per labor. Let us assume 10 marakkaal

EachPersonWages := 10; //இதில் 12 ஐ கூட போடலாம்.

For labor := 1 to TotalLabor do
  For COUNT := 1 to EachPersonWages do
     showmessage(“சாக்கு பையில் 1 மரக்கால் நெல் அளந்து போடவும்”)

நம்ம program இப்போது முழுமையாக வேலை செய்யும். இதில் 2 for loop களை பயன்படுத்தியுள்ளோம். முதல் for loop (level 1) எத்தனை நபர் என்பதை தீர்மானிக்க உதவுகிறது. (அதற்குள் இருக்கும்) அடுத்த for loop (level 2) ஒவ்வொரு நபருக்கும் எத்தனை மரக்கால் என்பதை தீர்மானிக்க உதவுகிறது.

nested loop, nested for loop, loop example, sample calculation, faridh, elandangudi, programming tutorial, tamil tutorial


இதில் 4 variable களை பயன்படுத்தியுள்ளோம்.

TotalLabor எத்தனை தொழிலாளர்கள் என்பதை அறிவதற்காக.

EachPersonWages ஒருவருக்கு எத்தனை மரக்கால் கூலி என்பதை அறிவதற்காக.

Labor எத்தனையாவது labor ருக்கு கூலி கொடுக்கிறோம் என்பதை அறிவதற்காக.

COUNT எத்தனையாவது மரக்கால் அளந்து போடுகிறோம் என்பதை அறிவதற்காக.

நமது program முக்கு variable களை பயன்படுத்துவது போல் இயல்பான வாழ்க்கையிலும் நாம் variable களை பயன்படுத்தித்தான் வருகிறோம். இந்த 4 variable களில் ஒன்றை நமது மூளை பயன்படுத்தாமல் போனால்கூட நம்மால் சரியாக கூலி கொடுக்க முடியாது. எதற்காக இதை இங்கு சொல்கிறேன் என்றால் இயல்பான செயல்களை computerize (கணிணிமயமாக்கம்) செய்யவே program பயன்படுகிறது. கற்பனையாக உருவாக்கப்பட்ட எந்த program மையும் இயல்பான செயல்களுக்கு மாற்றாக பயன்படுத்த முடியாது. எனவே நாம் அன்றாடம் செய்யக்கூடிய அனைத்து செயல்களிலும் logic ஒளிந்துள்ளது. அதை கண்டுபிடித்துவிட்டால் program எழுதுவது எளிதாகிவிடும்.

Nested for loop ஐ பார்த்தாயிற்று. நமது program எவ்வாறு வேலை செய்தது என்பது இங்கே காணலாம்.

nested loop, nested for loop, loop example, sample calculation, faridh, elandangudi, programming tutorial, tamil tutorial

இங்கே ஒரு விசயத்தை நாம் கவனத்தில் கொள்ள வேண்டும். அதாவது கல்லூரியிலோ அல்லது பள்ளிக்கூடத்திலோ நெல் அளந்து போடும் program மை எழுதச்சொல்ல மாட்டார்கள். பாடத்திட்டத்தில் என்ன படித்தோமோ அதிலிருந்து ஏதாவது ஒரு கேள்வியை கேட்பார்கள். நாமும் மனப்பாடம் செய்ததை அப்படியே எழுதிவிடுவோம். இதனால் பரிட்சையில் வேண்டுமானால் pass ஆகிவிடலாம். நமது மனசாட்சிக்கு தெரியும் அதை நாம் உணர்ந்து இயல்பாக எழுதினோமா அல்லது படித்ததை அப்படியே எழுதினோமா என்று. இயல்பாக யோசனை செய்து program எழுதுபவர்தான் நல்ல கம்பெனியில் வேலைக்கு சேரமுடியும். மனப்பாடம் செய்தவர் தன்னால் இயல்பாக program மை எழுதமுடியவில்லையே என்று அங்கலாய்த்து மீண்டும் ஏதாவது ஒரு course படிக்க போகிறேன் என்று போய்விடுவார்.

இதனால்தான் நாம் பாடத்திட்டத்தில் உள்ள பாடங்களை பார்க்காமல் இயல்பாக நமது வாழ்வில் நடைபெறும் நிகழ்ச்சிகளை program மாக மாற்றிவருகிறோம். இதன்மூலம் நமது சிந்திக்கும் திறன் அதிகமாகிறது. அனைத்துசெயல்களிலும் ஒரு logic இருப்பதை உணரமுடிகிறது.

No comments:

Post a Comment