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

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

تشکرها : 14
( 11 تشکر در 2 ارسال )
ارسال: #12
RE: آموزش زبان سی | C Learning
سلام و عرض خسته نباشید خدمت دوست عزیزم
میخواستم بپرسم چرا وقتی من برنامه ای رو تو محیط c اجرا میکنم پیغام خطا میده
اون تنظیمات رو هم اعمال کردم بازم مشکل داره اگه میشه کمکم کنید
ممنون
۲۸-مرداد-۱۳۸۸, ۰۱:۰۶:۱۹
ارسال‌ها
پاسخ
dreamvbfox آفلاین
در حال پیشرفت
***

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

تشکرها : 236
( 1251 تشکر در 361 ارسال )
ارسال: #13
RE: آموزش زبان سی | C Learning
(۲۸-مرداد-۱۳۸۸, ۰۱:۰۶:۱۹)yazddownload نوشته است: سلام و عرض خسته نباشید خدمت دوست عزیزم
میخواستم بپرسم چرا وقتی من برنامه ای رو تو محیط c اجرا میکنم پیغام خطا میده
اون تنظیمات رو هم اعمال کردم بازم مشکل داره اگه میشه کمکم کنید
ممنون

سلام.
لطفا مشکلات خودتون رو تو یه تاپیک دیگه مطرح کنید.
(۲۷-مرداد-۱۳۸۸, ۲۲:۰۷:۲۰)hoax3r نوشته است:
(۲۶-مرداد-۱۳۸۸, ۱۴:۲۷:۵۱)Sp!d3rm4n نوشته است: بابا جان من که همون اول انرژی دادم دیگه ! خودت گفتی کسی پست نزنه ...
آقا یه سوال : سی شیفت دورانی هم داره؟ یعنی مثلا اگه شیفت به چپ می کنیم و 1 از چپ خارج شد از راست هم 1 وارد بشه؟ متوجه سوالم شدی؟
ممنون. ادامه بده لطفا. به فکر اجر معنویش باش ! Biggrin

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

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

موفق باشید
ممنون عزیزم واسه جوابتون.
منظور شما رو کامل نفهمیدم اما من از روز اول گفتم که این مطالب مناسب کسی هست که از قبل با یه زبان ساده مثل ویبی کار کرده باشه.(به نظر من استاندارد هست حالا بازم دوستان نظر بدن تا اگر مشکلی هست برطرف بشه) . خود بنده هم تازه شروع به یادگیری زبان 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.)
۲۸-مرداد-۱۳۸۸, ۰۹:۰۶:۱۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : vahid2010, t3r!p3000, kashima
ajlajlajl آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,192
موضوع‌ها: 70
تاریخ عضویت: مهر ۱۳۸۴

تشکرها : 932
( 2618 تشکر در 1020 ارسال )
ارسال: #14
RE: آموزش زبان سی | C Learning
ایول همشهری. میگم کامل ترش کن. دنبال یه آموزش خلاصه زبون C میگشتم برا کلاسمون که اونم پیدا شد Biggrin .
و. ++C یاد نمیدید. بهتره ها Biggrin .
راستی کسی مرجع کامل کتابخونه های زبون ++C استاندارد رو سراغ داره؟ من هنوز هر وقت دنبال توضیح یه تابع یا توابع یه کتابخونه هستم میرم تو راهنما ++Turbo C میگردم Biggrin .

میزان رای دشمن است!
[تصویر:  cff100.png]
۲۸-مرداد-۱۳۸۸, ۰۹:۴۷:۳۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : dreamvbfox, t3r!p3000
hoax3r آفلاین
كاربر دو ستاره
**

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

تشکرها : 38
( 93 تشکر در 46 ارسال )
ارسال: #15
RE: آموزش زبان سی | C Learning
(۲۸-مرداد-۱۳۸۸, ۰۹:۰۶:۱۵)dreamvbfox نوشته است: ممنون عزیزم واسه جوابتون.
منظور شما رو کامل نفهمیدم اما من از روز اول گفتم که این مطالب مناسب کسی هست که از قبل با یه زبان ساده مثل ویبی کار کرده باشه.(به نظر من استاندارد هست حالا بازم دوستان نظر بدن تا اگر مشکلی هست برطرف بشه) . خود بنده هم تازه شروع به یادگیری زبان c کردم پس ممکن هست مطلبی رو بلد نباشم پس از شما دوستان خواهش می کنم تا اونو کامل کنید.

موفق باشید

سلام
البته منکر زحمت شما نیستمQuestionیه دلیلی که اینو گفتم این بود که اگه استاندارد باشه تو هر کامپایلر یا سیستم عاملی میشه کد نویسی کرد
برای مثال توابعی مثل getch و getche و putch در نظر بگیرین. اینا به مرور به بعضی کامپایلر های ویندوز اضافه شدن و جزء C نیستن
و یکی که در لینوکس از gcc استفاده میکنه ممکنه اینا تعریف نشده باشن و با مشکل مواجه بشه
موفق باشید
(آخرین ویرایش در این ارسال: ۲۸-مرداد-۱۳۸۸, ۱۰:۲۶:۰۳، توسط hoax3r.)
۲۸-مرداد-۱۳۸۸, ۱۰:۲۴:۴۲
ارسال‌ها
پاسخ
تشکر شده توسط : dreamvbfox, محمد حسینی, t3r!p3000
dreamvbfox آفلاین
در حال پیشرفت
***

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

تشکرها : 236
( 1251 تشکر در 361 ارسال )
ارسال: #16
RE: آموزش زبان سی | C Learning
(۲۸-مرداد-۱۳۸۸, ۱۰:۲۴:۴۲)hoax3r نوشته است:
(۲۸-مرداد-۱۳۸۸, ۰۹:۰۶:۱۵)dreamvbfox نوشته است: ممنون عزیزم واسه جوابتون.
منظور شما رو کامل نفهمیدم اما من از روز اول گفتم که این مطالب مناسب کسی هست که از قبل با یه زبان ساده مثل ویبی کار کرده باشه.(به نظر من استاندارد هست حالا بازم دوستان نظر بدن تا اگر مشکلی هست برطرف بشه) . خود بنده هم تازه شروع به یادگیری زبان c کردم پس ممکن هست مطلبی رو بلد نباشم پس از شما دوستان خواهش می کنم تا اونو کامل کنید.

