русс | укр

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

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

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

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


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

О взаимодействии программы и процедуры.


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


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

Begin Procedure Sum (х,у: Integer; Var z: Integer);

... Begin

ReadLn (a,b); z:=x+y;

Sum (a, b, c); End;

WriteLn (c) ;

End

Линейный ход выполнения основной программы становится нелинейным — управление вычислительным процессом пере­дается на участок программного кода, занимаемый процеду­рой. После выполнения процедуры осуществляется возврат на оператор основной программы, следующий за вызовом проце­дуры (End; в процедуре очень содержательный оператор, сверх­содержательный — это «стрелка», возврат управления в логи­ку, из которой вызывается процедура). Мы не рассматриваем вопросы о том, как это выполняется. Например, как осуществ­ляется возврат на оператор WriteLn(c). Наше объяснение идет на уровне констатации фактов, и только. Итак, взаимодействие программы и процедуры по управлению мы обозначили. Перей­дем к взаимодействию по данных. В программе определены пе­ременные а, b, с. В процедуре — х, у, z её параметры, но они яв­ляются переменными процедуры. Причем х, у описаны без идентификатора Var, а c — с идентификатором Var. Поясним разницу.

При вызове процедуры Sum(a,b,c) из основной программы значение переменной а присваивается переменной х процедуры Sum, а значение переменной b становится значением перемен­ной у, и все. Стрелочка на рисунке в одну сторону. Чуть слож­нее с переменными с и z . Образно выражаясь, процедура Sum знает о том, где в памяти компьютера находится переменная с, и она знает, что при изменении значения переменной z необходимо произ­вести соответствующее изменение значения переменной с. Это обратная связь по данным от процедуры к основной программе. На такой тип связи указывает идентификатор Var в описании параметров процедуры.



Перейдем к ряду стандартных определений. В любой про­грамме все переменные делятся на глобальные и локальные. В нашем фрагменте программы переменные а, b, с — глобальные, а x, у, zлокальные. Глобальные переменные — это перемен­ные из раздела описаний основной части программы, а локаль­ные — из раздела описаний процедур и функций. Если разница только в месте описания переменных, то «стоит ли шкурка вы­делки»? Добавим ещё одно предложение. Локальные перемен­ные существуют только в течение времени работы процедуры, определяются (создаются) при её вызове и исчезают после за­вершении работы процедуры (после выполнения «сверхсодер­жательного» оператора End;). Таким образом, если бы в основ­ной программе было три фрагмента с вызовом процедуры Sum (желательно с различными параметрами), то для программного кода процедуры Sum три раза выделялось место в оперативной памяти, соответственно, и для переменных х, у, z и три раза

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

Параметры. При описании процедуры указывается список формальных параметров. Каждый параметр является локаль­ным по отношению к описываемой процедуре, к нему можно обращаться только в пределах данной процедуры (в нашем при­мере х, у, z — формальные параметры). Фактические парамет­ры — это параметры, которые передаются процедуре при обра­щении к ней (а, b, с — фактические параметры). Число и тип формальных и фактических параметров должны совпадать с точностью до их следования.

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

Параметры-переменные. Другими словами, передача пара­метров по ссылке. Это те формальные параметры, перед кото­рыми стоит идентификатор Var. Передается адрес фактическо­го параметра (обязательно переменной), после этого формальный параметр становится его синонимом. Любые операции с форма­льным параметром выполняются непосредственно над фактиче­ским параметром.

Договоримся о том, как мы будем стараться использовать процедуры, может быть, в ущерб эффективности программ, на­пример, с точки зрения количества переменных и т. д. Каждая процедура должна иметь одну точку входа и одну точку выхо­да, использование глобальных переменных в процедуре должно быть минимально, взаимодействие вызывающей логики с про­цедурой должно осуществляться (по возможности) только через параметры. Зачем нам эти оговорки? Мы осваиваем структур­ную технологию разработки программ, при этом на каждом этапе текущая задача разбивается на ряд подзадач, определяя тем самым некоторое количество отдельных подпрограмм (под­программа — это повторяющаяся группа операторов, оформ­ленная в виде самостоятельной программной единицы). При этом мы стараемся структурировать задачу не только по управлению, но и по данным, используя при этом весьма ограничен­ный набор инструментов (параметры-значения, параметры-ссыл­ки). Концепция процедур и функций — один из механизмов второго витка развития технологий программирования, а имен­но, структурного проектирования.

Описание функции.Функция выглядит почти так же, как и процедура. Почти единственное отличие в том, что заголовок функции начинается с ключевого слова Function и кончается типом возвращаемого данной функцией значения.

Function <имя функции> [(список параметров)] : <тип результата>;

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



<== предыдущая лекция | следующая лекция ==>
Практическая работа №14. | Экспериментальный раздел работы


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


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

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

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


 


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

 
 

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

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