زنگ سی‌شارپ – قسمت هجدهم

توضیحات تکمیلی و تمرین‌های ضروری در مورد آرایه یک بعدی و تمامی مباحثی که تاکنون مطرح شده است


مسعود درویشیان 33 دیدگاه سی شارپ Thursday, 6th December , 2012 52731 بازدید

در قسمت قبل با عمل‌گرهای منطقی و بیتی آشنا شدید. همچنین توضیحات مختصری در مورد آرایه یک بعدی داده شد. در این قسمت قصد داریم با مثال‌های زیادی از آرایه یک بعدی آشنا شویم. همچنین دستوراتی که تاکنون توضیح داده شده‌اند در حین انجام تمرین‌ها مرور خواهند شد.

زنگ سی‌شارپ - قسمت هجدهم

به مثال زیر توجه کنید:

using System;
class Example
{
    static void Main()
    {
        string[] daysOfWeek = new string[7];

        daysOfWeek[0] = "Sunday";
        daysOfWeek[1] = "Monday";
        daysOfWeek[2] = "Tuesday";
        daysOfWeek[3] = "Wednesday";
        daysOfWeek[4] = "Thursday";
        daysOfWeek[5] = "Friday";
        daysOfWeek[6] = "Saturday";

        while (true)
        {
            Console.Clear();
            Console.Write("Pick out a number bitween 1 and 7 or press q to quit: ");
            string input = Console.ReadLine();

            if (input == "q" || input == "Q")
                break; 

            int index = Convert.ToInt32(input);

            if (index >= 1 && index <= 7)
            {
                Console.WriteLine(daysOfWeek[index - 1]);
            }
            else
            {
                Console.WriteLine("Invalid input!");
            }

            Console.ReadLine();
        }
    }
}

در این مثال ابتدا روزهای هفته را در آرایه‌ای از جنس string ذخیره کرده‌ایم سپس در یک حلقه‌ی بی‌نهایت پیغامی را نمایش داده‌ایم تا کاربر با انتخاب یکی از اعداد بین 1 تا 7 روز متناظر با آن را مشاهده کند.

دلیل استفاده از حلقه‌ی بی‌نهایت در این‌جا این است که کاربر بعد از وارد کردن عدد و مشاهده روز متانظر با آن، بتواند مجدداً اعداد دیگری را نیز وارد کند و برای این‌که به اجرای برنامه خاتمه دهد کلید q را بفشارد تا برنامه از حلقه‌ی بی‌نهایت خارج شود. اجازه دهید اندکی دقیق‌تر به این برنامه نگاه کنیم، در حلقه‌ی بی‌نهایت، دستور ()Console.Clear مطالبی که در صفحه‌ی کنسول در حال نمایش هستند را پاک می‌کند. البته اطلاعاتی که در برنامه‌تان ذخیره می‌کنید توسط این دستور از بین نمی‌رود و در واقع این دستوری است برای از نو نویسی اطلاعات در صفحه‌ی کنسول.

در خطوط بعدی برنامه پیغامی به کاربر نمایش داده می‌شود تا عددی بین 1 تا 7 را انتخاب کند یا کلید q را برای خروج بفشارد. در ادامه ورودی از کاربر دریافت شده و توسط دستور if بررسی می‌شود که اگر کاربر حرف q یا Q را وارد کرده برنامه توسط دستور break از حلقه‌ی بی‌نهایت خارج شود در غیر این صورت ورودی به عدد صحیح تبدیل شده و مجدداً توسط دستور if مورد بررسی قرار می‌گیرد تا بین 1 و 7 باشد.