موفق باشید

سلام
البته منکر زحمت شما نیستمQuestionیه دلیلی که اینو گفتم این بود که اگه استاندارد باشه تو هر کامپایلر یا سیستم عاملی میشه کد نویسی کرد
برای مثال توابعی مثل getch و getche و putch در نظر بگیرین. اینا به مرور به بعضی کامپایلر های ویندوز اضافه شدن و جزء C نیستن
و یکی که در لینوکس از gcc استفاده میکنه ممکنه اینا تعریف نشده باشن و با مشکل مواجه بشه
موفق باشید

این آموزش هایی که بنده در اختیارتون می دم تو turbo c اجرا میشه و واسه این کامپایلر استاندارد هست . و اگر کسی خواست تحت یه کامایلر دیگه کار کنه مثل gcc که مخصوص لینوکس هست باید خودش زحمت بکشه !!
فکر کنم به این نتیجه رسیدیم که آموزش های بنده استاندارد هست!
اگر اجازه بدید برم آموزش بعدی که درباره حلقه های تکرار و ساختار تصمیم هست رو آماده کنم.

موفق باشید.
(۲۸-مرداد-۱۳۸۸, ۰۹:۴۷:۳۲)ajlajlajl نوشته است: ایول همشهری. میگم کامل ترش کن. دنبال یه آموزش خلاصه زبون C میگشتم برا کلاسمون که اونم پیدا شد Biggrin .
و. ++C یاد نمیدید. بهتره ها Biggrin .
راستی کسی مرجع کامل کتابخونه های زبون ++C استاندارد رو سراغ داره؟ من هنوز هر وقت دنبال توضیح یه تابع یا توابع یه کتابخونه هستم میرم تو راهنما ++Turbo C میگردم Biggrin .
مهندس ajlajlajl خیلی از آشناییتون خوشحال شدم. امیدوارم که هرجا هستید پیروز و موفق باشید. بعد از اینکه C تموم شد اگر خدا خواست میخوام c++ و c#.net رو یاد بگیرم . انشاالله اینجا هم یه تاپیک واسه این زبان ها میزارم تا یه اجر معنوی هم داشته باشه BiggrinBiggrin

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
dreamvbfox آفلاین
در حال پیشرفت
***

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

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

قرار بود درباره حلقه های تکرار و شرط صحبت کنم این دستورات رو که همگی بلد هستن پس دیگه خبری از فلوچارت و تریس کردن نیست من فقط ساختار کلی اونا رو همراه چندتا مثال که ضمیمه پست میکنم بهت یاد میدم.

حلقه for
دو تا عکس میزارم اینجا مطمئن هستم که میفهمید .
تصویر اول :
[تصویر:  dbbb2jcq3jm9v5ubmmk.jpg]
تصویر دوم :
[تصویر:  jyrneb7idhr5wkmih13.jpg]
توضیح : اگر به تصاویر با دقت نگاه کرده باشید میفهمید زمانی که چندین دستور داشته باشید باید اونو داخل {} قرار بدین اما در صورتی که تنها یک دستور باشه نیازی به {} ندارید . نکته ی بعدی اینه که اگر مقدار شمارنده و شرط و همین طور گام حرکت رو خالی بزارید تعداد تکرار حلقه بی نهایت می شود . و برای بیرون اومدن از حلقه باید ctrl+break رو فشار بدید. تمام توضیحی که یه حلقه ی تکرار for داشت همینه !!! حالا چندتا مثال هم ضمیمه میکنم تا بهتر متوجه بشید .

Example 1 : برنامه ای که 5 عدد صحیح رو از ورودی بخونه و میانگین این اعداد رو دی خروجی چاپ کند.(سورس ضمیمه شد!)
کد:
#include <conio.h>
#include <stdio.h>
int main (){

clrscr();

int i,num,sum=0;

float res;

for (i=1;i<=5;i++){


scanf("%d",&num);


sum +=num;

}

res=(float) sum / 5;

printf("average : %6.2f",res);;

getch();

return 0;
}
توضیح : همه ی اینا رو ، قبلا بهتون گفتم فقط چندتا نکته : هر دفعه که عددی دریافت میشه با مقدار قبلیsum جمع میشه پس مقدار پیش فرض sum رو برابر با صفر کنید .(دلیل بهتری می خواین خودتون تست کنید متوجه میشید)
همین طور که تو صورت سوال خوندید ما 5 عدد صحیح رو دریافت می کنیم و امکان اینکه میانگین اعشاری بشه زیاده پس متغیر res رو به صورت float یا اعداد اعشاری تعریف کرده ایم پس هنگامی که مقداردهی میشه باید داخلش عدد اعشاری قرار بگیره در حالی که ممکن است عدد میانیگین ما صحیح شود و دلیل نوشتن (float) در اول sum / 5 این بود که عدد میانگین به یک عدد اعشاری تبدیل شود.
نکته ی بعدی :همان طور که می دونید 6.2f% یک کاراکتر فرمت است که اعداد اعشاری رو نمایش میده اما 6.2 چیه؟؟ 6 تعداد رقم های اعداد قبل ممیز (صحیح) و 2 به معنی تعداد رقم های بعد از ممیز (اعشاری) می باشد.
اگر تو ویبی با دستور format کار کرده باشید حالا هم باید بدونید که اعداد قبل از ممیز همیشه نشون داده میشه (پس 6 تاثیری نداره) و اعداد بد از ممیز هم یه سری تغییراتی روشون انجام میشه مثلا تو این قطعه کد گفتیم 2 تا رقم بعد از ممیز رو نشون بده ، اگر اعداد بعد از ممیز بیشتر از دو رقم بود گرد میشن اما اگر کمتر از 2رقم بود به تعداد رقم های باقی مونده که باید به 2 رقم برسن صفر گذاشته میشه !
نکته ی دیگری نداره امیدوارم خوب توضیح داده باشم.

