Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Лекции по программированию на Паскале

10.   О П Е Р А Т О Р Ы   В В О Д А
И   В Ы В О Д А

   Рассмотрим организацию  ввода и вывода данных с терминального уст-
ройства. Терминальное устройство - это устройство, с которым работает
пользователь, обычно это экран (дисплей) и клавиатура.
   Для ввода и вывода данных используются стандартные процедуры ввода
и вывода Read и Write, оперирующие стандартными последовательными файлами
INPUT и OUTPUT.
   Эти файлы разбиваются на строки переменной длины,  отделяемые друг
от друга признаком конца строки.  Конец строки задается нажатием кла-
виши ENTER.
   Для ввода исходных данных используются операторы процедур ввода:

         Read(A1,A2,...AK);
         ReadLn(A1,A2,...AK);
         ReadLn;

   Первый из них реализует чтение К значений исходных данных и  прис-
ваивание этих значений переменным А1,  А2,  ...,  АК. Второй оператор
реализует чтение К значений исходных данных, пропуск остальных значе-
ний до начала следующей строки, присваивание считанных значений пере-
менным А1,  А2, ..., АК. Третий оператор реализует пропуск строки ис-
ходных данных.
   При вводе исходных данных  происходит  преобразование  из  внешней
формы представления во внутреннюю, определяемую типом переменных. Пе-
ременные, образующие  список ввода, могут принадлежать либо к целому,
либо к   действительному,  либо к символьному типам.  Чтение исходных
данных логического типа в языке ПАСКАЛЬ недопустимо.
   Операторы ввода  при чтении значений переменных целого и
действительного типа пропускает пробелы,  предшествующие числу.  В то
же время эти операторы не пропускают пробелов,  предшествующих значе-
ниям символьных переменных,  так как пробелы  являются  равноправными
символами строк. Пример записи операторов ввода:

         var rV, rS: Real;
             iW, iJ: Integer;
             chC, chD: Char;
         ................
         Read(rV, rS, iW, iJ);
         Read(chC, chD);

   Значения исходных данных могут отделяться друг от друга  пробелами
и нажатием клавиш табуляции и Enter.
   Для вывода результатов работы программы на экран используются
операторы:

         Write(A1,A2,...AK);
         WriteLn(A1,A2,...AK);
         WriteLn;

   Первый из этих операторов реализует вывод значений переменных  А1,
А2,...,АК в   строку экрана.  Второй оператор реализует вывод
значений переменных А1,  А2,  ...,  АК и переход к  началу  следующей
строки. Третий   оператор реализует пропуск строки и переход к началу
следующей строки.
   Переменные, составляющие список вывода, могут относиться к целому,
действительному, символьному или булевскому типам. В качестве элемен-
та списка вывода кроме имен переменных могут использоваться выражения
и строки.
   Вывод каждого  значения в строку экрана происходит в соот-
ветствии с шириной поля вывода,  определяемой конкретной  реализацией
языка.
   Форма представления значений в поле вывода соответствует типу  пе-
ременных и выражений:  величины целого типа выводятся как целые деся-
тичные числа,  действительного типа - как  действительные  десятичные
числа с десятичным порядком,  символьного типа и строки - в виде сим-
волов, логического типа - в виде логических констант TRUE и FALSE.
   Оператор вывода  позволяет  задать  ширину поля вывода для каждого
элемента списка вывода.  В этом случае
элемент списка вывода имеет вид А:К, где
А - выражение или строка,  К - выражение либо константа целого  типа.
Если выводимое значение занимает в поле вывода меньше позиций, чем К,
то перед этим значением располагаются пробелы.  Если выводимое значе-
ние не помещается в ширину поля К,  то для этого значения будет отве-
дено необходимое количество позиций. Для величин действительного типа
элемент списка вывода может иметь вид А:К:М, где А - переменная или выраже-
ние действительного типа,  К - ширина поля вывода,  М  -  число  цифр
дробной части   выводимого значения.  К и М - выражения или константы
целого типа.  В этом случае действительные значения выводятся в форме
десятичного числа с фиксированной точкой.
    Пример записи операторов вывода:
        . . . . . . . . . . . .
        var rA, rB: Real;       iP,iQ:Integer;
            bR, bS: Boolean;    chT, chV, chU, chW: Char;
        . . . . . . . . . . . .
        WriteLn(rA, rB:10:2);
        WriteLn(iP, iQ:8);
        WriteLn(bR, bS:8);
        WriteLn(chT, chV, chU, chW);


11.   С Т Р У К Т У Р А   П Р О Г Р А М М Ы

   Программа на языке ПАСКАЛЬ состоит из заголовка, разделов описаний
и раздела операторов.
   Заголовок программы содержит имя программы, например:

      Program PRIM;

   Описания могут  включать в себя раздел подключаемых библиотек (мо-
дулей), раздел  описания меток, раздел описания констант, раздел опи-
сания типов,  раздел описания переменных,  раздел описания процедур и
функций.
   Раздел описания  модулей  определяется служебным словом USES и со-
держит имена подключаемых модулей (библиотек)  как входящих в  состав
системы TURBO PASCAL, так и написанных пользователем. Раздел описания
модулей должен быть первым среди разделов описаний. Имена модулей от-
деляются друг от друга запятыми:

    uses  CRT, Graph;

   Любой оператор  в программе может быть помечен меткой.  В качестве
метки используются произвольные целые без знака,  содержащие не более
четырех цифр, либо имена. Метка ставится перед оператором и отделяет-
ся от него двоеточием.  Все метки,  используемые в программе,  должны
быть перечислены в разделе описания меток, например:

      label 3, 471, 29, Quit;

   Описание констант  позволяет использовать имена как синонимы конс-
тант, их необходимо определить в разделе описаний констант:

      const K= 1024;   MAX= 16384;

   В разделе описания переменных необходимо определить тип всех пере-
менных, используемых в программе:

      var P,Q,R: Integer;
          A,B:   Char;
          F1,F2: Boolean;

   Описание типов,  прцедур и функций будет рассмотрено ниже. Отдель-
ные разделы описаний могут отсутствовать,  но следует помнить,  что в
ПАСКАЛЬ - программе   должны  быть обязательно описаны все компоненты
программы.
   Раздел операторов  представляет собой составной оператор,  который
содержит между служебными словами

         begin.......end

последовательность  операторов.  Операторы  отделяются  друг от друга
символом ;.
   Текст программы заканчивается символом точка.
   Кроме описаний  и  операторов  ПАСКАЛЬ - программа может содержать
комментарии, которые  представляют собой произвольную  последователь-
ность символов,  расположенную между открывающей скобкой комментариев
{ и закрывающей скобкой комментариев }.
   Текст ПАСКАЛЬ - программы может содержать ключи компиляции,  кото-
рые позволяют управлять режимом компиляции.  Синтаксически ключи ком-
пиляции записываются как комментарии. Ключ компиляции содержит символ
$ и букву-ключ с последующим знаком + (включить режим)  или - (выклю-
чить режим). Например:

   {$E+} - эмулировать математический сопроцессор;
   {$F+} - формировать дальний тип вызова процедур и функций;
   {$N+} - использовать математический сопроцессор;
   {$R+} - проверять выход за границы диапазонов.

   Некоторые ключи компиляции могут содержать параметр, например:

   {$I имя файла} - включить в текст компилируемой программы  назван-
ный файл.

    Пример записи простой программы:

         Program TRIANG;
          var A, B, C, S, P: Real;
          begin
           Read(A,B,C);
           WriteLn(A,B,C);
            P:=(A+B+C)/2;
            S:=Sqrt(P*(P-A)*(P-B)*(P-C));
           WriteLn('S=',S:8:3)
          end.


12.   Б И Т О В А Я   А Р И Ф М Е Т И К А

   Битовая или поразрядная арифметика  введена  в  TURBO  PASCAL  для
обеспечения возможности работы с двоичными разрядами (битами). Опера-
ции битовой арифметики применимы только к целым типам.
   Первая группа операций - логические операции not, and, or и xor.
   Операция not является одноместной,  она изменяет каждый бит целого
числа на обратный.
   Операции and, or и xor - двуместные, операнды этих операций - целые
величины одинаковой   длины.   Операции выполняются попарно над всеми
двоичными разрядами операндов.
   Вторая группа  операций  -  это операции сдвига влево shl и сдвига
вправо shr:
    
    I shl N
    I shr N.
   
   Эти операции сдвигают двоичную последовательность значения I влево
или вправо на N двоичных разрядов. При этом биты, уходящие за пределы
разрядной сетки, теряются, а освободившиеся двоичные разряды заполня-
ются нулями.  При сдвиге вправо отрицательных значений освободившиеся
разряды заполняются единицами.
    
    

13.   О П Е Р А Т О Р   П Е Р Е Х О Д А

   Обычно операторы  в  программе выполняются в том порядке,  в каком
они записаны. Оператор перехода прерывает естественный порядок выпол-
нения программы и указывает,  что дальнйшее выполнение должно продол-
жаться, начиная с оператора, помеченного меткой, указанной в операто-
ре перехода. Пример записи оператора перехода:

        goto 218;


14.   Э Л Е М Е Н Т Ы   С Т Р У К Т У Р Н О Г О
П Р О Г Р А М М И Р О В А Н И Я

   Структуризованная программа  (или  подпрограмма)  - это программа,
составленная из фиксированного множества базовых конструкций.   Расс-
мотрим основные  определения и способы образования этих конструкций в
схемах алгоритмов.
{}
   Из операций, развилок и слияний строятся базовые конструкции: сле-
дование, ветвление,  цикл. Применяя только эти три конструкции, можно
реализовать алгоритм решения любой задачи.
   Конструкция, представляющая собой последовательное выполнение двух
или более операций, называется следованием.
   Конструкция, состоящая из развилки, двух операций и слияния, назы-
вается ветвлением. Одна из операций может отсутствовать.
   Конструкция, имеющая линии управления, ведущие к предидущим опера-
циям или развилкам, называется циклом.
   Конструкции следование,   ветвление  и  цикл можно представить как
операции, так  как они имеют единственный вход и единственный  выход.
Произвольную последовательность   операций можно представить как одну
операцию.
   Операция может  быть  реализована  любым  оператором языка ПАСКАЛЬ
(простым или составным), либо группой операторов, за исключением опе-
ратора перехода GOTO.
   В языке ПАСКАЛЬ количество базовых конструкций увеличено до шести,
это:
       -следование;
       -ветвление;
       -цикл с предусловием;
       -цикл с постусловием;
       -цикл с параметром;
       -вариант.
   Далее рассмотрим,  как эти базовые конструкции реализуются в языке
ПАСКАЛЬ.


15.   У С Л О В Н Ы Й   О П Е Р А Т О Р
 {}
   Условный оператор  в короткой форме работает по правилу:  если бу-
левское выражение B истинно,  то выполняется оператор ОР1,  далее вы-
полняется оператор, следующий за условным. Если булевское выражение B
ложно, то будет выполняться оператор, следующий за этим условным опе-
ратором.

16.   Ц И К Л   С   П Р Е Д У С Л О В И Е М{}
17.   Ц И К Л   С   П О С Т У С Л О В И Е М{}
18.   Ц И К Л   С   П А Р А М Е Т Р О М{}
19.   О П Е Р А Т О Р Ы   З А В Е Р Ш Е Н И Я  Ц И К Л А

   Для всех операторов цикла выход из цикла осуществляется как
вследствие естественного  окончания оператора цикла,  так и с
помощью операторов перехода и  выхода.
   В версии ТУРБО ПАСКАЛЬ 7.0 определены стандартные процедуры Break и
Continue. Процедура Break выполняет безусловный выход из цикла. Проце-
дура Continue обеспечивает переход к началу новой итерации цикла.


20.   О П Е Р А Т О Р   В А Р И А Н Т А{}
21.   П Е Р Е Ч И С Л Я Е М Ы Й   Т И П   Д А Н Н Ы Х

   Перечисляемый тип представляет  собой  ограниченную  упорядоченную
последовательность скалярных констант,  составляющих данный тип. Зна-
чение каждой константы задается ее именем.  Имена отдельных  констант
отделяются друг от друга запятыми,  а вся совокупность констант, сос-
тавляющих данный перечисляемый тип, заключается в круглые скобки.
   Программист объединяет в одну группу в соответствии с каким - либо
признаком всю совокупность значений,  составляющих перечисляемый тип.
Например, перечисляемый    тип  Rainbow(РАДУГА)  объединяет скалярные значения
RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET (КРАСНЫЙ,
ОРАНЖЕВЫЙ,  ЖЕЛТЫЙ, ЗЕЛЕНЫЙ, ГОЛУБОЙ, СИНИЙ, ФИОЛЕТОВЫЙ). Пе-
речисляемый тип Traffic_Light (СВЕТОФОР) объединяет скалярные
значения RED, YELLOW, GREEN (КРАСНЫЙ,  ЖЕЛТЫЙ, ЗЕЛЕНЫЙ).
   Перечисляемый тип  описывается  в разделе описания типов,  который
