Сообщение вспомогательные алгоритмы на языке паскаль

Обновлено: 05.07.2024

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

Глоссарий по теме: структурное программирование, подпрограммы, процедуры, функции, рекурсия.

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

Л. Л. Босова, А. Ю. Босова. Информатика. Базовый уровень: учебник для 11 класса. — М.: БИНОМ. Лаборатория знаний, 2017

Дополнительная литература по теме урока:

- И. Г. Семакин, Т. Ю. Шеина, Л. В. Шестакова Информатика и ИКТ. Профильный уровень: учебник для 11 класса. — М.: БИНОМ. Лаборатория знаний, 2012

- Андреева Е. В. Программирование — это так просто, программирование — это так сложно. Современный учебник программирования. — М.: МЦНМО, 2015

Теоретический материал для самостоятельного изучения

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

Основные принципы структурного программирования заключаются в том, что:

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

На прошлом уроке мы рассмотрели один из базовых алгоритмов обработки числовых данных — алгоритм нахождения НОД натуральных чисел.


Вернемся к нему для решения задачи нахождения НОД трех натуральных чисел a, b, c. Для решения воспользуемся следующим математическим фактом: если a, b, c — три натуральных числа, то НОД (a, b, c) = НОД (НОД (a, b), c). Иначе говоря, нужно найти НОД двух величин, а затем НОД полученного значения и третьего числа.


Аналогичным образом можно было решить задачу нахождения НОД четырех, пяти и т. д. чисел. Понятно, что при этом код программы увеличился бы за счет добавления однотипных блоков. А можно ли каким-либо образом сократить запись алгоритма? Давайте разберемся.

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

Подпрограммы подразделяются на процедуры (procedure) и функции (function).

Описание процедуры в Паскале имеет следующий формат:

Оформим в нашем примере в качестве процедуры подпрограмму нахождения НОД двух натуральных чисел.


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

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

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


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


Параметры-значения указываются так:


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

Вернемся к программе nod1. Наша процедура evklid должна получить на вход две переменные, найти для них НОД и передать его в основную программу. Получаем:


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

Чтобы разобраться в этом примере, введем одно важное понятие — область действия описания.

Областью действия описания любого программного объекта (переменной, типа, константы и т. д.) является тот блок, на который это описание распространяется. Если данный блок вложен в другой (подпрограмма), то присутствующие во вложенном блоке описания являются локальными. Они действуют только в пределах внутреннего блока. Описания же, расположенные во внешнем блоке, называются глобальными по отношению к внутреннему блоку. Если глобально описанный объект используется во внутреннем блоке, то на него распространяется внешнее (глобальное) описание.

В программе nod2 переменные x, y, nod1 являются локальными внутри процедуры; переменные a, b, c — глобальные. Однако внутри процедуры переменные a, b, c не используются. Связь между внешним блоком и процедурой осуществляется через параметры.

В программе nod2 все переменные являются глобальными. В процедуре evklid нет ни одной локальной переменной. Здесь обмен значениями между основной программой и процедурой осуществляется через глобальные переменные.

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

Формат описания функции следующий:

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

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


Сравнивая приведенные выше программы, можно сделать вывод, что программа nod4 имеет определенные преимущества перед другими. Функция позволяет получить результат путем выполнения одного оператора присваивания. Здесь также демонстрируется возможность того, что фактическим параметром при обращении к функции может быть эта же функция.

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

Рекурсивная подпрограмма (функция, процедура) — подпрограмма, содержащая в своем описании вызов самой себя.

Пример 1. Как известно, факториал натурального числа определяется следующим образом:

Иначе это можно записать так:

F(n)=F(n–1) · n при n > 1.

В определении факториала через рекурсию имеется условие n ≤ 1, при достижении которого вызов рекурсии прекращается. Такое условие (оно называется граничным) в рекурсивном определении должно присутствовать обязательно!

