SlideShare a Scribd company logo
1 of 25
Download to read offline
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
1
‫سازی‬ ‫برنامه‬ ‫درس‬ ‫جزوه‬‫دو‬
C#
:‫کننده‬ ‫تهیه‬‫محمدی‬-‫زاهدی‬
‫هنرستان‬‫کاشان‬ ‫کتابچی‬ ‫ای‬ ‫حرفه‬ ‫فنی‬
‫بهار‬95
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
2
‫مطالب‬ ‫تکمیل‬ ‫و‬ ‫یادآوری‬ :‫اول‬ ‫فصل‬
‫سازی‬ ‫برنامه‬ ‫در‬1‫مانند‬ ‫محیطی‬ ‫در‬ ‫توان‬ ‫می‬ ‫را‬ ‫برنامه‬ .‫شد‬ ‫گفته‬ ‫برنامه‬ ‫نوشتن‬ ‫روش‬NotePad‫سپس‬ ‫و‬ ‫نوشت‬‫در‬‫سطر‬‫فرمان‬‫ی‬ ‫پوشه‬ ‫به‬ ‫ورود‬ ‫با‬
‫برنامه‬‫برنامه‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫و‬CSC.exe‫روش‬ ‫این‬ .‫نماییم‬ ‫کمپایل‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫برنامه‬‫بس‬‫ی‬‫ار‬‫وقت‬‫گ‬‫ی‬‫ر‬‫است‬‫و‬‫ع‬‫ی‬‫ب‬‫ی‬‫اب‬‫ی‬‫برنامه‬‫ها‬‫ی‬‫بزرگ‬‫ن‬‫ی‬‫ز‬‫دشوار‬
‫است‬.
‫روش‬‫دیگری‬‫که‬‫می‬‫توان‬‫برای‬‫تولید‬‫فایل‬‫اجرایی‬‫برنامه‬‫استفاده‬،‫کرد‬‫استفاده‬‫از‬‫یک‬‫محیط‬‫برنامه‬‫نویسی‬‫متمرکز‬(IDE)‫است‬‫که‬‫برای‬‫نوشتن‬
‫وعیب‬‫یابی‬‫راحت‬‫تر‬‫برنامه‬،‫ها‬‫طراحی‬‫شده‬‫افزار‬ ‫نرم‬ ‫از‬ ‫یک‬ ‫سازی‬ ‫برنامه‬ ‫در‬ .‫است‬Visual Studio‫نسخه‬Express‫بود‬ ‫رایگان‬ ‫که‬‫نمودیم‬ ‫استفاده‬ ،.
‫البته‬IDE‫شوند‬ ‫می‬ ‫استفاده‬ ‫منظور‬ ‫بدین‬ ‫که‬ ‫باشند‬ ‫می‬ ‫نیز‬ ‫دیگری‬ ‫های‬.‫مانند‬SharpDevelop‫و‬ ‫دارد‬ ‫باز‬ ‫متن‬ ‫و‬ ‫رایگان‬ ‫نویسی‬ ‫برنامه‬ ‫محیط‬ ‫که‬
‫به‬ ‫نسبت‬ ‫نیز‬ ‫آن‬ ‫حجم‬Visual Studio.‫باشد‬ ‫می‬ ‫کمتر‬
‫امکان‬IntelliSense(SenseIntelligent)‫در‬VS:
‫یکی‬‫از‬‫امکانات‬‫ارزشمند‬‫در‬‫هنگام‬‫نوشتن‬‫باشد‬ ‫می‬ ‫برنامه‬‫که‬‫در‬‫هنگام‬‫تایپ‬‫دستورات‬،‫برنامه‬‫با‬‫نوشتن‬‫چند‬‫حرف‬‫از‬‫نام‬‫دستور‬(‫نام‬،‫کالس‬،‫متد‬)...
‫منو‬‫یا‬‫لیستی‬‫ظاهر‬‫می‬‫شود‬‫که‬‫در‬‫آن‬‫نام‬‫متدها‬‫و‬‫دستورات‬‫مرتبط‬‫نشان‬‫داده‬‫شده‬‫اند‬‫سرعت‬ ‫ویژگی‬ ‫این‬ .‫نوشتن‬.‫برد‬ ‫می‬ ‫باال‬ ‫را‬ ‫برنامه‬ ‫دستورات‬
.‫دارد‬ ‫زیادی‬ ‫تاثیر‬ ‫دستورات‬ ‫امالی‬ ‫صحیح‬ ‫نوشتن‬ ‫در‬ ‫همچنین‬‫کلید‬ ‫زدن‬ ‫با‬TAB.‫گیرد‬ ‫می‬ ‫قرار‬ ‫برنامه‬ ‫در‬ ‫نظر‬ ‫مورد‬ ‫دستور‬ ‫فاصله‬ ‫یا‬‫زدن‬ ‫با‬ ‫البته‬
‫کلید‬CTRL+Space.‫شود‬ ‫می‬ ‫ظاهر‬ ‫لیست‬ ‫نیز‬
‫های‬ ‫گزینه‬ ‫زیر‬ ‫مسیر‬ ‫از‬ ‫بودن‬ ‫غیرفعال‬ ‫صورت‬ ‫در‬ ‫و‬ ‫باشد‬ ‫می‬ ‫فعال‬ ‫خودکار‬ ‫بصورت‬ ‫ویژگی‬ ‫این‬Auto list members‫و‬Parameter information‫را‬
‫نمود‬ ‫فعال‬ ‫باید‬:
ToolsOptionsText EditorC# General
‫کلید‬ ‫برنامه‬ ‫اجرای‬ ‫برای‬F5(Start Debugging)‫یا‬Ctrl+F5(Start Without Debugging).‫کنید‬ ‫انتخاب‬ ‫را‬‫چیست؟‬ ‫کلید‬ ‫دو‬ ‫این‬ ‫تفاوت‬
: ‫داده‬ ‫نوع‬ ‫تبدیل‬Type Casting
.‫شود‬ ‫می‬ ‫مشخص‬ ‫اش‬ ‫داده‬ ‫نوع‬ ‫توسط‬ ‫متغیر‬ ‫هر‬ ‫گنجایش‬ ‫و‬ ‫اندازه‬( ‫ضمنی‬ ‫تبدیل‬implicit‫امکان‬ ‫صورت‬ ‫در‬ ‫شارپ‬ ‫سی‬ ‫در‬ ‫یکدیگر‬ ‫به‬ ‫داده‬ ‫انواع‬ )
‫گیرد‬ ‫می‬ ‫انجام‬.‫نوع‬ ‫متغیر‬ ‫مثال‬int‫نوع‬ ‫متغیر‬ ‫به‬ ‫را‬double‫یا‬float‫یا‬long‫یا‬decimal‫ام‬ )‫شود‬ ‫می‬ ‫انجام‬ ‫ضمنی‬ ‫نمود(بصورت‬ ‫واگذار‬ ‫توان‬ ‫می‬‫ا‬
‫نوع‬ ‫متغیر‬ ‫توان‬ ‫نمی‬int‫نوع‬ ‫متغیر‬ ‫به‬ ‫را‬ulong‫یا‬short‫یا‬char.‫نمود‬ ‫واگذار‬
: ‫توجه‬
‫نوع‬ ‫متغیر‬ ‫توان‬ ‫نمی‬ ‫گاه‬ ‫هیچ‬ ‫ضمنی‬ ‫تبدیل‬ ‫در‬double.‫نمود‬ ‫واگذار‬ ‫دیگر‬ ‫نوع‬ ‫متغیر‬ ‫به‬ ‫را‬
‫نوع‬ ‫متغیر‬ ‫ضمنی‬ ‫تبدیل‬ ‫در‬float‫را‬‫نوع‬ ‫متغیر‬ ‫به‬ ‫توان‬ ‫می‬ ‫فقط‬double.‫نمود‬ ‫واگذار‬
‫نوع‬ ‫متغیر‬ ‫توان‬ ‫نمی‬ ‫گاه‬ ‫هیچ‬ ‫ضمنی‬ ‫تبدیل‬ ‫در‬decimal.‫نمود‬ ‫واگذار‬ ‫دیگر‬ ‫نوع‬ ‫متغیر‬ ‫به‬ ‫را‬
‫یا‬ ‫صریح‬ ‫تبدیل‬ ‫از‬ ‫توان‬ ‫می‬ ‫مشکل‬ ‫این‬ ‫رفع‬ ‫برای‬type Casting.‫نمود‬ ‫استفاده‬
‫ت‬ ‫جهت‬ ‫ویژگی‬ ‫این‬‫صریح‬ ‫بصورت‬ ‫دیگر‬ ‫نوع‬ ‫به‬ ‫نوعی‬ ‫بدیل‬‫اگر‬ ‫مثل‬ ‫بعنوان‬ .‫شود‬ ‫می‬ ‫استفاده‬x‫نوع‬ ‫از‬byte‫یا‬short‫دستور‬ ‫باشد‬x=x+1;‫دارد‬ ‫خطا‬
‫نوع‬ ‫از‬ ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫صحیح‬ ‫اعداد‬ ‫شارپ‬ ‫سی‬ ‫در‬ ‫زیرا‬int(4‫بایت‬)‫باشند‬ ‫می‬‫دانیم‬ ‫می‬ ‫طرفی‬ ‫از‬ ‫و‬‫م‬‫بز‬ ‫گنجایش‬ ‫با‬ ‫قدار‬‫ر‬‫در‬ ‫توان‬ ‫نمی‬ ‫را‬ ‫گتر‬
‫سایز‬ ‫با‬ ‫متغیر‬‫داد‬ ‫قرار‬ ‫کوچکتر‬.‫نمود‬ ‫استفاده‬ ‫نوع‬ ‫تبدیل‬ ‫از‬ ‫توان‬ ‫می‬ ‫مشکل‬ ‫این‬ ‫رفع‬ ‫برای‬.
‫عبارت‬‫مبدأ‬)‫نوع‬‫داده‬‫مقصد‬(‫مقصد‬ ‫متغیر‬ =
‫اگر‬ ‫پس‬X‫نوع‬ ‫از‬short(2‫باشد‬ ‫می‬ ‫صحیح‬ ‫زیر‬ ‫دستور‬ ‫باشد‬ )‫بایت‬x=(short)(x+1);
‫مثال‬1:
int i = 2; float f = 4.6f; double d = 0.58e1;
i = (int)f + (int)d; Console.WriteLine(i); //9
i = (int)(f + d); Console.WriteLine(i); //10
f = (float)(i + d); Console.WriteLine(f); //15.8
‫مثال‬2:
char x = 'B'; int a = 2;
a = --x + a; Console.WriteLine("{0} ** {1}", a, (char)a); //67 ** C
‫دستور‬ ‫آیا‬ ،‫شده‬ ‫ارائه‬ ‫مطالب‬ ‫به‬ ‫توجه‬ ‫با‬ )‫سوال‬age=age+1;‫و‬++age;‫هستند؟‬ ‫هم‬ ‫شبیه‬ ‫دقیقا‬
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
3
‫نکته‬1:‫روش‬ ‫این‬‫را‬‫نوع‬ ‫تبدیل‬ ‫برای‬‫به‬ ‫خاصی‬‫ای‬ ‫رشته‬‫عکس‬ ‫بر‬ ‫و‬‫نمود‬ ‫استفاده‬ ‫توان‬ ‫نمی‬.
‫نکته‬2:‫عددی‬ ‫به‬ ‫ای‬ ‫رشته‬ ‫نوع‬ ‫تبدیل‬ ‫برای‬‫کراکتری‬ ‫یا‬‫متد‬ ‫از‬ ‫باید‬Parse‫کرد‬ ‫استفاده‬.
string s = Console.ReadLine();
short x = short.Parse(s);
‫نکته‬3:‫نوع‬ ‫هر‬ ‫تبدیل‬ ‫برای‬‫متد‬ ‫از‬ ‫ای‬ ‫رشته‬ ‫نوع‬ ‫به‬ ‫ای‬ ‫رشته‬ ‫غیر‬ ‫ی‬ ‫داده‬ToString()‫شود‬ ‫می‬ ‫استفاده‬.
string s; double d = 12.5;
s = d.ToString();
‫نکته‬4:‫اگر‬‫متد‬Parse‫نتواند‬‫کند‬ ‫تبدیل‬ ‫نظر‬ ‫مورد‬ ‫نوع‬ ‫به‬ ‫ای‬ ‫رشته‬ ‫از‬ ‫را‬ ‫داده‬،‫اجرا‬ ‫زمان‬ ‫خطای‬،‫شود‬ ‫می‬ ‫متوقف‬ ‫برنامه‬ ‫و‬ ‫شد‬ ‫خواهد‬ ‫داده‬.‫مثال‬
string s = "12a3";
int i = int.Parse(s);
‫صورت‬ ‫این‬ ‫در‬‫توان‬ ‫می‬‫به‬‫جای‬‫استفاده‬‫از‬‫متد‬Parse،‫از‬‫متد‬TryParse‫استفاده‬.‫شود‬‫این‬‫متد‬‫اگر‬‫ت‬‫بدیل‬‫انجام‬‫شود‬،‫مقدار‬‫تبدیل‬‫شده‬‫را‬‫به‬
‫ورودی‬‫دوم‬‫خود‬‫می‬‫ریزد‬‫و‬‫اگر‬‫موفق‬‫به‬‫تبدیل‬‫عدد‬‫نشود‬‫خطایی‬‫را‬‫نمایش‬‫نمی‬‫دهد‬‫و‬‫برنامه‬‫را‬‫قطع‬‫نمی‬‫کند‬‫بلکه‬‫با‬‫تولید‬‫یک‬‫مقدار‬‫منطقی‬
False،‫مشکل‬‫در‬‫تبدیل‬‫عدد‬‫را‬‫به‬‫اطالع‬‫برنامه‬‫نویس‬‫می‬‫رساند‬‫و‬‫برنامه‬‫نویس‬‫با‬‫دریافت‬‫این‬‫مقدار‬‫متوجه‬‫می‬‫شود‬.
:‫شود‬ ‫می‬ ‫صادر‬ ‫مناسب‬ ‫پیغام‬ ‫نکند‬ ‫وارد‬ ‫عدد‬ ، ‫داده‬ ‫ورود‬ ‫هنگام‬ ‫کاربر‬ ‫زیر‬ ‫برنامه‬ ‫در‬ ‫اگر‬ ،‫مثال‬ ‫عنوان‬ ‫به‬
string s = Console.ReadLine();
int i;
if (int.TryParse(s, out i))
Console.WriteLine("{0} is valid Number",i);
else
Console.WriteLine("{0} is invalid number",s);
‫نکته‬5:‫متد‬ ‫در‬TryParse‫کلمه‬ ‫نوشتن‬out‫کند‬ ‫می‬ ‫دریافت‬ ‫را‬ ‫مقداری‬ ‫پارامتر‬ ‫این‬ ‫که‬ ‫است‬ ‫مفهوم‬ ‫این‬ ‫به‬ ‫و‬ ‫است‬ ‫ضروری‬ ‫عددی‬ ‫متغیر‬ ‫از‬ ‫قبل‬.
‫نک‬‫ت‬‫ه‬6‫تابع‬ ‫خروجی‬ ‫نگیرد‬ ‫انجام‬ ‫درست‬ ‫تبدیل‬ ‫عمل‬ ‫اگر‬ :false‫عددی‬ ‫پارامتر‬ ‫محتوای‬ ‫همچنین‬ ‫و‬،.‫باشد‬ ‫می‬ ‫صفر‬‫انجام‬ ‫درستی‬ ‫به‬ ‫تبدیل‬ ‫عمل‬ ‫اگر‬
‫متد‬ ‫این‬ ‫خروجی‬ ،‫شود‬true.‫گیرد‬ ‫می‬ ‫قرار‬ ‫عددی‬ ‫متغیر‬ ‫در‬ ‫شده‬ ‫تبدیل‬ ‫عدد‬ ‫و‬ ‫است‬
‫برنامه‬.‫دهد‬ ‫نمایش‬ ‫را‬ ‫اعداد‬ ‫مجموع‬ ‫انتها‬ ‫در‬ ‫سپس‬ ‫بگیرد‬ ‫کاربر‬ ‫از‬ ‫عدد‬ ‫تعدادی‬ ‫بنویسید‬ ‫ای‬ ‫برنامه‬ :
)‫الف‬‫کاربر‬ ‫اگر‬‫حا‬ ‫کرد‬ ‫وارد‬ ‫منفی‬ ‫عدد‬‫برسد‬ ‫پایان‬ ‫به‬ ‫برنامه‬ ‫و‬ ‫دهد‬ ‫نمایش‬ ‫را‬ ‫جمع‬ ‫صل‬
‫پیغام‬ ‫باشد‬ ‫نامعتبر‬ ‫کند‬ ‫می‬ ‫وارد‬ ‫کاربر‬ ‫که‬ ‫عددی‬ ‫اگر‬ )‫ب‬Invalid.‫شود‬ ‫داده‬
string s; bool b;
int n, sum = 0;
while (true)
{
s = Console.ReadLine();
b = int.TryParse(s, out n);
if (b == true)
{
if (n < 0)
break;
else
sum += n;
}
else
Console.WriteLine("{0} is invalid number", s);
}
: ‫نمایش‬ ‫الگوی‬
‫متد‬ ‫در‬ ‫که‬ ‫شد‬ ‫گفته‬ ‫قبال‬Write‫یا‬WriteLine‫مثال‬ ‫داد‬ ‫نمایش‬ ‫خاصی‬ ‫الگوی‬ ‫با‬ ‫را‬ ‫ها‬ ‫داده‬ ‫توان‬ ‫می‬
Console.WriteLine("{0}+{1} is {2}", 12, 18, 12 + 18); // 12 + 18 is 30
‫توان‬ ‫می‬‫الگو‬‫و‬‫طر‬‫ی‬‫قه‬‫ی‬‫نما‬‫ی‬‫ش‬‫عبارت‬‫و‬‫همچن‬‫ی‬‫ن‬‫تراز‬‫چپ‬‫و‬‫راست‬‫را‬‫ن‬‫ی‬‫ز‬‫در‬‫صورت‬‫ن‬‫ی‬‫از‬‫مع‬‫ی‬‫ن‬‫کن‬‫ی‬‫م‬.
‫{الگو‬‫ی‬‫نما‬‫ی‬‫ش‬:‫عدد‬،‫تراز‬}‫شماره‬
‫شود‬ ‫می‬ ‫شروع‬ ‫صفر‬ ‫از‬ ‫که‬ ‫شود‬ ‫داده‬ ‫نمایش‬ ‫خواهیم‬ ‫می‬ ‫که‬ ‫است‬ ‫پارامتری‬ ‫شماره‬ ، ‫شماره‬ ‫از‬ ‫منظور‬.
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
4
‫منظور‬‫از‬‫عدد‬‫تراز‬،‫تعداد‬‫فضا‬‫ی‬‫خال‬‫ی‬‫است‬‫که‬‫در‬‫صفحه‬‫نما‬‫ی‬،‫ش‬‫جهت‬‫نما‬‫ی‬‫ش‬‫مقدار‬‫متغ‬‫ی‬‫ر‬‫ی‬‫ا‬‫عبارت‬،‫اختصاص‬‫داده‬‫م‬‫ی‬‫شود‬‫اگر‬ .
‫غیر‬ ‫در‬ ‫و‬ ‫چین‬ ‫چپ‬ ‫نظر‬ ‫مورد‬ ‫مقدار‬ ‫باشد‬ ‫منفی‬ ‫مقدار‬ ‫این‬.‫شود‬ ‫می‬ ‫چین‬ ‫راست‬ ‫اینصورت‬
‫دهد‬ ‫می‬ ‫انجام‬ ‫را‬ ‫خاصی‬ ‫کار‬ ‫کدام‬ ‫هر‬ ‫که‬ ‫باشد‬ ‫می‬ ‫کراکتر‬ ‫تعدادی‬ ‫شامل‬ ‫نمایش‬ ‫الگوی‬.
Console.WriteLine("{0,5}*{1,-5}", 12,13);// 12*13
Console.WriteLine("{0:p} {1:C} {2:E} {2:F}",100,200,300,400);//10,000.00 % $200.00 3.000000E+002 300.00
Console.WriteLine("{0:D} {1:G} {2:N} {2:X}", 14500, 14500, 14500, 14500);// 14500 14500 14,500.00 38A4
‫در‬ ‫اگر‬ : ‫توجه‬‫پنجره‬‫کد‬‫نویسی‬‫کلیک‬‫راست‬‫کرده‬‫و‬‫از‬‫منویی‬‫که‬‫ظاهر‬‫می‬‫شود‬‫گزینه‬Insert Snippet‫را‬‫انتخاب‬‫گزینه‬ ‫سپس‬ ‫و‬ ‫کنید‬Visual C#
‫کنید‬ ‫انتخاب‬ ‫را‬‫منویی‬‫ظاهر‬‫می‬‫شود‬‫که‬‫دستورات‬‫و‬‫کلمات‬‫رزروشده‬‫زبان‬‫سی‬‫شارپ‬‫را‬‫می‬ ‫نشان‬‫دهد‬‫دستورات‬ ‫تایپ‬ ‫و‬ ‫جزییات‬ ‫حفظ‬ ‫به‬ ‫نیازی‬ ‫لذا‬ .
!‫ندارید‬
: ‫تایی‬ ‫سه‬ ‫عملگر‬
‫عملگر‬?‫دستور‬ ‫بجای‬ ‫توان‬ ‫می‬ ‫و‬ ‫است‬ ‫معروف‬ ‫تایی‬ ‫سه‬ ‫عملگر‬ ‫به‬if.‫نمود‬ ‫استفاده‬ ‫آن‬ ‫از‬: ‫است‬ ‫صورت‬ ‫بدین‬ ‫آن‬ ‫کلی‬ ‫شکل‬
‫مقدار‬‫دوم‬:‫مقدار‬‫ّل‬‫و‬‫ا‬?(‫عبارت‬‫منطق‬‫ی‬)
‫منطقی‬ ‫عبارت‬ ‫اگر‬true.‫است‬ ‫دوم‬ ‫مقدار‬ ‫خروجی‬ ‫وگرنه‬ ‫است‬ ‫اول‬ ‫مقدار‬ ‫خروجی‬ ‫باشد‬
‫برنامه‬‫پیغام‬ ‫بود‬ ‫زوج‬ ‫اگر‬ ‫بگیرد‬ ‫عددی‬ ‫بنویسید‬ ‫ای‬ ‫برنامه‬ :"even"‫در‬ ‫و‬‫غ‬‫پیغام‬ ‫صورت‬ ‫این‬ ‫یر‬"odd"‫دهد‬ ‫نمایش‬ ‫را‬.
‫روش‬1:
int x = int.Parse(Console.ReadLine());
string st;
st = (x % 2 == 0) ? "even" : "odd";
Console.WriteLine(st);
‫روش‬2:
int x = int.Parse(Console.ReadLine());
Console.WriteLine( (x % 2 == 0) ? "even" : "odd");
‫دستورات‬ ‫یادآوری‬while , for:
‫تمرین‬‫از‬ ‫استفاده‬ ‫بدون‬ )if‫از‬ ‫عدد‬ ‫سه‬‫و‬ ‫کنید‬ ‫دریافت‬ ‫کاربر‬.‫دهید‬ ‫نمایش‬ ‫را‬ ‫آنها‬ ‫کوچکترین‬ ‫و‬ ‫بزرگترین‬
FormatSpecifier
‫مقدار‬‫پول‬‫ی‬‫خاص‬‫ی‬‫ک‬‫محل‬C
‫انواع‬‫صح‬‫ی‬‫ح‬integerD
‫نماد‬‫علم‬‫ی‬E
‫نقطه‬‫اعشار‬‫ثابت‬F
‫اعداد‬‫عموم‬‫ی‬G
‫نقطه‬‫اعشار‬‫ثابت‬‫با‬‫جدا‬‫کننده‬‫کاما‬N
‫اعداد‬‫دارا‬‫ی‬‫درصد‬P
‫مبنای‬ ‫عدد‬16X
int x = int.Parse(Console.ReadLine());
string st;
if (x % 2 == 0)
st = "even";
else
st = "odd";
Console.WriteLine(st);
int x,sum = 0;
for (int i = 1; i < 10;i++ )
{
x = int.Parse(Console.ReadLine());
sum += x;
}
Console.WriteLine(sum / 10);
int digits=0,
n=int.Parse(Console.ReadLine());
while (n > 0){
int r = n % 10;
digits++;
n /= 10;
}
Console.WriteLine(digits);
int k = 10;
while (k > 0)
Console.WriteLine(k--);
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
5
‫دستور‬const:
‫برای‬‫تعریف‬‫شناسه‬‫یا‬‫نام‬‫ثابت‬‫از‬‫کلمه‬‫کلیدی‬const‫استفاده‬‫می‬‫شود‬.‫مقاد‬ ‫ها‬ ‫ثابت‬‫ی‬‫با‬ ‫که‬ ‫هایی‬ ‫ثابت‬ .‫کنند‬ ‫نمی‬ ‫تغییر‬ ‫برنامه‬ ‫در‬ ‫که‬ ‫هستند‬ ‫ری‬
‫دستور‬const‫شو‬ ‫تعریف‬‫ن‬.‫داد‬ ‫تغییر‬ ‫برنامه‬ ‫در‬ ‫توان‬ ‫نمی‬ ‫را‬ ‫د‬ً‫ال‬‫معمو‬‫نامی‬‫که‬‫برای‬‫شناسه‬‫ی‬‫ثابت‬‫تعریف‬‫می‬‫شود‬‫با‬‫حروف‬‫بزرگ‬‫نوشته‬‫می‬‫شود‬
‫تا‬‫در‬‫برنامه‬‫مشخص‬‫باشد‬‫که‬‫این‬‫یک‬ ،‫شناسه‬‫مقدار‬‫ثابت‬.‫است‬‫ی‬ ‫نحوه‬‫تعریف‬‫ثابت‬،‫ها‬‫مانند‬‫تعریف‬‫متغیرها‬‫می‬‫باشد‬‫با‬‫این‬‫تفاوت‬‫که‬‫در‬‫ابتدای‬
‫تعریف‬‫آنها‬‫کلمه‬const‫قرار‬.‫دارد‬
const int SIZE=12;
SIZE++; // error
‫متغی‬ ‫همانند‬ ‫را‬ ‫ها‬ ‫ثابت‬‫نمود‬ ‫تعریف‬ ‫برنامه‬ ‫هرکجای‬ ‫در‬ ‫توان‬ ‫می‬ ‫ر‬.
‫سوال‬:‫چیست؟‬ ‫مقابل‬ ‫دستور‬ ‫خطای‬ ‫علت‬
const int x = 3;
{
int x = 12;
x++;
}
:‫تو‬ ‫در‬ ‫تو‬ ‫های‬ ‫حلقه‬
.‫شوند‬ ‫می‬ ‫نامیده‬ ‫متداخل‬ ‫های‬ ‫حلقه‬ ،‫گیرد‬ ‫قرار‬ ‫دیگری‬ ‫تکرار‬ ‫دستور‬ ‫داخل‬ ‫در‬ ‫تکرار‬ ‫دستور‬ ‫یک‬ ‫اگر‬
‫ع‬ ‫به‬‫ی‬ ‫حلقه‬ ،‫بیرونی‬ ‫حلقه‬ ‫اجرای‬ ‫بار‬ ‫هر‬ ‫ازای‬ ‫به‬ ‫روبرو‬ ‫دستورات‬ ‫در‬ ‫مثال‬ ‫نوان‬
.‫شود‬ ‫می‬ ‫اجرا‬ )‫چهاربار‬ (‫کامل‬ ‫طور‬ ‫به‬ ‫داخلی‬
‫برنامه‬‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ :‫دهد؟‬ ‫نمایش‬ ‫را‬ ‫ضرب‬ ‫جدول‬
‫تمرین‬1‫آورید؟‬ ‫بدست‬ ‫را‬ ‫زیر‬ ‫برنامه‬ ‫خروجی‬ :
‫تمرین‬2‫را‬ ‫زیر‬ ‫برنامه‬ ‫خروجی‬ :‫آورید؟‬ ‫بدست‬
‫تمرین‬3:‫دهید؟‬ ‫نمایش‬ ‫را‬ ‫زیر‬ ‫های‬ ‫خروجی‬ ‫تو‬ ‫در‬ ‫تو‬ ‫های‬ ‫حلقه‬ ‫از‬ ‫استفاده‬ ‫با‬
int a,b;
for (a = 1; a <= 6; a++) // ‫بیرونی‬ ‫حلقه‬
{
for (b = 1; b <= 4; b++)// ‫داخلی‬ ‫حلقه‬
Console.Write("*");
Console.WriteLine();
}
int i,j;
for (i = 1; i <= 10; i++)
{
for (j = 1; j <= 10; j++)
Console.Write("{0,4}",i*j);
Console.WriteLine();
}
for (int i = 1; i <= 4; i++)
{
for (int j = 4; j >=1; j--)
Console.Write("{0,2}", (i==j)?1:0);
Console.WriteLine();
}
for (int a = 1; a <= 5; a++)
{
for (int b = 1; b < a; b++ )
Console.Write("{0}+",b);
Console.WriteLine(a);
}
*****
****
***
**
*
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
6
‫کراکتر‬:
‫در‬‫زبان‬‫های‬‫برنامه‬، ‫شارپ‬ ‫سی‬ ‫و‬ ‫سی‬ ‫نویسی‬‫کاراکتر‬،‫یک‬‫کاراکتر‬‫خاص‬‫و‬‫معنی‬‫دار‬.‫است‬‫هر‬‫گاه‬‫این‬،‫کاراکتر‬‫در‬‫رشته‬‫ای‬‫دیده‬،‫شود‬‫کاراکتر‬
‫بعدی‬‫آن‬‫اثر‬‫و‬‫عملکرد‬،‫خاصی‬‫جدای‬‫از‬‫ظاهری‬ ‫شکل‬‫آن‬‫دارد‬.‫به‬‫عبارت‬‫دیگر‬‫کاراکتر‬،‫سبب‬‫تغییر‬‫عملکرد‬‫کاراکتر‬‫بعدی‬‫می‬.‫شود‬‫به‬‫همین‬
‫به‬ ‫دلیل‬‫این‬‫مجموعه‬‫کاراکترها‬‫که‬‫کاراکتر‬‫اول‬‫و‬‫دومی‬‫کاراکتر‬‫دیگری‬،‫است‬‫دنباله‬‫فرار‬(Escape Sequence)‫گفته‬‫می‬‫شود‬.
‫عملکرد‬‫دنباله‬
‫هشدار‬ ‫بوق‬Beepa
‫کاراکتر‬ ‫حذف‬Backspaceb
‫خالی‬ ‫خط‬ ‫ایجاد‬New Linen
‫زیاد‬ ‫افقی‬ ‫فاصله‬Tabt
‫کوتیشن‬ ‫تک‬ ‫ایجاد‬'
‫کوتیشن‬ ‫دابل‬ ‫ایجاد‬"
‫اسلش‬ ‫بک‬ ‫ایجاد‬
‫سطر‬ ‫ابتدای‬ ‫به‬ ‫رفتن‬Enterr
‫مثال‬‫ها‬:
Console.WriteLine(""test""); //"test"
Console.WriteLine("This is a htest"); //error
Console.WriteLine("This is a test"); //This is a est
Console.WriteLine("Projectbuild"); //Projecuild
Console.WriteLine("I am na teacher.bbrtest"); // I am
testache.
Console.WriteLine("test""); // error
string st = "this is "test".nI am atstudent.";
Console.WriteLine(st);
‫تمرین‬4‫آورید؟‬ ‫بدست‬ ‫را‬ ‫روبرو‬ ‫برنامه‬ ‫های‬ ‫خروجی‬ :int a, b;
for (a = 1; a < 10; a++)
for (b = 0; b < 10; b = b + 2)
Console.WriteLine(a * 100 + b * 10 + a);
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
7
‫دوم‬ ‫فصل‬‫آرایه‬ :
‫تع‬ ‫از‬ ‫استفاده‬ ،‫باشد‬ ‫داده‬ ،‫زیادی‬ ‫تعداد‬ ‫ی‬ ‫ذخیره‬ ‫به‬ ‫نیاز‬ ‫برنامه‬ ‫یک‬ ‫در‬ ‫اگر‬ .‫کند‬ ‫داری‬ ‫نگه‬ ‫خود‬ ‫در‬ ‫را‬ ‫مقدار‬ ‫یک‬ ‫فقط‬ ‫تواند‬ ‫می‬ ‫متغیر‬ ‫هر‬‫م‬ ‫دادی‬‫تغیر‬
.‫شود‬ ‫می‬ ‫استفاده‬ ‫آرایه‬ ‫از‬ ‫حالت‬ ‫این‬ ‫در‬ .‫نیست‬ ‫مناسب‬ ‫متفاوت‬ ‫های‬ ‫نام‬ ‫با‬،‫آرایه‬‫یک‬ ‫با‬ ‫و‬ ‫هستند‬ ‫هم‬ ‫سر‬ ‫پشت‬ ‫که‬ ‫حافظه‬ ‫از‬ ‫هایی‬ ‫خانه‬‫قابل‬ ‫نام‬
.‫باشند‬ ‫می‬ ‫دسترسی‬‫سلول‬ ‫تعدادی‬ ‫آرایه‬ ‫واقع‬ ‫در‬‫نام‬ ‫هم‬‫و‬‫نوع‬ ‫هم‬.‫شوند‬ ‫می‬ ‫شروع‬ ‫صفر‬ ‫از‬ ‫ها‬ ‫اندیس‬ .‫است‬ ‫اندیس‬ ‫دارای‬ ‫سلول‬ ‫هر‬ ‫که‬ ‫است‬
: ‫گیرد‬ ‫انجام‬ ‫مرحله‬ ‫دو‬ ‫در‬ ‫باید‬ ‫آرایه‬ ‫تعریف‬
‫اول‬ ‫مرحله‬:;‫نام‬‫متغیر‬‫آرایه‬[]‫نوع‬‫داده‬
‫دوم‬ ‫مرحله‬:]‫اندازه‬‫آرایه‬[‫نوع‬‫داده‬new‫متعیرآرایه‬ =
.‫یابد‬ ‫می‬ ‫تخصیص‬ ‫آن‬ ‫برای‬ ‫حافظه‬ ،‫آرایه‬ ‫طول‬ ‫شدن‬ ‫مشخص‬ ‫با‬ ‫دوم‬ ‫مرحله‬ ‫در‬ ‫و‬ ‫شود‬ ‫می‬ ‫تعیین‬ ‫آرایه‬ ‫نوع‬ ‫اول‬ ‫مرحله‬ ‫در‬
‫با‬ ‫را‬ ‫مرحله‬ ‫دو‬ ‫توان‬ ‫می‬‫ادغام‬ ‫یکدیگر‬‫کرد‬ ‫تعریف‬ ‫زیر‬ ‫بصورت‬ ‫و‬ ‫نمود‬:
int[] x =new int[10];
‫آرایه‬ ‫عناصر‬ ‫به‬ ‫دسترسی‬:‫خانه‬ ‫محتوای‬ ‫خواهیم‬ ‫می‬ ‫کنید‬ ‫فرض‬‫ی‬‫اندیس‬3‫عدد‬ ‫را‬15‫خا‬ ‫چهارمین‬ ‫(یعنی‬ ‫بدهیم‬‫ن‬‫می‬ ‫شروع‬ ‫صفر‬ ‫از‬ ‫چون‬ ‫ه‬
).‫شود‬
x[3]=6;
x[5]=x[3]+8;
x[x[3]]=x[5]+2;
‫دارند؟‬ ‫مقداری‬ ‫چه‬ ،‫اند‬ ‫نشده‬ ‫مقداردهی‬ ‫هنوز‬ ‫که‬ ‫آرایه‬ ‫عناصر‬ ‫بقیه‬ ‫شما‬ ‫نظر‬ ‫به‬ )‫سوال‬
‫ی‬ ‫حلقه‬ ‫از‬ ‫توان‬ ‫می‬ ‫آرایه‬ ‫یک‬ ‫عناصر‬ ‫چاپ‬ ‫و‬ ‫دریافت‬ ‫برای‬for.‫کرد‬ ‫استفاده‬
)‫برنامه‬‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬10‫دهید؟‬ ‫نمایش‬ ‫را‬ ‫آنها‬ ‫اول‬ ‫به‬ ‫آخر‬ ‫از‬ ‫سپس‬ ‫و‬ ‫کند‬ ‫دریافت‬ ‫کاربر‬ ‫از‬ ‫عدد‬
‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ )‫برنامه‬10‫کند؟‬ ‫چاپ‬ ‫را‬ ‫هستند‬ ‫بیشتر‬ ‫آنها‬ ‫میانگین‬ ‫از‬ ‫که‬ ‫اعدادی‬ ‫سپس‬ ‫و‬ ‫کند‬ ‫دریافت‬ ‫کاربر‬ ‫از‬ ‫عدد‬
float[] x = new float[10]; string st;
float sum = 0f, average;
for (int i = 0; i < x.Length; i++) {
st = Console.ReadLine();
x[i] = float.Parse(st);
sum += x[i];
}
average=sum/x.Length;
Console.WriteLine("Average = {0:n}", average);
for (int i = 0; i < x.Length; i++)
if (x[i] > average)
Console.WriteLine("{0:n}", x[i]);
: ‫مثال‬ ‫نمود‬ ‫هم‬ ‫اولیه‬ ‫مقداردهی‬ ‫تعریف‬ ‫بهنگام‬ ‫را‬ ‫آرایه‬ ‫توان‬ ‫می‬
int[] x=new int[10] {19,23,45,74,13,26,44,77,20,36};
9876543210
36207744261374452319
:‫مثال‬ .‫آورد‬ ‫می‬ ‫بدست‬ ‫را‬ ‫آرایه‬ ‫طول‬ ‫شارپ‬ ‫سی‬ ‫اولیه‬ ‫مقداردهی‬ ‫طریق‬ ‫از‬ ‫و‬ ‫نکرد‬ ‫تعیین‬ ‫آرایه‬ ‫تعریف‬ ‫بهنگام‬ ‫را‬ ‫آرایه‬ ‫طول‬ ‫توان‬ ‫می‬
int[] y=new int[] {24,17,60,19,25,12,43};
6543210
43122519601724
543210
2928135512934
9876543210
16146
)‫مثال‬
int [] x;
x=new int[10];
int[] m = new int[10];
for (int i = 0; i < 10; i++)
m[i] = int.Parse(Console.ReadLine());
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
8
int[] z= {19,23,45,74,13,26};
int []z=new int[5]{45,13,12,55,99,66}; //error
‫عملگر‬ ‫از‬ ‫روش‬ ‫این‬ ‫در‬ :‫دیگر‬ ‫روش‬new.‫شود‬ ‫نمی‬ ‫استفاده‬
int[] c = { 45, 13, 52, 17 };
)‫نکته‬‫آرایه‬ ‫ایجاد‬ ‫از‬ ‫بعد‬.‫کنید‬ ‫کم‬ ‫یا‬ ‫و‬ ‫اضافه‬ ‫آن‬ ‫به‬ ‫عنصری‬ ‫توانید‬ ‫نمی‬ ‫یعنی‬ ‫دهید‬ ‫تغییر‬ ‫را‬ ‫آن‬ ‫اندازه‬ ‫توانید‬ ‫نمی‬ ،
‫نکته‬)‫در‬‫زبان‬‫شارپ‬ ‫سی‬،‫آرایه‬ ‫عناصر‬ ‫به‬ ‫دسترسی‬ ‫هنگام‬ ‫در‬‫محدوده‬‫اندیس‬‫آرایه‬‫کنترل‬‫می‬‫شود‬‫و‬‫نباید‬‫از‬‫عدد‬‫صفر‬‫کمتر‬‫و‬‫همچنین‬‫از‬‫اندازه‬
‫آرایه‬‫بیشتر‬‫یا‬‫مساوی‬.‫باشد‬‫اگر‬‫برنامه‬‫نویس‬‫اشتباه‬‫کند‬‫و‬‫اندیس‬‫باالتری‬‫را‬‫استفاده‬‫کند‬‫در‬‫هنگام‬‫ترجمه‬‫برنامه‬‫با‬‫خطا‬‫آرایه‬ ‫محدوده‬ ‫سرریزی‬ ‫ی‬
‫روبر‬‫رو‬‫می‬‫شود‬.:‫مثال‬
int [] k=new int[10]; k[10]=45; // error
‫نکته‬)‫ویژگی‬ ‫از‬length‫آورد‬ ‫بدست‬ ‫اجرا‬ ‫زمان‬ ‫در‬ ‫را‬ ‫آرایه‬ ‫طول‬ ‫توان‬ ‫می‬..length‫آرایه‬ ‫متغیر‬ ‫نام‬
‫نکته‬)‫باشد‬ ‫متغیر‬ ‫تواند‬ ‫می‬ ‫آرایه‬ ‫تعریف‬ ‫بهنگام‬ ‫آرایه‬ ‫طول‬‫آرایه‬ ‫طول‬ ‫حالت‬ ‫این‬ ‫در‬ ..‫شود‬ ‫می‬ ‫تعیین‬ ‫برنامه‬ ‫اجرای‬ ‫زمان‬ ‫در‬:‫مثال‬
int n=int.Parse(Console.ReadLine());
int[] s=new int[n];
‫نکته‬)‫منفی‬ ‫تواند‬ ‫نمی‬ ‫آرایه‬ ‫های‬ ‫خانه‬ ‫تعداد‬‫یا‬.‫باشد‬ ‫اعشاری‬
‫نکته‬)‫خطای‬ ‫شود‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫صفر‬ ‫آرایه‬ ‫خانه‬ ‫تعداد‬ ‫اگر‬‫استفا‬ ‫بهنگام‬ ‫ولی‬ ‫شود‬ ‫نمی‬ ‫صادر‬ ‫ی‬‫آرایه‬ ‫از‬ ‫ده‬.‫شود‬ ‫می‬ ‫داده‬ ‫اجرا‬ ‫زمان‬ ‫خطای‬
float[] x = new float[0];
x[0] = 1f; // Runtime Error
)‫تمرین‬‫آورید؟‬ ‫بدست‬ ‫را‬ ‫زیر‬ ‫های‬ ‫برنامه‬ ‫خروجی‬
‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ )‫برنامه‬‫تعدادی‬‫از‬ ‫عدد‬‫ذ‬ ‫آرایه‬ ‫یک‬ ‫در‬ ‫و‬ ‫کند‬ ‫دریافت‬ ‫کاربر‬‫کند‬ ‫خیره‬)‫شود‬ ‫می‬ ‫تعیین‬ ‫کاربر‬ ‫توسط‬ ‫آرایه‬ ‫(طول‬‫س‬ .‫پس‬
.‫دهید‬ ‫نمایش‬ ‫و‬ ‫محاسبه‬ ‫را‬ ‫اعداد‬ ‫میانگین‬ ‫و‬ ‫کوچکترین‬ ‫و‬ ‫بزرگترین‬
‫حلقه‬ ‫دستور‬foreach
‫دستور‬foreach‫حلقه‬ ‫بجای‬ ‫توان‬ ‫می‬ ‫را‬for‫دستور‬ .‫کنیم‬ ‫استفاده‬foreach‫هر‬ ‫روی‬‫ی‬ ‫داده‬ ‫نوع‬ .‫شود‬ ‫می‬ ‫تکرار‬ ‫شمارش‬ ‫قابل‬ ‫داده‬ ‫از‬ ‫عنصر‬array
‫و‬string.‫هستند‬ ‫شمارش‬ ‫قابل‬
foreach( ‫داده‬ ‫نوع‬ ‫متغیر‬ ‫نام‬ in ‫آرایه‬ ‫نام‬ )
‫دستور‬ ;
‫توان‬ ‫می‬ ‫نیز‬ ‫دستور‬ ‫این‬ ‫از‬‫نمرات‬ ‫نمایش‬ ‫و‬ ‫آرایه‬ ‫پیمایش‬ ‫برای‬ ‫باال‬ ‫مثال‬ ‫در‬ .‫نمود‬ ‫استفاده‬ ‫ها‬ ‫مجموعه‬ ‫یا‬ ‫آرایه‬ ‫پیمایش‬ ‫برای‬‫بیشتر‬‫میان‬ ‫از‬‫می‬ ‫گین‬
: ‫نمود‬ ‫استفاده‬ ‫نیز‬ ‫زیر‬ ‫دستور‬ ‫از‬ ‫توان‬
foreach (float item in x)
if (item < average)
Console.WriteLine("{0:n}", item);
‫متغیر‬item)‫شود‬ ‫نمی‬ ‫استفاده‬ ‫اندیس‬ ‫از‬ (‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫آرایه‬ ‫عناصر‬ ‫از‬ ‫یکی‬ ‫حلقه‬ ‫اجرای‬ ‫بار‬ ‫هر‬ ‫در‬
‫حلقه‬ ‫از‬ ‫آرایه‬ ‫های‬ ‫سلول‬ ‫دریافت‬ ‫برای‬ ‫توان‬ ‫می‬ ‫آیا‬ )‫سوال‬foreach‫کرد؟‬ ‫استفاده‬
int[] F = new int[10];
F[0] = F[1] = 1;
for (int i = 2; i < 10; i++)
F[i] = F[i - 2] + F[i - 1];
for (int i = 0; i < F.Length; i++)
Console.Write("{0} ",F[i]);
int[] T = new int[10];
T[0] = 1;
int x = int.Parse(Console.ReadLine());
for (int i = 1; i < T.Length ; i++)
T[i] = T[i - 1] * x;
for (int i = 0; i < T.Length; i++)
Console.Write("{0} ",T[i]);
int[] T = new int[6];
T[0] = 1;
for (int i = 1; i < T.Length ; i++)
T[i] = T[i - 1] * i;
for (int i = 0; i < T.Length; i++)
Console.Write("{0} ",T[i]);
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
9
.‫دهد‬ ‫نمایش‬ ‫آن‬ ‫در‬ ‫را‬ ‫فاصله‬ ‫کاراکترهای‬ ‫تعداد‬ ‫سپس‬ ‫بگیرد‬ ‫کاربر‬ ‫از‬ ‫ای‬ ‫رشته‬ ‫بنویسید‬ ‫ای‬ ‫برنامه‬ : ‫مثال‬
int count=0;
string st = Console.ReadLine();
foreach (char ch in st)
if (ch == ' ')
count++;
Console.WriteLine("Count Space in {0} = {1}", st, count);
‫برنامه‬‫و‬ ‫بزرگ‬ ‫حروف‬ ‫تعداد‬ ‫سپس‬ ‫و‬ ‫کند‬ ‫دریافت‬ ‫کاربر‬ ‫از‬ ‫رشته‬ ‫یک‬ ‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ ).‫دهید‬ ‫نمایش‬ ‫و‬ ‫محاسبه‬ ‫را‬ ‫آن‬ ‫کوچک‬ ‫حروف‬ ‫تعداد‬
‫حبابی‬ ‫سازی‬ ‫مرتب‬(sortBubble):
‫سازی‬ ‫مرتب‬ ‫های‬ ‫روش‬ ‫از‬ ‫یکی‬‫است‬ ‫حبابی‬ ‫روش‬ ،‫ها‬ ‫داده‬‫وجود‬ ‫نیز‬ ‫روش‬ ‫این‬ ‫از‬ ‫تر‬ ‫سریع‬ ‫و‬ ‫بهتر‬ ‫های‬ ‫روش‬ ‫باشد(البته‬ ‫می‬ ‫ابتدایی‬ ‫و‬ ‫ساده‬ ‫خیلی‬ ‫که‬
‫روش‬ ‫مانند‬ ‫دارد‬‫سازی‬ ‫مرتب‬)‫سریع‬
‫در‬‫الگوریتم‬‫مرتب‬‫سازی‬‫همواره‬‫دو‬‫عمل‬‫مقایسه‬(compare‫و‬ )‫جابه‬‫جایی‬(swap)‫انجام‬‫می‬‫شود‬.
‫دارای‬ ‫ای‬ ‫آرایه‬ ‫اگر‬n‫باید‬ ‫روش‬ ‫این‬ ‫در‬ ‫باشد‬ ‫عنصر‬ ‫تا‬n-1‫مرحله‬)‫(فاز‬.‫شود‬ ‫مرتب‬ ‫آرایه‬ ‫تا‬ ‫شود‬ ‫طی‬
‫مرحله‬1‫نبود‬ ‫درست‬ ‫آنها‬ ‫ترتیب‬ ‫اگر‬ ‫و‬ ‫شود‬ ‫می‬ ‫مقایسه‬ ‫لیست‬ ‫عدد‬ ‫دومین‬ ‫با‬ ‫لیست‬ ‫عدد‬ ‫اولین‬ ‫روش‬ ‫این‬ ‫در‬ )،‫یعنی‬ (.‫کنیم‬ ‫می‬ ‫عوض‬ ‫را‬ ‫آنها‬ ‫جای‬
)‫باشد‬ ‫بزرگتر‬ ‫دومی‬ ‫از‬ ‫اولی‬ ‫عدد‬ ‫اینکه‬
‫ف‬ (‫لیست‬ ‫انتهای‬ ‫تا‬ ‫را‬ ‫کار‬ ‫این‬ ‫و‬ .‫کنیم‬ ‫می‬ ‫عوض‬ ‫را‬ ‫آنها‬ ‫جای‬ ‫نبود‬ ‫درست‬ ‫آنها‬ ‫ترتیب‬ ‫اگر‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫مقایسه‬ ‫سومی‬ ‫عدد‬ ‫با‬ ‫را‬ ‫دومی‬ ‫عدد‬ ‫سپس‬‫ر‬‫ض‬
‫که‬ ‫است‬ ‫این‬ ‫بر‬N‫خ‬ ‫به‬ ‫بزرگتر‬ ‫عدد‬ .‫دهیم‬ ‫می‬ ‫ادامه‬ )‫دارد‬ ‫سلول‬ ‫تا‬‫انه‬N‫مانند‬ (‫رود‬ ‫می‬ ‫ام‬)‫حباب‬ ‫یک‬
‫مرحله‬2‫کنیم‬ ‫می‬ ‫عوض‬ ‫را‬ ‫آنها‬ ‫جای‬ ‫نبود‬ ‫درست‬ ‫آنها‬ ‫ترتیب‬ ‫اگر‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫مقایسه‬ ‫دوم‬ ‫خانه‬ ‫با‬ ‫را‬ ‫اول‬ ‫خانه‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫شروع‬ ‫اول‬ ‫خانه‬ ‫از‬ ‫دوباره‬ )
‫خانه‬ ‫کارتا‬ ‫این‬ ‫و‬ ......... ‫و‬ ‫شوند‬ ‫می‬ ‫مقایسه‬ ‫سوم‬ ‫وعدد‬ ‫دوم‬ ‫عدد‬ ‫سپس‬ ‫و‬N-1‫سلول‬ ‫در‬ ‫بعدی‬ ‫بزرگتر‬ ‫عدد‬ ‫دوم‬ ‫مرحله‬ ‫از‬ ‫بعد‬ .‫کند‬ ‫می‬ ‫پیدا‬ ‫ادامه‬
.‫گیرد‬ ‫می‬ ‫قرار‬ ‫آخر‬ ‫به‬ ‫یکی‬
‫خانه‬ ‫تا‬ ‫که‬ ‫تفاوت‬ ‫این‬ ‫با‬ ‫است‬ ‫دوم‬ ‫مرحله‬ ‫مانند‬ ‫نیز‬ ‫سوم‬ ‫مرحله‬ )‫سوم‬ ‫مرحله‬N-2.‫شود‬ ‫می‬ ‫انجام‬
‫اگر‬‫آرایه‬‫داری‬N‫باشد‬ ‫سلول‬ ‫تا‬N-1.‫داشت‬ ‫خواهیم‬ ‫مرحله‬
‫کنید؟‬ ‫صعودی‬ ‫مرتب‬ ‫حبابی‬ ‫روش‬ ‫به‬ ‫را‬ ‫روبرو‬ ‫آرایه‬ )‫مثال‬
‫مثال‬ ‫این‬ ‫در‬‫مجموعا‬15‫و‬ ‫مقایسه‬ ‫عمل‬10‫است‬ ‫گرفته‬ ‫صورت‬ ‫جابجایی‬ ‫عمل‬
‫اگر‬ ‫حبابی‬ ‫سازی‬ ‫مرتب‬ ‫روش‬ ‫در‬ ‫کلی‬ ‫بطور‬ )‫نکته‬‫آرایه‬‫دارای‬N‫به‬ ‫عنصرباشد‬ ‫تا‬
‫تعداد‬N(N-1) / 2‫می‬ ‫انجام‬ ‫مقایسه‬ ‫تا‬.‫شود‬
91317101812
654321
91317101812
91317101812
91317181012
91318171012
91813171012
18913171012
‫مرحله‬1:5.‫است‬ ‫داده‬ ‫رخ‬ ‫جابجایی‬ ‫چهار‬ ‫و‬ ‫مقایسه‬ ‫عمل‬
654321
18913171012
18913171210
18913171210
18917131210
18179131210
‫مرحله‬2.‫است‬ ‫داده‬ ‫رخ‬ ‫جابجایی‬ ‫سه‬ ‫و‬ ‫مقایسه‬ ‫عمل‬ ‫چهار‬ :
654321
18179131210
18179131210
18179131210
18171391210
‫مرحله‬3‫است‬ ‫داده‬ ‫رخ‬ ‫جابجایی‬ ‫عمل‬ ‫یک‬ ‫و‬ ‫مقایسه‬ ‫عمل‬ ‫سه‬ :
654321
18171391210
18171391210
18171312910
‫مرحله‬4.‫است‬ ‫داده‬ ‫رخ‬ ‫جابجایی‬ ‫یک‬ ‫و‬ ‫مقایسه‬ ‫عمل‬ ‫دو‬ :
654321
18171312910
18171312109
‫مرحله‬5.‫است‬ ‫داده‬ ‫رخ‬ ‫جابجایی‬ ‫یک‬ ‫و‬ ‫مقایسه‬ ‫یک‬ :
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
10
‫آرای‬ ‫نظمی‬ ‫بی‬ ‫به‬ ‫بتگی‬‫ب‬‫بس‬ ‫و‬ ‫کرد‬ ‫ببه‬‫ب‬‫محاس‬ ‫توان‬ ‫نمی‬ ‫دقیقا‬ ‫را‬ ‫حبابی‬ ‫روش‬ ‫در‬ ‫ها‬ ‫جابجایی‬ ‫تعداد‬ )‫نکته‬‫تعداد‬ ‫حداکثر‬ ‫که‬ ‫گفت‬ ‫توان‬ ‫می‬ ‫ولی‬ ‫دارد‬ ‫ه‬
‫جابجایی‬ ‫صفرتا‬ ‫هم‬ ‫دهد.(حداقل‬ ‫رخ‬ ‫نیز‬ ‫جابجایی‬ ‫یک‬ ‫شود‬ ‫می‬ ‫انجام‬ ‫که‬ ‫ایی‬ ‫مقایسه‬ ‫هر‬ ‫یعنی‬ ‫است‬ ‫ها‬ ‫مقایسه‬ ‫تعداد‬ ‫اندازه‬ ‫به‬ ‫ها‬ ‫جابجایی‬ ‫عمل‬)
‫تع‬ ‫برابر‬ ‫ها‬ ‫جابجایی‬ ‫تعداد‬ ‫کنیم‬ ‫صعودی‬ ‫حبابی‬ ‫روش‬ ‫به‬ ‫را‬ ‫آن‬ ‫بخواهیم‬ ‫و‬ ‫باشد‬ ‫نزولی‬ ‫ایی‬ ‫آرایه‬ ‫اگر‬‫است‬ ‫ها‬ ‫مقایسه‬ ‫داد‬)‫حالت‬ ‫(بدترین‬.
‫یک‬ ‫بخواهیم‬ ‫اگر‬ )‫سئوال‬‫آرایه‬10‫شود؟‬ ‫می‬ ‫انجام‬ ‫مقایسه‬ ‫عمل‬ ‫چند‬ ‫کنیم‬ ‫مرتب‬ ‫حبابی‬ ‫روش‬ ‫به‬ ‫را‬ ‫عنصری‬
)‫الف‬9)‫ب‬15)‫ج‬50)‫د‬45
.‫است‬ ‫کند‬ ‫حبابی‬ ‫سازی‬ ‫مرتب‬ ‫روش‬ )‫نکته‬
‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ )‫برنامه‬n‫دهد؟‬ ‫نمایش‬ ‫سپس‬ ‫و‬ ‫مرتب‬ ‫صعودی‬ ‫صورت‬ ‫به‬ ‫و‬ ‫کند‬ ‫دریافت‬ ‫کاربر‬ ‫از‬ ‫عدد‬ ‫تا‬
‫باشد؟‬ ‫داشته‬ ‫باید‬ ‫تغییری‬ ‫چه‬ ‫فوق‬ ‫برنامه‬ ‫نزولی‬ ‫صورت‬ ‫به‬ ‫سازی‬ ‫مرتب‬ ‫برای‬ )‫سوال‬
‫بود‬ ‫خواهد‬ ‫صورت‬ ‫چه‬ ‫به‬ ‫سوم‬ ‫فاز‬ ‫از‬ ‫بعد‬ ‫آرایه‬ ‫کنید‬ ‫مشخص‬ ‫و‬ ‫کنید‬ ‫مرتب‬ ‫حبابی‬ ‫روش‬ ‫به‬ ‫را‬ ‫روبرو‬ ‫آرایه‬ )‫سوال‬
:‫آرایه‬ ‫در‬ ‫جستجو‬
‫از‬ ‫منظور‬‫و‬ ‫خطی‬ ‫جستجوی‬ .‫کنیم‬ ‫می‬ ‫تشریح‬ ‫درس‬ ‫این‬ ‫در‬ ‫را‬ ‫جستجو‬ ‫نوع‬ ‫دو‬ .‫است‬ ‫آرایه‬ ‫در‬ )‫خاص(کلید‬ ‫عنصر‬ ‫یک‬ ‫کردن‬ ‫پیدا‬ ،‫آرایه‬ ‫در‬ ‫جستجو‬
.‫دودویی‬
‫خطی‬ ‫جستجوی‬Liner Search:
‫جستجو‬ ‫کلید‬ ‫که‬ ‫مقداری‬ ‫با‬ ‫آرایه‬ ‫عضو‬ ‫خطی،هر‬ ‫جستجوی‬ ‫در‬Search Key‫مو‬ ‫در‬ ‫خطی‬ ‫جستجوی‬ .‫شود‬ ‫می‬ ‫مقایسه‬ ‫شود‬ ‫می‬ ‫نامیده‬‫های‬ ‫آرایه‬ ‫رد‬
.‫ندارد‬ ‫بهینه‬ ‫کارایی‬ ‫مرتب‬ ‫و‬ ‫بزرگ‬ ‫های‬ ‫آرایه‬ ‫برای‬ ‫ولی‬ ‫کند‬ ‫می‬ ‫عمل‬ ‫خوب‬ ‫نشده‬ ‫مرتب‬ ‫یا‬ ‫کوچک‬
‫این‬ ‫غیر‬ ‫در‬ ‫رسد‬ ‫می‬ ‫پایان‬ ‫به‬ ‫کار‬ ‫شد‬ ‫پیدا‬ ‫اگر‬ ‫شود‬ ‫می‬ ‫مقایسه‬ ‫آرایه‬ ‫دادة‬ ‫اولین‬ ‫با‬ )‫شود‬ ‫جستجو‬ ‫است‬ ‫قرار‬ ‫که‬ ‫ایی‬ ‫داده‬ (‫کلید‬ ‫روش‬ ‫این‬ ‫در‬‫ص‬‫ورت‬
‫م‬ ‫مقایسه‬ ‫آرایه‬ ‫دادة‬ ‫دومین‬ ‫با‬.‫یابد‬ ‫می‬ ‫ادامه‬ ‫آرایه‬ ‫پایان‬ ‫تا‬ ‫کار‬ ‫این‬ ‫و‬ ‫شود‬ ‫ی‬.‫شود‬ ‫قطع‬ ‫باید‬ ‫جستجو‬ ‫عمل‬ ،‫شد‬ ‫پیدا‬ ‫کلید‬ ‫موقع‬ ‫هر‬ ‫که‬ ‫کنید‬ ‫دقت‬
‫کلید‬ ‫اگر‬ )‫مثال‬12)‫خطی‬ ‫روش‬ ‫به‬ ( ‫شود؟‬ ‫پیدا‬ ‫کلید‬ ‫تا‬ ‫شود‬ ‫می‬ ‫انجام‬ ‫مقایسه‬ ‫عمل‬ ‫چند‬ ‫زیر‬ ‫آرایه‬ ‫در‬ ‫باشد‬
‫باال‬ ‫مثال‬ ‫در‬ .‫شود‬ ‫می‬ ‫تمام‬ ‫جستجو‬ ‫کار‬ ‫و‬ ‫کند‬ ‫می‬ ‫پیدا‬ ‫را‬ ‫کلید‬ ‫اولین‬ ‫کنیم‬ ‫جستجو‬ ‫خطی‬ ‫روش‬ ‫به‬ ‫باشد‬ ‫کلید‬ ‫از‬ ‫مورد‬ ‫چند‬ ‫آرایه‬ ‫در‬ ‫اگر‬ )‫نکته‬‫دو‬
‫عدد‬12‫اولین‬ ‫اما‬ ‫دارد‬ ‫وجود‬12.‫شود‬ ‫می‬ ‫تمام‬ ‫کار‬ ‫و‬ ‫شود‬ ‫می‬ ‫پیدا‬ ‫است‬ ‫ششم‬ ‫خانه‬ ‫در‬ ‫که‬
‫آرایه‬ ‫که‬ ‫نیست‬ ‫الزم‬ ‫خطی‬ ‫جستجوی‬ ‫روش‬ ‫این‬ ‫در‬ )‫نکته‬.‫باشند‬ ‫نزولی‬ ‫یا‬ ‫صعودی‬ ‫آرایه‬ ‫در‬ ‫ها‬ ‫داده‬ ‫یعنی‬ ‫باشد‬ ‫شده‬ ‫مرتب‬ ‫ما‬
.‫شود‬ ‫می‬ ‫انجام‬ ‫یکبار‬ ‫مقایسه‬ ‫عمل‬ ‫خطی‬ ‫جستجوی‬ ‫حالت‬ ‫بهترین‬ ‫در‬ )‫نکته‬‫خطی‬ ‫جستجوی‬ ‫حالت‬ ‫بدترین‬ ‫در‬،‫های‬ ‫خانه‬ ‫تعداد‬ ‫به‬‫آرایه‬‫عمل‬
.‫شود‬ ‫می‬ ‫انجام‬ ‫مقایسه‬‫اگر‬ ‫بنابراین‬‫آرایه‬N‫باشد‬ ‫داشته‬ ‫عنصر‬ ‫تا‬N‫ان‬ ‫مقایسه‬ ‫عمل‬‫متوسط‬ ‫حالت‬ ‫شود.در‬ ‫می‬ ‫جام‬N/2‫می‬ ‫انجام‬ ‫مقایسه‬ ‫عمل‬
)‫گیرند‬ ‫می‬ ‫قرار‬ ‫مقایسه‬ ‫مورد‬ ‫آرایه‬ ‫اعضای‬ ‫نصف‬ ‫میانگین‬ ‫(بطور‬ .‫شود‬
‫دارای‬ ‫ای‬ ‫آرایه‬ ‫اگر‬ )‫سئوال‬20‫شود؟‬ ‫می‬ ‫انجام‬ ‫مقایسه‬ ‫عمل‬ ‫چند‬ ‫متوسط‬ ‫و‬ ‫بدترین‬ ‫در‬ ‫خطی‬ ‫جستجوی‬ ‫روش‬ ‫در‬ ‫باشد‬ ‫عنصر‬
int n = int.Parse(Console.ReadLine());
int[] M = new int[n];
for (int i = 0; i < n; i++)
M[i] = int.Parse(Console.ReadLine());
for (int i = n - 1; i > 0; i--)
for (int j = 0; j < i; j++ )
if(M[j]>M[j+1]) // ‫مقایسه‬
{
int temp = M[j]; // ‫جابجایی‬
M[j] = M[j + 1];
M[j + 1] = temp;
}
foreach (int item in M)
Console.Write("{0} ",item);
212171912711141310
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
11
)‫برنامه‬
‫شود‬ ‫می‬ ‫زمان‬ ‫اتالف‬ ‫سبب‬ ‫روش‬ ‫این‬ ‫به‬ ‫بزرگ‬ ‫های‬ ‫آرایه‬ ‫در‬ ‫جستجو‬.‫شود‬ ‫می‬ ‫زیاد‬ ‫بسیار‬ ‫مقایسه‬ ‫دفعات‬ ‫تعداد‬ ‫زیرا‬
‫باینری‬ ‫جستجوی‬)‫(دودویی‬Binary:
‫روش‬ ‫این‬‫فقط‬.‫است‬ ‫اجرا‬ ‫قابل‬ ‫مرتب‬ ‫های‬ ‫آرایه‬ ‫روی‬ ‫بر‬.‫کرد‬ ‫مرتب‬ ‫را‬ ‫آن‬ ‫باید‬ ‫ابتدا‬ ‫باشد‬ ‫نامرتب‬ ‫آرایه‬ ‫که‬ ‫صورتی‬ ‫در‬
‫را‬ ‫کلیدی‬ ‫خواهیم‬ ‫می‬ ‫و‬ ‫داریم‬ )‫بزرگ‬ ‫به‬ ‫کوچک‬ ‫(از‬ ‫صعودی‬ ‫مرتب‬ ‫آرایه‬ ‫یک‬ ‫که‬ ‫کنید‬ ‫فرض‬:‫کنیم‬ ‫جستجو‬ ‫باینری‬ ‫روش‬ ‫به‬ ‫آن‬ ‫در‬
‫کنیم‬ ‫می‬ ‫نصف‬ ‫وسط‬ ‫از‬ ‫را‬ ‫آرایه‬:‫دهد‬ ‫رخ‬ ‫است‬ ‫ممکن‬ ‫حالت‬ ‫سه‬ ‫که‬ ‫کنیم‬ ‫می‬ ‫مقایسه‬ ‫آرایه‬ ‫وسط‬ ‫عنصر‬ ‫با‬ ‫را‬ ‫کلید‬ ‫و‬
(‫باشد‬ ‫بزرگتر‬ ‫وسط‬ ‫عنصر‬ ‫از‬ ‫کلید‬ )‫الف‬Key > A[C]‫سمت‬ ‫نیمه‬ ‫در‬ ‫کلید‬ ‫حتما‬ ‫است‬ )‫(صعودی‬ ‫مرتب‬ ‫لیست‬ ‫اینکه‬ ‫به‬ ‫توجه‬ ‫با‬ ‫حالت‬ ‫این‬ ‫در‬ : )
‫را‬.‫کرد‬ ‫نخواهیم‬ ‫جستجو‬ ‫را‬ ‫چپ‬ ‫سمت‬ ‫نیمه‬ ‫و‬ ‫کنیم‬ ‫جستجو‬ ‫را‬ ‫راست‬ ‫سمت‬ ‫نیمه‬ ‫باید‬ ‫ما‬ ‫و‬ ‫است‬ ‫ست‬
‫راست‬ ‫سمت‬ ‫نیمه‬‫وسط‬‫چپ‬ ‫سمت‬ ‫نیمه‬
‫چپ‬ ‫سمت‬ ‫نیمه‬ ‫در‬ ‫کلید‬ ‫حتما‬ ‫است‬ ‫مرتب‬ ‫صعودی‬ ‫صورت‬ ‫به‬ ‫آرایه‬ ‫اینکه‬ ‫به‬ ‫توجه‬ ‫با‬ ‫حالت‬ ‫این‬ ‫در‬ :‫است‬ ‫کوچکتر‬ ‫آرایه‬ ‫وسط‬ ‫عنصر‬ ‫از‬ ‫کلید‬ )‫ب‬
‫سمت‬ ‫نیمه‬ ‫باید‬ ‫و‬ ‫است‬.‫کرد‬ ‫نخواهیم‬ ‫جستجو‬ ‫را‬ ‫راست‬ ‫نیمه‬ ‫و‬ ‫کرد‬ ‫جستجو‬ ‫باید‬ ‫را‬ ‫چپ‬
.‫شود‬ ‫می‬ ‫متوقف‬ ‫جستجو‬ ‫عمل‬ ‫و‬ ‫است‬ ‫شده‬ ‫پیدا‬ ‫کلید‬ ‫حالت‬ ‫این‬ ‫در‬ .‫باشد‬ ‫آرایه‬ ‫وسط‬ ‫عنصر‬ ‫مساوی‬ ‫کلید‬ ‫حالت‬ ‫بهترین‬ ‫در‬ )‫ج‬
‫به‬ .‫دهیم‬ ‫می‬ ‫ادامه‬ ‫راست‬ ‫یا‬ ‫چپ‬ ‫سمت‬ ‫نیمه‬ ‫در‬ ‫را‬ ‫جستجو‬ ‫عمل‬ ‫دهد‬ ‫رخ‬ ‫ب‬ ‫یا‬ ‫الف‬ ‫های‬ ‫حالت‬ ‫از‬ ‫کدام‬ ‫هر‬ ‫اگر‬‫نیمه‬ ‫یا‬ ‫چپ‬ ‫سمت‬ ‫نیمه‬ ‫دیگر‬ ‫عبارت‬
‫ع‬ ‫دوباره‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫نصف‬ ‫وسط‬ ‫از‬ ‫دوباره‬ ‫را‬ ‫راست‬ ‫سمت‬.‫کنیم‬ ‫می‬ ‫تکرار‬ ‫آن‬ ‫روی‬ ‫را‬ ‫باال‬ ‫مل‬
‫آرایه‬ ‫اگر‬ ‫روش‬ ‫این‬ ‫در‬1000‫مقایسه‬ ‫یک‬ ‫با‬ ‫باشد‬ ‫داشته‬ ‫عنصر‬500‫و‬ ‫گذاریم‬ ‫می‬ ‫کنار‬ ‫را‬ ‫آن‬ ‫عنصر‬500‫مقایسه‬ ‫با‬ .‫کنیم‬ ‫می‬ ‫جستجو‬ ‫را‬ ‫دیگر‬ ‫تای‬
‫بعدی‬250‫دی‬ ‫عنصر‬.‫است‬ ‫زیاد‬ ‫بسیار‬ ‫جستجو‬ ‫سرعت‬ ‫دلیل‬ ‫همین‬ ‫به‬ .... ‫و‬ ‫گذاریم‬ ‫می‬ ‫کنار‬ ‫را‬ ‫گر‬
‫ایی‬ ‫آرایه‬ ‫اگر‬ )‫سوال‬1000‫حداکثر‬ ‫دودویی‬ ‫جستجوی‬ ‫در‬ ‫باشد‬ ‫داشته‬ ‫عنصر‬‫شود؟‬ ‫می‬ ‫انجام‬ ‫مقایسه‬ ‫چند‬
‫سوال‬‫آرایه‬ )‫ای‬‫دارای‬18‫چ‬ ‫خطی‬ ‫و‬ ‫دودویی‬ ‫روش‬ ‫به‬ ‫کلید‬ ‫یک‬ ‫جستجوی‬ ‫حالت‬ ‫بهترین‬ ‫و‬ ‫حالت‬ ‫بدترین‬ ‫در‬ ‫است‬ ‫عنصر‬‫می‬ ‫انجام‬ ‫مقایسه‬ ‫عمل‬ ‫ند‬
‫شود؟‬
‫بزنید!؟‬ ‫حدس‬ ‫دودویی‬ ‫جستجوی‬ ‫در‬ ‫ها‬ ‫مقایسه‬ ‫تعداد‬ ‫حداکثر‬ ‫برای‬ ‫ریاضی‬ ‫رابطه‬ ‫یک‬ ‫توانید‬ ‫می‬ ‫آیا‬ )‫سوال‬
int i; bool flag = false;
int n = int.Parse(Console.ReadLine()); // ‫آرایه‬ ‫طول‬
int[] arr = new int[n];
for (i = 0; i < n; i++) // ‫آرایه‬ ‫دهی‬ ‫مقدار‬
arr[i] = int.Parse(Console.ReadLine());
int key=int.Parse (Console.ReadLine()); //‫کلید‬ ‫دریافت‬
for (i = 0; i < n; i++ ) // ‫خطی‬ ‫جستجوی‬
if (arr[i]==key)
{
flag = true;
break;
}
if (flag)
Console.WriteLine("{0} Found in {1} ", key, i);
else
Console.WriteLine("{0} not Found!", key);
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
12
:‫آرایه‬ ‫در‬ ‫دودویی‬ ‫جستجوی‬ )‫برنامه‬
‫ابتدا‬ ‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ )‫برنامه‬n‫عدد‬ ‫سپس‬ ‫و‬ ‫کند‬ ‫ذخیره‬ ‫و‬ ‫دریافت‬ ‫کاربر‬ ‫از‬ ‫را‬ ‫عدد‬ ‫تا‬x‫کنید؟‬ ‫مشخص‬ ‫آنرا‬ ‫تکرار‬ ‫تعداد‬ ‫و‬ ‫دریافت‬ ‫را‬
‫ابتدا‬ ‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ ) ‫برنامه‬n‫را‬ ‫اعداد‬ ‫نهایت‬ ‫در‬ .‫کنید‬ ‫مرتب‬ ‫نزولی‬ ‫صورت‬ ‫به‬ ‫را‬ ‫ها‬ ‫داده‬ ‫سپس‬ ‫و‬ ‫کند‬ ‫دخیره‬ ‫و‬ ‫دریافت‬ ‫کاربر‬ ‫از‬ ‫را‬ ‫عدد‬ ‫تا‬
.‫شود‬ ‫داده‬ ‫نمایش‬ ‫یکبار‬ ‫فقط‬ ‫تکراری‬ ‫اعداد‬ ‫بطوریکه‬ ‫کنید‬ ‫چاپ‬
‫تست‬1‫)د‬‫عمل‬ ‫چه‬ ‫زیر‬ ‫ستور‬‫می‬ ‫انجام‬ ‫ی‬‫دهد؟‬int[] coin=new int[] {500,1000,2000,5000};
‫می‬ ‫قرار‬ ‫آن‬ ‫در‬ ‫ترتیب‬ ‫به‬ ‫را‬ ‫شده‬ ‫داده‬ ‫اعداد‬ ‫و‬ ‫کرده‬ ‫ایجاد‬ ‫عنصر‬ ‫پنج‬ ‫با‬ ‫آرایه‬ ‫یک‬ )‫الف‬.‫دهد‬
‫می‬ ‫قرار‬ ‫آن‬ ‫در‬ ‫ترتیب‬ ‫به‬ ‫را‬ ‫شده‬ ‫داده‬ ‫اعداد‬ ‫و‬ ‫کرده‬ ‫ایجاد‬ ‫عنصر‬ ‫چهار‬ ‫با‬ ‫آرایه‬ ‫یک‬ )‫ب‬.‫دهد‬
‫می‬ ‫قرار‬ ‫آن‬ ‫در‬ ‫اول‬ ‫به‬ ‫آخر‬ ‫از‬ ‫را‬ ‫شده‬ ‫داده‬ ‫اعداد‬ ‫و‬ ‫کرده‬ ‫ایجاد‬ ‫عنصر‬ ‫پنج‬ ‫با‬ ‫آرایه‬ ‫یک‬ )‫ج‬.‫دهد‬
‫می‬ ‫قرار‬ ‫آن‬ ‫در‬ ‫اول‬ ‫به‬ ‫آخر‬ ‫از‬ ‫را‬ ‫شده‬ ‫داده‬ ‫اعداد‬ ‫و‬ ‫کرده‬ ‫ایجاد‬ ‫عنصر‬ ‫چهار‬ ‫با‬ ‫آرایه‬ ‫یک‬ )‫د‬.‫دهد‬
‫تست‬2)‫مرتب‬ ‫الگوریتم‬ ‫هر‬ ‫در‬‫و‬ .......................... ‫عمل‬ ‫دو‬ ‫همیشه‬ ‫سازی‬‫می‬ ‫انجام‬ .........................‫شود‬
)‫الف‬Compare–Swap)‫ب‬Search–Compare)‫ج‬Search–Swap)‫د‬Compare–Search
‫تست‬3)‫است؟‬ ‫صحیح‬ ‫آرایه‬ ‫با‬ ‫رابطه‬ ‫در‬ ‫زیر‬ ‫جمالت‬ ‫از‬ ‫کدامیک‬
‫از‬ ‫آرایه‬ ‫اندیس‬ )‫الف‬1‫می‬ ‫شروع‬.‫شود‬‫از‬ ‫بعد‬ )‫ب‬‫می‬ ‫آرایه‬ ‫ایجاد‬.‫داد‬ ‫تغییر‬ ‫را‬ ‫آرایه‬ ‫اندازه‬ ‫توان‬
‫نمی‬ ‫آرایه‬ ‫ایجاد‬ ‫از‬ ‫بعد‬ )‫ج‬.‫کرد‬ ‫کم‬ ‫یا‬ ‫اضافه‬ ‫آن‬ ‫به‬ ‫عنصری‬ ‫توان‬‫دستور‬ ‫از‬ ‫آرایه‬ ‫ایجاد‬ ‫برای‬ )‫د‬create‫می‬ ‫استفاده‬.‫شود‬
‫تست‬4)‫نام‬ ‫به‬ ‫آرایه‬ ‫یک‬ ‫از‬ ‫پانزدهم‬ ‫عنصر‬ ‫به‬ ‫دسترسی‬ ‫برای‬list‫است؟‬ ‫صحیح‬ ‫گزینه‬ ‫کدام‬
)‫الف‬list[15])‫ب‬list[]15)‫ج‬list[]14)‫د‬list[14]
int i;bool flag = false;
int n = int.Parse(Console.ReadLine()); // ‫آرایه‬ ‫طول‬
int[] arr = new int[n];
for (i = 0; i < n; i++) // ‫آرایه‬ ‫دهی‬ ‫مقدار‬
arr[i] = int.Parse(Console.ReadLine());
Array.Sort(arr); // ‫آرایه‬ ‫سازی‬ ‫مرتب‬
int key=int.Parse (Console.ReadLine()); // ‫کلید‬ ‫دریافت‬
int first=0, last=n-1, middle=0;
while(first >= last)
{
middle = (first + last) / 2; // ‫آرایه‬ ‫وسط‬ ‫محاسبه‬
if (arr[middle] == key)
{
flag = true;
break;
}
else
if (arr[middle] > key)
last = middle - 1;
else
first = middle + 1;
}
if (flag)
Console.WriteLine("{0} Found in {1} ", key, middle);
else
Console.WriteLine("{0} not Found!", key);
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
13
: ‫سوم‬ ‫فصل‬‫داده‬،‫شمارشی‬‫کالس‬‫و‬‫متد‬
‫نوع‬‫داده‬‫شمارشی‬1:
‫داده‬‫شمارشی‬‫از‬‫داده‬‫های‬‫مرکب‬‫است‬‫که‬‫خود‬‫شامل‬‫سری‬ ‫یک‬‫داده‬‫سبب‬ ‫شمارشی‬ ‫داده‬ ‫نوع‬ ‫از‬ ‫استفاده‬ .‫است‬‫باالبردن‬‫خوانایی‬‫برنامه‬‫می‬.‫شوند‬
‫نوع‬‫داده‬‫شمارشی‬‫مجموعه‬‫ای‬‫از‬‫چند‬‫نام‬‫دلخواه‬‫می‬‫باشد‬‫که‬‫حالت‬‫ها‬‫و‬‫مقادیر‬‫مختلف‬‫موضوع‬ ‫یک‬‫را‬‫نشان‬‫می‬.‫دهد‬ً‫ال‬‫مث‬‫برای‬‫روزهای‬‫هفته‬‫به‬
‫جای‬‫اعداد‬‫از‬ ‫هفت‬ ‫تا‬ ‫یک‬‫نام‬‫ها‬‫و‬‫معنی‬ ‫کلمات‬‫دار‬‫استفاده‬‫می‬.‫کنیم‬‫عالوه‬‫بر‬‫روزهای‬،‫هفته‬‫برای‬‫نام‬‫ماه‬‫های‬،‫سال‬‫مدرک‬‫تحصیلی‬‫اشخاص‬‫نیز‬
‫می‬‫توان‬‫از‬‫نوع‬‫داده‬‫شمارشی‬‫استفاده‬.‫کرد‬
‫برای‬‫تعریف‬‫یک‬‫نوع‬‫داده‬‫شمارشی‬‫از‬‫کلمه‬‫کلیدی‬enum‫استفاده‬‫می‬.‫شود‬‫دسترسی‬ ‫نوع‬ً‫ال‬‫معمو‬public‫است‬.‫محل‬‫قرارگیری‬‫تعریف‬‫نوع‬‫داده‬
،‫شمارشی‬ً‫ال‬‫معمو‬‫خارج‬‫از‬‫کالس‬‫و‬‫در‬‫ابتدای‬‫برنامه‬‫است‬.
‫دسترسی‬ ‫نوع‬ enum ‫دلخواه‬ ‫نام‬
{
‫ها‬ ‫نام‬ ‫از‬ ‫لیستی‬‫کلمات‬ ‫و‬
}
: ‫مثال‬.‫هستند‬ ‫ثابت‬ ‫عدد‬ ‫یک‬ ‫با‬ ‫معادل‬ ‫شمارشی‬ ‫داده‬ ‫نوع‬ ‫اعضای‬ ‫از‬ ‫یک‬ ‫هر‬)‫ندارد‬ ‫وجود‬ ‫لیست‬ ‫انتهای‬ ‫در‬ ‫ویرگول‬ ‫(نقطه‬
public enum DayOfWeek
{
sat,Sun, Mon,Tue, Wedn,Thurs,Fri
}
‫شمارشی‬ ‫داده‬ ‫نوع‬ ‫مثال‬ ‫این‬ ‫در‬dayofWeek‫ارزش‬ ‫که‬ ‫باشد‬ ‫می‬ ‫مقدار‬ ‫هفت‬ ‫شامل‬sat‫برابر‬0‫ارزش‬ ‫و‬Sun... ‫و‬ ‫یک‬ ‫برابر‬‫می‬ ‫البته‬ ‫که‬ ‫باشد‬ ‫می‬
.‫داد‬ ‫تغییر‬ ‫را‬ ‫آنها‬ ‫عددی‬ ‫ارزش‬ ‫توان‬
public enum DayOfWeek
{
Sat=1,Sun, Mon,Tue, Wedn,Thurs,Fri
}
‫ارزش‬ ‫مثال‬ ‫این‬ ‫در‬Sat.‫باشد‬ ‫می‬ ‫قبلی‬ ‫از‬ ‫بیشتر‬ ‫واحد‬ ‫یک‬ ‫بعدی‬ ‫اعضای‬ ‫عددی‬ ‫ارزش‬ ‫و‬ ‫یک‬ ‫برابر‬
‫این‬ ‫توان‬ ‫می‬‫نوع‬‫تعر‬ ‫نیز‬ ‫زیر‬ ‫بصورت‬ ‫را‬‫ی‬‫نمود‬ ‫ف‬:
public enum DayOfWeek
{
Wedn=5,Sat=1, Mon=3, Sun=2,Tue=5, Fri=7, Thurs=6
}
‫شود‬ ‫مقداردهی‬ ‫سپس‬ ‫و‬ ‫شود‬ ‫تعریف‬ ‫نوع‬ ‫این‬ ‫از‬ ‫متغیری‬ ‫باید‬ ‫ابتدا‬ ‫نوع‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫برای‬.‫مثال‬:
DayOfWeek d;
d = DayOfWeek.Thurs;
Console.WriteLine(d);
‫نکته‬1)‫متد‬ ‫داخل‬ ‫نباید‬ ‫نوع‬ ‫این‬Main‫نمود‬ ‫تعریف‬ ‫کالس‬ ‫از‬ ‫خارج‬ ‫یا‬ ‫کالس‬ ‫داخل‬ ‫توان‬ ‫می‬ ‫اما‬ ‫گردد‬ ‫تعریف‬.
‫نکته‬2)‫را‬ ‫شمارشی‬ ‫متغیر‬ ‫محتوای‬‫توان‬ ‫نمی‬‫باشد‬ ‫مقادیر‬ ‫همان‬ ‫از‬ ‫یکی‬ ‫باید‬ ‫حتما‬ ‫و‬ ‫داد‬ ‫قرار‬ ‫رشته‬ ‫یا‬ ‫عدد‬(‫بزرگ‬ ‫و‬ ‫کوچک‬ ‫حروف‬ ‫به‬ ‫حساسیت‬).
‫نکته‬3).‫نمود‬ ‫استفاده‬ ‫تفریق‬ ‫یا‬ ‫جمع‬ ‫عملگر‬ ‫از‬ ‫توان‬ ‫می‬ ‫فقط‬ ‫شمارشی‬ ‫نوع‬ ‫متغیر‬ ‫در‬
‫نکته‬4))!!!!!‫کرد(؟؟؟‬ ‫دریافت‬ ‫ورودی‬ ‫از‬ ‫توان‬ ‫نمی‬ ‫را‬ ‫داده‬ ‫نوع‬ ‫این‬
‫نکته‬5)‫در‬‫کتابخانه‬‫نت‬ ‫دات‬،‫آماده‬ ‫شمارشی‬ ‫های‬ ‫داده‬‫مانند‬ConsoleColor.‫دارد‬ ‫وجود‬ ‫نیز‬
: ‫مثال‬
public enum DayOfWeek {
sat=1,Sun, Mon,Tue, Wedn,Thurs,Fri
}
static void Main(string[] args)
{
DayOfWeek d;
1
Enumerated Type
public enum CAR {
Peykan, Pride, Samand, Benz, BMW
}
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
14
d = 3; //error
d = DayOfWeek.Thurs;
Console.WriteLine(d); // Thurs
d++;
Console.WriteLine(d); // Fri
Console.WriteLine((int)d); // 7
d += 100;
Console.WriteLine(d); // 107
d = DayOfWeek.Mon - 2;
Console.WriteLine(d); // sat
d -= 3;
Console.WriteLine(d); // -2
d = int.Parse(Console.ReadLine()); // Error
d = (DayOfWeek) int.Parse(Console.ReadLine()); //ok type casting
if (d == DayOfWeek.Fri)
Console.WriteLine(" ‫تعطیل‬ ");
if (d == 7) // Error
Console.WriteLine(" ‫تعطیل‬ ");
}
: ‫کالس‬
،‫کالس‬‫تعریف‬،‫مشخصات‬‫وضعیت‬‫و‬‫رفتارهای‬‫یک‬‫شئ‬‫در‬ ‫را‬‫بردارد‬‫و‬‫نوع‬‫شئ‬‫را‬‫مشخص‬‫می‬.‫کند‬‫نام‬ ‫است‬ ‫(بهتر‬،‫کالس‬‫مطابق‬‫با‬‫نام‬‫شئ‬‫باشد‬
‫که‬‫حال‬ ‫در‬‫تعریف‬‫آن‬‫هستیم‬‫برنامه‬ .)‫یک‬ ‫قالب‬ ‫در‬ ‫را‬ ‫شی‬ ‫یک‬ ‫رفتارهای‬ ‫و‬ ‫وضعیت‬ ‫و‬ ‫مشخصات‬ ‫یعنی‬ .‫کند‬ ‫تعریف‬ ‫را‬ ‫کالس‬ ‫یک‬ ‫تواند‬ ‫می‬ ‫نویس‬
.)‫است‬ ‫ندارد(انتزاعی‬ ‫خارجی‬ ‫وجود‬ ‫و‬ ‫است‬ ‫تعریف‬ ‫فقط‬ ‫کالس‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ .‫کند‬ ‫می‬ ‫تعریف‬ ‫کالس‬
‫امکا‬ ‫و‬ ‫اشیاء‬ ‫رفتارهای‬ ‫و‬ ‫ها‬ ‫ویژگی‬ ‫تعریف‬ ‫امکان‬ ‫آنها‬ ‫در‬ ‫که‬ ‫نویسی‬ ‫برنامه‬ ‫های‬ ‫زبان‬‫نسبت‬ ‫و‬ ‫ارتباط‬ ‫یکدیگر‬ ‫با‬ ‫اشیاء‬ ‫و‬ ‫است‬ ‫شده‬ ‫فراهم‬ ‫اشیاء‬ ‫ایجاد‬ ‫ن‬
‫گرا‬ ‫شی‬ ‫زبانهای‬ ،‫دارند‬ ‫واکنش‬ ‫هم‬ ‫به‬2.‫شوند‬ ‫می‬ ‫نامیده‬‫نویسی‬ ‫برنامه‬ ‫های‬ ‫زبان‬C#،C++‫ها‬ ‫زبان‬ ‫این‬ ‫به‬ ‫که‬ ‫هایی‬ ‫برنامه‬ .‫هستند‬ ‫گرا‬ ‫شی‬ ‫جاوا‬ ‫و‬
.‫هستند‬ ‫تعامل‬ ‫و‬ ‫ارتباط‬ ‫در‬ ‫یکدیگر‬ ‫با‬ ‫که‬ ‫شود‬ ‫می‬ ‫تشکیل‬ ‫شی‬ ‫تعدادی‬ ‫از‬ ‫واقع‬ ‫در‬ ‫شوند‬ ‫می‬ ‫نوشته‬
‫ء‬ ‫شی‬(object: )
،‫شی‬.‫شود‬ ‫می‬ )‫(ساخته‬ ‫متولد‬ ‫که‬ ‫باشد‬ ‫می‬ ‫کالس‬ ‫از‬ ‫ای‬ ‫نمونه‬.‫کرد‬ ‫ایجاد‬ ‫شی‬ ‫زیادی‬ ‫تعداد‬ ‫توان‬ ‫می‬ ‫کالس‬ ‫یک‬ ‫از‬‫ک‬.‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫شی‬ ‫نوع‬ ‫الس‬
‫یک‬‫شئ‬‫شامل‬‫تعدادی‬،‫ویژگی‬،‫وضعیت‬‫رفتار‬‫و‬‫عملیات‬‫است‬‫آن‬ ‫که‬‫را‬‫از‬‫اشیای‬‫دیگر‬‫متمایز‬‫می‬‫سازد‬.‫همچنین‬‫بر‬‫روی‬‫هر‬‫شئ‬‫نیز‬‫عملیاتی‬‫می‬
‫توان‬‫انجام‬‫داد‬.
‫نام‬ ‫و‬ ‫خانوادگی‬ ‫نام‬ ‫و‬ ‫نام‬ .‫شود‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫شی‬ ‫یک‬ ‫تواند‬ ‫می‬ ‫آموز‬ ‫دانش‬ ‫یک‬ ‫کارنامه‬ )‫مثال‬‫وضع‬ ‫و‬ ‫است‬ ‫کارنامه‬ ‫های‬ ‫ویژگی‬ ‫نمرات‬ ‫و‬ ‫دروس‬‫ی‬‫ت‬
.‫شود‬ ‫می‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫کارنامه‬ ‫روی‬ ‫بر‬ ‫عملیات‬ ‫معدل‬ ‫محاسبه‬ ‫یا‬ ‫نمرات‬ ‫کردن‬ ‫چاپ‬ ،‫نمرات‬ ‫کردن‬ ‫وارد‬ .‫باشد‬ ‫رد‬ ،‫قبول‬ ‫تواند‬ ‫می‬ ‫کارنامه‬
‫ببرید؟‬ ‫نام‬ ‫را‬ ‫آن‬ ‫های‬ ‫عملیات‬ ‫و‬ ‫ها‬ ‫ویژگی‬ ،‫شود‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫شی‬ ‫یک‬ ‫کالس‬ ‫سیاه‬ ‫تخته‬ ‫اگر‬ )‫سوال‬
‫برا‬‫ی‬‫حل‬‫یک‬‫مسئله‬‫به‬‫روش‬‫شئ‬،‫گرا‬‫تشخیص‬‫اشیاء‬‫و‬‫ارتباط‬‫آنها‬‫با‬‫یکدیگر‬‫بسیار‬‫اهمیت‬‫دارد‬.
‫ویژگی‬‫ها‬‫و‬‫وضعیت‬‫یک‬‫شئ‬‫به‬‫وسیله‬‫تعدادی‬‫متغیر‬‫که‬‫فیلد‬‫نامیده‬‫می‬،‫شوند‬‫مشخص‬‫می‬‫شود‬‫و‬‫رفتارهای‬‫اشیاء‬‫در‬‫قالب‬‫متدها‬‫تعریف‬‫می‬‫گردند‬.
‫م‬‫حل‬‫و‬‫مکان‬‫تعریف‬‫فیلدها‬‫و‬‫متدهای‬‫یک‬‫شئ‬‫در‬‫داخل‬‫یک‬‫کالس‬‫است‬.
‫کالس‬ ‫مثال‬ ‫بعنوان‬console‫های‬ ‫ویژگی‬ ‫دارای‬Title , Capslock , Cursorsize , ….
‫باشد‬ ‫می‬
‫ویژگی‬Title‫نوع‬ ‫از‬string‫و‬‫قابلیت‬get , set‫دارد‬ ‫را‬.
‫ویژگی‬Capslock‫نوع‬ ‫از‬bool‫و‬‫قابلیت‬get‫فقط‬‫دارد‬ ‫را‬.
‫ویژگی‬Cursorsize‫نوع‬ ‫از‬int‫و‬‫قابلیت‬get , set‫دارد‬ ‫را‬.
2
Object Oriented Language
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
15
: ‫متد‬(Method)
،‫متد‬‫مجموعه‬‫ای‬‫از‬‫دستورات‬‫است‬‫که‬‫برای‬‫انجام‬‫یک‬‫عمل‬‫خاص‬‫و‬‫یک‬ ‫حل‬‫مسئله‬‫کوچک‬‫به‬‫کار‬‫می‬‫رود‬‫م‬ .‫ت‬‫داشته‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫تواند‬ ‫می‬ ‫د‬
.‫باشد‬‫محل‬‫تعریف‬‫هر‬‫متد‬‫در‬‫داخل‬‫یک‬‫کالس‬‫است‬‫و‬‫متد‬‫جزیی‬‫از‬‫یک‬‫کالس‬‫است‬.‫برنامه‬‫هایی‬‫که‬‫تاکنون‬‫نوشته‬‫ایم‬‫دارای‬‫یک‬‫کالس‬‫و‬‫متدی‬
‫نام‬ ‫به‬Main‫بوده‬‫اند‬.
‫هر‬،‫متد‬‫از‬‫دو‬‫قسمت‬‫تشکیل‬‫می‬‫شود‬:1-‫عنوان‬‫متد‬.‫است‬ ‫متد‬ ‫اول‬ ‫خط‬ :2-‫بدنه‬‫متد‬‫متد‬ ‫داخل‬ ‫دستورات‬ :
‫توصیف‬‫کننده‬:(Modifier)
‫خط‬‫عنوان‬‫یک‬‫متد‬‫با‬‫کلمه‬‫ای‬‫شروع‬‫می‬‫شود‬‫که‬‫روش‬‫ایجاد‬‫و‬‫محدوده‬‫دسترسی‬‫به‬‫متد‬‫را‬‫مشخص‬‫می‬‫کند‬.‫به‬‫عنوان‬‫مثال‬‫توصیف‬‫کننده‬static،
‫روش‬‫ایجاد‬‫متد‬‫را‬‫مشخص‬‫می‬‫کند‬‫و‬‫نشان‬‫می‬‫دهد‬‫که‬‫به‬‫محض‬‫اجرای‬،‫برنامه‬‫چنین‬‫متدی‬‫ساخته‬‫شده‬‫و‬‫قابل‬‫استفاده‬‫است‬.
: ‫از‬ ‫عبارتند‬ ‫کننده‬ ‫توصیف‬ ‫نوع‬ ‫چهار‬static, private, protected, public
‫متد‬Main()‫همواره‬‫باید‬‫از‬‫نوع‬static‫باشد‬‫اگر‬‫توصیف‬‫کننده‬static‫را‬،‫ننویسید‬‫مترجم‬‫در‬‫ترجمه‬‫برنامه‬‫خطا‬‫می‬‫دهد‬.‫تمام‬‫متدهای‬‫آماده‬‫ای‬
‫که‬‫تاکنون‬‫استفاده‬‫کرده‬‫اید‬‫نظیر‬ReadLine‫نیز‬‫از‬‫نوع‬‫استاتیک‬‫هستند‬‫که‬‫در‬‫کالس‬Console‫از‬‫قبل‬‫تعریف‬‫شده‬‫اند‬.‫استفاده‬‫از‬‫متدهای‬static
‫ساده‬‫است‬.
‫توصیف‬‫کننده‬‫های‬‫دیگری‬‫نظیر‬private‫و‬protected‫وجود‬‫دارند‬‫که‬‫به‬‫وسیله‬‫ی‬‫آنها‬‫می‬‫توان‬‫محدوده‬‫دسترسی‬‫به‬‫متد‬‫را‬‫به‬‫یک‬‫کالس‬‫محدود‬
‫کرد‬‫و‬‫یا‬‫با‬‫استفاده‬‫از‬‫توصیف‬‫کننده‬public‫محدوده‬‫دسترسی‬‫به‬‫یک‬‫متد‬‫را‬‫بسیار‬‫گسترده‬‫و‬‫در‬،‫واقع‬‫بدون‬‫محدودیت‬‫معین‬‫کرد‬.
‫متدهای‬ReadLine()‫و‬WriteLine()‫با‬‫توصیف‬‫کننده‬public‫تعریف‬‫شده‬‫اند‬‫و‬‫به‬‫همین‬‫دلیل‬‫است‬‫که‬‫می‬‫توانید‬‫در‬‫هر‬‫برنامه‬‫ای‬(‫هر‬‫کالسی‬)‫از‬
‫آنها‬‫استفاده‬‫کنید‬.
‫اگر‬‫هیچ‬‫توصیف‬‫کننده‬‫ای‬‫برای‬‫تعیین‬‫محدوده‬‫دسترسی‬‫یک‬‫متد‬‫ذکر‬‫نشود‬،‫نوع‬‫دسترسی‬private‫به‬‫طور‬‫پیش‬‫فرض‬‫برای‬‫متد‬‫در‬‫نظر‬‫گرفته‬
‫می‬‫شود‬)‫خصوصی‬ (.
‫اگر‬.‫نیست‬ ‫استفاده‬ ‫قابل‬ ‫آن‬ ‫از‬ ‫خارج‬ ‫و‬ ‫است‬ ‫استفاده‬ ‫قابل‬ ‫است‬ ‫شده‬ ‫تعریف‬ ‫آن‬ ‫در‬ ‫متد‬ ‫که‬ ‫کالسی‬ ‫همان‬ ‫در‬ ‫فقط‬ ‫متد‬ ‫این‬ ‫آنگاه‬ ‫باشد‬ ‫خصوصی‬ ‫متدی‬
(‫عمومی‬ ‫متدی‬ ‫اگر‬ ‫اما‬public.‫است‬ ‫استفاده‬ ‫قابل‬ ‫نیز‬ ‫ها‬ ‫کالس‬ ‫بقیه‬ ‫در‬ ‫باشد‬ )
‫مقدار‬‫خروجی‬‫یا‬‫نوع‬‫داده‬‫برگشتی‬‫متد‬:(Return type)
‫در‬‫خط‬‫عنوان‬،‫متد‬‫پس‬‫از‬‫توصیف‬‫کننده‬،‫ها‬‫مقدار‬‫خروجی‬‫یا‬‫نوع‬‫داده‬‫برگشتی‬‫متد‬‫مشخص‬‫شود‬ ‫می‬.‫منظور‬‫از‬،‫مقدارخروجی‬‫آنچه‬‫که‬‫روی‬
‫صفحه‬‫نمایش‬‫چاپ‬‫می‬‫شود‬‫نیست‬‫بلکه‬‫مقداری‬‫است‬‫که‬‫از‬‫طریق‬‫متد‬ ‫اجرای‬‫قابل‬‫دریافت‬‫است‬‫و‬‫می‬‫توان‬‫آن‬‫را‬‫در‬‫یک‬‫متغیر‬‫ذخیره‬‫کرد‬.
‫مانند‬ReadLine‫خروجی‬ ‫که‬string‫م‬ ‫بعضی‬ ‫اما‬ ‫دارد‬‫ت‬‫متد‬ ‫مانند‬ ‫ندارند‬ ‫خروجی‬ ‫دها‬writeLine‫نوع‬ ‫از‬ ‫آن‬ ‫خروجی‬ ‫که‬void‫خروجی‬ ‫معموال‬ ‫باشد‬ ‫می‬
‫متد‬Main()‫نیز‬void‫نوع‬ ‫از‬ ‫اما‬ ‫باشد‬ ‫می‬int‫ه‬.‫باشد‬ ‫تواند‬ ‫می‬ ‫م‬
)‫مثال‬
)‫نکته‬‫ممکن‬‫است‬‫یک‬،‫متد‬‫مقدار‬‫خروجی‬‫و‬‫یا‬‫مقدار‬‫ورودی‬‫نداشته‬‫باشد‬
‫نام‬‫متد‬:
static int test(float x, byte y)
{
// ‫دستورات‬
}
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
16
‫در‬‫خط‬‫عنوان‬،‫متد‬‫پس‬‫از‬‫تعیین‬‫نوع‬،‫برگشتی‬‫باید‬‫نام‬‫متد‬‫را‬‫تعیین‬‫کنیم‬.‫در‬‫نام‬‫گذاری‬‫متد‬‫باید‬‫مانند‬‫نام‬،‫متغیرها‬‫اصول‬‫نام‬‫گذاری‬‫شناسه‬‫ها‬‫را‬
‫رعایت‬‫کنیم‬.ً‫ال‬‫معمو‬‫نام‬‫متد‬‫به‬‫صورت‬‫یک‬‫فعل‬‫امری‬‫نام‬‫گذاری‬‫می‬‫شود‬.‫این‬‫نام‬‫بهتر‬‫است‬‫بیان‬‫کننده‬‫نوع‬‫کاری‬‫باشد‬‫که‬،‫متد‬‫قصد‬‫انجام‬‫آن‬‫را‬
‫دارد‬.‫برای‬‫مثال‬‫متد‬Clear‫برای‬‫پاک‬‫کردن‬‫صفحه‬‫نمایش‬‫و‬‫متد‬Write‫برای‬‫نوشتن‬‫روی‬‫صفحه‬‫نمایش‬‫است‬.
‫لیست‬‫پارامترهای‬‫ارسال‬‫ی‬
‫در‬‫خط‬‫عنوان‬،‫متد‬‫پس‬‫از‬‫تعیین‬،‫نام‬‫باید‬‫پارامترها‬‫یا‬‫داده‬‫هایی‬‫که‬‫از‬‫طرف‬‫برنامه‬‫به‬‫متد‬‫داده‬‫می‬‫شود‬(ً‫ا‬‫اصطالح‬‫به‬‫متد‬‫ارسال‬‫می‬‫شود‬)‫را‬
‫مشخص‬‫کنیم‬.ً‫ال‬‫مث‬‫برای‬‫متد‬Write‫پارامتر‬‫ورودی‬‫می‬‫تواند‬‫یک‬‫رشته‬‫باشد‬‫که‬‫باید‬‫روی‬‫صفحه‬‫کنسول‬‫نمایش‬‫داده‬‫شود‬.‫بعضی‬‫از‬‫متدها‬‫نیز‬
‫پارامتر‬‫ورودی‬‫ندارند‬‫مانند‬‫متد‬Readline()
‫نکته‬‫مانند‬ ‫نمود‬ ‫استفاده‬ ‫مختلف‬ ‫های‬ ‫شکل‬ ‫به‬ ‫توان‬ ‫می‬ ‫را‬ ‫ها‬ ‫متد‬ ‫بعضی‬ :write‫به‬ ‫توان‬ ‫می‬ ‫که‬18‫شکل‬(+17 overloads‫نمود‬ ‫فراخوانی‬ ‫را‬ ‫آن‬ )
‫مثال‬
Console.Write();
Console.Write(12);
Console.Write("test");
Console.Write('a');
‫روش‬‫استفاده‬‫یا‬( : ‫متد‬ ‫فراخوانی‬Method call)
‫چنانچه‬‫متدی‬‫از‬‫نوع‬‫استاتیک‬‫باشد‬‫فراخوانی‬‫آن‬‫بسیار‬‫ساده‬‫است‬‫باید‬ ‫(البته‬‫خط‬‫عنوان‬‫آن‬‫را‬‫بدانیم‬)‫پس‬‫از‬‫اطالع‬‫از‬‫عنوان‬،‫متد‬‫کافی‬‫است‬
‫فضای‬‫نامی‬‫و‬‫نام‬‫کالس‬‫را‬‫قبل‬‫از‬‫نام‬‫متد‬‫ذکر‬‫کنید‬.‫این‬‫سه‬‫قسمت‬‫با‬‫عالمت‬‫نقطه‬‫از‬‫یکدیگر‬‫جدا‬‫می‬‫شوند‬.‫اگر‬‫متد‬‫دارای‬‫پارامتراست‬‫باید‬‫مقدار‬
‫پارامترها‬‫را‬‫نیز‬‫در‬‫داخل‬‫پرانتز‬‫معین‬‫کنید‬‫و‬‫در‬‫انتها‬‫عالمت‬‫نقطه‬‫ویرگول‬‫را‬‫بنویسید‬.
;‫نامی‬ ‫فضای‬ . ‫کالس‬ ‫نام‬ . ‫متد‬ ‫نام‬ )‫پارامترها‬ ‫(مقدار‬
‫مثال‬1:
public static string ReadLine( );
: ‫متد‬ ‫نام‬ReadLine:‫کننده‬ ‫توصیف‬public static:‫خروجی‬ ‫نوع‬string: )‫(ها‬ ‫ورودی‬‫ندارد‬
: ‫فراخوانی‬ ‫طریقه‬
string userName = System.Console.ReadLine( );
Console.WriteLine(System.Console.ReadLine( ));
‫مثال‬2:(2 overloads)
public static void Beep(int frequency, int duration);
public static void Beep();
: ‫متد‬ ‫نام‬Beep: ‫کننده‬ ‫توصیف‬Public static
:‫خروجی‬ ‫نوع‬: )‫(ها‬ ‫ورودی‬ ‫ندارد‬frequency, duration)‫نمود‬ ‫استفاده‬ ‫هم‬ ‫ورودی‬ ‫بدون‬ ‫توان‬ ‫می‬ ‫(البته‬
: ‫فراخوانی‬ ‫طریقه‬
Console.Beep();
Console.Beep(1700,1000);
)‫سوال‬‫ننوشت؟‬ ‫متد‬ ‫یک‬ ‫فراخوانی‬ ‫هنگام‬ ‫را‬ ‫نامی‬ ‫فضای‬ ‫توان‬ ‫می‬ ‫صورت‬ ‫چه‬ ‫در‬
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
17
‫چهارم‬ ‫فصل‬:‫کار‬‫با‬‫متدها‬‫و‬‫کالس‬‫های‬‫آماده‬
‫از‬ ‫تعدادی‬ ‫نیز‬ ‫قبال‬ .‫کرد‬ ‫استفاده‬ ‫آنها‬ ‫از‬ ‫توان‬ ‫می‬ ‫که‬ ‫دارد‬ ‫وجود‬ ‫آماده‬ ‫قبل‬ ‫از‬ ‫متد‬ ‫و‬ ‫کالس‬ ‫زیادی‬ ‫تعداد‬ ‫شارپ‬ ‫سی‬ ‫سازی‬ ‫برنامه‬ ‫زبان‬ ‫در‬‫ه‬ ‫کالس‬‫و‬ ‫ا‬
‫ب‬ ‫را‬ ‫آماده‬ ‫های‬ ‫متد‬‫کالس‬ ‫مانند‬ .‫اید‬ ‫گرفته‬ ‫کار‬Console‫متد‬ ‫یا‬WriteLine‫غیره‬ ‫و‬‫کتابخانه‬ ‫در‬ ..Net Framework‫آماده‬ ‫متد‬ ‫و‬ ‫کالس‬ ‫زیادی‬ ‫تعداد‬
.‫کنیم‬ ‫می‬ ‫معرفی‬ ‫را‬ ‫آماده‬ ‫کالس‬ ‫سه‬ ‫فصل‬ ‫این‬ ‫در‬ .‫دارد‬ ‫وجود‬
‫کالس‬Math
‫نام‬ ‫فضای‬ ‫در‬ ‫کالس‬ ‫این‬System‫دارد‬ ‫قرار‬.‫برای‬‫انجام‬‫محاسبات‬‫ریاضی‬‫عالوه‬‫بر‬‫چهار‬‫عمل‬،‫اصلی‬‫نیاز‬‫به‬‫عملگرهای‬‫دیگری‬‫نظیر‬‫و‬ ‫توان‬‫یا‬‫عمل‬
‫جذر‬‫و‬‫غیره‬‫می‬‫باشد‬‫کالس‬ ‫های‬ ‫متد‬ ‫از‬ ‫توان‬ ‫می‬ ‫که‬Math.‫نمود‬ ‫استفاده‬
‫این‬‫توابع‬‫به‬‫صورت‬‫متدهای‬‫استاتیک‬‫در‬‫کالس‬Math‫تعریف‬‫شده‬.‫اند‬‫به‬‫محض‬‫نوشتن‬‫نام‬‫کالس‬Math‫و‬‫عالمت‬،‫نقطه‬‫لیستی‬‫از‬‫متدهای‬‫کالس‬
Math‫به‬‫وسیله‬‫ی‬IntelliSense‫نشان‬‫داده‬‫می‬‫شود‬
‫متد‬Pow()
‫ورودی‬‫های‬‫این‬،‫متد‬‫دو‬‫عدد‬x‫و‬y‫از‬‫نوع‬‫اعشاری‬‫با‬‫دقت‬‫باال‬‫است‬‫متد‬ ‫خروجی‬ .‫نیز‬‫یک‬‫اعشاری‬ ‫عدد‬‫دقت‬‫باشد‬ ‫می‬ ‫باال‬‫که‬‫حاصل‬x‫به‬‫توان‬y
‫است‬.
‫مثال‬1:25
double number = Math. Pow (5, 2);
Console. WriteLine (number);
‫مثال‬2:
Console. WriteLine (Math.Pow (5, 2)(;
‫مثال‬3:
Math.Pow (5, 2);
‫دستور‬ ‫این‬5‫توان‬ ‫به‬2.‫کند‬ ‫نمی‬ ‫استفاده‬ ‫آن‬ ‫خروجی‬ ‫از‬ ‫اما‬ ‫کند‬ ‫می‬ ‫محاسبه‬ ‫را‬
)‫نکته‬‫نام‬ ‫به‬ ‫ثابتی‬ ‫کالس‬ ‫این‬ ‫در‬PI‫آن‬ ‫مقدار‬ ‫که‬ ‫دارد‬ ‫وجود‬3.14159265358979323846‫به‬ ‫ای‬ ‫دایره‬ ‫مساحت‬ ‫محاسبه‬ ‫برای‬ ‫مثال‬ .‫باشد‬ ‫می‬
‫شعاع‬5.3:‫نویسیم‬ ‫می‬
double a = Math.PI * Math.Pow(5.3, 2);
:‫رادیان‬ ‫به‬ ‫درجه‬ ‫تبدیل‬ ‫فرمول‬‫رادیان‬)/180=‫درجه‬*PI)
‫س‬‫زاویه‬ ‫سینوس‬ )‫وال‬‫ی‬30‫کنید؟‬ ‫محاسبه‬ ‫شارپ‬ ‫سی‬ ‫با‬ ‫را‬ ‫درجه‬
)‫نکته‬Math.PI.‫متد‬ ‫یک‬ ‫نه‬ ‫است‬ ‫ثابت‬ ‫یک‬
for (int i = 0; i < 10; i++)
Console.WriteLine(Math.Pow(2, i));
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
18
Console.WriteLine(Math.Max(100.8, 100.81)); //100.81
Console.WriteLine(Math.Max(-25, -20)); //-20
Console.WriteLine(Math.Min(10, 10)); //10
Console.WriteLine(Math.Min(-100, -200)); //-200
Console.WriteLine(Math.Pow(3, 3)); //27
Console.WriteLine(Math.Pow(-2, 3));//-8
Console.WriteLine(Math.Round(18.6));//19
Console.WriteLine(Math.Round(18.5)); //18
Console.WriteLine(Math.Round(18.55));//19
Console.WriteLine(Math.Sqrt(225)); //15
Console.WriteLine(Math.Sqrt(200)); //14.142135623731
Console.WriteLine(Math.Truncate(70.83)); //70
Console.WriteLine(Math.Truncate(-8.54)); //-8
Console.WriteLine(Math.Abs(70.83)); //70.83
Console.WriteLine(Math.Abs(-70.83)); //70.83
‫چیست؟‬ ‫زیر‬ ‫کدهای‬ ‫قطعه‬ ‫خروجی‬
A) Console.Write(Math.Round(11.5));  12
B) Console.Write(Math.Truncate(34.765));
C) Console.Write(Math.Sqrt(64));
D) Console.Write(Math.Log(25,5));
E) Console.Write(Math.Max(Math.Pow(2,3),Math.Pow(2,4)));
int[] arr = { 25, 13, 32, 11, 17, 8, 21, 14, 19, 14 };
int min=arr[0]; // ‫مقدار‬ ‫دهی‬ ‫با‬ ‫عنصر‬ ‫اول‬ ‫آرایه‬
foreach (int x in arr)
min = Math.Min(min, x);
Console.WriteLine(min);
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
19
‫کالس‬tringS:
‫همان‬‫طور‬‫که‬‫در‬‫برنامه‬‫می‬‫توان‬‫متغیری‬‫برای‬‫نگهداری‬‫داده‬‫های‬‫عددی‬‫تعریف‬،‫کرد‬‫داده‬ ‫برای‬‫های‬‫رشته‬‫ای‬‫نیز‬‫می‬‫توان‬‫متغیری‬‫از‬‫نوع‬string
‫تعریف‬‫کرد‬.‫این‬‫نوع‬‫داده‬‫در‬‫واقع‬‫کالس‬ ‫یک‬‫است‬‫و‬‫متغیری‬‫که‬‫از‬‫این‬‫نوع‬‫تعریف‬‫می‬‫شود‬‫اشاره‬‫به‬‫ای‬ ‫آرایه‬‫از‬‫کاراکترها‬‫می‬‫کند‬.
Strintg st="Computer";
Console.write(st[3]); // p
.‫باشیم‬ ‫داشته‬ ‫دسترسی‬ ‫رشته‬ ‫یک‬ ‫کاراکترهای‬ ‫به‬ ‫توانیم‬ ‫می‬St[0]  'C'
‫نکته‬:‫تغییر‬‫ناپذیری‬‫یک‬‫رشته‬:‫پس‬‫از‬‫اینکه‬‫یک‬‫رشته‬‫در‬‫حافظه‬‫ایجاد‬،‫شد‬‫آن‬ ‫محتویات‬‫قابل‬‫تغییر‬.‫نیست‬‫به‬‫عبارت‬‫دیگر‬‫یک‬‫رشته‬‫پس‬‫از‬،‫ایجاد‬
‫تغییر‬(‫ناپذیر‬Immutable).‫است‬‫این‬ ‫دلیل‬‫است‬‫که‬‫هر‬‫بار‬‫که‬‫رشته‬ ‫متغیر‬‫ای‬‫مقدار‬‫دیگری‬‫می‬‫گیرد‬‫مانند‬‫این‬‫است‬‫که‬‫دوباره‬‫تعریف‬‫شده‬‫است‬
‫نمی‬ ‫پس‬‫یک‬ ‫توانیم‬‫حرف‬‫از‬‫آن‬‫را‬‫تغییر‬‫دهیم‬.‫دستور‬ ‫پس‬st[1]='d'; //error‫دستور‬ ‫اما‬ ‫دارد‬ ‫خطا‬st="test".‫ندارد‬ ‫خطا‬
‫این‬‫متد‬‫ها‬‫روی‬‫خود‬‫رشته‬‫تأثیر‬‫نمی‬‫گذارند‬‫بلکه‬‫یک‬‫رشته‬‫دیگر‬‫بر‬‫می‬.‫گردانند‬‫محتوای‬ ‫بنابراین‬‫متغیر‬‫رشته‬‫ای‬‫را‬‫تغییر‬‫نمی‬‫دهند‬.
: ‫مثال‬
string s = "This is a test";
Console.WriteLine(s.ToLower()); //this is a test
Console.WriteLine(s.ToUpper()); //THIS IS A TEST
Console.WriteLine(s.Insert(0, "Note,")); //Note,This is a test
Console.WriteLine(s.Length); //14
Console.WriteLine(s.IndexOf("i")); //2
Console.WriteLine(s.IndexOf("I")); //-1
Console.WriteLine(s.Replace("This","it"));//it is a test
Console.WriteLine(s.Replace("This is", "we have"));//we have a test
Console.WriteLine(s.CompareTo("This is a test")); //0
Console.WriteLine(s.CompareTo("A")); //1
C o m p u t e r
p.CompareTo(s) 
p>s  1
p < s  -1
p == s  0
‫به‬ ‫حرف‬ ‫مقایسه‬ ‫برای‬‫می‬ ‫مقایسه‬ ‫رشته‬ ‫دو‬ ‫حرف‬
‫اعداد‬ ‫که‬ ‫است‬ ‫صورت‬ ‫این‬ ‫به‬ ‫مقایسه‬ ‫ترتیب‬ ‫و‬ ‫شود‬
‫نسبت‬ ‫کوچک‬ ‫حروف‬ ‫و‬ ‫هستند‬ ‫حروف‬ ‫از‬ ‫کوچکتر‬
.‫هستند‬ ‫کوچکتر‬ ،‫بزرگ‬ ‫حروف‬ ‫به‬
"A" > "a" "ABC">"ali"
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
20
Console.WriteLine(s.CompareTo("U")); //-1
)‫سوال‬‫کنید‬ ‫تعیین‬ ‫را‬ ‫زیر‬ ‫های‬ ‫کد‬ ‫قطعه‬ ‫خروجی‬ ،‫زیر‬ ‫متغیر‬ ‫اعالن‬ ‫به‬ ‫توجه‬ ‫با‬‫؟‬
string s = "I am a student.";
A) Console.Write(s[5]);
B) Console.Write(s.Replace("a","A"));  I Am A student.
C) Console.Write(s.IndexOf(" "));
D) Console.WriteLine(s.CompareTo("i am a student"));
E) Console.Write(s.Insert(7,"computer "));
‫کالس‬Array:‫ا‬‫د‬ ‫نیز‬ ‫کالس‬ ‫ین‬‫ا‬‫متدهای‬ ‫رای‬‫خاصی‬‫متدهای‬ ‫آرایه‬ ‫در‬ ‫جستجو‬ ‫و‬ ‫سازی‬ ‫مرتب‬ ‫برای‬ ‫کالس‬ ‫این‬ .‫باشد‬ ‫می‬ ‫ها‬ ‫آرایه‬ ‫روی‬ ‫بر‬ ‫کار‬ ‫برای‬
:‫است‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫متدها‬ ‫این‬ ‫از‬ ‫برخی‬ .‫دارد‬ ‫مناسب‬
string[] st = new string[6];
st[0] = "reza"; st[1] = "ali";st[2] = "amir";
Null Null Null Null Null Null
0 1 2 3 4 5
Reza ali amir karim hadi amir
0 1 2 3 4 5
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
21
st[3] = "karim"; st[4] = "hadi"; st[5] = "amir";
int x = Array.IndexOf(st, "amir"); Console.WriteLine(x);//2
x = Array.LastIndexOf(st, "amir"); Console.WriteLine(x);//5
x = Array.BinarySearch(st, "karim"); Console.WriteLine(x);//-1
Array.Sort(st);
x = Array.BinarySearch(st, "karim");
Console.WriteLine(x); //4
Array.Reverse(st);
string[] ss = new string[4];
Array.Copy(st, ss,4); ss
Array.Clear(st,1,2);
)‫تست‬
1-‫شمارشی‬ ‫داده‬ ‫اگر‬value‫چیست؟‬ ‫زیر‬ ‫کد‬ ‫قطعه‬ ‫خروجی‬ ،‫باشد‬ ‫شده‬ ‫تعریف‬ ‫زیر‬ ‫صورت‬ ‫به‬
)‫الف‬abcd)‫ب‬0123
‫شود‬ ‫نمی‬ ‫چاپ‬ ‫چیزی‬ )‫د‬ ‫شود‬ ‫می‬ ‫صادر‬ ‫خطا‬ ‫پیغام‬ )‫ج‬
2-‫متغیر‬ ‫و‬ ‫باشیم‬ ‫داشته‬ ‫را‬ ‫روبرو‬ ‫کد‬ ‫قطعه‬ ‫اگر‬x‫نوع‬ ‫از‬level‫است؟‬ ‫نادرست‬ ‫گزینه‬ ‫کدام‬ .‫باشد‬ ‫شده‬ ‫تعریف‬
)‫الف‬x=level.a;)‫ب‬x=(level)0;)‫ج‬x=0;‫ج‬ ‫و‬ ‫ب‬ )‫د‬
3-‫دارد؟‬ ‫خطا‬ ‫دستور‬ ‫کدام‬ ‫زیر‬ ‫کد‬ ‫قطعه‬ ‫در‬
)‫الف‬1)‫ب‬2)‫ج‬3)‫د‬4
4-‫متغیر‬ ‫مقدار‬a‫است‬ ‫گزینه‬ ‫کدام‬‫؟‬
)‫الف‬1)‫ب‬-1)‫ج‬0‫خطا‬ )‫د‬
ali amir amir hadi karim reza
0 1 2 3 4 5
reza Karim Hadi Amir Amir ali
0 1 2 3 4 5
reza Karim Hadi Amir
0 1 2 3
reza null null Amir Amir ali
0 1 2 3 4 5
public enum value { a, b, c, d };
value test;
for (test = value.d; test <= value.a; test++)
Console.Write(test);
public enum level { a, b, c };
const byte a = 25; //1
a++; //2
byte r = a + 10; //3
const byte A = 350 / 10; //4
string s = "CSHARP";
int a = s.IndexOf("x");
‫زاهدی‬-‫محمدی‬
‫سازی‬ ‫برنامه‬ ‫جزوه‬2
22
‫استودیو‬ ‫ویژوال‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫ویندوزی‬ ‫های‬ ‫برنامه‬ ‫ایجاد‬
‫متد‬ ‫از‬ ‫برنامه‬ ‫اجرای‬ ‫کنسولی‬ ‫های‬ ‫برنامه‬ ‫در‬Main‫شوند‬ ‫می‬ ‫اجرا‬ ‫خط‬ ‫به‬ ‫خط‬ ‫دستورات‬ ‫و‬ ‫شود‬ ‫می‬ ‫شروع‬‫به‬ ‫کنسولی‬ ‫های‬ ‫برنامه‬ ‫اجرای‬ ‫روند‬ .
:‫است‬ ‫زیر‬ ‫صورت‬
‫های‬ ‫برنامه‬ ‫در‬‫ویندوزی‬‫متد‬ ‫از‬ ‫برنامه‬ ‫اجرای‬ ‫نیز‬Main‫رویداد‬ ‫یا‬ ‫اتفاق‬ ‫تا‬ ‫ماند‬ ‫می‬ ‫منتظر‬ ‫برنامه‬ ‫که‬ ‫تفاوت‬ ‫این‬ ‫با‬ ‫شود‬ ‫می‬ ‫شروع‬‫ی‬(Event‫رخ‬ )
‫دهد‬.
.‫است‬ ‫داده‬ ‫رخ‬ ‫اتفاق‬ ‫یک‬ ‫که‬ ‫دهد‬ ‫نشان‬ ‫تا‬ ‫شود‬ ‫می‬ ‫داده‬ ‫برنامه‬ ‫به‬ ‫عامل‬ ‫سیستم‬ ‫طرف‬ ‫از‬ ‫که‬ ‫است‬ ‫اطالع‬ ‫یک‬ ‫رویداد‬
‫کلید‬ ‫و‬ ‫شود‬ ‫وارد‬ ‫ها‬ ‫داده‬ ‫تا‬ ‫شود‬ ‫می‬ ‫متوقف‬ ‫برنامه‬ ‫اجرا‬ ،‫رسیم‬ ‫می‬ ‫داده‬ ‫دریافت‬ ‫دستور‬ ‫به‬ ‫وقتی‬ ‫کنسولی‬ ‫های‬ ‫برنامه‬ ‫در‬Enter.‫شود‬ ‫زده‬
‫یک‬‫تفاوت‬‫دیگر‬‫بین‬‫برنامه‬‫ویندوزی‬‫و‬‫کنسولی‬‫این‬‫است‬،‫که‬‫برنامه‬‫های‬‫ویندوزی‬‫پس‬‫واکنش‬ ‫از‬‫به‬‫رویدادها‬‫و‬‫انجام‬‫عملیات‬،‫مربوطه‬ً‫ا‬‫مجدد‬‫در‬
‫حالت‬‫انتظار‬‫برای‬‫رویداد‬‫بعدی‬‫به‬‫سر‬‫می‬‫تا‬ ‫برند‬‫در‬‫نهایت‬‫کاربر‬‫از‬‫برنامه‬‫خارج‬‫گردد‬.
‫به‬‫این‬‫ترتیب‬‫هنگامی‬‫که‬‫کاربر‬‫بر‬‫روی‬‫کلیدی‬‫با‬‫ماوس‬‫کلیک‬‫می‬،‫کند‬‫این‬‫رویداد‬‫از‬‫سیستم‬ ‫طریق‬‫عامل‬‫شناسایی‬‫می‬‫شود‬‫و‬‫از‬‫طرف‬‫سیستم‬
‫عامل‬‫یک‬‫پیام‬‫به‬‫برنامه‬‫فرستاده‬‫می‬‫شود‬‫و‬‫متد‬EH‫مربوط‬‫به‬‫آن‬‫رویداد‬‫که‬ً‫ال‬‫قب‬‫نوشته‬‫ایم‬‫به‬‫طور‬‫خودکار‬‫اجرا‬‫می‬.‫شود‬‫طبیعی‬‫است‬‫که‬‫اگر‬
‫برنامه‬‫متدی‬ ‫فاقد‬‫برای‬‫یک‬‫رویداد‬،‫باشد‬‫هر‬‫چقدر‬‫که‬‫سیستم‬‫عامل‬‫پیام‬‫بفرستد‬‫برنامه‬‫در‬‫مقابل‬‫آن‬‫واکنشی‬‫نخواهد‬ ‫نشان‬‫داد‬.
‫متدها‬ ‫این‬ ‫به‬ ،‫شوند‬ ‫اجرا‬ ‫رویدادی‬ ‫هر‬ ‫دادن‬ ‫رخ‬ ‫ازای‬ ‫در‬ ‫که‬ ‫نویسد‬ ‫می‬ ‫متد‬ ‫تعداد‬ ‫نویس‬ ‫برنامه‬ ،‫ویندوزی‬ ‫های‬ ‫برنامه‬ ‫در‬ ‫پس‬Event Handler
.‫شود‬ ‫می‬ ‫گفته‬
‫متد‬ ‫که‬ ‫کنسولی‬ ‫های‬ ‫برنامه‬ ‫برخالف‬ ‫و‬ ‫دارد‬ ‫کاربر‬ ‫به‬ ‫بستگی‬ ‫نیز‬ ‫متدها‬ ‫اجرای‬ ‫ترتیب‬Main‫ه‬ ‫برنامه‬ ‫در‬ ‫شود‬ ‫می‬ ‫اجرا‬ ‫آخر‬ ‫تا‬ ‫اول‬ ‫از‬‫با‬ ‫ویندوزی‬ ‫ای‬
.‫شود‬ ‫می‬ ‫اجرا‬ ‫متد‬ ‫یک‬ ،‫دهد‬ ‫می‬ ‫انجام‬ ‫کاربر‬ ‫که‬ ‫عملی‬ ‫به‬ ‫توجه‬
‫شکل‬‫کلی‬‫یک‬‫متد‬EH‫به‬‫صورت‬‫زیر‬: ‫است‬
void ‫متد‬ ‫پیام(نام‬ ‫فرستنده‬ ، ‫پیام‬ ‫)جزئیات‬
{
‫رویداد‬ ‫به‬ ‫واکنش‬ ‫دستورات‬
}
Jozve c#2 mohamady_zahedy
Jozve c#2 mohamady_zahedy
Jozve c#2 mohamady_zahedy

