Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование лекции.doc
Скачиваний:
32
Добавлен:
03.12.2018
Размер:
4.85 Mб
Скачать

6.2 Алгоритмы и программы разветвленной структуры

Пример 1. Даны вещественные числа a,b,c. Найти наибольшее из них.

Рисунок 6.3 – Схема алгоритма к примеру 1

На этой схеме показано, что после ввода трех исходных чисел выполняется сравнение первых двух: a и b. Наибольшее из них присваивается переменной Max. После чего переменная Max сравнивается с переменной c. В том случае, если Max<c, значение Max корректируется заменой его на значение с. В заключение найденное наибольшее значение из трех исходных чисел выводится на экран монитора.

Листинг 1 – К примеру 1

using System;

namespace ConsoleApplication1

{ class Program

{ public static void Main()

{ double a, b, c, max;

Console.Write("Enter A: ");

a = Convert.ToDouble(Console.ReadLine());

Console.Write("Enter B: ");

b = Convert.ToDouble(Console.ReadLine());

Console.Write("Enter C: ");

c = Convert.ToDouble(Console.ReadLine());

if (a < b) max = b;

else max = a;

if (c > max) max=c;

Console.WriteLine("{0},{1},{2},{3}", a, b, c, max);

}

}

}

Пример 2. Переменная целого типа I определяет порядковый номер месяца невысокосного года. Оператор Switch по порядковому номеру месяца выводит количество дней в данном месяце.

Листинг 2 – К примеру 2

using System;

namespace ConsoleApplication1

{ class Program

{ static void Main(string[] args)

{ string buf;

Console.Write("Введите номер месяца: ");

buf = Console.ReadLine();

int a = Convert.ToInt32(buf);

switch (a)

{

case 1: Console.WriteLine ("В месяце 31 день"); break;

case 3: Console.WriteLine ("В месяце 31 день"); break;

case 5: Console.WriteLine ("В месяце 31 день"); break;

case 7: Console.WriteLine ("В месяце 31 день"); break;

case 8: Console.WriteLine ("В месяце 31 день"); break;

case 10: Console.WriteLine ("В месяце 31 день"); break;

case 12: Console.WriteLine ("В месяце 31 день"); break;

case 2: Console.WriteLine ("В месяце 28 дней"); break;

default: Console.WriteLine ("В месяце 30 дней");break;

}

}

}

}

В программе, решающей сформулированную задачу, введенное значение I используется для отыскания требуемого оператора вывода. Выбирается такой оператор Console.WriteLine, перед которым за словом case есть введенное значение I. Поскольку в данной программе нет защиты от некорректной работы пользователя, то любое введенное значение I>12 или I<1 также приведет к выводу следующего сообщения: 'В месяце 30 дней', так как именно оно помещено в ветвь default.

В данном примере I – это переменная целого типа, но вместо нее может быть использовано и выражение, выдающее порядковое значение.

Подчеркнем, что значения констант селектора, помещенные в любую ветвь выбора, не следует смешивать с метками операторов для работы с операторами перехода Goto.

Контрольные вопросы

  1. Какие структуры языка используются для анализа обстановки и выбора варианта действия в зависимости от результата анализа?

  2. Какие в С# существует два вида операторов ветвления?

  3. Приведите формат записи if и else инструкций.

  4. Выполняются ли if и else инструкции одновременно?

  5. В каком случае образуются вложенные if-операторы?

  6. С помощью какого оператора можно обеспечить многонаправленное ветвление?

  7. Приведите алгоритм ветвящегося процесса с оператором switch.

  8. Приведите общий формат записи оператора switch.

  9. Какой тип может иметь элемент выражение оператора switch?

  10. Могут ли две case-константы в одном switch-операторе иметь идентичные значения?

  11. Обязательна ли ветвь default?

  12. В каком случае оператор switch называется вложенным?

  13. Приведите пример программы с использованием оператора if.

  14. Приведите пример программы с использованием оператора switch.