This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Wednesday, August 7, 2013

Procedures பற்றிய விரிவான விளக்கம்


முந்தைய பாகத்தில் subroutine னுடைய பயன்களை அறிந்துகொண்டோம். இந்த பாகத்தில் இன்னும் விவரமாக பார்ப்போம்.

Procedures / functions / sub-program / subroutine  என்று எப்படி குறிப்பிட்டாலும் அதனுடைய நோக்கம் நமது புரோகிராமை சிறு சிறு துண்டுகளாக பிரிப்பது என்பதால் குழப்பமடையத் தேவையில்லை.

இதில் sub-program / subroutine என்று தனியாக எதுவும் கிடையாது. ஆனால் Procedure ரையோ அல்லது function னையோ குறிப்பிட இவை பயன்படுத்தப்படுகிறது. ஆகையால்procedure மற்றும் function னை பற்றி தெரிந்துகொண்டாலே போதுமானது.

Procedure என்றால் என்ன?

ஒரு செயலை எப்படி செயல்படுத்துவது என்பது பற்றிய கட்டளைகளை உள்ளடக்கியதை procedure எனலாம்.

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

இந்த procedure ஐ நாம் call செய்தால் தனக்குள் இருக்கும் கட்டளைகளை அது செயல்படுத்தும்.

Procedure Syntax

procedure procedure_name (optional parameters)
begin
-- procedure body..
-- mention what procedure to do
end;

Function Syntax

function function_name (optional parameters) : return_type
begin
-- body of function
-- mention what function to do
   return something;
end;

மேற்கண்ட இரண்டிற்குமிடையே உள்ள வித்தியாசம் என்னவென்று தெரிகிறதா?

ஆம் return என்பது function னில் இருக்கிறது ஆனால் procedure ரில் இல்லை.

Procedure ரும் function னும் ஒரே மாதிரி செயல்பட்டாலும் Procedure எந்த value வையும் return செய்யாது. ஆனால் function இறுதியில் ஒரு value வை return  செய்யும்.

Procedure இல்லாமல் program எழுத முடியுமா?

முடியும். சிறிய program மாக இருந்தால் பிரச்சினை இருக்காது. ஆனால் பெரிய Program மாக இருந்தால் procedure ரை தவிர்க்கவே முடியாது.

ஒருவர் தன்னுடைய கடைக்கு ஒரு program வேண்டுமென்று கேட்கிறார். அவருடைய கடையை நிர்வகிக்க என்னென்னவெல்லாம் தேவைப்படும் என்று யோசனை செய்ததில் cash invoice, credit invoice, purchase invoice, cash receipt, cash payment, voucher என்று பட்டியல் தெரியவந்தது. Sample ளுக்கு இரண்டு format டுகளை தயாரித்து அவரிடம் நம்ம programmer காண்பிக்கிறார். ஆஹா அருமை என்று பாராட்ட அவரும் புரோகிராம் எழுதுகிறார்.

கீழே உள்ள இரு படங்களை பார்க்கவும்.


sample cash invoice, karkandu, tamil programming guide
Sample Cash Invoice

sample credit invoice, procedures vs functions
Sample Credit Invoice

மேற்கண்ட இரண்டு format களையும் print செய்ய எப்படி code எழுதியுள்ளார் என்று பார்ப்போம்.
program without procedures, procedure example, தமிழ் கம்ப்யுட்டர்
மேலோட்டமாக பார்க்கும் போது code சரியாக இருப்பது போல தோன்றினாலும்என்னென்ன பிரச்சினைகள் இதிலுள்ளன என்று பார்ப்போமா?
  1. இரண்டு invoice களிலும் company யினுடைய பெயரை பிரிண்ட் செய்கிறார். இதற்காக இரண்டு invoice களிலும் தனித்தனியாக code எழுதியுள்ளார்.
  2. அதேபோல இரண்டு invoice களிலும் footer note print செய்ய தனித்தனியாக code எழுதியுள்ளார். 
  3. இப்படி ஒரே மாதிரியான code ஒரு புரோகிராமில் திரும்பத்திரும்ப பயன்படுத்துவது code redundancy யை உண்டாக்கும். அதென்ன redundancy? அதாங்க duplicate code.
இப்படியாக 10 வகையான screen களை design செய்து program செய்துவிட்டபின்பு கடைக்காரருக்கு ஒரு யோசனை தோன்றுகிறது. ஏம்ப்பா தம்பி கடை டெலிபோன் நம்பர் தலைப்புல இருந்தா நல்லாயிருக்குமே அதை விட்டுட்டீங்களேன்னு ஒரே போடு போட, நம்மாளும் சரிங்கன்னு போய் மாற்றிவிடுகிறார். 

பின்பு பார்த்தால் 10 invoice ல நான்குல போன் நம்பரை காணோம். என்னாயிற்றுன்னு guess பண்ண முடியுதா? ஆம். அதேதான்... நம்மாளு எல்லா invoice லேயும் மாற்ற மறந்துட்டார். Code redundancy இருந்தால் இந்த தவறு கண்டிப்பாக நிகழும்.

இப்படியாக ஒவ்வொரு modification செய்யும்போதும் ஏதாவதொரு தவறு எங்காவது நிகழத்தான் செய்யும்.

