امتیاز موضوع:
  • 7 رأی - میانگین امتیازات: 4.43
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش مبتدي تا پيشرفته زبان C++ - C
نویسنده پیام
dreamvbfox آفلاین
در حال پیشرفت
***

ارسال‌ها: 426
موضوع‌ها: 44
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 236
( 1251 تشکر در 361 ارسال )
ارسال: #9
RE: آموزش زبان سی | C Learning
تو آموزش های قبلی مقدمات زبان C رو یاد گرفتیم حالا بهتره با ساختار برنامه ها و شیوه های ورودی و خروجی داده ها آشنا بشیم تا بتونیم برنامه های ساده رو بنویسیم. خوب بدون مقدمه میریم سراغ اموزش :
نگاه کنید دوستان بدنه ی اصلی یه برنامه تابع ()main است یعنی هیج برنامه ای تو زبان C تا اونجایی که من دیدم نمی تونه بدون این تابع باشه ... به نظر شما برنامه از کجا شروع میشه ؟؟؟ خوب این معلومه دیگه از تابع main شروع میشه از اسمشم میشه فهمید . حالا اجازه بدید ساختار اونو بهتون بگم :
کد:
int main()
{
دستورات اجرایی
return 0;
}
* اگر هنگام نوشتن تابع از int استفاده کنیم در آخر باید return 0; رو بنویسیم. یعنی اگر دستورات داخل تابع main بدون اشکالی اجرا شد در آخر صفر رو که به معنی اجرای بدون خطا بوده است رو به تابع برمی گردونه ! حالا اگر خواستیم صفر برگشت داده نشه باید تابع رو به صورت Void بنویسیم. مثال :
کد:
void main ()
{
دستورات
}
پس در صورتی که با void تعریف شود نیازی به return ندارد . (به نظر من با int تعریف بشه بهتره !)
بازم نفهمیدید غصه نخورید چون تو آموزش های بعدی به نوشتن تابع می پردازم و بیشتر توضیح میدم.

فراخوانی تابع های C
وقتی کامپایلر زبان C رو دریافت کردید مثل : Turbo C یه پوشه ای به نام INCLUDE داخلشه و پسوند فایل های آن h. هست . زبان c مثل ویبی نیست که بدون نیاز تعریف، دستور Print رو بنویسید و ازش استفاده کنید. یعنی تو c باید این توابع رو ضمیمه برنامه ی خودمون کنیم (تعریف کنیم) که اینکار با دستور include# صورت می گیره (در آخر اون هم ; نمی خواد! و باید در اول برنامه نوشته بشه قبل از تابع ها ، تو ویژوال بیسیک بخش General هست) . یه مثال میزنم تا بیشتر متوجه بشید:
کد:
#include <stdio.h>
خوب در این مثال فایل stdio.h رو include می کنیم . حالا در هر جای برنامه که خواستیم می تونیم از توابع داخل این فایل استفاده کنیم (مثلا دستور چاپ)

ورودی - خروجی داده
دو تابع تو C هست که سعی کنید به صورت کامل یاد بگیرید ساده هم است. یکی واسه چاپ (printf) و دیگری دریافت داده از کاربر (scanf) ...

چاپ اطلاعات با استفاده از دستور printf
همان طور که گفتم برای استفاده از این دستور ها باید اونا فراخوانی کنیم. این دستور در فایل stdio.h قرار داره. اگر تابع بدون خطا اجرا بشه تعداد کاراکترهایی که به خروجی ارسال میکنه رو برمیگردونه و در صورت بروز خطا یک عدد منفی بر می گردونه. اگر خواستید تست کنید اول یه متغیر تعریف کنید بعد برابر با دستور printf کنید اگر درست اجرا بشه تعداد کاراکتر هایی که تو خروجی چاپ شده رو تو متغیر میریزه و ....
[تصویر:  1h44bg69hqh9d9u4zhct.jpg]

عبارت 1 همون متنی هست که تو خروجی چاپ میشه ! عبارت 2 هم اجباری نیست . نمی دونم چه جوری توضیح بدم که بفهمید. نگاه کنید ما تو عبارت 1 میتونیم از دستور هایی استفاده کنیم مثلا بگیم enter کن برو خط بد . چند تا فاصله بنداز و از این حرفا. حالا من اول این دستورات رو اینجا می زارم بعد چند تا مثال می زارم تا بهتر متوجه بشید.
کاراکترهای فرمت :
[تصویر:  mgm60fqrnt33g8n57ezx.jpg]

