Задания для лабораторной работы

Лабораторная работа № 11. Модули

Теория

Модуль – это набор ресурсов (функций, процедур, констант, переменных, типов и т.д.), разрабатываемых и хранимых отдельно от использующих их программ.

Модуль состоит из следующих частей:

1. Заголовок

2. Раздел интерфейса

3. Раздел реализации

4. Конец модуля

В заголовке определяется имя модуля. Это имя в дальнейшем используется при ссылке на модуль в предложении uses. Перед именем модуля стоит служебное слово Unit

Unit имя модуля;

Интерфейсная часть начинается со слова interface.В этой части объявляются только те константы, типы, переменные, процедуры и функции, которые являются глобальными, т.е. доступные основной программе. В интерфейсной части только перечисляются заголовки процедур и функций.

Раздел реализации начинается со слова implementation. В этом разделе приведены описания всех глобальных процедур и функций. В этом же разделе описываются все константы, типы переменных, процедуры и функции, которые являются глобальными для модуля, но локальными по отношению в основной программе. Основная программа их не видит.

Модуль заканчивается словом endс точкой.

Примеры

Пример 1.

Создать модуль содержащий функции возведения вещественного числа в целую степень, извлечения корня целой степени и возведение числа в произвольную степень.

Использовать этот модуль для вычисления z:

задания для лабораторной работы - student2.ru

для произвольных a и b.

Модуль

Unit Power;

Interface

{Функция возведения в целую степень n вещественного числа x}

Function IntPower(x: real; n: integer): real;

{Функция извлечения целого корня n вещественного числа x}

Function Root( x: real: n: integer):real;

{Функция возведения в произвольную степень y вещественного положительного числа x}

Function RealPower(x, y: real): real;

Implementation

Function IntPower(x: real; n: integer): real;

var P: real; i: integer;

begin

P:=1;

For i:=1 to n do

P:=P*x;

IntPower:=P;

end;

Function Root( x: real: n: integer):real;

var y: real;

begin

y:=x;

repeat

y:=(n-1)/n*y+x/(n*IntPower(y, n-1));

until abs(IntPower(y, n)-x)<1.0E-4;

Root:=y;

end;

Function RealPower(x, y: real): real;

begin

RealPower:=exp(y*ln(x));

end;

end.

Основная программа:

program Powerz;

Uses Power;

var a, b, x, y, z: real;

begin

write(‘a, b=’);

readln(a,b);

y:=2*a-sqrt(b);

x:=Root(sqr(a)+IntRower(b,4)), 4);

z:=RealPower(abs(x), a) - IntRower(y, 3);

writeln(‘z=’,z:10:4);

readln;

end.

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

1. Как подключить к программе модуль

2. С какого слова начинается текст модуля.

3. Для чего предназначен раздел implementation.

4. Какие подпрограммы и данные можно не описывать в разделе interface.

5. Сколько модулей можно подключать к программе.

Задания для лабораторной работы

При создании процедур и функций стандартные функции не использовать.

1.Создать модуль и разработать ниже перечисленные функции, затем выполнить задание с текстом.

MaxText – найти самое длинное слово в тексте.

NewPos – определение вхождения подстроки с заданной позиции

Convers – переписать заданный текст наоборот

MyCopy – выделение с заданной позиции заданного количества символов.

MyLen определяет количество символов в строке

Задание. Дан текст. Найти самое длинное слово в тексте и все слова, равные по длине этому слову переписать в наоборот.

2.Создать модуль и разработать ниже перечисленные функции, затем выполнить задание с текстом.

WordN – выделяет N-ное слово

MyMove – перенести заданною подстроку в заданною позицию

CountWord– определяет количество слов в тексте

MyInsert – вставка подстроки с заданной позиции

Задание. Дан текст. Попарно переставить слова в этом тексте.

3.Создать модуль и разработать ниже перечисленные функции, затем выполнить задание с текстом.

CountWord– определяет количество слов в тексте

WordN – выделяет N-ное слово

DeleteAll – удаление всех вхождений заданной подстроки

DivEnd - разделить строку на две подстроки по последнему вхождению сочетания символов

Задание. Дан текст. Удалить в этом тексте все слова равные 4 символам. Дан текст в виде: описание товара и его цена. Цена отделяется от описания “ – “. Отделить описание товара от его цены.

4.Создать модуль и разработать ниже перечисленные функции, затем выполнить задание с текстом.

MoveEnd - перенести заданную подстроку в конец.

MyPos – определение первого вхождения подстроки

WordN – выделяет N-ное слово

CountWord– определяет количество слов в тексте

Sovpad проверяет совпадение двух строк без учета регистров, пробелов и знаков препинания

