Sunday, December 13, 2009.
Welcome to R.R.VIJAYAKUMAR Garden of Poems. Contained herein are selected poems by Ahil. A poem is like a flower: all are beautiful in their ownway, yet no two are ever alike.

Enjoy your excursion through the following pages and please sign the Guestbook before you leave. Your comments are most welcome.
Leia Mais...
0

பயணம்

நியாஸ் அஹமட்

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

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

"எப்படி இருகிறீர்கள்?"

"நல்ல இருக்கிறேன் சார்!" என்றார் சுத்தமான தமிழில்

ஆச்சர்யத்தில் "தமிழா!.. சார்" என்றேன்

"ஆமாம்! சார், திருச்சி பக்கத்தில் ஒரு கிராமம்"

"உங்கள் மனைவி எப்படியிருக்கிறார்கள்? " என்றேன்...

என்னனை ஊடுருவி பார்த்த அவர் "இன்னும் கல்யாணம் ஆகவில்லை"
என்றார் அதிலேயே அவர் எத்தனை முறை இந்த கேள்வியை எதிர் கொண்டிருப்பார் என்று என்னால் யூகிக்க முடிந்தது..

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

வெளிநாடுகளில் ஒரு ஆணோ!., பெண்ணோ!., திருமணம் செய்யாமல் வாழ்வதென்பது மிகவும் சாதாரணம், ஆனால், நம் நாட்டில் கல்யாணம் என்பது ஓர் 'social responsibility', நம் கலாச்சாரமும், மதங்களும் அதையே!.., போதிக்கின்றன. திருமணம் இல்லை என்றால் அவர்களை நாம் ஒரு குற்றவாளியைப் போல் பார்க்கிறோம்..!

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


ஆனால் ஒரே துறையில் வேலை செய்துக்கொண்டு எவ்வளவு நாள்தான் பார்க்காமல் இருப்பது, விதி மூன்று மாதம் கழித்து மறுபடியும் அவருடன் அதே இடத்திற்கு செல்ல வேண்டியிருந்தது...! சரி இந்த முறை அவ்வாறு ஏதும் பேசக்கூடாது என்று நினைத்து..... அவரிடம் "சின்னதாக ஒரு ஹலோ! சொன்னேன்" பதிலுக்கு அவரும் ஒரு "ஹலோ" சொன்னார்!...

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

"பெய்யும் சார்.. எப்பவாவது" என்றார்

மறுபடியும் ஒரு கனத்த மௌனம் பின் அவர் "நீங்கள் என்ன படித்திருக்கிறீர்கள் எந்த ஊர் சொந்த ஊர்? என்ற சம்பிரதாய கேள்விகள் கேட்டார்"

நானும் கார் கண்ணாடி வழியே வெளியில் பார்த்துக்கொண்டே.... பதில் சொல்லிக்கொண்டிருந்தேன்...!

"என்ன சார் எதோ வேண்டா வெறுப்பாக பதில் சொல்லுகிறீர்கள்"

"இல்ல சார்... அன்னைக்கி நான் கேட்ட கேள்வியில் நீங்கள் மனசுடைந்ததை நான் பார்த்தேன் அதனால்தான் என்றேன்..!" மிகவும் கனிவான குரலில்.

"நீங்கள் என்ன சார் செய்வீர்கள் அது என் விதி..." என்றார்....

தன் கதையை சொன்னார்...!

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

"இதுவரை எந்த சகோதரிகள் திருமணத்திலும் நான் பங்கெடுத்துக் கொண்டதில்லை... மூன்று, நான்கு வருடத்திற்க்கு ஒருமுறை ஊருக்குப் போவேன்..." என்றார்!

"என் டிக்கெட் பணமும் கல்யாண சேலைவுககுத்தான் போகும்" என்றார்

"என்ன சார் இது ரொம்ப கஷ்டமாக இருக்குமே!!" என்றேன்

"என்ன சார் பண்ணுறது, இது என் விதி" என்றார்

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

அதற்குப்பிறகு அவர் மேல் ஒரு பெர்ர்ர்ர்ரிய மரியாதையே! வந்தது. அன்றிலிருந்து இன்று வரை அவர் எனக்கு ஒரு நல்ல நண்பராகவே இருக்கிறார்......

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

"ஆரம்ப சுகாதார நிலையத்தில் வேலை செய்தார்...." என்றார்

"அப்படி என்றால் ?"

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

நான் அவர் என்னை இறக்கிவிட்ட இடத்திலேயே நின்றேன் சிலையாய்........
Leia Mais...
0

கல் மனது!

மு.ஜாகீர்உசேன்

அடி மேல் அடி விழ
அம்மியும் நகருமாம்!
எறும்பு ஊற கல்லும்
தேயுமாம்!

உன் செல்போனுக்கு - நான்
ரிங் அடிக்க -
ரிங் அடிக்க
கண்டுகொள்ள
மாட்டேன்
என்கிறாயே!
உன் இதயம் தான் என்ன
கல்லை விட கடினமானதா?.
Leia Mais...
1

காதல் வெண்பனி

வேதா. இலங்காதிலகம், டென்மார்க்.

பனி எழுதும் கவிதை
நுனிப் புல்லில் குவியும்.
தனி அழகாய்ப் பொழியும்.
நனி அணியாய்ப் படியும்.
ஊனினை உருக்கும் உயிராம்
மானிடக் காதலெனும் வெண்பனியும்
தனிச் சுவையாய்ப் படியும்.
கனிச் சுவையாய் இனிக்கும்.

பூவினக் காதல் உணர்வால்
காவிரியாகும் நாளங்கள் பூச்சொரியும்.
சாவியாகிச் சாதனைக்கு உரமாகும்.
காவியங்கள் குவிக்கும் சஞ்சீவி.
பாவிரித்துப் பதிக்கும் எழுதுகோல்.
பவித்திரமாய் உயிரை உசுப்பும்
தெவிட்டாதது. சொல்லித் தெரியாக்கலை.
ஆவியின் ஐவதுளி காதல்.

காதற் கதகளி அரங்கேறாவிடில்
காட்டுவழிப் பாதை ஆகும்.
கூட்டுக் களி வெறுப்பாகும்.
மோட்டு வளைப் பார்வையாகும்.
ஏட்டுப் படிப்பு எகிறிவிடும்.
தீட்டென்று விலக்கு மோதலை!
தேட்டம் கொள்ளு காதலில்!
பாட்டை மாற்று, அற்புதம் காண்பாய்!
Leia Mais...
0

மனிதம்

சாந்தி தங்கராஜா

மனிதம் மதிக்கப்படாவிட்டாலும்
மிதிக்கப்படாதிருக்கட்டுமே
மானுடம் போற்றப்படாவிட்டாலும்
தூற்றப்படாதிருக்கட்டுமே
மனிதன் உறைவிடம் இல்லாதிருந்தாலும்
உயிரோடு வாழட்டுமே
மங்கையர் மணமாலை சூடாவிட்டாலும்
மானத்தோடு வாழட்டுமே
மழலைகள் மண்ணுக்குள் புதையாமல்
தாய் மடியில் உறங்கட்டுமே

ஆழிப் பேரலையில் அடிபட்ட உறவுகளுக்கு
மீண்டும் ஒரு கறுப்பு ஜுலையா?
வேண்டாம் கண்ணின் மணிகூட
எமக்கினி கறுப்பாக வேண்டாம்
கருமைக்கு முடிவுகட்டி
வெண்மை ஒளிர்ந்திட
வெண்புறாக்கள் பறந்திட
ஒன்றுபடுவோம்

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

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

ஆண்டவன் அடி தொழுது
அல்லும் பகலும் கருவிற் சுமந்து
அன்பாய்ப் பெற்றெடுத்து
ஆரமுது ஊட்டிய
அன்னையும் இங்கில்லை
மகவும் இன்றில்லை

பெற்றோரின் புன்னகை தெரியுமுன்
வாழ்வின் வாசனை அறியுமுன்
புத்தம் புது மலர்கள்
புதைகுழிகளில் வீழவோ
இன்றிந்த விதியை
யாரவன் எழுதி வைத்தான்.
Leia Mais...
0

காதலி!

க.வினோச்குமார், பாரிஸ்

தொலைந்த பனித் துளியை
தேடும் புல்போல்
தேடுகிறேன் நான் உனை - நீ
வேரோடு கலந்ததை மறந்து.
Leia Mais...
0

காதல் என்பது

அகில்

காதல் என்பது
கற்களால் கட்டப்படுவதல்ல
இதயங்களால் கட்டப்படுவது

காதல் என்பது
இதயங்களைப் பிரிப்பதல்ல
இதயங்களை இணைப்பது

காதல் என்பது
தூற்றப்பட வேண்டியதுதல்ல
பூசிக்கப்பட வேண்டியது

காதல் என்பது
புயல் போன்றதல்ல
தென்றல் போன்றது

காதல் என்பது
நிறத்தைப் பொறுத்ததல்ல
இதயத்தைப் பொறுத்தது

காதல் என்பது
வயதைப் பொறுத்ததல்ல
மனதைப் பொறுத்தது