کاراکترهای کنترلی :
[تصویر:  czthmvd2y7siteimy1po.jpg]

درسته قیافشون وحشتناکه اما اگر به درستی به مثال و توضیحی که میدم توجه کنید خیلی خیلی آسون میشه !
خوب ما که دوست نداریم همیشه یه متن ثابت دو چاپ کنیم (مثلا salam) اگر این کارو خواسته باشیم بکنیم نیازی به هیچ یک از این دو تصویر نداریم. اما به نظر من بهتر نیست اول برنامه اسم کاربر رو بگیریم بریزیم تو یک متغیر و بعد salam user که user نام کاربر است رو چاپ کنیم؟ به نظر من اینجوری بهتره ! خوب واسه اینکار نیاز به کاراکتر های فرمت (تصویر اولی) داریم . خوب من چندتا مثال می زنم تا بهنر متوجه بشید.
مثال 1 :
کد:
char mychar = 'a';
printf("character is : %c",a);
خروجی : character is a
توضیح : متغیر mychar رو از کاراکتر تعریف کردیم و به صورت پیش فرض کاراکتر a رو داخش قرار دادم. در دستور بعدی (printf) متن : character is رو نوشتم این متن عینا در خروجی چاپ میشه بعد از دونقطه نوشتم c% (تو تصویری که قرار دادم توضیح دادم که معادل یک کاراکتر است) زبان c متوجه میشه که باید یه کاراکتر رو اینجا قرار بده برای بدست اوردن اون کاراکتر به عبارت 2 رجوع میکنه و a رو میخونه و قرارش میده بعد از 2نقطه ! پس به تعداد کاراکتر های فرمت باید در عبارت 2 داده باشه واسه جداسازی اونا هم باید از کاما ( , ) استفاده کرد. یه مثال دیگه
مثال 2 :
کد:
char x = 'A';
printf("character is : %c and ascii is : %d",x,x);
خروجی: character is A and ascii is 65
توضیح :تو این مثال یکم به قدرت زبان C پی میبرید. مثلا تو ویبی باید از دستور asc یا char استفاده کنیم اما اینجا خیلی خیلی راحت با استفاده از کاراکترهای فرمت می تونیم این کارو انجام بدیم .
c% چون اولین فرمت است x اولی رو برمیداره و d% چون 2ومین فرمت است x دومی رو به فرمت دلخواه نشن میده !

حالا بریم سراغ کاراکتر های کنترلی :
از نظر نوشتن دستور هیج فرقی با کاراکترهای فرمت نداره یعنی به همون صورت به کار میره ! یه مثال :
کد:
printf("hi c\n");
خروجی : hi c بعدشم enter میخوره.
*هر متنی که به خروجی با استفاده از دستور printf میره سر هم نوشته میشه یعنی تو یه خط پس از کاراکتر های کنترلی واسه enter دادن استفاده کنید

من دیگه بهتر از این نمی تونم توضیح بدم . بهتر خواستید برید معلم خصوصی بگیرید "-: .

* اگر تا حالا از دستور چاپ استفاده کرده باشید میبینید بعد از اجرا هیچی چاپ نمیشه و از برنامه خارج میشه! جالب نیست به نظر شما؟؟؟
خوب دستور اجرا میشه چاپ هم میکنه اما چون زبان c دستور دیگه ای رو نمیبینه به return 0 میرسه و برنامه تموم میشه ! در اصل دستورات بدون خطا اجرا اما شما نمی تونید ببینید ! یه دستور داریم که تو فایل conio.h هست که اگر اونو قبل از return 0 بزارید مشکل حل میشه !
استفاده از دستور getch()
البته کار اصلی این دستور رو بعدا به صورت مختصر میگم فعلا بدونید که باید آخر دستورات نوشته بشه تا بتونید خروجی رو مشاهده کنید.
مثال :
کد:
#include <conio.h>
int main () {
دستورات
getch();
return 0;
}
یه بار ازش استفاده کنید می فهمید چیه !

