
- •Создание программ с использованием циклов. Работа с массивами
- •Введение
- •Лабораторная работа №6. Оператор цикла с параметрами
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Язык программирования Pascal
- •Var // объявление переменных
- •Лабораторная работа №7. Оператор цикла с предусловием
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Язык программирования Pascal
- •Var // объявление переменных
- •Лабораторная работа №8. Одномерный массив
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Язык программирования Pascal
- •Var // объявление переменных
- •Лабораторная работа №9. Двухмерный массив. Матрица.
- •Выполнение лабораторной работы
- •Методические указания к выполнению лабораторной работы
- •Язык программирования Pascal
- •Int a[2][3]; /* представлено в виде матрицы
- •Int a[100][100]; // матрица
- •Библиографический список
Выполнение лабораторной работы
Для выполнения работы необходимо:
формализовать задачу;
разработать алгоритм решения задачи;
составить блок-схему алгоритма;
выбрать и обосновать представление входных, промежуточных и выходных данных;
произвести кодирование;
разработать набор тестов, на которых будет проверяться программа;
продемонстрировать работу программы на наборе тестов;
оформить работу и отчитаться по ней.
Методические указания к выполнению лабораторной работы
Задание
Дано число A >1. Вывести наибольшее из целых чисел K, для которых сумма
1 + 1/2 + ... + 1/K будет меньше A, и саму эту сумму.
Выполнение
Для выполнения этого задания необходимо использовать оператор цикла с предусловием. Оператор цикла с предусловием выполняет группу операторов до тех пор, пока заданное в цикле условие не станет ложным. Так как сначала проверяется условие, а уж затем выполняется группа операторов, при начальной ложности условия группа операторов в цикле не выполнится ни разу.
Этап 1. Формализация. В задаче подсчитывается сумма ряда 1 + 1/2 + ... + 1/K. Например, для К=5 получаем 1+1/2+1/3+1/4+1/5=2,283333. За один раз к сумме ряда прибавляется одно слагаемое, равное 1/K. Переменная К каждый раз увеличивается на единицу.
Подсчитать сумму ряда можно, объявив некоторую переменную sum, присвоив ей в качестве начального значения ноль, а затем увеличивать её в цикле на одно слагаемое.
Использовать цикл с параметрами в этом случае невозможно, поскольку неизвестно количество повторений. Для окончания цикла должно использоваться условие sum<A, что возможно в цикле с предусловием.
Таким образом,
приходим к следующему решению: в цикле
с предусловием сравниваем значение A
с переменной sum
и если sum<
A,
то увеличиваем значение переменной на
1/К, а затем
делаем повторное сравнение. Если же в
результате сравнения оказывается, что
sum
>A
, выводим в
качестве результата значение
переменной К
,
уменьшенное на единицу. Уменьшать К на единицу необходимо поскольку условие будет ложным только тогда, когда сумма превысит A.
Этап 2. Декомпозиция. Производим декомпозицию задачи — выделяем действия. Определяем, что для решения задачи необходимо выполнить следующие действия:
1. Ввести переменную А.
2. Установить значение переменной sum=0.
3. Установить значение переменной К =0.
4. Проверяем условие sum<A. Если оно истинно, переходим к действию 5, иначе переходим к действию 7.
5. Увеличиваем К на единицу.
6. Увеличиваем переменную на 1/К и переходим к действию 4.
7. Выводим значение К-1.
Этап 3. Алгоритмизация. Составляем алгоритм решения задачи. Используем для записи алгоритма форму блок-схемы.
Оператору цикла с предусловием можно сопоставить следующую последовательность значков:
Блок-схема алгоритма выглядит следующим образом:
Этап 4. Кодирование. Переводим разработанный алгоритм на язык программирования — составляем программу. Новым в задании является оператор цикла с предусловием. Для него в языках программирования предусмотрены специальные ключевые слова и задается специальная последовательность операторов.