Государственное автономное образовательное учреждение высшего профессионального образования Тюменской области «Тюменская государственная академия мировой экономики, управления и права» 2.5. Реализация образовательных программ СМК – РОП - ООП - 2.5.-2012 Основы программирования СОГЛАСОВАНО Проректор по учебной работе _______________ Т.А.Кольцова «___»_______________2012 г. УТВЕРЖДЕНО Решением Учёного совета (протокол №11 от «27» июня 2012 г.) О.Н. Вождаева ОСНОВЫ ПРОГРАММИРОВАНИЯ Рабочая программа дисциплины Специальность 080801.65 «Прикладная информатика в экономике» Форма обучения очная, заочная Тюмень 2012 ББК 32.973-018.2 М 90 Основы программирования [Текст]: рабочая программа дисциплины. Тюмень: ТГАМЭУП, 2012. 87 с. Рабочая программа дисциплины составлена в соответствии с учебными планами специальности 080801 «Прикладная информатика в экономике». Рабочая программа дисциплины содержит: организационно-методический раздел дисциплины, объем дисциплины, виды учебной работы и формы контроля в соответсвии с учебным планом специальности по формам обучения, тематический план дисциплины, содержание дисциплины, планы семинарских (практических) занятий, контрольная работа для студентов заочной формы обучения, учебно-методический материалы по дисциплине, формы текущего, промежуточного, рубежного и итогового контроля, самостоятельная работа студентов. Рабочая программа дисциплины одобрена на заседании кафедры математики и информатики (протокол №8 от 28.05.2012), печатается по решению Учебнометодического совета (протокол заседания УМС №10 от 20.06.2012). Рецензенты: Т. Г Латфуллин, доктор ф-м. наук, профессор кафедры математического анализа ТГУ Д. К. Беляков, к.с.н., доцент кафедры МиИ ТГАМЭУП © ТГАМЭУП, 2012 © О.Н. Вождаева, 2012 2 1. ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЙ РАЗДЕЛ ДИСЦИПЛИНЫ Цель и задачи дисциплины Цель курса «Основы программирования» – приобретение студентами базовых теоретических знаний и практических навыков при программировании на языках высшего уровня. Достижение поставленной цели обеспечивается решением следующих задач курса: 1. Знакомство с возможностями среды программирования Borland Pascal: редактор текста, компилятор, отладчик. 2. Изучение основ программирования на языке Pascal: структура программы, стандартные типы данных. 3. Изучение основных структур и применение их на практике: итерации, ветвления, повторения, процедуры; 4. Обучение основным приемам решения задач; 5. Изучение сложных, пользовательских типов данных, файловых типов; 6. Программирование рекурсивных алгоритмов; 7. Конструирование модульных программ; 8. Работа с графическими объектами. Место дисциплины в профессиональной подготовке выпускников Данный курс тесно связан с другими дисциплинами учебного плана: – технология программирования и т.д. и позволяет студентам учится находить необходимые пути решения поставленных задач в виде реализации программ. Курс позволяет студенту лучше изучить смежные дисциплины. Для изучения дисциплины необходимы знания по высшей математике, алгебре, геометрии, черчению, статистике, логике и др. Требования к уровню освоения курса В ходе изучения курса «Основы программирования» студенты должны – а) знать: методы программирования; создание алгоритма решения программы; основную цель и задачи программирования; применимость основ программирования для дальнейшей деятельности; особенности программирования; методику программирования; порядок выполнения программ. б) уметь: 3 применять имеющиеся знания для решения практических задач и тестовых заданий; связывать программирование с математическими моделями; пользоваться различными режимами при работе с языками программирования. в) иметь представление: о других существующих языках программирования; о взаимосвязи дисциплины с другими смежными дисциплинами; о целях применения различных методик программирования в конкретных ситуациях и в зависимости от поставленной цели. 2. ОБЪЕМ ДИСЦИПЛИНЫ, ВИДЫ УЧЕБНОЙ РАБОТЫ И ФОРМЫ КОНТРОЛЯ В СООТВЕТСТВИИ С УЧЕБНЫМ ПЛАНОМ СПЕЦИАЛЬНОСТЕЙ ПО ФОРМАМ ОБУЧЕНИЯ очная форма обучения Общие часы – 152 Семинарские занятия – 72 Аудиторные занятия – 90 Самостоятельная работа – 62 Лекции – 18 Формы текущего и итогового контроля – выполнение упражнений, решение задач, курсовая работа, экзамен. Заочная форма обучения Общие часы – 152 Семинарские занятия – 16 Аудиторные занятия – 16 Самостоятельная работа – 136 Формы текущего и итогового контроля –выполнение упражнений, решение задач, курсовая работа, зачет. 3. ТЕМАТИЧЕСКИЕ ПЛАНЫ Очная форма обучения Темы Общее кол–во часов Аудиторное кол–во часов всего лекц. семин. СРС Тема 1. Историческая справка 3 1 0,5 0,5 2 с преп. 2 Тема 2. Бинарная арифметика 3 1 0,5 0,5 2 2 0 Тема 3. Система стандартных скалярных типов языка 3,5 1,5 0,5 1 2 2 0 Тема 4. Структура блока описания программы 3,5 1,5 0,5 1 2 2 0 Тема 5. Совместимость типов 7 5 1 4 2 2 0 Тема 6. Организация ветвлений в 6 4 1 3 2 2 0 4 всего без преп. 0 программе Тема 7. Операторы цикла 12 6 2 4 6 6 0 Тема8. Процедуры и функции 6 3 1 2 3 3 0 Тема 9. Рекурсия явная и косвенная 7 3 1 2 4 4 0 Тема 10. Структурированные типы данных. Массивы 20 12 2 10 8 8 0 Тема 11. Структурированные типы данных. Множества. Строки 16 10 2 8 6 6 0 Тема 12. Тип запись 13 8 2 6 5 5 0 Тема 13. Файловые типы 4,5 2,5 0,5 2 2 2 0 Тема 14. Файлы типизированные 5,5 3,5 0,5 3 2 2 0 Тема 15. Файлы текстовые 5,5 3,5 0,5 3 2 2 0 Тема 16. Файлы нетипизированные 4,5 2,5 0,5 2 2 2 0 Тема 17. Модули Pascal 15 11 1 10 4 4 0 Тема 18. Графика Pascal 17 11 1 10 6 6 0 Всего 152 90 18 72 62 62 0 Заочная форма обучения Темы Аудиторное кол–во часов всего лекции семинары СРС 0,25 0 0,25 2,75 3 0,25 0 0,25 2,75 Тема 3. Система стандартных скалярных типов языка 3,5 0,5 0 0,5 3 Тема 4. Структура блока описания программы 3,5 0,5 0 0,5 3 Тема 5. Совместимость типов 7 0,5 0 0,5 6,5 Тема 6. Организация ветвлений в программе 6 1 0 1 5 Тема 7. Операторы цикла 12 1 0 1 11 Тема8. Процедуры и функции 6 1 0 1 5 Тема 9. Рекурсия явная и косвенная 7 1 0 1 6 Тема 10. Структурированные типы данных. Массивы 20 2 0 2 18 Тема 11. Структурированные типы данных. Множества. Строки 16 2 0 2 14 Тема 12. Тип запись 13 2 0 2 11 Тема 13. Файловые типы 4,5 0,5 0 0,5 4 Тема 14. Файлы типизированные 5,5 0,5 0 0,5 5 Тема 1. Историческая справка Тема 2. Бинарная арифметика Общее кол–во часов 3 5 Тема 15. Файлы текстовые 5,5 0,5 0 0,5 5 Тема 16. Файлы нетипизированные 4,5 0,5 0 0,5 4 Тема 17. Модули Pascal 15 1 0 1 14 Тема 18. Графика Pascal 17 1 0 1 16 Всего 152 16 0 16 136 4. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ Тема 1. Историческая справка Развитие языков программирования высокого уровня. Концепции структурного программирования. Развитие интегрированной среды (IDE) Pascal. Тема 2. Бинарная арифметика Представление целых чисел в двоичном формате, в шестнадцатеричном формате. Операции сложения, умножения. Битовая арифметика: NOT, OR, AND, XOR, SHL, SHR. Тема 3. Система стандартных скалярных типов языка Целые типы. Расширение стандартных типов Паскаля: ShortInt, Byte, Integer, Word, LongInt. Вещественные типы. Запись вещественных чисел в экспоненциальной форме. Расширение стандартных типов Паскаля: Real, Single, Double, Extended, Comp. Символьный тип. Способы записи символов в языке. Таблица ASCII. Логический тип. Перечислимый тип. Ограниченный тип (диапазон). Основные отношения, операции и функции. Выражения. Арифметические операции и целочисленное деление. Логические операции. Приоритет операций и отношений в выражениях. Математические функции. Преобразования типов в выражениях Тема 4. Структура блока описания программы Понятие именованной константы, особенности использования констант. Конструирование новых скалярных типов. Тема 5. Совместимость типов Понятие переменной. Оператор присваивания. Понятие совместимости типов (по присваиванию). Процедурные операторы. Процедуры ввода и вывода. Различие процедур READ и READLN при чтении с клавиатуры. Различие процедур Write и Writeln при выводе данных на экран. Формат данных в процедуре Wtiteln. Тема 6. Организация ветвлений в программе 6 Простой оператор,составной оператор, структурный оператор. Условный оператор. Оператор выбора. Тема 7. Операторы цикла Циклы с предусловием. Циклы с постусловием. Циклы с заданным числом итераций. Тема 8. Процедуры и функции Структура процедуры. Формальные параметры: параметр-значение, параметр-переменная. Различие в передаче фактических переменных в процедуру по значению и по адресу (ссылке). Глобальные и локальные переменные. Правила локализации переменных. Тема 9. Рекурсия явная и косвенная Простейшие примеры рекурсивных программ: вычисление факториала, числа Фибоначчи. Тема 10. Структурированные типы данных. Массивы Массивы. Одномерные, многомерные массивы. Возможные типы индексов. Определение числа элементов массива по типу индекса. Допустимые операции с массивами. Понятие эквивалентности типов. Тема 11. Структурированные типы данных. Множества. Строки Процедуры и функции для работы со строками. Операции с множествами: объединение, пересечение, разность, сравнение, вхождение. Тема 12. Тип запись Оператор присоединения With. Записи с вариантами. Тема 13. Файловые типы Процедуры и функции для работы с файлами любых типов: Assing, Reset, Rewrite,Close, Rename, Erase, Eof, IoResult. Обработка ошибок ввода-вывода. Опции компиляции {$I-} {$I+}.Rewrite,Close, Rename, Erase, Eof, IoResult. Тема 14. Файлы типизированные Процедуры и функции для работы с типизированными файлами: Reset, Rewrite, Read, Write, FileSize, FilePos, Seek, Truncate. Пример стандартных возможностей управления базами данных: создание базы данных, передвижение по базам данных, редактирование текущей записи, поиск по критерию, удаление записи, восстановление записей. Тема 15. Файлы текстовые Процедуры и функции для работы с текстовыми файлами: Reset, Rewrite, Append, Eoln, SeekEoln, SeekEof, Read, Write, Readln, Writeln, SetTextBuf. Пример стандартных возможностей редактирования текстов: вставить строки после строки, удалить строки, заменить строки. Стандартные файлы вводавывода Input, Output. Тема 16. Файлы нетипизированные 7 Процедуры для работы с нетипизированными файлами: Reset, Rewrite, BlockRead, BlockWrite. Особенности работы процедур BlockRead, BlockWrite с четвертым параметром. Примеры стандартных задач использования бинарных файлов: копирование файлов, упаковка записей с использованием дескрипторов. Логические устройства для стандартных аппаратных средств. Тема 17. Модули Pascal Структура модуля. Отличия режимов компиляции Compile, Make, Build. Тема 18. Графика Pascal Создание графических объектов. Принципы моделирования движения графических объектов. 5. ПЛАНЫ СЕМИНАРСКИХ (ПРАКТИЧЕСКИХ) ЗАНЯТИЙ Практические занятия состоят из анализа, составления программ, самостоятельных работ в компьютерных классах. Тема 1. Историческая справка. Тема 2. Бинарная арифметика. Тема 3. Система стандартных скалярных типов языка 1. Даны два ненулевых числа. Найти их сумму, разность, произведение и частное. 2. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей. 3. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) — T2 ч. Определить путь S, пройденный лодкой. 4. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга. 5. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили первоначально движутся навстречу друг другу. 6. Найти периметр и площадь прямоугольного треугольника, если даны длины его катетов a и b. 7. Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба. 8. Найти длину окружности и площадь круга заданного радиуса R. В качестве значения Pi использовать 3.14. 9. Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 (R1 < R2). В качестве значения Pi использовать 3.14. 10. Дана сторона равностороннего треугольника. Найти площадь этого треугольника и радиусы вписанной и описанной окружностей. 11. Дана длина окружности. Найти площадь круга, ограниченного этой окружностью. В качестве значения Pi использовать 3.14. 12. Дана площадь круга. Найти длину окружности, ограничивающей этот круг. В качестве значения Pi использовать 3.14. 8 13. Найти периметр и площадь равнобедренной трапеции с основаниями a и b (a > b) и углом alpha при большем основании (угол дан в радианах). 14. Найти периметр и площадь прямоугольной трапеции с основаниями a и b (a > b) и острым углом alpha (угол дан в радианах). 15. Найти расстояние между двумя точками с заданными координатами (x1, y1) и (x2, y2). 16. Даны координаты трех вершин треугольника (x1, y1), (x2, y2), (x3, y3). Найти его периметр и площадь. Тема 4. Структура блока описания программы 1. Дано целое четырехзначное число. Используя операции div и mod, найти сумму его цифр. 2. Дано целое четырехзначное число. Используя операции div и mod, найти произведение его цифр. 3. Дано расстояние в сантиметрах. Найти число полных метров в нем. 4. Дана масса в килограммах. Найти число полных центнеров в ней. 5. Дана масса в килограммах. найти число полных тонн в ней. 6. Дано расстояние в метрах. Найти число полных километров в нем. 7. Дано трехзначное число. Найти число, полученное при прочтении его цифр справа налево. 8. Дано трехзначное число. Найти число, полученное при перестановке первой и второй цифр заданного числа. 9. Дано трехзначное число. Найти число, полученное при перестановке первой и второй цифр заданного числа. 10. Дано трехзначное число. Найти число, полученное при перестановке второй и третьей цифр заданного числа. 11. Дано целое число, большее 99. Найти третью от конца его цифру. 12. Дано натуральное число n (n>9). Найти число единиц в нем. 13. Дано натуральное число n (n>99). Найти число десятков в нем. 14. Дано натуральное число n (n>99). Найти число сотен в нем. 15. Дано натуральное число n (n>999). Найти число тысяч в нем. Тема 5. Совместимость типов 1. Проверить истинность высказывания: «Квадратное уравнение A·x2 + B·x + C = 0 с данными коэффициентами A, B, C имеет вещественные корни». 2. Проверить истинность высказывания: «Данные числа x, y являются координатами точки, лежащей во второй координатной четверти». 3. Проверить истинность высказывания: «Данные числа x, y являются координатами точки, лежащей в первой или третьей координатной четверти». 4. Проверить истинность высказывания: «Точка с координатами (x, y) лежит внутри прямоугольника, левая верхняя вершина которого имеет координаты (x1, y1), правая нижняя — (x2, y2), а стороны параллельны координатным осям». 5. Проверить истинность высказывания: «Данное целое число является четным двузначным числом». 9 6. Проверить истинность высказывания: «Данное целое число является нечетным трехзначным числом». 7. Проверить истинность высказывания: «Среди трех данных целых чисел есть хотя бы одна пара совпадающих». 8. Проверить истинность высказывания: «Среди трех данных целых чисел есть хотя бы одна пара взаимно противоположных». 9. Проверить истинность высказывания: «Сумма цифр данного трехзначного числа является четным числом». 10. Проверить истинность высказывания: «Сумма двух первых цифр данного четырехзначного числа равна сумме двух его последних цифр». 11. Проверить истинность высказывания: «Данное четырехзначное число читается одинаково слева направо и справа налево». 12. Проверить истинность высказывания: «Все цифры данного трехзначного числа различны». 13. Проверить истинность высказывания: «Цифры данного трехзначного числа образуют возрастающую последовательность». 14. Проверить истинность высказывания: «Цифры данного трехзначного числа образуют возрастающую или убывающую последовательность». 15. Проверить истинность высказывания: «Цифры данного трехзначного числа образуют арифметическую прогрессию». 16. Проверить истинность высказывания: «Цифры данного трехзначного числа образуют геометрическую прогрессию». 17. Даны координаты (как целые от 1 до 8) двух различных полей шахматной доски. Если ладья за один ход может перейти с одного поля на другое, вывести логическое значение True, в противном случае вывести значение False. 18. Даны координаты (как целые от 1 до 8) двух различных полей шахматной доски. Если король за один ход может перейти с одного поля на другое, вывести логическое значение True, в противном случае вывести значение False. 19. Даны координаты (как целые от 1 до 8) двух различных полей шахматной доски. Если слон за один ход может перейти с одного поля на другое, вывести логическое значение True, в противном случае вывести значение False. 20. Даны координаты (как целые от 1 до 8) двух различных полей шахматной доски. Если ферзь за один ход может перейти с одного поля на другое, вывести логическое значение True, в противном случае вывести значение False. 21. Даны координаты (как целые от 1 до 8) двух различных полей шахматной доски. Если конь за один ход может перейти с одного поля на другое, вывести логическое значение True, в противном случае вывести значение False. Тема 6. Организация ветвлений в программе 1. Даны три целых числа. Возвести в квадрат отрицательные числа и в третью степень — положительные (число 0 не изменять). 2. Из трех данных чисел выбрать наименьшее. 3. Из трех данных чисел выбрать наибольшее. 4. Из трех данных чисел выбрать наименьшее и наибольшее. 10 5. Перераспределить значения переменных X и Y так, чтобы в X оказалось меньшее из этих значений, а в Y — большее. 6. Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по возрастанию. 7. Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по убыванию. 8. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения. 9. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной максимальное из этих значений, а если равны, то присвоить переменным нулевые значения. 10. Даны три переменные: X, Y, Z. Если их значения упорядочены по убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. 11. Даны три переменные: X, Y, Z. Если их значения упорядочены по возрастанию или убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. 12. Даны целочисленные координаты точки на плоскости. Если точка не лежит на координатных осях, то вывести 0. Если точка совпадает с началом координат, то вывести 1. Если точка не совпадает с началом координат, но лежит на оси OX или OY, то вывести соответственно 2 или 3. 13. Даны вещественные координаты точки, не лежащей на координатных осях OX и OY. Вывести номер координатной четверти, в которой находится данная точка. 14. На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точки A. 15. Даны четыре целых числа, одно из которых отлично от трех других, равных между собой. Вывести порядковый номер этого числа. 16. Дан номер некоторого года (положительное целое число). Вывести соответствующий ему номер столетия, учитывая, что, к примеру, началом 20 столетия был 1901 год. 17. Дан номер некоторого года (положительное целое число). Вывести число дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются). 18. Дано целое число, лежащее в диапазоне от –999 до 999. Вывести строку — словесное описание данного числа вида «отрицательное двузначное число», «нулевое число», «положительное однозначное число» и т.д. 19. Дано целое число, лежащее в диапазоне от 1 до 9999. Вывести строку — словесное описание данного числа вида «четное двузначное число», «нечетное четырехзначное число» и т.д. 11 20. Дан номер месяца (1 — январь, 2 — февраль, ...). Вывести название соответствующего времени года («зима», «весна» и т.д.). 21. Дан номер месяца (1 — январь, 2 — февраль, ...). Вывести число дней в этом месяце для невисокосного года. 22. Дано целое число в диапазоне 0 – 9. Вывести строку — название соответствующей цифры на русском языке (0 — «ноль», 1 — «один», 2 — «два», ...). 23. Дано целое число в диапазоне 1 – 5. Вывести строку — словесное описание соответствующей оценки (1 — «плохо», 2 — «неудовлетворительно», 3 — «удовлетворительно», 4 — «хорошо», 5 — «отлично»). 24. Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Дан номер действия и два числа A и B (В не равно нулю). Выполнить над числами указанное действие и вывести результат. 25. Единицы длины пронумерованы следующим образом: 1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр. Дан номер единицы длины и длина отрезка L в этих единицах (вещественное число). Вывести длину данного отрезка в метрах. 26. Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер единицы массы и масса тела M в этих единицах (вещественное число). Вывести массу данного тела в килограммах. 27. Робот может перемещаться в четырех направлениях («С» — север, «З» — запад, «Ю» — юг, «В» — восток) и принимать три цифровые команды: 0 — продолжать движение, 1 — поворот налево, –1 — поворот направо. Дан символ C — исходное направление робота и число N — посланная ему команда. Вывести направление робота после выполнения полученной команды. 28. Локатор ориентирован на одну из сторон света («С» — север, «З» — запад, «Ю» — юг, «В» — восток) и может принимать три цифровые команды: 1 — поворот налево, –1 — поворот направо, 2 — поворот на 180 градусов. Дан символ C — исходная ориентация локатора и числа N1 и N2 — две посланные ему команды. Вывести ориентацию локатора после выполнения данных команд. 29. Элементы окружности пронумерованы следующим образом: 1 — радиус (R), 2 — диаметр (D), 3 — длина (L), 4 — площадь круга (S). Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данной окружности (в том же порядке). В качестве значения Pi использовать 3.14. 30. Элементы равнобедренного прямоугольного треугольника пронумерованы следующим образом: 1 — катет (a), 2 — гипотенуза (c), 3 — высота, опущенная на гипотенузу (h), 4 — площадь (S). Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника (в том же порядке). 31. Элементы равностороннего треугольника пронумерованы следующим образом: 1 — сторона (a), 2 — радиус вписанной окружности (R1), 3 — радиус 12 описанной окружности (R2), 4 — площадь (S). Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника (в том же порядке). 32. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, предшествующей указанной. 33. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, следующей за указанной. 34. Дано целое число в диапазоне 20 – 69, определяющее возраст (в годах). Вывести строку — словесное описание указанного возраста, обеспечив правильное согласование числа со словом «год», например: 20 — «двадцать лет», 32 — «тридцать два года», 41 — «сорок один год». 35. Дано целое число в диапазоне 100 – 999. Вывести строку — словесное описание данного числа, например: 256 — «двести пятьдесят шесть», 814 — «восемьсот четырнадцать». 36. В восточном календаре принят 60-летний цикл, состоящий из 12-летних подциклов, обозначаемых названиями цвета: зеленый, красный, желтый, белый и черный. В каждом подцикле годы носят названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. По номеру года вывести его название, если 1984 год был началом цикла — годом зеленой крысы. Тема 7. Операторы цикла 1. Даны два целых числа A и B (A < B). Вывести все целые числа, расположенные между данными числами (включая сами эти числа), в порядке их возрастания, а также количество N этих чисел. 2. Даны два целых числа A и B (A < B). Вывести все целые числа, расположенные между данными числами (не включая сами эти числа), в порядке их убывания, а также количество N этих чисел. 3. Дано вещественное число A и целое число N (> 0). Вывести A в степени N: AN = A·A·...·A (числа A перемножаются N раз). 4. Дано вещественное число A и целое число N (> 0). Вывести все целые степени числа A от 1 до N. 5. Дано вещественное число A и целое число N (> 0). Вывести 1 + A + A2 + A3 + ... + AN. 6. Дано вещественное число A и целое число N (> 0). Вывести 1 – A + A2 – A3 + ... + (–1)NAN. 7. Дано целое число N (> 1). Вывести наименьшее целое K, при котором выполняется неравенство 3K > N, и само значение 3K. 8. Дано целое число N (> 1). Вывести наибольшее целое K, при котором выполняется неравенство 3K < N, и само значение 3K. 9. Дано вещественное число A (> 1). Вывести наименьшее из целых чисел N, для которых сумма 1 + 1/2 + ... + 1/N будет больше A, и саму эту сумму. 13 10. Дано вещественное число A (> 1). Вывести наибольшее из целых чисел N, для которых сумма 1 + 1/2 + ... + 1/N будет меньше A, и саму эту сумму. 11. Дано целое число N (> 0). Вывести произведение 1·2·...·N. Чтобы избежать целочисленного переполнения, вычислять это произведение с помощью вещественной переменной и выводить его как вещественное число. 12. Дано целое число N (> 0). Если N — нечетное, то вывести произведение 1·3·...·N; если N — четное, то вывести произведение 2·4·...·N. Чтобы избежать целочисленного переполнения, вычислять это произведение с помощью вещественной переменной и выводить его как вещественное число. 13. Дано целое число N (> 0). Вывести сумму 2 + 1/(2!) + 1/(3!) + ... + 1/(N!) (выражение N! — «N факториал» — обозначает произведение всех целых чисел от 1 до N: N! = 1·2·...·N). Полученное число является приближенным значением константы e = exp(1) (= 2.71828183...). 14. Дано вещественное число X и целое число N (> 0). Вывести 1 + X + X2/2! + ... + XN/N! (N! = 1·2·...·N). Полученное число является приближенным значением функции exp в точке X. 15. Дано вещественное число X и целое число N (> 0). Вывести X – X3/3! + X5/5! – ... + (–1)NX2N+1/(2N+1)! (N! = 1·2·...·N). Полученное число является приближенным значением функции sin в точке X. 16. Дано вещественное число X и целое число N (> 0). Вывести 17. 1 – X2/2! + X4/4! – ... + (–1)NX2N/(2N)! (N! = 1·2·...·N). Полученное число является приближенным значением функции cos в точке X. 18. Дано вещественное число X (|X| < 1) и целое число N (> 0). Вывести X – X2/2 + X3/3 – ... + (–1)N–1XN/N. Полученное число является приближенным значением функции ln в точке 1+X. 19. Дано вещественное число X (|X| < 1) и целое число N (> 0). Вывести X – X3/3 + X5/5 – ... + (–1)NX2N+1/(2N+1). Полученное число является приближенным значением функции arctg в точке X. 20. Дано целое число N (> 2) и две вещественные точки на числовой оси: A, B (A < B). Отрезок [A, B] разбит на равные отрезки длины H с концами в N точках вида A, A + H, A + 2H, A + 3H, ..., B. Вывести значение H и набор из N точек, образующий разбиение отрезка [A, B]. 21. Дано целое число N (> 2) и две вещественные точки на числовой оси: A, B (A < B). Функция F(X) задана формулой F(X) = 1 – sin(X). Вывести значения функции F в N равноотстоящих точках, образующих разбиение отрезка [A, B]: F(A), F(A + H), F(A + 2H), ..., F(B). 22. Дано число D (> 0). Последовательность чисел AN определяется следующим образом: A1 = 2, AN = 2 + 1/AN–1, N = 2, 3, ... Найти первый из номеров K, для которых выполняется условие |AK – AK–1| < D, и вывести этот номер, а также числа AK–1 и AK. 23. Дано число D (> 0). Последовательность чисел AN определяется следующим образом: A1 = 1, A2 = 2, AN = (AN–2+ AN–1)/2, N = 3, 4, ... Найти первый из номеров K, 14 для которых выполняется условие |AK AK–1| < D, и вывести этот номер, а также числа AK–1 и AK. 24. Даны десять чисел. Вывести их среднее арифметическое. 25. Дано целое число N и набор из N вещественных чисел. Вывести сумму и произведение чисел из данного набора. 26. Дано целое число N и набор из N ненулевых целых чисел. Вывести в том же порядке все четные числа из данного набора и количество K таких чисел. 27. Дано целое число N и набор из N ненулевых целых чисел. Вывести в том же порядке номера всех нечетных чисел из данного набора и количество K таких чисел. 28. Даны целые числа K, N и набор из N целых чисел. Если в наборе присутствует число, меньшее K, то вывести True; в противном случае вывести False. 29. Дан набор ненулевых целых чисел; признак его завершения — число 0. Вывести количество элементов в наборе. 30. Дан набор ненулевых целых чисел; признак его завершения — число 0. Вывести сумму всех положительных четных чисел из данного набора. Если требуемые числа в наборе отсутствуют, то вывести 0. 31. Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести количество чисел в наборе, меньших K. 32. Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести номер первого числа в наборе, большего K. Если таких чисел в наборе нет, то вывести 0. 33. Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести номер последнего числа в наборе, меньшего K. Если таких чисел в наборе нет, то вывести 0. 34. Дано целое число N и набор из N целых чисел. Вывести номера тех чисел в наборе, которые меньше своего левого соседа, и количество K таких чисел. 35. Дано целое число N и набор из N целых чисел. Вывести номера тех чисел в наборе, которые больше своего правого соседа, и количество K таких чисел. 36. Дано целое число N и набор из N вещественных чисел. Проверить, образует ли данный набор возрастающую последовательность. Если образует, то вывести True, если нет — вывести False. 37. Дано целое число N и набор из N вещественных чисел. Если данный набор образует убывающую последовательность, то вывести 0; в противном случае вывести номер первого числа, нарушающего закономерность. 38. Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму чисел из данного набора, расположенных между первыми двумя нулями (если первые нули идут подряд, то вывести 0). 39. Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму чисел из данного набора, расположенных между последними двумя нулями (если последние нули идут подряд, то вывести 0). 40. Даны целые числа K, N и набор из N вещественных чисел: A1, A2, ..., AN. Вывести K-e степени чисел из данного набора: A1K, A2K, ..., ANK. 15 41. Дано целое число N и набор из N вещественных чисел: A1, A2, ..., AN. Вывести следующие числа: A1, A22, ..., AN–1N–1, ANN. 42. Дано целое число N и набор из N вещественных чисел: A1, A2, ..., AN. Вывести следующие числа: A1N, A2N–1, ..., AN–12, AN. 43. Найти минимальный и максимальный из данных десяти элементов. 44. Найти номера минимального1|максимального2 из данных десяти элементов. 45. Найти номера первого1|последнего2 минимального3|максимального4 из данных десяти целочисленных элементов. 46. Найти количество минимальных1|максимальных2 из данных десяти целочисленных элементов. 47. Найти минимальный1|максимальный2 четный3|нечетный4 из данных десяти ненулевых целочисленных элементов. Если требуемые элементы отсутствуют, то вывести 0. 48. Найти [минимальный положительный]1|[максимальный отрицательный]2 из данных десяти элементов. Если требуемые элементы отсутствуют, то вывести 0. 49. Даны числа a, b (0 < a < b) и набор из десяти элементов. Найти минимальный1|максимальный2 из элементов, содержащихся в интервале (a, b). Если требуемые элементы отсутствуют, то вывести –1. 50. Дан набор из десяти целочисленных элементов. Найти количество элементов, расположенных перед1|после2 первого3|последнего4 минимального5|максимального6. 51. Найти номер первого1|последнего2 экстремального (то есть минимального или максимального) из данных десяти целочисленных элементов. 52. Дан набор из десяти целочисленных элементов. Найти количество элементов, содержащихся между первым и последним минимальным1|максимальным2. Если в наборе имеется единственный минимальный1|максимальный2 элемент, то вывести 0. 53. Найти два наименьших1|наибольших2 из данных десяти элементов. 54. Дан набор из десяти целочисленных элементов. Найти максимальное количество подряд идущих минимальных1|максимальных2 элементов. Тема 8. Процедуры и функции 1. Описать функцию Min2(A,B)1|Max2(A,B)2 вещественного типа, находящую минимальное1|максимальное2 из двух вещественных чисел A и B. С помощью этой функции найти минимальные1|максимальные2 из пар чисел A и B, A и C, A и D, если даны числа A, B, C, D. 2. Описать процедуру Minmax(A,B), записывающую в переменную A минимальное из значений A и B, а в переменную B — максимальное из этих значений (A и B — вещественные параметры, являющиеся одновременно входными и выходными). Используя четыре вызова этой процедуры, найти минимальное и максимальное из ·исел A, B, C, D. 3. Используя процедуру Minmax из задания 2, описать функцию Min3(A,B,C)1|Max3(A,B,C)2 вещественного типа, находящую 16 минимальное1|максимальное2 из трех вещественных чисел A, B и C. С помощью этой функции найти минимальные1|максимальные2 из наборов (A,B,C), (A,B,D), (A,C,D), если даны числа A, B, C, D. 4. Используя функцию Min21|Max22 из задания 1, описать функцию Min4(A,B,C,D)1|Max4(A,B,C,D)2 вещественного типа, находящую минимальное1|максимальное2 из четырех вещественных чисел A, B, C и D. С помощью этой функции найти минимальные1|максимальные2 из наборов (A,B,C,D), (A,B,C,E), (A,C,D,E), если даны числа A, B, C, D, E. 5. Описать функцию Fact(N) целого типа, вычисляющую значение факториала N! = 1·2·...·N (N > 0 — параметр целого типа). С помощью этой фунЄции вычислить факториалы 10 данных чисел. 6. Описать функцию FactR(N) вещественного типа, позволяющую вычислять приближенное значение факториала N! = 1·2·...·N для целых N (> 0). С помощью этой функции вычислить факториалы пяти данных чисел. 7. Описать функцию Fact2(N) целого типа, вычисляющую значение «двойного факториала»: N!! = 1·3·5·...·N, если N — нечетное, N!! = 2·4·6·...·N, если N — четное (N > 0 — параметр целого типа). С помощью этой функции вычислить двойные факториалы десяти данных чисел. 8. Описать нерекурсивную функцию Fib(N) целого типа, вычисляющую N-е число Фибоначчи F(N) по формуле: F(1) = F(2) = 1, F(k) = F(k–2) + F(k–1), k = 3, 4, ... . С помощью этой функции вычислить 10 чисел Фибоначчи с указанными номерами. 9. Описать процедуру SumDigit(N,S), находящую сумму цифр S целого числа N (N — входной, S — выходной параметр). Используя эту процедуру, найти суммы цифр пяти данных чисел. 10. Описать нерекурсивную функцию NOD2(A,B) целого типа, находящую наибольший общий делитель (НОД) двух натуральных чисел A и B, используя алгоритм Евклида: НОД(A,B) = НОД(B mod A,A), если A <> 0; НОД(0,B) = B. С помощью этой функции найти наибольшие общие делители пар A и B, A и C, A и D, если даны числа A, B, C, D. 11. Используя функцию NOD2 из задания 10, описать процедуру Frac(a,b,p,q), преобразующую дробь a/b к несократимому виду p/q (все параметры процедуры — целого типа). Знак результирующей дроби p/q приписывается числителю (т.е. q > 0). С помощью этой процедуры найти несократимые дроби, равные a/b + c/d, a/b + e/f, a/b + g/h (числа a, b, c, d, e, f, g, h даны). 12. Описать функцию Exp1(x,eps) вещественного типа (параметры x, eps — вещественные, eps > 0), находящую приближенное значение функции exp(x): exp(x) = 1 + x + x2 / 2! + x3 / 3! + ... + xn / n! + ... . В сумме учитывать все слагаемые, большие eps. С помощью Exp1 найти приближенное значение экспоненты для данного x при шести данных eps. 13. Описать функцию Sin1(x,eps)1|Cos1(x,eps)2 вещественного типа (параметры x, eps — вещественные, eps > 0), находящую приближенное значение функции sin(x)1|cos(x)2: [sin(x) = x – x3 / 3! + x5 / 5! – ... + (–1)n x2n+1 / (2n+1)! + ...]1| 17 [cos(x) = 1 – x2 / 2! + x4 / 4! – ... + (–1)n x2n / (2n)! + ...]2. В сумме учитывать все слагаемые, большие по модулю eps. С помощью Sin11|Cos12 найти приближенное значение синуса1|косинуса2 для данного x при шести данных значениях eps. 14. Описать функцию Ln1(x,n)1|Arctg1(x,n)2 вещественного типа (параметры x, eps — вещественные, |x| < 1, eps > 0), находящую приближенное значение функции ln(1+x)1|arctg(x)2: [ln(1+x) = x – x2 / 2 + x3 / 3 – ... + (–1)n xn+1 / (n+1) + ...]1| [arctg(x) = x – x3 / 3 + x5 / 5 – ... + (–1)n x2n+1 / (2n+1) + ...]2. В сумме учитывать все слагаемые, большие по модулю eps. С помощью Ln11|Arctg12 найти приближенное значение ln(1+x)1|arctg(x)2 для данного x при шести данных значениях eps. 15. Описать функцию PowerA(x,a,eps) вещественного типа (параметры x, a, eps — вещественные, |x| < 1, a > 0, eps > 0), находящую приближенное значение функции (1+x)a: (1+x)a = 1 + a·x + a·(a–1)·x2 / 2! + ... + a·(a–1)·...·(a–n+1)·xn / n! + ... . В сумме учитывать все слагаемые, большие по модулю eps. С помощью PowerA найти приближенное значение (1+x)a для данных x и a при шести различных значениях eps. 16. Описать функцию Otr(Ax,Ay,Bx,By) вещественного типа, находящую длину отрезка AB на плоскости по координатам его концов: |AB| = sqrt((AxBx)2 + (Ay-By)2) (Ax, Ay, Bx, By — вещественные параметры). С помощью этой функции найти длины отрезков AB, AC, AD, если даны координаты точек A, B, C, D. 17. Используя функцию Otr из задания 16, описать функцию Perim(Ax,Ay,Bx,By,Cx,Cy) вещественного типа, находящую периметр треугольника ABC по координатам его вершин (Ax, Ay, Bx, By, Cx, Cy — вещественные параметры). С помощью этой функции найти периметры треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D. 18. Используя функции Otr и Perim из заданий 16 и 17, описать функцию Area(Ax,Ay,Bx,By,Cx,Cy) вещественного типа, находящую площадь треугольника ABC по формуле Герона: 19. SABC = sqrt(p·(p–|AB|)·(p–|AC|)·(p–|BC|)), где p — полупериметр. С помощью этой функции найти площади треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D. 20. Используя функции Otr и Area из заданий 16 и 18, описать процедуру Dist(Px,Py,Ax,Ay,Bx,By,D), находящую расстояние D от точки P до прямой AB по формуле D = 2SPAB / |AB|, где SPAB — площадь треугольника PAB. С помощью этой процедуры найти расстояния от точки P до прямых AB, AC, BC, если даны координаты точек P, A, B, C. 21. Используя процедуру Dist из задания 19, описать процедуру Heights(Ax,Ay,Bx,By,Cx,Cy,hA,hB,hC), находящую высоты hA, hB, hC треугольника ABC, проведенные соответственно из вершин A, B, C. С помощью этой процедуры найти высоты треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D. Тема 9. Рекурсия явная и косвенная 18 1. Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа, вычисляющие значения факториала N! и двойного факториала N!! соответственно (N > 0 — параметр целого типа). С помощью этих функций вычислить факториалы и двойные факториалы пяти данных чисел. 2. Описать рекурсивную функцию PowerN(x,n) вещественного типа, находящую значение n-й степени числа x по формуле: 3. x0 = 1, xn = x·xn–1 при n > 0, xn = 1 / x–n при n < 0 (x >= 0 — вещественное число, n — целое). С помощью этой функции найти значения XN при 5 различных значениях N для данного X. 4. Описать рекурсивную функцию SqrtK(x,k,n) вещественного типа, находящую приближенное значение корня k-й степени из числа x по формуле: y(0) = 1, y(n+1) = y(n) – (y(n) – x / y(n)k–1) / k, где y(n) обозначает SqrtK(x,k,n) (x — вещественный параметр, k и n — целые; x > 0, k > 1, n > 0). С помощью этой функции найти приближенные значения корня K-й степени из X при 6 различных значениях N для данных X и K. 5. Описать рекурсивную функцию FibRec(N) целого типа, вычисляющую Nе число Фибоначчи F(N) по формуле: F(1) = F(2) = 1, F(k) = F(k–2) + F(k–1), k = 3, 4, ... . С помощью этой функции найти пять чисел Фибоначчи с указанными номерами и вывести эти числа вместе с количеством рекурсивных вызовов функции FibRec, потребовавшихся для их нахождения. 6. Описать рекурсивную функцию C(m,n) целого типа, находящую число сочетаний из n элементов по m, используя формулу: C(0,n) = C(n,n) = 1, C(m,n) = C(m,n–1) + C(m–1,n–1) при 0 < m < n (m и n — целые параметры; n > 0, 0 <= m <= n). Дано число N и пять различных значений M. Вывести числа C(M,N) вместе с количеством рекурсивных вызовов функции C, потребовавшихся для их нахождения. 7. Описать рекурсивную функцию NOD(A,B) целого типа, находящую наибольший общий делитель двух натуральных чисел A и B, используя алгоритм Евклида: NOD(A,B) = NOD(B mod A,A), если A <> 0; NOD(0,B) = B. С помощью этой функции найти наибольшие общие делители пар A и B, A и C, A и D, если даны числа A, B, C, D. 8. Описать рекурсивную функцию MinRec(A,N)1|MaxRec(A,N)2 вещественного типа, которая находит минимальный1|максимальный2 элемент вещественного массива A размера N, не используя оператор цикла. С помощью функции MinRec1|MaxRec2 найти минимальные1|максимальные2 элементы массивов A, B, C размера NA, NB, NC соответственно. 9. Описать рекурсивную функцию Digits(S) целого типа, находящую количество цифр в строке S без использования оператора цикла. С помощью этой функции найти количество цифр в данных пяти строках. 10. Описать рекурсивную функцию Simm(S) логического типа, проверяющую, является ли симметричной строка S, без использования оператора цикла. С помощью этой функции проверить данные пять строк. Тема 10. Структурированные типы данных. Массивы Одномерные массивы 1. Дан массив размера N. Вывести его элементы в обратном порядке. 19 2. Дан массив размера N. Вывести вначале его элементы с четными1|нечетными2 индексами, а затем — с нечетными1|четными2. 3. Дан целочисленный массив A размера 10. Вывести номер первого1|последнего2 из тех его элементов A[i], которые удовлетворяют двойному неравенству: A[1] < A[i] < A[10]. Если таких элементов нет, то вывести 0. 4. Дан целочисленный массив размера N. Преобразовать его, прибавив к четным1|нечетным2 числам первый3|последний4 элемент. Первый и последний элементы массива не изменять. 5. Дан целочисленный массив размера N. Вывести вначале все его четные1|нечетные2 элементы, а затем — нечетные1|четные2. 6. Поменять местами минимальный и максимальный элементы массива размера 10. 7. Заменить все положительные1|отрицательные2 элементы целочисленного массива размера 10 на значение минимального3|максимального4. 8. Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами. 9. Дан массив размера N. Осуществить циклический сдвиг элементов массива влево1|вправо2 на одну позицию. 10. Дан массив размера N и число k (0 < k < 5, k < N). Осуществить циклический сдвиг элементов массива влево1|вправо2 на k позиций. 11. Проверить, образуют ли элементы целочисленного массива размера N арифметическую1|геометрическую2 прогрессию. Если да, то вывести разность1|знаменатель2 прогрессии, если нет — вывести 0. 12. Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем [четные и нечетные]1|[положительные и отрицательные]2 числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность. 13. Дан массив размера N. Найти количество его локальных минимумов1|максимумов2. 14. Дан массив размера N. Найти максимальный1|минимальный2 из его локальных минимумов1|максимумов2. 15. Дан массив размера N. Определить количество участков, на которых его элементы монотонно возрастают1|убывают2. 16. Дан массив размера N. Определить количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают). 17. Дано вещественное число R и массив размера N. Найти элемент массива, который наиболее1|наименее2 близок к данному числу. 18. Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наиболее1|наименее2 близка к данному числу. 19. Дан массив размера N. Найти номера двух ближайших чисел из этого массива. 20 20. Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов. 21. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся [менее двух раз]1|[более двух раз]2|[ровно два раза]3|[ровно три раза]4. 22. Дан целочисленный массив размера N. Если он является перестановкой, то есть содержит все числа от 1 до N, то вывести 0, в противном случае вывести номер первого недопустимого элемента. 23. Дан массив размера N. Преобразовать его, вставив перед1|после2 каждого положительного3|отрицательного4 элемента нулевой элемент. 24. Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Вывести массив, содержащий длины всех серий исходного массива. 25. Дан целочисленный массив размера N. Преобразовать массив, увеличив1|уменьшив2 каждую его серию на один элемент. 26. Дан целочисленный массив размера N. Преобразовать массив, увеличив первую1|последнюю2|все3 серии наибольшей длины на один элемент. 27. Дан целочисленный массив размера N. Вставить перед1|после2 каждой серии нулевой элемент. 28. Дано число k и целочисленный массив размера N. Поменять местами первую1|последнюю2 и k-ю серии массива. Если серий в массиве меньше k, то вывести массив без изменений. 29. Дано число k и целочисленный массив размера N. Удалить из массива все серии, длина которых меньше1|равна2|больше3 k. 30. Дано число k и целочисленный массив размера N. Заменить каждую серию, длина которой меньше1|равна2|больше3 k, на один нулевой элемент. 31. Даны два массива A и B размера 5, элементы которых упорядочены по возрастанию1|убыванию2. Объединить эти массивы так, чтобы результирующий массив остался упорядоченным. 32. Упорядочить массив размера N по возрастанию1|убыванию2. 33. Дан массив размера N. Вывести индексы массива в том порядке, в котором соответствующие им элементы образуют возрастающую1|убывающую2 последовательность. 34. Дана точка A и множество B из N точек. Найти номер точки из множества B, наиболее близкой1|удаленной2 от точки A. 35. Дано множество A из N точек. Среди всех точек этого множества, лежащих в первой1|второй2|третьей3|четвертой4 четверти, найти точку, наиболее близкую5|удаленную6 от начала координат. Если таких точек нет, то вывести точку с нулевыми координатами. 36. Дано множество A из N точек. Найти пару различных точек этого множества с минимальным1|максимальным2 расстоянием между ними и само это расстояние (точки выводятся в том же порядке, в котором они перечислены при задании множества A). 21 37. Дано множество A из N точек. Найти такую точку из данного множества, сумма расстояний от которой до остальных его точек минимальна1|максимальна2, и саму эту сумму. 38. Даны множества A и B, состоящие соответственно из N1 и N2 точек. Найти минимальное1|максимальное2 расстояние между точками этих множеств и сами точки, расположенные на этом расстоянии. 39. Дано множество A из N точек. Найти наименьший1|наибольший2 периметр треугольника, вершины которого принадлежат различным точкам множества A, и сами эти точки (точки выводятся в том же порядке, в котором они перечислены при задании множества A). 40. Дано множество A из N точек с целочисленными координатами. Порядок на координатной плоскости определим следующим образом: (x1,y1) < (x2,y2), если либо x1 < x2, либо x1 = x2 и y1 < y2. Расположить точки данного множества по возрастанию1|убыванию2 в соответствии с указанным порядком. Двумерные массивы (матрицы) 41. Дано число k (0 < k < 11) и матрица размера 4 x 10. Найти сумму и произведение элементов k-го столбца данной матрицы. 42. Дана матрица размера 5 x 9. Найти суммы элементов всех ее четных1|нечетных2 строк3|столбцов4. 43. Дана матрица размера 5 x 10. Найти минимальное1|максимальное2 значение в каждой строке3|столбце4. 44. Дана матрица размера 5 x 10. В каждой строке1|столбце2 найти количество элементов, больших3|меньших4 среднего арифметического всех элементов этой строки1|столбца2. 45. Дана матрица размера 5 x 10. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке1|столбце2. 46. Дана матрица размера 5 x 10. Найти минимальное1|максимальное2 значение среди сумм элементов всех ее строк3|столбцов4 и номер строки3|столбца4 с этим минимальным1|максимальным2 значением. 47. Дана матрица размера 5 x 10. Найти минимальный1|максимальный2 среди максимальных1|минимальных2 элементов каждой строки3|столбца4. 48. Дана целочисленная матрица размера 5 x 10. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего равное количество положительных и отрицательных элементов (нулевые элементы не учитываются). Если таких строк3|столбцов4 нет, то вывести 0. 49. Дана матрица размера 5 x 10. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего только положительные элементы. Если таких строк3|столбцов4 нет, то вывести 0. 50. Дана целочисленная матрица размера M x N. Различные строки (столбцы) матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих строках (столбцах). Найти количество строк1|столбцов2, похожих на первую3|последнюю4 строку1|столбец2. 51. Дана целочисленная матрица размера M x N. Найти количество ее строк1|столбцов2, все элементы которых различны. 22 52. Дана целочисленная матрица размера M x N. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего максимальное количество одинаковых элементов. 53. Дана квадратная матрица порядка M. Найти сумму элементов ее главной1|побочной2 диагонали. 54. Дана квадратная матрица порядка M. Найти суммы элементов ее диагоналей, параллельных главной1|побочной2 (начиная с одноэлементной диагонали A[1,M]1|A[1,1]2). 55. Дана квадратная матрица порядка M. Вывести минимальные1|максимальные2 из элементов каждой ее диагонали, параллельной главной3|побочной4 (начиная с одноэлементной диагонали A[1,M]3|A[1,1]4). 56. Дана квадратная матрица порядка M. Заменить нулями элементы матрицы, лежащие ниже1|выше2 главной3|побочной4 диагонали. 57. Дана квадратная матрица порядка M. Заменить нулями элементы, лежащие одновременно выше1|ниже2 главной диагонали (включая эту диагональ) и выше3|ниже4 побочной диагонали (также включая эту диагональ). 58. Дана квадратная матрица порядка M. Зеркально отразить ее элементы относительно [горизонтальной оси симметрии]1|[вертикальноc оси симметрии]2|[главной диагонали]3|[побочной диагонали]4 матрицы. 59. Дана квадратная матрица порядка M. Повернуть ее на 901|1802|2703 градусов в положительном направлении. 60. Дана матрица размера 5 x 10. Вывести количество строк1|столбцов2, элементы которых монотонно возрастают3|убывают4. 61. Дана матрица размера 5 x 10. Найти минимальный1|максимальный2 среди элементов тех строк3|столбцов4, которые упорядочены либо по возрастанию, либо по убыванию. Если такие строки3|столбцы4 отсутствуют, то вывести 0. 62. Даны два числа k1 и k2 и матрица размера 4 x 10. Поменять местами строки1|столбцы2 матрицы с номерами k1 и k2. 63. Дана матрица размера 5 x 10. Поменять местами строки1|столбцы2, содержащие минимальный и максимальный элементы матрицы. 64. Дана матрица размера 5 x 10. Поменять местами столбец с номером 11|102 и первый3|последний4 из столбцов, содержащих только положительные элементы. 65. Дано число k и матрица размера 4 x 10. Удалить строку1|столбец2 матрицы с номером k. 66. Дана матрица размера 5 x 10. Удалить строку1|столбец2, содержащий минимальный3|максимальный4 элемент матрицы. 67. Дана матрица размера 5 x 10. Удалить первый1|последний2|все3 столбцы, содержащие только положительные элементы. 68. Дано число k и матрица размера 4 x 9. Перед1|после2 строки3|столбца4 матрицы с номером k вставить строку3|столбец4 из нулей. 69. Дана матрица размера 4 x 9. Продублировать строку1|столбец2 матрицы, содержащий ее минимальный3|максимальный4 элемент. 23 70. Дана матрица размера 5 x 9. Перед1|после2 первого3|последнего4 столбца, содержащего только положительные элементы, добавить столбец, состоящий из единиц. 71. Дана целочисленная матрица размера M x N. Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце. Если такой элемент отсутствует, то вывести 0. 72. Дана матрица размера M x N. Элемент называется локальным минимумом (максимумом), если он меньше (больше) всех окружающих его элементов. Заменить все локальные минимумы1|максимумы2 данной матрицы на 0. 73. Дана матрица размера M x N. Поменять местами ее строки1|столбцы2 так, чтобы их минимальные3|максимальные4 элементы образовывали возрастающую5|убывающую6 последовательность. 74. Описать функцию Polynom(A,N,X) вещественного типа, находящую значение полинома P в вещественной точке X. Полином P задается параметрами N (степень полинома, 0 < N < 8) и A (коэффициенты полинома, вещественный массив размера N+1): P(X) = A[1]·XN + A[2]·XN–1 + ... + A[N]·X + A[N+1]. Используя эту функцию, найти значения заданного полинома в пяти данных точках. 75. Описать функцию Min(A,N)1|Max(A,N)2 вещественного типа, находящую минимальный1|максимальный2 элемент массива A, состоящего из N вещественных чисел. С помощью этой функции найти минимальные1|максимальные2 элементы массивов A, B, C размера NA, NB, NC соответственно. 76. Описать функцию NMin(A,N)1|NMax(A,N)2 целого типа, находящую номер минимального1|максимального2 элемента массива A (массив состоит из N вещественных чисел). С помощью этой функции найти номера минимальных1|максимальных2 элементов массивов A, B, C размера NA, NB, NC соответственно. 77. Описать процедуру NMinmax(A,N,NMin,NMax), находящую номера минимального и максимального элемента массива A из N вещественных чисел. Выходные параметры: NMin (номер минимального элемента) и NMax (номер максимального элемента). С помощью этой процедуры найти номера минимальных и максимальных элементов массивов A, B, C размера NA, NB, NC соответственно. 78. Используя функцию NOD2 из задания Proc10, описать функцию NODN(A,N) целого типа, находящую наибольший общий делитель элементов целочисленного массива A размера N. С помощью этой функции найти наибольшие общие делители элементов массивов A, B, C размера NA, NB, NC соответственно. 79. Описать процедуру Factors(A,N,F), находящую разложение натурального числа A на простые множители. Количество множителей возвращается в целой переменной N, а сами множители (в порядке неубывания) — в целочисленном массиве F (N и F — выходные параметры; максимальное число элементов массива F считать равным 15). С помощью этой процедуры разложить на простые множители пять данных чисел. 24 80. Описать процедуру Invert(A,N), меняющую порядок следования элементов массива A из N вещественных чисел на противоположный («инвертирование массива»). Массив A — входной и выходной параметр, N — входной параметр. С помощью этой процедуры инвертировать массивы A, B, C размера NA, NB, NC соответственно. 81. Описать процедуру MoveLeft(A,N,k)1|MoveRight(A,N,k)2, осуществляющую циклический сдвиг элементов вещественного массива A размера N на k позиций влево1|вправо2 (0 < k < 5, k < N). Массив A — входной и выходной параметр, N и k — входные параметры. С помощью этой процедуры осуществить сдвиг элементов данного массива размера N на k1 позиций, а затем — сдвиг элементов полученного массива на k2 позиций (k1 и k2 даны). После каждого вызова процедуры выводить на экран результирующий массив. 82. Описать процедуру Smooth(A,N), заменяющую каждый элемент вещественного массива A размера N на его среднее арифметическое со своими соседями («сглаживание массива»). Массив A — входной и выходной параметр, N — входной параметр. С помощью этой процедуры выполнить пятикратное сглаживание данного массива A размера N, выводя на экран результаты каждого сглаживания. 83. Описать процедуру RemoveX(A,N,X), удаляющую элементы, равные числу X, из массива A целых чисел размера N. Массив A и число N являются входными и выходными параметрами. С помощью этой процедуры удалить из массивов A, B, C размера NA, NB, NC числа XA, XB, XC соответственно. 84. Описать процедуру DoubleX(A,N,X), дублирующую элементы, равные числу X, в массиве A целых чисел размера N. Массив A и число N являются входными и выходными параметрами. С помощью этой процедуры продублировать в массивах A, B, C размера NA, NB, NC каждое вхождение чисел XA, XB, XC соответственно. 85. Описать процедуру SortInc(A,N)1|SortDec(A,N)2, выполняющую сортировку по возрастанию1|убыванию2 массива A из N вещественных чисел. Массив A является входным и выходным параметром. С помощью этой процедуры отсортировать массивы A, B, C размера NA, NB, NC соответственно. 86. Описать функцию Norm1(A,M,N)1|Norm2(A,M,N)2 вещественного типа, вычисляющую норму матрицы A размера M x N с вещественными элементами: [Norm1(A,M,N) = max {|A[1,j]| + |A[2,j]| + ... + |A[M,j]|}]1| [Norm2(A,M,N) = max {|A[i,1]| + |A[i,2]| + ... + |A[i,N]|}]2, где максимум берется по всем [j от 1 до N]1|[i от 1 до M]2. Для данной матрицы A размера M x N найти Norm1(A,k,N)1|Norm2(A,k,N)2, k = 1,...,M. 87. Описать функцию SumLine(A,M,N,k)1|SumCol(A,M,N,k)2 вещественного типа, вычисляющую сумму элементов вещественной матрицы A размера M x N, расположенных в k-й строке1|столбце2 (если [k > M]1|[k > N]2, то функция возвращает 0). Для данной матрицы A размера M x N и трех данных k найти SumLine(A,M,N,k)1|SumCol(A,M,N,k)2. 25 88. Описать процедуру SwapLine(A,M,N,k1,k2)1|SwapCol(A,M,N,k1,k2)2, осуществляющую перемену местами строк1|столбцов2 вещественной матрицы A размера M x N с номерами k1 и k2 (если k1 или k2 больше M1|N2, то матрица не изменяется). Двумерный массив A — входной и выходной параметр, прочие параметры — входные. Используя эту процедуру, поменять для данной матрицы A размера M x N строки1|столбцы2 с номерами k1 и k2. 89. Описать процедуру Transp(A,M), выполняющую транспонирование квадратной вещественной матрицы A порядка M. Двумерный массив A — входной и выходной параметр, M — входной параметр. Использовать эту процедуру для транспонирования данной матрицы A порядка M. 90. Описать процедуру Gauss(A,M,N,i1,i2,X), преобразующую вещественную матрицу A размера M x N следующим образом: из строки i1 вычитается строка i2, умноженная на вещественное число X. Двумерный массив A — входной и выходной параметр, прочие параметры — входные. С помощью этой процедуры, используя в качестве вспомогательной первую строку, обнулить в остальных строках данной матрицы A размера M x N элементы k-го столбца (число k дано, причем A[1,k] <> 0). 91. Описать процедуру DelIJ(A,M,N,i,j), удаляющую из матрицы A размера M x N строку и столбец, содержащие элемент A[i,j] (если i > M или j > N, то матрица не изменяется). Двумерный вещественный массив A и целые числа M (> 1), N (> 1) являются входными и выходными параметрами, i и j — входные параметры. Дана матрица A размера M x N и числа i, j. Применить к матрице A процедуру DelIJ и вывести полученную матрицу. Тема 11. Структурированные типы данных. Множества. Строки 1. Вывести строку длины N (N — четное), которая состоит из чередующихся символов C1 и C2, начиная с C1. 2. Дана строка. Вывести строку, содержащую те же символы, но расположенные в обратном порядке. 3. Дана строка. Вывести коды ее первого и последнего символа. 4. Дана строка. Подсчитать количество содержащихся в ней цифр1|[прописных букв]2|[строчных букв]3. 5. Дана строка. Преобразовать все строчные1|прописные2 латинские3|русские4 буквы в прописные1|строчные2. 6. Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с дробной частью), то вывести 2; если строку нельзя преобразовать в число, то вывести 0. 7. Дано целое число. Вывести набор символов, содержащий цифры этого числа в исходном1|обратном2 порядке. 8. Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (> 0). Вывести набор символов, изображающих первые N цифр дробной части этого вещественного числа (без округления). 9. Дана строка, изображающая двоичную1|десятичную2 запись целого числа. Вывести строку, изображающую десятичную1|двоичную2 запись этого же числа. 26 10. Дана строка, изображающая целое число. Вывести сумму цифр этого числа. 11. Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы «.» (точка). 12. Даны два числа: N1 и N2, и две строки: S1 и S2. Получить из этих строк новую строку, объединив N1 первых символов строки S1 и N2 последних символов строки S2. 13. Даны две строки: S1 и S2. Проверить, содержится ли строка S2 в строке S1. Если да, то вывести номер позиции, начиная с которой S2 содержится в S1, если нет, то вывести 0. 14. Даны две строки: S1 и S2. Определить количество вхождений строки S2 в строку S1. 15. Дана строка S и символ C. Удвоить каждое вхождение символа C в строку S. 16. Даны строки S1, S2 и символ C. Перед1|после2 каждого вхождения символа C в строку S1 вставить строку S2. 17. Даны две строки: S1 и S2. Удалить из строки S1 первую1|последнюю2|все3 подстроки, совпадающие с S2. Если таких подстрок нет, то вывести S1 без изменений. 18. Даны три строки: S1, S2, S3. Заменить в строке S1 первое1|последнее2|все3 вхождения строки S2 на S3. 19. Дана строка. Вывести подстроку, расположенную между первой и второй1|последней2 точками исходной строки. Если в строке менее двух точек, то вывести всю исходную строку. 20. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов в строке. 21. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые [начинаются и заканчиваются одной и той же буквой]1|[содержат хотя бы одну букву «А»]2. 22. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые содержат ровно три буквы «А». 23. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить длину самого короткого1|длинного2 слова. 24. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, но разделенные одним символом «.» (точка). В конце точку не ставить. 25. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в обратном порядке. 26. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Преобразовать каждое слово в строке, удалив из него все 27 последующие1|предыдущие2 вхождения первой1|последней2 буквы этого слова (количество пробелов между словами не изменять). 27. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в алфавитном порядке. 28. Дана строка-предложение на русском языке. Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы. 29. Дана строка-предложение на русском языке. Подсчитать количество содержащихся в строке [знаков препинания]1|[гласных букв]2. 30. Дана строка-предложение на русском языке. Вывести самое короткое1|длинное2 слово в предложении (если таких слов несколько, то вывести первое3|последнее4 из них). 31. Дана строка-предложение, содержащая избыточные пробелы. Преобразовать ее так, чтобы между словами был ровно один пробел. 32. Дана строка, содержащая полное имя файла, то есть имя диска, список каталогов (путь), собственно имя и расширение. Выделить из этой строки имя1|расширение2 файла. 33. Дана строка, содержащая полное имя файла. Выделить из строки название последнего каталога (без символов «\»). Если файл содержится в корневом каталоге, то вывести символ «\». 34. Дана строка-предложение на русском языке. Зашифровать ее, выполняя циклическую замену каждой буквы на следующую за ней в алфавите и сохраняя при этом регистр букв («А» перейдет в «Б», «а» — в «б», «Б» — в «В», «я» — в «а» и т.д.). Букву «ё» в алфавите не учитывать («е» должна переходить в «ж»). Знаки препинания и пробелы не изменять. 35. Дана строка-предложение на русском языке и число k (0 < k < 10). Зашифровать строку, выполнив циклическую замену каждой буквы на букву того же регистра, расположенную в алфавите на k-й позиции после шифруемой буквы (например, для k = 2 «А» перейдет в «В», «а» — в «в», «Б» — в «Г», «я» — в «б» и т.д.). Букву «ё» в алфавите не учитывать, знаки препинания и пробелы не изменять. 36. Дано зашифрованное предложение на русском языке (способ шифрования описан в задании 35) и кодовое смещение k (0 < k < 10). Расшифровать предложение. 37. Дано зашифрованное предложение на русском языке (способ шифрования описан в задании 35) и его расшифрованный первый символ C. Определить кодовое смещение k и расшифровать предложение. 38. Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных местах, а затем, в обратном порядке, все символы, расположенные на нечетных местах (например, строка «Программа» превратится в «ргамамроП»). 39. Дано предложение, зашифрованное по правилу, описанному в задании 38. Расшифровать это предложение. 40. Дана строка, содержащая несколько круглых скобок. Если скобки расставлены правильно (то есть каждой открывающей соответствует одна 28 закрывающая), то вывести число 0. В противном случае вывести или номер позиции, в которой расположена первая ошибочная закрывающая скобка, или, если закрывающих скобок не хватает, число –1. 41. Описать функцию IsIdent(S) целого типа, проверяющую, является ли строка S допустимым идентификатором Паскаля. При утвердительном ответе возвращается 0. Если S является пустой строкой, то возвращается –1, если строка начинается с цифры, то возвращается –2. Если S содержит недопустимые символы, то возвращается номер первого недопустимого символа. Проверить с помощью этой функции пять данных строк. 42. Описать функцию FillStr(S,Len) строкового типа, возвращающую строку длины Len, заполненную повторяющимися копиями строки-шаблона S (последняя копия строки-шаблона может входить в результирующую строку частично). Используя эту функцию, сформировать по данному числу Len и пяти данным строкам-шаблонам пять результирующих строк длины Len. 43. Описать процедуру UpCase1(S)1|LowCase1(S)2, преобразующую все строчные1|прописные2 буквы строки S в прописные1|строчные2 (остальные символы строки S не изменяются). Используя эту процедуру, преобразовать пять данных строк. 44. Описать процедуру TrimL(S)1|TrimR(S)2|Trim(S)3, удаляющую в строке S начальные1|конечные2|[начальные и конечные]3 пробелы. Используя эту процедуру, преобразовать пять данных строк. 45. Описать функцию PosLast(subS,S) целого типа, возвращающую номер позиции, с которой в строке S содержится последнее вхождение подстроки subS. Если в строке S отсутствуют подстроки subS, то функция возвращает 0. Вывести значения этой функции для пяти данных пар subS и S. 46. Описать функцию PosK(subS,S,k) целого типа, возвращающую номер позиции, с которой в строке S содержится k-е вхождение подстроки subS (k > 0). Если количество вхождений subS в строке S меньше k, то функция возвращает 0. Вывести значения этой функции для пяти данных троек: k, subS и S. 47. Описать функцию WordN(S,k) строкового типа, возвращающую k-е слово строки S (под словом понимается набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки). Если количество слов в строке меньше k, то функция возвращает пустую строку. Используя эту функцию, выделить из данной строки S слова с номерами k1, k2, k3. 48. Описать процедуру SplitStr(S,W,N), которая формирует по данной строке S набор слов W, входящих в S (W — выходной строковый массив; N — его размер; предполагается, что N не будет превышать 10). Под словом понимается набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки. Используя эту функцию, вывести количество слов N, содержащихся в данной строке S, и сами эти слова. 49. Описать функцию DecToBin(N)1|DecToHex(N)2 строкового типа, которая возвращает строковое представление целого неотрицательного числа N в двоичной1|16-ричной2 системе счисления. Результирующая строка состоит из символов ['0'–'1']1|['0'–'9', 'A'–'F']2 и не содержит ведущих нулей (за 29 исключением представления числа 0). Используя эту функцию, получить двоичные1|16-ричные2 представления данных пяти чисел. 50. Описать функцию BinToDec(S)1|HexToDec(S)2 целого типа, которая определяет целое неотрицательное число по его строковому представлению S в двоичной1|16-ричной2 системе счисления. Параметр S имеет тип string, состоит из символов ['0'–'1']1|['0'–'9', 'A'–'F']2 и не содержит ведущих нулей (за исключением значения '0'). Используя эту функцию, вывести пять чисел, для которых даны их двоичные1|16-ричные2 представления. Тема 12. Тип запись 1. Сформировать запись, имеющую следующую структуру type имя=(Аня,Валя,Женя,Петя,Саша,Таня,Шура,Юра); данные=record пол:(м,ж);рост:140..200 end; и определить: средний рост женщин; o имя самого высокого мужчины; o есть ли в группе хотя бы два человека одного роста. 2. Сформировать запись, имеющую следующую структуру type дата=record число:1..31; o месяц:1..12; год:1900..1996; end; анкета=record фамилия:string; пол:(м,ж); день рождения:дата; end; и определить: фамилию самого старшего мужчины; o все фамилии, начинающиеся с заданной буквы; o список людей, родившихся в заданном месяце. 3. Сформировать запись, имеющую следующую структуру type знакомый=record фамилия:string; o номертел:10000..99999; адрес:string; end; и определить: o o o есть ли в книжке телефон данного человека; кому принадлежит данный телефон; список людей, живущих на данной улице. 30 4. Сформировать запись, имеющую следующую структуру type студент= record фамилия: string; номергр: string; оценка1: integer; оценка2: integer; оценка3: integer; end; и определить: фамилию того, кто лучше всех сдал экзамены; o средний балл по данному предмету; o список задолжников. 5. Сформировать запись, имеющую следующую структуру type студент= record фамилия:string; o имя:string; пол:(м,ж); возраст:16..35; курс:1..5; end; и определить: курс, на котором наибольший процент мужчин; o самые распространенные женские и мужские имена; o список студентов данного пола, данного курса. 6. Сформировать запись, имеющую следующую структуру type пассажир=record фамилия:string; o имя:string; номер рейса:string; количество вещей:integer; общий вес:integer; end; и определить: рейс с максимальным весом багажа; o пассажира с наибольшим количеством вещей; o вывести список пассажиров и информацию об их багаже, улетающих данным рейсом. 7. Сформировать запись, имеющую следующую структуру type владелец=record фамилия:string; o адрес:string; марка автомобиля:string; рег. номер:string; 31 год выпуска:1900..2000; end; и определить: количество автомобилей каждой марки; o владельца самого старого автомобиля; o фамилии владельцев и номера автомобилей данной марки. 8. Сформировать запись, имеющую следующую структуру type ребенок=record фамилия:string; o адрес:string; пол:(муж,жен); количество дней посещения:integer; end; и определить: самого болеющего ребенка; o кто больше болеет мальчики или девочки; o список детей проживающих на данной улице. 9. Сформировать запись, имеющую следующую структуру type книга=record автор:string; o название:string; год издание:integer; издательство:string; количество страниц:integer; end; и определить: есть ли в библиотеке книги данного автора; o найти книгу с наибольшим количеством страниц; o найти названия книг данного автора, изданных с указанного года, в данном издательстве. 10. Сформировать запись, имеющую следующую структуру type товар=record наименование:string; o страна:string; объем партии:integer; цена:integer; end; и определить: страну, в которую экспортируется товар на максимальную сумму; o список стран, в которые экспортируется данный товар; o найти товары, который имеет минимальный объем партии. o 32 11. Сформировать запись, имеющую следующую структуру type игрушка=record название:string; цена:integer; возраст1:1..16; возраст2:1..16; end; и определить: название самой дорогой игрушки; o список игрушек, которые подходят детям данного возраста; o подобрать игрушки на данную сумму денег (все варианты). 12. Сформировать запись, имеющую следующую структуру type игрушка=record название:string; o цена:integer; цвет:string; возраст1:1..16; возраст2:1..16; end; и определить: название игрушек, цена которых не превышает данную и которые подходят детям данного возраста; o найти самую дешевую игрушку данного названия; o найти самый распространенный цвет игрушек. 13. Сформировать запись, имеющую следующую структуру type пассажир=record фамилия:string; o имя:string; номер рейса:string; количество вещей:integer; общий вес:integer; end; и определить: число пассажиров, количество вещей которых превосходит среднее число вещей; o пассажира с данным количеством вещей и не более данного веса; o вывести информацию о количестве вещей и общем весе каждого рейса. 14. Сформировать запись, имеющую следующую структуру type спортсмен=record фамилия:string; o страна:string; 33 рост:150..220; вес:30..100; год рождения:ineger; результат:integer; end; и определить: средний рост и вес спортсменов данной страны; o найти лучшего спортсмена данной страны; o список спортсменов данного возраста с результатом, не хуже данного. 15. Сформировать запись, имеющую следующую структуру type спортсмен=record фамилия:string; o страна:string; тренер:string; год рождения:ineger; результат:integer; end; и определить: найти самого молодого спортсмена, занимающегося у данного тренера; o найти лучшего тренера данной страны; o список тренеров с указанием страны. 16. Сформировать запись, имеющую следующую структуру type предмет=record название:string; o количество часов:integer; преподаватель:string; кафедра:string; форма отчетности:(зачет,экзамен); end; и определить: преподавателя, у которого самое большое количество часов; o список предметов, по которым сдают экзамен; o кафедру и преподавателя, который ведет данный предмет. 17. Сформировать запись, имеющую следующую структуру type предмет=record название:string; o количество часов:integer; преподаватель:string; кафедра:string; форма отчетности:(зачет,экзамен); end; 34 и определить: преподавателя, который принимает больше всего экзаменов; o кафедру, на которой читается больше всего предметов; o список преподавателей данной кафедры. 18. Сформировать запись, имеющую следующую структуру type предмет=record название:string; o количество часов:integer; преподаватель:string; кафедра:string; форма отчетности:(зачет,экзамен); end; и определить: найти среднюю нагрузку по данной кафедре; o найти количество зачетов и экзаменов у данного преподавателя; o список предметов, читаемых данной кафедрой. 19. Сформировать запись, имеющую следующую структуру type преподаватель=record фамилия:string; o предмет:string; факультет:string; курс:1..5; количество часов:integer; end; и определить: o o o преподавателя имеющего самую большую нагрузку; список предметов, которые читает данный преподаватель; объем часов на данном факультете и данном курсе. Тема 13. Файловые типы 1. Описать функцию getInt(Name,k) целого типа, возвращающую k-й элемент файла целых чисел с именем Name (элементы нумеруются от 0). Если файл не существует или не содержит k-го элемента, то функция возвращает 0. С помощью этой функции вывести пять элементов данного файла с указанными номерами. 2. Описать функцию getLine(Name,k) строкового типа, возвращающую k-ю строку текстового файла с именем Name (строки нумеруются от 0). Если файл не существует или не содержит k-й строки, то функция возвращает пустую строку. С помощью этой функции вывести пять строк данного файла с указанными номерами. 3. Описать функцию IntFileSize(Name) целого типа, возвращающую размер файла целых чисел с именем Name. Если файл не существует, то функция 35 возвращает –1. С помощью этой функции определить размер трех файлов с данными именами. 4. Описать функцию TextSize(Name) целого типа, возвращающую число строк в текстовом файле с именем Name. Если файл не существует, то функция возвращает –1. С помощью этой функции определить размер трех файлов с данными именами. 5. Описать процедуру InvertIntFile(Name), меняющую порядок следования элементов файла целого типа с именем Name на противоположный. Если файл не существует или содержит менее двух элементов, то процедура не выполняет никаких действий. Обработать с помощью этой процедуры три файла с данными именами. 6. Описать процедуру SplitIntFile(Name0,k,Name1,Name2), копирующую первые k (>= 0) элементов существующего файла целых чисел с именем Name0 в файл Name1, а остальные элементы — в файл Name2 (прежнее содержимое результирующих файлов стирается). Один из результирующих файлов может оказаться пустым. Применить эту процедуру к файлу Name0, используя указанные значения Name1, Name2 и k. 7. Описать процедуру SplitText(Name0,k,Name1,Name2), копирующую первые k (>= 0) строк существующего текстового файла с именем Name0 в файл Name1, а остальные элементы — в файл Name2 (прежнее содержимое результирующих файлов стирается). Один из результирующих файлов может оказаться пустым. Применить эту процедуру к файлу Name0, используя указанные значения Name1, Name2 и k. 8. Описать процедуру ConcatFile(NameA,NameB,NameAB), позволяющую объединить содержимое двух двоичных файлов NameA и NameB одного и того же типа в новом файле NameAB. Использовать процедуры BlockRead и BlockWrite. Применить эту процедуру к парам исходных файлов Name1– Name2, Name1–Name3 и Name2–Name3, создав файлы с именами Name12, Name13, Name23. 9. Описать процедуру StringFileToText(Name)1|TextToStringFile(Name)2, преобразующую [двоичный строковый]1|текстовый2 файл с именем Name в текстовый1|[двоичный строковый]2 файл с тем же именем. Используя эту процедуру, преобразовать два данных строковых1|текстовых2 файла с именами Name1 и Name2 в текстовые1|строковые2. 10. Описать процедуру CodeText(Name,k), шифрующую текстовый файл с именем Name, выполняя циклическую замену каждой русской буквы на букву, расположенную в алфавите на k-й позиции после исходной (0 < k < 11). Например, при k = 3 «А» перейдет в «Г», «а» — в «г», «Я» — в «В». Букву «ё» в алфавите не учитывать, прочие символы файла не изменять. Используя эту процедуру и зная k, зашифровать1|расшифровать2 данный файл. Тема 14. Файлы типизированные 1. Дана строка S. Если S является допустимым именем файла, то вывести True и создать файл с этим именем. Если файл с именем S создать нельзя, то вывести False. 36 2. Даны имена четырех файлов. Вывести количество файлов с указанными именами, которые имеются в текущем каталоге. 3. Дано имя файла целых чисел. Вывести количество его элементов. Если файла с таким именем не существует, то вывести –1. 4. Дано число k и файл, содержащий ненулевые целые числа. Вывести элемент файла с номером k (элементы файла нумеруются от нуля). Если такой элемент отсутствует, то вывести 0. 5. Дан файл целых чисел, содержащий не менее четырех элементов. Вывести его нулевой, первый, предпоследний и последний элементы. 6. Даны имена двух файлов вещественных чисел. Известно, что один из них существует и содержит не менее двух элементов, а другой в текущем каталоге отсутствует. Создать отсутствующий файл и записать в него нулевой и последний элементы существующего файла. 7. Дан файл целых чисел. Вывести количество содержащихся в нем серий (то есть наборов последовательно расположенных одинаковых элементов). 8. Дан файл вещественных чисел. Найти количество его локальных минимумов1|максимумов2|экстремумов3. 9. Дан файл вещественных чисел. Найти количество его участков убывания1|возрастания2|монотонности3. 10. Даны два файла произвольного типа. С помощью процедуры Rename поменять местами их содержимое. 11. Дан файл произвольного типа. С помощью процедур BlockRead и BlockWrite создать его копию с новым именем. 12. Дано целое число N (< 5) и N файлов одного и того же типа с именами Name1, ..., Name. С помощью процедур BlockRead и BlockWrite объединить содержимое этих файлов (в указанном порядке) в новом файле с именем Name0. 13. Даны два файла одного и того же типа. С помощью процедур BlockRead и BlockWrite добавить к первому файлу содержимое второго файла, а ко второму файлу — содержимое первого. 14. Даны три файла одного и того же типа, но разного размера. С помощью процедур BlockRead и BlockWrite заменить содержимое самого длинного1|короткого2 файла на содержимое самого короткого1|длинного2. 15. Дан файл целых чисел. Создать новый файл, содержащий те же элементы, что и исходный файл, но в обратном порядке. 16. Даны три файла целых чисел одинакового размера с именами NameA, NameB и NameC. Создать новый файл с именем NameD, в котором чередовались бы элементы исходных файлов с одним и тем же номером: A0, B0, C0, A1, B1, C1, A2, B2, C2, ... . 17. Даны четыре файла целых чисел разного размера с именами NameA, NameB, NameC и NameD. Создать новый файл с именем NameE, в котором чередовались бы элементы исходных файлов с одним и тем же номером (как в задании 16). «Лишние» элементы более длинных файлов в результирующий файл не записывать. 37 18. Дан файл вещественных чисел с именем Name1. Создать два новых файла с именами Name2 и Name3, первый из которых содержит элементы исходного файла с четными номерами (0, 2, 4, ...), а второй — с нечетными (1, 3, 5, ...). 19. Дан файл, содержащий ненулевые целые числа. Создать новый файл, содержащий только положительные1|отрицательные2|четные3|нечетные4 числа исходного файла (в том же порядке). 20. Дан файл целых чисел. Создать новый файл, содержащий длины всех серий исходного файла. 21. Дан файл вещественных чисел. Создать файл целых чисел, содержащий длины всех убывающих1|возрастающих2|монотонных3 последовательностей его элементов. 22. Дан файл вещественных чисел. Заменить в нем все элементы на их квадраты. 23. Дан файл вещественных чисел. Заменить в файле каждый элемент, кроме начального и последнего, на его среднее арифметическое с предыдущим и последующим элементом. 24. Дан файл целых чисел с элементами A(i), i = 0, ..., N–1 (N — размер файла). Заменить исходное расположение его элементов на следующее: A(0), A(N–1), A(1), A(N–2), A(2), ... . 25. Дан файл целых чисел. Если его размер меньше 50, то дополнить его нулями до 50 элементов; если его размер больше 50, то урезать его до 50 элементов. Тема 15. Файлы текстовые 1. Дан текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк EOLN и конца файла EOF при подсчете количества символов не учитывать). 2. Дана строка S и текстовый файл. Добавить строку S в начало1|конец2 файла. 3. Дан текстовый файл. Удалить из него первую1|последнюю2 строку. 4. Даны два текстовых файла с именами Name1 и Name2. Создать новый текстовый файл с именем Name3, являющийся объединением содержимого файлов Name1 и Name2 (в указанном порядке). 5. Даны два текстовых файла с именами Name1 и Name2. Добавить в конец файла Name1 содержимое файла Name2. 6. Дан текстовый файл, содержащий более трех строк. Удалить из него три последние строки. 7. Дано число k (< 10) и текстовый файл, содержащий более k строк. Удалить из файла первые1|последние2 k строк. 8. Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла. 9. Дано число k и текстовый файл. Удалить из файла строку с номером k (строки нумеруются от 0). Если строки с таким номером нет, то оставить файл без изменений. 38 10. Дано число k и текстовый файл. Вставить пустую строку перед1|после2 строки с номером k (строки нумеруются от 0). Если строки с таким номером нет, то оставить файл без изменений. 11. Дан текстовый файл. Удалить из него пустые строки. 12. Дана строка S и текстовый файл. Заменить в файле все пустые строки на строку S. 13. Дан текстовый файл. Заменить в нем все подряд идущие пробелы на один пробел. 14. Дан текстовый файл, содержащий текст, выровненный по левому краю. Выровнять его по [правому краю]1|центру2, добавив в начало каждой непустой строки необходимое количество пробелов (ширину текста считать равной 50). Строки нечетной длины перед центрированием дополнять слева пробелом. 15. Дан текстовый файл, содержащий текст, выровненный по левому краю. Абзацы текста разделяются одной пустой строкой. Выровнять текст по ширине (то есть и по левому, и по правому краю), увеличив в каждой непустой строке (кроме последних строк абзацев) количество пробелов между словами, начиная с первого1|последнего2 пробела в строке (ширину текста считать равной 50). 16. Дан текстовый файл. Найти количество абзацев в тексте, если абзацы отделяются друг от друга одной или несколькими пустыми строками. 17. Дан текстовый файл. Найти количество абзацев в тексте, если каждый абзац начинается с красной строки (5 пробелов). Пустые строки между абзацами не учитывать. 18. Дан текстовый файл. Абзацы выделяются в нем с помощью красной строки (5 пробелов), а пустых строк нет. Вставить между соседними абзацами по пустой строке. 19. Дан текстовый файл. Создать символьный файл, содержащий все знаки препинания, встретившиеся в текстовом файле (в том же порядке). 20. Дан текстовый файл. Вывести первое1|последнее2 слово текста наибольшей длины (с учетом знаков препинания, расположенных в начале и в конце слов). 21. Дано целое число N и текстовый файл. Создать строковый файл, содержащий все слова длины N из исходного файла (знаки препинания, расположенные в начале и в конце слов, не учитывать). Если исходный файл не содержит слов длины N, оставить результирующий файл пустым. 22. Дан символ C (прописная русская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся1|оканчивающиеся2 этой буквой (как прописной, так и строчной). Знаки препинания, расположенные в начале и в конце слов, не учитывать. Если исходный файл не содержит подходящих слов, оставить результирующий файл пустым. 23. Дано число N и текстовый файл. Удалить из файла абзац с номером N (абзацы отделяются друг от друга одной или несколькими пустыми строками и нумеруются от 1). Пустые строки, предшествующие и следующие за удаляемым абзацем, не удалять. Если абзац с данным номером отсутствует, то оставить файл без изменений. 39 24. Дано число N и текстовый файл. Удалить из файла абзац с номером N (абзацы выделяются с помощью красной строки (5 пробелов) и нумеруются от 1). Пустые строки между абзацами не учитывать и не удалять. Если абзац с данным номером отсутствует, то оставить файл без изменений. 25. Дан текстовый файл, каждая строка которого изображает целое число, дополненное слева и справа несколькими пробелами. Вывести сумму этих чисел и их количество. 26. Дан текстовый файл, каждая строка которого изображает целое или вещественное число, дополненное слева и справа несколькими пробелами (вещественные числа имеют ненулевую дробную часть). Вывести сумму целых1|вещественных2 чисел и их количество. 27. Дан текстовый файл, каждая строка которого содержит изображения нескольких вещественных чисел, разделенных пробелами. Создать файл вещественных чисел, содержащий эти числа в том же порядке. 28. Даны два текстовых файла с именами Name1 и Name2. Добавить в начало1|конец2 каждой строки файла Name1 соответствующую строку файла Name2. Если файл Name2 короче файла Name1, то оставшиеся строки файла Name1 не изменять. 29. Дан текстовый файл NameT и файл целых чисел NameN. Добавить в начало1|конец2 каждой строки файла NameT изображение соответствующего числа из файла NameN. Если файл NameN короче файла NameT, то оставшиеся строки файла NameT не изменять. 30. Дан текстовый файл с именем NameT. В каждой его строке первые 60 позиций отводятся под текст, а оставшаяся часть — под вещественное число. Создать два файла: строковый файл с именем NameS, содержащий текстовую часть исходного файла, и файл вещественных чисел с именем NameR, содержащий числа из исходного файла. 31. Даны два файла целых чисел одного размера с именами Name1 и Name2. Создать текстовый файл с именем NameT, содержащий изображения этих чисел, расположенные в два столбца шириной по 30 символов: первый содержит числа из файла Name1, второй — из файла Name2. В начале и конце каждой строки текстового файла ввести разделитель « | « (код 124). Числа выравниваются по левому1|правому2 краю столбца. 32. Даны вещественные числа A, B и целое число N. Создать текстовый файл, содержащий таблицу значений функции f(x) = [sin(x)]1|[cos(x)]2|[exp(x)]3 на промежутке [A, B] с шагом (B-A)/N. Таблица состоит из двух столбцов: с аргументами x (10 позиций, из них 3 под дробную часть) и со значениями f(x) (15 позиций, из них 8 под дробную часть). Столбцы выравниваются по правому краю и разделяются 10 пробелами. 33. Дан текстовый файл с именем NameT, содержащий таблицу из трех столбцов вещественных чисел. Ширина столбцов таблицы и способ их выравнивания являются произвольными. Специальных символов-разделителей таблица не содержит. Создать файлы вещественных чисел с именами Name1, Name2 и Name3, каждый из которых содержит числа из соответствующего столбца таблицы. 40 34. Дан текстовый файл, представляющий собой таблицу, состоящую из трех столбцов с целыми числами. В начале и в конце каждой строки таблицы, а также между ее столбцами располагается символ-разделитель. Ширина столбцов таблицы и способ их выравнивания являются произвольными. Создать файл целых чисел, содержащий сумму чисел из каждой строки исходной таблицы. 35. Дан текстовый файл. Создать символьный файл, содержащий все символы, встретившиеся в тексте, включая пробел и знаки препинания (без повторений). Символы располагать в порядке [возрастания их кодов]1|[убывания их кодов]2|[их первого появления в тексте]3. 36. Дан текстовый файл с именем NameT. Подсчитать число повторений в нем строчных русских букв («а»–»я») и создать строковый файл с именем NameS, элементы которого имеют вид: «<буква>–<число повторений данной буквы>«. Буквы, отсутствующие в тексте, в файл не включать. Строки упорядочить по [возрастанию кодов букв]1|[убыванию числа повторений букв, а при равном числе повторений — по возрастанию кодов букв]2. 37. Дано целое число N и текстовый файл с именем Name1, содержащий один абзац текста, выровненный по левому краю. Отформатировать текст так, чтобы его ширина не превосходила N позиций, и выровнять текст по левому1|правому2 краю. Пробелы в конце строк удалить. Сохранить отформатированный текст в новом текстовом файле с именем Name2. 38. Дано целое число N и текстовый файл Name1, содержащий текст, выровненный по левому краю. Абзацы текста отделяются друг от друга одной пустой строкой. Отформатировать текст так, чтобы его ширина не превосходила N позиций, и выровнять текст по левому1|правому2 краю, сохранив деление на абзацы. Пробелы в конце строк удалить. Сохранить отформатированный текст в новом текстовом файле Name2. 39. Дана строка K, состоящая из 10 цифр, и файл с русским текстом. Зашифровать файл, выполнив циклическую замену каждой русской буквы, стоящей на i-й позиции строки, на букву того же регистра, расположенную в алфавите на K[i]-м месте после шифруемой буквы (символы строки K также перебираются циклически: для i = 11 снова используется смещение K[1] и т.д.). Букву «ё» в алфавите не учитывать, знаки препинания и пробелы не изменять. 40. Дана строка S1 и файл с русским текстом, зашифрованным по правилу, описанному в задании 39. Строка S1 представляет собой первую расшифрованную строку текста. Расшифровать остальные строки и заменить в файле зашифрованный текст на расшифрованный. Если информации для расшифровки недостаточно, то исходный файл не изменять. Тема 16. Файлы нетипизированные 1. Дан файл целых чисел. Удалить в нем все положительные1|отрицательные2|четные3|нечетные4 числа. 2. Дан файл целых чисел. Продублировать в нем все числа, принадлежащие диапазону 5..10. 3. Дан файл, содержащий ненулевые целые числа. Заменить в нем все положительные1|отрицательные2|четные3|нечетные4 числа двумя нулями. 41 4. Дан файл вещественных чисел. Поменять в нем местами минимальный и максимальный элементы. 5. Даны два файла вещественных чисел с именами Name1 и Name2, элементы которых упорядочены по возрастанию1|убыванию2. Объединить эти файлы в новый файл с именем Name3, сохранив упорядоченность элементов. 6. Даны два целых числа i и j и файл вещественных чисел, содержащий элементы квадратной матрицы (по строкам). Вывести элемент матрицы, расположенный в i-й строке и j-м столбце (строки и столбцы нумеруются от 1). Если требуемый элемент отсутствует, то вывести 0. 7. Даны два целых числа i и j и файл вещественных чисел, содержащий элементы прямоугольной матрицы (по строкам), причем начальный элемент файла содержит количество столбцов матрицы. Вывести элемент матрицы, расположенный в i-й строке и j-м столбце (строки и столбцы нумеруются от 1). Если требуемый элемент отсутствует, то вывести 0. 8. Дан файл вещественных чисел, содержащий элементы квадратной матрицы (по строкам). Создать файл, содержащий элементы матрицы, транспонированной к исходной. 9. Дан файл вещественных чисел, содержащий элементы прямоугольной матрицы (по строкам), причем начальный элемент файла содержит количество столбцов матрицы. Создать новый файл той же структуры, содержащий матрицу, транспонированную к исходной. 10. Даны два файла вещественных чисел с именами NameA и NameB, содержащие элементы квадратных матриц A и B (по строкам). Создать новый файл с именем NameC, содержащий элементы произведения A·B. Если матрицы A и B нельзя перемножать, то оставить файл NameC пустым. 11. Даны два файла вещественных чисел с именами NameA и NameB, содержащие элементы прямоугольных матриц A и B (по строкам), причем начальный элемент каждого файла содержит количество столбцов соответствующей матрицы. Создать файл той же структуры с именем NameC, содержащий произведение A·B. Если матрицы A и B нельзя перемножать, то оставить файл NameC пустым. 12. Дан файл вещественных чисел, содержащий элементы [верхней треугольной]1|[нижней треугольной]2|трехдиагональной3 матрицы (по строкам). Создать новый файл, содержащий элементы ненулевой части данной матрицы (по строкам). 13. Даны два целых числа i и j и файл вещественных чисел, содержащий ненулевую часть [верхней треугольной]1|[нижней треугольной]2|трехдиагональной3 матрицы (по строкам). Вывести порядок матрицы и ее элемент, расположенный в i-й строке и j-м столбце (строки и столбцы нумеруются от 1). Если требуемый элемент находится в нулевой части матрицы, то вывести 0; если элемент отсутствует, то вывести –1. 14. Дан файл вещественных чисел, содержащий ненулевую часть [верхней треугольной]1|[нижней треугольной]2|трехдиагональной3 матрицы (по строкам). Создать новый файл, содержащий все элементы данной матрицы (по строкам). 42 15. Даны два файла вещественных чисел с именами NameA и NameB, содержащие ненулевые части [верхних треугольных]1|[нижних треугольных]2 матриц A и B (по строкам). Создать новый файл с именем NameC, содержащий ненулевую часть произведения A·B исходных матриц (по строкам). Если матрицы A и B нельзя перемножать, то оставить файл NameC пустым. 16. Дано целое число N (< 5) и N файлов целых чисел разного размера с именами Name1,..., Name. Объединить их содержимое в новом файле целых чисел с именем Name0, используя следующий формат: в начальном элементе файла Name0 хранится число N, в следующих N элементах хранятся размеры исходных файлов, а затем последовательно размещаются данные из каждого исходного файла. 17. Дан файл целых чисел, содержащий данные из нескольких (не более четырех) файлов в формате, описанном в задании File41. Восстановить файлы, использованные при создании исходного файла, присвоив им имена вида «<n>.tst», где <n> — порядковый номер файла (n = 1, 2, ...). 18. Дан символьный файл, содержащий по крайней мере один символ пробела. Удалить все его элементы, расположенные после первого1|последнего2 символа пробела, включая и сам этот пробел. 19. Дан символьный файл, содержащий по крайней мере один символ пробела. Удалить все его элементы, расположенные перед первым1|последним2 символом пробела, включая и сам этот пробел. 20. Дан символьный файл. Упорядочить его элементы по возрастанию1|убыванию2 их кодов. 21. Дано число k и строковый файл с именем Name1, содержащий непустые строки. Создать два новых файла: строковый с именем Name2, содержащий первые1|последние2 k символов каждой строки исходного файла (если строка короче k символов, то она сохраняется целиком), и символьный с именем Name3, содержащий k-й символ каждой строки (если строка короче k, то в файл Name3 записывается пробел). 22. Дан строковый файл, содержащий непустые строки. Создать новый файл, содержащий все строки исходного файла наименьшей1|наибольшей2 длины (в том же порядке). 23. Дан строковый файл с именем NameS, содержащий даты в формате «день/месяц/год», причем под день и месяц отводится по две позиции, а под год — четыре. Создать файлы целых чисел с именами Name1 и Name2, содержащие соответственно значения [дней и месяцев]1|[дней и лет]2|[месяцев и лет]3 для дат из исходного строкового файла (в том же порядке). 24. Дан строковый файл, содержащий даты в формате «день/месяц/год», причем под день и месяц отводится по две позиции, а под год — четыре. Вывести строку, содержащую самую раннюю1|позднюю2 весеннюю3|летнюю4|осеннюю5|зимнюю6 дату. Если даты с требуемым временем года в файле отсутствуют, то вывести дату «01/01/1900». 25. Дан строковый файл, содержащий даты в формате «день/месяц/год», причем под день и месяц отводится по две позиции, а под год — четыре. 43 Создать новый строковый файл, в котором даты из исходного файла располагались бы в порядке возрастания1|убывания2. Тема 17. Модули Pascal Написать и отладить программы с использованием модуля, содержащего процедуры расчета элементов линейных массивов «В», являющихся: 1. суммой элементов в столбцах матрицы «A» (NxM), 2. суммой элементов в строках матрицы «A» (NxM), 3. наибольшими элементами в строках матрицы «A» (NxM), 4. наименьшими элементами в строках матрицы «A» (NxM). 5. наибольшими элементами в столбцах матрицы «A» (NxM), 6. наименьшими элементами в столбцах матрицы «A» (NxM). N=30, M=10. Значения элементов матрицы «A» определяются в основной программе функцией Random(10), N=15, M=6. Программа выводит на экран значения элементов массивов «A» и «В». Составить модуль, содержащий процедуры или функции для расчета: 1. скалярного произведения двух векторов «A» и «B» длиной «N», т. е. С= A * B = a1*b1 + a2*b2 + ... + aN*bN, где N<=100. 2. суммирования двух матриц «A» и «B» размером (МxN), N<=30, M<=30, т. е. С= A + B , где c11= a11+ b11; b12 = a12+ b12; и т. д. cMN = aMN+ bMN. 3. умножения двух матриц «A» (МxN) и «B» (NxK), N<=30, K <=30, M<=30, т. е. С= A * B, где cij= ai1* b1j+ ai2* b2j + ... + aiN* bNj ; и т. д. 4. Элемент с индексом «i, j» новой матрицы «С» (МхК) получается как сумма произведений элементов i -ой строки матрицы «A» на соответствующие элементы j -ого столбца матрицы «В». Значения элементов матрицы «A» определяются в основной программе функцией Random(200), М=5, N=10. Программа выводит на экран массивы «A», «В» и «С». Тема 18. Графика Pascal Модифицировать программу «небо в алмазах»: 1. Выводить пикселы в прямоугольниках, расположенных: в правой нижней четверти экрана (использовать яркие цвета), в левой верхней четверти экрана (использовать темные цвета). Увеличить степень «гашения» точек, чтобы экран был более свободным. 2. Выводить пикселы в прямоугольниках, расположенных: в левой нижней четверти экрана (использовать яркие цвета), в правой верхней четверти экрана (использовать темные цвета). Сопроводить появление каждой сотой точки коротким звуковым импульсом с частотой 100 * цвет точки. Примечание к 1 и 2 : После высвечивания 5000 пикселов изменять номер графического режима, цвет линий и фона. 3. Смоделировать на экране семь вертикальных цветных полос настройки телевизора, заполненных пикселами разного цвета. 4. Смоделировать на экране пять колец, заполненных пикселами разного цвета. 44 Примечание к 3 и 4 : Заполнение произвести тремя способами: а) линиями или окружностями разного радиуса; б) пикселами, рисующими линии или окружности разного радиуса. Координаты точек окружности радиуса «r» вычислять по формуле: x=round(r*cos(t)); y=round(r*sin(t)); где 0=< t <=2*Pi; в) пикселами с координатами, определяемыми функцией Random и выводимыми только в заданной области в цикле до нажатия клавиши. После каждого заполнения способами а), б), в) - очищать экран. Модифицировать программу «мерцание звезд»: 1. Если точка гаснет, то ее положение изменить на несколько пикселов и выводить цветом звезды линию к новым координатам звезды. 2. Если точка гаснет, то звезда «взрывается» - рисуется красная окружность радиусом два пиксела с коротким звуковым импульсом и гашением этой окружности после «взрыва». 3. Перемещать звезды желтого цвета вокруг центра экрана (выход пиксела за экран не контролировать). 4. Разделить экран на четыре области, в каждой из которых звезды белого цвета смещать на два пиксела по «Х» , «Y» от центра экрана. Модифицировать программу «снег»: 1. Смоделировать град - пикселы должны со звуком подскочить на преграде (нарисуйте прямоугольник) или на нижнем крае экрана. 2. Смоделировать дождь - смещающиеся пикселы должны оставлять след серого цвета, причем на этот цвет не реагировать как на цвет преграды. Дождинки не должны накапливаться на преградах. 3. Увеличить скорость падения снежинок (не забыв усовершенствовать анализатор условия остановки снежинок). Смоделировать образование снежных хлопьев - при достижении нижнего края экрана снежинка должна «обрасти» еще четырьмя пикселами - приобрести форму крестика. 4. Изменяя через 10 циклов «Repeat...Until» приращения координат по осям «X» и «Y» в диапазоне -5...+5, смоделировать порывистый ветер случайного направления, действующий на снег. Анализировать при этом вылет снежинок за боковые границы экрана. Модифицировать программу «взрыв»: 1. Сделать бомбу - в виде квадрата. При достижении краев экрана осколки бомбы должны высвечиваться красным цветом (в программе использовать массив цветов осколков). 2. Сделать бомбу - в виде круга. Осколки бомбы должны снижать скорость при движении. 3. Смоделировать бомбу, падающую с середины верхней части экрана и взрывающуюся при достижении нижнего края экрана. 4. Смоделировать два движущихся по горизонтали снаряда, взрывающихся при столкновении. 45 Модифицировать программу «цветные волны точек»: 1. Создать два перекрещивающихся набора волн: по горизонтали и по вертикали. 2. Изменить условие отражения точек от границ экрана: при достижении горизонтального края должны «прилипать» с изданием звука точки одного цвета, затем другого и т. д. до остановки всех точек. 3. Сгенерировать волны, движущиеся из левой верхней четверти экрана по диагонали. Изменять цвет точек при каждом их отражении от границ экрана. 4. Сгенерировать две волны, движущиеся из правого и левого верхних углов экрана по диагонали. Уменьшать скорость точек при каждом их отражении от границ экрана. Модифицировать программу «молекулы газа в поле тяготения»: 1. Изменить направление поля тяготения (в правый нижний угол). 2. Точки ярких цветов направьте к правой границе экрана, точки темных цветов - к левой границе. 3. Для одной из точек (например, с номером 100) отслеживать ее движение в виде ломаной линии. 4. Смещать сто раз через один цикл (Repeat...Until) нижнюю границу на один пиксел вверх, затем вниз и т. д., моделируя изменение «объема сосуда с молекулами». Добавить оператор, контролирующий и изменяющий координаты точек, выходящих за границу. Модифицировать программу «пчелиный рой»: 1. Замедлить перемещение роя и запрограммировать изменение направления перемещения при достижении края экрана. 2. Ускорить перемещение роя и запрограммировать движение по вертикали с изменением направления перемещения при достижении края экрана. 3. Создать два роя разного цвета, один из которых случайным образом перемещающиеся по экрану, а другой движется вслед за первым. 4. Создать два роя разного цвета, один из которых случайным образом перемещающиеся по экрану, а другой движется в противоположную сторону. Смоделировать движение кометы. Модифицировать программу «мячик в коробке»: 1. Задать лабиринт в виде прямоугольника, содержащего три вытянутых прямоугольника со стенками разного цвета. Частота звука при отражении мяча от стенки должна зависеть от цвета стенки. 2. Задать лабиринт в виде прямоугольника содержащего две наклонные линии. Увеличивать на 0.02,с. задержку движения мяча после каждого удара о стенку. 46 3. Запрограммировать движение двух мячей разного цвета в лабиринте. Замедлять движение мячей, увеличивая задержку на 0.001,с. после каждого шага рисования мячей. 6. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО НАПИСАНИЮ И ОФОРМЛЕНИЮ КУРСОВЫХ РАБОТ Планом предусмотрено написание курсовой работы. Студенты очной формы обучения выбирают тематику теоретической и практической части произвольно, для контролья неповторяющихся тем согласлвывают тематику с преподавателем. Студенты заочной формы обучения в межсессионный период выполняют самостоятельно курсовую работу. Номер теоретической части курсовой работы определяется по последней цифре в номере зачетной книжки. Практическая часть выбирается произвольно. Для успешного выполнения курсовой работы необходимо изучить рекомендованную нормативную, основную и дополнительную литературу. Курсовая работа должна быть зарегистрирована на заочном факультете. Если работа после рецензии преподавателя допущена к защите, то её необходимо защитить. Если работа не допущена к защите, то она дорабатывается в соответствии с замечаниями и сдается на проверку повторно. Курсовая работа должна быть зачтена до начала экзаменационной сессии и предъявлена на экзамен. Курсовая работа сдается в бумажном и электронном вариантах. Бумажный вариант предназначен для хранения на кафедре и оформляется в виде отчета по курсовой работе. Отчет состоит из титульного листа, содержания, введения, текста отчета, заключения и списка литературы. Титульный лист содержит информацию о тематике курсовой работы, исполнителе и руководителе работы. Содержание включает список глав, параграфов, пунктов и подпунктов как теоретической части, так и описания разработанной программы с указанием страниц в отчете (нумеруются все страницы, кроме титульного листа). В ведении четко определяются: цель, задачи и актуальность данной работы. Текст отчета состоит из двух частей. В первой части раскрывается тема курсовой работы. Допускается использование текста из других источников, который выделяется кавычками (или вертикальной линией слева от параграфа) с обязательной ссылкой на источник и комментарием исполнителя курсовой работы. Объем первой части – не менее 8 страниц текста (без учета иллюстраций) формата А4, шрифт Times New Roman 14, через 1,5 интервала. Во второй части (объем не ограничивается) приводится описание реализации практического задания, которое должно включать: — формулировку задания, — математическую постановку задачи (если в задании требуется выполнение математических расчетов), — описание структуры используемых текстовых и типизированных файлов, — блок-схему реализации (с описанием основных или уникальных алгоритмов), 47 — техническое описание программы (язык или среда программирования, требуемая операционная система, используемая оперативная и дисковая память, требования к компьютеру), — инструкцию пользователя с иллюстрациями основных этапов работы в виде слайдов с экрана. Список литературы оформляется в соответствии с правилами (см. пример в любом учебнике) и содержит ссылки на литературу, использованную при подготовке теоретической части и написании программы. При использовании источников из сети INTERNET вместо ссылки на издательство указывается полный электронный адрес источника, например (ссылка вымышлена): ... 6. Паскалев Я.П. Использование возможностей интернет-технологий при программировании на паскале. — http://www.chat.ru/~prog/pascal/inet.html. ... Электронный вариант предназначен для передачи на кафедру программного обеспечения и содержит файлы (в неархивированном виде): — текст отчета (в формате WinWord); — программа практического задания – исходный текст (PAS) и выполняемый файл (EXE); — другие файлы, если их наличие необходимо для корректной компиляции исходного текста и (или) для выполнения EXE-программы; — текстовый файл READMY.TXT, содержащий фамилию и номер группы студента, тему теоретической части и задание на практическую часть курсовой работы, а также название и краткое описание остальных файлов. Файлы электронного варианта (без архивирования-сжатия) сдаются на подписанной дискете без сбоев. Возможна запись на один диск файлов нескольких студентов (с расположением в отдельных папках). Темы теоретическх вопросов для курсовой работы 1. Модульное программирование, основные принципы, обзор языков программирования. Основные процедуры и функции модулей. 2. Алгоритм. Формы представления. Способы представления и записи алгоритмов. Описание известных алгоритмов. 3. История возникновения программирования. Основные принципы и подходы при создании языков программирования. 4. Способы хранения информации в ПК. Представление целых, вещественных и текстовых форматов. 5. Программирование. Стили программирования. История развития стилей программирования. 6. Логическое программирование. История возникновения. Основные принципы, обзор основных процедур и функций. 7. Функциональное программирование. История возникновения. Основные принципы, обзор основных процедур и функций. 48 8. Oбъектно-ориентированное программирование. История развития. Иерархия объектов. Основные принципы оъектно-ориентированного программирования. Динамические, виртуальные, статические методы. 9. Выполнение программ. Программа – компилятор, программа – интерпретатор. 10. Понятие объекта. Иерархия объектов. Наследование. Методы. Внутреннее представление объектов. 11. Понятие модели. Принципы моделирования. Создание информационных моделей. Переход от реальной задачи к информационной модели. 12. Визуальные языки программирования. Обзор. История возникновения. Основные принципы, обзор основных процедур и функций. 13. Моделирование как метод познания. Типы моделей. Формализация. Исследование информационных моделей на ПК. 14. Основы искусственного интеллекта. Основные понятия. Представление знаний. Инструментарий. 15. Основы компьютерной графики. Основные понятия. Представление изображения. Разрешающая способность. Аппаратная поддержка графики. 16. Структурное программирование. Предотвращение ошибок. Экономия ресурсов. 17. Специальные приемы программирования: большие объемы данных, большие объемы программного кода, работа программ в реальном масштабе времени. 18. Этапы разработки программ. Тестирование и отладка. Документирование программ. 19. Физические принципы работы ЭВМ. 20. Программное обеспечение сетей ЭВМ. 21. Глобальная телекоммуникационная сеть INTERNET. Программное обеспечение для работы в сети INTERNET. 22. Возможности взаимодействия с ЭВМ на естественном языке. 23. Программная реализация графических преобразований в компьютерном моделировании. 24. Экспертные системы. Назначение, принципы построения, функциональные возможности. Примеры пакетов. 25. Компьютерные вирусы. Классификация, принципы реализации, правила функционирования, методика защиты. 26. Локальные вычислительные сети. Работа в системе NetWare фирмы Nowell. 27. Методика преподавания языков программирования. 28. Интеллектуальные системы. Назначение, принципы построения, функциональные возможности, методы приобретения знаний. 29. Защита от компьютерных вирусов. Обзор популярных антивирусных программ. 30. Программное обеспечение персональных компьютеров. Исторический очерк, классификация текущего состояния, перспективы развития. 49 31. Сжатие информации. Теоретическое обоснование, алгоритмы сжатия, программная реализация, обзор современных программ–архиваторов. 32. Системы программирования. Классификация, аналитический обзор наиболее популярных систем программирования. 33. Телекоммуникационные средства обмена компьютерной информации. Технические средства телекоммуникаций, программное обеспечение. Реализация обмена данных на языках высокого уровня. 34. Автоматизированное рабочее место. Функциональное назначение, основные принципы организации. 35. Методы защиты информации от несанкционированного доступа. 36. Механизм OLE. Основные принципы. Реализация в языках высокого уровня. 37. Информационные системы. Принципы построения, примеры реализации. 38. Системы автоматизированного проектирования (САПР), их лингвистическое обеспечение. 39. Разработка системного программного обеспечения. 40. Проблема распознавания текста. Обзор алгоритмов и программ. 41. Проблема распознавания речи. Обзор алгоритмов и программ. 42. Системное программное обеспечение. Системное программирование. 43. Макроязыки. Структура и реализация. 44. Многозадачность и многопоточность. Теория и реализация. 45. Человеко-машинный интерфейс. Правила организации. Создание экгономического интерфейса. Задания по практиеской части Программы 1. Графический редактор (по типу Paint). 2. Тренажер слов иностранного языка (с возможностью выбора тем, типа теста, сплошного или случайного отбора). Дополнительно – программа редактирования базы слов. 3. Организатор тестов (опросов). Одна программа предназначена для формирования и редактирования файла с текстами вопросов и ответов, другая программа – для реализации опроса. 4. Тренажер памяти. Тип тренажера определяет студент. 5. Иллюстратор замечательных кривых. 6. Интерпретатор строки, содержащей запись арифметического выражения по правилам языка BASIC или PASCAL. Пользователь вводит строку, в ответ получает значение выражения. Распознание строки оформить в виде функции. 7. Построение графика произвольной функции одной переменной. Уравнение функции и границы изменения переменной вводит пользователь (см. предыдущее задание) 8. Построение графика функции двух переменных. Уравнение задается во внутренней функции программы. Базы данных Требуется разработать структуру типизированных файлов для хранения информации (в каждой работе должно быть несколько таких файлов, в том 50 числе справочные) и написать программу на языке PASCAL. Данная программа в режиме экранного меню позволяет редактировать данные в файлах (добавлять, изменять, удалять записи) и выполнить группу наиболее типичных для данной базы запросов (результатом запроса должны быть либо информационный одно- и многострочный текст, либо таблица). Должен быть предусмотрен выбор пользователем устройства вывода – экран (с возможностью прокрутки), принтер или текстовый файл на диске. Примеры баз данных: 1. Библиотека: книги, читатели, выдача книг. 2. Телефонный справочник: абоненты (граждане и организации), улицы. 3. Деканат: студенты, предметы, оценки. 4. Отдел кадров: сотрудники, подразделения, должности. 5. Оптовый магазин: товары, поставщики и покупатели, заказы. 6. Билетная касса: рейсы, кассиры, билеты. 7. Клуб собаководства: собаки (со ссылками на родителей), породы, владельцы. Игры 1. Игра «Пятнадцать». На квадратном поле размером 4 х 4 с помощью датчика случайных чисел расставлены 15 фишек с номерами от 1 до 15. Имеется одна свободная позиция. Расставить фишки по возрастанию их номеров. Передвигать фишки можно только на соседнюю свободную позицию. 2. Игра «Расстановка 16 букв». В квадрате размером 4 х 4 клетки расставить 16 букв (по четыре буквы а, b, c, d) так, чтобы в каждом — горизонтальном и вертикальном — рядах любая буква встречалась только один раз. 3. Игра «100 спичек». Из кучки, первоначально содержащей 100 спичек, двое играющих поочередно берут по несколько спичек: не менее одной и не более десяти. Выигрывает взявший последнюю спичку. 4. Игра «Вращающий квадрат». Дан квадрат размером 4 х 4 клетки, в которых с помощью датчика случайных чисел расставлены буквы от А до Р. Упорядочить буквы в квадрате по алфавиту. Квадрат имеет подквадраты, которые можно вращать по часовой стрелке на одну клетку. Подквадраты имеют размер 2 х 2 и указываются номером левой верхней клетки. 5. Игра «Ипподром». Играющий выбирает одну из трех лошадей, состязающихся на бегах, и выигрывает, если его лошадь приходит первой. Скорость передвижения лошадей на разных этапах выбирается программой с помощью датчика случайных чисел. 6. Игра «Ним». Имеется три кучки спичек. Двое играющих по очереди делают ходы. Каждый ход заключается в том, что из одной какой-то кучки берется произвольное ненулевое число спичек. Проигрывает взявший последнюю спичку. 7. Игра «в слова». Программа выбирает слово и рисует столько прочерков, сколько букв в этом слове. Отгадать, какое слово загадано программой. В каждый год играющий указывает одну букву. Если буква названа правильно, то она подставляется вместо соответствующего прочерка. В противном случае играющий теряет одно очко. В начале у играющего 15 очков. 51 8. Игра «Подбери ключи». Перед играющим четыре запертые двери. Открыть все двери, располагая десятью ключами, каждый из которых может открыть несколько дверей. Предоставляется 14 попыток. 9. Игра «Мост». Дан мост с арками разной ширины, в нижней строке экрана расположен мяч, которым можно управлять: мяч можно перемещать по строке, останавливать в нужной позиции строки и катить к мосту. Очки начисляются, если мяч проходит через арку. 10. Игра «Сбей самолет». По экрану летят вражеские самолеты. Цель — их сбить. В нижней строке экрана находится пусковая установка, которую можно перемещать по строке вперед и назад. 11. Игра «100 спичек». Из кучки, первоначально содержащей 100 спичек, двое играющих поочередно берут по несколько спичек: не менее одной и не более десяти, Проигрывает взявший последнюю спичку. 12. Игра «Крестики - нолики». Написать программу. 13. Игра «Расстановка девяти чисел». В квадрате размером 3 х 3 клетки расставить числа 1, 2, 3,..., 9 так, чтобы суммы чисел, стоящих в каждом вертикальном ряду, в каждом горизонтальном ряду, а также на любой диагонали были равны. 14. Игра «Угадай число». Программа с помощью датчика случайных чисел выбирает число в диапазоне от 0 до 9. Угадать это число за три попытки. После каждой попытки сообщает, больше или меньше названное задуманного. 15. Игра «Баше». В игре участвуют двое. Условия игры: имеются N предметов. Соперники ходят по очереди. За каждый ход игрок может взять 1, 2, ..., К предметов. Проигрывает тот, кто вынужден взять последний предмет. 16. Игра «Скачки». В игре участвуют 10 наездников; за каждый тур игры каждый из них продвигается вперед на расстояние от 1 до 5 км случайным образом. Длина дистанции — 50 км. Всего 5 заездов, победителю заезда начисляется 5 очков. Победителем считается наездник, набравший наибольшее количество очков во всех заездах. Перед началом заездов участник игры выбирает номер наездника. 17. Игра «Гонка с выбыванием». В мотокроссе участвуют 15 спортсменов, участники преодолевают 14 кругов. После каждого круга участник, занимающий последнее место, снимается с соревнований. Перед началом соревнований участники игры разыгрывают номера. Количество участников не более 15. 18. Игра «Морской бой». Игра происходит между 2 участниками на поле 10 х 10 клеток. Участники расставляют 10 одноклеточных катеров. При попадании — катер уничтожен, участник делает еще ход. Ход в клетку, соседнюю с уничтоженным кораблем, недействителен и повторяется. Победитель — первый, уничтоживший катера соперника. 19. Игра «Быки и коровы». Программа случайно выбирает четырехзначное число. Угадать это число. На каждом шаге играющий называет 4-значное число, программа сообщает об угаданных цифрах (быки) и стоящих на месте (коровы). Например, задано число 6482, число 5428 содержит 1 «корову» и 2 «быка». 52 7. УЧЕБНО-МЕТОДИЧЕСКИЕ МАТЕРИАЛЫ ПО ДИСЦИПЛИНЕ Основная Литература 1. Алексеев Е.П. Турбо Паскаль 7.0/ Алексеев Е.Р., Чеснокова О.В. – М.: НТ Пресс, 2007. – 320 с.: ил. – (Полная версия) 2. Попов В.Б. Паскаль и Дельфи. Самоучитель. – СПб.: Питер, 2004. – 544 с.: ил. 3. Потопахин В.В. Turbo Pascal: решение сложных задач. – СПб.: БХВ – Петербург, 2006. – 208 с.: ил. Дополнительная Литература 1. Turbo Pascal/ Немнюгин С.А.. – СПб: Издательство «Питер», 2000. – 496 с.: ил. 2. Бежанова М.М., Москвина Л.А.. Практическое программирование. Приемы создания программ на языке Паскаль. М.. Научный мир. 2000. 270 с. 3. Программирование на языке Паскаль: задачник/ под ред. Усковой О.Ф. – СПб.: Питер, 2003. – 336 с.: ил. 4. Фаронов В.В. Turbo Pascal. – СПб.: БХВ – Петербург, 2004. – 1056 с.: ил. 5. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. – М.: Издательство «ОМД Групп», 2003. – 616 с., ил. 6. Шпак Ю.А. Turbo Pascal 7.0 на примерах/ Под ред. Ковтанюка Ю.С. – К.: Издательство Юниор, 2003. – 496 с., ил. Электронные библиотечные системы 1. Научная электронная библиотека НЭБ (http://www.elibrary.ru) 2. Университетская информационная система РОССИЯ (УИС РОССИЯ http://uisrussia.msu.ru) 3. Интернет-Университет Информационных Технологий (http://www. intuit.ru) 8. ФОРМЫ ТЕКУЩЕГО, ПРОМЕЖУТОЧНОГО И ИТОГОВОГО КОНТРОЛЯ Примерные тестовые задания 1. Сочетанием каких клавиш осуществляется запуск программы? 1. 2. 3. Ctrl+F9 Alt+F5 Alt+F3 2. Сочетанием каких клавиш вызывается справка об операторе, на котором установлен курсор? 1. 2. 3. Ctrl+F1 Alt+Backspace Ctrl+Y 3. При написании программы строчные и прописные буквы различаются? 53 1. 2. Да Нет 4. Тип имеющий диапазон значений -32768..32767 1. 2. 3. Word Integer Longint 5. Операция «целочисленное деление» имеет вид 1. 2. 3. mod div xor 6. Операция отношения «не равно» имеет вид 1. 2. 3. ≠ <> такой операции нет 7. Математическая функция , возвращающая число, равное квадрату числа Х 1. 2. 3. Sqrt(X) Sqr(X) Frac(X) 8. Функция увеличивающая значение числа X на Y. Если число Y не указано, то увеличение происходит на 1 1. 2. 3. Round(X) Inc(X,Y) Dec(X,Y) 9. Оператор, выводящий значения переменных А1, А2,...,АК в строку 1. 2. 3. WriteLn(A1,A2,...AK); ReadLn(A1,A2,...AK); Write(A1,A2,...AK); 10. Раздел описания модулей имеет вид 1. 2. 3. label 3, 471, 29, Quit; uses CRT, Graph; var P,Q,R: Integer; 11. Оператор условного перехода имеет вид 54 1. 2. 3. if условие then оператор 1 else оператор 2; goto метка for переменная := значение 1 to значение 2 do оператор 12. Тип массива задается следующим образом 1. type 2. имя типа = array[ список индексов ] of тип type Traffic_Light= (RED, YELLOW, GREEN); Function K_О(N: word): Longint; 3. 13. Функция возвращающая в качестве результата значение текущей длины строки-параметра имеет вид 1. 2. 3. Copy(s:string; index:integer; count:integer) Concat(s1,[s2,...,sn]:string) Length(s:string) 14. Процедура удаляющая из строки s подстроку длиной count символов, начиная с символа под номером index 1. 2. 3. Delete(var s:string; index,count:integer) Insert(source:string; var s:string;index:integer) Copy(s:string; index:integer; count:integer):string 15. Что делает данная программа var S : string ; i, n : byte ; begin writeln(‘наберите текст:’) ; readln (S) ; n := Length (S) ; for i := 1 to n do if (S[i] >= ‘0’) and (S[i] <= ‘9’) then S[i] := ‘ ‘ ; writeln (‘Новая строка:’ ) ; writeln (S) ; end . 1. заменяет в строке S все гласные буквы на пробелы 2. заменяет в строке S все цифры на пробелы 3. заменяет в строке S все пробелы на цифры 16. С помощью каких служебных слов описывается множественный тип 55 1. record of 2. array of 3. set of 17. Укажите процедуру, связывающую файловую переменную f с физическим файлом 1. Reset(f) 2. Assign(f, FileName) 3. Close(f) 18. Процедура смещающая указатель файла f на n-ную позицию 1. Seek(f, n) 2. Erase(f) 3. EOF(f) 19. С какого служебного слова начинается интерфейсная часть модуля 1. Name_M; 2. Implementation 3. Interface 20. Подключение графической библиотеки при программировании в среде Turbo-Pascal производится оператором 1. Uses Crt; 2. Uses Graph; 3. Uses InitGraph; 21. Процедура установки цвета «N» для пикселов фона имеет вид 1. SetBkColor(N); 2. SetColor(N); 3. PutPixel(X, Y, N); 22. Процедура для построения отрезка прямой линии от точки с координатами x1, y1 к точке с координатами x2, y2 имеет вид 1. Line(x1, y1, x2, y2); 2. Rectangle(x1, y1, x2, y2); 3. Circle(X, Y, R); 23. Процедура перемещения курсора в точку с координатами (x, y) имеет вид 1. MoveTo(x, y); 2. MoveRel(x,y); 56 3. LineTo(x, y); 24. Пример операторов для построения какой фигуры представлен ниже R:=100; {расстояние от вершин до центра xc, yc} xc:= GetMaxX div 2; yc:= GetMaxY div 2; for i:= 1 to 8 do begin alfa:= i * pi/4; {значение угла в рад.} x[i]:= xc + round(R * cos(alfa)); {координаты вершин} y[i]:= yc + round(R * sin(alfa)) end; MoveTo(x[8], y[8]); { исходная позиция для рисования } for i:= 1 to 8 do LineTo(x[i], y[i]); { рисование линий } 1. треугольника 2. шестиугольника 3. восьмиугольника Задания для экзаменационных билетов Итоговая оценка выставляется при условии выполнения студентом по одному заданию из каждого блока предложенных программ. Блок 1 1. Даны натуpальное число n и действительная матpица (N x 9). Найти сpеднее аpифметическое: a) каждого из столбцов; б) каждого из стpок. 2. Найти наибольший элемент главной диагонали матpицы (5 x 5) и вывести на печать всю стpоку, в котоpой он находится. 3. Опpеделить количество положительных и отpицательных элементов матpицы А(3, 4). 4. Заполнить матpицу В(4, 4) : b(i, j)= | a(i, j) | / | a(j,i) |, где а(k, m) — элементы матpицы А(4,4). 5. Каждый элемент матpицы А(3, 3) pазделить на значение опpеделителя матpицы. 6. Возвести в квадpат все элементы матpицы А(4, 3) и пеpеставить местами пеpвый и последний столбец. 7. Найти наибольший и наименьший элемент в матpице А(4, 3) и пеpеставить их местами. 8. Поменять знак у всех отpицательных элементов матpицы А(5, 3) и подсчитать их количество. 9. Матpицу А(6, 4) умножить на единичную матpицу Е(4, 4). Блок 2 57 1. Написать функцию для нахождения количества различных элементов вектора, не используя дополнительных массивов. 2. Написать функцию less для сравнения векторов. Такую, что less(a, b) = true <= a < b <=> a[i] < b[i] для любого i. 3. Написать функцию для нахождения расстояния |a[i] - a[j]| между двумя наиболее близких по значению элементами вектора. 4. Написать функцию для нахождения расстояния |a[i] - a[j]| между двумя наиболее удаленными по значению элементами вектора. 5. Найти количество элементов группы, содержащей наибольшее число одинаковых элементов вектора, например: 1 2 1 2 3 9 8 2 результат: 3, 1 2 3 результат: 1 6. Дан массив целых чисел x[1]..x[m+n], рассматриваемый как соединение двух его отрезков: начала x[1]..x[m] длины m и конца x[m+1]..x[m+n] длины n. Написать процедуру, которая, не используя дополнительных массивов, переставляет начало в конец. 7. Написать процедуру для нахождения производной многочлена. Исходный и результирующий многочлен задаются массивами коэффициентов. 8. Написать процедуру перемножения двух многочленов, заданных массивами коэффициентов, результатом является многочлен, заданный массивом коэффициентов. 9. Даны два массива целых чисел, упорядоченные не по возрастанию, содержащие одинаковый элемент. Написать функцию, находящую этот элемент. 10. Написать функцию, находящую количество общих элементов. 11. Написать процедуру, соединяющую их в один упорядоченный по не возрастанию массив. 12. Написать процедуру, находящую их пересечение в виде упорядоченного по не возрастанию массива. 13. Написать функцию, находящую количество различных элементов. Блок 3 1. СКОБКИ. Во введенном арифметическом выражении проверить правильность расстановки скобок трех видов (),[],{}. 2. ТРЕУГОЛЬНИК. Проверить, принадлежит ли начало координат (0,0) треугольнику с вершинами в точках A(Xa, Ya), B(Xb, Yb), C(Xc, Yc). 3. Ломаная. Даны координаты N точек на плоскости. Найти длину кратчайшей ломаной, соединяющей эти точки. 4. ДВА МИНИМАЛЬНЫХ. Массив вещественный массив B(20). Не используя сортировку, найти два наименьших положительных числа. Если таких нет, то сообщить об этом. 5. РАЗЛИЧНЫЕ ЧИСЛА. Дан массив двузначных целых чисел C(N, M). Сосчитать, сколько разных чисел в этом массиве. Например, в любой единичной матрице их всего два — 0 и 1. 58 6. Напечатать число, которое встречается в целочисленном массиве A[1..N] максимальное количество раз. Если таких чисел несколько, то вывести то из них, которое имеет меньший индекс. 7. Задан двумерный массив B[1..N, 1..M]. Среди его элементов два и только два равны между собой. Напечатать их индексы. 8. ВЫВОД МАТРИЦЫ. Составить программу печати элементов квадратной матрицы, просматривая ее по линиям, параллельным одной из диагоналей, в направлении сверху вниз. 9. ГРУППЫ ЧИСЕЛ. Элементы массива X(i), i=1..N разделить на группы по следующему правилу: для любых двух чисел, входящих в разные группы, модуль разности между ними больше некоторого числа Р. Блок 4 Напишите логическую функцию TEST(A ,k), принимающую значение True, если: 1. Все элементы k-го столбца нулевые. 2. Элементы k-го столбца упорядочены по возрастанию. 3. k-я строка симметрична. 4. Первый элемент k-й строки является максимальным в строке. 5. Сумма элементов k-го столбца больше суммы элементов k-й строки. 6. Все элементы k-й строки равны элементам 1-й строки. 7. Сумма элементов k-го столбца больше суммы элементов побочной диагонали. 8. Максимальный элемент k-й строки стоит в k-м столбце. 9. Минимальный элемент k-го столбца равен нулю. 10. Все элементы k-й строки совпадают с элементами к-го столбца. 11. Минимальный элемент k-й строки равен максимальному элементу k-го столбца. 12. k-я строка совпадает с k+1 (при k=10 совпадает с 1-й строкой). 13. Все элементы k-й строки есть в k-ом столбце. Блок 5 Текст задан строкой var St: string 1. Напечатать все слова, отличные от Hello. 2. Напечатать то слово, которое лексикографически (по алфавиту) предшествует всем другим словам. 3. Напечатать текст, составленный из последних литер всех слов. 4. Напечатать все слова, содержащие удвоенное н («нн»). 5. Напечатать те слова, которые являются симметричными (казак, шалаш). 6. Напечатать все слова, удалив среднюю букву у слов нечетной длины. 7. Напечатать все слова, удалив из них последнюю букву. 8. Напечатать все слова, перенеся первую букву каждого слова в конец слова. 9. Напечатать все слова, перенеся последнюю букву каждого слова в начало слова. 59 10. Напечатать все слова, удалив из них первую букву. 11. Напечатать все слова, удалив из них все последующие вхождения первой буквы каждого cлова. 12. Напечатать все слова, удалив из них все предыдущие вхождения последней буквы каждого cлова. 13. Напечатать все слова, содержащие только русские буквы. 14. Напечатать все слова, удалив из них вторую букву. 15. Напечатать все слова, удалив из них предпоследнюю букву. Блок 6 Написать функцию function Test(word:string): Boolean, принимающую значение True, если 1. Строка является словом. 2. Первая буква строки входит в нее еще раз. 3. Буквы строки упорядочены по алфавиту. 4. Количество гласных (a, e, i, o, u) превосходит количество других символов. 5. В строке есть восклицание (!) и вопрос (?). 6. Строка является символьным представлением натурального числа («122», «34» и т.д.). 7. В строку входят литеры, содержащиеся в глобальной переменной W типа string. 8. Строка является идентификатором. 9. В строке больше букв, чем знаков. 10. Строка является перевертышем. 11. Строка составлена только из строчных русских букв. 12. Количество руских букв в строке превосходит количество латинских. 13. Количество заглавных букв в строке превосходит количество прописных. Блок 7 Текст задан строкой. 1. Напечатать первые вхождения букв в текст, сохраняя их исходный взаимный порядок. 2. Напечатать все буквы, входящие в текст не менее двух раз. 3. Напечатать все буквы, входящие в текст по одному разу. 4. Напечатать все строчные русские гласные буквы (а, е, и, о, у, ы, э, ю, я), входящие в текст. 5. Напечатать все прописные русские гласные буквы (А, Е, И, О, У, Ы, Э, Ю, Я), входящие в текст. 6. Напечатать все строчные русские согласные буквы (все, кроме гласных и й, ь, ъ), входящие в текст. 7. Напечатать все прописные русские согласные буквы (все, кроме гласных и й, ь, ъ), входящие в текст. 8. Напечатать все строчные русские согласные звонкие буквы (б, в, г, д, ж, з, л, м, н, р), входящие в текст. 60 9. Напечатать все прописные русские согласные звонкие буквы (Б, В, Г, Д, Ж, З, Л, М, Н, Р), входящие в текст. 10. Напечатать все строчные русские согласные глухие буквы (к, п, с, т, ф, х, ц, ч, ш, щ), входящие в текст. 11. Напечатать все строчные русские согласные глухие буквы (к, п, с, т, ф, х, ц, ч, ш, щ), не входящие в текст. 12. Напечатать все прописные русские согласные глухие буквы (К, П, С, Т, Ф, Х, Ц, Ч, Ш, Щ), входящие в текст. 13. Напечатать все строчные русские согласные глухие буквы (к, п, с, т, ф, х, ц, ч, ш, щ), входящие в текст по одному разу. Текст задан строкой, напечатать в алфавитном порядке: 14. Все гласные буквы, которые входят в каждое слово. 15. Все согласные буквы, которые не входят ни в одно слово. 16. Все звонкие согласные буквы, которые входят хотя бы в одно слово. 17. Все глухие согласные буквы, которые не входят хотя бы в одно слово. 18. Все согласные буквы, которые входят только в одно слово. 19. Все глухие согласные буквы, которые не входят только в одно слово. 20. Все звонкие согласные буквы, которые входят более, чем в одно слово. 21. Все гласные буквы, которые не входят более, чем в одно слово. 22. Все звонкие согласные буквы, которые входят в каждое нечетное слово и не входят хотя бы в одно четное слово. 23. Все глухие согласные буквы, которые входят в каждое нечетное слово и не входят хотя бы в одно четное слово. 24. Все гласные буквы, которые не входят ни в одно нечетное слово и входят в каждое четное слово. 25. Все глухие согласные буквы, которые не входят ни в одно нечетное слово и входят в каждое четное слово. 26. Все звонкие согласные буквы, которые входят более чем в одно нечетное слово. Блок 8 Написать пpогpаммы, включающие pекуpсивную и неpекуpсивную пpоцедуpы. 1. Даны натуpальные числа n, m. Найти НОД(n, m) с помощью алгоpитма Евклида. (если n=0, то НОД(n,m)=m, \если n<>0, то для чисел m,n,r, где r-остаток от деления m на n, выполняется pавенство: НОД(m, n)=НОД(n, r)) 2. Даны неотрицательные целые числа n, m. Вычислить функцию Аккеpмана A(N,M), где: | m+1, если n=0, A(n, m) = | A(n-1, 1), если n<>0, m=0, | A(n-1,A(n, m-1)), если n>0, m>0. 61 3. Напечатать в обpатном поpядке заданный во входном файле текст. За текстом следует точка. Блок 9 type name = (Mary, Jane, Kim, Bob, Jan, Pit, Tom, Sara, Bill, Pol); data = record male : boolean; {пол: true — мужской, false — женский} height:140..200; {рост} cost : word; {зарплата} end; group = array[name] of data; 1) Опишите функцию FHeight(G), определяющую средний рост женщин из группы G. 2) Опишите функцию Higher(G), определяющую имя самого высокого мужчины из группы G. 3) Опишите логическую функцию Same(G), проверяющую, есть ли в группе G хотя бы два человека одного роста. 4) Опишите функцию MaxHeight(G), которая определяет максимальный рост женщин из группы G. 5) Опишите функцию Lower(G), определяющую имя самого невысокого мужчины из группы G. 6) Опишите логическую функцию SameMale(G), проверяющую, есть ли в группе G хотя бы два мужчины одного роста. 7) Опишите функцию MHeight(G), определяющую средний рост мужчин из группы G. 8) Опишите функцию Lower(G), определяющую имя самой невысокой женщины из группы G. 9) Опишите логическую функцию Test(G), проверяющую, что в группе G самая высокая из женщин ниже самого высокого из мужчин. 10) Опишите логическую функцию Test(G), определяющую, есть ли среди женщин группы G женщины с ростом x. 11) Опишите функцию Name(G), определяющую имя мужчины из группы G с ростом x. 12) Опишите логическую функцию Test(G), проверяющую, есть ли в группе G хотя бы один мужчина, рост которого меньше минимального женского роста. 13) Опишите функцию MHeight(G), определяющую средний рост самых высоких мужчины и женщины из группы G. 14) Опишите функцию Lower(G), определяющую имя женщины из группы G с ростом х. 15) Опишите логическую функцию Test(G), проверяющую, что в группе G самая высокая женщина выше среднего роста мужчин. 16) Опишите логическую функцию Test(G), определяющую, есть ли мужчина и женщина группы G одного роста. 17) Опишите функцию Name(G), определяющую имя мужчины из группы G с ростом x. 62 18) Опишите функцию Man(G), определяющую имя мужчины, рост которого меньше минимального женского роста. 19) Опишите функцию MaxCost(G), которая определяет максимальную зарплату женщин из группы G. 20) Опишите функцию LowCost(G), определяющую имя самого «небогатого» мужчины из группы G. 21) Опишите логическую функцию SameMale(G), проверяющую, есть ли в группе G два человека с одинаковой зарплатой. 22) Опишите функцию ManCost(G), определяющую среднюю зарплату мужчин из группы G. 23) Опишите функцию LowCost(G), определяющую имя самой богатой женщины из группы G. 24) Опишите логическую функцию Test(G), проверяющую, что зарплата самой богатой женщины ниже зарплаты самого бедного мужчины. 25) Опишите логическую функцию Test(G), определяющую, есть ли среди женщин группы G женщины с зарплатой x. 26) Опишите функцию Name(G), определяющую имя мужчины из группы G с зарплатой меньше x. 27) Опишите функцию Count(G), которая подсчитывает количество женщин из группы G с ростом х. 28) Опишите функцию ManCount(G), определяющую количество мужчин, чья зарплата выше общей средней зарплаты группы G. 29) Опишите функцию SrCost(G), которая определяет среднюю зарплату женщин из группы G. 30) Опишите функцию CountCost(G), определяющую количество человек, чья зарплата выше общей средней зарплаты группы G. Блок 10 1) type myfile = file of char; Опишите процедуру add(f,c), добавляющую литеру с в начало файла f. 2) type myfile = file of char; Опишите процедуру addlast(f,c), добавляющую литеру с в конец файла f. 3) type myfile = file of char; Опишите процедуру double(f), удваивающие в файле f все ЦИФРЫ. 4) type myfile = file of char; Опишите процедуру replace(f,c), заменяющую последнюю литеру в файле f на литеру с. 5) type myfile = file of char; Опишите процедуру next(f), заменяющую в файле каждую ЦИФРУ на следующую по величине цифру ('9' заменять на '0'). 6) type myfile = file of char; Опишите процедуру delete(f), удаляющую из файла f все литеры '+' и '-'. 7) type myfile = file of char; Опишите процедуру del(f), удаляющую из файла f предпоследний элемент, если он есть. 8) type myfile = file of char; Опишите процедуру firsts(f), оставляющую в файле f только первые вхождения каждой литеры. 63 9) type myfile = file of char; Опишите процедуру mid(f,m), присваивающую параметру m средний элемент файла f, если файл нечетной длины и символ '!', если файл четной длины. 10) type myfile = file of char; Опишите процедуру copy(f1,f2), присваивающую файлу f2 содержимое файла f1. 11) type myfile = file of char; Опишите процедуру change(f), оставляющую в файле только цифры. 12) type myfile = file of char; Опишите процедуру mid1(f), присваивающую среднему символу файла f значение '?', если файл нечетной длины. 13) type myfile = file of integer; Опишите процедуру double(f), удваивающие в файле f все четные числа. 14) type myfile = file of integer; Опишите процедуру replace(f,c), заменяющую последнее число в файле f на число -1000. 15) type myfile = file of integer; Опишите процедуру next(f), заменяющую в файле каждое число на следующее по величине. 16) type myfile = file of integer; Опишите процедуру delete(f), удаляющую из файла f все числа, меньшие заданного числа. 17) type myfile = file of integer; Опишите процедуру del(f), удаляющую из файла f предпоследнее число, если оно есть. 18) type myfile = file of integer; Опишите процедуру first(f), оставляющую в файле f только положительные числа, кратные 17. 19) type myfile = file of integer; Опишите процедуру mid(f,m), присваивающую параметру m среднюю компоненту файла f, если файл нечетной длины и символ '!', если файл четной длины. 20) type myfile = file of integer; Опишите процедуру copy(f, f1), присваивающую файлу f1 содержимое файла f. 21) type myfile = file of integer; Опишите процедуру change(f), оставляющую в файле только числа, кратные 10. 22) type myfile = file of integer; Опишите процедуру mid1(f), присваивающую среднему символу файла значение — 505, если файл нечетной длины. 23) type myfile = file of char; Опишите функцию firsts(f), которая подсчитывает количество вхождений первой литеры файла f. 24) type myfile = file of char; Опишите процедуру firsts(f), удаляющую из файла f все предыдущие вхождения последней литеры файла. 25) type myfile = file of char; Опишите логическую функцию firsts(f), проверяющую равны ли первая литера файла последней, вторая литера предпоследней и т.д. 26) type myfile = file of integer; Опишите функцию SrGeom(f), определяющую среднее геометрическое всех компонент файла f. 27) type myfile = file of integer; Опишите процедуру MaxMin(f), оставляющую в файле f только наибольшие и наименьшие значения. 28) type myfile = file of integer; Опишите процедуру CopyMid(f,f1), присваивающую файлу f1 вторую половину содержимого файла f. 64 29) type myfile = file of integer; Опишите процедуру Sred(f), оставляющую в файле f числа, меньшие среднего арифметического всех компонент файла. 30) type myfile = file of char; Опишите процедуру change(f), удаляющую из файла все отрицательные нечетные числа. Блок 11 Создайте файл, содержащий записи о студентах из 3 групп (не менее 15). type student = record name: string[10]; group: integer; marks: array[1..3] of 2..5; end; myfile = file of student; 1) Выведите на экран имена круглых отличников. 2) Выведите на экран имена круглых двоечников. 3) Выведите на экран номера групп, в которых нет троечников. 4) Выведите на экран номера групп, в которых отличников больше, чем двоечников. 5) Выведите на экран средний балл по каждому из 3-х предметов. 6) Выведите на экран средний балл по 1-му предмету в каждой из 3 групп. 7) Выведите на экран оценки студента по имени x. 8) Выведите на экран максимальный балл по 2-му предмету в каждой из 3 групп. 9) Выведите на экран имена студентов и их оценки из группы 1. 10) Выведите на экран имена студентов и их оценки из группы 2. 11) Выведите на экран номера групп, в которых есть студенты по имени х. 12) Выведите на экран средний балл студента по имени х. 13) Выведите на экран номера групп, в которых последний экзамен сдали все студенты. 14) Выведите на экран имена студентов и их оценки из группы 3. 15) Выведите на экран минимальный балл по 3-му предмету в каждой группе. 16) Выведите на экран имена студентов, у которых средний балл выше среднего в группе. 17) Выведите на экран имена студентов, которые сдали последний экзамен. 18) Выведите на экран имена студентов, сдавших сессию. 19) Выведите на экран номера групп, в которых нет несдавших. 20) Выведите на экран номера групп, в которых самый высокий средний балл. 21) Выведите на экран средний балл по 1-му и 3-му предмету. 22) Выведите на экран номера групп, в которых средний балл ниже общего среднего. 23) Выведите на экран оценки всех студентов из группы x. 24) Выведите на экран минимальную оценку по 3-му предмету в каждой группе. 65 25) Выведите на экран имена студентов и их оценки по первому экзамену. 26) Выведите на экран имена студентов и номер группы, у которых есть 4. 27) Выведите на экран средний балл всех студентов по имени х, которые сдали 2-й экзамен. 28) Выведите на экран имена студентов и номера групп, в которых последний экзамен сдали не все студенты. 29) Выведите на экран имена студентов и их оценки, у которых не сдан только один экзамен. 30) Выведите на экран количество студентов, сдавших экзамен по каждому предмету. Блок 12 1. Напишите функцию CountStr(f), которая находит количество пустых строк в файле. 2. Напишите функцию CountMax(f), которая находит максимальную длину строк в файле. 3. Напишите функцию CountNull(f), которая находит количество непустых строк в файле. 4. Напишите функцию CountStrV(f), которая находит количество строк в файле, начинающихся с буквы «v». 5. Напишите функцию CountStrD(f), которая находит количество строк в файле, заканчивающихся буквой «d». 6. Напишите функцию CountEq(f), которая находит количество строк в файле, состоящих из одинаковых литер. 7. Напишите функцию CountStr(f), которая находит количество строк в файле, начинающихся и заканчивающихся одной и той же литерой. 8. Напишите функцию CountStr(f), которая находит минимальную длину непустых строк в файле. 9. Напишите функцию CountBegin(f), которая определяет, сколько раз в файле встретилось слово «begin». 10. Напишите функцию CountEnd(f), которая определяет, сколько раз в файле встретилось слово «end». 11. Напишите функцию CountFunc(f), которая определяет, сколько раз в файле встретилось слово «function». 12. Напишите функцию Count(f), которая определяет, количество различных цифр, встречающихся в файле. 13. Напишите процедуру AlignLeft(f), которая переформатирует файл f так, что все строки в нем будут выровнены по левому краю. 14. Напишите процедуру AlignRight(f), которая переформатирует файл f так, что все строки в нем будут выровнены по правому краю (ширина строки равна константе Width = 80). 15. Напишите процедуру AlignCenter(f), которая переформатирует файл f так, что все строки в нем будут выровнены симметрично по центру (ширина строки равна константе Width=80). 66 16. Напишите процедуру Upper(f), которая переформатирует файл f так, что все строки в нем будут содержать только прописные буквы. 17. Напишите процедуру Lower(f), которая переформатирует файл f так, что все строки в нем будут содержать только строчные буквы. 18. Напишите процедуру SeekConstant(f), которая находит в файле, содержащем текст программы на Паскале, идентификаторы констант. 19. Напишите процедуру SeekVar(f), которая находит в файле, содержащем текст программы на Паскале, идентификаторы переменных. 20. Напишите процедуру SeekType(f), которая находит в файле, содержащем текст программы на Паскале, идентификаторы типов. 21. Напишите процедуру SeekFun(f), которая находит в файле, содержащем текст программы на Паскале, идентификаторы функций. 22. Напишите процедуру SeekProc(f), которая находит в файле, содержащем текст программы на Паскале, идентификаторы процедур. 23. Напишите процедуру DelComment(f), которая удаляет из файла, содержащего текст программы на Паскале, все комментарии вида { .... }. 24. Напишите процедуру InsLines(f), которая вставляет в начало каждой строки файла, содержащего текст программы на Паскале, комментарии вида { 1} { 2} с номерами строк на 4 позициях. 25. Напишите функцию MaxLines(f), которая находит строку максимальной длины. 26. Напишите процедуру MinLines(f), которая вставляет строку минимальной длины в начало и конец файла. 27. Напишите процедуру Change(f), которая меняет местами строки минимальной и максимальной длины. 28. Напишите функцию CountLet(f), которая считает количество различных русских букв. 29. Напишите процедуру UpDate(f), которая оставляет в файле строки нечетной длины. 30. Напишите процедуру InsLines(f), которая заменяет в файле строки четной длины символом '?'. 67 9. САМОСТОЯТЕЛЬНАЯ РАБОТА СТУДЕНТОВ Самостоятельная работа студентов предполагает изучение теоретического материала и написание программ, для более глубокого понимания языка программирования Pascal. График СРС очной формы обучения Тема семестр недели часы Содержание СРС Историческая 1 1 2 Изучение основ программирования Тема 2. арифметика Бинарная 1 1 2 Тема 3. стандартных типов языка Система скалярных 1 1 2 Умение переводть числа из одной соистемы счисления в другую Изучение основных типов и их применение в программе Тема 4. Структура блока описания программы 1 2 2 Тема 5. типов Совместимость 1 2 2 Тема 6. Организация ветвлений в программе 1 3-4 2 Тема 7. Операторы цикла 1 5-6 6 и 1 7 3 Тема 9. Рекурсия явная и косвенная 1 8-9 4 Умение применять рекурсии в Сдача программ подпрограммах Тема Структурированные данных. Массивы 10. типы 1 10-14 8 Уметь работать одномерными многомерными массивами Тема 11. Структурированные типы данных. Множества. Строки 1 15-18 6 Изучение различных функций Сдача программ и процедур для работы со строковами переменными и множествами Тема 12. Тип запись 2 1-4 5 Тема 13. Файловые типы 2 5 2 Тема 14. типизированные 2 5 2 Умение создавать Сдача программ элементарную базу данных Стандартные функции и Сдача программ процедуры для работы с файлами Уметь работать с Сдача программ типизированными файлами Тема 15. Файлы текстовые 2 6-7 2 Тема 16. нетипизированные 2 8-9 2 Тема 17. Модули Pascal 2 10-13 4 Тема 18. Графика Pascal 2 14-18 6 Тема 1. справка Тема8. Процедуры функции Файлы Файлы 68 Формы контроля СРС языов Опрос Домашняя контрольная работа Сдача программ Изучение структуры Сдача программ программы и значение последовательного выполнения действий Понятие совместимости типов Сдача программ и их роль в программе Изучение условного Сдача программ оператора, оператора выбора и меток Изучение арифметических и Сдача программ итерационных циклов Роль процедур и функций в Сдача программ прграмме с Сдача программ и Уметь работать с текстовыми Сдача программ файлами Уметь работать с Сдача программ нетипиированными файлами Умение создавать модули для Сдача программ более эффективной работы программ Изучение основных аспектов Сдача программ работы в графическом режиме. Создание графических объектов и элементарной анимации Задания для самостоятельной работы студентов Линейные программы 1. Составьте программу для вычисления периметра прямоугольника. 2. Составьте программу для вычисления площади трапеции. 3. Задана окружность радиуса R. Составьте программу для нахождения ее длины и площади ограниченного ею круга. 4. Составьте программу для вычисления длин высот треугольника, у которого длины сторон a, b, c. 5. Составьте программу для вычисления длин медиан треугольника, у которого длины сторон a, b, c. 6. Составьте программу для вычисления площади прямоугольного треугольника по его катетам a и b. 7. Составьте программу, складывающую две обыкновенные дроби. 8. Составьте программу, находящую разность двух обыкновенных дробей. 9. Составьте программу, умножающую две обыкновенные дроби. 10.Составьте программу, делящую две обыкновенные дроби. 11.Составьте программу для вычисления величины работы, совершенной при равномерном подъеме груза массой М кг на высоту H м. Ускорение свободного падения описать как константу G = 9,81. 12.Составьте программу для вычисления давления столба жидкости плотностью R высотой H на дно сосуда. 13.Составьте программу для вычисления выталкивающей силы, действующей на тело объемом V, наполовину погруженное в жидкость плотностью R. 14.Составьте программу для вычисления количества теплоты по формуле Q = cm(t2-t1). 15. Составьте программу для вычисления количества теплоты, полученной при сгорании М г керосина, если его теплота сгорания q. 16. Составьте программу для вычисления величины силы тока на участке электрической цепи сопротивлением R Ом при напряжении U В. 17. Составьте программу для вычисления напряжения на каждом из последовательно соединенных участков электрической цепи сопротивлением R1, R2, R3 Ом< если сила тока при напряжении U В составляет 1 А. 18. Составьте программу для вычисления значения силы тока I на участке, состоящем из двух параллельно соединенных резисторов сопротивлением R1 и R2, если напряжение на концах этого участка равно U. 19.Всхожесть семян пшеницы равна 95%. Сколько тонн семян нужно посеять, чтобы 35 тонн из них проросло? 20.Расстояние между домами, в которых живут Петя и Коля, 1200 м. Однажды они вышли каждый из своего дома и направились навстречу друг другу. Когда Петя прошел А метров, они встретились. Во сколько раз расстояние, которое прошел Коля больше расстояния, которое прошел Петя? 69 21.От станции до озера S км. Туристы, направляясь от станции к озеру, полтора часа шли пешком со скоростью А км, а затем сели на попутную машину, которая ехала со скоростью В км/ч. За какое время туристы добрались до озера? 22.Из 18 т железной руды выплавляют 10 т железа. Сколько железа выплавят из А т руды? 23.Чтобы заварить 1,5 л чая, нужно 30 г сухого чая. Чайник вмещает В л. Сколько нужно сухого чая для заварки? 24.В школьном коридоре длиной 56 м нужно выкрасить пол. Выкрасив часть коридора длиной 22 м, израсходовали А кг краски. Сколько еще нужно краски, докрасить коридор? 25.Чтобы сварить 4 порции пшенной каши, нужно взять 220 г пшена, 1 л молока и 30 г сахара. Сколько потребуется этих продуктов, чтобы сварить N порций каши? 26.Универмаг в ноябре продал товаров на А млн. р., что на 15% больше, чем в октябре. На какую сумму были проданы товары в октябре? 27.Сахарная свекла содержит 14% сахара. С 1 га собирают 30 т сахарной свеклы. сколько гектаров надо засеять сахарной свеклой, чтобы получить В т сахара? 28.Клоун предложил каждому из публики задумать число. Потом он сказал: «Прибавьте к задуманному числу 5. Теперь из результата вычтите 2. А теперь к результату прибавьте 7». Потом клоун спросил у желающих, какое число у каждого из них получилось. Услышав ответ, он немедленно объявлял каждому, какое число тот задумывал. Составьте программу, которая повторяла бы фокус клоуна. 29.Для того, чтобы печенье было рассыпчатым, в него кладут пекарский порошок. В его состав входят пищевая сода – 25%, лимонная кислота – 15% и мука – 60%. Сколько соды, лимонной кислоты и муки надо взять, чтобы приготовить А г пекарского порошка? 30.Чтобы связать один шарф, требуется 200 г пряжи. Пряжа состоит на 40% из мохера и на 60% из полиакрила. Сколько мохера и полиакрила потребуется, чтобы изготовить В шарфов? 31.Мельхиор – это сплав никеля и меди, массы которых пропорциональны числам 2 и 9. Сколько потребуется никеля и меди для выплавки С кг мельхиора? 32.Для приготовления квашеной капусты на 10 кг капусты берут 225 г соли , 350 г моркови, 200 г клюквы, 4 г лаврового листа. Сколько соли, моркови, клюквы и лаврового листа надо взять, если закуплено М кг капусты? 33.Для приготовления компота из персиков берут сахар, персики и воду в пропорции 1:1:3. Сколько кг каждого продукта надо взять, чтобы сварить Р кг компота? 34.Масса молекул кислорода в организме человека составляет 65% от его массы. Составьте программу для определения массы молекул кислорода в организме человека. 70 35.В классе N учеников. После контрольной было получено: A - пятерок, B четверок, C -троек. Найти процент троек, четверок и пятерок. 36.Четырем классам поручено убрать поле площадью F га. Известно количество учеников в каждом классе. Сколько га надо убрать каждому классу? 37.Даны два числа. Найти среднее арифметическое кубов этих чисел и среднее геометрическое модулей этих чисел. 38.Вычислить расстояние между двумя точками с данными координатами x1, y1 и x2, y2. 39.По двум данным катетам найти гипотенузу и площадь прямоугольного треугольника. 40.Даны числа x и y. Вычислить их сумму, разность и произведение. 41.Смешано v1 литров воды температуры t1 с v2 литрами воды температуры t2. Вычислить объем и температуру образовавшейся смеси. 42. Составьте программу для вычисления необходимой массы соли и воды для приготовления раствора массой m г с массовой долей w%. 43.Дано x. Вычислить 2x4 - 3x3 + 4x3 - 5x + 6. Позаботиться об экономии операций. 44.Дано x. Вычислить 1 - 2x +3x2 - 4x3 и 1 + 2x +3x2 + 4x3. Позаботиться об экономии операций. 45.Автомобиль проехал три участка пути разной длины с разными скоростями. Найти среднюю скорость автомобиля. 46. Известна сумма денег, имеющаяся у покупателя и стоимость одной единицы товара. Сколько единиц товара сможет купить покупатель и какова его сдача? 47. Составьте программу для вычисления суммы цифр введенного с клавиатуры трехзначного натурального числа. 48.Известен объем продукции, выпускаемый пятью предприятиями отрасли. Вычислить средний объем продукции, выпускаемый одним предприятием. 49.Известен плановый P и фактический F показатели выпуска продукции предприятием. Определить процент выполнения плана. 50.На строительных работах нужно отработать S часов, в подразделении N строителей. Какова средняя загруженность одного человека? Ветвления 51.Заданы числа a и b. Определить, эти числа одного или разных знаков. 52.Напишите программу-модель анализа пожарного датчика в помещении, которая выводит сообщение «Пожарная ситуация», если температура (ее значение вводится с клавиатуры) в комнате превысила 60ºС. 53.Рис расфасован в два пакета. Вес первого - m кг, второго – n кг. Составьте программу, определяющую: а) какой пакет тяжелее – первый или второй? б) вес более тяжелого пакета. 54.Туристы вышли из леса на шоссе неподалеку от километрового столба с отметкой А км и решили пойти на ближайшую автобусную остановку. Посмотрев на план местности, руководитель группы сказал, что автобусные остановки расположены на километре В и на километре С. Куда следует пойти туристам? 71 55.Валя и Вера на своем садовом участке собрали А кг клубники. Из них В кг собрала Вера. Кто из девочек собрал клубники больше и на сколько? 56.Стоимость А метров серой ткани равна В рублей, а стоимость K метров синей ткани равна М рублей. Какая ткань дороже и на сколько? 57.Первая бригада маляров за t1 час покрасила А м2 стен, а вторая бригада за t2 часа покрасила В м2. У какой бригады производительность труда выше и на сколько? 58.Турист за день прошел А км. До обеда он шел t часов и прошел 20 км. Еще t2 часа он шел после обеда. Когда скорость туриста была выше: до обеда или после обеда? 59.Тело имеет массу М г и объем V см3. Будет ли оно плавать в жидкости, объем которой равен V1 см3, а масса М1 г? (Указание: найдите плотности тема и жидкости, а затем сравните их). 60.Валя и Вера собрались варить варенье из А кг смородины. По рецепту на 2 кг ягод нужно 3 кг сахара. Валя сказала, что им потребуется С кг сахара, а Вера - что Р кг. Кто из них прав? 61.Масса 8 литров бензина 5,68 кг. Цистерна имеет объем 500 м3. Хватит ли ее, чтобы вместить А т бензина? 62.Кусок медного провода длиной 5 м имеет массу 430 г. чтобы провести проводку в квартире требуется С метров. Хватит ли для этой цели мотка провода массой М г? 63.Смекалкин, уходя в школу, вышел из дому на 3 минуты позже младшего брата. Расстояние до школы S метров. Смекалкин идет со скоростью V1 м/мин, а его брат – V2 м/мин. Догонит ли Смекалкин брата, прежде, чем тот придет в школу? 64.Составьте программу, проверяющую, верно ли утверждение, что введенное вами целое число является четным. 65.Составьте программу, проверяющую, верно ли утверждение, что введенное вами целое число делится без остатка на 3. 66.Составьте программу, проверяющую, верно ли утверждение, что сумма цифр введенного вами целого числа является четным. 67.Составьте программу, проверяющую, верно ли утверждение, что сумма цифр введенного вами целого числа делится на 5. 68.Составьте программу, определяющую, пройдет ли график функции y = 5x2 – 7 x + 2 через заданную точку с координатами (a,b). 69.Даны три действительных числа a, b, c. Найти наибольшее из них. 70.Фермер намерен купить корову, дающую не менее L литров молока ежедневно с жирностью не менее K процентов. Написать алгоритм и программу выбора коровы. 71.Написать алгоритм и программу проверки, является ли данный четырехугольник параллелограммом. 72.Гнездо для ножки деревянной кровати имеет форму прямоугольной вырезки. Определить, подойдет ли данный четырехугольный брусок для этого гнезда. 72 73.Стороны одного прямоугольника равны A и B. Стороны другого равны X и Y. Написать алгоритм и программу проверки прямоугольников на равенство. 74.Цилиндрическая деталь должна иметь длину LO и диаметр DO. Допуски равны соответственно XL и XD. Определить, удовлетворяет ли норме изготовленная деталь. 75.Занятия в начальных классах отменяются в тех случаях, когда температура воздуха не выше –25 градусов, а также при ветре не менее 7м/с и температуре не выше – 20 градусов. По утренней сводке погоды определить, пойдут ли дети в школу. 76.Стороны одного треугольника равны A1,B1,C1. Написать алгоритм и программу проверки равенства ему другого треугольника. 77.Нормальный пульс человека 60 ударов в минуту, давление 120 на 80. При отборе в школу космонавтов допуск по пульсу равен –1, +3; допуск по нижнему значению давления 3, по верхнему - +5. Определить, пройдет ли медкомиссию данный претендент. 78.Поместятся ли две одинаковые книги в кейс размерами X< Y <Z? ( Размеры книги задавать в порядке возрастания.) 79.В компьютер поступают результаты соревнований по плаванию для трех спортсменов. Выбрать и напечатать лучший результат. 80.Известна заработная плата сотрудника. Вычислить величину подоходного налога. 81.Для конкурсного отбора манекеншиц приглашаются девушки не ниже 180 см. Оределить, будет ли допущена Таня к участию в конкурсе. 82.Здоровый щенок играет не менее 8 часов в день. Напишите программу, которая определяет, здоров ли щенок по кличке Пуджик. 83.Определить, имеет ли функция Y = SIN (X) корень на отрезке X,X+1. Подсказка: если функция имеет корень на данном интервале, то ее значения на его границах имеют разные знаки. 84.Скорость на участке дороги должна быть не выше 30 км/ ч. Определить, нарушил ли водитель правила дорожного движения. 85.По заданным значениям одного из сопротивлений цепи и ее полного сопротивления определить, имеет ли место в данной цепи параллельное соединение проводников. 86.Из одной точки к прямой проведены перпендикуляр и наклонная. По длинам отрезков определить, который из них перпендикуляр. 87.Хватит ли в баке автомобиля бензина, чтобы доехать до ближайшей заправочной станции? 88.Измеряя промежутки времени между вспышкой молнии и раскатом грома, определить, удаляется или приближается гроза? 89.Мышонок Джерри улепетывает к своей норке по прямой. Успеет ли кот Том догнать Джерри, если Джерри находится как раз на полпути между Томом и норкой? 90.Каждое утро майор Знаменский заходит в тир и делает 5 выстрелов через плечо. Если он набирает 50 очков, то вечером идет с Зиночкой в ресторан, а 73 если меньше, то на тренировку в тир. Написать программу, которая распечатывает планы майора на вечер. 91.Написать программу, которая бы запрашивала целое число и распечатывала любое его значение, кроме13. Если заданное число равно13, вместо него печатается число 77. 92.Написать программу, которая бы запрашивала возраст мужчины и сообщала, сколько лет ему осталось до пенсии, либо что он уже пенсионер. 93.Даны три действительных числа a, b, c. Определить, являются ли они последовательными членами арифметической последовательности. 94.a, b, c, d -длины сторон выпуклого четырехугольника. Проверить, можно ли в него вписать окружность. 95.Найти значение выражения: а) 1 ; б) 5 . x-5 (x-7)(x+3) 96.Даны коэффициенты квадратного уравнения a,b,c. Найти действительные корни этого уравнения. 97.Известны площадь круга S1 и площадь квадрата S1. Определить: поместится ли квадрат в круг? 98.Известны площадь круга S1 и площадь квадрата S1. Определить: поместится ли круг в квадрат? 99.Заданы размеры прямоугольного отверстия A,B и размеры кирпича X,Y,Z. Определить, пройдет ли кирпич в отверстие. Замечание: задачу решать в предположении, что A>B, X>Y>Z. 100.Можно ли прямоугольный пакет размерами A,B,C положить в чемодан размерами X,Y,Z? Циклы 101.Составьте программу, выводящую на экран квадраты чисел от 10 до 20. 102.Составьте программу, которая вычисляет сумму чисел от 1 до 100. 103.Составьте программу, которая вычисляет сумму чисел от 1 до N. Значение N вводится с клавиатуры. 104.Составьте программу, которая вычисляет произведение чисел от 1 до N. Значение N вводится с клавиатуры. 105.С клавиатуры вводятся N чисел. Составьте программу, которая определяет количество отрицательных, количество положительных и количество нулей среди введенных чисел. Значение N вводится с клавиатуры. 106.Составьте программу, которая печатает таблицу перевода расстояний из дюймов в сантиметры (1 дюйм = 2,5 см) для значений длин от 1 до 20 дюймов. 107.Составить алгоритмы и программы перевода старинных русских мер длины, торгового и аптекарского веса (счетчик цикла меняется от 1 до 10): 1. саженей в метры ( 1 сажень равна 2,1366 м) 2. футов в метры (1 фут равен 0,3048 м) 3. драхм в граммы (1 драхма равна 3,7325 г) 4. унций в граммы (1 унция равна 29,86 г) 5. фунтов в килограммы (1 фунт равен 0,40951 кг) 6. аршинов в метры (1 аршин равен 0,7112 м) 7. золотников в граммы (1 золотник равен 4,2657 г) 74 8. дюймов в миллиметры (1 дюйм равен 25,3995 мм) 108.В сберкассу на трехпроцентный вклад положили S рублей. Какой станет сумма вклада через N лет? 109.Ввести с клавиатуры 10 пар чисел. Сравнить числа в каждой паре и напечатать большие из них. 110.Даны натуральные числа от 20 до 50. Напечатать те из них, которые делятся на 3, но не делятся на 5. 111.Даны натуральные числа от 35 до 87. Найти и напечатать те из них, которые при делении на 7 дают остаток 1, 2 или 5. 112.Даны натуральные числа от 1 до 50. Найти сумму тех из них, которые делятся на 5 или на 7. 113.Ввести с клавиатуры 10 чисел. Если среди них есть числа, большие 15, заменить их на 15. Напечатать все полученные числа. 114.Ввести с клавиатуры 10 чисел – положительных и отрицательных. Заменить все отрицательные числа их модулями и напечатать все полученные 10 чисел. 115.Напечатать те из двузначных чисел, которые делятся на 4, но не делятся на 6. 116.Найти произведение двузначных нечетных чисел, кратных 13. 117.Найти сумму чисел от 100 до 200, кратных 17. 118.Ввести с клавиатуры 10 чисел. Если квадрат числа меньше 100, напечатать число и его квадрат. 119.Составьте программу, которая вычисляет сумму квадратов чисел от 1 до введенного вами целого числа n. 120.Написать программу, которая по заданным значениям чисел a и b находит ab. В запросе укажите допустимые значения этих переменных ( например, если a – дробное, то b не может быть отрицательным ). 121.В бригаде, работающей на уборке сена, имеется N сенокосилок. Первая сенокосилка работала m часов, а каждая следующая на 10 минут больше, чем предыдущая. Сколько часов проработала вся бригада? 122.В ЭВМ вводятся координаты N точек. Определить, сколько из них попадает в круг радиусом R с центром в точке (a,b). 123.В ЭВМ вводятся по очереди данные о росте N учащихся класса. Определить средний рост учащихся класса. 124.Составить программу, сокращающую обыкновенные дроби. 125.Задано натуральное число N. Найти количество натуральных чисел, не превосходящих N и не делящихся ни на одно из чисел 2, 3, 5. 126.Два двузначных числа, записанных одно за другим, образуют четырехзначное число, которое делится на их произведение. Найти эти числа. 127.Даны два двузначных числа А и В. Из этих чисел составили два четырехзначных числа: первое число получили путем написания сначала числа A, а затем В; для получения второго сначала записали В, а потом А. Найти числа А и В, если известно, что первое четырехзначное число нацело делится на 99, а второе – на 49. 128.Дано натуральное n. Вычислить: 1/22 + 1/42 + ... + 1/(2n) n . 75 129.Дано натуральное n. Вычислить: 1/11 + 1/22 + ... + 1/n n. 130.Даны действительное a и натуральное n. Вычислить: 1. a!; 2. 1 + 1/2 + 1/3 +1/4 + … + 1/n; 3. 1 + 2 + 4 + 8 + … + 210; 4. (1 + 2)*(1 + 2 + 3)*…*(1 + 2 + … +10); 5. a(a+1)…(a+n-1); 6. 1/a2 + 1/a4 + … 1/a2n; 7. sin x + sin2 x + … sinn x; 8. sin x + sin x2 + … sin xn. 131.Составьте программу вычисления суммы всех двузначных чисел. 132.Дано натуральное n. Получить последовательность b1, b2, ... , bn, где при i =1,2,...,n значение bi = i! 133.Дано натуральное n, действительные а1 ,а2 ,...,аn . Получить: а1а2 + а2 а3, ... , аn-1аn. 134.У первоклассника Пети m рублей. Мороженое стоит k рублей. Петя решил наесться досыта мороженого, для этого он покупал по одному мороженому и съедал ее до тех пор, пока ему хватало денег. Как Пете узнать, сколько денег останется у него в конце концов? Учтите, что Петя делить еще не умеет, а умеет только вычитать и складывать. Сколько мороженых он может съесть? 135.Бизнесмен взял ссуду m тысяч рублей в банке под 20% годовых. Через сколько лет его долг превысит s тысяч рублей, если за это время он не будет отдавать долг? 136.С помощью оператора while напишите программу вывода всех четных чисел в диапазоне от 2 до 100 включительно. 137.С помощью оператора while напишите программу определения суммы всех нечетных чисел в диапазоне от 1 до 99 включительно. 138.С помощью оператора while напишите программу определения идеального веса для взрослых людей по формуле: Ид. вес = рост – 100. Выход из цикла: значение роста = 250. 139.Имеется кусок ткани длиной М метров. От него последовательно отрезаются куски разной длины. Все данные по использованию ткани заносятся в компьютер. Компьютер должен выдать сообщение о том, что материала не хватает, если будет затребован кусок ткани, большей длины, чем имеется. 140.На соревнованиях по фигурному катанию оценки заносятся в компьютер. Составить программу для вывода на экран лучшего результата после каждого выступления фигуристов. 141.Первоначальное напряжение в цепи равно 200 вольт. Известно, что оно меняется через каждую секунду следующим образом: через одну секунду оно уменьшается на М%, а еще через секунду увеличивается на N%, затем снова уменьшается на М%, потом уменьшается на N% и т.д. Составить программу для определения, через сколько секунд напряжение в цепи превысит 220 вольт. 76 142.Напишите программу вычисления среднего геометрического модулей двух введенных с клавиатуры целых чисел. Программа должна использовать цикл while do. Условие выхода из цикла – значение числа, равное 999. 143.Напишите программу, которая определит первое отрицательное число последовательности: y = sin(i/100), i = 1,2,3… 144.Дано действительное число А, большее 1. Найти среди чисел 1, 1+1/2, 1+1/2+1/3, ... первое, большее А и его номер. 145. Составить программу для вычисления числа е с точностью до 0.000001 по формуле 1 + 1/1! + 1/2! + 1/3! + ... 146. С клавиатуры вводятся числа и последовательно суммируются. Найти количество введенных чисел, когда их сумма превысила 100. 147. Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней? В какой день впервые спортсмен пробежит более 20 км? В какой день впервые суммарный путь превысит 60 км? 148.С помощью оператора repeat напишите программу, которая требует у вас пароль, например 111, и если пароль правильный, то печатает сообщение «Молодец!» 149.Составьте программу вычисления степени числа a с натуральным показателем n. (Записать варианты программы с разными видами циклов while, repeat, for). Массивы линейные 150.Введите с клавиатуры в массив пять целочисленных значений. Выведите их в одну строку через запятую. Получите для массива среднее арифметическое. 151.Введите с клавиатуры пять целочисленных элементов массива X. Выведите на экран значения корней и квадратов каждого из элементов массива. 152.Создайте массив из пяти фамилий и выведите их на экран столбиком, начиная с последней. 153.Создайте массив из пяти фамилий и выведите их на экран те из них, которые начинаются с определенной буквы, которая вводится с клавиатуры. 154.Создайте массив А[1..7] с помощью генератора случайных чисел и выведите его на экран. Увеличьте все его элементы в 2 раза. 155.Создайте массив А[1..8] с помощью генератора случайных чисел с элементами от –10 до 10 и выведите его на экран. Подсчитайте количество отрицательных элементов массива. 156.Создайте массив А[1..12] с помощью генератора случайных чисел с элементами от –20 до 10 и выведите его на экран. Замените все отрицательные элементы массива числом 0. 157.Создайте целочисленный массив А[1..15] с помощью генератора случайных чисел с элементами от –15 до 30 и выведите его на экран. Определите самый большой элемент массива и его индекс. 77 158.С 8 до 20 часов температура воздуха измерялась ежечасно. Известно, что в течение этого времени температура понижалась. Определите, в котором часу была впервые отмечена отрицательная температура. 159.Данные о температуре воздуха за декаду ноября хранятся в массиве. Определить, сколько раз температура опускалась ниже –10 градусов. 160.Данные о температуре воды на Черноморском побережье за декаду сентября хранятся в массиве. Определить, сколько за это время было дней, пригодных для купания. 161.Данные о температуре воздуха и количестве осадков за декаду апреля хранятся в массивах. Определить количество осадков, выпавших в виде дождя и в виде снега за эту декаду. 162.Данные о температуре воздуха за декаду декабря хранятся в массиве. Определить, сколько раз температура была выше средней за эту декаду.. 163.Данные о направлении ветра (северный, южный, восточный, западный) и силе ветра за декаду ноября хранятся в массиве. Определить, сколько дней дул южный ветер с силой, превышающей 8 м/с. 164.Создайте массив из 15 целочисленных элементов и определите среди них минимальное значение. 165.Сформируйте линейный массив вещественных чисел, элементы которого являются расстояниями, пройденными телом при свободном падении на землю за 1, 2, … , 10 с. 166.Дан линейный массив целых чисел. Проверьте, является ли он упорядоченным по убыванию. 167.Найти сумму положительных элементов линейного массива целых чисел. Размерность массива – 10. Заполнение массива осуществить с клавиатуры. 168.Найти сумму четных элементов массива целых чисел. Размерность массива – 20. Заполнение массива осуществить случайными числами от 100 до 200. 169.Найти произведение элементов массива целых чисел, которые кратны 7. Размерность массива – 15. Заполнение массива осуществить случайными числами от 10 до 50. 170.Найти сумму элементов массива вещественных чисел, имеющих нечетные номера. Размерность массива – 20. Заполнение массива осуществить случайными числами от 100 до 200. 171.Найти произведение всех элементов массива целых чисел, меньших 0. Размерность массива – 10. Заполнение массива осуществить с клавиатуры. 172.Найти сумму всех элементов массива целых чисел, удовлетворяющих условию: остаток от деления на 2 равен 3. Размерность массива – 20. Заполнение массива осуществить случайными числами от 200 до 300. 173.Найти сумму всех элементов массива вещественных чисел, больших заданного числа. Размерность массива – 20. Заполнение массива осуществить случайными числами от 50 до 100. 174.Найти произведение всех элементов массива вещественных чисел, меньших заданного числа. Размерность массива –10. Заполнение массива осуществить случайными числами от 50 до 100. 78 175.Найти произведение элементов массива, кратных 3 и 9. Размерность массива – 10. Заполнение массива осуществить случайными числами от 5 до 500. 176.Найти сумму всех элементов массива целых чисел, которые меньше среднего арифметического элементов массива. Размерность массива –20. Заполнение массива осуществить случайными числами от 150 до 300. 177.Найти сумму элементов массива целых чисел, которые делятся на 5 и на 8 одновременно. Размерность массива –30. Заполнение массива осуществить случайными числами от 500 до 1000. 178.Найти произведение элементов линейного массива целых чисел, которые кратны 5. Размерность массива –10. Заполнение массива осуществить случайными числами от 10 до 100. 179.Рассортируйте заданный линейный массив по возрастанию. 180.Напишите программу анализа значений температуры больного за сутки: определите минимальное и максимальное значение, среднее арифметическое. Замеры температуры производятся шесть раз в сутки и результаты вводятся с клавиатуры в массив T. 181.Линейный массив содержит сведения о количестве осадков, выпавших за каждый из 12 месяцев одного года. Составить программу, определяющую общее количество осадков за этот год, среднемесячное количество осадков, количество засушливых месяцев (когда количество осадков было меньше 30 мм), самый засушливый месяц года. 182.Найти количество четных элементов одномерного массива. 183.Найти количество четных элементов одномерного массива до первого встреченного числа равного наперед заданному числу а. 184.Вычислить среднее арифметическое значение тех элементов одномерного массива, которые расположены за первым по порядку минимальным элементом. 185.Вычислить среднее арифметическое значение тех элементов одномерного массива, которые попадают в интервал от –2 до 10. 186.Переменной t присвоить значение истина, если в одномерном массиве имеется хотя бы одно отрицательное и четное число. 187.Вычислить сумму четных элементов одномерного массива до первого встреченного нулевого элемента. 188.Переменной t присвоить значение истина, если максимальный элемент одномерного массива единственный и не превосходит наперед заданного числа а. 189. В доме, состоящем из 30 квартир, переселить жильцов так, чтобы жильцы первой квартиры переехали в тридцатую, из тридцатой - в первую, из второй - в 29 и т.д., найдите количество квартир, в которых проживает более 5 человек. 190. В сказочной стране Лукоморье в целях экономии топлива все грузы перевозят на Змей Горыночах, имеющих свой бортовой номер от 1 до 100. Количество голов Змея определяет его грузоподъемность. В архиве К. Бессмертного заведено личное дело на каждого Змея Горыноча с информацией 79 о количестве голов и бортовом номере Однажды на Калиновом мосту грузовым Змеем Горыночем была сбита гражданка Баба Яга. Нарушитель скрылся, но свидетели показали, что число голов Змея кратно его бортовому номеру. Помогите Д. Никитичу следователю по ДТП выяснить нарушителя. 191.В одном районе расположен тридцать населенных пунктов. По территории проходит железная дорога. По просьбе жителей района планируется построить железнодорожную станцию и проложить дороги так, чтобы сумма расстояний от всех населенных пунктов до станции была минимальной, если участок дороги, проходящей по территории района прямолинеен. Результат представить графически. 192.Если в одномерном массиве имеются три подряд идущих одинаковых элемента, то переменной r присвоить значение истина. 193.Подсчитать количество элементов одномерного массива, для которых выполняется неравенство i*i<ai<i! 194.Заданы два натуральных числа a и b. Переменной w присвоить значение истина, если в одномерном целочисленном массиве имеется хотя бы один элемент, кратный а и не кратный b. 195.Подсчитайте количество элементов одномерного массива, которые совпадают со своим номером и при этом кратны 3. 196.Дан одномерный массив а. Сформировать новый массив, который состоит только из тех элементов массива а, которые превосходят свой номер на 10. Если таких элементов нет, то выдать сообщение. 197.Найти наибольший элемент из элементов одномерного массива, имеющих четный номер. Определить, является ли он единственным. 198.Сожмите линейный массив, удалив элементы, предшествующие минимальному элементу. 199.Задан массив А(1:20). Найти произведение всех его ненулевых элементов. 200.В массиве X(1:n) каждый элемент равен 0, 1 или 5. Переставить элементы массива так, чтобы сначала располагались все нули, затем все единицы, а затем все пятерки. Дополнительного массива не заводить. Прямоугольные таблицы 201.Дан целочисленный массив X[1..5, 1..4]. Заменить в нем все элементы, меньшие 5 числом 111. 202.Дан целочисленный массив В[1..4, 1..3]. Заменить все его элементы их квадратами. 203.Дан действительный массив А[1..5, 1..3]. Напечатать индексы его отрицательных элементов. 204.Создайте двумерный целочисленный массив А[1..10, 1..7] и найдите сумму всех его элементов, имеющих оба нечетных индекса. 205.Дан целочисленный массив А[1..5, 1..3]. Вывести на экран элементы массива, кратные 5, и их индексы. 206.Введите с клавиатуры целочисленные элементы матрицы 3*3 и вычислите сумму элементов каждого столбца. 80 207.Дан целочисленный массив В[1..5, 1..5]. Напечатать его левую и правую диагонали. 208.Дан целочисленный массив В[1..5, 1..5]. Найти сумму элементов его правой диагонали и произведение элементов левой диагонали. 209.Дан целочисленный массив В[1..5, 1..5]. Найти наибольший элемент массива и сообщить его расположение относительно левой диагонали. 210.Дан целочисленный массив В[1..5, 1..5]. Найти наименьший элемент массива и сообщить его расположение относительно правой диагонали. 211.Дан целочисленный массив В[1..5, 1..5]. Вычислить сумму элементов этого массива, расположенных выше левой диагонали. 212.Дан целочисленный массив В[1..5, 1..5]. Вычислить произведение элементов этого массива, расположенных ниже левой диагонали. 213.Дан целочисленный массив В[1..5, 1..5]. Найти количество отрицательных элементов этого массива, расположенных ниже левой диагонали. 214.Дан целочисленный массив В[1..5, 1..5]. Найти количество положительных элементов этого массива, расположенных выше левой диагонали. 215.Дана таблица со сведениями о наличии сырья на каждом из 4-х участков пяти цехов. Определить номер цеха, в котором меньше всего сырья. 216.Дан массив А[1..3, 1..15]. Известно, что среди его элементов два и только два равны между собой. Напечатать их индексы. 217.Даны целые числа а1, а2, а3. Получить целочисленный массив В[1..3, 1..3], для которого B[i,j]=ai-3aj. 218.Даны действительные числа а1, а2, …, а10, b1, b2, …, b20. Получить действительный массив С[1..20, 1..10], для которого С[i,j]=aj/(1+bi). 219.Получить целочисленный массив А[1..10, 1..12], для которого aij=i+2j. 220.Создайте матрицу 5*5, значение каждого элемента которой равно сумме номера строки и столбца, на пересечении которых он находится, и вычислите сумму элементов каждой строки. 221.Получить действительный массив A[1..7, 1..7], первая строка которой задается формулой a1j=2j+3, вторая строка задается формулой a2j=j+3/(2+j), а каждая следующая строка есть сумма двух предыдущих. 222.Дано натуральное число n. Выяснить, сколько положительных элементов содержит массив A[1..n, 1..n], если aij = sin(i+j/2). 223.Дан целочисленный массив А[1..4, 1..5]. Найти среднее арифметическое каждого из столбцов. 224.Дан действительный массив размерностью n*m, в которой не все элементы равны нулю. Получить новый массив путем деления всех элементов данного массива на ее больший по модулю элемент. 225.Дан целочисленный массив А[1..4, 1..5]. Требуется преобразовать матрицу: поэлементно вычесть последнюю строку из всех строк, кроме последней. 226.Составьте программу упорядочения по возрастанию элементов каждой строки двумерного массива C. 81 227.Составьте программу, упорядочивающую по убыванию элементы каждой строки матрицы размером m*n. 228.Дан целочисленный массив А[1..4, 1..5]. Определить номера тех строк массива, в которых есть хотя бы один элемент, равный 10. 229.Составьте программу, упорядочивающую по возрастанию элементы каждого столбца матрицы размером m*n. 230.Задан массив А[1..5,1..5]. Получить из него новый массив путем деления элементов каждой из строк первого массива на элемент этой строки, стоящий по левой диагонали. 231.Задан массив А[1..5,1..6]. Поменять в нем местами первую и последнюю строку. 232.Задан массив А[1..5,1..6]. Поменять в нем местами первый и последний столбец. 233.Дана прямоугольная матрица. Найти строку с наибольшей суммой элементов. 234.Дана прямоугольная матрица. Найти столбец с наибольшей суммой элементов. 235.Найти сумму всех четных элементов двумерного массива целых чисел размерности 4*8. 236.Найти сумму всех элементов двумерного массива целых чисел размерности 5*5, расположенных на главной диагонали. 237.Найти номер строки и столбца максимального элемента двумерного массива целых чисел размерности 7*4. 238.Имеется двумерный массив целых чисел размерности 6*5. Найти номер строки, для которой среднеарифметическое значение ее элементов максимально. 239.В двумерном массиве целых чисел размерности 5*9 поменять местами строки и столбцы с одинаковыми номерами. 240.Найти минимальный элемент среди максимальных элементов строк двумерного массива целых чисел. Определить номер строки и столбца такого элемента. 241.Удалить столбец двумерного массива целых чисел, в котором находится максимальный элемент этого массива. 242.Найти все неповторяющиеся элементы двумерного массива целых чисел. 243.Заполнить двумерный массив целыми числами от 1 до 100 по спирали. 244.В двумерном массиве целых чисел заменить все элементы, меньшие суммы элементов первой строки на эту сумму. 245.Отсортировать строки массива целых чисел по убыванию. 246.Отсортировать нечетные столбцы массива по возрастанию. 247.Заданы стоимость различных деталей, выпускаемых мастерской, и их названия. Отсортируйте их по стоимости и по алфавиту. 248.Дан двумерный массив, содержащий фамилии учащихся и номера их телефонов. По фамилии учащегося найдите номер его телефона. 249.Даны две матрицы. Получите их произведение. 82 250.Сформируйте и выведите на экран по строкам трехмерный массив целых чисел размером 5*5*5. Найдите максимальный элемент и укажите его положение в массиве. Процедуры и функции 251.Напишите программу, состоящую из трех процедур и основной программы. Первая процедура организует ввод двух целых чисел X и Y, вторая проверяет их сумму, третья выводи результат. Используйте эти процедуры в основной программе. Используйте X и Y как глобальные переменные. 252.Напишите программу вычисления площади поверхности и длины экватора на основе известного радиуса планет солнечной системы. Форму планет будем считать шаром. Вычисление площади поверхности и длины экватора оформите отдельными функциями. 253.Напишите программу поиска большего из четырех чисел с использованием подпрограммы поиска большего из двух чисел. 254.Даны координаты вершин многоугольника (x1, y1,x2,y2,…x10,y10). Напишите программу для вычисления его периметра (вычисление расстояния между вершинами оформить подпрограммой). 255.Напишите программу вычисления суммы: 1! + 2! + 3! + … + n!, используя функцию вычисления факториала числа k. 256.Напишите программу для вычисления числа сочетаний из N по M. Число сочетаний определяется по формуле N!/(M!*(N-M)!, где N – количество элементов перебора. Используйте подпрограмму вычисления факториала. 257.Напишите программу для определения НОД трех натуральных чисел. 258.Даны действительные числа s,t. Составить программу вычисления выражения f(t, -2s, 1.17) + f(2.2, t, s-t), где f(a,b,c) = (2a – b – sin(c)) / (5 + |c|). 259.Даны натуральные m и n (m<n). Составить программу, сокращающую дробь m/n. 260.Напишите программу вычисления суммы квадратов простых чисел, лежащих в интервале (M,N). 261.Напишите программу подсчета числа четных цифр, используемых в записи N-значного числа M. 262.Составьте программу вычисления суммы трехзначных чисел, в десятичной записи которых нет четных цифр. 263.Составьте программу вывода на экран всех натуральных чисел, не превосходящих N и делящихся на каждую из своих цифр. 264.Составьте программу нахождения наименьшего натурального Nзначного числа X (X>=10), равного утроенному произведению своих цифр. 265.Составьте программу подсчета числа всех натуральных чисел, меньших М, квадрат суммы цифр которых равен X. Символьные переменные 266.Напишите программу, подсчитывающую количество букв во введенном с клавиатуры слове. Ввод осуществляйте в цикле while do. Выход из программы – строка «999». 267.Дано натуральное число n и символы s1, s2, …, sn. Подсчитать сколько раз среди данных символов встречается символ +. 83 268.Дано натуральное число n и символы s1, s2, …, sn. Подсчитать количество встречающихся символов *. 269.Дано натуральное число n и символы s1, s2, …, sn. Выяснить, каких символов больше + или *. 270.Напишите программу, которая вводит строку и выводит ее, сокращая каждый раз на 1 символ до тех пор, пока в строке не останется 1 символ. 271.Напишите программу, определяющую число слов в строке. Одно слово от другого отделяется одним пробелом. 272.Напишите программу, которая подсчитывает стоимость телеграммы, текст которой вводится с клавиатуры. 273.Напишите программу, определяющую, какая из букв первая или последняя встречаются в заданном слове чаще. 274.Задано существительное первого склонения, оканчивающееся на букву «а». Напечатайте это слово во всех падежах. 275.Напишите программу, определяющую, сколько букв «о» стоит в заданном слове на четных местах. 276.Заданы фамилия, имя и отчество учащегося, разделенные пробелами. Напишите программу, печатающую фамилию ученика и его инициалы. 277.Напишите программу, удаляющую из слова i-ю букву. 278.Напишите программу, удаляющую из текста все буквы, совпадающие с его последней буквой. 279.Напишите программу, удаляющую из слова X все буквы, которые встречаются в слове Z. 280.Напишите программу, подсчитывающую количество различных букв в заданном слове. 281.Напишите программу, удаляющую из слова каждую третью букву. 282.Напишите программу, которая в заданном тексте меняет слово «Петр» на слово «Иван». 283.Напишите программу, которая удаляет из введенной строки любой требуемый введенный с клавиатуры символ. Процесс удаления выделите в отдельную процедуру. 284.В заданном тексте заменить все буквы «а» на букву «о». 285.Составить программу, которая обращает введенное слово, т.е. переставляет символы в обратном порядке. 286.Составить программу, определяющую, является ли введенное слово перевертышем. 287.Напишите программу, сортирующую символы введенной с клавиатуры строки в порядке возрастания их номеров в ASCII-таблице. 288.Напишите программу, вычисляющую длину самого короткого слова в предложении из трех слов, разделенных пробелами. 289.Составить программу, которая выводит на экран бегущую строку. 290.Составить программу, удаляющую в строке все, что заключено между фигурными скобками и их самих. Графика 84 291.Представьте, что вы встретились с хранителем времени и он открыл вам тайну звезд. Почему мерцают звезды на небе ? Потому, что каждая звезда жизнь одного человека. Вам нужно вовремя погасить старую и зажечь новую. Помогите хранителю времени решить задачу Решение задачи начинается с построения модели: пусть на экране каждая точка обозначает звезду и всего горит 20 (выбранных случайным образом) звезд; теперь необходимо погасить первую зажженную точку и нарисовать ее в любом другом месте, затем перейти ко второй и т.д. Когда погаснет двадцатая, необходимо вновь перейти к первой и т.д. 292.Напишите программу «дождь» - на экране появляется (случайным образом) рисуется 50 точек и они движутся сверху вниз. В тот момент, когда одна из точек достигнет нижней границы экрана, точка появляется в верхней части. 293.Измените программу «дождь» так, чтобы некоторые точки двигались быстрее, другие медленнее. 294.Измените программу «дождь» так, чтобы точки начинали движение в левом нижнем углу и заканчивали в правом верхнем. 85 Содержание 1. ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЙ РАЗДЕЛ ДИСЦИПЛИНЫ ............................... 3 2. ОБЪЕМ ДИСЦИПЛИНЫ, ВИДЫ УЧЕБНОЙ РАБОТЫ И ФОРМЫ КОНТРОЛЯ В СООТВЕТСТВИИ С УЧЕБНЫМ ПЛАНОМ СПЕЦИАЛЬНОСТЕЙ ПО ФОРМАМ ОБУЧЕНИЯ ........................................................................................................................................ 4 3. ТЕМАТИЧЕСКИЕ ПЛАНЫ ..................................................................................................... 4 4. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ ............................................................................................ 6 5. ПЛАНЫ СЕМИНАРСКИХ (ПРАКТИЧЕСКИХ) ЗАНЯТИЙ ................................................ 8 6. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО НАПИСАНИЮ И ОФОРМЛЕНИЮ КУРСОВЫХ РАБОТ........................................................................................................................ 47 7. УЧЕБНО-МЕТОДИЧЕСКИЕ МАТЕРИАЛЫ ПО ДИСЦИПЛИНЕ ................................... 53 8. ФОРМЫ ТЕКУЩЕГО, ПРОМЕЖУТОЧНОГО И ИТОГОВОГО КОНТРОЛЯ ................ 53 9. САМОСТОЯТЕЛЬНАЯ РАБОТА СТУДЕНТОВ ................................................................. 68 86 Оксана Николаевна Вождаева ОСНОВЫ ПРОГРАММИРОВАНИЯ Рабочая программа дисциплины для студентов специальности 080801.65 «Прикладная информатика в экономике» очной и заочной форм обучения (сохранена редакция автора-составителя) Ответственный за выпуск к. физ.-мат. н. С.Д. Захаров «ТЮМЕНСКАЯ ГОСУДАРСТВЕННАЯ АКАДЕМИЯ МИРОВОЙ ЭКОНОМИКИ, УПРАВЛЕНИЯ И ПРАВА» 625051, г. Тюмень, ул. 30 лет Победы, 102 87