* یه دستور دیگه هم که باید مثل getch یاد بگیرید پاک کردن صفحه نمایش است . اگر تا به حال برنامه نوشته باشید میبینید که متن هایی که قبلا هم به خروجی رفتن سر جاشون هستن. خوب برای پاک کردن از دستوز clrscr استفاده می کنیم. که در فایل conio.h قرار داره . خوب مثال بالا رو نگاه کنید اگر قبل از دستورات از این دستور استفاده کنیم به نظرم مشکل حل بشه !
مثال :
کد:
#include <conio.h>
int main () {
clrscr();
دستورات
getch();
return 0;
{

چاپ اعداد نوع logn و short
مثال :
کد:
#include <stdio.h>;
#include <conio.h>;
int main(){
short int x= 15;
login int m = 35769;
clrscr();
printf("\n x is : %hd and m is %ld",x,m);
getch();
return 0;
}
برای نمایش اعداد کوتاه و یا بلند باید کاراکترهای فرمت رو یه ذره تغییر بدیم با کاراگتر های دیگری ترکیب کنیم تا به همون صورت در خروجی چاپ بشه !
واسه long باید l(ال)رو به صورت ld% بنویسیم و واسه کوتاه hd%
فکر نکنم نیازی به توضیح بیشتری داشته باشه !

دریافت اطلاعات با استفاده از دستور scanf
[تصویر:  01pyh2wumxn6zbt3gk33.jpg]
scanf مثل printf هست و به اندازه ی اون کاربرد داره . با یه مثال میتونید یاد بگیرید :
مثال :

کد:
#include <stdio.h>;
#include <conio.h>;
int main(){
int x,y,sumxoy;
clrscr();
scanf("%d%d",&x,&y):
sumxoy=x+y;
printf("\n sum of x and y is : %d",sumxoy);
getch();
return 0;
}

اگر توضیحات printf رو یاد گرفته باشید این مثال رو هم می فهمید . "%d%d" بدین معنی است که باید 2 عدد صحیح رو دریافت کنی و اولی رو در متغیر در x و دومی رو در y قرار میده ! تنها چیزی که منم نفهمیدم اینه که چرا باید کاراکتر & رو قبل از متغیر x یا y بزاریم؟ ؟-: فقط میدونم که باید بزاریم وگرنه مقداری که دریافت میشه غیر از اونیه که تو کیبود وارد کرده ایم . بگذاریم .

یه سری دستورات هست که بهتون کمک میکنه ، یاد بگیرید بد نیست. اونا رو مینویسم و یه توضیح مختصری هم میدم.


خواندن کاراکتر با استفاده از دو دستور getche() و getch()
همین طور که قبلا گفتم این دو دستور در فایل conio.h موجود می باشد.
این دو دستورات کاراکتری رو در یک متغیر قرار میدن میشه گفت شبیه Scanf هست اما با این تفاوت که scanf میتونه یه رشته رو بگیره اما این دو دستور تنها یک حرف یا یک کاراکتر رو.
وقتی برنامه این 2 دستور میرسه منتظر میمونه تا کلیدی از صفحه کلید فشار داده شود دراین صورت کاراکتر معادل اونو در متغیر ذخیره میکنه .
مثال :
کد:
#include <conio.h>
char x;
x= getche();
تنها فرقی که getche با getch داره اینه که کاراکتری رو که وارد میکنیم روی صفحه نمایش چاپ میشه همین !

خواندن کاراکتر با تابع getchar()
در فایل stdio.h قرار داره. پس از ورود کاراکتر کلید enter رو باید فشار داد.
کد:
متغیر = getchar();

نوشتن کاراکتر با استفاده از دستور putch() و putchar()

[تصویر:  tljcfktss9g1d2be9v2.jpg]

ختم جلسه Biggrin Biggrin

دیگه خسته شدم دقیقا 3 ساعت دارم اینو می نویسم . نه اینکه سرعت تایپم کم باشه همش دارم فک میکنم چه جوری توضیح بدم که دوستان بفهمند. به هرحال با چند تا تشکر مشکل حل میشه "-: . بهتر از این هم نمی تونم توضیح بدم.
تو جلسه ی بعدی درباره ی حلقه ای تکرار و ساختار های تصمیم بحث می کنم. به نظر خودم هرچی میریم جلوتر آسون تر میشه. شاید شما هم اینو احساس کرده باشید. البته این نظر شخص بنده هست .
از مدیران محترم خواهش میکنم که این موضوع رو به قسمت important ارسال کنند.
ممنون

موفق باشید.

Biggrin Use Google instead of asking stupid questions Biggrin

[/url]
CMC Automation System


آموزش زبان c++
[url=http://www.iranled.com/forum/thread-13923.html]

(آخرین ویرایش در این ارسال: ۲۷-مرداد-۱۳۸۸, ۱۴:۰۵:۲۳، توسط dreamvbfox.)
۲۷-مرداد-۱۳۸۸, ۱۳:۱۷:۲۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hamed_Arfaee, محمد حسینی, lord_viper, yazddownload, Mr.pRoGraMmer, aminsotudeh, vahid2010, parisamohamadi, mohamadvb, sita_rampail, dariush1342, t3r!p3000, ali_asrami, mnmohsen


پیام‌های داخل این موضوع
آموزش مبتدي تا پيشرفته زبان C++ - C - توسط dreamvbfox - ۲۵-مرداد-۱۳۸۸, ۲۳:۰۱:۲۳,
RE: آموزش زبان سی | C Learning - توسط محمد حسینی - ۲۵-مرداد-۱۳۸۸, ۲۳:۲۳:۵۸,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۲۶-مرداد-۱۳۸۸, ۰۸:۴۷:۳۴,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۲۶-مرداد-۱۳۸۸, ۰۹:۵۹:۰۲,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۲۶-مرداد-۱۳۸۸, ۱۳:۲۴:۲۲,
RE: آموزش زبان سی | C Learning - توسط moohamad - ۱۸-اسفند-۱۳۹۱, ۰۰:۰۳:۵۹,
RE: آموزش زبان سی | C Learning - توسط محمد حسینی - ۲۶-مرداد-۱۳۸۸, ۱۴:۲۷:۵۱,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۲۶-مرداد-۱۳۸۸, ۱۵:۱۰:۰۹,
RE: آموزش زبان سی | C Learning - توسط hoax3r - ۲۷-مرداد-۱۳۸۸, ۲۲:۰۷:۲۰,
YazdDownload - توسط yazddownload - ۲۶-مرداد-۱۳۸۸, ۱۴:۵۲:۰۶,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۲۷-مرداد-۱۳۸۸, ۱۳:۱۷:۲۳
RE: آموزش زبان سی | C Learning - توسط محمد حسینی - ۲۷-مرداد-۱۳۸۸, ۱۴:۲۷:۲۳,
RE: آموزش زبان سی | C Learning - توسط yazddownload - ۲۸-مرداد-۱۳۸۸, ۰۱:۰۶:۱۹,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۲۸-مرداد-۱۳۸۸, ۰۹:۰۶:۱۵,
RE: آموزش زبان سی | C Learning - توسط hoax3r - ۲۸-مرداد-۱۳۸۸, ۱۰:۲۴:۴۲,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۲۸-مرداد-۱۳۸۸, ۱۱:۴۳:۵۳,
RE: آموزش زبان سی | C Learning - توسط ajlajlajl - ۲۸-مرداد-۱۳۸۸, ۰۹:۴۷:۳۲,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۲۸-مرداد-۱۳۸۸, ۱۳:۴۴:۰۷,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۲۹-مرداد-۱۳۸۸, ۰۱:۴۹:۵۸,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۲۹-مرداد-۱۳۸۸, ۱۵:۰۷:۵۴,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۲۹-مرداد-۱۳۸۸, ۲۳:۳۵:۴۳,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۳۰-مرداد-۱۳۸۸, ۱۹:۴۱:۳۸,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۳۱-مرداد-۱۳۸۸, ۱۷:۵۶:۲۹,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۰۲-شهریور-۱۳۸۸, ۱۴:۵۳:۰۴,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۰۵-شهریور-۱۳۸۸, ۱۶:۲۶:۰۲,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۱۰-اسفند-۱۳۸۸, ۱۰:۱۹:۳۳,
RE: آموزش زبان سی | C Learning - توسط gheflat - ۱۰-فروردین-۱۳۹۱, ۱۷:۵۱:۲۵,
RE: آموزش زبان سی | C Learning - توسط dreamvbfox - ۱۰-اسفند-۱۳۸۸, ۱۷:۰۸:۴۱,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط t3r!p3000 - ۲۳-تير-۱۳۸۹, ۰۲:۱۵:۱۵,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط balal - ۳۰-آذر-۱۳۸۹, ۱۵:۱۰:۲۸,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط FMMF - ۲۷-اردیبهشت-۱۳۹۰, ۲۲:۴۷:۳۷,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط abbas-habibi - ۱۲-خرداد-۱۳۹۰, ۲۲:۵۷:۳۰,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط TechSuperior - ۰۶-دى-۱۳۹۰, ۱۷:۱۴:۱۰,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط zupiroos - ۱۴-بهمن-۱۳۹۰, ۱۱:۴۰:۰۱,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط pmp-mehrdad - ۱۲-خرداد-۱۳۹۱, ۲۳:۵۴:۴۵,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط masterhe3ar - ۳۱-مرداد-۱۳۹۱, ۲۱:۰۲:۲۲,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط 0121takpa - ۱۱-دى-۱۳۹۱, ۱۶:۳۱:۱۵,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط behzady - ۱۱-دى-۱۳۹۱, ۱۷:۵۲:۵۴,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط 0121takpa - ۱۱-دى-۱۳۹۱, ۲۲:۰۱:۲۰,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط behzady - ۱۱-دى-۱۳۹۱, ۲۳:۵۵:۴۵,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط 0121takpa - ۲۲-دى-۱۳۹۱, ۰۱:۲۶:۲۴,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط behzady - ۲۲-دى-۱۳۹۱, ۰۱:۳۴:۵۴,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط alizadehh - ۱۰-خرداد-۱۳۹۳, ۱۲:۵۴:۳۶,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط omid_phoenix - ۱۰-خرداد-۱۳۹۳, ۱۵:۵۳:۲۶,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط milad20tak - ۰۸-آبان-۱۳۹۳, ۱۸:۳۶:۳۲,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط NO DONGLE - ۰۹-آبان-۱۳۹۳, ۰۵:۰۰:۲۲,
RE: آموزش مبتدي تا پيشرفته زبان C++ - C - توسط mona_alizade - ۱۲-آذر-۱۳۹۹, ۱۷:۴۶:۱۴,

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [پروژه] الگوریتم زمانبندی RR به زبان C همراه سورس کد Ghoghnus 2 1,482 ۰۳-بهمن-۱۳۹۸, ۱۴:۲۷:۵۷
آخرین ارسال: Ghoghnus
Question درخواست برنامه ای به زبان ++C saeidengman 11 15,555 ۰۵-تير-۱۳۹۶, ۱۱:۴۷:۰۱
آخرین ارسال: alivolley
  ارتباط دو زبان c و ++C و ایجاد آبجکت از کلاس در C salehjg 3 3,742 ۲۴-اردیبهشت-۱۳۹۵, ۱۶:۰۸:۱۷
آخرین ارسال: salehjg
  کتاب فارسی اموزش زبان C lord_viper 12 33,520 ۱۹-اسفند-۱۳۹۳, ۰۰:۰۲:۰۵
آخرین ارسال: vigraz
Question [سوال] تبدیل نوع متغیر (float به unsigned char) در زبان سی PRO 3 7,754 ۰۹-مرداد-۱۳۹۲, ۲۰:۱۶:۰۰
آخرین ارسال: PRO
  برنامه شمارنده خاص به زبان ++C saidal 1 4,331 ۱۷-اسفند-۱۳۹۱, ۱۷:۲۰:۳۸
آخرین ارسال: Ghoghnus
Wink برنامه هافمن به زبان c++ setayesh20 3 11,299 ۳۱-مرداد-۱۳۹۱, ۲۱:۰۶:۲۹
آخرین ارسال: masterhe3ar
  برنامه به زبان سی MicrowaveCO 1 4,113 ۳۱-مرداد-۱۳۹۰, ۰۰:۰۷:۱۶
آخرین ارسال: norozi
Exclamation [سوال] جستجوی دودویی با استفاده از اشارگرها در زبان C mitra.kh 1 4,178 ۲۴-فروردین-۱۳۹۰, ۱۴:۳۶:۴۰
آخرین ارسال: mitra.kh
  کتاب آموزش برنامه نویس به زبان ++C ali_1500max 1 5,816 ۲۰-فروردین-۱۳۹۰, ۲۱:۱۶:۰۵
آخرین ارسال: kasra.razi

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS