Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по практике программирования-1.doc
Скачиваний:
11
Добавлен:
31.08.2019
Размер:
2.93 Mб
Скачать

Контрольные вопросы.

  1. Как описываются строковые переменные?

  2. Какая максимальная длина строки допустима в Паскале?

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. Составить подпрограмму вычисления сумм для axb с шагом h=(b-a)/10. Значения a, b, n передать в качестве параметров.

13. Вычислить значения функции с заданной точностью E=0,001 для каждого x=1, 3, 4. Считать. что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем E (это и все последующие слагаемые можно не учитывать).

14. Дана целочисленная матрица n*n. Найти номера строк, все элементы которых делятся на 3 без остатка.