حلقه های تکرار تو درتو :
تصوبر :
[تصویر:  v8xtiguvjwf28w30rn29.jpg]
این حلقه ها یه قانون دارن اونم اینه که به ازای هر بار اجرای حلقه ی خارجی حلقه ی داخلی به صورت کامل اجرا شود.
تصویر بعدی :
[تصویر:  kwwx2l0g485o45ll2zq3.jpg]
اگر حلقه های تودرتو از یکجا شروع و به یکجا ختم شوند حلقه ی خروجی نیازی به آکولاد ( {} ) ندارد . یعنی حلقه ی خروجی تنها یک دستور رو اجرا کنه که اون دستور خط بعدیش هست! (قبلا دراین باره توضیح داده بودم)
Example2 :
برنامه جدول ضرب (ضمیمه شد)
کد:
for (i=1;i<=10;i++){


for (j=1;j<=10;j++)



printf("%5d", i*j);


printf("\n");

}
یه توضیح کوچولو : حلقه j از انجایی که آکولاد نداره می فهمیم که تنها یک دستور بعد از خودش رو اجرا و تا شرط برقرار است تکرار می کنه. پس هر وقت حلقه ی داخلی به طور کامل تکرار خودش رو انجام داد دستور enter داده میشه!

یکی دیگر از مثال هایی که تو این زمینه رایج هست خرد کردن سکه است !
Example 3 :
برنامه ای که یک سکه ی 100 ریالی رو به سکه های 2 ، 5 ، 10 ، 20 و 50 ریالی خرد کندو تعداد حالت های ممکن رو شمارش کند (تا اونجایی که من یاد میدم این برنامه رو تو همه زبان ها به عنوان مثال قرار میدن).(سورس کد ضمیمه شد.)
کد:
#include <conio.h>
#include <stdio.h>
int main (){

int i2, i5,i10,i20,i50,count= 0;

unsigned long int sum;

clrscr();

for (i2=0;i2 <=50;i2++)


for (i5=0;i5<=20;i5++)



for (i10=0;i10<=10;i10++)




for (i20=0;i20<=5;i20++)





for (i50=0;i50<=2;i50++){





sum = i2*2+i5*5+i10*10+i20*20+i50*50;





if (sum==100){






count ++;






printf("\n 2Riali=%d ,5Riali=%d ,10Riali=%d ,20Riali=%d ,50Riali=%d",i2,i5,i10,i20,i50);





}





}


getch ();

return 0;
}
توضیح مختصر : چون جمع سکه ها ممکنه زیاد بشه متغیر sum رو به صورت long int تعریف کردیم و از اونجایی که جمع سکه ها عدد منفی نمیشه اونو به صورت unsigned تعریف کردیم تا این متغیر حجم حافظه رو زیاد اشغال نکنه !
i2=0;i2 <=50;i2++ >> به نظر شما چرا i2 باید تا 50 شمارش بشه ؟ خوب اگر ریاضیتون قوی باشه زود میفهمید حالا من میگیم چند تا 2ریالی میشه 100 ریال ؟ خوب معلومه همه میگید 50 تا پس باید تا 50 شمارش کنه.(بقیه حلقه ها هم اینجوری حساب کنید.)
i2*2+ ... >> شاید بازم به خودتون میگید چرا اینجا باید در 2 ضرب بشه بعد با بقیه سکه جمع شود؟؟؟ نگاه کنید آخرین مقدار i2 چنده ؟؟؟ معلومه 50 هست پس چندتا 50تا میشه 100 ریال ؟ خوب 2 تا ! پس در 2 ضرب کنید !
اگر این توضیحاتی که من دادم رو یاد گرفته باشید این قطعه کد که همه توش مشکل دارن و ازش میگذرن میتونید یاد میگیرید.

پایان این قسمت BiggrinBiggrin
اگر چیزی رو اشتباه توضیح دادم به بزرگی خودتون ببخشید . اگر خدا بخواد ادامه حلقه ها رو تو جلسه بعدی توضیح خواهم داد
موفق و پیروز باشید.


فایل‌(های) پیوست شده
.rar   Example 1.rar (اندازه: 333 bytes / تعداد دفعات دریافت: 138)
.rar   Example 2.rar (اندازه: 283 bytes / تعداد دفعات دریافت: 223)
.rar   Example 3.rar (اندازه: 417 bytes / تعداد دفعات دریافت: 150)

Biggrin Use Google instead of asking stupid questions Biggrin

[/url]
CMC Automation System


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

۲۸-مرداد-۱۳۸۸, ۱۳:۴۴:۰۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : yazddownload, محمد حسینی, lord_viper, hamed_Arfaee, Mr.pRoGraMmer, aminsotudeh, vahid2010, sita_rampail, t3r!p3000, ali_asrami, aanaahitaa, emankhan
dreamvbfox آفلاین
در حال پیشرفت
***

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

تشکرها : 236
( 1251 تشکر در 361 ارسال )
ارسال: #18
RE: آموزش زبان سی | C Learning
hi all.
امشب تصمیم گرفتم بحث حلقه و تصمیم رو تموم کنم.

عملگر کاما و حلقه for

عملگر کاما رو که آموزش های قبلی توضیح دادم . اما هنگامی که با حلقه For ترکیب بشه قابلیت انعطاف پذیریش بیشتر میشه. عملگر کاما رو میتونیم فقط تو دوبخش قسمت مقدار دهی و گام حرکت استفاده کنیم و دو یا چند عبارت رو با هم ترکیب کنیم.
کد:
for (i=1;i<=5;i++,m++){
//Commands
}
توضیح : هر دفعه که یک گام به i اضافه میشه یک واحد هم به m اضافه میشه!

ساختار تکرار while
تو زبان C یکی while و یکی do while داریم . فعلا while رو واستون توضیح میدم.
[تصویر:  gc71ozmc1j9j7rzb5893.jpg]

