خسرو شكيبايي به خاطره‌ها پيوست

خسرو شكيبايي به خاطره‌ها پيوست

خسرو شكيبايي - بازيگر مطرح سينماي ايران - درگذشت

Image and video hosting by TinyPic

به گزارش خبرنگار سينمايي  اين چهره‌ي مطرح سينماي ايران كه با نقش‌ ماندگاري چون «حميد هامون» تير) در سن 64سالگي بر اثر سكته‌ي قلبي در منزل خود، به بیمارستان پارسیان منتقل شد ودر همان جا دار فانی را وداع گفت و به خاطره ها پیوست .

ازاین بازیگران تو سینمای ایران خیلی کمه که روز به روز دارن کمتر میشن و از بین ما میرن. ولی کیه که قدرشون رو بدونه.همه بعد از مرگشون می فهمیم که واقعا چه کسانی رو از دست دادیم

زمان و مكان مراسم تشييع پيكر زنده‌ياد خسرو شكيبايي از طرف خانه سينما پيگيري مي‌شود.  

من که خیلی متاثر شدم وقتی این خبر رو شنیدم. روحش شاد

سیستم هاي عامل  جلسه ششم

فصل ششم

همزمانی: بن بست و گرسنگی

اصول بن بست:

- بن بست را به صورت مسدود بودن دائمی مجموعه ای از فرآیند ها که برای منابع سیستم رقابت می کنند یا با یکدیگر در ارتباط هستند .

 

- راه حل کارامدی برای بن بست وجود ندارد.

 

- تمام بن بستهابی نیاز های متضاد دو فرآیند یا بیشتر ،برای منابع هم راه هستند.

 

انواع منابع:


....

ادامه نوشته

شیوه ارائه مطالب علمی و فنی   جلسه ششم

اجزاء آغازين ارائه كتبي

در اینجا به شرح بعضی از اجزاء بخش آغازین در یک ارائه کتبی می پردازیم 

 

جلد :

در بعضی از گونه های ارائه کتبی لازم ودر بعضی دیگر لازم نیست. معمولا در آن گونه هایی که نیاز به جلد دارند محتوای صفحه عنوان روی جلد هم درج می شود .

 

صفحه عنوان :

در بیشتر گونه های ارائه کتبی صفحه عنوان صفحه جداگانه ای است که صورت و محتوای خاص خود را دارد. 

....

ادامه نوشته

معماری کامپیوتر جلسه پنجم

انشعاب ها

- در بیشترپردازشگرها“شمارنده برنامه“(PC)آدرس دستورالعمل بعدی را نگه می دارد:واکشی ازM[(PC)]

- به طور عادی بعداز اینکه یک دستورالعمل تمام شدCPU  n تا به PC اضافه می کند n  تعداد بایت ها در دستورالعمل است

- انشعاب هابه یک برنامه اجازه می دهند واکشی کنند از مکانهای متفاوت

- انشعابها استفاده میشوند برای به کاربردن همه روند کنترلی فرمانهای زبان های سطح بالا ازقبیل if-then-else, for, switch, etc .

 

طبقه بندی انشعاب ها

- دو نوع اساسی از پرشها:

.....

 

ادامه نوشته

زبان ماشین و اسمبلی جلسه ششم

فصل ششم

روال ها

 

روال‌ها

کلمه روال در زبان پاسکال و ساير زبانهاي برنامه‌نويسي سطح بالا براي بيان زير برنامه‌اي که تقريباً يک واحد کاملي مي‌باشد، بکار مي‌رود.

آرگومانها بايستي متناظر با پارامترهاي مجازي روال مزبور باشند. در زبان پاسکال نوع ديگري از زير برنامه‌ به نام تابع وجود دارد. يک تابع در زبان پاسکال شبيه يک روال مي‌باشد بجز اينکه آن را در داخل يک عبارتي با ذکر نام و آرگومانهاي مربوطه در داخل پرانتز، فراخواني مي‌کنيم. يک تابع مقداري را بر مي‌گرداند که اين مقدار در عبارت مربوطه مورد استفاده قرار مي‌گيرد.

آدرس برگشت به برنامه فراخواننده زير برنامه روي پشته ذخيره مي‌شود مي‌توان مقادير ثبات‌ها در زمان فراخواني يک زيربرنامه را روي پشته ذخيره نموده و در زمان برگشت به برنامه فراخواننده مقادير ثبات‌ها را با استفاده از پشته بازسازي نمود، با استفاده از پشته مي‌توان آرگومانها را به يک زيربرنامه انتقال داده و يا مقاديري را از يک زيربرنامه فراخواننده انتقال داد، و حتي مي‌توان فضاي لازم براي متغيرهاي محلي را روي پشته تخصيص داد.

