PDA

View Full Version : مبتدی: توضیح در رابطه با شمارنده ها



jaykob
شنبه 24 بهمن 1388, 20:52 عصر
سلام دوستان :

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

خیلی ممنون :قلب:

m_h_2007
یک شنبه 25 بهمن 1388, 00:11 صبح
منظورتان را واضح تر بگویید تا برایتان توضیح بدهم

slashslash2009
یک شنبه 25 بهمن 1388, 08:33 صبح
فرض کنید شما دائم یک کلید را فشار داده تا یه کاریو انجام بده خوب وسه این که بفهمید چند بار این دکمه فشار داده شده باید از یک متغیر عدد integer استفاده کنید که با هر بار فشار دادن با عدد 1 جمع بشه(یک واحد بهش اضافه بشه)
یا شما در یک جا مجبورید مثلا 100تا رکوردو با یک چیزی مقایسه کنید ببینید کدومش برابر با اونه در اینجا هم همون کار بالا را انجام میدیم اگر شرط برقرار بود با عدد 1 جمع بشه

jaykob
یک شنبه 25 بهمن 1388, 10:31 صبح
فرض کنید شما دائم یک کلید را فشار داده تا یه کاریو انجام بده خوب وسه این که بفهمید چند بار این دکمه فشار داده شده باید از یک متغیر عدد integer استفاده کنید که با هر بار فشار دادن با عدد 1 جمع بشه(یک واحد بهش اضافه بشه)
یا شما در یک جا مجبورید مثلا 100تا رکوردو با یک چیزی مقایسه کنید ببینید کدومش برابر با اونه در اینجا هم همون کار بالا را انجام میدیم اگر شرط برقرار بود با عدد 1 جمع بشه


ممنون اما اگه بشه توی یک مثال بیاید یک شمارنده تعریف کنید (private enum ) و توی یک برنامه ازش استفاده بشه که من متوجه بشم ساده ترین مثال ممکن باشه . کار با دیتابیس هم نباشه هنوز به اون جا ها نرسیدم :لبخند: یک مثال توی کتاب بود که در رابطه با تاریخ ها بود که کمی نامفهوم بود ...
بعد توی این مثال توضیح بدید و که نحوه استفاده شدن و مزایاش چیه و کدوم قسمت برنامه رو راحت تر می کنه ...


خیلی ممنون :قلب:

slashslash2009
یک شنبه 25 بهمن 1388, 11:08 صبح
اینم دوتا مثال خوب :

public class EnumTest
{
enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat };

static void Main()
{
int x = (int)Days.Sun;
int y = (int)Days.Fri;
Console.WriteLine("Sun = {0}", x);
Console.WriteLine("Fri = {0}", y);
}
}

//مثال 2
public class EnumTest2
{
enum Range : long { Max = 2147483648L, Min = 255L };
static void Main()
{
long x = (long)Range.Max;
long y = (long)Range.Min;
Console.WriteLine("Max = {0}", x);
Console.WriteLine("Min = {0}", y);
}
}

slashslash2009
یک شنبه 25 بهمن 1388, 11:22 صبح
اینم برنامش در مسیج باکس نمایش میده

jaykob
یک شنبه 25 بهمن 1388, 12:53 عصر
خیلی ممنون از شما ...

یک برنامه هم خودم نوشتم یک نگاه بکنید ببینید که نونستم مفهوم رو توی این برنامه متوجه بشم با نه ...



namespace enum_demo
{
public partial class frmenum : Form
{
private enum number
{
One,
Two,
Three,
Four,
Five,
Six,
Seven,
Eight,
Nine,
Ten
};
private number numbring;
public frmenum()
{
InitializeComponent();
}

private void frmenum_Load(object sender, EventArgs e)
{

}

private void btngo_Click(object sender, EventArgs e)
{
int value;

value = Int32.Parse(txtreverse.Text);

if (value == 1)
numbring = number.One;
else if (value ==2)
numbring = number.Two;
else if (value == 3)
numbring = number.Three;
else if (value == 4)
numbring = number.Four;
else if (value == 5)
numbring = number.Five;
else if (value == 6)
numbring = number.Six;
else if (value == 7)
numbring = number.Seven;
else if (value == 8)
numbring = number.Eight;
else if (value == 9)
numbring = number.Nine;
else if (value == 10)
numbring = number.Ten;
else
lblreverse.Text = "Not Found !";
lblreverse.Text = "Number " + numbring.ToString()+" .";
}
}
}


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

slashslash2009
یک شنبه 25 بهمن 1388, 13:33 عصر
یک چیزی تو همین مایه ها باید باشه ولی راسیتش من تا به امروز با هاش کار نکرده بودم نمیدونم این مدل متغیر به چه دردتون میخوره بیشتر میاد شماره اندیسش رو میده .
بهتره بگید میخواید چیکار کنید اگر میخواید تمرین کنید بهتره وقتتونو رو چیزای مهمتری بزارید مثل آرایه ها چون واقعا مفیدا . و کار با کلاسها و متدها یا همون تابع ها.
در ضمن اگر میخوای متغیری داشته باشی که در کل فرمت در هر شیئ بتونی بهش دسترسی داشته فقط کافیه اونو قبل از form_load تعریف کنی مثلا همون متغیر value خودتون رو اگر قبل از فرم لود بزارید میشه یه متغیر سراسری

gwbasic
یک شنبه 25 بهمن 1388, 18:29 عصر
ترجمه بهتر برای enum فکر می کنم فهرست بگیم بهتر باشه چون شمارنده یه مفهوم دیگه ای داره
کاربرد اون جز برای خوانایی برنامه چیزه دیگه ای نیست. فرض کنید شما کدی می خواهید بنویسید که برای کار با چراغ راهنمایی باشه . اگر بخواهید برای هرکدام از حالتهای سبز ،قرمز ، زرد و همچنین چشمک زن بودن آنها کدی بنویسید چه می کنید؟
فرض کنید بخواهید برای هر کدام از آنها یه عددی در نظر بگیرید مثلا اگر 0 بود یعنی سبز 1 بود قرمز و ... و از دستور if استفاده کنید که اگر چراغ 0 بود یعنی سبزه و کد مورد نظر را می نویسید
اما بعدا که به این کد نگاه می کنید شاید متوجه نشوید 0 چه بوده 1 چه بوده اینجاست که بهتره یک enum تعریف کنید و برای هرکدام از حالتها یک رشته به جای رنگها استفاده کنید مثلا سبز Green خوب می بینید که این هم یک قرار داده که هر کدام از حالتهای چراغ راهنمایی را به یک عضو از enum مشخص می کنید ولی قطعا خوانا تر خواهد بود فقط همین

sonixax
دوشنبه 06 دی 1389, 07:46 صبح
من هم اين داستان رو درست متوجه نشدم
مثلا توي كتاب اقاي هاشميان نوشته متغير از نوع عدد صحيح هست بعدش توش رشته هست و رشته نشون ميده !
يك مقاله اي چيزي در اين مورد سراغ داريد ؟

kamran00f
دوشنبه 06 دی 1389, 19:58 عصر
راستش منم تو کتاب هاشمیان که قبلا ها خومدم هیچی هیچی ازش نفهمیدم. ولی تو کتاب wrox beginning c sharp خیلی ساده و واضح و کامل توضیح داده. من مفهومشو کامل اونجا متوجه شدم. در کل کتاب خیلی خوبیه برای تازه واردا (مثل خودم)