MoniSoft
20th February 2011, 03:32 PM
در اين درس با ارائه چند برنامه و مثال ساده به طرز كار زبان C# ميپردازيم. اهداف اين درس عبارتند از :
فهم ساختار پايهاي يك برنامه C#
آشنايي با Namespace
آشنايي با كلاس (Class)
آشنايي با عملكرد متد Main()
آشنايي با ورودي/خروجي يا I/O
ليست 1-1، يك برنامة ساده با عنوان Welcome در زبان C#
// Namespace اعلان
using System;
// كلاس آغازين برنامه
class WelcomeCSS
{
// آغاز كار اجراي برنامه
public static void Main()
{
// نوشتن متن در خروجي
Console.WriteLine("Welcome to the C# Persian Tutorial!");
}
}
برنامة ليست 1-1 داراي 4 پارامتر اصلي است، اعلان Namespace، كلاس، متد Main() و يك دستور زبان C#.
در همين جا بايد به يك نكته اشاره كنم، براي زبان C# همانند بيشتر زبانهاي برنامهسازي دو نوع كامپايلر وجود دارد. يك نوع كامپايلر كه به كامپايلر Command Line معروف است و نوع ديگر كامپايلر Visual است. كامپايلرهاي Command Line محيطي شبيه به محيط DOS دارند و با دادن يك سري دستورات به اجرا در ميآيند. كامپايلرهاي Visual محيطي همانند ويندوز دارند كه با دارا بودن محيط گرافيكي و ابزارهاي خاص، برنامهنويس را در امر برنامهسازي كمك ميكنند. از نمونههاي هر يك از كامپايلرها، ميتوان به Microsoft C# Command Line Compiler كه يك كامپايلر Command Line و Microsoft Visual C# كه يك كامپايلر Visual است، اشاره كرد. البته در حال حاضر بيشتر از كامپايلرهاي ويژوال استفاده ميشود.
من سعي ميكنم در آينده به توضيح محيط Visual C# و Visual Studio.Net بپردازم. اما فعلاً براي اجراي برنامهها ميتوانيد از Visual Studio.Net استفاده كنيد. پس از نصب آن، وارد محيط C# شده و در قسمت انتخاب برنامة جديد گزينة Console را جهت اجراي برنامهها انتخاب نماييد.
براي اين درس، فعلاً به توضيحات بيشتر دربارة محيط ويژوال نميپردازم اما در آينده به توضيح كامل محيط Visual Studio.Net خواهم پرداخت.
براي اجراي كد بالا در صورتيكه از محيط ويژوال استفاده ميكنيد بايد بر روي دكمة Run كليك كنيد و در صورتيكه كامپايلر Command Line داريد با دستور زير ميتوانيد برنامه را اجرا كنيد : csc Welcome.cs
پس از اجراي برنامه، كامپايلر براي شما يك فايل قابل اجرا(Executable) تحت نام Welcome.exe توليد ميكند.
نكته : در صورتيكه از Visual Studio.Net(VS.Net) استفاده كنيد، پس از اجراي برنامه، يك صفحه براي نمايش خروجي به سرعت باز شده و بسته ميشود و شما قادر به ديدن خروخي نخواهيد بود. براي اينكه بتوانيد خروجي برنامه را ببينيد، در انتهاي برنامه دستور زير را وارد نماييد :
Console.ReadLine();
استفاده از اين دستور باعث ميشود تا برنامه منتظر دريافت يك ورودي از كاربر بماند، كه در اين حالت شما ميتوانيد خروجي برنامه خود را ديده و سپس با زدن كليد Enter برنامه را خاتمه دهيد.
نكتة ديگري كه در مورد زبان برنامهنويسي C# بايد مورد توجه قرار دهيد اينست كه اين زبان Case Sensitive است، بدين معنا كه به حروف كوچك و بزرگ حساس است يعني براي مثال ReadLine با readLine متفاوت است به طوريكه اولي جزو دستورات زبان C# و دومي به عنوان يك نام براي متغير يا يك تابع كه از طرف كاربر تعريف شده است در نظر گرفته ميشود.
اعلان Namespace به سيستم اعلان مينمايد كه شما از توابع كتابخانهاي System جهت اجراي برنامهها خود استفاده مينماييد. دستوراتي مانند WriteLine و ReadLine جزو توابع كتابخانهاي System ميباشند. اغلب دستورات و توابع مهم و كليدي استفاده از كنسول ورودي/خروجي در اين كتابخانه ميباشد. در صورتيكه در ابتداي برنامه از using System استفاده نكنيد، يابد در ابتداي هر يك از دستورات برنامه كه مربوط اين كتابخانه است، از كلمة System استفاده نماييد. بعنوان مثال در صورت عدم استفاده از using System بايد از دستور System.Console.WriteLine() به جاي Console.WriteLine() استفاده نماييد.
تعريف كلاس،Class Welcome CSS، شامل تعريف دادهها(متغيرها) و متدها جهت اجراي برنامه است. يك كلاس، جزو معدود عناصر زبان C# است كه بوسيلة آن ميتوان به ايجاد يك شي (Object) از قبيل واسط ها (Interfaces) و ساختارها(Structures)، پرداخت. توضيحات بيشتر در اين زمينه در درسهاي آينده ذكر ميشوند. در اين برنامه كلاس هيچ داده و متغيري ندارد و تنها شامل يك متد است. اين متد، رفتار(Behavior) اين كلاس را مشخص ميكند.
متد درون اين كلاس بيان ميكند كه اين كلاس چه كاري را پس از اجرا شدن انجام خواهد داد. كلمة كليدي Main() كه نام متد اين كلاس نيز ميباشد جزو كلمات رزرو شده زبان C# است كه مشخص ميكند برنامه از كجا بايد آغاز به كار نمايد. وجود متد Main() در تمامي برنامههاي اجرايي ضروري است. در صورتيكه يك برنامه حاوي متد Main() نباشد بعنوان توابع سيستمي همانند dll هاي ويندوز در نظر گرفته ميشود.
قبل از كلمه ()Main كلمه ديگري با عنوان static آورده شده است. اين كلمه در اصطلاح Modifier ميگويند. استفاده از static براي متد Main() بيان ميدارد كه اين متد تنها در در همين كلاس قابل اجراست و هيچ نمونهاي (Instance) ديگري از روي آن قابل اجرا نميباشد. استفاده از static براي متد ()Main الزامي است زيرا در ابتداي آغاز برنامه هيچ نمونهاي از هيچ كلاس و شياي موجود نميباشد و تنها متد ()Main است كه اجرا ميشود. (در صورتيكه با برخي اصطلاحات اين متن از قبيل كلاس، شي، متد و نمونه آشنايي نداريد، اين به دليل آنست كه اين مفاهيم جزو مفاهيم اولية برنامهنويسي شيگرا (OOP) هستند. سعي ميكنم در درسهاي آينده به توضيح اين مفاهيم نيز بپردازم، ولي فعلاً در همين حد كافي ميباشد.)
هر متد بايد داراي يك مقدار بازگشتي باشد، يعني بايد مقداري را به سيستم بازگرداند، در اين مثال نوع بازگشتي void تعزيف شده است كه نشان دهنده آنست كه اين متد هيچ مقداري را باز نميگرداند يا به عبارت بهتر خروجي ندارد. همچنين هر متد ميتواند داراي پارامترهايي نيز باشد كه ليست پارامترهاي آن در داخل پرانتزهاي جلوي آن قرار ميگيرد. براي سادگي كار در اين برنامه متد ما داراي هيچ پارامتري نيست ولي در ادامة همين درس به معرفي پارامترها نيز ميپردازم.
متد ()Main رفتار و عمل خود را بوسيله (…)Console.WriteLine مشخص مينمايد. Console كلاسي در System است و ()WriteLine متدي در كلاس Console. در زبان C# از اپراتور "." (نقطه dot) جهت جداسازي زيرروتينها و زيرقسمتها استفاده ميكنيم. همانطور كه ملاحظه ميكنيد چون WriteLine() يك متد درون كلاس Console است به همين جهت از "." جهت جداسازي آن استفاده كردهايم.
در زبان C#، براي قرار دادن توضيحات در كد برنامه از // استفاده ميكنيم. بدين معنا كه كامپايلر در هنگام اجراي برنامه توجهي به اين توضيحات نميكند و اين توضيحات تنها به منظور بالا بردن خوانايي متن و جهت و كمك به فهم بهتر برنامه قرار ميگيرند. استفاده از // تنها در مواردي كاربرد دارد كه توضيحات شما بيش از يك خط نباشد. در صورت تمايل براي استفاده از توضيحات چند خطي بايد در ابتداي شروع توضيحات از /* و در انتها آن از */ استفاده نماييد. در اين حالت تمامي مطالبي كه بين /* */ قرار ميگيرند به عنوان توضيحات (Comments) در نظر گرفته ميشوند.
تمامي دستورات (Statements) با ";"، سمي كولون، پايان مييابند. كلاسها و متدها با } آغاز شده و با { خاتمه مييابند. تمامي دستورات بين { } يك بلوك را ميسازند.
بسياري از برنامهها از كاربر ورودي دريافت ميكنند. انواع گوناگوني از اين وروديها ميتوانند به عنوان پارامتري براي متد Main() در نظر گرفته شوند. ليست 2-1 برنامهاي را نشان ميدهد نام كاربر را از ورودي دريافت كرده و آن را بر روي صفحه نمايش ميدهد. اين ورودي به صورت پارامتري براي متد Main() در نظر گرفته شده است.
ليست 2-1 : برنامهاي كه ورودي را از كاربر، بعنوان پارامتر ()Main، دريافت ميكند.
// Namespace اعلان
using System;
// كلاس آغازين برنامه
class NamedWelcome
{
// آغاز اجرا برنامه
public static void Main(string[] args)
{
// نمايش بر روي صفحه
Console.WriteLine("Hello, {0}!", args[0]);
Console.WriteLine("Welcome to the C# Persian Tutorial!");
}
}
توجه داشته باشيد كه اين برنامه، ورودي را به صورت Command-Line دريافت ميكند و در هنگام اجراي برنامه بايد ورودي را در Command-Line وارد نماييد. در صورتيكه ورودي را وارد ننماييد برنامه دچار مشكل شده و متوقف خواهد شد.
همان طور كه در ليست 2-1 مشاهده مينماييد، پارامتر متد Main() با عنوان args مشخص شده است. با استفاده از اين نام در داخل متد ميتوان آن استفاده نمود. نوع اين پارامتر از نوع آرايهاي از نوع رشته (string[]) در نظر گرفته شده است. انواع(types) و آرايهها را در درسهاي بعدي بررسي ميكنيم. فعلاً بدانيد كه آرايه رشتهاي جهت نگهداري چندين كاراكتر مورد استفاده قرار ميگيرد. [] مشخص كننده آرايه هستند كه مانند يك ليست عمل ميكند.
همانطور كه ملاحظه ميكنيد در اين برنامه دو دستور Console.WriteLine(…) وجود دارد كه اولين دستور مقداري با دستور دوم متفاوت است. همانطور كه مشاهده ميكنيد داخل دستور Console.WriteLine(…) عبارتي به شكل {0} وجود دارد. اين آرگومان، نشان ميدهد كه به جاي آن چه مقداري بايد نمايش داده شود كه در اين جا args[0] نشان داده ميشود. عبارتي كه داخل " " قرار دارد عيناً در خروجي نمايش داده ميشود، به جاي آرگومان {0}، مقداري كه پس از " قرار دارد، قرار ميگيرد. حال به آرگومان بعدي يعني args[0] توجه كنيد. مقدار صفر داخل [] نشان ميدهد كه كدام عنصر از آرايه مورد استفاده است. در C# انديس آرايه از صفر شروع ميشود به همين جهت براي دسترسي به اولين عنصر آرايه بايد از انديس صفر استفاده كنيم.(همانطور كه قبلاً نيز كفتم آرايهها را در درسهاي آينده توضيح خواهم داد، هدف از اين درس تنها آشنايي با C# است.!)
مجدداً به آرگومان {0} بازگرديم. اين آرگومان نشان مي دهد كه يك مقدار بايد در رشته خروجي قرار گيرد، اين مقدار همان args[0] است. اگر شما اين برنامه را از طريق Command-Line اجرا نماييد خروجي شبيه به زير خواهيد گرفت :
>Hello!, Meysam!
>Welcome to C# Persian Tutorial!
همان گونه كه ميبينيد، پس از اجراي برنامه نام شما كه از طريق Command-Line آنرا وارد نمودهايد در خروجي ظاهر ميشود. استفاده از آرگومان {n}، كه در آن n يك مقدار عددي است، جهت فرمت دادن به متن خروجي است كه بر روي صفحه به نمايش در ميآيد. مقدار n از صفر آغاز شده و به ترتيب افزايش ميبايد. به مثال زير توجه كنيد :
Console.WriteLine("Hello! ,{0} ,{1}, {2}",args[0],args[1],args[2]);
اين خط از برنامه سه مقدار [args[0],args[1],args[2 را در خروجي به ترتيب نمايش ميدهد. ملاحظه مينماييد كه چون 3 مقدار را ميخواهيم نمايش دهيم، سه بار از آرگومان {n} استفاده كردهايم و هر بار يك واحد به مقدار قبلي افزودهايم. در آينده بيشتر با اين مفاهيم آشنا ميشويم.
مطلبي كه بايد در مورد ليست 2-1 به آن توجه شود آنست كه اين برنامه تنها از طريق Command-Lineقابل اجراست و در صورتيكه كاربر از اين مطلب كه برنامه بايد داراي ورودي به صورت Command-Line باشد، بي اطلاع باشد و ورودي را در Command-Line وارد نكند، برنامه متوقف شده و اجرا نميشود. پس براي رفع چنين مشكلي بايد از روش بهتري جهت دريافت ورودي از كاربر استفاده كرد.
ليست 3-1 : يك برنامه كه قابليت محاوره با كاربر را دارد.
// Namespace اعلان
using System;
// كلاس آغازين برنامه
class InteractiveWelcome
{
//آغاز اجراي برنامه
public static void Main()
{
// متني بر روي صفحه نمايش داده ميشود
Console.Write("What is your name?: ");
//متني نمايش داده شده و برنامه منتظر دريافت ورودي ميماند
Console.Write("Hello, {0}! ", Console.ReadLine());
Console.WriteLine("Welcome to the C# Persian Tutorial!");
}
}
همانطوريكه در اين برنامه ديده مي شود، متد Main() داراي پارامتر نيست. در عوض يك خط به متن برنامه ليست 2-1 اضافه شده است. در اولين خط از اين برنامه، متني با عنوان اينكه نام شما چيست؟ بر روي صفحه ظاهر ميشود. سپس در خط بعدي پس از نوشتن كلمه Hello, ، برنامه منتظر دريافت ورودي از كاربر ميشود. بدين معني كه اين بار تا زمانيكه كاربر متني را به عنوان نام خود وارد نكند اجراي برنامه به پيش نخواهد رفت و خط بعدي اجرا نميشود. اين برنامه روش ايجاد ارتباط از طريق برنامه با كاربر را نمايش ميدهد. در اين مثال كاربر دقيقاً متوجه ميشود كه چه زماني بايد اطلاعات را وارد نمايد و اين اطلاعات چه بايد باشد در حاليكه در مثال قبل چنين نبود. همانگونه كه ميبينيد در اين برنامه آرگومان {0} مستقيماً از طريق دستور Console.ReadLine() دريافت ميشود و بلافاصله در خروجي نمايش داده ميشود. دستور ReadLine() نيز يكي از متدهاي كلاس Console است كه بوسيله آن رشته ورودي خوانده ميشود.
خروجي برنامه فوق به شكل زير است :
What is your name?:
(سپس برنامه منتظر دريافت متني از ورودي توسط كاربر ميماند)
(پس از اينكه كاربر رشتهاي را وارد كرد و كليدEnter را فشار داد، متن زير نمايش داده ميشود.)
Hello, Meysam!
(سپس اجراي برنامه به دستور بعدي منتقل ميشود)
Welcome to the C# Persian Tutorial!
خروجي كامل برنامه :
What is your name?:
Hello, Meysam! Welcome to the C# Persian Tutorial!
توجه كنيد كه ReadLine() به عنوان يك متد، مقداري را به سيستم بازميگرداند. اين مقدار در اين برنامه به آرگومان {0} برگردانده ميشود. اين خط از برنامه را ميتوان طور ديگري هم نوشت :
string myName=Console.ReadLine();
Console.WriteLine("Hello, {0}!",myName);
در اين حالت ما يك متغير از نوع رشته با نام myName تعريف كردهايم كه مقدار ورودي در آن ذخيره ميشود و سپس از اين مقدار به عنوان مقداري كه {0} ميپذيرد استفاده كردهايم.
در اين درس آموختيد كه ساختار كلي يك برنامه C# چگونه است. هر برنامه C# از يك كلاس اصلي تشكيل ميشود كه اين كلاس شامل دادهها و متغيرها و متدهايي ميباشد. متد آغازين برنامه كه برنامه با آن شروع به اجرا ميكند، متد Main() است. با استفاده از توابع كتابخانهاي مينوان به كلاسها و متدهاي C# دسترسي پيدا كرد. از جمله اين توابع System بود كه يكي از كلاسهاي آن Console و چند متد اين كلاس، متدهاي WriteLine() و ReadLine() بودند.
فهم ساختار پايهاي يك برنامه C#
آشنايي با Namespace
آشنايي با كلاس (Class)
آشنايي با عملكرد متد Main()
آشنايي با ورودي/خروجي يا I/O
ليست 1-1، يك برنامة ساده با عنوان Welcome در زبان C#
// Namespace اعلان
using System;
// كلاس آغازين برنامه
class WelcomeCSS
{
// آغاز كار اجراي برنامه
public static void Main()
{
// نوشتن متن در خروجي
Console.WriteLine("Welcome to the C# Persian Tutorial!");
}
}
برنامة ليست 1-1 داراي 4 پارامتر اصلي است، اعلان Namespace، كلاس، متد Main() و يك دستور زبان C#.
در همين جا بايد به يك نكته اشاره كنم، براي زبان C# همانند بيشتر زبانهاي برنامهسازي دو نوع كامپايلر وجود دارد. يك نوع كامپايلر كه به كامپايلر Command Line معروف است و نوع ديگر كامپايلر Visual است. كامپايلرهاي Command Line محيطي شبيه به محيط DOS دارند و با دادن يك سري دستورات به اجرا در ميآيند. كامپايلرهاي Visual محيطي همانند ويندوز دارند كه با دارا بودن محيط گرافيكي و ابزارهاي خاص، برنامهنويس را در امر برنامهسازي كمك ميكنند. از نمونههاي هر يك از كامپايلرها، ميتوان به Microsoft C# Command Line Compiler كه يك كامپايلر Command Line و Microsoft Visual C# كه يك كامپايلر Visual است، اشاره كرد. البته در حال حاضر بيشتر از كامپايلرهاي ويژوال استفاده ميشود.
من سعي ميكنم در آينده به توضيح محيط Visual C# و Visual Studio.Net بپردازم. اما فعلاً براي اجراي برنامهها ميتوانيد از Visual Studio.Net استفاده كنيد. پس از نصب آن، وارد محيط C# شده و در قسمت انتخاب برنامة جديد گزينة Console را جهت اجراي برنامهها انتخاب نماييد.
براي اين درس، فعلاً به توضيحات بيشتر دربارة محيط ويژوال نميپردازم اما در آينده به توضيح كامل محيط Visual Studio.Net خواهم پرداخت.
براي اجراي كد بالا در صورتيكه از محيط ويژوال استفاده ميكنيد بايد بر روي دكمة Run كليك كنيد و در صورتيكه كامپايلر Command Line داريد با دستور زير ميتوانيد برنامه را اجرا كنيد : csc Welcome.cs
پس از اجراي برنامه، كامپايلر براي شما يك فايل قابل اجرا(Executable) تحت نام Welcome.exe توليد ميكند.
نكته : در صورتيكه از Visual Studio.Net(VS.Net) استفاده كنيد، پس از اجراي برنامه، يك صفحه براي نمايش خروجي به سرعت باز شده و بسته ميشود و شما قادر به ديدن خروخي نخواهيد بود. براي اينكه بتوانيد خروجي برنامه را ببينيد، در انتهاي برنامه دستور زير را وارد نماييد :
Console.ReadLine();
استفاده از اين دستور باعث ميشود تا برنامه منتظر دريافت يك ورودي از كاربر بماند، كه در اين حالت شما ميتوانيد خروجي برنامه خود را ديده و سپس با زدن كليد Enter برنامه را خاتمه دهيد.
نكتة ديگري كه در مورد زبان برنامهنويسي C# بايد مورد توجه قرار دهيد اينست كه اين زبان Case Sensitive است، بدين معنا كه به حروف كوچك و بزرگ حساس است يعني براي مثال ReadLine با readLine متفاوت است به طوريكه اولي جزو دستورات زبان C# و دومي به عنوان يك نام براي متغير يا يك تابع كه از طرف كاربر تعريف شده است در نظر گرفته ميشود.
اعلان Namespace به سيستم اعلان مينمايد كه شما از توابع كتابخانهاي System جهت اجراي برنامهها خود استفاده مينماييد. دستوراتي مانند WriteLine و ReadLine جزو توابع كتابخانهاي System ميباشند. اغلب دستورات و توابع مهم و كليدي استفاده از كنسول ورودي/خروجي در اين كتابخانه ميباشد. در صورتيكه در ابتداي برنامه از using System استفاده نكنيد، يابد در ابتداي هر يك از دستورات برنامه كه مربوط اين كتابخانه است، از كلمة System استفاده نماييد. بعنوان مثال در صورت عدم استفاده از using System بايد از دستور System.Console.WriteLine() به جاي Console.WriteLine() استفاده نماييد.
تعريف كلاس،Class Welcome CSS، شامل تعريف دادهها(متغيرها) و متدها جهت اجراي برنامه است. يك كلاس، جزو معدود عناصر زبان C# است كه بوسيلة آن ميتوان به ايجاد يك شي (Object) از قبيل واسط ها (Interfaces) و ساختارها(Structures)، پرداخت. توضيحات بيشتر در اين زمينه در درسهاي آينده ذكر ميشوند. در اين برنامه كلاس هيچ داده و متغيري ندارد و تنها شامل يك متد است. اين متد، رفتار(Behavior) اين كلاس را مشخص ميكند.
متد درون اين كلاس بيان ميكند كه اين كلاس چه كاري را پس از اجرا شدن انجام خواهد داد. كلمة كليدي Main() كه نام متد اين كلاس نيز ميباشد جزو كلمات رزرو شده زبان C# است كه مشخص ميكند برنامه از كجا بايد آغاز به كار نمايد. وجود متد Main() در تمامي برنامههاي اجرايي ضروري است. در صورتيكه يك برنامه حاوي متد Main() نباشد بعنوان توابع سيستمي همانند dll هاي ويندوز در نظر گرفته ميشود.
قبل از كلمه ()Main كلمه ديگري با عنوان static آورده شده است. اين كلمه در اصطلاح Modifier ميگويند. استفاده از static براي متد Main() بيان ميدارد كه اين متد تنها در در همين كلاس قابل اجراست و هيچ نمونهاي (Instance) ديگري از روي آن قابل اجرا نميباشد. استفاده از static براي متد ()Main الزامي است زيرا در ابتداي آغاز برنامه هيچ نمونهاي از هيچ كلاس و شياي موجود نميباشد و تنها متد ()Main است كه اجرا ميشود. (در صورتيكه با برخي اصطلاحات اين متن از قبيل كلاس، شي، متد و نمونه آشنايي نداريد، اين به دليل آنست كه اين مفاهيم جزو مفاهيم اولية برنامهنويسي شيگرا (OOP) هستند. سعي ميكنم در درسهاي آينده به توضيح اين مفاهيم نيز بپردازم، ولي فعلاً در همين حد كافي ميباشد.)
هر متد بايد داراي يك مقدار بازگشتي باشد، يعني بايد مقداري را به سيستم بازگرداند، در اين مثال نوع بازگشتي void تعزيف شده است كه نشان دهنده آنست كه اين متد هيچ مقداري را باز نميگرداند يا به عبارت بهتر خروجي ندارد. همچنين هر متد ميتواند داراي پارامترهايي نيز باشد كه ليست پارامترهاي آن در داخل پرانتزهاي جلوي آن قرار ميگيرد. براي سادگي كار در اين برنامه متد ما داراي هيچ پارامتري نيست ولي در ادامة همين درس به معرفي پارامترها نيز ميپردازم.
متد ()Main رفتار و عمل خود را بوسيله (…)Console.WriteLine مشخص مينمايد. Console كلاسي در System است و ()WriteLine متدي در كلاس Console. در زبان C# از اپراتور "." (نقطه dot) جهت جداسازي زيرروتينها و زيرقسمتها استفاده ميكنيم. همانطور كه ملاحظه ميكنيد چون WriteLine() يك متد درون كلاس Console است به همين جهت از "." جهت جداسازي آن استفاده كردهايم.
در زبان C#، براي قرار دادن توضيحات در كد برنامه از // استفاده ميكنيم. بدين معنا كه كامپايلر در هنگام اجراي برنامه توجهي به اين توضيحات نميكند و اين توضيحات تنها به منظور بالا بردن خوانايي متن و جهت و كمك به فهم بهتر برنامه قرار ميگيرند. استفاده از // تنها در مواردي كاربرد دارد كه توضيحات شما بيش از يك خط نباشد. در صورت تمايل براي استفاده از توضيحات چند خطي بايد در ابتداي شروع توضيحات از /* و در انتها آن از */ استفاده نماييد. در اين حالت تمامي مطالبي كه بين /* */ قرار ميگيرند به عنوان توضيحات (Comments) در نظر گرفته ميشوند.
تمامي دستورات (Statements) با ";"، سمي كولون، پايان مييابند. كلاسها و متدها با } آغاز شده و با { خاتمه مييابند. تمامي دستورات بين { } يك بلوك را ميسازند.
بسياري از برنامهها از كاربر ورودي دريافت ميكنند. انواع گوناگوني از اين وروديها ميتوانند به عنوان پارامتري براي متد Main() در نظر گرفته شوند. ليست 2-1 برنامهاي را نشان ميدهد نام كاربر را از ورودي دريافت كرده و آن را بر روي صفحه نمايش ميدهد. اين ورودي به صورت پارامتري براي متد Main() در نظر گرفته شده است.
ليست 2-1 : برنامهاي كه ورودي را از كاربر، بعنوان پارامتر ()Main، دريافت ميكند.
// Namespace اعلان
using System;
// كلاس آغازين برنامه
class NamedWelcome
{
// آغاز اجرا برنامه
public static void Main(string[] args)
{
// نمايش بر روي صفحه
Console.WriteLine("Hello, {0}!", args[0]);
Console.WriteLine("Welcome to the C# Persian Tutorial!");
}
}
توجه داشته باشيد كه اين برنامه، ورودي را به صورت Command-Line دريافت ميكند و در هنگام اجراي برنامه بايد ورودي را در Command-Line وارد نماييد. در صورتيكه ورودي را وارد ننماييد برنامه دچار مشكل شده و متوقف خواهد شد.
همان طور كه در ليست 2-1 مشاهده مينماييد، پارامتر متد Main() با عنوان args مشخص شده است. با استفاده از اين نام در داخل متد ميتوان آن استفاده نمود. نوع اين پارامتر از نوع آرايهاي از نوع رشته (string[]) در نظر گرفته شده است. انواع(types) و آرايهها را در درسهاي بعدي بررسي ميكنيم. فعلاً بدانيد كه آرايه رشتهاي جهت نگهداري چندين كاراكتر مورد استفاده قرار ميگيرد. [] مشخص كننده آرايه هستند كه مانند يك ليست عمل ميكند.
همانطور كه ملاحظه ميكنيد در اين برنامه دو دستور Console.WriteLine(…) وجود دارد كه اولين دستور مقداري با دستور دوم متفاوت است. همانطور كه مشاهده ميكنيد داخل دستور Console.WriteLine(…) عبارتي به شكل {0} وجود دارد. اين آرگومان، نشان ميدهد كه به جاي آن چه مقداري بايد نمايش داده شود كه در اين جا args[0] نشان داده ميشود. عبارتي كه داخل " " قرار دارد عيناً در خروجي نمايش داده ميشود، به جاي آرگومان {0}، مقداري كه پس از " قرار دارد، قرار ميگيرد. حال به آرگومان بعدي يعني args[0] توجه كنيد. مقدار صفر داخل [] نشان ميدهد كه كدام عنصر از آرايه مورد استفاده است. در C# انديس آرايه از صفر شروع ميشود به همين جهت براي دسترسي به اولين عنصر آرايه بايد از انديس صفر استفاده كنيم.(همانطور كه قبلاً نيز كفتم آرايهها را در درسهاي آينده توضيح خواهم داد، هدف از اين درس تنها آشنايي با C# است.!)
مجدداً به آرگومان {0} بازگرديم. اين آرگومان نشان مي دهد كه يك مقدار بايد در رشته خروجي قرار گيرد، اين مقدار همان args[0] است. اگر شما اين برنامه را از طريق Command-Line اجرا نماييد خروجي شبيه به زير خواهيد گرفت :
>Hello!, Meysam!
>Welcome to C# Persian Tutorial!
همان گونه كه ميبينيد، پس از اجراي برنامه نام شما كه از طريق Command-Line آنرا وارد نمودهايد در خروجي ظاهر ميشود. استفاده از آرگومان {n}، كه در آن n يك مقدار عددي است، جهت فرمت دادن به متن خروجي است كه بر روي صفحه به نمايش در ميآيد. مقدار n از صفر آغاز شده و به ترتيب افزايش ميبايد. به مثال زير توجه كنيد :
Console.WriteLine("Hello! ,{0} ,{1}, {2}",args[0],args[1],args[2]);
اين خط از برنامه سه مقدار [args[0],args[1],args[2 را در خروجي به ترتيب نمايش ميدهد. ملاحظه مينماييد كه چون 3 مقدار را ميخواهيم نمايش دهيم، سه بار از آرگومان {n} استفاده كردهايم و هر بار يك واحد به مقدار قبلي افزودهايم. در آينده بيشتر با اين مفاهيم آشنا ميشويم.
مطلبي كه بايد در مورد ليست 2-1 به آن توجه شود آنست كه اين برنامه تنها از طريق Command-Lineقابل اجراست و در صورتيكه كاربر از اين مطلب كه برنامه بايد داراي ورودي به صورت Command-Line باشد، بي اطلاع باشد و ورودي را در Command-Line وارد نكند، برنامه متوقف شده و اجرا نميشود. پس براي رفع چنين مشكلي بايد از روش بهتري جهت دريافت ورودي از كاربر استفاده كرد.
ليست 3-1 : يك برنامه كه قابليت محاوره با كاربر را دارد.
// Namespace اعلان
using System;
// كلاس آغازين برنامه
class InteractiveWelcome
{
//آغاز اجراي برنامه
public static void Main()
{
// متني بر روي صفحه نمايش داده ميشود
Console.Write("What is your name?: ");
//متني نمايش داده شده و برنامه منتظر دريافت ورودي ميماند
Console.Write("Hello, {0}! ", Console.ReadLine());
Console.WriteLine("Welcome to the C# Persian Tutorial!");
}
}
همانطوريكه در اين برنامه ديده مي شود، متد Main() داراي پارامتر نيست. در عوض يك خط به متن برنامه ليست 2-1 اضافه شده است. در اولين خط از اين برنامه، متني با عنوان اينكه نام شما چيست؟ بر روي صفحه ظاهر ميشود. سپس در خط بعدي پس از نوشتن كلمه Hello, ، برنامه منتظر دريافت ورودي از كاربر ميشود. بدين معني كه اين بار تا زمانيكه كاربر متني را به عنوان نام خود وارد نكند اجراي برنامه به پيش نخواهد رفت و خط بعدي اجرا نميشود. اين برنامه روش ايجاد ارتباط از طريق برنامه با كاربر را نمايش ميدهد. در اين مثال كاربر دقيقاً متوجه ميشود كه چه زماني بايد اطلاعات را وارد نمايد و اين اطلاعات چه بايد باشد در حاليكه در مثال قبل چنين نبود. همانگونه كه ميبينيد در اين برنامه آرگومان {0} مستقيماً از طريق دستور Console.ReadLine() دريافت ميشود و بلافاصله در خروجي نمايش داده ميشود. دستور ReadLine() نيز يكي از متدهاي كلاس Console است كه بوسيله آن رشته ورودي خوانده ميشود.
خروجي برنامه فوق به شكل زير است :
What is your name?:
(سپس برنامه منتظر دريافت متني از ورودي توسط كاربر ميماند)
(پس از اينكه كاربر رشتهاي را وارد كرد و كليدEnter را فشار داد، متن زير نمايش داده ميشود.)
Hello, Meysam!
(سپس اجراي برنامه به دستور بعدي منتقل ميشود)
Welcome to the C# Persian Tutorial!
خروجي كامل برنامه :
What is your name?:
Hello, Meysam! Welcome to the C# Persian Tutorial!
توجه كنيد كه ReadLine() به عنوان يك متد، مقداري را به سيستم بازميگرداند. اين مقدار در اين برنامه به آرگومان {0} برگردانده ميشود. اين خط از برنامه را ميتوان طور ديگري هم نوشت :
string myName=Console.ReadLine();
Console.WriteLine("Hello, {0}!",myName);
در اين حالت ما يك متغير از نوع رشته با نام myName تعريف كردهايم كه مقدار ورودي در آن ذخيره ميشود و سپس از اين مقدار به عنوان مقداري كه {0} ميپذيرد استفاده كردهايم.
در اين درس آموختيد كه ساختار كلي يك برنامه C# چگونه است. هر برنامه C# از يك كلاس اصلي تشكيل ميشود كه اين كلاس شامل دادهها و متغيرها و متدهايي ميباشد. متد آغازين برنامه كه برنامه با آن شروع به اجرا ميكند، متد Main() است. با استفاده از توابع كتابخانهاي مينوان به كلاسها و متدهاي C# دسترسي پيدا كرد. از جمله اين توابع System بود كه يكي از كلاسهاي آن Console و چند متد اين كلاس، متدهاي WriteLine() و ReadLine() بودند.