Как составить алгоритм функции по информатике

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

Рассмотрим три вспомогательных алгоритма на языке программирования Pascal:

  • функции;
  • процедуры;
  • рекурсии.

Функция — это подпрограмма, в результате работы которой выводится одна переменная (число или текст).

Обрати внимание!

Общий вид описания функции:

function F (x: тип): тип функции;

begin

        F: (=) выражение;

end;

Функция описывается до начала описания основной программы.

Напишем программу, которая будет выбирать из двух введённых с клавиатуры значений наибольшее.

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

Screenshot18.png

Напишем программу, которая по координатам точек будет вычислять длины сторон квадрата. Найдём периметр квадрата.

Описание функции. Здесь мы указали координаты для первой и второй точек одной стороны, тип функции real, т. к. в формуле используется квадратный корень и значения могут получаться нецелыми.

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

Далее в теле основной программы мы задаём координаты для каждой стороны квадрата совместно с функцией. Вычисляем периметр.

Скриншот 19-10-2021 102128.jpg

Подумай! Как нужно изменить последнюю программу, чтобы она стала универсальной для любого квадрата? Попробуй написать такую программу.

На занятии будет объяснен алгоритм работы с функциями на Паскале, рассмотрены стандартные функции. Будут разобраны примеры использования функций с параметрами и без параметров.

Содержание:

  • Стандартные функции языка Pascal
    • Арифметические функции (основные)
    • Функции преобразования типов
  • Пользовательские функции Pascal
    • Самостоятельная работа

Арифметические функции (основные)

Функция Назначение Тип результата
abs (x) абсолютное значение аргумента совпадает с типом аргумента
sqr (x) квадрат аргумента совпадает с типом аргумента
sqrt (x) квадратный корень аргумента вещественный
cos (x) косинус аргумента вещественный
sin (x) синус аргумента вещественный
arctan (x) арктангенс аргумента вещественный
exp (x) ex вещественный
ln (x) натуральный логарифм вещественный
int (x) целая часть числа вещественный
frac (x) дробная часть числа вещественный

Функции преобразования типов

round (x) — округляет вещественное число до ближайшего целого.
trunc (x) — выдает целую часть вещественного числа, отбрасывая дробную.

Пользовательские функции Pascal

Функция в Паскале — это подпрограмма, которая в отличие от процедуры всегда возвращает какое-либо значение. Для этого в теле функции её имени присваивается вычисленное значение — результат, который она возвращает.

  • Функция – это подпрограмма, результатом работы которой является определенное значение.
  • Функции используются для:
    • выполнения одинаковых расчетов в различных местах программы;
    • для создания общедоступных библиотек функций.
  • Синтаксис:
  • заголовок начинается служебным словом function
  • 1

  • описание формальных параметров (тех, значения которых передаются из основной программы в функцию):
  • формальные параметры в паскале

  • параметры-переменные — параметры, значения которых становятся доступны и в основной программе (возвращаются в программу)
  • параметры-переменные в паскале

  • тип возвращаемого функцией результата описывается в конце заголовка функции через двоеточие:
  • тип функции

  • Вызывается функция в теле основной программы, только если ее имя фигурирует в каком-либо выражении. В отличие от процедуры, которая вызывается отдельно.
  • Внутри функции можно объявлять и использовать локальные переменные:
  • локальные переменные в функции

  • значение, которое является результатом, записывается в переменную, имя которой совпадает с названием функции; объявлять ее НЕ НАДО:
  • результат функции

Рассмотрим синтаксис:

var;{объявление глобальных переменных}
 
function название (параметры): тип результата;
var; {объявление локальных переменных}
begin{тело функции}
название:=результат; {результат вычислений всегда присваивается функции}
end;
 
begin{тело основной программы}
end.

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

Решение:

пример функции в паскале

Вызов функции:
вызов функции в паскале


PascalABC.NET:

Правила описания функции:

1. Мы должны написать тип значения, которое возвращает функция.
2. Переменная Result хранит результат функции.

function f(x: real): real;
begin
  Result := x * x + 1;
