|
Программирование >> Обработка исключительных ситуаций
break: case 2 Вставить код обработки nyiKia 2 Console.WriteLineC( oi;idaxa - пункг 2 ), break; case 3 return; default : Console.WriteLineC не попал по клавише! break; Цикл с постусловием do Цикл с постусловием реализует структурную схему, приведенную на рис. 4.4, б, и имеет вид do оператор while выражение; Сначала выполняется простой или составной оператор, образующий тело цикла, а затем вычисляется выражение (оно должно иметь тип bool). Если выражение истинно, тело цикла выполняется еще раз и проверка повторяется. Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управления. Этот вид цикла применяется в тех случаях, когда тело цикла необходимо обязательно выполнить хотя бы один раз, например, если в цикле вводятся данные и выполняется их проверка. Если же такой необходимости нет, предпочтительнее пользоваться циклом с предусловием. Пример программы, выполняющей проверку ввода, приведен в листинге 4.5. Листинг 4.5. Проверка ввода .sing System: -amespace ConsolеАррIicationi class Classl { static void MainO char answer: do Console.WriteLineC Купи слоника, a? ): answer = (char) Console.Read О; Console.ReadLineO; whlie ( answer != у ); Глава 4. Операторы Рассмотрим еще один пример применения цикла с постусловием - программу, определяющую корень уравнения cos(x) = х методом деления пополам с точностью 0,0001. Исходные данные для этой задачи - точность, результат - число, представляющее собой корень уравнения1. Оба значения имеют вещественный тип. Суть метода деления пополам очень проста. Задается интервал, в котором есть ровно один корень (следовательно, на концах этого интервала функция имеет значения разных знаков). Вычисляется значение функции в середине этого интервала. Если оно того же знака, что и значение на левом конце интервала, значит, корень находится в правой половине интервала, иначе - в левой. Процесс повторяется для найденной половины интервала до тех пор, пока его длина не станет меньше заданной точности. В приведенной далее программе (листинг 4.6) исходный интервал задан с помощью констант, значения которых взяты из графика функции. Для уравнений, имеющих несколько корней, можно написать дополнительную программу, определяющую (путем вычисления и анализа таблицы значений функции) интерва- лы, содержащие ровно один корень . Листинг 4.6. Вычисление корня нелинейного уравнения using System; namespace ConsoleApplicationi { class Classl { static void MainO double x, left = 0, right x = ( left + right ) / 2; if ( ( Math.Cos(x) - x ) * ( Math.Cos(left) right = x; else left = x; } while ( Math.Abs( right - left ) < le-4 ); Console.WriteLineC Корень равен + x ); left ) < 0 ) В эту программу для надежности очень полезно добавить подсчет количества выполненных итераций и принудительный выход из цикла при превышении их разумного количества. Корнем уравнения называется значение, при подстановке которого в уравнение оно превращается в тождество. Программа печати таблицы значений функции приведена в листинге 4.3. Цикл с параметром for Цикл с параметром имеет следующий формат: for ( инициализация; выражение; модификации ) оператор; Инициализация служит для объявления величин, используемых в цикле, и присвоения им начальных значений. В этой части можно записать несколько операторов, разделенных запятой, например: -эг ( int i - 0. j 20: nt k. m; эг ( k = 1, m = 0: Областью действия переменных, объявленных в части инициализации цикла, является цикл. Инициализация выполняется один раз в начале исполнения цикла. Выражение типа bool определяет условие выполнения цикла: если его результат равен true, цикл выполняется. Цикл с параметром реализован как цикл с предусловием. Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификаций можно записать несколько операторов через запятую, например: -~:г(inti=0,j = 20; i< 5&&j>10; i + + Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!). Для примера вычислим сумму чисел от 1 до 100: t 5-0: - V ( in t i - 1 , i < - 100; i + + )s += i : В листинге 4.7 приведена программа, выводящая таблицу значений функции из листинга 4.3. Листинг 4.7. Таблица значений функции, полученных с использованием цикла for .51ng System: -amespace ConsoleApplicationl class Classl { static void MainO double Xn = -2, Xk = 12. dX = 2. t = 2, y; Console.WriteLineC x у ; заголовок таблицы for ( double x = Xn; x <= Xk: x += dX ) 1, 4, 5 У - t; 2 if(x>=0&&x<10)у=t* x; 2 продолжение &
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |