русс | укр

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

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

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

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


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

Параметры


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


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

Параметры могут иметь любой тип, включая структурированный. В Pascal различают два метода передачи параметров:

· по значению;

· по ссылкам.

 

9.3.1 Параметры – значения

Изменение формальных параметров не влечет за собойизменения фактических параметров. Это основная причина использования таких параметров, так как позволяет устранить несанкционированное изменение собственного параметра программы. Однако передать информацию из подпрограммы в основную программу с помощью таких параметров также нельзя. Параметр-значение указывается в заголовке подпрограммы своим именем и через двоеточие – типом.

Procedure Konc(A,B,C:Integer;D:Real);

Function Doc(S1,S2:Real):Real;

Запись

Procedure Okl((M:array[1..12] Of Integer); - ошибочна

Необходимо тип переменной определить ранее в разделе описания типов блока:

Type Massiv=array[1..12] Of Integer;

Procedure Okl((M:Massiv);

Пример. Функция вычисления максимального элемента в массиве.

Type

Tarr=Array[1..100] Of Integer;

Var

Massiv:Tarr;

Maxim:Integer;

Function Max(Mas:Tarr;N:Byte):Integer;

{Определение максимального элемента}

Var

Ma:Integer;

I:Byte;

Begin

Ma:=Mas[1];

For I:=2 To N Do

If Ma<Mas[I] Then Ma:=Mas[I];

Max:=Ma;

End;

Теперь, например, для определения максимального числа из первых пяти чисел массива Massiv и записи его в переменную Maxim можно записать оператор:

Maxim:=Max(Massiv,5);

 

9.3.2 Параметры - переменные

Любое изменение формального параметра означает изменение фактического параметра. Для описания параметров-переменных служит слово Var. Действие слова Var распространяется до ближайшей точки с запятой, т.е. в пределах одной группы.



Procedure MaxMin(A:Tarr; Var Max,Min: Real; C:Integer);

Max, Min – параметры-переменные, A,C – параметры-значения.

Пример. Функция вычисления максимального элемента в массиве.

Function Max(Var Mas:Tarr;N:Byte):Integer;

{Определение максимального элемента}

Var

Ma:Integer;

I:Byte;

Begin

Ma:=Mas[1];

For I:=2 To N Do

If Ma<Mas[I] Then Ma:=Mas[I];

Max:=Ma;

End;

При такой передаче параметра, возможно его нежелательное изменение.

Демонстрационный пример.

Var

A, B: Byte;

K, N: Integer;

I1,I2,J1,J2:Integer;

Procedure WW1;

Begin

A:=A+4; {Глобальная переменная}

End;

Procedure WW2(Var R,T:integer); {Процедура передает в программу значения R,T}

Begin {R,T- параметры-переменные}

R:=555;

T:=666;

End;

Procedure WW3(R1,R2:integer; Var X1,X2:Integer); {R1,R2-принимает}

Begin {X1,X2-передает}

X1:=R1+R2;

X2:=R1*R2;

End;

Begin

A:=9;

WriteLn(A:5);

WW1;

WriteLn(A:5);

WW2(K,N); {в K,N содержатся результаты работы процедуры WW2}

WriteLn(K:5,N:5);

J1:=23; J2:=178;

WW3(I1,I2,J1,J2); {Значения I1,I2 передаются в процедуру}

WriteLn(J1:5,J2:5); {J1,J2 – принимаются из процедуры}

End.

 

Задания для самостоятельной работы

1. Вычислить арифметическое выражение Y=A*B-tgA . Использовать функцию для:

· вычисления функции tg;

· умножения двух чисел, используя только операцию сложения.

2. Длины отрезков заданы координатами концов. Найти самый длинный отрезок. Для нахождения длины отрезка использовать функцию.

3. Дан массив целых чисел, состоящий из 10 элементов. Заполнить его с клавиатуры. Найти:

· сумму отрицательных элементов. Сумму отрицательных элементов передать в основную программу, используя параметр-переменную.

· количество тех элементов, значения которых положительны и не превосходят заданного числа А. Значение А задать в основной программе, в процедуру передать это значение;

· номер последней пары соседних элементов с разными знаками.

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

4. Дан массив целых чисел, состоящий из 10 элементов. Заполнить его с клавиатуры. Найти:

· сумму элементов, имеющих нечетное значение;

· вывести индексы тех элементов, значения которых больше заданного числа А. Значение А задать в основной программе, в процедуру передать это значение;

· количество положительных элементов, кратных К. (К вводится с клавиатуры). Количество положительных элементов передать в основную программу, используя параметр-переменную.

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

5. Дано n целых чисел. Найти среди них число, у которого приведенная ниже характеристика имеет максимальное значение:

· сумма цифр;

· первая цифра;

· количество делителей;

· сумма всех делителей.

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

6. Дано n целых чисел. Написать программу подсчета чисел, в записи которых нет цифры 8. при этом требуется использовать функцию вида

Function Yes8(x:LongInt):Boolean;

Ответ: 729.

7. Составить программу перестановки значений переменных a, b, c в порядке возрастания, т.е. так, чтобы a<=b<=c.



<== предыдущая лекция | следующая лекция ==>
Функции пользователя | Ошибки открытия файла


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


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

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

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


 


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

 
 

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

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