Задание. Поменять местами в тексте первое и последнее слово. Даны две строки, содержащие слова, написанные в разных регистрах. Найти какие слова в первой строке совпадают со словами из второй строки.

5.Создать модуль и разработать ниже перечисленные функции, затем выполнить задание с текстом.

NewCopy – выделение строки с заданного начального символа до заданного конечного символа

NewDelete – удаление подстроки с начальной позиции до конечной позиции

MyPos – определение первого вхождения подстроки

MyDown(строка) все буквы – строчные.

Задание. Дан текст содержащий фрагмент в круглых скобках. Переписать этот фрагмент в отдельную строку и сделать все буквы в этой строке строчными, а в первоначальном тексте удалить этот текст

6.Создать модуль и разработать ниже перечисленные функции, затем выполнить задание с текстом.

Inicial – текст фамилия, имя, отчество или фамилия имя преобразовать фамилия и инициалы и преобразует регистр

MyReplace – замена в строке одной подстроки на другую

NewPos – определение вхождения подстроки с заданной позиции

CountStr – вычисление вхождений одной подстроки в другую

DeleteStr - удаление k-того вхождения заданной подстроки

Задание. Дан текст содержащий в средине фамилию имя отчество, которым предшествует слово «уважаемый». Заменить имя отчество на инициалы и записать их с большой буквы. Дан текст содержащий несколько раз знак «!». Удалить последний «!».

7.Создать модуль и разработать ниже перечисленные функции, затем выполнить задание с текстом.

Abrev – получить аббревиатуру заданного текста

NewPos – определение вхождения подстроки с заданной позиции

MyReplace – замена в строке одной подстроки на другую

NewRight – выделение с конца строки начиная с заданного символа

Задание. Дан адрес организации. Название организации заключено в кавычки. Заменить название организации на аббревиатуру. Дан текст в конце текста указан город , которому предшествует «г.». Выделить этот город в отдельную переменную.

8.Создать модуль и разработать ниже перечисленные функции, затем выполнить задание с текстом.

MyNumber – записать целое число (до миллиона) числительными.

MyLeft – выделение сначала заданного количества символов.

MyDelete – удаление подстроки с заданной позиции данное количество символов

Задание. Дан текст, который содержит число (не более 6 цифр). Записать эти число прописью.

Дан адрес. В начале адреса указан почтовый индекс. Выделить этот индекс в отдельную строку, а в адресе индекс удалить.

9.Создать модуль и разработать ниже перечисленные функции, затем выполнить задание с текстом.

MyVal – преобразовать строку в целое число

NewCopy – выделение строки с заданного начального символа до заданного конечного символа

MyPos – определение первого вхождения подстроки

MyLen определяет количество символов в строке

Задание. Дана строка, содержащая название товара и его цены. Например: «Конфеты шоколадные «Перезвоны» 70 руб», «Хлеб Чусовской 7 руб. 30 коп.» или «Колбаса 103,40». Разделить название товара и его цены, записав цену в переменную вещественного типа. В названии товара все буквы сделать заглавными.

10.Создать модуль и разработать ниже перечисленные функции, затем выполнить задание с текстом.

MyPos – определение первого вхождения подстроки

ReplaceAll - замена в строке всех вхождений одной подстроки на другую

Rubl – преобразует число в строку денежного формата

Функция MyPropose(строка) все слова с большой буквы остальные буквы - строчные.

Задание. Дан юридический адрес предприятия, содержащий расчетный счет, перед которым стоит «р/с» или «расчетный счет». Заменить один расчетный счет на другой. Дана строка с фамилией сотрудника и число – оклад. Объединить это в одну строку. Фамилию имя отчество записать с заглавных букв.

11.Создать модуль и разработать ниже перечисленные функции, затем выполнить задание с текстом.

ReplaceAll - замена в строке всех вхождений одной подстроки на другую

NewPropose(строка) первое слово с большой буквы остальные слова строчные буквы.

TrimAll – удаление всех лишних пробелов.

MyStr – преобразовать целое число в строку.

Задание. Дан текст. заменить все слова «тебя» в этом тексте на «Вас».

Дана строка, содержащая фамилию ученика и класс, а также целое число – отметку. Объединить это в строку. Фамилию ученика написать с заглавной буквы, удалив лишние пробелы.

12.Создать модуль и разработать ниже перечисленные функции, затем выполнить задание с текстом.

MoveBeg – перенести заданную подстроку в начало

CountWord– определяет количество слов в тексте

WordN – выделяет N-ное слово

DivBegin – разделить строку на две подстроки по первому вхождению сочетания символов

Задание. Дан текст переписать слова в этом тексте в обратном порядке. Дан текст фамилия ученика, предмет и отметка. Отметка отделена словом «оценка». Получить две строки одна - фамилия и предмет, другая – отметка.

Наши рекомендации