Реферат: Модули, записи и файлы

--PAGE_BREAK--Глава 1.  Модули в Турбо Паскале.

1.1. Назначение и структура модуля


Модуль   -  это автономно компилируемаяпрограммная единица, включающая  в себя  различные компоненты  раздела описаний(типы,    константы,переменные, процедуры и  функции) и, возможно,  некоторыеисполняемые  операторы  инициирующей  части.  В   модуляхTurbo   PASCAL   явным   образом   выделяется  некоторая«видимая» интерфейсная часть, в которой  сконцентрированы описания  глобальных  типов,  констант  и  переменных,  атакже   приводятся   заголовки   глобальных   процедур  ифункций. Появление объектов  в интерфейсной части  делаетих доступными  для других  модулей и  основной программы.Тела  процедур  и  функций  располагаются  в  исполняемойчасти модуля, которая может быть скрыта от  пользователя.Модули  представляют  собой  прекрасный  инструмент дляразработки  библиотек   прикладных  программ   и   мощноесредство    модельного    программирования.        Важнаяособенность  модуля  заключается  в  том,  что компиляторTurbo  PASCAL  размещает  их  программный код в отдельномсегменте.  Модуль имеет следующую структуру:

          UNIT <имя>;

          INTERFACE

             <интерфейсная часть>

          IMPLEMENTATION

             <исполняемая часть>

              BEGIN

                <инициирующая часть>

                 END.
Здесь UNIT — зарезервированное слово, начинает заголовок

модуля;

<имя> — имя  модуля (должно совпадать  с именем файла,  в

который     помещен     модуль);    

IMPLEMENTATION  -  зарезервированное  слово (выполнение),начинает  исполняемую  часть;  BEGIN  — зарезервированноеслово, начинает  инициирующую часть  (часть модуля  BEGIN<инициирующая часть>     необязательна);  END— зарезервированное слово, признак  конца    модуля.

        Заголовок  модуля  состоит  из  зарезервированного  слова UNIT и следующего за ним имени модуля.  Для  правильной работы Turbo  PASCAL и  возможности подключения  средств, облегчающих разработку крупных  программ, это имя  должно совпадать с именем  файла, в который  помещается исходный текст  модуля.   Имя  модуля  служит  для  его связи с другими  модулями  и  основной  программой.  Эта связь устанавливается  специальным  приложением  USES   <список модулей>.  Здесь USES — зарезервированное слово;  <список модулей>  -  список  модулей,  с которыми устанавливается связь,  элементами  списка  являются  имена   модулей, отделяемые друг от друга запятыми.  Если объявление  USES используется, то  оно должно открывать  раздел описаний  основной  программы.   Модули  могут  использовать другие модули.   Предложение USES  в модулях  может  следовать либо сразу  за зарезервированным  словом INTERFACE,  либо сразу  за  словом  IMPLEMENTATION. Интерфейсная часть открывается зарезервированным словом  INTERFACE.  В  этойчасти  содержатся  объявления  всех  глобальных  объектов модуля  (типов,  констант,  переменных  и   подпрограмм), которые должны стать доступными  основной  программе и (или)  другим  модулям.   При  объявлении глобальных подпрограмм  в  интерфейсной  части  указывается  только  ихзаголовок. Объявление  подпрограмм в интерфейсной части автоматически   сопровождается   их   компиляцией   с использованием  дальней  модели  памяти.   Таким  образом,обеспечивается  доступ  к  подпрограммам  из  основной программы  и   других  модулей. Порядок   появления различных разделов объявлений и их количество может  быть произвольным.        Исполняемая  часть  начинается зарезервированным  словом  IMPLEMEN-  TATION и содержит описания подпрограмм, объявленных в  интерфейсной части. В ней могут объявляться локальные для модуля  объекты — вспомогательные типы, константы, переменные и блоки,  а также метки, если они используются в инициирующей  части. Описанию подпрограммы,  объявленной в  интерфейсной части модуля,  в   исполняемой  части   должен   предшествовать заголовок, в котором можно опускать  список формальных переменных (и  тип результата  для функции),  так как они уже  описаны  в  интерфейсной  части.   Но если заголовок  программы  приводится  в  полном  виде,  т.е., со списком формальных  параметров,  то  он  должен  совпадать   с заголовком,    объявленным    в    интерфейсной    части. Инициирующая   часть   завершает   модуль.    Она   может отсутствовать  вместе  с  начинающим  ее словом BEGIN или быть пустой — тогда за BEGIN сразу следует признак  конца модуля  (слово  END  и   следующая  за  ним  точка).    В инициирующей  части размещаются  исполняемые операторы, содержащие  некоторый  фрагмент  программы. Эти операторы исполняются до передачи  управления основной  программе и обычно  используются для  подготовки ее  работы. Например, в них  могут инициироваться переменные,  открываться нужные файлы, могут устанавливаться связи с другими  ПК по  коммуникационным  каналам  и  т.п.  Не  рекомендуется делать  инициирующую  часть  пустой,  лучше  ее опустить: пустая часть  содержит пустой оператор,  которому будет передано управление при запуске программы.
    продолжение
--PAGE_BREAK--1.2. Компиляция модулей.

В  среде  Turbo  PASCAL  имеются  средства,   управляющие способом  компиляции  модулей  и  облегчающие  разработку крупных программных  проектов.   В частности,  определены три режима  компиляции: COMPILE,  MAKE и  BUILD.   Режимы отличаются только  способами связи  компилируемого модуля и основной программы  с другими модулями,  объявленными в приложении  USES.   При  компиляции  модуля  или основной программы  в  режиме  COMPILE  компилируется только файл, находящийся   в    активном    окне.      По    умолчанию предполагается,    что     используемые    модули     уже откомпилированы  и  результаты  помещены  в   одноименные файлы с  расширением .TPU;  файл с  расширением .TPU  (от английского  Turbo  Pаscal  Unit)  создается в результате компиляции модуля.   В режиме  МАКЕ компилятор  проверяет наличие  TPU-файлов  для  каждого  объявленного   модуля. Если  какой-либо  из  файлов  не  обнаружен,  то  система пытается отыскать  одноименный файл  с расширением  .PAS, т.е. файл  с исходным текстом  модуля.   Если PAS-файл найден,  то  происходит  его  компиляция.   Кроме того, в этом  режиме  система  следит  за  возможными изменениями исходного  текста  любого  используемого  модуля.  Если в PAS-файл  (исходный  текст  модуля)  внесены   какие-либо изменения, то независимо от того, есть ли уже в  каталоге соответствующий  TPU-файл  или  нет, система осуществляет его компиляцию перед  компиляцией основной  программы. Если изменения  внесены в  интерфейсную часть  модуля, то будут  перекомпилированы  также  и  все  другие   модули, обращающиеся к  нему.   Режим МАКЕ  существенно облегчает процесс   разработки   крупных   программ   с  множеством модулей.    В   режиме   BUILD   существующие   TPU-файлы игнорируются,   и   система   пытается   отыскать    и компилировать соответствующий  PAS-файл для  каждого объявленного в предложении  USES модуля. После  компиляции в режиме BUILD  программист может  быть уверен  в том,  что учтены все  сделанные им  изменения в  любом из  модулей.

        Подключение модуля  к основной  программе и  их возможная компиляция  осуществляется  в  порядке  их  объявления  в предложении  USES.   При  переходе  к  очередному  модулю система предварительно  отыскивает все  модули, на  которые он  ссылается.   Ссылки модулей  друг на  друга могут образовывать  древовидную   структуру  любой   сложности, однако запрещается явное  или косвенное обращение  модуля к самому себе.   Дело в том,  что Turbo PASCAL  разрешает ссылки   на   частично   откомпилированные   модули,  что приблизительно   соответствует   опережающему    описанию подпрограммы.    Если  интерфейсные   части  любых   двух модулей независимы, Turbo PASCAL сможет  идентифицировать все глобальные идентификаторы в каждом из модулей,  после чего откомпилирует тела модулей обычным способом.



Глава 2.  Задание первой части курсовой работы
Разработать модуль (схемы алгоритмов и программы), содержащие процедуры и функции, решающие поставленную задачу : Вариант № 21 Вычислить произведение элементов каждого столбца матрицы : Определить максимальное значение произведения : Разработать вызывающую программу (алгоритм и текст программы), предусмотрев процедуру очистки экрана и вывода информации на экран с текстовыми комментариями. Например :   Курсовую работу выполнил студент группы А – 61 Иванов Роман Борисович           Вариант № 21     продолжение
--PAGE_BREAK--          Разработанный модуль содержит следующие программы : 1.     Процедуру формирования элементов матрицы в интервале –1.0 до 1.0. 2.     Функцию определения суммы элементов той строки, где находиться максимальный элемент. 3.     Процедуру вывода элементов матрицы. Результаты : Сформированная матрица : ------------------------------ ------------------------------ 


Сумма элементов строки, где находится максимальный элемент =……. 

2.1. Вызывающая программа


