Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование на С++ в среде разработки Qt Creator. Учебно-методическое пособие
.pdf
21
Общий вид записи
for( i = ml; i<= m2; i=i+шаг)
{ <тело цикла>;}
i - параметр, управляющий работой цикла;
ml, m2 - выражения, определяющие соответственно начальное и конечное
значения параметра цикла.
Замечание. Тело цикла состоит по стандарту из одного оператора. В случае
выполнения в цикле нескольких операторов надо воспользоваться
обязательно операторными скобками {...}.
Работа оператора цикла for...
for работает следующим образом: счетчик автоматически меняется от
начального значения до конечного включительно, для каждого значения
счетчика повторяется тело цикла. После каждого повторения тела цикла
значение счетчика автоматически увеличивается на шаг.
Правила использования оператора for:
1. Параметр цикла i, а также его значения ml и m2 могут быть любого типа.
2. Параметр i, а также значения ml и m2 не должны переопределяться
(менять значения) в теле цикла.
3. При завершении работы оператора for параметр i становится
неопределенным и переменную i можно использовать в других целях.
4. Тело цикла может не выполниться ни разу, если m1>m2 для цикла for... с
положительным шагом, или m1<m2 для отрицательного шага.
Пример 1: Вычислить таблицу значений функции:
22
ln
)(
ba
x
xy+=
для всех х, изменяющихся в интервале [-0.5 , 2.5] с шагом Δх = 0.1,
а, b - заданные вещественные числа.
Программа Схема алгоритма
#include <iostream>
#include<cmath>
using namespace std;
int main()

22
{ float a, b, x, y;
cout<<"введите а и b "<<”\n”;
cin>>a>>b;
cout<<" x y(x)”<<”\n";
for(х=-0.5; x<=2.5; x=x+0.1)
{
y=log(fabs(x))/(a*a+b*b);
cout<<”x=”<<x<<”y=”<<y<<”\n”;
}
return 0;
}
Циклы с предусловием и постусловием
Возможны два вида циклов - проверка условия либо предшествует
выполнению тела цикла, либо происходит после него. Изобразим эти циклы в
виде блок-схем:
В языке С++ имеется два вида операторов цикла с условием:
while (пока) – цикл с предусловием;
начало
a,b
Заголовок
таблицы
x=-0.5; 2.5;
0.1
y=
x, y
конец

23
do... while (повторять до тех пор, пока выполняется условие) – цикл с
постусловием.
Оператор цикла while является наиболее универсальным, так как с его
помощью можно запрограммировать практически любой циклический
процесс.
В цикле с предусловием while (пока условие истинно) сначала проверяется
условие, затем, в зависимости от того, истинно оно или ложно, либо
выполняется тело цикла, либо следует переход к оператору, следующему за
телом цикла. После завершения тела цикла управление вновь передается на
проверку условия. Естественно, предполагается, что в теле цикла было
обеспечено некоторое изменение входящих в условие переменных, в
противном случае произойдет зацикливание и программа "зависнет".
Для цикла с постусловием do... while сначала выполняется тело цикла, затем
управление передается на проверку условия. В зависимости от истинности
или ложности условия, тело цикла выполняется повторно или же происходит
переход к оператору, следующему за телом цикла.
Исходя из приведенных блок-схем, очевидно основное различие двух
циклов: цикл с постусловием гарантированно выполняется хотя бы раз, а
цикл с предусловием может не выполняться ни разу, если условие сразу же
окажется ложным.
Оператор цикла while
Общий вид записи
while (логическое выражение)
{ <тело цикла>; }
<тело цикла> - единичный оператор или группа операторов, выполняемых в
цикле.
Замечание. Если тело цикла состоит из нескольких операторов, то их
обязательно заключают в операторные скобки {...}.
Оператор цикла do...while
Общий вид записи
do
<тело цикла>
while (логическое выражение);
Пример 2. Решить задачу примера 1 с использованием оператора цикла
while.
Программа
#include <iostream>
#include<cmath>

24
using namespace std;
int main()
{
float а, b, х, у;
cout<<"Bвeдитe а и b”<<”\n";
cin>>a>>b;
х=-0.5; //нач. установка
while(х<= 2.5) //условие работы цикла
{
y= log(fabs(x))/(a*a +b*b);
cout<<"x="<<x<<” y=”>>y<<”\n”;
x=x + 0.1;//добавление шага
}
return 0;
}
Пример 3. Решить предыдущую задачу табулирования функции с
использованием оператора цикла do…while.
Программа Схема алгоритма
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
float а, b, х, y;
cout<<"Bвeдитe a и b "<<”\n”;
cin>>a>>b;
х=-0.5; //нач. установка
do //делать
{
1
0
x≤2.5
Начало
a,b
x,y
Конец
x=x+0.1
y=
x=-0.5
Заголовок
таблицы

25
y=log(fabs(x))/(a*a+b*b);
cout<<"x="<<x<<” y=”>>y<<”\n”;
x= x+ 0.1; //добавление шага
} while( x<= 2.5);//условие работы цикла
return 0;
}
Задание к лабораторной работе
Написать программу на языке С++ для расчета таблицы значений заданного
математического выражения. Функцию выбирать в соответствии с вариантом
из таблицы 2.
Таблица 2 - Варианты заданий
№
вар.
Функция
Изменение аргумента
1. Y=e
|A+COS (BT) |
A=-0.5 ; В=2
T изменяется от 2 до 5 с шагом 0,5
2.
2.0
)1(5.0 axxY +=
А=3.5
X изменяется от 1 до 10 с шагом 1
3. Y=e
|A+M |
A=2,5 ;
М изменяется от 1 до 10 с шагом 1.
4. C=2
X+Y
X= 0,5;
Y изменяется от 1 до 8 с шагом 0,5
5. T= Sin3(X)+AX
X=2;
A изменяется от 10 до 20 с шагом 2
6. T=e
|A+B|
- 3
A
В=2,5
А изменяется от 2 до 5 с шагом 0,5
x>2.5
Начало
Конец
x=-0.5
Заголовок таблицы
x,y
x=x+0.1

26
7. R=Tg (A3+C)
A=0,2;
С изменяется от 0,4 до 2,4 с шагом
0,4
8. X=Ln (A2+C3)
А=0,2
С изменяется от 2 до 5 с шагом 0,5
9.
L=
a
x
Cos
a
b
x 2
)( +
А=0.4 ;B=1.3;.
X изменяется от 0.1 до 1.0 с шагом
0,1
10.
T=Sin4(AX)
X= 5;
A изменяется от 10 до 30 с шагом 5
11.
S=XA+Tg(AX)
X=2;
A изменяется от 10 до 20 с шагом 2
12.
K=Sin(B3+A)
В=2
А изменяется от 0,2 до 1,6 с шагом
0,2
13.
D = 4AC- Sin2(A+C)
A=0,2;
С изменяется от 0,7 до 2,1 с шагом
0,3
14.
F=|CosB(A+B2)|-X
3
А=-2 ; В=5; С=7.
X изменяется от 2 до 5 с шагом 0,5
15.
Z=|eAX-Y |
X= 1,5; A=0,2;
Y изменяется от 1 до 3 с шагом 0,5
16.
L=Sin3(Y)+AY
A=0,5;
Y изменяется от 1 до 10 с шагом 1
17.
Z=e
| A+B|
-SIN (AB)
A=2;
B изменяется от 5 до 8 с шагом 0,5
18.
K=Ln(N3 +M2)-Tg(NM)
N=2.5;
M изменяется от 0,2 до 1,2 с шагом
0,2
19.
H=2AX-Cos3(A+X)
A=1,1
X изменяется от 0,1 до 1 с шагом 0,1
20.
S=|SinA(X5)|-X3
A=3
X изменяется от 0,5 до 2,5 с шагом
0,5
21.
T=Sin(AX)+ 2AX
X= 1.5;
A изменяется от 0.1 до 2.0 с шагом
0.5
22.
R=
XA
+Tg(XA)
X=2;
A изменяется от 10 до 20 с шагом 2
23.
G=Sin(B+A)+ A3
В=2
А изменяется от 0,2 до 1,6 с шагом
0,2

27
24.
W = 4AC - Sin(A+C)+
eAX
A=0,2;
С изменяется от 0,7 до 2,1 с шагом
0,3
25.
F=Cos(A+BX)- X2C
А=-2 ; В=5; С=0.7.
X изменяется от 2 до 5 с шагом 0,5
Порядок выполнения работы
1. Получить допуск к работе у преподавателя (показать домашние
заготовки).
2. Загрузить среду Qt Creator и создать проект нужного типа.
3. Ввести текст программы.
4. Провести отладку программы. Выполнить программу, провести анализ
результатов и, убедившись в правильности решения, предъявить их
преподавателю для проверки.
5. Занести результаты расчета в отчет.
6. Выйти из среды.
Содержание отчета
1. Номер и тема лабораторной работы.
2. Задание к лабораторной работе.
3. Схема алгоритма решения задачи.
4. Программа на языке C++.
5. Результаты выполнения программы.
6. Ответы на контрольные вопросы.
Показать отчет преподавателю.
Контрольные вопросы
1. Типы данных в языке С++.
2. Схема простого циклического процесса.
3. Операторы цикла в языке С++, особенности их использования.

28
Лабораторная работа № 4
ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ ПРОЦЕССОВ
Цель работы: получить навыки программирования разветвляющихся
процессов на языке С++.
Подготовка к лабораторной работе
При подготовке к лабораторной работе следует повторить назначение
основных этапов обработки программы на языке С++, а также назначение и
форматы условных операторов.
Условные операторы
В языке С++ различают два вида условных операторов: короткий и полный.
Короткий условный оператор
Общий вид записи
if (логическое выражение) P;
где Р - любой оператор языка С++.
Работа оператора
Сначала вычисляется логическое выражение (ЛВ), и если оно имеет значение
TRUE (истина), то выполняется оператор Р, стоящий за логическим
выражением. В противном случае оператор Р игнорируется.
Графическая интерпретация оператора
В схемах алгоритма короткому условному оператору соответствует
структура ЕСЛИ—ТО.
Условие

29
Замечание. По определению, конструкция короткого условного оператора
включает единственный оператор Р. Если в задаче по заданному условию
требуется выполнить несколько операторов, то их необходимо заключить в
операторные скобки { }, образуя тем самым составной оператор. Тогда
запись условного оператора с использованием скобок имеет следующий вид:
if(логическое_выражение)
{
;
....................
;1
Nоператор
оператор
}
Пример. Переменной у присвоить минимальное значение из трех
различных чисел, т.е. у = min(a, b, с).
Схема алгоритма Программа
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
float a, b, c,y;
cout<<"Введите числа а, b,
с"<<”\n”;
cin>>a>>b>>с;
у=а;
if (b<y) у = b;
if (c<y) у = с;
cout<<"y ="<< y<<”\n”;
return 0;
}

30
Полный условный оператор
Общий вид записи
if (логическое выражение) P1; else P2;
где Р1, Р2 - любые операторы или даже группы операторов.
Работа оператора
Вычисляется логическое выражение, и если оно имеет значение TRUE(не
ноль), то выполняется оператор Р1, стоящий после логического выражения. В
противном случае (FALSE (ноль)) оператор P1 пропускается, а выполняется
оператор Р2, стоящий после служебного слова else.
Графическая интерпретация оператора
В схемах алгоритма полному условному оператору соответствует структура
ЕСЛИ-ТО-ИНАЧЕ.
Замечание. Операторы Р1 и Р2 входят в стандартную конструкцию полного
условного оператора как единственные. Если возникает необходимость
выполнить в ветвях несколько операторов, то их заключают в операторные
скобки { }. Вид записи условного оператора в этом случае следующий:
if (логическое выражение)
{
оператор 1;
………………
оператор n;
}
else
1
0
(T)
(F)
Условие
(ЛВ)
Р1
Р2
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
