Файл: Методические указания по выполнению лабораторных работ для студентов очной формы обучения. Псков, Издво ПсковГУ, 2017. 50 с.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.02.2024
Просмотров: 269
Скачиваний: 0
СОДЕРЖАНИЕ
Основные сведения об алгоритмах
Язык Паскаль и интегрированные среды разработки программ
Отладка и выполнение программы
Порядок выполнения лабораторных работ
Лабораторная работа № 1. Программирование формул
Лабораторная работа № 2. Ветвящиеся алгоритмы
Лабораторная работа № 3.Циклы с известным числом повторений
Лабораторная работа № 4.Циклы с заранее неизвестным числом повторений
Лабораторная работа № 5.Средства вывода. Таблицы
Лабораторная работа № 6.Двойные и кратные циклы
Лабораторная работа № 7.Сортировка массивов
Лабораторная работа № 8.Подпрограммы – функции
Лабораторная работа № 9.Подпрограммы – процедуры
Лабораторная работа № 10.Работа с файлами и строками
Лабораторная работа № 11. Динамические переменные. Списки
Лабораторная работа № 12.Графический режим монитора. Построение графиков
Приложение А. Основные стандартные функции
Лабораторная работа № 3.
Циклы с известным числом повторений
Целью работы является освоение программирования алгоритмов с циклической структурой, когда какой-либо участок программы выполняется определенное количество раз.
Типичный пример циклического процесса – вычисление конечных сумм. При определении сумм многократно вычисляется выражение, стоящее под знаком суммы и складывается с предыдущей частичной суммой. Вычисления производятся до тех пор, пока не будут сложены выражения под знаком суммы для всех значений изменяющейся переменной.
Пример: составить программу, вычисляющую значение суммы:
Прежде чем вычислять выражение под знаком суммы и очередную частичную сумму, необходимо определить начальное значение параметра цикла (в данном случае i, которое изменяется от 1 до 10 с шагом 1, то есть i будет принимать последовательно значения 1, 2, 3, 4, ..., 9, 10), и начальную частичную сумму S. Так как вычисления еще не производились, то S = 0.
Затем вычисляется выражение под знаком суммы для i = 1, затем i = 2, 3, ... до 10 и каждый раз складывается с предыдущей частичной суммой S i-1. При этом получается новая частичная суммаS i. После этого i увеличивается на единицу и проверяется, не стало ли i > 10. Если еще меньше или равно 10, то вычисляется новая частичная сумма, в противном случае вычисление суммы будет закончено, и это значение выводится на печать.
Воспользуемся стандартной схемой циклического процесса, представленной на рис.6.1.
Блок 1 – блок подготовки к вычислению суммы, в котором задаются начальные значения параметра цикла и частичной суммы.
В блоке 2 производится вычисление выражения, стоящего под знаком суммы и сложение с предыдущей частичной суммойS i-1. В итоге получается новая частичная сумма
S i.
В блоке 3 происходит изменение параметра цикла (увеличение i на 1). Это блок подготовки к новому циклу.
Блок 4 – блок проверки окончания цикла. Необходимо проверить, стало ли i больше 10. Если стало, то цикл закончен, следующим должен выполняться блок печати. Если нет, то вычисление частичной суммы продолжается дальше, то есть выполняются блоки 2 и 3.
Проверка может осуществляться условным оператором IF, но для организации циклов в языке Паскаль специально предусмотрены три оператора цикла. Если количество повторений заранее известно, и параметр является целым числом, то целесообразно использовать оператор FOR, включающий в себя блоки 1, 3, 4. В этом случае в алгоритме можно применить блок «Модификация».
Алгоритм для примера с использованием оператора FOR приведен на рис.6.2. Варианты заданий – в табл.6.1.
Рис. 6.1. Блок-схема алгоритма циклического процесса
Рис. 6.2. Блок-схема алгоритма примера.
Таблица 6.1. Варианты заданий
№ вар. | Вычислить сумму | № вар. | Вычислить сумму |
1 | | 2 | |
3 | | 4 | |
5 | | 6 | |
7 | | 8 | |
9 | | 10 | |
11 | | 12 | |
13 | | 14 | |
15 | | 16 | |
17 | | 18 | |
19 | | 20 | |
21 | | 22 | |
№ вар. | Вычислить сумму | № вар. | Вычислить сумму |
23 | | 24 | |
25 | | 26 | |
27 | | 28 | |
29 | | 30 | |
Лабораторная работа № 4.
Циклы с заранее неизвестным числом повторений
Целью работы является освоение программирования алгоритмов с циклической структурой и выхода из цикла по условию, не зависящему от количества циклов. Примером такой задачи является вычисление суммы с бесконечным верхним пределом.
Проверка цикла осуществляется следующим образом. Так как выражение под знаком суммы постепенно убывает с ростом слагаемых в сумме (условие сходимости), то наступает момент, когда очередное слагаемое станет меньше наперед заданного числа (грубо говоря, точности вычисления сумм), и остальные слагаемые будут мало влиять на конечный результат. Поэтому, когда выражение под знаком суммы | f (i) | будет меньше , то вычисления прекращаются и предполагается, что сумма найдена с заданной точностью.
Так как количество слагаемых заранее неизвестно, то циклом FOR пользоваться нельзя. Для этих целей предназначаются циклические операторы WHILE и REPEAT. Необходимо помнить, что у этих операторов параметр цикла автоматически не изменяется, и его надо менять принудительно. Поэтому при составлении блок-схемы алгоритма блок «Модификация» не используется.
При вычислении суммы должен вычисляться факториал по формуле:
Где П – знак произведения (аналогично знаку суммы), то есть 5! = 1· 2· 3· 4· 5 = 120. Факториал можно вычислить отдельным циклом, а можно и в цикле вычисления суммы. Для этого вводится дополнительная переменная, например f = j !, и затем в цикле умножается на текущее значение j.
Кроме значения суммы на печать полезно вывести значение счетчика циклов, то есть узнать, из скольких слагаемых состоит сумма.
Варианты заданий приведены в табл.7.1.
Примечание. В языке Турбо Паскаль под переменные типа INTEGER выделяется два байта, и допустимые для них значения находятся в диапазоне только от -32768 до 32767. Поэтому число 10!, реально равное 3628800, в этом случае будет представлено как 24320. Таким образом, выражение под знаком суммы может никогда и не стать меньше заданной точности. Для работы с большими целыми числами рекомендуется использовать вещественный тип REAL с диапазоном представления от 2.9·10
-39 до 1.7·1038, или, в крайнем случае, целый тип LongInt с диапазоном от ‑2.147.483.648 до 2.147.483.647.
Таблица 7.1. Варианты заданий
№ вар. | Вычислить | При х, равном | Точность вычислений |
1 | | 0,149 | 10 -5 |
2 | | 5,99 | 10 -3 |
3 | | 3,1 | 10 -4 |
4 | | 1,91 | 10 -5 |
5 | | 1,42 | 10 -3 |
6 | | 0,99 | 10 -4 |
7 | | 1,51 | 10 -5 |
8 | | 3,48 | 10 -3 |
9 | | 7,55 | 10 -4 |
10 | | 2,15 | 10 -5 |
11 | | 0,81 | 10 -3 |
№ вар. | Вычислить | При х, равном | Точность вычислений |
12 | | 0,77 | 10 -4 |
13 | | 3,95 | 10 -5 |
14 | | 1,62 | 10 -3 |
15 | | 4,14 | 10 -4 |
16 | | 1,24 | 10 -5 |
17 | | 3,3 | 10 -3 |
18 | | 2,8 | 10 -4 |
19 | | 0,95 | 10 -5 |
20 | | 4,5 | 10 -3 |
21 | | 0,85 | 10 -4 |
22 | | 2,4 | 10 -5 |
23 | | 1,7 | 10 -3 |
№ вар. | Вычислить | При Х, равном | Точность вычислений |
24 | | 4,2 | 10 -4 |
25 | | 2,2 | 10 -5 |
26 | | 3,1 | 10 -3 |
27 | | 1 | 10 -4 |
28 | | 8,5 | 10 -5 |
29 | | 0,15 | 10 -3 |
30 | | 2,9 | 10 -4 |