* اگر شرط حلقه همیشه درست باشه، حلقه ی تکرار به نهایت میشه !
مثال :
کد:
while (1){
//Commands
}
اینجا شرط همیشه برقرار هست . اگر یادتون باشه true اعداد غیر صفر و false فقط صفر بود حالا هم اگر صفر بزارید اجرا نمیشه اعداد غیر صفر رو هم بزارید همیشه شرط برقرار هست و بی نهایت حلقه تکرار خواهد شد.
Example1:
برنامه ای بنویسید که جمله ای را از ورودی بخواند و تعداد حرف های آن را شمارش کند. انتهای جمله به enter ختم میشه !(سورس ضمیمه شد)
کد:
while ((c=getche())!='\r')


count++;
توضیح : ما باید با تابع getche حرف رو از کاربر دریافت کنیم بعد ببینیم اگر enter نبود یکی به count اضافه کنیم . پس شرط حلقه while اینه که ورودی ای که از کاربر دریافت میشه enter نباشه (تو کاراکتر کنترل که توضیح دادم enter برابر با r\ بود ).

ساختار تکرار do ... while
تنها فرقی که این حلقه تکرار با while داره اینه که حداقل یه بار حلقه تکرار میشه .
[تصویر:  f20fptw55gle6kzecrjx.jpg]

Exampe2:
برنامه ای بنویسید که عددی را از ورودی خوانده و آن را وارون کنه مثلا 123 بشه 321 (سورس ضمیمه شد)
کد:
scanf("%d",&digit);

do{

printf("%d",digit % 10);

digit /=10;

}while (digit>0);
توضیح : اول برنامه عدد رو از کاربر دریافت میکنه مثلا 123 . همان طور که میدونید هر عددی که بر 10 تقسیم بشه عدد یکان اون حذف میشه و باقی مانده ی تقسیم بر 10 رقم یکان میشه ! اگر هم بر 100 تقسیم کنید عدد دهگان و ...
در مرحله اول باقی مانده ی تقسیم 123 بر 10 رو چاپ میکنه که 3 هست . بعد متغیر digit بر 10 تقسیم صحیح میشه (تقسیم اعشاری بشه باقی مانده هم صفر میکنه) بعد شرط رو بررسی میکنه میبینه بزرگتر از 0 هست دوباره به کارش ادامه میده و Reverse میکنه !

از کدام حلقه ی تکرار استفاده کنیم ؟
معمولا اگر تعداد دفعات تکرار حلقه ها مشخص باشه از for استفاده میشه و اگر شرط حلقه درست یا نادرست بود و خواستید حداقل یه بار حلقه تکرار بشه از do while در غیر این صورت از while استفاده کنید.

ساختار تصمیم if:
[تصویر:  4j0gvwb2xq0p4yi8o37.jpg]
با این دستورات که همگی آشنا هستید پس با چند تا مثال ازش رد میشم.
Example3:
برنامه ای بنوسید که جمله ای رو از ورودی بخونه و تعداد کاراکتر ها و کلمات موجود در اونو شمارش کنه درحالی که آخر جمله به Enter ختم میشود (سورس ضمیمه شد)
کد:
while ((c=getche()) != '\r'){


count ++;


if (c == ' ')



kalame++;

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

Example4:
برنامه ای که جدول کد اسکی رو در خروجی چاپ کنه (فقط کد اسکی 41 تا 120)
(سورس کد ضمیمه شد)
کد:
for (i=41;i<=120;i++){


printf ("%4d = %c",i,i);


if (i%5==0)



printf("\n");
توضیح : حلقه ی for و دستور بعدیش که چاپ کاراکتر و کد اسکی است رو قبلا توضیح دادم فقط میمونه این if ؟!؟!؟! اگر برنامه رو اجرا کرده باشید میبینید کاراکترها در 5 ستون چاپ شدند دلیلش هم اینه که ما اینجا اومدیم گفتیم اگر باقی مانده تقسم i بر 5 صفر شد برو سطر بعد ! به آخرین اعداد ستون از سطرها نگاه کنید همشون وقتی بر 5 تقسیم صحیح میشن پس منم گفتم هر وقت تقسیم شدن و باقی ماندشون صفر شد یه enter بده. شاید شما بگید چرا لقمه رو دور سرت می چرخونی ؟؟؟ دلیلش هم اینه میخوام کدها استاندارد وحرفه ای در بیاد .خوب اگر دوست نداری حرفه ای عمل کنی میتونی هر دفه که حلقه اجرا میشه یکی به متغیرت اضافه کنی اگر به 5 یا عددی که مبخواین تعداد ستونتون باشه رسید Enter بده و دوباره متغیر رو پس از صفر کردن مقداردهی کنه !

تابع تولید عدد تصادفی :
نام تابغ rand() و در فایل stdlib.h قرار داره.
کد:
نام متغیر = rand();
Example 5:
بازی ای بنویسید که کاربر بتواند عدد تصادفی تولید شده توسط کامپیوتر را حدس بزند. (اینم از اون سورس هایی که تو همه زبونا میزارن)(سورس ضمیمه شد.)
کد:
do {


printf("Insert Number : ");


scanf("%d",&g);


if (g==random)



break;


if ( g< random )



printf("Adad Bozorgtar Mibashad\n");


else



printf("Adad Kochaktar Mibashad\n");

}while (g!=random);

printf("\n\n\n****You win****");
توضیح : توضیح خواصی نداره فقط شرط اول برقرار باشه میره بیرون که بعدا بهش اشاره میکنم.

ساختار تصمیم else if
این ساختار رو میتونیم به جای if های تودرتو استفاده کنیم.
کد:
if (شرط)

دستور;
else if (شرط)

دستور;

دستور break
این دستور موجب خروج از حلقه های تکرار میشه هر جایی که تو حلقه ها به کار ببرید باعث میشه از حلق بپره بیرون.
کد:
break;

دستور continue
این دستور در حلقه های تکرار موجب انتقال کنترل به اول حلقه میشود به طوری که شرط رو بررسی کرده و اگر درست بود حلقه ادامه پیدا میکنه وگرنه خاتمه می یابد. از این دستور به نظر من بیشتر در حلقه while استفاده میشه.

دستور goto
از قیافش معلومه چی کارست ! این دستور باعث انتقال کنترل از یه نقطه به نقطه ی دیگر است . مثلا می تونید باهاش حلقه ی تکرار بنویسید
مثال :
کد:
A:
دستورات ;
if (شرط درست بود)

goto A ;
ساختار تصمیم switch
مثل select case خودمون تو ویبی هست.
[تصویر:  cskg29bwerzc7r3xo4ri.jpg]

توضیح : مقدار عبارت رو میگیره با مقادیر case ها مقایسه میکنه اگر برابر با یکی از اونا بود دستوراتشون رو اجرا میکنه بعد به break میرسه و میاد بیرون . یادتون باشه اگر break ننوشتید قرار نیست error بده اما دستورات دو case) Case فعلی و Case بعدی) باهم or میشن. یعنی Case 1 یا Case 2 (باید اینا رو بلد باشید من فقط or رو میگم بهتون این بدین یعنی هست که یکی از دو Case یا هردوشون میتونه اجرا بشه)پس نتیجه : اگر break نزاربم و شرط برقرار بود میتونیم چند تا از Case ها رو باهم اجرا کنیم منظورم دستورات داخلشونه.
در صورتی که هیج یک از case ها اجرا نشه دستورات default رو اجرا میکنه پس میشه گفت که الزامی نیست !

