Будь умным!


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

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

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


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. Лекция 1011 ЭЛЕКТРОННОЕ МЕДИЦИНСКОЕ ОБОРУДОВАНИЕ Классификация медицинского электронного оборудования
2. Логика мышления и наука логика В труде и в быту в учебной и общественной работе в научном трактате и в
3. а реквізит електронного документа призначений для посвідчення джерела даних і захисту даного електронного
4. . Общая характеристика судебного усыновления по законодательству РФ [0
5. Тематические задания для выполнения контрольных работ для студентов заочного отделения юридического факуль
6. Возможности индукционных зондирований для поисков и прогнозной оценки нетрадиционных типов месторождений золота и платиноидов
7. добавкой во все что человек воспринимает как данность
8. Города Албании
9. Гражданско-правовая охрана жизни и здоровья
10. ТЕМА 4. ДЕНЕЖНАЯ СИСТЕМА РЫНОЧНОЙ ЭКОНОМИКИ Мы знаем что в рыночной экономике исключительную роль играют.
11. вует множество теорий о происхождении человека
12. Обзор программных продуктов для расчета инвестиционных проектов
13. і Мемлекет арнаулы органдар ар~ылы ~о~амды бас~арады к~пшілік б~~ара ~шін ма~ызы бар м~селелерді шешеді ж~
14. Производство кирпичной кладки и организация труда каменщиков
15. основна складність паралельного програмування яке справедливо вважається набагато складнішим ніж послід
16. Дипломная работа студента VI курса заочного отделения Научный руководитель к
17. Лекция 2 13 Множество действительных чисел
18. Японские имена
19. а из жизни очень рано Но светлый образ твой родной мы будем помнить постоянно
20. Теория механизмов и машин для инженеров