|
148 / 111 / 83
Регистрация: 09.09.2011
Сообщений: 274
|
|
Функция как параметр процедуры15.11.2012, 22:44. Показов 13302. Ответов 8
Метки нет (Все метки)
Ребят просветите в такой теме, функция как параметр процедуры. Как это реалезовать в паскале? И чем это вызвано?
0
|
|
| 15.11.2012, 22:44 | |
|
Ответы с готовыми решениями:
8
функция как параметр процедуры Процедура как параметр процедуры Можно ли передать множество как параметр процедуры |
|
|
||||||
| 16.11.2012, 00:14 | ||||||
|
stimo15, попробуйте представить себе следующее: допустим, у вас есть процедура которая строит график функции и вы хотите сделать ее универсальной. То есть, чтобы она строила график абсолютно любой функции. У вас в процедуре есть алгоритм, который по точкам выполняет построение, а сами значения точек, в частности координата Y, определяется некоторой функцией. И тогда возникает закономерный вопрос: а как сделать так, чтобы процедура могла вычислить y:=f(x), где f - произвольная функция? Да, можно завести некую глобальную функцию f(x), и осуществлять ее вызов. Однако, что делать, если сначала надо построить, допустим, синус, а затем параболу. В таком случае, код вызова не будет универсальным, так как имена таких функций различны.
И вот мы подошли к самой сути: функции как параметр. Исходя из названия, существует возможность передать функцию как формальный параметр, что собственно в рамках примера и будет являться решением описанной проблемы. И вот почему. Поскольку она будет являться формальным параметром, то абсолютно не имеет значение, какой фактический параметр туда подставляется, пока типы данных совпадают. Вот и универсальность. Рассмотрим на примере. Пусть необходимо написать процедуру, выводящую на экран значения произвольной функции на отрезке от 0 до 1 с шагом 0.125.
5
|
||||||
|
148 / 111 / 83
Регистрация: 09.09.2011
Сообщений: 274
|
||||||
| 16.11.2012, 01:04 [ТС] | ||||||
|
Такого развернутого ответа ни где еще не видел! Огромное спасибо!!!
Добавлено через 24 минуты А не могли бы вы проверить является написанный мною код верным. Ну тоесть реализован вызов функции как параметр процедуры. Да и вообще корректность кода. Все ли верно? Условие задачи: решить уравнение f(x)=0 на неком отрезке с заданной точностью, методом дихотомии (деление отрезка пополам) Функция: 1/(x+sqrt(x+0.3)+exp(-x) +1.7)-x Код:
0
|
||||||
|
|
||
| 16.11.2012, 01:11 | ||
|
Если вас терзают сомнения - запустите, посмотрите на результат. Если расчет верен, то все хорошо.
И более того, даже подсветит строчку.
0
|
||
|
35 / 9 / 1
Регистрация: 25.04.2016
Сообщений: 175
|
|||||||||||
| 24.11.2016, 15:01 | |||||||||||
|
HighPredator, аналогичная проблема, тестирую ваш код (во-первых, обнаружилось, что в процедуре Q переменная "с" а не "а"), и компилятор ругается на вызов функций
Подскажите, что делать? Добавлено через 44 минуты Кажется нашел: надо использовать указатели, то бишь результат вызова будет выглядеть так:
0
|
|||||||||||
|
Почетный модератор
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
|
||||||
| 24.11.2016, 15:02 | ||||||
|
Для Турбо Паскаль.
0
|
||||||
|
35 / 9 / 1
Регистрация: 25.04.2016
Сообщений: 175
|
|
| 24.11.2016, 15:11 | |
|
Только вот, почему-то, если функция находится в классе, такой вариант не работает, пишет:
Error: Got "<procedure variable type of function(Real) ouble of object;Register>", expected "<procedure variable type of function(Real) ouble;Register>"Мне пришлось вытащить функцию из класса, чтобы заработало... Добавлено через 58 секунд Puporev, а, простите, я на Лазарусе...
0
|
|
|
Модератор
|
|
| 26.11.2016, 17:23 | |
|
Andrew Puchinin,
сигнатура метода отличается от сигнатуры свободной процедуры/функции. Для указателя на метод предназначено ключевое слово "of object" (а для вложенных -- "is nested"), см. http://www.freepascal.org/docs... fse17.html
1
|
|
|
35 / 9 / 1
Регистрация: 25.04.2016
Сообщений: 175
|
|
| 26.11.2016, 21:15 | |
|
bormant, большое спасибо!
0
|
|
| 26.11.2016, 21:15 | |
|
Помогаю со студенческими работами здесь
9
Двумерный массив как параметр функции или процедуры Функция подсчета суммы тех столбцов массива, номера которых передаются в функцию как параметр Можно ли вывести выходной параметр процедуры Как изменить параметр процедуры? Фактический параметр процедуры как указатель Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|