end;

Вызов функции стоит в выражении:

// основная программа
begin
 var x := 5;
 var r := Sqrt(x) + f(x);
end.

Задача function 0. Написать функцию, которая вычисляет наибольшее из заданных трех значений. Функция с тремя параметрами.

✍ Пример результата:

Введите три числа:
4 1 6
наибольшее = 6

Пример: Написать функцию на Паскале, которая складывает два любых числа

✍ Пример результата:

первое число:
2
второе число:
5
сумма = 7

Функция суммы двух чисел на паскале

✍ Решение:

1
2
3
4
5
6
7
8
9
10
11
12
var x,y:integer;
function f(a,b:integer):integer;
begin
  f:= a+b;
end;
begin
 writeln('первое число:');
 readln(x);
 writeln('второе число:');
 readln(y);
 writeln('сумма= ',f(x,y));
end.

В рассмотренном примере использования функции в Паскале: функция f имеет два целочисленных параметра — a и b. Через двоеточие в заголовке функции (строка 2) указано, что значение, вычисляемое функцией, будет тоже целочисленным. В теле функции вычисляемая сумма присваивается имени функции. А в основной программе вызов функции осуществляется в качестве параметра оператора writeln.

Таким образом, главное отличие функции от процедуры — это то, что функция производит какие-либо вычисления и выдает в программу результат в виде значения, в то время как процедура чаще всего выполняет какие-либо действия с результатом, например, выводит его на экран (функция этого делать не может).

Задача function 1. При помощи функции найти среднее арифметическое двух чисел (функция с двумя параметрами).

✍ Пример результата:

Введите два числа:
4 7
среднее арифметическое = 5,5

Пример: Составить программу с функцией для вычисления факториала числа.

Показать решение:

Pascal PascalABC.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var x:integer;
function fact(a:integer):integer;
var i: integer;
begin
  if a<=1 then begin 
        fact:=1;exit;
  end;
  result:=2;
  for i:=3 to a do
     result:=result*i;
  fact:=result;
end;
begin
 writeln('число:');
 readln(x);
 writeln(fact(x));
end.
1
2
3
4
5
6
7
8
9
10
function Fact(n: integer): integer;
begin
  Result := 1;
  for var i:=1 to n do
    Result *= i
end;
begin
 var x:= readInteger('число:');
 println(x,'! = ',fact(x));
end.

В рассмотренном примере функция имеет один параметр — a. Вычисляемое функцией значение имеет целочисленный тип, это указывается в заголовке функции (строка 2). В теле функции в цикле for вычисляется факториал числа. Результат вычисления присваивается имени функции (строка 9). В теле программы для вывода результата функции она вызывается в операторе writeln (строка 14), который и выводит результат на экран.


PascalABC.NET:

Короткое определение функции:

function Sq(x: real) := x * x + 1;
 
begin
  var x := 10;
  var r := Sq(x) + Sq(2)
end.

Короткая запись

Если тело функции состоит только из одного оператора, PascalABC.NET позволяет использовать при описании сокращенный синтаксис, без ключевых слов begin и end:

1
2
3
4
5
6
##
function SumXY(x,y: real) := x + y;
// основная программа
begin
  Print (SumXY(9,2)); //11
end;

Задача function 2. Составить функцию, которая определяет сумму всех чисел от 1 до N и привести пример ее использования. N — параметр функции.

Пример:

Введите число:
100
сумма = 5050

Задача function 3. Составить функцию, которая определяет, сколько зерен попросил положить на N-ую клетку изобретатель шахмат (на 1-ую – 1 зерно, на 2-ую – 2 зерна (в два раза больше предыдущего результата), на 3-ю – 4 зерна, на 4-ю – 8 зерен…). N — параметр функции.

Пример:

Введите номер клетки:
28
На 28-ой клетке 134217728 зерен.

Задача function 4. Описать функцию IsDigit(A), которая возвращает истину, если целое число A представляет цифру (то есть A лежит в диапазоне 0–9). В основной программе вывести значение этой функции для N (N ≥ 0) данных чисел.

  
Пример:

Введите N:
3
Введите число:
2 >>> true
Введите число:
34 >>> false
Введите число:
4 >>> true

Задача function 5. Вычисление степени числа с помощью функции на языке Паскаль.

 
Пример:

Введите число:
3
Введите степень числа:
2
Результат 3^2 = 9

Задача function 6. Описать функцию Calc(A, B, Operation) вещественного типа, выполняющую над ненулевыми вещественными числами A и B одну из арифметических операций и возвращающую ее результат. Вид операции определяется целым параметром Operation: 1 — вычитание, 2 — умножение, 3 — деление, остальные значения — сложение. С помощью Calc выполнить для данных A и B операции, определяемые данными целыми N1, N2, N3.

  
Пример:

Введите два числа:
5  7
Введите номер операции (1 — вычитание, 2 — умножение, 3 — деление, остальные значения — сложение):
2
Результат 5*7 = 35

* Из задачника М. Э. Абрамян (Proc22)

Самостоятельная работа

1 вариант: Описать функцию CircleS(R) вещественного типа, находящую площадь круга радиуса R (R — вещественное). С помощью этой функции найти площади трех кругов с данными радиусами. Площадь круга радиуса R вычисляется по формуле S=π∗R2. В качестве значения Пи использовать 3.14.

* Из задачника М. Э. Абрамян (Proc18)

Пример:

Введите радиус:
5.2
Площадь круга = 16,328‬
___
Введите радиус:
6.3
Площадь круга = 19,782‬‬
___
Введите радиус:
7.1
Площадь круга = 22,294

2 вариант: Описать функцию TriangleP(a, h), находящую периметр равнобедренного треугольника по его основанию a и высоте h, проведенной к основанию (a и h — вещественные). С помощью этой функции найти периметры трех треугольников, для которых даны основания и высоты (периметр = сумме длин всех сторон). Для нахождения боковой стороны b треугольника использовать теорему Пифагора: b2=(a/2)2+h2.

* Из задачника М. Э. Абрамян (Proc20)

Пример:

Введите основание треугольника:
6
Введите высоту треугольника:
5
Периметр треугольника = 17,83095 
___
Введите основание треугольника:
...
Введите высоту треугольника:
...
Периметр треугольника = ... 
___
Введите основание треугольника:
...
Введите высоту треугольника:
...
Периметр треугольника = ... 

Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

проверь себя

Опубликовано 17.11.2020 10:07

Чем больше в вашей программе строк, тем сложнее она для понимания. Поскольку программу придётся актуализировать, дополнять и изменять бесконечно, то объёмный код в этой задаче не помощник. Для его упрощения есть функции. Благодаря им вы сократите время на разработку и уберёте дублирующиеся части. Понимать и тестировать программу станет проще. Как всё работает, сейчас покажем.

Сначала теория

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

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

Зачем обращаться к функции? Чтобы не прописывать тот же самый алгоритм повторно в другом месте. Вместо этого достаточно написать только имя функции. Код становится лаконичным и понятным, его легко отлаживать и сопровождать.

Объясняем

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

1. Взять палочки.

2. Поднять руку.

3. Совершить удар по барабану.

4. Нажать на педаль ногой.

5. Помотать головой в такт.

Без функции вам пришлось бы прописывать 5 раз одно и то же в тех частях композиции, где нужны ударные. Но гораздо удобнее оформить этот алгоритм в функцию playDrums и вызывать её каждый раз, когда необходимо. Это экономит время.

По сути, это алгоритм в алгоритме, который вызывается по имени с помощью команды. Например, лай собаки – это функция, которая выполняется по определённому алгоритму и вызывается командой «Голос».

Аргументы

Функциям можно передавать параметры, которые называются аргументами функции.

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

Например, если взять функцию человека ходить, то в качестве аргументов в неё передаётся «обувь».

Обувь – это параметр.

В разное время потребуется разная обувь, поэтому при каждом вызове функции аргументы меняются. Например, чтобы ходить по спортивной площадке нужна обувь «кроссовки», а чтобы перейти лужу – «сапоги».

Кроссовки и сапоги – это аргументы.

Алгоритм при этом не поменяется: каждый раз человек ходит одинаково, но в разной обуви.

При вызове функции в строке происходит следующее:

1. Язык программирования находит её в той части программы, где она прописана.

2. Выполняет команды, содержащиеся в ней, с учетом указанных при вызове аргументов.

3. Возвращается обратно к строке, которая её вызвала.

4. Переходит к следующей строке.

Некоторые функции уже встроены в язык программирования, например, console.log() в JavaScript, с которой мы уже познакомились :)

Пользовательские функции

Помимо стандартных встроенных в язык функций, мы можем создавать свои – пользовательские. Для этого необходимо записать алгоритм в определённой форме и придумать ему имя.

В JavaScript специальное слово для определения функций – function. После него указывается:

— название;

— список аргументов в круглых скобках;

— тело функции в фигурных скобках.

Создадим простейшую функцию без параметров с именем greeting, которая будет выводить строку ‘Hello!’:

function greeting() {
 console.log('Hello!');
}

Справка! Перед вложенными в функцию строками принято ставить отступ с помощью клавиши , чтобы они начинались немного дальше от края строки. Это визуально упрощает чтение кода.

Если позже нам понадобится вызвать функцию в другой части программы, то мы вызовем её только по имени – «greeting();» – и нажмём :

greeting();

Увидим в консоли результат:

"Hello!"

Функция выполнена.

Тренировка

1. Напишем на JS функцию height() с двумя аргументами: высота в полных метрах (m) и остаток в сантиметрах (cm). Объявление функции выглядит так:

function height(m, cm) {
}

(m, cm) — это параметры, которые необходимо передавать в функцию, чтобы она заработала.

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

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

100 * m + cm 

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

3. Запишем эту формулу в переменную total. Наша функция теперь выглядит так:

function height(m, cm) {
	let total = 100 * m + cm;
}

4. Попросим функцию сразу выводить значение переменной total, которое получилось после произведённого рассчета:

function height(m, cm) {
	let total = 100 * m + cm;
	console.log(total);
}

5. Вызовем функцию с аргументами 1 и 70:

height(1,70);

Что произойдёт? Компьютер понимает, что функции height(m, cm) переданы аргументы 1 и 70 и подставляет их соответственно: m = 1, cm = 70. Затем производится расчёт по формуле:

100*1+70

Результат вычисления 170 записывается в переменную total. Далее – значение переменной total выводится в консоль:

170

6. Теперь попросим функцию выводить не просто результат расчёта, а добавлять к нему обозначение результата ‘cm tall’ и снова вызовем функцию с теми же аргументами:

function height(m, cm) {
	let total = 100 * m + cm;
	console.log(total + 'cm tall');
}
height(1,70);

Алгоритм работы функции не поменяется. Но при выводе результата вычисления – в нашем случае 170 – выполняется конкатенация (склейка) двух строк таким образом:

— значение переменной total автоматически преобразуется в строку благодаря неявному преобразованию в JavaScript: число 170 превращается в строку ‘170’;

— строка ‘cm tall’ склеивается со строкой ‘170’.

Теперь результат в консоли выглядит так:

"170cm tall"

Возвращение значений

Функции могут возвращать значения – результаты вычислений. Эти значения удобно присвоить переменной и использовать при необходимости для выполнения дальнейших вычислений.

Чтобы «научить» функцию возвращать значения потребуется ввести ключевое слово return. А после него указать значение какой переменной необходимо вернуть.

Напишем функцию с именем calc(), которая бы принимала два числовых параметра и суммировала их. Запишем алгоритмическое выражение в переменную total:

function calc(a,b) {
	let total = a + b;
}

Справка! Переменной присваивается не само выражение a + b, а результат, который в итоге получится.

Теперь попросим функцию возвращать значение переменной total:

function calc(a,b) {
	let total = a + b;
	return total;
}

При вычислении функция получит результат, присвоит его переменной total и вернёт это значение как результат функции.

