Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методические указания Паскаль.doc
Скачиваний:
4
Добавлен:
29.04.2019
Размер:
757.25 Кб
Скачать

Модульное программирование

Структура модуля:

UNIT <ИмяМодуля>;

INTERFACE

<интерфейсная часть> {раздел описаний}

IMPLEMENTATION

<исполняемая часть> {описания подпрограмм}

BEGIN

<инициирующая часть> {фрагмент программы}

END. признак конца модуля

Пример. Найти соотношение между максимальными элементами для массивов А и В.

Выделим вычисление наибольшего элемента в подпрограмму, которую вынесем в отдельный модуль.

Program s_mod; {Главная программа}

uses crt,r_pos; {подключается модуль R_pos }

var

a, b: mass;

i, s: integer;

begin

clrscr;

writeln('Введи массив А из 8 чисел типа integer');

for i:=1 to 8 do

read(a[i]);

writeln('Введи массив В из 8 чисел типа integer');

for i:=1 to 8 do

read(b[i]);

write('Соотношение =');

writeln('maxA/maxB'=MAX(a)/ MAX(b):6:3);

readln;

end.

UNIT r_pos; {Подключаемый модуль с именем R_pos.pas}

INTERFACE

type

mass=array[1..8] of integer;

function max(d:mass):integer;

IMPLEMENTATION

function min(d:mass):integer;

var mx,i:integer;

begin

mx:=d[1];

for i:=2 to 8 do

if mx<d[i] then mx:= d[i];

max:=mx;

write(mx,':');

end;

END.

Задание (программы 14_1 и 14_2)

Для задач 8_3 и 9_2 разработать программы, скрыв подпрограммы в отдельном файле (модуле).

Лабораторная работа 15

Динамические структуры данных. Списки

Список - это набор связанных между собой динамических элементов.

Элемент односвязной динамической структуры данных состоит из двух полей: информационного и указательного и описывается через тип «запись»:

Type Tptr =^Telem;

TElem= Record

info: integer;

next: Tptr {указатель}

end;

Очередь - это частный случай линейного односвязного списка, для которого разрешены только два действия: добавление элемента строго в конец списка, а извлечение (удаление) - строго из начала (головы) очереди.

Стек - это частный случай линейного односвязного списка, для которого разрешено добавлять или удалять элемент только с одного конца списка, который называется вершиной стека.

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

Program pos04din;

Type

sv{связь}=^zv; {звено строки}

Zv = record

info: char; {Информационное поле}

next: sv {Указатель на следующий элемент}

end;

Var

P {Указатель на начало}, t {Указатель на текущее звено}: sv;

sym: char;

k: integer; {Количество цифр}

BEGIN

{Ввод строки и представление ее в виде цепочки}

Writeln('Введи первый символ ');

read(sym); {Формирование первого звена}

new(p);

p^.info:=sym;

p^.next:=nil;

t:=p; {Подготовка к циклу формирования остальных звеньев}

Write('Введи остальные символы и точку ');

while sym<>'.' do {Цикл обработки последовательных литер строки}

begin

read(sym);

new(t^.next);

t:=t^.next; {адрес следующего элемента}

t^.info:=sym;

t^.next:=nil;

end; {Исходное слово представлено в виде цепочки}

k:=0; t:=p;

while t<>nil do

begin

if (t^.info>='0')AND(t^.info<='9') then k:=K+1;

t:=t^.next

end;

Writeln;

Writeln('Цифр в строке - ',k);

END.