در صورت برقراری این شرط، [daysOfWeek[index – 1 آرایه نمایش داده می‌شود. به‌دلیل این‌که شمارش آرایه از صفر و عدد ورودی کاربر از 1 شروع می‌شود مقدار index را از عدد 1 کم کرده‌ایم.

به مثال بعدی توجه کنید:

using System;
class Example
{
    static void Main()
    {
        string[] names = new string[5];

        // Filling array
        for (int i = 0; i < 5; i++)
        {
            Console.Write("Enter name " + i + ": ");
            names[i] = Console.ReadLine();
        }

        Console.WriteLine();
        Console.WriteLine("Array's Data: ");

        // Displaying array's data
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine(names[i]);
        }
        Console.WriteLine();
    }
}

در این مثال ابتدا توسط حلقه‌ی for در هر بار مقداری از کاربر گرفته شده و درون خانه‌های آرایه قرار داده می‌شود. در حلقه‌ی for دوم اطلاعات ذخیره شده نمایش داده می‌شود.

در مثال بعد فرهنگ لغت کوچکی می‌سازیم:

using System;
class Example
{
    static void Main()
    {
        string[] words = new string[5];        
        string[] translations = new string[5];
        bool isFound;
        string input;

        words[0] = "book";
        translations[0] = "ketab";

        words[1] = "mobile";
        translations[1] = "telephone hamrah";

        words[2] = "mouse";
        translations[2] = "moosh";

        words[3] = "keyboard";
        translations[3] = "safhe kilid";

        words[4] = "speaker";
        translations[4] = "bolandgoo";

        while (true)
        {
            Console.Clear();
            Console.Write("Enter a word to translate or press q to quit: ");
            input = Console.ReadLine();

            if (input == "q" || input == "Q")
                break;

            isFound = false;
            for (int i = 0; i < words.Length; i++)
            {
                if (input == words[i])
                {
                    isFound = true;
                    Console.WriteLine(words[i] + " Means " + translations[i]);
                    break;
                }
            }

            if (!isFound)
            {
                Console.WriteLine("Not Found!");
            }
            Console.ReadLine();
        }
    }
}

در این مثال دو آرایه تعریف کرده‌ایم که اولی برای نگه‌داری کلمات انگلیسی و دومی برای نگه‌داری ترجمه‌ی معادل آن‌هاست. کلمه و ترجمه‌ی معادل آن در آرایه باید در index یکسانی باشند. به‌عنوان مثال اگر کلمه‌ی book در ایندکس صفر است، ترجمه‌ی آن نیز باید در ایندکس صفر باشد. سپس در یک حلقه‌ی بی‌نهایت پیغامی را نمایش داده‌ایم تا ورودی را از کاربر بگیریم. اگر کاربر حرف q یا Q را وارد کند برنامه از حلقه بی‌نهایت خارج شده و اجرا به پایان می‌رسد. در غیر این‌صورت توسط یک حلقه‌ی for تک تک خانه‌های آرایه words را بررسی می‌کنیم تا در صورت پیدا شدن کلمه وارد شده، ترجمه‌ی موبوط به‌آن نمایش داده شود. در این میان از یک متغیر بولین برای این‌که بدانیم کلمه وارد شده در فرهنگ لغت ما وجود دارد یا خیر، کمک گرفته‌ایم. همچنین عبارت words.Length بیان کننده‌ی طول خانه‌های آرایه words است.

در مثال‌های قبلی برای پر کردن خانه‌های آرایه از عبارت‌های جدا استفاده می‌کردیم:

arrays[0] = someValue;
arrays[1] = someValue;
.
.
.

در حالی‌که این روش صحیح است، روش ساده‌تری نیز وجود دارد که هم‌زمان با تعریف آرایه به آن مقدار می‌دهیم.

فرم کلی این روش به‌شکل زیر است:

type[] array-name = { val1, val2, val3, ..., valN };

به مثال زیر که از این روش استفاده شده و میانگین اعداد محاسبه می‌شود توجه کنید:

using System;
class Example
{
    static void Main()
    {
        int[] nums = { 22, 56, 78, 96, 32, 15, 4 };
        int average = 0;

        for (int i = 0; i < nums.Length; i++)
        {
            average = average + nums[i];
        }

        average = average / nums.Length;

        Console.WriteLine(average);
    }
}

در این موارد، سی‌شارپ به‌صورت خودکار اندازه آرایه را با توجه به مقادیری که شما معین کرده‌اید تعیین می‌کند.

رعایت مرز و حدود آرایه‌ها در سی‌شارپ اجباری است. اگر ظرفیت آرایه‌ای 10 است و شما تلاش کنید که تا 11 مقدار را در آن جای دهید با خطای IndexOutOfRangeException مواجه می‌شوید.

اگر سعی در اجرای برنامه زیر کنید خطای نام‌برده را دریافت خواهید کرد:

using System;
class Example
{
    static void Main()
    {
        int[] myArray = new int[10];

        for (int i = 0; i < 20; i++)
            myArray[i] = i;
    }
}

در این برنامه ظرفیت آرایه ما 10 است و ما در تلاش بودیم تا 20 مقدار را در این آرایه جای دهیم که با خطای IndexOutOfRangeException مواجه شدیم.

در مثال بعدی قصد داریم برنامه فرهنگ لغت را به روش دیگری بنویسیم:

using System;
class Example
{
    static void Main()
    {
        string input;
        bool isFound;
        string[] words = { 
                             "hello", "salam",
                             "example", "mesal",
                             "revolver", "7tir",
                             "doorway", "rahro"
                         };

        for (; ; )
        {
            Console.Clear();
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("Words: ");
            Console.ForegroundColor = ConsoleColor.White;
            for (int i = 0; i < words.Length; i += 2)
            {
                if (i == words.Length - 2)
                {
                    Console.Write(words[i]);
                    break;
                }
                else
                    Console.Write(words[i] + " -- ");
            }

            Console.WriteLine();
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.Write("You can pick out a word or press q to quit: ");
            input = Console.ReadLine();

            if (input == "q" || input == "Q" || input == "quit")
            {
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("Thank you for coming. We hope to see you again. Bye");
                break;
            }

            isFound = false;
            Console.ForegroundColor = ConsoleColor.Green;
            for (int i = 0; i < words.Length; i += 2)
            {
                if (input == words[i])
                {
                    isFound = true;
                    Console.WriteLine(words[i] + " Means " + words[i + 1]);
                    break;
                }
            }

            if (!isFound)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Not Found!");
            }

            Console.ReadLine();
        }
    }
}

