Wednesday, August 7, 2013

While Loop பில் பல ரகம்


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

WHILE this_boolean_condition_is_true
BEGIN
  execute these statements
  your statements here
END

இது எவ்வாறு வேலை செய்ததென்று பார்த்தோம்?

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 செல்லும்.

இதில் கவனிக்க வேண்டியது என்னவென்றால் இங்கு condition முதலில் evaluate செய்யப்பட்டு பின்னர் அதன் முடிவுக்கேற்ப statement டுகள் execute செய்யப்படுகின்றன.

ஆனால் ஒரு சில சமயங்களில் இதை தலைகீழாக செய்யவேண்டிய சூழ்நிலை ஏற்படலாம். அதாவது statement டுகள் முதலில் execute செய்யப்பட்டு அதன் பின்னர் condition evaluate செய்யப்பட்டு அந்த condition true வாக இருக்கும் வரையில் மீண்டும் அந்த statement களை திரும்பத்திரும்ப execute செய்யவேண்டி வரும்.

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

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

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

என்ன நடக்கும் என்பதை step by step ப்பாக பார்ப்போம். அப்போதுதான் எளிதில் விளங்கும்.

step 1 : அம்மா! மோட்டார் சைக்கிள் எனக்கு வேண்டும். அத்தாவிடம் சொல்லி வாங்கித்தாங்க என்று கேட்கிறீர்கள்
step 2 : அம்மாவும் அத்தாவிடம் கேட்கிறார்
step 3 : அத்தா இப்போது முடியாது என்கிறார்.
step 4 : மோட்டார் சைக்கிள் கிடைக்காது போல இருக்கிறது, இன்னும் கொஞ்சம் அழுத்தமாக கேட்கவேண்டும் என்று முடிவு செய்கிறீர்கள். மீண்டும் step 1 க்கு போகிறீர்கள்.

இங்கே முதலில் condition எதுவும் evaluate செய்யப்படவில்லை பார்த்தீர்களா? step 1 மற்றும் 2 ல் சில காரியங்கள் (statements execute) செய்யப்படுகிறது. அதன் பின்னர் step 3 யில் அதன் result தெரிகிறது.

இப்பொழுது step 3 யில் கிடைத்த பதில் (result or condition) evaluate செய்யப்படுகிறது. அதன் அடிப்படையில் திரும்பவும் step 1 க்கு போகவேண்டுமா அல்லது வேண்டாமா என்பது தீர்மானிக்கப்படுகிறது.

இதன் முடிவு எப்படி எல்லாம் இருக்கும்?

வாய்ப்பு 1:
step 3: அத்தா வாங்கித் தரலாம் என்கிறார்
step 4: மோட்டார் சைக்கிள் கிடைத்துவிடும் போல தெரிகிறது. மீண்டும் step 1 க்கு போகவேண்டாம் என்று தீர்மானிக்கிறீர்கள்.

வாய்ப்பு 2:
step 3: பொருளாதார வசதியைக் காட்டி அத்தா இப்போது முடியாது என்கிறார்.
step 4 : மோட்டார் சைக்கிள் கிடைக்காது போல இருக்கிறது, நிலைமையை உணராமல் இன்னும் கொஞ்சம் அழுத்தமாக கேட்கவேண்டும் என்று முடிவு செய்கிறீர்கள். மீண்டும் step 1 க்கு போகிறீர்கள்.

வாய்ப்பு 3:
step 3: பொருளாதார வசதியைக் காட்டி அத்தா இப்போது முடியாது என்கிறார்.
step 4 : மோட்டார் சைக்கிள் கிடைக்காது போல இருக்கிறது, நிலைமையை உணர்ந்து உங்கள் கோரிக்கையை கைவிட்டுவிடலாம் மீண்டும் step 1 க்கு போகவேண்டாம் என்று தீர்மானிக்கிறீர்கள்.

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

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

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

நீங்கள் புரோகிராமராக ஒரு வேலையில் சேர்ந்தால், for loop ஐ பயன்படுத்தி while loop பை பயன்படுத்தி if condition போட்டு function ஒன்றை எழுதி ஒரு புரோகிராம் செய்து தாருங்கள் என்று ஒருவரும் உங்களை கேட்கமாட்டார்கள்.

அல்லது find the biggest number, find the Fibonacci series, reverse the string என்றெல்லாம் கேட்கமாட்டார்கள். அப்படி கேட்பார்கள் என்றால் நாம் மனப்பாடம் பண்ணிகொள்ளலாம். ஆனால் வேலைக்கு சேர்ந்த பின்பு மண்டை காய்ந்து போகிற மாதிரி bus company ஐ நிர்வகிக்க ஒரு புரோகிராம் வேண்டும். school management program வேண்டும் என்று கேட்பார்கள்.

இதையெல்லாம் நான் பள்ளியிலோ, கல்லூரியிலோ, கம்ப்யூட்டர் செண்டரிலோ படிக்கவில்லை என்று சொல்வீர்களா? சொன்னால் உங்கள் வேலை காலி!

