به گزارش خبرنگار سينمايياين چهرهي مطرح سينماي ايران كه با نقش ماندگاري چون «حميد
هامون» تير) در سن 64سالگي بر اثر سكتهي قلبي در منزل خود، به بیمارستان پارسیان
منتقل شد ودر همان جا دار فانی را وداع گفت و به خاطره ها پیوست .
ازاین بازیگران تو سینمای ایران
خیلی کمه که روز به روز دارن کمتر میشن و از بین ما میرن. ولی کیه که قدرشون رو
بدونه.همه بعد از مرگشون می فهمیم که واقعا چه کسانی رو از دست دادیم
زمان و مكان مراسم تشييع پيكر زندهياد
خسرو شكيبايي از طرف خانه سينما پيگيري ميشود.
من که خیلی متاثر شدم وقتی این خبر رو شنیدم. روحش شاد
+ نوشته شده در جمعه بیست و هشتم تیر ۱۳۸۷ ساعت 14:13 توسط میلاد
|
کلمه روال درزبان پاسکال و ساير زبانهاي برنامهنويسي سطح بالا براي بيان زير برنامهاي که تقريباً يک واحد کاملي ميباشد، بکار ميرود.
آرگومانها بايستي متناظر با پارامترهاي مجازي روال مزبور باشند. در زبان پاسکال نوع ديگري از زير برنامه به نام تابع وجود دارد. يک تابع در زبان پاسکال شبيه يک روال ميباشد بجز اينکه آن را در داخل يک عبارتي با ذکر نام و آرگومانهاي مربوطه در داخل پرانتز، فراخواني ميکنيم. يکتابع مقداري را بر ميگرداند که اين مقدار در عبارت مربوطه مورد استفاده قرار ميگيرد.
آدرس برگشت به برنامه فراخواننده زير برنامه روي پشته ذخيره ميشود ميتوان مقادير ثباتها در زمان فراخواني يک زيربرنامه را روي پشته ذخيره نموده ودرزمان برگشت به برنامه فراخواننده مقاديرثباتها را با استفاده ازپشته بازسازي نمود، با استفاده از پشته ميتوان آرگومانها را به يک زيربرنامهانتقال داده ويا مقاديري را ازيک زيربرنامه فراخواننده انتقال داد، وحتي ميتوان فضاي لازم براي متغيرهاي محلي را روي پشته تخصيص داد.
آشنایی با مهمترین دستورهای کنترلی در زبان C و کاربرد آنها
هدفهای رفتاری
از دانشجو انتظار ميرود پس از خواند این فصل،
1. با کاربرد دستورهای کنترلی آشنا شود.
2. شکل کلی و کاربرد دستور while را بداند.
3. شکل کلی و کاربرد دستور whiledo- را بداند و تفاوت آن را با while بیان کند.
4. شکل کلی و کاربرد دستور for را بداند.
5. شکل کلی و کاربرد دستور عملگر کاما را بداند.
6. شکل کلی و کاربرد دستورهای if و if-else را بداند.
7. شکل کلی و کاربرد دستور switch را بداند.
8. شکل کلی و کاربرد دستور break را بداند.
9. شکل کلی و کاربرد دستور continue را بداند.
10. شکل کلی و کاربرد دستور goto را بداند.
11. شکل کلی و کاربرد تابع exit را بداند.
مقدمه
يکي از امکانات زبانهاي برنامهنویسی جدید، استفاده از دستورها و ساختارهاي كنترلي است و در نتيجه اين امكان را فراهم ميسازند كه قطعهای از برنامه تا موقعي كه شرط ويژهاي برقرار است چندين بار اجرا شود.
توابع کتابخانۀ C++ استاندارد به همين شکل پيادهسازي شدهاند و هنگامي که يکي از آن توابع را در برنامههايتان به کار ميبريد بايد با دستور راهنماي پيشپردازنده، فايل آن توابع را به برنامهتان ضميمه کنيد.
اين کار چند مزيت دارد:
1-اولين مزيت «مخفيسازي اطلاعات» است.
2-مزيت ديگر اين است که توابع مورد نياز را ميتوان قبل از اين که برنامۀ اصلي نوشته شود، جداگانه آزمايش نمود.
3-سومين مزيت اين است که در هر زماني به راحتي ميتوان تعريف توابع را عوض کرد بدون اين که لازم باشد برنامۀ اصلي تغيير يابد.
4-چهارمين مزيت هم اين است که ميتوانيد يک بار يک تابع را کامپايل و ذخيره کنيد و از آن پس در برنامههاي مختلفي از همان تابع استفاده ببريد.
تابع max() را به خاطر بياوريد. براي اين که اين تابع را در فايل جداگانهاي قرار دهيم، تعريف آن را در فايلي به نام max.cpp ذخيره ميکنيم. فايل max.cpp شامل کد زير است:
یک روش آدرس دهی ISA’Sاین سوال را جواب می دهد :عملوندها کجا میتوانند ذخیره شوند؟
ما دو نوع ذخیره سازی در MIPSداریم( وبیشتر ماشینهای دیگر) :ثباتها و حافظه اصلی.ما می توانیم به هریک از این دو یا هردو عملوندها برویم . یک تک عملوند می تواند با هر یک از این دو بیاید یک ثبات یا یک مکان حافظه ،و روشهای آدرس دهی راه های گوناگون تشخیص این مکانها را ارائه می کند.
دراین روشها یک مکان یا داده به طور مستقیم دریک دستورالعمل داده می شود:
Mode name
Example
Meaning
Register
mov$1, $2
R2R1
Direct (or absolute)
mov$1, (40)
M[40]R1
Immediate
mov$1,#40
40R1
روشهای آدرس دهی غیر مستقیم
در تولید یک آدرس حافظه یکی یا بیشترثباتها استفاده می شوند
عملگرهاي رابطهاي، همان طور كه از نامشان پيداست، رابطة بين دو مقدار را تعيين ميكنند. اين عملگرها در جدول 4ـ12 نشان داده شدهاند.
جدول 4ـ12 عملگرهاي رابطهاي
نام عملگر
نشانه
شکل
نتيجه
بزرگتر از
>
a > b
اگر a بزرگتر از b باشد، نتيجه 1 وگرنه 0 است.
كوچكتر از
<
a < b
اگر a كوچكتر از b باشد، نتيجه 1 وگرنه 0 است.
مساوي يا بزرگتر از
>=
a >= b
اگر a مساوي يا بزرگتر از b باشد، نتيجه 1 وگرنه 0 است.
مساوي يا كوچكتر از
=<
a<=b
اگر a مساوي يا كوچكتر از b باشد، نتيجه 1 وگرنه 0 است.
مساوي
= =
a = =b
اگر a مساوي b باشد، نتيجه 1 وگرنه 0 است.
مخالف
!=
a!=b
اگر a مخالف b باشد، نتيجه 1 وگرنه 0 است.
ايده و مفهوم اصلي در مورد عملگرهاي رابطهاي وابسته به مفهوم مقدار true و false است. در زبان C، true هر مقدار غير از صفر و false مقدار صفر است. عباراتي كه عملگرهاي رابطهاي يا منطقي را به كار ميبرند براي حالت نادرست يا false مقدار صفر و براي حالت درست يا true مقدار يك برميگردانند.
- به تعدادی نوشتپار ذیل داخلی ترین عنوان در یک شاخه از طرح اولیه بند یا متن پار گوییم . متن پار کمیتی ازمتن است که خود یک عنوان دارد ودر درونش دیگر عنوانی وجود ندارد و از تعدادی نوشتپار تشکیل شده است .
متن پار مرکب یا متن بخش:
متن پار ممکن است مرکب باشد یعنی چند متن پار در درون خود داشته باشد . در شکل زیر ساختار متن پار مرکب نشان داده شده است . می توان متن پار مرکب را متن بخش نامید .
- از تکنیک عقبگرد برای حل مسائلی استفاده می شود که در آن ها دنباله ای از اشیاء از یک مجموعه مشخص انتخاب می شود، به طوری که این دنباله ، ملا کی را در بر می گیرد.
- یک مثال کلاسیک از عقبگرد، مسئله nوزیر است.
- هدف از مسئله nوزیر ، چیدن nمهره وزیر در یک صفحه شطرنج است ، به طوری که هیچ دو وزیری یکدیگر را گارد ندهند. یعنی هیچ دو مهره ای نباید در یک سطر، ستون یا قطر یکسان باشند.
- عقبگرد حالت اصلاح شده ی جست و جوی عمقی یک درخت است.
- الگوریتم عقبگرد همانند جست و جوی عمقی است، با این تفاوت که فرزندان یک گره فقط هنگامی ملاقات می شوند که گره امید بخش باشدو در آن گره حلی وجود نداشته باشد.
که در آن statemaet_labelمتناظر با فيلد اسم دستور اسمبلي ديگري ميباشد.
دستور JMPشبيه به gotoدر پاسکال يا بيسيک است.
اگر شرايط مختلفي وجود داشته باشد که تحت آن شرايط برنامه بايد خاتمه پيدا کند، ميتوان به يک دستور اجرايي که به وسيله برچسب quit:مشخص شده است و محل اختتام برنامه ميباشد، پرش نمود.
فرمهاي درون سگمنتي وقتي توليد ميشوند که مقصد در درون سگمنت جاري قرار داشته باشد، اين فرمها در بين انواع ديگر از همه رايجتر ميباشند.
پرشهاي بين سگمنتي که به عبارتي به يک سگمنت کد ديگر پرش ميکنند، به ندرت مورد نياز ميباشند.
پرشهاي غيرمستقيم مقدار جابجايي خود از دستورالعمل مقصد را، از يک ثبات يا از يک کلمه در حافظه به دست ميآورند.
پرشهاي درون سگمنتي نسبي، از انواع ديگر معمولتر بوده و بيشتر مورد استفاده قرار ميگيرند.
۲) اجراي ادغام در بيش از يک مرحله ،کاهش دادن
مرتبه هر ادغام و افزايش دادن اندازه بافر براي هر رانش
۳) افزايش طول رانش هاي مرتب شده از لحاظ
الگوريتمي
۴) يافتن راههايي براي همپوشاني عمليات I/O
در اين بخش سه تغيير ممکن در پيکربندي سيستم را
در نظر مي گيريم که مي تواند زمان مرتب سازي را به طور چشمگيري کاهش دهد :
۱) افزايش مقدار حافظه
۲) افزايش تعداد ديسک گردان ها
۳) افزايش تعداد کانال هاي I/O
هدف اصلي اين مرتب سازي ادغامي آن است که
قادر باشيم فايلهايي را مرتب سازي کنيم که در حافظه جا نمي شوند.
در ادغام چند مرحله اي، سعي نمي کنيم همه رانش ها
را به يکباره ادغام کنيم. بلکه رانش هاي اوليه را به گروههاي کوچک تقسيم کرده
،رانش هاي موجود در اين گروه ها را جداگانه ادغام مي کنيم.
اساس
انتخاب جايگزيني ،اين ايده است :
انتخاب هميشگي کليدي از حافظه که داراي کمترين
مقدار باشد ،قرار دادن آن کليد در خروجي ،و سپس تعويض آن با يک کليد جديد از ليست
ورودي.
الگوريتم
انتخاب جايگزيني را مي توان به طريق زير پياده سازي نمود :
۱) خواندن مجموعه اي از رکوردها و مرتب سازي
آنها با استفاده از مرتب سازي هرمي
۲) به جاي نوشتن کل هرم اوليه به شکل مرتب شده
فقط رکوردي را مي نويسيم که کليد آن داراي کمترين مقدار است.
۳)
آوردن يک رکورد جديد و مقايسه مقدار کليد آن با مقدار کليدي که به تازگي
در خروجي قرار گفته است.
الف) اگر مقدار کليد جديد بزرگتر باشد
رکورد جديد را در محل مناسب آن در هرم اوليه ،به همراه رکوردهايي قرار مي دهيم که
از خروجي گزينش مي شوند.
ب) اگر مقدار کليد رکورد جديد کمتر
باشد ،رکورد را در يک هرم ثانويه از رکوردها با مقادير کليدي کمتر از آنهايي که
پيش از اين نوشته شده اند قرار مي دهيم.
۴) تا
هنگاميکه رکوردي در هرم اوليه باقي باشد و رکوردهايي براي خواندن وجود داشته باشد
مرحله۳ را تکرار مي
کنيم.
گزينش جايگزيني ابزاري سودمند براي
فايل هاي ورودي است که قدري مرتب هستند و اين گزينش فرصتي براي صرفه جويي در
زمانهاي انتقال و پيگرد فراهم مي آورد که روشهاي مرتب سازي حافظه اي فاقد آن است.
در گزينش جايگزيني اگر دو ديسک در
اختيار داشته باشيم ،بايد حافظه را نيز طوري پيکربندي کنيم که از آنها بهره برداري
شود. حافظه را چنين پيکربندي مي کنيم :
يک بافر ورودي و يک بافر خروجي اختصاص مي دهيم
تا بافردهي دوگانه امکان پذير گردد و بقيه حافظه را به تشکيل درخت انتخاب اختصاص دهيم.
اختصاص دادن بيش از يک پردازنده به يک کار
امري است متداول که به حالات زير امکان پذير است :
۱) کامپيوترهاي بزرگ که بسياري از آنها مقدار
زيادي از وقت خود را صرف مرتب سازي مي کنند ،معمولاً داراي دو يا چند پردازنده
هستند که همزمان روي بخش هاي متفاوت يک مسئله کار مي کنند.
۲) پردازنده هاي برداري و آرايه اي را مي توان
طوري برنامه ريزي کرد که انواع گوناگون الگوريتم مرتب سازي را سريعتر از پردازنده
هاي اسکالر اجرا کند.
۳) ماشين هاي موازي انبوه ،هزاران و شايد
ميليونها پردازنده دارند که مي توانند مستقل از هم کار کنند و در عين حال به شيوه
هاي پيچيده با هم ارتباط برقرار کنند.
۴) شبکه هاي محلي بسيار سريع و نرم افزارهاي
ارتباطي ،ارسال بخش هاي متفاوتي از يک فرايند به چند ماشين متفاوت را امکان پذير
مي سازد.
اگر در سيستمي برنامه نويسي چندگانه
امکان پذير باشد زمان کل براي I/O ممکن است طولاني تر باشد ،زيرا
کارما بايد منتظر بماند تا کارهاي ديگر نيز I/O خود را انجام دهند.
يکي از دلايل برنامه ريزي چندگانه آن
است که به سيستم عامل امکان دهيم تا راههايي براي افزايش بازدهي کل سيستم ،با هم
پوشاني پردازش و I/O در ميان امور متفاوت بيابد.
ليست کاملي از مجموعه جديد ابزاهايي که کارايي مرتب سازي خارجي
را بهبود مي بخشند شامل موارد زيراست :
۱) براي مرتب سازي درون حافظه اي ،از مرتب سازي
هرمي براي تشکيل ليست اوليه عناصر مرتب شده در يک رانش استفاده مي کنيم.
۲) استفاده از حداکثر حافظه ممکن
۳) اگر تعداد رانش هاي اوليه چنان بزرگ باشد که
زمان کل پيگرد و چرخش ،بسيار بزگتر از زمان انتقال کل باشد از ادغام چندمرحله اي
استفاده مي کنيم.
۴) استفاده از گزينش جايگزيني براي تشکيل رانش
هاي اوليه را در نظر بگيريم.
۵) از بيش از يک ديسک گردان و کانال I/O استفاده مي کنيم.
۶) عناصر بنيادي مرتب سازي خارجي و هزينه هاي
نسبي آنها را به خاطر مي سپاريم و به دنبال راه هايي براي بهره بردن از معماري ها
و سيستمهاي جديد ،نظير پردازش موازي مي گرديم.
درادغام موازنه شده دوجانبه ،توزيع اوليه بايد روي دو نوارگردان صورت پذيرد و
در هر مرحله از ادغام ،به جز آخري خروجي بايد روي دو نوارگردان صورت گيرد.
اين ادغام ساده ترين الگوريتم ادغام نواري
است.
ايده هاي استفاده از الگوريتم هاي ادغام مرتبه
بالاتر و ادغام رانش ها از روي يک نوار در چند مرحله مبناي دو روش معروف براي
ادغام ،موسوم به ادغام چند مرحله اي يا ادغام آبشاري است.
به طور
کلي اين ادغام ها در ويژگي هاي زير با هم مشترکند :
۱) توزيع اوليه رانش ها چنان است حداقل ادغام
اوليه يک ادغام 1-j جانبه است که در آن j تعداد نوارگردان ها است.
۲) توزيع رانش ها در ميان نوارها چنان است که
نوارها غالباً حاوي تعداد متفاوتي از رانش ها هستند.
چون ديسک ها دستگاههاي دستيابي مستقيم
هستند ادغام هاي با مرتبه بسيار بزرگ را مي توان انجام داد ،حتي اگر فقط يک
ديسک گردان وجود داشته باشد.
چون نوارها دستگاه هاي دستيابي مستقيم
نيستند براي هر رانش اضافي که بخواهيم ادغام کنيم به يک نوارگردان اضافي نياز
داريم.
بنابر اين ديسک ها بهترند.
شاخص بندي چند سطحي و درختهاي B
مشکل اصلي نگهداشتن شاخص در حافظه جانبي اين
است که دستيابي به حافظه جانبي کند است.
اين مشکل مي تواند به دو مشکل ويژه تقسيم شود :
۱) جستجو بر حسب شاخص بايد سريعتر از جستجوي
دودويي باشد.
۲) درج وحذف بايد با سرعت جستجو کردن انجام شود.
درخت
جستجوي دودويي چه اشکالي دارد؟
۱) براي شاخص بندي روي ديسک سرعت لازم را ندارد.
۲) يک راهبرد مؤثر براي موازنه کردن درخت وجود
ندارد.
تلاشهايي براي حل مشکلات درخت جستجوي
دودوييانجام گرفت که دو تا از آنها
عبارتند از :
۱) درخت هاي AVL
۲) درخت هاي دودويي صفحه صفحه
درخت AVL درختي با ارتفاع موازنه شده است.
يعني اينکه ،اختلاف مجاز ميان هر دو زيردرخت که
ريشه مشترکي دارند محدوديت دارد و حداکثر تفاوت مجاز ۱ است.
دو
مزيت که درخت هاي AVL را با اهميت مي کنند عبارتند از :
۱) با تعيين کردن حداکثر تفاوت مجاز در ارتفاع
هر دو زيردرخت ،درخت هاي AVL حداقل
کارايي را در جستجو تضمين مي کنند.
۲) براي اينکه هنگام درج در درخت AVL،ويژگي خود را حفظ کند ،مستلزم چهار نوع چرخش است.
درخت دودويي صفحه اي ،سعي مي کند با قرار دادن چندين گره دودويي در
يک صفحه ديسک ،مشکل را حل کند.
واضح است که تقسيم کردن درخت به چندين صفحه
امکان جستجوي سريعتر در حافظه جانبي را فراهم مي کند وبه دست آوردن
اطلاعات را سريعتر از هر روش ديگر دستيابي با استفاده از کليد امکان پذير
مي کند.
مشکل اصلي درخت هاي صفحه اي هنوز هم استفاده
از ديسک است.
درخت هاي B شاخص هاي چند سطحي هستندکه مشکل هزينه خطي درج و حذف کردن را حل مي کنند.
اين ويژگي باعث جذابيت درخت B مي شود ،زيرا اکنون درخت هاي B
روش استاندارد شاخص سازي هستند و از پايين به بالا ساخته مي شوند و عملياتي
نظي درج و حذف ،در حافظه روي گره هاي درخت B
اعمال مي شود.
+ نوشته شده در دوشنبه سوم تیر ۱۳۸۷ ساعت 22:25 توسط میلاد
|
برنامههاي واقعي و تجاري بسيار بزرگتر از برنامههايي هستند که تاکنون بررسي کرديم. براي اين که برنامههاي بزرگ قابل مديريت باشند، برنامهنويسان اين برنامهها را به زيربرنامههايي بخشبندي ميکنند. اين زيربرنامهها «تابع» ناميده ميشوند. توابع را ميتوان به طور جداگانه کامپايل و آزمايش نمود و در برنامههاي مختلف دوباره از آنها استفاده کرد.
2-توابع كتابخانهاي C++ استاندارد
«كتابخانۀ C++ استاندارد» مجموعهاي است که شامل توابع از پيش تعريف شده و ساير عناصر برنامه است. اين توابع و عناصر از طريق «سرفايلها» قابل دستيابياند.
قبلا برخي از آنها را استفاده كردهايم: ثابت INT_MAX که در <climits> تعريف شده ، تابع ()sqrt که در <cmath> تعريف شده است و... .