singlepost

Как в паскале вернутьсяиз процедуры в другую процедуру которая выполнялась перед этим? << На главную или назад  

Подскажите,как в паскале вернутьсяиз процедуры в другую процедуру которая выполнялась перед этим?

35 ответов в теме “Как в паскале вернутьсяиз процедуры в другую процедуру которая выполнялась перед этим?”

  1. 33
    Сергей Бударецкий ответил:

    Кирилл Brawaga Быков, я кажись понял.Всем также спасибо за советы

  2. 32
    Кирилл Быков ответил:

    Коллега, с вами я меряться не собираюсь, опасаюсь быть поверженным прилюдно :-D , ибо чувствую за вами определённый фаллометрический потенциал ;) . Парню надо было на пасквиле, я ему выдал на пасквиле, к вашему сюшному коду притензий не было, возможно даже, он безупречен, хотя предвариловку достаточно было сделать для одной
    функции (Так-то! К.О.).

  3. 31
    Леонид Максимов ответил:

    Кириллу Быкову:

    будем меряться? :)

    > почитайте о предварительном объявлении.
    > например, в C это выглядело бы так:

    код привел на C, поскольку на паскале по памяти не могу писать.

    Кстати, Бударецкому:

    паскаль не поддерживает хвостовую рекурсию, а посему приведенный код быстро-быстро загнется с переполнением стека.

  4. 30
    Кирилл Быков ответил:

    Бударецкому.
    Если не канает, значитo, ФМГ1 и DNA-epic-failure2. Потому что в паскале это делается именно так.

    Леониду Максимову.
    Именно это я и написал. Только уже готовым кодом.

    Снова Бударецкому.
    Если ориентироваться на твой код, то ты не конкретизируешь свой вопрос, а в корне неверно его формулируешь (хочешь чтобы выполнялась после, а не во время, организуй вызов после, а не из), что, в общем, подтверждает3 диагноз (см. 0..2)
    ────────────
    0) Постановка диагноза
    1) Это заболевание не поддаётся лечению.
    2) Имеются экспериментальные методики снижения симптомов в некоторых несложных случаях, но только на некоторое время. Иными словами, лечение требует регулярности, дабы не вызвать эксцесс.
    3) Это подтверждение диагноза.

  5. 29
    Леонид Максимов ответил:

    объявить процедуру menu до процедуры wrt, но описывать ее после.

  6. 28
    Сергей Бударецкий ответил:

    Ещё раз конкретизирую свой вопрос:

    procedure wrt;
    операторы;
    menu;-unknown identifier(если menu убрать прога работает но по
    окончании процедуры wrt программа завершается)
    end;
    procedure menu;
    операторы;
    wrt;
    end;
    begin
    menu;
    end.
    Как сделать чтоб после процедуры wrt опять выполнялась процедура menu?

  7. 27
    Сергей Бударецкий ответил:

    #27 не канает

  8. 26
    Кирилл Быков ответил:

    Пробуй так, я кажется понял, чё те надо.
    procedure wrt;forward;
    procedure menu
    begin
    операторы
    wrt;
    end;
    procedure wrt;
    begin
    операторы
    menu;
    end;

  9. 25
    Леонид Максимов ответил:

    наверно вы обманываете

    procedure menu
    begin
    операторы
    wrt; – пишется здесь
    end;
    procedure wrt;
    begin
    операторы
    menu; – вот тут пишется unkonwn identifier (не правда)
    end;

    суть в том, что вторая процедура используется раньше, чем объявлена. почитайте о предварительном объявлении.

    например, в C это выглядело бы так:

    void menu();
    void wrt();

    void menu(){
    …;
    wrt();
    return;
    }
    void wrt(){
    …;
    menu();
    return;
    }

  10. 24
    Сергей Бударецкий ответил:

    Прикол в том, что если просто в одной процедуре вызвать другую, тона название одной из них пишется unkonwn identifier.Пример:
    procedure menu
    begin
    операторы
    wrt;
    end;
    procedure wrt;
    begin
    операторы
    menu; – вот тут пишется unkonwn identifier
    end;
    простая перестановки их местами ни к чему не приводит…
    Есть тут какое то решение?

  11. 23
    Кирилл Быков ответил:

    Ежу понятно, что в пасквиле по адресу надо. А вызвать — ну так и вызвать!

  12. 22
    Леонид Максимов ответил:

    не имя передавать надо, а адрес

  13. 21
    Евгений Тихонов ответил:

    А вызвать как?

  14. 20
    Кирилл Быков ответил:

    Параметром передать, фигли.

  15. 19
    Евгений Тихонов ответил:

    Нужно наверное знать её имя )

  16. 18
    Кирилл Быков ответил:

    Вызови перед выходом, какие проблемы.

  17. 17
    Женя Гаврилов ответил:

    Попробуй return;

  18. 16
    Леонид Максимов ответил:

    передавайте указатель на первую процедуру во вторую :Ь

  19. 15
    Дмитрий Ерохин ответил:

    (1) ТЗ в студию… Нутром чую, что можно обойтись и без всяких извратов с процедурами.

  20. 14
    Евгений Тихонов ответил:

    Нужно до выхода )

  21. 13
    Александр Васюченко ответил:

    что-то не совсем понимаю, извини…
    в чем проблема? выходи из одной процедуры… вызывай другую процедуру…

  22. 12
    Сергей Бударецкий ответил:

    Наверное дело обстоит так:
    1)Выполняется процедура use_pistol(); (пример)
    2)Выполнилась
    3)Выполняется процедура second();
    4)Нужно снова выполнить первую

    дело именно так и обстоит)
    жду ответа)

  23. 11
    Кирилл Быков ответил:

    "Перед этим" — что "ЭТО"?

  24. 10
    Жека Кирпичев ответил:

    Use the call/cc and shift/reset, Luke! ;)

  25. 9
    Михаил Пеньков ответил:

    Вторая процедура находится в первой, или же вне???

  26. 8
    Евгений Тихонов ответил:

    Наверное дело обстоит так:
    1)Выполняется процедура use_pistol(); (пример)
    2)Выполнилась
    3)Выполняется процедура second();
    4)Нужно снова выполнить первую

    Требую конкретики от аффтара )

  27. 7
    Дима Календо ответил:

    halt завершит работу всей программы..
    очевидно всё-таки exit

  28. 6
    Алексей Андреев ответил:

    exit;

  29. 5
    DELETED DELETED ответил:

    halt

  30. 4
    DELETED DELETED ответил:

    это аналогия return в C

  31. 3
    Леонид Максимов ответил:

    выйти из процедуры, очевидно.

  32. 2
    Евгений Тихонов ответил:

    Вызвать её ещё раз ))

  33. 1
    Александр Васюченко ответил:

    может exit

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.