Пример 2. Алгоритм вычисления функции F(n), где n — натуральное число, задан следующими соотношениями:

F(n)=F(n–1) +3· F(n–2) при n > 2.

Требуется выяснить, чему равно значение функции F(7).

По условию, F(1) = F(2) = 1.

F(3) = F(2) + 3 · F(1) = 1 + 3 · 1 = 4.

F(4) = F(3) + 3 · F(2) = 4 + 3 · 1 = 7.

F(5) = F(4) + 3 · F(3) = 7 + 3 · 4 = 19.

F(6) = F(5) + 3 · F(4) = 19 + 3 · 7 = 40.

F(7) = F(6) + 3 · F(5) = 40 + 3 · 19 = 97.

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


И в завершение вспомним задачу вычисления НОД и модифицируем с использованием рекурсивной функции.



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


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

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

Получите невероятные возможности




Конспект урока "Запись вспомогательных алгоритмов на языке Паскаль. Процедуры"

· Какие существуют инструменты для записи вспомогательных алгоритмов в языке паскаль?

· Что такое процедуры, и как они записываются?

· Применение процедур при решении задач.

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

Какие же инструменты есть в языке Pascal для записи вспомогательных алгоритмов. Вспомогательные алгоритмы в языке Pascal записываются с помощью подпрограмм. Подпрограмма – это именованная последовательность команд. Подпрограммы записываются между разделом описания переменных и телом основной программы в любом удобном порядке. Подпрограммы имеют схожую с основной программой структуру.

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

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

Схема работы процедуры

Процедуры записываются следующим образом… В начале идёт служебное слово Procedure, и через пробел указывается имя процедуры. Имя процедуры не должно совпадать с именем программы или переменных, остальные требования те же, что и к имени программы, то есть оно может содержать от 1 до 255 цифр, букв латинского алфавита и знаков подчёркивания, и должно начинаться с буквы латинского алфавита или знака подчёркивания. После имени процедуры в круглых скобках, как в разделе описания переменных, перечисляются сначала входные параметры с указанием типа, затем после служебного слова var перечисляются выходные параметры с указанием типа. В конце строки ставится точка с запятой. Если необходимы промежуточные переменные, то строкой ниже записывается раздел описания переменных процедуры, который, как и в основной программе, начинается со слова var. Далее, между служебными словами begin и end, следует тело процедуры. В данном случае после служебного слова end ставится точка с запятой.

Схематичная запись процедуры

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

Схематичная запись вызова процедуры

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

Задача: Три прямых на координатной плоскости заданы коэффициентами своих уравнений вида y = kx + b, при этом они образуют треугольник. Найти координаты вершин данного треугольника.

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

Посмотрим, как же найти точку пересечения двух прямых. Для этого достаточно решить следующую систему уравнений. Где k1 и b1 – соответствующие коэффициенты первого уравнения, а k2 и b2 – второго.

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

Составим блок-схему алгоритма решения задачи, при этом обозначим через k1, k2, k3 и b1, b2, b3 коэффициенты уравнений соответствующих прямых, а через xa, xb, xc, ya, yb, yc – соответствующие координаты вершин A, B и C. В качестве вспомогательного алгоритма оформим нахождение координат точки пересечения двух прямых.

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


Исходный код основной программы

Между служебными словами begin и end запишем тело процедуры. Оно будет содержать всего две команды – расчёты координат точек по формулам, которые мы вывели в математической модели.

Исходный код процедуры нахождения координат точки пересечения прямых

Придумаем несколько тестов для программы. Для примера возьмём уравнения прямых и сразу же построим их графики. y = 4x, y= –3x + 7, и y=x/2. Построив данные прямые на координатной плоскости, мы можем определить, что вершинами треугольника, который образуют прямые, являются точки с координатами 0;0, 1;4 и 2;1.


