Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функции




End.

Begin

Begin

Var

End.

Begin

...

Begin

Var

Type

...

...

Const

...

Type

...

 

Пример.

MyInt = integer;

MyDouble = double;

 


<Раздел объявления типизированных констант>:: =

const // Признак начала раздела объявления констант

<Имя константы 1>: <Тип 1> = < Константное выражение 1>;

<Имя константы 2>: <Тип 2> = < Константное выражение 2>;

 

Пример:

n: longint = 2000000000;

EulerGamma: double = 0.5772156649015329;

pi_half: double = pi / 2.0; pi_quarter: double = pi_half / 2.0;

 

Замечание. В Turbo Pascal 7.0 «типизированная константа» на деле константой не является: в тексте программы эту «константу» можно изменять. «Типизированная константа» – это, в действительности, инициализированная переменная.

Замечание. Типизированная константа не может участвовать в константном выражении.

Замечание. В Delphi типизированные константы, в отличие от констант без типа, могут принимать значения массивов, записей, процедур, указателей.

Если действует ключ компиляции {$J-} (явно или по умолчанию), значения, принятые типизированными константами при объявлении, не могут быть изменены. Напротив, ключ {$J+} дает типизированным константам возможность изменяться по ходу исполнения программы.

 

 

Замечание. В языке «C++» инициализированные переменные объявляются так:

 

<Тип 1>

<Имя 1> = <Константное выражение 1>,

<Имя 2> = <Константное выражение 2>,

<Имя N> = <Константное выражение N>;

 

<Тип 2>

<Имя N+1> = <Константное выражение N+1>,

 

Примеры.

 

int I = 2, J = –5, K = 888;

double x = 1.0, y = –2.2, z = 0.123;

char c = ‘Q’;

Цикл с постусловием

 

repeat <Операторы> until <Л.В.>

 

<Операторы> являются телом цикла.

Тело цикла выполняется по меньшей мере один раз, а затем, возможно, многократно, пока < Л.В.> есть ложь.

Если < Л.В.> есть истина при первой же оценке, то тело цикла выполняется один раз.

Если < Л.В.> есть ложь при каждой оценке, то тело цикла выполняется неограниченно много раз.

 

В случае, если тело цикла содержит несколько операторов, нет необходимости использовать операторные скобки. Слово repeat заменяет собой begin, тогда как слово until заменяет собой end.

 

 


Замечание. В языке «C++» родственная конструкция имеет вид:

 

do <Оператор> while ( <Л.В.> )

 

«Полностью» аналогичная конструкция имеет вид:

 

do <Оператор> while (! <Л.В.> )

 

Знак логической инверсии «!» необходим, если истинность <Л.В.> должна приводить к прекращению цикла.


Замечание по теме «циклы»

 

Инструкция break применяется для досрочного прекращения цикла. Равноценна оператору “ goto Metka1”, для которого “Metka1:” расположена сразу после оператора цикла.

 

Инструкция continue применяется для досрочного перехода на очередную проверку условия продолжения цикла.

Равноценна оператору “ goto Metka2”, для которого “Metka2:” расположена сразу после последнего из операторов, составляющих тело цикла.

 

 

Инструкции break и continue в Паскале заимствованы из языка «C++».


Процедуры

 

 

< Объявление процедуры >:: =

procedure <Имя процедуры>[(<Список формальных параметров)];

<Разделы объявления локальных типов, констант, переменных>

<Разделы объявления локальных процедур и функций>

begin } Раздел исполнения (тело) процедуры
<Операторы>
end;

 

<Список формальных параметров> :: =

<Элемент списка 1>; <Элемент списка 2>; ...

 


<Элемент списка> :: =

<Список имён параметров-значений>: <Тип>

или

var <Список имён параметров-переменных>: <Тип>

или

const <Список имён параметров-констант>: <Тип>

 

<Обращение к процедуре> :: =

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

 

Замечание. Фактические параметры должны быть совместимы с формальными по типам.

 


Параметр-значение сам процедуре не передаётся. Передаётся лишь его «численная» (или иная, согласно типу параметра) копия, под которую выделяется дополнительное место в оперативной памяти. Это важно иметь в виду, особенно, если параметр занимает много места в памяти.

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

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

 

Параметр-переменная именно сам передаётся процедуре. Изменения, произошедшие с таким параметром, сохраняются и по окончании работы процедуры.

 

Параметр-константа также сам передаётся процедуре. Изменения такого параметра в теле процедуры запрещены.

 


Пример.

 

program Example2;

MyInt = integer;

I: MyInt;

J: integer;

procedure P2(var M: integer);

end;

 

P2(J); // Нормально

P2(I); // Ошибка. Несоответствие типов

Пример.

 

program Example3;

I, J, K: integer;

procedure P3(L: integer; var M: integer; const N: integer);

Inc(L); // Бесполезно

Inc(M); // Полезно

(* Inc(N); *) // Ошибка

end;

 

I:= 1; J:= 1; K:= 1;

P3(I, J, K);

wri teln(‘I=’, I); // I = 1, переменная не изменилась

wri teln(‘J=’, J); // J = 2, переменная изменилась


Замечание. В языке «C++» процедур нет. Роль процедур исполняют функции, возвращающие значение void (пусто).

< Объявление функции void>:: =

void <Имя функции>([<Список формальных параметров>])

{ } Раздел исполнения (тело) функции
<Операторы>
}

 

 

<Список формальных параметров> :: =

<Элемент списка 1>; <Элемент списка 2>; ...

 

<Элемент списка> :: =

<Тип> <Имя параметра-значения>

или

const <Тип> <Имя параметра-значения>

Пример.

 

# include <vcl.h>

# include <stdio.h>

# include <conio.h>

# pragma hdrstop

int

I, J, K, Q;

 

void P3(int L; int *M; const int N; const int *P)

{

L++; // Бесполезно

*M++; // Полезно

// N++; // Ошибка

// *P++; // Ошибка

// P++; // Ошибка

}

 

int main (int argc, char* argv[])

{

I = 1; J = 1; K = 1; Q = 1;

P3(I, &J, K, &Q);

printf (“I=%d”, I); // I = 1, переменная не изменилась

printf (“J=%d”, J); // J = 2, переменная изменилась

{

 


 

 

<Объявление функции> :: =

function <Имя функции>(<Список формальных параметров>):

<Тип возвращаемого значения>;

<Разделы объявления локальных типов, констант, переменных>

<Разделы объявления локальных процедур и функций>

begin } Раздел исполнения функции
<Операторы>
end;

Среди <Операторов> должен быть хотя бы один «Оператор» вида

<Имя функции>:= <Выражение>;

или

result:= <Выражение>;

 


Пример.

 

program Example4;




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 253; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.