در قسمت قبل در مورد Floating-Point Data Types و چگونگی دریافت مقدار از کاربر و چند نکته ی دیگر، توضیحاتی داده شد. در این قسمت به توضیح دیتا تایپهای char و bool خواهیم پرداخت. کاراکتر و بولین دو بحث پایه ای و مهم در برنامه نویسی هستند که کابردهای اساسی و مهمی دارند.
کاراکترها (Characters)
در سی شارپ از دیتا تایپ char برای نگهداری هر کاراکتری میتوان استفاده کرد. در متغیری از جنس char شما میتوانید کاراکترهای تکی (Single Character) را نگهداری کنید. سی شارپ بر اساس استاندارد یونی کد از ۱۶ بیت برای نمایش کاراکترها استفاده میکند، در صورتی که اکثر زبانهای دیگر از ۸ بیت استفاده میکنند، مثل ++C و این میتواند مشکل ساز شود زیرا بعضی از حروف الفبایی را (مثل زبان چینی) نمیتوان در ۸ بیت نمایش داد. این ویژگی سی شارپ باعث میشود بتوانید مقادیر جالبی را با فرمت یونی کد تولید کنید. برای مثال حروف الفبای خارجی که برای نمایش آنها باید از کاراکتر استفاده کرد مثل حروف یونانی، عبری، چینی و آلمانی همچنین علامتهای خاص از جمله علامتهای پولهای خارجی، علامتهای ریاضی، اشکال هندسی و غیره که در صفحه کلید استاندارد موجود نیستند اما با استاندارد یونی کد قابل دسترسی هستند.
مقادیر کاراکتر را باید بین علامت single quotation (سینگل کوتیشن ‘ ‘) قرار داد، بدلیل اینکه کامپیوتر برای نگهداری مقادیر character و integer تفاوت قائل میشود.
برای مثال هر دو عبارت زیر درست هستند:
char aCharValue = '9'; int aNumValue = 9;
در صورتیکه هر دو عبارت زیر نادرست هستند:
char aCharValue = 9; int aNumValue = '9'; // error, won't work
یک عدد میتواند یک کاراکتر باشد، که در اینصورت باید بین single quotation قرار بگیرد و نوع آن هم char باشد. همچنین یک حرف الفبایی نمیتواند در متغیری از نوع عددی قرار بگیرد.
چند نمونه:
char myInitial = 'J'; char percentSign = '%'; char numThatIsAChar = '9';
کاراکترها را میتوان در خروجی نمایش داد:
static void Main(string[] args) { char ch; ch = 'X'; Console.WriteLine("This is a ch: " + ch); }
شما میتوانید هر کاراکتری از جمله کاراکترهایی مثل backspace و tab را ذخیره کنید. برای ذخیره ی این نوع کاراکترها (Escape Sequence) از دو علامت استفاده میشود که همیشه اولین آنها علامت backslash است. این جفت علامت، یک کاراکتر را نمایش میدهند. برای مثال کد زیر، کاراکتر backspace و کاراکتر tab را به ترتیب در متغیرهای aBackSpaceChar و aTabChar ذخیره میکند:
char aBackspaceChar = '\b'; char aTabChar = '\t';
در این مثال، escape sequence یک مقدار را برای هر کاراکتر (یک backspace و یک tab بهجای حروف b و t) نشان میدهد.
جدول زیر برخی از escape sequence های رایج در سی شارپ را نشان میدهد.
متغیری از جنس char تنها یک کاراکتر را در خود نگه میدارد. برای اینکه رشته ای از کاراکترها را داشته باشید (مثل نام شخصی خودتان) باید از string استفاده کنید. در طول انجام مثالها با نحوه ی استفاده از char و اینکه در چه مواردی استفاده دارد بیشتر آشنا خواهید شد.
بولین (The bool Type)
دیتا تایپ bool یک منطق بولی (بولین – Boolean) است که بر پایه ی این دو مقدار است: false و true. یک متغیر از جنس int میتواند میلیونها مقدار مختلف در زمانهای مختلف را در خود ذخیره کند ولی متغیری از جنس bool تنها میتواند یکی از این دو مقدار را در خود نگه دارد: true یا false. برای اعلام یک متغیر بولین باید از کلمه کلیدی bool استفاده کنید.
مثال زیر دو مقدار را در دو متغیر از جنس bool ذخیره میکند:
bool isItMonday = false; bool areYouTired = true;
شما همچنین میتوانید بر اساس نتیجه ی مقایسه ی دو مقدار، مقدار true یا false را در یک متغیر بولین قرار دهید. عملگرهای مقایسه ای دو آیتم را با هم مقایسه میکنند، یک عبارت که شامل عملگر مقایسه ای است، یک مقدار بولین دارد.
جدول زیر ۶ عملگر مقایسه ای که سی شارپ پشتیبانی میکند را نشان میدهد:
هنگامی که شما از عملگرهای مقایسه ای که دارای دو علامت هستند (=>، =<، =!، ==) استفاده میکنید، نمیتوانید بین دو علامت از space استفاده کنید و توجه داشته باشید که علامت = همیشه در سمت راست است.
به مثال زیر توجه کنید:
static void Main(string[] args) { bool isSixBigger = 6 > 5; // Value stored would be true bool isSevenSmallerOrEqual = 7 <= 4; // Value stored would be false Console.WriteLine(isSixBigger); Console.WriteLine(isSevenSmallerOrEqual); }
در این مثال دو عدد با هم مقایسه میشوند و حاصل آنها که یا true است یا false، در متغیر بولین قرار داده میشود. هرچند این روش مقدار دهی به متغیرهای بولین تا حدودی بلا استفاده است ولی برای مثال و یادگیری در اینجا مناسب است. استفاده از مقادیر بولین زمانی معنای بهتری پیدا میکند که شما از متغیرها بجای اعداد ثابت در مقایسه ها استفاده کنید.
به مثال زیر توجه کنید:
static void Main(string[] args) { int hoursWorked = 45; int annualIncome = 80000; bool doesEmployeeReceiveOvertime = hoursWorked > 40; bool isEmployeeInHighTaxBracket = annualIncome > 100000; Console.WriteLine(doesEmployeeReceiveOvertime); Console.WriteLine(isEmployeeInHighTaxBracket); }
در بولین اول این برنامه متغیر hoursWorked با مقدار ثابت ۴۰ مقایسه میشود، اگر مقدار hoursWorked کمتر از ۴۰ باشد پس مقدار متغیر doesEmployeeReceiveOvertime برابر با false میشود، در غیر اینصورت برابر با true میشود.
در بولین بعدی، متغیر annualIncome باید مقداری بیشتر از ۱۰۰۰۰۰ را داشته باشد تا متغیر isEmployeeInHighTaxBracket برابر با true شود.
نکته ی مهم: توجه داشته باشید که علامت انتساب یک “تک مساوی” است و علامت مقایسهی دو مقدار “دومساوی” است.
به مثال زیر توجه کنید:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace test { class Program { static void Main(string[] args) { bool b; b = false; Console.WriteLine("b is " + b); b = true; Console.WriteLine("b is " + b); Console.WriteLine("10 > 9 is " + (10 > 9)); Console.WriteLine("10 == 9 is " + (10 == 9)); } } }
خروجی:
b is false
b is true
10 > 9 is true
10 == 9 is false
همانطور که میبینید هنگامی که مقدار بولین در خروجی توسط ()Console.WriteLine نمایش داده میشود، مقدار آن یا بصورت True نمایش داده میشود یا False. همینطور (۱۰ > ۹) و (۱۰ == ۹) شامل مقدار بولی هستند.
علی حیدرزاده
21 September 2012
اگر یکی دو تا تمرین برای حل کردن کسایی که دارن آموزش ها رو دنبال میکنن آخر هر قسمت قرار بدید خیلی خوب میشه.
مسعود درویشیان
21 September 2012
تمرینهایی که باید انجام بدید همهگی آماده شده و بهزودی توی سایت قرار داده میشه، ولی باید بحث به یه جایی برسه که تمرینها رو قرار بدیم.
مجتبی
21 September 2012
عالی بود.
ولی اگر در مورد اینکه چه مقدارهایی به جز True و False معنای همین دو مقدار رو میدن فکر کنم برای دوستان مفید بود.
علیرضا اسکندرپور شوفری
17 April 2013
اگر منظورت 0 و 1 هست، خب شاید در ادامه بهش اشاره بشه شاید هم نه. ولی این همه توضیح در مقابل یک 0 و 1 نباید باعث بشه شما در ادامه ی تعریفتون ولی و اما و اگر بیارید.
عـــــ L ــــــی
23 September 2012
سلام دوست عزیز
وب سایت زیبا و پر محتوایی دارین
من میخواستم سی شارپ رو یاد بگیرم,البته مهندسی کامپیوتر میخونم,چند بار هم تلاش کردم شروع کنم و شروع هم میکنم تا یه جایی که میرسم دیگه نمیدونم باید چکار کنم
لطفا کمکم کنید که اول از کجا شروع کنم,چه چیزهایی رو باید اول یاد بگیرم و …
لطفا راهنمایی کنید که از این سر در گمی بیرون بیام
مسعود درویشیان
23 September 2012
سلام
توی هرکاری باید تلاش و پشتکار داشت، برنامهنویسی هم از جمله اینکارهاست. اگه شما میخواین سیشارپ رو آنلاین آموزش ببینید مقالات آموزشی زنگ سیشارپ گزینهی خوبی هست.
شما باید ابتدا مبانی برنامهنویسی رو کامل یاد بگیرید سپس از اون توی محیطهای مختلف استفاده کنید، مثل ویندوز اپلیکیشن یا ASP.NET و …
موفق باشید.
Praise
2 December 2012
سلام
1. آیا وقتی کاراکتر تب رو وارد کنیم مث این میمونه که دکمه تب رو فشار داده باشیم ؟؟!!
یک مثال واضح تر در مورد این کاراکترها اگه بگید ممنون میشم
2. آیا میشه به جای اینکه در خروجی False یا True چاپ بشه Yes /No چاپ بشه مثلا تو همون مثال مالیات و …؟؟!!
Praise
2 December 2012
آخه من وقتی ورتیکال تب رو به کار بردم یه کاراکتر عجیب و غریب تو خروجی نمایش داده شد!!
Mersad
3 August 2013
سلام
دقیقا منم مشکل آقا یا خانم Praise برام پیش اومد.
وقتی v\ رو تو خروجی چاپ کردم یه کاراکتر عجیب و غریب نشون داد.
همچنین وقتی b\ رو هم تو خروجی چاپ کردم، هیچ تغییری انجام نشد، هیچ کاراکتری هم پاک نشد!
مشکل چیه دقیقا؟
خیلی ممنون
کوثر
12 September 2013
; char t=’\t’
;(Console.WriteLine(t
دقیقا معنی همون تب صفحه کلید رو میده
یا مثلا همون n\همون معنی Enter رو میده
shahrokhdj
12 October 2013
سپاس از شما بابت مطالبتون
فقط مثال های داخل اموزش رو کاربردی تر کنید.
:)
محمد
15 November 2013
به خدا که سایتتون حرف نداره .آرزوی موفقیت برات دوست عزیز
hamid
9 February 2014
سلام خوبی ادرستون کجاست اموزش هم می دید .تلفن تماس؟
علی
24 April 2015
سایت جامعی دارین خیلیه عالیه مطالبتون!!!