Например, вызовем функцию calc() с параметрами 4 и 5:

console.log(calc(4,5));

Результат:

9

Такие хитрости упрощают жизнь разработчика. Без функций на прописывание повторов в коде уходило бы время, за которое программист напишет еще 30-40% программы.

Домашнее задание

Напишите функцию на языке JavaScript, которая бы считала количество минут в днях.

На прошлых уроках мы узнали метод последовательного
конструирования алгоритмов
, при котором задача последовательно разбивается
на подзадачи, пока они не станут понятны исполнителю. А также, что некоторые
подзадачи бывает удобно оформить в виде вспомогательных алгоритмов,
которые целиком используются в составе других. Вспомогательные алгоритмы в
языке Pascal записываются в виде
именованных последовательностей команд, которые называются подпрограммами.
Подпрограммы делятся на процедуры и функции.

Вопросы:

·     
Что
такое функция?

·     
Чем
отличается функция от процедуры

·     
Как
записывается функция?

·     
При
решении каких задач можно применять функции?

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

Схема
работы функции

Запись функции в программе
похожа на запись процедуры. Функции записываются между разделом описания переменных
и телом основной программы в любом удобном порядке. В начале, записывается
служебное слово function,
после которого идёт имя функции. Оно, как имя процедуры не должно
совпадать с именем программы или переменных. Оно может содержать несколько цифр,
букв латинского алфавита или знаков подчёркивания. И может начинаться с буквы
латинского алфавита или знака подчёркивания. Далее в круглых скобках, следует перечисление
входных параметров с указанием типов
. После скобок следует двоеточие
и тип возвращаемого значения, после которого ставится точка с запятой.
Затем, если в процессе работы функции нужны промежуточные переменные, как и при
записи процедуры, следует раздел описания переменных функции. Названия
переменных и параметров функции могут совпадать с именами переменных в основной
программе или других функциях, поэтому их стоит выбирать для решения данной
подзадачи.

Затем между служебными словами begin и end
следует тело функции. Так как значение возвращаемое функцией сохраняется в
переменную, название которой совпадает с её названием, тело функции должно
содержать хотя бы одну команду присваивания переменной с этим названием какого
либо значения. Как и при записи процедуры после служебного слова end
следует точка с запятой.

Схематичная
запись функции

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

Схематичный
приме вызова функции

Задача: Выпуклый n-угольник
задан
координатами своих вершин в порядке их обхода по контуру. Написать программу
для вычисления его площади.

Составим математическую модель. Мы еще не
знаем как найти площадь выпуклого многоугольника, поэтому разобъем его на
отдельные треугольники, проведя из его первой вершины отрезки к остальным.
Таким образом у нас получится n
— 2

треугольника, площади которых мы уже можем найти. Вспомним что площадь
треугольника можно найти, воспользовавшись формулой Герона,, где a,
b и
c
длины сторон треугольника, а p
его
полупериметр.

Для того, чтобы воспользоваться формулой Герона
для вычисления площади треугольника, нам необходимо знать длины его сторон. Они
равны расстояниям между вершинами треугольника. Вспомним что расстояние между
двумя точками на координатной плоскости можно найти, по следующей формуле , где x
и
yкоординаты
соответствующих точек.

Математическая
модель решения задачи

Составим блок-схему алгоритма решения задачи.
Обозначим в ней x — массив координат x вершин,
у
— массив координат y,
n — количество вершин многоугольника, i
— номер текущей вершины, r
— площадь n-угольника, а так же мы
используем вспомогательные алгоритмы d
— нахождения расстояния между двумя точками на
координатной плоскости и s
— нахождения площади треугольника по формуле Герона.

Вначале мы должны считать значение n,
после чего запишем цикл «для i от 1 до n», в котором будет команда
считывания координат i-той вершины n-угольника. Так, как наш
алгоритм будет сводится к расчёту суммы площадей треугольника, как и в
алгоритме нахождения суммы элементов массива присвоим переменной r
значение 0. Далее будет следовать цикл вычисления площади
n-угольника. Мы разобъем его на треугольники, координатами вершин
которых будут вершины n-угольника
с номерами 1, так, как из этой вершины мы
проводили разделительные отрезки, а так же любые две соседние вершины с
номерами i и i
+ 1
. Так мы запишем цикл «для
i от 2 до
n
— 1
».
Он будет содержать всего одну команду, увеличения переменной r
на значение площади очередного треугольника, то есть r:=r+s(…).
В качестве входных параметров для функции s() будут длины сторон
треугольника, которые, мы вычислим с использованием вспомогательного алгоритма d(),
его параметрами в первом случае будут координаты первой и i-той вершин,
во втором – i-той и i
+ 1
,
а в третьем — первой и i
+ 1
.
В конце нам останется лишь вывести значение переменной r.

Блок-схема
алгоритма решения задачи

Запишем программу по данной блок-схеме. Назовём её area,
что в переводе с английского языка означает площадь. По смыслу задачи
координаты точек и значение площади могут быть дробными числами. То есть нам
понадобится два массива, x и y
из
100 элементов типа real.
Обратим внимание что запись массива вещественных чисел отличается от записи
массива целых чисел лишь типом элементов. Ещё нам понадобится переменная r
так же типа real.
И переменные n и i типа integer.

Раздел
описания переменных программы

Между служебными словами begin
и end запишем тело программы.
Выведем поясняющее сообщение о том, что это программа расчета площади
многоугольника и запрос на ввод количества вершин. Теперь запишем команду
считывания n. Запишем цикл for
i:=1 to
n do,
который будет содержать команду вывода на экран запроса на ввод координат i-той
вершины, а так же команду их считывания.

Теперь запишем команду присваивания переменной r
значения 0 и цикл вычисления площади многоугольника. Это будет цикл for
i:=2 to
n-1 do.
Он будет содержать всего одну команду увеличения числа r на значение
площади треугольника с вершинами, которые будут вершинами многоугольника с
номерами 1, i и i
+ 1
.
Для этого в составе оператора суммы его параметром будет указано значение
функции вычисления площади треугольника s(), которую мы оформим позже,
она будет принимать на вход длины сторон треугольника, которые мы найдем с
помощью функции расчета расстояния между двумя точками на координатной
плоскости. В первом случае её параметрами будут координаты вершин с номерами 1
и i, во втором — i
и i + 1
и в третьем 1 и i + 1.

Теперь нам остается лишь вывести поясняющее сообщение
с текстом «Площадь заданного треугольника равна», и значение переменной r.

Тело
основной программы

Оформим функции для нашей программы. Начнем с функции
нахождения расстояния между двумя точками. Запишем служебное слово function,
и название функции d. Она будет принимать на вход координаты двух точек x1,
y1
и x2,
y2
все типа real. Данная функция
будет возвращать значение расстояния между двумя точками, которое может быть
дробным, то есть тип возвращаемого значения будет real.
Промежуточных переменных в данной функции не потребуется. Между служебными
словами begin и end
запишем тело функции. Оно будет содержать только одну команду, присваивание
переменной d значения расстояния
между двумя точками, которое рассчитано по формуле из математической модели.
Функция извлечения квадратного корня, на языке Паскаль, записывается командой sqrt,
после которой в круглых скобках указывается число или выражение из которого
требуется извлечь квадратный корень.

Код
функции вычисления расстояния между двумя точками

Теперь напишем функцию нахождения площади треугольника
по формуле Герона. Запишем служебное слово function
и
название функции s. Входными
параметрами будут значения длин сторон треугольника: a, b и c
типа real. Возвращаемое
значение, площадь треугольника, может быть дробной, поэтому оно тоже будет типа
real. В этой функции нам
понадобится промежуточная переменная p типа real,
которая будет хранить значение полупериметра треугольника. Запишем тело
функции, она будет содержать команду вычисления полупериметра. Для этого
достаточно найти сумму длин сторон треугольника и разделить её пополам, а также
команду присваивания переменной s
площади треугольника, рассчитанной по формуле Герона.

Код
функции вычисления площади треугольника

Придумаем несколько тестов для программы. В качестве многоугольника
зададим прямоугольник с координатами вершин: 0; 0, 0; 4, 8; 4 и 8; 0. Для себя
площадь данного прямоугольника можно рассчитать, умножив его длину на ширину. 8
* 3 = 32
.

Прямоугольник
из первого теста

Придумаем ещё один тест. Для этого достаточно к
прямоугольнику из прошлого теста дорисовать равнобедренный треугольник сверху,
координаты его боковых вершин будут совпадать с координатами верхних вершин
прямоугольника, а верхняя вершина будет находиться в точке с координатами 4; 7.
Площадь добавленного треугольника мы можем рассчитать по формуле площади
равнобедренного треугольника, умножив его высоту 3, на половину
основания 4, его площадь равна 12.
Добавим к этому результату площадь прямоугольника и получим, площадь
получившегося пятиугольника равной 44.

Пятиугольник
из второго теста

Введем данные из первого теста в
программу. Программа вывела что площадь заданного многоугольника равна тридцати
двум, данный результат соответствует ожидаемому.

Результат
работы программы по первому тесту

Введем данные из второго теста в
программу. Программа вывела что площадь заданного многоугольника равна сорока
четырем, данный результат соответствует ожидаемому. Так, как результаты работы
программы в обоих тестах соответствуют ожидаемым – задача решена верно.

Результат
работы программы по второму тесту

Важно
запомнить:

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

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

Алгоритм-процедура

— +

Используем этот
алгоритм при описании основного
алгоритма
.

Ответы:
max(a+b,a-b)=c

max(a2,b2
)= d

max(a,b)=c

При описании
основного алгоритма

обращение к
процедуре записывают в блоке:

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

z

1)

2)

3)

p

M

a+b

a-b

c

a2

b2

d

a

b

c

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

Алгоритм-функция.

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

Пример:
Напишем для рассмотренной выше задачи
алгоритм-функцию,
вычисляющий max(z,p).
В отличие от процедуры значение результата
присваивается имени
функции
.

В основном
алгоритме

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

2вариант:

z

p

1

a+b

a-b

2

a2

b2

3

a

b

Здесь 2 формальных
параметра — z,
p.
Это параметры-значения. Результат
присваивается имени.

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

Программирование с использованием процедур и функций. Описание подпрограммы-процедуры.

Процедуры
используются в тех случаях, когда в
подпрограмме нужно вычислить значение
или совокупность значений величин, а
также проводятся действия, вообще не
связанные с вычислением, например: ввод,
вывод данных; построение графика.
Структура описания процедуры аналогична
структуре основной программы. Она
состоит из заголовка
описания процедуры и блока
описания.
За заголовком следуют такие же разделы,
как и в основной программе, т.е. 5 разделов
(если они нужны). В отличие от основной
программы процедура завершается не
точкой, а точкой с запятой. Заголовок
имеет вид:

Procedure<имя
процедуры>(<список формальных
параметров>);

Имя процедуры —
идентификатор. Список формальных
параметров — это перечень идентификаторов,
обозначающих исходные
данные (параметры-значения) и результаты
(параметры-переменные)

с указанием их типов.

Пример:
Записать процедуру, вычисляющую функцию:
y=xn,
n
€ Z

Procedure
Stepen (x:real; n:integer; var y:real);

Var
i:integer;

Begin

y:=1;

for
i:=1 to
n do

y:=y*x;

end;

Параметры х, y,
n
являются формальными, причем x,
n
– параметры-значения (исходные данные),
y
– параметр-переменная (результат),
поэтому у в списке параметров описывается
по-особому с использованием слова var,
то есть: var
y:real

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

Переменная i
является локальным
параметром
,
который описан внутри данной процедуры
и действует только
внутри ее

локально.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Понравилась статья? Поделить с друзьями:
  • Как найти модуль разности двух чисел
  • Как найти репетитора по биологии к егэ
  • Как найти активное сопротивление колебательного контура
  • Far cry 4 как найти слона
  • Как составить жалобу на врача в поликлинике за халатное отношение образец