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

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

تشکرها : 236
( 1251 تشکر در 361 ارسال )
ارسال: #1
آموزش مبتدي تا پيشرفته زبان C++ - C
سلام .
چند وقتیه عاشق زبون c شدم . دلیلشم قوی بودن اون هست. با خودم گفتم هر چی یاد می گیرم بیام اینجا توضیح بدم تا اینکه هم مروری واسه خودم بشه هم اینکه بقیه یه فیضی برده باشن.
اگر مدیران با این کار راضی هستن نظر خودشون رو با تشکر اعلام کنن .
از دوستان خواهش می کنم پست اضافی ندید این قسمت فقط آموزش هست اگر سوالی چیزی داشتید لطفا یه تاپیک جدا بزنید.

موفق باشید.

Biggrin Use Google instead of asking stupid questions Biggrin

[/url]
CMC Automation System


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

(آخرین ویرایش در این ارسال: ۰۹-تير-۱۳۸۹, ۲۳:۰۳:۱۳، توسط t3r!p3000.)
۲۵-مرداد-۱۳۸۸, ۲۳:۰۱:۲۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : محمد حسینی, Mr.pRoGraMmer, ajlajlajl, yazddownload, hamed_Arfaee, HoseinVig, t3r!p3000, hoax3r, alaska, aminsotudeh, vahid2010, faridiran, z_taran, Tender, Mahdikatkhoda, cinderella, WhiteNoise, مخفی, ali_asrami, sungirl69, behzady, keivanjan, هاشمی, f1020, omidmohammadi, tajerman, red wolf, a.mehran, A.P-H@ck3r, kashima, gt2, 1نفر
محمد حسینی آفلاین
کاربر فعال بخش رباتیک
****

ارسال‌ها: 1,363
موضوع‌ها: 139
تاریخ عضویت: آذر ۱۳۸۴

تشکرها : 974
( 1780 تشکر در 620 ارسال )
ارسال: #2
RE: آموزش زبان سی | C Learning
این یه پست رو میزنم انرژی بگیری.
خیلی خوبه !
زیاد رو دستورات معمول که تو اکثر زیون ها هست مثل if و while و . . . گیر نده! اینا رو دیگه همه بلدن و منبع هم براش زیاده! تا رو اینا کار کنی انرژیت تمومه و ...
سعی کن دستورات مخصوص زبون c رو کامل توضیح بدی. مثلا من آخرش نفهمیدم این علامت درصد چطوری کار میکنه. تو کدویژن خیلی به این دستورات عجیب غریب احتیاج هست!

درکل خیلی خوبه.
ممنون

به راه بادیه رفتن، به از نشستن باطل ------------- اگرچه وصل نیابم، بقدر وسع بکوشمRolleyes
(آخرین ویرایش در این ارسال: ۲۵-مرداد-۱۳۸۸, ۲۳:۲۹:۵۸، توسط محمد حسینی.)
۲۵-مرداد-۱۳۸۸, ۲۳:۲۳:۵۸
ارسال‌ها
پاسخ
تشکر شده توسط : lord_viper, dreamvbfox, Mr.pRoGraMmer, t3r!p3000, hoax3r, alaska, vahid2010, gogoli, tajerman, osamee, kashima
dreamvbfox آفلاین
در حال پیشرفت
***

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

تشکرها : 236
( 1251 تشکر در 361 ارسال )
ارسال: #3
RE: آموزش زبان سی | C Learning
(۲۵-مرداد-۱۳۸۸, ۲۳:۲۳:۵۸)Sp!d3rm4n نوشته است: این یه پست رو میزنم انرژی بگیری.
خیلی خوبه !
زیاد رو دستورات معمول که تو اکثر زیون ها هست مثل if و while و . . . گیر نده! اینا رو دیگه همه بلدن و منبع هم براش زیاده! تا رو اینا کار کنی انرژیت تمومه و ...
سعی کن دستورات مخصوص زبون c رو کامل توضیح بدی. مثلا من آخرش نفهمیدم این علامت درصد چطوری کار میکنه. تو کدویژن خیلی به این دستورات عجیب غریب احتیاج هست!

درکل خیلی خوبه.
ممنون

سلام .
به نظر من کسی می تونه تو زبون C موفق باشه که قبلش با یه زبون مبتدی یا آماتوری مثل ویبی شروع کرده باشه و خوب دستورات و Trace کردن ها بلد شده باشه .
منم همین طور به نظر شما احترام می زارم و زیاد رو این مسائل و دستورات ساده تاکید نمی کنم و بیشتر دستورات کلیدی و مبهم رو آموزش میدم .
و اگر اشتباهی و غلت املایی چیزی به وجود اومد به بزرگی خودشون ببخشین.
رفتم شروع کنم .
موفق باشید.

Biggrin Use Google instead of asking stupid questions Biggrin

[/url]
CMC Automation System


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

۲۶-مرداد-۱۳۸۸, ۰۸:۴۷:۳۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : lord_viper, محمد حسینی, yazddownload, HoseinVig, t3r!p3000, vahid2010, tajerman, osamee, varesh56, kashima
dreamvbfox آفلاین
در حال پیشرفت
***

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

تشکرها : 236
( 1251 تشکر در 361 ارسال )
ارسال: #4
RE: آموزش زبان سی | C Learning
سلام .
شرمنده دیر شد آخه یکی از دوستان سر جلسه امتحان ویبی بود (افتاده بود) زنگ زد مجبور شدم کمکش کنم D:
زبون سی یه زبون سطح میانی هست و هیچ محدودیتی رو واسه برنامه نویس ایجاد نمی کنه . حالا هرچی بریم جلوتر خوتون متوجه میشین !

بعضی از کلمات کلیدی C :
کد:
auti - break - case -char - const - continue - default - do - double - else - enum - extern - float - for - goto - if - int - long - register - return - short - signed - sizeof - static - struct - switch - typedef - union - unsigned - void - volatile - while

دستورالعمل های زبان برنامه نویسی C دارای ویژگی های زیر می باشند :
1- هر دستور زبون c به ( ; ) ختم می شود .
2- حداکثر طول یک دستور , 255 کاراکتر هست.
3- هر دستور می تونه تو چند تا سطر نوشته بشه و هر وقت کاراکتر ( ; ) رو بنویسین به این معنی هست که دستور تمومه !
4- در هر سطر میتونیم چند تا دستور بنویسیم اگر گزینه 1 و 3 رو گرفته باشید اینم می فهمید همه چیزا رو کامل و با دقت بخونید .
5- توضیحات می تونن در بین */ و /* (واسه چند تا خط) و یک خط // :
کد:
/* توضیحات
....
*/
و
کد:
//توضیحات در یک خط

-----

مهمترین چیزی که باید یاد بگیرید تعریف متغیر هاست . من اینجا نوع های داده ای و رشته ای رو هم می نویسم دیگه یاد نگرفتید مشکل خودتونه! D:

کد:
نوع داده نام متغیر ;
مثال :
کد:
int num;

5 نوع داده ای در زبان C:
Char : برای ذخیره سازی رشته ها (معادلش تو ویبی String هست)
Int : برای ذخیره سازی اعداد صحیح
Float : ذخیره سازی اعداد اعشاری
double : برای ذخیره سازی اعداد اعشاری بزرگتر از Float
Void : هم واسه تعریف تابع (Function) هست بعدا بهش می پردازیم.
* چون امکانات Editor سایت پایین هست و نمیشه جدول کشید من عکس رو بهتون می دم :
[تصویر:  63m7sj9erl2lhbrz1vm2.jpg]

signed: یعنی با علامت و unsigned به معنی بدون علامت . با استفاده از این 2 می تونیم نوع های جدیدی رو بسازیم . مثلا نوع داده ای int اعداد منفی رو داره یعنی با علامته ! پس اگر sigend بزاریم خود int میشه و اگر unsigned بزاریم اونو به 0 تا 65535 محدود می کنه عکس رو ببینید بقیه ی داده ها رو متوجه میشید . بهتر از این نمی تونم توضیح بدم.

اسامی غیر مجاز در تعریف متغیر :
1- شروع با عدد
2- علامت !
3- نقطه (Dot)

حالا بریم سراغ مقدار دهی به متغیر ها ! سه جور می تونیم داده هامون رو بریزیم تو متغیر ها :
1- هنگام تعریف:
کد:
int x= 10, y =20;
2- با دستور انتساب (پس از تعریف متغیر)
کد:
x= 10;
3- دستورات ورودی (یه سری دستورات داریم که داده رو از کاربر می گیرن و میریزن تو متغیر تو پست های بعدی زیاد باهاشون سرو کار داریم پس زود ازش رد میشم.)
کد:
int x;
x= scanf("%d",&x);

تعریف ثوابت
ما می تونیم متغیر رو جوری تعریف کنیم تا همیشه یه مقدار رو داشته باشه و نشه تو طول برنامه اونو عوض کرد خوب پس دیگه بهش متغیر نمی گن اسمشو می زارن ثابت . واسه تعریف ثابت ها از دو دستور استفاده می شه که من مثالشو اینجا میزنم . امیدوارم که مفهوم رو بفهمید :
1- با استفاده از دستور define# >>
کد:
#define <مقدار> <نام ثبات>
مثال :
کد:
#define PI 3.14
یادتون باشه یه سری دستورات مثل define داریم که نیازی به ( ; ) در آخرشون ندارن.


2-
استفاده از دستور Const :
کد:
const int n= 10, int y = 20;


این مطالب بالا رو فعلان یاد بگیرید . تو پست بعدی اگر خدا بخواد درباره عملگر ها توضیح خواهم داد. بازم من میگم این آموزش ها رو واسه کسی میدم که قبلا برنامه نویسی رو با یه زبونی شروع کرده باشه پس من زیاد نمی گم متغیر چیه و از این حرفا ! بعد از اینکه زبان C رو کامل فراگرفتیم میرم سراغ C#.net و اونو به صورت حرفه ای یادتون میدم (خودمم یاد بگیرم) تا بتونیم برنامه های بزرگمون رو با اون بنویسیم به نوعی من زبان C رو مقدمه ای بر سی شارپ کردم .
بازم امیدوارم که منظور منو از این حرفا فهمیده باشید .
موفق باشید.

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, t3r!p3000, lord_viper, Mr.pRoGraMmer, yazddownload, aminsotudeh, vahid2010, Tender, ali_asrami, hamid_artist69, f1020, tajerman, kashima, 1نفر
dreamvbfox آفلاین
در حال پیشرفت
***

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

تشکرها : 236
( 1251 تشکر در 361 ارسال )
ارسال: #5
RE: آموزش زبان سی | C Learning
عملگرها

انواع آن در زبان C :
کد:
محاسباتی - رابطه ای (مقایسه ای) - منطقی - ترکیبی -بیتی
یه توضیح مختصری واسه هر کدومشون میدم.
محاسباتی :
عملگرهایی هستند که اعمال محاسباتی رو روی عملوندها انجام میدن.
[تصویر:  2pqo328fqwd53qt64jgs.jpg]
عملگرهای - و + و / و * در تمامی زبان ها وجود دارد. عملگر % برای محاسبه ی باقی مانده ی دو عدد به کار میره (معادل % در ویبی Mod هست). علاوه بر این عملگر ها دو نوع عملگر کاهش و افرایش نیز داریم (جالب هستن) که از مثدار متغییر یک واحد کم یا زیاد میکنن. مثال :
کد:
x ++;
Y--;
در دستور اول یک مقدار به متغیر x اضافه می کنه و در دستور دومی یک مقدار از متغبر Y کم میکنه . معادل :
کد:
x=x+1;
Y=Y+1;

* نکته : من از حالا بهتون بگم که زبان C نسبت به حروف کوچک و بزرگ حساس هست پس اگر متغیری رو با حروف بزرگ ایجاد کردید حتما هنگام مقدار دهی با حروف برزگ بنویسید تا دچار مشکل نشید.

خوب . ما عملگر افزایش یا کاهش رو می تونیم به 2 صورت استفاده کنیم . به این مثال توجه کنید :
1-
کد:
int x,y;
x= 10;
y= ++x;

2-
کد:
int x,y;
x=10;
y=x++;

به نظر شما x++ با ++x چه فرقی داره .؟ نمی دونید؟ خودم می گم Biggrin!
در مثال بک متغبرها تعریف میشن در سطر بعدی متغیر x مقدار 10 میگیره . تو خط سوم هم اول 1 واحد به x اضافه شده بعد نتیجه که 11 هست داخل y قرار می گیره
در مثال بعدی در خط دوم x مقدار 10 رو دریافت می کنه و در خط بعدی اول مقدار x که 10 هست به y انتساب داده میشه و بعد یک واحد به x اضافه میشه !
نفهمیدید مشکل من نیست !

