Информатика в задачах, примерах, алгоритмах
.pdfВ. К. Алиев
Информатика в задачах, примерах,
алгоритмах
СОЛОН-Р Москва 2021
В. К. Алиев
Информатика в задачах, примерах,
алгоритмах
Настоящий сборник задач представляет собой практическое пособие для учащихся средних и высших учебных заведений, изучающих информатику.
Особенность сборника в том, что он позволяет научиться создавать собственные алгоритмы решения задач, а также дает возможность преподавателю информатики в процессе обучения использовать индивидуальный подход к ученикам без дополнительных затрат времени.
Автор сознательно приводит в качестве ответов только численные зна- чения, так как существует множество алгоритмов решения каждой задачи. Читатель может использовать в процессе работы с задачником любые языки программирования. В частности, решение задач из сборника поможет приобрести практические навыки написания макросов в приложениях “Microsoft office” на языке Visual Basic Application.
Ответственный за выпуск |
С. Иванов |
Верстка |
А. Виноградов |
Обложка |
Е. Холмский |
|
|
ISBN 5-93455-119-1 |
© СОЛОН-Р 202109 |
|
© В. К. Алиев |
Содержание
От автора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.Алгоритмы . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Применение аппарата схем для описания алгоритмов . . . . . . . 9
2.Переменная . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.Арифметические операции . . . . . . . . . . . . . . . . . . . 13 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.Линейные программы . . . . . . . . . . . . . . . . . . . . . . 26
4.1. Функции . . . . . . . . . . . . . |
. . . . . . . . . . |
. . . |
27 |
Тригонометрические . . . . . . . . |
. . . . . . . . . . . . . 27 |
||
Связь между обратными тригонометрическими функциями |
. . |
27 |
|
Математические . . . . . . . . . . . |
. . . . . . . . . . |
. . . |
27 |
Формат записи определения функции |
. . . . . . . . . . |
. . . |
27 |
Задачи . . . . . . . . . . . . . . . . . |
. . . . . . . . . . |
. . . |
32 |
5.Условный оператор . . . . . . . . . . . . . . . . . . . . . . . 42 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.Структура с условием . . . . . . . . . . . . . . . . . . . . . . 54 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.Циклы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.1.Числовые последовательности. Циклы с параметром . . . . . 58
Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Факториал . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 7.2. Циклы с условием. Числовые ряды . . . . . . . . . . . . . 65 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.3.Бесконечные числовые ряды.
Пределы числовых последовательностей . . . . . . . . . . . 68
Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 7.4. Графики функций . . . . . . . . . . . . . . . . . . . . . . 71 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3
Содержание
7.5. Решение уравнений . . . . . . . . . . . . . . . . . . . . . 88 Приближенные методы решения алгебраических уравнений . . . 88 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8.Логика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
8.1.Логические операции (булевы операции) . . . . . . . . . . 95
8.2.Основные законы логики . . . . . . . . . . . . . . . . . . 107
Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
9. Циклы и массивы . . . |
. . |
. |
. |
. |
. |
. . . . . |
. |
. |
. |
. |
. . . . . 116 |
|||||||||
9.1. Заполнение массива |
. . . . . . . . . . . |
. |
. |
. |
. |
. . . . . 118 |
||||||||||||||
Сортировка массивов . . . . . . . . |
. |
. |
. |
. . . . . . |
. |
. |
. |
. |
119 |
|||||||||||
Задачи . . . . . . . . . |
. . |
. |
. |
. |
. |
. |
. |
. |
. |
. . . . . . |
. |
. |
. |
. |
122 |
|||||
10. Работа с символьной информацией . . . . . . . . . . . . . . 124 Символьные функции . . . . . . . . . . . . . . . . . . . . . 125 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
11. Файлы. Работа с файлами . |
. . . . . . . . . . . . . . . . . |
130 |
11.1. Средства обработки файлов |
. . . . . . . . . . . . . . . . 131 |
|
11.2. Оператор OPEN . . . . . . . . . . . . . . . . . . . . . . 133 |
||
11.3. Оператор CLOSE . . . . |
. . . . . . . . . . . . . . . . . |
135 |
11.4. Оператор WRITE# . . . |
. . . . . . . . . . . . . . . . . |
135 |
11.5. Оператор INPUT# . . . |
. . . . . . . . . . . . . . . . . |
136 |
11.6. Оператор PRINT# USING |
. . . . . . . . . . . . . . . . |
137 |
11.7.Оператор PRINT # . . . . . . . . . . . . . . . . . . . . 138
11.8.Функция EOF . . . . . . . . . . . . . . . . . . . . . . . 139
Задачи . . . . . . |
. |
. . |
. . . . . . . . . . . . . . . . . . . . |
142 |
12. Разные задачи . |
. |
. . |
. . . . . . . . . . . . . . . . . . . . |
142 |
4
От автора
Особенности преподавания информатики в школах, колледжах, на различных курсах и в вузах с неумолимой логикой привели меня к необходимости написания данного сборника задач.
Основная трудность заключалась в том, чтобы читатель, не обладая достаточно большим опытом написания и отладки программ, смог самостоятельно проверить правильность созданного им алгоритма. Думаю, что решение, предложенное в данной книге, достаточно эффективно, — ведь подавляющее большинство задач данного сборника имеет ответы не в виде уже готовой программы, которая реализует некоторый алгоритм, а конкретные, как правило, числовые данные, позволяющие протестировать написанную программу. Такой подход, насколько известно автору, еще никем не применялся, и весьма привлекателен по нескольким причинам.
Во-первых, читателю предоставляется возможность составить собственный алгоритм, и нет возможности, а значит и соблазна, что-то подсмотреть или списать.
Во-вторых, автор не давит на творчество читателя (плохой алгоритм составлен или хороший), так как единственным критерием придуманного алгоритма является его правильность, то есть полу- чение правильного ответа.
В-третьих, решение данных задач не зависит от языка программирования. Ответы будут точно такими же, если программа будет написана на языках Паскаль, Бейсик или на Си++. И хотя приведенные примеры написаны на языках Qbаsic и VisualBаsic, это сделано лишь потому, что в большинстве учебных заведений изучают Бейсик как самый доступный для понимания алгоритмический язык.
В-четвертых, данный задачник позволяет преподавателю давать индивидуальные задания своим ученикам, что является достаточ- но важным моментом в обучении предмета информатики и его раздела Алгоритмы.
Задачник разбит на разделы, которые соответствуют тематиче- ским разделам предмета “Основы информатики и вычислительной техники”.
5
Информатика в задачах, примерах, алгоритмах
Автор старался сделать данную книгу целостной и самодостаточной, но для более полного понимания приводимых примеров программ рекомендовал бы обратиться к базовой книге по Бейсику — “Языки Бейсик” (В.К.Алиев).
Автор выражает большую благодарность Николаю Николаеви- чу Ставнистому за предоставленную возможность использовать часть задач из его книги “Компьютерная математика для школьников”, за его активное участие в обсуждении идеологии данного задачника, содержательные советы и критические замечания, высказанные по существу содержания задач на стадии их отбора, что привело к методологическому единству указанной книги Н.Н.Ставнистого и данного задачника, в результате чего выиграли оба вышеупомянутых учебника.
Автор заранее приносит свои извинения за возможные ошибки, допущенные в ответах некоторых задач, и будет весьма признателен за любые замечания.
Валерий Алиев e-mail: vkaliev@online.nakhodka.ru
6
Предисловие
Широкая компьютеризация — одна из актуальных проблем современного общественного прогресса. Технической основой ее решения является наличие современных компьютеров и развитых телекоммуникационных средств связи, позволяющих создавать эффективные информационно-вычислительные сети различного уровня и назначения. Важнейшая составляющая процесса компьютеризации — наличие развитых программных средств, предназначенных для обслуживания различных областей человеческой деятельности, включая средства поддержки эксплуатации самих вычислительных средств в различных режимах обработки информации и телекоммуникации.
Массовое развитие ПК и программных средств создало у многих пользователей несколько искаженное представление о современном состоянии прикладной информатики, тенденциях ее развития и перспективах. Область применения вычислительной техники определяется существующими программными средствами. В то же время подготовка специалистов — разработчиков нового программного обеспечения связана с трудностями понимания и усвоения понятия алгоритма как основы обработки информации машинным способом. Поскольку любая программа является алгоритмом, записанном на языке программирования, постольку обу- чение навыкам программирования на алгоритмическом языке — наиболее действенный способ обучения алгоритмизации.
Книга, по сути, является сборником задач по программированию. И хотя примеры и типовые алгоритмы приводятся на алгоритмическом языке Basic и Visual Basic, это не ограничивает использование данной книги при изучении других алгоритмических языков, поскольку решение задачи не зависит от языка, на котором написана программа. При написании примеров большое внимание уделялось опыту применения типовых и наиболее простых для понимания сути процесса алгоритмов, возможно даже в ущерб эффективности (так называемое “решение в лоб”).
Книга состоит из одиннадцати глав (более 300 задач) и освещает весьма обширный материал по основным разделам современ-
7
Информатика в задачах, примерах, алгоритмах
ной прикладной информатики. В начале каждой главы приводятся краткие теоретические сведения, необходимые для решения задач.
Как правило, подавляющее большинство современных компьютерных курсов рассчитано на подготовку слушателей к работе с конкретными программными средствами для IBM-совместимых ПК. При этом у начинающего слушателя нередко формируется искаженное представление о современной прикладной информатике, сводящееся сугубо к идеологии персонального компьютера. При таком подходе вырабатывается однобокое отношение к данной сфере человеческой деятельности. Настоящая книга в определенной мере пытается устранить указанные недостатки.
Для решения приведенных задач необходимы знания в объеме школьного курса математики. Поэтому книга может стать полезным пособием по курсу “Основы информатики и вычислительной техники” для учащихся вузов и колледжей естественно-научного профиля, общеобразовательных и специализированных школ, а также для самостоятельно осваивающих компьютерный мир. Заказчик также может быть использован при самостоятельном изу- чении программирования и для практикумов по программированию в вузах.
Член-корреспондент Академии информатизации образования, канд. физ.-мат. наук, доцент, зав. кафедрой технологий открытого образования Дальневосточного государственного университета, отличник народного образования И.А. Морев
8
1. Алгоритмы
Алгоритм — последовательность инструкций исполнителю для решения поставленной задачи (от англ. аlgorithm; назван в честь великого узбекского математика IX века Аль Хорезми). Существуют разные способы задания алгоритмов:
1)словесный — позволяет описать алгоритм с помощью слов и предложений.
2)графический — когда каждое действие записывается в соответствующей геометрической фигуре.
Применение аппарата схем для описания алгоритмов
Графическое представление хода решения задачи — самый наглядный способ записи алгоритма. Блок-схемы и структурограммы Насси-Шнейдермана — наиболее распространенный способ графиче- ского изображения алгоритмов. Автор отдает предпочтение структурограммам, так как они полностью соответствуют принципам структурного программирования. Ниже даны обозначения и соответствие блоков блок-схемы и структурограммы.
Áëîê |
Блок-схема |
Структурограмма |
|
|
|
|
|
|
|
|
|
|
|
|
Блок начала программы |
|
|
НАЧАЛО |
|
|
|
|
|
|
|
|
|
|
|
Блок конца программы |
|
|
|
|
Используются для обозначе- |
|
|
|
|
|
|
КОНЕЦ |
|
|
ния начала программы и ее |
|
|
|
|
окончания, для входа в под- |
|
|
|
|
|
|
|
|
|
программу и выхода из нее |
|
|
|
|
|
|
|
|
|
9
Информатика в задачах, примерах, алгоритмах
Áëîê |
Блок-схема |
Структурограмма |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
Блок ввода-вывода |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ВВЕСТИ |
|
|
|
Обозначает момент |
ввода |
|
|
|
|
|
|
||
|
|
|
|
|
à, â, ñ |
|
|
||
данных в переменные с ука- |
|
|
|
|
|
|
|||
занными именами или мо- |
|
|
|
|
|
ВЫВЕСТИ |
|
|
|
мент вывода значений ука- |
|
|
|
|
|
|
|||
|
|
|
|
|
à, â, ñ |
|
|
||
занных переменных |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Блок действия (операция |
|
|
|
|
|
|
|
||
присваивания) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Блок, в котором происходит |
|
|
|
|
|
|
|
|
|
|
|
|
|
ДЕЙСТВИЕ |
|
|
|||
обработка данных и разме- |
|
|
|
|
|
|
|||
щение результатов в пере- |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
||
менные с указанными име- |
|
|
|
|
|
|
|
|
|
íàìè |
|
|
|
|
|
|
|
|
|
Блок следования
Объединение нескольких следующих друг за другом блоков действия
Блок выбора
В зависимости от результата проверки условия выполняются только действия ветки “Да” или только действия ветки “Нет”. Одна из веток может отсутствовать
Блок множественного выбора
В зависимости от результатов выбора будет выполнено одно из перечисленных действий
10
