Professional Documents
Culture Documents
وحیده بابائیان
vahidebabaiyan@yahoo.com
vahidebabaiyan.blogfa.com
sajaddehganzadeh78@gmail.com
جايگاه اين درس در رشته مهندسی كامپیوتر و مهندسی IT
اين درس اولين درس دانشگاهي رشته مي باشد و نقطه شروعي براي ورود به دنياي جالب برنامه نويسي و علم و فن کامپيوتر
هست .بنابراين ياد گيري اصول اوليه برنامه نويسي در اين درس از جايگاه ويژه اي برخوردار است.
اين درس پايه و اساس برنامه نويسي است که جزء اصول اين رشته مي باشد و اين اصول را به فرگيران ياد مي دهد .بنابراين
يادگيري دقيق اين درس به همراه ارائه پروژه هاي عملي که الزمه اين درس مي باشد جزء اهم مسائل مي باشد .
اهداف درس
مفاهيم اوليه برنامه نويسي ساخت يافته را بداند و اصول الزم را در مرحله اجراء بکار ببرد .
از توابع و روال هاي استاندارد زبان C++در صورت لزوم استفاده نمايد.
از توابع ،روال ها براي جدا کردن قطعات برنامه استفاده کند.
زبان هاي برنامه نويسي مثل C, Pascal, Visual Basic نرم افزار
بیت :کوچکترين واحد اطالعاتي در کامپيوتر که مي تواند مقادير 0و 1را داشته باشد.
ريز پردازنده ،تراشه ي الکترونيکي است که انجام عمليات پردازشي ،منطقي ،رياضي و کنترلي را بر عهده دارد .اين قسمت
اصلي ترين بخش و در واقع مغز کامپيوتر محسوب مي شود .نام ديگر آن Central Processing Unitمي باشد.
واحد ورودي
واحدي که داده ها را از دستگاه هاي ورودي دريافت کرد ه و جهت تبديل آن ها به داده هاي قابل فهم کامپيوتر ،آن را به واحد
کنترل تحويل مي دهد .قابل ذکر است که واحد کنترل بخشي از CPUمي باشد .دستگاه هاي ورودي شامل موس ،کيبورد،
اسکنر ،وسايل بازي و ....هستند.
واحدي است که اطالعات توليد شده توسط کامپيوتر را از حافظه اصلي دريافت کرده و به دستگاه هاي خروجي منتقل مي
نمايد .دستگاه هاي خروجي عبارتند از :چاپگر ،پالتر يا نقشه کش ،مونيتور يا صفحه نمايش ،اسپيکر و ...
حافظه ها
حافظه مکاني است که اطالعات موقتاً يا دائماً در آن قرار مي گيرد .حافظه هاي درون سيستم به دو دسته ي حافظه هاي
اصلي ) (Main Memoryو حافظه هاي جانبي يا ثانويه ) (Secondary Memoryتقسيم مي شوند .هر برنامه براي اجرا ابتدا
بايستي در حافظه ي اصلي قرار بگيرد و سپس توسط CPUاجرا شود .پس از اجراي برنامه ،براي ذخيره اطالعات برنامه ،آن ها
را روي حافظه ي جانبي ذخيره مي کنند.
وب سايت
به مجموعه اي از صفحات وب که توسط يک سرور وب ،ميزباني مي شوند يک وب سايت گوييم.
يک نرم افزار کاربردي است که اسناد فرامتني وب را پيدا مي کند و آن ها را در کامپيوتر کاربر باز مي نمايد .اولين مرورگر وب
Mosaicبود که در سال 1993شروع به کار کرد.
از انواع ديگر مرورگر هاي وب مي توان به عنوان مثال اينترنت اکسپلورر ،موزيال فايرفاکس و ...را نام برد.
ايمیل
چيزي شبيه سيستم پستي قديمي مي باشد .ما مي توانيم به وسيله ي ايميل پيام خود را کمتر از يک ثانيه به تمام دنيا
بف رستيم .صدا ،تصوير و فايل هاي مختلفي مي توانند به نامه ي ما پيوست شوند .بر خالف سيستم تلفن ،اين سيستم يک
سيستم افالين مي باشد .يعني در زمان ارسال نامه الزم نيست طرف مقابل پشت سيستم خود باشد.
موتور جستجو
از اين وسيله براي جستجوي يک تاپيک يا موضوع خاص در اين ترنت استفاده مي کنيم .اين موتورهاي جستجو از طريق
مرورگرهاي وب در دسترس خواهند بود .هر کلمه کليدي يا عبارتي که وارد کنيد با مجموعه اي از نتايج روبرو خواهيد شد .در
ادامه مثال هايي از چند موتور جستجو اورده شده است:
سیستم عامل
سيستم عامل يک نرم افزار سيست مي است که در واقع ارتباط بين سخت افزار و
نرم افزار کاربردي را کنترل مي نمايد .به عبارت ديگر به عنوان واسط سخت افزار و
برنامه هاي کاربردي انجام وظيفه مي کند.
نرمافزارها توسط زبان هاي برنامهنويسي نوشته ميشوند .زبان هاي برنامهنويسي ،يک سيستم ارتباطي هستند که توسط آن ها
ميتوان دستورات الزم را به ماشين انتقال داد.
هر زبان برنامهنويسي به مجموعهأي از عاليم ،قواعد و دستورالعملها گفته ميشود که امکان ارتباط با کامپيوتر را جهت بيان
کاري يا حل مسئلهاي فراهم ميکند.
در حالت کلي زبان هاي برنامهنويسي را به سه دسته زير تقسيمبندي ميکنند:
کامپايلر برنامه نوشته در يک زبان سطح باال را به برنامه مقصد تبديل ميکند.
براي اعداد بزرگتر از ،9يک رقم با اهميت تر به سمت چپ اضافه کنيد .مثال9>19 :
به عنوان مثال عدد 1936301را مي توان به صورت زير نمايش داد:
براي اعداد بزرگتر از ،1يک رقم با اهميت تر به سمت چپ اضافه کنيد .مثال1>10 :
به عنوان مثال عدد 10111301را مي توان به صورت زير محاسبه کرد:
(110000.0111)2 = ( ? ) 10
جواب1831381 :
– مبناي 8
– پايه 8است و رقم ها 0, 1, 2, 3, 4, 5, 6, 7هستند
– (236.4)8 = (158.5)10
– مبناي 16
– پايه 16است و رقمهاي 0, 1, 2, 3, 4, 5, 6, 7, 8, 9از سيستم دهديي قرض گرفته شده اند و از A, B,
C, D, E, Fبه ترتيب براي نمايش رقمهاي 11 ،11 ،13 ،10 ،11 ،10استفاده مي گردد.
– (D63FA)16 = (877562)10
جمع دودويی
در زندگي روزمره ،انسان با مسائل مختلفي روبروست و براي هر کدام از اين مسائل (حل مشکالت) راه حلي و روشي را بر ميگزيند .مسائلي از
قبيل راه رفتن ،غذا خوردن ،خوابيدن و غيره که بشر تقريباً هر روز آنها را پيش روي خود دارد.
همه اين مسائل نياز به روشي براي حل کردن دارند مثال راه رفتن بايد با ترتيب خاصي و مراحل معيني انجام شود .تا مسئله راه رفتن براي بشر
حل شود .اصطالحاً روش انجام کار يا حل مسئله را الگوريتم آن مسئله مينامند.
تعريف الگوريتم
هر دستورالعملي که مراحل انجام کاري را با زباني دقيق و با جزئيات کافي بيان نمايد بطوريکه ترتيب مراحل و شرط خاتمه
عمليات در آن کامال“ مشخص شده باشد را الگوريتم گويند .به عبارتي ديگر :الگوريتم مجموعهاي از دستورالعمل ها ،براي
حل مسئله ميباشد که شرايط زير را بايد دارا باشد:
– دقيق باشد
– جزئيات کامل حل مسئله را داشته باشد.
– پايانپذير باشد.
براي حل يک مسئله بايد الگوريتم آن مسئله را مشخص کنيم (يا بيابيم) .که اصطالحاً طراحي الگوريتم براي آن مسئله ناميده
ميشود .در طراحي الگوريتم معموالً سه مرحله زير را از هم جدا ميکنند:
– خواندن دادهها
– انجام محاسبات
– خروجی ها
مثال :الگوريتمي بنويسيد که دو عدد از ورودي دريافت کرده مجموع دو عدد را محاسبه و چاپ نمايد.
0ـ شروع
1ـ b ,aرا بخوان.
0ـ مجموع b , aرا محاسبه و در sumقرار بده.
3ـ sumرا در خروجي چاپ کن
1ـ پايان
مثال :الگوريتمي بنويسيد که سه عدد از ورودي دريافت کرده مجموع و ميانگين سه عدد را محاسبه و چاپ کند.
0ـ شروع
1ـ سه عدد از ورودي بخوان
0ـ مجموع سه عدد را محاسبه و در sumقرار بده.
3ـ sumرا بر سه تقسيم کرده،در aveقرار بده.
1ـ ave , sumرا در خروجي چاپ کن.
1ـ پايان.
معموالً درك يک الگوريتم با شکل راحت تر از نوشتن آن بصورت متن ميباشد .لذا الگوريتم را با فلوچارت ()flowchart
نمايش ميدهند .فلوچارت از شکلهاي زير تشکيل ميشود.
Begin
End
.3عالمت هاي محاسباتي و جايگزيني :براي نمايش دستورات جايگزيني و محاسباتي از مستطيل استفاده ميکنند:
جايگزين يا محاسبات
شرط
.1عالمت اتصال :براي اتصال شکلهاي مختلف بهم از فلشهاي جهتدار استفاده ميکنند.
مثال :فلوچارتي رسم نمائيد که دو عدد از ورودي دريافت کرده سپس محتويات دو عدد را با هم جابجا نمايد.
براي حل اين مسئله b , aرا دو متغير که در آن ها دو عدد خوانده شده ،قرار ميگيرد در نظر ميگيريم .سپس با استفاده از
يک متغير کمکي محتويات اين دو عدد را جابجا ميکنيم :
تمرين
1ـ فلوچارتي رسم نمائيد که طول و عرض مستطيل را از ورودي دريافت کرده محيط و مساحت آنرا محاسبه و چاپ کند.
0ـ فلوچارتي رسم نمائيد که شعاع دايرهاي را از ورودي دريافت کرده ،محيط و مساحت آنرا محاسبه و چاپ نمايد.
3ـ فلوچارتي رسم کنيد که سه عدد Third , second, firstرا از ورودي دريافت کرده ،محتويات آن ها را جابجا نموده ،حاصل را در خروجي
چاپ کند.
1ـ فلوچارتي رسم نمائيد که دو عدد از ورودي دريافت کرده ،سپس محتويات دو عدد را بدون استفاده از متغير کمکي جابجا کند.
1ـ فلوچارتي رسم نمائيد که عددي (درجه حرارت برحسب سانتيگراد) را از ورودي دريافت کرده سپس آن را به درجه فارنهايت تبديل کند.
در حل بسياري از مسائل يا تقريباً تمام مسائل نياز به استفاده از شروط جزء ،نيازهاي اساسي محسوب ميشود .همانطور که ما
خودمان در زندگي روزمره با اين شرط ها سرکار داريم .بطور مثال اگر هوا ابري باشد ممکن است چنين سخن بگوييم:
اگر هوا باراني باشد سپس چتري برميدارم .در غير اينصورت چتر برنميدارم.
مثال :فلوچارتي رسم نمائيد که عددي را از ورودي دريافت کرده ،فرد يا زوج بودن آن را تشخيص دهد.
مثال :فلوچارتي رسم نمائيد که سه عدد از ورودي دريافت کرده ،کوچکترين عدد را يافته در خروجي چاپ نمايد:
-1فلوچارتي رسم کنيد که عددي را از ورودي دريافت کرده ،قدر مطلق عدد را در خروجي چاپ کند.
-0فلوچارتي رسم نمائيد که عددي از ورودي دريافت کرده مثبت ،منفي يا صفر بودن عدد را تشخيص داده ،در خروجي با
پيغام مناسب چاپ کند.
-3فلوچارتي رسم نمائيد که عددي را از ورودي دريافت کرده ،بخش پذيري آن بر 3و 1را بررسي نمايد.
1ـ فلوچارتي رسم نمائيد که ضرايب يک معادله درجه دوم را از ورودي دريافت کرده ،ريشههاي آن را محاسبه در خروجي
چاپ کند.
در حل بسياري از مسائل با عملياتي روبرو مي شويم ،که نياز به تکرار دارند و عمل تکرار آنها به تعداد مشخصي انجام ميگيرد.
فرض کنيد ،بخواهيم ميانگين 100عدد را محاسبه کنيم ،در اينصورت منطقي بنظر نميرسد که 100متغير مختلف را از
ورودي دريافت کنيم سپس آنها را جمع کنيم.
حلقه هاي با تکرار مشخص :در اين نوع حلقهها تعداد تکرار مشخص ميباشد اين حلقه از اجزاء زير تشکيل ميشود:
مثال :فلوچارتي رسم کنيد که nعدد از ورودي دريافت کرده ،بزرگترين مقدار از بين nعدد را پيدا کرده در خروجي چاپ
نمايد.
در اين حلقهها با توجه به ورودي ،تعداد تکرار مشخص ميشود .و دقيقاً نمي توان تعداد تکرار حلقه را بدون ورودي معين کرد.
اين حلقه ها فقط شامل شرطي هستند که تا زمانيکه برقرار باشد حلقه اجرا ميشود.
در حالت کلي اين نوع حلقهها بصورت زير نمايش داده ميشوند:
مثال :فلوچارتي رسم کنيد که عددي را از ورودي دريافت کرده سپس تعداد ارقام آن را شمرده در خروجي چاپ نمايد.
تمرين
-1فلوچارتي رسم نمائيد که عددي از ورودي دريافت کرده ،کامل بودن آن را بررسي نمايد( .عدد کامل ،عددي است که
مجموع مقسومعليههاي آن با خودش برابر باشد).
-0فلوچارتي رسم کنيد که Nرا از ورودي دريافت کرده N ،جمله سري فيبوناچي را توليد نمايد.
3ـ فلوچارتي رسم نمائيد که دو عدد N , Mرا از ورودي خوانده ،بزرگترين مقسومعليه مشترك دو عدد را محاسبه و چاپ
کند.
حلقههاي تودرتو
الگوريتم هايي که تا حال بکار برديم ،فقط شامل يک حلقه بودند .در صورتي که در بسياري از مسائل ممکن است نياز به
استفاده از چند حلقه در داخل هم باشيم .در اين نوع حلقه ها بايد دقت بيشتري به خرج دهيم ،تا مشکلي پيش نيايد .اگر از
حلقه هاي نوع اول بصورت تودرتو استفاده کنيم در اينصورت براي هر حلقه شرط نهايي و انديس اوليه جداگانه بايد تعريف
کنيم .
حلقههاي فلوچارت
ميتوان را تودرتو
بصورت روبرو نشان داد:
مثال :فلوچارتي رسم نمائيد که Nرا از ورودي دريافت کرده ،مجموع سري زير را محاسبه نمايد:
Sum مجموع
-1فلوچارتي رسم نمائيد که Nعدد از ورودي دريافت کرده تعداد اعداد اول و کامل را شمرده در خروجي چاپ نمايد.
-0فلوچارتي رسم نمائيد که N , Xرا از ورودي خوانده مقدار سري زير را محاسبه کند:
1ـ فلوچارتي رسم کنيد که تاريخ تولد شخصي را از ورودي خوانده ،سن شخص را با تاريخ روز ،محاسبه نموده در خروجي
چاپ کند.
-1فلوچارتي رسم نمائيد که (m>n) N ,Mرا از ورودي دريافت کرده سري فيبوناچي بين N ,Mرا توليد کرده ،در خروجي
چاپ کند.
اين زبان در اوائل دهه 1980توسط Bjarne stroustrupدر آزمايشگاه بل طراحي شده .اين زبان عمالً توسعه يافته زبان
برنامه نويسي Cمي باشد که امکان نوشتن برنامههاي ساخت يافته شئ گرا را ميدهد.
)0در نامگذاري شناسهها از حروف الفباء ،ارقام وزير خط ( )underscoreاستفاده ميشود و حداکثر طول شناسه 31ميباشد
و شناسه بايستي با يک رقم شروع نگردد.
)3براي نامگذاري شناسه ها از کلمات کليدي نبايستي استفاده نمود .در زير بعضي از کلمات کليدي داده شده است.
قبل از آن که در برنامه به متغيرها مقداري تخصيص داده شود و از آن ها استفاده گردد بايستي آن ها را در برنامه اعالن نمود.
براي اعالن متغيرهاي pو qرا از نوع floatکه هر کدام چهار بايت از حافظه را اشغال ميکنند:
مثال :
در دستورالعمل ; x ، int x=26را از نوع intبا مقدار اوليه 26اعالن نموده .
در دستورالعمل ; ، long int a=67000 , b=260متغيرهاي bو aرا از نوع long intتعريف نموده با مقادير بترتيب
260و 67000مقدار دهي کرده ايم.
براي نمايش دادههاي از نوع charدر حافظه کامپيوتر از جدول ASCIIاستفاده ميشود .جدول اسکي به هر يک از 016
کرکتر يک عدد منحصر بفرد بين 0تا 011تخصيص ميدهد.
کرکترهاي مخصوص
کامپايلر C++بعضي از کرکترهاي مخصوص که در برنامه مي توان از آنها براي فرمت بندي استفاده کرد را تشخيص ميدهد.
تعدادي از اين کرکترهاي مخصوص به همراه کاربرد آنها در ادامه آورده شده است .
; Char x = '\a
رشتهها
رشته يا stringعبارتست از دنبالهاي از کرکترها که بين " " قرار داده مي شود .در حافظه کامپيوتر انتهاي رشتهها
بوسيله \0ختم ميگردد.
مثال:
"BOOK STORE" يک رشته ده کرکتري ميباشد که با توجه به کرکتر \0که به انتهاي آن در حافظه اضافه مي
شود جمعــاً يازده بايت را اشغال ميکند.
براي نمايش دادهها بر روي صفحه مانتور از coutکه بدنبال آن عملگر درج يعني >> قيد شده باشد استفاده ميگردد .بايستي
توجه داشت که دوکرکتر > پشت سر هم توسط C++بصورت يک کرکتر تلقي ميگردد.
مثال:
به منظور دريافت مقادير براي متغيرها در ضمن اجراي برنامه از صفحه کليد ،از cinکه بدنبال آن عملگر استخراج يعني
<< قيد شده باشد ميتوان استفاده نمود.
مثال:
;int x
عملگر انتساب
عملگر انتساب = ميباشد که باعث ميگردد مقدار عبارت در طرف راست اين عملگر ارزيابي شده و در متغير طرف چپ آن قرار
گيرد.
از عملگرهاي انتساب چندگانه نيز ميتـوان اسـتفاده نمـود .کـه مثال:
مقدار سه متغير zو yو xبرابر با 26مي شود.
;x=a+b
; x=35
; x=y=z=26
31 وحیده بابائیان جزوه درس مبانی كامپیوتر و برنامه سازي
عملگرهاي محاسباتي
جمع +
تفريق -
ضرب *
تقسیم /
باقیمانده %
اين عملگرها دو تائي ميباشند زيرا روي دو عملوند عمل مينمايند .از طرف ديگر عملگرهاي +و – را ميتوان بعنوان
عملگرهاي يکتائي نيز در نظر گرفت.
مثال : 1
مثال : 2
در ، C++افزايش يک واحد به مقدار يک متغير از نوع صحيح را افزايش و بطور مشابه کاهش يک واحد از مقدار يک متغير از
نوع صحيح را کاهش مينامند.
عملگر کاهش را با - -و عملگر افزايش را با ++نمايش ميدهند .چون عملگرهاي ++و - -فقط روي يک عملوند اثر دارند اين
دو عملگر نيز جزء عملگرهاي يکتائي ميباشند.
;++x
;x++
;x=x+1
;- - y
;y=y-1
; y- -
از عملگرهاي ++و --مي توان بدو صورت پيشوندي و پسوندي استفاده نمود .در دستورالعملهاي پيچيده عملگر پيشوندي
قبل از انتساب ارزيابي مي شود و عملگر پسوندي بعد از انتساب ارزيابي ميشود.
مثال:
;int x=5
;y=++x * 2
;int x=5
;y=x++ * 2
عملگر sizeof
Sizeofازعملگرهاي يکتائي مي باشد و مشخص کننده تعداد بايت هائي است که يک نوع داده اشغال ميکند.
مثال :
;int x
; cout << sizeof x مقدار 1نمايش داده ميشود.
; )cout << sizeof(float مقدار 1نمايش داده مي شود.
براي سادهتر نوشتن عبارت ها در ، C++ميتوان از عملگرهاي جايگزيني محاسبـــاتي استفاده نمود.
اولويت عملگرها
ارزيابي مقدار يک عبارت رياضي براساس جدول اولويت عملگرها انجام مي گردد .در ذيل جدول اولويت عملگرها براساس
بترتيب از بيشترين اولويت به کمترين اولويت داده شده است.
مثال : 1
? = (5+2) *(6+2*2)/2
7 *(6+2*2)/2
7*(6+4)/2
7* 10 /2
70 /2
35
مثال : 0
خروجي1 9 2 7 :
توضيحات در برنامه باعث خوانائي بيشتر و درك بهتر برنامه مي شود .بنابراين توصيه بر آن است که حتي االمکان در برنامهها
از توضيحات استفاده نمائيم .در ،C++توضيحات بدو صورت انجام ميگيرد که در اساليدهاي بعد به آن اشاره شده است.
الف :اين نوع توضيح بوسیله //انجام مي شود .که کامپيوتر هر چيزي را که بعد از //قرار داده شود تا انتهاي آن خط اغماض
مينمايد.
مثال :
c=a+b; //c is equal to sum of a and b
ب :توضيح نوع دوم با * /شروع شده و به */ختم ميشود و هر چيزي که بين* /و */قرار گيرد اغماض مينمايد .
مثال :
/ * this is a program
to calculate sum of
n integer numbers */
توابع کتابخانه
زبان C++مجهز به تعدادي توابع کتابخانه مي باشد .بعنوان مثال تعدادي توابع کتابخانه براي عمليات ورودي و خروجي وجود
دارند .معموالً توابع کتابخانه مشابه ،بصورت برنامه هاي هدف (برنامه ترجمه شده بزبان ماشين) در قالب فايل هاي کتابخانه
دسته بندي و مورد استفاده قرار ميگيرند .اين فايل ها را فايلهاي headerمينامند و داراي پسوند .hميباشند.
براي استفاده از توابع کتابخانه خاصي بايستـــي نام فايل headerآنرا در ابتداي برنامه در دستور #includeقرار دهيم.
اکنون باتوجه به مطالب گفته شده قادر خواهيم بود که تعدادي برنامه ساده و کوچک به زبان C++بنويسيم .براي نوشتن
برنامه بايستي دستورالعمل ها را در تابع ) ( mainقرار دهيم و براي اينکار ميتوان به يکي از دو طريقي که در ادامه آمده است،
عمل نمود.
ما براي کدنويسي برنامههايمان ،به نرم افزارهاي ديگري نياز داريم تا کدهاي برنامه را درون آن بنويسيم و نتايج آنها را
برايمان نمايش بدهد ،به اين برنامهها مترجم ( )Compilerگفته ميشود ،که عبارتند از:
که من استفاده از Microsoft visual studio 2010را پيشنهاد مي کنم ،زيرا نوشتن و ويرايش کد در اين محيط راحتتر
است.
پس از باز کردن نرم افزار Visual Studio 2010همانند شکل زير بر روي گزينه Fileکليک کرده ،سپس با رفتن به روي
دکمهي ،Newگزينهي Projectرا انتخاب ميکنيم:
سپس در پنجره ي باز شده در سمت راست همانند شکل زير روي گزينهي ( C++ File(.cppکليک ميکنيم و نام مناسب
منبع کد را نيز در قسمت ( nameپايين صفحه) مشخص ميکنيم:
در شکل زير کد يک برنامه وجود دارد که پيغام ! welcome to c++را براي ما در مانيتور ،چاپ ميکند:
خط 1و 0دستور هاي پيش پردازنده است ،يعني قبل از کامپايل (کار تبديل کدهاي برنامه به دستورهاي قابل فهم کامپيوتر)
برنامه اين خط اجرا ميشود ،به عبارت ديگر هر خطي که با #شروع ميشود يک دستور پيش پردازنده است.
دستور خط 1به پيش پردازنده مي گويد که محتواي سرفايل جريان ورودي /خروجي را در برنامه قرار دهد.
خط 3يک خط خالي است که کامپايلر آن را ناديده مي گيرد؛ در کل خطوط خالي در کامپايل برنامه خللي ايجاد نميکند و
همچيني به خوانايي کد کمک ميکند.
خط 1به اين معني است که ما از دستورهاي استاندارد استفاده ميکنيم ،که بايد در تمام برنامهها وجود داشته باشد.
از خط 6تا ،10بدنهي اصلي برنامه را تشکيل ميدهد ،که هر برنامهي ما حداقل بايد يک بدنهي اصلي داشته باشد.
کلماتي که به رنگ آبي نمايش داده شده است ،دستور هاي اصلی C++هستند ،دستور intنوع متغير است( .که در قسمتهاي
بعد توضيح داده خواهد شد).
دستور () mainيک تابع است که نمايانگر بدنه ي اصلي برنامه است ،که گيومه خالي به اين علت است که برنامه مقداري را
برنميگرداند ،همين طور بدنهي اصلي بايد بين دو کروشه باز و بسته {} (خطوط 8و ) 10قرار گيرد( .البته در قسمتهاي
بعد به توضيح اين تابع مي پردازيم ).در حالت کلي دستورهاي شامل گيومه ،تابع هستند.
خط ،8خطي است که جملهي ! Welcome to c++را در مانيتور نمايش ميدهد( .اين همه خط کد براي نمايش همين چند يه
جمله!) دستور coutهمراه با عالمت >> قسمت بعد از اين عالمت را در خروجي نمايش ميدهد ،که ميتواند شامل متن
(همانند اين مثال) ،يک متغير و … باشد ،همچنين دستور \nباعث مي شود ،مکان نما به خط جديد برود( .درباره ي اين نوع
دستورها در نکات تکميلي توضيح خواهم داد)
خط 10به اين دليل به کار ميرود تا پنجرهاي که خروجي برنامه را نمايش مي دهد تا زماني که ما کاري براي بستن آن انجام
ندهيم ،بسته نشود ،حتما االن اين سوال را از خود پرسيدهايد که مفهوم بسته نشدن برنامه يعني چه؟ ببينيد به علت اينکه
حاصل نتايج ک ار شما بر روي يک صفحه سياه! نمايش داده مي شود و به عبارت ديگر خروجي برنامه به حالت dosاست شما
بايد از پايه تمام کارهاي برنامه را بنويسيد (همون طور که در قسمت قبل به دقيق بودن کدهاي برنامه اشاره کردم) ،به همين
دليل بايد اين دستور هم براي بسته نشدن پنجره بنويسيد( .براي درك بهتر ميتوانيد اين کد را يک بار حذف کرده و نتيجه را
ببينيد ،البته ميدونم که يه کم فهم اين قسمت سخته به همين دليل شما فقط براي بسته نشدن پنجره اين دستور رو در هر
حالت بنويسيد!)
نکات تکمیلی
C++ .1به بزرگي و کوچکي حروف حساس است ،يعني mainو Mainدو معني جدا از هم دارند ،که تمام دستورهاي C++با
حروف كوچک نوشته ميشوند.
.0تمام دستورهاي C++با عالمت ; (سِمي کالِن) به پايان ميرسند ،به جز دستورهاي پيش پردازنده.
.3تفاوت “ و ’ :هرگاه متنی بين ” ” (دابِل کوتِيشِن) بيايد به آن رشته يا ليتِرال گفته ميشود ،ولي بين ‘ ‘ (کوتِيشِن) يک
متن نمیتواند بيايد ،زيرا اين عالمت براي نمايش يک کاراکتر به کار ميرود.
.1به کاراکتر \ کاراکتر كنترلی يا کاراکتر گريز گفته ميشود ،که نشاندهندهي کاراکتر خاصي بر روي خروجي است (اين
کاراکترها در دستور coutاستفاده مي شوند) ،که چند نمونه از اين نوع کاراکترها عبارتند از:
\tجدول بندي افقي :مکان نما را به محل ستون بعدي (به اندازهي 1/1اينچي) ميبرد.
\rبرگشت به اول سطر :مکان نما را در ابتداي خط فعلي قرار ميدهد ولي آن را تا خط بعد جلو نميبرد.
\aزنگ :صداي سيستم به صدا در ميآيد( .عموما براي نوشتن کد خطا به کار ميرود ،البته استفاده هاي ديگه اي هم داره که
ميتونيد خودتون پيدا کنيد!)
.1دستور هاي جريان ورودي /خروجي به ترتيب شامل دستورهاي cin/coutهستند ،که استفاده از اين دستورها را در برنامه
هاي بعدي که مي نويسيم ،توضيح خواهيم داد ،البته اين دستورها را با اين عالمت ها به کار ميروند cout>> :و <<cin
.6براي اينکه کدي که شما مينويسيد خوانا باشد و اگر روزي آن را به شخص ديگري بدهيد ،بتواند آن را بخواند ،بهتر است از
عالمت هاي توضيحي استفاده کنيد که شامل //و /* */است ،عالمت //براي توضيح يک خطي به کار ميرود و عالمت هاي
/* */براي توضيح چند خطي به کار مي روند ،که توضيح هاي چند خطي با عالمت * /شروع و با عالمت */به پايان ميرسد،
يعني هر عبارتي بين اين دو عالمت قرار بگيرد ،توسط برنامه توضيح تلقي ميشود.
مثال :برنامه زير يک حرف انگليسي کوچک را گرفته به حرف بزرگ تبديل مينمايد.
از اين عملگرها براي تعيين اينکه آيا دو عدد با هم معادلند يا
يکي از ديگري بزرگتر يا کوچکتر ميباشد استفاده ميگردد.
عملگرهاي رابطهاي عبارتند از:
عملگر شرطی
مثال:1
;int x=10,y=20,b
; b=(x>y) ? x : y
اين دو دستور العمل باعث مي شوند که ماکزيمم مقادير yو xدر bقرار بگيرد.
اگر مقدار xبزرگتر يا مساوي ده باشد رشتة passedدر غير اينصورت رشته failedنمايش داده مي شود.
دستورالعمل شرطی
توسط اين دستور شرطی را تست نموده و بسته به آنکه شرط درست يا غلط باشد عکسالعمل خاصي را نشان دهيم.
)if(x != y
} ; { cout << x ; ++ x
else
} ; { cout << y ; - - y
در اين مثال اگر xو yمخالف هم باشند x ،را نمايش داده و سپس به xيک واحد مي افزايد .در غير اين صورت يعني زماني که xو yمساوي هم
هستند ،مقدار yرا نمايش داده و از yيک واحد کم مي کند.
مثال:2
تعدادي عبارت را ميتوان با کاما بهم متصل نمود و تشکيل يک عبارت پيچيدهتري را داد .اين عبارت ها به ترتيب از چپ به
راست ارزيابي شده و مقدار عبارت معادل عبارت nميباشد.
مثال :اگر داشته باشيم ; int a=2 , b=4 , c=5عبارت زير را در نظر بگيريد:
ابتدا به aيک واحد اضافه شده ،سپس aو bجمع مي شوند ،بعد از آن به cيک واحد اضافه مي شود و در نهايت cو bبا هم
جمع مي شوند .مقدار عبارت حاصل برابر است با b+cکه معادل 10ميباشد.
عملگرهاي منطقی
با استفاده از عملگرهاي منطقي ميتوان شرط هاي ترکيبي در برنامه ايجاد نمود .عملگرهاي منطقي عبارتست از :
AND
OR
NOT
)if(x اگر مقدار xمخالف صفر باشد ،آنگاه xبرابر با صفر شود .
;x=0
برنامه زير طول سه پارهخط را از ورودي گرفته مشخص مينمايد که آيا تشکيل يک مثلث مي دهد يا خير؟
ساختار :for
• مقدار دهي اوليه کنترل گر حلقه مي تواند خارج از دستور forباشد .در اين صورت مي توان جمله اول موجود در عبارت
forرا خالي گذاشت.
• در دستور forاگر قسمت شرط خالي باشد ،حلقه هميشه اجرا خواهد شد .به عبارتي هيچ شرطي براي توقف نداريم
• وقتي هيچ شرطي نداريم ،دو قسمت ديگر دستور forنيز مي توانند خالي باشند.
تمرين :اعداد 100تا 1را به صورت نزولي چاپ نماييد ( .با گام حرکت افزايشي و کاهشي جداگانه بنويسيد)
کنترل گر حلقه مي تواند اعشاري يا کاراکتري باشد ،لزومي ندارد که حتما عدد صحيح در نظر بگيريم. •
برنامه زير عدد صحيح و مثبت nرا از ورودي گرفته فاکتوريل آن را محاسبه ونمايش ميدهد.
تمرينات:
• برنامه اي که 10کاراکتر از صفحه کليد خوانده و تعيين کند که کدام يک حرف کوچک است.
اگر در بدنه forاز جمله ي ; breakاستفاده شود ،ادامه ي اجراي حلقه متوقف شده و حلقه خاتمه مي يابد.
;int i , x
)for(i=1;i<=100;i++
;{cin>>x
;if (x==50) break
}
قطعه کد فوق حداکثر 100عدد صحيح از ورودي مي گيرد ،ولي اگر در بين اعداد ورودي عدد 10وارد شود بدون بررسي
شرط حلقه از ادامه اجراي دستورات forاجتناب کرده و از حلقه خارج مي شود.
مثال:
قطعه کدي که تعدادي کاراکتر از صفحه کليد خوانده ،بعد از فشردن دکمه ي Eتعداد آن ها را مشخص کند:
;char ch
;int i
;for(i=0 );i++
;{cin>>ch
;if (ch==‘E’) break
}
;cout<<i
حلقه forتودرتو
مي توان داخل بدنه ي دستور forهر دستور دلخواه ديگري نوشت .به عنوان مثال مي توان از يک دستور forدر بدنه دستور
forاستفاده کرد.
مثال :برنامه اي که 00عدد را خوانده و براي هرکدام مجموع اعداد 1تا آن عدد را محاسبه کند.
اگر دستور ; continueدر حلقه forاستفاده شود ،جمالتي از حلقه که هنوز اجرا نشده اند ،بدون اجرا مانده و ادامه اجرا از
انتهاي حلقه اغاز خواهد شد.
دستورالعمل while
از اين دستور العمل مانند دستورالعمل forبراي تکرار يک دستورالعمل ساده يا ترکيبي استفاده ميگردد .شکل کلي اين
دستور العمل بصورت زير ميباشد.
دستورالعمل forزماني استفاده مي شود که تعداد دفعات تکرار از قبل مشخص و معين باشد .در صورتيکه تعداد دفعات تکرار
مشخص نباشد بايستي از دستورالعمل whileاستفاده نمود .دقت کنيد با پياده سازي مکانيزم هاي خاصي مي توان بدون
توجه به دفعات تکرار از هر دو دستور بصورت مشابه استفاده کرد.
مثال:
int x=0
)while(x<5
با اجراي قطعه برنامه فوق مقادير فوق نمايش داده مي شود :
مثال :برنامة فوق nمقدار از نوع اعشاري را گرفته ميانگين آن ها را محاسبه و در متغير avgقرار ميدهد.
اين دستور العمل نيز براي تکرار يک دستورالعمل ساده يا ترکيبي استفاده ميشود.
در دستورالعمل whileابتدا مقدار شرط ارزيابي شده اما در دستورالعمل do whileابتدا
دستورالعمل اجرا شده سپس مقدار شرط ارزيابي ميگردد .بنابراين دستورالعمل do while
حداقل يک بار انجام مي شود .
دستورالعمل break
اين دستورالعمل باعث توقف دستورالعمل هاي تکرار( )for , while ,do whileشده و کنترل به خارج از اين دستورالعمل ها
منتقل مينمايد.
چند مثال:
از دستورالعمل continueميتوان در دستورالعمل هاي تکرار for ، while ، do whileاستفاده نمود .اين دستورالعمل
باعث ميشود که کنترل به ابتداي دستورالعمل هاي تکرار منتقل گردد.
چند مثال:
همانطور که مي دانيد از دستورالعمل شرطي( )if elseمي توان بصورت تودرتو استفاده نمود ولي از طرفي اگر عمق استفادة تو در
تو از اين دستورالعمل زياد گردد ،درك آنها مشکل مي شود .براي حل اين مشکل ، C++دستورالعمل switchکه عمالً يک
دستورالعمل چند انتخابي ميباشد را ارائه نموده است.
اين تابع يک کرکتر را از صفحه کليد ميگيرد .براي استفاده از اين تابع در ابتداي برنامه بايستي داشته باشيم:
مثال :قطعه برنامه ذيل يک کرکتر را از صفحه کليد گرفته و نمايش ميدهد.
char ;x
;) (x = cin.get
; cout << x
مثال :برنامة ذيل يک سطر متن انگليسي که به CTRL Zختم مي شود را گرفته دقيقاً نمايش ميدهد.
مثال :در قطعه برنامه ذيل ازتابع )( cin.getو دستور switchاستفاده شده است.
char ;x
;) (x = cin.get
{ )switch(x
case r :
case R :
; cout << RED << \n
; break
case b :
case B :
; cout << BLUE << endl
; break
case y :
case Y :
;cout << YELLOW << endl
}
از اين عملگر براي تبديل موقت يک نوع dataبه نوع ديگر استفاده ميشود .اين عملگر يک عملگر يکتائي ميباشد.
مثال:1
; int x = 25
; float y
; )y = static_cast < float >(x
مقدار xموقتاً بصورت اعشاري در مي آيد و در نتيجه مقدار yبرابر با 25.0مي شود .بايستي توجه داشت که نوع متغير x
عوض نمي شود بلکه موقتاً مقدار آن بصورت اعشاري در آمده است.
مثال:0
; float x = 14.75
;cout << static_cast < int >(x) << endl
; cout << x
ابتدا مقدار 11نمايش داده مي شود و سپس مقدار 11381نمايش داده مي شود.
.1برنامه اي که يک سکه 100ريالي را به سکه هاي 0و 1و10و 00و 10ريالي خرد کند.
اعداد تصادفي
مقادير تصادفي يا شانسي در اکثر برنامه هاي کاربردي در زمينه شبيه سازي و بازي هاي کامپيوتري نقش مهمي را ايفا
مينمايند .براي ايجاد يک عدد تصادفي صحيح بين 0و 30868بايستي از تابع )( randاستفاده نمائيم.
مثال :برنامه زير 10عدد تصادفي بين 0و 32767را ايجاد مينمايد.
مثال :برنامه زير 10عدد تصادفي بين 0و 32767را ايجاد مينمايد) srand( ) ( .
: شکل کلي عبارتست از. ميتوان براي تعريف نوع دادههاي جديد که معادل نوع دادههاي موجود باشد استفاده نمودtypedef از
چند مثال:
;}emum status {married, devorced, vidow, single ; status a ; a= single
نکته:
بايستي در نظر داشت که داده هاي از نوع شمارشي در عمليات ورودي و خروجي شرکت نمينمايند .به عبارت ديگر مقادير
داده هاي از نوع شمارشي بايستي در برنامه تعيين نمود .دستورالعل هاي ورودي و خروجي مانند cinو coutدر مورد دادههاي
شمارشي نميتوان استفاده نمود.
آرايه يک بعدي
آرايه يک بعدي:
آرايه يک فضاي پيوسته از حافظه اصلي کامپيوتر ميباشد که ميتواند چندين مقدا را در خود جاي دهد.
آرايهها در برنامهنويسي در مواردي کاربرد دارند که بخواهيم اطالعات و دادهها را در طول اجراي برنامه حفظ نمائيم.
مثال:
; ]int x[5
نکته :اگر تعداد مقادير اوليه کمتر از تعداد عضوهاي آرايه باشد عضوهاي باقيمانده بطور اتوماتيک ،مقدار اوليه صفر ميگيرند.
مثال:
;}int x[5] = {12, 5, 7
نکته :بايستي توجه داشت که آرايهها به صورت ضمني مقدار اوليه صفر نمي گيرند .برنامه نويس بايد به عضو اول آرايه ،مقدار
اوليه صفر تخصيص دهد تا عضوهاي باقي مانده بطور اتوماتيک ،مقدار اوليه صفر بگيرند.
; }int x[5] = {0
برنامه زير 100عدد اعشاري را گرفته تشکيل يک آرايه مي دهد سپس مجموع عناصر آرايه را مشخص نموده نمايش ميدهد.
;using namespace std
#include > <iostream
) (int main
{
; const int arrsize = 100
; float x[ arrsize], tot = 0.0
)for(int j=0; j<arrsize; j++
;] cin >> x[ j
)for(j=0; j<arrsize; j++
; ] tot += x[ j
; cout << tot
; return 0
}
int main ( )
{
const int n=10;
float x[n] , temp;
int i,j ;
for(i=0; i<n; ++i)
cin >> x[i];
for(i=n-1; i>0; i--)
for(j=0 ; j<i; j++)
if(x[j] > x[j+1])
{
temp = x[j] ;
x[j] = x[j+1];
x[j+1] = temp ;
}
for(i=0; i< n ; i++)
cout << x[i] << endl;
getch();
return 0 ;
}
)آرايههاي دوبعدي (ماتريسها
int a[3][4];
نکته:1
نکته:0
; } int a[3][4]= {1, 2, 3, 4,5
نکته:3
در يک آراية دوانديسی ،هر سطر ،در حقیقت آرايهاي يک انديسی است .در اعالن آرايههاي دوانديسی ذكر تعداد ستون ها الزامی
است.
;}int a[ ][4]={1,2,3,4,5
تعريف توابع
استفاده از توابع در برنامهها به برنامهنويس اين امکان را ميدهد که بتواند برنامههاي خود را به صورت قطعه قطعه برنامه
بنويسد .تا کنون کليه برنامههائي که نوشتهايم فقط از تابع ) ( mainاستفاده نمودهايم .شکل كلی توابع بصورت زير ميباشند:
{
declaration and statements لیست پارامتر ها جهت انتقال اطالعات از تابع احضار كننده به تابع فراخوانده شده
}
برنامه زير يک مقدار مثبت را گرفته فاکتوريل آن را محاسبه نموده نمايش ميدهد.
نکته :وقتي در تابعي ،تابع ديگر احضار مي گردد بايستي تعريف تابع احضار شونده قبل از تعريف تابع احضار کننده در برنامه
ظاهر گردد.
نکته :اگر بخواهيم در برنامهها ابتدا تابع mainظاهر گردد بايستي prototypeتابع يعني پيش نمونة تابع که شامل نام تابع،
نوع مقدار برگشتي تابع ،تعداد پارامترهائي را که تابع انتظار دريافت آن را دارد و انواع پارامترها و ترتيب قرارگرفتن اين
پارامترها را به اطالع کامپايلر برساند.
مثال:
مثال:
توابع بازگشتي يا recursiveتوابعي هستند که وقتي احضار شوند باعث ميشوند که خود را احضار نمايند.
! f(n) = n
n!=(n-1)! *n
0 , 1, 1, 2, 3, 5, 8, 13, 21 , 34, …
.) را مشخص و نمايش ميدهدfibonacci( امين مقدار دنبالة فيبوناچيn برنامه زير
مثال :در برنامه زير تابع modifyآرايه aرا بعنوان پارامتر ميگيرد.
کلمه inlineبدين معني است که به کامپايلر دستور ميدهد که يک کپي از دستورالعمل هاي تابع در همان جا (در زمان
مقتضي) توليد نمايد تا از احضار تابع ممانعت بعمل آورد.
بجاي داشتن تنها يک کپي از تابع ،چند کپي از دستورالعمل هاي تابع در برنامه اضافه ميشود که باعث بزرگ شدن اندازه يا
طول برنامه ميشود .بنابراين از inlineبراي توابع کوچک استفاده ميگردد.
تاکنون وقتي تابعي را احضار ميکرديم يک کپي از مقادير آرگومان ها درپارامترهاي متناظر قرار ميگرفت .اين روش احضار
بوسيله مقدار يا call by valueناميده شد .در انتقال پارامترها از طريق ارجاع در حقيقت حافظه مربوط به آرگومان ها و
پارامترهاي متناظر بصورت اشتراکي مورد استفاده قرار ميگيرد .اين روش call by referenceناميده ميشود.
در اين روش پارامترهائي که از طريق call by referenceعمل مينمايند در پيش نمونه تابع قبل از نام چنين پارامترهائي
از & استفاده ميشود .واضح است که در تعريف تابع نيز به همين طريق عمل ميشود.
متغيرها به دو طريق متمايز مشخص ميشوند :يکي بوسيله نوع ( )typeآن ها و ديگري بوسيله کالس حافظه آن ها.
نوع متغير قبالً اشاره شد .بعنوان مثال . . . ، double ، float ، intولي کالس حافظة يک متغير در مورد طول عمر و وسعت و
دامنة متغير بحث مينمايد.
بطور کلي کالس حافظه متغيرها به چهار دستة تقسيم ميگردد :
automatic .1
static .0
external .3
register .1
:Staticمتغيرهاي staticنيز در درون توابع تعريف مي شوند و از نظر وسعت و دامنه شبيه متغيرهاي automaticهستند ولي
در خاتمة اجراي تابع ،حافظه وابسته به اين نوع متغيرهـــا از بين نمي رود بلکه براي فراخواني بعدي تابع باقي ميماند.
بايستي توجه داشت که اگر در توابع به متغيرهاي از نوع staticمقدار اوليه تخصيص ندهيم مقدار صفر بصورت اتوماتيک براي
آن ها در نظر گرفته ميشود.
:Externalمتغيرهاي از نوع externalمتغيرهائي هستند که در بيرون از توابع اعالن مي شوند و وسعت و دامنه فعاليت آن
ها کليه توابعي مي باشد که در زير دستور اعالن متغير قرار دارد.
مثال:
:Registerوقتي متغيري از نوع registerاعالن ميشود از کامپيوتر عمالً درخواست ميشود که به جاي حافظه از يکي از
رجيسترهاي موجود استفاده نمايد.
کاربرد کالس :registerمعموالً از نوع رجيستر براي شاخصهاي دستور تکرار و يا انديس هاي آرايهها استفاده ميشود .بايستي
توجه داشت که متغيرهاي از نوع رجيستر قابل استفاده در دستور cinنميباشند.
در C++اين امکان وجود دارد که دريک برنامه بتوانيم از چند توابع هم نام استفاده نمائيم مشروط بر اين که پارامترهاي اين
توابع متفاوت باشند( .از نظر تعداد پارامتر و يا نوع پارامترها و ترتيب آن ها)
مثال:
.1برنامه اي بنويسيد که 3عدد اعشاري را خوانده و به تابعي ارسال کند و تابع ميانگين آن ها را محاسبه کرده و
برگرداند.
.0برنامه اي که ضرايب معادله ي درجه دومي را خوانده ،آن ها را به تابعي ارسال کند .تابع معادله را حل کند و جواب ها
را در خروجي چاپ کند( .تابع جواب ها را به تابع اصلي برنمي گرداند).
.3برنامه اي بنويسيد که عددي را از ورودي خوانده و هريک از ارقام آن را در يک سطر چاپ کند .تفکيک و چاپ ارقام
توسط تابع بازگشتي صورت گيرد.
.1برنامه اي بنويسيد که حاصلضرب دو عدد صحيح را به کمک جمع کردن محاسبه کند .براي اين کار از تابع بازگشتي
استفاده کنيد.
ساختارها
ساختارها شبيه آرايه ها بوده بدين صورت که يک نوع داده گروهي است که فضاي پيوسته از حافظه اصلي را اشغال مينمايد.
اما عناصر ساختار الزاماً از يک نوع نميباشند بلکه اعضاي يک ساختار
ميتوانند از نوعهاي مختلفه از قبيل … ، float ، int ، charباشند.
تعريف ساختار:
struct account
{
; int acc_no
;char acc_type
; ]char name[80
; float balance
;}
ساختار accountداراي چهار عضو ميباشد:
به دو صورت مي توان اعالن يک متغير از نوع ساختار را نمايش داد :
جزء . استفاده ميگردد .عملگر دسترسي به عناصر يک ساختار :به منظور دسترسي به عناصر يک ساختار از عملگر .
عملگرهاي يکتائي ميباشد.
مثال:
cust .acc_no = 4236
cust .acc_type = r
cust . name = Nader Naderi
cust . balance = 7252.5
برنامه زير هر عدد مختلط را بصورت يک ساختار در نظر گرفته ،دو عدد مختلط را ميگيرد و مجموع آن ها را مشخص و
نمايش ميدهد.
Union
unionاز نظر ساختاري شبيه structميباشد .با اين تفاوت که عضوهائي که تشکيل unionمي دهد همگي از حافظه مشترکي
در کامپيوتر استفاده مينمايند .تمام اعضاي داده اي در يونيون از يک محل شروع مي شوند.
بنابراين استفاده از unionباعث صرفهجوئي در حافظه ميگردد.
مثال:
union id
{
;]char color [10
;int size
;} x , y
color
size
مثال:
اگر همانند دو دستور اول عمل کنيم ،خود کامپايلر اتوماتيک در آخر رشته ’ ‘\0قرار مي دهد ولي در حالت سوم بايد خودمان
به رشته ’ ‘\0بدهيم.
الحاق دو رشته:
#include <string.h>
#include <conio.h>
#include <iostream>
int main( )
getch();
return 0;
char t[10];
if(strcmpi(name[j], name[j+1])> 0)
strcpy(t, name[j]);
strcpy(name[j], name[j+1]);
strcpy(name[j+1], t);
return ;
رشتههاي s1و s2را با هم مقايسه نموده (بدون توجه به حروف کوچک و بزرگ) اگر رشته s1برابر با رشته s2باشد مقدار
صفر و اگر رشته s1کوچکتر از رشته s2باشد يک مقدار منفي در غير اينصورت يک مقدار مثبت بر ميگرداند.
رشتههاي s1و s2را با هم مقايسه نموده اگر s1برابر با s2باشد مقدار صفر و اگر رشته s1کوچکتر از رشته s2باشد يک
مقدار منفي در غير اينصورت يک مقدار مثبت برميگرداند.
حداکثر nکرکتر از رشتة s1را با nکرکتر از رشتة s2مقايسه نموده در صورتيکه s1کوچکتر از s2باشد يک مقدار منفي ،اگر
s1مساوي با s2باشد مقدار صفر در غير اينصورت يک مقدار مثبت برمي گرداند.
دو رشتة s1و s2را بعنوان آرگومان گرفته رشتة s2را به انتهاي رشتة s1اضافه مينمايد .کرکتر اول رشتة s2روي کرکتر
پاياني \0رشتة s1نوشته ميشود ونهايتاً رشتة s1را برمي گرداند.
دو رشته s1و s2ومقدار صحيح و مثبت nرا بعنوان آرگومان گرفته ،حداکثر nکرکتر از رشتة s2را در انتهاي رشتة s1کپي
مينمايد .اولين کرکتر رشته s2روي کرکتر پاياني \0رشتة s1مينويسد ونهايتاً مقدار رشتة s1را برمي گرداند.
تابع (strlen(s
دو رشتة s1و s2را بعنوان آرگومان گرفته رشتة s2را در رشتة s1کپي مينمايد و نهايتاً مقدار رشتة s1را بر ميگرداند.
;]char s1[20
;"char s2[10]=“ali
ali
;cout << strcpy(s1, s2) << endl
دو رشتة s1 , s2و مقدار صحيح و مثبت nرا بعنوان آرگومان گرفته ،حداکثر nکرکتر را از رشتة s2در رشتة s1کپي نموده،
نهايتاً مقدار رشتة s1را برمي گرداند.
;]char s1[20
;"char s2[10]=“amir ali amir
;cout << strncpy(s1, s2,4) << endl
نکته :براي استفاده از توابع مربوط به رشتهها بايستي حتماً در ابتدا برنامه > #include <string.hرا قرار دهيم.