More Related Content

What's hot

Advance programming c++
Advance programming c++Advance programming c++
Advance programming c++AliNazarizadeh
 
FLEX تخصصی : ایجاد تحلیلگر لغوی در ویندوز با استفاده از
FLEX تخصصی : ایجاد تحلیلگر لغوی در ویندوز با استفاده از FLEX تخصصی : ایجاد تحلیلگر لغوی در ویندوز با استفاده از
FLEX تخصصی : ایجاد تحلیلگر لغوی در ویندوز با استفاده از Hamid Saberi
 
Java programming languages
Java programming languagesJava programming languages
Java programming languagesjavadib
 
Machine & Assembly Language - Chapter 1
Machine & Assembly Language - Chapter 1Machine & Assembly Language - Chapter 1
Machine & Assembly Language - Chapter 1M Nemati
 
ماشین پشته ای
ماشین پشته ایماشین پشته ای
ماشین پشته ایminidars
 
Radmanesh c#-1
Radmanesh c#-1Radmanesh c#-1
Radmanesh c#-1neginrmn
 
گرامرهای مستقل از متن
گرامرهای مستقل از متنگرامرهای مستقل از متن
گرامرهای مستقل از متنminidars
 

What's hot (8)

Advance programming c++
Advance programming c++Advance programming c++
Advance programming c++
 