Придумаем ещё один тест при котором прямые не образуют треугольник. Для этого зададим две параллельные прямые с уравнениями: y = 4x и y = 4x – 10, и ещё одну прямую с уравнением y = x.

Введём данные из первого теста в программу… Координаты точек, которые вывела программа, совпадают с координатами, полученными на графике.


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

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

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

· Вспомогательные алгоритмы на языке Pascal записываются в виде подпрограмм.

· Подпрограмма – это именованная последовательность команд.

· Подпрограммы в языке Pascal делятся на процедуры и функции.

· Процедура – это подпрограмма, которая имеет произвольное количество входных и выходных параметров.

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

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

ЗАПИСЬ ВСПОМОГАТЕЛЬНЫХ АЛГОРИТМОВ НА ЯЗЫКЕ ПАСКАЛЬ АЛГОРИТМИЗАЦИЯ И ПРОГРАММИ.

Описание презентации по отдельным слайдам:

ЗАПИСЬ ВСПОМОГАТЕЛЬНЫХ АЛГОРИТМОВ НА ЯЗЫКЕ ПАСКАЛЬ АЛГОРИТМИЗАЦИЯ И ПРОГРАММИ.

ЗАПИСЬ ВСПОМОГАТЕЛЬНЫХ АЛГОРИТМОВ НА ЯЗЫКЕ ПАСКАЛЬ АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ

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

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

Подпрограммы Запись вспомогательных алгоритмов в языках программирования осущ.

Подпрограммы Запись вспомогательных алгоритмов в языках программирования осуществляется с помощью подпрограмм. Структура описания подпрограммы аналогична структуре главной программы. Описание подпрограммы начинается с заголовка и заканчивается оператором end. Процедура Функция Подпрограмма

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

Алгоритм Евклида Алгоритм Евклида Процедура для нахождения НОД procedure nod.

Алгоритм Евклида Алгоритм Евклида Процедура для нахождения НОД procedure nod (a, b: integer; var c: integer); begin while a<>b do if a>b then a:=a-b else b:=b-a; c:=a end;

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

Варианты вызова процедуры Между фактическими и формальными параметрами должно быть полное соответствие по количеству, порядку следования и типу. в качестве параметров-значений использованы константы nod (36, 15, z) nod (x, y, z) в качестве параметров-значений использованы имена переменных nod (x+ y, 15, z) в качестве параметров-значений использованы выражение и константа !

program n_6; const m: array [1..6] of integer =(16, 32, 40, 64, 80, 128); var.

program n_6; const m: array [1..6] of integer =(16, 32, 40, 64, 80, 128); var I, x, y, z: integer; procedure nod (a, b: integer; var c: integer); begin while a<>b do if a>b then a:=a-b else b:=b-a; c:=a end; begin x:=m[1]; for i:=2 to 6 do begin y:=m[i]; nod (x, y, z); x:=z end; writeln ('НОД=', x) end. Раздел описания операторов главной программы Раздел описания подпрограммы Заголовок главной программы Описание констант Раздел описания переменных Программа с процедурой

Функции function (): ; begin ; := end; Функция - подпрограмма, имеющая еди.

Функции function ( ): ; begin ; := end; Функция - подпрограмма, имеющая единственный результат, записываемый в ячейку памяти, имя которой совпадает с именем функции. В блоке функции обязательно должен присутствовать оператор := . Перечень формальных параметров и их типов Тип результата ! Для вызова функции достаточно указать её имя со списком фактических параметров в любом выражении, в условиях, (после слов if, while, until) или в операторе write главной программы.

Функция поиска максимального из 2-х program n_7; var a, b, c, d, f: integer;.

Функция поиска максимального из 2-х program n_7; var a, b, c, d, f: integer; function max (x, y: integer): integer; begin if x>y then max:=x else max:=y; end; begin readln (a, b, c, d); f:= max(max(a, b), max(c, d)); writeln ('f=', f); end. Заголовок главной программы Описание переменных Раздел описания подпрограммы Раздел операторов главной программы

Последовательность Фибоначчи В январе Саше подарили пару новорождённых кролик.

Последовательность Фибоначчи В январе Саше подарили пару новорождённых кроликов. Через два месяца они дали первый приплод - новую пару кроликов, а затем давали приплод по паре кроликов каждый месяц. Каждая новая пара также даёт первый приплод (пару кроликов) через два месяца, а затем - по паре кроликов каждый месяц. Сколько пар кроликов будет у Саши в декабре? Числа 1, 1, 2, 3, 5, 8, … образуют так называемую последовательность Фибоначчи, названную в честь итальянского математика, впервые решившего соответствующую задачу ещё в начале XIII века.

Математическая модель Пусть f(n) количество пар кроликов в месяце с номером n.

Математическая модель Пусть f(n) количество пар кроликов в месяце с номером n. По условию задачи: f(1) = 1, f(2) = 1, f(3) = 2. Из двух пар, имеющихся в марте, дать приплод в апреле сможет только одна: f(4) = 3. Из пар, имеющихся в апреле, дать приплод в мае смогут только пары, родившиеся в марте и ранее: f(5) = f(4) + f(3) = 3 + 2 = 5. В общем случае: f(n)= f(n –1)+ f(n – 2), n >= 3.

Функция function f (n: integer): integer; begin if (n=1) or (n=2) then f:=1 e.

Функция function f (n: integer): integer; begin if (n=1) or (n=2) then f:=1 else f:=f(n-1)+f(n-2) end; Полученная функция рекурсивная - в ней реализован способ вычисления очередного значения функции через вычисление её предшествующих значений.

Самое главное Запись вспомогательных алгоритмов в языках программирования осу.

Самое главное Запись вспомогательных алгоритмов в языках программирования осуществляется с помощью подпрограмм. В Паскале различают два вида подпрограмм: процедуры и функции. Процедура - подпрограмма, имеющая произвольное количество входных и выходных данных. Функция - подпрограмма, имеющая единственный результат, записываемый в ячейку памяти, имя которой совпадает с именем функции.

Вопросы и задания Для чего используются подпрограммы? В чём основное различие.

Вопросы и задания Для чего используются подпрограммы? В чём основное различие процедур и функций? Напишите программу вычисления наименьшего общего кратного следующих четырёх чисел: 36, 54, 18 и 15. Используйте процедуру вычисления наибольшего общего делителя двух чисел. Напишите программу перестановки значений переменных a, b, с в порядке возрастания, т. е. так, чтобы a

Краткое описание документа:

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

Сайт учителя информатики. Технологические карты уроков, Подготовка к ОГЭ и ЕГЭ, полезный материал и многое другое.

Информатика. 9 класса. Босова Л.Л. Оглавление

Ключевые слова:

  • подпрограмма
  • процедура
  • функция
  • рекурсивная функция

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

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

Структура описания подпрограммы аналогична структуре главной программы. Описание подпрограммы начинается с заголовка и заканчивается оператором end.

В Паскале различают два вида подпрограмм: процедуры и функции.

Процедуры. Запись вспомогательных алгоритмов на языке Паскаль

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

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

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

Например, заголовок процедуры вычисления наибольшего общего делителя может быть описан так:

Возможны следующие варианты вызова этой процедуры:

  • nod (36, 15, z) — в качестве параметров-значений использованы константы;
  • nod (х, у, z) — в качестве параметров-значений использованы имена переменных;
  • nod (х+у, 15, z) — в качестве параметров-значений использованы выражение и константа;

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

Пример 1. Напишем процедуру для нахождения наибольшего общего делителя двух чисел с помощью алгоритма Евклида. Используем её для нахождения наибольшего общего делителя следующих шести чисел: 16, 32, 40, 64, 80 и 128.


