Программирование

Автор работы: Пользователь скрыл имя, 11 Февраля 2013 в 13:32, лекция

Описание

Лекции по дисциплине "Информатика"

Работа состоит из  1 файл

Лекции по программированию.doc

— 312.50 Кб (Скачать документ)

 

    implementation

 

    end.

 

   Использование  в модулях процедур и функций  имеет свои особенности.

Заголовок подпрограммы содержит все сведения,  необходимые для ее вы-

зова: имя, перечень и тип параметров, тип результата для функций, эта

информация  должна быть доступна для других программ и модулей. С дру-

гой стороны,   текст подпрограммы,  реализующий  ее алгоритм,  другими

программами и  модулями не может быть использован.  Поэтому  заголовок

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

часть реализации.

   Интерфейсная  часть  модуля  содержит только  видимые (доступные для

других программ и модулей)  заголовки процедур и функций (без служеб-

ного слова   forward).  Полный текст процедуры  или функции помещают в

часть реализации, причем заголовок может не содержать  список формаль-

ных параметров.

   Исходный  текст модуля должен быть откомпилирован  с помощью  дирек-

тивы Make  подменю Compile и записан на диск.  Результатом компиляции

модуля является файл с  расширением .TPU (Turbo Pascal Unit). Основное

имя модуля берется из заголовка  модуля.

   Для подключения   модуля  к  программе необходимо  указать его имя в

разделе описания модулей, например:

 

           uses  CRT, Graph;

 

   В том случае,  если имена переменных в интерфейсной  части модуля и

в программе,   использующей этот модуль,  совпадают,  обращение  будет

происходить к переменной,  описанной в программе. Для обращения к пе-

ременной, описанной  в  модуле,   необходимо применить  составное имя,

состоящее из имени модуля и имени переменной, разделенных  точкой.

   Например, пусть имеется  модуль, в котором описана переменная  К:

 

   unit M;

    interface

     var K: Integer;

    implementation

   .................

    end.

 

   Пусть  программа, использующая этот  модуль, также содержит перемен-

ную К:

 

   Program P;

    uses M;

    var K: Char;

    begin

   .............

    end.

 

   Для того, чтобы в программе P иметь доступ к переменной K из моду-

ля M, необходимо задать составное имя M.K.

   Использование  составных имен применяется не  только к именам  пере-

менных, а ко всем именам, описанным в интерфейсной части модуля.

   Рекурсивное  использование модулей запрещено.

   Если  в модуле имеется раздел инициализации,  то операторы из этого

раздела будут  выполнены перед началом выполнения программы, в которой

используется  этот модуль.

 

28.   М Н  О Ж Е С Т В А

 

   Понятие  множества в языке ПАСКАЛЬ основывается  на  математическом

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

элементов. Для  построения конкретного множественного типа использует-

ся перечисляемый  или интервальный тип данных.  Тип элементов, состав-

ляющих множество, называется базовым типом.

   Множественный  тип  описывается  с  помощью   служебных слов Set of,

например:

 

         type  M= Set of B;

 

Здесь М - множественный  тип, В - базовый тип.

   Пример  описания переменной множественного  типа:

 

         type

             M= Set of 'A'..'D';

         var

            MS: M;

 

   Принадлежность  переменных к множественному  типу может быть опреде-

лена прямо  в разделе описания переменных:

 

         var

            C: Set of 0..7;

 

   Константы  множественного  типа  записываются  в виде заключенной в

квадратные скобки последовательности элементов или интервалов базово-

го типа, разделенных  запятыми, например:

 

         ['A', 'C']    [0, 2, 7]    [3, 7, 11..14].

 

Константа вида

 

         [ ]

 

означает пустое подмножество.

   Множество  включает в себя набор элементов базового типа, все подм-

ножества данного  множества, а также пустое подмножество. Если базовый

тип, на котором  строится множество, имеет К элементов, то число подм-

ножеств, входящих в это множество, равно 2 в степени  К. Пусть имеется

переменная Р интервального типа:

 

         var P: 1..3;

 

   Эта переменная  может принимать три различных  значения  -  либо  1,

либо 2, либо 3. Переменная Т  множественного типа

 

         var T: Set of 1..3;

 

