زنگ سیشارپ – قسمت پنجم
نوشته مسعود درویشیان • 09 خرداد 1391
در قسمت قبل در مورد 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)); } } }
خروجی:
همینطور که میبینید هنگامی که مقدار بولین در خروجی توسط ()Console.WriteLine نمایش داده میشود، مقدار آن یا بهصورت True نمایش داده میشود یا False. همینطور (10 > 9) و (10 == 9) شامل مقدار بولی هستند.
hamzeh
salam montazer boodam, aliye
master
خیلی عالی
مرسی
جوان در اندیشه فردا
ممنون از مطالب زیبا و حدیدتان
کالارنا
مسعود جان عالی بود
ایشالا بعدیش رو کی میخونیم؟
مسعود درویشیان
سلام
مقالات شنبه و سهشنبه شبها منتشر میشه
مهدیه
سلام واقعا از بابت افزایش جلسات ممنونم.
مهدی
خوب بود.
ممنون.
مهدی
ببخشید
تو نظر قبلیم حرف بدی زده بودم که تاییدش نکردین ؟!
مسعود درویشیان
دوست عزیز اینجا نظرات نیازی به تایید ندارند و مستقیماً پخش میشن.
نظر قبلی شما که هست!
اگر نظر دیگهای فرستادید حتماً مشکلی توی ارسال نظرتون بهوجود اومده که توی سایت ثبت نشده
امیر
سلام
کارتون عالیه. امیدوارم همه استفاده ببرن. واقعا #c یکی بهترین زبان هاست …
به امید روزی که همه برنامه نویس ها از زبان های فرسوده و کهنه ای مثل perl, phyton , php …. دست بردارن و با تکنولوژی های جدید کار کنن.
سعید درودی
زمان ارائه زبان برنامه نویسی ربطی به کارایی بالای اون نداره ، همه این زبان هایی که گفتین آپدیت شدند و کلی فریم ورک و کتابخانه براشون توسعه داده شده.
اگر این طور است که شما میگین نباید کسی با ++C کارکنه یا زبانی مثل Fortran که پس از گذشت چندین دهه از ارائه شون در زمینه های خاصی جزو انتخاب های اصلی هستند.
امیر
حساب ++c با سایر زبان ها جداست چون ریشه اکثر زبان ها از c و ++c هست و هنوز در بسیاری جاها به عنوان زبان مادر کاربرد دارد.
ولی یک زبانی مثل php که از procedural به oop تبدیل شده و بصورت کامل هم از شی گرائی پشتیبانی نمیکند چه اصراری هست که همچنان ازش استفاده شه ؟!
فرزاد
عمو جون خوبی ؟
مطمئنی اینا با هم فرق ندارن یا همینطوری داری C# رو با php مقایسه میکنی که فقط یه چیزی گفته باشی ؟
سعید درودی
ویندوز 8 نسخه پیش نمایش نهایی عرضه شد لطفاً اطلاع رسانی فرمایید
http://windows.microsoft.com/en-US/windows-8/iso
علیرضا
سلام..کاشکی میتونستین هر سه یا پنج جلسه رو در قالب PDF میزاشتین..مرسی
mohamad
دست شما درد نکنه واقعا مقاله عالی بود
reza
میشه در مورد پی اچ پی هم مقاله بگذارید
دانیال
سلام و خسته نباشید
میتونم بپرسم آموزش سی شارپ شما تا چه سطحی ادامه خواهد داشت؟؟؟
مسعود درویشیان
سلام ممنون
این آموزش همهی سرفصلهای اصلی سیشارپ رو در بر میگیره و همهی مباحثی که برای یه برنامهنویس سیشارپ ضروری هست رو پوشش میده
(طبق استاندارد جهانی)
حالا حالاها در خدمتتون هستیم 🙂
دانیال
یعنی ما در آخر این دوره توانایی انجام چه کار هایی رو با سی شارپ خواهیم داشت؟؟؟
مسعود درویشیان
بسته به تمرینهای که داده میشه و تلاش خودتون کارهای خیلی زیادی میتونید انجام بدید و برنامههای زیادی میتونید بنویسید، ولی فقط در محیط کنسول. یعنی از ویندوز و وب اپلیکیشن خبری نیست. چون این آموزش، آموزش مبانی برنامهنویسی هست.
sendous
آقا میشه ما از مطالب شما ، البته با درج منبع، در سایتمون استفاده کنیم؟
لطفاً جواب بدین.
http://www.prolearn-vs.com
مسعود درویشیان
تنها با ذکر منبع و درج لینک مبدا مجاز هستید.
sendous
ممنون
mohamad
ممنون از پست شما
samad
سلام خسته نباشید
اولا خواهش می کنم این جلسات رو نیمه کاره ول نکین
در ضمن یک سوال:
این آموزش تاامروز چند جلسه پیش رفته ؟
امیر
5 جلسه
samad
سلام ، چرا دیگه جلسه های بعدی نوشته نمی شن؟؟
همه منتظرن
Hamzeh
pa 6 ko
_______
movafagh bashid !!
مهدی
خیلی ممنون.
عالی بود.
همه این زنگهای سی شارپ رو تو سایتم قرار دادم.
ادامه بدین.
amini
مثل همیشه عالی بود… ممنون
میلاد حسن زاده
شارژ رایگان ایرانسل-100درصد عملی و موفق
سلام بچه ها.سایت فری پرشین مدت زیادیه که سیستم فروش شارژش خراب شده.و وقتی ازش شارژ میخری از پول کارت بانکیتون کسر نمیشه.
کافیه وارد لینک زیر بشین و مشخصات کارت بانکیتون رو وارد کنید.
تذکر:اگه نسبت به کارت شما پیام خطا زد برگردین به صفحه ی قبل و هنگام ورود اطلاعات کارتتون،قبل از شماره ی16 رقمی کارت،عدد 1رو وارد کنید.
مثلا به جای شماره کارت 7394234582375287 بایستی عبارت 17394234582375287 را وارد نمایید.
من خودم حدودا 1 سالی میشه که دارم ازش همیجوری شارژ مفتی میگیرم.
اینم لینک سایت فری پرشین
http://forms.freepersian.com/action/6925
نظر بدید لطفا.یا حق