Процедури, підпрограми та параметри, Детальна інформація
Процедури, підпрограми та параметри
Реферат на тему:
Процедури, підпрограми та параметри
Розглянемо задачу: довільні значення трьох змінних a, b, c переставити за необхідності так, щоб вони були упорядковані за неспаданням, тобто щоб мали місце нерівності a\xF0A3 b\xF0A3 c. Алгоритм розв'язання цієї задачі простий:
якщо a>b, то обміняти значення змінних a і b;
{гарантовано, що a\xF0A3 b}
якщо b>c, то обміняти значення змінних b і c;
{гарантовано, що b\xF0A3 c і a\xF0A3 c; але нерівність a\xF0A3 b не гарантована, тому:}
якщо a>b, то обміняти значення змінних a і b.
Обмін значень двох змінних, наприклад, a і b, задається трьома операторами з допоміжною змінною: t:=a; a:=b; b:=t. Мовою Паскаль алгоритм записується так:
program sort3(input, output);
var a, b, c, t : integer;
begin
writeln('задайте три цілих'); readln(a, b, c);
if a>b then begin t:=a; a:=b; b:=t end;
if b>c then begin t:=b; b:=c; c:=t end;
if a>b then begin t:=a; a:=b; b:=t end;
writeln('упорядкування: ', a, ' ', b, ' ', c)
end.
Проте три майже однакові складені оператори, що задають ті самі дії, тільки з різними змінними – це нудно. Аналогічно функціям,
можна один раз описати обмін значень двох змінних, представлених параметрами, дати ім'я цьому опису, а потім тільки позначати його, тобто вказувати ім'я опису й змінні, чиї значення повинні обмінятися.
На відміну від функцій, при обміні відбувається не обчислення якогось одного значення, а змінюється стан пам'яті програми (недарма обмін заданий складеним оператором). Тому такий опис оформляється й використовується інакше. Опис обміну задається процедурою, а її виклик являє собою окремий оператор.
Процедура має загальний вигляд
procedure ім'я(означення параметрів);
означення імен
begin
послідовність операторів
end;
Процедура, як і функція, є означенням імені і записується серед означень програми.
На відміну від функції, в її заголовку немає імені типу для значень, породжуваних у результаті виклику, тому що ніякі значення не породжуються. За цією ж причиною в тілі процедури не може бути операторів присвоювання з її ім'ям у лівій частині. Виклик процедури складається з імені й аргументів у дужках і записується як окремий оператор, наприклад, readln(x, y).
Отже, напишемо інший варіант програми упорядкування трьох значень:
Процедури, підпрограми та параметри
Розглянемо задачу: довільні значення трьох змінних a, b, c переставити за необхідності так, щоб вони були упорядковані за неспаданням, тобто щоб мали місце нерівності a\xF0A3 b\xF0A3 c. Алгоритм розв'язання цієї задачі простий:
якщо a>b, то обміняти значення змінних a і b;
{гарантовано, що a\xF0A3 b}
якщо b>c, то обміняти значення змінних b і c;
{гарантовано, що b\xF0A3 c і a\xF0A3 c; але нерівність a\xF0A3 b не гарантована, тому:}
якщо a>b, то обміняти значення змінних a і b.
Обмін значень двох змінних, наприклад, a і b, задається трьома операторами з допоміжною змінною: t:=a; a:=b; b:=t. Мовою Паскаль алгоритм записується так:
program sort3(input, output);
var a, b, c, t : integer;
begin
writeln('задайте три цілих'); readln(a, b, c);
if a>b then begin t:=a; a:=b; b:=t end;
if b>c then begin t:=b; b:=c; c:=t end;
if a>b then begin t:=a; a:=b; b:=t end;
writeln('упорядкування: ', a, ' ', b, ' ', c)
end.
Проте три майже однакові складені оператори, що задають ті самі дії, тільки з різними змінними – це нудно. Аналогічно функціям,
можна один раз описати обмін значень двох змінних, представлених параметрами, дати ім'я цьому опису, а потім тільки позначати його, тобто вказувати ім'я опису й змінні, чиї значення повинні обмінятися.
На відміну від функцій, при обміні відбувається не обчислення якогось одного значення, а змінюється стан пам'яті програми (недарма обмін заданий складеним оператором). Тому такий опис оформляється й використовується інакше. Опис обміну задається процедурою, а її виклик являє собою окремий оператор.
Процедура має загальний вигляд
procedure ім'я(означення параметрів);
означення імен
begin
послідовність операторів
end;
Процедура, як і функція, є означенням імені і записується серед означень програми.
На відміну від функції, в її заголовку немає імені типу для значень, породжуваних у результаті виклику, тому що ніякі значення не породжуються. За цією ж причиною в тілі процедури не може бути операторів присвоювання з її ім'ям у лівій частині. Виклик процедури складається з імені й аргументів у дужках і записується як окремий оператор, наприклад, readln(x, y).
Отже, напишемо інший варіант програми упорядкування трьох значень:
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021