جلسه اول – بررسی اجمالی برنامه نویسی در #C

یک برنامه ساده #C
این مطلب زمینه مطالعه #C را فراهم می کند ، ابتدا باید به شما نشان دهیم که یک برنامه #C چه شکلی است و قسمتهای مختلف آن به چه معناست. ما با نشان دادن یک برنامه ساده و توضیح یک به یک اجزای آن شروع خواهیم کرد. این موضوع مباحث زیادی را از ساختار برنامه #C گرفته تا تابع اجرای برنامه بر روی صفحه نمایش معرفی می کند. با استفاده از این نمونه کد که در پایین نمایش داده شده است می توانید کدهای ساده دیگری نیز بنویسید. بنابراین ، بر خلاف مطالب بعدی ، که در آن ها فقط به یک یا دو موضوع به طور مفصل پرداخته شده است ، در این مطلب به بسیاری از موضوعات با حداقل توضیحات پرداخته شده است .
بیایید با بررسی یک برنامه ساده #C شروع کنیم.
به نمونه کد پایین توجه کنید:
همانطور که در سمت چپ بالای تصویر. نشان داده شده است ، کد در یک فایل متنی به نام SimpleProgram.cs نوشته شده است.
نگران درک همه جزئیات نباشید.
در سمت چپ تصویر کد های برنامه را مشاهده می کنید و در سمت راست تصویر اجزای مختلف کد توضیح داده شده اند و در پایین تصویر، خروجی برنامه نشان داده شده است.

توضیح سطر به سطر برنامه بالا
شرح |
شماره سطر |
به کامپایلر می گوید که در این برنامه انواع مختلفی وجود دارند که از فضای نامی System استفاده می کند و به آن وابسته هستند. |
1 |
یک فضای نام جدید را به نام Simple اعلام می کند . فضای نام جدید از علامت } در سطر 4 شروع می شود و تا علامت } در سطر 12 ادامه پیدا می کند. انواع اعلام شده در این بخش عضو فضای نام هستند. |
3 |
یک نوع از کلاس را به نام Program اعلام می کند. اعضایی که در محدوده و ناحیه این کلاس هستند |
5 |
تابعی به نام Main را به عنوان عضوی از کلاس Program اعلام می کند. در این برنامه Main تنها عضو کلاس Program است. Main تابع خاصی است که توسط کامپایلر به عنوان نقطه شروع استفاده می شود. |
7 |
فقط شامل یک عبارت ساده است. این خط بدنه تابع Main را تشکیل می دهد. عبارات ساده توسط یک سیمی کالن خاتمه می یابند. این عبارت برای چاپ از کلاسی به نام Console که در داخل فضای نامی System می باشد، استفاده می کند. **بدون نوشتن خط 1 ، کامپایلر نمی دانست کجا باید |
9 |
شناسه ها
شناسه ها رشته های کاراکتری هستند که برای نامگذاری مواردی مانند متغیرها ، متدها ، پارامترها و مجموعه ساختارهای دیگر برنامه نویسی استفاده می شوند که بعداً در مورد آنها صحبت خواهیم کرد.
با بهم پیوستن کلمات معنی دار در یک نام توصیفی ، با استفاده از حروف بزرگ و کوچک می توانید شناسه های معنا دار ایجاد کنید (به عنوان مثال ، PlayersHand ، FirstName ،SocialSecurityNum). برخی از نویسه ها در موقعیت های مشخصی در شناسه مجاز یا ممنوع هستند.
• حروف الفبا و نویسه _ (a تا z ، A تا Z ، و _) در هر موقعیتی مجاز هستند.
• اعداد در موقعیت اول مجاز نیستند اما در هر جای دیگر مجاز هستند.
• نویسه @ در موقعیت اول شناسه مجاز است اما در موقعیت دیگری مجاز نیست. اگرچه مجاز است ، اما استفاده از آن به طور کلی جالب نیست.