начинается со служебного слова type, например:

type
  Rainbow = (RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET);

   Каждое значение  является константой своего типа и может принадле-
жать только одному из перечисляемых типов, заданных в программе. Нап-
ример, перечисляемый    тип  Traffic_Light не может быть определен в одной
программе с типом Rainbow,  так как оба типа содержат одинаковые конс-
танты.
   Описание переменных, принадлежащих к скалярным типам, которые объ-
явлены в  разделе описания типов,  производится с помощью имен типов.
Например:

        type  Traffic_Light= (RED, YELLOW, GREEN);
        var   Section: Traffic_Light;

   Это означает, что переменная Section может принимать значения RED,
YELLOW или GREEN.
   Переменные перечисляемого типа могут быть описаны в разделе описа-
ния переменных, например:

        var  Section: (RED, YELLOW, GREEN);

   При этом имена типов отсутствуют,  а переменные определяются сово-
купностью значений, составляющих данный перечисляемый тип.
   К переменным перечисляемого  типа  может  быть  применим  оператор
присваивания:

          Section:= YELLOW;

   Упорядоченная последовательность значений, составляющих перечисля-
емый тип, автоматически нумеруется, начиная с нуля и далее через еди-
ницу. Отсюда следует, что к перечисляемым переменным и константам мо-
гут быть применены операции отношения  и  стандартные  функции  Pred,
Succ, Ord.
   Переменные и константы перечисляемого типа не могут быть элемента-
ми списка ввода или вывода.

22.   И Н Т Е Р В А Л Ь Н Ы Й   Т И П   Д А Н Н Ы Х

   Отрезок любого порядкового типа
может   быть определен как интервальный или ограниченный
тип. Отрезок  задается диапазоном от  минимального  до  максимального
значения констант, разделенных двумя точками. В качестве констант мо-
гут быть использованы константы, принадлежащие к целому, символьному,
логическому или перечисляемому типам. Скалярный тип, на котором стро-
ится отрезок, называется базовым типом.
   Минимальное и  максимальное  значения констант называются нижней и
верхней границами отрезка,  определяющего интервальный  тип.   Нижняя
граница должна быть меньше верхней.
 {}
   Над переменными,  относящимися к интервальному типу,  могут выпол-
няться все операции и применяться все стандартные  функции,   которые
допустимы для соответствующего базового типа.
   При использовании в программах интервальных типов данных может  осущест-
вляться контроль   за  тем,  чтобы значения переменных не выходили за
границы, введенные для этих переменных в описании интервального типа.
23.   М А С С И В Ы

   Массивы представляют собой ограниченную упорядоченную совокупность
однотипных величин.  Каждая отдельная величина называется компонентой
массива. Тип   компонент может быть любым,  принятым в языке ПАСКАЛЬ,
кроме файлового типа. Тип компонент называется базовым типом.
   Вся совокупность компонент определяется одним именем.  Для обозна-
чения отдельных компонент используется конструкция,  называемая пере-
менной с индексом или с индексами:

          A[5]     S[k+1]     B[3,5].

   В качестве индекса может быть использовано выражение. Тип индексов
может быть только интервальным или перечисляемым.   Действительный  и
целый типы недопустимы.  Индексы интервального типа, для которого ба-
зовым является целый тип,  могут принимать отрицательные,  нулевое  и
положительные значения.{}
  В операторной части
программы один массив может быть присвоен другому, если их типы иден-
тичны, например:

         R1:=Z.

   Для ввода  или вывода массива в список ввода или вывода помещается
переменная с индексом,  а операторы ввода или  вывода  выполняются  в
цикле.
{}
   Первый индекс  определяет  номер  строки,  второй - номер столбца.
Двумерные массивы хранятся в памяти ЭВМ по строкам.
   Инициализация массивов (присвоение начальных значений всем  компо-
нентам массивов) осуществляется двумя способами.
   Первый способ - с использованием типизированных констант,   напри-
мер:

   type Dim10= Array[1..10] of Real;

   const
    raM10: Dim10 = ( 0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8, 8.7, 9.3 );

   При инициализации двумерных массивов значения компонент каждого из
входящих в него одномерных массивов записывается в скобках:

   type Dim3x2= Array[1..3,1..2] of Integer;

   const
    iaM3x2: Dim3x2= ( (1, 2)
                      (3, 4)
                      (5, 6) );

   Второй способ инициализации - использование разновидности процеду-
ры FillChar:

   FillChar( var V; NBytes: Word; B: Byte );

Эта процедура заполняет участок памяти однобайтовым значением. Напри-
мер, для обнуления массива A[1..10] of Real можно записать:

   FillChar(A, 40, 0);

или

   FillChar(A, SizeOf(A), 0);

{}
24.   С Т Р О К И

   Особое место в языке ПАСКАЛЬ занимают массивы символов.  Стандарт-
ный ПАСКАЛЬ допускает два способа хранения символьных массивов в  па-
мяти ЭВМ: распакованный и упакованный. Распакованные массивы символов
хранятся в памяти ЭВМ по одному символу в машинном слове, упакованные
- по одному символу в байте. При описании упакованного массива симво-
лов используют служебное слово PACKED, например:

            var   MAS: Packed Array[1..20] of Char;

Описание распакованного массива символов имеет вид:

            var   M: Array[1..20] of char;

   Для преобразования символьного массива из  распакованной  формы  в
упакованную и наоборот,  из упакованной в распакованную,  в язык ПАС-
КАЛЬ введены две стандартные функции Pack, UnPack.
   Упакованный массив символов образует символьную строку. Символьная
строка может быть либо строковой константой, либо строковой  перемен-
ной. Строковая константа, или строка, представляет собой совокупность
символов, заключенную  в апострофы.  Строка - это элементарная  конс-
трукция языка ПАСКАЛЬ. Строковые константы могут входить в состав вы-
ражений. Как  и числовые константы,  они могут быть описаны в разделе
описания констант.
   Строковые переменные - это одномерные упакованные  массивы  симво-
лов, для описания которых в TURBO PASCAL введен тип String.
   Например, если строка содержит до 30 символов,  ее тип будет опре-
делен как

    type   s= String[30];

   Длина строки не может содержать более, чем 255 символов.
   В TURBO PASCAL определено понятие строки переменной длины,  в этом
случае ее описание задается как

    type  s= String;

   Тип String без указания длины совместим со всеми типами строк.
   Особенностью строковых переменных является то, что к ним можно об-
ращаться как к скалярным переменным, так и к массивам. Во втором слу-
чае применяется конструкция "переменная с индексом", что обеспечивает
доступ к   отдельным символам строки.  При этом нижняя граница идекса
равна 1. Отдельный символ строки совместим с типом Char.
   В памяти ЭВМ строка занимает количество байтов, на единицу большее
ее длины. Нулевой байт строки содержит ее длину.
   Для строк определены операции присваивания, слияния (конкатенации)
и сравнения.

   Для сравнения строк применяются все операции отношения.  Сравнение
строк происходит посимвольно,  начиная с первого символа. Строки рав-
ны, если имеют одинаковую длину и посимвольно эквивалентны.
   Строки могут быть элементами списка ввода - вывода, при этом запи-
сывается имя строки без индекса.
   При вводе  строковых переменных количество вводимых символов может
быть меньше,  чем длина строки. В этом случае вводимые символы разме-
щаются с начала строки, а оставшиеся байты заполняются пробелами. Ес-
ли количество  вводимых  символов  превышает  длину  строки,   лишние
символы отбрасываются.
   Инициализация строк может производиться как с помощью типизирован-
ных констант:

   const sName: String[9]= 'IBM PC/AT';

так и с использованием второй разновидности функции FillChar:

   FillChar( var V; NBytes: Word; C: Char );

например:

   FillChar(A, SizeOf(A), '0');

   Для работы  со  строками в TURBO PASCAL включены процедуры и функ-
ции, которые обеспечивают редактирование и преобразование строк.
{}

Часть 1 | Часть 2 | Часть 3 | Часть 4 | Часть 5 | Часть 6

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
65K
07 ноября 2010 года
kuka190972
0 / / 07.11.2010
+1 / -0
Мне нравитсяМне не нравится
7 ноября 2010, 12:51:07
Огромное СПАСИБО!!!
2.
53K
17 сентября 2009 года
oniseus
0 / / 17.09.2009
+1 / -0
Мне нравитсяМне не нравится
18 сентября 2009, 14:46:51
Спасибо автору
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог