Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курс лекций CS (первый семестр)

.pdf
Скачиваний:
7
Добавлен:
20.05.2015
Размер:
2.69 Mб
Скачать

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Эта строка читается таким образом: если выражение1 возвращает true, то выполняется выражение2, в противном случае выполняется выражение3. Обычно возвращаемое значение присваивается некоторой переменной.

Пример использования условного оператора.

Рассмотрим программу нахождения максимального из двух чисел с помощью условного оператора if и тринарного оператора:

using System;

using System.Collections.Generic; using System.Text;

namespace ConsoleApplication1

{

class MyProgram

{

static void Main(string[] args)

{

int x, y, z;

Console.WriteLine("Введите два числа."); Console.Write("Первое:"); x=Convert.ToInt32(Console.ReadLine()); Console.Write("Второе:"); y=Convert.ToInt32(Console.ReadLine()); if (x>y)

z=x; else

z=y;

71

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Console.WriteLine("Большее число: {0}", z);

z=(x>y)?x:y;

Console.WriteLine("Большее число: {0}", z);

Console.ReadLine();

}

}

}

Результат:

Оператор switch.

Предположим, что нужно создать экранное меню, которое предлагает пользователю выбрать один из семи пунктов, например, день недели. Последовательность if else if else можно расширить для обработки семи взаимоисключающих вариантов, но оператор switch C# больше подходит для выполнения выбора из расширенного списка. Общая форма оператора switch выглядит следующим образом:

switch (выражение)

{

case Первое значение: оператор; break;

case Второе значение: оператор; break;

default: оператор; break;

}

Оператор switch позволяет осуществлять ветвление программы по результатам выражения, возвращающего несколько возможных значений.

Работает оператор следующим образом:

1.Вычисляется выражение в круглых скобках, стоящее за switch.

2.Значение выражения, которое было получено на этапе 1 сравнивается со значениями,

указанными за операторами case и в случае совпадения выполняется

оператор

72

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

соответствующего case; если ни один из case не соответствует этому значению, выполняется выполняются строки программы, стоящие после оператора default; если оператора default нет, то управление будет передано следующей за switch строке программы.

3. Выполнение switch прерывается, когда встречается оператор break.

Вместо идентификатора выражение допускается использование любого оператора или выражения, а так же последовательности операторов или выражений результатом выполнения которых является целочисленное значение. Поэтому использование логических операций или выражений сравнения здесь не допускается. Вместо значений в case можно использовать либо литеральные константы, либо символические целого типа.

Пример.

using System;

using System.Collections.Generic; using System.Text;

namespace ConsoleApplication1

{

class MyProgram

{

static void Main(string[] args)

{

int i;

Console.WriteLine("Выберите день недели:"); Console.WriteLine("1-понедельник"); Console.WriteLine("2-вторник"); Console.WriteLine("3-среда"); Console.WriteLine("4-четверг"); Console.WriteLine("5-пятница"); Console.WriteLine("6-суббота"); Console.WriteLine("7-воскресенье"); i=Convert.ToInt32(Console.ReadLine());

switch (i)

{

73

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

case 1:

Console.WriteLine("Вы выбрали понедельник"); break;

case 2:

Console.WriteLine("Вы выбрали вторник"); break;

case 3:

Console.WriteLine("Вы выбрали среду"); break;

case 4:

Console.WriteLine("Вы выбрали четверг"); break;

case 5:

Console.WriteLine("Вы выбрали пятницу"); break;

case 6:

Console.WriteLine("Вы выбрали субботу"); break;

case 7:

Console.WriteLine("Вы выбрали воскресенье"); break;

default: Console.WriteLine("Вы ошиблись"); break;

}

Console.ReadLine();

74

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

}

}

}

Результат:

75

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Лекция№12.

Циклы.

Для решения ряда задач часто требуется многократное выполнение одних и тех же действий. На практике это реализуется с помощью рекурсивных или итеративных алгоритмов. Суть итеративного процесса заключается в повторении последовательности операций нужное количество раз.

