Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Локальные и глобальные параметры




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

Procedure Имя процедуры (формальные параметры);

 

Раздел описаний

Begin

 
 
Раздел операторов


 

End;

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

Вызов процедуры в использующих ее программных единицах (основной программе или подпрограммах) имеет следующий вид:

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

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

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

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

Пусть в программе две процедуры Р1 и Р2 вызываются из основной программы. В свою очередь в процедуре Р1 используется процедура Р11 и она должна быть описана в разделе описаний вызывающей ее процедуры Р1.

Раздел описаний основной программы

Procedure P1;

Раздел описаний процедуры P1

Procedure P11

Раздел описаний процедуры P11

Begin

Раздел операторов процедуры P11

End;

Begin

Раздел операторов процедуры P1

End;

Procedure P2;

Раздел описаний процедурв P2

Begin

Раздел операторов процедуры P2

End;

BEGIN

Раздел операторов основной программы

END.

Имена, объявленные в разделе описаний основной программы, действуют в разделе операторов основной программы и в любой подпрограмме. Эти имена называются глобальными. Имена, объявленные в какой-либо подпрограмме, действуют в этой подпрограмме и в любой, объявленной в ней процедуре или функции. Такие имена называются локальными. Они недоступны для операторов основной программы. Область действия меток переходов в пределах каждой программной единицы своя. Нельзя перейти по оператору GOTO из одной процедуру в другую.

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

Даны два массива М1 и М2, содержащие К1 и К2 целых чисел, соответственно. Определить максимальные числа в каждом из этих массивов, сравнить найденные значения между собой и вывести большее из них на экран.

Схема алгоритма

       
 
   
 

 

 


нет

 
 

 


да

       
 
   
 

 


Выделим глобальные переменные, которые используются в главной программе: М1, М2, К1, К2, Мах1, Мах2.

 

Текст программы

Uses crt;

Type Tmas=array[1..1000] of integer;

Var M1, M2: Tmas;

K1, K2, Max1, Max2: integer;

{ Процедура ввода длины массива и самого массива }

Procedure Vvod(Var K:integer; Var M:Tmas);

Var i:integer;

Begin

Write(' Введите длину массива');

Readln(K);

Writeln(' Введите элементы массива целых чисел, через пробел');

For i:=1 to K do

Read(M[i]); readln;

End; { конец процедуры ввода}

{ Процедура поиска максимального элемента в массиве}

Procedure Poisk_max(K:integer; M:Tmas; Var Max:integer);

Var i:integer;

Begin

Max:=M[1]; { За максимум принимаем первый элемент}

For i:=2 to K do

If M[i]>Max then Max:=M[i]; {Запоминаем новый максимум}

End;

{ Начало основной программы}

Begin

Clrscr;

Writeln(' Ввод первого массива');

Vvod(K1, M1);

Writeln(' Ввод второго массива');

Vvod(K2,M2);

Poisk_max(K1, M1, Max1);

Poisk_max(K2, M2, Max2);

If Max1>Max2 then writeln(' Max1 больше и оно = ',Max1)

Else writeln(' Max2 больше и оно = ',Max2);

Readkey; { Останов для просмотра результатов}

End.

 

 

Лабораторная работа №8

 

Цель работы:

 

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

 

Типовое задание

 

Для задания из лабораторной работы №7 разработать программу с использованием процедур: оформить в виде процедур каждый из пунктов задания.





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


Дата добавления: 2016-11-18; Мы поможем в написании ваших работ!; просмотров: 674 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Свобода ничего не стоит, если она не включает в себя свободу ошибаться. © Махатма Ганди
==> читать все изречения...

2382 - | 2132 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.