همه‌ی نوشته‌های mahdi

آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – دستور Switch

از این دستور به جای استفاده از if و else if های پی در پی و زیاد استفاده می شود.
ساختار کلی:

توضیحات: می توانیم case اول را به عنوان if و case های بعدی را به عنوان else if ها در نظر بگیریم و default آخر را هم به عنوان else.
مثال: برنامه ای بنویسید که عددی از ورودی گرفته اگر عدد ۱ ( if ) بود hello و یا اگر ( else if )2 بود bye و اگر ۱ و ۲ نبود goodbye را چاپ کند (else ).
ما برنامه را هم با استفاده از if و هم با استفاده از switch می نویسیم.

If

Switch

خروجی

switch_c++_1
توضیحات: اگر این برنامه را اجرا کنید حواب آن دقیقا مانند برنامه ی قبل خواهد بود.

ادامه ی توضیحات switch

دلیل وجود دستور break بعد از هر دستور case این است که بعد از اجرا شدن دستور case برنامه به بیرون از دستور شرطی switch بیاید.
مثال:
برنامه ی زیر را در نظر بگیرید

خروجی
switch_c++_2
توضیحات: هنگام وارد کردن عدد در خروجی برای مقدار دهی متغیر a اگر مقدار ۱ را وارد کنید هم hello و هم bye چاپ می شود در حالی که تنها باید hello چاپ شود و دلیل آن هم نگذاشتن دستور break بعد از دستور case اول است.
وقتی برنامه وارد switch می شود شرط اولین case را درست می بیند پس دستور جلویش را اجرا می کند ولی چون بعد از دستور break ندارد برنامه از switch خارج نمی شود و case بعد از خود را نیز اجرا می کند و چون در این case دستور break قرار دارد در این هنگام است که برنامه از دستور switch خارج می شود.

آموزش زبان ++C - مقدمه

آموزش برنامه نویسی در ++C – پارامتر های تابع و ارسال پارمتر به صورت call by value

پارامتر های تابع شامل دو قسمت هستند:
۱- صوری ( formal )
۲- واقعی ( actual )

صوری

به متغیر های تابع که هنگام ایجاد تابع ایجاد می کنیم تا در داخل تابع از آن ها استفاده کنیم پارامتر های صوری یا formal گویند.
مثال: ایجاد یک تابع

توضیحات: به متغیر های a و c پارامتر های صوری تابع گویند.

واقعی

پارامتر های واقعی یا actual یا آرگومان های تابع در واقع همان مقادیری هستند که هنگام استفاده از تابع در تابع main استفاده می کنیم.
مثال در تابع main :

توضیحات: مقادیر ۵ و ۶ که درهنگام فراخوانی تابع استفاده شده اند همان پارامتر های واقعی هستند.

ارسال پارامتر های تابع به روش call by value

این روش ساده ترین نوع ارسال مقدار به تابع است به این صورت که مقادیر پارامتر های واقعی در صوری کپی می شود و سپس تغییرات فقط بر روی پارامتر های صوری صورت می گیرد.
در مثال زیر آن را اثبات می کنیم.
مثال:

خروجی:
output_call_by_value
توضیحات: همانطور که دیدید هنگامی که به مقدار a تابع main در داخل تابع f1 یک مقدار اضافه شد مقدار آن یک عدد زیاد شد اما مقدار a در داخل تابع main تغییر نکرد پس نتیجه می گیریم که در این روش ارسال پارامتر واقعی به تابع هر تغییر در پارامتر صوری تاثیری بر متغیر تابع main نمی گذارد.

آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – الگوریتم های پر کاربرد – قسمت دوم

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

مرتب سازی تعویضی

در الگوریتم های مرتب سازی قصدمان این است که اعداد یک آرایه ی عددی را  به صورت صعودی یا نزولی مرتب کنیم.
الگوریتم های مرتب سازی آرایه انواع مختلفی دارند مانند: حبابی ، تعویضی ، shell ، quick sort و… .
در این الگوریتم مرتب سازی هر اندیس آرایه با اندیس های بعد از خود مقایسه می شود و طبق شرط مقایسه ی مان اعداد آرایه را مرتب می کنیم.
شرط مقایسه :
صعودی: اگر این عدد از این اندیس آرایه بزرگتر از اعداد بعد از خود بود آن ها را با هم تعویض کن.
نزولی: اگر این عدد از این اندیس آرایه کوچکتر از اعداد بعد از خود بود آن ها را با هم تعویض کن.

