скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Основные понятия алгоритмического языка

деленного интеграла по формуле Симпсона вычисляется по формуле:

      ISimps=2*h/3*(0.5*F(A)+2*F(A+h)+F(A+2*h)+2*F(A+3*h)+...

                                                +2*F(B-h)+0.5*F(B))

где A и B - нижняя и верхняя границы интервала интегрирования,

    N - число разбиений интервала интегрирования,

    h=(B-A)/N, причем N должно быть четным.

Program INTEGRAL;

 type

    Func= function(x: Real): Real;

 var

    I,TN,TK:Real;

    N:Integer;

{$F+}

 Function Q(t: Real): Real;

   begin

     Q:=2*t/Sqrt(1-Sin(2*t));

   end;

{$F-}

 Procedure Simps(F:Func; a,b:Real; N:Integer; var INT:Real);

   var

      sum, h: Real;

      j:Integer;

   begin

     if Odd(N) then N:=N+1;

     h:=(b-a)/N;

     sum:=0.5*(F(a)+F(b));

     for j:=1 to N-1 do

       sum:=sum+(j mod 2+1)*F(a+j*h);

       INT:=2*h*sum/3

   end;

 begin

   WriteLn(' ВВЕДИ TN,TK,N');

   Read(TN,TK,N);

   Simps(Q,TN,TK,N,I);

   WriteLn('I=',I:8:3)

 end.

{}

26.   О П Е Р А Т О Р Ы    В Ы Х О Д А

   Для завершения  работы программ,  процедур и функций без предвари-

тельного перехода по меткам к закрывающему end в TURBO PASCAL введены

процедуры Exit и Halt.

   Вызов Exit завершает работу своего программного блока  и  передает

управление вызывающей программе.  Если Exit выполняется в подпрограм-

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

няться следующий за вызовом этой подпрограммы оператор. Если Exit вы-

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

нормальному завершению.

   Вызов процедуры Halt,  где бы она не находилась,  завершает работу

программы и передает управление операционной системе.

   Процедура Halt имеет структуру Halt(n),  где n - код возврата, ко-

торый может  быть проанализирован операционной системой с помощью ко-

манды IF ERRORLEVEL.  Значение n=0 соответствует нормальному заверше-

нию работы программы. Вызов процедуры Halt без параметра эквивалентен

вызову Halt(0).

27.   М О Д У Л И

   Модуль (UNIT) в TURBO PASCAL - это особым образом оформленная биб-

лиотека подпрограмм.  Модуль в отличие от программы не может быть за-

пущен на выполнение самостоятельно,  он может  только  участвовать  в

построении программ и других модулей.

   Модули позволяют создавать личные библиотеки процедур и функций  и

строить программы практически любого размера.

   Модуль в TURBO PASCAL представляет собой отдельно хранимую и неза-

висимо компилируемую программную единицу.

   В общем случае модуль -  это  совокупность  программных  ресурсов,

предназначенных для использования другими программами.  Под программ-

ными ресурсами понимаются любые элементы языка TURBO PASCAL: констан-

ты, типы,  переменные,  подпрограммы.  Модуль сам по себе не является

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

ми единицами.

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

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

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

ля;

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

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

   В соответствии с этим модуль, кроме заголовка, содержит две основ-

ные части, называемые интерфейсом и реализацией.

   В общем случае модуль имеет следующую структуру:

   unit <имя модуля>;         {заголовок модуля}

    interface

     { описание видимых программных элементов модуля }

     { описание скрытых программных элементов модуля }

    begin

     { операторы инициализации элементов модуля }

    end.

   В частном случае модуль может не содержать части реализации и час-

ти инициализации, тогда структура модуля будет такой:

   unit <имя модуля>;         {заголовок модуля}

    interface

     { описание видимых программных элементов модуля }

    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.   Ф А Й Л Ы

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

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

Страницы: 1, 2, 3, 4, 5, 6, 7


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.