- •Технология подготовки и решения задач с помощью компьютера
- •Базовые конструкции для написания структурированных программ. Способы обращения неструктурированных программ в структурированные.
- •Ввод и вывод данных, оператор присваивания.
- •Условный оператор: группа If
- •Цикл с параметром: группа For
- •Цикл с параметром: While, Repeat
- •Контрольные вопросы:
- •Пошаговая детализация алгоритма
- •Процедуры и функции
- •Контрольные вопросы.
- •Структуры данных: массивы, строки, записи. Размещение в памяти. Пользовательские типы данных.
- •Контрольные вопросы.
- •Модульное программирование. Организация личных библиотек.
- •Контрольные вопросы:
- •Рекурсивные алгоритмы
- •Контрольные вопросы.
- •Сортировка и поиск. Методы внутренней сортировки.
- •Быстрые алгоритмы сортировки
- •Контрольные вопросы
- •Статистическое и динамическое распределение памяти. Динамические структуры данных.
- •Контрольные вопросы.
- •Алгоритмы с возвращением.
- •Поиск в глубину
- •Поиск в ширину
- •Деревья
- •Достижимость
- •Метод построения максимального потока в сети
- •Метод локальной оптимизации
- •Организация файловой системы. Создание и обработка баз данных.
- •Варианты
- •Контрольные вопросы:
- •Библиотечные модули системы программирования Паскаль: Crt, Dos, Graph.
- •Графический режим работы экрана
- •Основные графические функции и процедуры
- •Контрольные вопросы:
- •Комбинаторные алгоритмы.
- •Перебор с возвратом. Общая схема
- •Задача о рюкзаке (перебор вариантов)
- •Задача о коммивояжере (перебор вариантов)
- •Объектно-ориентированное программирование
Контрольные вопросы.
Как описываются строковые переменные?
Какая максимальная длина строки допустима в Паскале?
3. В чем отличие строковой переменной от массива символов?
4. Выберите все правильные утверждения:
а) Запись должна состоять из полей различных типов.
b) Тип поля записи может быть любым, кроме файлового.
c) Запись можно вывести на экран, указав в списке вывода её имя.
d) Записи можно сравнивать на равенство и неравенство.
e) Поле записи в свою очередь может быть записью.
5. Что такое множество, как оно описывается в языке программирования Паскаль?
6. Как осуществляется ввод-вывод значений переменных типа множество?
7. Какие типы данных используются в качестве базовых при объявлении типа множество?
Модульное программирование. Организация личных библиотек.
Цель: Закрепить практические навыки разработки алгоритмов и программ решения различных задач с использованием библиотечных модулей пользователя.
Модуль представляет собой набор констант, типов данных, типов данных, переменных, процедур и функций. Каждый модуль по своей структуре аналогичен отдельной программе. Вместе с тем структура модуля позволяет использовать его как своеобразную библиотеку описаний, в которой все данные (типы данных, переменные и др.) разделяются на две группы. Данные первой группы могут быть использованы другими программами и модулями и с этой точки зрения называются «видимыми». Данные другой группы являются «скрытыми» и используются только в самом модуле.
Паскаль поддерживает ряд стандартных модулей: Dos, Graph, Crt и др.
Наряду с использованием стандартных модулей каждый программист имеет возможность организации собственных модулей. Структура любого модуля имеет следующий вид:
unit имя_модуля;
interface
uses список-используемых_модулей;
{Открытые объявления}
implementation
uses список-используемых_модулей;
{Собственные объявления}
{Процедуры и функции}
begin
…….
End.
Модули транслируются отдельно. В отличие от основных программ, результатом трансляции которых будут файлы с расширением EXE, модули получают расширение TPU. При трансляции основной программы все модули (TPU-файлы) подсоединяются автоматически. Если в какой-то из модулей были внесены изменения, то при трансляции программы все модифицированные модули также будут предварительно перетранслированы.
Модуль в Pascal ABC представляет собой файл со следующим содержанием:
unit имя модуля; раздел подключения модулей раздел описаний раздел инициализации раздел финилизации
end.
Первая строка обязательна и называется заголовком модуля.
Раздел подключения модулей начинается со служебного слова uses, за которым следует список имен модулей, перечисляемых через запятую.
Раздел описаний может включать разделы описания переменных, констант, типов, процедур и функций, которые следуют друг за другом в произвольном порядке.
Раздел инициализации состоит из служебного слова initialization, после которого следуют операторы, разделяемые символом "точка с запятой". Операторы из раздела инициализации модуля выполняются до начала основной программы.
Раздел финализации состоит из служебного слова finalization, после которого следуют операторы, разделяемые символом "точка с запятой". Операторы из раздела финализации модуля выполняются после окончания основной программы.
Раздел финализации может отсутствовать, либо оба раздела инициализации и финализации могут отсутствовать. Раздел инициализации может также начинаться со служебного слова begin, в этом случае раздел финализации отсутствует.
Например:
unit Lib; uses GraphABC; const Dim=5; var Colors: array [1..Dim] of integer; function RandomColor: integer; begin Result:=RGB(Random(255),Random(255),Random(255)); end; procedure FillByRandomColor; var i: integer; begin for i:=1 to Dim do Colors[i]:=RandomColor; end; initialization FillByRandomColor; end.
Поскольку система Pascal ABC не создает кода на диске, модули являются по-существу аналогом включаемых файлов. В частности, они компилируются всякий раз при компиляции основной программы. Однако, если при компиляции программы один и тот же модуль подключается в нескольких модулях, то этот модуль компилируется лишь раз.
Задания:
1. Написать подпрограмму, которая выводит на печать элементы одномерного массива в порядке возрастания их значений. В головной программе вызвать эту программу для различных массивов.
2. Задана матрица A размерности M*N. Получить матрицу B=A15.
3. Написать подпрограмму для вычисления суммы с точностью до 0,001, где x передать в качестве параметра. Совместно с учащимся, выполняющим задание №4, написать головную программу, реализующую по выбору вызов той или иной подпрограммы.
4. Написать подпрограмму для вычисления суммы с точностью до 0,001, где x передать в качестве параметра. Совместно с учащимся, выполняющим задание №3, написать головную программу с вызовом по выбору пользователя одной из реализованных подпрограмм.
5. Написать подпрограмму (процедуру или функцию) для вычисления суммы , когда вид функции F(x) заранее не известен. Для этого имя функции F(x) передать подпрограмме в виде параметра процедурного типа. В головной программе вызвать подпрограмму для следующих функций F(x): A6*X6+A5X5+...+A1X+A0; AX2+BX+C; , где коэффициенты определить в самой функции посредством типизированных констант.
6. Даны натуральное n и целочисленная матрица n*n. Получить B1, B2,..., Bn, где Bi - наименьшее из значений элементов Ai1, Ai2,..., Aii, i=1,2,..., n.
7. Составить подпрограмму, которая из произвольной строки, содержащий некоторый текст, выделяет все слова и печатает их в алфавитном порядке (по первой букве). Исходную строку ввести в головной программе.
8. Составить подпрограмму, которая в произвольной строке символов находит наиболее часто повторяющийся символ. В головной программе вызвать эту подпрограмму для различных значений строк.
9. Составить подпрограмму, которая из произвольной строки символов удаляет все повторно встречающиеся символы. Исходную строку описать в головной программе как типизированную константу.
10. Составить подпрограмму, которая печатает все натуральные числа, меньшие N, являющиеся палиндромом. Число называется палиндромом, если оно читается одинаково как с начала, так и с конца (например, 383, 22). Число N передать подпрограмме как параметр.
11. Даны действительные числа A0, A1,..., An. Найти сумму для следующих функций f(x,k): ,
12. Составить подпрограмму вычисления сумм для a≤x≤b с шагом h=(b-a)/10. Значения a, b, n передать в качестве параметров.
13. Вычислить значения функции с заданной точностью E=0,001 для каждого x=1, 3, 4. Считать. что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем E (это и все последующие слагаемые можно не учитывать).
14. Дана целочисленная матрица n*n. Найти номера строк, все элементы которых делятся на 3 без остатка.