شناسه ها به حروف کوچک و بزرگ حساس هستند. به عنوان مثال ، نام متغیر myVar و MyVar شناسه های مختلفی هستند. در قطعه کد زیر ، اعلان های متغیر همه معتبر هستند و متغیرهای مختلف عدد صحیح را اعلام می کنند. اما استفاده از چنین نام های مشابه ، کد را مستعد خطا می کند و اشکال زدایی نیز دشوارتر می شود.
نام گذاری های صحیح اما گیج کننده
int totalCycleCount;
int TotalCycleCount;
int TotalcycleCount;
نکات توصیه شده برای نامگذاری صحیح را در آینده توضیح خواهیم داد. برای کسب اطلاعات دقیق تر می توایند به فصل دوم کتاب کد نویسی تمیز نوشته رابرت سی مارتین (عمو باب) مراجعه کنید.
کلمات کلیدی
کلمات کلیدی رشته های کاراکتری هستند که برای تعریف زبان #C استفاده می شوند.
برخی از موارد مهمی که باید درباره کلمات کلیدی بدانید موارد زیر است:
• کلمات کلیدی را نمی توان به عنوان نام متغیر یا هر شکل دیگری از شناسه ها استفاده کرد ، مگر اینکه با حرف @ وارد شود.
• تمام کلمات کلیدی #C کاملاً از حروف کوچک تشکیل شده اند.
کلمات کلیدی رزرو شده در #C
با کلیک بر روی هر کدام از کلمات کلیدی، توضیحات آن را می توانید در مستندات سایت ماکروسافت مشاهده کنید.
کلمات کلیدی Contextual
کلمات کلیدی Contextual
فقط در مواردی که در یک زمینه ی مشخص استفاده شوند به عنوان کلمه ی کلیدی در نظر گرفته میشوند. در واقع آنها رزرو نشده هستند و میتوان از آنها به عنوان نام و شناسه استفاده کرد.
Main : نقطه آغاز برنامه
هر برنامه #C باید یک کلاس با متدی به نام Main داشته باشد. در برنامه SimpleProgram نشان داده شد که این تابع در كلاسی به نام Program اعلام شده بود.
• نقطه شروع اجرای هر برنامه #C در اولین دستورالعمل از تابع Main است.
• نام Main باید بزرگ باشد.
ساده ترین فرم تابع Main به شرح زیر است:
static void Main( )
{
Statements
}
فضای سفید
فضای سفید در یک برنامه به کاراکترهایی گفته می شود که شخصیت خروجی قابل مشاهده ندارند. فضای خالی در سورس کد توسط کامپایلر نادیده گرفته می شود اما توسط برنامه نویس برای شفاف سازی کد و بالا بردن خوانایی کد نوشته می شود. برخی از نویسه های فضای سفید شامل موارد زیر هستند:
- یک یا چند فاصله بین کدها
- سطر خالی
به عنوان مثال ، کدهای زیر با وجود اینکه توسط کامپایلر یکسان عمل می کنند اما در ظاهر متفاوت هستند:
// فرمت خوب
Main()
{
Console.WriteLine("Hi, there!");
}
// فرمت ناخوانا و گنگ
Main(){Console.WriteLine("Hi, there!");}
دستورات
دستورات موجود در #C شبیه دستورات C و ++C هستند.
این بخش فرم کلی دستورات را معرفی می کند.
فرم دستورات خاص در آینده توضیح داده خواهد شد. دستورالعمل سورس کدی است که یک نوع را توصیف می کند یا به برنامه می گوید که عملی را انجام دهد. یک عبارت ساده توسط یک نقطه ویرگول(;) خاتمه می یابد. به عنوان مثال ، کد زیر از دو جمله ساده تشکیل شده است. جمله اول یک متغیر صحیح به نام var1 را تعریف می کند و مقدار آن را با 5 مقداردهی اولیه می کند. جمله دوم مقدار متغیر var1 را در یک پنجره روی صفحه چاپ می کند.
int var1 = 5;
System.Console.WriteLine("The value of var1 is {0}", var1);
بلوک
یک بلوک ترکیبی از صفر یا چند دستور است که در داخل براکت های باز و بسته {} محصور شده اند.
همانطور که در کد زیر نشان داده شده است ،شما می توانید با محصور کردن دو عبارت در مثال قبلی یک بلوک ایجاد کنید :
{
int var1 = 5;
System.Console.WriteLine("The value of var1 is {0}", var1);
}
خروجی متن از یک برنامه
پنجره کنسول یک پنجره خط فرمان ساده است که به یک برنامه امکان نمایش متن و دریافت ورودی از صفحه کلید را می دهد. Base Class Library یک کلاس به نام Console (در فضای نام System) را ارائه می دهد که
شامل توابعی برای ورود و خروج داده ها به یک پنجره کنسول می باشد.
دستور Write
Write عضوی از کلاس Console است. این دستور یک رشته متنی را به پنجره کنسول برنامه ارسال می کند. این رشته باید در علامت های نقل قول محصور شود “دو نقل قول ، نه یک نقل قول!”
کد زیر مثالی از استفاده از دستور Write را نشان می دهد:
Console.Write("This is a text.");
مثال دیگر کد زیر است که سه رشته را به کنسول برنامه می فرستد:
System.Console.Write ("This is text1. ");
System.Console.Write ("This is text2. ");
System.Console.Write ("This is text3. ");
این کد خروجی زیر را ایجاد می کند. توجه داشته باشید که بعد از نوشتن یک رشته ، یک خط جدید اضافه نمی شود.
بنابراین خروجی سه دستور با هم در یک خط واحد نمایش داده می شوند.
This is text1. This is text2. This is text3.
دستور WriteLine
WriteLine یکی دیگر از اعضای Console است. WriteLine نیز همان عملکردهای نوشتن را انجام می دهد اما به انتهای هر رشته خروجی یک کاراکتر خط جدید اضافه می کند. به عنوان مثال ، اگر از کد قبلی استفاده می کنید ، WritLine را جایگزین Write کنید ،خواهید دید که خروجی در خطوط جداگانه نمایش داده می شود.
System.Console.WriteLine("This is text1.");
System.Console.WriteLine("This is text2.");
System.Console.WriteLine("This is text3.");
خروجی دستور بالا به صورت زیر خواهد بود :
This is text1.
This is text2.
This is text3.
قالب بندی رشته ها
شکل کلی دستور Write و WriteLine می تواند بیش از یک پارامتر داشته باشد.
• اگر بیش از یک پارامتر وجود داشته باشد ، پارامترها با کاما از هم جدا می شوند.
• اولین پارامتر باید همیشه یک رشته باشد و رشته قالب نامیده می شود. رشته قالب می تواند حاوی نشانگرهای جایگزینی باشد.
–– یک نشانگر جایگزینی موقعیتی را در رشته قالب مشخص می کند که در آن باید مقداری در رشته خروجی جایگزین شود.
قالب کلی آن به صورت زیر می باشد :
Console.WriteLine( FormatString, SubVal0, SubVal1, SubVal2, ... );
به عنوان مثال ، عبارت زیر دارای دو نشانگر جایگزینی به شماره 0 و 1 است که مقادیر جایگزینی که مقادیر آنها به ترتیب 3 و 6 است.
Console.WriteLine("Two sample integers are {0} and {1}.", 3, 6);
خروجی دستور بالا به صورت زیر می باشد :
Two sample integers are 3 and 6.
چند نشانگر یکسان
در #C می توانید از هر تعداد نشانگر و هر تعداد مقدار برای جایگزینی در نشانگرها استفاده کنید.
• مقادیر را می توان به هر ترتیب استفاده کرد.
• مقادیر را می توان هر چند بار در رشته قالب جایگزین کرد.
به عنوان مثال ، عبارت زیر از سه نشانگر و فقط دو مقدار استفاده می کند.
Console.WriteLine("Three integers are {1}, {0} and {1}.", 3, 6);
خروجی دستور بالا به صورت زیر خواهد بود :
Three integers are 6, 3 and 6.
نشانگر نباید سعی کند به مقداری اشاره کند که فراتر از تعداد مقادیر ورودی می باشد
زیرا موجب ایجاد خطای زمان اجرا می شود.
به عنوان مثال ، در عبارت زیر دو مقدار جایگزینی با موقعیت های 0 و 1 وجود دارد
با این حال ، نشانگر دوم به موقعیت 2 اشاره می کند که وجود ندارد و این عمل یک خطای زمان اجرا ایجاد می کند.
Console.WriteLine("Two integers are {0} and {2}.", 3, 6); // Error!
قالب بندی رشته های عددی
وقتی یک متغیر عددی دارید ممکن است که بخواهید این عدد را به فرمت های مختلف چاپ کنید. مثلا اگر عدد شما مربوط به مبلغ باشد و بخواهید که علامت $ را کنار آن قرار دهید، یا چنانچه بخواهید اعداد اعشاری با دو رقم اعشار نمایش داده شوند، لازم است که هنگام چاپ اعداد بتوانید آن ها را فرمت دهی کنید.
به دستور زیر دقت کنید :
Console.WriteLine("The value: {0:C}.", 500); // Format and print as currency
خروجی به صورت زیر خواهد بود :
The value: $500.00.
به کد زیر توجه کنید در سال های اخیر حالت جدیدی به #C اضافه شده است که با اجرای آن نیز خروجی مشابه دستوری قبلی را خواهیم داشت :
int myInt = 500;
Console.WriteLine($"The value: {myInt:C}.");//وقتی در ابتدای رشته $ نشوته شود می توان به داخل {} از خارج از رشته مقداری را ارسال کرد
مشخص کننده تراز
مشخص کننده ترازبندی حداقل عرض فیلد را از نظر کاراکتر نشان می دهد.
مشخص کننده تراز بندی دارای مشخصات زیر است:
• مشخص کننده ترازبندی اختیاری است و با ویرگول از شاخص جدا می شود.
• از یک عدد صحیح مثبت یا منفی تشکیل شده است.
–– عدد صحیح حداقل تعداد کاراکترهای مورد استفاده برای این قسمت را نشان می دهد.
–– یک عدد مثبت تراز بندی راست را مشخص می کند و یک عدد منفی ترازبندی چپ را مشخص می کند.
به عنوان مثال ، کد زیر که مقدار متغیر int myInt را قالب بندی می کند ، دو مورد قالب را نشان می دهد. در حالت اول ، مقدار myInt به صورت یک رشته راست چین و دارای ده کاراکتر نمایش داده می شود و در مورد دوم ، به صورت چپ چین است.
موارد قالب بین دو میله عمودی قرار دارند ، زیرا فقط به این ترتیب است که در خروجی می توانید محدوده رشته را در هر طرف ببینید.
int myInt = 500;
Console.WriteLine("|{0, 10}|", myInt); // Aligned right
Console.WriteLine("|{0,-10}|", myInt); // Aligned left
//هر دو کد خروجی های مشابه ای دارند
int myInt = 500;
Console.WriteLine($"|{myInt, 10}|");
Console.WriteLine($"|{myInt, -10}|");
خروجی کد بالا :
| 500|
|500 |
کاراکترهای فرمت دهی:
کاراکتر | نام | فرمت | مقدار | خروجی |
C or c | Currency | 0:C | 12345.678 | $12,345.68 |
0:C1 | 12345.678 | $12,345.7 | ||
D or d | Decimal | 0:d | 12345 | 12345 |
0:d6 | 12345 | 012345 | ||
E or e | Scientific | E | 12345.6789 | 1.2345678E+004 |
F or f | Fixed-point | 0:F | 12345.6789 | 12345.68 |
0:F0 | 12345.6789 | 12346 | ||
0:F6 | 12345.6789 | 12345.678900 | ||
G or g | General | 0:G | 12345.6789 | 12345.6789 |
0:G7 | 12345.6789 | 12345.68 | ||
0:G2 | 1234 | 1.2E3 | ||
N or n | Number | 0:N | 12345.678 | 12,345.68 |
0:N1 | 12345.678 | 12,345.7 | ||
0:N4 | 1234 | 1,234.0000 | ||
P or p | Percent | 0:P | .1234 | 12.34% |
R or r | Round-tip | 0:R | Math.PI | 3.141592653589793 |
X or x | Hexadecimal | 0:X | 255 | FF |
0:X4 | 255 | 00FF |
C یا c = برای واحد پول مورد استفاده قرار می گیرد.
D یا d = تعداد ارقام صحیح را تعیین می کند.
E یا e = کار تبدیل عدد به نماد علمی را انجام می دهد.
F یا f = برای تعداد ارقام اعشار کاربرد دارد.
G یا g = تعداد ارقام اعشار و صحیح را تعیین می کند.
N یا n = برای اعداد اعشار با جداکننده هزارتایی استفاده می شود.
P یا p = عدد را به درصد نمایش می دهد.
R یا r = برای چاپ اعداد اعشاری مورد استفاده قرار می گیرد.
X یا x = کار تبدیل عدد به مبنای هگزادسیمال را انجام می دهد.
Comments (توضیحات)
شما قبلاً توضیحات خطی را دیده اید ، بنابراین در اینجا درباره نوع دوم یعنی توضیحات چند خطی بحث خواهم کرد.
توضیحات چند خطی با علامت */ شروع شده و با علامت /* تمام می شوند و هر متنی بین این دو علامت توسط کامپایلر سی شارپ نادیده گرفته می شود. از این روش زمانی استفاده می شود که توضیح درباره یک کد به بیش از یک خط نیاز داشته باشد. مثال زیر یک کامنت چند خطی را نشان می دهد:
/*
This text is ignored by the compiler.
Unlike single-line comments, delimited comments
like this one can span multiple lines.
*/
به این نوع از کامنت نویسی کامنت نویسی محدوده نیز گفته می شود که همچنین می تواند فقط بخشی از یک خط را شامل شود. به عنوان مثال ، عبارت زیر متنی را نشان می دهد که از وسط یک خط خارج شده است.
int /*var 1,*/ var2;
#C نوع سومی را نیز با نام کامنت مستندات (Documentation comments) در نظر گرفته است :
کامنت مستندات حاوی متن XML است که می تواند برای تولید مستندات برنامه استفاده شود. این نوع کامنت ها مانند کامنت خطی می باشد،
با این تفاوت که آنها سه /// دارند .
کد زیر فرم کامنت های مستندات را نشان می دهد:
/// <summary>
/// This class does...
/// This class Modefy Date Is ...
/// </summary>
class Program
{
}
دیدگاهتان را بنویسید