خدا رو شکر ، موضوع حلقه و تصمیم هم تموم شد BiggrinBiggrinBiggrin

دیگه واسه switch سورس نمیزارم اگر خودتون برید تمرین کنید ممنون میشم آخه ساعت 2 شبه منم هنوز به کارهام نرسیدم . فردا صبح میخوام درباره چگونگی نوشتن تابع و کلاس های حافظه صحیت کنم.

امیدوارم روز خوبی داشته باشید.

موفق باشید.


فایل‌(های) پیوست شده
.rar   Example 1.rar (اندازه: 287 bytes / تعداد دفعات دریافت: 147)
.rar   Example 2.rar (اندازه: 248 bytes / تعداد دفعات دریافت: 175)
.rar   Example 3.rar (اندازه: 385 bytes / تعداد دفعات دریافت: 152)
.rar   Example 4.rar (اندازه: 293 bytes / تعداد دفعات دریافت: 122)
.rar   Example 5.rar (اندازه: 372 bytes / تعداد دفعات دریافت: 162)

Biggrin Use Google instead of asking stupid questions Biggrin

[/url]
CMC Automation System


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

(آخرین ویرایش در این ارسال: ۲۹-مرداد-۱۳۸۸, ۰۲:۱۳:۱۳، توسط dreamvbfox.)
۲۹-مرداد-۱۳۸۸, ۰۱:۴۹:۵۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : lord_viper, yazddownload, محمد حسینی, aminsotudeh, vahid2010, ajlajlajl, sita_rampail, t3r!p3000, ali_asrami, aanaahitaa, m_pixel, emankhan, hosseinonline
dreamvbfox آفلاین
در حال پیشرفت
***

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

تشکرها : 236
( 1251 تشکر در 361 ارسال )
ارسال: #19
RE: آموزش زبان سی | C Learning
طبق قولی که دادم امروز درباره توابع صحبت میکنم .

خوب . دوستان برنامه ای که تاحالا نوشتیم تنها شامل یه تابع اصلی به نام main بود. اما وقتی طول برنامه مون بزرگ بشه و دارای قسمت های مختلف شد باید برای هر قسمت جداگانه کدنویسی کنیم و به هر یک از این بخشها تابع گویند. در واقع تابع برنامه ای است برای حل بخشی از مساله نوشته می شود.
تعداد زیادی از توابع که در اغلب برنامه ها مورد استفاده قرار می گیره و کاربرد زیادی دارند از قبل نوشته شده و به همراه کامپایلر C ارائه می گردد. مثل تابع clrscr یا sin یا cos و ... که به این جور توابع ، توابع کتابخانه ای گویند . اما من اینجا میخوام چگونگی نوشتن تابع رو یادتون بدم. تا بتونید به برنامه تون انعطاف بیشتری بدید.

نوشتن تابع:
اگر ما بدونیم کار تابع ما چیه هدفش چیه ؟ از ورودی چی میگیره و به خروجی چی ارسال میکنه نوشتن اون هم راحت تر میشه ×
هرتابع 2تا جنبه داره یکی جنبه ی تعریف و دیگری فراخوانی هست. نام یه تابع از قوانین یک متغیر پیروی میکنه.
تابع همانطوری که گفتیم 2 تا بخش داره یکی الگوی تابع یا همون تعریف و یکی هم عنوان اون که تو فراخوانی موثر هست حالا به تصویر زیر دقت کنید بیشتر توضیح میدم.
[تصویر:  94y14hn1o45my4h3og3.jpg]
توضیح : در قسمت 1 اول تابعمون رو همانند یک متغیر تعریف میکنیم و پارامتر هایی که میگیره رو هم مینویسیم. در قسمت 2 تابع رو با مقادیر a و b که به ترتیب به جای x و y قرار میگیره صدا میزنم . در قسمت 3 هم بدنه ی تابع رو مینویسیم.
حالا قبل از این که مثال بزنم چندتا نکته میگم که بهش نیاز دارید :
1- اگر تابع دارای آرگومان نباشد مثلا sample() بود (شبیه sub تو ویبی) باید به جای آرگومان آنها void بنویسیم :
کد:
void sample(void)
2- در صورتی که عنوان تابع یا قسمت 3 رو قبل از تابع main بنویسیم نیازی به نوشتن الگوی تابع یا بخش 1 نداریم.
3- برای اینکه تابع ما مقداری رو برگشت بده (function در ویبی) باید از دستور return که قبلا توضیح دادم استفاده کنید.
4- در صورتی که تابع با استفاده از void تعریف بشه دیگه نمی توته مقداری رو برگردونه.