Измените программу так, чтобы с её помощью можно было найти:

  • а) наибольший общий делитель следующих пяти чисел: 12, 24, 30, 48 и 51;
  • б) наибольший общий делитель произвольных десяти целых двузначных чисел.

Функции. Запись вспомогательных алгоритмов на языке Паскаль

Описание функции имеет вид:

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

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

Для вызова функции достаточно указать её имя со списком фактических параметров в любом выражении, в условиях (после слов if, while, until) или в операторе write главной программы.

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


Измените программу так, чтобы с её помощью можно было найти:

  • а) максимальное из чисел а, b, с;
  • б) максимальное из чисел b, с, d;
  • в) минимальное из четырёх чисел;
  • г) разность максимального и минимального из четырёх чисел.

Пример 3. В январе Саше подарили пару новорождённых кроликов. Через два месяца они дали первый приплод — новую пару кроликов, а затем давали приплод по паре кроликов каждый месяц. Каждая новая пара также даёт первый приплод (пару кроликов) через два месяца, а затем — по паре кроликов каждый месяц. Сколько пар кроликов будет у Саши в декабре?

Составим математическую модель этой задачи. Обозначим через /(n) количество пар кроликов в месяце с номером n. По условию задачи, ?(1) = 1, ?(2) = 1, ?(3) = 2. Из двух пар, имеющихся в марте, дать приплод в апреле сможет только одна: ?(4) = 3. Из пар, имеющихся в апреле, дать приплод в мае смогут только пары, родившиеся в марте и ранее: ?(5) = ?(4) + ?(3) = 3 + 2 = 5. В общем случае: ?(n) = ?(n — 1) + ?(n — 2), n ? 3.

Числа 1, 1, 2, 3, 5, 8,… образуют так называемую последовательность Фибоначчи, названную в честь итальянского математика, впервые решившего соответствующую задачу ещё в начале XIII века.

Оформим в виде функции вычисление члена последовательности Фибоначчи.

Полученная функция считается рекурсивной — в ней реализован способ вычисления очередного значения функции через вычисление её предшествующих значений.

Напишите программу, вычисляющую и выводящую 10 первых членов последовательности Фибоначи.

САМОЕ ГЛАВНОЕ

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

Вопросы и задания к § 2.4. Запись вспомогательных алгоритмов на языке Паскаль

1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Дополняет ли презентация информацию, содержащуюся в тексте параграфа?

Данная презентация предназначена для ознакомления с процедурами и функциями на языке Pascal.

ВложениеРазмер
vsp_algoritm.ppt 496 КБ

Предварительный просмотр:

Подписи к слайдам:

МОУ СОШ №73 Вспомогательный алгоритм Процедуры и функции

МОУ СОШ №73 Переменные, которые являются аргументами, необходимыми для работы вспомогательного алгоритма называются параметрами . При вызове вспомогательного алгоритма важен порядок передачи и приема параметров. Вспомогательный алгоритм Внешний Внутренний Находится в теле данной программы Помещается в библиотеку, оформленную соответствующим образом. Имя библиотеки указывается после служебного слова USES .

МОУ СОШ №73 Процедуры и функции Procedure имя (параметры) ; var объявление переменных ; BEGIN ……………………… .. ……………………… .. имя := выражение ; END; Function имя (параметры ) : тип данных ; var объявление переменных ; BEGIN ……………………… .. ……………………… .. END; Основное различие между ними в том, что функция возвращает значение величины и может использоваться в выражениях.

МОУ СОШ №73 Механизм параметров. Примеры. Function Smax (a, b: integer, s: char):integer; Procedure Sum (a,b: real; var c: real); 2 способа задачи параметров: Параметры, перед которыми отсутствует служебное слово VAR; Параметры, перед которыми указано служебное слово VAR .

