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

С++ для начинающих

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

 
 
Рейтинг: Рейтинг темы: голосов - 50, средняя оценка - 4.78
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

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

12.02.2010, 06:04. Просмотров 6713. Ответов 44
Метки нет (Все метки)

Не заню, как в 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++? Запостите сюда правило + пример.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2010, 06:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Процедурный тип (C++):

Процедурный тип на функцию содержащую указатель на массив - C++
void WriteEl(stack (*temp), float qwerty, int kol) помогите описать указатель на процедуру :(

тип cout-a ostrieam? соответствено тип cin-a istream? - C++
тип cout-a ostrieam? соответствено тип cin-a istream?

Восьмибитный тип переменной (что за тип, но не BYTE и не CHAR? - C++
Вроде давно занимаюсь программированием на С++, но встала проблема... Есть некий массив переменных имеющих 8 битный размер... без знака...

Какой символьный тип использует тип std::string? - C++
Какой тип данных использует класс String? Char? И написано ли это в в документе #include <string>?

Enum и типы данных. Как задать тип значений явно, и какой тип будет при переполнении? - C++
Пытаюсь сделать функцию с передачей нескольких параметров,используя битовые операции. В качестве параметров думаю использовать не...

Узнать тип значения, зная тип указателя - C++
Здравствуйте! Есть такой код: template<class Iter> void func(Iter first, Iter last) { //... Iter_value_type = *first;...

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

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

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

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

Добавлено через 5 минут
На то и мини, я бы даже это назвал микро полиморфизм относительно данного случая:
так как смена поведения в цикле не несет ни какого толку, это если рассматривать данную программу.
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
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 10:54 #36
не несет ни какого толку.
Так как программа не несет смысл: она нечего нужного не выполняет.

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

Не по теме:

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

Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 12:39 #39
Экий чел вырвал кусок текста и что там понятно.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.02.2010, 04:41  [ТС] #40
Lord_Voodoo, тогда лучше так: "раз это:
1. Одна иттерация.
2. Весь цикл.
3. Вся функция, в которой этот цикл валяется.
4. Событие операционной системы". И сделайте его открытым. Мой голос - за второй ответ, а других ответов пока нет.
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,885
Завершенные тесты: 1
15.02.2010, 08:57 #41
taras atavin, опрос и так открыт, просто вы проголосовали, вот и закрылся опрос, но для вас... а вообще постановка вопроса для опроса не совсем понятна... Надо написать так: "Процедурный тип - это..."? или что значит ваша постановка - "раз это"?
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.06.2010, 06:30  [ТС] #42
А если функция ещё и указатель возращает, то каков тип указателя на неё. Например,
C++
1
int *MyFunc(int x, int y);
Определите, пожалуйста, тип указателя на эту функцию.

Добавлено через 27 минут
Так правильно
C++
1
typedef int*(*p)(int, int);
?
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
10.06.2010, 23:45 #43
Да, Тарас, правильно. Но с указателями на функции нужно быть осторожным, это чертовски полезная возможность, но и очень скользкая часть С++(внутренняя реализация указателей на функции, тем более на функции-члены, написана на ацких хаках и отличается от компилятора к компилятору).

Писать что и как сейчас просто сил нету
v0ltag3
0 / 0 / 0
Регистрация: 26.06.2010
Сообщений: 8
22.12.2010, 11:19 #44
Помогите описать процедурный тип. В формальных параметрах находится указатель на массив, с ним то и возникают проблемы
void WriteEl(stack (*temp)[10], float qwerty, int kol)
ForEveR
В астрале
Эксперт С++
7971 / 4733 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
22.12.2010, 14:50 #45
С++0x.
Что-то вроде такого. Проверить возможности нету вроде еще) На тему синтаксиса не совсем уверен.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
function<void (int x)> fint;
 
void abc(int a)
{
    std::cout<<a<<'\n';
}
 
int main()
{
    fint=&abc;
    fint(5);
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2010, 14:50
Привет! Вот еще темы с ответами:

Как сконвертировать свой тип в тип double? - C++
Можно ли конвертировать свой тип в тип doble? Если да, то каким способом?

Не могу преобразовать тип char в тип double - C++
Вся загвоздка в str1 и str2; #include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include&quot;stdlib.h&quot; #include &quot;cstdlib&quot; #include &lt;iostream&gt; ...

Перечисляемый тип данных.Символьный тип. - C++
1.type месяц = ( янв, фев, мар, апр, май, июн, июл, авг, сен, окт, ноя, дек ); год = (високосный, невисокосный); var d:28..31;...

clrscr(); не определен данный тип и const MAX_ELEMENTS = 4; отсутсвует тип int когда я его туда вписываю у меня больше ошибок вылазит - C++
#include &quot;stdafx.h&quot; #include &lt;ctime&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int main() { const MAX_ELEMENTS = 4; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.12.2010, 14:50
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru