Лабораторная работа №4. €

“Программирование циклических вычислительных процессов”

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

Теоретическая часть

4.1.1. Циклические алгоритмы.

Цикл – это последовательность действий, которая может выполняться более одного раза.

Циклический алгоритм – это алгоритм, содержащий один или несколько циклов.

Имеется 3 вида циклов:

- цикл с предусловием;

- цикл с постусловием;

- цикл со счетчиком (счетный цикл).

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

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

Блок-схемы циклических алгоритмов выглядят следующим образом:

1. Цикл со счетчиком.

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

4.1.2 Операторы цикла в языке программирования C++.

В C++ для каждого вида цикла имеется соответствующий оператор:

- цикл типа while (с предусловием);

- цикл типа do…while (с постусловием);

- цикл типа for (счетный).

1.Оператор цикла типа while

Форма записи:

while (условие) оператор;

где: (условие) – логическое выражение;

оператор – выполняемый в цикле оператор или тело цикла.

Если тело цикла представляет собой составной оператор, то его нужно заключить в операторные скобки{...}:

while (условие)

{

группа операторов

}

Схема работы такого цикла: пока условие является истинным (true), выполняется тело цикла и снова проверяется условие и т.д. Когда условие станет ложным (false) цикл завершает работу.

2. Оператор цикла типа do…while

Форма записи:

do

оператор;

while (условие);

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

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

do

{

группа операторов

}

while (условие);

3. Оператор цикла типа for

Форма записи:

for (A;B;C)

оператор;

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

i=0, x=0.5, p=1, s=0

B – условное выражение, которое проверяет условие продолжения работы цикла. Например:

x<=5

C – выражение приращения, которое задает приращение параметру цикла и при необходимости другим параметров, тогда они записываются списком. Например: x+=0.1, i++

4.1.3 Пример составления алгоритма и программы на языке C++ для циклического вычислительного процесса.

Задание:

Вычислить значение выражения:

Лабораторная работа №4. € - student2.ru

b – исходная величина, ее значение вводятся с клавиатуры и не изменяется;

a – изменяется в диапазоне [0;10] с шагом 1;

y – результат, его значения выводятся на экран.

Решение.

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

Блок-схема алгоритма решения данной задачи с использованием счетного цикла выглядит следующим образом:

Текст программы на языке C++, соответствующей данному алгоритму, выглядит следующим образом:

#include <conio.h>

#include <math.h>

#include <stdio.h>

int main()

{ int a;

float b,y;

clrscr();

printf(“Введите b: “);

scanf(“%f”,&b);

printf(“ a y\n”);

for (a=0;a<=10;a++)

{

printf(“%3d”,a);

if (a>b)

{

y=1.2*a+3*b;

printf(“%8.2f\n”,y);

}

else

{

if (a>0)

{

y=(a-b)/sqrt(a);

printf(“%8.2f\n”,y);

}

else printf(“ y не существует\n”);

}

}

getch();

return 0;

}

Блок-схема алгоритма решения данной задачи с использованием цикла с предусловием выглядит следующим образом:

Текст программы на языке C++, соответствующей данному алгоритму, выглядит следующим образом:

#include <conio.h>

#include <math.h>

#include <stdio.h>

int main()

{ int a;

float b,y;

clrscr();

printf(“Введите b: “);

scanf(“%f”,&b);

a = 0;

printf(“ a y\n”);

while(a<=10)

{

printf(“%3d”,a);

if (a>b)

{

y=1.2*a+3*b;

printf(“%8.2f\n”,y);

}

else

{ if (a>0)

{

y=(a-b)/sqrt(a);

printf(“%8.2f\n”,y);

}

else printf(“ y не существует\n”);

}

a=a+1;

}

getch();

return 0;

}

Блок-схема алгоритма решения данной задачи с использованием цикла с постусловием выглядит следующим образом:

Текст программы на языке C++, соответствующей данному алгоритму, выглядит следующим образом:

#include <conio.h>

#include <math.h>

#include <stdio.h>

int main()

{ int a;

float b,y;

clrscr();

printf(“Введите b: “);

scanf(“%f”,&b);

a = 0;

printf(“ a y\n”);

do

{

printf(“%3d”,a);

if (a>b)

{

y=1.2*a+3*b;

printf(“%8.2f\n”,y);

}

else

{ if (a>0)

{

y=(a-b)/sqrt(a);

printf(“%8.2f\n”,y);

}

else printf(“ y не существует\n”);

}

a=a+1;

}

while(a<=10);

getch();

return 0;

}

Практическая часть

4.2.1 Требования к выполнению работы:

Выполнить задание из лабораторной работы № 3 для диапазона значений одной из переменных. Изменяемая переменная, диапазон ее изменения и шаг указаны в таблице 4. Составить блок-схемы алгоритмов и программы для двух типов циклов, указанных в индивидуальном задании (таблица 4).

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

Порядок выполнения работы.

1. Выполнить анализ задания, сформулировать постановку задачи.

2. Составить блок-схемы алгоритмов.

3. Составить программу на языке C++. Предусмотреть ввод исходных данных с клавиатуры и вывод результатов на экран.

4. Выполнить проверку работоспособности программы на различных исходных данных.

5. Выполнить анализ полученных результатов.

Варианты индивидуальных заданий.

Варианты индивидуальных заданий выбираются из таблицы 4 в соответствии с номером студента в списке группы в журнале преподавателя.

Таблица 4. Варианты индивидуальных заданий

№ п/п Изменяемая переменная Типы циклов
10 ≤ a ≤ 10, Δ a=1 1. С предусловием, 2. Счетный
-4 ≤ d ≤ 4, Δ d = 0.5 1. С предусловием, 2. С постусловием
-6 ≤ x ≤ 3, Δ x = 0.5 1. Счетный, 2. С постусловием
0 ≤ b ≤ 30, Δ b = 1.5 1. С предусловием, 2. Счетный
-15 ≤ j ≤ 10, Δ j = 0.5 1. С предусловием, 2. С постусловием
5 ≤ e ≤ 35, Δ e = 2 1. Счетный, 2. С постусловием
-5 ≤ m ≤ 15, Δ m = 1 1. С предусловием, 2. Счетный
1 ≤ c ≤ 70, Δ c = 3 1. С предусловием, 2. С постусловием
1.5 ≤ c ≤ 15, Δ c = 0.5 1. Счетный, 2. С постусловием
-8 ≤ b ≤ 28, Δ b = 2 1. С предусловием, 2. Счетный
-4.5 ≤ x ≤ 11.5, Δ x = 0.5 1. С предусловием, 2. С постусловием
-7 ≤ k ≤ 2, Δ k = 0.3 1. Счетный, 2. С постусловием
-1 ≤ m ≤ 21, Δ m = 1 1. С предусловием, 2. Счетный
-2 ≤ e ≤ 34, Δ e = 2 1. С предусловием, 2. С постусловием
-11 ≤ c ≤ 23, Δ c = 2 1. Счетный, 2. С постусловием
-13 ≤ p ≤ 50, Δ p = 3 1. С предусловием, 2. Счетный
3.3 ≤ b ≤ 9.3, Δ b = 0.3 1. С предусловием, 2. С постусловием
3.5 ≤ y ≤ 12.3, Δ y = 0.4 1. Счетный, 2. С постусловием
-7.5 ≤ a ≤ 5.7, Δ a = 0.6 1. С предусловием, 2. Счетный
-1.5 ≤ h ≤ 1.2, Δ h = 0.1 1. С предусловием, 2. С постусловием
0 ≤ h ≤ 10, Δ h=0.5 1. Счетный, 2. С постусловием
-15 ≤ b ≤ 15, Δ b =2 1. С предусловием, 2. Счетный
-7 ≤ l ≤ 3, Δ l = 0.5 1. С предусловием, 2. С постусловием
-5.5 ≤ b ≤ 6.5, Δ b = 0.5 1. Счетный, 2. С постусловием
1 ≤ k ≤ 9, Δ k = 0.4 1. С предусловием, 2. Счетный
0 ≤ b ≤ 6.9, Δ b = 0.3 1. С предусловием, 2. С постусловием
-3 ≤ v ≤ 9, Δ v = 0.6 1. Счетный, 2. С постусловием
-2 ≤ p ≤ 2.6, Δ p = 0.2 1. С предусловием, 2. Счетный

4.3 Контрольные вопросы и практические задания:

1. Как работает оператор while?

2. Как работает оператор do ... while?

3. Как работает оператор for?

4. Подчеркнуть в программе операторы, образующие цикл.

5. В чем заключается отличие операторов while и do ... while?

6. Заменить в программе один оператор цикла другим.

Наши рекомендации