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

Лабораторная работа 3 Разработка программ с циклами 1

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

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 30.6.2025

PAGE  50

EMBED Visio.Drawing.6  

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

Разработка программ  с циклами

1. Введение

Цикл – это структурная конструкция, в которой некоторые алгоритмические действия - тело цикла (ТЦ) – неоднократно повторяются. В программировании используются три основные конструкции циклов: цикл по переменной (цикл-модификация) (рис. 3.1), цикл с постусловием (рис. 3.2) и цикл с предусловием (рис. 3.3). В языке С/С++ они поддерживаются операторами for, do-while и while, соответственно.

 

Рис. 3.1. Цикл по переменной  Рис. 3.2. Цикл с постусловием

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

2. Цикл по переменной

Цикл по переменной (цикл-модификация) наиболее часто используется в программах. Его работа основана на том, что управляющая переменная цикла i пробегает значения от начального J до конечного K с шагом L и для каждого из них исполняется тело цикла ТЦ. В языке С/С++ в качестве управляющей может быть использована переменная как целого, так  и вещественного типа. Параметры цикла J , K и L представляют собой выражения соответствующего типа, в частном случае, переменные или константы.

Цикл по переменной в С/С++ поддерживается оператором for, который имеет следующий синтаксис:

for (<инициализация>; <условие повторения>; <модификация>)

  <оператор>;

Элементы этого оператора следующие:

  •  инициализация – выражение, присваивающее начальное значение переменной цикла. Если переменная ранее не описана, описывается и ее тип. Например: i=1;  int k=i+j; double x=Xmin; и т.п.
  •  условие повторения – логическое выражение, при истинности которого тело цикла повторяется. Например,   i<=n;  k+i>100-(i+j);  x<=Xmax;
  •  модификация - выражение, модифицирующее значение управляющей переменной. Например,  i++  i+=2  x+=Xstp.
  •  оператор - оператор языка С, реализующий тело цикла. Если тело цикла выражается несколькими операторами, то используется составной оператор (блок), объединенный фигурными скобками.

Примеры записи оператора for:

for (i=1; i<=n; i++) cout<<i<<endl;

for (x=Xmin; x<=Xmax; x+=Xstp)

 {

 ...

 ...

 }

Язык С, в отличие от других, позволяет внутри тела цикла изменять значение управляющей переменной, но делать это категорически не рекомендуется. Ее значение должно управляться оператором for, а внутри тела цикла оно может только использоваться.

 В операторе for можно задать одновременное (синхронное) изменение двух или более переменных, например,

 for (i=1, j=n; i<=n; i++, j--) {...}

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

Этот цикл не следует путать с циклом по j, вложенным в цикл по i,  в котором тело цикла выполняется n2 раз:

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

 for (j=1; j<=n; j++)

    {

    ...

    }

...

3. Циклы с постусловием и предусловием

Цикл с пост-(после-)условием в языке C/C++ поддерживается оператором do-while. Его синтаксис имеет вид:

do <оператор> while (<логическое выражение>);

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

...

do

 {

 ...

 ...

 ...

 }

while (<логическое выражение>);

Тело цикла при этом рекомендуется выделить (форматировать) двумя отступами.

Цикл с предусловием в языке C/C++ поддерживается оператором while. Его синтаксис имеет вид:

while (<логическое выражение>) <оператор>;

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

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

В качестве логического выражения в операторах do-while и while иногда используются числовые выражения целого типа. Так цикл

...

i=n;

while (i--)

 {

 ...

 ...

 ...

 }

...

осуществляет обратный цикл по переменной i от n до 0. Пока i>0 выражение в скобках трактуется как «Истина» и тело цикла выполняется. Когда i станет равным 0 («Ложь»), произойдет выход из цикла.

4. Операторы continue и break

Оператор continue позволяет завершить тело цикла, не исполняя его окончание, при выполнении некоторого условия (истинности логического выражения) и перейти к новому повторению тела цикла. Тем самым реализуется структурная конструкция, показанная на рис. 3.4  для цикла for.

Оператор break завершает весь цикл при выполнении некоторого условия (истинности логического выражения) и передает управление следующему за циклом оператору. На рис. 3.5 показана получающаяся структурная конструкция при использовании цикла с постусловием.

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

 

Рис. 3.4. Цикл for с оператором   Рис. 3.5. Цикл do-while

continue      с оператором break

5. Примеры использования простейших циклов

Некоторые примеры программ, использующих простейшие циклы, приведены в подразделе  Examples \  03 Циклы \ 3 Примеры циклов. Ряд программ достаточно просты и предназначены для самостоятельного анализа. Поясним лишь наиболее сложную программу, реализующую метод простых итераций для решения нелинейных уравнений. Она представлена в различных вариантах в файлах ex030330.cpp, ex030332.cpp, ex030335.cpp и ex030337.cpp.

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

,        (3.1)

где  k = 1, 2, 3, … - номер итерации. Нулевое приближение  - задается, а затем осуществляются итерации по формуле (3.1). Для очень многих уравнений итерационный процесс сходится, т.е. каждое последующее значение  все ближе и ближе приближается к значению корня уравнения. В качестве условия прекращения итераций обычно используют

 ,        (3.2)

где   - заданное заранее значение погрешность определения корня.

На рис. 3.6 приведена блок-схема алгоритма, выполняющего метод простых итераций с помощью цикла с постусловием. Она реализована в программе, находящейся в файле ex030330.cpp. Сначала задаются значения входных переменных X0 и (на блок-схеме не показано). Затем выполняются начальные установки: переменной X присваивается значение X0, а счетчик циклов k обнуляется. В теле цикла сначала выполняется инкремент счетчика, а затем вычисляется новое приближение корня  Xnew по итерационной формуле (3.1). Перед выполнением операции переприсваивания X = Xnew  выполняется вычисление разности DX,  которая необходима для проверки условия повторений итераций. Условие повторения представляет собой  противоположное условию (3.2).

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

Рис. 3.6. Блок-схема алгоритма метода простых итераций

Входные переменные:  X0  - нулевое приближение корня;

eps - абсолютная погрешность вычисления  корня.

Выходные переменные: X - значение корня;

    k - число выполненных итераций.

Внутренние переменные: k - номер текущей итерации;

Xnew - значение корня, получаемое на текущей итерации;

DX - разность значений корня, полученных на текущей итерации и на предыдущей.

6. Задание к работе

  1.  Проанализировать и исполнить программы подразделов for, while и примеры циклов каталога Examples\03 Циклы). На приведенных примерах освоить синтаксис операторов циклов и особенности их использования.

  1.  Разработать программу для расчета сумм и произведения

  1.   ; ;  .
    1.   ; ; .
    2.   ;  ; .
    3.   ; ;  .
    4.   ; ;  .
    5.   ; ; .
    6.   ;;  .
    7.   ; ;  .

  1.  Разработать программу для вывода на дисплей и нахождения суммы целых чисел, находящихся в интервале от n до m:
    1.   всех простых чисел;
    2.   всех, делящихся на три, пять и семь без остатка.

  1.  Разработать программы для расчета бесконечной суммы. Суммирование следует прекращать, когда очередное слагаемое по абсолютной величине станет меньше заданной погрешности . Выполнить в двух вариантах: с циклом с постусловием и с предусловием. В программах предусмотреть подсчет и вывод выполненного числа циклов.
    1.        
    2.        
    3.        
    4.        
    5.        
    6.        
    7.        
    8.        
  2.  На основе аналога, реализующего метод простых итераций (ex030330.cpp и ex030332.cpp), разработать программу для решения уравнения    методом Ньютона. Этим методом корень уравнения находится по заданному нулевому приближению  последовательными приближениями по формуле:

;   где  i = 1, 2, 3, … - номер итерации.

Итерации следует прекращать, когда будет выполнено условие ;

где  - заданная погрешность.

Проверить работу программы на решении уравнений

  и  .

  1.  Разработать программу для расчета и вывода на экран монитора таблицы зависимости   в пределах от  до  с шагом  (x и y – вещественные).  Выполнить три варианта: цикл с предусловием, цикл с постусловием и цикл по вещественной переменной.




1. Статья- Философия Освальда Шпенглера (1880-1936)
2. тематики физики астрономии истории и проч
3. CЕРВИС гр C311 Дисциплина Преподават
4. Конкурентоспособность машинотехнической продукции
5. Люди надевают на себя маски вежливости скромности строгости которые позволяют скрыть свои истинное отнош
6. Лекция ’5 1.10 Продолжение Вопросы- ~-- Понятия и признаки государства Гос.html
7. Реферат- Аддиктивное поведение у подростков (наркомания и алкоголизм)
8. я знаю их слишком хорошо
9. варианты ответов к нему
10. 032010 N 33 Зареєстровано в Міністерстві