<img width=«102» height=«83» src=«ref-1_253384578-1228.coolpic» alt=«Блок-схема: документ: Данные о студенте и о программе» v:shapes="_x0000_s1219"> <img width=«131» height=«44» src=«ref-1_253385806-1162.coolpic» v:shapes="_x0000_s1214 _x0000_s1227">

<img width=«159» height=«45» src=«ref-1_253386968-495.coolpic» alt=«Блок-схема: типовой процесс: VIVOD (A)» v:shapes="_x0000_s1222">


<img width=«112» height=«92» src=«ref-1_253387463-1383.coolpic» alt=«Блок-схема: документ: Вывод сформированой мат-рицы и резуль-татов» v:shapes="_x0000_s1225"> <img width=«159» height=«45» src=«ref-1_253388846-514.coolpic» v:shapes="_x0000_s1220 _x0000_s1223 _x0000_s1224 _x0000_s1226 _x0000_s1228 _x0000_s1229 _x0000_s1230 _x0000_s1231">

<img width=«150» height=«54» src=«ref-1_253389360-1313.coolpic» v:shapes="_x0000_s1232 _x0000_s1233">





2.2.Процедура формирования массива А

<img width=«69» height=«281» src=«ref-1_253390673-513.coolpic» v:shapes="_x0000_s1168 _x0000_s1169"> <img width=«165» height=«60» src=«ref-1_253391186-283.coolpic» v:shapes="_x0000_s1170 _x0000_s1171">
PROCEDURE FORM
<img width=«281» height=«186» src=«ref-1_253391469-2126.coolpic» v:shapes="_x0000_s1112 _x0000_s1113 _x0000_s1114 _x0000_s1115 _x0000_s1116 _x0000_s1117 _x0000_s1118 _x0000_s1119 _x0000_s1120 _x0000_s1121 _x0000_s1161 _x0000_s1162 _x0000_s1163 _x0000_s1165 _x0000_s1166 _x0000_s1167"> <img width=«208» height=«63» src=«ref-1_253393595-1723.coolpic» alt=«Блок-схема: знак завершения: Конец» v:shapes="_x0000_s1122">

2.3.Процедура  ввывода массива А PROCEDURE VIVOD
<img width=«264» height=«54» src=«ref-1_253395318-1467.coolpic» v:shapes="_x0000_s1137 _x0000_s1159 _x0000_s1160"> <img width=«136» height=«262» src=«ref-1_253396785-626.coolpic» v:shapes="_x0000_s1151 _x0000_s1157 _x0000_s1158">


<img width=«261» height=«186» src=«ref-1_253397411-2656.coolpic» v:shapes="_x0000_s1125 _x0000_s1126 _x0000_s1128 _x0000_s1129 _x0000_s1130 _x0000_s1131 _x0000_s1133 _x0000_s1136 _x0000_s1152 _x0000_s1153 _x0000_s1154 _x0000_s1155 _x0000_s1156">



2.4.Процедура произведения элементов массива А
PROCEDURE PR

<img width=«131» height=«64» src=«ref-1_253400067-416.coolpic» alt=«Блок-схема: процесс: C[i] = 1» v:shapes="_x0000_s1149"> <img width=«41» height=«290» src=«ref-1_253400483-361.coolpic» v:shapes="_x0000_s1180 _x0000_s1181"> <img width=«194» height=«31» src=«ref-1_253400844-233.coolpic» v:shapes="_x0000_s1182 _x0000_s1183">


<img width=«271» height=«196» src=«ref-1_253401077-2521.coolpic» v:shapes="_x0000_s1140 _x0000_s1142 _x0000_s1143 _x0000_s1144 _x0000_s1145 _x0000_s1146 _x0000_s1147 _x0000_s1148 _x0000_s1150 _x0000_s1173 _x0000_s1174 _x0000_s1175 _x0000_s1176 _x0000_s1177 _x0000_s1178 _x0000_s1179"> <img width=«160» height=«54» src=«ref-1_253403598-1423.coolpic» alt=«Блок-схема: знак завершения: Конец» v:shapes="_x0000_s1184">



    продолжение
--PAGE_BREAK--2.5.Функция  поиска максимального элемента в векторном массиве С
FUNCTION MAX

<img width=«562» height=«305» src=«ref-1_253405021-4514.coolpic» v:shapes="_x0000_s1190 _x0000_s1191 _x0000_s1192 _x0000_s1193 _x0000_s1194 _x0000_s1195 _x0000_s1196 _x0000_s1197 _x0000_s1198 _x0000_s1199 _x0000_s1200 _x0000_s1201 _x0000_s1202 _x0000_s1203 _x0000_s1205 _x0000_s1206 _x0000_s1207">


