![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Блок схема программы, содержащей подпрограммуСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Проследим соотношение между формальными и фактическими параметрами. Правило соответствия между формальными и фактическими параметрами хорошо демонстрируется на схеме (рис. 6.1) для вычисления S1. процедура основная программа Формальные параметры фактические параметры
Программа, содержащая процедуру, имеет вид. Program DemoProc; Var AB,BC,CD,DA,DB,S,S1,S2:real;{глобальные парам.} Procedure Surface(a,b,c:real;Var s:real); {локальные параметры} Var p:real; Begin p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); End; {Основная программа} Begin Writeln('Введи длины сторон и диагональ четырехугольника-'); Readln(AB,BC,CD,DA,DB); Surface(BC,CD,DB,S2); {вызов процедуры} Surface(AB,DB,DA,S1); {вызов процедуры} S:=S1+S2; Writeln('S=',S:6:2); End. Функция пользователя Другой вид подпрограммы пользователя – это функция (Function ). Функция оформляется аналогично процедуре, за исключением заголовка. Формат заголовка подпрограммы Function: Function<имя>(<список описаний формальных параметров>):<тип>; Отличительные особенностиподпрограммы Function: – имея несколько входных параметров, функция имеет один выходной параметр; – этот параметр обозначается именем функции и передается в основную программу в качестве операнда в выражении. Вызывается функция по ее имени с указанием фактических параметров (как стандартная функция). Пример 6.3. Используя подпрограмму Function, вычислить значение функции y=y(x) для любого вводимого значения х. Program D_Funct; Var x,y,z: real {глобальные параметры} Function F(t: real): real; Var w: real; {локальный параметр} Begin If Abs(t)<=1 then w:=Sqrt(1-Sqr(t)) else w:=Sqr(Cos(t)); F:=w; End; {основная программа} Begin Write('введи x='); Readln(x); y:=F(x); Writeln(x:6:2,y:8:3); z:=x+1.5; y:=F(z); Writeln(z:6:2,y:8:3); End. Обратите внимание на следующие два пункта. В разделе операторов подпрограммы должен находиться оператор, присваивающий имени функции какое-либо значение (F:=w;). В основной программе вызов подпрограммы Function происходит дважды. Первый раз для значения параметра х, вводимого с пульта, второй - для параметра z:=x+1.5. Проверьте себя, что будет напечатано на экране, если добавить строку y :=F(-1); Writeln(y).
Рекурсивные программы В математике рекурсивным называется определение любого понятия через самого себя. Классическим примером является определение факториала целого числа, большего или равного нулю.
Здесь функция факториал определена через факториал, т.е.:
Пример 6.4. Определить факториала целого числа n. Для вычисления приведенной выше рекурсивной формулы используем подпрограмму-функцию Fakt.
Program D_Recurc; Var n,f: nteger; Function Fakt(m:integer):integer; Var w:real; Begin If m=1 then Fakt:=1 {проверка условия завершения рекурсии} else Fakt:=m*Fakt(m-1); {рекурсивное вычисление n!} End; {основная прграмма} Begin Write('введи n='); Readln(n); f:=Fakt(n); Writeln('n!=',f:3); End. Пусть в основной программе вычисляется 3!, для этого используется оператор f:=Fakt(3). При вычислении функции с параметром 3 произойдет повторное обращение к функции Fakt(2). Это обращение потребует вычисления Fakt(1). При вычислении Fakt(0) получим числовой результат – 1. Затем цепочка вычислений раскрутится в обратном порядке: Fakt(1)=1* Fakt(0)=1 Fakt(2)=2* Fakt(1)=2 Fakt(3)=3* Fakt(2)=6 С точки зрения программистской эстетики использование рекурсивных функций – красивый прием, однако не всегда рациональный с точки зрения затрачиваемого времени. Рассмотренную задачу вычисления n! можно решить и так: F:=1; For I:=1 to n do F:=F *I; Такой вариант программы будет работать быстрее, чем рекурсивный. Контрольные вопросы и задания 1. Что понимается под структурным программированием? Зачем оно применяется? 2. Что называется подпрограммой? 3. Стандартные подпрограммы, примеры их использования. 4. Подпрограммы пользователя. Формальные и фактические параметры, их взаимосвязь. 5. Что такое локальные и глобальные параметры. 6. Подпрограммы Function, Procedure, в чем отличие и сходство между ними. 7. Что такое входные и выходные параметры? 8. Что такое рекурсия? 9. Составьте подпрограмму для вычисления площади круга радиусом R. Используя эту подпрограмму, запишите программу для вычисления площади кольца, ограниченного окружностями с радиусами R 1 и R 2. 10. Вычислить сумму 1!+2!+3!+…+n!, используя подпрограмму Function для вычисления факториала числа k!.
|
||||||||
Последнее изменение этой страницы: 2016-09-20; просмотров: 910; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.112.201 (0.01 с.) |