Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функции. Формальные параметры. Структура функций. Роль описателя var. Обращение к функции. Присваивание имени функции значения в теле функции.↑ ⇐ ПредыдущаяСтр 5 из 5 Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Раздел процедур и функций.
Сокращения: СФП – список формальных параметров; ТРРФ - тип результата расчета функции. Процедура начинается с заголовка процедуры: procedure имя(СФП типа1: тип1; СФП типа2:тип2;...; СФП типа n: тип n); Функция начинается с заголовка функции: function имя(СФП типа1: тип1;...; СФП типа n: тип n):ТРРФ; Формальные параметры называются так потому, что они служат для записи алгоритма, не занимая места в памяти компьютера. А фактические параметры занимают место в памяти ПК, используются для расчета и записываются при обращении к процедуре или функции. Формальные параметры могут вызываться по имени или по значению. При вызове по имени перед формальным параметром ставится слово var. Будем считать, что для массивов это слово необходимо всегда. Типы в наборе формальных параметров отделяются точкой с запятой, а внутри списка данного типа используется запятая. Объявления в процедурах и функциях такие же, как и в основной программе. Тела процедур и функций заключаются в операторные скобки Если имеем дело с функцией, то ее имени внутри функции обязательно присваивается значение. Устанавливается соответствие между порядком и количеством формальных и фактических параметров, причем параметры формальные и фактические стоящие на одинаковом удалении от начала должны быть одного типа. Формальный и соответствующий ему фактический параметр должны ссылаться на один и тот же тип в разделе типов. Формальные параметры должны всегда ссылаться на тип, либо стандартный Extended, integer, boolean и т. п., либо сконструированный нами в разделе типов основной программы. Отсюда и следует, что без раздела типов в серьезной программе, как правило, не обойтись. Формальным параметром служит либо простая, либо агрегатная переменная. Если формальный параметр - простая переменная со словом var, то фактическим параметром может быть только переменная того же типа, если формальный параметр - простая переменная без слова var, то фактическим параметром может любое выражение того же типа. Если формальный параметр - агрегатная переменная, то будем его писать со словом var всегда и соответствующий ему фактический параметр - агрегатная переменная, ссылающаяся на тот же тип, что и соответствующий формальный параметр. Обращение к процедуре находится в основной программе: имя (список фактических параметров); Результаты работы процедуры могут находиться среди этих параметров. Если результатом работы процедуры является переменная, то в списке формальных параметров перед ней необходимо поставить слово var. Обращение к функции содержится внутри некоторого выражения и имеет вид: переменная: =…имя функции (список фактических параметров)….
Многоточие предполагает любую последовательность элементов, образующих выражение. Выражение может быть арифметическим, логическим или пр.
6.5. Программа с использованием процедуры.
Сложение двух векторов. Исходные данные: n - размерность векторов. A, B - складываемые векторы. Результат: C- вектор суммы(Ci=Ai+Bi, i=1,…,n) Таблица 6.1. Соответствие формальных и фактических параметров.
Форма программы и ее код приводится ниже.
Рис.6.3. Вид формы.
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls;
type TForm1 = class(TForm) Label1: TLabel; Button1: TButton; BitBtn1: TBitBtn; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); Const nmax=10;
Type vect=array[1..nmax] of Extended; Var n,i:integer;A,B,C:vect; F1,F2:TextFile; procedure summa(var P,Q,R:vect;n:integer);//процедура сложения векторов var i:integer; begin for i:=1 to n do R[i]:=P[i]+Q[i] end;
begin AssignFile(F1,'d:\delph\sumvect\sumvect.txt');reset(F1); AssignFile(F2,'d:\delph\sumvect\sumvect.res');rewrite(F2); read(F1,n);//ввод размерностей векторов for i:=1 to n do read(F1,A[i]);//ввод векторa А for i:=1 to n do read(F1,B[i]);//ввод вектора В writeln(F2,'Размерность векторов n=', n); writeln(F2,'Вектор А'); for i:=1 to n do write(F2,A[i]:7:3);writeln(F2); writeln(F2,'Вектор B'); for i:=1 to n do write(F2,B[i]:7:3);writeln(F2); summa(A,B,C,n);//обращение к процедуре writeln(F2,'Сумма векторов'); for i:=1 to n do write(F2,C[i]:7:3); CloseFile(F1); CloseFile(F2); Label1.Caption:='конец';exit;//окончание расчета end; end.
Исходные данные размещаются в файле sumvect.txt, результаты помещены в файле sumvect.res. Пример исходных данных:
1 -5.1 2 3.2 4 1 -2 3 5.7 3 4.2 1 -6
Результаты расчетов:
Размерность векторов n=6 Вектор А 1.000 -5.100 2.000 3.200 4.000 1.000 Вектор B -2.000 3.000 5.700 3.000 4.200 1.000 Сумма векторов -1.000 -2.100 7.700 6.200 8.200 2.000 Структура полной подпрограммы, создаваемой в процедуре режима OnClick. Итак, такая подпрограмма в общем случае имеет вид:
label набор меток; const набор констант; type набор типов; var набор переменных; раздел процедур и функций; begin тело подпрограммы end. Модули. Структура модуля. Понятие модуля. Модуль - автономная программная единица, имеющая следующую структуру: UNIT имя;{unit-модуль} INTERFACE интерфейсная часть IMPLEMENTATION исполняемая часть [ BEGIN инициирующая часть] end. Модуль содержится в файле, имя которого совпадает с именем модуля, но содержит расширение pas. Имя модуля – идентификатор, содержащий не более 63 значащих символов. Интерфейсная часть{INTERFACE} содержит объявления всех глобальных объектов, доступных этому модулю и всем остальным, с ним связанным, и может содержать разделы типов, констант, переменных, а также набор процедур и функций в краткой форме. В разделе процедур и функций здесь указываются заголовки и только, находящихся в этом модуле процедур и функций. Исполняемая часть{IMPLEMENTATION} содержит тела процедур и функций модуля, причем заголовки совпадают с заголовками интерфейсной части и порядок следования совпадает с порядком следования заголовков в интерфейсной части. В заголовках процедур и функций этой части может отсутствовать список формальных параметров. Исполняемая часть может быть пустой, но наличие слова IMPLEMENTATION обязательно. Инициирующая часть может содержать открытие файлов и другие действия. Эта часть может вообще отсутствовать вместе со словом BEGIN (см. квадратные скобки). Заканчивается модуль, как и основная программа, ключевым словом End с точкой. Каждый модуль компилируется отдельно и в результате создается файл имеющий имя модуля. Рассмотрим модуль, реализующий арифметические действия над комплексными числами.
|
|||||||||||||||||||
Последнее изменение этой страницы: 2016-07-11; просмотров: 413; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.86.74 (0.006 с.) |