توابعی که هیج مقداری رو بر نمیگردونند
Example 1:
برنامه ای بنویسید (شما که نمی نویسید پس برنامه ای بنویسم Biggrin ) که ساعت ، دقیقه و ثانیه رو بگیره و زمان رو بر حسب ثانیه چاپ کنه.(سورس ضمیمه شد)
یه نگاه به سوال کرده باشید میفهمید باید یه تابع بنویسید که هیچ مقداری رو برگشت نمیده فقط فقط چاپ میکنه !
توضیحات :
همان طور که گفتیم تابع چیزی رو برنمی گردونه پس به صورت void تعریف میکنیم و چون تابع ما آرگومانی نداره بجاش void میزایم.
کد:
long int kol;
به دلیل اینکه تعداد ثانیه ممکنه زیاد باشه پس long int تعریف میکنیم (اعداد صحیح بزرگ)
کد:
kol =(long int) (s+m*60+h*3600);
پس از محاسبه ، تعداد ثانیه رو به long int تبدیل میکنیم و داخل متغیر kol قرار میدیم. (اینا رو قبلا گفتم ) بعد هم نتیجه چاپ میشه!

Example 2:
برنامه ای بنویسید که 3 مقدار صحیح رو از ورودی بگیره بعد بزرگترین مقدار رو چاپ کنه. (سورس ضمیمه شد)
Example 2:
کد:
void findmax(int x, int y, int z){

int max;

max = (x>y) ?x:y;

max = (max>z) ? max:z;

printf ("Maximum is : %d\n",max);
}
توضیح : نیازی نداره فقط قسمت مقایسه عدد بزرگتر رو بهتون میگم : عملگر ؟ رو که میدونید چیه اگر نمیدونید دوباره از صفر شروع کنید . اگر x بزرگتر بود انتخاب شده در غیر این صورت y منتخب میشود. بعد هم عدد بزرگتر با z مقایسه میشه و در خروجی چاپ میشه همین.
نکته :زمانیکه داخل یه تابع هستید (منظورم بدنه تابع هست) مقادیر آرگومان رو تغییر بدید مشکلی پیش نمیاد و مقدار جدید میگیره اما هنگامی که از تابع بیرون میره دوباره مقدار های اولیه خودشو بدست میاره.

توابعی که یک مقدار رو برمیگردانند.
همانطوری که گفتم نمیشه با void تعریف کرد زیرا تابع باید مقادیری رو برگردونه.
برای برگشت هم باید از return استفاده کرد که این دستور باعث میشه مقداری رو که ما بهش میدیم در نام تابع قرار بده.
با یه مثال بیشتر باهاش آشنا بشید. (سورس ضمیمه شد)
برنامه ای بنویسید که شعاع دایره رو از ورودی بخونه به تابعی ارسال کند و تابع مساحت دایره رو حساب کنه و به برنامه اصلی برگرداند.
Example 3 :
شعاع هم شاید .... :-"
کد:
مساحت دایره = 3.14 * شعاع * شعاع

کد:
res=circle(r);

float circle (float r){

float s;

s= r*r*3.14;

return s;
}
توضیح : تابع با متغیر r فراخوانی میشه بعدش مقدار مساحت در متغیر s ذخیره می شود در آخر مقدار متغیر s به عنوان نام تابع برگشت داده میشود و متغیر res با مقدار s مقداردهی میشه.

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

محاسبه قاکتوریل با استفاده از یک تابع
اینم از اون دسته از سورس هاست که باید باید یاد بگیرید . در این جور برنامه ها تابع خودش رو فراخوانی میکنه .
اصلا فاکتوریل چیه ؟(خوب شاید بعضی ها نمیدونن اشکالی نداره که)
کد:
4!=1*2*3*4
یا
4!=3!*4

Example 4:
برنامه ای بنویسید که فاکتوریل یک عدد رو به کمک تابع بازگشتی محاسبه کند (سورس ضمیمه شد)
کد:
unsigned long fact(int f){
if (f != 0)

return (f*fact(f-1));
return 1;
}
اینو دیگه توضیح نمیدم میترسم تنبل بشید Biggrin . یه بار با دقت تریس کنید مطمئن هستم یاد میگیرید.

امروزم روش نوشتن تابع و فراخوانی اونو یاد گرفتیم سعی میکنم از جلسه بعد فشرده تر کار کنیم تا زود این زبان تموم بشه منم برم پی کارم. BiggrinBiggrin شوخی کردم ما مخلص بروبکس iranvig هستیم Biggrin
جلسه ی بعد درباره کلاس های حافظه و متغیر ها توضیح میدم.
اگر نظر خوبی نسبت به آموزش های بنده دارید با تشکر اعلام کنید (بالاخره ما هم باید واسه خودمون تو سایت آبرو جمع کنیم :d)


موفق باشید.


فایل‌(های) پیوست شده
.rar   Example 1.rar (اندازه: 357 bytes / تعداد دفعات دریافت: 144)
.rar   Example 2.rar (اندازه: 387 bytes / تعداد دفعات دریافت: 111)
.rar   Example 3.rar (اندازه: 318 bytes / تعداد دفعات دریافت: 84)
.rar   Example 4.rar (اندازه: 338 bytes / تعداد دفعات دریافت: 111)

Biggrin Use Google instead of asking stupid questions Biggrin

[/url]
CMC Automation System


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

(آخرین ویرایش در این ارسال: ۲۹-مرداد-۱۳۸۸, ۱۵:۲۵:۰۸، توسط dreamvbfox.)
۲۹-مرداد-۱۳۸۸, ۱۵:۰۷:۵۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : yazddownload, محمد حسینی, lord_viper, aminsotudeh, vahid2010, sita_rampail, t3r!p3000, ali_asrami, emankhan, hosseinonline, mbm60, CONTOROLER
dreamvbfox آفلاین
در حال پیشرفت
***

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

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