عملگرهای رابطه ای (مقایسه ای)
این عملگر ها ارتباط بین عملوند ها رو مشخص میکنه مثلا کدوم از عملوند ها بزرگ هست و ... . به عکسی که میزارم دقت کنید اگر قرار باشه اینو بلد نباشید من دیگه رفع زحمت می کنمو میرم BiggrinBiggrin
[تصویر:  6ri57dmpxskuhls9v37.jpg]

عملگر منطقی
عبارات منطقی دارای 2 ارزش True یا False دارن. در زبان سی ارزش نادرست با مقدار صفر و ارزش درست رو با اعداد غیر صفر میتوان مشخص نمود.
ّچند مورد از این عملگرها رو تو این عکس می تونید ببینید.
[تصویر:  kub2i4bgucoiqtpjp8ko.jpg]

عملگرهای ترکیبی
از ترکیب عملگرهای محاسباتی که باهاش آشنا شدیم همراه علامت انتساب یا مساوی (=) عملگرهایی بهنام ترکیبی به وجود میاد
[تصویر:  w4yqjipfnmuwj69gyte.jpg]
فک نکنم نیازی به داشته باشه ?-:

عملگرهای بیتی
این عملگرها برای تست کردن , شیفت دادن بر روی مقادیری که در یک بایت(char) یا (int) ذخیره شده اند به کار میره .
[تصویر:  20mouf9k0zei5m07sjp.jpg]
یه زره درباره عملگر شیفت توضیح میدم چون میدونم اکثرا نفهمیدن. از اسمش معلومه که واسه جابه جا کردن استفاده میشه.
[تصویر:  if9y0ly2jbcq0wuhhxg.jpg]
دوست ندارم بشنوم مبنا بلد نیستید .
توضیح : به سطر اول نگاه کنید x مقدار 7 تحویل گرفته . مقدار دودویی اونو تو ستون وسطی می تونید ببینید.بعد هم دستور x= x << 1 اجرا میشه این بدین معنی هست که x رو به سمت چپ به اندازه یک واحد شیفت بده . اگر دیده باشید می فهمید که از آخر یه بیت رفته بیرون(یعنی حذف شد) و از سمت راست به تعدادی کی شیفت داده شده صفر وارد میشه ! پس از اینکار اگر مقدار دهدهی رو حساب کنید می فهمید x مقدار 14 دریافت کرده است . بقیه ی سطر ها رو خودتون trace کنید مطمئن باشید اگر دقت کنید می فهمید .
مثال بعدی : به عکس توجه کنید.
[تصویر:  uv9rh2kkhnc30hlolm8.jpg]
* عملگر های بیتی فقط با بیت (0 یا 1) سرو کار دارن. یکی از کاربرد هاش خوندن بیت های چاپگر یا مودم هست که بعد با استفاده از این عملگر ها می تونید وضعین اونا رو مورد بررسی قرار بدین .
توضیح عکس :
x & y >> عمکرد "و" معادل اون تو ویبی And هست
x | y >> عملکرد "یا" و معادلش تو ویبی Or هست
x ^ y >> عملکرد "یا این یا اون" معادلش تو ویبی Xor هست
x~ >> این عملکرد تنها یک عملوند داره معادیش در ویبی Not هست .
ببخشید اگر زیاد خودمونی نوشتم!

چند تا عملگر (من اسمشو گذاشتم متفرقه) هم داریم :
عملگر علامت سوال (؟) :
این عملگر شبیه iif خودمون تو ویبی هست . یعنی اگر شرط true بود عبارت اول رو محاسبه در غیر این صورت عبارت بعدی . یه مثال میزنم تا بهتر متوجه بشید.
کد:
int x,y ;
x= 5;
y = x>2 ? x+2:x-2;
در اینجا اول شرط x>2 بررسی میشه چون برقرار است 2 تا به x اضافه می کنه در غیر این صورت 2 تا از x کم میکنه و خروجی رو به y ارسال می کنه.

عملگر کاما (,)
روش به کارگیری :
[تصویر:  yxp6pqmx53jkqiv3oqv9.jpg]
خیلی بخوام آسون بهتون بگم اینه که اول عبارت 1 حساب میشه و نیجه اون در عبارت 2 مورد استفاده قرار می گیره .
یه مثال :
کد:
int x ,y ;
y=(x=2,x*4);
در اینجا پس از تعریف متغیر ها اول عبارت1 حساب میشه یعنی x برابر 2 میشه بعد هم مقدار x که 2 هست در 4 ضرب میشه بعدشم داخل y رخته میشه .

عملگر sizeof
با استفاده از این عملگر می توان طول بک متغیر یا نوع داده را بر حسب بایت به دست اورد .
کد:
int x,y;
x= sizeof y;
x = sizeof(float);
پس هم میشه طول متغیری که تعریف کردیم رو بدونیم یا نوع متغیر .


آخرین مطلب این پست درباره تقدم عملگرهاست یعنی کدوم عملگر اول اجرا بشه به ترتیب...
یه عکس میزارم که می تونید بفهمید:
[تصویر:  8ftckgt3e0dqif8ch3z6.jpg]

راستش یه لحظه به خودم گفتم اینا رو اینجا بنویسم که چه طور بشه ؟
حقیقتا شما دوستان به بنده امید نمیدید تا خستگی کار رو احساس نکنم.

موفق باشید.

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, t3r!p3000, lord_viper, Mr.pRoGraMmer, yazddownload, aminsotudeh, vahid2010, Tender, ahmad14, dariush1342, ali_asrami, pardis11, alvandian110, hamid_artist69, omidmohammadi, osamee, kashima
محمد حسینی آفلاین
کاربر فعال بخش رباتیک
****

ارسال‌ها: 1,363
موضوع‌ها: 139
تاریخ عضویت: آذر ۱۳۸۴

تشکرها : 974
( 1780 تشکر در 620 ارسال )
ارسال: #6
RE: آموزش زبان سی | C Learning
بابا جان من که همون اول انرژی دادم دیگه ! خودت گفتی کسی پست نزنه ...
آقا یه سوال : سی شیفت دورانی هم داره؟ یعنی مثلا اگه شیفت به چپ می کنیم و 1 از چپ خارج شد از راست هم 1 وارد بشه؟ متوجه سوالم شدی؟
ممنون. ادامه بده لطفا. به فکر اجر معنویش باش ! Biggrin

به راه بادیه رفتن، به از نشستن باطل ------------- اگرچه وصل نیابم، بقدر وسع بکوشمRolleyes
۲۶-مرداد-۱۳۸۸, ۱۴:۲۷:۵۱
ارسال‌ها
پاسخ
تشکر شده توسط : dreamvbfox, t3r!p3000, kashima
yazddownload آفلاین
تازه وارد

ارسال‌ها: 2
موضوع‌ها: 0
تاریخ عضویت: مرداد ۱۳۸۸

تشکرها : 14
( 11 تشکر در 2 ارسال )
ارسال: #7
at  YazdDownload
سلام میخواستم اگه امکان داره چندتا سورس C بزارید تا روش کار کنم

ممنون
۲۶-مرداد-۱۳۸۸, ۱۴:۵۲:۰۶
ارسال‌ها
پاسخ
تشکر شده توسط : kamel, kashima
dreamvbfox آفلاین
در حال پیشرفت
***

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

تشکرها : 236
( 1251 تشکر در 361 ارسال )
ارسال: #8
RE: آموزش زبان سی | C Learning
(۲۶-مرداد-۱۳۸۸, ۱۴:۲۷:۵۱)Sp!d3rm4n نوشته است: بابا جان من که همون اول انرژی دادم دیگه ! خودت گفتی کسی پست نزنه ...
آقا یه سوال : سی شیفت دورانی هم داره؟ یعنی مثلا اگه شیفت به چپ می کنیم و 1 از چپ خارج شد از راست هم 1 وارد بشه؟ متوجه سوالم شدی؟
ممنون. ادامه بده لطفا. به فکر اجر معنویش باش ! Biggrin
ممنون.
منظورم این بود تشکر کنید . d:
تا اونجایی که من خوندم و یاد گرفتم تنها شیفت چپ و راست رو داره اما می تونی تابع اونو بنویسی کاری نداره . انشاالله وقتی بهش رسیدم توضیحات کامل رو میدم.
(۲۶-مرداد-۱۳۸۸, ۱۴:۵۲:۰۶)yazddownload نوشته است: سلام میخواستم اگه امکان داره چندتا سورس C بزارید تا روش کار کنم

