- •Содержание
- •Пояснительная записка
- •Раздел 1. Основы программирования
- •Тема 1.1 Понятие алгоритма
- •Понятие алгоритма. Свойства алгоритма
- •Алгоритмический язык
- •Понятие алгоритма. Свойства алгоритма
- •Хорезми
- •2. Алгоритмический язык
- •Тема 1.2 Методы описания алгоритма
- •Виды описания алгоритма
- •Тема 1.3 Типы алгоритмов
- •1.Типы алгоритмов
- •Алгоритм линейной структуры
- •3. Разветвляющийся алгоритм
- •4. Циклический алгоритм
- •5.Виды циклов
- •Цикл с предусловием (цикл пока)
- •2. Цикл с постусловием (цикл до)
- •3. Арифметический цикл (цикл для) – цикл с параметром.
- •Тема 1.4. Алгоритмический ряд.
- •Операторы цикла с условием
- •Операторы ограничения и прерывания цикла
- •Раздел 2. Решение задач на пэвм.
- •Тема 2.1. Основные этапы подготовки задачи к решению на пэвм.
- •Этапы решения задач
- •Тема 2.2 Программа на языке высокого уровня.
- •Тема 2.3. Методика Джексона
- •1. Методика Джексона
- •Шаг объект-действие
- •Раздел 3.Разработка программы на языке Турбо Паскаль
- •Тема 3.1 Основные элементы
- •История и классификация языков программирования
- •Элементы языка Турбо Паскаль
- •Тема 3.2. Типы данных
- •1. Типы данных Типы данных
- •Тема3.3 Программа на языке Турбо Паскаль
- •Структура программы на языке Паскаль
- •4. Вывод данных в тр
- •5. Ввод данных в тр
- •Тема 3.4 Массивы и их обработка
- •Строковый тип данных
- •Процедуры и функции для работы со строками
- •1. Определение массива
- •2 Описание массивов
- •3 Действия над массивами
- •4.Двумерный массив
- •6.Строковый тип данных
- •'Текстовая строка'
- •7. Процедуры и функции для работы со строками
- •Тема 3.5 Встроенные процедуры и функции
- •1. Арифметические процедуры и функции:
- •2. Функции преобразования типов:
- •3. Процедуры и функции для работы со строками:
- •Тема 3.6. Процедуры и функции пользователя
- •Отличия функции от процедур
- •3. Описание процедуры
- •4. Описание функций
- •5. Локальные и глобальные переменные.
- •6. Параметры в процедурах.
- •Тема 3.7. Записи
- •1. Структура записи в тр
- •2. Отличия записи от массива.
- •Тема 3.8 Файлы и их обработка
- •1. Понятие файла
- •2. Чтение и запись информации из файл или в файл
- •3.Доступ к файлам
- •4.Имена файлов
- •5. Связь файла с файловой переменной.
- •6. Открытие и переименование файла.
- •7. Типизированные фалы.
- •8. Нетипизированные файлы.
- •9.Текстовые файлы
- •Раздел 4. Объектно – ориентированная модель программирования
- •Тема 4.1. Основные характеристики ооп. Преимущества.
- •1. Основные характеристики ооп. Преимущества
- •Тема 4.2. Инкапсуляция.
- •Тема 4.3. Наследование.
- •Тема 4.4.Виртуальные методы и полиморфизм.
- •Перечень источников литературы для самостоятельного изучения учебной дисциплины «Основы алгоритмизации и программирования»
6. Параметры в процедурах.
Формальные и фактические параметры.
Часто бывает необходимо, чтобы процедура выполнялась с учетом значений некоторых переменных, и не всегда удобно эти переменные делать глобальными, т.е. описывать их в разделе описания переменных всей программы. В этом случае процедура может быть оформлена, как процедура с параметрами.
Пример. Написать процедуру сложения двух вещественных чисел. Нахождение суммы оформить процедурой.
На языке программирования это будет выглядеть следующим образом:
Program _;
Uses crt;
Var a,b,c: real;
Procedure sum (x,y: real; var z: real);
Begin
Z:=x+y;
End;
{основная программа}
Begin
Writeln (‘Введите два числа’);
Read (a,b);
Sum (a,b,c);
Writeln (‘сумма двух чисел=’,c);
End.
Для того, чтобы процедура могла работать с параметрами, при ее описании в заголовке процедуры поочередно перечисляются параметры и их тип:
Procedure sum (x,y: real; var z: real);
После того, как процедура была описана, она может быть вызвана. При каждом вызове процедуры sum создаются переменные x, y,z.
Механизм передачи параметров
Взаимодействие по управлению:
Программа начинает свою работу со слова begin, далее выполняются последовательно операторы. Когда основная программа доходит до процедуры Sum(a,b,c), то действие основной программы на время приостанавливается, управление передается подпрограмме. После завершения работы подпрограммы, управление опять получает основная программа.
Взаимодействие по данным:
В основной программе имеются три переменные- a, b, c - это фактические параметры, они передадут значения в подпрограмму. В процедуре у нас есть формальные параметры- x,y,z. Заметим, что перед параметром z стоит служебное слово var.
При вызове процедуры Sum(a,b,c) значение переменной а присваивается параметру х, значение переменной b присваивается параметру у. Параметры х и у могут изменять своё значение внутри процедуры, но это никак не отразится на переменных а и Ь, их значение останется таким же, каким оно было до вызова процедуры (стрелочки в одну сторону). С переменой с несколько иначе: параметру z присваивается не значение переменной с, а адрес фактического параметра, после этого параметр становится его синонимом, любые операции с формальным параметром изменяют значение фактического (стрелочки в две стороны).
В списке должны быть перечислены имена формальных параметров и их типы. Имя параметра отделяется от типа двоеточием, а параметры друг от друга — точной с запятой. Имена параметров одного типа можно объединять в подсписки, в которых имена отделяются друг от друга запятой.
Между формальными и фактическими параметрами должно быть полное ее соответствие:
• формальных и фактических параметров должно быть одинаковое количество.
• порядок следования фактических и формальных параметров должен быть один и тот же;
• тип каждого фактического параметра должен совпадать с типом соответствующего формального параметра.
Таким образом, список формальных параметров, указываемых в заголовке подпрограммы, может включать в себя
параметры-значения (передающие);
параметры-переменные (возвращающие);
Параметры-значения (передающие)
Параметры-значения используются только для передачи исходных данных из основной программы в подпрограмму (процедуру функцию), в списке формальных параметров они перечисляются через запятую с обязательным указанием их типов.
procedure Abort(M: byte); function Step(N : integer; X : real): real;
Если формальный параметр объявлен как параметр-значение, то:
1. фактическим параметром может быть произвольное выражение.
2. перед вызовом процедуры значение фактических параметров вычисляются и используются как начальные значения для формальных параметров, притом, полученный результат помещается во временную память и передается процедуре. Даже если фактический параметр - простейшее выражение в виде константы или переменной, все равно процедуре будет передана лишь копия этой константы (переменной).
3. В процессе выполнения подпрограммы формальные параметры могут изменяться, но это никак не отразится на соответствующих фактических параметрах, которые сохранят те значения, которые имели до вызова подпрограммы, так как в подпрограмме меняются не они, а их копия. Поэтому параметры-значения нельзя использовать для передачи результатов из подпрограммы в основную программу.
Параметры-переменные (возвращающие)
Параметры-переменные используются для возвращения результатов выполнения процедуры и в списке формальных параметров записываются после зарезервированного слова var с обязательным указанием типа.
Если параметр объявлен как параметр-переменная то:
1. его фактическим параметром может быть только переменная тождественного типа
2. при вызове процедуры ей передается сама переменная, а не ее копия, и изменение переменой приводит к изменению фактического параметра в вызывающей программе.
Зам! Параметры-переменные могут использоваться только в процедурах!
Задача. С помощью процедуры пользователя оформить решение квадратного уравнения.
program _;
Uses crt;
var a,b,c,xl,x2: real;
procedure korni(x,y,z:real; var ml,m2: real);
begin
ml:=(-y+sqrt(y*y-4*x*z))/2*x;
m2:=(-y-sqrt(y*y-4*x*z))/2*x;
end;
{основная программа}
begin
clrscr;
writeln(Vvod 3 chisel');
readln (a,b,c);
if b*b-4*a*c<0 then writeln('korn^ net') else
begin
komi(a,b,c,xl,x2);
writeln('korni',xl,x2) ;
end;
readln;
end.
Функция, определенная пользователем, состоит из заголовка и тела функции, заголовок содержит зарезервированное слово function, идентификатор функции, заключенный в круглые скобки, необязательный список формальных параметров и тип возвращаемого функцией значения. Тело функции представляет собой отдельный блок, по структуре аналогичный программе:
function <имя> (Формальные параметры) : <тип результата>; const ...; type var ...; begin <операторы> end;
Перечень источников:
1. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов.- М.: Мир, 1979-564 с.
2. Ахо Альфред В., Хопкрофт Джон, Ульман Джеффри Д. Структуры данных и алгоритмы: Пер. с англ.: Уч.пос.- М.: Издательский дом “Вильямс”, 2000.-342 с.