Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2014, 19:25   #1
alexey9999
Пользователь
 
Регистрация: 09.12.2013
Сообщений: 13
По умолчанию 3 процедуры 1 функция

Дано вещественное число A и целое число N (>0). Найти A в степе-ни A^N = A•A•...•A(числа A перемножаются N раз).


Код:
program abc;
uses crt;
var
i,n:integer;
stepen,a:real;
begin
writeln('введите (N>0) N');
readln(n);
writeln('введите A');
readln(a);
stepen:=1;
for i:=1 to n do
begin
stepen:=stepen*a;
end;
writeln('A в степени N:=',stepen);
end.
Написать 4 подпрограммы:

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

Последний раз редактировалось Stilet; 26.03.2014 в 09:03.
alexey9999 вне форума Ответить с цитированием
Старый 25.03.2014, 19:50   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Процедуру, которая не возвращает значения
Процедуры никогда не возвращают значения. У них есть входные (для получения данных) и выходные (для выдачи результата) параметры.
Возвращают значение только функции.
Streletz вне форума Ответить с цитированием
Старый 26.03.2014, 07:08   #3
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

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

Но толком то по этим вопросам ничего не сделано. Автор, будут попытки?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 26.03.2014, 08:47   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Процедуры никогда не возвращают значения. У них есть входные (для получения данных) и выходные (для выдачи результата) параметры.
Возвращают значение только функции.
А в честь чего?
Код:
procedure p(var n : Integer);
begin n := Random(10) end;
Разве эта процедура не вернет значение?

Цитата:
Написать 4 подпрограммы:
Это приказ?
Poma][a вне форума Ответить с цитированием
Старый 26.03.2014, 09:49   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Процедуру, которая не возвращает значения
подозреваю, что под этим авторы задания имели в виду использование ГЛОБАЛЬНЫХ переменных!
(т.е. процедура делает что надо и результат сохраняет в глобальной переменной).
Так иногда делают (хоть это и форменное безобразие! (

Цитата:
Сообщение от Poma][a Посмотреть сообщение
А в честь чего?
Код:
procedure p(var n : Integer);
begin n := Random(10) end;
Разве эта процедура не вернет значение?
нет, не вернёт.
Она ИЗМЕНИТ переданный ей параметр, но ничего не вернёт.
Чтобы убедится в этом напишите
Код:
WriteLn('процедура вернула значение ', p(x));
и посмотрите, что по этому поводу думает компилятор Паскаля...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.03.2014, 10:17   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
и посмотрите, что по этому поводу думает компилятор Паскаля...
Ответ очевиден..

Цитата:
подозреваю, что под этим авторы задания имели в виду использование ГЛОБАЛЬНЫХ переменных!
Тогда процедурка тоже ничего не вернет, она лишь изменит глобальную переменную..
Цитата:
Она ИЗМЕНИТ переданный ей параметр, но ничего не вернёт.
Да? Хорошо..
Код:
procedure q(n : Integer);
begin n := Random(10) end;
А что делает эта процедурка?
Она изменяет параметр, но НЕ передает его обратно..
Poma][a вне форума Ответить с цитированием
Старый 26.03.2014, 10:57   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Тогда процедурка тоже ничего не вернет, она лишь изменит глобальную переменную..
дык, как я понимаю, это же и требуется по условию п.1.
Цитата:
Процедуру, которая не возвращает значения

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Да? Хорошо..
Код:
procedure q(n : Integer);
begin n := Random(10) end;
А что делает эта процедурка?
Она изменяет параметр, но НЕ передает его обратно..
точно так.
Возможно, что требуется именно такой код:
Код:
procedure stepA(A : real; N : Integer);
var stepen:real;
begin 
  < Тут вычисления переменной stepen .... >

  // Вывод результата вычислений
  writeln('A в степени N:=',stepen);
end;
Cогласитесь, что данная процедура делает то, что нужно (вычисляет A в степени N) и ничего не возвращает!

Последний раз редактировалось Serge_Bliznykov; 26.03.2014 в 11:00.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.03.2014, 11:00   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Cогласитесь, что данная процедура делает то, что нужно (вычисляет A в степени N) и ничего не возвращает!
Совершенно верно!
Код:
procedure stepA(A : real; N : Integer; var stepen : Real);
begin 
  < Тут вычисления переменной stepen .... >

  // Вывод результата вычислений
  writeln('A в степени N:=',stepen);
end;
А теперь согласитесь, что данная процедура возвращает ответ!
Poma][a вне форума Ответить с цитированием
Старый 26.03.2014, 11:12   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Poma][a, терминологический спор. Формально не возвращает в терминах обращения к ней и как должно возвращать. Фактически - возвращает путем изменения значений параметров
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.03.2014, 11:24   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Совершенно верно!
Код:
procedure stepA(A : real; N : Integer; var stepen : Real);
begin 
  < Тут вычисления переменной stepen .... >

  // Вывод результата вычислений
  writeln('A в степени N:=',stepen);
end;
А теперь согласитесь, что данная процедура возвращает ответ!
Точно. Но уточню - возвращает через изменение переданного ей параметра.
И теперь посмотрите на исходный пост, что требуется.

Мой пример - это реализация пункта 2 задания.

Ваш пример - это реализация пункта 3 задания.


Аватар, Вы абсолютно правы.

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

Цитата:
Код:
 function (reserved word)
 ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
A function is a program part that computes and
returns a value.

 procedure (reserved word)
 ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
A procedure is a program part that performs a
specific action, often based on a set of
parameters.


p.s. чем дальше, тем больше мне наш спор напоминает спор вида "нет, стрижено", "нет, брито"... Мы прекрасно понимаем, что каждый из нас пытается донести до другого, поэтому, я смысла в данном обсуждении не вижу, уж извините меня...

Последний раз редактировалось Serge_Bliznykov; 26.03.2014 в 11:27.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедуры и функции - Заданы три двумерных массива одинаковой размерности. Написать фукнции и процедуры их обработки sekirei Паскаль, Turbo Pascal, PascalABC.NET 8 21.11.2013 15:45
Функция минимума. Разработанные процедуры и функции поместить в отдельном модуле, который использовать в основной программе(Delphi zia Помощь студентам 5 15.12.2012 19:03
Функция и процедуры SGK91 Паскаль, Turbo Pascal, PascalABC.NET 2 14.05.2011 14:53
Использование имени процедуры в качестве параметра другой процедуры Alexey355 Помощь студентам 1 23.04.2011 13:59
закончить выполнение процедуры из тела другой процедуры Alaysor Общие вопросы Delphi 14 23.01.2011 05:26