Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

ПЕРЕЧИСЛИМЫЕ или перечисляемые

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 6.6.2024

  1.  Данные типа "ПЕРЕЧИСЛИМЫЕ" (или перечисляемые).

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

Общий вид описания:                       

TYPE NM - (W1, W2, ..., WN);                    

где: NM - имя определяемого типа,                   

W1, W2, ..., WN - конкретные значения, которые может принимать переменная. Эти значения считаются упорядоченными, т.е., описание типа одновременно вводит упорядочение:          

W1 < W2 < ... < WN                      

В качестве значений WI могут выступать только имена. Числовые, логические и символьные константы не могут являться значениями перечислимых типов.

ПРИМЕР: TYPE DAY = (MO, TU, WE, TH, FR, SA, SU)

VAR D1, D2 : DAY;

Объект, указанный в описке, может присутствовать в описании только один раз в данной программе и не должен совпадать ни с одним зарезервированным словом языка.             

Например, следующие описания несовместимы;                 

TYPE T1 = (ONE, TWO, THREE, FOUR)

T2 = (FOUR, FIVE, SIX);              

Имена объектов, указанных в описании перечислимого типа, являются константами этого типа.     

ПРИМЕР: Пусть есть описание

TYPE NAME - (JOHN,TOM,NICK,AMN);

COLOR - (RED,BLUE,BLACK);

VAR X, Y,Z: NAME;

CI,C2,C3: COLOR;

Следующие операторы допустимы                    

С1:= BLUE;   Х:= ANN;                       

А эти недопустимы:                       

Z := BLACK; С3 := TOM;                      

Применение вводимых перечислимых типов имеет ряд преимуществ:            

- улучшается смысловая читаемость программы;                

- более четко проводится контроль значений;                 

- перечислимые типы имеют очень компактное машинное представление.

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

2. Приоритет выполнения операций в выражениях.

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

1. NOT  + - унарные операции

2. *  / DIV MOD  AND

3. +  - OR XOR

4. =  <> < > <= >= IN

При вычислениях сначала выполняются операции наивысшего приоритета, затем более низкого. Операции равного приоритета выполняются слева направо. Использование скобок позволяет явно расставлять приоритеты и

менять порядок вычислений.

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

  1.  При явном приведении указывается тип переменной, к которому необходимо преобразовать исходную переменную.
  2.  При неявном приведении преобразование происходит автоматически, по правилам, заложенным в данном языке программирования.
  3.  Также в языке могут быть заданы специальные функции для приведения.
  4.  CHR(Х) - ПРЕОБРАЗОВАНИЕ КОДА В СИМВОЛ. Аргумент функций должен быть целого типа в диапазоне 0..255. Результатом является символ, соответствующий данному коду для данной ЭВМ.
  5.  ORD(Х) - ПРЕОБРАЗОВАНИЕ ПОРЯДКОВОГО ТИПА В ЦЕЛЫЙ. Аргументом может быть величина любого порядкового типа (логического) литерного перечисляемого.
  6.  ROUND(Х) - ОКРУГЛЕНИЕ ВЕЩЕСТВЕННОГО ЧИСЛА ДО БЛИЖАЙШЕГО ЦЕЛОГО. Аргумент функции - real, а результат - округленная до ближайшего целого величина. Тип результата – INTEGER.
  7.  TRUNC(Х) - ПОЛУЧЕНИЕ ЦЕЛОЙ ЧАСТИ ВЕЩЕСТВЕННОГО ЧИСЛА. Аргумент функции - real, а результат - целая часть от этого числа Тип результата - INTEGER.
  8.  

3. Программа на языке PASCAL состоит из ЗАГОЛОВКА и собственно тела программы, называемого БЛОКОМ. Рассмотрим их подробно.                                             

1.1. ЗАГОЛОВОК ПРОГРАММЫ.

В заголовке программы указывается ее ИМЯ и СПИСОК ПАРАМЕТРОВ, который не является обязательным.                                                         

Общий вид заголовка:                                                 

PROGRAM NAME (INPUT, OUTPUT, X, Y, …, Z);                                   

где: NAME - имя программы;                                              

INPUT - стандартный файл ввода;                                            

OUTPUT - стандартный файл вывода;                                          

X, Y, - внешние файлы, используемые в программе.                                   

Файлы INPUT и OUTPUT являются стандартными файлами ввода-вывода "по умолчанию", т.е. если в операторах ввода-вывода ЯВНО не указывается спецификации файлов, то подразумеваются стандартные.             

1.2. БЛОК.                                                       

Блок состоит из ШЕСТИ разделов, любой из которых, кроме последнего, может отсутствовать. В СТАНДАРТНОЙ ВЕРСИИ языка разделы должны следовать в строгом порядке:                           

       раздел МЕТОК (LABEL);                                         

       раздел КОНСТАНТ (CONST);                                        

       раздел ТИПОВ (TYPE);                                          

       раздел ПЕРЕМЕННЫХ (VAR);                                        

       раздел ПРОЦЕДУР и ФУНКЦИЙ;                                          

       раздел ОПЕРАТОРОВ.                                           

1.2.1. Раздел МЕТОК (LABEL).                                              

Любой выполняемый оператор может быть снабжен МЕТКОЙ. МЕТКА - целая положительная константа, содержащая не более четырех цифр. Все метки, встречающиеся в блоке, должны быть ОБЯЗАТЕЛЬНО описаны в разделе LABEL.                                                   

Общий вид:                                                 

LABEL М1, М2,...,МN;                                           

где М1, М2,...,МN - метки.                                               

ПРИМЕР: LABEL 5, 10, 100;                                               

В самом разделе операторов метка от оператора, на который она указывает, отделяется ДВОЕТОЧИЕМ.            

1.2.2. Раздел КОНСТАНТ (CONST).

Зачастую в программе используются константы, имеющие громоздкую запись (например, P1 с восемью знаками), либо сменные константы (например, для задания различных вариантов вычислений). В таких случаях константы удобнее обозначать именами, которые ОБЯЗАТЕЛЬНО описываются в разделе CONST,  а в  программе используются эти имена. Это делает программу более наглядной и удобной при отладке и внесении изменений.        

Размещение всех констант в одном месте избавляет от необходимости искать их в тексте программы. Если одна константа используется в нескольких местах программы, ",то при подборе ее значения в разделе CONST достаточно сделать изменение в одном месте.                                        

Общий вид:                                                 

CONST А1 = С1; А2 = С2; ...                                        

Где А1, А2 - имена констант,                                        

С1, С2 - значения констант.                                         

ПРИМЕР: CONST Н = 23.71; К = 5; 1. = TRUE; Route = 'S';                          

В примере описываются константы Н, К, L, R. При этом заданы следующие типы констант:             

наличие десятичной точки константы H предполагает тип REAL,                       

отсутствие десятичной точки константы K предполагает тип INTEGER,                    

константа L типа BOOLEAN,                                   

константа R типа CHAR.                                         

1.2.3. Раздел ТИПОВ (TYPE).                                              

Напомню, что СТАНДАРТНАЯ ВЕРСИЯ языка имеет всего четыре стандартных типа данных (INTEGER, REAL, CHAR, BOOLEAN) которые могут использоваться в программах. Наряду с этими типами программист имеет возможность вводить в употребление и другие типы значений (естественно, в рамках допустимых в языке классов). В этом же разделе можно описать строение какой либо совокупности данных.                       

Общий вид:                                                      

TYPE Т1 = < описание типа 1 >; Т2 = < описание типа 2 >;

где Т1, 72 - идентификаторы вводимых типов.

ПРИМЕР: TYPE COLOR = (RED, BLUE);

В примере описывается новый перечислимый тип данных COLOR, который может принимать два значения - RED или BLUE.

1.2.4. Раздел ПЕРЕМЕННЫХ (VAR).

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

Общий вид:                                                      

VAR V1, V2, ...,VN: TYPE1;                                              

D1, D2, ..., DN: TYPE2;                                                 

где V1, V2, ..., VN, D1, D2, ..., DN - имена переменных,                                 

TYPE1, TYPE2- описатели типов.                                      

ПРИМЕР: VAR FD65, M7: REAL;                                       

S9: BOOLEAN;                                               

I, L: INTEGER;                                              

KT: INTEGER;                                                 

В примере описываются переменные соответствующих типов.                          

1.2.5. Раздел ПРОЦЕДУР и ФУНКЦИЙ.                                       

В разделе ПРОЦЕДУР и ФУИКЦИЙ описываются все процедуры и функции, определяемые пользователем, размещением в этом разделе тел соответствующих процедур и функций. Более подробно процедуры и функции будут рассматриваться в разделе им посвященном.                                

1.2.6. Раздел ОПЕРАТОРОВ.                                           

В разделе ОПЕРАТОРОВ размещается непосредственно программа. Иногда этот раздел называют ТЕЛОМ ПРОГРАММЫ. Тело программы начинается словом BEGIN и заканчивается словом END с точкой. Точка после слова END является признаком конца программы.                                  

4. Условные операторы предназначены для выбора к исполнению одного из двух возможных действий (операторов) в зависимости от некоторого условия (при этом одно из действий может быть пустым, то есть отсутствовать). В качестве условия выбора используется значение логического выражения.

IF логическое выражение THEN серия команд 1 ELSE серия команд 2

Данный оператор выполняется следующим образом. Сначала вычисляется выражение, стоящее после служебного слова if. Результат вычисления должен иметь булевский тип. Если значение выражения есть true, то выполняется оператор, указанный после служебного слова then. Если результат вычисления выражения есть false, выполняется оператор, сле-дующий за служебным словом else. Если при этом часть условного оператора, начиная со слова else, отсутствует, то управление немедленно передаётся оператору, следующему за условным.

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

CASE селектор OF
метка 1: оператор 1;
метка 2: оператор 2;
. . . . . . . . . . . . . . . . .
метка N: оператор N ELSE оператор N+1
END;

  1.  Значение выражения - "переключателя", записанного после служебного слова case, должны принадлежать дискретному типу; для целого они должны лежать в диапазоне -32768 ... 32767.
  2.  Все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом выражения.
  3.  Все константы в альтернативах должны быть уникальны в пределах оператора варианта (т.е. повторения констант в альтернативах не допускаются); диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах.

6. Оператор цикла с параметром.

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

FOR параметр цикла:=выражение TO выражение DO (DOWNTO)

Данный вариант оператора цикла определяет:

а) диапазон изменения значения управляющей переменной и одновременно число повторений оператора, содержащегося в теле цикла;
б) направление измерения значения переменной (возрастание или убывание);
в) собственно действия, выполняемые на каждой итерации (оператор тела цикла)

а использование управляющей переменной налагаются следующие ограничения:

  1.  В качестве управляющей переменной должна использоваться простая переменная, описанная в текущем блоке.
  2.  Управляющая переменная должна иметь дискретный тип.
  3.  Начальные и конечные значения диапазона должны иметь тип, совместимый с типом управляющей переменной.
  4.  В теле цикла запрещается явное изменение значения управляющей переменной (например, оператор присваивания).
  5.  После завершения оператора значение управляющей переменной становится неопределенным, если только выполнение оператора цикла не было прервано оператором перехода.

Оператор, который содержится в теле оператора for, выполняется один раз для каждого значения в диапазоне между начальным и конечным значениями. Управляющая переменная всегда определяется начальным значением. В случае использования служебного слова to значение управляющей переменной увеличивается при каждом повторении на единицу. Если начальное значение превышает конечное значение, то содержащийся в теле операторa for оператор не выполняется. Когда в операторе цикла используется служебное слово downto, значение управляющей переменной уменьшается при каждом повторении на единицу. Если начальное значение в таком операторе меньше, чем конечное, то содержащийся в теле оператора цикла оператор не выполнится ни разу.

Оператор цикла с предусловием.

Этот структурный оператор задаёт повторяющееся выполнение оператора, содержащегося в нём. Перед каждым очередным выполнением внутреннего оператора производится проверка значения выражения логического типа, которое служит критерием повторения: если это выражение имеет значения true, то выполняется очередная итерация; в противном случае (значение выражения есть false) выполнение оператора цикла заканчивается. Если выражение с самого начала имеет значение false, то цикл не выполняется ни разу.

WHILE условие DO
оператор 

Оператор цикла с постусловием.

Этот оператор аналогичен предыдущему оператору (циклу с предусловием), однако отличается от него тем, что условие проверяется после выполнения очередной итерации (таким образом, гарантируется хотя бы однократное выполнение цикла), а также тем, что критерием прекращения цикла является равенство выражения константе true; если выражение есть false, то цикл повторяется.

REPEAT
операторы цикла
UNTIL
 условие

6. МАССИВЫ (ARRAY).

Переменная-массив (тип ARRAY или регулярный тип) - это упорядоченная пронумерованная совокупность компонентов одного и того же типа. Для массива характерно следующее:

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