காதல் என்பது
ஆற்றல்களைக் கட்டுப்படுத்துவதல்ல
ஆற்றல்களை
வெளிக்கொண்டு வருவது

காதல் என்பது
பிறரை இனம் காண்பது மட்டுமல்ல
உன்னை நீயே இனம் காண்பது

காதல் என்பது
ஆண்டவனிடம் நீ
சரணடைவதல்ல
அந்த ஆண்டவனையே
உன்னிடம்
சரணடையச் செய்வது!

காதல் என்பது
சாக்கடையல்ல
சரஸ்வதி
இதில்
வேடிக்கையென்னவென்றால்......
நீந்தத் தெரிந்தவர்களே
கரையேறுகின்றார்கள்
முடியாதவர்களோ
மூழ்கிப் போகின்றார்கள்.
Leia Mais...
0

பூங்கா!

அகரம்.அமுதா

நரகத் திடையே
துறக்கம் போல
நகரத் திடையே பூங்காக்கள் -அதில்
சிரிக்கும் பூக்களைத்
திருடா திருக்கத்
திறனுடன் காக்கும் கூர்க்காக்கள்! (1)

சின்னப் பூக்கள்
சிரிக்கும் அழகில்
சிந்தும் தேனின் சுவைகண்டு -மிகக்
கன்னம் வைத்துக்
கவின்மலர்த் தேனைக்
கவர்ந்து போகும் பொன்வண்டு! (2)

திங்கள் தவழும்
தென்றல் உலவும்
சிவந்த மாலைப் பொழுதினிலே -மணம்
தங்கும் பூங்கா
தன்னைச் சார்ந்து
தங்கிக் களிப்பார் தனிமையிலே! (3)

விரித்த பாய்போல்
விளங்கும் பாதை
விளிம்பில் இருக்கை நிறைந்திருக்கும் -அதில்
இருக்கும் மனம்விடுத்(து)
இடையிடை மறைவில்
இருக்கும் வகையால் உளமுவக்கும்! (4)

அமைதி தேடி
அலையும் கூட்டம்
அமர்ந்து பொழுதைக் கழிக்கிறது -அதில்
அமைதி தேட
அமைத்த பூங்கா
அமைதி இழந்து தவிக்கிறது! (5)

மாலை வந்தால்
மக்கள் வந்து
மலிவார் அமைதி பறிபோகும் -சிலர்
மாலை வந்தால்
மனத்துயர் விடுத்து
மறுபடி கிளப்ப இரவாகும்! (6)

பின்னல் தலையில்
பிஞ்சுப் பூக்கள்
பிறங்கப் பூங்கா சிரிக்கிறது -அட
புன்னகை சிந்தும்
பூக்களை மெல்லப்
பூவிரல் நாடிப் பறிக்கிறது! (7)

சிரித்து மகிழ்ந்து
சிலபொழு திருந்து
செலவே சிலபேர் வருகின்றார் -உளம்
வருத்தும் நினைவின்
வளர்முளை கிள்ளி
மறக்கச் சிலபேர் வருகின்றார்! (8)

போகாப் பொழுதைப்
போக்கித் தொலைக்கப்
பூங்கா சேரும் சிலருண்டு -உடல்
வாகாய் விளங்க
வடிநற் காற்று
வாங்க வருவார் சிலருண்டு! (9)

முந்தியை விரித்து
மூலையில் படுத்து
மூழ்கிடும் கனவில் ஒருகூட்டம் -அட
குந்திய இடத்திற்
கொஞ்சிக் குலவிக்
குடித்தனம் நடத்தும் ஒருகூட்டம்! (10)

ஓவ்வொரு மரமும்
ஓவ்வொரு கல்லென
உணர்ந்து மரச்சிலை அவர்வடித்தால் -அதில்
அவ்வவர் துணையொடு
அண்டிக் களித்து
அனைத்துக் கலைகளும் இவர்படிப்பார்! (11)

கொணர்ந்த பொருளைக்
குதப்பித் தின்றுக்
குப்பை யாக்கச் சிலர்வருவார் -மலர்
மணக்கும் பூங்கா
மணத்தைக் குளைக்க
வாயிற் புகையொடு சிலர்வருவார்! (12)

நகைக்கும் பூங்கா
நாடி மகிழ்ந்து
நடையைக் கட்டல் பீடாகும் -சுருள்
புகைக்கும் அரங்கெனப்
புகைத்தாற் ப+ங்கா
புகழ்தனை இழந்து காடாகும்! (13)

விழுப்ப மெல்லாம்
விளங்கும் ஒழுக்கம்
வீரிட் டழுவுது பூங்காவில் -இவ்
ஒழுக்கக் குறைகள்
ஒழித்து விழுப்பம்
உயர்ந்து விளங்க யார்காவல்? (14)

சீருடை அணிந்த
சிறார்கள் போலச்
சிரிக்கும் பூங்கா வெடிக்கிறது -பெரும்
பேருடை தன்னின்
பெரும்புகழ் குறைத்தல்
பிழையெனச் சாடி முடிக்கிறது! (15)
Leia Mais...
0

காணாமல் போனவர்கள்!

இ.பா.சிந்தன்

முதல் வகுப்பின்
முகப்பு நாள்!

அம்மாவின் முந்தானையில்
அழுகையும் புலம்பலுமாய்
ஆர்ப்பாட்டம் செய்தநாள்!

இடக்கையோ அன்னையை பிடிக்க
வலக்கையை ஆசிரியை இழுக்க
வகுப்பின் வாசலிலே
வடம்பிடித்து அடம்பிடித்தநாள்!

மிரட்டலின் முடிவிலே
முகமெங்கும் கண்ணீராய்
முன்வரிசைச்சீட்டிலே
முனகலுடன் அமர்ந்தநாள்!

அழுகையெல்லாம் முடிந்தபின்னர்
அருகிலே அமர்ந்தவனை
பெயரென்ன கூறு என
பார்வையாலே கேட்டு வைத்தேன்!

வீ.ரவி என்றான்!
பி.பாலு என்றேன்!

தோள்மீது கைபோட்டான்!
தோழன் கிடைத்துவிட்டான் - என
தைரியமாய் புன்னகைத்தேன்!

பின்னால் திரும்பினால்
பாவாடை சட்டையில்
பக்கத்துவீட்டு பவானி!

தெற்றுப்பல் தெரியவே
தாராளமாய் சிரித்துவைத்தேன்!

வேகமாய் உருண்டன
வருடங்கள் சில....

ஆறாம் வகுப்பிலே
அடியெடுத்து வைத்தேன்!

வீ.ரவியை காணவில்லை!
வீட்டிற்கே சென்று பார்த்தேன்!

வறுமையென்றான்!
வடைசுட்டு விற்பதாக
வருத்தமாய் வாடிநின்றான்!
விளங்கவில்லை எனக்கொன்றும்!

காலப்போக்கில்
காணாமல் போனான்!

வேகமாய் உருண்டன
வருடங்கள் சில....

எட்டாக்கனியை எட்டிப்பிடித்தவனாய்
எட்டாம் வகுப்பு உள்நுழைந்தேன்!

பாவாடை சட்டையெல்லாம்
தாவணிக்கு தாவிவிட்ட
திடீர் திருப்பம்!

அரை டவுசரெல்லாம்
முழுதாய் மாறிய காலம்!

பின்வரிசை மாணவர்கள்
பாதிப்பேர் காணவில்லை!

பெயிலாகிச்சென்றோர் சிலர்!
பாசாகித்தொடராதோர் பலர்!

வறுமையென்றார்கள்! ஏழ்மையென்றார்கள்!
விளங்கவில்லை எனக்கொன்றும்!

காணாமல் போனவர்கள் எங்கே?
கேள்விக்கு விடையில்லை!

படிப்பில் முதல்மாணவி
பவானியும் காணவில்லை!

மனதிற்குள் சிறுமகிழ்ச்சி!-இனிநான்
முதல்மாணவன் ஆகிடலாமே!

வீடுசென்றேன்,
விவரம் கேட்க!

பக்கத்து பங்களாவில்
பாத்திரம் தேய்க்கும் வேலை!

கிழிசல்கள் நிறைந்த
கந்ததுணியே அவள் ஆடை!

என் புத்தகப்பையை
பார்த்த அவளின் ஏக்கப்பார்வை!

குளமாகியது கண்கள்!

வேகமாய் உருண்டன
வருடங்கள் சில....

பாடச்சுமைநினைத்தே
பத்தாம் வகுப்பினுள்
பயந்தே கால்வைத்தேன்!

முட்டிபோட்டு அடிபெற்றோர்
மக்கென்றும் தத்தியென்றும்
மகுடங்கள் சூட்டப்பட்டோர்
யாவருமே காணவில்லை!

பாதியும் இல்லை
பெண்களின் எண்ணிக்கை!

காணாமல் போனவர்கள் எங்கே!
கேள்விக்கு விடையில்லை!

பனிரெண்டாம் வகுப்பும் வந்தது!
காணாதோர் பட்டியலும்
கடகடவென உயர்ந்தது!

பொதுத்தேர்வும் முடிந்தது!
பள்ளிப்பருவத்திற்கு
புள்ளியொன்று வைத்தது!

கனவுக்கோட்டையுடன்
கல்லூரி வாயிலிலே
காலடி எடுத்து வைத்தேன்!

பார்வையில் படவில்லை
பள்ளிநண்பர் எவரும்!

ஏழ்மைகொண்ட மாணவர்கள்
எவருமிங்கு காணவில்லை!

காணாமல் போனவர்கள் எங்கே!
கேள்விக்கு விடையில்லை!

கல்விதனை காசாக்கும்
கொடுமையினை எதிர்ப்போம்!
காணாதோர் பட்டியலை -இனி
இல்லாமல் செய்வோம்!
Leia Mais...
0

மழைக்காலங்களில்...

பாலாஜி.ச.இமலாதித்தன்

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

மழைக்காலங்களில்
உன்
புன்னகை
காணாத
வானவில்லும்
சாயம்
வெளுத்து
சாய்ந்து
கிடக்கிறது
வானில்
வண்ணங்களற்று...

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

மழைக்காலங்களில்
நீ
குடை பிடித்து
மழையில்
நடக்கும்போதெல்லாம்
உன்னுள்
கூடல்
கொள்ள முடியாத
மழைதுளிகளெல்லாம்
கோபித்து கொண்டு
சண்டையிடுகிறது
உன்
குடையோடு...

மழைக்காலங்களில்
உன்னை
தொடாமல்
மண்ணை
தொடும்
மழைத்துளிகள்
கண்ணீரோடே
வழிந்தோடுகிறது
சாலையோர
சாக்கடையில்...

மழைக்காலங்களில்
உன்னை
தொட்டுவிட்டு
மண்ணை
தொடும்
மழைதுளிகள்தான்
மோட்சமடைகிறதாம்
அதனால்
குடையை
கொஞ்சம்
தூர
வைத்துவிட்டு
தூரலில்
கொஞ்சம்
உன் முகத்தை
காட்டிவிடு...
எனக்கு
செய்த
பாவம்போக்க
இதுபோல்
புண்ணியங்கள் சில
செய்து விடு....!
Leia Mais...
0

உன்னால் உணர்ந்தவை

மன்னார் அமுதன்

துக்கத்தை
உணர்ந்திருக்கிறாயா?
கறுப்பா ? சிவப்பா ?
என்கிறாய்

முதன் முதலாய்
வெற்றிலையிடுகையில்
கொட்டைப்பாக்கின் துவர்ப்பு
தொண்டைக்குள் அடைக்குமே
சுவைத்திருக்கிறாயா..?

மேல் நெஞ்சிலோர்
முழுமீன் ஓடி
சதைகள் செரித்து விட
நடுமுள் மூச்சடைப்பதாய்
உணர்ந்திருக்கிறாயா..?

முட்டிக் கால்கள்
மூர்ச்சையாகி
உடல் வலு தாங்காமல்
சாய்வதற்கு சுவர் தேடுமே
சாய்ந்துள்ளாயா..?

மேலும் கீழும்
இரத்தம் ஓடினாலும்
கைகள் மட்டும்
காற்றுப் போன பலூனாய்
தொய்ந்து போகுமே
அதுதான் துக்கம்

அதைத் தராமல்
நீ கொண்டதில்லை தூக்கம்

உனக்கான காத்திருப்பில்
மனம் லயித்தே
காலம் கழிக்கிறேன்

தாமதித்தே வருவாயென
தெரிந்திருந்தும்
ஒவ்வொரு சந்திப்பிலும்
நேரத்திற்கே பிரசன்னமாகிறேன்

உன் வருகை
பிழைக்கையில் தான்
ஏதோ பிசைகிறது

அதைத்தான் துக்கமென்கிறேன்..
நீயோ
கறுப்பா ? சிவப்பா ?
என்கிறாய்
Leia Mais...
0

இனிய பொழுதுகள்

பாலாஜி.ச.இமலாதித்தன்

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

சீரும் ஆற்றின்
படித்துறை
ஓரமாய் பாய்ந்துகுதித்து
கீறும் மணலிடையே
பாதங்கள்
படியநின்று
மூச்சை இடைநிறுத்தி
பலமணிநேரம்
மூழ்கி கிடந்து
நெஞ்சளவு
நீரினுள்
நீச்சலோடு நிலைத்து
லயித்து கிடந்ததும்...

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

பாசி படிந்த
படிகளை எண்ணி
என் பெயரையும்
எழுதிவிட்டு
பார்த்து மகிழ்ந்ததும்...

கிளிஞ்சல் எடுத்து
நீரை கீறி
தட்டுகல்விட்டு
தம்பட்டம் அடித்து
சிரித்ததும்...

துண்டினாலே
வலைவீசி
துள்ளிக்குதித்த
சின்னஞ்சிறு
மீன்களையெல்லாம்
அள்ளியெடுத்த
அந்த
காலை பொழுதுகளும்...

ஒய்யாரமாய்
ஊர்சுற்றி
பனை
இலந்தை
ஈச்ச மரம்
தேடியலைந்த
அந்த
மதியநேர பொழுதுகளும்...

ஆத்தங்கரையோர
ஆலமர
நிழலில்
பாலத்து மதில்மேல
பலமணிநேரம்
அமர்ந்து
ஊர்கதை
பேசி திரிந்த
அந்த
மாலை பொழுதுகளும்...

இதுபோல்
இன்னும்பல
இனியபொழுதுகள்
இனிவொரு நாளும்
திரும்பவும்
வந்துவிடுமா...?
Leia Mais...
0

ஹைக்கூ கவிதைகள்

முத்துவேல்

மந்திரி இறப்பு ,
தேர்தல் அறிவிப்பு,
பணம் விநியோகிப்பு ..

அடக்கம் செய்,
பூமியின் ஆயுள் மிஞ்சும் ,
மரங்களின் விதை ...
Leia Mais...
0

என்னுள் நீயிருப்பதால்....

வேதா. இலங்காதிலகம், டென்மார்க்.

நம்பிக்கையென்று வழி நடந்தபோது
நம்பிக்கையிழந்தும் மனம் சோர்வதில்லை
நங்கூரமென நீயிருப்பதால் தானே!

அனுபவக் கிரீடமென நரைகள் அணிவகுத்தும்
அகத்தில் இளமை ஆழ்வது
அருகில் நீயிருப்பதால் தானே!

கன்னித் தமிழ் மேகமாயென்னுள்ளே கவிந்து
வண்ணத் தமிழ்ச் சாரல் தூவுகிறாய்!
எண்ணக் கருவாகி நிற்கிறாயே!

கவிதைக் கனற் பொறியை நீயறிவாய்.
கவிதை காற்றாய்க் கனலாய் என்னுள்ளே
குடை விரிந்தது உன்னால் தானே!

எண்ணம் பகிர்ந்திட அருகில்
எழிலாய் நீயிருக்க என்னுள்
எறும்பின் சுறுசுறுப்பு வந்திடுமே!

போர் தொடுக்குமுலகில் அன்பின்
ஏர் கொண்டு சாரத்தியம் பண்ணும்
சீர் அறிந்தவன் நீதானே!

நிழல் குடையாய்க் கவியும்
உன் நிம்மதி வதனத்தின் அமைதியெனக்கு
நிறைவு தருமொரு சக்தி தானே!
Leia Mais...
0

நான் மட்டும் இல்லையென்றால்....

நான் மட்டும் இல்லையென்றால்....

மன்னார் அமுதன்

காலச் சக்கரத்தின்
கோரைப் பற்களில் சிக்கி
ஏதோவொரு மணித்துளியில்
நானும் மாண்டு போவேன்

என்றும்
சுற்றும் பூமி சுற்றும்
வெடித்த மொட்டு மலரும்

அஸ்தமனத்தின் பின்னரான
முன்னிரவில்
நிலா முளைக்கும்

அன்றும்
நீரில்லா நிலவில்
மாவரைத்து
வடை சுடுவாள் பாட்டி

சூரியனும்
கிழக்கே தான் உதிக்கும்

மேற்கே உதித்தாலும்
மறக்காமல்
நமக்கெல்லாம் வியர்க்கும்

மூன்றாம் நாட்களில்
காய்ந்து போன
ஆற்றின் சுவடாய்க்
கண்ணீர் வற்றிவிட

அவரவர் செயல் நோக்கி
சிந்தனைத் தூண்டல்களுடன்
உறவுகள் பறக்கும்

எட்டாம் நாளில்
ஒருமுறையும்...

முப்பத்தியொன்றாம் நாளில்
மறுமுறையும்...

அவர்களின்
செத்த நாக்குகளையும்
சொந்தங்களையும்
உயிர்ப்பிக்கும்
எனக்கான நினைவுகூறல்கள்

ஒருபொழுதில்
எனக்குப் பிடித்தவற்றை
விட்டுக் கொடுக்காதவர்கள்

தானே முன்வந்து
படையிலிடுவார்கள்
என்னைப் பிடிக்குமென்று

வாழ்கையில்
வாழ்த்தத் தெரியாதவர்க்கெலாம்
வாய்ப்பளித்து
வாய்மூடிக் கிடப்பேன்
நடுமுற்றத்தில்

அவர்கள் உதிர்க்கும்
பொய்களைக் கேட்க
செவியென்றும் திறந்தே இருக்கும்

மரமொன்று
வீழ்ந்துஇ காய்ந்து
கருகி மறைவதாய்
நானும் அழிவேன்

நானில்லா நிறையைச்
சமன் செய்ய
மற்றோர் தளிர் முளைக்கும்

சுற்றும் பூமி சுற்றும்
இன்னும் வேகமாய்

அன்றும் ஒருவன்
சொல்லிக்கொண்டிருப்பான்
'நானில்லையென்றால்...?'
Leia Mais...
0

Object Oriented Programming Lab

Thursday, December 3, 2009.
Brief Introduction to the C Programming Language



Object Oriented Programming Lab



Introduction

* The C programming language was designed by Dennis Ritchie at Bell Laboratories in the early 1970s
* Influenced by
o ALGOL 60 (1960),
o CPL (Cambridge, 1963),
o BCPL (Martin Richard, 1967),
o B (Ken Thompson, 1970)
* Traditionally used for systems programming, though this may be changing in favor of C++
* Traditional C:
o The C Programming Language, by Brian Kernighan and Dennis Ritchie, 2nd Edition, Prentice Hall
o Referred to as K&R

Fred Kuhns ()

CSE332– Object Oriented Programming Lab



Standard C

* Standardized in 1989 by ANSI (American National Standards Institute) known as ANSI C
* International standard (ISO) in 1990 which was adopted by ANSI and is known as C89
* As part of the normal evolution process the standard was updated in 1995 (C95) and 1999 (C99)
* C++ and C
o C++ extends C to include support for Object Oriented Programming and other features that facilitate large software development projects
o C is not strictly a subset of C++, but it is possible to write “Clean C” that conforms to both the C++ and C standards.




Elements of a C Program

* A C development environment includes
o System libraries and headers: a set of standard libraries and their header files. For example see /usr/include and glibc.
o Application Source: application source and header files
o Compiler: converts source to object code for a specific platform
o Linker: resolves external references and produces the executable module
* User program structure
o there must be one main function where execution begins when the program is run. This function is called main
+ int main (void) { ... },
+ int main (int argc, char *argv[]) { ... }
+ UNIX Systems have a 3rd way to define main(), though it is not POSIX.1 compliant
int main (int argc, char *argv[], char *envp[])
o additional local and external functions and variables







A Simple C Program

* Create example file: try.c
* Compile using gcc:
gcc –o try try.c
* The standard C library libc is included automatically
* Execute program
./try
* Note, I always specify an absolute path
* Normal termination:
void exit(int status);
o calls functions registered with atexit()
o flush output streams
o close all open streams
o return status value and control to host environment



/* you generally want to

* include stdio.h and

* stdlib.h

* */

#include

#include

int main (void)

{

printf(“Hello World\n”);

exit(0);

}



Source and Header files

* Just as in C++, place related code within the same module (i.e. file).
* Header files (*.h) export interface definitions
o function prototypes, data types, macros, inline functions and other common declarations
* Do not place source code (i.e. definitions) in the header file with a few exceptions.
o inline’d code
o class definitions
o const definitions
* C preprocessor (cpp) is used to insert common definitions into source files
* There are other cool things you can do with the preprocessor




Another Example C Program

example.c

/* this is a C-style comment

* You generally want to palce

* all file includes at start of file

* */

#include

#include

int

main (int argc, char **argv)

{

// this is a C++-style comment

// printf prototype in stdio.h

printf(“Hello, Prog name = %s\n”,

argv[0]);

exit(0);

}

/* comments */

#ifndef _STDIO_H

#define _STDIO_H

... definitions and protoypes

#endif

/usr/include/stdio.h

/* prevents including file

* contents multiple

* times */

#ifndef _STDLIB_H

#define _STDLIB_H

... definitions and protoypes

#endif

/usr/include/stdlib.h

#include directs the preprocessor

to “include” the contents of the file

at this point in the source file.

#define directs preprocessor to define macros.





Passing Command Line Arguments

* When you execute a program you can include arguments on the command line.
* The run time environment will create an argument vector.
o argv is the argument vector
o argc is the number of arguments
* Argument vector is an array of pointers to strings.
* a string is an array of characters terminated by a binary 0 (NULL or ‘\0’).
* argv[0] is always the program name, so argc is at least 1.




./try –g 2 fred

argc = 4,

argv =

‘t’‘r’‘y’‘\0’

argv:

[0]

[1]

[2]

[3]

[4] NULL

‘-’‘g’‘\0’

‘2’‘\0’

‘f’‘r’‘e’‘d’‘\0’


C Standard Header Files you may want to use

* Standard Headers you should know about:
o stdio.h – file and console (also a file) IO: perror, printf, open, close, read, write, scanf, etc.
o stdlib.h - common utility functions: malloc, calloc, strtol, atoi, etc
o string.h - string and byte manipulation: strlen, strcpy, strcat, memcpy, memset, etc.
o ctype.h – character types: isalnum, isprint, isupport, tolower, etc.
o errno.h – defines errno used for reporting system errors
o math.h – math functions: ceil, exp, floor, sqrt, etc.
o signal.h – signal handling facility: raise, signal, etc
o stdint.h – standard integer: intN_t, uintN_t, etc
o time.h – time related facility: asctime, clock, time_t, etc.



The Preprocessor

* The C preprocessor permits you to define simple macros that are evaluated and expanded prior to compilation.



* Commands begin with a ‘#’. Abbreviated list:
o #define : defines a macro
o #undef : removes a macro definition
o #include : insert text from file
o #if : conditional based on value of expression
o #ifdef : conditional based on whether macro defined
o #ifndef : conditional based on whether macro is not defined
o #else : alternative
o #elif : conditional alternative
o defined() : preprocessor function: 1 if name defined, else 0
#if defined(__NetBSD__)




Preprocessor: Macros

* Using macros as functions, exercise caution:
o flawed example: #define mymult(a,b) a*b
+ Source: k = mymult(i-1, j+5);
+ Post preprocessing: k = i – 1 * j + 5;
o better: #define mymult(a,b) (a)*(b)
+ Source: k = mymult(i-1, j+5);
+ Post preprocessing: k = (i – 1)*(j + 5);
* Be careful of side effects, for example what if we did the following
o Macro: #define mysq(a) (a)*(a)
o flawed usage:
+ Source: k = mysq(i++)
+ Post preprocessing: k = (i++)*(i++)
* Alternative is to use inline’ed functions
o inline int mysq(int a) {return a*a};
o mysq(i++) works as expected in this case.




Preprocessor: Conditional Compilation

* Its generally better to use inline’ed functions
* Typically you will use the preprocessor to define constants, perform conditional code inclusion, include header files or to create shortcuts
* #define DEFAULT_SAMPLES 100
* #ifdef __linux

static inline int64_t
gettime(void) {...}

* #elif defined(sun)

static inline int64_t
gettime(void) {return (int64_t)gethrtime()}

* #else

static inline int64_t
gettime(void) {... gettimeofday()...}

* #endif




Another Simple C Program

int main (int argc, char **argv) {

int i;

printf(“There are %d arguments\n”, argc);

for (i = 0; i < argc; i++) printf(“Arg %d = %s\n”, i, argv[i]); return 0; } * Notice that the syntax is similar to Java * What’s new in the above simple program? o of course you will have to learn the new interfaces and utility functions defined by the C standard and UNIX o Pointers will give you the most trouble Fred Kuhns () CSE332– Object Oriented Programming Lab * A variable declared as an array represents a contiguous region of memory in which the array elements are stored. int x[5]; // an array of 5 4-byte ints. * All arrays begin with an index of 0 * An array identifier is equivalent to a pointer that references the first element of the array o int x[5], *ptr; ptr = &x[0] is equivalent to ptr = x; * Pointer arithmetic and arrays: o int x[5]; x[2] is the same as *(x + 2), the compiler will assume you mean 2 objects beyond element x. Arrays and Pointers 0 1 2 3 4 1 0 2 3 little endian byte ordering memory layout for array x Fred Kuhns () CSE332– Object Oriented Programming Lab Pointers * For any type T, you may form a pointer type to T. o Pointers may reference a function or an object. o The value of a pointer is the address of the corresponding object or function o Examples: int *i; char *x; int (*myfunc)(); * Pointer operators: * dereferences a pointer, & creates a pointer (reference to) o int i = 3; int *j = &i; *j = 4; printf(“i = %d\n”, i); // prints i = 4 o int myfunc (int arg); int (*fptr)(int) = myfunc; i = fptr(4); // same as calling myfunc(4); * Generic pointers: o Traditional C used (char *) o Standard C uses (void *) – these can not be dereferenced or used in pointer arithmetic. So they help to reduce programming errors * Null pointers: use NULL or 0. It is a good idea to always initialize pointers to NULL. Fred Kuhns () CSE332– Object Oriented Programming Lab Pointers in C (and C++) Address 0x3dc 0x3d8 Program Memory 0x3cc 0x3c8 0x3c4 0x3c0 Note: The compiler converts z[1] or *(z+1) to Value at address (Address of z + sizeof(int)); In C you would write the byte address as: (char *)z + sizeof(int); or letting the compiler do the work for you (int *)z + 1; Step 1: int main (int argc, argv) { int x = 4; int *y = &x; int *z[4] = {NULL, NULL, NULL, NULL}; int a[4] = {1, 2, 3, 4}; ... 0x3bc 0x3b8 0x3b4 0x3b0 0x3d4 0x3d0 z[3] z[2] z[1] z[0] a[3] a[2] a[1] a[0] 4 0x3dc 0 0 0 0 4 3 2 1 NA NA x y Fred Kuhns () CSE332– Object Oriented Programming Lab Pointers Continued 4 0x3dc Address 0x3dc 0x3d8 Program Memory 0x3bc 0x3b8 0x3b4 0x3b0 0x3cc 0x3c8 0x3c4 0x3c0 Step 1: int main (int argc, argv) { int x = 4; int *y = &x; int *z[4] = {NULL, NULL, NULL, NULL}; int a[4] = {1, 2, 3, 4}; Step 2: Assign addresses to array Z z[0] = a; // same as &a[0]; z[1] = a + 1; // same as &a[1]; z[2] = a + 2; // same as &a[2]; z[3] = a + 3; // same as &a[3]; 0x3bc 0x3b8 0x3b4 0x3b0 4 3 2 1 NA 0x3d4 0x3d0 z[3] z[2] z[1] z[0] a[3] a[2] a[1] a[0] NA x y Fred Kuhns () CSE332– Object Oriented Programming Lab Pointers Continued 4 0x3dc Address 0x3dc 0x3d8 Program Memory 0x3bc 0x3b8 0x3b4 0x3b0 0x3cc 0x3c8 0x3c4 0x3c0 Step 1: int main (int argc, argv) { int x = 4; int *y = &x; int *z[4] = {NULL, NULL, NULL, NULL}; int a[4] = {1, 2, 3, 4}; Step 2: z[0] = a; z[1] = a + 1; z[2] = a + 2; z[3] = a + 3; Step 3: No change in z’s values z[0] = (int *)((char *)a); z[1] = (int *)((char *)a + sizeof(int)); z[2] = (int *)((char *)a + 2 * sizeof(int)); z[3] = (int *)((char *)a + 3 * sizeof(int)); 0x3bc 0x3b8 0x3b4 0x3b0 4 3 2 1 NA 0x3d4 0x3d0 z[3] z[2] z[1] z[0] a[3] a[2] a[1] a[0] NA x y Fred Kuhns () CSE332– Object Oriented Programming Lab Getting Fancy with Macros #define QNODE(type) \ struct { \ struct type *next; \ struct type **prev; \ } #define QNODE_INIT(node, field) \ do { \ (node)->field.next = (node); \

(node)->field.prev = \

&(node)->field.next; \

} while ( /* */ 0 );

#define QFIRST(head, field) \

((head)->field.next)

#define QNEXT(node, field) \

((node)->field.next)

#define QEMPTY(head, field) \

((head)->field.next == (head))

#define QFOREACH(head, var, field) \

for ((var) = (head)->field.next; \

(var) != (head); \

(var) = (var)->field.next)

#define QINSERT_BEFORE(loc, node, field) \

do { \

*(loc)->field.prev = (node); \

(node)->field.prev = \

(loc)->field.prev; \

(loc)->field.prev = \

&((node)->field.next); \

(node)->field.next = (loc); \

} while (/* */0)

#define QINSERT_AFTER(loc, node, field) \

do { \

((loc)->field.next)->field.prev = \

&(node)->field.next; \

(node)->field.next = (loc)->field.next; \

(loc)->field.next = (node); \

(node)->field.prev = &(loc)->field.next; \

} while ( /* */ 0)

#define QREMOVE(node, field) \

do { \

*((node)->field.prev) = (node)->field.next; \

((node)->field.next)->field.prev = \

(node)->field.prev; \

(node)->field.next = (node); \

(node)->field.prev = &((node)->field.next); \

} while ( /* */ 0)

Fred Kuhns ()

CSE332– Object Oriented Programming Lab



typedef struct wth_t {

int state;

QNODE(wth_t) alist;

} wth_t;


#define QNODE(type) \

struct { \

struct type *next; \

struct type **prev; \

}

After Preprocessing and Compiling

typedef struct wth_t {

int state;

struct {

struct wth_t *next;

struct wth_t **prev;

} alist;

} wth_t;


state

next

prev

3 words in memory

0

0x00100

0x00104

0x100

head: instance of wth_t

0x104

0x108

memory layout after GCC

CPP

QNODE_INIT(head, alist)

#define QNODE_INIT(node, field) \

do { \

(node)->field.next = (node); \

(node)->field.prev = &(node)->field.next;\

} while ( /* */ 0 );

Fred Kuhns ()

CSE332– Object Oriented Programming Lab



#define QINSERT_BEFORE(head, node, alist)\

do { \

*(head)->alist.prev = (node); \

(node)->alist.prev = (head)->alist.prev; \

(head)->alist.prev = &(node)->alist.next;\

(node)->alist.next = (head); \

} while (/* */0)

QNODE Manipulations

0x100

0

0x100

0x104

head

0x104

0x108

0x1a0

0

0x1a0

0x1a4

node0

0x1a4

0x1a8

QINSERT_BEFORE(head, node0, alist);

?

before

Fred Kuhns ()

CSE332– Object Oriented Programming Lab



#define QINSERT_BEFORE(head, node, alist)\

do { \

*(head)->alist.prev = (node); \

(node)->alist.prev = (head)->alist.prev; \

(head)->alist.prev = &(node)->alist.next;\

(node)->alist.next = (head); \

} while (/* */0)

0x100

0

0x100

0x104

head

0x104

0x108

0x1a0

0

0x1a0

0x1a4

node0

0x1a4

0x1a8

QINSERT_BEFORE(head, node0, alist);

0x100

0

0x1a0

0x104

head

0x104

0x108

0x1a0

0

0x1a0

0x1a4

node0

0x1a4

0x1a8

QNODE Manipulations

before


#define QINSERT_BEFORE(head, node, alist)\

do { \

*(head)->alist.prev = (node); \

(node)->alist.prev = (head)->alist.prev; \

(head)->alist.prev = &(node)->alist.next;\

(node)->alist.next = (head); \

} while (/* */0)

0x100

0

0x100

0x104

head

0x104

0x108

0x1a0

0

0x1a0

0x1a4

node0

0x1a4

0x1a8

QINSERT_BEFORE(head, node0, alist);

0x100

0

0x1a0

0x104

head

0x104

0x108

0x1a0

0

0x1a0

0x104

node0

0x1a4

0x1a8

QNODE Manipulations

before

Fred Kuhns ()

CSE332– Object Oriented Programming Lab



#define QINSERT_BEFORE(head, node, alist)\

do { \

*(head)->alist.prev = (node); \

(node)->alist.prev = (head)->alist.prev; \

(head)->alist.prev = &(node)->alist.next;\

(node)->alist.next = (head); \

} while (/* */0)

0x100

0

0x100

0x104

head

0x104

0x108

0x1a0

0

0x1a0

0x1a4

node0

0x1a4

0x1a8

QINSERT_BEFORE(head, node0, alist);

0x100

0

0x1a0

0x1a4

head

0x104

0x108

0x1a0

0

0x1a0

0x104

node0

0x1a4

0x1a8

QNODE Manipulations

before

Fred Kuhns ()

CSE332– Object Oriented Programming Lab



#define QINSERT_BEFORE(head, node, alist)\

do { \

*(head)->alist.prev = (node); \

(node)->alist.prev = (head)->alist.prev; \

(head)->alist.prev = &(node)->alist.next;\

(node)->alist.next = (head); \

} while (/* */0)

0x100

0

0x100

0x104

head

0x104

0x108

0x1a0

0

0x1a0

0x1a4

node0

0x1a4

0x1a8

QINSERT_BEFORE(head, node0, alist);

0x100

0

0x1a0

0x1a4

head

0x104

0x108

0x1a0

0

0x100

0x104

node0

0x1a4

0x1a8

QNODE Manipulations

before



#define QINSERT_BEFORE(head, node, alist)\

do { \

*(head)->alist.prev = (node); \

(node)->alist.prev = (head)->alist.prev; \

(head)->alist.prev = &(node)->alist.next;\

(node)->alist.next = (head); \

} while (/* */0)

0x100

0

0x100

0x104

head

0x104

0x108

0x1a0

0

0x1a0

0x1a4

node0

0x1a4

0x1a8

QINSERT_BEFORE(head, node0, alist);

0x100

0

0x1a0

0x1a4

head

0x104

0x108

0x1a0

0

0x100

0x104

node0

0x1a4

