Форум программистов, компьютерный форум CyberForum.ru

Процедурный тип - C++

Восстановить пароль Регистрация
Результаты опроса: Ну кто так считает:
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Если каждую итерацию разом
Согласен с утверждением 3 42.86%
Не согласен с утверждением 4 57.14%
Голосовавшие: 7. Вы ещё не голосовали в этом опросе

 
 
Рейтинг: Рейтинг темы: голосов - 50, средняя оценка - 4.78
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
12.02.2010, 06:04     Процедурный тип #1
Не заню, как в c++, в других языках есть понятие "процедурный тип". Процедурным типом называется тип указателя на подпрограмму. Для object pascal есть рекомендация, как описывать такие типы:
при описании процедурного типа, после его имени и знака равенства пишут оператор procedure или function в зависимости от типа подпрограммы, далее в скобках описывают формальные параметры, как в заголовке подпрограммы, причём, имена параметров указываются, но значения не имеют, а имя самой подпрограммы опускается, в типе указателя на функцию после закрывающей скобки указывается тип возвращаемого значения. А для c++ кто нибудь может дать подобную рекомендацию, чтоб прочитать и под любой прототип функции быстро, но качественно слепить процедурный тип? Пример:
Delphi
1
2
3
4
5
6
7
8
9
function f1(x:integer):integer;
begin
        if x>0 then f1:=f1*(x-1) else f1:=1;
end;
function f2(x:integer):integer;
begin
        f2:=x*x;
end;
type a=function (x:integer):integer;
Delphi
1
2
3
4
5
6
var d:a;
e:integer;
begin
       d:=f1;
       e:=d(4);
end;
. Здесь a - процедурный тип. В данном случае, тип указателя на целую функцию с одним целым параметром. Как это делать на c++? Запостите сюда правило + пример.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
12.02.2010, 09:56  [ТС]     Процедурный тип #21
А это нафига? Зачем мне последовательно вызывать несколько функций? Функция всегда нужна одна.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 09:56     Процедурный тип #22
switch (Mode)
{
case 1:return p1[3][4]();
case 2:return p2[3][4]();
case 3:return p3[3][4]();
}
. Где сдесь полиморфизм? Зачем вообще понадобились указатели? Тогда уж проще по именам.
Однозначно здесь нет.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
12.02.2010, 09:58  [ТС]     Процедурный тип #23
Что ты и предлагаешь под видом полиморфизма.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 10:02     Процедурный тип #24
нужна одна.
Тогда о полиморфизме говорить не стоит.

Добавлено через 3 минуты
Представь себе калькулятор с функциональными кнопками, флажками и т.д. при использовании которых должны меняться функции основных кнопок. Обработчик кнопки вызывает.
Такие операции можно произвести и без массива указателей.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
12.02.2010, 10:03  [ТС]     Процедурный тип #25
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Тогда о полиморфизме говорить не стоит.
Как ты умудрился сделать такой вывод? Функция всегда нужна одна, но каждый раз функция может быть нужна разная. Ты же предлагаешь вызывать каждый раз несколько функций, причём, одних и тех же. Так как функции одни и теже, то полиморфизмом как раз не пахнет, а из-за вызова нескольких функций бестолку гоняется стек. Результат: на долю процента сокращается скорость счёта (производительность программы) и больше ни каких эффектов.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 10:10     Процедурный тип #26
Полиморфи́зм (в языках программирования) — взаимозаменяемость функций или объектов с функциями с одинаковым интерфейсом.

Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций».

Добавлено через 3 минуты
А с чего ты взял, что это пример какой то серьезной программы: это демонстрация полиморфного поведения.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
12.02.2010, 10:11  [ТС]     Процедурный тип #27
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Такие операции можно произвести и без массива указателей.
Можно свичем. Но свичи придётся повторять во всех кнопках, а в кнопке "=" свич становится совсем уж гигантским, так как для неё функциональными будут все кнопки, да ещё от нормальных функциональных появляются комбинации. А если ещё несколько кнопок, выполняющих вычисления, зависящие от других кнопок, то этот свич многократно дублируется. Если при этом надо не тупо несколько равенств, а какие-то модификации, то даже выносом свича в специальную функцию ситуацию не исправишь. А так переписал указатели и никаких гвоздёв.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 10:12     Процедурный тип #28
У меня есть интересные программы, но выкладывать их здесь, я не вижу выгоды.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
12.02.2010, 10:15  [ТС]     Процедурный тип #29
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Полиморфи́зм (в языках программирования) — взаимозаменяемость функций или объектов с функциями с одинаковым интерфейсом.
Вот именно. А вовсе не зацикливание одинаковых функций в фиксированную последовательность. Заменяемость, а не вызов вместо одной функции, всех с тем же интерфейсом.

Добавлено через 57 секунд
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций».
А не "одна реализация интерфейса сразу ко всем функциям с одним прототипом".

Добавлено через 1 минуту
Цитата Сообщение от Genius Ignat Посмотреть сообщение
А с чего ты взял, что это пример какой то серьезной программы
Я такого не говорил.
Цитата Сообщение от Genius Ignat Посмотреть сообщение
это демонстрация полиморфного поведения
Поведение как раз изоморфно.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 10:15     Процедурный тип #30
Ладно короче не буду тему раздувать: спорить и т.д.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
12.02.2010, 10:16  [ТС]     Процедурный тип #31
Цитата Сообщение от Genius Ignat Посмотреть сообщение
У меня есть интересные программы, но выкладывать их здесь, я не вижу выгоды.
Правильно. Серьёзные проекты пусть сами пишут. А кто совсем ничего не может - пусть покупают.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 10:23     Процедурный тип #32
Ты же предлагаешь вызывать каждый раз несколько функций
В каждой итерации работает другая функция.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
12.02.2010, 10:24  [ТС]     Процедурный тип #33
Но за весь цикл все. И при перезапуске цикла опять все. Те же самые и в том же порядке.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 10:36     Процедурный тип #34
Под каждым разом подразумевается разное:
смотря какой раз в плане масштаба.

Если цикл считать разом то ты прав.
Если каждую итерацию разом то я прав.

Добавлено через 1 минуту
Опровержений нет: программа не того масштаба что бы споры заводить.

Добавлено через 2 минуты
Полиморфизм в каждой итерации цикла на лицо.
Доказать обратное ты не сможешь.

Добавлено через 5 минут
На то и мини, я бы даже это назвал микро полиморфизм относительно данного случая:
так как смена поведения в цикле не несет ни какого толку, это если рассматривать данную программу.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
12.02.2010, 10:44  [ТС]     Процедурный тип #35
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Если каждую итерацию разом то я прав
Ну кто так считает? Между иттерациями твоего цикла нельзя ни посмотреть, какие значения в каких переменных валяются, ни принять решение о том, что часть иттераций не нужна. Так зачем же иттерациями считать. Да и по-моему не иттерации это. Иттерацией, насколько мне известно, называется "шаг цикла при постепенном приближении к конечному результату", то есть каждая иттерация должна уточнять ответ, а у тебя выполняются другие операции.

Добавлено через 4 минуты
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Полиморфизм в каждой итерации цикла на лицо.
Как и на каждом такте при исполнении кода, соответствующего любому более менее сложному оператору языка высокого уровня. Ты же тактами не считаешь?

Добавлено через 31 секунду
Цитата Сообщение от Genius Ignat Посмотреть сообщение
не несет ни какого толку
О чём и речь.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 10:54     Процедурный тип #36
не несет ни какого толку.
Так как программа не несет смысл: она нечего нужного не выполняет.

Добавлено через 3 минуты
p->ExitTheme("UnKnown Problem of dispute");
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
12.02.2010, 11:12  [ТС]     Процедурный тип #37
Блин. Прикрутил закрытый опрос, а хотел открытый. Модераторы, можете исправить?
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8504 / 2171 / 61
Регистрация: 07.03.2007
Сообщений: 10,838
Завершенные тесты: 1
12.02.2010, 12:34     Процедурный тип #38
taras atavin,

Не по теме:

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

Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 12:39     Процедурный тип #39
Экий чел вырвал кусок текста и что там понятно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2010, 04:41     Процедурный тип
Еще ссылки по теме:

Узнать тип значения, зная тип указателя C++
Как сконвертировать свой тип в тип double? C++
Не могу преобразовать тип char в тип double C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.02.2010, 04:41  [ТС]     Процедурный тип #40
Lord_Voodoo, тогда лучше так: "раз это:
1. Одна иттерация.
2. Весь цикл.
3. Вся функция, в которой этот цикл валяется.
4. Событие операционной системы". И сделайте его открытым. Мой голос - за второй ответ, а других ответов пока нет.
Yandex
Объявления
15.02.2010, 04:41     Процедурный тип
Ответ Создать тему
Опции темы

Текущее время: 02:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru