آموزش سیشارپ C# – بخش ۴۲
- مقدمه
تا کنون شما دیدید که چگونه مجموعهای از ارقام را در آرایهها ذخیره کنیم؛ به همین ترتیب نیز شما میتوانید رشتهها را در آرایههای خود ذخیره کنید. در این بخش ما کمی در رابطه با رشتهها بهبیان جزئیات بیشتری خواهیم پرداخت.
- بکارگیری رشتهها در آرایهها
با استفاده از پروژههای سابق، یک button به فرم خود اضافه کرده و مشخصه Text آن را به String Arrays تغییر دهید. روی آن دابل کلیک کنید تا وارد بخش کدنویسی آن شوید.
برای اینکه متنی را در آرایه ذخیره کنید، میبایست نوع آرایه را از جنس string انتخاب کنید؛ شکل کلی تعریف آرایه همچنان ثابت خواهد ماند.
string[] arrayStrings;
arrayStrings = new string[5];
بنابراین کد بالا آرایهای با ۵ خانه برای شما در حافظه رزرو خواهد کرد که بتواند مقادیری از اون متن در خود ذخیره کند.
اکنون این ۵ خانه را مقدار دهی میکنم؛ دقیقاً به همان شکلی که آرایههای int را مقدار دهی میکردیم:
arrayStrings[0] = “This”;
arrayStrings[1] = “is”;
arrayStrings[2] = “a”;
arrayStrings[3] = “string”;
arrayStrings[4] = “array”;
کدهای بالا را نیز به کدهای مربوط به button جدید خود اضافه کنید تا در ادامه حلقهی ForEach را برای شما معرفی کنیم.
حلقهای جدید با نام ForEach
همانند قبل، برای اینکه به تکتک خانههای موجود در آرایهی خود دسترسی پیدا کنید، میبایست که از یک حلقه for استفاده کرده تا در تکتک خانههای موجود گشت بزنید و مقادیر آنها را به خروجی بدهید. چیزی شبیه به کد زیر:
for (int i=0; i != (arrayStrings.Length); i++)
{
listBox1.Items.Add(arrayStrings[i]);
}
اما ما حلقهی دیگری داریم که تا کنون با آن آشنا نبودهاید که به آن حلقه foreach میگویند. این حلقه زمانی برای شما کاربرد خواهد داشت که در حال کار کردن با «مجموعه»ای از مقادیر هستید. نحوهکار کردن با این حلقه را برای شما توضیح خواهیم داد، اما فعلاً کد زیر را بجای کد بالا در ادامه کدهایتان قرار دهید:
foreach (string ArrayElement in arrayStrings)
{
listBox1.Items.Add(ArrayElement);
}
کد بالا که در Visual Studio کپی کردهاید، به کلمات کلیدی (Keywords) که با رنگ آبی مشخص میشوند دقت کنید که در کجاها قرار گرفتهاند. شما ابتدا با کلمه foreach شروع کرده و به همراه آن، یک جفت پرانتز باز-بسته در مقابل آن قرار داده و با اضافه کردن یک جفت براکت باز-بسته، محدود حلقه خود را مشخص میکنید.
به کد موجود در میان پرانتز دقت کنید؛
string ArrayElement in arrayStrings
در واقع کد بالا حاوی دو بخش است که ما آن را در یک بخش مینویسم. در قسمت اول، یعنی string ArrayElement، شما یک متغیر جدیدی از همان نوع (string) تعریف میکنید. این متغیر جدید، المانهای موجود در هر یک (معنی کلمه for each) از مکان موجود در آرایهی خود را در نزد خودش نگهداری میکنید. در قسمت دوم، مکانیست که شما به سیشارپ میگویید که نام آرایه/مجموعه شما چیست که پس از استفاده از کلمه کلیدی in، نام آن را مینویسید.
در واقع این حلقه در هر مرحله از اجرای خود، تکتک خانههای آرایه/مجموعه نامبرده شده را گشت میزند، آن را در ArrayElement ذخیره میکند و سپس آن را به listBox اضافه میکند. به عکس زیر هم دقت کنید که مفهوم حلقه foreach را برای شما سادهتر میکند:
نرمافزار خود را اجرا کنید؛ بر روی button جدید کلیک کرده، میبایست نتیجه مشابه زیر باشد:
جهت دریافت این بخش آموزشی بصورت یک فایل PDF، اینجا را کلیک کنید.
سلام
ممنون از آموزشتون
می شه بگید Regex چه کاری رو انجام می ده
و اینکه چطور در لیست باکس یه اینتر بزنیم؟
مثل همون \n یا endl در C++ منظورمه!
دوست عزیزم سلام،
ممنون از نظر لطفتون! Regex اصطلاحاً یک Regular Expression در زبانهای .NET میباشد که بیشتر برای stringها بکاربرده میشود و با تعیین یک الگوی خاصی، میتوانید کارهایی مثل پیدا کردن یک کارکتر یا کلمه خاص در یک متن بلند و … انجام دهید؛ کارها و ریزهکاریهای زیادی داره که جای بحثش اینجا نیست.
در رابطه با سوال دوم شما، دقیقاً متوجه منظورتون نشدم. ما اغلب استفاده ما از لیست باکس، نمایش یک سری اطلاعات بهصورت مرتب هستیم، حالا دقیقاً وارد سطر بعدی بشیم، منظور چیه؟ دستورهایی مثل /n و endl در زبانهای C/C++ برای کنسول استفاده میشوند که باید به سطر بعدی بروند.
موفق باشید!
ببینید می خوام کدی بنویسم که مثلا رشته ی :
Choose the word
رو بگیره و کلمه به کلمه زیر هم نشون بده
که بعد از زدن کلید اینجوری نشونش می ده:
Choose
the
word
حالا یه رشته دیگه وارد می کنم:
that has the same meaning
که بعد از زدن کلید چیزی که تو لیست باکس هست اینه:
Choose
the
word
that
has
the
same
meaning
ولی می خوام نتیجه این باشه:
Choose
the
word
that
has
the
same
meaning
بین دفعه ی اول و دوم یه اینتر بزنه، یه سطر خالی!
سلام دوست عزیز،
راحتترین راه که میشه چنین کاری کرد، بنظرم ابتدا رشته را از کاربر دریافت کنید و سپس آن را در یک List کلمه به کلمه ذخیره کنید و سپس شروع به نمایش تکتک عناصر موجود در List اقدام کنید.
فاصله انداختن میان دو کلمه در یک ListBox که توسط مایکروسافت در Visual Studio تعبیه شده امکانپذیر نیست؛ مگر اینکه یک Item خالی رو Add کنید که اینگار فاصله افتاده. شما باید بگردید به دنبال یک Component که نیاز شما را در لیستباکس برطرف میکنه.
امیدوارم که کمکی کرده باشم.
موفق باشید!
خیلی خیلی ممنون
سلام
می خواستم بدونم اگه یه برنامه سی شارپ را بخواهیم روی کامپیوترها جابجا کنیم کجا باید گپی بشه که بتونیم کدهاشم ببینیم. و کاملا اجرا بشه.
ممنون
سلام دوست عزیزم،
شما میتوانید فولدر مربوط به Project خودتون رو به کامپیوترهای دیگه انتقال بدید (که Visual Studio هم داشته باشند) تا شما بتوانید هم کدها رو ببینید و هم برنامهها را Compile کرده و اجرا نمایید.
دقت کنید که باید در کامپیوتر مقصد، نسخهی .NET Framework شما برابر (و بالاتر) نسخهای باشد که با آن نرمافزار خودتون رو نوشتید.
موفق باشید!
دوباره سلام
یه جمله رو مثل همونی که دفعه ی قبل گفتم که تو txtbox نشون دادم
حالا می خوام تو فرمم به treeviwe داشته یاشم و تیکه تیکه تو اون نشون بدم
این برنامه :
http://barnamenevis.org/showthread.php?324761-%D8%B3%D9%88%D8%A7%D9%84-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D8%AF%D8%B1%D8%AE%D8%AA-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE
رو دیدم ولی زیاد نتومستم ازش استفاده کنم
ممنون می شم راهنمایی کنید
سلام دوست عزیزم،
من مطلب قبلیتون رو راستش بخاطر ندارم؛ اما در رابطه با Treeview، شما میخواهید مثلاً درختهای دودویی درست کنید؟ اگر پاسختون مثبت هست، من تا حالا به چنین مواردی مواجه نشدم. اگر منظورتون چیز دیگهای بود من قطعاً در خدمت خواهم بود.
موفق باشید!
راستش من خیلی خیلی کم با سی شارپ کار کردم (در واقع تازه شروع کردم)
بخاطر همین جواب سوالاتم زیاد چیز عجیب غریبی نیست
این رو تو برنامه نویس دات آی آر دیدم مشکلم رو حل کرد:
Dim tv As New TreeNode
tv.Text = “ali”
tv.Name = “12”
TreeView1.Nodes.Add(tv)
خیلی خوشحالم که کسی هست که کمک کنه و به سوالاتم جواب بده
ممنون
سلام
یه رشته رو قسمت بندی کردم و به صورت درختی نشون دادم اینجوری:
ریشه
فرزند
فرزند
فرزند
….
حالا می خوام رشته ی بعدی رو که وارد می کنم بیاد اینو بررسی کنه
تا جایی که با قبلی مشترکه دیگه دوباره ننویسه و بیاد از ادامه قسمت بندی کنه، لینجوری:
ریشه
فرزند
فرزند فرزند
فرزند
….
یا مثلا:
ریشه
فرزند فرزند
فرزند
فرزند
….
می دونید چطوری می شه؟
http://venia.net84.net/up/4fac8fb3c9e1.png
سلام دوست عزیزم،
اگر منظور شما نمایش درختهای دودویی هست، متأسفانه خودم تا حالا با چنین موردی برخورد نکردم و تا حالا برای نحوه نمایش آنها فکر نکردهام.
موفق باشید!
سلام
PDF این قسمت را فراموش کردید قرار بدید .. همه PDF ها هستند الا این بخش ..
از آموزش های خوبتون بسیار ممنون .. موفق باشید
سلام
اماکنش هست این آموزش را به صورت PDF هم قرار دهید.
با تشکر
با سلام،
تا ساعات آینده قرار خواهد گرفت.
موفق باشید!
سلام
Jeff Mosawy چرا آموزش سی شارپ ادامه نمیدید؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
خیلی بده نصفه رهاش کردید
با سلام
سوال من ربطی به این مبحث نداره اما در تخصص شماست.
داخل form یک سری نقاط تصادفی با system.drowing ایجاد کردم.حالا میخوام فاصله این نقاط از هم و مختصاتشونو به دست بیارم.
میتونید کمکم کنید؟
سلام
خدا قوت من تازه آشنا شدم با گویا
بیصبرانه منتظر ادامش هستم.
با آرزوی موفقیت ضمن تشکر فراوان
سلام خسته نباشید واقعا ممنون از کارتون.
ببخشید آموزشهای قسمت ۴۳ تا ۴۸ رو قرار ندادید توی سایت؟
آخه فقط تکست هستن و نمیشه روی اونها کلیک کرد. آموزش این قسمت ها رو میخوام.مرسی
سلام این قسمت آموزش فوق العاده است چرا ادامه ندادید؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
من تماس گرفتم تلفنی از مسوول آموزش سی شارپ تشکر کنم گفتند نمیشه خودمون بهش میگیم
خواهش میکنم بقیه سر فصل ها روهم بنویسید.
نکنه مسوول این قسمت دیگه وجود نداره و رفته از این سایت
جوابببببببببببببببببببببب بدید
یه سایت خوب پیدا کردم واسه آموزش اونم نصفه است خب چرا؟؟؟ واقعا زشته آدم یه کار نصفه ول کنه
با تشکر
موفق باشید.
سلام با چه روشی میتوان سریعتر نرم افزار ساخت ایده ام شباهت به افیس دارد
سلام
لینک های آموزش قسمت ۴۳ تا ۴۸ مشکل داره.
لطفا بررسی بفرمائید.