0x1a8

QNODE Manipulations

before

Fred Kuhns ()

CSE332– Object Oriented Programming Lab



Adding a Third Node

0x100

0

0x1a0

0x1a4

head

0x104

0x108

0x1a0

0

0x100

0x104

node0

0x1a4

0x1a8

QINSERT_BEFORE(head, node1, alist);

0x200

0

0x200

0x204

node1

0x204

0x208

#define QINSERT_BEFORE(head, node, alist)\

do { \

*(head)->alist.prev = (node); \

(node)->alist.prev = (head)->alist.prev; \

(head)->alist.prev = &(node)->alist.next; \

(node)->alist.next = (head); \

} while (/* */0)

0x200

0

0x200

0x204

node1

0x204

0x208

0x100

0

0x1a0

0x1a4

head

0x104

0x108

0x1a0

0

0x100

0x104

node0

0x1a4

0x1a8


Adding a Third Node

0x100

0

0x1a0

0x1a4

head

0x104

0x108

0x1a0

0

0x100

0x104

node0

0x1a4

0x1a8

QINSERT_BEFORE(head, node1, alist);

0x100

0

0x1a0

0x1a4

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x200

0x204

node1

0x204

0x208

#define QINSERT_BEFORE(head, node1, alist)\

do { \

*(head)->alist.prev = (node1); \

(node1)->alist.prev = (head)->alist.prev; \

(head)->alist.prev = &(node1)->alist.next; \

(node1)->alist.next = (head); \

} while (/* */0)

0x200

0

0x200

0x204

node1

0x204

0x208

(1)

(1)


Adding a Third Node

0x100

0

0x1a0

0x1a4

head

0x104

0x108

0x1a0

0

0x100

0x104

node0

0x1a4

0x1a8

QINSERT_BEFORE(head, node1, alist);

0x100

0

0x1a0

0x1a4

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x200

0x204

node1

0x204

0x208

#define QINSERT_BEFORE(head, node1, alist)\

do { \

*(head)->alist.prev = (node1); \

(node1)->alist.prev = (head)->alist.prev; \

(head)->alist.prev = &(node1)->alist.next; \

(node1)->alist.next = (head); \

} while (/* */0)

0x200

0

0x200

0x1a4

node1

0x204

0x208

(1)

(2)

(2)


Adding a Third Node

0x100

0

0x1a0

0x1a4

head

0x104

0x108

0x1a0

0

0x100

0x104

node0

0x1a4

0x1a8

QINSERT_BEFORE(head, node1, alist);

0x100

0

0x1a0

0x204

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x200

0x204

node1

0x204

0x208

#define QINSERT_BEFORE(head, node1, alist)\

do { \

*(head)->alist.prev = (node1); \

(node1)->alist.prev = (head)->alist.prev; \

(head)->alist.prev = &(node1)->alist.next; \

(node1)->alist.next = (head); \

} while (/* */0)

0x200

0

0x200

0x1a4

node1

0x204

0x208

(1)

(1)

(2)

(2)

(3)

(3)


Adding a Third Node

0x100

0

0x1a0

0x1a4

head

0x104

0x108

0x1a0

0

0x100

0x104

node0

0x1a4

0x1a8

QINSERT_BEFORE(head, node1, alist);

0x100

0

0x1a0

0x204

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x200

0x204

node1

0x204

0x208

#define QINSERT_BEFORE(head, node1, alist)\

do { \

*(head)->alist.prev = (node1); \

(node1)->alist.prev = (head)->alist.prev; \

(head)->alist.prev = &(node1)->alist.next; \

(node1)->alist.next = (head); \

} while (/* */0)

0x200

0

0x100

0x1a4

node1

0x204

0x208

(1)

(1)

(2)

(2)

(3)

(3)

(4)

(4)





Removing a Node

0x100

0

0x1a0

0x204

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x100

0x1a4

node1

0x204

0x208

QREMOVE(node0, alist);

0x100

0

??

??

head

0x104

0x108

0x1a0

0

??

??

node0

0x1a4

0x1a8

0x200

0

??

??

node1

0x204

0x208

#define QREMOVE(node, alist) \

do { \

(1) *((node)->alist.prev) = (node)->alist.next; \

(2) ((node)->alist.next)->alist.prev = (node)->alist.prev;\

(3) (node)->alist.next = (node); \

(4) (node)->alist.prev = &((node)->alist.next); \

} while ( /* */ 0)

Fred Kuhns ()

CSE332– Object Oriented Programming Lab



Removing a Node

0x100

0

0x1a0

0x204

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x100

0x1a4

node1

0x204

0x208

QREMOVE(node0, alist);

#define QREMOVE(node, alist) \

do { \

*((node)->alist.prev) = (node)->alist.next; \

((node)->alist.next)->alist.prev = (node)->alist.prev;\

(node)->alist.next = (node); \

(node)->alist.prev = &((node)->alist.next); \

} while ( /* */ 0)

0x100

0

0x1a0

0x204

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x100

0x1a4

node1

0x204

0x208



0

0x200

0x204

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x100

0x1a4

node1

0x204

0x208

Removing a Node

0x100

0

0x1a0

0x204

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x100

0x1a4

node1

0x204

0x208

QREMOVE(node0, alist);

#define QREMOVE(node0, alist) \

do { \

(1) *((node0)->alist.prev) = (node0)->alist.next; \

((node0)->alist.next)->alist.prev = (node0)->alist.prev;\

(node0)->alist.next = (node0); \

(node0)->alist.prev = &((node0)->alist.next); \

} while ( /* */ 0)

(1)


0x100

0

0x200

0x204

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x100

0x104

node1

0x204

0x208

Removing a Node

0x100

0

0x1a0

0x204

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x100

0x1a4

node1

0x204

0x208

QREMOVE(node0, alist);

#define QREMOVE(node0, alist) \

do { \

*((node0)->alist.prev) = (node0)->alist.next; \

(2) ((node0)->alist.next)->alist.prev = (node0)->alist.prev;\

(node0)->alist.next = (node0); \

(node0)->alist.prev = &((node0)->alist.next); \

} while ( /* */ 0)

(2)




0x100

0

0x200

0x204

head

0x104

0x108

0x1a0

0

0x1a0

0x104

node0

0x1a4

0x1a8

0x200

0

0x100

0x104

node1

0x204

0x208

Removing a Node

0x100

0

0x1a0

0x204

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x100

0x1a4

node1

0x204

0x208

QREMOVE(node0, alist);

#define QREMOVE(node0, alist) \

do { \

*((node0)->alist.prev) = (node0)->alist.next; \

((node0)->alist.next)->alist.prev = (node0)->alist.prev;\

(3) (node0)->alist.next = (node0); \

(node0)->alist.prev = &((node0)->alist.next); \

} while ( /* */ 0)

(3)



0x100

0

0x200

0x204

head

0x104

0x108

0x1a0

0

0x1a0

0x1a4

node0

0x1a4

0x1a8

0x200

0

0x100

0x104

node1

0x204

0x208

Removing a Node

0x100

0

0x1a0

0x204

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x100

0x1a4

node1

0x204

0x208

QREMOVE(node0, alist);

#define QREMOVE(node0, alist) \

do { \

*((node0)->alist.prev) = (node0)->alist.next; \

((node0)->alist.next)->alist.prev = (node0)->alist.prev;\

(node0)->alist.next = (node0); \

(4) (node0)->alist.prev = &((node0)->alist.next); \

} while ( /* */ 0)

(4)

Fred Kuhns ()

CSE332– Object Oriented Programming Lab



Solution to Removing a Node

0x100

0

0x1a0

0x204

head

0x104

0x108

0x1a0

0

0x200

0x104

node0

0x1a4

0x1a8

0x200

0

0x100

0x1a4

node1

0x204

0x208

QREMOVE(node0, alist);

0x100

0

0x200

0x204

head

0x104

0x108

0x1a0

0

0x1a0

0x1a4

node0

0x1a4

0x1a8

0x200

0

0x100

0x104

node1

0x204

0x208

#define QREMOVE(node, alist) \

do { \

(1) *((node)->alist.prev) = (node)->alist.next; \

(2) ((node)->alist.next)->alist.prev = (node)->alist.prev;\

(3) (node)->alist.next = (node); \

(4) (node)->alist.prev = &((node)->alist.next); \

} while ( /* */ 0)



Functions

* Always use function prototypes
int myfunc (char *, int, struct MyStruct *);
int myfunc_noargs (void);
void myfunc_noreturn (int i);
* C and C++ are call by value, copy of parameter passed to function
o C++ permits you to specify pass by reference
o if you want to alter the parameter then pass a pointer to it (or use references in C++)
* If performance is an issue then use inline functions, generally better and safer than using a macro. Common convention
o define prototype and function in header or name.i file
o static inline int myinfunc (int i, int j);
o static inline int myinfunc (int i, int j) { ... }




Basic Types and Operators

