Monday, November 26, 2012

4 While loop என்றால் என்ன?

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

புரோகிராமிங் என்றால் என்ன? தொடர் 19

 
முந்தைய பதிவில் for loop ஐ பற்றி பார்த்தோம் அல்லவா. இந்த பதிவில் while loop  ஐ பற்றி பார்ப்போம்.

ஒரு condition true வாக இருக்கும் வரையில் குறிப்பிட்ட statement களை திரும்பத்திரும்ப execute செய்ய while loop பயன்படுகிறது.

இதையேதான் for loop செய்கிறதே, பின்பு அதற்கும் இதற்கும் என்ன வித்தியாசம் என்று கேட்கிறீர்களா? வித்தியாசம் இருக்கிறது. For loop வேலை செய்வதற்கு ஆரம்ப எண்ணும் முடிவு எண்ணும் அவசியம் தேவை. ஆனால் while loop பிற்கு ஆரம்ப எண், முடிவு எண் அவசியமில்லை, தேவையானால் வேறுவகையில் பயன்படுத்திக் கொள்ளலாம்.

While loop பின் syntax

WHILE this_boolean_condition_is_true
BEGIN
  execute these statements
  your statements here
END

மேலே இருக்கும் while loop எப்படி வேலை செய்கிறதென்பதை இனி பார்ப்போம்.

while loop, mohamed riyadul faridh, new era technology, do while loop

step 1 : முதலில் this_boolean_condition_is_true என்பது true ஆக இருக்கிறதா? இல்லை false ஆக இருக்கிறதா? என்பது evaluate செய்யப்படுகிறது.

step 2 : ஒருவேளை step 1 னுடைய result false ஆக இருந்தால் begin மற்றும் end டுக்கு நடுவில் இருக்கும் statement கள் execute செய்யப்படாது. end டுக்கு அடுத்துள்ள part க்கு control சென்று விடும்.

step 3: ஒருவேளை step 1 னுடைய result true ஆக இருந்தால் begin மற்றும் end டுக்கு நடுவில் இருக்கும் statement கள் execute செய்யப்படும். பின்னர் மீண்டும் step 1 க்கு control செல்லும்.

இப்படியாக this_boolean_condition_is_true என்பது true ஆக இருக்கும் வரை while loop தனக்குள் இருக்கும் statement களை திரும்பத்திரும்ப execute செய்துகொண்டேயிருக்கும்.

இப்படியே execute செய்துகொண்டிருந்தால் endless loop ஆக ஆகிவிடுமே? program hang ஆக விடுமே என்ற கேள்வி எழும். உண்மைதான் for loop ஐ போன்று இத்தனை முறை execute செய்துவிட்டு வெளியேறிவிடு என்று இதில் நாம் எழுதப்போவதில்லை. பிறகு எப்படி while loop முடிவுக்கு வருகிறது?

while loop ல் statement எழுதுகிறோம் அல்லவா? அங்குதான் while loop பின் முடிவு எல்லை எதுவென்று தீர்மானிக்கப்படுகிறது.

அதாவது while loop execute ஆகினால் ஏதாவது ஒன்று நடக்கும் அல்லவா? அந்த ஒன்றின் அடிப்படையில் while loop ஐ தொடர்வதா வேண்டாமா என்பதை நம்மால் தீர்மானிக்க முடியும்.

உதாரணத்திற்கு உங்கள் ஊரில் தண்ணீர் பஞ்சம் வந்துவிட்டதென்று வைத்துக்கொள்வோம். பிரச்சினை தீர  கிணறு ஒன்று வெட்ட முடிவாகிவிட்டது. ஊரில் நீங்கள்தான் படித்தபிள்ளை என்று கிணறு வெட்ட உங்களிடம் plan கேட்கிறார்கள். இப்பொழுது நீங்கள் algorithm எழுதவேண்டும்.

எப்படி எழுதுவீர்கள்?

1. கிணறு வெட்ட வேண்டிய இடத்தை தேர்வு செய்யவும்.
2. இத்தனை அடி ஆழம் கிணறு வெட்டவும்.

இந்த பிளானை கொடுத்தவுடன், எத்தனை அடி வெட்டனும் தம்பின்னு கேட்பார்கள். நீங்க 10 அடின்னு சொல்றீங்க. 10 அடி ஆழத்தில் தண்ணீர் கிடைத்துவிடும் என்று எப்படி தம்பி சொல்றீங்க? ஒருவேளை கிடைக்கலைன்னா என்ன செய்யறது?

அவர்கள் கேள்வி நியாயமாக இருக்கிறது.

