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

1c / Лабораторная работа_5

.doc
Скачиваний:
19
Добавлен:
14.05.2015
Размер:
565.76 Кб
Скачать

Лабораторная работа №5

Тема: Составление программ циклической структуры (2 часа).

Цель: Получить практические навыки разработки программ циклической структуры.

Задание

  1. Изучить сведения о типах циклических структур.

  2. Изучить пример решения задачи (Приложение 1).

  3. В соответствии с заданным вариантом разработать программу вычисления выражения. Название проекта – CircleX, где X – номер варианта (например, Circle10).

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

Учебная информация

Базовая конструкция цикл задает многократное выполнение оператора.

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

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

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

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

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

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

В С++ есть три оператора цикла: while, do while, for.

Цикл с предусловием

Формат оператора цикла с предусловием:

while (выражение) оператор;

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

В качестве примера использования оператора цикла рассмотрим программу вычисления факториала целого положительного числа N!.

//Программа вычисления факториала

#include <iostream.h>

void main()

{

int f, i, n;

cout<< “n=”;

cin>>n;

f=i=1;

while (i<=n) f=f*i++;

cout<<n<< “!=”<<f<<endl;

}

Цикл с постусловием

Формат оператора цикла с постусловием:

do оператор while (выражение);

Сначала выполняется простой или составной оператор, составляющий тело цикла, а затем вычисляется выражение. Если оно истинное (не равно false)б тело цикла выполняется еще раз. Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управления. Тип выражения должен быть арифметическим или приводимым к нему.

Пример. Программа вычисления факториала N!

#include <iostream.h>

void main()

{

int i, n, f;

cout<< “n=”; cin>>n;

f=i=1;

do f*=i++;

while (i<=n);

cout<<n<< “!=”<<f<<endl;

}

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

Формат оператора цикла с параметром:

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

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

Инициализация выполняется только один раз в начале цикла. Она определяет начальное значение параметра цикла (инициализирует параметр цикла).

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

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

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

С помощью цикла for нахождение N! можно организовать следующим образом:

f=1;

for (i=1; i<=n; i++) f=f*i;

Задания

  1. 1!+2!+3!+4!+.. n!

  2. (1+sin 0,1)(1+sin 0,2)….(1+sin 10)

  3. sin(x)+sin(x)sin(x)+sin(x)sin(x)sin(x)+…..

  4. n>2

Приложение 1

Пример решения задачи

Моделирование задачи показывает, что для вычисления суммы можно использовать цикл for, поскольку количество слагаемых известно заранее. Кроме того, не следует вычислять заново факториал для очередного слагаемого: гораздо проще вычислить факториал, опираясь на значение факториала дня предыдущего слагаемого. Аналогично организуется чередование знаков слагаемых: введем целую переменную Z=l и будем в цикле выполнять команду Z=-Z.

Для решения задачи введем следующие величины:

• S - искомая сумма;

• F - значение факториала;

• С - значение числителя;

• Z - знак слагаемого (+1 или -1).

Таким образом, в задаче дано: N, X; найти: S.

Контрольный пример: при N=4 и Х=3 получим S = -0.125.

Алгоритм решения задачи и его тестирование показаны на рисунке 1.

Рис.1. Алгоритм решения задачи 2

Совет. Начинайте конструировать цикл с его тела (принцип "от главного к второстепенному"). Только после записи тела цикла приступайте к определению начальных значений переменных, входя­щих в цикл (на рис. 7 это блок перед заголовком цикла). Обычно при этом решается следующая подзадача: какое значение надо задать переменной, чтобы при первом входе в цикл получить требуемое зна­чение?

Основным алгоритмическим приемом, использованным при ре­шении задачи 2, является вычисление в цикле отдельных частей очередного слагаемого, опираясь на предыдущие значения этих частей. Для этого были введены переменные F, Z и С. Такой прием достаточно эффективен при суммировании числовых рядов. Алгоритм решения данной задачи значительно усложнится, если, например, вместо указанного принципа использовать вычисление факториала путем добавления специального вложенного цикла. При этом снизится эффективность программы: длина кода возрастет, а бы­стродействие уменьшится.

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

Основным методом, примененным в задаче 2, является вычис­ление отдельных частей очередного слагаемого с использованием их значений для предыдущего слагаемого.