توضیحات الگوریتم مرتب سازی

فرض کنید آرایه ی ما این باشد:

روش مرتب سازی به این صورت خواهد بود:
گام اول: اندیس صفرم یعنی ۳ ابتدا با ۰ بعد با ۱ سپس با ۲ و سپس با ۵ مقایسه می شود
گام دوم: اندیس یک یعنی ۰ با ۱ و ۲ و ۵ مقایسه می شود
و در گام های بعدی هم به همین صورت ادامه خواهد داشت.
در تصویر می توانید بهتر متوجه شوید:
sort_tavizi
مقایسه ها با خط نمایش داده شده است.
کد

خروجی:
Osort

توضیحات: ما ابتدا یک آرایه تعریف کردیم با یک متغیر به نام temp که بتوانیم با استفاده از آن مقادیر آرایه را جا به جا کنیم سپس در for تودرتو الگوریتم مرتب سازی را اجرا کردیم و در for بعدی آرایه ی مرتب شده را نمایش دادیم.
شرط ما در if این است که اگر مقدار اندیس آرایه با مقدار اندیس های بعد از خود بزرگتر بود آن ها را با متغیر کمکی جابجا کن.
برای اینکه ما دو مقدار از دو اندیس آرایه را با هم جابه جا کنیم به یک متغیر کمکی نیاز داریم و به همان صورت که در داخل بلوک if میبینید دو مقدار را جابه جا می کنیم.
در این شرط آرایه ما آرایه را به صورت صعودی مرتب کردیم ولی اگر شما بخواهید آن را به صورت نزولی مرتب کنید فقط کافیست شرط آرایه را بر عکس کنید به صورت:

جابجایی مقادیر دو عدد بدون استفاده از متغیر کمکی

برای جا به جایی دو مقدار در دو متغیر ما به متغیر کمکی نیاز داریم ولی اگر کسی بخواهد بدون استفاده از آن متغیر کمکی دو مقدار را جا به جا کند باید چه کار کرد؟
ما می توانیم با استفاده از عملگر های محاسباتی آن دو مقدار را جا به جا کنیم.

خروجی:
jabejayi

آموزش زبان ++C - مقدمه

آموزش زبان برنامه نویسی ++C – برنامه نویسی ++C با کامپایلر لینوکس

در این مقاله قصد داریم به شما چگونگی برنامه نویسی به زبان c++ و قواعد آن را با یکی از کامپایلر های لینوکس آموزش دهیم.
شما باید یکی از توزیع های لینوکس ( ابونتو یا دبیان یا فدورا و یا… ) را انتخاب کرده و آن را نصب کنید.
در حال حاضر من از یک توزیع دبیان استفاده می کنم.
debian

نام کامپایلر C++ در لینوکس که می خواهیم از آن استفاده کنیم g++ است.
در بیشتر توزیع های لینوکس این کامپایلر بر روی سیستم به طور پیش فرض نصب شده است ولی اگر در توزیع لینوکسی که شما انتخاب کرده اید این برنامه نصب نباشد :
ابتدا یک ترمینال باز کنید
سپس با این دستور می توانید آن را نصب کنید:

اگر دسترسی سطح root را نداشته باشید از شما رمز root را در خط بعد گرفته و سپس سیستم به نصب نرم فزار می پردازد.
برای اینکه شما به زبان C++ در لینوکس برنامه بنویسید باید ابتدا دستورات خود را در یک فایل با فرمت cpp ذخیره کنید سپس این فایل را کامپایل کنید و فایل خروجی را اجرا کنید.
ایجاد فایل با ترمینال: می توانید از نرم فزار های notepad,leafpad,nano,vi کمک بگیرید که من نرم افزار nano را به شما پیشنهاد می کنم.
اگر نرم افزار نصب نبود با این دستور آن را نصب کنید:

سپس با استفاده از این نرم افزار یک فایل برای مثال a با فرمت cpp ایجاد می کنیم:

چنین صفحه ای پیش روی شما باز می شود:
nano_software

شروع کد نویسی :

۱- هدر فایل : در حال حاضر در سطح آشنایی با کامپایلر شما فقط می توانید از هدرفایل iostream استفاده کنید. دقت داشته باشید که نباید .h را در انتهای هدرفایل بگذارید.
headerf_linux
۲- در این کامپایلر لینوکس شما حتما باید خط مربوط به فضای نام را بنویسید که اگر ننویسید کامپایلر در هنگام کامپایل خطا می گیرد و برنامه ی شما کامپایل نمی شود.

۳- قواعد نوشتن تابع main مانند نوشتن تابع main در توربو است.
برنامه ی ما تا اینجا :
divc-_linux
۴- دستورات تعریف متغیر یا ایجاد حلقه هایی مانند while یا for و… و دستورات شرطی if و switch و تعریف تابع و… در این کامپایلر مانند کامپایلر Turbo C++ است.
مثال: چاپ در خروجی با دستور cout
چون پس از اجرا برنامه و نوشته شدن hello world در خط فرمان ترمینال ایجاد می شود در آخر دستور یک \n می گذاریم.
۵- کامپایل کردن برنامه: ابتدا فایلی که در آن برنامهمان را نوشته ایم save می کنیم با زدن کلید های Ctrl+X سپس y را زده و برای تایید Enter را فشار می دهیم. حالا می خواهیم برنامه را در خط فرمان کامپایل کنیم با این دستور:
خروجی برنامه در فایل a.out قرار می گیرد.
compile_c++
نشان می دهد که برنامه با موفقیت کامپایل شده است.
۶- اجرا برنامه : با نوشته این دستور
خروجی:
outputc-_linux
برنامه ی کامل:
آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – رشته ( آرایه ای از کاراکتر ها ) | قسمت دوم

در پست قبلی به شما آموختیم که چطور با استفاده از توابع با رشته در turbo c++ کار کنید و در این پست قصد آموزش نکات دیگری در مورد رشته و چگونگی استفاده از رشته ها بدون استفاده از توابع کتابخانه ای ها را داریم.
دلیل آموزش کار با رشته بدون استفاده از توابع به شما این است که یک برنامه نویس خوب باید با تمام الگوریتم های کاربردی آشنایی کافی را داشته باشد و اگر توابع را در اختیار نداشته باشد بتواند خودش توابعی را ایجاد کند که این کار باعث یادگیری مبانی و الگوریتم های کامپیوتر می شود.
این آرایه ی کاراکتری را در نظر بگیرید:

که اندیس های آن در ۰ تا ۹ است و شما تصور می کنید که می توانید ۱۰ کاراکتر در آن جای دهید در صورتی که اشتباه می کنید چون شما فقط می توانید ۹ کاراکتر در آن جای دهید زیرا مقدار \۰ (بک اسلش صفر) در اندیس آخر این آرایه قرار می گیرد.
مثال: شما می خواهید رشته ی ali را در یک آرایه ی کاراکتری بگذارید

در اندیس های صفر و یک و دو کاراکتر های رشته ی ali قرار می گیرد و در اندیس سوم نیز کاراکتر بک اسلش صفر.
نکته: کد اسکی کاراکتر \۰ برابر صفر می باشد.

انواع مقدار دهی به رشته ها در هنگام تعریف آرایه ی کاراکتر:

۱- به صورت کاراکتر به کاراکتر:

توضیح: در این نوع مقدار دهی شما خودتان دستی باید کاراکتر \۰ را در آخر رشته قرار دهید.
۲- به صورت رشته با مشخص کردن تعداد اندیس ها:

توضیح: این کار تقریبا سخت است وممکن است تعداد اندیس هارا اشتباه نوشته و اگر تعداد کاراکتر ها بیشتر از تعداد اندیس ها باشند بقیه ی کاراکتر ها ازبین روند.
نکته: در این نوع مقدار دهی نیازی نیست کاراکتر \۰ را در آخر رشته قرار دهید و کامپایلر به طور اتوماتیک این کار را انجام می دهد.
۳- مقدار دهی یک آرایه ی کاراکتری به صورت رشته با مشخص نکردن تعداد اندیس ها:

توضیح: این کار بسیار آسان تر است و همچنین نیازی ندارید که کاراکتر \۰ را در آخر رشته قرار دهید.
در این آرایه اندیس آرایه به طور خودکار برابر ۴ قرار می گیرد.
نکته: باید دقت کنید که تعداد اندیس های آرایه از تعداد عددی که هنگام تعریف به آرایه می دهیم یکی کمتر است چون از صفر شروع می شود.

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

۱- با استفاده از دستور cin :

توضیح: در این کد ها ما یک رشته ۱۰ کاراکتر با نام ch ایجاد کردیم مقدار آن را در کاربر در خروجی وارد می کند و سپس با دستور cout آن را نمایش می دهیم.
اگر رشته ی ما فرضا ali باشد تنها ۴ اندیس از رشته ی ۱۰ کاراکتر ما پر می شود و اگر دقت کرده باشید دستور cout فقط مقادیر اندیس هایی را نشان می دهد که قبل از کاراکتر \۰ باشند.
اندیس ۰ و ۱ و ۲ به ترتیب کاراکتر های a و l و i را می گیرند و اندیس سوم هم کاراکتر \۰ را می گیرد.
نکته: در مقدار دهی رشته در خروجی با دستور cin اگر شما پس از وارد کردن رشتهتان کلید enter را فشار دهید کاراکتر \۰ در آخر رشته قرار می گیرد ولی دستور cin در گرفتن رشته این مشکل را دارد که اگر شما کلید space را هم فشار دهید کاراکتر \۰ در رشته قرار می گیرد و رشته بسته می شود و شما دیگر نمی توانید مقداری به رشته دهید پس باید به دنبال راهی جدید بگردیم.
۲- گرفتن رشته با تابع gets :
دقت داشته باشید که الگوی این تابع در هدرفایل stdio.h قرار دارد.

توضیحات : این تابع مشکل دستور cin را ندارد و شما می توانید از کلید space نیز برای مقدار دهی به رشته استفاده کنید.
نکته: شما می توانید برای نمایش رشته از تابع puts هم استفاده کنید
به این صورت:

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

توضیحات : ابتدا هدرفایل ها را اضافه کردیم در بلوک تابع main یک رشته با نام ch تعریف کردیم و با تابع gets آن را از ورودی گرفتیم ( کار های اولیه ).
چون ما نمی دانیم تعداد کاراکتر های چندتا است پس از حلقه ی while استفاده می کنیم.
شرط حلقه ی while این است که از مقدار اندیس آیُم از رشته ی ch برابر \۰ نبود یک مقدار به i اضافه کن.
در این صورت برنامه از ابتدای رشته شروع می کند تا به کاراکتر \۰ برسد و وقتی ch[i] برابر با \۰ شد شرط حلقه نادرست می شود و حلقه می شکند و عددی که در متغیر i قرار گرفته است تعداد کاراکتر های رشته است.
و در آخر هم بیرون از حلقه ی مقدار i را با cout نمایش می دهیم.
string
رشته ای که در خروجی داده این در تصویر بالا hello world است که رشته ی hello 5 کاراکتر و space یا فاصله ی بین دو کلمه هم ۱ کاراکتر و رشته ی world هم ۵ کاراکتر که جمع آن ها می شود ۱۱ کارکتر یا همان عددی که در i قرار گرفته است.
نکته: می توانید به به جای گذاشتن کاراکتر \۰ کلمه ی NULL را بنویسید
اینطور:

\۰ در واقع همان NULL است.

آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – فایل ها | قسمت سوم

علاوه بر حالت های r ( read ) برای خواندن از فایل و w ( write ) برای نوشتن در فایل یک حالت دیگر هم وجود دارد به نام a.
وقتی فایلی را در حالت w باز می کنیم تمام متن داخل آن حذف می شود و سپس می توانیم متن جدید را در فایل اضافه کنیم ولی وقتی فایل را در حالت a باز کنیم متن داخل فایل حذف نمی شود و هر متن جدیدی که به فایل اضافه کنیم در آخر متن پیش فرضیمان قرار می گیرد.

حالت a

مثال: فایلی با نام a.txt در دایرکتوری زیر قرار دارد که متن hello در آن نوشته شده است. می خواهیم با استفاده از برنامه نویسی متن world را به آخر متن hello که به طور پیش فرض در فایل قرار داده شده است اضافه کنیم.
دایرکتوری:

C:\TurboC++\Disk\TurboC3\BIN

کد:

توضیحات: همانگونه که در توضیحات بالا خواندید فایل را در حالت a باز می کنیم سپس تغییرات جدید را روی آن اعمال می کنیم.
تمرین: برنامه ای بنویسید دو فایل a.txt و b.txt که در دایرکتوری زیر قرار دارند را باز کرده متن فایل b.txt را خوانده و به آخر متن فایل a.txt اضافه کند.
دارکتوری: مسیر پیش فرض برنامه ی نصب شده ی توربو

C:\TurboC++\Disk\TurboC3\BIN

متن پیش فرض در فایل hello : a.txt
متن پیش فرض در فایل world : b.txt
کد:

توضیحات: طبق تعریفات بالا ما باید دو متغیر از نوع فایل ایجاد کنیم برای باز کردن فایل های a.txt در حالت a برای نوشتن متن در آخر متن پیش فرض قرار داده شده و فایل b.txt در حالت r برای خواندن متن از آن.
طبق گفته ی بالا کار ها را در کد انجام داده ایم سپس یک حلقه ی while ایجاد می کنیم برای خواندن تک تک کاراکتر های درون فایل b.txt و قرار دادن همان کاراکتر ها با استفاده از تابع fputc در فایل a.txt.
تابع fcloseall بعد از کد های حلقه ی while : اگر چند فایل باز در برنامه دارید برای بستن تمام آن ها می توانید از این تابع استفاده کنید.
خروجی :
متن جدیدی که در فایل a.txt قرار گرفته است:

hello world

برای نمایش داده شدن فرمت فایل ها وقتی فایلی را به صورت گرافیکی در دایرکتوری در ویندوز می توانید از راحل زیر استفاده کنید:
۱- گزینه ی folder options در قسمت تنظیمات my computer ( در ویندوز های مختلف جای آن متفاوت است)
folder_options
۲- سربرگ view
۳- در قسمت Advanced Setting تیک گزینه ی Hide exensions for know file type را بردارید
۴- Ok
settings

آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – فایل ها – قسمت دوم

فرض کنید فایلی با نام a.txt در این مسیر قرار دارد:

C:\TurboC++\Disk\TurboC3\a.txt

برای باز کردن فایل از دو مسیر آن می توانیم استفاده کنیم
مسیر مطلق:

C:\TurboC++\Disk\TurboC3\a.txt

مسیر نسبی: چون برنامه ی توربو در این مسیر C:\TurboC++\Disk\TurboC3\BIN باز می شود برای دسترسی به فایل باید یک دایرکتوری به عقب بیاییم و سپس فایل را باز کنیم.
در داخل هر دایرکتوری دو دایرکتوری وجود دارد ( در واقع فایل هستند ) با نام های . (نقطه) و .. ( دونقطه ) که ما آنها را نمی بینیم.
برای دیدن آن ها در ویندوز cmd را فعال باز می کنیم سپس دستور dir را می نویسیم که علاوه بر فایل ها و دایرکتوری ها فایل نقطه و دو نقطه نیز نمایش داده می شوند.
برای دیدن آن ها در لینوکس پس از باز کردن terminal دستور ls –a را نوشته و این دو فایل یا دایرکتوری نمایش داده می شوند.
نقطه نشان دهنده ی همان دایرکتوری و دو نقطه برای دسترسی به یک دایرکتوری عقب تر است.
پس مسیر نسبی فایل a.txt می شود :

..\a.txt

در cmd ویندوز:
cmd_file
در terminal لینوکس:
terminal_file
با زدن دستور ls -a میتوانیم آن ها را ببینیم.
توضیحات: یک دایرکتوری به عقب میاییم سپس به فایل دسترسی پیدا می کنیم.
مثال: در دایرکتوری زیر یک فایل با نام a.txt قرار دارد که متن داخل آن hello world است با مسیر نسبی به آن دسترسی پیدا کنید و متن آن را نمایش دهید

C:\TurboC++\Disk\TurboC3\a.txt

خروجی:

hello world

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

نوشتن فایل

برای نوشتن در فایل باید فایل را در حال w (write) باز کنیم و با استفاده از تابع های مخصوص نوشتن در فایل نوشت.
نکته: وقتی می خواهیم فایلی را باز کنیم به تابع fopen مسیر می دهیم و اگر فایل باشد تمام متن داخل آن پاک می شود و متنی که مورد نظرمان است را در فایل می نویسیم ولی اگر فایل نباشد یک فایل ایجاد می شود و سپس متنمان را در آن وارد می کنیم.
مثال: فایلی در مسیر زیر ایجاد کنید با نام a.txt که متن hello world را در آن نوشته و آن را save کنید سپس با برنامه نویسی در توربو C++ متن hello world را با کاراکتر h عوض کنید.
مسیر save فایل a.txt :

C:\TurboC++\Disk\TurboC3\BIN

کد:

اگر دوباره فایل را باز کنید تنها کاراکتر h را میبینید که در فایل نوشته شده است.
توضیحات:
کد:

در حالت write آن را باز می کنیم یعنی به جای گذاشتن حرف r به جای آرگومان دوم تابع fopen حرف w را می گذاریم.
کد:

تابع fputc یک کاراکتر را به عنوان آرگومان اول گرفته و در فایلمان که به عنوان آرگومان دوم می گیرد قرار می دهد.
کد:

همانگونه که وقتی متنی را در فایلی تغییر می دهیم باید آن را save کنیم در حالت نوشتن هم باید در آخر پس از انجام کارهایمان در فایل آن را با تابع fclose که آرگومان آن نوع متغیر فایل است ببندیم.

نوشتن متن یا رشته در فایل

از تابع fputs استفاده می کنیم.
مثال: ابتدا فایل a.txt را حذف می کنیم.
کد:

توضیحات:
چون فایلمان وجود ندارد پس برنامه یک فایل با نام a.txt در مسیر پیش فرض که برنامه ی توربو در آن مسیر باز می شود ایجاد می کند سپس تابع fputs یک رشته را به عنوان آرگومان می گیرد و در فایل مورد نظرمان که به عنوان آرگومان دوم به آن داده ایم می نویسد.

آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – فایل ها – قسمت اول

در این مقاله قصد آموزش چگونگی خواندن متن از یک فایل را داریم.
برنامه های مورد نظرمان برای کار با فایل در ++Turbo C ایجاد می شوند.
چون فایل ها در هارد ذخیره شده اند پس برای خواندن آن باید یک متغیر از نوع فایل که به صورت اشاره گر هست ایجاد کنیم سپس با آن میتوانیم دستوراتمان را بر روی فایل مورد نظر اعمال کنیم.

مسیر های فایل

ابتدا در مورد مسیرهای فایل بحث می کنیم.
هر فایل دو مسیر برای اجرا دارد:
۱- نسبی
۲- مطلق
مسیر مطلق به مسیری می گویند که از مقصد اصلیمان باشد.
مثال: فایلی با نام a.txt در درایو C در پوشه ۱ در پوشه ی ۲ قرار دارد.
فرض کنید ما پوشه ای را باز نکرده ایم و در desktop سیستم هستیم یا در درایو D هستیم.
مسیر مطلق برای دستیابی به فایل a.txt:

C:\1\2\a.txt

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

مسیر نسبی:

حالا فرض کنید ما در درایو C و پوشه ی ۱ باشیم.
مسیر فعلی ما:

C:\1\

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

\۲\a.txt

وقتی برنامه ی توربو را باز می کنید این برنامه در این مسیر باز می شود ( مسیر پیش فرض در هنگام نصب برنامه ) :

C:\TurboC++\Disk\TurboC3\BIN

حالا فرض کنید فایلی با نام a.txt در این پوشه BIN که برنامه ی توربو در آن باز می شود داریم
مسیر های دستیابی به فایل از طریق برنامه نویسی در توربو :

مسیر مطلق:

C:\TurboC++\Disk\TurboC3\BIN\a.txt

نسبی:

a.txt

چون برنامه ی توربو در دایرکتوری BIN اجرا می شود و هم فایل ما در این پوشه قرار دارد پس نیازی نیست که مسیری به برنامه دهیم.
نکته: در برنامه نویسی در زبان ++C و اکثر زبان های برنامه نویسی دیگر می توانید از هر دو نوع مسیر دهی استفاده کنید.
مثال: ابتدا در پوشه ی BIN یک فایل با نام a.txt ایجاد کنید و این متن را در آن بنویسید hello world سپس با استفاده از برنامه نویسی در ++Turbo C متن فایل را بخوانید.

خروجی: کاراکتر h
توضیحات: ما ابتدا یک متغیر از نوع FILE ( برای استفاده از آن باید هدر فایل stdio.h را به برنامه اضافه کنید ) به صورت اشاره گر برای اشاره به فایل ایجاد می کنیم.
نکته: دقت کنید که FILE حتما با حروف بزرگ باشد.
سپس با استفاده از تابع fopen فایل را باز می کنیم.
آراگومان های تابع fopen :
۱- مسیر فایل : هم می تواند مطلق باشد و هم نسبی
۲- مد استفاده از فایل را نشان می دهد : چون ما فعلا می خواهیم فقط از فایل بخوانیم پس از r که مخفف read است استفاده می کنیم.
چون در فایل متن است پس یک متغیر از نوع char ایجاد می کنیم.

توضیح کد بالا : تابع fgetc یک کاراکتر از فایل مورد نظر می خواند. آرگومان آن هم متغیر fp است که فایلمان را با آن باز می کنیم.
ما هم در این خط کد یک کاراکتر از فایلمان می خوانیم و آن را در متغیر ch قرار می دهیم و در خط بعد هم آن را با cout نمایش دادیم.
حالا این کد را امتحان می کنیم:

خروجی:
file1

توضیحات: در این حالت ما دو کاراکتر را از فایل خواندیم.
حالا مشکل ما اینجا است که برای خواندن تمام کاراکتر ها چکار کنیم ( شاید یک متن هزار خطی باشد ).
خب پس ما نمیدانیم که فایلمان چند کاراکتری است و در این موارد ما از حلقه ی while استفاده می کنیم.
خب می رسیم به شرط حلقه:
در آخر متن هر فایل یک کاراکتر End Of File) EOF ) قرار دارد که ما آن را نمیبینیم و این کاراکتر برای آن است که سیستم متوجه شود متن فایل به پایان رسیده است.
برنامه جدید برای خواندن تمام متن داخل فایل a.txt :

خروجی:
hello world
توضیحات: تابع feof که آرگومان آن متغیری است که به فایل اشاره می کند در هر دوره یک کاراکتر از فایل می خواند که اگر کاراکتر برابر با EOF نبود صفر را و اگر بود یک را برمیگرداند.
نکته: می توانیم به جای NULL از صفر استفاده کنیم.
ادامه ی توضیحات: تابع در ابتدا کاراکتر h را می گیرد و صفر را برمی گرداند و چون صفر با NULL یا صفر برابر است پس شرط داخل while درست است و حالا وارد بلوک حلقه ی while می شویم : گرفتن یک کاراکتر از فایل و نمایش آن.
این روند تا کاراکتر EOF که در آخر متن قرار دارد ادامه می یابد و در آخر تابع feof کاراکتر EOF را می گیرد و ۱ را برمی گرداند و چون ۱ با صفر یا NULL برابر نیست حلقه شکسته می شود و در آخر هم تابع fclose را داریم که فایل را می بندد.

آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – فضای اسمی (namespace) و فضای اسمی std

فضاهای اسمی برای پياده سازی اجزای نرم افزاری و کتابخانه ها بدون ايجاد برخورد اسامی با اجزای موجود بکارگرفته می شوند.
وقتی يک برنامه به اندازه معينی می رسد معمولا به چند قطعه مجزا تبدیل می شود که هر تکه ممکن است توسط فرد یا گروهی ساخته و تکميل شود. زبان ++C تنها يک مکان برای نگهداری اسامی کليه شناسه ها و توابع دارد يعنی برنامه نويسان بايد درباره نامگذاری اسامی بسیار احتیاط کند که خطایی رخ ندهد.
++C خاصیتی برای جلوگيری از ایجاد این خطاها دارد به نام فضای اسمی. هر مجموعه از تعاريف که در يک کتابخانه يا يک برنامه قرار دارند درون يک فضای اسمی جدا از هم قرار می گيرند.
درون محیط TurboC++ نمی توان از فضای اسمی استفاده کرد و کامپایلر خطا می گیرد و برای استفاده از فضای اسمی میتوان به سراغ کامپایلر های محیط BorlandC++ و VisualStudio و همچنین کامپایلر لینوکس رفت.
کامپایلر های دیگری هم وجود دارند.
در اینجا ما از محیط برنامه نویسی Visual Studio استفاده می کنیم.
طریقه ی ایجاد پروژه ی C++ در Visual Studio:
من از ورژن ۲۰۱۰ استفاده می کنم.
از منوی بالای صفحه گزینه ی File سپس گزینه ی New Project را انتخاب کنید:
newp1