10 அடிதான் கிணறு வெட்ட வேண்டும் என்பதை முன்னரே தீர்மானிக்க இயலாது என்பதுதான் யதார்த்தமான உண்மை (ஆனால் for loop புக்கு முடிவு எல்லை ஆரம்பத்திலேயே தீர்மானிக்கப்பட்டுவிடுகிறது என்பதை கவனத்தில் கொள்ளவும்). பின்னே இந்த மாதிரி வேலைகளுக்கு முடிவு எல்லையை எப்படி வரையறுப்பது?

லாஜிக் இல்லாமல் எவராலும் கிணறு வெட்ட முடியாது. சரி யோசிப்போம்...

சரி 20 அடி என்று மாற்றுவீர்களா? இதிலும் அதே பிரச்சனை உள்ளது.

பின்னே எப்படித்தான் கிணறு வெட்ட algorithm எழுதுவது?

1. கிணறு வெட்ட வேண்டிய இடத்தை தேர்வு செய்யவும்.
2. தண்ணீர் கிடைக்கும் வரை கிணறு வெட்டவும்.

சூப்பர்! இதைத்தான் யதார்த்தமாக யோசிப்பது என்பது.

மேலோட்டமாக இருக்கும் 2 ஆவது step ல் பல விசயங்கள் அடங்கியுள்ளன. அவற்றை விவரித்து எழுதினால் தான் while loop ஐ பற்றி நன்றாக அறிந்துகொள்ளமுடியும்.

எப்படி விவரித்து எழுதுவது?
யோசியுங்கள்....

1. கிணறு வெட்ட வேண்டிய இடத்தை தேர்வு செய்யவும்.
2. தண்ணீர் கிடைக்கும் வரை
  2.1. பள்ளம் தோண்டவும்
  2.2. ஒருவேளை தண்ணீர் கிடைத்து விட்டால் தோண்டுவதை நிறுத்தவும்
 2.3 ஒருவேளை 200 அடி ஆழம் வரை தோண்டியும் தண்ணீர் கிடைக்கவில்லையென்றால் தோண்டுவதை நிறுத்தவும்

எவ்வளவு எதார்த்தமான வழிமுறை பார்த்தீர்களா? இதில் ஏதாவது கற்பனை இருக்கிறதா?

அவ்வளவுதான் இப்போது லாஜிக் கிடைத்துவிட்டது.

இதை while loop பயன்படுத்தி எழுதுவோமா?

while  தண்ணீர் கிடைக்கும் வரை 
begin
    பள்ளம் தோண்டவும்
    ஒருவேளை தண்ணீர் கிடைத்து விட்டால் தோண்டுவதை நிறுத்தவும்
  ஒருவேளை 200 அடி தோண்டியும் தண்ணீர் கிடைக்கவில்லையென்றால் தோண்டுவதை நிறுத்தவும்
end

இங்கு 200 அடி என்பது எங்கள் ஊர் மக்கள் எவ்வளவு அடி அதிகபட்சம் வெட்டுவார்கள் என்பதை தெரிவித்ததால் அப்படி போட்டுள்ளேன். மற்றபடி அவரவர் தேவைக்கேற்ப முடிவு எல்லை மாறுபடும்.

while loop example, how while loop works, j.m.r.faridh


இப்பொழுது while loop நமது வாழ்வில் எப்படி பயன்படுத்தப்படுகிறது என்பது தெரிகிறதா? இது ஒரு உதாரணம்தான் இன்னும் நிறைய உதாரணங்கள் இருக்கின்றன. விரிவஞ்சி இதை மட்டும் சொல்கிறேன்.

இந்த மாதிரி விசயத்துக்கு for loop சரிப்பட்டு வராது என்பது இப்பொழுது உங்களுக்கு புரிந்திருக்கும் என்று நம்புகின்றேன்.

while loop ஐ பற்றி தெரிந்துகொள்ள இன்னும் நிறைய விசயங்கள் உள்ளன. அவற்றை அடுத்த பாகத்தில் பார்ப்போம்.

முந்தைய பாகம்

அடுத்த பாகம்



4 comments:

  1. Brilliant! Absolutely top class explanation. If even I can understand and appreciate it, I am sure everyone can do the same. I wish I meet you one day in person.

    ReplyDelete
    Replies
    1. மிக்க நன்றி. புரோகிராமிங் தெரிந்துகொள்ள விரும்புவர்கள் இந்த பாடங்களை ஒருமுறையேனும் படித்தால் அவர்களுக்கு இந்த கலை எதார்த்தமாக தெரியும்.

      Delete
  2. மிக்க நன்றி.தொடருங்கள் நண்பரே

    ReplyDelete
  3. மிக அழகான விளக்கம். இப்படி சொல்லிக் கொடுத்தால் நிச்சயமாக புரோகிராமிங்கும் தித்திக்கும்.

    ReplyDelete