அப்போ இதை தவிர்க்க வழியே கிடையாதான்னு நீங்கள் நினைக்கலாம். வழி இருக்கிறது வாங்க procedure இதற்கு எப்படி பயன்படுதுன்னு பார்க்கலாம்.
program with procedure or function, procedures, functions, தமிழ் கம்ப்யூட்டர்
இங்கே இரண்டு procedure கள்  எழுதப்பட்டுள்ளன. இரண்டையும் எத்தனை தடவை வேண்டுமானாலும் call செய்துகொள்ளலாம். ஒரு Procedure எப்படி வேலை செய்கிறதென்பதும் அம்புக்குறி மூலம் விளக்கப்பட்டுள்ளது. 

Void function 

C, C++ முதலிய Programming Language களில் Procedure  என்று தனியாக எதுவும் இருக்காது. Function மட்டும் தான் இருக்கும். இருப்பினும் அதை Procedure போல வேலை செய்ய வைக்கலாம். எப்படி என்கிறீர்களா? Void Function என்று எழுதிக்கொள்ளலாம். Void என்றால் Function which does not return anything என்று அர்த்தம். அதாங்க Procedure.

Void Function = Procedure  (இரண்டும் சமம்)

இதனால் கிடைக்கும் பயன்கள்:
  1. Code reusability - ஒரே code ஐ பல இடங்களில் பயன்படுத்திக்கொள்ள முடிகிறது. 
  2. Avoid redundancy - ஒரே code ஐ பல தடவை duplicate ஆக திரும்பத்திரும்ப எழுதுவது தவிர்க்கப்படுகிறது.
  3. Reduce complexity - நமது புரோகிராமை பிரித்து subroutine களாக எழுதுவதால் புரிந்து கொள்வது (பராமரிப்பது) எளிதாகிறது.  
இப்போ சொல்லுங்க, கடைக்காரர் தலைப்பிலேயோ அல்லது கீழ்ப்புறத்திலோ எங்கு மாற்றம் செய்ய விரும்பினாலும் ஒரு இடத்தில் மாற்றம் செய்தால் அது அனைத்து இடங்களிலும் பிரதிபலிக்கும்தானே?.

என்ன புரிந்ததா ?

நல்லது...இனி
  • Procedure with parameters
  • Named parameters
  • Optional parameters
  • Pass by value
  • Pass by reference
  • Built-in function
  • User defined function
  • Variable scope
என்றால் என்ன என்பதை அடுத்து பார்க்கலாம்.

Subroutine என்றால் என்ன?


முந்தைய பாகத்தில் loop என்றால் என்னவென்று பார்த்தோம். இனி subroutine என்றால் என்ன? அது எதற்காக பயன்படுகிறது என்பதை பார்ப்போம்.

Subroutine என்றால் என்ன?

நாம் எழுதும் புரோகிராமை நமது வசதிக்கேற்ப அல்லது பயன்பாட்டிற்கேற்ப சிறிய சிறிய அளவில் தனித்தயாக - துண்டுகளாக - எழுதுவதை subroutine என்கிறோம்.  

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

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

Subroutine னால் கிடைக்கும் பயன்கள்: 

Code reusability - ஒரே code ஐ பல இடங்களில் பயன்படுத்திக்கொள்ள முடிகிறது.

Avoid redundancy - ஒரே code ஐ பல தடவை duplicate ஆக திரும்பத்திரும்ப எழுதுவது தவிர்க்கப்படுகிறது.

Reduce complexity - நமது புரோகிராமை பிரித்து subroutine களாக எழுதுவதால் புரிந்து கொள்வது (பராமரிப்பது) எளிதாகிறது.

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

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

இவருக்கு கருவி செய்ய தெரியும் என்றாலும் அதனால் ஏற்படும் விளைவுகள் என்னென்ன?

முதன்முதலில் ஒரு கருவியை செய்யும்போது ஏற்பட்ட காலவிரயம் ஒவ்வொருதடவையும் ஏற்படுகிறது.

ஒவ்வொரு முறை புதிது புதிதாக செய்வதால் ஒவ்வொரு கருவியிலும் ஏதாவதொரு technical fault ஏற்பட சாத்தியம் உள்ளது.

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

ஒரு கருவியில் ஏற்பட்ட technical fault ஐ சரிசெய்தாலும் அதே fault ஐ அனைத்து கருவிகளிலிருந்தும் நீக்க முடியும் என்பதற்கு உத்தரவாதம் கிடையாது. 

இப்படி ஏகப்பட்ட பிரச்சினைகள் இதில் உள்ளன.

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

ஓய்வு நேரத்தில் அவன் வெவ்வேறு வேலைக்கு தேவைப்படும் இயந்திரங்களை கண்டுபிடிக்க ஆரம்பித்தான்.

இரண்டு நபருக்கும் உள்ள வேறுபாடு தெரிகிறதா?

தெரிந்தால்தான் உங்களுக்கு code reusability, avoid redundancy, reduce complexity யின் அர்த்தம் புரியும். Subroutine னுடைய தேவையும் புரியும்.

இதனை procedures / functions / sub-program / subroutine  என்றும் குறிப்பிடுவார்கள். அதைப் பற்றி அடுத்த பாகத்தில் பார்ப்போம்.

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

 
முந்தைய பதிவில் 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 ஐ பற்றி தெரிந்துகொள்ள இன்னும் நிறைய விசயங்கள் உள்ளன. அவற்றை அடுத்த பாகத்தில் பார்ப்போம்.

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.

புரிந்ததா?