Loading...

Switch оператору

1. Switch операторунун программада кандай колдонулушу бар ?

Switch оператору программада көп багыттуу тармакталууну камсыз кылат. Бул билдирүү программаны андан ары аткаруу үчүн бир нече альтернативдүү варианттардын арасынан тандоо жасоого мүмкүндүк берет.

 

Кээ бир учурларда, которуштурууну тандоо оператору уяланган if операторлорун колдонууга караганда натыйжалуураак болушу мүмкүн .

  

2. Switch операторунун жалпы формасы кандай ?

Switch операторунун жалпы көрүнүшү :

@A@switch (выражение)
{
    case константа1:
        операторы1;
    break;
    case константа2:
        операторы2;
    break;

    ...

    case константаN:
        операторыN;
    break;

    ...

    default:
        операторы;
    break;
}@A@

 

  • туюнтма – бүтүн ( char , байт , short , int ) типтеги, санап чыгуу же сап ( сап ) түрүнүн берилген туюнтмасы
  • константа1 , константа2 , … туруктуу N – тандоо константалары, алардын түрү туюнтма түрүнө шайкеш келиши мүмкүн. Тандоо константаларынын ичинен экөө тең бирдей мааниге ээ болбошу керек;
  • operator1 , operator2 , …, оператор N , оператор тандоо константасынын мааниси туюнтма маанисине дал келсе, аткарылуучу операторлордун ырааттуулугу.

Эгерде тандоо константаларынын бири да берилген туюнтмага дал келбесе, анда default сөзүнөн кийинки операторлор аткарылат.

  

3. Switch операторундагы default блоктун максаты эмне ?

default сөздөн кийинки операторлор, эгерде туюнтма мааниси туруктуулардын бирине да дал келбесе, аткарылат. Блок (филиал) default милдеттүү эмес.

 

Эгерде default блок switch операторунда жок болсо жана константалардын бири да туюнтумдун маанисине дал келбесе, анда эч кандай чара көрүлбөйт.

 

4. default блокту колдонбостон switch операторун колдонуунун мисалы .

 

Сизге 1ден 7ге чейинки аптанын күнүнүн санын көрсөтүүчү n бүтүн саны берилет . n санын эске

алып , жуманын тиешелүү күнүнүн атын чыгарыңыз.

Switch операторунун жардамы менен бул көйгөйдү чечкен код үзүндүсү :

@A@int n;

n = 7;

switch (n)
{
    case 1: label1.Text = "Понедельник";
    break;
    case 2: label1.Text = "Вторник";
    break;
    case 3: label1.Text = "Среда";
    break;
    case 4: label1.Text = "Четверг";
    break;
    case 5: label1.Text = "Пятница";
    break;
    case 6: label1.Text = "Суббота";
    break;
    case 7: label1.Text = "Воскресенье";
    break;
}@A@

 

5. Демейки блокту колдонуу менен switch операторун колдонуунун мисалы .

Берилген айдан кийин n санынан кийин ушул айдагы күндөрдүн санын аныктай турган программа кодунун фрагментин жазыңыз . Күндөрдүн саны к өзгөрмөсүнө киргизилет .

 
@A@

int n, k;

switch (n)
{
    case 2:
        k = 28;
    break;
    case 4: case 6: case 9: case 11:
        k = 30;
    break;
    default:
        k = 31;
    break;
}
@A@

 

6. Уюшкан которуу операторун колдонгон программанын мисалы

Switch оператору башка башкаруу операторунун ичинде уя салынышы мүмкүн, ал төмөнкүлөр болушу мүмкүн:

  • шарттуу секирүү оператор болсо ;
  • тандоо билдирүү которуу ;
  • цикл оператору ;
  • цикл оператору while ;
  • цикл оператору do..while ;
  • foreach цикл билдирүүсү .

Уялоо деңгээлинин саны чексиз. Бул которуштуруу операторун ыктыярдуу уя деңгээлинде жайгаштырса болот дегенди билдирет.

Мисалда, switch оператору уя салынган if операторун жана уя салынган switch операторун камтыйт .

 

Программа айдын жана жыл жылынын санынын киргизилген маанисине жараша айдагы күндөрдүн санын эсептейт. Жылдын жогорку болушу мүмкүн болгон фактор эске алынат.

Console Application үлгүсүнө ылайык түзүлгөн программанын тексти төмөнкүдөй

@A@using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            // Вложенный оператор switch
            int year; // номер года
            int month; // месяц в году
            int days; // количество дней в году

            // ввести номер года
            Console.Write("Year = ");
            year = Convert.ToInt32(Console.ReadLine());
            Console.Write("Month = ");
            month = Convert.ToInt32(Console.ReadLine());

            // оператор switch, содержащий другой вложенный оператор switch
            switch (month)
            {
                case 4:
                case 6:
                case 9:
                case 11:
                    days = 30;
                    break;
                case 2:
                    bool f; // флажок, определяющий высокосный год

                    // вложенный оператор if
                    if (year % 400 == 0)
                        f = true;
                    else
                        if (year % 100 == 0)
                            f = false;
                        else
                            if (year % 4 == 0)
                                f = true;
                            else
                                f = false;

                    // вложенный оператор switch
                    switch (f)
                    {
                        case true:
                            days = 29;
                            break;
                        default:
                            days = 28;
                            break;
                    }
                    break;                  
                default:
                    days = 31;
                    break;
            }
            Console.WriteLine("Days = {0}", days);
        }
    }
}@A@

Программанын аткарылышынын натыйжасы

@T@Жыл = 2100
ай = 2
Күн = 28@T@

  

7. Switch операторунда саптарды колдонуу . Мисал

Которуу операторунда бүтүн сандардан тышкары символ саптарын колдонсо болот .

Мисал . Мисалда, айдын аталышы бул айдагы күндөрдүн санын көрсөтөт. Февраль 28 күн бар деп болжолдонууда.

 
@A@using System;

namespace ConsoleApp12
{
  class Program
  {
    static void Main(string[] args)
    {
      // Использование строк в операторе выбора switch
      string month; // название месяца

      // 1. Ввести название месяца
      month = Console.ReadLine();

      // 2. Вывести количество дней в месяце
      switch (month)
      {
        case "January":
        case "March":
        case "May":
        case "July":
        case "August":
        case "October":
        case "December":
          Console.WriteLine("Number of days = 31");
          break;
        case "February":
          Console.WriteLine("Number of days = 28");
          break;
        case "April":
        case "June":
        case "September":
        case "November":
          Console.WriteLine("Number of days = 30");
          break;
        default:
          Console.WriteLine("Incorrect input");
          break;
      }
    }
 }
}@A@

@T@

January
Number of days = 31

@T@