Глава 3. Модуль основной программы


unit kurp1;

interface

const n=5;

type  matr=array[1..n,1..n] of real;

      vect=array[1..n] of real;

procedure form(var a:matr);

procedure vivod (var a:matr);

function max(c:vect):real;

procedure pr(a:matr;var c:vect);

implementation

procedure vivod (var a:matr);

  var i,j:integer;

  begin

   for i:=1 to n do

begin

   for j:=1 to n do

write (a[i,j]:6:2);

   writeln;

   end;

   writeln;

   end;

procedure form(var a:matr);

var i,j:integer;

  begin

   randomize;

   for i:=1 to n do

   for j:=1 to n do

a[i,j]:=random*2-1;

  end;

function max( c:vect):real;

var i:integer;

    m:real;

begin

m:=-2;

for i:=1 to n do

 if c[i]>m then m:=c[i];

max:=m

end;

procedure pr(a:matr;var c:vect);

var i,j:integer;

begin

c[i]:=1;

for i:=1 to n do

 begin

  for j:=1 to n do

   c[i]:=a[j,i]*c[i];

  writeln('Произведение ',i,'-го столбца =',c[i]:6:4);

  end;

  writeln;

end;

end.


Глава 4. Основная программа


program kursovik;

uses crt,kurp1;

var a:matr;

    c:vect;

begin

clrscr;

window(45,2,75,7);

writeln('Курсовая работа по информатике');

writeln('Факультет АЭС      группа А-92');

writeln('студента:    Грязина Дмитрия  ');

window(1,1,80,25);

writeln('вариант 21');

window(10,8,80,20);

writeln('Разработанный модуль содержит следующие программы:');

writeln('1.Процедуру формирования элементов матрицы в интервале от 1.0 до 1.0.');

writeln('2.Процедуру вывода матрицы на экран.');

writeln('3.Процедуру определения произведения каждого столбца матрицы.');

writeln('4.Функцию определения максимального произвелдения.');

window(1,1,80,25);

gotoxy(10,24);

writeln('Для продолжения нажмите пробел');

clrscr;

 form(a);

writeln('Сформированная матрица');

vivod(a);

pr(a,c);

writeln('Максимальное произведение =',max(c):6:4);

readln;

end.




Глава 5. Результаты первой части курсовой работы

Сформированная матрица

 -0.68  0.22  0.58 -0.62 -0.14

  0.25 -0.11 -0.90  0.41 -0.57

  0.24 -0.69 -0.84  0.28  0.71

 -0.46 -0.26  0.16  0.49 -0.73

  0.60  0.17  0.28 -0.77 -0.61
Произведение 1-го столбца =0.0112

Произведение 2-го столбца =-0.0007

Произведение 3-го столбца =0.0187

Произведение 4-го столбца =0.0264

Произведение 5-го столбца =0.0243
Максимальное произведение =0.0264

Глава 6.  Записи.        


Запись – это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.
Структура обьявления типа записи такова:

                  

                             <имя типа>= RECORD <пс. полей>END
Здесь <имя типа> — правельный индификатор;

          RECORD, END – зарезервированные слова (запись, конец);

          <сп. полей>— список полей; представляют собой последовательность           

          разделов записи, между которыми ставится точка с запитой.
Каждый раздел записи состоит из одного или нескольких индификаторов полей, отделяемых друг от друга запятыми. За индификатором ставится двоеточие и описание типа поля например:
                  type

                          birthday = record

                         day, month : byte;

                         year       : word:

                   end;     

                  var

                        a,b: Birthday;

                        .  .  .  .  .  .  .  .
В этом примере тип Birthdayесть запись с полями DAY, MONTH, и YEAR; переменные А и В содержат записи типа Birthday.

Как в массиве, значения переменных типа записи можно присваивать другим переменным того же типа, например:

                                      a: =b;

К каждому из компонентов записи можно получить доступ, если использовать составное имя, т.е. указать имя переменной, затем точку и имя поля:

                                      a.day :=27;  b.year := 1991;

Чтобы упростить доступ к полям записи, используется оператор присоединения WITH:

                   WITH <переменная> DO <оператор>  
Здесь WITH, DO – ключевые слова (с, делать);

          <переменная> — имя переменной типа запись, за которым,

          возможно, следует список вложенных полей; 

          <переменная> — любой оператор Турбо Паскаля.

Например:

                   with c.bd do month := 9;

Имена полей должны быть уникальными в пределах той записи, где они обьявлены, однако, если записи содержат поля – записи, т.е. вложена одна в другую, имена могут повторяться на разных уровнях вложенности.  
.
    продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по информатике