1- ورودی و خروجی
آشنایی با برنامه نویسی
در ابتدای کار توجه داشته باشید که زبان ++c به بزرگی و کوچکی حروف حساس است و تمام دستورهایی که در ادامه آموزش داده میشوند با حرف کوچک نوشته می شوند مگر زمانی که خلاف آن عینا اعلام شود.
در ابتدای هر برنامه توابع کتابخانهای را که میخواهیم در برنامهی خود از آنها استفاده ببریم معرفی خواهیم کرد. یکی از این توابع کتابخانهای iostream میباشد که معرفی آن به صورت زیر میباشد:
#include <iostream.h>
چند نمونه دیگر از توابع کتابخانهای math یا cmath و همینطور conio و graphics میباشند. در ادامه با این توابع کتابخانهای بیشتر آشنا خواهیم شد.
پس از نوشتن توابع کتابخانهای یا include های مربوط به برنامه ی مورد نظرمان قسمت پراهمیت برنامه ما شروع میشود.
صورت کلی برنامه به صورت زیر میباشد:
#include <iostream.h>
.
.
.
main( )
{
دستورات برنامه;
}
بنابراین هر دستوری که بخواهیم بنویسیم باید در درون تابع main (به معنای اصلی) باشد
هر دستور را در یک خط مینویسیم و انتهای هر دستور را با علامت ; یا سمی کالن مشخص میکنیم.
انواع برنامهها بر اساس ورودی و خروجی:
1- برنامههایی که فقط خروجی دارند.
2- برنامههایی که فقط ورودی دارند.
3- برنامههایی که نه ورودی دارند و نه خروجی.
4- برنامههایی که هم ورودی دارند هم خروجی.
خروجی در++C
برای اعلام مقدار و یا نتیجهی انتهایی هر برنامه باید آن را در پنجره خروجی به کاربر اعلام کنیم. برای این کار باید از دستور cout استفاده کنیم. نحوهی استفاده از این دستور در زیر آمده است. برنامه زیر عبارت hello Iran! را در صفحه خروجی به کاربر نشان میدهد.
cout << ”hello Iran!” ;
دستور cout تنها برای چاپ کردن یک عبارت استفاده نمیشود و میتوان از آن در نمایش حاصل یک عبارت محاسباتی، جابهجایی بین خطوط و قرار دادن فاصله و همینطور نمایش مقدار یک متغیر استفاده کرد که در جلوتر با آن آشنا خواهید شد.
به برنامهی زیر توجه کنید:
#include <iostream>
main( )
{
cout << ”7*8” ;
}
برنامهی بالا در خروجی عینا عبارت 7*8 را نمایش میدهد. پس هر عبارتی را بخواهیم عینا در خروجی نمایش دهیم، مثل دو مثالی که تا حالا بیان کردیم، باید آن عبارت را بین علامت "" یا دابل کوتیشین قرار دهیم.
در خط ابتدایی برنامه دستور #include<iostream> را مشاهده میکنید. هردستور در زبانهای برنامهنویسی با دستورهای مشابه خود دستهبندی میشود. مثلا دستورهای مربوط به ورودی و خروجی دستهبندی مخصوص خود را دارند. این دستهبندی مخصوص جایی است که معنی این دستورها نوشته شده است که همان تابع کتابخانهای میباشد. به این منظور است که برای استفاده از این دستورها در برنامهی خودمان، باید آنها را به برنامه معرفی کنیم و برای این کار تنها کافی است تابع کتابخانهای مربوط به آن دستور را در بالا و قبل از نوشتن main یک بار معرفی کنیم و پس از آن اجازه داریم هر چقدر که دوست داریم از دستور مورد نظر و دستورهای همنوعش در برنامهمان استفاده کنیم. در برنامهی بالا تابع کتابخانهای iostream تابع کتابخانهای مربوط به دستورهای ورودی و خروجی میباشد چون که در برنامه از دستور cout که یک دستور خروجی میباشد استفاده کردهایم.
به برنامهی زیر دقت کنید:
#include <iostream>
main( ) {
cout << 7*8 ;
}
خروجی این برنامه پس از اجرا عدد 56 میباشد. پس در اینجا یاد میگیریم که اگر بخواهیم حاصل محاسباتی را در خروجی اعلام کنیم میتوانیم آن محاسبات را در جلوی دستور cout<< البته بدون کوتیشین بنویسیم. کامپیوتر حاصل عبارت ریاضی را محاسبه میکند و سپس نتیجه را اعلام میکند.
به برنامهی زیر توجه کنید:
#include <iostream>
main( ) {
cout << Hello ;
}
پس از سعی در اجرای این برنامه، کامپایلر به ما ارور (error) میدهد. چرا که hello عبارت محاسباتی ریاضی نیست که کامپیوتر بتواند آن را محاسبه کند و نتیجه را نمایش دهد. تنها میتواند آن را در خروجی نمایش دهد که در آن صورت، شکل صحیح استفاده از دستور به این صورت است:
cout << ”Hello” ;
یعنی باید آن کلمه یا جملهای را که میخواهیم در خروجی نمایش دهیم درون کوتیشین قرار دهیم.
اگر بخواهیم در برنامه از دستور cout به گونهای استفاده کنیم که هم یک کلمه را عینا در خروجی نمایش دهد و هم مقداری را محاسبه کند میتوانیم به دو شکل زیر عمل کنیم:
حالت اول : استفاده از یک دستور cout
cout << ”salam bache joon, khoobi? “ << 7 * 8 + 9 * (13 - 7);
خروجی این برنامه به شکل زیر خواهد بود:
در واقع پس از قسمت اول که نمایش یک جمله است دوباره از علامت << استفاده میکنیم و قسمت دوم خروجی که یک عبارت محاسباتی است را قرار میدهیم. پس اول جملهی salam bache joon, khoobi? را نمایش میدهد و پس از آن بدون اینکه به خط بعدی برود حاصل عبارت ریاضی را محاسبه میکند و جواب را که 110 میشود اعلام میکند.
حالت دوم: استفاده از دو دستور cout
cout << ”salam bache joon, khoobi? “;
cout << 7 * 8 + 9 * (13 - 7);
خروجی این برنامه هم دقیقا مشابه خروجی برنامهی بالایی است.
پس اگر در خط بعدی از دستور cout دیگری استفاده کنیم به این معنی نیست که حاصل عبارت ریاضی را در خط بعدی نمایش خواهد داد. برای اینکه حاصل عبارت ریاضی را در خط بعدی صفحه خروجی نمایش دهد از دستور دیگری باید استفاده کنیم.
به دستور زیر توجه کنید:
cout << ”salam bache joon “ << endl << ”khoobi?” ;
پس از اجرای دستور بالا خروجی به شکل زیر ظاهر میشود:
پس دستور endl به تنهایی باعث میشود نشانگر متن به ابتدای خط بعدی برود. میتوان به جای این دستور از دستور دیگری نیز استفاده کرد که دقیقا همین کار ار انجام میدهد. به برنامهزیر توجه کنید:
cout << ”salam bache joon “ << ”\n” << ”khoobi?” ;
پس از اجرای دستور بالا خروجی به شکل زیر ظاهر میشود:
پس دستور “\n” که جزو معدود دستوراتی است که بین علامت کوتیشین قرار میگیرد نیز همان کار endl را انجام میدهد.
دستور “\t” در برنامهی زیر نشانگر متن را به اندازهی یک فاصلهی 8 تایی به جلو میبرد. به خروجی برنامه توجه کنید.
cout << ”salam bache joon “ << ”\t” << ”khoobi?” ;
خروجی:
ورودی در++C
شما برای ذخیره اطلاعات خود در کامپیوتر به حافظه احتیاج دارید. برای محاسبهی یک عبارت ریاضی، اعداد را به حافظه کامپیوتر میسپرید. سپس منتظر میمانید تا کامپیوتر در کسری از ثانیه جواب را به شما اعلام کند. بنابراین در هر محاسبهی کوچکی از ریاضی بخشی از حافظهی کامپیوتر برای ذخیره اعداد استفاده میشود.
ممکن است این بخش از حافظه در یک محاسبهی ریاضی دیگر یا هر نوع عمل دیگری، اطلاعات دیگیری را ذخیره کند. پس آنچه در حافظهی کامپیوتر ذخیره میشود بسته به نیاز شما متغیر است و همواره ثابت نخواهد ماند.
تا الان یاد گرفتیم که در صفحهی خروجی پیغامی را نمایش دهیم، نتیجهی محاسبهای را اعلام کنیم و یا اینکه به خط بعدی برویم و مکان نشانگر متن را عوض کنیم.
حال باید یاد بگیریم که چگونه میتوانیم با فردی که قرار است با برنامهی ما کار کند( که به آن کاربر میگوئیم) ارتباط برقرار کنیم و از او اطلاعات بگیریم. برای اینکه اطلاعاتی را از کاربر یا از ورودی بگیریم باید جایی از حافظه را در نظر بگیریم که آن اطلاعات را در آنجا ذخیره کنیم. یکی از مکانهایی که میتوانیم اطلاعات را در آن ذخیره کنیم متغیر نامیده میشود. علت انتخاب اسم متغیر برای آن این است که در هر بار اجرای برنامه امکان دارد مقدار متفاوتی را در بر بگیرد.
متغیرها میتوانند به هر مقدار که لازم دارید در برنامه استفاده شوند. برای استفاده از متغیر ابتدا باید آنها را تعریف کنید. برای تعریف یک متغیر باید نوع و اسم آن را در برنامه بنویسید.
;اسم متغیر نوع متغیر
اسم متغیر میتواند ترکیبی از حروف و اعداد باشد که البته عدد را در ابتدای اسم متغیر نمیتوان استفاده کرد. این اسامی برای متغیر مجاز هستند: a, b, abcd, a1, b123, a5b, ab21cd, abs12 اما این اسامی برای متغیر مجاز نمیباشند: 2a, 54, a&b,a!b#n8
متغیرها انواع مختلفی دارند. در اینجا شما با چند نوع از متغیر آشنا خواهید شد که بیشتر از سایر انواع در برنامههای شما استفاده خواهند شد.
1- متغیر از نوع صحیح
این متغیر اعداد صحیح (integer) را در خود جای میدهد. محدودهی این متغیر از 2147483648 – تا 2147483647 میباشد. تعریف این متغیر به صورت زیر میباشد:
int a;
این متغیر فقط اعداد صحیح را در خود جای میدهد. مثلا میتوان برنامهی زیر را نوشت:
#include <conio.h>
#include <iostream.h>
main()
{
int a;
int c, b;
a = 23;
b = 2;
c = a * b;
cout << c;
}
در این برنامه در خط اول یک متغیر a از نوع صحیح تعریف شده است و پس از آن در خط بعدی دو متغیر b و c هم از نوع صحیح تعریف شده اند. مقدار متغیر a را برابر 23 قرار دادهایم و مقدار متغیر b را برابر 2 قرار دادهایم. در خط بعد از آن مقدار متغیر c را برابر حاصلضرب a و b قرار دادهایم. در خط بعد هم مقدار متغیر c را در صفحه خروجی نمایش دادهایم.
خروجی برنامه عدد 46 میباشد.
2- متغیر از نوع ممیزی
این نوع از متغیر اعداد ممیزی را در خود جای میدهد. به برنامهی زیر دقت کنید:
main()
{
float a;
a = 3.5;
float b, c;
int d = 2;
b = 2;
c = 2.3;
c = c + b;
a = a - c;
cout << a * d;
}
در این برنامه متغیر a و b و c از نوع ممیزی تعریف شدهاند و متغیر d هم از نوع صحیح تعریف شده است. متغیرها مقدار دهی شدهاند و پس از آن متغیر c برابر مجموع مقدار خودش و مقدار b قرار گرفته است. ( دقت کنید که c=c+b به این معناست که مقدار توی متغیر c و b را با هم جمع بزن و حاصل را در متغیر c بریز. پس از این کار متغیر b همچنان مقدار قبلی خود را دارد. این دستور را نمیتوان به اشتباه اینگونه نوشت: c+b=c نوشتن این دستور به این صورت برنامه را دچار خطا(error) میکند. )
خط a=a-c را نیز میتوان به صورت بالا تحلیل کرد. پس از آن در خط انتهایی مقدار a در d که یک متغیر از نوع صحیح است ضرب میشود و جواب در صفحه خروجی نمایش داده میشود. ( -1.6)
3- متغیر از نوع کاراکتری
این نوع از متغیر کاراکتر(character) را در خود جای میدهد. کاراکتر به تمامی حروف و علائم و اعداد روی کیبرد گفته میشود. چند نمونه از کاراکتر ها به این شکل میباشند: a, b, c, @, #, $, %, 1, 2, 3, 4, …
به برنامهی زیر دقت کنید:
main()
{
char a;
a = '@';
char b = '$';
a = b;
cout << a;
}
در این برنامه متغیر a و b از نوع کاراکتری تعریف شدهاند. مقدار درون متغیرa علامت @ میباشد و مقدار درون متغیر bهم علامت $ میباشد. در خط بعد از مقدار دهی، نوشته شدهاست a=b این خط به این معنی است که مقدار متغیر b را درون متغیر a بریز( اشتباهی به این معنی تعبیر نکنید که مقدار a را توی b میریزد!) پس از این دستور، مقدار درون a برابر علامت $ میشود و مقدار متغیر b هم تغییر نمیکند.
خروجی این برنامه هم علامت $ است.
دقت کنید که برای ریختن یک کاراکتر در یک متغیر کاراکتری باید آن کاراکتر را درون علامت ‘ ‘ یا سینگل کوتیشین قرار دهیم. پس اگر بخواهیم در متغیری کاراکتری، کاراکتر 3 را بریزیم باید به این صورت عمل کنیم:
char a = '3';
توجه داشته باشید که اعداد در نوع کاراکتری ارزش محاسباتی ندارند و نمیتوان آنها را در محاسبات استفاده کرد. پس در اینجا نمیتوان از این عدد 3 در محاسبات استفاده کرد. چرا که 3 فقط یک کاراکتر محسوب شده و تنها پیچشی از خط به شکل عدد 3 است و ارزش محاسباتی ندارد.
پس دستور زیر غلط است:
char a = '3';
int b = a + 9;
در این برنامه نمیتوان متغیر از نوع صحیح b را برابر مجموع عدد 9 و کاراکتر 3 قرار داد. چرا که 3 یک عدد نیست و تنها یک کاراکتر است.
به قطعه کدهایی که در زیر نوشته شده است توجه کنید. بعضی از این کد ها اشتباه میباشند. میخواهیم آنها را با هم بررسی کنیم.
1)
int a;
int b;
float c;
a = 4;
b = 2.3; //دادن مقدار ممیزی به متغیر صحیح اشتباه است. ارور نمیدهد. تنها ممیز را حذف می کند
c = b + a; //به علت توضیحات بالا حاصل جمع برابر جمع عدد 4 و 2 خواهد بود که 6 میشود
2)
char a, b;
int c;
a = ’4’;
b = 5; //نمیتوان مقدار متغیر از نوع کاراکتری را برابر یک عدد قرار داد. باید عدد را در کوتیشین بگذاریم.
b = ’8’;
c = 14 + b; // مقدار متغیر کاراکتری حتی اگر شبیه عدد باشد قابل جمع زدن با متغیر صحیح نیست!
a = #; //برای ریختن علامت یا کاراکتر در متغیر کاراکتری باید آن را بین سینگل کوتیشین قرار دهیم.
حال که با چند نوع مهم از متغیر ها آشنا شدیم میتوانیم مقداری را از ورودی و یا کاربر گرفته و آن را در یک متغیر ذخیره کنیم. برای گرفتن یک مقدار از ورودی باید از دستور زیر استفاده کنیم:
cin >> متغیر
پس در ابتدا باید متغیر خودمان را تعریف کنیم( بیان اسم و نوع متغیر) و سپس با استفاده از دستور دریافت از ورودی، با کاربر ارتباط برقرار کنیم. به برنامهی زیر توجه کنید:
main()
{
int a;
cin >> a;
cout << a * 2;
}
در این برنامه یک متغیر از نوع صحیح تعریف کردهایم و مقدار آن را از ورودی گرفتهایم و سپس دو برابر آن را در خروجی نمایش دادهایم. پس از اجرای آن، صفحه مشکی ورودی و خروجی باز میشود و منتظر میماند تا کاربر یک عدد وارد کند. پس از این که کاربر یک عدد وارد کرد و کلید اینتر را زد برنامه عدد را از ورودی میگیرد و در متغیر a میریزد و سپس ادامه برنامه را اجرا میکند و دو برابر مقدار دریافت شده از ورودی را( که در متغیر a ریخته است) نماش میدهد.
یک نمونه خروجی برنامه به شکل زیر میباشد:
اگر بخواهیم بیش از یک مقدار را از ورودی بگیریم میتوانیم به یکی از دو صورت زیر عمل کنیم:
int a, b;
char c;
cin >> a
cin >> b
cin >> c;
یا
cin >> a >> b >> c;
یعنی بین اسامی ورودیها در دستور cin باید از علامت >> استفاده کنیم.
به برنامهی زیر توجه کنید:
main()
{
int a, b;
char c;
cout << "lotfan yek adad be man bede: " << endl;
cin >> a;
cout << "adade digari vared kon: " << endl;
cin >> b;
cout << "yek character vared kon: " << endl;
cin >> c;
cout << "majmooe adad mishe: " << a + b << endl;
cout << "alamate " << c << " charactere to bud!" ;
}
خروجی برنامه به شکل زیر است:
که کاربر دو عدد دلخواه 12 و 15 را وارد کرده است و همچنین کاراکتر & را وارد کرده اس و نتیجه را نیز مشاهده میکنید.
کامنت گذاشتن و یا قرار دادن توضیحات در برنامه
برای کامنت گذاشتن و یا توضیح گذاشتن لابه لای خط های برنامه می توان از علامت // استفاده کرد. با استفاده از قرار دادن این علامت در ابتدا و نوشتن توضیح در ادامه ی آن علامت، خط نوشته شده در اجرای برنامه هیچ اثری نمی گذارد و تنها برای توضیح اضافی استفاده می شود.
مثلا می توان خط زیر را در هر جای دلخواه از برنامه قرار داد:
//in khat baraye tozihe ezafe estefade mishavad.
اگر بخواهیم چند خط پشت سر هم کامنت بگذارید از دستور /* و */ استفاده می کنیم. به صورت زیر:
/*tozihat tozihat tozihat tozihat tozihat tozihat tozihat tozihat tozihat tozihat tozihat tozihat tozihat
tozihat tozihat tozihat tozihat tozihat tozihat */
با قرار دادن دو علامت مذکور در ابتدا و انتهای توضیحات، تمام محدوده ی بین این دو علامت به توضیح تبدیل خواهند شد.