В.К.Алиев Информатика в задачах, примерах, алrоритмах солон-р Москва 2001 В.К. Алиев Информатика в задачах, примерах, алгоритмах Настоящий сборник задач представляет собой практическое пособие для учащихся средних и высших учебных заведений, изучающих инфор- матику. Особенность сборника в том, что он позволяет научиться создавать собственные алгоритмы решения задач, а также дает возможность препо- давателю информатики в процессе обучения использовать индивиду- альный подход к ученикам без дополнительных затрат времени. Автор сознательно приводит в качестве ответов только численные зна- чения, так как существует множество алгоритмов решения каждой задачи. Читатель может использовать в процессе работы с задачником любые языки программирования. В частности, решение задач из сборника помо- жет приобрести практические навыки написания макросов в приложени- ях "Microsoft office" на языке Visual Basic Application. 1 Ответственный за выпуск С. Иванов Верстка А. Виноградов Обложка Е. Холмский ISBN 5-93455-119-1 ©СОЛОН-Р2001 © В. К. Алиев Содержание or автора . . 5 Предисловие 7 1. Aлroриrмы 9 Применение аппарата схем Д/lЯ ОШlсания aлroРlПМов 9 2. Переменwaя . . . . . . . . 12 Задачи. . . . . . . . . . . 12 З. Арифмemческие операции 13 Задачи . . . . . . . . 14 4. Линейные проrpaммы 26 4.1. Функции . . . . 27 ТриroномеТ»ические 27 Связь меж,ау обраrnьrми триroнометрическими фуНКЦИЯМИ 27 Матемаmческне. . . . . . . . . . . 27 27 Формат записи определения функции Зцдачи . . . . . . . 32 s. . 42 УсловlIWЙ оператор Задачи . .. . . .. . Ц 6. CтpyJrrypa с условием 54 З~. ~ 7. Циклы. S8 7.1. Числовые последовательности. Циклы с параметром . S8 Задачи. . . . . . . . . . . . . . . . . 60 Факториал .. .. .. .. . .. . .. . 64 7.2. циIQlы с условием. Числовые ряды 6S Задачи. . . . . . . . . . . . . . . . . 66 7.3. Бесконечные числовые ряды. 68 Пределы числовых последовательностей Задачи . . . . . . . . . 69 7.4. Графики фymщий . 71 . . . . . . . . . 73 Задачи з Содержание 7.5. Решение уравнений 88 Приближенные методы решения алгебраических уравнений . .. 88 Задачи 90 8. Логика 92 Задачи 94 8.1. Логические операции (булевы операции) 95 8.2. Основные законы логики 107 Задачи 108 9. Циклы и массивы 116 9.1. Заполнение массива 118 Сортировка массивов 119 f Задачи 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 От автора ОсобеннOCПf преподавания информатики в школах, КOJVIеджах, на различных курсах и в вузах с неумолимой логикой привели ме ю1 к необходимости написания данного сборника задач. Основная трудность закmoчалась в ТОМ, чтобы читатель, не об ладая достаточно большим OIlЫТOM написания и отладки про трамм, смог самостоятельно проверmь праВИ1IЪность созданного им алгоритма. Думаю, что решение, предложенное в данной кни - ге, достаточно эффективно, ведь подавляющее большинство за дач данного сборника имеет ответы не в виде уже r0т080Й про траммы, которая реализует не который алгорmм, а конхреПIые, как правило, числовые данные, позволяющие протестировать на писанную проrpaмму. Такой подход, насколько известно автору, еще никем не примеЮ1ЛСЯ. и весьма привлекателен по несКОЛЫOfм причинзм. Во-первых, читателю предостааляется возможность составить собственный алгоритм, и нет возможности, а значит и соблазна, что-то п6fсмотреть или списать. Во-вторых, автор не давпг на творчество читателя (плохой ал горитм составлен или хороший), пк как еllИнственным критерием придуманного алгоритма являетСЯ его правильность, то есть полу чение правильного ответа. В-третьих, решение данных задач не зависит от языка проrpам мировзния. Ответы будyr точно такими ж.е, если проrpaмма будет написана на языках Паскаль, Бейсик или на Си++. И хотя лриве денные примеры написаны на языках Qbasic и VisualBasic, это сде лано лишь потому, что в большинстве учеБиых заведений изучают Бейсик как самый доступный для понимания алгоритмический язык. В-четвертых, данный задачник позволяет преподаватemo давать индивидуальные Задания своим ученикам, что является достаточ но важным моментом в обучении предмета информатики и его ра:щела Алгоритмы. 3адачних разбит на ращелы, которые соответствуют тематиче ским разделам предмета "Основы информатики и вычислительной ~ / 5 Информатика в задачах, примерах, алгоритмах Автор старался сделать данную книгу целостной и самодоста- точной, но для более полного понимания приводимых примеров программ рекомендовал бы обратиться к базовой книге по Бейси- ку — "Языки Бейсик" (В.К.Алиев). Автор выражает большую благодарность Николаю Николаеви- чу Ставнистому за предоставленную возможность использовать часть задач из его книги "Компьютерная математика для школь- ников", за его активное участие в обсуждении идеологии данного задачника, содержательные советы и критические замечания, вы- сказанные по существу содержания задач на стадии их отбора, что привело к методологическому единству указанной книги Н.Н.Ставнистого и данного задачника, в результате чего выиграли оба вышеупомянутых учебника. Автор заранее приносит свои извинения за возможные ошиб- ки, допущенные в ответах некоторых задач, и будет весьма при- знателен за любые замечания. Валерий Алиев e-mail: [email protected] Предисловие Широкая компьютеризация — одна из актуальных проблем со- временного общественного прогресса. Технической основой ее ре- шения является наличие современных компьютеров и развитых телекоммуникационных средств связи, позволяющих создавать эффективные информационно-вычислительные сети различного уровня и назначения. Важнейшая составляющая процесса компь- ютеризации — наличие развитых программных средств, предна- значенных для обслуживания различных областей человеческой деятельности, включая средства поддержки эксплуатации самих вычислительных средств в различных режимах обработки инфор- мации и телекоммуникации. Массовое развитие ПК и программных средств создало у мно- гих пользователей несколько искаженное представление о совре- менном состоянии прикладной информатики, тенденциях ее раз- вития и перспективах. Область применения вычислительной тех- ники определяется существующими программными средствами. В то же время подготовка специалистов — разработчиков нового программного обеспечения связана с трудностями понимания и усвоения понятия алгоритма как основы обработки информации машинным способом. Поскольку любая программа является алго- ритмом, записанном на языке программирования, постольку обу- чение навыкам программирования на алгоритмическом языке — наиболее действенный способ обучения алгоритмизации. Книга, по сути, является сборником задач по программирова- нию. И хотя примеры и типовые алгоритмы приводятся на алго- ритмическом языке Basic и Visual Basic, это не ограничивает ис- пользование данной книги при изучении других алгоритмических языков, поскольку решение задачи не зависит от языка, на кото- ром написана программа. При написании примеров большое вни- мание уделялось опыту применения типовых и наиболее простых для понимания сути процесса алгоритмов, возможно даже в ущерб эффективности (так называемое "решение в лоб"). Книга состоит из одиннадцати глав (более 300 задач) и освеща- ет весьма обширный материал по основным разделам современ- Информатика в задачах, примерах, алгоритмах ной прикладной информатики. В начале каждой главы приводятся краткие теоретические сведения, необходимые для решения задач. Как правило, подавляющее большинство современных компь- ютерных курсов рассчитано на подготовку слушателей к работе с конкретными программными средствами для IBM-совместимых ПК. При этом у начинающего слушателя нередко формируется искаженное представление о современной прикладной информа- тике, сводящееся сугубо к идеологии персонального компьютера. При таком подходе вырабатывается однобокое отношение к дан- ной сфере человеческой деятельности. Настоящая книга в опреде- ленной мере пытается устранить указанные недостатки. Для решения приведенных задач необходимы знания в объеме школьного курса математики. Поэтому книга может стать полез- ным пособием по курсу "Основы информатики и вычислительной техники" для учащихся вузов и колледжей естественно-научного профиля, общеобразовательных и специализированных школ, а также для самостоятельно осваивающих компьютерный мир. За- казчик также может быть использован при самостоятельном изу- чении программирования и для практикумов по программирова- нию в вузах. Член-корреспондент Академии информатизации образования, канд. физ.-мат. наук, доцент, зав. кафедрой технологий открытого образования Дальневосточного государственного университета, отличник народного образования И.А. Морев 8 1. Алгоритмы Алгоритм — последовательность инструкций исполнителю для решения поставленной задачи (от англ. algorithm; назван в честь великого узбекского математика IX века Аль Хорезми). Существу- ют разные способы задания алгоритмов: 1) словесный — позволяет описать алгоритм с помощью слов и предложений. 2) графический — когда каждое действие записывается в соот- ветствующей геометрической фигуре. Применение аппарата схем для описания алгоритмов Графическое представление хода решения задачи — самый на- глядный способ записи алгоритма. Блок-схемы и структурограммы Насси-Шнейдермана — наиболее распространенный способ графиче- ского изображения алгоритмов. Автор отдает предпочтение структу- рограммам, так как они полностью соответствуют принципам струк- турного программирования. Ниже даны обозначения и соответствие блоков блок-схемы и структурограммы. Блок Блок-схема Структурограмма Блок начала программы НАЧАЛО Блок конца программы Используются для обозначе- ния начала программы и ее КОНЕЦ окончания, для входа в под- программу и выхода из нее Информатика в задачах, примерах, алгоритмах Блок Блок-схема Структурограмма Блок ввода-вывода ВВЕСТИ Обозначает момент ввода ВЕСТИ а, в, с данных в переменные с ука- f (ВЫВЕСТИ) занными именами или мо- /а.Ь.с ВЫВЕСТИ мент вывода значений ука- занных переменных а, в, с Блок действия (операция присваивания) | ДЕЙСТВИЕ | оБблроакб,о втк као тдоарнонмы хп риои срхаоздмиет- |I vт_",3ft° I| Вв и зп яретарьзе мчмиеесснлтниоот йь3 8еYго ДЕЙСТВИЕ щение результатов в пере- |Y-IR*V I Взять число 38, ум- I' I ножить его на зна- менные с указанными име- чение переменной Y и результат размес- нами тить в переменной Y Блок следования Действие 1 Действие 1 Объединение нескольких Действие 2 Действие 2 следующих друг за другом блоков действия Действие 3 Действие 3 Блок выбора В зависимости от результата N. Усломч jS проверки условия выполня- Да N^ yS Нет ются только действия ветки "Да" или только действия Действие 1 Действие 3 ветки "Нет". Одна из веток Действие 2 Действие 4 может отсутствовать Блок множественного выбора Выбор р<^ы6ОР^>-| В зависимости от результа- 1 тов выбора будет выполнено | Действие 1111 Действие 21 ие одно из перечисленных дей- 1 ств | Действие 31 й ствий Де / \ 10