-   число компонентов массива определяется при его описании и в дальнейшем не меняется.

Необходимость в массивах возникает, когда при решении задачи приходится иметь дело с большим, но конечным количеством однотипных упорядоченных данных.

СИНТАКСИС определения регулярного типа:

тип_массив = ARRAY [тип индекса {,тип_индекса }] OF тип_компонентов тип_индекса = порядковый тип

тип компонентов = любой тип, кроме файлового

Например, определение типа для одномерного массива имеет вид:

TYPE A = ARRAY [T1] OF T2

где А - идентификатор нового типа,

Т1 - тип индекса,

Т2 - тип компонентов.

Рассмотрим примеры описания типов переменных:

TYPE COLOR = (RED, BLUE, BLACK);

MAS1 = ARRAY [-1..15] OF REAL;

MAS2 = ARRAY [1..10, 1..10] OF INTEGER;

MAS3 = ARRAY ['A'..'C'] OF

ARRAY [1..5] OF BOOLEAN;

MAS4 = ARRAY [BOOLEAN] OF CHAR;

VAR A: MAS1;

B: MAS2;

C: MAS3;

D: MAS4;

E: ARRAY [COLOR] OF REAL;

F: ARRAY [CHAR] OF INTEGER;

Обращение к элементам массива производится с помощью идентификатора переменной с указанием в квадратных скобках необходимых индексов (селектор компоненты).

Например: А[-5], В[10,1], С['В',5], D[FALSE], Е[RED], F['A'].

Такую переменную будем называть частичной переменной. Причем, к элементу C[‘B’,5] можно обратиться и по-другому: C['B'][5].

Значение полных переменных одного и того же регулярного типа могут быть использованы только в операторах присваивания. Нельзя использовать имена массивов в качестве аргументов арифметических операций.

УПАКОВАННЫЕ МАССИВЫ.

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

Упакованному массиву соответствует зарезервированное слово PACKED при его описании. Например:

VAR AP: PACKED ARRAY[1..3] OF BOOLEAN;

В БАЗОВОЙ ВЕРСИИ существуют стандартные процедуры, служащие для упаковки и распаковки одномерных массивов. Их общий вид:

PACK(B,I,Z) - упаковка массива B в массив Z, начиная с 1-ой компоненты массива B.

UNPACK(Z,I,B) - распаковка массива Z в массив B, начиная о 1-го элемента массива B.

При этом массивы Z и B описаны следующим образом:

VAR B ARRAY[M, N] OF CHAR;

Z PACKED ARRAY[U..V] OF CHAR;

где: N-M >= V-U

Следует иметь в виду, что в TURBO PASCAL слово PACKED не оказывает никакого влияния: в случае, когда это возможно, упаковка данных осуществляется автоматически.

СТРОКИ В СТАНДАРТНОМ ПАСКАЛЕ.

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

Для определения строковых переменных вводят строковый тип, в роли которого выступают упакованные одномерные массивы, компоненты которых литеры, а тип индекса только диапазон 1..N, где N - целое без знака или имя целочисленной константы N>1.

TYPE string - packed array[1..N] of char;

Не существует строк, которые не содержат ни одной литеры (пустых строк) или содержат только одну.

Все свойства массивов переносятся и на массивы-строки. Но есть особенности:

1) существуют строковые константы, они могут быть присвоены в качестве значений строковым переменным, если длина отроки равна количеству литер в строке-константе.

var strl: packed array[1..5] of char;

strl:= 'Word';

2) значения строковых переменных одинаковой длины можно сравнивать, используя операции отношения;

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

7. ЗАПИСИ (RECORD).

Комбинированный тип предназначен для представления объектов, имеющих сложное, неоднородное строение. Этот тип используется при создании информационных систем.                          

ЗАПИСЬ - это сложная переменная с несколькими компонентами различных типов. Компоненты записи называются полями. Доступ к элементам осуществляется не по индексам, а по именам полей записи. Описание записи начинается со служебного слова RECORD и заканчивается словом END. Элементами записей могут быть простые типы, массивы и вложенные записи.

ПРИМЕР: type STUDENT = record

NAME: packed array[1..15] of char; DATE: record

DAY: 1..31;

MONTH: (JN, FB, MR, AP, MY, JU, JL, AU, SP.OC, NV, DC);

