КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Контрольная работа № 2. Программирование с использованием циклических алгоритмов
Задание 2.1. Циклы с известным числом повторений Целью работы является освоение программирования алгоритмов с циклической структурой, когда какой-либо участок программы выполняется определенное количество раз. Типичный пример циклического процесса – вычисление конечных сумм. При определении сумм многократно вычисляется выражение, стоящее под знаком суммы и складывается с предыдущей частичной суммой. Вычисления производятся до тех пор, пока не будут сложены выражения под знаком суммы для всех значений изменяющейся переменной. Пример: составить программу, вычисляющую значение суммы . Прежде чем вычислять выражение под знаком суммы и очередную частичную сумму, необходимо определить начальное значение параметра цикла (в данном случае 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, то вычисляется новая частичная сумма, в противном случае вычисление суммы будет закончено, и это значение выводится на печать. Воспользуемся стандартной схемой циклического процесса, представленной на рис. 11. Блок 2 – блок подготовки к вычислению суммы, в котором задаются начальные значения параметра цикла и частичной суммы.
Блок 3 – блок проверки окончания цикла. Необходимо проверить, стало ли i больше 10. Если стало, то цикл закончен, следующим должен выполняться блок печати. Если нет, то вычисление частичной суммы продолжается дальше, то есть выполняются блоки 4 и 5. В блоке 4 производится вычисление выражения, стоящего под знаком суммы и сложение с предыдущей частичной суммой S i-1. В итоге получается новая частичная сумма S i. В блоке 5 происходит изменение параметра цикла (увеличение i на 1). Это блок подготовки к новому циклу. Проверка может осуществляться условным оператором IF, но для организации циклов в языке Паскаль специально предусмотрены три оператора цикла. Если количество повторений заранее известно и параметр является целым числом, то целесообразно использовать оператор FOR, включающий в себя блоки 2, 3, 5. В этом случае в алгоритме можно применить блок «Модификация». Алгоритм для примера с использованием оператора FOR приведен на рис. 12. Варианты заданий – в табл. 3. Рис. 11. Блок-схема алгоритма циклического процесса Рис. 12. Блок-схема алгоритма примера. Таблица 3. Варианты заданий 2.1
Продолжение табл. 3 Задание 2.2. Двойные и кратные циклы Целью работы является освоение программирования алгоритмов с вложенными циклами. Пример такой задачи – вычисление двойной суммы. Пример: вычислить с точностью до 10-4.
Здесь внешней суммой является сумма по i, а внутренней – сумма по j. Можно рассматривать вычисление этих сумм отдельно, учитывая что вычисление внутренней суммы является частью вычисления внешней суммы, то есть телом внешнего цикла. Сами суммы в задании никак не обозначены, и им необходимо присвоить имена, которые могут быть относительно произвольные: SUM_IN ()внутренняя) и SUM_OUT (внешняя); SUMI и SUMO; S1 и S2 и другие. Так же обозначается и внутреннее слагаемое: SLAG, S и так далее. Внешняя сумма по i вычисляется так же, как и в задании 1. Так как используется счетчик циклов, и количество слагаемых определено, то для ее вычисления справедлив алгоритм, представленный на рис. 12, кроме блока 4. Блок 4 – это не обычное суммирование, а внутренний цикл по вычислению суммы по j. Таким образом блок 4 замещается несколькими блоками, производящими вычисление внутренней суммы. Говорят, что цикл (суммирование) по j вложен в цикл по i.
Внутренняя сумма по j является примером суммы с бесконечным верхним пределом. Проверка окончания цикла осуществляется следующим образом. Так как выражение под знаком суммы постепенно убывает с ростом слагаемых в сумме, то наступает момент, когда очередное слагаемое станет меньше наперед заданного числа e (грубо говоря, точности вычисления сумм), и остальные слагаемые будут мало влиять на конечный результат. Поэтому, когда выражение под знаком суммы | f (j) | будет меньше e, то вычисления прекращаются и предполагается, что сумма найдена с заданной точностью. Если возможны отрицательные значения под знаком суммы, то обязательно надо использовать функцию вычисления модуля, так как число -10 меньше 10-4 (0.0001), но заданная точность еще не достигнута. Так как количество слагаемых заранее неизвестно, то циклом FOR пользоваться нельзя. Для этих целей предназначаются циклические операторы WHILE (соответствует блок-схеме, приведенной на рис. 11) и REPEAT. Необходимо помнить, что у них параметр цикла автоматически не изменяется и его надо менять принудительно, а при составлении блок-схемы алгоритма вычисления внутренней суммы (вместо блока 4, рис. 12.) блок «Модификация» не используется. При вычислении суммы в некоторых вариантах должен вычисляться факториал по формуле: Где П – знак произведения (аналогично знаку суммы), то есть 5! = 1· 2· 3· 4· 5 = 120. Факториал можно вычислить отдельным циклом, третьим, а можно и прямо в цикле вычисления внутренней суммы. Для этого вводится дополнительная переменная, например f = j!, и затем в цикле умножается на текущее значение j. Кроме значения суммы на экран при отладке полезно вывести значение счетчика циклов, то есть узнать, из скольких слагаемых состоит каждая сумма. Примечание. В языке Турбо Паскаль под переменные типа INTEGER выделяется два байта, и допустимые для них значения находятся в диапазоне только от -32768 до 32767. Поэтому число 10!, реально равное 3628800, в этом случае будет представлено как 24320. Таким образом выражение под знаком суммы может никогда и не стать меньше заданной точности. Для работы с большими целыми числами (факториалом) во избежание переполнения рекомендуется использовать вещественный тип Real с диапазоном представления от 2.9·10-39 до 1.7·1038, или целый тип LongInt с диапазоном от -2.147.483.648 до 2.147.483.647. При составлении программы точность обязательно должна задаваться в форме вещественного числа с плавающей точкой, а вывод суммы выполняться с фиксированной точкой и количеством знаков дробной части, соответствующим заданной точности. Варианты заданий контрольной работы приведены в табл. 4. Таблица 4. Варианты заданий 2.2
Продолжение табл. 4
Окончание табл. 4
ПРИЛОЖЕНИЕ А Таблица 5. Основные команды интегрированной инструментальной оболочки Турбо Паскаль 7.0
Продолжение табл. 5
Окончание табл. 5
ПРИЛОЖЕНИЕ Б Таблица 6. Команды редактора текста. Управление курсором
Продолжение табл. 6
Продолжение табл. 6
Окончание табл. 6
Список литературы 1. Зуев Е.А. Язык программирования Turbo Pascal 6.0, 7.0. – М.: Веста, Радио и связь, 1993. 2. Климова Л.М. PASCAL 7.0: Практическое программирование. Решение типовых задач.: Учебное пособие. – М.,: 2000. 3. Немюгин С.А. TURBO PASCAL – СПб, 2000. 4. Турбо Паскаль 7.0. Самоучитель. – СПб.: Питер; К.: Издательская группа BHV, 2002. – 416 с.: ил. 5. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. – М.: «Нолидж», 1999. – 616 с., ил. 6. Федоренко Ю. Алгоритмы и программы на Turbo Pascal. Учеб. Курс. – СПб.: Питер, 2001.
Дата добавления: 2014-11-16; Просмотров: 1717; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |