2.78k likes | 3.17k Views
برنامه سازی پیشرفته. مولف : مهندس اکبر مومنی. نام درس : برنامه سازی پیشرفته ( رشته مهندسی کامپیوتر ). تعداد واحد درسی : 3 واحد. فهرست مطالب. فصل اول : مقدمات زبان C++ فصل دوم : ساختار های تصمیم گیری و تکرار فصل سوم : سایر ساختار های تکرار فصل چهارم : اعداد تصادفی
E N D
برنامه سازی پیشرفته مولف : مهندس اکبر مومنی نام درس : برنامه سازی پیشرفته ( رشته مهندسی کامپیوتر ) تعداد واحد درسی : 3 واحد
فهرست مطالب • فصل اول : مقدمات زبان C++ • فصل دوم : ساختار های تصمیم گیری و تکرار • فصل سوم : سایر ساختار های تکرار • فصل چهارم : اعداد تصادفی • فصل پنجم : آرایه ها • فصل ششم : توابع • فصل هفتم : ساختارها و اشاره گرها • فصل هشتم : برنامه نویسی شی گرا
فصل اول مقدمات C++
عملگر انتساب عملگر های محاسباتی عملگرهای افزایش و کاهش عملگر sizeof عملگرهای جایگزینی محاسباتی اولویت عملگرها توضیحات (Comments) توابع کتابخانه برنامه در C++ تاریخچه مختصر قانون نامگذاری شناسه ها متغیر ها اعلان متغیر تخصیص مقادیر به متغیر داده های از نوع کرکتر کرکتر های مخصوص رشته ها نمایش مقادیر داده ها دریافت مقادیر فهرست مطالب فصل اول
تاریخچه مختصر C++ این زبان در اوائل دهه 1980 توسط Bjarne stroustrup در آزمايشگاه بل طراحي شده. اين زبان عملاً توسعه يافته زبان برنامه نويسي Cمی باشد كه امكان نوشتن برنامههاي ساخت يافته شئ گرا را ميدهد.
قانون نامگذاري شناسهها • حروف كوچك و بزرگ در نامگذاري شناسهها متفاوت ميباشند. بنابراين Xy ، XY ، xY ، xy چهار شناسه متفاوت از نظر C++ ميباشد.
قانون نامگذاري شناسهها 2) در نامگذاري شناسهها از حروف الفباء، ارقام وزير خط (underscore) استفاده ميشود و حداكثر طول شناسه 31 ميباشد و شناسه بايستي با يك رقم شروع نگردد.
قانون نامگذاري شناسهها 3) براي نامگذاري شناسهها از كلمات كليدي نبايستي استفاده نمود. در زير بعضي از كلمات كليدي داده شده است. لیست کامل کلمات کلیدی
متغيرها متغير، مكاني در حافظه اصلي كامپيوتر ميباشد كه در آنجا يك مقدار را ميتوان ذخيره و در برنامه از آن استفاده نمود. قانون نامگذاري متغيرها همان قانون نامگذاري شناسهها ميباشد. در اسلاید بعد به انواع داده ها اشاره می شود.
اعلان متغیرها قبل از آنكه در برنامه به متغيرها مقداري تخصيص داده شود و از آنها استفاده گردد بايستي آنها را در برنامه اعلان نمود. در اسلاید بعد مثال هایی از اعلان متغیر ذکر شده است.
چند مثال از اعلان متغیر ها : • براي اعلان متغيرx از نوع int: int x; • برای اعلان متغيرهاي p و q را از نوع float كه هر كدام چهار بايت از حافظه را اشغال ميكنند : floatp , q; • برای اعلان متغير next از نوع كركتر كه ميتوان يكي از 256 كركتر را به آن تخصيص داد و يك بايت را اشغال ميكند. char next;
تخصيص مقادير به متغيرها با استفاده از عملگر = ميتوان به متغيرها مقدار اوليه تخصيص نمود. در اسلاید بعد مثال هایی از اعلان متغیر ذکر شده است.
مثال : • در دستورالعمل int x=26;X را از نوع int با مقدار اوليه 26 اعلان نموده . • در دستورالعمل long a=67000 , b=260; متغيرهاي b و a را از نوعlong int تعريف نموده با مقادير بترتيب260 و 67000.
دادههاي از نوع كركتر براي نمايش دادههاي از نوع char در حافظه كامپيوتر از جدول ASCII استفاده ميشود. جدول اسكي به هر يك از 256 كركتر يك عدد منحصر بفرد بين 0 تا 255 تخصيص ميدهد.
كركترهاي مخصوص كامپيلر C++ بعضي از كركترهاي مخصوص كه در برنامه ميتوان از آنها براي فرمت بندي استفاده كرد را تشخيص ميدهد. تعدادي از اين كركترهاي مخصوص به همراه کاربرد آنها در اسلاید بعد آورده شده است .
كركترهاي مخصوص بعنوان مثال از كركتر \a ميتوان براي ايجاد صداي beep استفاده نمود. char x = '\a ;
رشتهها رشته يا string عبارتست از دنبالهاي از كركترها كه بين " " قرار داده ميشود. در حافظه كامپيوتر انتهاي رشتهها بوسيله \0 ختم ميگردد. در اسلاید بعد به دو مثال دقت نمایید.
مثال 1 : "BOOKSTORE" يك رشته ده كركتري ميباشد كه با توجه به كركتر \0 كه به انتهاي آن در حافظه اضافه مي شود جمعــاً يازده بايت را اشغال ميكند.
مثال 2 : دقت نمایید که "w" يك رشته ميباشد كه دو بايت از حافظه را اشغال ميكند در حاليكه 'w' يك كركتر ميباشد كه يك بايت از حافظه را اشغال مينمايد.
نمايش مقادير دادهها براي نمايش دادهها بر روي صفحه مانتور از cout كه بدنبال آن عملگر درج يعني << قيد شده باشد استفاده ميگردد. بايستي توجه داشت كه دوكركتر < پشت سر هم توسط C++ بصورت يك كركتر تلقي ميگردد.
مثال : • برای نمایش پيغام goodmorning بر روی صفحه نمایش : cout << "good morning"; • برای نمایش مقدار متغیر X بر روی صفحه نمایش : cout << x ;
دریافت مقادیر متغیرها به منظور دريافت مقادير براي متغيرها در ضمن اجراي برنامه از صفحه كليد، از cin كه بدنبال آن عملگر استخراج يعني >> قيد شده باشد ميتوان استفاده نمود.
مثال : int x; cout << "Enter a number:" ; cin >> x;
عملگر انتساب عملگر انتساب = ميباشد كه باعث ميگردد مقدار عبارت در طرف راست این عملگر ارزيابي شده و در متغير طرف چپ آن قرار گيرد.
مثال : x=a+b; x=35 ; x=y=z=26 ; از عملگرهاي انتساب چندگانه نيز ميتوان استفاده نمود. که مقدار سه متغير z و y و x برابر با 26 ميشود.
عملگرهاي محاسباتي در C++ پنج عملگر محاسباتي وجود دارد كه عبارتند از : اين عملگرها دو تائي ميباشند زيرا روي دو عملوند عمل مينمايند. از طرف ديگر عملگرهاي + و – راميتوان بعنوان عملگرهاي يكتائي نيز در نظر گرفت.
مثال 1 : در حالتي كه هر دو عملوند عملگرهاي % ، / ، * ، + ، – از نوع صحيح باشد نتيجه عمل از نوع صحيح ميباشد.
مثال 2 : در صورتيكه حداقل يكي از عملوندهاي عملگرهاي / ، * ، – ، + از نوع اعشاري باشد نتيجه عمل از نوع اعشاري ميباشد.
عملگرهاي افزايش و كاهش در C++ ، افزايش يك واحد به مقدار يك متغير از نوع صحيح را افزايش و بطور مشابه كاهش يك واحد از مقدار يك متغير از نوع صحيح را كاهش مينامند..
عملگرهاي افزايش و كاهش عملگر كاهش را با - - و عملگر افزايش را با ++ نمايش ميدهند. چون عملگرهاي ++ و - - فقط روي يك عملوند اثر دارند اين دو عملگر نيز جزء عملگرهاي يكتائي ميباشند.
مثال : سه دستور العمل : ++x; x++; x=x+1; معادل ميباشند و بطريق مشابه سه دستورالعمل زير نیز معادل مي باشند. - - y ; y=y-1; y- - ;
از عملگرهاي ++ و -- ميتوان بدو صورت پيشوندي و پسوندي استفاده نمود. در دستورالعملهاي پيچيده عملگر پيشوندي قبل از انتساب ارزيابي ميشود و عملگر پسوندي بعد از انتساب ارزيابي ميشود.
مثال : int x=5; y=++x * 2; پس از اجراي دستورالعملهاي فوق : y=12 int x=5; y=x++ * 2; پس از اجراي دستورالعملهاي فوق : y=10
عملگر sizeof Sizeof ازعملگرهاي يكتائي مي باشد و مشخص كننده تعداد بايت هائي است كه يك نوع داده اشغال ميكند. مثال : int x; cout << sizeof x ; مقدار 2 نمايش داده ميشود . cout << sizeof(float) ; مقدار 4 نمايش داده مي شود.
عملگرهاي جايگزيني محاسباتي براي سادهتر نوشتن عبارتها در C++ ، ميتوان از عملگرهاي جايگزيني محاسبـــاتي استفاده نمود. %= /= *= -= +=
اولويت عملگرها ارزيابي مقدار يك عبارت رياضي براساس جدول اولويت عملگرها انجام ميگردد. در ذيل جدول اولويت عملگرها براساس بترتيب از بيشترين اولويت به كمترين اولويت داده شده است.
مثال 1 : (5+2) *(6+2*2)/2 با توجه به جدول اولويت عملگرها داريم كه 7 *(6+2*2)/2 7*(6+4)/2 7* 10 /2 70 /2 35
مثال 2 : int a=6 , b=2, c=8, d=12; d=a++ * b/c ++; cout << d << c << b << a; خروجی : 1 9 2 7
توضيحات (Comments) توضيحات در برنامه باعث خوانائي بيشتر و درك بهتر برنامه ميشود. بنابراين توصيه بر آن است كه حتي الامكان در برنامهها از توضيحات استفاده نمائيم. در C++، توضيحات بدو صورت انجام ميگيرد که در اسلایدهای بعد به آن اشاره شده است.
توضيحات (Comments) الف: اين نوع توضيح بوسيله // انجام ميشود. كه كامپيوتر هر چيزي را كه بعد از // قرار داده شود تا انتهاي آن خط اغماض مينمايد. مثال : c=a+b;//c is equal to sum of a and b ب:توضيح نوع دوم با /* شروع شده و به */ ختم ميشود و هر چيزي كه بين*/ و */ قرار گيرد اغماض مينمايد . مثال : / * this is a program to calcufate sum of n integer numbers */
توابع كتابخانه زبان C++ مجهز به تعدادي توابع كتابخانه ميباشد. بعنوان مثال تعدادي توابع كتابخانه براي عمليات ورودي و خروجي وجود دارند. معمولاً توابع كتابخانه مشابه ، بصورت برنامههاي هدف (برنامه ترجمه شده بزبان ماشين) در قالب فايلهاي كتابخانه دسته بندي و مورد استفاده قرا رميگيرند. اين فايلها را فايلهاي header مينامند و داراي پسوند .h ميباشند.
نحوه استفاده از توابع کتابخانه ای براي استفاده از توابع كتابخانه خاصي بايستـــي نام فايل header آنرا در ابتداي برنامه در دستور #include قرار دهيم. > اسم فايل header<include#
برنامه در C++ اكنون باتوجه به مطالب گفته شده قادر خواهيم بود كه تعدادي برنامه ساده و كوچك به زبان C++ بنويسيم. براي نوشتن برنامه بايستي دستورالعملها را در تابع main( ) قرار دهيم و براي اينكار ميتوان به يكي از دو طريقی که در اسلایدهای بعد آمده است ، عمل نمود.
روش اول : #include < > int main( ) } دستورالعمل 1 ; دستورالعمل 2 ; . . . n دستورالعمل; return 0 ; }
روش دوم : #include < > void main( ) { دستورالعمل 1 ; دستورالعمل 2 ; . . . n دستورالعمل; }
برنامه ای که پيغام C++ is an object oriented language را روي صفحه مانیتور نمايش ميدهد. #include <iostream.h> int main( ) { cout <<"C++ is an object oriented language \n" ; return 0 ; }
برنامه زير يك حرف انگليسي كوچك را گرفته به حرف بزرگ تبديل مينمايد. #include <iostream.h> #include <stdlib. h> int main( ) { char c1 , c2; cout << "Enter a lowercase letter:" cin >> c1; c2 = toupper(c1); cout << c2 << endl; return 0; }
دو عدد از نوع اعشاري را گرفته مجموع و حاصلضرب آنها را محاسبه و نمايش ميدهد. #include <iostream.h> int main( ) { float x,y,s,p ; cin >> x >> y ; s= x+y ; p=x*y; cout << s <<endl << p; return 0 ; }