روش انجام این مثال تا حد زیادی با روش قبل مشابه است. در این‌جا از (; ; ) for به‌عنوان حلقه‌ی بی‌نهایت استفاده کرده‌ایم. همچنین از دستور Console.ForegroundColor برای رنگ متون بهره برده‌ایم. تفاوت اصلی که مد نظر ما بود نحوه دیگر ایجاد آرایه و مقدار دهی به‌آن بود که در این مثال به‌کار بردیم.

در مثال بعدی قصد داریم درفترچه تلفن ساده و کوچکی بسازیم:

using System;
class Example
{
    static void Main()
    {
        string[] names = new string[10];
        long[] numbers = new long[10];
        int counter = 0;

        string[] menu = { 
                            "#### Simple Phonebook ####",
                            "",
                            "1. Add Contact",
                            "2. Search Contact",
                            "3. List All Contact",
                            "4. Exit",
                            "--------------------------"
                        };

        while (true)
        {
            Console.Clear();
            for (int i = 0; i < menu.Length; i++)
            {
                Console.WriteLine(menu[i]);
            }
            Console.Write("Pick out a number between 1 and 4: ");
            string userChoice = Console.ReadLine();

            switch (userChoice)
            {
                case "1":
                    Console.Write("Enter Name: ");
                    string name = Console.ReadLine();
                    Console.Write("Enter Number: ");
                    long number = Convert.ToInt64(Console.ReadLine());
                    names[counter] = name;
                    numbers[counter] = number;
                    counter++;
                    Console.WriteLine("Your Contact added succesfully.");
                    break;
                case "2":
                    Console.Write("Enter you contact name: ");
                    string nameForSearch = Console.ReadLine();
                    for (int i = 0; i < counter; i++)
                    {
                        if (nameForSearch == names[i])
                        {
                            Console.WriteLine("Name: {0} - Number: {1}", names[i], numbers[i]);
                            break;
                        }
                    }
                    break;
                case "3":
                    for (int i = 0; i < counter; i++)
                    {
                        Console.WriteLine("Name: {0} - Telephone: {1}", names[i], numbers[i]);
                    }
                    break;
                case "4":
                    Environment.Exit(0);
                    break;
                default:
                    Console.WriteLine("Invalid Choise");
                    break;
            }
            Console.ReadLine();
        }
    }
}