* Basic data types
o Types: char, int, float and double
o Qualifiers: short, long, unsigned, signed, const
* Constant: 0x1234, 12, “Some string”
* Enumeration:
o Names in different enumerations must be distinct
o enum WeekDay_t {Mon, Tue, Wed, Thur, Fri};
enum WeekendDay_t {Sat = 0, Sun = 4};
* Arithmetic: +, -, *, /, %
o prefix ++i or --i ; increment/decrement before value is used
o postfix i++, i--; increment/decrement after value is used
* Relational and logical: <, >, <=, >=, ==, !=, &&, ||
* Bitwise: &, |, ^ (xor), <<, >>, ~(ones complement)




Operator Precedence (from “C a Reference Manual”, 5th Edition)

15

16

Precedence

right-to-left

unary

address of

&

right-to-left

unary

indirection

(dereference)

*

right-to-left

unary

negation, plus

- +

right-to-left

unary

logical not

!

right-to-left

unary

bitwise not

~

right-to-left

prefix

increment, decrement

++ --

left-to-right

postfix

compound literal

(type){init}

left-to-right

postfix

increment, decrement

++ --

left-to-right

postfix

direct selection

.

left-to-right

postfix

function call

f(...)

left-to-right

postfix

subscripting

a[k]

size

indirect selection

simple tokens

Operator

n/a

primary

names,
literals

right-to-left

unary

sizeof

left to right

postfix

->

Associates

Class

Tokens

1

2

3

4

5

6

7

8

9

10

11

12

13

14

Precedence

right-to-left

unary

casts

(type)

left-to-right

binary

multiplicative

* / %

left-to-right

binary

additive

+ -

sequential eval.

assignment

conditional

logical or

logical and

bitwise or

bitwise xor

bitwise and

equality/ineq.

relational

left, right shift

Operator

left-to-right

binary

,

right-to-left

binary

= += -=

*= /= %=

&= ^= |=

<<= >>=

right-to-left

ternary

?:

left-to-right

binary

||

left-to-right

binary

&&

left-to-right

binary

|

left-to-right

binary

^

left-to-right

binary

&

left-to-right

binary

== !=

left-to-right

binary

< <= > >=

left-to-right

binary

<< >>

Associates

Class

Tokens




Structs and Unions

* structures
o struct MyPoint {int x, int y};
o typedef struct MyPoint MyPoint_t;
o MyPoint_t point, *ptr;
o point.x = 0;point.y = 10;
o ptr = &point; ptr->x = 12; ptr->y = 40;
* unions
o union MyUnion {int x; MyPoint_t pt; struct {int 3; char c[4]} S;};
o union MyUnion x;
o Can only use one of the elements. Memory will be allocated for the largest element



Conditional Statements (if/else)

if (a < 10) printf(“a is less than 10\n”); else if (a == 10) printf(“a is 10\n”); else printf(“a is greater than 10\n”); * If you have compound statements then use brackets (blocks) o if (a < 4 && b > 10) {
c = a * b; b = 0;
printf(“a = %d, a\’s address = 0x%08x\n”, a, (uint32_t)&a);
} else {
c = a + b; b = a;
}
* These two statements are equivalent:
o if (a) x = 3; else if (b) x = 2; else x = 0;
o if (a) x = 3; else {if (b) x = 2; else x = 0;}
* Is this correct?
o if (a) x = 3; else if (b) x = 2;
else (z) x = 0; else x = -2;



Conditional Statements (switch)

int c = 10;

switch (c) {

case 0:

printf(“c is 0\n”);

break;

...

default:

printf(“Unknown value of c\n”);

break;

}

* What if we leave the break statement out?
* Do we need the final break statement on the default case?

Fred Kuhns ()

CSE332– Object Oriented Programming Lab



Loops

* flow control
o break – exit innermost loop
o continue – perform next iteration of loop
* Note, all these forms permit one statement to be executed. By enclosing in brackets we create a block of statements.



for (i = 0; i < MAXVALUE; i++) {
dowork();
}

while (c != 12) {
dowork();
}

do {
dowork();
} while (c < 12);

Fred Kuhns ()

CSE332– Object Oriented Programming Lab



Building your program

* For all labs and programming assignments:
o you must supply a make file
o you must supply a README file that describes the assignment and results. This must be a text file, no MS word.
o of course the source code and any other libraries or utility code you used
o you may submit plots, they must be postscript or pdf



make and Makefiles, Overview

* Why use make?
o convenience of only entering compile directives once
o make is smart enough (with your help) to only compile and link modules that have changed or which depend on files that have changed
o allows you to hide platform dependencies
o promotes uniformity
o simplifies my (and hopefully your) life when testing and verifying your code
* A makefile contains a set of rules for building a program
target ... : prerequisites ...
command
...
* Static pattern rules.
o each target is matched against target-pattern to derive stem which is used to determine prereqs (see example)
targets ... : target-pattern : prereq-patterns ...
command
...




Makefiles

* Defining variables
MyOPS := -DWTH
MyDIR ?= /home/fred
MyVar = $(SHELL)
* Using variables
MyFLAGS := $(MyOPS)
* Built-in Variables
o $@ = filename of target
o $< = name of the first prerequisites
* Patterns
o use % character to determine stem
o foo.o matches the pattern %.o with foo as the stem.
o foo.o moo.o : %.o : %.c # says that foo.o depends on foo.c and moo.o depends on moo.c

Fred Kuhns ()

CSE332– Object Oriented Programming Lab



Example Makefile for wulib

# Project specific

include ../Makefile.inc

INCLUDES = ${WUINCLUDES} –I.

LIBS = ${WILIBS} ${OSLIBS}

CFLAGS = ${WUCLFAGS} –DWUDEBUG

CC = ${WUCC}

HDRS := util.h

CSRCS := testapp1.c testapp2.c

SRCS := util.c callout.c

COBJS = $(addprefix ${OBJDIR}/, \

$(patsubst %.c,%.o,$(CSRCS)))

OBJS = $(addprefix ${OBJDIR}/, \

$(patsubst %.c,%.o,$(SRCS)))

CMDS = $(addprefix ${OBJDIR}/, $(basename $(CSRCS)))

all : $(OBJDIR) $(CMDS)

install : all

$(OBJDIR) :

mkdir $(OBJDIR)

$(OBJS) $(COBJS) : ${OBJDIR}/%.o : %.c $(HDRS)

${CC} ${CFLAGS} ${INCLUDES} –o $@ -c $<

$(CMDS) : ${OBJDIR}/% : ${OBJDIR}/%.o $(OBJS)

${CC} ${CFLAGS} -o $@ $@.o ${LIBS}

chmod 0755 $@

clean :

/bin/rm -f $(CMDS) $(OBJS)

# Makefile.inc

# Contains common definitions

MyOS := $(shell uname -s)

MyID := $(shell whoami)

MyHost := $(shell hostname)

WARNSTRICT := -W \

-Wstrict-prototypes \

-Wmissing-prototypes

WARNLIGHT := -Wall

WARN := ${WARNLIGHT}

ALLFLGS := -D_GNU_SOURCE \

-D_REENTRANT \

-D_THREAD_SAFE

APPCFLGS = $(ALLFLGS) \

$(WARN)

WUCC := gcc

WUCFLAGS := -DMyOS=$(MyOS) \

$(OSFLAGS) \

$(ALLFLGS) $(WARN)

WUINCLUDES :=

WULIBS := -lm

ifeq (${MyOS), SunOS)

OSLIBS+= -lrt

endif
Leia Mais...
0

Good Day

Leia Mais...
0

Good Night

Leia Mais...
0

Good EvEning

Leia Mais...
0

Good After Noon

Leia Mais...
0

GOOD MORNING

Leia Mais...
0

இனிப்பு போளி

தேவையானப் பொருட்கள்

* மைதா மாவு - அரை கிலோ
* கடலை பருப்பு - அரை கிலோ
* தேங்காய் - ஒன்று
* வெல்லம் - அரை கிலோ
* ஏலக்காய் - 5
* உப்பு - கால் தேக்கரண்டி
* சோடா உப்பு - ஒரு சிட்டிகை

