مشخصات مقاله
-
3346
-
0.0
-
8256
-
0
-
0
آموزش گونه های داده بزرگ (large data types) در سی شارپ
extended values - قسمت اول
Double-word (گروه دوکلمه) عبارتند از گروهی متشکل از دو واژه ی متوالی. به عبارت دیگر، گروه دوکلمه ترکیبی از 4 byte یا 32 bit می باشد. bit ها که از راست به چپ شمرده می شوند، از 0 آغاز شده و به 31 ختم می شوند. راست ترین bit، bit 0، کم اهمیت ترین bit یا LOBIT تلقی می گردد و چپ ترین bit، bit 31، مهم ترین bit یا HIBIT خوانده می شود. بقیه ی bit ها، بسته به موقعیتی که در آن قرار گرفته اند تعریف می شوند.
گروه 8 bit اول ( از 0 تا 7)، که byte سمت راست حساب می شود، LOBYTE خوانده می شود. گروه 8 bit آخر ( از 24 تا 31 ) که byte سمت چپ محسوب می شود، HIBYTE اطلاق می گردد. byte های دیگر نیز بسته موقعیتی که در آن قرار گرفته اند، تعریف می شوند. حال، گروه 16 bit ای سمت راست یا همان واژه ی سمت راست، LOWORD خوانده می شود. گروه 16 bit ای سمت چپ، واژه ی سمت چپ، HIWORD گفته می شود.
حداقل عدد دودوئی (minimum binary number) که می توان با یک گروه دوکلمه ای (double-word) نشان داد 0 می باشد. حداقل مقدار اعشاری (minimum decimal value) یک گروه دوکلمه معادل 0 می باشد. برای بدست آوردن بیشینه ی مقدار اعشاری (maximum decimal value) یک واژه، می توان از فرمول پایه ی 2 (base 2 formula) استفاده کرد و به هر bit، مقدار (value) 1 داد.
1*231 + 1*230 + 1*229 + 1*228 + 1*227 + 1*226 + 1*225 + 1*224 + 1*223 + 1*222 + 1*221 + 1*220 + 1*219 + 1*218 + 1*217 + 1*216 + 1*215 + 1*214 + 1*213 + 1*212 + 1*211 + 1*210 + 1*29 + 1*28 + 1*27 + 1*26 + 1*25 + 1*24 + 1*23 + 1*22 + 1*21 + 1*20 = 2,147,483,648 + 1,073,741,824 + 536,870,912 + 268,435,456 + 134,217,728 + 67,108,864 + 33,554,432 + 16,777,216 + 8,388,608 + 4,194,304 + 2,097,152 + 1,048,576 + 524,288 + 262,144 + 131,072 + 65,536 + 32,768 + 16,384 + 8,192 + 4,096 + 2,048 + 1,024 + 512 + 256 + 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 4,286,578,708
کم ترین مقدار مبنای 16 hexadecimal یا شانزده شانزدهی که می توان در یک گروه دوکلمه ای جای داد (ذخیره کرد) 0x00000000000000000000000000000000 می باشد که در آخر برابر است با 0x0. به منظور به دست آوردن حداکثر (بیشینه) عدد مبنای 16 که می توان با یک واژه نشان داد، باید هر گروه 4 bit ای را با (یک) f یا F جایگزین کرد.
به منظور تعریف متغییری که قادر است مقادیر بزرگ را در خود جای دهد، می توان از کلیدواژه ی var استفاده کرده و متغییر را با value دلخواه مقداردهی اولیه کرد.
class Exercise
{
static void Main()
{
var population = 72394475;
System.Console.Write("Country Population: ");
System.Console.WriteLine(population);
}
}
نتیجه ی زیر به دست می آید.
Country Population: 72394475 Press any key to continue . . .
به کار بردن integer های بدون علامت
- ابتدا، برنامه ی Microsoft Visual Studio را اجرا کنید.
- برای ایجاد برنامه ی کاربردی جدید (application)، به main menu مراجعه کرده و روی گزینه ی File -> New Project... کلیک کنید.
- گزینه ی Empty Project را از لیست میانی انتخاب کنید.
- اسم مورد نظر را به gdcs3 تغییر داده، سپس ok را کلیک کنید.
- به منظور ایجاد فایل برای کد مورد نظر، فهرست گزینه ی اصلی (main menu) را باز کرده و روی Project -> Add New Item... کلیک کنید.
- در لیست میانی گزینه ای است به نام Code File، آن را کلیک کنید.
- اسم را به CleaningOrder تغییر دهید.
- گزینه ی Add را انتخاب کنید.
- در داکیومنت خالی که در اختیار شما قرار می گیرد، دستورات زیر را تایپ کنید.
class Order
{
static void Main()
{
byte? shirts = null;
byte? pants = null;
ushort? otherItems = null;
shirts = 4;
pants = 0;
otherItems = 3;
System.Console.WriteLine("-/- Georgetown Cleaning Services -/-");
System.Console.WriteLine("========================");
System.Console.WriteLine("------------------------");
System.Console.WriteLine("Item Type Qty");
System.Console.WriteLine("------------------------");
System.Console.Write("Shirts ");
System.Console.WriteLine(shirts);
System.Console.Write("Pants ");
System.Console.WriteLine(pants);
System.Console.Write("Other Items ");
System.Console.WriteLine(otherItems);
System.Console.WriteLine("========================");
System.Console.ReadKey();
}
}
- برنامه را اجرا کرده تا نتایج آن را مشاهده کنید.
- پنجره ی DOS را ببندید.
extended values - قسمت دوم : Signed integers
گنجایش ذخیره ی اطلاعات یک گروه دوکمله ای، معادل با دو برابر حجم داده ای است که می توان در یک واژه ذخیره کرد. به عبارت دیگر، ظرفیت ذخیره سازی آن برابر است با 32 bit یا 4 byte و یا 4،294،967،295. بنابراین، از گروه دوکلمه ای برای ذخیره ی اعداد بزرگی استفاده می شود که در یک واژه جای نمی گیرد.
برای به کار بردن متغیری که قادر است اعداد بسیار بزرگ را در خود جای دهد، جدا از کلیدواژه ی var، می توان آن را با کلیدواژه ی int معرفی کرد. متغیری که به عنوان int معرفی می گردد، قادر است مقادیری که از 2،147،483،648 تا 2،147،484،647 متغیر است، مثبت یا منفی، را در خود ذخیره کند ( که همگی در bit 32 جای می گیرد). به مثال های زیر توجه کنید.
class Exercise
{
static void Main()
{
int coordX;
int coordY;
coordX = 12;
coordY = -8;
System.Console.Write("Cartesian Coordinate System: ");
System.Console.Write("P(");
System.Console.Write(coordX);
System.Console.Write("، ");
System.Console.Write(coordY);
System.Console.WriteLine(")\n");
}
}
پس از اجرا، نتیجه ی زیر به دست می آید.
Cartesian Coordinate System: P(12، -8)زمانی که متغیر integer ای را با کلیدواژه ی var تعریف کرده، سپس آن را با مقداری کم تر از 2،147،484،647 مقداردهی اولیه می کنید، compiler خودکار تصمیم می گیرد که حافظه ی مورد نیاز برای ذخیره ی متغیر مزبور 32 bit می باشد.
هنگام مقداردهی اولیه ی متغیر انتگرال (integral variable)، به جای عدد اعشاری (decimal number)، می توان از مقدار مبنای 16 (hexadecimal value) استفاده کرد (که معادل دهدهی (decimal) آن کم تر از 2،147،484،647 است). نمونه ی آن را در زیر مشاهده می کنید.
class Exercise
{
static void Main()
{
var number = 0xF0488EA;
System.Console.Write("Number: ");
System.Console.WriteLine(number);
}
}
محصول زیر به دست می آید.
Number: 251955434 Press any key to continue...
Integer های بدون علامت
چنانچه متغیری تنها دربردارنده ی اعداد طبیعی مثبت باشد، می توان برای تعریف آن از کلیدواژه ی uint استفاده کرد (این کلیدواژه نشانگر intger بدون علامت می باشد). از کلیدواژه ی uint به منظور شناسایی integer مثبت 32 bit ای استفاده می شود که مقدار آن از 0 تا 4،294،967،295 متغیر است. نمونه های آن را در زیر مشاهده می کنید.
class Exercise
{
static void Main()
{
uint dayOfBirth;
uint monthOfBirth;
uint yearOfBirth;
dayOfBirth = 8;
monthOfBirth = 11;
yearOfBirth = 1996;
System.Console.WriteLine("Red Oak High School");
System.Console.Write("Student Date of Birth: ");
System.Console.Write(monthOfBirth);
System.Console.Write("/");
System.Console.Write(dayOfBirth);
System.Console.Write("/");
System.Console.Write(yearOfBirth);
}
}
نتیجه ی زیر حاصل می گردد.
Red Oak High School Student Date of Birth: 11/8/1996
به کابردن integer های بدون علامت
- به منظور استفاده از متغیرهای بدون علامت، فایل را به این ترتیب تغییر دهید.
class Order
{
static void Main()
{
byte? shirts = null;
byte? pants = null;
ushort? otherItems = null;
uint? orderDay = null;
uint? orderMonth = null;
uint? orderYear = null;
shirts = 4;
pants = 0;
otherItems = 3;
orderDay = 15;
orderMonth = 7;
orderYear = 2002;
System.Console.WriteLine("-/- Georgetown Cleaning Services -/-");
System.Console.WriteLine("========================");
System.Console.Write("Order Date: ");
System.Console.Write(orderMonth);
System.Console.Write('/');
System.Console.Write(orderDay);
System.Console.Write('/');
System.Console.WriteLine(orderYear);
System.Console.WriteLine("------------------------");
System.Console.WriteLine("Item Type Qty");
System.Console.WriteLine("------------------------");
System.Console.Write("Shirts ");
System.Console.WriteLine(shirts);
System.Console.Write("Pants ");
System.Console.WriteLine(pants);
System.Console.Write("Other Items ");
System.Console.WriteLine(otherItems);
System.Console.WriteLine("========================");
System.Console.ReadKey();
}
}
- برنامه را اجرا کنید. نتیجه ی زیر را به دست می دهد.
-/- Georgetown Cleaning Services -/- ======================== Order Date: 7/15/2002 ------------------------ Item Type Qty ------------------------ Shirts 4 Pants 0 Other Items 3 ========================
- پنجره ی DOS را ببندید.
extended values قسمت سوم : چهارکلمه ای (Quad – word)
برای ذخیره سازی ارقام بزرگی که در گروه دوکلمه ای جا نمی شوند، می توان از ترکیب 64 bit ای استفاده کرد. از این ترکیب با عنوان گروه چهار کلمه ای (quad-core)، نیز یاد می شود. گروه چهار کلمه ای آن قدر بزرگ است که ارقامی که در محدوده ی -9، 223، 372، 036، 854، 775،808 تا 9، 223، 372، 036، 854، 775، 807 قرار می گیرد را می تواند در خود ذخیره کند.
چنانچه، متغیر integer ای را به وسیله ی کلیدواژه ی var تعریف کنید و آن را با value ای که از 2، 147، 484، 647 تا 9، 223، 372،036، 854، 775، 807 متغیر است مقداردهی اولیه کنید، compiler آن را در مقدار حافظه ی bit64 ذخیره می کند.
Long integers
برای تعریف متغیری که گنجایش نگه داری ارقام بسیار بزرگ را داشته باشد ( و تا 64 bit حافظه نیاز داشته باشد)، باید از کلید واژه های long و var استفاده کرد.
همان طور که پیش تر نیز گفته شد، چنانچه متغیری را با value ای کم تر از 2، 147، 484، 647 مقداردهی اولیه کنید، compiler تنها 32 bit حافظه به آن اختصاص می دهد. حال، چنانچه variable موردنظر را با value ای متغیر از 2، 147، 484، 647 تا 9، 223، 372، 036، 854، 775، 807 مقدار دهی اولیه کنید، compiler برای آن 64 bit حافظه کنار می گذارد. چنانچه مقدار مورد نظر از 9، 223، 372، 036، 854، 775، 807 بزرگ تر بود، compiler پیغام خطا صادر می کند.
به عبارت دیگر، باید مقدارهایی که به متغیر های انتگرال (integral variable) اختصاص می دهید را به 64 bit محدود کنید. به مثال زیر توجه کنید.
class Exercise
{
static void Main()
{
var countryArea = 5638648;
System.Console.Write("Country Area: ");
System.Console.Write(countryArea);
System.Console.Write("km2\n");
}
}
نتیجه ی زیر به دست می آید.
Country Area: 5638648km2 Press any key to continue...می توان متغیر long را با value مبنای 16 hexadecimalمقدار دهی اولیه کرد. نوع داده ی long، همچنین میزان حافظه یا فضای دردسترس را نشان می دهد، ولی این امر بدین معنا نیست که باید حتماً از تمام فضا استفاده کرد. برای مثال، می توان از کلیدواژه ی long برای تعریف متغیری استفاده کرد در رینج عددی یکسان با نوع داده های short، int یا uint قرار دارد. پس اگر متغیری را به عنوان long معرفی کرده ولی از آن برای اعداد کوچکی که به 64 bit نیاز ندارند استفاده کنید، compiler خود میزان حافظه ی لازم برای ذخیره ی مقدارهای متغیر را محاسبه کرده وبه آن اختصاص می دهد. سرانجام، آن مقدار حافظه ای که در دسترس قرارمی گیرد به اندازه ی 64 bit نخواهد بود. اما چنانچه اصرار دارید، compiler حتماً همان 64 bit را اختصاص دهد (رزرو کند)، حین تخصیص مقدار به متغیر، پسوند L را به آن اضافه کنید. به مثال زیر توجه کنید.
class Exercise
{
static void Main()
{
long countryArea;
countryArea = 5638648L;
System.Console.Write("Country Area: ");
System.Console.Write(countryArea);
System.Console.Write("km2\n");
}
}
پس به خاطر داشته باشید که نوع داده های short، int، uint یا ushort همگی در یک متغیر long جای می گیرند.
Unsigned long integers
می توان برای ذخیره سازی integer های مثبت و منفی از ترکیب 64 bit ای استفاده کرد. در برخی موارد، برای ذخیره سازی اعدادی که فقط مثبت هستند ولی بزرگ، به متغیر نیاز پیدا می کنید. به منظور معرفی چنین متغیری، می توان از نوع داده ی ulong کمک گرفت. متغیری که به عنوان ulong تعریف می شود، می تواند اعدادی را که از 0 تا 18، 446، 744، 073، 709، 551، 615 متغیر است را در 64 bit جای دهد.
extended values - قسمت چهارم
عدد حقیقی، عددی است که یک بخش اعشاری (decimal part) را نشان می دهد. یک عدد می تواند به وسیله ی یک علامت به دو بخش تقسیم شده باشد، که از آن علامت با نام علامت اعشار (decimal separator/symbol) یاد می شود. البته، این علامت از کشوری به کشور دیگر یا زبانی به زبان دیگر متفاوت است. برای مثال، در زبان انگلیسی آمریکایی این علامت به صورت نقطه (.) نمایش داده می شود.
در هر دو طرف این علامت اعداد مقدار یک رقم را مشخص می کنند. اعدادی که در سمت راست این علامت قرار می گیرند، در واقع میزان دقت رقم مورد نظر را نشان می دهند.
اعداد ممیز شناور (floating-point numbers)
Integer هایی که تاکنون با آن ها برخورد داشتیم، مقدارهای اعشاری (decimal) را نشان نمی دادند. C# برای این منظور، مقدارهای شناور (floating values) را برای برنامه نویس فراهم می کند. به منظور تعریف اصلی ترین مقدار شناور، از کلیدواژه ی float استفاده می کنیم. متغیری که با float معرفی می شود، قادر است اعداد حقیقی ای که در رنج ±1.5 xÂÂ10−45 تا ±3.4 xÂÂ1038 قرار می گیرند را با 7 رقم اعشار در 32 bit ذخیره کند. مثال آن را در زیر مشاهده می کنید.
class Exercise
{
static void Main()
{
float distance;
}
}
اعداد با دو رقم اعشار
چنانچه متغیری بزرگتر از ظرفیت float بود (به اندازه ای بزرگ بود که float قادر به نشان دادن آن نیست) و همچنین به دقت اعشار بیشتری نیاز داشت، باید متغیر نام برده را با کلید واژه های var یا double معرفی کرد. به مثال زیر توجه کنید.
class Exercise
{
static void Main()
{
var number = 62834.9023;
System.Console.Write("Number: ");
System.Console.WriteLine(number);
}
}
نتیجه ی زیر حاصل می گردد.
Number: 62834.9023 Press any key to continue...متغیری که با کلیدواژه ی double معرفی می شود، ارقامی که در رنج ±5.0 x 10−324 تا ±1.7 x ÂÂ10308 قرار می گیرند را با 15 یا 16 رقم اعشار و در 64 bit ذخیره می کند. نوع داده ی double نتایج دقیق تری را نسبت به float یا var به دست می دهد، به خصوص در ارتباط با ذخیره سازی اعداد با رقم اعشار طولانی. اما چنانچه اصرار دارید، حتماً از کلیدواژه ی float برای معرفی متغیر استفاده شود، هنگام تخصیص مقدار به متغیر نام برده، پسوند f یا F را به مقدار اضافه کنید.
class Exercise
{
static void Main()
{
float distance;
distance = 248.38F;
System.Console.Write("Distance = ");
System.Console.Write(distance);
System.Console.WriteLine("km\n");
}
}
محصول زیر حاصل می گردد.
Distance = 248.38kmبه خاطر داشته باشید، هنگامی که متغیری با var معرفی می شود (و مایلید که مقدار یک رقم اعشار داشته باشد)، باید پسوند f یا F را به مقدار بالا اضافه کنید.
مثال:
class Exercise
{
static void Main()
{
var number = 62834.9023F;
System.Console.Write("Number: ");
System.Console.WriteLine(number);
}
}
حال، چنانچه مایلید مقداری (value) با دو رقم اعشار شناخته شود، باید پسوند d یا D را به آن ضمیمه کنید.
مثال:
class Exercise
{
static void Main()
{
var number = 62834.9023D;
System.Console.Write("Number: ");
System.Console.WriteLine(number);
}
}
extended values - قسمت پنجم : به کاربردن متغیری با دو رقم اعشار
- به منظور استفاده از مقداری با دو رقم اعشار، فایل را به صورت زیر تغییر دهید.
class Order
{
static void Main()
{
byte? shirts = null;
byte? pants = null;
ushort? otherItems = null;
uint? orderDay = null;
uint? orderMonth = null;
uint? orderYear = null;
double? mondayDiscount = null;
shirts = 4;
pants = 0;
otherItems = 3;
orderDay = 15;
orderMonth = 7;
orderYear = 2002;
mondayDiscount = 0.25D; // 25%
System.Console.WriteLine("-/- Georgetown Cleaning Services -/-");
System.Console.WriteLine("========================");
System.Console.Write("Order Date: ");
System.Console.Write(orderMonth);
System.Console.Write('/');
System.Console.Write(orderDay);
System.Console.Write('/');
System.Console.WriteLine(orderYear);
System.Console.WriteLine("------------------------");
System.Console.WriteLine("Item Type Qty");
System.Console.WriteLine("------------------------");
System.Console.Write("Shirts ");
System.Console.WriteLine(shirts);
System.Console.Write("Pants ");
System.Console.WriteLine(pants);
System.Console.Write("Other Items ");
System.Console.WriteLine(otherItems);
System.Console.WriteLine("------------------------");
System.Console.Write("Monday Discount: ");
System.Console.Write(mondayDiscount);
System.Console.WriteLine('%');
System.Console.WriteLine("========================");
System.Console.ReadKey();
}
}
- برای مشاهده ی نتیجه، برنامه را اجرا کنید.
-/- Georgetown Cleaning Services -/- ======================== Order Date: 7/15/2002 ------------------------ Item Type Qty ------------------------ Shirts 4 Pants 0 Other Items 3 ------------------------ Monday Discount: 0.25% ========================
- پنجره ی DOS را ببندید.
Decimal
از نوع داده ی decimal، می توان برای تعریف متغیری که قادر است مقادیر بسیار بزرگ (که برای ذخیره به ترکیب 128 bit نیاز دارند) را در خود جای دهد، استفاده کرد. برای این منظور از کلیدواژه ی decimal استفاده می شود. مقادیری که در متغیر دهدهی (decimal) ذخیره می شود، از ±1.0 xÂ10−28 تا ±7.9 xÂ1028 متغیر بوده و دقت اعشاری از 28 تا 29 رقم دارند. به خاطر این دقت بسیار بالا، از نوع داده ی decimal به منظور نشان دادن ارزش پول استفاده می شود.
پس از تعریف متغیر دهدهی (decimal)، می توان آن را با یک عدد طبیعی مقداردهی اولیه کرد. برای این منظور، هنگام مقدار دهی اولیه، پسوند m یا M را به مقدار مذکور ضمیمه کنید.
class Exercise
{
static void Main()
{
decimal hourlySalary;
hourlySalary = 24.25M;
System.Console.Write("Hourly Salary = ");
System.Console.WriteLine(hourlySalary);
System.Console.WriteLine();
}
}
نتیجه ی زیر به دست می آید.
Hourly Salary = 24.5همان طور که پیش تر بیان شد، هنگام تعریف یا مقداردهی اولیه ی متغیر حقیقی، آن پسوندی که به مقدار ضمیمه می کنید به compiler می فهماند چه نوع مقدار و چه میزان حافظه برای ذخیره سازی متغیر نام برده باید تخصیص داده شود. چنانچه مقداری پسوند f یا F را به یدک بکشد، floating point number (عدد ممیز اعشار) با تنها یک رقم اعشار محسوب می شود.
چنانچه مقداری پسوند d یا D را به یدک بکشد، floating point number (عدد ممیز اعشار) با دو رقم اعشار تلقی می گردد.
چنانچه مقداری پسوند m یا M را داشت، یک عدد اعشاری بزرگ (large decimal number) اطلاق می شود
به برنامه زیر توجه کنید.
class Program
{
static void Main()
{
System.Console.Write("560 / 672 = ");
System.Console.WriteLine(560 / 672);
}
}
هدف این برنامه به دست آوردن نتیجه ی تقسیم 560 بر 672 است.
560 / 672 = 0 Press any key to continue...همان طور که مشاهده می کنید، هنگامی که چنین ارقامی به برنامه داده می شوند، compiler آن ها را به عنوان integer می شناسد و نتیجه ی 0 را به دست می دهد. حال، یک روش برای تصحیح این معادله، اضافه کردن جایی برای اعشار به حداقل یکی از ارقام است.
class Program
{
static void Main()
{
System.Console.Write("560 / 672 = ");
System.Console.WriteLine(560.00 / 672.00);
}
}
این بار، compiler مقدار را به عنوان floating-point number (عدد با ممیز شناور) می شناسد، اما کدام ؟ به صورت پیش فرض، compiler نوع داده ی double را به کار می برد. برنامه نتیجه ی زیر را تولید می کند.
560 / 672 = 0.833333333333333 Press any key to continue...
extended values - قسمت ششم
به منظور تعیین نوع مقدار داده شده (float، double یا decimal) پسوند مربوط را به آن اضافه کنید.
class Program
{
static void Main()
{
System.Console.Write("560 / 672 = ");
System.Console.WriteLine(560F / 672f);
}
}
این بار برنامه نتیجه ی زیر را می دهد.
560 / 672 = 0.8333333 Press any key to continue...
به کاربردن مقادیر decimal
به منظور استفاده از متغیرهای decimal، فایل را به صورت زیر اصلاح کنید.
class Order
{
static void Main()
{
byte? shirts = null;
decimal? priceOneShirt = null;
byte? pants = null;
decimal? priceAPairOfPants = null;
ushort? otherItems = null;
decimal? priceOtherItems = null;
uint? orderDay = null;
uint? orderMonth = null;
uint? orderYear = null;
double? mondayDiscount = null;
shirts = 5;
priceOneShirt = 0.95M;
pants = 2;
priceAPairOfPants = 1.95M;
otherItems = 3;
priceOtherItems = 4.55M;
orderDay = 15;
orderMonth = 7;
orderYear = 2002;
mondayDiscount = 0.25D; // 25%
System.Console.WriteLine("-/- Georgetown Cleaning Services -/-");
System.Console.WriteLine("========================");
System.Console.Write("Order Date: ");
System.Console.Write(orderMonth);
System.Console.Write('/');
System.Console.Write(orderDay);
System.Console.Write('/');
System.Console.WriteLine(orderYear);
System.Console.WriteLine("------------------------");
System.Console.WriteLine("Item Type Qty Unit Price");
System.Console.WriteLine("------------------------");
System.Console.Write("Shirts ");
System.Console.Write(shirts);
System.Console.Write(" ");
System.Console.WriteLine(priceOneShirt);
System.Console.Write("Pants ");
System.Console.Write(pants);
System.Console.Write(" ");
System.Console.WriteLine(priceAPairOfPants);
System.Console.Write("Other Items ");
System.Console.Write(otherItems);
System.Console.Write(" ");
System.Console.WriteLine(priceOtherItems);
System.Console.WriteLine("------------------------");
System.Console.Write("Monday Discount: ");
System.Console.Write(mondayDiscount);
System.Console.WriteLine('%');
System.Console.WriteLine("========================");
System.Console.ReadKey();
}
}
برنامه را اجرا کنید. نتیجه ی زیر به دست می آید.
-/- Georgetown Cleaning Services -/- ======================== Order Date: 7/15/2002 ------------------------ Item Type Qty Unit Price ------------------------ Shirts 5 0.95 Pants 2 1.95 Other Items 3 4.55 ------------------------ Monday Discount: 0.25% ========================پنجره ی DOS را ببندید.
extended values - قسمت هفتم : نوع داده های جانبی (Accessory Data Type)
رشته ها (Strings)
رشته یک فضای خالی، یک کاراکتر، یک کلمه یا یک گروه کلمه است که compiler باید آن را " همان طور که هست " در نظر بگیرد، یعنی نباید به این که رشته از چه چیزی تشکیل شده زیاد دقت کند، مگر این که شما مستقیم غیر این را به compiler دستور دهید. به عبارت دقیق تر، می توانید هر چه دلخواهتان است در یک رشته بگنجانید.
اصولاً، مقدار یک رشته با علامت نقل و قول (") آغاز می شود و به آن نیز ختم می شود. نمونه ی یک رشته به این صورت می باشد : "Welcome to the World of C# Programming!".. برای این که یک رشته در صفحه ی کنسول نمایش داده شود، می توان آن را در دستور System.Console.Write() قرار داد.
class Exercise
{
static void Main()
{
System.Console.WriteLine("Welcome to the World of C# Programming!");
}
}
نتیجه ی زیر به دست می آید.
Welcome to the World of C# Programming! Press any key to continue...ممکن است مجبور به استفاده از رشته ای شوید که مقدار آن از پیش برای شما شناس نباشد. در این مورد، باید یک متغیر رشته (string variable) تعریف کرد. برای این منظور، از کلیدواژه های var یا string استفاده می شود و به دنبال آن اسم متغیر مورد نظر قرار داده می شود. می توان یک رشته را با یک فضای خالی، یک کاراکتر، یک نشانه، یک کلمه ، یک گروه کلمه یا حتی null مقداردهی اولیه (initialize) کرد ( به هیچ وجه نباید از string? استفاده کرد). مقدار (value) ای که به رشته داده می شود باید حتماً داخل علامت (" ") قرار گیرد. (مگر این که آن مقدار null) باشد. دو نمونه زیر را مشاهده کنید.
class Exercise
{
static void Main()
{
var team = "Real Madrid";
string country = "Guinée Equatoriale";
System.Console.WriteLine("Welcome to the World of C# Programming!");
System.Console.Write("Team: ");
System.Console.WriteLine(team);
System.Console.Write("Country: ");
System.Console.WriteLine(country);
System.Console.WriteLine();
}
}
نتیجه
Welcome to the World of C# Programming! Team: Real Madrid Country: Guinée Equatoriale Press any key to continue...
به کار بردن رشته ها
- برای استفاده از رشته (string)، فایل را به صورت زیر تغییر دهید.
class Order
{
static void Main()
{
string customerName;
string customerHomePhone;
byte? shirts = null;
decimal? priceOneShirt = null;
byte? pants = null;
decimal? priceAPairOfPants = null;
ushort? otherItems = null;
decimal? priceOtherItems = null;
uint? orderDay = null;
uint? orderMonth = null;
uint? orderYear = null;
double? mondayDiscount = null;
customerName = "Gregory Almas";
customerHomePhone = "(301) 723-4425";
shirts = 5;
priceOneShirt = 0.95M;
pants = 2;
priceAPairOfPants = 1.95M;
otherItems = 3;
priceOtherItems = 4.55M;
orderDay = 15;
orderMonth = 7;
orderYear = 2002;
mondayDiscount = 0.25D; // 25%
System.Console.WriteLine("-/- Georgetown Cleaning Services -/-");
System.Console.WriteLine("========================");
System.Console.Write("Customer: ");
System.Console.WriteLine(customerName);
System.Console.Write("Home Phone: ");
System.Console.WriteLine(customerHomePhone);
System.Console.Write("Order Date: ");
System.Console.Write(orderMonth);
System.Console.Write('/');
System.Console.Write(orderDay);
System.Console.Write('/');
System.Console.WriteLine(orderYear);
System.Console.WriteLine("------------------------");
System.Console.WriteLine("Item Type Qty Unit Price");
System.Console.WriteLine("------------------------");
System.Console.Write("Shirts ");
System.Console.Write(shirts);
System.Console.Write(" ");
System.Console.WriteLine(priceOneShirt);
System.Console.Write("Pants ");
System.Console.Write(pants);
System.Console.Write(" ");
System.Console.WriteLine(priceAPairOfPants);
System.Console.Write("Other Items ");
System.Console.Write(otherItems);
System.Console.Write(" ");
System.Console.WriteLine(priceOtherItems);
System.Console.WriteLine("------------------------");
System.Console.Write("Monday Discount: ");
System.Console.Write(mondayDiscount);
System.Console.WriteLine('%');
System.Console.WriteLine("========================");
System.Console.ReadKey();
}
}
- حال، برنامه را اجرا کنید. نتیجه ی زیر حاصل می گردد.
-/- Georgetown Cleaning Services -/- ======================== Customer: Gregory Almas Home Phone: (301) 723-4425 Order Date: 7/15/2002 ------------------------ Item Type Qty Unit Price ------------------------ Shirts 5 0.95 Pants 2 1.95 Other Items 3 4.55 ------------------------ Monday Discount: 0.25% ========================
- اکنون می توانید پنجره ی DOS را ببندید.
extended values - قسمت هشتم : تاریخ و زمان
تاریخ در واقع واحدی برای سنجش تعداد روزها، ماه ها، سال هایی است که در یک برهه ی مشخصی از زمان سپری شده. زمان نیز واحدی برای شمارش تعداد ثانیه هایی است که از نیمه شب روز معین تا کنون سپری شده.
به منظور تعریف متغیری ویژه ی زمان و تاریخ، باید از نوع داده ی DateTime بهره گرفت.
class Exercise
{
static void Main()
{
DateTime DateHired;
}
}
.NET Framework تاریخ شروع یک دوره را به January 1، 0001، نیمه شب 0:00 AM) یا (12:00:00 تنظیم می کند. چنانچه مقدار مشخصی به آن اختصاص داده نشده باشد، متغیر با 1/1/0001 نیمه شب، مقدار دهی اولیه می شود.
شی ها (Objects)
نوع داده ی Object به منظور تعریف متغیری به کار می رود که نوع آن از پیش تعیین نشده و ممکن است نوع آن هر یک از نوع داده هایی که در این مبحث تعریف کردیم باشد. پس از تعریف متغیر شی (object variable)، می توان مقدار آن را هر گونه که مایلید به کارببردید. برای مثال، می توان متغیر موردنظر را داخل پرانتزهای System.Console.Write() یا System.Console.WriteLine() قرار داد تا در صفحه ی کنسول به نمایش گذاشته شود.
class Exercise
{
static void Main()
{
var EmployeeName = "Ernestine Lamb";
object Address = "10244 Lockwood Drive";
System.Console.Write("Employee Name: ");
System.Console.WriteLine(EmployeeName);
System.Console.Write("Home Address: ");
System.Console.WriteLine(Address);
System.Console.WriteLine();
}
}
نتیجه ی زیر به دست می آید.
Employee Name: Ernestine Lamb Home Address: 10244 Lockwood Drive Press any key to continue...متغیری که با نوع داده ی object تعریف شود، قادر است هر مقداری را در خود جای دهد.
class Program
{
static void Main()
{
object propertyNumber = "293749";
object propertyType = 'S';
object stories = 3;
object bedrooms = 4;
object value = 425880;
System.Console.WriteLine("=//= Altair Realtors =//=");
System.Console.WriteLine("Properties Inventory");
System.Console.Write("Property #: ");
System.Console.WriteLine(propertyNumber);
System.Console.Write("Property Type: ");
System.Console.WriteLine(propertyType);
System.Console.Write("Stories: ");
System.Console.WriteLine(stories);
System.Console.Write("Bedrooms: ");
System.Console.WriteLine(bedrooms);
System.Console.Write("Market Value: ");
System.Console.WriteLine(value);
}
}
نتیجه ی زیر به دست می آید.
=//= Altair Realtors =//= Properties Inventory Property #: 293749 Property Type: S Stories: 3 Bedrooms: 4 Market Value: 425880 Press any key to continue...
ثابت ها (constants)
فرض کنید باید رقمی همچون 39.37 را بارها و بارها استفاده کنید.
مثال:
class Exercise
{
static void Main()
{
double meter، inch;
meter = 12.52D;
inch = Meter * 39.37D;
System.Console.Write(meter);
System.Console.Write("m = ");
System.Console.Write(inch);
System.Console.WriteLine("in\n");
}
}
نمونه ای از برنامه ی در حال اجرا را در زیر مشاهده می کنید.
12.52m = 492.9124in
در صورت استفاده مکرر از این رقم، ممکن است اشتباهی کرده و به جای 39.37 تایپ کنید 3937 یا 3.937. برنامه ی زیر را در نظر بگیرد.
class Exercise
{
static void Main()
{
double meter، inch;
meter = 12.52D;
inch = Meter * 39.37;
System.Console.Write(meter);
System.Console.Write("m = ");
System.Console.Write(inch);
System.Console.WriteLine("in\n");
meter = 12.52D;
Inch = Meter * 3.937;
System.Console.Write(meter);
System.Console.Write("m = ");
System.Console.Write(inch);
System.Console.WriteLine("in\n");
meter = 12.52D;
Inch = Meter * 393.7;
System.Console.Write(meter);
System.Console.Write("m = ");
System.Console.Write(inch);
System.Console.WriteLine("in\n");
}
}
نتیجه ی زیر حاصل می گردد.
12.52m = 492.9124in 12.52m = 49.29124in 12.52m = 4929.124in
به خاطر اشتباهاتی از این دست، همان محاسبه ممکن است نتایجی کاملاً متفاوت تولید کند. به منظور جلوگیری از خطاهایی از این دسته، می توان از یک متغیر (به جای ثابت) برای ذخیره کردن مقدار استفاده کرد. حال، در صورت نیاز می توان به جای خود مقدار، به متغیر آن به راحتی دسترسی پیدا کرد. لازم به ذکر است که رقمی همچون 39.37 یک ثابت (constant) است.
ثابت مقداری است که هیچگاه تغییر نمی کند، مانند : 244، "ASEC Mimosa"، 39.37یا حتی True . می توان یک متغیر (variable) را طوری تعریف کرد و به کاربرد که مقدار آن مانند ثابت (constant) تغییر نکند.
به منظور ایجاد یک ثابت، باید کلیدواژه ی const را در سمت چپ آن تایپ کنید. به خاطر داشته باشید که هنگام تعریف ثابت، باید مقدار مناسب به آن اختصاص داد.
مثال:
const double ConversionFactor = 39.37D;
پس از ایجاد ثابت مورد نظر و مقداردهی اولیه ی مناسب آن، می توان اسم آن را در جایی که ثابت دلخواه باید قرار می گرفت وارد کرد. در زیر نمونه ای از متغیر ثابت (constant variable)، که بارها استفاده شده مشاهده می کنید.
class Exercise
{
static void Main()
{
const double conversionFactor = 39.37D;
double meter, inch;
meter = 12.52D;
inch = Meter * ConversionFactor;
System.Console.Write(meter);
System.Console.Write("m = ");
System.Console.Write(inch);
System.Console.WriteLine("in\n");
meter = 12.52D;
inch = Meter * ConversionFactor;
System.Console.Write(meter);
System.Console.Write("m = ");
System.Console.Write(inch);
System.Console.WriteLine("in\n");
meter = 12.52D;
inch = Meter * ConversionFactor;
System.Console.Write(meter);
System.Console.Write("m = ");
System.Console.Write(inch);
System.Console.WriteLine("in\n");
}
}
نتیجه ی زیر به دست می آید.
12.52m = 492.9124in 12.52m = 492.9124in 12.52m = 492.9124inهمان طور که مشاهده می کنید، این بار نتیجه دقیق تر درآمده است. همچنین اگر چیزی را اشتباه تایپ کنید، یک پیغام خطا صادر می شود که سر انجام زمان بیشتری در اختیار شما قرار می دهد تا مشکل را برطرف کنید. به منظور مقداردهی اولیه ی یک متغیر ثابت، مقداری که در سمت راست عملگر جایگزین = قرار می گیرد، باید حتماً یک ثابت یا مقداری باشد که compiler به عنوان ثابت بشناسد. به جای استفاده از یک ثابت شناس، می توان متغیری به آن اختصاص داد که از پیش به عنوان ثابت تعریف شده.
extended values - قسمت نهم : ثابت های توکار
در برنامه ها دو دسته ی اصلی ثابت کاربرد فراوان دارند. می توانید خود یک ثابت خلق کنید (مانند مثال بالا). زبان C# ثابت های مختص خود را دارد. برخی از ثابت ها متعلق به خود زبان C# هستند و برخی دیگر از برنامه ی.NET Framework گرفته می شوند. پیش از به کاربردن یک ثابت، ابتدا باید از وجود ثابت اطمینان کسب کنید. دوم، باید از نحوه ی دسترسی به آن آگاه باشید. ثابتی که بخشی از خود برنامه ی C# است به راحتی از طریق کد قابل دسترسی می باشد (به طور معمول، ثابت های مزبور در فضای اسمی System تعریف می شوند ). Null : این کلیدواژه (Null) در واقع یک ثابت است و برای نشان دادن متغیری استفاده می شود که مقدار مشخص و شناسی ندارد. PI : ثابتی است که برای نشان دادن نسبت محیط دایره به قطر آن به کار می رود. البته کاربرد این ثابت بیشتر در علم ریاضی است و برای استفاده از آن در برنامه نویسی باید Math.PI را تایپ کنید.
مدیریت کد
ابزار اصلی نوشتن برنامه، نوشتن و وارد کردن کد در داکیومنت است. این کار با نوشتن و وارد کردن کد از طریق صفحه کلید امکان پذیر می باشد. پس از به وجود آوردن کد، عملیات مختلف می توان روی آن انجام داد. معمولاً اولین کاری که باید انجام داد، انتخاب متن است.
دسترسی پیدا کردن به متغیر
همان طور که از قبل گفته شد، کد را می توان در برنامه هایی مثل Notepad یا code editor برنامه ی Microsoft Visual Studio نوشت. برای پیدا کردن کاراکتر، نشانه، کلمه در یک داکیومنت باید به main menu مراجعه کرده و روی گزینه ی Edit -> Find... کلیک کنید.
پنجره ی محاوره (dialog box) ای نمایش داده می شود، که می توان در آن نام آیتم موردنظر را وارد کرده، سپس روی گزینه ی Find کلیک کنید. اگر از برنامه ی Microsoft Visual Studio استفاده می کنید برای پیدا کردن تمام کاراکترهای یک متن (منظور یک کاراکتر است که چند بار در یک متن تکرار شده)، ابتدا آیتم مورد نظر را انتخاب کرده، سپس
Main menu را باز کرده، و گزینه ی Edit -> Quick Find را انتخاب کنید.
حال، Ctrl + F را باهم فشار دهید.
به همین شیوه، چنانچه متغیری دارید که چند بار در یک متن به کار رفته و می خواهید تمام جاهایی که این متغیر در آن ها به کارفته را پیدا کنید، کافی است روی نام آن کلیک کرده و دو ثانیه صبر کنید تا تمام متغیرهای موردنظر یافت شوند ( و برجسته شوند).
اکنون، به منظور دریافت فهرستی از تمام مکان هایی که متغیر در آن به کار رفته، در برنامه دستورات زیر را دنبال کنید : Microsoft Visual Studio
1. در Code Editor، اسم متغیر را راست کلیک کرده، سپس گزینه ی Find All References را انتخاب کنید.
2. Ctrl + F12، را با هم فشار دهید.
در نتیجه ی این کار، لیستی از تمام بخش هایی که متغیر در آن به کار رفته در پنجره ی Find Symbol Results نمایش داده می شود .
حال، به منظور دستیابی به بخشی که متغیر در آن به کار برده شده، روی ورودی آن دوبار کلیک کنید.
بریدن، کپی کردن و جای گذاری کد
هر شخصی که با کامپیوتر کار کرده، با این عملیات (cut، copy، paste) آشنا است. این عملیات برای ذخیره سازی کد در Microsoft Visual Studio بسیار پرکاربرد هستند. به عبارت دیگر، چنانچه کدی دارید که مایلید در بخش های مختلف استفاده کنید، می توانید آن را در جایی به صورت ذخیره نگه داشته و هر زمان که به آن نیاز پیدا کردید از آن استفاده کنید.
ابتدا، به منظور ذخیره سازی کد، کد را در هر برنامه ی ویرایش متنی مثل word، notepad یا code editor برنامه ی Microsoft Visual Studio تایپ کنید. کدِ نام برده را انتخاب کرده، سپس آن را روی clipboard کپی کنید. حال، برای حفظ کردن آن، (در Microsoft Visual Studio) Toolbox را باز کنید (main menu را باز کرده، روی View -> Toolbox کلیک کنید). یک فضای خالی را در toolbox انتخاب کرده، روی آن راست کلیک کنید و بعد گزینه ی paste را فشار دهید.
شیوه ی دیگر انجام این کار، این است که کد دلخواه را انتخاب کرده، سپس آن را بکشید و روی صفحه ی Toolbox رها کنید. به همین شیوه، می توانید code item های مختلفی به Toolbox اضافه کنید. پس از جای گذاری کد در Toolbox، کد موردنظر قابل دسترس می شود. حال، به منظور استفاده از کد، آن را از Toolbox گرفته و روی قسمت مورد نظر در code editor قرار دهید.
تغییر اسم متغیر
به منظور تغییر اسم آیتمی در کامپیوتر، ابتدا باید آن را پیدا کرده، سپس آن را ویرایش کنید. چنانچه آن اسم در قسمت های مختلفی به کارفته، همچنان می توان به دنبال همه ی آن ها گشت و آن ها را ویرایش کرد. احتمال خطا کردن در این مورد بسیار بالا است. اگر کد خود را با text editor می نویسید، می توانید تمام نمونه های آن اسم را با گزینه ی Edit -> Replace پیدا کرده و ویرایش کنید. از همین روش می توان در code editor نیز استفاده کرد. متأسفانه این روش تنها برای یک فایل کارگر است. در صورتی که پروژه ی شما فایل های متعددی دارد، واسم ها در آن فایل ها ذخیره شده باشند، این فرایند بسیار دشوار می گردد.
اما برنامه ی Microsoft Visual Studio، فرایند پیدا کردن و تغییر دادن اسم را فوق العاده آسان می سازد. کد زیر را در نظر بگیرد.
class Order
{
static void Main()
{
int nbr = 148;
System.Console.WriteLine(nbr);
}
}
به منظور تغییر اسم یک متغیر، در code editor دستورات زیر را انجام دهید.
روی اسم موردنظر دوبار کلیک کرده، آن را ویرایش کنید. زیر اسم موردنظر یک خط زیرین (underline _ ) پدیدار می شود.
اگر نشان گر موس خود را روی آن قرار دهید، تگی پدیدار می شود که با کلیک کردن روی پیکان (arrow) آن، فهرست گزینه ی کوچکی نمایان می شود.
اگر روی گزینه ی اول کلیک کنید، تمام نمونه های آن متغیر عوض می شوند. حال، اگر می خواهید پنجره ی پیش نمایش (next) نمایش داده شود، روی گزینه ی دوم کلیک کنید.
روی آن راست کلیک کرده، نشان گر موس را روی Refactorقرار دهید، سپس گزینه ی rename را کلیک کنید.
اگر می خواهید برنامه ی studio، اسم ها را پیدا کرده و آن ها را در داخل comment ها تغییر دهد، در Comment check box روی گزینه ی Search کلیک کنید. چنانچه، اسم در رشته ها نگه داشته می شود و شما خواهان تغییر آن هستید، در Strings checkbox روی گزینه ی search کلیک کنید. پس از اینکه شما ok را اتنخاب کردید، پنجره ی محاوره dialog box ،Preview Changes-rename روی صفحه نمایش پدیدار می گردد. پنجره ی بالا تمام جاهایی که اسم در آن به کار رفته را برای شما به نمایش می گذارد. حال، می توانید اسم را به دلخواه تغییر دهید.
اکنون، به منظور جایگزین کردن اسم دکمه ی Apply را فشار دهید.
دسترسی پیدا کردن به تعریف متغیر (Variable's Declaration)
چنانچه داکیومنتی بسیار طولانی در اختیار دارید که از خطوط بسیار زیادی تشکیل شده، در یک بخش خاص ممکن است با متغیری مواجه شوید که مکانی که متغیر در آن تعریف شده برای شما برای شما شناس نیست. حال، در صورت استفاده از Microsoft Visual Studio، به منظور یافتن مکانی که متغیر در آن تعریف شده.
روی متغیر موردنظر کلیک راست کرده، سپس گزینه ی Go to definition را انتخاب کنید.
روی اسم متغیر کلیک کرده و کلید های Shift + F2 را با هم فشار دهید.
در هر دو صورت، برنامه شما را مستقیم به جایی که متغیر در آن تعریف شده می برد.
دسترسی به خطی از کد از طریق اندیس آن
در صورت استفاده از Microsoft Visual Studio، چنانچه داکیومنتی ایجاد کرده اید که خطوط فراوانی دارد و اگر می خواهید برنامه شما را مستقیم به خط معینی از کد ببرد.
- Main menu را باز کرده، گزینه ی Edit -> Go To... را انتخاب کنید.
- کلیدهای Ctrl + G را باهم فشار دهید.
- حال، پنجره ی محاوره ای نمایان می گردد که شما می توانید با وارد کردن شماره ی خط در آن، خط مزبور را پیدا کنید.
extended values - قسمت اول