சரி bus company க்கு ஒரு program வேண்டுமென்றால் நாமே கற்பனையாக ஒரு concept ஐ உருவாக்கி அதை புரோகிராமாக செய்து கொடுக்கமுடியுமா? நீங்கள் செய்தது bus company நடைமுறைக்கு ஒத்துவரவில்லை என்று உங்களையும் உங்கள் program மையும் ஓரங்கட்டிவிடுவார்கள்.

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

பஸ் கம்பெனியில் நடக்கும் ஒரு சின்ன விசயத்தை புரிந்துகொள்ளாமல் போனாலும் உங்கள் புரோகிராமில் ஒரு ஓட்டை விழுந்துவிடும்.

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

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

பயிற்சியை தொடங்குவோம்.

மேற்கண்ட மோட்டார் சைக்கிள் உதாரணத்தில்  4 step புகள் இருக்கின்றன. அவை திரும்பத்திரும்ப செயல்படுத்தப்படுகின்றன. இதற்கு loop பயன்படும் என்பது விளங்குகிறது.

அடுத்ததாக இதை for loop பயன்படுத்தி எழுத முடியுமா என்று பார்க்கலாம். முடியாது. ஏனென்றால் இத்தனை தடவைதான் மோட்டார் சைக்கிள் வாங்கித்தருமாறு கேட்கவேண்டும் என்று முதலிலேயே தீர்மானித்துகொண்டா கேட்பீர்கள்? இல்லைதானே. எனவே for loop இதற்கு பயன்படாது.

அடுத்ததாக இதை while loop பயன்படுத்தி எழுத முடியுமா என்று பார்க்கலாம். முடியாது. ஏனென்றால் நாம் பார்த்த while loop ப்பில் condition முதலில் evaluate செய்யப்படவேண்டும். மோட்டார் சைக்கிள் கிடைக்கவி்ல்லையானால் என்பது condition. நமது செயலில் இந்த condition ஐ முதலில் போடமுடியாது. உங்களிடம் அப்பா மோட்டார் சைக்கிள் வாங்கித்தரமாட்டேன் என்று முதலில் கூறுவாரா என்ன? 

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

WHILE மோட்டார் சைக்கிள் கிடைக்கவி்ல்லை மீண்டும் கேட்கவும்
BEGIN
  step 1 : அம்மா! மோட்டார் சைக்கிள் எனக்கு வேண்டும். அத்தாவிடம் சொல்லி வாங்கித்தாங்க என்று கேட்கிறீர்கள்
  step 2 : அம்மாவும் அத்தாவிடம் கேட்கிறார்
  step 3 : அத்தா இப்போது முடியாது என்கிறார்.
 step 4 : மோட்டார் சைக்கிள் கிடைக்காது போல இருக்கிறது, இன்னும் கொஞ்சம் அழுத்தமாக கேட்கவேண்டும் என்று முடிவு செய்கிறீர்கள். மீண்டும் step 1 க்கு போகவேண்டும். அல்லது கிடைத்துவிட்டால் step 1 க்கு போகவேண்டாம்.
END

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

Do..While loop பின் syntax

DO
  execute these statements
  your statements here
WHILE this_boolean_condition_is_true

do while loop example, mohamed riyadul faridh, j.m.r. faridh, முஹம்மது ரியாதுல் ஃபரீத், முஹம்மது ரியாதுல் பரீத், முகம்மது


DO
  step 1 : அம்மா! மோட்டார் சைக்கிள் எனக்கு வேண்டும். அத்தாவிடம் சொல்லி வாங்கித்தாங்க என்று கேட்கிறீர்கள்
  step 2 : அம்மாவும் அத்தாவிடம் கேட்கிறார்
  step 3 : அத்தா இப்போது முடியாது என்கிறார்.
 step 4 : மோட்டார் சைக்கிள் கிடைக்காது போல இருக்கிறது, இன்னும் கொஞ்சம் அழுத்தமாக கேட்கவேண்டும் என்று முடிவு செய்கிறீர்கள். மீண்டும் step 1 க்கு போகவேண்டும். அல்லது கிடைத்துவிட்டால் step 1 க்கு போகவேண்டாம்.
WHILE இன்னொரு முறை கேட்கனுமா?

do while loop example, mohamed riyadul faridh, j.m.r. faridh, முகம்மது ரியாதுல் ஃபரீத், முகம்மது ரியாதுல் பரீத், முகமது ரியாதுல் பரீத்

condition true / false என்பது இறுதியில் evaluate செய்யப்படுவதால் ஒரு தடவையாவது உங்கள் கோரிக்கையை execute செய்ய do while loop உதவுகிறது.

The difference between do..while and while..do loop is that do..while evaluates its expression at the bottom of the loop instead of the top. Therefore, the statements within the do block are always executed at least once.

புரிந்ததா?

0 comments:

Post a Comment