МОУ СОШ №73 Параметры-значения. В данном случае параметр считается обычной переменной, которая действует только в пределах данного вспомогательного алгоритма. По окончании алгоритма она буде уничтожена и ее значение будет потеряно. При вызове вспомогательного алгоритма этому параметру устанавливается начальное значение равное значению соответствующего фактического параметра. Внутри вспомогательного алгоритма возможны произвольные действия с данным формальным параметром, но любые изменения его значения никак не отражаются на значении переменных вне программы. Все это объясняется тем, что каждая программа работает в специально отведенном участке памяти компьютера. Вспомогательному алгоритму отводится свой участок памяти.

МОУ СОШ №73 Пример. Program task; var a,b,c:integer; procedure sum(a,b:integer); var sum :integer; begin sum:=a+b; writeln(‘ Сумма равна ’,sum); end; BEGIN clrscr; write(‘ Введи слагаемые ’); read(a,b); sum(a,b); END. В начале работы программы в рабочем поле отведено место для хранения значений для переменных a,b . Вспомогательный алгоритм Sum1 после вызова будет активизирован на другом участке памяти. Там же будет отведено и место для переменных a,b,sum . В момент вызова переменным a,b из процедуры будет присвоено значение указанное в скобках. Переменные a,b программы не имеют никакого отношения к переменным a,b из программы. Результат работы процедуры Sum мы увидим, а получить значение sum мы не сможем. После окончания работы участок памяти, где работала процедура, будет освобожден с потерей всех данных, созданных этой программой.

МОУ СОШ №73 Параметры-переменные. Параметры, передаваемые по ссылке, указываются заданием служебного слова VAR перед их идентификатором в списке параметров. Этот способ используется тогда, когда необходимо вернуть из процедуры некоторое значение. Для того, чтобы изменение в теле процедуры значение формального параметра приводило к аналогичному изменению соответствующего фактического параметра, необходимо использовать передачу параметров по ссылке.

МОУ СОШ №73 Program task 1 ; var a,b,c:integer; procedure sum1(a,b:integer; var sum:integer ); var sum :integer; begin sum:=a+b; writeln(‘ Сумма равна ’,sum); end; BEGIN clrscr; write(‘ Введи слагаемые ’); read(a,b); sum(a,b,c); END. Пример. Переменной с после работы вспомогательного алгоритма будет присвоено значение переменной Sum

МОУ СОШ №73 Процедуры и функции могут использовать переменные, объявленные в заголовке основной программы. Такие переменные называются глобальными. Переменные, описанные в заголовке вспомогательного алгоритма называются локальными и работать с ними можно только в пределах этого алгоритма.

МОУ СОШ №73 Program DROB1; Uses CRT; var A,B,C:integer; Procedure EVCLID (X,Y:integer; var D:integer); begin while X<>Y do if X>Y then X:=X-Y; else Y:=Y-X; D:=X; end; BEGIN clrscr; textcolor(3); writeln(‘ Сокращаем дробь ’); write (‘ Введи числитель A и знаменатель B’ ) ; readln(A,B); EVCLID(A,B,D); A:=A div D; B:=B div D; writeln (‘ Сокращенная дробь ’ , A , ’ / ’ B); readln; END. Задача. Сократить дробь а /b . Процедура

МОУ СОШ №73 Program DROB2; Uses CRT; var A,B,C:integer; Fuction EVCLID (X,Y:integer):integer; begin while X<>Y do if X>Y then X:=X-Y; else Y:=Y-X; EVCLID :=X; end; BEGIN clrscr; textcolor(3); writeln(‘ Сокращаем дробь ’); write (‘ Введи числитель A и знаменатель B’ ) ; readln(A,B); A:=A div EVCLID (A,B); B:=B div EVCLID (A,B); writeln (‘ Сокращенная дробь ’ , A , ’ / ’ B); readln; END. Функция

МОУ СОШ №73 Домашнее задание: Учить конспект, составить программы с использованием функции и процедуры для нахождения НОД 3 чисел. Желаем удачи!

Читайте также: