close

Вход

Забыли?

вход по аккаунту

?

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

код для вставкиСкачать
Лабораторная работа № 2
"Программирование циклических вычислительных процессов"
Цель работы
Изучение операторов цикла в языке С++.
Теоретическая часть
Цикл - разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Также циклом может называться любая многократно исполняемая последовательность инструкций, организованная любым способом.
Набор инструкций, предназначенный для многократного выполнения, называется телом цикла. Однократное выполнение тела цикла называется итерацией. Выражение определяющее, будет в очередной раз выполняться итерация, или цикл завершится, называется условием выхода или условием окончания цикла. Переменная, хранящая текущий номер итерации, называется счётчиком итераций цикла или просто счётчиком цикла. Цикл не обязательно содержит счётчик, счётчик может быть не один - условие выхода из цикла может зависеть от нескольких изменяемых в цикле переменных.
Исполнение любого цикла включает первоначальную инициализацию переменных цикла, проверку условия выхода, исполнение тела цикла и обновление переменной цикла на каждой итерации. Кроме того, большинство языков программирования предоставляют средства для досрочного управления циклом, например, операторы завершения цикла, то есть выхода из цикла независимо от истинности условия выхода (в языке Си - break) и операторы пропуска итерации (в языке Си - continue).
Различают следующие виды циклов.
1. Безусловные циклы. Циклы, выход из которых не предусмотрен логикой программы. Специальных синтаксических средств для создания бесконечных циклов, ввиду их нетипичности, языки программирования не предусматривают, поэтому такие циклы создаются с помощью конструкций, предназначенных для создания обычных (или условных) циклов. Например, В языке С используется цикл for(;;) с незаполненными секциями.
2. Условные циклы. Это циклы, выполнение которых управляется некоторым условием, проверяемым в начале или конце тела цикла. Соответственно, условные циклы бывают с предусловием и с постусловием. Цикл с предусловием - цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). В большинстве процедурных языков программирования реализуется оператором while, отсюда его второе название - while-цикл. На языке С++ такой цикл имеет вид:
while(<условие>)
{
<тело цикла>
}
Цикл с постусловием - цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что цикл всегда выполняется хотя бы один раз. В языке Паскаль этот цикл реализует оператор repeat..until, в Си - do...while, например:
do
{
<тело цикла>
}
while(<условие продолжения цикла>);
В разных языках в использовании условия цикла с постусловием есть некоторые различия. В Паскале и языках, произошедших от него, условие такого цикла трактуется как условие выхода - цикл завершается, когда условие истинно. В Си - как условие продолжения (цикл завершается, когда условие ложно, такие циклы иногда называют "цикл пока").
Цикл с выходом из середины - наиболее общая форма условного цикла. Синтаксически такой цикл оформляется с помощью трёх конструкций: начала цикла, конца цикла и команды выхода из цикла. Конструкция начала определяет точку программы, в которой начинается тело цикла, конструкция конца - точку, где тело заканчивается. Внутри тела должна присутствовать команда выхода из цикла, при выполнении которой цикл заканчивается и управление передаётся оператору, следующему за конструкцией конца цикла. Естественно, чтобы цикл выполнился более одного раза, команда выхода должна вызываться не безусловно, а только при выполнении условия выхода из цикла.
Основной особенностью цикла данного типа является то, что часть тела цикла, расположенная после начала цикла и до команды выхода, выполняется всегда (даже если условие выхода из цикла истинно при первой итерации), а часть тела цикла, находящаяся после команды выхода, не выполняется при последней итерации. С помощью цикла с выходом из середины можно легко смоделировать и цикл с предусловием (разместив команду выхода в начале тела цикла), и цикл с постусловием (разместив команду выхода в конце тела цикла).
Цикл со счётчиком - цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз. В большинстве процедурных языков программирования реализуется оператором for, в котором указывается счётчик (так называемая "переменная цикла"), требуемое количество проходов (или граничное значение счётчика) и, возможно, шаг, с которым изменяется счётчик.
В некоторых языках, например, Си и других, произошедших от него, цикл for, несмотря на синтаксическую форму цикла со счётчиком, в действительности является циклом с предусловием. То есть в Си конструкция цикла:
for (i = 0; i < 10; ++i)
{
... тело цикла }
фактически представляет собой другую форму записи конструкции:
i = 0;
while (i < 10)
{
... тело цикла ++i;
}
То есть в конструкции for сначала пишется произвольное предложение инициализации цикла, затем - условие продолжения и, наконец, выполняемая после каждого тела цикла некоторая операция (это не обязательно должно быть изменение счётчика; это может быть правка указателя или какая-нибудь совершенно посторонняя операция). Для языков такого вида вышеописанная проблема решается очень просто: переменная-счётчик ведёт себя совершенно предсказуемо и по завершении цикла сохраняет своё последнее значение.
Организация циклов в языке Си++
1. Цикл for.
Цикл с использованием оператора for удобно использовать, когда требуемое число итераций заранее известно. Синтаксис данного оператора имеет вид:
for (действие до начала цикла;
условие продолжения цикла;
действия в конце каждой итерации цикла) {
инструкция цикла;
инструкция цикла 2;
инструкция цикла N;
}
Существует частный случай этой записи (со счетчиком):
for (счетчик = значение; счетчик < значение; шаг цикла) {
тело цикла;
}
Сначала присваивается первоначальное значение счетчику, после чего ставится точка с запятой. Затем задается конечное значение счетчика цикла. После того, как значение счетчика достигнет указанного предела, цикл завершится. Затем задается шаг цикла - значение, на которое будет увеличиваться или уменьшаться счетчик цикла при каждом проходе.
Пример: подсчет суммы всех числе от 1 до 1000.
#include <iostream>
using namespace std;
int main()
{
int i; // счетчик цикла
int sum = 0; // сумма чисел от 1 до 1000.
setlocale(0, "");
for (i = 1; i <= 1000; i++) // задаем начальное значение 1, конечное 1000 и задаем шаг цикла - 1.
{
sum = sum + i;
}
cout << "Сумма чисел от 1 до 1000 = " << sum << endl; return 0;
}
2. Цикл while.
Организацию циклов while или do...while удобно использовать, когда требуемое число итераций заранее неизвестно. Синтаксис цикла while в C++ выглядит следующим образом.
while (Условие) {
Тело цикла;
}
Данный цикл будет выполняться, пока условие, указанное в круглых скобках истинно. Пример реализации суммирования чисел от 1 до 1000 с помощью цикла while:
#include <iostream>
using namespace std;
int main()
{
setlocale(0, "");
int i = 0; // инициализируем счетчик цикла.
int sum = 0; // инициализируем счетчик суммы.
while (i < 1000)
{
i++;
sum += i;
}
cout << "Сумма чисел от 1 до 1000 = " << sum << endl; return 0;
}
3. Цикл do while
Цикл do while отличается от while тем, что при его выполнении цикла один проход цикла будет выполнен независимо от условия. Программа для решения задачи на поиск суммы чисел от 1 до 1000 с применением цикла do while:
#include <iostream>
using namespace std;
int main ()
{
setlocale(0, "");
int i = 0; // инициализируем счетчик цикла.
int sum = 0; // инициализируем счетчик суммы.
do {// выполняем цикл.
i++;
sum += i;
} while (i < 1000); // пока выполняется условие.
cout << "Сумма чисел от 1 до 1000 = " << sum << endl;
return 0;
}
Порядок выполнения работы
1. Разработать программу на языке С++ для решения задачи, соответствующей выбранному варианту.
2. Ввести, отладить и откомпилировать программу. Проверить правильность ее работы.
Содержание отчета
1. Блок-схема алгоритма программы.
2. Листинг программы с комментариями.
3. Результаты контрольных прогонов.
Контрольные вопросы
1. Дайте определение цикла, тела цикла, итерации.
2. Что такое условие выхода из цикла, счётчик итераций?
3. Какие этапы включает выполнение любого цикла?
4. Как работает цикл с постусловием?
5. Как работает цикл с предусловием?
6. Как работает цикл со счетчиком?
7. Как реализуется цикл с помощью оператора for?
8. Как реализуется цикл с помощью оператора while?
9. Как реализуется цикл с помощью оператора do while?
Задания
1. Вывести на экран следующую последовательность символов
* * * * * * *
* * * * *
* * *
*
* * *
* * * * *
* * * * * * *
2. Вводится последовательность целых чисел (0 - конец последовательности), найти разность между наименьшим среди положительных и наибольшим среди отрицательных чисел.
3. Вводится последовательность из N целых чисел, найти разность между произведением нечетных чисел и наибольшим среди отрицательных чисел.
4. Вводится последовательность целых чисел, 0 - конец последовательности. Определить, содержит ли последовательность хотя бы два числа, кратных 3, 5 и 7.
5. Вводится последовательность из N целых чисел. Определить наибольшее число среди кратных 11.
6. Вводится последовательность целых чисел, 0 - конец последовательности. Определить, содержит ли последовательность хотя бы три отрицательных четных числа.
7. Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20.
8. Вводится последовательность целых чисел, 0 - конец последовательности. Вычислить количество положительных чисел, кратных 7 и не кратных 5, и сумму отрицательных элементов последовательности.
9. Вводится последовательность из N вещественных чисел. Определить среднее арифметическое среди элементов последовательности, кратных 7.
10. Вводится последовательность чисел, 0 - конец последовательности. Определить является ли последовательность строго убывающей.
12. Вводится последовательность целых чисел, 0 - конец последовательности. Определить, содержит ли последовательность хотя бы два рядом стоящих положительных числа.
13. Вводится последовательность из N вещественных чисел. Определить, является ли последовательность знакочередующейся. 14. Вводится последовательность из N вещественных чисел. Определить разницу между минимальным положительным и максимальным отрицательным элементами последовательности.
15. Найти последние три числа кратные четырем в диапазоне от 1 до N. Вычислить сумму этих чисел.
16. Вывести на экран следующую последовательность символов
* * * * * *
* * * * *
* * * *
* * *
* *
*
18. Вычислить произведение последних трех чисел не кратных 5 в диапазоне от N1 до N2.
19. Вычислить среднее арифметическое четных чисел, некратных четырем в диапазоне от 1 до K.
Документ
Категория
Рефераты
Просмотров
120
Размер файла
70 Кб
Теги
работа, лабораторная
1/--страниц
Пожаловаться на содержимое документа