کلاس های حافظه و حوزه متغیر :
نترسید زیاد نیست با یه بار خوندن زود می فهمید. منم بدون مقدمه برم سر اصل مطلب.
4 نوع کلاس حافظه در زبان c وجود داره. من اول اونا رو میگم بعد یکی یکی توضیح میدم:
1- کلاس حافظه اتوماتیک (auto)
2- کلاس حافظه ثبات (register)
3- کلاس حافظه استاتیک (static)
4- کلاس حافظه خارجی (extern)
توضیح : کم و بیش همگی با موارد بالا آشنا هستید در زبان c کلاس های حافظه دارای 2 ویژگی حوزه متغیر و طول عمر متغیر (منظورم مدت زمانیه که متغیر داده رو در خودش نگه میداره.) هستند. برای تعیین نوع کلاس هم به صورت زیر عمل کنید :
[تصویر:  pkpdz75mbh7pde7d6bro.jpg]
مثال :
کد:
static int x;
register char y;

کلاس حافظه اتوماتیک:
هر متغیری که ما تعریف میکنیم به صورت پیش فرض به صورت auto تعریف میشه. (بیشتر در داخل تابع تعریف میشن که بهش متغیر محلی میگن) و هنگام ورود به تابع ایجاد و هنگام خروج به صورت اتوماتیک از بین میره . همانطوری که گفتیم 2 ویژگی دارند : یکی درباره طول عمر که گفتم و دیگری هم حوزه ی متغیر که بازم گفتم محلی هست .

کلاس حافظه Register
من از این کلاس خیلی خوشم میاد و به نظر من این یکی دیگر از قدرت های زبان c میباشد.
این نوع متغیر ها به طور اتوماتیک در ثبات پردازنده (cpu) ذخیره میشن . این کار باعث میشه سرعت دسترسی به داده ها بیشتر بشه اما تعداد زیادی از این نوع متغیر نمیشه تعریف نمود و بستگی به تعداد ثبات های cpu داره که برنامه روی اون اجرا میشه . به هر حال واسه اینکه سرعت محاسبات بالا بره میتونیم از این روش استفاده کنیم. این نوع کلاس ها فقط واسه متغیر های محلی قابل استفاده هستند و حوزه ی متغیر و طول عمر انها همانند کلاس های اتوماتیک هست.

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

کلاس حافظه خارجی
هر متغیری که به صورت عمومی (خارج از توابع) تعریف میکنیم جز کلاس حافظه خارجی قرار میگیرند و هنگام اجرای برنامه ایجاد و تا پایان اجرای برنامه تو حافظه باقی می مونن (طول عمر) و در سرتاسر برنامه قابل استفاده هستند.
توضیح بیشتر : وقتی برنامه ما شامل چند تا فایل بشه از این متغیر باید زیاد استفاده کنیم. مثلا تو فایل A متغیر های x و y رو از نوع int تعریف کردیم . همانطوری که میدونید این دو متغیر فقط در فایل A مورد استفاده قرار میگیره ! پس اگر خواسته باشیم تو بقیه ی فایل ها از مقادیر این متغیر استفاده کنیم باید چی کار کنیم ؟ معلومه تو فایل های دیگه اونو به صورت خارجی تعریف کنید:
کد:
extern  int x,y;
وقتی extern رو بنویسیم کامپایلر میفهمه نباید متغیر و حافظه ی جدیدی بسازه بلکه متوجه میشه تو یه فایل دیگه متغیری به این نام ها تعریف شده که باید بهشون وصل بشه و ازشون استفاده کنه.

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


امیدوارم که متوجه شده باشید.
در جلسه بعدی درباره چگونگی ساخت آرایه های چندبعدی ، مرتب سازی آرایه ها، جستجو در آرایه ها و در بخش کار با رشته ها، کپی کردن ، الحاق ، جابه جایی و ... بحث خواهیم کرد.
راستی به نظر من اگر آموزش ویژوال بیسیک میدادم کاربران خونه زندگیشون رو ول میکردن میومدن میخوندن .چقدر کاربران اینجا بی حال هستنBiggrinBiggrin بابا خودی نشون بدین ، فعالیت خودتون رو بیشتر کنید ... از ما گفتن بود .

به امید دیدار . موفق باشید.

Biggrin Use Google instead of asking stupid questions Biggrin

[/url]
CMC Automation System


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

۲۹-مرداد-۱۳۸۸, ۲۳:۳۵:۴۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : yazddownload, hamed_Arfaee, محمد حسینی, lord_viper, aminsotudeh, vahid2010, ajlajlajl, sita_rampail, t3r!p3000, eghbaldar, ali_asrami, emankhan, hosseinonline, CONTOROLER
dreamvbfox آفلاین
در حال پیشرفت
***

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

تشکرها : 236
( 1251 تشکر در 361 ارسال )
ارسال: #21
RE: آموزش زبان سی | C Learning
سلام.
امیدوارم حالتون خوبهWink
تو این پست درباره آرایه های یک بعدی صحبت میکنیم. 006

تا حالا اگر می خواستیم 10 تا عدد رو نگه داریم باید 10 تا متغیر تعریف میکردیم اما حالا میتونید یه متغیر تعریف کنید که 10 تا خونه داشته باشه ... (اینا رو که همه بلد هستید بزارید یکم برم جلو ترWhistle)

روش تعریف آرایه های بک بعدی :
کد:
NoeArraya NameArraya [تعداد خونه های آرایه];
int x [10];
به عددهایی که تو [] قرار میگیره میگن اندیس . و در زبان c اندیس ها از صفر شروع میشوند. تو مثال بالا 10 تا خونه تعریف کردیم برای مقدار دهی اولین خونه از اندیس صفر و آخرین خونه از 9 استفاده میکنیم (یعنی 0 تا 9 شماره خونه ها هستند) :
کد:
x[0]=10 ; // اولین خونه
x[9]=20 ; // آخرین خونه

محاسبه میزان حافظه آرایه : تعداد خونه ها * طول نوع آرایه
10*2 = 20 : طبق مثال بالا گفتما .2 بایت هم طول متغیر از نوع interget

