русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

П Р О Ц Е Д У Р Ы


Дата добавления: 2014-11-27; просмотров: 649; Нарушение авторских прав


 

Программа может содержать одинаковые фрагменты. Такие фрагменты целесообразно оформить в виде подпрограммы, которая должна несколько раз выполняться.

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

 

Формирование матрицы А
Вычисление первой нормы А1
Преобразование матрицы А
Вычисление первой нормы А1
Преобразование матрицы А
Вычисление первой нормы А1

 

Если оформить вычисление первой нормы A1 в виде подпрограммы, то структура программы станет следующей:

 
 

 

 


К подпрограмме осуществляется три обращения из основной программы.

Использование подпрограмм сокращает общий объем программы и улучшает ее понимание.

 

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

 

Исходная большая программа :

 

Ф р а г м е н т 1
Ф р а г м е н т 2
Ф р а г м е н т 3
Ф р а г м е н т 4

 

Программа с использованием подпрограмм:

 

 
 

 

 


Подпрограммы на Паскале реализуются в виде процедур и функций. Функция отличается от процедуры тем, что в ней в качестве выходного результата может быть только одно простое значение (аналогично функциям sin(x), max(a,b,c) и т.п.). Процедура в качестве выходного результата может выдавать одно или больше значений (например, массив); в частном случае процедура может не иметь ни одного выходного значения.

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



 

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

 

 
 

 


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

 
 

 


Примечание. Фактические параметры часто называют также аргументами.

 

Наиболее простой является процедура без параметров.

 

Пример 1. B массиве присвоить максимальному элементу нулевое значение и определить, как изменилось при этом среднее арифметическое значение элементов массива.

 

ProgramMiddle1;

Const Nmax = 1000;

Type Ar = array[1..Nmax] of real;

Vari,imax : integer;

S,S1,S2,dS,Xmax : real;

X : Ar;

{ ------------------------------ }

Procedure MiddleAr1;

Vari : integer; { Определение среднего }

Begin{ арифметического значения }

S:=0; { элементов массива Х }

For i:=1 to n do

S:=S+x[i];

S:=S/n;

End { MiddleAr1 };

{ ------------------------------ }

Begin

Ввод и печать n, X

MiddleAr1; S1:=S;

Xmax:=x[1]; imax:=1; { Определение место- }

For i:=2 to n do{ положения (индекса) }

If x[i]>Xmax then{ максимального элемента }

Begin

Xmax:=x[i]; imax:=i

End;

x[imax]:=0;

MiddleAr1; S2:=S;

dS:=S2-S1;

Печать S1, S2, dS

End.

 

В данном случае блок процедуры имеет раздел описания переменных и раздел операторов. В разделе Var процедуры MiddleAr1 повторно описывается переменная i, так как эта переменная используется в блоке процедуры как параметр цикла (как известно, параметр цикла должен быть описан в том же блоке, в котором расположен оператор For). Обращение к процедуре осуществляется путем указания имени этой процедуры в основной программе.

 

Пример 2.

Определить среднее арифметическое значение элементов массивов , и .

 

ProgramMiddle2;

Const Nmax = 1000;

Type Ar = array[1..Nmax] ofreal;

Var i,n : integer;

S,Sx,Sy,Sz : real;

X,Y,Z,Buf : Ar;

{ ------------------------- }

ProcedureMiddleAr2;

Vari : integer; { Определение среднего }

Begin{ арифметического }

S:=0; { значения элементов }

Fori:=1 to n do{ буферного массива Buf }

S:=S+Buf[i];

S:=S/n;

End{ MiddleAr2 };

{ ------------------------- }

Begin

Ввод и печать n, X

Fori:=1 to n do

Begin

y[i]:=((2*x[i]+3.5)*x[i]-1)*x[i]+1;

Ify[i]>0 then

z[i]:=x[i]+2*y[i]

Else

z[i]:=x[i]+y[i];

End;

Buf:=X; MiddleAr2; Sx:=S;

Buf:=Y; MiddleAr2; Sy:=S;

Buf:=Z; MiddleAr2; Sz:=S;

Печать Sx,Sy,Sz

End.

 

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

Использование в программе Middle2 буферного массива Buf приводит к дополнительным затратам памяти на размещение этого массива, а также к дополнительным затратам машинного времени на пересылку массивов X, Y, Z в массив Buf. Чтобы исключить такие непроизводительные затраты, необходимо использовать аппарат формальных и фактических параметров.

 

 



<== предыдущая лекция | следующая лекция ==>
П Р И М Е Р Ы О Б Р А Б О Т КИ М А Т Р И Ц | О Б Л А С Т Ь Д Е Й С Т В И Я И М Е Н И М Е Т О К


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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