C++
C++C++
C++
 
FLEX تخصصی : ایجاد تحلیلگر لغوی در ویندوز با استفاده از
FLEX تخصصی : ایجاد تحلیلگر لغوی در ویندوز با استفاده از FLEX تخصصی : ایجاد تحلیلگر لغوی در ویندوز با استفاده از
FLEX تخصصی : ایجاد تحلیلگر لغوی در ویندوز با استفاده از
 
Java programming languages
Java programming languagesJava programming languages
Java programming languages
 
Machine & Assembly Language - Chapter 1
Machine & Assembly Language - Chapter 1Machine & Assembly Language - Chapter 1
Machine & Assembly Language - Chapter 1
 
ماشین پشته ای
ماشین پشته ایماشین پشته ای
ماشین پشته ای
 
Radmanesh c#-1
Radmanesh c#-1Radmanesh c#-1
Radmanesh c#-1
 
گرامرهای مستقل از متن
گرامرهای مستقل از متنگرامرهای مستقل از متن
گرامرهای مستقل از متن
 

Viewers also liked

서비스디자인
서비스디자인서비스디자인
서비스디자인yewon Shin
 
141 vitamin a deficiency 2
141 vitamin a deficiency 2141 vitamin a deficiency 2
141 vitamin a deficiency 2G vasuDEV
 
Intelligent Mainframe Management: The Evolution of Expert Systems
Intelligent Mainframe Management: The Evolution of Expert Systems Intelligent Mainframe Management: The Evolution of Expert Systems
Intelligent Mainframe Management: The Evolution of Expert Systems CA Technologies
 
Ana, blanca y lucía
Ana, blanca y lucíaAna, blanca y lucía
Ana, blanca y lucíajlealleon
 
Les machines. antonio y david
Les machines. antonio y davidLes machines. antonio y david
Les machines. antonio y davidjlealleon
 
Programme des vacances de Noël de l'AIREL
Programme des vacances de Noël de l'AIRELProgramme des vacances de Noël de l'AIREL
Programme des vacances de Noël de l'AIRELPhilippe Villette
 
La matière et les changements d’état shaima, natalia y nerea
La matière et les changements d’état shaima, natalia y nereaLa matière et les changements d’état shaima, natalia y nerea
La matière et les changements d’état shaima, natalia y nereajlealleon
 
Fjalorth i Drejtësise
Fjalorth i DrejtësiseFjalorth i Drejtësise
Fjalorth i DrejtësiseRefik Mustafa
 
Accidents graves de plongée sous marine saarsiu 2016
Accidents graves de plongée sous marine saarsiu 2016Accidents graves de plongée sous marine saarsiu 2016
Accidents graves de plongée sous marine saarsiu 2016Islem Soualhi
 

Viewers also liked (13)

Database
DatabaseDatabase
Database
 
서비스디자인
서비스디자인서비스디자인
서비스디자인
 
Network+
Network+Network+
Network+
 
141 vitamin a deficiency 2
141 vitamin a deficiency 2141 vitamin a deficiency 2
141 vitamin a deficiency 2
 
Les1trend
Les1trendLes1trend
Les1trend
 
Intelligent Mainframe Management: The Evolution of Expert Systems
Intelligent Mainframe Management: The Evolution of Expert Systems Intelligent Mainframe Management: The Evolution of Expert Systems
Intelligent Mainframe Management: The Evolution of Expert Systems
 
Ana, blanca y lucía
Ana, blanca y lucíaAna, blanca y lucía
Ana, blanca y lucía
 
Les machines. antonio y david
Les machines. antonio y davidLes machines. antonio y david
Les machines. antonio y david
 
Programme des vacances de Noël de l'AIREL
Programme des vacances de Noël de l'AIRELProgramme des vacances de Noël de l'AIREL
Programme des vacances de Noël de l'AIREL
 
La matière et les changements d’état shaima, natalia y nerea
La matière et les changements d’état shaima, natalia y nereaLa matière et les changements d’état shaima, natalia y nerea
La matière et les changements d’état shaima, natalia y nerea
 
Kinetiq
KinetiqKinetiq
Kinetiq
 
Fjalorth i Drejtësise
Fjalorth i DrejtësiseFjalorth i Drejtësise
Fjalorth i Drejtësise
 
Accidents graves de plongée sous marine saarsiu 2016
Accidents graves de plongée sous marine saarsiu 2016Accidents graves de plongée sous marine saarsiu 2016
Accidents graves de plongée sous marine saarsiu 2016
 

Similar to Jozve c#2 mohamady_zahedy

برنامه سازی3
برنامه سازی3برنامه سازی3
برنامه سازی3mahdiehsalari
 
الدالات الأساسية-في-برنامج-الإكسل
الدالات الأساسية-في-برنامج-الإكسلالدالات الأساسية-في-برنامج-الإكسل
الدالات الأساسية-في-برنامج-الإكسلMahmoud Abd Elrahman
 
برنامه سازی 2- اعظم صالح-هنرستان جنت فارسان
برنامه سازی 2- اعظم صالح-هنرستان جنت فارسانبرنامه سازی 2- اعظم صالح-هنرستان جنت فارسان
برنامه سازی 2- اعظم صالح-هنرستان جنت فارسانtarasad
 
Popular Maple codes Book - Persian
Popular Maple codes Book - PersianPopular Maple codes Book - Persian
Popular Maple codes Book - PersianAmir Shokri
 
آشنایی با زبان جاوا - مقدماتی اندروید
آشنایی با زبان جاوا - مقدماتی اندرویدآشنایی با زبان جاوا - مقدماتی اندروید
آشنایی با زبان جاوا - مقدماتی اندرویدSadegh Ghanbari Shohani
 
How to program with c in persian
How to program with c in persianHow to program with c in persian
How to program with c in persianmoein jazemi
 
امتحان دی ماه وب مقدماتی
امتحان دی ماه وب مقدماتیامتحان دی ماه وب مقدماتی
امتحان دی ماه وب مقدماتیsomayeh daneshparvar
 
python programming Python learning.pptx
python programming  Python learning.pptxpython programming  Python learning.pptx
python programming Python learning.pptxMehdiHashemi35
 
05 mpi fundamentals_of_parallelism_and_code_optimization-www.astek.ir
05 mpi fundamentals_of_parallelism_and_code_optimization-www.astek.ir05 mpi fundamentals_of_parallelism_and_code_optimization-www.astek.ir
05 mpi fundamentals_of_parallelism_and_code_optimization-www.astek.iraminnezarat
 
نرم افزار3 خرداد
نرم افزار3 خردادنرم افزار3 خرداد
نرم افزار3 خردادmahdiehsalari
 
avr project , sim808l, mmc card
avr project , sim808l, mmc cardavr project , sim808l, mmc card
avr project , sim808l, mmc cardPooriaKeihani
 
2 arrays in c++ programming aramse
2  arrays in c++ programming  aramse2  arrays in c++ programming  aramse
2 arrays in c++ programming aramseAram SE
 

Similar to Jozve c#2 mohamady_zahedy (20)

برنامه سازی3
برنامه سازی3برنامه سازی3
برنامه سازی3
 
الدالات الأساسية-في-برنامج-الإكسل
الدالات الأساسية-في-برنامج-الإكسلالدالات الأساسية-في-برنامج-الإكسل
الدالات الأساسية-في-برنامج-الإكسل
 