در این مثال از طریق دستور switch، حلقه‌ها و آرایه، دفترچه تلفنی ساده را برنامه‌نویسی کردیم. در این‌جا منوی برنامه را درون یک آرایه قرار داده‌ایم و از طریق حلقه‌ی for آن را به نمایش گذاشته‌ایم. درون حلقه‌ی بی‌نهایت از طریق دستور switch گزینه‌ای را که کاربر انتخاب کرده، گرفته شده و عملیات مربوط به هر مورد انجام می‌شود. دستور (Environment.Exit(0 موجب می‌شود برنامه شما در همان‌جا به پایان برسد.

مثال‌ها و تمرین‌هایی که در این قسمت انجام شد فوق‌العاده از اهمیت زیادی برای یادگیری سی‌شارپ برخوردار هستند. همچنین برای دنبال کردن ادامه‌ی مقالات زنگ سی‌شارپ نیاز است تا این مثال‌ها را بسیار تمرین کرده، درک کنید و بر آن‌ها مسلط شوید. پس خوب مطالب را برای خودتان تجزیه و تحلیل کنید و در صورت نامفهموم بودن هر مثال، سوال‌های خود را در قسمت نظرات بیان کنید تا در اسرع وقت توضیحات تکمیلی و راهنمایی برای فهم و درک بهتر مطالب به شما عزیزان داده شود.

تمرین

تمرین شماره 12: برنامه‌ی دفترچه تلفنی بنویسید که قابلیت اضافه کردن مخاطب جدید، جستجو بر اساس نام و شماره تلفن، ویرایش مخاطبان ذخیره شده و پاک کردن را داشته باشد.



نویسنده / مترجم : مسعود درویشیان

علاقه مند به موسیقی و برنامه نویسی بازی


33 دیدگاه برای این نوشته ثبت شده است


  1. مهدی
    9 December 2012

    دستتون درد نکنه آقای درویشان واقا عالی بود.من این ترم این درس رو دارم وخوشبختانه همه مطالبی رو که تو سرفصل ما بوده رو شما آموزش دادید واسه همین من هرهفته منتظر میمونم تا یه فصل جدید رو شروع کنید.آیا در مورد آرایه های دو بعدی هم آموزش میزارید؟
    راستی با این حد از آموزشها میشه یک پروژه کاربردی نوشت.




  2. none
    10 December 2012

    سلام. با تشکر از آموزش ها که واقعا خیلی عالیه.
    یه سوال؟
    اگه کسی روش استفاده از یه زبان رو بلد باشه ولی نتونه یه برنامه بنویسه یعنی طراحیش ضعیف باشه باید چیکار کنه؟ الگوریتم نویسی باید بخونه؟




    • مسعود درویشیان
      13 December 2012

      سلام. علاوه بر این‌که باید الگوریتم و فلوچارت رو بلد باشید باید خیلی تمرین کنید تا کاملاً به موضوع مسلط بشید. خودتون رو با مسائل مختلف درگیر کنید و سعی کنید واسه هر موضوع برنامه بنویسید.




  3. mmr
    11 December 2012

    سلام
    مهندس جان شما در تمرین 10 یک مستطیل تو پر رسم کردید
    اما من نتوانستم با حلقه ها یک مستطیل شبیه شکل زیر رسم کنم می شود کمکم کنید
    *******
    * *
    * *
    * *
    * *
    *******




    • mmr
      11 December 2012

      سلام
      شکل خوب رسم نشد
      اشکال قسمت دوم زیر سطر دوم است




      • مسعود درویشیان
        13 December 2012

        متوجه نشدم چه شکلی مد نظرتون هست.




  4. رامتین
    11 December 2012

    من این قسمت مقادیر بولین رو متوجه نشدم !
    منظور از isfound! چیه ؟




    • داوود
      12 December 2012

      سلام؛ ببین رامتین جان؛ جهت درک بهتر یک توضیح کوچولو میدم، امیدوارم متوجه بشید.
      شما در اینجا دو حالت بیشتر ندارید.
      1- کلمه ای که ترجمه ش هست.
      2- و یا کلمه ای ترجمه ش نیست.
      در حالت اول چون ترجمه ش پیدا شده پس عبارت منطقی ما که ابتدا false بوده، تغییر حالت میده و true میشه! دقت کنید که در این زمان معادل این عبارت isfound! برابر با false است و خب طبیعتا خط بعدش اجرا نمیشه؛ چرا؟ چون مشاهده می کنید که جواب ما در این لحظه false است و طبیعتاً اینجور مواقع وارد دستورات داخلی نمیشه.
      در حالت دوم کاربر کلمه ای رو وارد میکنه که ترجمه ش نیست.
      خب در این حالت و پس از طی مراحل فوق برنامه میرسه به خط 57 و قبل از عبارت isfound! بدون اینکه مقدار isfound رو به true تبدیل کنه؛ چون وارد عبارت شرطی if واقع در خط 38 نشده.
      خب حالا در اینجا نتیجه isfound! چی میشه؟ مسلما true میشه دیگه. میدونید که ! قبل از isfound به معنی مخالف بودن عبارت جلوش میشه.
      خب حالا وارد این دستور میشه و پیغام عدم پیدا شدن رو میده.
      امیدوارم خوب توضیح داده باشم.




  5. داوود
    25 December 2012

    با سلام؛
    برای حل این تمرین میشه بگید برای پاک کردن از چه منطقی استفاده کنیم؟
    یعنی همون خونه از آرایه رو پاک کنیم؟
    خب اونوقت مقدارش Null یا تهی میشه، اشکال نداره؟




    • مسعود درویشیان
      25 December 2012

      هدف ما هم همینه که اون خونه null یا تهی بشه…




  6. سارا
    10 January 2013

    سلام

    تو برنامه سوم توی این دستور :
    for (i=0 ; i<words.length ; i++) ; p

    نباید به جای word.length ، عدد 4 باشه ؟؟




    • مسعود درویشیان
      11 January 2013

      بله ۴ هم می‌شه
      words.length مشخص کننده‌ی طول آرایه‌ی words هست که طول این آرایه برابر با ۴ هست. پس هرکدوم رو بنویسید فرقی نمی‌کنه.




      • سارا
        11 January 2013

        درسته الان متوجه شدم که منظور از word.length دقیقاً چیه.
        خیلی خیلی ممنون :)




  7. فیروزه
    9 April 2013
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication3
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.Clear();
                string[] menu ={"## my phone book##",
                                "1.add contact",
                                "2.delete contact",
                                "3.update contact",
                                "4.search",
                                "5.list",
                                "6.Exit",
                               };
                string[] Names = new string[50];
                long[] telephons = new long[50];
    
                int count1 = 0;
                while (true)
                {
                    for (int i = 0; i &lt; menu.Length; i++)
                    {
                        Console.WriteLine(menu[i]);
                    }
                 
                    Console.WriteLine(&quot;pick out a number: &quot;);
                    string userChois = Console.ReadLine();
                    switch (userChois)
                    {
                        case&quot;1&quot;:
                            Console.Write(&quot; enter your contact name :&quot;);
                            string name=Console.ReadLine();
                            Console.Write(&quot; number:&quot; );
                            long number=Convert.ToInt64( Console.ReadLine());
                            Names[count1] = name;
                            telephons[count1] = number;
                            count1++;
                            Console.WriteLine(&quot;Your Contact added succesfully.&quot;);
                            break;
    
    
                        case&quot;2&quot;:
                                   int counter2= 0;
                                   Console.Write(&quot;  enter your contact name :&quot;);
                                    name = Console.ReadLine();
                               
                                    for (int i = 0; i &lt; Names.Length; i++)
                                    {
                                        if (name == Names[i])
                                        {
                                            Console.Write(&quot;name : &quot; + Names[i] + &quot; telephne : &quot; + telephons[i]);
                                            Console.WriteLine(&quot;  Are you sure for Delete this contant? Y or N&quot;);
                                            string userInput = Console.ReadLine();
                                            if (userInput == &quot;y&quot; || userInput == &quot;Y&quot;)
                                            {
    
                                                Names[i] = null;
                                                telephons[i] =0;
                                                Console.WriteLine(&quot; Your Contact deleted succesfully.&quot;);
                                                counter2++;
                                                break;
                                               
                                            }// end if2
                                            else
                                            {
                                                if (userInput == &quot;n&quot; || userInput == &quot;N&quot;)
                                                {
                                                    continue;
                                                }// end if3
                                                else
                                                {
                                                    Console.WriteLine(&quot; your input character is invalid!!&quot;);
                                                    break;
                                                }// end else3
                                            };//else2
    
                                        }// end if1
                                      
                                        
                                    };// end for
                                    if (counter2 == 0)
                                    {
                                        Console.WriteLine(&quot;your contact not available&quot;);
                                    }
                                    
                                    break;
                            //end case2
    
    
                        case&quot;3&quot;:
                              counter2 = 0;
                              Console.Write(&quot; enter your contact name :&quot;);
                              name=Console.ReadLine();
    
                            for (int i = 0; i &lt; Names.Length; i++)
                            {
                                if (name == Names[i])
                                {
                                    Console.Write(&quot;name : &quot; + Names[i] + &quot; telephne : &quot; + telephons[i]);
                                    Console.WriteLine(&quot; Are you sure for updaut this contant? Y or N&quot;);
                                    string userInput = Console.ReadLine();
                                    if (userInput==&quot;y&quot; || userInput==&quot;Y&quot;)
                                    {
                                        Console.Write(&quot; name :&quot;);
                                        name = Console.ReadLine();
                                        Console.Write(&quot; number:&quot;);
                                        number = Convert.ToInt64(Console.ReadLine());
                                        Names[i] = name;
                                        telephons[i] = number;
                                        counter2++;
                                        break;
                                  
                                    }
                                     else{ if (userInput == &quot;n&quot; || userInput == &quot;N&quot;)
                                             {
                                                 continue;
                                             }
                                          else {
                                              Console.WriteLine(&quot; your input character is invalid!!&quot;);
                                           
                                              break;
                                               }
                                    };
    
                                };
                                
                                
                            };
                            if (counter2 == 0)
                            {
                                Console.WriteLine(&quot;your contact not available&quot;);
                            }
                            break;
    
    
                        case &quot;4&quot;:
                            Console.Write(&quot;  enter your contact name :&quot;);
                            name=Console.ReadLine();
                            counter2 = 0;
                            
                                for (int i = 0; i &lt; Names.Length; i++)
                                {
                                    if (name == Names[i])
                                    {
                                        Console.WriteLine(&quot;name : &quot; + Names[i] + &quot; telephone: &quot; + telephons[i]);
                                        counter2++;
                                    }
                              
                                }
                                if (counter2 == 0)
                                {
                                    Console.WriteLine(&quot;your contact not available&quot;);
                                }
                           break;
    
    
                        case&quot;5&quot;:
                            for (int i = 0; i &lt; Names.Length; i++)
                            {
                                if (Names[i]!=null)
                                    Console.WriteLine(&quot;name : &quot; + Names[i] + &quot; telephone: &quot; + telephons[i]);
                              
                            }
    
                            break;
    
    
    
                        case&quot;6&quot;:
                            Environment.Exit(0);
    
                            break;
    
    
                        default:
    
                            Console.WriteLine(&quot;input number not exist&quot;);
                            break;
    
    
    
                            
                    }Console.ReadLine();
                    Console.Clear();
    
                 
                };
               
            }
        }
    }
    



  8. mohammad sadegh
    21 April 2013

    سلام-منظورم ازبرنامه سینوس x این هست
    -برنامه ای بنویسید که مقداره sin x را با استفاده از مجموع زیر محاسبه کند و نمایش دهد(مقداره x از کاربر دریافت شود)
    sin x = x – x3/6 + x5/120 تا اخر ادامه دارد
    x3 :منظورم ایکس به توان 3
    ممنون میشم اگه کمکم کنید.




    • مسعود درویشیان
      21 April 2013

      ار تابع ()Math.Sin واسه سینوس و ()Math.Pow واسه توان استفاده کنین




  9. pouya
    6 June 2013

    دوست عزیز اول تشکر میکنم بابت این آموزش هایی که میزاری. یه سوال هم داشتم .
    چرا تو مثال دفترچه تلفن وقتی از آخرین دستور Console.ReadLine(); استفاده نکنی اصلا مقادیر تو آرایه ذخیره نمیشه؟



    • اگه توجه کنی همه این اتفاقات توی یه حلقه (while(true می‌افته که اولش هم متد ()Console.Clear رو داریم. وقتی یه مخاطب رو اضافه می‌کنی توی آرایه ذخیره می‌شه و وقتی گزینه‌ی ۳ رو انتخاب می‌کنی تا لیست مخاطبات رو ببینی، اگه از ()Console.ReadLine استفاده نکنی برنامه به‌سرعت لیست مخاطب رو نشون‌ت می‌ده و بعدش سریع برمی‌گرده اول حلقه و ()Console.Clear رو اجرا می‌کنه و شما در واقع چیزی نمی‌بینی. ما اون آخر از ()Console.ReadLine استفاده می‌کنیم تا برنامه منتظر Enter کاربر بشه بعد دوباره برگرده اول حلقه (تا بتونی نتایج رو ببینی)




  10. Mersad
    6 August 2013

    سلام

    یه سوال داشتم
    در مثال اول ( مثال روز های هفته ) چرا با اجرای دستور break موجود در اولین if، کلا از برنامه خارج میشه؟
    منظورم اینکه که break در بلاک کد if قرار داره و با اجراش، باید از بلاک کد همون if خارج بشه و در while باقی بمونه، ولی اینجا کلا از بلاک کد While هم خارج میشه و چون بعدش کدی وجود نداره برنامه به پایان میرسه.
    اگه میشه راهنماییم کنید.



    • سلام. نکته‌اش همین‌جاست. break اصلا کاری به if نداره!‌ break باعث نمی‌شه از بلاک if خارج بشید. توی حلقه و switch هست که break باعث می‌شه از اون بلاک خارج بشید. پس وقتی از break استفاده می‌کنید باعث می‌شه از اولین حلقه‌ای که داخلش هستید خارج بشید.




  11. میلاد
    31 December 2013

    باتشکر از مقالات خیلی خوبتون خدا خیرتون بده ما کلاسم رفتیم چیزی یاد نگرفتیم مقالهاتون عالیه فقط کاشpdfهارو یکجا قرارمیدادین که کامل بخونیم حالا حجمش بالا هم باشه مهم نیست باتشکر از زحماتتون
    میلاد غریبه:)




  12. علی
    24 May 2014

    سلام
    باتشکر از آموزهای عالیتون
    یه سوال:

    توی حلقه ی for

    ( if (i == words.Length – 2

    این چه معنیی میده؟ کاربردش چیه؟



    • Lenght یه property هست که طول words رو توی خودش نگه می‌داره.




      • علی
        26 May 2014

        بله اونو میدونم…
        منظورم شرط if بود که استفاده کردین،
        اینشرط هست…دلیل استفادشو نمیفهمم
        ممنون از وقتی که میذارید




  13. mohsen
    24 July 2014

    با سلام و درود

    ببخشید یه سوال اگه ما 100 نفرو اد کرده باشیم و در قسمت جستجو دنبال یکی باشیم و اون نفر 2 باشه برنامه اونو اسه ما پیدا می کنه ولی باز ادامه می ده تا 100 تارو در حلقه فور ازمایش کنه باید چی کرد؟؟




  14. esysss
    20 August 2014

    حدود 5 ساعت نوشتنش طول کشید
    کارم درسته
    /*******************************
    * esysss *
    ******************************/
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApplication15
    {
    class Program
    {
    static void Main(string[] args)
    {

    string[] names = new string[1000];
    long[] numbers = new long[1000];
    int count = 0;
    bool dare = false;
    int save=10;

    esysss:
    {
    while (true)
    {
    Console.Clear();
    Console.ForegroundColor = ConsoleColor.Yellow;
    Console.WriteLine(“#### wellcome to this phonebook ####\n\n1- add a new contact\n2- search\n3- edit contacts\n4- delete contact\n5- show all contacts\n—————————–“);
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine(“please choose a number or for exit press q”);
    Console.Write(“enter it : “);
    string input = Console.ReadLine();
    if (input == “q” || input == “Q”)
    {
    Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine(“thanks for using\twe see you soon\nbye bye”);
    Console.ReadLine();
    Environment.Exit(0);

    }
    else if (input == “1”)
    {
    Console.ForegroundColor = ConsoleColor.DarkYellow;
    Console.Write(“enter name : “);
    names[count] = Console.ReadLine();
    Console.Write(“enter number :”);
    numbers[count] = Int64.Parse(Console.ReadLine());
    Console.WriteLine(“add success!!!!!!!!\nkiss me”);
    Console.ReadLine();
    count++;
    goto esysss;

    }
    else if (input == “2”)
    {
    search :
    Console.ForegroundColor = ConsoleColor.Blue;
    Console.WriteLine(“1- search by name \t2-search by number”);
    Console.Write(“enter the number : “);
    string a = Console.ReadLine();
    if (a == “1”)
    {
    Console.Write(“enter name : “);
    string name = Console.ReadLine();
    for (int i = 0; i < count; i++)
    {

    if (name == names[i])
    {
    Console.ForegroundColor = ConsoleColor.Gray;
    Console.WriteLine("here we gooo\nwe found it\n\nname : " + names[i] + " ——— number : " + numbers[i]);
    Console.ReadLine();
    dare = true;
    }

    }
    if (dare == false)
    {
    Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine("sorry\t your name is not here !!!");
    Console.ReadLine();
    goto esysss;
    }
    }
    else if (a == "2")
    {
    Console.Write("enter the number phone : ");
    string number = Console.ReadLine();

    for (int i = 0; i < count; i++)
    {
    if (number == numbers[i].ToString())
    {
    Console.ForegroundColor = ConsoleColor.White;
    Console.WriteLine("here we gooo\nwe found it\n\nname : " + names[i] + " ——— number : " + numbers[i]);
    Console.ReadLine();
    dare = true;
    }
    }
    if (dare == false)
    {
    Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine("sorry\t your number phone is not here");
    Console.ReadLine();

    }
    }
    else
    {
    Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine("please try again with real number");
    Console.ReadLine();
    goto search;
    }
    }
    else if (input == "3")
    {
    edit :
    Console.ForegroundColor = ConsoleColor.Gray;
    Console.WriteLine("1-edit name\t2-edit number");
    string s = Console.ReadLine();
    if (s == "1")
    {
    Console.Write("enter the last name : ");
    string nname = Console.ReadLine();
    for (int i = 0; i < count; i++)
    {
    if (nname == names[i])
    {
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine("name is :"+names[i]+" —–number is : "+numbers[i]);
    save = i;

    }
    }
    Console.ForegroundColor = ConsoleColor.DarkYellow;
    Console.Write("enter the new name : ");
    names[save] = Console.ReadLine();
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine("edit done!!!!!!");
    Console.ReadLine();
    goto esysss;
    }
    if (s == "2")
    {
    Console.ForegroundColor = ConsoleColor.White;
    Console.Write("enter your last number to edit :");
    string w = Console.ReadLine();
    for (int i = 0; i < count; i++)
    {
    if (w == numbers[i].ToString())
    {
    Console.ForegroundColor = ConsoleColor.White;
    Console.WriteLine("name : " + names[i] + "……….. number : " + numbers[i]);
    Console.ReadLine();
    save = i;
    }
    }
    Console.ForegroundColor = ConsoleColor.White;
    Console.Write("enter new number phone :");
    numbers[save] = Int64.Parse(Console.ReadLine());
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine("edit done!!!!!!!");
    Console.ReadLine();
    }
    else
    {
    Console.WriteLine("sorry try again!!!!!");
    Console.ReadLine();
    goto edit;
    }
    }
    else if (input == "4")
    {
    Console.ForegroundColor = ConsoleColor.White;
    Console.Write("enter the name or number to delete : ");
    string delete = Console.ReadLine();
    for (int i = 0; i < count; i++)
    {
    if (delete == names[i])
    { Console.WriteLine("name is : " + names[i] + "———–number is : " + numbers[i]);
    dare = true;

    save = i;
    }
    else if (delete == numbers[i].ToString())
    { Console.WriteLine("name is : " + names[i] + "———–number is : " + numbers[i]);
    dare = true;
    save = i;
    }
    }
    if (dare == true)
    {
    for (int i = save; i < count; i++)
    {
    numbers[i] = numbers[i + 1];
    names[i] = names[i + 1];
    }
    count–;
    Console.ForegroundColor = ConsoleColor.Yellow;
    Console.WriteLine("delete done!!!!!!!!");
    Console.ReadLine();
    }
    else
    {
    Console.WriteLine("delete faile !!!!!!!!!");
    Console.ReadLine();
    }
    }
    else if (input == "5")
    {
    for (int i = 0; i < count; i++)
    {
    Console.ForegroundColor = ConsoleColor.White;
    Console.WriteLine("name : " + names[i] + "———– number : " + numbers[i]);

    }
    Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine("end!!!!!!!!");
    Console.ReadLine();
    }
    else
    {
    Console.ForegroundColor = ConsoleColor.DarkRed;
    Console.WriteLine("sorry\ntry again ##########");
    Console.ReadLine();
    }

    }
    }
    }
    }
    }




  15. محبوب
    9 March 2015

    سلام خسته نباشید
    من یه سوال خیلی مهم دارم-اگه میشه فقط جوابشو زود برام میل کنید
    ممنون دوست خوبم

    من با سی شارپ می خوام برنامه ای نوشتم که یک فایل تکست رو باز میکنه و تعداد کاراکتر و کلمات اون رو نمایش میدهد.

    الان از شما می خوام دستوری بهم بدید که من بتونم کاراکترهای حروف بزرگ رو در یک آرایه و حروف کوچک رو در یک آرایه سیو کنم.تا بتونم عملیاتی روش انجام بدم.
    خیلی ممنون میشم




  16. jigooli
    21 December 2015

    سلام خسته نباشید
    من دارم برنامه ماشین حساب مهندسی رو در کنسول
    سی شارپ میزنم امافقط موفق به انجام چهار عمل اصلی شدم
    امکانش هست دستور sin ,cos ,tan,cot, m+ رو برام بزارید؟؟




  17. بهنام
    20 February 2018

    سلام جناب درویشیان وقتتون بخیر
    من مثال اول قسمت 18 را در حال انجام دادن بودم که متوجه شدم متد input را ویژوال استدیو سیستمم نداره و زمانی که می خوام بنویسیم با فشردن دکمه ی q از برنامه خارج بشه ،ارور میده.
    مشکل از کجاست؟
    ممنون




  18. پوریا
    4 April 2018

    سپاس ، عاشقتم مهندس



دیدگاه خود را بنویسید





نشانی ایمیل شما منتشر نخواهد شد.

کامنت های شما بعد از تأیید توسط نویسنده وبلاگ، منتشر خواهند شد.

لطفا دیدگاهتان تا حد امکان مربوط به پست بالا باشد. اگر حرف دیگری دارید و یا قصد تماس با من را دارید، از فرم تماس استفاده کنید.

شما میتوانید با مراجعه به سایت گراواتار یک آواتار اختصاصی برای خود تعریف کنید، تا در کنار نام شما نمایش داده شود

برای قرار دادن کدهای نمونه می توانید از تگ های [php] ، [html] ، [css] و [js] استفاده کنید.
به عنوان مثال کدهای php را می توان به صورت زیر قرار داد:
[php] var $whoLoveIranians = "WebTarget!"; [/php]



کلیه حقوق مادی و معنوی برای وب سایت وب تارگت محفوظ است ©2024 وب‌تارگت

استفاده از مطالب وب سایت در سایر وب سایت‌ها و نشریات چاپی با ذکر منبع آزاد است.