தேங்காயை துருவிக் கொள்ளவும். வெல்லத்தை நசுக்கி பொடி செய்துக் கொள்ளவும். ஏலக்காயையும் பொடி செய்துக் கொள்ளவும். மைதா மாவை சலித்து எடுத்து வைக்கவும்.
step 1
ஒரு பாத்திரத்தில் கடலைப் பருப்பை போட்டு மூழ்கும் அளவு தண்ணீர் ஊற்றி வேக வைக்கவும். பருப்பு வெந்ததும் எடுத்து தண்ணீரை வடிகட்டி தனியே வைக்கவும்.
step 2
அடிகனமான ஒரு பாத்திரத்தில் தேங்காய் துருவலை போட்டு, கருக விடாமல் நன்கு வாசனை வரும் வரை, சுமார் 2 நிமிடங்கள் வதக்கவும். பின்னர் அதில் பொடி செய்து வைத்திருக்கும் வெல்லத்தை போடவும்.
step 3
அதில் 3 மேசைக்கரண்டி தண்ணீர் ஊற்றி வெல்லம் கரையும் வரை நன்கு கைவிடாமல் (4 நிமிடம்) கிளறவும்.
step 4
4 நிமிடம் கழித்து வெல்லம் கரைந்து நுரைத்து வரும் போது வேக வைத்து, தண்ணீரை வடித்து வைத்திருக்கும் கடலைப் பருப்பை போடவும்.
step 5
மேலும் ஒரு நிமிடம் கிளறிவிட்டு, கடலைப் பருப்புடன் வெல்லப் பாகு ஒன்றாக சேர்த்ததும் இறக்கி வைத்து விடவும். பிறகு கிரைண்டரில் போட்டு ஒன்றிரண்டாக அரைக்கவும்.
step 6
போளிக்கான மாவை முன்பாகவே தயாரித்து வைத்துவிட வேண்டும். மைதா மாவுடன் உப்பு, சோடா உப்பு, ஒரு மேசைக்கரண்டி எண்ணெய் ஊற்றி நன்கு அடித்து பிசையவும். மீண்டும் ஒரு மேசைக்கரண்டி எண்ணெய் ஊற்றி மிருதுவாக பிசையவும். பிசைந்த மாவை 6 மணிநேரம் ஊற வைக்கவும்.
step 7
ஊறியதும் மாவின் பதம் இழுத்தால் ரப்பர் போல் வரவேண்டும். பிறகு பிசைந்து வைத்திருக்கும் மைதா மாவில் ஒரு பெரிய எலுமிச்சை அளவு எடுத்து, ஒரு வாழை இலையில் எண்ணெய் தடவி, அதன் மீது வைத்து அப்பளம் போல தட்டிக் கொள்ளவும். தட்டிய மாவின் மத்தியில் எலுமிச்சை அளவு பருப்பு பூரணத்தை வைக்கவும்.
step 8
பிறகு அப்பளமாக தட்டிய மைதா மாவின் நான்கு ஓரங்களை எடுத்து பூரணம் மறையும்படி மூடி விடவும். இதே போல் அனைத்து மாவையும், பூரணத்தை வைத்து தயார் செய்துக் கொள்ளவும்.
step 9
பிறகு மூடிய பக்கத்தை அடியில் வைத்து மெல்லிய வட்டமாக தட்டவும். அனுபவம் உள்ளவர்கள் கையினாலே வட்டமாக தட்டி விடுவார்கள். இல்லையென்றால் அப்பள் குளவியை வைத்து மிகவும் எச்சரிக்கையாக, மெதுவாக தேய்க்கலாம். மாவின் அளவு பூரணத்தின் அளவை விட சற்று அதிகமாக எடுத்துக் கொள்ளவும்.
step 10
தோசைக்கல்லை அடுப்பில் வைத்து எண்ணெய் தடவி தட்டி வைத்திருக்கும் போளியை இலையுடன் போட்டு இலையை மெதுவாக எடுக்கவும். மேலே எண்ணெய் ஊற்றி ஒரு நிமிடம் கழித்து திருப்பி போட்டு வெந்ததும் அடுப்பில் இருந்து எடுத்து விடவும்.
step 11
போளி இலேசாக சிவந்தவுடன் எடுத்துவிடவும். கருகிவிடக்கூடாது. இந்த போளியை நமக்காக செய்து காட்டியவர் சமையலில் நல்ல அனுபவம் உள்ள திருமதி. ஜோதி அவர்கள்.
Leia Mais...
0

எலுமிச்சைப்பழ ஊறுகாய்

இந்த ஊறுகாய் வெயிலில் நன்கு உலர வைத்து செய்யப்படும்வதாகும். இலங்கையில் இம்முறைப்படி தான் செய்வார்கள். நீண்ட நாட்கள் வைத்துப் பாவிக்கலாம்.


தேவையானப் பொருட்கள்

* எலுமிச்சைப்பழம் - 20
* காய்ந்த மிளகாய் - 15 - 20
* வெந்தயம் - ஒரு தேக்கரண்டி
* பெருஞ்சீரகம் - 2 தேக்கரண்டி
* மஞ்சள் தூள் - அரை தேக்கரண்டி
* உப்பு - தேவையான அளவு

முதலில் 10 எலுமிச்சைப் பழத்தை எடுத்து நன்றாக கழுவி வைக்கவும். மற்ற தேவையான பொருட்களை தயாராக எடுத்து வைக்கவும்.
step 1
எலுமிச்சைப்பழத்தை 4 துண்டுகளாக மேலிருந்து கீழாக 3/4 பாகம் வரை கத்தியால் வெட்டவும்.
step 2
முதலில் ஒரு பாதியை விரித்து உப்பை வைக்கவும். பின்பு மறு பாதியை விரித்து உப்பை வைக்கவும். அப்படியே முழுவதையும் செய்யவும்.
step 3
ஒரு ஜாடியில் அல்லது கண்ணாடி பாட்டிலில் எலுமிச்சை பழங்களை வைத்து ஒரு நாள் முழுவதும் மூடி வைக்கவும்.
step 4
மறு நாள் எடுத்து ஒரு தட்டில் பரப்பி வைத்து வெயிலில் உலர வைக்கவும். ஜாடியையும் வெயிலில் வைக்கவும். மாலையில் சிறிதளவு உலர்ந்திருக்கும். அதை எடுத்து மீண்டும் ஜாடியில் வைத்து மூடி விடவும். அடுத்த நாள் காலையில் மீண்டும் உலர வைக்கவும். மீண்டும் மாலையில் ஜாடியில் எடுத்து வைத்து விடவும்.
step 5
இதைப் போலவே 5 அல்லது 6 நாட்கள் வெயிலில் எலுமிச்சை பழங்களை வைத்து நன்கு உலர விடவும்.
step 6
வாணலியில் காய்ந்த மிளகாய், வெந்தயம், பெருஞ்சீரகம் ஆகியவற்றை தனித்தனியாக வறுத்து பொடி செய்துக் கொள்ளவும்.
step 7
மீதமுள்ள 10 எலுமிச்சைப்பழத்தில் சாறு பிழிந்து எடுத்துக் கொள்ளவும்.
step 8
பிழிந்து வைத்துள்ள எலுமிச்சைப்பழச்சாற்றில் வறுத்து பொடி செய்த தூள், மஞ்சள் தூள், சிறிதளவு உப்பு சேர்த்து நன்றாக கலந்து வைக்கவும்.
step 9
பிறகு இந்த சாறை உலர்ந்த எலுமிச்சைப்பழத்தில் மேல் ஊற்றி கலந்து விடவும். இதனை 2 நாட்கள் மூடி அப்படியே வைக்கவும். இடையிடையே மரக்கரண்டியால் பிரட்டி விடவும்.
step 10
சுவையான எலுமிச்சைப்பழ ஊறுகாய் தயார். இந்த ஊறுகாயை தேவையானப்பொழுது எடுத்து சோறு, புட்டுடன் பக்க உணவுவாக வைத்து சாப்பிடலாம். இந்த ஊறுகாய் குறிப்பினை அறுசுவை நேயர்களுக்காக செய்து காட்டியவர் திருமதி. வத்சலா நற்குணம் அவர்கள். நீங்களும் செய்து பார்த்து உங்கள் கருத்துக்களை பகிர்ந்துக் கொள்ளுங்கள்.
step 11


எலுமிச்சைப்பழத்தை பிழிந்து கலக்கும் போது, ஜாடியில் உள்ள எலுமிச்சைப்பழத்தின் மேல் சாறு இருக்க வேண்டும். சில எலுமிச்சைப்பழத்தில் சாறு குறைவாக இருக்கும். அப்படியிருந்தால் மேலதிகமாக எலுமிச்சைப்பழம் தேவைப்படும். ஊறுகாய் எடுக்கும் போது ஈரமில்லாத கரண்டி பாவிக்க வேண்டும். (பிளாஸ்டிக் அல்லது மரக்கரண்டி பாவிக்கவும்). அப்பொழுதுதான் நீண்ட நாட்கள் கெடாமல் இருக்கும்.
Leia Mais...

Send a picture Scrap



Send a picture Scrap



Send a picture Scrap




Send a picture Scrap



Send a picture Scrap




Send a picture Scrap




Send a picture Scrap



Send a picture Scrap



Send a picture Scrap



Send a picture Scrap



Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap



Send a picture Scrap




Send a picture Scrap




Send a picture Scrap



Send a picture Scrap




Send a picture Scrap



Send a picture Scrap




Send a picture Scrap



Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap





Send a picture Scrap





Send a picture Scrap




Send a picture Scrap





Send a picture Scrap




Send a picture Scrap



Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap





Send a picture Scrap






Send a picture Scrap





Send a picture Scrap





Send a picture Scrap





Send a picture Scrap





Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap





Send a picture Scrap




Send a picture Scrap




Send a picture Scrap





Send a picture





Send a picture Scrap




Send a picture Scrap





Send a picture Scrap





Send a picture Scrap





Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap




Send a picture Scrap





Send a picture Scrap




Send a picture Scrap




Send a picture Scrap
Leia Mais...
 
VIJAYA KUMAR R R © Copyright 2010 | Design By Gothic Darkness |