Школа создателей компьютерных игр

BannerDrive.ru
[Главная] [С чего начать?] [Дистанционное обучение] [Статьи] [Обучалки] [Книги] [Софт] [Форум] [Ссылки] [О сайте]

Оператор Switch



Подпишитесь на рассылку "Создание компьютерных игр"

Рассылки Subscribe.Ru
Создание компьютерных игр

Рассылка выходит раз в месяц.


Понравился сайт? Узнайте, как помочь сайту.


Рекомендуемые книги


Андре Ламот.
Программирование трехмерных игр для Windows. Советы профессионала по трехмерной графике и растеризации


Андре Ламот.
Программирование игр для Windows. Советы профессионала


Проголосуйте за сайт в рейтинге GameTop!
(нажмите на кнопку рейтинга)

GameTop - рейтинг игровых ресурсов. Портал Rolemancer (www.rolemancer.ru)

Не забывайте, что результаты рейтинга обновляются раз в неделю. Пожалуйста, голосуйте почаще!


Статистика посещаемости

Rambler's Top100

Оператор If | Все обучалки раздела | Условные выражения

Описание

Объясняется, что такое оператор Switch, и как его использовать для принятия решений в программах.

Программа предлагает ввести число от 1 до 3, после чего отображает сообщение о том, какое число было введено. Затем, то же самое проделывается и для букв.

Скачать обучалку (Visual C++ 6)

Работа программы

Исходный код


//            - "Talk to me like I'm a 3 year old!" Programming Lessons -  
//                                                                      
//            $Author:            DigiBen            DigiBen@gametutorials.com    
//                                                                                
//            $Program:            Switch Statements                         
//                                                                           
//            $Description:      Shows the applications for switch statements.
//                                                                            
//            $Date:                  5/18/00                          
//                                                                     

// Перевод © 2004 Евгений Казеко
// www.gamecoder.kazeko.com
// evgeniy@kazeko.com

#include <stdio.h>    // Мы должны включить этот файл, чтобы использовать некоторые функции

void main()    // Начало нашей программы
{              // Начало функции main
      int number = 0;    // Инициализация целочисленной переменной
      char ch = 0;       // Инициализация символьной переменной

      // Сообщение пользователю ввести число от 1 до 3
      printf("Input a number between 1 and 3: ");  
      scanf("%d", &number);     // Чтение числа с клавиатуры (%d означает целое число)

      /*    Код ниже это выражение switch. В основном, оно похоже на набор выражений if.
            На обычном языке код ниже означает "Проверить значение переменной number, 
            если это 1, сообщить об этом, если 2 - сообщить об этом, если 3 - также сообщить,
            а если введенное число не является ни одним из них, сказать, что пользователь
            не последовал инструкциям."

            Мы помещаем переменную, которую хотим проверить, в круглые скобки - ("здесь").
            Затем открываем фигурные скобки. Использовать слово "case" это все равно что
            сказать "Если значение number равно 1". Или, в виде выражения if() - 
            "if(number == 1)". Мы ставим двоеточие после case. И теперь, если значение
            number равно 1, выполнится все, что идет после case 1 до слова "break".
            В данном случае, мы просто печатаем на экран сообщение и затем завершаем
            выражение switch с помощью оператора break. Таким образом программа продолжает
            выполняться после закрывающей фигурной скобки. Если бы мы не использовали
            "break", программа продолжила бы выполнение со следующей строки - "case 2:".
            Если хотя бы одно из выражений case истинно, выполняются все операторы.
            Странновато, но иногда полезно.

            Если ни одно из выражений не является истинным (TRUE), то выполняется "default".
            Вам необязательно его использовать, но лучше делать это.
      */

      switch (number)    // Проверка значения "number"
      {     
            case 1:      // Если number равно 1, сообщить
                  printf("You typed in the number 1!\n");
                  break;     // Остановиться и выйти из выражения switch

            case 2:      // Если number равно 2, сообщить
                  printf("You typed in the number 2!\n");      
                  break;     // Остановиться и выйти из выражения switch

            case 3:      // Если number равно 3, сообщить
                  printf("You typed in the number 3!\n");
                  break;     // Остановиться и выйти из выражения switch
                                                      
            default:     // Если number ни 1, ни 2, ни 3
                  printf("You didn't follow directions!\n");
                  break;        // Обычно это не нужно (мы все равно завершаем switch), но
                                       // можно использовать для единообразия.
      }       

      // Ниже идет пример проверки введенных символов.

      rewind(stdin);       // Сброс буфера ввода, содержащего все, что вводится с клавиатуры.
                           // Без этого scanf() будет работать некорректно.
                           // Полезно делать это после каждого scanf() если предполагается
                           // использовать scanf() вновь.

      printf("\n\nInput a character: ");     // Запрос пользователю ввести символ
      scanf("%c", &ch);                  // Чтение символа с клавиатуры (%c для символов)

      switch (ch)      // Проверка значения "ch"
      {   
            case 'a':    // Если ch равно 'a', сообщить
                  printf("You typed in an A!\n");
                  break;      // Остановиться и выйти из выражения switch

            case 'b':   // Если ch равно 'b', сообщить
                  printf("You typed in an B!\n");      
                  break;      // Остановиться и выйти из выражения switch

            case 'c':   // Если ch равно 'b', сообщить
                  printf("You typed in an C!\n");
                  break;     // Остановиться и выйти из выражения switch
                                                      
            default:    // Если ch не 'a', 'b' или 'c', дать нам знать
                  printf("You did not type an a, b or c!\n");
                  break;    // И снова нам не нужет этот break, но вреда от него не будет.
      }      

      // Вы наверно заметили, что это проверяет только символы нижнего регистра.
      // Нам не нужно использовать новые case отдельно для нижнего и верхнего регистра.
      // Вот что мы сделаем: мы просто добавим еще один case после первого, разделив их
      // двоеточием. Мы можем сделать так столько раз, сколько захотим. Мы также можем
      // сделать это на отдельных строках, например так:
      // case 'a':
      // case 'A':
      //      printf(etc...) ...

      rewind(stdin);   // Сброс буфера ввода.

      printf("\n\nInput a lowercase or uppercase character: ");            
      scanf("%c", &ch);  // Ввод символа с клавиатуры (%c для символов)

      switch (ch)     // Проверка значения "ch"
      {       
            case 'a': case 'A':    // Если ch равно 'a' или 'A', сообщить
                  printf("You typed in an A!\n");
                  break;       // Остановиться и выйти из выражения switch

            case 'b': case 'B':      // Если ch равно 'b' или 'B', сообщить
                  printf("You typed in an B!\n");      
                  break;       // Остановиться и выйти из выражения switch

            case 'c': case 'C':    // Если ch равно 'c' или 'C', сообщить
                  printf("You typed in an C!\n");
                  break;        // Остановиться и выйти из выражения switch
                                                      
            default:            // Если ch не 'a', 'b' или 'c', дать нам знать
                  printf("You did not type an a, b or c!\n");
                  break;       // И снова нам не нужет этот break, но вреда от него не будет.
      }             

}       // Конец функции main и программы

///////////////////////////////////////////////////////////////////////////////////////////////
//
// * ПРИМЕЧАНИЕ *

/*
      Выражение switch смотрится гораздо лучше, чем несколько выражений if, когда
      необходимо проверить больше чем 2 или 3 значения. Однако есть некоторые
      ограничения при использовании выражения switch. Одно из них заключается в том, 
      что нельзя обрабатывать строки. Нельзя написать: switch("Test"). Причина в
      том, что строка это массив символов, а выражение switch проверяют постоянные
      величины. Также выражение switch не может обрабатывать числа с плавающей запятой,
      нельзя записать switch(22.2). И последнее заключается в том, что нельзя использовать
      выражения, например: case (number != 2):
      
      В этой обучалке использовалась функция rewind(). По непонятной причине, когда
      вызывается scanf(), она заполняет буфер ввода и не очищает его в конце.
      Поэтому и необходима функция rewind(), которая его очищает. Если не вызвать
      ее, программа не позволит нам ввести что-либо, а посчитает, что мы уже ввели.
      Попробуйте закомментировать ее и посмотрите что это значит.

*/
// © 2001 GameTutorials
// Перевод © 2004 Евгений Казеко
// www.gamecoder.kazeko.com
// evgeniy@kazeko.com 

Скачать обучалку (Visual C++ 6)

Оператор If | Все обучалки раздела | Условные выражения

[Главная] [С чего начать?] [Дистанционное обучение] [Статьи] [Обучалки] [Книги] [Софт] [Форум] [Ссылки] [О сайте]

Copyright © 2003-2005 Евгений Казеко. Все права защищены. E-mail: evgeniy@kazeko.com

Строительство загородных домов. country-style.ru. Строительство коттеджей в Москве.; опалубка от монолит строй; ООО Сатори инженерные сети, слом зданий.; продажа погрузчиков б у.