Первично циклы состояли из меток и оператора безусловного перехода. В C# меткой называют идентификатор, за которым следует двоеточие (:). Метка всегда устанавливается перед оператором, на который необходимо будет передать управление. Для перехода на нужную метку используется оператор goto, за которым следует имя метки. Оператор goto и соответствующая ему метка должны находится в теле одной функции.

Пример:

using System;

using System.Collections.Generic; using System.Text;

namespace ConsoleApplication1

{

class MyProgram

{

static void Main(string[] args)

{

int c=0; //инициализация счетчика loop: c++; // начало цикла

Console.WriteLine("c: {0}",c);

if (c<5) //проверка значения

goto loop; //возвращение к началу

Console.WriteLine("Выход.c:{0}",c);

Console.ReadLine();

76

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

}

}

}

Результат:

С помощью оператора goto можно осуществлять переход в любую точку программы - вперед или назад. Такое беспорядочное использование этого оператора привело к появлению запутанных и абсолютно непригодных для восприятия программ. Несмотря на это, как любой инструмент программирования, при правильном использовании оператор goto может оказаться очень полезным.

Предупреждение: не использовать оператор goto при написании своих программ.

Организация циклов с помощью оператора while.

В циклах организованных с помощью оператора while, выполнение последовательности операций продолжается до тех пор, пока условие продолжения цикла истинно.

while (условие продолжение цикла)

тело цикла;

Прежде всего программа проверяет условие продолжения цикла. Если в результате вычисления этого значения получается логическое значение true, тогда программа выполняет операторы в теле цикла. Тело цикла состоит из одного оператора или блока, определяемого парой фигурных скобок. После завершения выполнения тела цикла программа возвращается к условию продолжения цикла и вычисляет его еще раз. Если данное условие оказывается ненулевым, тогда программа снова выполняет тело цикла. Подобный цикл проверки и выполнения продолжается до тех пор, пока в результате вычисления выражения не получится логическое значение false. Ясно, что, если требуется, чтобы цикл в конечном итоге был завершен, в теле цикла должно быть выполнено некоторое действие, которое могло бы оказать влияние на значение условия продолжения цикла. Например, в цикле может быть выполнено приращения переменной, используемой в условии продолжения цикла, либо прочитано введенное с клавиатуры новое значение. Цикл while является циклом с входным условием продолжения цикла. Таким образом,

77

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

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

Пример.

using System;

using System.Collections.Generic; using System.Text;

namespace ConsoleApplication1

{

class MyProgram

{

static void Main(string[] args)

{

int c=0; //инициализация счетчика

while (c<5) //проверка условия продолжения цикла

{

c++; //тело цикла

Console.WriteLine("c: {0}",c);

}

Console.WriteLine("Выход.c:{0}",c);

Console.ReadLine();

}

}

}

Результат:

78

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Сложность логического выражения, являющегося условием в операторе while, не ограничена. Это позволяет использовать в конструкции while любые логические выражения.

Пример. Реализуем простую логическую игру. Вначале предлагается ввести два числа (s и l). После этого меньшее значение увеличивается на единицу, а большее уменьшается на два до тех пор пока они не «встретятся». Цель программы: вывести на экран число, на котором значения «встретятся».

using System;

using System.Collections.Generic; using System.Text;

namespace ConsoleApplication1

{

class MyProgram

{

static void Main(string[] args)

{

Console.Write("Введите меньшее число:");

int mal = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите большее число:");

int bol = Convert.ToInt32(Console.ReadLine()); if (mal > bol)

{

Console.WriteLine("Вы ошиблись при вводе");

Console.ReadLine();

return;

}

79

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

if (mal == bol)

{

Console.WriteLine("Вы ввели одинаковые числа.\n Число: {0}",

mal);

Console.ReadLine(); return;

}

while (mal < bol)

{

mal++; bol -= 2;

}

Console.WriteLine("Число встречи: {0}", (mal + bol) / 2);

Console.ReadLine();

}

}

}

Результат:

Организация циклов с помощью конструкции do … while.

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

80