برنامه سازی 2- اعظم صالح-هنرستان جنت فارسان
برنامه سازی 2- اعظم صالح-هنرستان جنت فارسانبرنامه سازی 2- اعظم صالح-هنرستان جنت فارسان
برنامه سازی 2- اعظم صالح-هنرستان جنت فارسان
 
Popular Maple codes Book - Persian
Popular Maple codes Book - PersianPopular Maple codes Book - Persian
Popular Maple codes Book - Persian
 
آشنایی با زبان جاوا - مقدماتی اندروید
آشنایی با زبان جاوا - مقدماتی اندرویدآشنایی با زبان جاوا - مقدماتی اندروید
آشنایی با زبان جاوا - مقدماتی اندروید
 
How to program with c in persian
How to program with c in persianHow to program with c in persian
How to program with c in persian
 
Amjadi - Ebook 6 - Ref,Out - v1
Amjadi - Ebook 6 - Ref,Out - v1Amjadi - Ebook 6 - Ref,Out - v1
Amjadi - Ebook 6 - Ref,Out - v1
 
Sql tuning
Sql tuningSql tuning
Sql tuning
 
C-1.pptx
C-1.pptxC-1.pptx
C-1.pptx
 
امتحان دی ماه وب مقدماتی
امتحان دی ماه وب مقدماتیامتحان دی ماه وب مقدماتی
امتحان دی ماه وب مقدماتی
 
Flowchart
FlowchartFlowchart
Flowchart
 
python programming Python learning.pptx
python programming  Python learning.pptxpython programming  Python learning.pptx
python programming Python learning.pptx
 
05 mpi fundamentals_of_parallelism_and_code_optimization-www.astek.ir
05 mpi fundamentals_of_parallelism_and_code_optimization-www.astek.ir05 mpi fundamentals_of_parallelism_and_code_optimization-www.astek.ir
05 mpi fundamentals_of_parallelism_and_code_optimization-www.astek.ir
 
Amjadi - Ebook 7 - Class - v1
Amjadi - Ebook 7 - Class - v1Amjadi - Ebook 7 - Class - v1
Amjadi - Ebook 7 - Class - v1
 
Lecture2
Lecture2Lecture2
Lecture2
 
نرم افزار3 خرداد
نرم افزار3 خردادنرم افزار3 خرداد
نرم افزار3 خرداد
 
C++
C++C++
C++
 
avr project , sim808l, mmc card
avr project , sim808l, mmc cardavr project , sim808l, mmc card
avr project , sim808l, mmc card
 
ترفندهای جدید در اکسل
ترفندهای جدید در اکسلترفندهای جدید در اکسل
ترفندهای جدید در اکسل
 
2 arrays in c++ programming aramse
2  arrays in c++ programming  aramse2  arrays in c++ programming  aramse
2 arrays in c++ programming aramse
 

More from danesh_fd

Final report
Final reportFinal report
Final reportdanesh_fd
 
برنامه عملیاتی94 95
برنامه عملیاتی94 95برنامه عملیاتی94 95
برنامه عملیاتی94 95danesh_fd
 
گزارش عملیاتی سه ماهه اول
گزارش عملیاتی سه ماهه اولگزارش عملیاتی سه ماهه اول
گزارش عملیاتی سه ماهه اولdanesh_fd
 
Gozaresh se mahe_dovom
Gozaresh se mahe_dovomGozaresh se mahe_dovom
Gozaresh se mahe_dovomdanesh_fd
 
Gozaresh 1 3 95 mahe (2)
Gozaresh 1 3 95 mahe  (2)Gozaresh 1 3 95 mahe  (2)
Gozaresh 1 3 95 mahe (2)danesh_fd
 
تحلیل آزمون پیشرفت تحصیلی مرحله 3
تحلیل آزمون پیشرفت تحصیلی مرحله 3تحلیل آزمون پیشرفت تحصیلی مرحله 3
تحلیل آزمون پیشرفت تحصیلی مرحله 3danesh_fd
 
94 95 علمی عملی
94 95 علمی عملی94 95 علمی عملی
94 95 علمی عملیdanesh_fd
 
تحلیل سیزدهیمن دوره_مسابقات_علمی
تحلیل سیزدهیمن دوره_مسابقات_علمیتحلیل سیزدهیمن دوره_مسابقات_علمی
تحلیل سیزدهیمن دوره_مسابقات_علمیdanesh_fd
 
3گزارش بازبینی
3گزارش بازبینی3گزارش بازبینی
3گزارش بازبینیdanesh_fd
 
گزارش بازبینی زبان دانش
گزارش بازبینی زبان دانشگزارش بازبینی زبان دانش
گزارش بازبینی زبان دانشdanesh_fd
 
2گزارش بازبینی
2گزارش بازبینی2گزارش بازبینی
2گزارش بازبینیdanesh_fd
 
گزارش بازبینی شبکه دانش
گزارش بازبینی شبکه دانشگزارش بازبینی شبکه دانش
گزارش بازبینی شبکه دانشdanesh_fd
 
گزارش بازبینی بانک اطلاعاتی دانش
گزارش بازبینی بانک اطلاعاتی دانشگزارش بازبینی بانک اطلاعاتی دانش
گزارش بازبینی بانک اطلاعاتی دانشdanesh_fd
 
1گزارش بازبینی
1گزارش بازبینی1گزارش بازبینی
1گزارش بازبینیdanesh_fd
 
1گزارش بازبینی
1گزارش بازبینی1گزارش بازبینی
1گزارش بازبینیdanesh_fd
 
Behine saze site
Behine saze siteBehine saze site
Behine saze sitedanesh_fd
 
Farakhan weblog1
Farakhan weblog1Farakhan weblog1
Farakhan weblog1danesh_fd
 
Form esfahan weblog emtiaz
Form esfahan weblog emtiazForm esfahan weblog emtiaz
Form esfahan weblog emtiazdanesh_fd
 

More from danesh_fd (20)

Final report
Final reportFinal report
Final report
 
برنامه عملیاتی94 95
برنامه عملیاتی94 95برنامه عملیاتی94 95
برنامه عملیاتی94 95
 
گزارش عملیاتی سه ماهه اول
گزارش عملیاتی سه ماهه اولگزارش عملیاتی سه ماهه اول
گزارش عملیاتی سه ماهه اول
 
Gozaresh se mahe_dovom
Gozaresh se mahe_dovomGozaresh se mahe_dovom
Gozaresh se mahe_dovom
 
Gozaresh 1 3 95 mahe (2)
Gozaresh 1 3 95 mahe  (2)Gozaresh 1 3 95 mahe  (2)
Gozaresh 1 3 95 mahe (2)
 
تحلیل آزمون پیشرفت تحصیلی مرحله 3
تحلیل آزمون پیشرفت تحصیلی مرحله 3تحلیل آزمون پیشرفت تحصیلی مرحله 3
تحلیل آزمون پیشرفت تحصیلی مرحله 3
 
94 95 علمی عملی
94 95 علمی عملی94 95 علمی عملی
94 95 علمی عملی
 
تحلیل سیزدهیمن دوره_مسابقات_علمی
تحلیل سیزدهیمن دوره_مسابقات_علمیتحلیل سیزدهیمن دوره_مسابقات_علمی
تحلیل سیزدهیمن دوره_مسابقات_علمی
 
3گزارش بازبینی
3گزارش بازبینی3گزارش بازبینی
3گزارش بازبینی
 
گزارش بازبینی زبان دانش
گزارش بازبینی زبان دانشگزارش بازبینی زبان دانش
گزارش بازبینی زبان دانش
 
2گزارش بازبینی
2گزارش بازبینی2گزارش بازبینی
2گزارش بازبینی
 
گزارش بازبینی شبکه دانش
گزارش بازبینی شبکه دانشگزارش بازبینی شبکه دانش
گزارش بازبینی شبکه دانش
 
گزارش بازبینی بانک اطلاعاتی دانش
گزارش بازبینی بانک اطلاعاتی دانشگزارش بازبینی بانک اطلاعاتی دانش
گزارش بازبینی بانک اطلاعاتی دانش
 
1گزارش بازبینی
1گزارش بازبینی1گزارش بازبینی
1گزارش بازبینی
 
1گزارش بازبینی
1گزارش بازبینی1گزارش بازبینی
1گزارش بازبینی
 
Behine saze site
Behine saze siteBehine saze site
Behine saze site
 
Rooholahy
RooholahyRooholahy
Rooholahy
 
Mokhtary c#
Mokhtary c#Mokhtary c#
Mokhtary c#
 
Farakhan weblog1
Farakhan weblog1Farakhan weblog1
Farakhan weblog1
 
Form esfahan weblog emtiaz
Form esfahan weblog emtiazForm esfahan weblog emtiaz
Form esfahan weblog emtiaz
 