.....
ادامه نوشته

سیستم هاي عامل  جلسه پنجم

فصل پنجم

همزمانی:

انحصار متقابل و همگام سازی

همه موضات محوری در طراحی سیستم عامل به مدیریت فرایند ها و نخ ها مربوط است.

 

چند برنامه ای : مدیریت فرایند فرایندهای متعدد در داخل یک کامپیوتر تک پردازنده ای.

چند پردازشی: مدیریت فرایند فرایندهای متعدد در داخل یک کامپیوتر چند پردازنده ای.

پردازش توزیعی: مدیریت فرایند فرایندهای متعدد در روی سیستم های کامپیوتری متعدد.

برای هر سه زمینه فوق مسئله هم زمانی است.

همزمانی در سه زمینه متفاوت طراحی می گردد:

 ....

ادامه نوشته

ذخیره و بازیابی اطلاعات  جلسه ششم

ادامه مبحث شاخص بندي چند سطحي و درختهايB

  

جستجو در درخت B :

 

 ۱) به صورت تکراري عمل مي کنند.

 

 ۲) در دو مرحله عمل مي کنند :

 

 

 الف) به صورت يک درميان روي کل صفحات

 

 ب) در داخل صفحات

 در مورد فرايند درج کردن ،تقسيم کردن و ارتقاء ملاحظات زير را در نظر مي گيريم :

 

 ۱) با جستجويي که تا سطح برگ پيش مي رود شروع مي شود.

 

 ۲) بعد از پيدا کردن محل درج در سطح برگ ،کار درج ،تشخيص سر ريز و تقسيم کردن از پايين به سمت بالا پيش مي رود. 

 .....

ادامه نوشته

طراحی الگوریتم ها جلسه ششم

 

 

فصل ششم:

راهبرد شاخه و حد

 

 

- راهبرد شاخه و حد ازآن لحاظ به عقبگرد شبا هت دارد که

 درآن، بریا حل مسئله از درخت فضای حالت استفاده می شود.

 

- تفاوت این روش با عقبگرد، اولا ما را به پیمایش خاصی ازدرخت محدود نمی کندوثانیا فقط برای مسائل بهینه سازی به کار می رود.

 

- الگوریتم شاخه و حد ، در هر گره عددی را ( حدی ) رامحاسبه می کند تاتعیین شود که آیا این گره امید بخش هست یا خیر.

 

- اگر آن حد بهتر از مقدار بهترین حلی که تاکنون یافته شده ، نباشد، گره غیر امید بخش است. در غیر این صورت ، امید بخش است.

        ......

 

 

ادامه نوشته

برنامه نویسی C  جلسه ششم

فصل 5

دستورهای كنترلي

هدف کلی

آشنایی با مهم‌ترین دستورهای کنترلی در زبان 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  جلسه ششم

6- كامپايل جداگانۀ توابع

 توابع کتابخانۀ C++ استاندارد به همين شکل پياده‌سازي شده‌اند و هنگامي که يکي از آن توابع را در برنامه‌هايتان به کار مي‌بريد بايد با دستور راهنماي پيش‌پردازنده، فايل آن توابع را به برنامه‌تان ضميمه کنيد.

اين کار چند مزيت دارد:

1- اولين مزيت «مخفي‌سازي اطلاعات» است.

2-مزيت ديگر اين است که توابع مورد نياز را مي‌توان قبل از اين که برنامۀ اصلي نوشته شود، جداگانه آزمايش نمود.

3-سومين مزيت اين است که در هر زماني به راحتي مي‌توان تعريف توابع را عوض کرد بدون اين که لازم باشد برنامۀ اصلي تغيير يابد.

4-چهارمين مزيت هم اين است که مي‌توانيد يک بار يک تابع را کامپايل و ذخيره کنيد و از آن پس در برنامه‌هاي مختلفي از همان تابع استفاده ببريد.

تابع max() را به خاطر بياوريد. براي اين که اين تابع را در فايل جداگانه‌اي قرار دهيم، تعريف آن را در فايلي به نام max.cpp ذخيره مي‌کنيم. فايل max.cpp شامل کد زير است:

......

ادامه نوشته

معماری کامپیوتر جلسه چهارم

روشهای آدرس دهی

یک روش آدرس دهی ISA’S این سوال را جواب می دهد :عملوندها کجا میتوانند ذخیره شوند؟

ما دو نوع ذخیره سازی در MIPSداریم( وبیشتر ماشینهای دیگر) :ثباتها و حافظه اصلی.ما می توانیم به هریک از این دو یا هردو عملوندها برویم . یک تک عملوند می تواند با هر یک از این دو بیاید یک ثبات یا یک مکان حافظه ، و روشهای آدرس دهی راه های گوناگون تشخیص این مکانها را ارائه می کند.

 

دراین روشها یک مکان یا داده به طور مستقیم دریک دستورالعمل داده می شود:

Mode name

Example

Meaning

Register

mov $1, $2

R2 R1

Direct (or absolute)

mov $1, (40)

M[40] R1

Immediate

mov $1, #40

40 R1

 

روشهای آدرس دهی غیر مستقیم

در تولید یک آدرس حافظه یکی یا بیشترثباتها استفاده می شوند

....

ادامه نوشته

برنامه نویسی C  جلسه پنجم

عملگرهاي رابطه‌اي (مقايسه‌اي)

 عملگرهاي رابطه‌اي، همان طور كه از نامشان پيداست، رابطة بين دو مقدار را تعيين مي‌كنند. اين عملگرها در جدول 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 مقدار يك برمي‌گردانند.

....

ادامه نوشته

شیوه ارائه مطالب علمی و فنی   جلسه پنجم

  اجزاء سه بخشي يك ارائه كتبي

 

   بند یا متن پار ( clause) :

- به تعدادی نوشتپار ذیل داخلی ترین عنوان در یک شاخه از طرح اولیه بند یا متن پار گوییم . متن پار کمیتی از متن است که خود یک عنوان دارد ودر درونش دیگر عنوانی وجود ندارد و از تعدادی نوشتپار تشکیل شده است .

Image and video hosting by TinyPic

 

متن پار مرکب یا متن بخش :

متن پار ممکن است مرکب باشد یعنی چند متن پار در درون خود داشته باشد . در شکل زیر ساختار متن پار مرکب نشان داده شده است . می توان متن پار مرکب را متن بخش نامید .

 .....

ادامه نوشته

طراحی الگوریتم ها جلسه پنجم

 

 

فصل پنجم:

 

راهبرد عقبگرد

 

- از تکنیک عقبگرد برای حل مسائلی استفاده می شود که در آن ها دنباله ای از اشیاء از یک مجموعه مشخص انتخاب می شود، به طوری که این دنباله ، ملا کی را در بر می گیرد.

 

- یک مثال کلاسیک از عقبگرد، مسئله n وزیر است.

 

 

- هدف از مسئله n وزیر ، چیدن n مهره وزیر در یک صفحه شطرنج است ، به طوری که هیچ دو وزیری یکدیگر را گارد ندهند. یعنی هیچ دو مهره ای نباید در یک سطر، ستون یا قطر یکسان باشند.

 

- عقبگرد حالت اصلاح شده ی جست و جوی عمقی یک درخت است.

 

- الگوریتم عقبگرد همانند جست و جوی عمقی است، با این تفاوت که فرزندان یک گره فقط هنگامی ملاقات می شوند که گره امید بخش باشدو در آن گره حلی وجود نداشته باشد.

 .......

ادامه نوشته

زبان ماشین و اسمبلی  جلسه پنجم

فصل پنجم

انشعاب و حلقه

پرش‌هاي غير شرطي

 

Jmp statement_label

که در آن statemaet_label متناظر با فيلد اسم دستور اسمبلي ديگري مي‌باشد.

دستور JMP شبيه به goto در پاسکال يا بيسيک است.

اگر شرايط مختلفي وجود داشته باشد که تحت آن شرايط برنامه بايد خاتمه پيدا کند، مي‌توان به يک دستور اجرايي که به وسيله برچسب quit: مشخص شده است و محل اختتام برنامه مي‌باشد، پرش نمود.

فرم‌هاي درون سگمنتي وقتي توليد مي‌شوند که مقصد در درون سگمنت جاري قرار داشته باشد، اين فرم‌ها در بين انواع ديگر از همه رايج‌تر مي‌باشند.

پرش‌هاي بين سگمنتي که به عبارتي به يک سگمنت کد ديگر پرش مي‌کنند، به ندرت مورد نياز مي‌باشند.

پرش‌هاي غيرمستقيم مقدار جابجايي خود از دستورالعمل مقصد را، از يک ثبات يا از يک کلمه در حافظه به دست مي‌آورند.

پرش‌هاي درون سگمنتي نسبي، از انواع ديگر معمول‌تر بوده و بيشتر مورد استفاده قرار مي‌گيرند.

 .....

ادامه نوشته

ذخیره و بازیابی اطلاعات  جلسه پنجم

جلسه پنجم - ادامه شاخص ها

 يک اختلاف عمده ميان مرحله مرتب سازي و مرحله ادغام ،در تعداد دستيابي ترتيبي (در مقابل دستيابي مستقيم) است.

 با استفاده از مرتب سازي هرمي براي ايجاد رانش هايي در مرحله مرتب سازي ،مي توان تضمين نمود که همه I/O ها از يک لحاظ ترتيبي است.

 به طور خلاصه چون مرحله ادغام تنها مرحله اي است که در آن مي توان بازدهي را با بهبود بخشيدن به روش کار ،افزايش داد بنابر اين بر آن بيشتر تأکيد داريم.

 با بزرگ شدن فايل ها زمان لازم براي مرتب سازي ادغامي به سرعت افزايش مي يابد. براي کاهش اين زمان چند راه وجود دارد :

 

 ۱) تخصيص سخت افزار بيشتر نظير ديسک گردان ،حافظه و کانال هاي I/O

 

 ۲) اجراي ادغام در بيش از يک مرحله ،کاهش دادن مرتبه هر ادغام و افزايش دادن اندازه بافر براي هر رانش

 

 ۳) افزايش طول رانش هاي مرتب شده از لحاظ الگوريتمي

 

 ۴) يافتن راههايي براي همپوشاني عمليات I/O

 در اين بخش سه تغيير ممکن در پيکربندي سيستم را در نظر مي گيريم که مي تواند زمان مرتب سازي را به طور چشمگيري کاهش دهد :

 

 ۱) افزايش مقدار حافظه

 

 ۲) افزايش تعداد ديسک گردان ها

 

 ۳) افزايش تعداد کانال هاي I/O

 

Image and video hosting by TinyPic

 

 هدف اصلي اين مرتب سازي ادغامي آن است که قادر باشيم فايلهايي را مرتب سازي کنيم که در حافظه جا نمي شوند.

 در ادغام چند مرحله اي، سعي نمي کنيم همه رانش ها را به يکباره ادغام کنيم. بلکه رانش هاي اوليه را به گروههاي کوچک تقسيم کرده ،رانش هاي موجود در اين گروه ها را جداگانه ادغام مي کنيم.

اساس انتخاب جايگزيني ،اين ايده است :

 

 انتخاب هميشگي کليدي از حافظه که داراي کمترين مقدار باشد ،قرار دادن آن کليد در خروجي ،و سپس تعويض آن با يک کليد جديد از ليست ورودي.

الگوريتم انتخاب جايگزيني را مي توان به طريق زير پياده سازي نمود :

 

 ۱) خواندن مجموعه اي از رکوردها و مرتب سازي آنها با استفاده از مرتب سازي هرمي

 

 ۲) به جاي نوشتن کل هرم اوليه به شکل مرتب شده فقط رکوردي را مي نويسيم که کليد آن داراي کمترين مقدار است.

۳) آوردن يک رکورد جديد و مقايسه مقدار کليد آن با مقدار کليدي که به تازگي در خروجي قرار گفته است.

 

 الف) اگر مقدار کليد جديد بزرگتر باشد رکورد جديد را در محل مناسب آن در هرم اوليه ،به همراه رکوردهايي قرار مي دهيم که از خروجي گزينش مي شوند.

 

 ب) اگر مقدار کليد رکورد جديد کمتر باشد ،رکورد را در يک هرم ثانويه از رکوردها با مقادير کليدي کمتر از آنهايي که پيش از اين نوشته شده اند قرار مي دهيم.

 

۴) تا هنگاميکه رکوردي در هرم اوليه باقي باشد و رکوردهايي براي خواندن وجود داشته باشد مرحله ۳ را تکرار مي کنيم.

 گزينش جايگزيني ابزاري سودمند براي فايل هاي ورودي است که قدري مرتب هستند و اين گزينش فرصتي براي صرفه جويي در زمانهاي انتقال و پيگرد فراهم مي آورد که روشهاي مرتب سازي حافظه اي فاقد آن است.

 در گزينش جايگزيني اگر دو ديسک در اختيار داشته باشيم ،بايد حافظه را نيز طوري پيکربندي کنيم که از آنها بهره برداري شود. حافظه را چنين پيکربندي مي کنيم :

 

 يک بافر ورودي و يک بافر خروجي اختصاص مي دهيم تا بافردهي دوگانه امکان پذير گردد و بقيه حافظه را به تشکيل درخت انتخاب اختصاص دهيم.

 اختصاص دادن بيش از يک پردازنده به يک کار امري است متداول که به حالات زير امکان پذير است :

 

 ۱) کامپيوترهاي بزرگ که بسياري از آنها مقدار زيادي از وقت خود را صرف مرتب سازي مي کنند ،معمولاً داراي دو يا چند پردازنده هستند که همزمان روي بخش هاي متفاوت يک مسئله کار مي کنند.

 

 ۲) پردازنده هاي برداري و آرايه اي را مي توان طوري برنامه ريزي کرد که انواع گوناگون الگوريتم مرتب سازي را سريعتر از پردازنده هاي اسکالر اجرا کند.

 

 ۳) ماشين هاي موازي انبوه ،هزاران و شايد ميليونها پردازنده دارند که مي توانند مستقل از هم کار کنند و در عين حال به شيوه هاي پيچيده با هم ارتباط برقرار کنند.

 

 ۴) شبکه هاي محلي بسيار سريع و نرم افزارهاي ارتباطي ،ارسال بخش هاي متفاوتي از يک فرايند به چند ماشين متفاوت را امکان پذير مي سازد.

 اگر در سيستمي برنامه نويسي چندگانه امکان پذير باشد زمان کل براي I/O ممکن است طولاني تر باشد ،زيرا کارما بايد منتظر بماند تا کارهاي ديگر نيز I/O خود را انجام دهند.

 

 يکي از دلايل برنامه ريزي چندگانه آن است که به سيستم عامل امکان دهيم تا راههايي براي افزايش بازدهي کل سيستم ،با هم پوشاني پردازش و I/O در ميان امور متفاوت بيابد.

 ليست کاملي از مجموعه جديد ابزاهايي که کارايي مرتب سازي خارجي را بهبود مي بخشند شامل موارد زيراست :

 

 ۱) براي مرتب سازي درون حافظه اي ،از مرتب سازي هرمي براي تشکيل ليست اوليه عناصر مرتب شده در يک رانش استفاده مي کنيم.

 

 ۲) استفاده از حداکثر حافظه ممکن

 

 ۳) اگر تعداد رانش هاي اوليه چنان بزرگ باشد که زمان کل پيگرد و چرخش ،بسيار بزگتر از زمان انتقال کل باشد از ادغام چندمرحله اي استفاده مي کنيم.

 

 ۴) استفاده از گزينش جايگزيني براي تشکيل رانش هاي اوليه را در نظر بگيريم.

 

 ۵) از بيش از يک ديسک گردان و کانال I/O استفاده مي کنيم.

 

 ۶) عناصر بنيادي مرتب سازي خارجي و هزينه هاي نسبي آنها را به خاطر مي سپاريم و به دنبال راه هايي براي بهره بردن از معماري ها و سيستمهاي جديد ،نظير پردازش موازي مي گرديم.

 درادغام موازنه شده دوجانبه ،توزيع اوليه بايد روي دو نوارگردان صورت پذيرد و در هر مرحله از ادغام ،به جز آخري خروجي بايد روي دو نوارگردان صورت گيرد.

 

 

 

 اين ادغام ساده ترين الگوريتم ادغام نواري است.

 

 ايده هاي استفاده از الگوريتم هاي ادغام مرتبه بالاتر و ادغام رانش ها از روي يک نوار در چند مرحله مبناي دو روش معروف براي ادغام ،موسوم به ادغام چند مرحله اي يا ادغام آبشاري است.

 

 

به طور کلي اين ادغام ها در ويژگي هاي زير با هم مشترکند :

 

 ۱) توزيع اوليه رانش ها چنان است حداقل ادغام اوليه يک ادغام 1- j جانبه است که در آن j تعداد نوارگردان ها است.

 

 ۲) توزيع رانش ها در ميان نوارها چنان است که نوارها غالباً حاوي تعداد متفاوتي از رانش ها هستند.

 

 چون ديسک ها دستگاههاي دستيابي مستقيم هستند ادغام هاي با مرتبه بسيار بزرگ را مي توان انجام داد ،حتي اگر فقط يک ديسک گردان وجود داشته باشد.

 

 

 

 چون نوارها دستگاه هاي دستيابي مستقيم نيستند براي هر رانش اضافي که بخواهيم ادغام کنيم به يک نوارگردان اضافي نياز داريم.

 

 بنابر اين ديسک ها بهترند.

 

شاخص بندي چند سطحي و درختهاي B

 مشکل اصلي نگهداشتن شاخص در حافظه جانبي اين است که دستيابي به حافظه جانبي کند است.

 

 

 

 اين مشکل مي تواند به دو مشکل ويژه تقسيم شود :

 

 ۱) جستجو بر حسب شاخص بايد سريعتر از جستجوي دودويي باشد.

 ۲) درج وحذف بايد با سرعت جستجو کردن انجام شود.

 

درخت جستجوي دودويي چه اشکالي دارد؟

 

 ۱) براي شاخص بندي روي ديسک سرعت لازم را ندارد.

 

 ۲) يک راهبرد مؤثر براي موازنه کردن درخت وجود ندارد.

 

 تلاشهايي براي حل مشکلات درخت جستجوي دودويي انجام گرفت که دو تا از آنها عبارتند از :

 

 ۱) درخت هاي AVL

 

 ۲) درخت هاي دودويي صفحه صفحه

 

 درخت AVL درختي با ارتفاع موازنه شده است.

 

 يعني اينکه ،اختلاف مجاز ميان هر دو زيردرخت که ريشه مشترکي دارند محدوديت دارد و حداکثر تفاوت مجاز ۱ است.

 

Image and video hosting by TinyPic

دو مزيت که درخت هاي AVL را با اهميت مي کنند عبارتند از :

 

 ۱) با تعيين کردن حداکثر تفاوت مجاز در ارتفاع هر دو زيردرخت ،درخت هاي AVL حداقل کارايي را در جستجو تضمين مي کنند.

 

 ۲) براي اينکه هنگام درج در درخت AVL ،ويژگي خود را حفظ کند ،مستلزم چهار نوع چرخش است.

 درخت دودويي صفحه اي ،سعي مي کند با قرار دادن چندين گره دودويي در يک صفحه ديسک ،مشکل را حل کند.

Image and video hosting by TinyPic

 

 واضح است که تقسيم کردن درخت به چندين صفحه امکان جستجوي سريعتر در حافظه جانبي را فراهم مي کند وبه دست آوردن اطلاعات را سريعتر از هر روش ديگر دستيابي با استفاده از کليد امکان پذير مي کند.

 مشکل اصلي درخت هاي صفحه اي هنوز هم استفاده از ديسک است.

 

 درخت هاي B شاخص هاي چند سطحي هستندکه مشکل هزينه خطي درج و حذف کردن را حل مي کنند.

 

 اين ويژگي باعث جذابيت درخت B مي شود ،زيرا اکنون درخت هاي B روش استاندارد شاخص سازي هستند و از پايين به بالا ساخته مي شوند و عملياتي نظي درج و حذف ،در حافظه روي گره هاي درخت B اعمال مي شود.

 

برنامه نویسی ++C  جلسه پنجم

جلسه پنجم

« توابع»

1-مقدمه

برنامه‌هاي واقعي و تجاري بسيار بزرگ‌تر از برنامه‌هايي هستند که تاکنون بررسي کرديم. براي اين که برنامه‌هاي بزرگ قابل مديريت باشند، برنامه‌نويسان اين برنامه‌ها را به زيربرنامه‌هايي بخش‌بندي مي‌کنند. اين زيربرنامه‌ها «تابع» ناميده مي‌شوند. توابع را مي‌توان به طور جداگانه کامپايل و آزمايش نمود و در برنامه‌هاي مختلف دوباره از آن‌ها استفاده کرد. 

2- توابع كتابخانه‌اي C++ استاندارد

«كتابخانۀ C++ استاندارد» مجموعه‌اي است که شامل توابع‌ از پيش تعريف شده و ساير عناصر برنامه است‌. اين توابع و عناصر از طريق «سرفايل‌ها» قابل دستيابي‌اند.

قبلا برخي از آن‌ها را استفاده كرده‌ايم‌: ثابت INT_MAX که در <climits> تعريف شده ، تابع ()sqrt که در <cmath> تعريف شده است و... .

 .....

ادامه نوشته