YEAR: integer

end;

POL: (M,W);

end;

var CC: STUDENT;

GROUP: array[1..30] of STUDENT;

Для обращения к компоненте записи используют частичную переменную в виде имя переменной типа запись и имя поля, разделенные точкой. Эти составные имена в программах используются наравне с переменными других типов. Например:

CC.NAME := 'Иванов И.И.';

Для доступа к вложенным записям к составному имени через точку  добавляется имя  соответствующего поля. Например:

CC.DATE.DAY := 25;

CC.DATE.MONTH:= FB;

CC.DATE.YEAR := 1970;

Для полных переменных одного и того же  комбинированного типа  (типа гесог~1)  существует единственная операция - присваивание.

8. МНОЖЕСТВА (SET).

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

TYPE S = SET OF BS

где: BS - базовый тип, который определяет конечное множество значений множественного типа S.

Значением множественного типа является множество. Конкретное значение задается с помощью так называемого конструктора множества, представляющего собой список элементов множества, заключенный в квадратные скобки. Любые подмножества базового множества могут являться значениями переменных множественного типа S. Множество, не содержащее элементов, называется пустым и обозначается как [].

ПРИМЕР:

type CITY = (MOSCOW, BOSTON, LONDON);

M = set of CITY;

var Pl, PP1: M;

P2: set of 'A'..'F';

P3, P4: set of 0..9;

Переменные Р1 и РР1 могут принимать 8 значений (2 в степени 3). Дчя размещения в памяти значений каждой переменной типа М достаточно трех бит. Например:

Pl:= [MOSCOW]; соответствует двоичная последовательность 100

PP1:= [BOSTON, LONDON];               -“-                                       011

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

P2:= ['A'..'F']; и P2:= ['A', B', 'C', 'F'];

Элементы множеств могут задаваться и  выражениями соответствующего базового типа. Например после следующих операторов:

K:=7;

P3:=[1, K+1]; P4:=[K-1..8];

переменная Р3 состоит из [1,8], а Р4 - [6,7,8].

9. Оператор присоединения WITH.

Приведенные выше операторы присваивания можно записать более компактно, если использовать оператор присоединения, имеющий вид:

WITH <список переменных-записей, полей> DO <оператор>

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

with CC, DATE do

begin

DAY:= 25;

MONTH:= FB;

YEAR:= 1970

end;

 Приведенный ниже фрагмент программы подсчитывает число студентов мужского пола, родившихся в 1972 году

K:=0;

for I:= 1 to 30 do

with GROUP[1], DATE do

if (YEAR = 1972) and (POL = M) then K:= K+1;

writeln ('Число мужчин = ', K:2);

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

TYPE computer = (EC1840, EC1841, IBM_XT, IBM_AT286, PS_2);

data = record

date: 1..31;

month: (JU,FE,MA,AP, );

year: integer

end;

VAR poluch: array [computer] of data;

Тогда присваивание даты поступления какого-нибудь компьютера можно задать следующим образом:

poluch[PS_2] . year:= 1994;

poluch[PS_2] . month:= se; poluch[PS 2] .dat:= 16;

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

Общая форма записи заголовка процедуры:                 

PROCEDURE <имя> (<список формальных параметров>);              

Список формальных параметров может включать в себя:              

- параметры-значения;                     

- параметры-переменные (перед ними должно стоять служебное слово VAR);         

- параметры-процедуры (перед ними должно стоять служебное слово PROCEDURE);        

- параметры-функции (перед ними должно стоять служебное слово FUNCTION).        

Важно заметить, что в списке формальных параметров можно использовать только уже определенные ранее типы или базовые. Из этого, например, следует, что нельзя написать процедуру обработки произвольного массива с заранее неизвестным числом компонент.

Для чего нужны процедуры без параметров? Например, для очистки экрана, для вывода фиксированного сообщения.         

После заголовка процедуры следуют разделы в том же порядке, что и в программе.      

Вызов и выполнение процедуры осуществляется при помощи оператора процедуры:       

<имя процедуры> (<список фактических параметров>);

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

Между формальными и фактическими параметрами должно быть полное соответствие:     

1) формальных и фактических параметров должно быть одинаковое количество;       

2) порядок следования фактических и формальных параметров должен быть один и тот же;    

3) тип каждого фактического параметра должен совпадать с типом соответствующего ему формального параметра.                      

При вызове процедуры параметры-значения передаются по значению, а параметры-переменные – по ссылке.                           

Параметры, через которые в процедуру передаются исходные данные, передаются по значению. Фактические параметры-значения могут быть выражениями. Разрешается передавать формальным параметрам-значениям вещественного типа выражения целого типа в качестве фактического параметра.         

Параметры, в которые записываются результаты работы процедуры, должны передаваться только по ссылке. Фактический параметр-переменная может быть только переменной, причем в точности того же типа, что и формальный параметр. Процедура получает непосредственный доступ к этой переменной. Присваивания значений параметру-переменной внутри процедуры одновременно выполняются и для соответствующего аргумента (фактического параметра). Не может быть фактической переменной компонента упакованного массива.      

Массивы и другие производные, сложные типы лучше передавать как параметры-переменные, по ссылке, т.к. при этом:

-   экономится память (не создается промежуточная переменная внутри процедуры);

-   не тратится время на перепись компонент из фактической переменной в промежуточную.    

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

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

11.

Описание функции в основном аналогично описанию процедуры. Однако имеются некоторые отличия. Результатом работы функции является одно скалярное значение или одно значение ссылочного типа. Тип результата задается в заголовке функции, общий вид которого:

FUNCTION <имя функции> (<список формальных пар-ов>): <тип результата>;

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

СРЕДИ ВХОДЯЩИХ В ФУНКЦИЮ ОПЕРАТОРОВ ДОЛЖЕН ОБЯЗАТЕЛЬНО ПРИСУТСТВОВАТЬ ХОТЯ БЫ ОДИН ОПЕРАТОР ПРИСВАИВАНИЯ, В ЛЕВОЙ ЧАСТИ КОТОРОГО СТОИТ ИМЯ ДАННОЙ ФУНКЦИИ. Этот оператор и определяет значение, вырабатываемое функцией.

Вызов и выполнение функции производиться при вычислении значения указателя функции, который входит в некоторое выражение. После выполнения функции, выработанный ею результат используется в качестве значения указателя функции в том выражении, в которое входит этот указатель. При вызове функции передача фактических параметров производится так же, как и при вызове процедуры.      

Пример:

Напишем нерекурсивную функцию вычисления факториала.

function FACT (N: integer): integer;

var i, k: integer;

begin

k := 1;

for i:=1 to n do k:=k*i;

FACT := k

end;

Ошибкой было бы написать раздел операторов в следующем виде:      

begin

FACT := 1;

for i:=1 to n do FACT:=FACT*i;

end;

Так как нельзя написать FACT без указания параметров в правой части оператора присваивания, поскольку FACT - это не переменная, а вызов функции.         




1. Новое поколение Моя Родина ~ Россия Компьютер заставка ~ Гимн Старшая вожатая- Дорогие ребя
2. 042
3. Выделяют 4 вида сложных предложений- сложносочинённое предложение сложноподчинённое предложение сложное
4. модуль 4 Налоги и налогообложение Вариант 16 Определить НДС подлежащий уплате в бюджет и заполнить нал
5. Память о Великой Победе в нашей семье
6. Барьер с механическим замком и плоским магнитным ключом сейчас можно встретить не чаще чем мамонта
7. Розрахунок інтегралів за допомогою методів Гауса та Чебишева
8. Таблица научные школы и их основные идеи
9. А сыныбын~ І то~санда~ы рейтингісі О~ушыны~ аты ж~ні
10. Чтобы в нем выжить необходимо постоянно меняться вместе с ним и постоянно приобретать новые знания и умения
11. Формирование общественного мнени
12. Обработка файлов и строк
13. а который является самым дорогим из деликатесных ракообразных
14. Сущность дивидендной политики её виды и принципы формирования Сущность дивидендной политики и факторы н.html
15. Новый Органон Раздел II Афоризм IV Глава первая Марко да Кола благородный венецианец почтительно
16. IV в.н.э.. Уйсуни. Обитали в Семиречье на землях тиграхауда
17. Луций Сулла также на сюжет из древнеримской истории
18. Красный треугольник г
19. Тема- ПАРАЛЛЕЛЬНЫЕ ПРЯМЫЕ БИЛЕТ 1 Ответьте письменно на вопросы выполнив соответствующий чертёж
20. Введение Расчёт доходности Расчёт дохода по акциям в зависимости от инвестиционного периода Оценк