2011/02/20

The Terrorist, He Watches - Алан хядагч, Тэр харж байна

Польшийн яруу найрагч Вислава Шимборскагийн нобелийн шагнал хүртсэн зохиол болох "Алан хядагч, Тэр харж байна" гэдэг зохиолыг "Англи Хэл 2" гэдэг хичээлээр үзлээ. Та бүхэн сонирхуулъя. Таалан болгооно уу.

The Terrorist, He Watches
 
The bomb will go off in the bar at one twenty p.m.
Now it’s only one sixteen p.m.
Some will still have time to go in,
Some to get out.

The terrorist has already crossed to the other side of the street.
The distance protects him from any danger,
and what a sight for sore eyes.

A woman in a yellow jacket, she goes in.
A man in dark glasses, he comes out.
Guys in dark jeans, they are talking.
One seventeen and four seconds.
That shorter guy’s really got it made, and gets on a scooter,
and that taller one, he goes in.

One seventeen and forty seconds.
That girl there, she’s got a green ribbon in her hair.
Too bad that bus just cut her from view.
One eighteen p.m.
The girl’s not there any more.
Was she dumb enough to go in, or wasn’t she?
That we’ll see when they carry them out.

One nineteen p.m.
No one seems to be going in.
Instead a fat baldy’s coming out.
Like he’s looking for something in his pockets and
at one nineteen and fifty seconds
he goes back in for those crummy gloves of his.

It’s one twenty p.m.
The time, how it drags.
Should be any moment now.
Not yet.
Yes, this is it.
The bomb, it goes off.

--Wislawa Szymborska (translated by Robert Maguire and Magnus Jan Krynsky)

2011/02/15

Си++, Лаборатори 1

Write a program to calculate area and circumference of circle using inline function.
Дотоод функц ашиглан тойргийн талбай болон уртыг олох програм бич.


Эхний лаборатори нэг иймэрхүү байна даа. Хамгийн гол нь дотоод функц (inline function) ашиглах нь чухал юм. Дотоод функцын тухай цухас тэмдэглэл хийчихье.


Энгийн функцыг санаж байгаа байх.

Програм үндсэн фукц (main function - дугаар 8)-аас эхэлж ажиллуулж эхлэх бөгөөд func функц (дугаар 10)-ыг дуудна. Тэгээд яг одоо байгаа удирдлагын хаягийг санаж аваад func функцын эх биерүү үсэрнэ (дугаар 3 руу). Функцыг биелүүлж дууссаны дараа буцаад анхны санасан хаягтаа буцана. 


Функцын давуу тал бол санах ойг хэмнэнэ, програмчлах ажлыг хөнгөвчлөнө, модулийн програмчлалыг дэмжинэ, засаж сайжруулахад хялбар болгодог. Гэвч нэг функц маань жижигхэн, түүнийг олон дахин дуудах хэрэгтэй үед функц маань програмын хурдан муу нөлөө үзүүлж эхэлнэ. 


Жишээ нь func функцыг 100 удаа дуудъя. Тэгвэл 100 удаа удирдлага функц дуудсан хаягийг хадгалана, 100 удаа функцруу үсэрнэ, 100 удаа функцээ ажиллуулна, 100 удаа удирдлага буцаж ирнэ гэсэн үг. Тиймээс програмын хурданд их нөлөө үзүүлж байгаа юм. Хамгийн гол нь функц маань жижигхэн. Ийм жижигхэн функцыг ажиллуулахын тулд ийм их ажиллагаа орж байгаа нь гол асуудал юм.


Харин дотоод функц маань энгийн функцээс жаахан ялгаатай. Тэр нь юу вэ? гэвэл дотоод функцыг дуудахад функцын эх биерүү үсрэх биш харин функцын командуудыг дуудсан хэсэг оруулан ажиллуулдаг. За ёстой өөрөө ч ойлгохооргүй биччихлээ. 

За дотоод функ болгоод биччихлээ. Ингээд биччихвэл func функцыг (10-р мөр) дуудахад удирдлага func функцын эх биерүү (3-р мөррүү) үсрэх биш func() (10-р) функцын оронд функцын эх бие хуулагдан ажиллана. Өөрөөр хэлбэл 
Ийм болсонтой адил гэсэн үг. Тэгсэн хөөе, заавал ийм балай юм бичих хэрэг байгаа юм уу? Макро гэдэг бүтэц байгаа ш дээ гэх байх. Макрог дуудахад макрогийн эх бие тэр чигээрээ хуулагддаг. Дээрх дотоод функцтэй програмыг макрогоо бичиж үзье.
Үр дүн нь яг адилхан. Яг адилхан зарчимтайгаар func-ын оронд cout<<"Hi, all" гэсэн мөр орлогдон тавигдана. Гэвч дотоод функц маань макрогоо давуу талтай. 
Дараах жишээгээр тайлбарлая.
За хоёр тооны ихийг олдог хоёр програм. Эхнийх нь max гэсэн макрогоор. Хоёр дахь max гэсэн дотоод функцээр. Хоёулаа эх биеэ дуудалтандаа хуулж ажиллуулдаг. Гэхдээ макрогоор бичихэд max-д буцаах утга гэж байхгүй, аргументуудынх нь өгөгдлийн төрөл (datatype)-г заахгүй бол дотоод функцэд эдгээр бүгдийг зааж өгсөн байдаг. Өөрөөр хэлбэл дотоод функц нь макрогийн сайжруулсан бүтэц юм. Дотоод функц нь Си++ дээр бий болсон бүтэц. Си хэлэнд байдаггүй билээ.










За ингээд үндсэн ажил руугаа оръё. Бодлогоо бодъё.
Гаралт нь:

Блог нээсэн түүх

За энэ блогийн нэр бол "Миний хичээлүүд". Энэ блогтоо өөрийнхөө сурсан мэдсэнээ бусадтай хуваалцаж, бусдаас суралцах гэж нээлээ.