Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы по программированию.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
172.37 Кб
Скачать

Вопрос№9

Формат оператора:

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

case константное_выражение_1: [ список_операторов_1 ]

case константное_выражение_2: [ список_операторов_2 ]

...

case константное_выражение_n: [ список_операторов_n ]

[ default: операторы ]

}

Выполнение оператора начинается с вычисления выражения. Тип выражения чаще всего целочисленный (включая char ) или строковый. Затем управление передается первому оператору из списка, помеченному константным выражением, значение которого совпало с вычисленным. Если совпадения не произошло, выполняются операторы, расположенные после слова default, а при его отсутствии управление передается следующему за switch оператору.

Каждая ветвь переключателя должна заканчиваться явным оператором перехода, а именно одним из операторов break, goto или return:

оператор break выполняет выход из самого внутреннего из объемлющих его операторов switch, for, while и do;

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

оператор return выполняет выход из функции, в теле которой он записан.

В листинге 4.7 приведен пример программы, реализующей простейший калькулятор на четыре действия.

using System;

namespace ConsoleApplication1

{ class Class1

{ static void Main()

{

string buf;

double a, b, res;

Console.WriteLine( "Введите первый операнд:" );

a = double.Parse( Console.ReadLine() );

Console.WriteLine( "Введите знак операции" );

char op = (char)Console.Read();

Console.ReadLine();

Console.WriteLine( "Введите второй операнд:" );

b = double.Parse( Console.ReadLine() );

bool ok = true;

switch (op)

{

case '+' : res = a + b; break;

case '-' : res = a - b; break;

case '*' : res = a * b; break;

case '/' : res = a / b; break;

default : res = double.NaN; ok = false; break;

}

if (ok) Console.WriteLine( "Результат: " + res );

else Console.WriteLine( "Недопустимая операция" );

}

}

}

Оператор return выполняет выход из функции в которой он записан. Например если он записан внутри обработчика нажатия кнопки то выполнение этого обработчика прекращается.

Оператор Switch предпочтительнее оператора if? Тогда когда в программе нужно сделать развёртывание более чем на два направления и выражения выбора не является вещественным.

Вопрос№10

Цикл с параметром имеет следующий формат: for ( инициализация; выражение; модификации ) оператор;

Инициализация служит для объявления величин, используемых в цикле, и присвоения им начальных значений. В этой части можно записать несколько операторов, разделенных запятой, например:

for ( int i = 0, j = 20; ...

int k, m;

for ( k = 1, m = 0; ...

Областью действия переменных, объявленных в части инициализации цикла, является цикл. Инициализация выполняется один раз в начале исполнения цикла.

Выражение типа bool определяет условие выполнения цикла: если его результат равен true, цикл выполняется.

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

for ( int i = 0, j = 20; i < 5 && j > 10; i++, j-- ) ...

Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!).

Для примера вычислим сумму чисел от 1 до 100:

int s = 0;

for ( int i = 1; i <= 100; i++ ) s += i;

В листинге 4.10 приведена программа, выводящая таблицу значений функции из листинга 4.8.

using System;

namespace ConsoleApplication1

{ class Class1

{ static void Main()

{

double Xn = -2, Xk = 12, dX = 2, t = 2, y;

Console.WriteLine( "| x | y |"); // заголовок таблицы

for ( double x = Xn; x <= Xk; x += dX )

{

y = t;

if ( x >= 0 && x < 10 ) y = t * x;

if ( x >= 10 ) y = 2 * t;

Console.WriteLine( "| {0,6} | {1,6} |", x, y );

}

}

}

}

Листинг 4.10. Таблица значений функции с использованием цикла for (html, txt)

Любой цикл while может быть приведен к эквивалентному ему циклу for и наоборот. Например, два следующих цикла эквивалентны:

Цикл for:

for ( b1; b2; b3 ) оператор;

Цикл while:

b1;

while ( b2 )

{

оператор;

b3

}

Особенности операторов: любая из состовляющих в скобках может отсутствовать, но «;» ставить обязательно. При отсутствии инициализации и модификации считается, что действий нет в конструкции цикла. При отсутствии выражения считается что она всегда истина.

Порядок работы

1.Выполняется инициализация.

2.Вычисляется выражение условие продолжения цикла. Если выражение ложно то цикл завершает работу.

3.Если выражение истина то выполняется оператор – тело цикла.

4.После выполнения тела цикла происходит модификация определяющая закон изменения переменный цикл.

5.Возврат к пункту 2.