может принимать восемь различных  значений:

 

         [ ]        [1,2]

         [1]        [1,3]

         [2]        [2,3]

         [3]        [1,2,3]

 

   Порядок  перечисления элементов базового  типа в константах  безраз-

личен.

   Значение  переменной  множественного  типа  может быть задано конс-

трукцией вида [T], где T - переменная базового типа.

   К переменным  и константам множественного  типа  применимы  операции

присваивания(:=), объединения(+), пересечения(*) и вычитания(-):

 

         ['A','B'] + ['A','D']      даст  ['A','B','D']

         ['A'] * ['A','B','C']      даст  ['A']

         ['A','B','C'] - ['A','B']  даст  ['C'].

 

   Результат  выполнения  этих  операций  есть  величина множественного

типа.

   К множественным  величинам применимы операции: тождественность  (=),

нетождественность (<>), содержится  в (<=), содержит (>=).  Результат

выполнения  этих операций имеет логический тип, например:

 

         ['A','B'] = ['A','C']  даст FALSE

         ['A','B'] <> ['A','C'] даст TRUE

         ['B'] <= ['B','C']     даст TRUE

         ['C','D'] >= ['A']     даст FALSE.

 

   Кроме этих операций для работы с величинами множественного типа  в

языке ПАСКАЛЬ используется операция

 

         in

 

проверяющая  принадлежность  элемента  базового типа,  стоящего слева

от знака операции,  множеству, стоящему справа от знака  операции. Ре-

зультат выполнения этой операции - булевский.  Операция проверки при-

надлежности элемента множеству  часто используется вместо операций от-

ношения, например:

 

         A in ['A', 'B'] даст  TRUE,

         2 in [1, 3, 6]  даст  FALSE.

  

   При использовании  в   программах   данных   множественного   типа

выполнение операций происходит над битовыми строками данных.  Каждому

значению множественного типа в памяти ЭВМ соответствует  один двоичный

разряд. Например, множество

 

         ['A','B','C','D']

 

представлено  в памяти ЭВМ битовой строкой

 

         1 1 1 1.

 

Подмножества  этого множества представлены строками:

 

         ['A','B','D']   1 1 0 1

         ['B','C']       0 1 1 0

         ['D']           0 0 0 1

 

   Величины  множественного типа не могут быть элементами списка вво-

да - вывода.

   В каждой  конкретной  реализации транслятора  с языка ПАСКАЛЬ коли-

чество элементов  базового типа,  на котором строится множество, огра-

ничено. В  TURBO PASCAL количество базовых элементов  не должно превы-

шать 256.

   Инициализация  величин  множественного  типа  производится с помощью

типизированных констант:

  

   const  seLit: Set of 'A'..'D'= [];

  

   Проиллюстрируем применение  данных множественного типа на примере.

   Пример. Составить программу, которая вырабатывает и выводит на эк-

ран дисплея  наборы случайных чисел для игры в "Спортлото 5 из 36".

   Для заполнения  каждой карточки спортлото необходимо  получить набор

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

вания:

    -числа должны находиться в диапазоне 1..36;

    -числа  не должны повторяться.

  

    Program Lotto;

     var

         nb, k: Set of 1..36;

         kol, l, i, n: Integer;

     begin

        Randomize;

        WriteLn('ВВЕДИ kol');

        ReadLn(kol);

        nb:=[1..36];

        for i:=1 to kol do

          begin

           k:=[];

           for l:=1 to 5 do

             begin

               repeat

                 n:=Random(36)

               until (n in nb) and not (n in k);

               k:=k+[n];

               Write(n:4)

             end;

           WriteLn

          end

         end.

 

   

29.   З А  П И С И

 

   Запись  представляет собой совокупность  ограниченного  числа  логи-

чески связанных  компонент,  принадлежащих к разным типам.  Компоненты

записи называются полями, каждое из которых определяется именем. Поле

записи содержит имя поля, вслед за которым через двоеточие указывает-

ся тип этого  поля. Поля записи могут относиться к любому типу, допус-

тимому в языке Паскаль, за исключением файлового типа.

   Описание записи   в   языке   ПАСКАЛЬ   осуществляется  с  помощью

служебного слова RECORD,  вслед за которым описываются компоненты за-

писи. Завершается описание записи служебным словом END.

   Например, записная  книжка содержит фамилии,  инициалы  и номера те-

лефона, поэтому отдельную  строку в записной книжке удобно представить

в виде следующей записи:

  

         type   Row=Record

                     FIO: String[20];

                     TEL: String[7]

                    end;

         var    str: Row;

 

   Описание записей  возможно и без использования  имени типа,   напри-

мер:

         var  str: Record

                    FIO: String[20];

                    TEL: String[7]

                   end;

 

   Обращение  к записи в целом допускается  только в операторах присва-

ивания, где  слева и справа от знака присваивания используются  имена

записей одинакового  типа. Во всех остальных случаях  оперируют отдель-

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

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

например:

  

         str.FIO,   str.TEL

 

   Такое имя называется составным. Компонентой записи может быть так-

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

большее количество имен.

   Обращение  к  компонентам записей можно  упростить,  если воспользо-

ваться оператором присоединения with.

   Он позволяет  заменить составные имена,  характеризующие  каждое по-

ле, просто на имена  полей, а имя записи определить в  операторе присо-

единения:

  

         with M do OP;

 

   Здесь М  -  имя  записи,   ОР  - оператор,  простой или составной.

Оператор ОР представляет собой область действия оператора присоедине-

ния, в пределах которой можно не использовать составные  имена.

   Иногда  содержимое отдельной записи  зависит от значения  одного  из

ее полей.  В языке ПАСКАЛЬ допускается  описание записи,  состоящей из

общей и вариантной частей.  Вариантная часть задается с помощью конс-

трукции

         case P of,

 

где Р - имя  поля из общей  части  записи. Возможные  значения, прини-

маемые этим полем,  перечисляются так же, как и в операторе варианта.

Однако вместо указания выполняемого действия, как  это делается в опе-

раторе варианта,    указываются поля варианта,  заключенные  в круглые

скобки. Описание вариантной части завершается служебным  словом end.

   Тип поля  Р можно указать в заголовке  вариантной части, например:

  

         case P: Integer of

  

   Инициализация записей   осуществляется  с  помощью   типизированных

констант:

  

   type

     RecType= Record

               x,y: Word;

               ch: Char;

               dim: Array[1..3] of Byte

              end;

  

   const

     Rec: RecType= ( x: 127; y: 255;

                     ch: 'A';

                     dim: (2, 4, 8) );

 

{}

30.   Ф А  Й Л Ы

 

   Введение  файлового типа  в  язык  ПАСКАЛЬ  вызвано  необходимостью

обеспечить  возможность работы с периферийными (внешними) устройствами

ЭВМ, предназначенными для ввода, вывода и хранения данных.

   Файловый  тип данных или файл определяет  упорядоченную совокупность

произвольного числа однотипных компонент.

   Общее  свойство массива,  множества и записи заключается в том, что

количество  их компонент определено на этапе  написания программы, тог-

да как  количество компонент файла в тексте программы  не определяется

и может быть произвольным.

   Понятие  файла  достаточно  широко.  Это может быть обычный файл на

диске, коммуникационный порт ЭВМ,  устройство печати,  клавиатура или

другие устройства.

   При работе  с файлами выполняются операции  ввода - вывода. Операция

ввода означает   перепись  данных  с внешнего устройства (из входного

файла) в  основную память ЭВМ, операция вывода - это пересылка данных

из основной памяти на внешнее устройство (в  выходной файл).

   Файлы  на внешних устройствах часто  называют  физическими  файлами.

Их имена  определяются  операционной системой.  В программах на языке

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

диске может  иметь вид:

  

   'A:LAB1.DAT'

   'c:\ABC150\pr.pas'

   'lab3.pas'.

  

   Операционная  система  MS-DOS не делает особого  различия между фай-

лами на дисках и лентах и устройствами ЭВМ и портами коммуникаций.  В

TURBO PASCAL  могут  использоваться имена устройств  и портов,  опреде-

ленные в MS-DOS, например:

  

   'CON',  'LPT1',  'PRN',  'COM1',  'AUX',  'NUL'.

  

   С файловой системой TURBO PASCAL связано понятие  буфера  ввода  -

Информация о работе Программирование