در قسمت Installed tamplates نوع زبان برنامه نویسی را انتخاب کنید سپس در قسمت ۲ نشان داده شده برروی تصویر .netframework را انتخاب کنید که تاثیر زیادی در کارمان ندارد سپس در قسمت ۳ نوع برگه را مشخص می کنیم و باتوجه به اینکه می خواهیم در محیط کنسول برنامه نویسی کنیم پس این گزینه(۳) را انتخاب می کنیم.
در قسمت name و location هم می توانید نام پروژه و مسیر ذخیره سازی پروژه را انتخاب کنید.
newp2
در این قسمت گزینه ی finish را بزنید.
newp4
ایجاد دو فضای نام و استفاده از آن:

اجرای برنامه با کلید F5 یا گزینه ی start debagging از منوی debug.
خروجی:
outv1
توضیحات: ابتدا هدر فایل ها را اضافه می کنیم.
ما در این قسمت کد دو فضای نام با نام one,two ایجاد کردیم که در هر دو متغیری با نام x یکی از نوع float و دیگری از نوع int ایجاد کردیم.

این خط را در ادامه توضیح خواهد داده شد.

استفاده از فضای نام باید در تابع main که در اینجا tmain است به این صورت انجام گیرد که ابتدا نام فضای اسمی سپس دوکاراکتر دونقطه ( :: ) سپس نام متغیر مد نظر.

برای نمایش هم همینکار را انجام دادیم.

همانطور که دید می توانیم از یک نام متغیر با دونوع با استفاده از فضای اسمی استفاده کنیم.
حالا می خواهیم مقدار دو x را جابجا کنیم به این صورت:

خروجی:
outv2

توضیحات: همانطور که در خروجی میبینید مقدار اعشاری برای آن x که در فضای اسمی با نام one بود حذف شده است به دلیل اینکه از نوع int است.

استفاده از using

برای اینکه مجبور نباشیم برای استفاده از متغیری که در فضای نام تعریف کرده ایم در ابتدای آن متغیر در تابع main نام آن فضای نام و دوکاراکتر دونقطه را بگذاریم از این دستور در بالا تابع main استفاده می کنیم:

توضیحات: برنامه خودش کلمه ی one را در ابتدای هر متغیر ایجاد می کند.

فضای نام std

کليه کتابخانه های استاندارد ++C درون يک فضای نام به نام std قراردارند. ممکن در بسیاری از برنامه ها به کد زیر برخورد کرده باشید. اين خط کد به کامپایلر می گوید که می خواهيد از کليه عناصر درون فضای نام std استفاده کنید.

در کامپایلر هایی مانند visual studio یا کامپایلر لینوکس نوشتن این کد اجباری است ولی در محیط borlandc++ نه.
مثال: نمایش متن hello world! در visual studio با کد using namespace std;

نمایش متن hello world! در visual studio بدون کد using namespace std;

خروجی در هر دو کد کلمه ی hello world! خواهد بود.
توضیحات: همانطور که میبینید بدون استفاده از using باید کد std:: را اول هر خط کد در تابع main استفاده کنید.
نکته: برنامه ی اجرایی یعنی فایل .exe شما از برنامه در دایرکتوریی که پروژه را ذخیره کرده اید در پوشه ی debug قرار دارد.

آموزش زبان ++C - مقدمه

حل تمرین – ++C – عدد کامل

تمرین: برنامه ای بنویسید که عددی از ورودی گرفته و بگوید که کامل است یا نه. (برنامه در توربو)

عدد کامل

توضیحات: عدد کامل عددی است که مجموع مقسوم علیه های آن عدد (به جز خود عدد) برابر با خود عدد باشد.
مثال:
مقسوم علیه های عدد ۶ برابر است با ۱ و ۲ و ۳ که جمع این سه عدد برابر است با عدد ۶ یعنی عدد ۶ یک عدد کامل است.
پس ما برای این کار باید از یک for استفاده کنیم که متغیر شمارنده ی آن از شماره ی ۱ شروع شود و تا یکی مانده به عدد تمام شود. در داخل بلوک کد for باید بنویسیم که اگر باقی مانده ی تقسیم a بر i برابر با صفر باشد (یعنی یکی از مقسوم علیه های عدد a) بعلاوه ی متغیر s می شود و در s قرار می گیرد. همین عمل چند بار انجام می گیرد.
در آخر باید برسی کنیم که عدد s برابر با عدد a هست یا خیر. اگر برابر باشد عدد کامل است واگرنه عدد کامل نیست.
خروجی اول:
adad_kamel1
خروجی دوم:
adad_kamel2