ممنون

سلام عزیزم .
بزارید از بحث های تئوری زبان شیرین C بیام بیرون حتما سورس رو ضمیمه میکنم.
موفق باشید .

Biggrin Use Google instead of asking stupid questions Biggrin

[/url]
CMC Automation System


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

(آخرین ویرایش در این ارسال: ۲۶-مرداد-۱۳۸۸, ۱۵:۱۴:۳۰، توسط dreamvbfox.)
۲۶-مرداد-۱۳۸۸, ۱۵:۱۰:۰۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, محمد حسینی, yazddownload, Mr.pRoGraMmer, vahid2010, Tender, hamed.amirahmdi, kashima
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
محمد حسینی آفلاین
کاربر فعال بخش رباتیک
****

ارسال‌ها: 1,363
موضوع‌ها: 139
تاریخ عضویت: آذر ۱۳۸۴

تشکرها : 974
( 1780 تشکر در 620 ارسال )
ارسال: #10
RE: آموزش زبان سی | C Learning
نقل قول: اگر توضیحات printf رو یاد گرفته باشید این مثال رو هم می فهمید . "%d%d" بدین معنی است که باید 2 عدد صحیح رو دریافت کنی و اولی رو در متغیر در x و دومی رو در y قرار میده ! تنها چیزی که منم نفهمیدم اینه که چرا باید کاراکتر & رو قبل از متغیر x یا y بزاریم؟ ؟-: فقط میدونم که باید بزاریم وگرنه مقداری که دریافت میشه غیر از اونیه که تو کیبود وارد کرده ایم . بگذاریم .

اجازه هست من کامل کنم که آموزش ها بدون نقص در بیاد؟!
کاراکتر & قبل از هر متغیر بیاد آدرس اون تو حافظه رو بر میگردونه. تابع scanf برای مقدار دهی به متغیرها آدرسشون رو می خواد و با این کار ما آدرس متغیر رو به تابع می دیم.
اگه & نذاریم متغیر مقدار دهی نمی شه و اون چیزی که نشون میده اطلاعاتیه که از قبل تو اون قسمت حافظه بوده. این اشکال موقعی پیش میاد که متغیرها موقع تعریف مقداردهی اولیه نشده باشن.

به راه بادیه رفتن، به از نشستن باطل ------------- اگرچه وصل نیابم، بقدر وسع بکوشمRolleyes
۲۷-مرداد-۱۳۸۸, ۱۴:۲۷:۲۳
ارسال‌ها
پاسخ
تشکر شده توسط : dreamvbfox, parisamohamadi, t3r!p3000
hoax3r آفلاین
كاربر دو ستاره
**

ارسال‌ها: 63
موضوع‌ها: 2
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 38
( 93 تشکر در 46 ارسال )
ارسال: #11
RE: آموزش زبان سی | C Learning
(۲۶-مرداد-۱۳۸۸, ۱۴:۲۷:۵۱)Sp!d3rm4n نوشته است: بابا جان من که همون اول انرژی دادم دیگه ! خودت گفتی کسی پست نزنه ...
آقا یه سوال : سی شیفت دورانی هم داره؟ یعنی مثلا اگه شیفت به چپ می کنیم و 1 از چپ خارج شد از راست هم 1 وارد بشه؟ متوجه سوالم شدی؟
ممنون. ادامه بده لطفا. به فکر اجر معنویش باش ! Biggrin

با اجازه صاحب تاپیک جواب شما رو بدیمQuestion، بعضی کامپایلرها توابعی برای این کار دارن توابعی مثل rotl_ و rotr_

یه پیشنهاد هم برای بهبود تاپیک داشتم، به نظرم اگه مطالب گفته شده تا حد ممکن بر اساس استاندارد C باشه خیلی میتونه خوب باشه
خصوصا برای افرادی که تازه می خوان این زبان رو یاد بگیرن که از همون ابتدا استاندارد کد بزننBiggrin البته این فقط یه پیشنهاده، اگه لازم میدونید این کارم بکنید

موفق باشید
۲۷-مرداد-۱۳۸۸, ۲۲:۰۷:۲۰
ارسال‌ها
پاسخ
تشکر شده توسط : محمد حسینی, dreamvbfox, t3r!p3000


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [پروژه] الگوریتم زمانبندی 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