وحید حقيقت دوست دانشکده فنی و مهندسی دانشگاه شاهد

Slides:



Advertisements
Similar presentations
Queue theory.
Advertisements

در جامعه، افرادي که موقعيت و مسؤليت خود را مي‌دانند از راحتي و امنيت بيشتري برخوردارند هر کلاس از جامعه، مجموعه‌اي از امکانات و تواناييهاي مجاز برخوردار.
Stranded Costs مقدمه 1 - آشنايی با پديده های غيرخطی ( ياد آوری و تکميل ) 2 - مبانی رياضی ( مهم )
سازگاري فرايندهاي يادگيري Consistency of Learning Processes ارائه دهنده : الهام باوفای حقیقی استاد درس : آقای دکتر شيري دانشگاه امير كبير دانشكده ‌ مهندسي.
دستور العمل نحوه محاسبه امتیاز مقالات ISI اعضای هیأت علمی دانشگاه صنعتی اصفهان بر اساس تعداد استنادات در پايگاه اسكاپوس شهریور ماه 1388 نفیسه دهقان.
1 آزمايشگاه سيستم های هوشمند ( Domain-specific Architecture.
برنامه‌ريزي استراتژيک پيشرفته چارچوب کلي تجزيه و تحليل راهبردي (استراتژيک) سيستم‌ها.
طراحي و مدل کردن مؤلفه ها فصل 7 معماري نرم افزار هاي بزرگ دانيال مؤذن استاد : دکتر عبدالله زاده.
روشهاي پارس بهينه. پارس توسط انسان تمام روشهاي پارس که تا کنون مطرح شدند از تکنيکهاي “جستجوي کامل” براي تفسير جمله استفاده مي کردند. به نظر ميرسد که پارس.
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي.
مهندسی نرم افزار مبتنی بر عامل
ارائه روشي براي شناسايي کاراکترهاي دستنويس، برپايه شبکه LVQ.
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي تخصيص منابع.
ارائه درس روباتيکز Extended Kalman Filter فريد ملازم استاد مربوطه دکتر شيري دانشگاه امير کبير – دانشکده کامپيوتر و فناوري اطلاعات.
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي.
نام و نام خانوادگي : فريد ملازم 1 آزمايشکاه سيستم هاي هوشمند ( موضوع ارائه ارتباط بين component ها.
1 فصل 8 - طراحي زيرسيستم ها برگرفته از کتاب Large-Scale Software Architecture – Jeff Garland, Richard Anthony فرنوش گلشن آزمايشگاه سيستم هاي هوشمند بهار.
نام و نام خانوادگي : فريد ملازم 1 آزمايشکاه سيستم هاي هوشمند ( موضوع ارائه Process and Deployment Design.
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي.
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي.
مديريت پروژه‌هاي فناوري اطلاعات
ارائه کننده: آلاء شريعتی
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي تخصيص منابع.
مراحل مختلف اجرای يک برنامه
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي.
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي.
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي.
Artificial Intelligent Systems Laboratory 1 الگو‌هاي فرايند (Process Patterns) فصل 2 درس مهندسي نرم‌افزار 2 دكتر احمد عبداله زاده بارفروش تهيه كننده :
ساختارهاي تقسيم كار پروژه
Solving problems by searching Chapter 3 Modified by Vali Derhami.
1 فصل دوم تبديلات. 2 فصل دوم سرفصل مطالب مقدمه ضرب بردارها دستگاه ‌ هاي مختصات دوران ‌ ها مختصات همگن دوران ‌ ها و انتقال ‌ ها تبديلات تركيبي همگن تبديل.
شرط و تصميم اصول كامپيوتر 1. 2 الگوريتم اقليدس E1: [find remainder] Divide m by n and let r be the remainder. Clearly, 0
1/19 Informed search algorithms Chapter 4 Modified by Vali Derhami.
Department of Computer Eng. & IT Amirkabir University of Technology (Tehran Polytechnic) Data Structures Lecturer: Abbas Sarraf Order.
1 فصل سوم سينماتيك مستقيم. 2 محتواي فصل   تعريف مجموعه فازي   تابع عضويت   نمايش مجموعه هاي فازي   برش آلفا   متغيرهاي زباني   ساخت مجموعه.
2-1 تعريف الگوريتم الگوريتم مجموعه اي از دستورالعمل ها است که
عامل هاي منطقي- منطق گزاره‌اي
Frameworks And Patterns
نظریه رفتار برنامه ريزي شده Theory of Planned Behavior
فلوتاسيون (جلسه پنجم) مهدي نصيري سروي.
اصول کامپيوتر 1 – معرفي درس
مرتب سازي مقايسه اي مرتب سازي خطي
آرايه ها و ساختارها.
آرايه ها.
ANOVA: Analysis Of Variance
ANOVA: Analysis Of Variance
Quick Sort مرتب سازي سريع.
دستورات کنترل و تکرار- 2 اصول كامپيوتر 1.
آشنايي با برنامه نويسي به زبان C++
پردازنده هاي چند هسته اي
معرفي درس ساختمان داده ها و الگوريتمها
دکتر حسين بلندي/ دکتر سید مجید اسماعیل زاده / دکتر بهمن قربانی واقعی
تبدیل فوریه (Fourier Transform)
نمايش اعداد در کامپيوتر چهار عمل اصلي
Similarity transformation
به نام خدا برنامه ارزيابي خارجي کيفيت (هماتولوژی- سرولوژی)
سيستمهاي اطلاعات مديريت
مدلسازي تجربي – تخمين پارامتر
هیدرولیک جریان در کانالهای باز
فيلتر كالمن معرفي : فيلتر كالمن تخمين بهينه حالت‌ها است كه براي سيستم‌هاي ديناميكي با اختلال تصادفي در سال 1960 بزاي سيستم‌هاي گسسته و در سال 1961 براي.
نظریه رفتار برنامه ريزي شده Theory of Planned Behavior
Test آزمون نرم افزار Mansooreh Jalalyazdi.
به نام خدا برنامه ارزيابي خارجي کيفيت (هماتولوژی- سرولوژی)
با تشکر از دکتر جواد سلیمی
نرم افزار عملي دوره كارداني كامپيوتر دانشگاه کردستان دانشكده فني
مثال : فلوچارتي رسم كنيد كه دو عدد از ورودي دريافت كرده بزرگترين عدد
در اين درس مباني ساختمان داده ها و الگوريتم ها تدریس میشود.
آزمايشگاه مهندسي نرم افزار
تبديل همانندي در معادلات حالت و خروجي P ماتريس تبديل ثابت و ناويژه
گروه كارشناسي ارشد مديريت فنآوري اطلاعات(واحد الكترونيكي تهران)
Presentation transcript:

وحید حقيقت دوست دانشکده فنی و مهندسی دانشگاه شاهد C++ ساختمان داده ها در Data Structure in C++ وحید حقيقت دوست دانشکده فنی و مهندسی دانشگاه شاهد

حسين ابراهيم زاده ي قلزم شناسنامه منبع عنوان منبع: ساختمان داده ها در C++ مترجم: حسين ابراهيم زاده ي قلزم انتشارات: سيماي دانش منبع اصلي: data Structure in C++ Horowitz Ellis

فصل اول : مفاهيم اساسي اهداف آشنايي با سيکل زندگي نرم افزار آشنايي با الگوريتم

مراحل مختلفي كه در چرخه نرم افزار هستند: 1-1 سيکل زندگي نرم افزار مراحل مختلفي كه در چرخه نرم افزار هستند: نيازمندي‌ها تجزيه و تحليل طراحي تعريف الگوريتم و برنامه سازي آن تست برنامه

1-1 سيکل زندگي نرم افزار-نيازمندي ها نيازمنديها تمام پروژه هاي بزرگ برنامه نويسي با مجموعه اي از مشخصات و خصوصياتي که اهداف پروژه را مشخص مي کند، شروع مي شود. اين نيازمنديها اطلاعاتي را به برنامه نويسان مي دهند(ورودي) و نيز نتايجي را که بايد ايجاد گردد(خروجي) تعيين مي کنند.

1-1 سيکل زندگي نرم افزار- تحليل تحليل: در اين مرحله مساله را به بخشهاي قابل کنترل تقسيم مي کنند. در تحليل يک سيستم دو شيوه وجود دارد : 1- شيوه از بالا به پايين:با هدف طراحي و توليد طرحي سطح بالا شروع ميشود كه در آن برنامه به بخشهاي قابل مديريت تقسيم ميشود. 2- شيوه از پايين به بالا: روش قديمي و غيرساختيافته است كه تاكيد آن بر مطالعه نكات حساس برنامه نويسي استوار است

1-1 سيکل زندگي نرم افزار- طراحي اين مرحله ادامه کاري است که در مرحله تحليل انجام مي شود. طراح سيستم را از دو نقطه نظر بررسي مي کند: از نظرداده هاي مقصود(data objects) مورد نياز برنامه از نظر اعمالي که بر روي آنها انجام مي شود. اين ديدگاه به مشخصات الگوريتم ها و فرضيات خط مشي ها ي طراحي الگوريتم نياز دارد. ايجاد نوع داده مجرد

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

1-1 نمودار سيکل زندگي نرم افزار نيازمنديها تحليل طراحي الگوريتم و کدنويسي بازبيني

2-1 تعريف الگوريتم الگوريتم مجموعه اي از دستورالعمل ها است که 2-1 تعريف الگوريتم الگوريتم مجموعه اي از دستورالعمل ها است که اگر دنبال شوند، موجب انجام کار خاصي مي گردد

2-1 شرايط الگوريتم ورودي: يک الگوريتم مي تواند هيچ يا چندين کميت ورودي داشته باشدکه از محيط خارج تامين مي شود. خروجي: الگوريتم بايستي حداقل يک کميت به عنوان خروجي داشته باشد. قطعيت: هر دستورالعمل بايد واضح و بدون ابهام باشد. محدوديت: اگر دستورالعمل هاي يک الگوريتم را دنبال کنيم ،براي تمام حالات ، الگوريتم بايد پس از طي مراحل محدودي خاتمه يابد. کارايي: هر دستورالعمل بايد به گونه اي باشد که با استفاده از قلم و کاغذ بتوان آن را با دست نيز اجرا نمود.

2-1 مثالي از الگوريتم: الگوريتم مرتب سازي 2-1 مثالي از الگوريتم: الگوريتم مرتب سازي for (i=0 ; i<n ;i++) { Examine list [ i ] to list [n-1] and suppose that the smallest integer is at list [min]; Interchange list [ i ] and list [min];

2-1 الگوريتم بازگشتي تابع چيزي است که توسط تابع ديگر فراخوانده مي شود . توابع مي توانند خودشان را صدا بزنند (بازگشت مستقيم ) يا مي توانند توابعي که تابع فراخواننده را صدا ميزنند(بازگشتي غيرمستقيم) را احضار نمايند.

2-1 مثال الگوريتم جستجوي دودويي تكراري الگوريتم جستجوي دودويي را بنويسيد. int binsearch ( int list [ ] ، int x ، int n ) { /* search sorted array list[0]… list [n-1] for x */ for(int left=0,right=n-1 ; left<=right ; ) int middle = ( left + right ) / 2 ; switch ( COMPARE (x , list [ middle ])) case ‘>’ : left = middle+1; break; case ‘<’ : right = middle-1; break; case ‘=’ : return middle; break; } return -1 ;

2-1 مثال الگوريتم جستجوي دودويي بازگشتي int binsearch ( int list [ ] ، int x، int left ، int right ) { /* search list [0] <= list [1] <= … <=list [ n-1 ] for x Return its position if found . Otherwise return -1 */ if (left <= right ) int middle = ( left + right ) / 2 ; switch ( COMPARE (x , list [ middle ])) case ‘>’ : return binsearch ( list ، x ، middle +1 ، right ) ; case ‘=‘ : return middle ; case ‘<‘ : return binsearch ( list ، x ، left ، middle -1 ) ; } return -1 ;

2-1 الگوريتم بازگشتي مجموعه اي از دستورات مختلف كه عملي منطقي را انجام ميدهند ميتوانند در كنار هم قرارگرفته و تابع را تشكيل دهند نام تابع و پارامترهاي آن بعنوان دستوري جديد درنظر گرفته ميشوند با تعيين مشخصات ورودي-خروجي يك تابع ميتوانيم به تابع دسترسي پيدا كنيم از اينرو لازم نيست بدانيم كه تابع چگونه كارش را انجام ميدهد با داشتن چنين تصويري از تابع، ابتدا تابع احضار ميشود آنگاه اجرا شده و كنترل اجرا به مكان مربوطه در تابع احضار كننده باز ميگردد. توابع ميتوانند قبل از اتمام كارشان خودشان را احضار كنند (توانمندي لازم براي الگوريتم هاي بازگشتي)

مثال الگوريتم هاي بازگشتي بيان معمولي بيان بازگشتي

مثال: برنامه مولد جايگشت را بصورت بازگشتي بنويسيد void perm(char *a,const int k, const int n) { /* Generate all the permutations of a[k],…,a[ n-1 ] */ if (k == n-1 ) for(int i=0 ; i< n ; i++) cout<<a[i]<<“ “; cout<<endl; return; } for(int i=k; i < n ; i++) //interchange a[k] , a[i] Interchange(a,k,i); perm(a,k+1,n); //interchange a[k] , a[i] again to return the original configuration #include "iostream" #include "conio.h" using namespace std; void Interchange(char *a,int k,int i) { char temp = a[k]; a[k] = a[i]; a[i] = temp; } void perm(char *a,const int k, const int n) /* Generate all the permutations of a[k],…,a[ n-1 ] */ if (k == n-1 ) for(int i=0 ; i< n ; i++) cout<<a[i]<<" "; cout<<endl; return ; for(int i=k; i < n ; i++) //interchange a[k] , a[i] Interchange(a,k,i); perm(a,k+1,n); //interchange a[k] , a[i] again to return the original configuration void main() char test[]="ABCD"; perm(test,0,4); getch();

3-1 آرايه ، ساختار و نوع داده مجموعه اي از عناصر از يک نوع داده مي باشد مجموعه اي از عناصر است که لزومي ندارد داده هاي آن يکسان باشد مجموعه اي از انواع داده (object) و عملکردهايي است که بر روي اين نوع داده ها عمل مي کنند آرايه ساختار نوع داده

3-1 نوع داده اي مجرد نوع داده مجرد يا انتزاعي (ADT) که شامل مشخصات داده ها و اعمالي که بر روي آنها انجام مي شود. جهت جداسازي پياده سازي و نمايش داده ها از يکديگر از ADT استفاده ميشود

4-1 تحليل نحوه اجراي يک برنامه معيارهاي محک زدن يک برنامه آيا برنامه اهداف اصلي کاري را که مي خواهيم، انجام مي دهد؟ آيا برنامه درست کار مي کند؟ آيا برنامه مستند سازي شده است تا نحوه استفاده و طرز کار با آن مشخص شود؟ آيا برنامه براي ايجاد واحدهاي منطقي ، به طور موثر از توابع استفاده مي کند؟ آيا کد گذاري خوانا است؟ آيا برنامه از حافظه اصلي و کمکي به طور موثري استفاده مي کند؟ آيا زمان اجراي برنامه براي هدف شما قابل قبول است؟

4-1 ميزان حافظه يا پيچيدگي فضاي يک برنامه ميزان حافظه يا پيچيدگي فضاي يک برنامه مقدارحافظه مورد نياز براي اجراي کامل يک برنامه است. ميزان يا پيچيدگي زمان يک برنامه مقدار زمان کامپيوتر است که براي اجراي کامل برنامه لازم است.

نيازمنديهاي فضاي متغير 4-1 ميزان حافظه فضاي مورد نياز يک برنامه شامل موارد زير است : اين مطلب به فضاي مورد نيازي که به تعداد و اندازه ورودي و خروجي بستگي ندارد، اشاره دارد. اين مورد شامل فضاي مورد نياز متغيرهاي ساخت يافته اي است که اندازه آن بستگي به نمونه I از مساله اي که حل مي شود، دارد. نيازمنديهاي فضاي ثابت نيازمنديهاي فضاي متغير

4-1 ميزان حافظه(ادامه) نيازمنديهاي فضاي کل نيازمنديهاي فضاي ثابت نيازمنديهاي فضاي متغير

4-1 زمان T(P) برنامه زمان T(P) برنامه عبارتست ازمجموع زمان کامپايل و زمان اجراي برنامه. زمان کامپايل مشابه اجزاي فضاي ثابت است زيرابه خصيصه هاي نمونه بستگي ندارد.

4-1 زمان T(P) برنامه براي محاسبه پيچيدگي زماني عبارتي به شكل زير براي محاسبه Tp(n) بدست مي‌آيد در عبارت فوق n تعداد مشخصه هاي موردي (مشخصه نمونه) است تعداد عمليات جمع تعداد عمليات ضرب تعداد عمليات تفريق

4-1 مرحله برنامه بجاي شمارش تعداد عمليات جمع و تفريق و ضرب براي حل مساله با n مشخصه موردي تنها تعداد مراحل برنامه را ميشماريم

يک مرحله برنامه ، قسمت با معني برنامه است 4-1 مرحله برنامه يک مرحله برنامه ، قسمت با معني برنامه است ( از لحاظ معنايي يا نحوي) که زمان اجراي آن مستقل از خصيصه هاي نمونه باشد تمامي دستور فوق يك مرحله در نظر گرفته ميشود

Iterative function to sum a list of numbers Performance Analysis Iterative function to sum a list of numbers

4-1علامت گذاري مجانبي(O، Ω ،Θ)(Asymptotic) انگيزه براي تعيين تعداد مراحل، قابليت مقايسه پيچيدگي دو برنامه که يک تابع را اجرا مي کنند و پيش بيني رشد و افزايش زمان اجرا با تغيير مشخصه هاي موردي مي باشد. f(n)=O(g(n)) (f(n) از اُردر g(n)) است اگر و فقط اگر به ازاي مقادير ثابت n0 و c براي تمامي مقادير n ≥ n0 مقدار f(n) کمتر يا مساوي cg(n) باشد

4-1علامت گذاري مجانبي(O، Ω ،Θ)(Asymptotic) O(n) : يک تابع خطي ناميده مي شود O(n2) : تابع درجه دو ناميده مي شود قضيه : اگر باشد، بنابراين خواهد بود

رابطه بالا نشان ميدهد كه در صورتي كه براي يك مساله راه حلي با پيچيدگي O(n) داشته باشيم رشد آن بسيار كمتر از راه حلي است كه پيچيدگي آن O(n2) است.

4-1 علامت گذاري مجانبي(O، Ω ،Θ)(Asymptotic) تعريف:]امگا [: f(n)=Ω(g(n)) مي باشد(خوانده مي شود f(n) امگاي g(n) اگر و فقط اگر به ازاي مقادير ثابت مثبت c و n0 ، f(n)≥cg(n) باشد(براي تمام مقادير n به شرطي که n≥n0 باشد) قضيه : اگر باشد، و بنابراين خواهد بود

4-1 علامت گذاري مجانبي(O، Ω ،Θ)(Asymptotic) تعريف تتا[Theta] : f(n) = θ(g(n)مي باشد (خوانده مي شود f(n) تتاي (g(n) اگر و فقط اگر به ازاي مقادير ثابت c1 و c2 و n0، c1g(n)<= f(n) <= c2g(n) وجود داشته باشد (براي تمام مقاديرn>=n0) نشانه گذاري تتا از دو نشانه گذاري ذکر شده “ big oh “ و امگا دقيق تر مي باشد . f(n) = Θ(g(n)) مي باشد اگر و فقط اگر g(n) هم به عنوان کرانه بالا و هم به عنوان کرانه پايين در f(n) باشد.

4-1 علامت گذاري مجانبي(O، Ω ،Θ)(Asymptotic) قضيه : اگر باشد، و بنابراين خواهد بود

4-1 مثال(پيچيدگي جمع ماتريس ها) Asymptotic complexity Statement Θ(rows) Θ(rows.cols) Void add (int a []MAX-SIZE…) { int i،j; for(i=0;i<rows ; i++) for(j=0 ; j<cols ; j++) C[i][j]=a[i][j]+b[i][j]; } Total

Performance Analysis Theorem 1.2: If f(n) = amnm+…+a1n+a0, then f(n) = O(nm). Theorem 1.3: If f(n) = amnm+…+a1n+a0 and am > 0, then f(n) = (nm). Theorem 1.4: If f(n) = amnm+…+a1n+a0 and am > 0, then f(n) = (nm).

Examples f(n) = 3n+2 3n + 2 <= 4n, for all n >= 2  3n + 2 =  (n) 3n + 2 >= 3n, for all n >= 1  3n + 2 =  (n) 3n <= 3n + 2 <= 4n, for all n >= 2  3n + 2 =  (n) f(n) = 10n2+4n+2 10n2+4n+2 <= 11n2, for all n >= 5  10n2+4n+2 =  (n2) 10n2+4n+2 >= n2, for all n >= 1  10n2+4n+2 =  (n2) n2 <= 10n2+4n+2 <= 11n2, for all n >= 5  10n2+4n+2 =  (n2) 100n+6=O(n) /* 100n+6101n for n10 */ 10n2+4n+2=O(n2) /* 10n2+4n+211n2 for n5 */ 6*2n+n2=O(2n) /* 6*2n+n2 7*2n for n4 */

نمايش ميزان رشد توابع با توجه به تغيير مشخصه ورودي

Performance Analysis