آرایه های یک بعدی به عنوان آرگومان تابع :
خیلی ساده خواسته باشم بگم یعنی وقتی یه تابعی رو صدا میزنیم آرایه ها به عنوان ورودی تابع قرار گیرند . وقتی تابع رو فراخوانی میکنیم آرایه ها رو میتونیم با طول مشخص یا نا مشخص وارد کنید . به عکس زیر توجه کنید :
[تصویر:  km2r11kfinhglxxxkxex.jpg]
توضیح :
وقتی الگوی تابع رو مینویسید تعداد خونه های آرایه رو وارد نکنید و بزارید خالی باشه. و اگر هنگام نوشتن عنوان تابع (بدنه تابع) شماره خونه ی اون آرایه رو وارد کنید (طول مشخص) فقط میتونید از اون شماره خونه تو تابع استفاده کنید. مثلا func1 رو نگاه کنید فقط میتونید از داده های این خونه ی 10 استفاده کنید و مثلا خبری از خونه ی 8 نیست. اما اگر هنگام نوشتن عنوان تابع تعداد خانه ها رو خالی بزارید میتونید تو تابع از هر خونه ای که خواستید استفاده کنید.
* هنگام فراخوانی تابع فقط نام آرایه رو وارد کنید. به فراخوانی 2 تابع در تصویر بالا دقت کنید .

example 1 :
برنامه ای بنویسید که نمره ی 5 دانشجو رو بگیره و بیشترین معدل و محل خونه ی اونو چاپ کنه (سورس ضمیمه شد)

Example 2:
برنامه ای بنویسید که 10 عدد صحیح رو از ورودی دریافت کنه و اعداد منفی و مثبت رو جدا از هم چاپ کنه و تعداد این اعداد مثبت و منفی رو هم مشخص کنه (سورس ضمیمه شد)

Example 3:
برنامه ای بنویسید که 5 عدد صحیح رو از ورودی بگیرد و آنها رو به ترتیب معکوس کرده و در آرایه ای قرار دهد. وحاصل رو چاپ کنه ( مثلا اعداد 1 و 2 و 3 رو وارد کنید خروحی بشه 3 و 2 1 010 )

فعلا همینا رو یاد بگیرید تو جلسه ی بعدی درباره جستجو و مرتب سازی آرایه ها صحیت میکنم 008
موفق باشید 028


فایل‌(های) پیوست شده
.rar   Example 3.rar (اندازه: 349 bytes / تعداد دفعات دریافت: 159)
.rar   Example 1.rar (اندازه: 387 bytes / تعداد دفعات دریافت: 108)
.rar   Example 2.rar (اندازه: 393 bytes / تعداد دفعات دریافت: 111)

Biggrin Use Google instead of asking stupid questions Biggrin

[/url]
CMC Automation System


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

(آخرین ویرایش در این ارسال: ۳۰-مرداد-۱۳۸۸, ۱۹:۴۲:۳۷، توسط dreamvbfox.)
۳۰-مرداد-۱۳۸۸, ۱۹:۴۱:۳۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : yazddownload, lord_viper, aminsotudeh, vahid2010, sita_rampail, t3r!p3000, ali_asrami, emankhan
dreamvbfox آفلاین
در حال پیشرفت
***

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

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

امیدوارم حال همتون خوب باشه . تو این پست میخوام درباره مرتب سازی و جستجو تو آرایه ها صحبت کنم.

مرتب سازی آرایه ها
اینجا من یه روش ساده که همه هم با اون آشنا هستن رو بهتون میگم. این روش اسمش هست حبابی. خیلی راحتهWink . الان به این چیزایی که من میگم کامل دقت کنید Biggrin . فرض کنید 3 تا خونه داریم شما باید خونه ی اول رو با دوم مقایسه کنید اگر خونه ی اول بزرگتر بود با خونه دوم جابه جاش کنید (صعودی) و اگر خواستید نزولی باشه خونه ی اول باید کوچکتر خونه ی دوم باشه ! تو مرحله بعد باید خونه ی دوم با سوم بررسی بشه! به همین راحتی تا آخر مقایسه میکنه و در صورت نیاز جابه جا میشن .

جستجو در آرایه
2 تا روش داریم یکی ترتیبی یکی هم دودویی. ترتیبی یعنی یه حلقه بزارید از اول شروع کنید تک تک عنصر آرایه (خونه ها رو میگم) با مقداری که دنبالش هستید مقایسه کنید این روش واسه لیست های کوچک و نامرتب موثر هست . کوتاه میگم واسه اینکه زود تمام عنصر ها رو بگرده و نامرتب میگم که اگر مرتب باشه ممکنه عنصر ما بره آخر لیست و برنامه مجبور تا اخرین عنصر لیست جستجو رو ادامه بده در حالی که نا مرتب باشه امکانش هست که زودتر پیدا بشه.

جستجو دودیی
این نوع جستحو واسه لیست های طولانی بهتر جواب میده و باید حتما مرتب باشه. خوب بعد از اینکه لیست رو مرتب کردید وسط لیست رو پیدا کنید . با استفاده از یک دستور شرطی عنصر وسط آرایه رو با مقداری که دنبالش هستید مقایسه کنید 3 تا حالت وجود داره یا کمتره که نیمه ی بالای لیست رو ولش میکنیم یا ممکنه بیشتر باشه که نیمه پایین لیست رو بیخیال میشیم و تو نیمه ی دوم دنبالش می گردیم و ممکنه خود عنصری باشه که ما دنبالش هستیم(کار تمومهRolleyes).


من بهتر از این نمیتونم توضیح بدم.
واسه تمام مواردی که توضیح دادم یه سورس گذاشتم که میتونید ازش استفاده کنید . تو آموزش بعدی درباره آرایه های چند بعدی بحث میکنم.Laugh

موفق باشید.


فایل‌(های) پیوست شده
.rar   Example.rar (اندازه: 718 bytes / تعداد دفعات دریافت: 104)

Biggrin Use Google instead of asking stupid questions Biggrin

[/url]
CMC Automation System


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

۳۱-مرداد-۱۳۸۸, ۱۷:۵۶:۲۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : aminsotudeh, محمد حسینی, lord_viper, yazddownload, vahid2010, sita_rampail, t3r!p3000, ali_asrami, CONTOROLER


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

پرش به انجمن:


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

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