Jozve c#2 mohamady_zahedy

  • 1. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 1 ‫سازی‬ ‫برنامه‬ ‫درس‬ ‫جزوه‬‫دو‬ C# :‫کننده‬ ‫تهیه‬‫محمدی‬-‫زاهدی‬ ‫هنرستان‬‫کاشان‬ ‫کتابچی‬ ‫ای‬ ‫حرفه‬ ‫فنی‬ ‫بهار‬95
  • 2. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 2 ‫مطالب‬ ‫تکمیل‬ ‫و‬ ‫یادآوری‬ :‫اول‬ ‫فصل‬ ‫سازی‬ ‫برنامه‬ ‫در‬1‫مانند‬ ‫محیطی‬ ‫در‬ ‫توان‬ ‫می‬ ‫را‬ ‫برنامه‬ .‫شد‬ ‫گفته‬ ‫برنامه‬ ‫نوشتن‬ ‫روش‬NotePad‫سپس‬ ‫و‬ ‫نوشت‬‫در‬‫سطر‬‫فرمان‬‫ی‬ ‫پوشه‬ ‫به‬ ‫ورود‬ ‫با‬ ‫برنامه‬‫برنامه‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫و‬CSC.exe‫روش‬ ‫این‬ .‫نماییم‬ ‫کمپایل‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫برنامه‬‫بس‬‫ی‬‫ار‬‫وقت‬‫گ‬‫ی‬‫ر‬‫است‬‫و‬‫ع‬‫ی‬‫ب‬‫ی‬‫اب‬‫ی‬‫برنامه‬‫ها‬‫ی‬‫بزرگ‬‫ن‬‫ی‬‫ز‬‫دشوار‬ ‫است‬. ‫روش‬‫دیگری‬‫که‬‫می‬‫توان‬‫برای‬‫تولید‬‫فایل‬‫اجرایی‬‫برنامه‬‫استفاده‬،‫کرد‬‫استفاده‬‫از‬‫یک‬‫محیط‬‫برنامه‬‫نویسی‬‫متمرکز‬(IDE)‫است‬‫که‬‫برای‬‫نوشتن‬ ‫وعیب‬‫یابی‬‫راحت‬‫تر‬‫برنامه‬،‫ها‬‫طراحی‬‫شده‬‫افزار‬ ‫نرم‬ ‫از‬ ‫یک‬ ‫سازی‬ ‫برنامه‬ ‫در‬ .‫است‬Visual Studio‫نسخه‬Express‫بود‬ ‫رایگان‬ ‫که‬‫نمودیم‬ ‫استفاده‬ ،. ‫البته‬IDE‫شوند‬ ‫می‬ ‫استفاده‬ ‫منظور‬ ‫بدین‬ ‫که‬ ‫باشند‬ ‫می‬ ‫نیز‬ ‫دیگری‬ ‫های‬.‫مانند‬SharpDevelop‫و‬ ‫دارد‬ ‫باز‬ ‫متن‬ ‫و‬ ‫رایگان‬ ‫نویسی‬ ‫برنامه‬ ‫محیط‬ ‫که‬ ‫به‬ ‫نسبت‬ ‫نیز‬ ‫آن‬ ‫حجم‬Visual Studio.‫باشد‬ ‫می‬ ‫کمتر‬ ‫امکان‬IntelliSense(SenseIntelligent)‫در‬VS: ‫یکی‬‫از‬‫امکانات‬‫ارزشمند‬‫در‬‫هنگام‬‫نوشتن‬‫باشد‬ ‫می‬ ‫برنامه‬‫که‬‫در‬‫هنگام‬‫تایپ‬‫دستورات‬،‫برنامه‬‫با‬‫نوشتن‬‫چند‬‫حرف‬‫از‬‫نام‬‫دستور‬(‫نام‬،‫کالس‬،‫متد‬)... ‫منو‬‫یا‬‫لیستی‬‫ظاهر‬‫می‬‫شود‬‫که‬‫در‬‫آن‬‫نام‬‫متدها‬‫و‬‫دستورات‬‫مرتبط‬‫نشان‬‫داده‬‫شده‬‫اند‬‫سرعت‬ ‫ویژگی‬ ‫این‬ .‫نوشتن‬.‫برد‬ ‫می‬ ‫باال‬ ‫را‬ ‫برنامه‬ ‫دستورات‬ .‫دارد‬ ‫زیادی‬ ‫تاثیر‬ ‫دستورات‬ ‫امالی‬ ‫صحیح‬ ‫نوشتن‬ ‫در‬ ‫همچنین‬‫کلید‬ ‫زدن‬ ‫با‬TAB.‫گیرد‬ ‫می‬ ‫قرار‬ ‫برنامه‬ ‫در‬ ‫نظر‬ ‫مورد‬ ‫دستور‬ ‫فاصله‬ ‫یا‬‫زدن‬ ‫با‬ ‫البته‬ ‫کلید‬CTRL+Space.‫شود‬ ‫می‬ ‫ظاهر‬ ‫لیست‬ ‫نیز‬ ‫های‬ ‫گزینه‬ ‫زیر‬ ‫مسیر‬ ‫از‬ ‫بودن‬ ‫غیرفعال‬ ‫صورت‬ ‫در‬ ‫و‬ ‫باشد‬ ‫می‬ ‫فعال‬ ‫خودکار‬ ‫بصورت‬ ‫ویژگی‬ ‫این‬Auto list members‫و‬Parameter information‫را‬ ‫نمود‬ ‫فعال‬ ‫باید‬: ToolsOptionsText EditorC# General ‫کلید‬ ‫برنامه‬ ‫اجرای‬ ‫برای‬F5(Start Debugging)‫یا‬Ctrl+F5(Start Without Debugging).‫کنید‬ ‫انتخاب‬ ‫را‬‫چیست؟‬ ‫کلید‬ ‫دو‬ ‫این‬ ‫تفاوت‬ : ‫داده‬ ‫نوع‬ ‫تبدیل‬Type Casting .‫شود‬ ‫می‬ ‫مشخص‬ ‫اش‬ ‫داده‬ ‫نوع‬ ‫توسط‬ ‫متغیر‬ ‫هر‬ ‫گنجایش‬ ‫و‬ ‫اندازه‬( ‫ضمنی‬ ‫تبدیل‬implicit‫امکان‬ ‫صورت‬ ‫در‬ ‫شارپ‬ ‫سی‬ ‫در‬ ‫یکدیگر‬ ‫به‬ ‫داده‬ ‫انواع‬ ) ‫گیرد‬ ‫می‬ ‫انجام‬.‫نوع‬ ‫متغیر‬ ‫مثال‬int‫نوع‬ ‫متغیر‬ ‫به‬ ‫را‬double‫یا‬float‫یا‬long‫یا‬decimal‫ام‬ )‫شود‬ ‫می‬ ‫انجام‬ ‫ضمنی‬ ‫نمود(بصورت‬ ‫واگذار‬ ‫توان‬ ‫می‬‫ا‬ ‫نوع‬ ‫متغیر‬ ‫توان‬ ‫نمی‬int‫نوع‬ ‫متغیر‬ ‫به‬ ‫را‬ulong‫یا‬short‫یا‬char.‫نمود‬ ‫واگذار‬ : ‫توجه‬ ‫نوع‬ ‫متغیر‬ ‫توان‬ ‫نمی‬ ‫گاه‬ ‫هیچ‬ ‫ضمنی‬ ‫تبدیل‬ ‫در‬double.‫نمود‬ ‫واگذار‬ ‫دیگر‬ ‫نوع‬ ‫متغیر‬ ‫به‬ ‫را‬ ‫نوع‬ ‫متغیر‬ ‫ضمنی‬ ‫تبدیل‬ ‫در‬float‫را‬‫نوع‬ ‫متغیر‬ ‫به‬ ‫توان‬ ‫می‬ ‫فقط‬double.‫نمود‬ ‫واگذار‬ ‫نوع‬ ‫متغیر‬ ‫توان‬ ‫نمی‬ ‫گاه‬ ‫هیچ‬ ‫ضمنی‬ ‫تبدیل‬ ‫در‬decimal.‫نمود‬ ‫واگذار‬ ‫دیگر‬ ‫نوع‬ ‫متغیر‬ ‫به‬ ‫را‬ ‫یا‬ ‫صریح‬ ‫تبدیل‬ ‫از‬ ‫توان‬ ‫می‬ ‫مشکل‬ ‫این‬ ‫رفع‬ ‫برای‬type Casting.‫نمود‬ ‫استفاده‬ ‫ت‬ ‫جهت‬ ‫ویژگی‬ ‫این‬‫صریح‬ ‫بصورت‬ ‫دیگر‬ ‫نوع‬ ‫به‬ ‫نوعی‬ ‫بدیل‬‫اگر‬ ‫مثل‬ ‫بعنوان‬ .‫شود‬ ‫می‬ ‫استفاده‬x‫نوع‬ ‫از‬byte‫یا‬short‫دستور‬ ‫باشد‬x=x+1;‫دارد‬ ‫خطا‬ ‫نوع‬ ‫از‬ ‫فرض‬ ‫پیش‬ ‫بصورت‬ ‫صحیح‬ ‫اعداد‬ ‫شارپ‬ ‫سی‬ ‫در‬ ‫زیرا‬int(4‫بایت‬)‫باشند‬ ‫می‬‫دانیم‬ ‫می‬ ‫طرفی‬ ‫از‬ ‫و‬‫م‬‫بز‬ ‫گنجایش‬ ‫با‬ ‫قدار‬‫ر‬‫در‬ ‫توان‬ ‫نمی‬ ‫را‬ ‫گتر‬ ‫سایز‬ ‫با‬ ‫متغیر‬‫داد‬ ‫قرار‬ ‫کوچکتر‬.‫نمود‬ ‫استفاده‬ ‫نوع‬ ‫تبدیل‬ ‫از‬ ‫توان‬ ‫می‬ ‫مشکل‬ ‫این‬ ‫رفع‬ ‫برای‬. ‫عبارت‬‫مبدأ‬)‫نوع‬‫داده‬‫مقصد‬(‫مقصد‬ ‫متغیر‬ = ‫اگر‬ ‫پس‬X‫نوع‬ ‫از‬short(2‫باشد‬ ‫می‬ ‫صحیح‬ ‫زیر‬ ‫دستور‬ ‫باشد‬ )‫بایت‬x=(short)(x+1); ‫مثال‬1: int i = 2; float f = 4.6f; double d = 0.58e1; i = (int)f + (int)d; Console.WriteLine(i); //9 i = (int)(f + d); Console.WriteLine(i); //10 f = (float)(i + d); Console.WriteLine(f); //15.8 ‫مثال‬2: char x = 'B'; int a = 2; a = --x + a; Console.WriteLine("{0} ** {1}", a, (char)a); //67 ** C ‫دستور‬ ‫آیا‬ ،‫شده‬ ‫ارائه‬ ‫مطالب‬ ‫به‬ ‫توجه‬ ‫با‬ )‫سوال‬age=age+1;‫و‬++age;‫هستند؟‬ ‫هم‬ ‫شبیه‬ ‫دقیقا‬
  • 3. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 3 ‫نکته‬1:‫روش‬ ‫این‬‫را‬‫نوع‬ ‫تبدیل‬ ‫برای‬‫به‬ ‫خاصی‬‫ای‬ ‫رشته‬‫عکس‬ ‫بر‬ ‫و‬‫نمود‬ ‫استفاده‬ ‫توان‬ ‫نمی‬. ‫نکته‬2:‫عددی‬ ‫به‬ ‫ای‬ ‫رشته‬ ‫نوع‬ ‫تبدیل‬ ‫برای‬‫کراکتری‬ ‫یا‬‫متد‬ ‫از‬ ‫باید‬Parse‫کرد‬ ‫استفاده‬. string s = Console.ReadLine(); short x = short.Parse(s); ‫نکته‬3:‫نوع‬ ‫هر‬ ‫تبدیل‬ ‫برای‬‫متد‬ ‫از‬ ‫ای‬ ‫رشته‬ ‫نوع‬ ‫به‬ ‫ای‬ ‫رشته‬ ‫غیر‬ ‫ی‬ ‫داده‬ToString()‫شود‬ ‫می‬ ‫استفاده‬. string s; double d = 12.5; s = d.ToString(); ‫نکته‬4:‫اگر‬‫متد‬Parse‫نتواند‬‫کند‬ ‫تبدیل‬ ‫نظر‬ ‫مورد‬ ‫نوع‬ ‫به‬ ‫ای‬ ‫رشته‬ ‫از‬ ‫را‬ ‫داده‬،‫اجرا‬ ‫زمان‬ ‫خطای‬،‫شود‬ ‫می‬ ‫متوقف‬ ‫برنامه‬ ‫و‬ ‫شد‬ ‫خواهد‬ ‫داده‬.‫مثال‬ string s = "12a3"; int i = int.Parse(s); ‫صورت‬ ‫این‬ ‫در‬‫توان‬ ‫می‬‫به‬‫جای‬‫استفاده‬‫از‬‫متد‬Parse،‫از‬‫متد‬TryParse‫استفاده‬.‫شود‬‫این‬‫متد‬‫اگر‬‫ت‬‫بدیل‬‫انجام‬‫شود‬،‫مقدار‬‫تبدیل‬‫شده‬‫را‬‫به‬ ‫ورودی‬‫دوم‬‫خود‬‫می‬‫ریزد‬‫و‬‫اگر‬‫موفق‬‫به‬‫تبدیل‬‫عدد‬‫نشود‬‫خطایی‬‫را‬‫نمایش‬‫نمی‬‫دهد‬‫و‬‫برنامه‬‫را‬‫قطع‬‫نمی‬‫کند‬‫بلکه‬‫با‬‫تولید‬‫یک‬‫مقدار‬‫منطقی‬ False،‫مشکل‬‫در‬‫تبدیل‬‫عدد‬‫را‬‫به‬‫اطالع‬‫برنامه‬‫نویس‬‫می‬‫رساند‬‫و‬‫برنامه‬‫نویس‬‫با‬‫دریافت‬‫این‬‫مقدار‬‫متوجه‬‫می‬‫شود‬. :‫شود‬ ‫می‬ ‫صادر‬ ‫مناسب‬ ‫پیغام‬ ‫نکند‬ ‫وارد‬ ‫عدد‬ ، ‫داده‬ ‫ورود‬ ‫هنگام‬ ‫کاربر‬ ‫زیر‬ ‫برنامه‬ ‫در‬ ‫اگر‬ ،‫مثال‬ ‫عنوان‬ ‫به‬ string s = Console.ReadLine(); int i; if (int.TryParse(s, out i)) Console.WriteLine("{0} is valid Number",i); else Console.WriteLine("{0} is invalid number",s); ‫نکته‬5:‫متد‬ ‫در‬TryParse‫کلمه‬ ‫نوشتن‬out‫کند‬ ‫می‬ ‫دریافت‬ ‫را‬ ‫مقداری‬ ‫پارامتر‬ ‫این‬ ‫که‬ ‫است‬ ‫مفهوم‬ ‫این‬ ‫به‬ ‫و‬ ‫است‬ ‫ضروری‬ ‫عددی‬ ‫متغیر‬ ‫از‬ ‫قبل‬. ‫نک‬‫ت‬‫ه‬6‫تابع‬ ‫خروجی‬ ‫نگیرد‬ ‫انجام‬ ‫درست‬ ‫تبدیل‬ ‫عمل‬ ‫اگر‬ :false‫عددی‬ ‫پارامتر‬ ‫محتوای‬ ‫همچنین‬ ‫و‬،.‫باشد‬ ‫می‬ ‫صفر‬‫انجام‬ ‫درستی‬ ‫به‬ ‫تبدیل‬ ‫عمل‬ ‫اگر‬ ‫متد‬ ‫این‬ ‫خروجی‬ ،‫شود‬true.‫گیرد‬ ‫می‬ ‫قرار‬ ‫عددی‬ ‫متغیر‬ ‫در‬ ‫شده‬ ‫تبدیل‬ ‫عدد‬ ‫و‬ ‫است‬ ‫برنامه‬.‫دهد‬ ‫نمایش‬ ‫را‬ ‫اعداد‬ ‫مجموع‬ ‫انتها‬ ‫در‬ ‫سپس‬ ‫بگیرد‬ ‫کاربر‬ ‫از‬ ‫عدد‬ ‫تعدادی‬ ‫بنویسید‬ ‫ای‬ ‫برنامه‬ : )‫الف‬‫کاربر‬ ‫اگر‬‫حا‬ ‫کرد‬ ‫وارد‬ ‫منفی‬ ‫عدد‬‫برسد‬ ‫پایان‬ ‫به‬ ‫برنامه‬ ‫و‬ ‫دهد‬ ‫نمایش‬ ‫را‬ ‫جمع‬ ‫صل‬ ‫پیغام‬ ‫باشد‬ ‫نامعتبر‬ ‫کند‬ ‫می‬ ‫وارد‬ ‫کاربر‬ ‫که‬ ‫عددی‬ ‫اگر‬ )‫ب‬Invalid.‫شود‬ ‫داده‬ string s; bool b; int n, sum = 0; while (true) { s = Console.ReadLine(); b = int.TryParse(s, out n); if (b == true) { if (n < 0) break; else sum += n; } else Console.WriteLine("{0} is invalid number", s); } : ‫نمایش‬ ‫الگوی‬ ‫متد‬ ‫در‬ ‫که‬ ‫شد‬ ‫گفته‬ ‫قبال‬Write‫یا‬WriteLine‫مثال‬ ‫داد‬ ‫نمایش‬ ‫خاصی‬ ‫الگوی‬ ‫با‬ ‫را‬ ‫ها‬ ‫داده‬ ‫توان‬ ‫می‬ Console.WriteLine("{0}+{1} is {2}", 12, 18, 12 + 18); // 12 + 18 is 30 ‫توان‬ ‫می‬‫الگو‬‫و‬‫طر‬‫ی‬‫قه‬‫ی‬‫نما‬‫ی‬‫ش‬‫عبارت‬‫و‬‫همچن‬‫ی‬‫ن‬‫تراز‬‫چپ‬‫و‬‫راست‬‫را‬‫ن‬‫ی‬‫ز‬‫در‬‫صورت‬‫ن‬‫ی‬‫از‬‫مع‬‫ی‬‫ن‬‫کن‬‫ی‬‫م‬. ‫{الگو‬‫ی‬‫نما‬‫ی‬‫ش‬:‫عدد‬،‫تراز‬}‫شماره‬ ‫شود‬ ‫می‬ ‫شروع‬ ‫صفر‬ ‫از‬ ‫که‬ ‫شود‬ ‫داده‬ ‫نمایش‬ ‫خواهیم‬ ‫می‬ ‫که‬ ‫است‬ ‫پارامتری‬ ‫شماره‬ ، ‫شماره‬ ‫از‬ ‫منظور‬.
  • 4. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 4 ‫منظور‬‫از‬‫عدد‬‫تراز‬،‫تعداد‬‫فضا‬‫ی‬‫خال‬‫ی‬‫است‬‫که‬‫در‬‫صفحه‬‫نما‬‫ی‬،‫ش‬‫جهت‬‫نما‬‫ی‬‫ش‬‫مقدار‬‫متغ‬‫ی‬‫ر‬‫ی‬‫ا‬‫عبارت‬،‫اختصاص‬‫داده‬‫م‬‫ی‬‫شود‬‫اگر‬ . ‫غیر‬ ‫در‬ ‫و‬ ‫چین‬ ‫چپ‬ ‫نظر‬ ‫مورد‬ ‫مقدار‬ ‫باشد‬ ‫منفی‬ ‫مقدار‬ ‫این‬.‫شود‬ ‫می‬ ‫چین‬ ‫راست‬ ‫اینصورت‬ ‫دهد‬ ‫می‬ ‫انجام‬ ‫را‬ ‫خاصی‬ ‫کار‬ ‫کدام‬ ‫هر‬ ‫که‬ ‫باشد‬ ‫می‬ ‫کراکتر‬ ‫تعدادی‬ ‫شامل‬ ‫نمایش‬ ‫الگوی‬. Console.WriteLine("{0,5}*{1,-5}", 12,13);// 12*13 Console.WriteLine("{0:p} {1:C} {2:E} {2:F}",100,200,300,400);//10,000.00 % $200.00 3.000000E+002 300.00 Console.WriteLine("{0:D} {1:G} {2:N} {2:X}", 14500, 14500, 14500, 14500);// 14500 14500 14,500.00 38A4 ‫در‬ ‫اگر‬ : ‫توجه‬‫پنجره‬‫کد‬‫نویسی‬‫کلیک‬‫راست‬‫کرده‬‫و‬‫از‬‫منویی‬‫که‬‫ظاهر‬‫می‬‫شود‬‫گزینه‬Insert Snippet‫را‬‫انتخاب‬‫گزینه‬ ‫سپس‬ ‫و‬ ‫کنید‬Visual C# ‫کنید‬ ‫انتخاب‬ ‫را‬‫منویی‬‫ظاهر‬‫می‬‫شود‬‫که‬‫دستورات‬‫و‬‫کلمات‬‫رزروشده‬‫زبان‬‫سی‬‫شارپ‬‫را‬‫می‬ ‫نشان‬‫دهد‬‫دستورات‬ ‫تایپ‬ ‫و‬ ‫جزییات‬ ‫حفظ‬ ‫به‬ ‫نیازی‬ ‫لذا‬ . !‫ندارید‬ : ‫تایی‬ ‫سه‬ ‫عملگر‬ ‫عملگر‬?‫دستور‬ ‫بجای‬ ‫توان‬ ‫می‬ ‫و‬ ‫است‬ ‫معروف‬ ‫تایی‬ ‫سه‬ ‫عملگر‬ ‫به‬if.‫نمود‬ ‫استفاده‬ ‫آن‬ ‫از‬: ‫است‬ ‫صورت‬ ‫بدین‬ ‫آن‬ ‫کلی‬ ‫شکل‬ ‫مقدار‬‫دوم‬:‫مقدار‬‫ّل‬‫و‬‫ا‬?(‫عبارت‬‫منطق‬‫ی‬) ‫منطقی‬ ‫عبارت‬ ‫اگر‬true.‫است‬ ‫دوم‬ ‫مقدار‬ ‫خروجی‬ ‫وگرنه‬ ‫است‬ ‫اول‬ ‫مقدار‬ ‫خروجی‬ ‫باشد‬ ‫برنامه‬‫پیغام‬ ‫بود‬ ‫زوج‬ ‫اگر‬ ‫بگیرد‬ ‫عددی‬ ‫بنویسید‬ ‫ای‬ ‫برنامه‬ :"even"‫در‬ ‫و‬‫غ‬‫پیغام‬ ‫صورت‬ ‫این‬ ‫یر‬"odd"‫دهد‬ ‫نمایش‬ ‫را‬. ‫روش‬1: int x = int.Parse(Console.ReadLine()); string st; st = (x % 2 == 0) ? "even" : "odd"; Console.WriteLine(st); ‫روش‬2: int x = int.Parse(Console.ReadLine()); Console.WriteLine( (x % 2 == 0) ? "even" : "odd"); ‫دستورات‬ ‫یادآوری‬while , for: ‫تمرین‬‫از‬ ‫استفاده‬ ‫بدون‬ )if‫از‬ ‫عدد‬ ‫سه‬‫و‬ ‫کنید‬ ‫دریافت‬ ‫کاربر‬.‫دهید‬ ‫نمایش‬ ‫را‬ ‫آنها‬ ‫کوچکترین‬ ‫و‬ ‫بزرگترین‬ FormatSpecifier ‫مقدار‬‫پول‬‫ی‬‫خاص‬‫ی‬‫ک‬‫محل‬C ‫انواع‬‫صح‬‫ی‬‫ح‬integerD ‫نماد‬‫علم‬‫ی‬E ‫نقطه‬‫اعشار‬‫ثابت‬F ‫اعداد‬‫عموم‬‫ی‬G ‫نقطه‬‫اعشار‬‫ثابت‬‫با‬‫جدا‬‫کننده‬‫کاما‬N ‫اعداد‬‫دارا‬‫ی‬‫درصد‬P ‫مبنای‬ ‫عدد‬16X int x = int.Parse(Console.ReadLine()); string st; if (x % 2 == 0) st = "even"; else st = "odd"; Console.WriteLine(st); int x,sum = 0; for (int i = 1; i < 10;i++ ) { x = int.Parse(Console.ReadLine()); sum += x; } Console.WriteLine(sum / 10); int digits=0, n=int.Parse(Console.ReadLine()); while (n > 0){ int r = n % 10; digits++; n /= 10; } Console.WriteLine(digits); int k = 10; while (k > 0) Console.WriteLine(k--);
  • 5. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 5 ‫دستور‬const: ‫برای‬‫تعریف‬‫شناسه‬‫یا‬‫نام‬‫ثابت‬‫از‬‫کلمه‬‫کلیدی‬const‫استفاده‬‫می‬‫شود‬.‫مقاد‬ ‫ها‬ ‫ثابت‬‫ی‬‫با‬ ‫که‬ ‫هایی‬ ‫ثابت‬ .‫کنند‬ ‫نمی‬ ‫تغییر‬ ‫برنامه‬ ‫در‬ ‫که‬ ‫هستند‬ ‫ری‬ ‫دستور‬const‫شو‬ ‫تعریف‬‫ن‬.‫داد‬ ‫تغییر‬ ‫برنامه‬ ‫در‬ ‫توان‬ ‫نمی‬ ‫را‬ ‫د‬ً‫ال‬‫معمو‬‫نامی‬‫که‬‫برای‬‫شناسه‬‫ی‬‫ثابت‬‫تعریف‬‫می‬‫شود‬‫با‬‫حروف‬‫بزرگ‬‫نوشته‬‫می‬‫شود‬ ‫تا‬‫در‬‫برنامه‬‫مشخص‬‫باشد‬‫که‬‫این‬‫یک‬ ،‫شناسه‬‫مقدار‬‫ثابت‬.‫است‬‫ی‬ ‫نحوه‬‫تعریف‬‫ثابت‬،‫ها‬‫مانند‬‫تعریف‬‫متغیرها‬‫می‬‫باشد‬‫با‬‫این‬‫تفاوت‬‫که‬‫در‬‫ابتدای‬ ‫تعریف‬‫آنها‬‫کلمه‬const‫قرار‬.‫دارد‬ const int SIZE=12; SIZE++; // error ‫متغی‬ ‫همانند‬ ‫را‬ ‫ها‬ ‫ثابت‬‫نمود‬ ‫تعریف‬ ‫برنامه‬ ‫هرکجای‬ ‫در‬ ‫توان‬ ‫می‬ ‫ر‬. ‫سوال‬:‫چیست؟‬ ‫مقابل‬ ‫دستور‬ ‫خطای‬ ‫علت‬ const int x = 3; { int x = 12; x++; } :‫تو‬ ‫در‬ ‫تو‬ ‫های‬ ‫حلقه‬ .‫شوند‬ ‫می‬ ‫نامیده‬ ‫متداخل‬ ‫های‬ ‫حلقه‬ ،‫گیرد‬ ‫قرار‬ ‫دیگری‬ ‫تکرار‬ ‫دستور‬ ‫داخل‬ ‫در‬ ‫تکرار‬ ‫دستور‬ ‫یک‬ ‫اگر‬ ‫ع‬ ‫به‬‫ی‬ ‫حلقه‬ ،‫بیرونی‬ ‫حلقه‬ ‫اجرای‬ ‫بار‬ ‫هر‬ ‫ازای‬ ‫به‬ ‫روبرو‬ ‫دستورات‬ ‫در‬ ‫مثال‬ ‫نوان‬ .‫شود‬ ‫می‬ ‫اجرا‬ )‫چهاربار‬ (‫کامل‬ ‫طور‬ ‫به‬ ‫داخلی‬ ‫برنامه‬‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ :‫دهد؟‬ ‫نمایش‬ ‫را‬ ‫ضرب‬ ‫جدول‬ ‫تمرین‬1‫آورید؟‬ ‫بدست‬ ‫را‬ ‫زیر‬ ‫برنامه‬ ‫خروجی‬ : ‫تمرین‬2‫را‬ ‫زیر‬ ‫برنامه‬ ‫خروجی‬ :‫آورید؟‬ ‫بدست‬ ‫تمرین‬3:‫دهید؟‬ ‫نمایش‬ ‫را‬ ‫زیر‬ ‫های‬ ‫خروجی‬ ‫تو‬ ‫در‬ ‫تو‬ ‫های‬ ‫حلقه‬ ‫از‬ ‫استفاده‬ ‫با‬ int a,b; for (a = 1; a <= 6; a++) // ‫بیرونی‬ ‫حلقه‬ { for (b = 1; b <= 4; b++)// ‫داخلی‬ ‫حلقه‬ Console.Write("*"); Console.WriteLine(); } int i,j; for (i = 1; i <= 10; i++) { for (j = 1; j <= 10; j++) Console.Write("{0,4}",i*j); Console.WriteLine(); } for (int i = 1; i <= 4; i++) { for (int j = 4; j >=1; j--) Console.Write("{0,2}", (i==j)?1:0); Console.WriteLine(); } for (int a = 1; a <= 5; a++) { for (int b = 1; b < a; b++ ) Console.Write("{0}+",b); Console.WriteLine(a); } ***** **** *** ** *
  • 6. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 6 ‫کراکتر‬: ‫در‬‫زبان‬‫های‬‫برنامه‬، ‫شارپ‬ ‫سی‬ ‫و‬ ‫سی‬ ‫نویسی‬‫کاراکتر‬،‫یک‬‫کاراکتر‬‫خاص‬‫و‬‫معنی‬‫دار‬.‫است‬‫هر‬‫گاه‬‫این‬،‫کاراکتر‬‫در‬‫رشته‬‫ای‬‫دیده‬،‫شود‬‫کاراکتر‬ ‫بعدی‬‫آن‬‫اثر‬‫و‬‫عملکرد‬،‫خاصی‬‫جدای‬‫از‬‫ظاهری‬ ‫شکل‬‫آن‬‫دارد‬.‫به‬‫عبارت‬‫دیگر‬‫کاراکتر‬،‫سبب‬‫تغییر‬‫عملکرد‬‫کاراکتر‬‫بعدی‬‫می‬.‫شود‬‫به‬‫همین‬ ‫به‬ ‫دلیل‬‫این‬‫مجموعه‬‫کاراکترها‬‫که‬‫کاراکتر‬‫اول‬‫و‬‫دومی‬‫کاراکتر‬‫دیگری‬،‫است‬‫دنباله‬‫فرار‬(Escape Sequence)‫گفته‬‫می‬‫شود‬. ‫عملکرد‬‫دنباله‬ ‫هشدار‬ ‫بوق‬Beepa ‫کاراکتر‬ ‫حذف‬Backspaceb ‫خالی‬ ‫خط‬ ‫ایجاد‬New Linen ‫زیاد‬ ‫افقی‬ ‫فاصله‬Tabt ‫کوتیشن‬ ‫تک‬ ‫ایجاد‬' ‫کوتیشن‬ ‫دابل‬ ‫ایجاد‬" ‫اسلش‬ ‫بک‬ ‫ایجاد‬ ‫سطر‬ ‫ابتدای‬ ‫به‬ ‫رفتن‬Enterr ‫مثال‬‫ها‬: Console.WriteLine(""test""); //"test" Console.WriteLine("This is a htest"); //error Console.WriteLine("This is a test"); //This is a est Console.WriteLine("Projectbuild"); //Projecuild Console.WriteLine("I am na teacher.bbrtest"); // I am testache. Console.WriteLine("test""); // error string st = "this is "test".nI am atstudent."; Console.WriteLine(st); ‫تمرین‬4‫آورید؟‬ ‫بدست‬ ‫را‬ ‫روبرو‬ ‫برنامه‬ ‫های‬ ‫خروجی‬ :int a, b; for (a = 1; a < 10; a++) for (b = 0; b < 10; b = b + 2) Console.WriteLine(a * 100 + b * 10 + a);
  • 7. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 7 ‫دوم‬ ‫فصل‬‫آرایه‬ : ‫تع‬ ‫از‬ ‫استفاده‬ ،‫باشد‬ ‫داده‬ ،‫زیادی‬ ‫تعداد‬ ‫ی‬ ‫ذخیره‬ ‫به‬ ‫نیاز‬ ‫برنامه‬ ‫یک‬ ‫در‬ ‫اگر‬ .‫کند‬ ‫داری‬ ‫نگه‬ ‫خود‬ ‫در‬ ‫را‬ ‫مقدار‬ ‫یک‬ ‫فقط‬ ‫تواند‬ ‫می‬ ‫متغیر‬ ‫هر‬‫م‬ ‫دادی‬‫تغیر‬ .‫شود‬ ‫می‬ ‫استفاده‬ ‫آرایه‬ ‫از‬ ‫حالت‬ ‫این‬ ‫در‬ .‫نیست‬ ‫مناسب‬ ‫متفاوت‬ ‫های‬ ‫نام‬ ‫با‬،‫آرایه‬‫یک‬ ‫با‬ ‫و‬ ‫هستند‬ ‫هم‬ ‫سر‬ ‫پشت‬ ‫که‬ ‫حافظه‬ ‫از‬ ‫هایی‬ ‫خانه‬‫قابل‬ ‫نام‬ .‫باشند‬ ‫می‬ ‫دسترسی‬‫سلول‬ ‫تعدادی‬ ‫آرایه‬ ‫واقع‬ ‫در‬‫نام‬ ‫هم‬‫و‬‫نوع‬ ‫هم‬.‫شوند‬ ‫می‬ ‫شروع‬ ‫صفر‬ ‫از‬ ‫ها‬ ‫اندیس‬ .‫است‬ ‫اندیس‬ ‫دارای‬ ‫سلول‬ ‫هر‬ ‫که‬ ‫است‬ : ‫گیرد‬ ‫انجام‬ ‫مرحله‬ ‫دو‬ ‫در‬ ‫باید‬ ‫آرایه‬ ‫تعریف‬ ‫اول‬ ‫مرحله‬:;‫نام‬‫متغیر‬‫آرایه‬[]‫نوع‬‫داده‬ ‫دوم‬ ‫مرحله‬:]‫اندازه‬‫آرایه‬[‫نوع‬‫داده‬new‫متعیرآرایه‬ = .‫یابد‬ ‫می‬ ‫تخصیص‬ ‫آن‬ ‫برای‬ ‫حافظه‬ ،‫آرایه‬ ‫طول‬ ‫شدن‬ ‫مشخص‬ ‫با‬ ‫دوم‬ ‫مرحله‬ ‫در‬ ‫و‬ ‫شود‬ ‫می‬ ‫تعیین‬ ‫آرایه‬ ‫نوع‬ ‫اول‬ ‫مرحله‬ ‫در‬ ‫با‬ ‫را‬ ‫مرحله‬ ‫دو‬ ‫توان‬ ‫می‬‫ادغام‬ ‫یکدیگر‬‫کرد‬ ‫تعریف‬ ‫زیر‬ ‫بصورت‬ ‫و‬ ‫نمود‬: int[] x =new int[10]; ‫آرایه‬ ‫عناصر‬ ‫به‬ ‫دسترسی‬:‫خانه‬ ‫محتوای‬ ‫خواهیم‬ ‫می‬ ‫کنید‬ ‫فرض‬‫ی‬‫اندیس‬3‫عدد‬ ‫را‬15‫خا‬ ‫چهارمین‬ ‫(یعنی‬ ‫بدهیم‬‫ن‬‫می‬ ‫شروع‬ ‫صفر‬ ‫از‬ ‫چون‬ ‫ه‬ ).‫شود‬ x[3]=6; x[5]=x[3]+8; x[x[3]]=x[5]+2; ‫دارند؟‬ ‫مقداری‬ ‫چه‬ ،‫اند‬ ‫نشده‬ ‫مقداردهی‬ ‫هنوز‬ ‫که‬ ‫آرایه‬ ‫عناصر‬ ‫بقیه‬ ‫شما‬ ‫نظر‬ ‫به‬ )‫سوال‬ ‫ی‬ ‫حلقه‬ ‫از‬ ‫توان‬ ‫می‬ ‫آرایه‬ ‫یک‬ ‫عناصر‬ ‫چاپ‬ ‫و‬ ‫دریافت‬ ‫برای‬for.‫کرد‬ ‫استفاده‬ )‫برنامه‬‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬10‫دهید؟‬ ‫نمایش‬ ‫را‬ ‫آنها‬ ‫اول‬ ‫به‬ ‫آخر‬ ‫از‬ ‫سپس‬ ‫و‬ ‫کند‬ ‫دریافت‬ ‫کاربر‬ ‫از‬ ‫عدد‬ ‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ )‫برنامه‬10‫کند؟‬ ‫چاپ‬ ‫را‬ ‫هستند‬ ‫بیشتر‬ ‫آنها‬ ‫میانگین‬ ‫از‬ ‫که‬ ‫اعدادی‬ ‫سپس‬ ‫و‬ ‫کند‬ ‫دریافت‬ ‫کاربر‬ ‫از‬ ‫عدد‬ float[] x = new float[10]; string st; float sum = 0f, average; for (int i = 0; i < x.Length; i++) { st = Console.ReadLine(); x[i] = float.Parse(st); sum += x[i]; } average=sum/x.Length; Console.WriteLine("Average = {0:n}", average); for (int i = 0; i < x.Length; i++) if (x[i] > average) Console.WriteLine("{0:n}", x[i]); : ‫مثال‬ ‫نمود‬ ‫هم‬ ‫اولیه‬ ‫مقداردهی‬ ‫تعریف‬ ‫بهنگام‬ ‫را‬ ‫آرایه‬ ‫توان‬ ‫می‬ int[] x=new int[10] {19,23,45,74,13,26,44,77,20,36}; 9876543210 36207744261374452319 :‫مثال‬ .‫آورد‬ ‫می‬ ‫بدست‬ ‫را‬ ‫آرایه‬ ‫طول‬ ‫شارپ‬ ‫سی‬ ‫اولیه‬ ‫مقداردهی‬ ‫طریق‬ ‫از‬ ‫و‬ ‫نکرد‬ ‫تعیین‬ ‫آرایه‬ ‫تعریف‬ ‫بهنگام‬ ‫را‬ ‫آرایه‬ ‫طول‬ ‫توان‬ ‫می‬ int[] y=new int[] {24,17,60,19,25,12,43}; 6543210 43122519601724 543210 2928135512934 9876543210 16146 )‫مثال‬ int [] x; x=new int[10]; int[] m = new int[10]; for (int i = 0; i < 10; i++) m[i] = int.Parse(Console.ReadLine());
  • 8. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 8 int[] z= {19,23,45,74,13,26}; int []z=new int[5]{45,13,12,55,99,66}; //error ‫عملگر‬ ‫از‬ ‫روش‬ ‫این‬ ‫در‬ :‫دیگر‬ ‫روش‬new.‫شود‬ ‫نمی‬ ‫استفاده‬ int[] c = { 45, 13, 52, 17 }; )‫نکته‬‫آرایه‬ ‫ایجاد‬ ‫از‬ ‫بعد‬.‫کنید‬ ‫کم‬ ‫یا‬ ‫و‬ ‫اضافه‬ ‫آن‬ ‫به‬ ‫عنصری‬ ‫توانید‬ ‫نمی‬ ‫یعنی‬ ‫دهید‬ ‫تغییر‬ ‫را‬ ‫آن‬ ‫اندازه‬ ‫توانید‬ ‫نمی‬ ، ‫نکته‬)‫در‬‫زبان‬‫شارپ‬ ‫سی‬،‫آرایه‬ ‫عناصر‬ ‫به‬ ‫دسترسی‬ ‫هنگام‬ ‫در‬‫محدوده‬‫اندیس‬‫آرایه‬‫کنترل‬‫می‬‫شود‬‫و‬‫نباید‬‫از‬‫عدد‬‫صفر‬‫کمتر‬‫و‬‫همچنین‬‫از‬‫اندازه‬ ‫آرایه‬‫بیشتر‬‫یا‬‫مساوی‬.‫باشد‬‫اگر‬‫برنامه‬‫نویس‬‫اشتباه‬‫کند‬‫و‬‫اندیس‬‫باالتری‬‫را‬‫استفاده‬‫کند‬‫در‬‫هنگام‬‫ترجمه‬‫برنامه‬‫با‬‫خطا‬‫آرایه‬ ‫محدوده‬ ‫سرریزی‬ ‫ی‬ ‫روبر‬‫رو‬‫می‬‫شود‬.:‫مثال‬ int [] k=new int[10]; k[10]=45; // error ‫نکته‬)‫ویژگی‬ ‫از‬length‫آورد‬ ‫بدست‬ ‫اجرا‬ ‫زمان‬ ‫در‬ ‫را‬ ‫آرایه‬ ‫طول‬ ‫توان‬ ‫می‬..length‫آرایه‬ ‫متغیر‬ ‫نام‬ ‫نکته‬)‫باشد‬ ‫متغیر‬ ‫تواند‬ ‫می‬ ‫آرایه‬ ‫تعریف‬ ‫بهنگام‬ ‫آرایه‬ ‫طول‬‫آرایه‬ ‫طول‬ ‫حالت‬ ‫این‬ ‫در‬ ..‫شود‬ ‫می‬ ‫تعیین‬ ‫برنامه‬ ‫اجرای‬ ‫زمان‬ ‫در‬:‫مثال‬ int n=int.Parse(Console.ReadLine()); int[] s=new int[n]; ‫نکته‬)‫منفی‬ ‫تواند‬ ‫نمی‬ ‫آرایه‬ ‫های‬ ‫خانه‬ ‫تعداد‬‫یا‬.‫باشد‬ ‫اعشاری‬ ‫نکته‬)‫خطای‬ ‫شود‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫صفر‬ ‫آرایه‬ ‫خانه‬ ‫تعداد‬ ‫اگر‬‫استفا‬ ‫بهنگام‬ ‫ولی‬ ‫شود‬ ‫نمی‬ ‫صادر‬ ‫ی‬‫آرایه‬ ‫از‬ ‫ده‬.‫شود‬ ‫می‬ ‫داده‬ ‫اجرا‬ ‫زمان‬ ‫خطای‬ float[] x = new float[0]; x[0] = 1f; // Runtime Error )‫تمرین‬‫آورید؟‬ ‫بدست‬ ‫را‬ ‫زیر‬ ‫های‬ ‫برنامه‬ ‫خروجی‬ ‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ )‫برنامه‬‫تعدادی‬‫از‬ ‫عدد‬‫ذ‬ ‫آرایه‬ ‫یک‬ ‫در‬ ‫و‬ ‫کند‬ ‫دریافت‬ ‫کاربر‬‫کند‬ ‫خیره‬)‫شود‬ ‫می‬ ‫تعیین‬ ‫کاربر‬ ‫توسط‬ ‫آرایه‬ ‫(طول‬‫س‬ .‫پس‬ .‫دهید‬ ‫نمایش‬ ‫و‬ ‫محاسبه‬ ‫را‬ ‫اعداد‬ ‫میانگین‬ ‫و‬ ‫کوچکترین‬ ‫و‬ ‫بزرگترین‬ ‫حلقه‬ ‫دستور‬foreach ‫دستور‬foreach‫حلقه‬ ‫بجای‬ ‫توان‬ ‫می‬ ‫را‬for‫دستور‬ .‫کنیم‬ ‫استفاده‬foreach‫هر‬ ‫روی‬‫ی‬ ‫داده‬ ‫نوع‬ .‫شود‬ ‫می‬ ‫تکرار‬ ‫شمارش‬ ‫قابل‬ ‫داده‬ ‫از‬ ‫عنصر‬array ‫و‬string.‫هستند‬ ‫شمارش‬ ‫قابل‬ foreach( ‫داده‬ ‫نوع‬ ‫متغیر‬ ‫نام‬ in ‫آرایه‬ ‫نام‬ ) ‫دستور‬ ; ‫توان‬ ‫می‬ ‫نیز‬ ‫دستور‬ ‫این‬ ‫از‬‫نمرات‬ ‫نمایش‬ ‫و‬ ‫آرایه‬ ‫پیمایش‬ ‫برای‬ ‫باال‬ ‫مثال‬ ‫در‬ .‫نمود‬ ‫استفاده‬ ‫ها‬ ‫مجموعه‬ ‫یا‬ ‫آرایه‬ ‫پیمایش‬ ‫برای‬‫بیشتر‬‫میان‬ ‫از‬‫می‬ ‫گین‬ : ‫نمود‬ ‫استفاده‬ ‫نیز‬ ‫زیر‬ ‫دستور‬ ‫از‬ ‫توان‬ foreach (float item in x) if (item < average) Console.WriteLine("{0:n}", item); ‫متغیر‬item)‫شود‬ ‫نمی‬ ‫استفاده‬ ‫اندیس‬ ‫از‬ (‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫آرایه‬ ‫عناصر‬ ‫از‬ ‫یکی‬ ‫حلقه‬ ‫اجرای‬ ‫بار‬ ‫هر‬ ‫در‬ ‫حلقه‬ ‫از‬ ‫آرایه‬ ‫های‬ ‫سلول‬ ‫دریافت‬ ‫برای‬ ‫توان‬ ‫می‬ ‫آیا‬ )‫سوال‬foreach‫کرد؟‬ ‫استفاده‬ int[] F = new int[10]; F[0] = F[1] = 1; for (int i = 2; i < 10; i++) F[i] = F[i - 2] + F[i - 1]; for (int i = 0; i < F.Length; i++) Console.Write("{0} ",F[i]); int[] T = new int[10]; T[0] = 1; int x = int.Parse(Console.ReadLine()); for (int i = 1; i < T.Length ; i++) T[i] = T[i - 1] * x; for (int i = 0; i < T.Length; i++) Console.Write("{0} ",T[i]); int[] T = new int[6]; T[0] = 1; for (int i = 1; i < T.Length ; i++) T[i] = T[i - 1] * i; for (int i = 0; i < T.Length; i++) Console.Write("{0} ",T[i]);
  • 9. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 9 .‫دهد‬ ‫نمایش‬ ‫آن‬ ‫در‬ ‫را‬ ‫فاصله‬ ‫کاراکترهای‬ ‫تعداد‬ ‫سپس‬ ‫بگیرد‬ ‫کاربر‬ ‫از‬ ‫ای‬ ‫رشته‬ ‫بنویسید‬ ‫ای‬ ‫برنامه‬ : ‫مثال‬ int count=0; string st = Console.ReadLine(); foreach (char ch in st) if (ch == ' ') count++; Console.WriteLine("Count Space in {0} = {1}", st, count); ‫برنامه‬‫و‬ ‫بزرگ‬ ‫حروف‬ ‫تعداد‬ ‫سپس‬ ‫و‬ ‫کند‬ ‫دریافت‬ ‫کاربر‬ ‫از‬ ‫رشته‬ ‫یک‬ ‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ ).‫دهید‬ ‫نمایش‬ ‫و‬ ‫محاسبه‬ ‫را‬ ‫آن‬ ‫کوچک‬ ‫حروف‬ ‫تعداد‬ ‫حبابی‬ ‫سازی‬ ‫مرتب‬(sortBubble): ‫سازی‬ ‫مرتب‬ ‫های‬ ‫روش‬ ‫از‬ ‫یکی‬‫است‬ ‫حبابی‬ ‫روش‬ ،‫ها‬ ‫داده‬‫وجود‬ ‫نیز‬ ‫روش‬ ‫این‬ ‫از‬ ‫تر‬ ‫سریع‬ ‫و‬ ‫بهتر‬ ‫های‬ ‫روش‬ ‫باشد(البته‬ ‫می‬ ‫ابتدایی‬ ‫و‬ ‫ساده‬ ‫خیلی‬ ‫که‬ ‫روش‬ ‫مانند‬ ‫دارد‬‫سازی‬ ‫مرتب‬)‫سریع‬ ‫در‬‫الگوریتم‬‫مرتب‬‫سازی‬‫همواره‬‫دو‬‫عمل‬‫مقایسه‬(compare‫و‬ )‫جابه‬‫جایی‬(swap)‫انجام‬‫می‬‫شود‬. ‫دارای‬ ‫ای‬ ‫آرایه‬ ‫اگر‬n‫باید‬ ‫روش‬ ‫این‬ ‫در‬ ‫باشد‬ ‫عنصر‬ ‫تا‬n-1‫مرحله‬)‫(فاز‬.‫شود‬ ‫مرتب‬ ‫آرایه‬ ‫تا‬ ‫شود‬ ‫طی‬ ‫مرحله‬1‫نبود‬ ‫درست‬ ‫آنها‬ ‫ترتیب‬ ‫اگر‬ ‫و‬ ‫شود‬ ‫می‬ ‫مقایسه‬ ‫لیست‬ ‫عدد‬ ‫دومین‬ ‫با‬ ‫لیست‬ ‫عدد‬ ‫اولین‬ ‫روش‬ ‫این‬ ‫در‬ )،‫یعنی‬ (.‫کنیم‬ ‫می‬ ‫عوض‬ ‫را‬ ‫آنها‬ ‫جای‬ )‫باشد‬ ‫بزرگتر‬ ‫دومی‬ ‫از‬ ‫اولی‬ ‫عدد‬ ‫اینکه‬ ‫ف‬ (‫لیست‬ ‫انتهای‬ ‫تا‬ ‫را‬ ‫کار‬ ‫این‬ ‫و‬ .‫کنیم‬ ‫می‬ ‫عوض‬ ‫را‬ ‫آنها‬ ‫جای‬ ‫نبود‬ ‫درست‬ ‫آنها‬ ‫ترتیب‬ ‫اگر‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫مقایسه‬ ‫سومی‬ ‫عدد‬ ‫با‬ ‫را‬ ‫دومی‬ ‫عدد‬ ‫سپس‬‫ر‬‫ض‬ ‫که‬ ‫است‬ ‫این‬ ‫بر‬N‫خ‬ ‫به‬ ‫بزرگتر‬ ‫عدد‬ .‫دهیم‬ ‫می‬ ‫ادامه‬ )‫دارد‬ ‫سلول‬ ‫تا‬‫انه‬N‫مانند‬ (‫رود‬ ‫می‬ ‫ام‬)‫حباب‬ ‫یک‬ ‫مرحله‬2‫کنیم‬ ‫می‬ ‫عوض‬ ‫را‬ ‫آنها‬ ‫جای‬ ‫نبود‬ ‫درست‬ ‫آنها‬ ‫ترتیب‬ ‫اگر‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫مقایسه‬ ‫دوم‬ ‫خانه‬ ‫با‬ ‫را‬ ‫اول‬ ‫خانه‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫شروع‬ ‫اول‬ ‫خانه‬ ‫از‬ ‫دوباره‬ ) ‫خانه‬ ‫کارتا‬ ‫این‬ ‫و‬ ......... ‫و‬ ‫شوند‬ ‫می‬ ‫مقایسه‬ ‫سوم‬ ‫وعدد‬ ‫دوم‬ ‫عدد‬ ‫سپس‬ ‫و‬N-1‫سلول‬ ‫در‬ ‫بعدی‬ ‫بزرگتر‬ ‫عدد‬ ‫دوم‬ ‫مرحله‬ ‫از‬ ‫بعد‬ .‫کند‬ ‫می‬ ‫پیدا‬ ‫ادامه‬ .‫گیرد‬ ‫می‬ ‫قرار‬ ‫آخر‬ ‫به‬ ‫یکی‬ ‫خانه‬ ‫تا‬ ‫که‬ ‫تفاوت‬ ‫این‬ ‫با‬ ‫است‬ ‫دوم‬ ‫مرحله‬ ‫مانند‬ ‫نیز‬ ‫سوم‬ ‫مرحله‬ )‫سوم‬ ‫مرحله‬N-2.‫شود‬ ‫می‬ ‫انجام‬ ‫اگر‬‫آرایه‬‫داری‬N‫باشد‬ ‫سلول‬ ‫تا‬N-1.‫داشت‬ ‫خواهیم‬ ‫مرحله‬ ‫کنید؟‬ ‫صعودی‬ ‫مرتب‬ ‫حبابی‬ ‫روش‬ ‫به‬ ‫را‬ ‫روبرو‬ ‫آرایه‬ )‫مثال‬ ‫مثال‬ ‫این‬ ‫در‬‫مجموعا‬15‫و‬ ‫مقایسه‬ ‫عمل‬10‫است‬ ‫گرفته‬ ‫صورت‬ ‫جابجایی‬ ‫عمل‬ ‫اگر‬ ‫حبابی‬ ‫سازی‬ ‫مرتب‬ ‫روش‬ ‫در‬ ‫کلی‬ ‫بطور‬ )‫نکته‬‫آرایه‬‫دارای‬N‫به‬ ‫عنصرباشد‬ ‫تا‬ ‫تعداد‬N(N-1) / 2‫می‬ ‫انجام‬ ‫مقایسه‬ ‫تا‬.‫شود‬ 91317101812 654321 91317101812 91317101812 91317181012 91318171012 91813171012 18913171012 ‫مرحله‬1:5.‫است‬ ‫داده‬ ‫رخ‬ ‫جابجایی‬ ‫چهار‬ ‫و‬ ‫مقایسه‬ ‫عمل‬ 654321 18913171012 18913171210 18913171210 18917131210 18179131210 ‫مرحله‬2.‫است‬ ‫داده‬ ‫رخ‬ ‫جابجایی‬ ‫سه‬ ‫و‬ ‫مقایسه‬ ‫عمل‬ ‫چهار‬ : 654321 18179131210 18179131210 18179131210 18171391210 ‫مرحله‬3‫است‬ ‫داده‬ ‫رخ‬ ‫جابجایی‬ ‫عمل‬ ‫یک‬ ‫و‬ ‫مقایسه‬ ‫عمل‬ ‫سه‬ : 654321 18171391210 18171391210 18171312910 ‫مرحله‬4.‫است‬ ‫داده‬ ‫رخ‬ ‫جابجایی‬ ‫یک‬ ‫و‬ ‫مقایسه‬ ‫عمل‬ ‫دو‬ : 654321 18171312910 18171312109 ‫مرحله‬5.‫است‬ ‫داده‬ ‫رخ‬ ‫جابجایی‬ ‫یک‬ ‫و‬ ‫مقایسه‬ ‫یک‬ :
  • 10. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 10 ‫آرای‬ ‫نظمی‬ ‫بی‬ ‫به‬ ‫بتگی‬‫ب‬‫بس‬ ‫و‬ ‫کرد‬ ‫ببه‬‫ب‬‫محاس‬ ‫توان‬ ‫نمی‬ ‫دقیقا‬ ‫را‬ ‫حبابی‬ ‫روش‬ ‫در‬ ‫ها‬ ‫جابجایی‬ ‫تعداد‬ )‫نکته‬‫تعداد‬ ‫حداکثر‬ ‫که‬ ‫گفت‬ ‫توان‬ ‫می‬ ‫ولی‬ ‫دارد‬ ‫ه‬ ‫جابجایی‬ ‫صفرتا‬ ‫هم‬ ‫دهد.(حداقل‬ ‫رخ‬ ‫نیز‬ ‫جابجایی‬ ‫یک‬ ‫شود‬ ‫می‬ ‫انجام‬ ‫که‬ ‫ایی‬ ‫مقایسه‬ ‫هر‬ ‫یعنی‬ ‫است‬ ‫ها‬ ‫مقایسه‬ ‫تعداد‬ ‫اندازه‬ ‫به‬ ‫ها‬ ‫جابجایی‬ ‫عمل‬) ‫تع‬ ‫برابر‬ ‫ها‬ ‫جابجایی‬ ‫تعداد‬ ‫کنیم‬ ‫صعودی‬ ‫حبابی‬ ‫روش‬ ‫به‬ ‫را‬ ‫آن‬ ‫بخواهیم‬ ‫و‬ ‫باشد‬ ‫نزولی‬ ‫ایی‬ ‫آرایه‬ ‫اگر‬‫است‬ ‫ها‬ ‫مقایسه‬ ‫داد‬)‫حالت‬ ‫(بدترین‬. ‫یک‬ ‫بخواهیم‬ ‫اگر‬ )‫سئوال‬‫آرایه‬10‫شود؟‬ ‫می‬ ‫انجام‬ ‫مقایسه‬ ‫عمل‬ ‫چند‬ ‫کنیم‬ ‫مرتب‬ ‫حبابی‬ ‫روش‬ ‫به‬ ‫را‬ ‫عنصری‬ )‫الف‬9)‫ب‬15)‫ج‬50)‫د‬45 .‫است‬ ‫کند‬ ‫حبابی‬ ‫سازی‬ ‫مرتب‬ ‫روش‬ )‫نکته‬ ‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ )‫برنامه‬n‫دهد؟‬ ‫نمایش‬ ‫سپس‬ ‫و‬ ‫مرتب‬ ‫صعودی‬ ‫صورت‬ ‫به‬ ‫و‬ ‫کند‬ ‫دریافت‬ ‫کاربر‬ ‫از‬ ‫عدد‬ ‫تا‬ ‫باشد؟‬ ‫داشته‬ ‫باید‬ ‫تغییری‬ ‫چه‬ ‫فوق‬ ‫برنامه‬ ‫نزولی‬ ‫صورت‬ ‫به‬ ‫سازی‬ ‫مرتب‬ ‫برای‬ )‫سوال‬ ‫بود‬ ‫خواهد‬ ‫صورت‬ ‫چه‬ ‫به‬ ‫سوم‬ ‫فاز‬ ‫از‬ ‫بعد‬ ‫آرایه‬ ‫کنید‬ ‫مشخص‬ ‫و‬ ‫کنید‬ ‫مرتب‬ ‫حبابی‬ ‫روش‬ ‫به‬ ‫را‬ ‫روبرو‬ ‫آرایه‬ )‫سوال‬ :‫آرایه‬ ‫در‬ ‫جستجو‬ ‫از‬ ‫منظور‬‫و‬ ‫خطی‬ ‫جستجوی‬ .‫کنیم‬ ‫می‬ ‫تشریح‬ ‫درس‬ ‫این‬ ‫در‬ ‫را‬ ‫جستجو‬ ‫نوع‬ ‫دو‬ .‫است‬ ‫آرایه‬ ‫در‬ )‫خاص(کلید‬ ‫عنصر‬ ‫یک‬ ‫کردن‬ ‫پیدا‬ ،‫آرایه‬ ‫در‬ ‫جستجو‬ .‫دودویی‬ ‫خطی‬ ‫جستجوی‬Liner Search: ‫جستجو‬ ‫کلید‬ ‫که‬ ‫مقداری‬ ‫با‬ ‫آرایه‬ ‫عضو‬ ‫خطی،هر‬ ‫جستجوی‬ ‫در‬Search Key‫مو‬ ‫در‬ ‫خطی‬ ‫جستجوی‬ .‫شود‬ ‫می‬ ‫مقایسه‬ ‫شود‬ ‫می‬ ‫نامیده‬‫های‬ ‫آرایه‬ ‫رد‬ .‫ندارد‬ ‫بهینه‬ ‫کارایی‬ ‫مرتب‬ ‫و‬ ‫بزرگ‬ ‫های‬ ‫آرایه‬ ‫برای‬ ‫ولی‬ ‫کند‬ ‫می‬ ‫عمل‬ ‫خوب‬ ‫نشده‬ ‫مرتب‬ ‫یا‬ ‫کوچک‬ ‫این‬ ‫غیر‬ ‫در‬ ‫رسد‬ ‫می‬ ‫پایان‬ ‫به‬ ‫کار‬ ‫شد‬ ‫پیدا‬ ‫اگر‬ ‫شود‬ ‫می‬ ‫مقایسه‬ ‫آرایه‬ ‫دادة‬ ‫اولین‬ ‫با‬ )‫شود‬ ‫جستجو‬ ‫است‬ ‫قرار‬ ‫که‬ ‫ایی‬ ‫داده‬ (‫کلید‬ ‫روش‬ ‫این‬ ‫در‬‫ص‬‫ورت‬ ‫م‬ ‫مقایسه‬ ‫آرایه‬ ‫دادة‬ ‫دومین‬ ‫با‬.‫یابد‬ ‫می‬ ‫ادامه‬ ‫آرایه‬ ‫پایان‬ ‫تا‬ ‫کار‬ ‫این‬ ‫و‬ ‫شود‬ ‫ی‬.‫شود‬ ‫قطع‬ ‫باید‬ ‫جستجو‬ ‫عمل‬ ،‫شد‬ ‫پیدا‬ ‫کلید‬ ‫موقع‬ ‫هر‬ ‫که‬ ‫کنید‬ ‫دقت‬ ‫کلید‬ ‫اگر‬ )‫مثال‬12)‫خطی‬ ‫روش‬ ‫به‬ ( ‫شود؟‬ ‫پیدا‬ ‫کلید‬ ‫تا‬ ‫شود‬ ‫می‬ ‫انجام‬ ‫مقایسه‬ ‫عمل‬ ‫چند‬ ‫زیر‬ ‫آرایه‬ ‫در‬ ‫باشد‬ ‫باال‬ ‫مثال‬ ‫در‬ .‫شود‬ ‫می‬ ‫تمام‬ ‫جستجو‬ ‫کار‬ ‫و‬ ‫کند‬ ‫می‬ ‫پیدا‬ ‫را‬ ‫کلید‬ ‫اولین‬ ‫کنیم‬ ‫جستجو‬ ‫خطی‬ ‫روش‬ ‫به‬ ‫باشد‬ ‫کلید‬ ‫از‬ ‫مورد‬ ‫چند‬ ‫آرایه‬ ‫در‬ ‫اگر‬ )‫نکته‬‫دو‬ ‫عدد‬12‫اولین‬ ‫اما‬ ‫دارد‬ ‫وجود‬12.‫شود‬ ‫می‬ ‫تمام‬ ‫کار‬ ‫و‬ ‫شود‬ ‫می‬ ‫پیدا‬ ‫است‬ ‫ششم‬ ‫خانه‬ ‫در‬ ‫که‬ ‫آرایه‬ ‫که‬ ‫نیست‬ ‫الزم‬ ‫خطی‬ ‫جستجوی‬ ‫روش‬ ‫این‬ ‫در‬ )‫نکته‬.‫باشند‬ ‫نزولی‬ ‫یا‬ ‫صعودی‬ ‫آرایه‬ ‫در‬ ‫ها‬ ‫داده‬ ‫یعنی‬ ‫باشد‬ ‫شده‬ ‫مرتب‬ ‫ما‬ .‫شود‬ ‫می‬ ‫انجام‬ ‫یکبار‬ ‫مقایسه‬ ‫عمل‬ ‫خطی‬ ‫جستجوی‬ ‫حالت‬ ‫بهترین‬ ‫در‬ )‫نکته‬‫خطی‬ ‫جستجوی‬ ‫حالت‬ ‫بدترین‬ ‫در‬،‫های‬ ‫خانه‬ ‫تعداد‬ ‫به‬‫آرایه‬‫عمل‬ .‫شود‬ ‫می‬ ‫انجام‬ ‫مقایسه‬‫اگر‬ ‫بنابراین‬‫آرایه‬N‫باشد‬ ‫داشته‬ ‫عنصر‬ ‫تا‬N‫ان‬ ‫مقایسه‬ ‫عمل‬‫متوسط‬ ‫حالت‬ ‫شود.در‬ ‫می‬ ‫جام‬N/2‫می‬ ‫انجام‬ ‫مقایسه‬ ‫عمل‬ )‫گیرند‬ ‫می‬ ‫قرار‬ ‫مقایسه‬ ‫مورد‬ ‫آرایه‬ ‫اعضای‬ ‫نصف‬ ‫میانگین‬ ‫(بطور‬ .‫شود‬ ‫دارای‬ ‫ای‬ ‫آرایه‬ ‫اگر‬ )‫سئوال‬20‫شود؟‬ ‫می‬ ‫انجام‬ ‫مقایسه‬ ‫عمل‬ ‫چند‬ ‫متوسط‬ ‫و‬ ‫بدترین‬ ‫در‬ ‫خطی‬ ‫جستجوی‬ ‫روش‬ ‫در‬ ‫باشد‬ ‫عنصر‬ int n = int.Parse(Console.ReadLine()); int[] M = new int[n]; for (int i = 0; i < n; i++) M[i] = int.Parse(Console.ReadLine()); for (int i = n - 1; i > 0; i--) for (int j = 0; j < i; j++ ) if(M[j]>M[j+1]) // ‫مقایسه‬ { int temp = M[j]; // ‫جابجایی‬ M[j] = M[j + 1]; M[j + 1] = temp; } foreach (int item in M) Console.Write("{0} ",item); 212171912711141310
  • 11. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 11 )‫برنامه‬ ‫شود‬ ‫می‬ ‫زمان‬ ‫اتالف‬ ‫سبب‬ ‫روش‬ ‫این‬ ‫به‬ ‫بزرگ‬ ‫های‬ ‫آرایه‬ ‫در‬ ‫جستجو‬.‫شود‬ ‫می‬ ‫زیاد‬ ‫بسیار‬ ‫مقایسه‬ ‫دفعات‬ ‫تعداد‬ ‫زیرا‬ ‫باینری‬ ‫جستجوی‬)‫(دودویی‬Binary: ‫روش‬ ‫این‬‫فقط‬.‫است‬ ‫اجرا‬ ‫قابل‬ ‫مرتب‬ ‫های‬ ‫آرایه‬ ‫روی‬ ‫بر‬.‫کرد‬ ‫مرتب‬ ‫را‬ ‫آن‬ ‫باید‬ ‫ابتدا‬ ‫باشد‬ ‫نامرتب‬ ‫آرایه‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫را‬ ‫کلیدی‬ ‫خواهیم‬ ‫می‬ ‫و‬ ‫داریم‬ )‫بزرگ‬ ‫به‬ ‫کوچک‬ ‫(از‬ ‫صعودی‬ ‫مرتب‬ ‫آرایه‬ ‫یک‬ ‫که‬ ‫کنید‬ ‫فرض‬:‫کنیم‬ ‫جستجو‬ ‫باینری‬ ‫روش‬ ‫به‬ ‫آن‬ ‫در‬ ‫کنیم‬ ‫می‬ ‫نصف‬ ‫وسط‬ ‫از‬ ‫را‬ ‫آرایه‬:‫دهد‬ ‫رخ‬ ‫است‬ ‫ممکن‬ ‫حالت‬ ‫سه‬ ‫که‬ ‫کنیم‬ ‫می‬ ‫مقایسه‬ ‫آرایه‬ ‫وسط‬ ‫عنصر‬ ‫با‬ ‫را‬ ‫کلید‬ ‫و‬ (‫باشد‬ ‫بزرگتر‬ ‫وسط‬ ‫عنصر‬ ‫از‬ ‫کلید‬ )‫الف‬Key > A[C]‫سمت‬ ‫نیمه‬ ‫در‬ ‫کلید‬ ‫حتما‬ ‫است‬ )‫(صعودی‬ ‫مرتب‬ ‫لیست‬ ‫اینکه‬ ‫به‬ ‫توجه‬ ‫با‬ ‫حالت‬ ‫این‬ ‫در‬ : ) ‫را‬.‫کرد‬ ‫نخواهیم‬ ‫جستجو‬ ‫را‬ ‫چپ‬ ‫سمت‬ ‫نیمه‬ ‫و‬ ‫کنیم‬ ‫جستجو‬ ‫را‬ ‫راست‬ ‫سمت‬ ‫نیمه‬ ‫باید‬ ‫ما‬ ‫و‬ ‫است‬ ‫ست‬ ‫راست‬ ‫سمت‬ ‫نیمه‬‫وسط‬‫چپ‬ ‫سمت‬ ‫نیمه‬ ‫چپ‬ ‫سمت‬ ‫نیمه‬ ‫در‬ ‫کلید‬ ‫حتما‬ ‫است‬ ‫مرتب‬ ‫صعودی‬ ‫صورت‬ ‫به‬ ‫آرایه‬ ‫اینکه‬ ‫به‬ ‫توجه‬ ‫با‬ ‫حالت‬ ‫این‬ ‫در‬ :‫است‬ ‫کوچکتر‬ ‫آرایه‬ ‫وسط‬ ‫عنصر‬ ‫از‬ ‫کلید‬ )‫ب‬ ‫سمت‬ ‫نیمه‬ ‫باید‬ ‫و‬ ‫است‬.‫کرد‬ ‫نخواهیم‬ ‫جستجو‬ ‫را‬ ‫راست‬ ‫نیمه‬ ‫و‬ ‫کرد‬ ‫جستجو‬ ‫باید‬ ‫را‬ ‫چپ‬ .‫شود‬ ‫می‬ ‫متوقف‬ ‫جستجو‬ ‫عمل‬ ‫و‬ ‫است‬ ‫شده‬ ‫پیدا‬ ‫کلید‬ ‫حالت‬ ‫این‬ ‫در‬ .‫باشد‬ ‫آرایه‬ ‫وسط‬ ‫عنصر‬ ‫مساوی‬ ‫کلید‬ ‫حالت‬ ‫بهترین‬ ‫در‬ )‫ج‬ ‫به‬ .‫دهیم‬ ‫می‬ ‫ادامه‬ ‫راست‬ ‫یا‬ ‫چپ‬ ‫سمت‬ ‫نیمه‬ ‫در‬ ‫را‬ ‫جستجو‬ ‫عمل‬ ‫دهد‬ ‫رخ‬ ‫ب‬ ‫یا‬ ‫الف‬ ‫های‬ ‫حالت‬ ‫از‬ ‫کدام‬ ‫هر‬ ‫اگر‬‫نیمه‬ ‫یا‬ ‫چپ‬ ‫سمت‬ ‫نیمه‬ ‫دیگر‬ ‫عبارت‬ ‫ع‬ ‫دوباره‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫نصف‬ ‫وسط‬ ‫از‬ ‫دوباره‬ ‫را‬ ‫راست‬ ‫سمت‬.‫کنیم‬ ‫می‬ ‫تکرار‬ ‫آن‬ ‫روی‬ ‫را‬ ‫باال‬ ‫مل‬ ‫آرایه‬ ‫اگر‬ ‫روش‬ ‫این‬ ‫در‬1000‫مقایسه‬ ‫یک‬ ‫با‬ ‫باشد‬ ‫داشته‬ ‫عنصر‬500‫و‬ ‫گذاریم‬ ‫می‬ ‫کنار‬ ‫را‬ ‫آن‬ ‫عنصر‬500‫مقایسه‬ ‫با‬ .‫کنیم‬ ‫می‬ ‫جستجو‬ ‫را‬ ‫دیگر‬ ‫تای‬ ‫بعدی‬250‫دی‬ ‫عنصر‬.‫است‬ ‫زیاد‬ ‫بسیار‬ ‫جستجو‬ ‫سرعت‬ ‫دلیل‬ ‫همین‬ ‫به‬ .... ‫و‬ ‫گذاریم‬ ‫می‬ ‫کنار‬ ‫را‬ ‫گر‬ ‫ایی‬ ‫آرایه‬ ‫اگر‬ )‫سوال‬1000‫حداکثر‬ ‫دودویی‬ ‫جستجوی‬ ‫در‬ ‫باشد‬ ‫داشته‬ ‫عنصر‬‫شود؟‬ ‫می‬ ‫انجام‬ ‫مقایسه‬ ‫چند‬ ‫سوال‬‫آرایه‬ )‫ای‬‫دارای‬18‫چ‬ ‫خطی‬ ‫و‬ ‫دودویی‬ ‫روش‬ ‫به‬ ‫کلید‬ ‫یک‬ ‫جستجوی‬ ‫حالت‬ ‫بهترین‬ ‫و‬ ‫حالت‬ ‫بدترین‬ ‫در‬ ‫است‬ ‫عنصر‬‫می‬ ‫انجام‬ ‫مقایسه‬ ‫عمل‬ ‫ند‬ ‫شود؟‬ ‫بزنید!؟‬ ‫حدس‬ ‫دودویی‬ ‫جستجوی‬ ‫در‬ ‫ها‬ ‫مقایسه‬ ‫تعداد‬ ‫حداکثر‬ ‫برای‬ ‫ریاضی‬ ‫رابطه‬ ‫یک‬ ‫توانید‬ ‫می‬ ‫آیا‬ )‫سوال‬ int i; bool flag = false; int n = int.Parse(Console.ReadLine()); // ‫آرایه‬ ‫طول‬ int[] arr = new int[n]; for (i = 0; i < n; i++) // ‫آرایه‬ ‫دهی‬ ‫مقدار‬ arr[i] = int.Parse(Console.ReadLine()); int key=int.Parse (Console.ReadLine()); //‫کلید‬ ‫دریافت‬ for (i = 0; i < n; i++ ) // ‫خطی‬ ‫جستجوی‬ if (arr[i]==key) { flag = true; break; } if (flag) Console.WriteLine("{0} Found in {1} ", key, i); else Console.WriteLine("{0} not Found!", key);
  • 12. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 12 :‫آرایه‬ ‫در‬ ‫دودویی‬ ‫جستجوی‬ )‫برنامه‬ ‫ابتدا‬ ‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ )‫برنامه‬n‫عدد‬ ‫سپس‬ ‫و‬ ‫کند‬ ‫ذخیره‬ ‫و‬ ‫دریافت‬ ‫کاربر‬ ‫از‬ ‫را‬ ‫عدد‬ ‫تا‬x‫کنید؟‬ ‫مشخص‬ ‫آنرا‬ ‫تکرار‬ ‫تعداد‬ ‫و‬ ‫دریافت‬ ‫را‬ ‫ابتدا‬ ‫که‬ ‫بنویسید‬ ‫ایی‬ ‫برنامه‬ ) ‫برنامه‬n‫را‬ ‫اعداد‬ ‫نهایت‬ ‫در‬ .‫کنید‬ ‫مرتب‬ ‫نزولی‬ ‫صورت‬ ‫به‬ ‫را‬ ‫ها‬ ‫داده‬ ‫سپس‬ ‫و‬ ‫کند‬ ‫دخیره‬ ‫و‬ ‫دریافت‬ ‫کاربر‬ ‫از‬ ‫را‬ ‫عدد‬ ‫تا‬ .‫شود‬ ‫داده‬ ‫نمایش‬ ‫یکبار‬ ‫فقط‬ ‫تکراری‬ ‫اعداد‬ ‫بطوریکه‬ ‫کنید‬ ‫چاپ‬ ‫تست‬1‫)د‬‫عمل‬ ‫چه‬ ‫زیر‬ ‫ستور‬‫می‬ ‫انجام‬ ‫ی‬‫دهد؟‬int[] coin=new int[] {500,1000,2000,5000}; ‫می‬ ‫قرار‬ ‫آن‬ ‫در‬ ‫ترتیب‬ ‫به‬ ‫را‬ ‫شده‬ ‫داده‬ ‫اعداد‬ ‫و‬ ‫کرده‬ ‫ایجاد‬ ‫عنصر‬ ‫پنج‬ ‫با‬ ‫آرایه‬ ‫یک‬ )‫الف‬.‫دهد‬ ‫می‬ ‫قرار‬ ‫آن‬ ‫در‬ ‫ترتیب‬ ‫به‬ ‫را‬ ‫شده‬ ‫داده‬ ‫اعداد‬ ‫و‬ ‫کرده‬ ‫ایجاد‬ ‫عنصر‬ ‫چهار‬ ‫با‬ ‫آرایه‬ ‫یک‬ )‫ب‬.‫دهد‬ ‫می‬ ‫قرار‬ ‫آن‬ ‫در‬ ‫اول‬ ‫به‬ ‫آخر‬ ‫از‬ ‫را‬ ‫شده‬ ‫داده‬ ‫اعداد‬ ‫و‬ ‫کرده‬ ‫ایجاد‬ ‫عنصر‬ ‫پنج‬ ‫با‬ ‫آرایه‬ ‫یک‬ )‫ج‬.‫دهد‬ ‫می‬ ‫قرار‬ ‫آن‬ ‫در‬ ‫اول‬ ‫به‬ ‫آخر‬ ‫از‬ ‫را‬ ‫شده‬ ‫داده‬ ‫اعداد‬ ‫و‬ ‫کرده‬ ‫ایجاد‬ ‫عنصر‬ ‫چهار‬ ‫با‬ ‫آرایه‬ ‫یک‬ )‫د‬.‫دهد‬ ‫تست‬2)‫مرتب‬ ‫الگوریتم‬ ‫هر‬ ‫در‬‫و‬ .......................... ‫عمل‬ ‫دو‬ ‫همیشه‬ ‫سازی‬‫می‬ ‫انجام‬ .........................‫شود‬ )‫الف‬Compare–Swap)‫ب‬Search–Compare)‫ج‬Search–Swap)‫د‬Compare–Search ‫تست‬3)‫است؟‬ ‫صحیح‬ ‫آرایه‬ ‫با‬ ‫رابطه‬ ‫در‬ ‫زیر‬ ‫جمالت‬ ‫از‬ ‫کدامیک‬ ‫از‬ ‫آرایه‬ ‫اندیس‬ )‫الف‬1‫می‬ ‫شروع‬.‫شود‬‫از‬ ‫بعد‬ )‫ب‬‫می‬ ‫آرایه‬ ‫ایجاد‬.‫داد‬ ‫تغییر‬ ‫را‬ ‫آرایه‬ ‫اندازه‬ ‫توان‬ ‫نمی‬ ‫آرایه‬ ‫ایجاد‬ ‫از‬ ‫بعد‬ )‫ج‬.‫کرد‬ ‫کم‬ ‫یا‬ ‫اضافه‬ ‫آن‬ ‫به‬ ‫عنصری‬ ‫توان‬‫دستور‬ ‫از‬ ‫آرایه‬ ‫ایجاد‬ ‫برای‬ )‫د‬create‫می‬ ‫استفاده‬.‫شود‬ ‫تست‬4)‫نام‬ ‫به‬ ‫آرایه‬ ‫یک‬ ‫از‬ ‫پانزدهم‬ ‫عنصر‬ ‫به‬ ‫دسترسی‬ ‫برای‬list‫است؟‬ ‫صحیح‬ ‫گزینه‬ ‫کدام‬ )‫الف‬list[15])‫ب‬list[]15)‫ج‬list[]14)‫د‬list[14] int i;bool flag = false; int n = int.Parse(Console.ReadLine()); // ‫آرایه‬ ‫طول‬ int[] arr = new int[n]; for (i = 0; i < n; i++) // ‫آرایه‬ ‫دهی‬ ‫مقدار‬ arr[i] = int.Parse(Console.ReadLine()); Array.Sort(arr); // ‫آرایه‬ ‫سازی‬ ‫مرتب‬ int key=int.Parse (Console.ReadLine()); // ‫کلید‬ ‫دریافت‬ int first=0, last=n-1, middle=0; while(first >= last) { middle = (first + last) / 2; // ‫آرایه‬ ‫وسط‬ ‫محاسبه‬ if (arr[middle] == key) { flag = true; break; } else if (arr[middle] > key) last = middle - 1; else first = middle + 1; } if (flag) Console.WriteLine("{0} Found in {1} ", key, middle); else Console.WriteLine("{0} not Found!", key);
  • 13. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 13 : ‫سوم‬ ‫فصل‬‫داده‬،‫شمارشی‬‫کالس‬‫و‬‫متد‬ ‫نوع‬‫داده‬‫شمارشی‬1: ‫داده‬‫شمارشی‬‫از‬‫داده‬‫های‬‫مرکب‬‫است‬‫که‬‫خود‬‫شامل‬‫سری‬ ‫یک‬‫داده‬‫سبب‬ ‫شمارشی‬ ‫داده‬ ‫نوع‬ ‫از‬ ‫استفاده‬ .‫است‬‫باالبردن‬‫خوانایی‬‫برنامه‬‫می‬.‫شوند‬ ‫نوع‬‫داده‬‫شمارشی‬‫مجموعه‬‫ای‬‫از‬‫چند‬‫نام‬‫دلخواه‬‫می‬‫باشد‬‫که‬‫حالت‬‫ها‬‫و‬‫مقادیر‬‫مختلف‬‫موضوع‬ ‫یک‬‫را‬‫نشان‬‫می‬.‫دهد‬ً‫ال‬‫مث‬‫برای‬‫روزهای‬‫هفته‬‫به‬ ‫جای‬‫اعداد‬‫از‬ ‫هفت‬ ‫تا‬ ‫یک‬‫نام‬‫ها‬‫و‬‫معنی‬ ‫کلمات‬‫دار‬‫استفاده‬‫می‬.‫کنیم‬‫عالوه‬‫بر‬‫روزهای‬،‫هفته‬‫برای‬‫نام‬‫ماه‬‫های‬،‫سال‬‫مدرک‬‫تحصیلی‬‫اشخاص‬‫نیز‬ ‫می‬‫توان‬‫از‬‫نوع‬‫داده‬‫شمارشی‬‫استفاده‬.‫کرد‬ ‫برای‬‫تعریف‬‫یک‬‫نوع‬‫داده‬‫شمارشی‬‫از‬‫کلمه‬‫کلیدی‬enum‫استفاده‬‫می‬.‫شود‬‫دسترسی‬ ‫نوع‬ً‫ال‬‫معمو‬public‫است‬.‫محل‬‫قرارگیری‬‫تعریف‬‫نوع‬‫داده‬ ،‫شمارشی‬ً‫ال‬‫معمو‬‫خارج‬‫از‬‫کالس‬‫و‬‫در‬‫ابتدای‬‫برنامه‬‫است‬. ‫دسترسی‬ ‫نوع‬ enum ‫دلخواه‬ ‫نام‬ { ‫ها‬ ‫نام‬ ‫از‬ ‫لیستی‬‫کلمات‬ ‫و‬ } : ‫مثال‬.‫هستند‬ ‫ثابت‬ ‫عدد‬ ‫یک‬ ‫با‬ ‫معادل‬ ‫شمارشی‬ ‫داده‬ ‫نوع‬ ‫اعضای‬ ‫از‬ ‫یک‬ ‫هر‬)‫ندارد‬ ‫وجود‬ ‫لیست‬ ‫انتهای‬ ‫در‬ ‫ویرگول‬ ‫(نقطه‬ public enum DayOfWeek { sat,Sun, Mon,Tue, Wedn,Thurs,Fri } ‫شمارشی‬ ‫داده‬ ‫نوع‬ ‫مثال‬ ‫این‬ ‫در‬dayofWeek‫ارزش‬ ‫که‬ ‫باشد‬ ‫می‬ ‫مقدار‬ ‫هفت‬ ‫شامل‬sat‫برابر‬0‫ارزش‬ ‫و‬Sun... ‫و‬ ‫یک‬ ‫برابر‬‫می‬ ‫البته‬ ‫که‬ ‫باشد‬ ‫می‬ .‫داد‬ ‫تغییر‬ ‫را‬ ‫آنها‬ ‫عددی‬ ‫ارزش‬ ‫توان‬ public enum DayOfWeek { Sat=1,Sun, Mon,Tue, Wedn,Thurs,Fri } ‫ارزش‬ ‫مثال‬ ‫این‬ ‫در‬Sat.‫باشد‬ ‫می‬ ‫قبلی‬ ‫از‬ ‫بیشتر‬ ‫واحد‬ ‫یک‬ ‫بعدی‬ ‫اعضای‬ ‫عددی‬ ‫ارزش‬ ‫و‬ ‫یک‬ ‫برابر‬ ‫این‬ ‫توان‬ ‫می‬‫نوع‬‫تعر‬ ‫نیز‬ ‫زیر‬ ‫بصورت‬ ‫را‬‫ی‬‫نمود‬ ‫ف‬: public enum DayOfWeek { Wedn=5,Sat=1, Mon=3, Sun=2,Tue=5, Fri=7, Thurs=6 } ‫شود‬ ‫مقداردهی‬ ‫سپس‬ ‫و‬ ‫شود‬ ‫تعریف‬ ‫نوع‬ ‫این‬ ‫از‬ ‫متغیری‬ ‫باید‬ ‫ابتدا‬ ‫نوع‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫برای‬.‫مثال‬: DayOfWeek d; d = DayOfWeek.Thurs; Console.WriteLine(d); ‫نکته‬1)‫متد‬ ‫داخل‬ ‫نباید‬ ‫نوع‬ ‫این‬Main‫نمود‬ ‫تعریف‬ ‫کالس‬ ‫از‬ ‫خارج‬ ‫یا‬ ‫کالس‬ ‫داخل‬ ‫توان‬ ‫می‬ ‫اما‬ ‫گردد‬ ‫تعریف‬. ‫نکته‬2)‫را‬ ‫شمارشی‬ ‫متغیر‬ ‫محتوای‬‫توان‬ ‫نمی‬‫باشد‬ ‫مقادیر‬ ‫همان‬ ‫از‬ ‫یکی‬ ‫باید‬ ‫حتما‬ ‫و‬ ‫داد‬ ‫قرار‬ ‫رشته‬ ‫یا‬ ‫عدد‬(‫بزرگ‬ ‫و‬ ‫کوچک‬ ‫حروف‬ ‫به‬ ‫حساسیت‬). ‫نکته‬3).‫نمود‬ ‫استفاده‬ ‫تفریق‬ ‫یا‬ ‫جمع‬ ‫عملگر‬ ‫از‬ ‫توان‬ ‫می‬ ‫فقط‬ ‫شمارشی‬ ‫نوع‬ ‫متغیر‬ ‫در‬ ‫نکته‬4))!!!!!‫کرد(؟؟؟‬ ‫دریافت‬ ‫ورودی‬ ‫از‬ ‫توان‬ ‫نمی‬ ‫را‬ ‫داده‬ ‫نوع‬ ‫این‬ ‫نکته‬5)‫در‬‫کتابخانه‬‫نت‬ ‫دات‬،‫آماده‬ ‫شمارشی‬ ‫های‬ ‫داده‬‫مانند‬ConsoleColor.‫دارد‬ ‫وجود‬ ‫نیز‬ : ‫مثال‬ public enum DayOfWeek { sat=1,Sun, Mon,Tue, Wedn,Thurs,Fri } static void Main(string[] args) { DayOfWeek d; 1 Enumerated Type public enum CAR { Peykan, Pride, Samand, Benz, BMW }
  • 14. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 14 d = 3; //error d = DayOfWeek.Thurs; Console.WriteLine(d); // Thurs d++; Console.WriteLine(d); // Fri Console.WriteLine((int)d); // 7 d += 100; Console.WriteLine(d); // 107 d = DayOfWeek.Mon - 2; Console.WriteLine(d); // sat d -= 3; Console.WriteLine(d); // -2 d = int.Parse(Console.ReadLine()); // Error d = (DayOfWeek) int.Parse(Console.ReadLine()); //ok type casting if (d == DayOfWeek.Fri) Console.WriteLine(" ‫تعطیل‬ "); if (d == 7) // Error Console.WriteLine(" ‫تعطیل‬ "); } : ‫کالس‬ ،‫کالس‬‫تعریف‬،‫مشخصات‬‫وضعیت‬‫و‬‫رفتارهای‬‫یک‬‫شئ‬‫در‬ ‫را‬‫بردارد‬‫و‬‫نوع‬‫شئ‬‫را‬‫مشخص‬‫می‬.‫کند‬‫نام‬ ‫است‬ ‫(بهتر‬،‫کالس‬‫مطابق‬‫با‬‫نام‬‫شئ‬‫باشد‬ ‫که‬‫حال‬ ‫در‬‫تعریف‬‫آن‬‫هستیم‬‫برنامه‬ .)‫یک‬ ‫قالب‬ ‫در‬ ‫را‬ ‫شی‬ ‫یک‬ ‫رفتارهای‬ ‫و‬ ‫وضعیت‬ ‫و‬ ‫مشخصات‬ ‫یعنی‬ .‫کند‬ ‫تعریف‬ ‫را‬ ‫کالس‬ ‫یک‬ ‫تواند‬ ‫می‬ ‫نویس‬ .)‫است‬ ‫ندارد(انتزاعی‬ ‫خارجی‬ ‫وجود‬ ‫و‬ ‫است‬ ‫تعریف‬ ‫فقط‬ ‫کالس‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ .‫کند‬ ‫می‬ ‫تعریف‬ ‫کالس‬ ‫امکا‬ ‫و‬ ‫اشیاء‬ ‫رفتارهای‬ ‫و‬ ‫ها‬ ‫ویژگی‬ ‫تعریف‬ ‫امکان‬ ‫آنها‬ ‫در‬ ‫که‬ ‫نویسی‬ ‫برنامه‬ ‫های‬ ‫زبان‬‫نسبت‬ ‫و‬ ‫ارتباط‬ ‫یکدیگر‬ ‫با‬ ‫اشیاء‬ ‫و‬ ‫است‬ ‫شده‬ ‫فراهم‬ ‫اشیاء‬ ‫ایجاد‬ ‫ن‬ ‫گرا‬ ‫شی‬ ‫زبانهای‬ ،‫دارند‬ ‫واکنش‬ ‫هم‬ ‫به‬2.‫شوند‬ ‫می‬ ‫نامیده‬‫نویسی‬ ‫برنامه‬ ‫های‬ ‫زبان‬C#،C++‫ها‬ ‫زبان‬ ‫این‬ ‫به‬ ‫که‬ ‫هایی‬ ‫برنامه‬ .‫هستند‬ ‫گرا‬ ‫شی‬ ‫جاوا‬ ‫و‬ .‫هستند‬ ‫تعامل‬ ‫و‬ ‫ارتباط‬ ‫در‬ ‫یکدیگر‬ ‫با‬ ‫که‬ ‫شود‬ ‫می‬ ‫تشکیل‬ ‫شی‬ ‫تعدادی‬ ‫از‬ ‫واقع‬ ‫در‬ ‫شوند‬ ‫می‬ ‫نوشته‬ ‫ء‬ ‫شی‬(object: ) ،‫شی‬.‫شود‬ ‫می‬ )‫(ساخته‬ ‫متولد‬ ‫که‬ ‫باشد‬ ‫می‬ ‫کالس‬ ‫از‬ ‫ای‬ ‫نمونه‬.‫کرد‬ ‫ایجاد‬ ‫شی‬ ‫زیادی‬ ‫تعداد‬ ‫توان‬ ‫می‬ ‫کالس‬ ‫یک‬ ‫از‬‫ک‬.‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫شی‬ ‫نوع‬ ‫الس‬ ‫یک‬‫شئ‬‫شامل‬‫تعدادی‬،‫ویژگی‬،‫وضعیت‬‫رفتار‬‫و‬‫عملیات‬‫است‬‫آن‬ ‫که‬‫را‬‫از‬‫اشیای‬‫دیگر‬‫متمایز‬‫می‬‫سازد‬.‫همچنین‬‫بر‬‫روی‬‫هر‬‫شئ‬‫نیز‬‫عملیاتی‬‫می‬ ‫توان‬‫انجام‬‫داد‬. ‫نام‬ ‫و‬ ‫خانوادگی‬ ‫نام‬ ‫و‬ ‫نام‬ .‫شود‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫شی‬ ‫یک‬ ‫تواند‬ ‫می‬ ‫آموز‬ ‫دانش‬ ‫یک‬ ‫کارنامه‬ )‫مثال‬‫وضع‬ ‫و‬ ‫است‬ ‫کارنامه‬ ‫های‬ ‫ویژگی‬ ‫نمرات‬ ‫و‬ ‫دروس‬‫ی‬‫ت‬ .‫شود‬ ‫می‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫کارنامه‬ ‫روی‬ ‫بر‬ ‫عملیات‬ ‫معدل‬ ‫محاسبه‬ ‫یا‬ ‫نمرات‬ ‫کردن‬ ‫چاپ‬ ،‫نمرات‬ ‫کردن‬ ‫وارد‬ .‫باشد‬ ‫رد‬ ،‫قبول‬ ‫تواند‬ ‫می‬ ‫کارنامه‬ ‫ببرید؟‬ ‫نام‬ ‫را‬ ‫آن‬ ‫های‬ ‫عملیات‬ ‫و‬ ‫ها‬ ‫ویژگی‬ ،‫شود‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫شی‬ ‫یک‬ ‫کالس‬ ‫سیاه‬ ‫تخته‬ ‫اگر‬ )‫سوال‬ ‫برا‬‫ی‬‫حل‬‫یک‬‫مسئله‬‫به‬‫روش‬‫شئ‬،‫گرا‬‫تشخیص‬‫اشیاء‬‫و‬‫ارتباط‬‫آنها‬‫با‬‫یکدیگر‬‫بسیار‬‫اهمیت‬‫دارد‬. ‫ویژگی‬‫ها‬‫و‬‫وضعیت‬‫یک‬‫شئ‬‫به‬‫وسیله‬‫تعدادی‬‫متغیر‬‫که‬‫فیلد‬‫نامیده‬‫می‬،‫شوند‬‫مشخص‬‫می‬‫شود‬‫و‬‫رفتارهای‬‫اشیاء‬‫در‬‫قالب‬‫متدها‬‫تعریف‬‫می‬‫گردند‬. ‫م‬‫حل‬‫و‬‫مکان‬‫تعریف‬‫فیلدها‬‫و‬‫متدهای‬‫یک‬‫شئ‬‫در‬‫داخل‬‫یک‬‫کالس‬‫است‬. ‫کالس‬ ‫مثال‬ ‫بعنوان‬console‫های‬ ‫ویژگی‬ ‫دارای‬Title , Capslock , Cursorsize , …. ‫باشد‬ ‫می‬ ‫ویژگی‬Title‫نوع‬ ‫از‬string‫و‬‫قابلیت‬get , set‫دارد‬ ‫را‬. ‫ویژگی‬Capslock‫نوع‬ ‫از‬bool‫و‬‫قابلیت‬get‫فقط‬‫دارد‬ ‫را‬. ‫ویژگی‬Cursorsize‫نوع‬ ‫از‬int‫و‬‫قابلیت‬get , set‫دارد‬ ‫را‬. 2 Object Oriented Language
  • 15. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 15 : ‫متد‬(Method) ،‫متد‬‫مجموعه‬‫ای‬‫از‬‫دستورات‬‫است‬‫که‬‫برای‬‫انجام‬‫یک‬‫عمل‬‫خاص‬‫و‬‫یک‬ ‫حل‬‫مسئله‬‫کوچک‬‫به‬‫کار‬‫می‬‫رود‬‫م‬ .‫ت‬‫داشته‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫تواند‬ ‫می‬ ‫د‬ .‫باشد‬‫محل‬‫تعریف‬‫هر‬‫متد‬‫در‬‫داخل‬‫یک‬‫کالس‬‫است‬‫و‬‫متد‬‫جزیی‬‫از‬‫یک‬‫کالس‬‫است‬.‫برنامه‬‫هایی‬‫که‬‫تاکنون‬‫نوشته‬‫ایم‬‫دارای‬‫یک‬‫کالس‬‫و‬‫متدی‬ ‫نام‬ ‫به‬Main‫بوده‬‫اند‬. ‫هر‬،‫متد‬‫از‬‫دو‬‫قسمت‬‫تشکیل‬‫می‬‫شود‬:1-‫عنوان‬‫متد‬.‫است‬ ‫متد‬ ‫اول‬ ‫خط‬ :2-‫بدنه‬‫متد‬‫متد‬ ‫داخل‬ ‫دستورات‬ : ‫توصیف‬‫کننده‬:(Modifier) ‫خط‬‫عنوان‬‫یک‬‫متد‬‫با‬‫کلمه‬‫ای‬‫شروع‬‫می‬‫شود‬‫که‬‫روش‬‫ایجاد‬‫و‬‫محدوده‬‫دسترسی‬‫به‬‫متد‬‫را‬‫مشخص‬‫می‬‫کند‬.‫به‬‫عنوان‬‫مثال‬‫توصیف‬‫کننده‬static، ‫روش‬‫ایجاد‬‫متد‬‫را‬‫مشخص‬‫می‬‫کند‬‫و‬‫نشان‬‫می‬‫دهد‬‫که‬‫به‬‫محض‬‫اجرای‬،‫برنامه‬‫چنین‬‫متدی‬‫ساخته‬‫شده‬‫و‬‫قابل‬‫استفاده‬‫است‬. : ‫از‬ ‫عبارتند‬ ‫کننده‬ ‫توصیف‬ ‫نوع‬ ‫چهار‬static, private, protected, public ‫متد‬Main()‫همواره‬‫باید‬‫از‬‫نوع‬static‫باشد‬‫اگر‬‫توصیف‬‫کننده‬static‫را‬،‫ننویسید‬‫مترجم‬‫در‬‫ترجمه‬‫برنامه‬‫خطا‬‫می‬‫دهد‬.‫تمام‬‫متدهای‬‫آماده‬‫ای‬ ‫که‬‫تاکنون‬‫استفاده‬‫کرده‬‫اید‬‫نظیر‬ReadLine‫نیز‬‫از‬‫نوع‬‫استاتیک‬‫هستند‬‫که‬‫در‬‫کالس‬Console‫از‬‫قبل‬‫تعریف‬‫شده‬‫اند‬.‫استفاده‬‫از‬‫متدهای‬static ‫ساده‬‫است‬. ‫توصیف‬‫کننده‬‫های‬‫دیگری‬‫نظیر‬private‫و‬protected‫وجود‬‫دارند‬‫که‬‫به‬‫وسیله‬‫ی‬‫آنها‬‫می‬‫توان‬‫محدوده‬‫دسترسی‬‫به‬‫متد‬‫را‬‫به‬‫یک‬‫کالس‬‫محدود‬ ‫کرد‬‫و‬‫یا‬‫با‬‫استفاده‬‫از‬‫توصیف‬‫کننده‬public‫محدوده‬‫دسترسی‬‫به‬‫یک‬‫متد‬‫را‬‫بسیار‬‫گسترده‬‫و‬‫در‬،‫واقع‬‫بدون‬‫محدودیت‬‫معین‬‫کرد‬. ‫متدهای‬ReadLine()‫و‬WriteLine()‫با‬‫توصیف‬‫کننده‬public‫تعریف‬‫شده‬‫اند‬‫و‬‫به‬‫همین‬‫دلیل‬‫است‬‫که‬‫می‬‫توانید‬‫در‬‫هر‬‫برنامه‬‫ای‬(‫هر‬‫کالسی‬)‫از‬ ‫آنها‬‫استفاده‬‫کنید‬. ‫اگر‬‫هیچ‬‫توصیف‬‫کننده‬‫ای‬‫برای‬‫تعیین‬‫محدوده‬‫دسترسی‬‫یک‬‫متد‬‫ذکر‬‫نشود‬،‫نوع‬‫دسترسی‬private‫به‬‫طور‬‫پیش‬‫فرض‬‫برای‬‫متد‬‫در‬‫نظر‬‫گرفته‬ ‫می‬‫شود‬)‫خصوصی‬ (. ‫اگر‬.‫نیست‬ ‫استفاده‬ ‫قابل‬ ‫آن‬ ‫از‬ ‫خارج‬ ‫و‬ ‫است‬ ‫استفاده‬ ‫قابل‬ ‫است‬ ‫شده‬ ‫تعریف‬ ‫آن‬ ‫در‬ ‫متد‬ ‫که‬ ‫کالسی‬ ‫همان‬ ‫در‬ ‫فقط‬ ‫متد‬ ‫این‬ ‫آنگاه‬ ‫باشد‬ ‫خصوصی‬ ‫متدی‬ (‫عمومی‬ ‫متدی‬ ‫اگر‬ ‫اما‬public.‫است‬ ‫استفاده‬ ‫قابل‬ ‫نیز‬ ‫ها‬ ‫کالس‬ ‫بقیه‬ ‫در‬ ‫باشد‬ ) ‫مقدار‬‫خروجی‬‫یا‬‫نوع‬‫داده‬‫برگشتی‬‫متد‬:(Return type) ‫در‬‫خط‬‫عنوان‬،‫متد‬‫پس‬‫از‬‫توصیف‬‫کننده‬،‫ها‬‫مقدار‬‫خروجی‬‫یا‬‫نوع‬‫داده‬‫برگشتی‬‫متد‬‫مشخص‬‫شود‬ ‫می‬.‫منظور‬‫از‬،‫مقدارخروجی‬‫آنچه‬‫که‬‫روی‬ ‫صفحه‬‫نمایش‬‫چاپ‬‫می‬‫شود‬‫نیست‬‫بلکه‬‫مقداری‬‫است‬‫که‬‫از‬‫طریق‬‫متد‬ ‫اجرای‬‫قابل‬‫دریافت‬‫است‬‫و‬‫می‬‫توان‬‫آن‬‫را‬‫در‬‫یک‬‫متغیر‬‫ذخیره‬‫کرد‬. ‫مانند‬ReadLine‫خروجی‬ ‫که‬string‫م‬ ‫بعضی‬ ‫اما‬ ‫دارد‬‫ت‬‫متد‬ ‫مانند‬ ‫ندارند‬ ‫خروجی‬ ‫دها‬writeLine‫نوع‬ ‫از‬ ‫آن‬ ‫خروجی‬ ‫که‬void‫خروجی‬ ‫معموال‬ ‫باشد‬ ‫می‬ ‫متد‬Main()‫نیز‬void‫نوع‬ ‫از‬ ‫اما‬ ‫باشد‬ ‫می‬int‫ه‬.‫باشد‬ ‫تواند‬ ‫می‬ ‫م‬ )‫مثال‬ )‫نکته‬‫ممکن‬‫است‬‫یک‬،‫متد‬‫مقدار‬‫خروجی‬‫و‬‫یا‬‫مقدار‬‫ورودی‬‫نداشته‬‫باشد‬ ‫نام‬‫متد‬: static int test(float x, byte y) { // ‫دستورات‬ }
  • 16. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 16 ‫در‬‫خط‬‫عنوان‬،‫متد‬‫پس‬‫از‬‫تعیین‬‫نوع‬،‫برگشتی‬‫باید‬‫نام‬‫متد‬‫را‬‫تعیین‬‫کنیم‬.‫در‬‫نام‬‫گذاری‬‫متد‬‫باید‬‫مانند‬‫نام‬،‫متغیرها‬‫اصول‬‫نام‬‫گذاری‬‫شناسه‬‫ها‬‫را‬ ‫رعایت‬‫کنیم‬.ً‫ال‬‫معمو‬‫نام‬‫متد‬‫به‬‫صورت‬‫یک‬‫فعل‬‫امری‬‫نام‬‫گذاری‬‫می‬‫شود‬.‫این‬‫نام‬‫بهتر‬‫است‬‫بیان‬‫کننده‬‫نوع‬‫کاری‬‫باشد‬‫که‬،‫متد‬‫قصد‬‫انجام‬‫آن‬‫را‬ ‫دارد‬.‫برای‬‫مثال‬‫متد‬Clear‫برای‬‫پاک‬‫کردن‬‫صفحه‬‫نمایش‬‫و‬‫متد‬Write‫برای‬‫نوشتن‬‫روی‬‫صفحه‬‫نمایش‬‫است‬. ‫لیست‬‫پارامترهای‬‫ارسال‬‫ی‬ ‫در‬‫خط‬‫عنوان‬،‫متد‬‫پس‬‫از‬‫تعیین‬،‫نام‬‫باید‬‫پارامترها‬‫یا‬‫داده‬‫هایی‬‫که‬‫از‬‫طرف‬‫برنامه‬‫به‬‫متد‬‫داده‬‫می‬‫شود‬(ً‫ا‬‫اصطالح‬‫به‬‫متد‬‫ارسال‬‫می‬‫شود‬)‫را‬ ‫مشخص‬‫کنیم‬.ً‫ال‬‫مث‬‫برای‬‫متد‬Write‫پارامتر‬‫ورودی‬‫می‬‫تواند‬‫یک‬‫رشته‬‫باشد‬‫که‬‫باید‬‫روی‬‫صفحه‬‫کنسول‬‫نمایش‬‫داده‬‫شود‬.‫بعضی‬‫از‬‫متدها‬‫نیز‬ ‫پارامتر‬‫ورودی‬‫ندارند‬‫مانند‬‫متد‬Readline() ‫نکته‬‫مانند‬ ‫نمود‬ ‫استفاده‬ ‫مختلف‬ ‫های‬ ‫شکل‬ ‫به‬ ‫توان‬ ‫می‬ ‫را‬ ‫ها‬ ‫متد‬ ‫بعضی‬ :write‫به‬ ‫توان‬ ‫می‬ ‫که‬18‫شکل‬(+17 overloads‫نمود‬ ‫فراخوانی‬ ‫را‬ ‫آن‬ ) ‫مثال‬ Console.Write(); Console.Write(12); Console.Write("test"); Console.Write('a'); ‫روش‬‫استفاده‬‫یا‬( : ‫متد‬ ‫فراخوانی‬Method call) ‫چنانچه‬‫متدی‬‫از‬‫نوع‬‫استاتیک‬‫باشد‬‫فراخوانی‬‫آن‬‫بسیار‬‫ساده‬‫است‬‫باید‬ ‫(البته‬‫خط‬‫عنوان‬‫آن‬‫را‬‫بدانیم‬)‫پس‬‫از‬‫اطالع‬‫از‬‫عنوان‬،‫متد‬‫کافی‬‫است‬ ‫فضای‬‫نامی‬‫و‬‫نام‬‫کالس‬‫را‬‫قبل‬‫از‬‫نام‬‫متد‬‫ذکر‬‫کنید‬.‫این‬‫سه‬‫قسمت‬‫با‬‫عالمت‬‫نقطه‬‫از‬‫یکدیگر‬‫جدا‬‫می‬‫شوند‬.‫اگر‬‫متد‬‫دارای‬‫پارامتراست‬‫باید‬‫مقدار‬ ‫پارامترها‬‫را‬‫نیز‬‫در‬‫داخل‬‫پرانتز‬‫معین‬‫کنید‬‫و‬‫در‬‫انتها‬‫عالمت‬‫نقطه‬‫ویرگول‬‫را‬‫بنویسید‬. ;‫نامی‬ ‫فضای‬ . ‫کالس‬ ‫نام‬ . ‫متد‬ ‫نام‬ )‫پارامترها‬ ‫(مقدار‬ ‫مثال‬1: public static string ReadLine( ); : ‫متد‬ ‫نام‬ReadLine:‫کننده‬ ‫توصیف‬public static:‫خروجی‬ ‫نوع‬string: )‫(ها‬ ‫ورودی‬‫ندارد‬ : ‫فراخوانی‬ ‫طریقه‬ string userName = System.Console.ReadLine( ); Console.WriteLine(System.Console.ReadLine( )); ‫مثال‬2:(2 overloads) public static void Beep(int frequency, int duration); public static void Beep(); : ‫متد‬ ‫نام‬Beep: ‫کننده‬ ‫توصیف‬Public static :‫خروجی‬ ‫نوع‬: )‫(ها‬ ‫ورودی‬ ‫ندارد‬frequency, duration)‫نمود‬ ‫استفاده‬ ‫هم‬ ‫ورودی‬ ‫بدون‬ ‫توان‬ ‫می‬ ‫(البته‬ : ‫فراخوانی‬ ‫طریقه‬ Console.Beep(); Console.Beep(1700,1000); )‫سوال‬‫ننوشت؟‬ ‫متد‬ ‫یک‬ ‫فراخوانی‬ ‫هنگام‬ ‫را‬ ‫نامی‬ ‫فضای‬ ‫توان‬ ‫می‬ ‫صورت‬ ‫چه‬ ‫در‬
  • 17. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 17 ‫چهارم‬ ‫فصل‬:‫کار‬‫با‬‫متدها‬‫و‬‫کالس‬‫های‬‫آماده‬ ‫از‬ ‫تعدادی‬ ‫نیز‬ ‫قبال‬ .‫کرد‬ ‫استفاده‬ ‫آنها‬ ‫از‬ ‫توان‬ ‫می‬ ‫که‬ ‫دارد‬ ‫وجود‬ ‫آماده‬ ‫قبل‬ ‫از‬ ‫متد‬ ‫و‬ ‫کالس‬ ‫زیادی‬ ‫تعداد‬ ‫شارپ‬ ‫سی‬ ‫سازی‬ ‫برنامه‬ ‫زبان‬ ‫در‬‫ه‬ ‫کالس‬‫و‬ ‫ا‬ ‫ب‬ ‫را‬ ‫آماده‬ ‫های‬ ‫متد‬‫کالس‬ ‫مانند‬ .‫اید‬ ‫گرفته‬ ‫کار‬Console‫متد‬ ‫یا‬WriteLine‫غیره‬ ‫و‬‫کتابخانه‬ ‫در‬ ..Net Framework‫آماده‬ ‫متد‬ ‫و‬ ‫کالس‬ ‫زیادی‬ ‫تعداد‬ .‫کنیم‬ ‫می‬ ‫معرفی‬ ‫را‬ ‫آماده‬ ‫کالس‬ ‫سه‬ ‫فصل‬ ‫این‬ ‫در‬ .‫دارد‬ ‫وجود‬ ‫کالس‬Math ‫نام‬ ‫فضای‬ ‫در‬ ‫کالس‬ ‫این‬System‫دارد‬ ‫قرار‬.‫برای‬‫انجام‬‫محاسبات‬‫ریاضی‬‫عالوه‬‫بر‬‫چهار‬‫عمل‬،‫اصلی‬‫نیاز‬‫به‬‫عملگرهای‬‫دیگری‬‫نظیر‬‫و‬ ‫توان‬‫یا‬‫عمل‬ ‫جذر‬‫و‬‫غیره‬‫می‬‫باشد‬‫کالس‬ ‫های‬ ‫متد‬ ‫از‬ ‫توان‬ ‫می‬ ‫که‬Math.‫نمود‬ ‫استفاده‬ ‫این‬‫توابع‬‫به‬‫صورت‬‫متدهای‬‫استاتیک‬‫در‬‫کالس‬Math‫تعریف‬‫شده‬.‫اند‬‫به‬‫محض‬‫نوشتن‬‫نام‬‫کالس‬Math‫و‬‫عالمت‬،‫نقطه‬‫لیستی‬‫از‬‫متدهای‬‫کالس‬ Math‫به‬‫وسیله‬‫ی‬IntelliSense‫نشان‬‫داده‬‫می‬‫شود‬ ‫متد‬Pow() ‫ورودی‬‫های‬‫این‬،‫متد‬‫دو‬‫عدد‬x‫و‬y‫از‬‫نوع‬‫اعشاری‬‫با‬‫دقت‬‫باال‬‫است‬‫متد‬ ‫خروجی‬ .‫نیز‬‫یک‬‫اعشاری‬ ‫عدد‬‫دقت‬‫باشد‬ ‫می‬ ‫باال‬‫که‬‫حاصل‬x‫به‬‫توان‬y ‫است‬. ‫مثال‬1:25 double number = Math. Pow (5, 2); Console. WriteLine (number); ‫مثال‬2: Console. WriteLine (Math.Pow (5, 2)(; ‫مثال‬3: Math.Pow (5, 2); ‫دستور‬ ‫این‬5‫توان‬ ‫به‬2.‫کند‬ ‫نمی‬ ‫استفاده‬ ‫آن‬ ‫خروجی‬ ‫از‬ ‫اما‬ ‫کند‬ ‫می‬ ‫محاسبه‬ ‫را‬ )‫نکته‬‫نام‬ ‫به‬ ‫ثابتی‬ ‫کالس‬ ‫این‬ ‫در‬PI‫آن‬ ‫مقدار‬ ‫که‬ ‫دارد‬ ‫وجود‬3.14159265358979323846‫به‬ ‫ای‬ ‫دایره‬ ‫مساحت‬ ‫محاسبه‬ ‫برای‬ ‫مثال‬ .‫باشد‬ ‫می‬ ‫شعاع‬5.3:‫نویسیم‬ ‫می‬ double a = Math.PI * Math.Pow(5.3, 2); :‫رادیان‬ ‫به‬ ‫درجه‬ ‫تبدیل‬ ‫فرمول‬‫رادیان‬)/180=‫درجه‬*PI) ‫س‬‫زاویه‬ ‫سینوس‬ )‫وال‬‫ی‬30‫کنید؟‬ ‫محاسبه‬ ‫شارپ‬ ‫سی‬ ‫با‬ ‫را‬ ‫درجه‬ )‫نکته‬Math.PI.‫متد‬ ‫یک‬ ‫نه‬ ‫است‬ ‫ثابت‬ ‫یک‬ for (int i = 0; i < 10; i++) Console.WriteLine(Math.Pow(2, i));
  • 18. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 18 Console.WriteLine(Math.Max(100.8, 100.81)); //100.81 Console.WriteLine(Math.Max(-25, -20)); //-20 Console.WriteLine(Math.Min(10, 10)); //10 Console.WriteLine(Math.Min(-100, -200)); //-200 Console.WriteLine(Math.Pow(3, 3)); //27 Console.WriteLine(Math.Pow(-2, 3));//-8 Console.WriteLine(Math.Round(18.6));//19 Console.WriteLine(Math.Round(18.5)); //18 Console.WriteLine(Math.Round(18.55));//19 Console.WriteLine(Math.Sqrt(225)); //15 Console.WriteLine(Math.Sqrt(200)); //14.142135623731 Console.WriteLine(Math.Truncate(70.83)); //70 Console.WriteLine(Math.Truncate(-8.54)); //-8 Console.WriteLine(Math.Abs(70.83)); //70.83 Console.WriteLine(Math.Abs(-70.83)); //70.83 ‫چیست؟‬ ‫زیر‬ ‫کدهای‬ ‫قطعه‬ ‫خروجی‬ A) Console.Write(Math.Round(11.5));  12 B) Console.Write(Math.Truncate(34.765)); C) Console.Write(Math.Sqrt(64)); D) Console.Write(Math.Log(25,5)); E) Console.Write(Math.Max(Math.Pow(2,3),Math.Pow(2,4))); int[] arr = { 25, 13, 32, 11, 17, 8, 21, 14, 19, 14 }; int min=arr[0]; // ‫مقدار‬ ‫دهی‬ ‫با‬ ‫عنصر‬ ‫اول‬ ‫آرایه‬ foreach (int x in arr) min = Math.Min(min, x); Console.WriteLine(min);
  • 19. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 19 ‫کالس‬tringS: ‫همان‬‫طور‬‫که‬‫در‬‫برنامه‬‫می‬‫توان‬‫متغیری‬‫برای‬‫نگهداری‬‫داده‬‫های‬‫عددی‬‫تعریف‬،‫کرد‬‫داده‬ ‫برای‬‫های‬‫رشته‬‫ای‬‫نیز‬‫می‬‫توان‬‫متغیری‬‫از‬‫نوع‬string ‫تعریف‬‫کرد‬.‫این‬‫نوع‬‫داده‬‫در‬‫واقع‬‫کالس‬ ‫یک‬‫است‬‫و‬‫متغیری‬‫که‬‫از‬‫این‬‫نوع‬‫تعریف‬‫می‬‫شود‬‫اشاره‬‫به‬‫ای‬ ‫آرایه‬‫از‬‫کاراکترها‬‫می‬‫کند‬. Strintg st="Computer"; Console.write(st[3]); // p .‫باشیم‬ ‫داشته‬ ‫دسترسی‬ ‫رشته‬ ‫یک‬ ‫کاراکترهای‬ ‫به‬ ‫توانیم‬ ‫می‬St[0]  'C' ‫نکته‬:‫تغییر‬‫ناپذیری‬‫یک‬‫رشته‬:‫پس‬‫از‬‫اینکه‬‫یک‬‫رشته‬‫در‬‫حافظه‬‫ایجاد‬،‫شد‬‫آن‬ ‫محتویات‬‫قابل‬‫تغییر‬.‫نیست‬‫به‬‫عبارت‬‫دیگر‬‫یک‬‫رشته‬‫پس‬‫از‬،‫ایجاد‬ ‫تغییر‬(‫ناپذیر‬Immutable).‫است‬‫این‬ ‫دلیل‬‫است‬‫که‬‫هر‬‫بار‬‫که‬‫رشته‬ ‫متغیر‬‫ای‬‫مقدار‬‫دیگری‬‫می‬‫گیرد‬‫مانند‬‫این‬‫است‬‫که‬‫دوباره‬‫تعریف‬‫شده‬‫است‬ ‫نمی‬ ‫پس‬‫یک‬ ‫توانیم‬‫حرف‬‫از‬‫آن‬‫را‬‫تغییر‬‫دهیم‬.‫دستور‬ ‫پس‬st[1]='d'; //error‫دستور‬ ‫اما‬ ‫دارد‬ ‫خطا‬st="test".‫ندارد‬ ‫خطا‬ ‫این‬‫متد‬‫ها‬‫روی‬‫خود‬‫رشته‬‫تأثیر‬‫نمی‬‫گذارند‬‫بلکه‬‫یک‬‫رشته‬‫دیگر‬‫بر‬‫می‬.‫گردانند‬‫محتوای‬ ‫بنابراین‬‫متغیر‬‫رشته‬‫ای‬‫را‬‫تغییر‬‫نمی‬‫دهند‬. : ‫مثال‬ string s = "This is a test"; Console.WriteLine(s.ToLower()); //this is a test Console.WriteLine(s.ToUpper()); //THIS IS A TEST Console.WriteLine(s.Insert(0, "Note,")); //Note,This is a test Console.WriteLine(s.Length); //14 Console.WriteLine(s.IndexOf("i")); //2 Console.WriteLine(s.IndexOf("I")); //-1 Console.WriteLine(s.Replace("This","it"));//it is a test Console.WriteLine(s.Replace("This is", "we have"));//we have a test Console.WriteLine(s.CompareTo("This is a test")); //0 Console.WriteLine(s.CompareTo("A")); //1 C o m p u t e r p.CompareTo(s)  p>s  1 p < s  -1 p == s  0 ‫به‬ ‫حرف‬ ‫مقایسه‬ ‫برای‬‫می‬ ‫مقایسه‬ ‫رشته‬ ‫دو‬ ‫حرف‬ ‫اعداد‬ ‫که‬ ‫است‬ ‫صورت‬ ‫این‬ ‫به‬ ‫مقایسه‬ ‫ترتیب‬ ‫و‬ ‫شود‬ ‫نسبت‬ ‫کوچک‬ ‫حروف‬ ‫و‬ ‫هستند‬ ‫حروف‬ ‫از‬ ‫کوچکتر‬ .‫هستند‬ ‫کوچکتر‬ ،‫بزرگ‬ ‫حروف‬ ‫به‬ "A" > "a" "ABC">"ali"
  • 20. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 20 Console.WriteLine(s.CompareTo("U")); //-1 )‫سوال‬‫کنید‬ ‫تعیین‬ ‫را‬ ‫زیر‬ ‫های‬ ‫کد‬ ‫قطعه‬ ‫خروجی‬ ،‫زیر‬ ‫متغیر‬ ‫اعالن‬ ‫به‬ ‫توجه‬ ‫با‬‫؟‬ string s = "I am a student."; A) Console.Write(s[5]); B) Console.Write(s.Replace("a","A"));  I Am A student. C) Console.Write(s.IndexOf(" ")); D) Console.WriteLine(s.CompareTo("i am a student")); E) Console.Write(s.Insert(7,"computer ")); ‫کالس‬Array:‫ا‬‫د‬ ‫نیز‬ ‫کالس‬ ‫ین‬‫ا‬‫متدهای‬ ‫رای‬‫خاصی‬‫متدهای‬ ‫آرایه‬ ‫در‬ ‫جستجو‬ ‫و‬ ‫سازی‬ ‫مرتب‬ ‫برای‬ ‫کالس‬ ‫این‬ .‫باشد‬ ‫می‬ ‫ها‬ ‫آرایه‬ ‫روی‬ ‫بر‬ ‫کار‬ ‫برای‬ :‫است‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫متدها‬ ‫این‬ ‫از‬ ‫برخی‬ .‫دارد‬ ‫مناسب‬ string[] st = new string[6]; st[0] = "reza"; st[1] = "ali";st[2] = "amir"; Null Null Null Null Null Null 0 1 2 3 4 5 Reza ali amir karim hadi amir 0 1 2 3 4 5
  • 21. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 21 st[3] = "karim"; st[4] = "hadi"; st[5] = "amir"; int x = Array.IndexOf(st, "amir"); Console.WriteLine(x);//2 x = Array.LastIndexOf(st, "amir"); Console.WriteLine(x);//5 x = Array.BinarySearch(st, "karim"); Console.WriteLine(x);//-1 Array.Sort(st); x = Array.BinarySearch(st, "karim"); Console.WriteLine(x); //4 Array.Reverse(st); string[] ss = new string[4]; Array.Copy(st, ss,4); ss Array.Clear(st,1,2); )‫تست‬ 1-‫شمارشی‬ ‫داده‬ ‫اگر‬value‫چیست؟‬ ‫زیر‬ ‫کد‬ ‫قطعه‬ ‫خروجی‬ ،‫باشد‬ ‫شده‬ ‫تعریف‬ ‫زیر‬ ‫صورت‬ ‫به‬ )‫الف‬abcd)‫ب‬0123 ‫شود‬ ‫نمی‬ ‫چاپ‬ ‫چیزی‬ )‫د‬ ‫شود‬ ‫می‬ ‫صادر‬ ‫خطا‬ ‫پیغام‬ )‫ج‬ 2-‫متغیر‬ ‫و‬ ‫باشیم‬ ‫داشته‬ ‫را‬ ‫روبرو‬ ‫کد‬ ‫قطعه‬ ‫اگر‬x‫نوع‬ ‫از‬level‫است؟‬ ‫نادرست‬ ‫گزینه‬ ‫کدام‬ .‫باشد‬ ‫شده‬ ‫تعریف‬ )‫الف‬x=level.a;)‫ب‬x=(level)0;)‫ج‬x=0;‫ج‬ ‫و‬ ‫ب‬ )‫د‬ 3-‫دارد؟‬ ‫خطا‬ ‫دستور‬ ‫کدام‬ ‫زیر‬ ‫کد‬ ‫قطعه‬ ‫در‬ )‫الف‬1)‫ب‬2)‫ج‬3)‫د‬4 4-‫متغیر‬ ‫مقدار‬a‫است‬ ‫گزینه‬ ‫کدام‬‫؟‬ )‫الف‬1)‫ب‬-1)‫ج‬0‫خطا‬ )‫د‬ ali amir amir hadi karim reza 0 1 2 3 4 5 reza Karim Hadi Amir Amir ali 0 1 2 3 4 5 reza Karim Hadi Amir 0 1 2 3 reza null null Amir Amir ali 0 1 2 3 4 5 public enum value { a, b, c, d }; value test; for (test = value.d; test <= value.a; test++) Console.Write(test); public enum level { a, b, c }; const byte a = 25; //1 a++; //2 byte r = a + 10; //3 const byte A = 350 / 10; //4 string s = "CSHARP"; int a = s.IndexOf("x");
  • 22. ‫زاهدی‬-‫محمدی‬ ‫سازی‬ ‫برنامه‬ ‫جزوه‬2 22 ‫استودیو‬ ‫ویژوال‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫ویندوزی‬ ‫های‬ ‫برنامه‬ ‫ایجاد‬ ‫متد‬ ‫از‬ ‫برنامه‬ ‫اجرای‬ ‫کنسولی‬ ‫های‬ ‫برنامه‬ ‫در‬Main‫شوند‬ ‫می‬ ‫اجرا‬ ‫خط‬ ‫به‬ ‫خط‬ ‫دستورات‬ ‫و‬ ‫شود‬ ‫می‬ ‫شروع‬‫به‬ ‫کنسولی‬ ‫های‬ ‫برنامه‬ ‫اجرای‬ ‫روند‬ . :‫است‬ ‫زیر‬ ‫صورت‬ ‫های‬ ‫برنامه‬ ‫در‬‫ویندوزی‬‫متد‬ ‫از‬ ‫برنامه‬ ‫اجرای‬ ‫نیز‬Main‫رویداد‬ ‫یا‬ ‫اتفاق‬ ‫تا‬ ‫ماند‬ ‫می‬ ‫منتظر‬ ‫برنامه‬ ‫که‬ ‫تفاوت‬ ‫این‬ ‫با‬ ‫شود‬ ‫می‬ ‫شروع‬‫ی‬(Event‫رخ‬ ) ‫دهد‬. .‫است‬ ‫داده‬ ‫رخ‬ ‫اتفاق‬ ‫یک‬ ‫که‬ ‫دهد‬ ‫نشان‬ ‫تا‬ ‫شود‬ ‫می‬ ‫داده‬ ‫برنامه‬ ‫به‬ ‫عامل‬ ‫سیستم‬ ‫طرف‬ ‫از‬ ‫که‬ ‫است‬ ‫اطالع‬ ‫یک‬ ‫رویداد‬ ‫کلید‬ ‫و‬ ‫شود‬ ‫وارد‬ ‫ها‬ ‫داده‬ ‫تا‬ ‫شود‬ ‫می‬ ‫متوقف‬ ‫برنامه‬ ‫اجرا‬ ،‫رسیم‬ ‫می‬ ‫داده‬ ‫دریافت‬ ‫دستور‬ ‫به‬ ‫وقتی‬ ‫کنسولی‬ ‫های‬ ‫برنامه‬ ‫در‬Enter.‫شود‬ ‫زده‬ ‫یک‬‫تفاوت‬‫دیگر‬‫بین‬‫برنامه‬‫ویندوزی‬‫و‬‫کنسولی‬‫این‬‫است‬،‫که‬‫برنامه‬‫های‬‫ویندوزی‬‫پس‬‫واکنش‬ ‫از‬‫به‬‫رویدادها‬‫و‬‫انجام‬‫عملیات‬،‫مربوطه‬ً‫ا‬‫مجدد‬‫در‬ ‫حالت‬‫انتظار‬‫برای‬‫رویداد‬‫بعدی‬‫به‬‫سر‬‫می‬‫تا‬ ‫برند‬‫در‬‫نهایت‬‫کاربر‬‫از‬‫برنامه‬‫خارج‬‫گردد‬. ‫به‬‫این‬‫ترتیب‬‫هنگامی‬‫که‬‫کاربر‬‫بر‬‫روی‬‫کلیدی‬‫با‬‫ماوس‬‫کلیک‬‫می‬،‫کند‬‫این‬‫رویداد‬‫از‬‫سیستم‬ ‫طریق‬‫عامل‬‫شناسایی‬‫می‬‫شود‬‫و‬‫از‬‫طرف‬‫سیستم‬ ‫عامل‬‫یک‬‫پیام‬‫به‬‫برنامه‬‫فرستاده‬‫می‬‫شود‬‫و‬‫متد‬EH‫مربوط‬‫به‬‫آن‬‫رویداد‬‫که‬ً‫ال‬‫قب‬‫نوشته‬‫ایم‬‫به‬‫طور‬‫خودکار‬‫اجرا‬‫می‬.‫شود‬‫طبیعی‬‫است‬‫که‬‫اگر‬ ‫برنامه‬‫متدی‬ ‫فاقد‬‫برای‬‫یک‬‫رویداد‬،‫باشد‬‫هر‬‫چقدر‬‫که‬‫سیستم‬‫عامل‬‫پیام‬‫بفرستد‬‫برنامه‬‫در‬‫مقابل‬‫آن‬‫واکنشی‬‫نخواهد‬ ‫نشان‬‫داد‬. ‫متدها‬ ‫این‬ ‫به‬ ،‫شوند‬ ‫اجرا‬ ‫رویدادی‬ ‫هر‬ ‫دادن‬ ‫رخ‬ ‫ازای‬ ‫در‬ ‫که‬ ‫نویسد‬ ‫می‬ ‫متد‬ ‫تعداد‬ ‫نویس‬ ‫برنامه‬ ،‫ویندوزی‬ ‫های‬ ‫برنامه‬ ‫در‬ ‫پس‬Event Handler .‫شود‬ ‫می‬ ‫گفته‬ ‫متد‬ ‫که‬ ‫کنسولی‬ ‫های‬ ‫برنامه‬ ‫برخالف‬ ‫و‬ ‫دارد‬ ‫کاربر‬ ‫به‬ ‫بستگی‬ ‫نیز‬ ‫متدها‬ ‫اجرای‬ ‫ترتیب‬Main‫ه‬ ‫برنامه‬ ‫در‬ ‫شود‬ ‫می‬ ‫اجرا‬ ‫آخر‬ ‫تا‬ ‫اول‬ ‫از‬‫با‬ ‫ویندوزی‬ ‫ای‬ .‫شود‬ ‫می‬ ‫اجرا‬ ‫متد‬ ‫یک‬ ،‫دهد‬ ‫می‬ ‫انجام‬ ‫کاربر‬ ‫که‬ ‫عملی‬ ‫به‬ ‫توجه‬ ‫شکل‬‫کلی‬‫یک‬‫متد‬EH‫به‬‫صورت‬‫زیر‬: ‫است‬ void ‫متد‬ ‫پیام(نام‬ ‫فرستنده‬ ، ‫پیام‬ ‫)جزئیات‬ { ‫رویداد‬ ‫به‬ ‫واکنش‬ ‫دستورات‬ }