Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

12 СКЛАДАННЯ ТА ВІДЛАГОДЖЕННЯ ПРОГРАМ З ВИКОРИСТАННЯМ ОПЕРАТОРІВ FOR ТА SWITCH З ВИВЕДЕННЯМ ТАБЛИЦЬ Мет

Работа добавлена на сайт samzan.net:


ЛАБОРАТОРНА  РОБОТА  11-12

СКЛАДАННЯ ТА ВІДЛАГОДЖЕННЯ ПРОГРАМ З ВИКОРИСТАННЯМ

ОПЕРАТОРІВ FOR ТА SWITCH, З ВИВЕДЕННЯМ ТАБЛИЦЬ

Мета: придбати практичні навички з складання та відлагодження програм циклічних алгоритмів з використанням  операторів  switch  та  for.

Теоретичні відомості: 

Операторы цикла

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

Один проход цикла называется итерацией. Проверка условия выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием), либо после тела цикла (цикл с постусловием). Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется, надо ли его выполнять еще раз. Проверка необходимости выполнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу.

          

                а                                

                  

           Стру

схемы операторов цикла: а — цикл с предусловием; б — цикл с постусловием

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

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

Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue, return и goto (см. раздел «Операторы передачи управления»). Передавать управление извне внутрь цикла не рекомендуется.

Для удобства, а не по необходимости, в C++ есть три разных оператора цикла -

while, do while и for.

Цикл с параметром (for)

Цикл с параметром имеет следующий формат:

for (инициализация; выражение; модификации) оператор;

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

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

int k, m;

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

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

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

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

Пример (оператор, вычисляющий сумму чисел от 1 до 100):

for (Int i = 1,  s = 0;  1<=100;  i++) s += i;

Пример (программа печатает таблицу значений функции у=х2+1 во введенном диапазоне):

#Include <stdio.h>  

Int main(){

float  Xn,  Xk,  Dx,  X;

printf (“Введите диапазон и шаг изменения аргумента:  ");

scanf  (“%f%f%f”, &Xn, &Xk, &Dx );

printf (“|  X  |  Y  |\n");

for (X = Xn; X<=Xk; X+=Dx)

printf (" |  %5.2f   |  %5.2f  |\n”, X*X + 1);

return 0;

}

Пример (программа находит все делители целого положительного числа):

#Include <iostream.h> Int main(){

Int num, half, div;

cout << “\n Введите число  :   ";  cin >> num;

for (half = num / 2, div = 2; div <= half; div++)

    if (!(num %div))cout << div <<"\n";

return 0;

}

Два последних примера выполняют те же действия, что и примеры для цикла с предусловием, но записаны более компактно и наглядно: все действия, связанные с управлением циклом, локализованы в его заголовке.

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

for (b1: b2; bЗ) оператор      b1;

while (b2){ оператор; bЗ;}

Часто встречающиеся ошибки при программировании циклов — использование в теле цикла неинициализированных переменных и неверная запись условия выхода из цикла.

Чтобы избежать ошибок, рекомендуется:

  •  проверить, всем ли переменным, встречающимся в правой части операторов присваивания в теле цикла, присвоены до этого начальные значения (а также возможно ли выполнение других операторов);
  •  проверить, изменяется ли в цикле хотя бы одна переменная, входящая в условие выхода из цикла;
  •   предусмотреть аварийный выход из цикла по достижению некоторого количества итераций;
  •  и, конечно, не забывать о том, что если в теле цикла требуется выполнить более одного оператора, нужно заключать их в фигурные скобки.

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

Оператор do while обычно используют, когда цикл требуется обязательно выполнить хотя бы раз (например, если в цикле производится ввод данных).

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

Оператор for предпочтительнее в большинстве остальных случаев (однозначно — для организации циклов со счетчиками).

Операторы передачи управления

В C++ есть четыре оператора, изменяющих естественный порядок выполнения вычислений:

  •  оператор безусловного перехода goto;
  •  оператор выхода из цикла break;
  •  оператор перехода к следующей итерации цикла continue;
  •  оператор возврата из функции return.

Оператор goto

Оператор безусловного перехода goto имеет формат:

goto метка; В теле той же функции должна присутствовать ровно одна конструкция вида:

метка: оператор;

Оператор goto передает управление на помеченный оператор. Метка — это обычный идентификатор, областью видимости которого является функция, в теле которой он задан.

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

В любом случае не следует передавать управление внутрь операторов if, switch и циклов. Нельзя переходить внутрь блоков, содержащих инициализацию переменных, на операторы, расположенные после нее, поскольку в этом случае инициализация не будет выполнена:

int k; ...

goto metka; ...

{int a = 3, b = 4;

k = a + b;

metka: int m = k + 1; ...

}

После выполнения этого фрагмента программы значение переменной m не определено.

Оператор break

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

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

sh х = 1 + х3/3! + х5/5! + х7/7! + ...

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

#include<iostream.h>

#include<math.h>

int main () {

const int MaxIter = 500;          //ограничитель количества итераций

double x, eps;

cout<<”\n Введите аргумент и точность: ”;

cin>> x >> eps;

bool flag = true;                  //признак успешного вычисления

double y = x, ch = x;       //сумма и первый член ряда

for (int n = 0; fabs(ch) > eps; n++) {

ch *= x * x / (2 * n + 2)/(2 * n + 3);  //очередной член ряда

     y += ch;

     if (n>MaxIter) {

               cout<<”/n Ряд расходится !”;

               flag = false; break; }

}

if (flag) cout<<”/n Значение функции: ”<<y;

return 0;

}

Оператор continue

Оператор перехода к следующей итерации цикла continue пропускает все операторы, оставшиеся до конца тела цикла, и передает управление на начало следующей итерации.

Оператор return

Оператор возврата из функции return завершает выполнение функции и передает управление в точку ее вызова. Вид оператора:

return [ выражение ];

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

Завдання. Обчислити та вивести на екран у видгляді таблиці значення функції F на інтервалі  від початкового значення змінної, від якої залежить розгалуження,  до кінцевого її значення з кроком її зміни. Початкове значення, кінцеве значення, крок та усі інші змінні ввести з клавіатури на початку програми 1 раз. Варіанти завдань дивись у лабораторній роботі №8-9.




1. Время диалога Организаторами конференции являются отдел по делам молодёжи Екатеринбургской епархии со
2. тематические модели для описания основных свойств жидкостей и газов
3. Нетрадиционная энергетика в странах ЕС- экономическое стимулирование развития
4. Водные ресурсы Среднего Урала
5. И все это происходит говорят они дабы Иисус мог сделаться первой жертвой при разделении составных природ.html
6. члены и функциичлены класса
7. АУДИТ ПЛАНОВО-КОНТРОЛЬНЫХ РАСЧЕТОВ В УСЛОВИЯХ НЕОПРЕДЕЛЕННОСТИ ВНЕШНЕЙ СРЕДЫ
8. Экологическая проблема- сокращение озонового слоя
9. Стаття залишок на 26.html
10. Тема- Concordnce des temps Практическая цель- совершенствование лексикограмматических навыков
11.  z y 3
12. История промышленного развития города Красноярска во второй половине XIX века
13. 68 - Договор купли-продажи недвижимости
14. Пользование внешними световыми приборами
15. Реферат- Записная книжка на Delphi 7
16. Topic of your presenttion is ldquo;The mediocre techer tells
17. DY антивирусной защиты
18. Билл (Вильям) Гейтс
19. Реферат- Стиль барокко в русском искусстве, архитектуре, литературе и музыке
20. Право собственности юридических лиц