Вверх ↑
Этот топик читают: Гость
Ответов: 5227
Рейтинг: 587
#1: 2008-05-27 15:10:05 ЛС | профиль | цитата
Не получается сделать переход на процедуру из цикла, подскажите пожалуйста если не трудно
вот примерно такой код


#pas
program test;

procedure prog1; //это называется предописание

procedure prog3;
var a:integer;
begin
while TRUE do
begin
// как сделать выход из этого цикла в процедуру procedure prog1; например по
// по условию (if a = 10) ( then procedure prog1; не срабатывает )
if a = 10 then prog1;
end;
end;

procedure prog2;

begin
...
prog3;
...
end;

procedure prog1; //а это - просто описание

begin
...
prog2;
...
end;

// вход в прогр.

begin
procedure prog1;
end.
пробовал и через goto но метку похоже неправильно ставлю
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 26067
Рейтинг: 2121
#2: 2008-05-27 15:50:12 ЛС | профиль | цитата
andrestudio, а откуда ты вызываешь prog3
карма: 22

0
Ответов: 2057
Рейтинг: 28
#3: 2008-05-27 15:53:26 ЛС | профиль | цитата
andrestudio, процедуру prog1 должна быть выше процедуры prog3. Иначе компилятор её не видет и думает что её нет вообще.

#pas
program test;

procedure prog1;
begin
...
end;

procedure prog3;
begin
while TRUE do
begin
if a = 10 then prog1;
end;
end;

procedure prog2;
begin
...
end;



end.
карма: 1

0
файлы: 1code_9152.txt [318B] [288]
Ответов: 5227
Рейтинг: 587
#4: 2008-05-27 16:14:15 ЛС | профиль | цитата
Эдик, так и есть все вызовы из младшей в старшую процедуру у меня работают, вся сложность у меня обратно в первую процедуру улететь , nesco, в моей программе процедура prog3 вызывается из prog2 по условию и prog2 вызывается из prog1 соответственно, может как нибудь через метку ?, объявляю вроде как положенно после переменных, но где её воткнуть тяму не хватает , может есть ещё варианты какие?
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 16884
Рейтинг: 1239
#5: 2008-05-27 17:29:55 ЛС | профиль | цитата
так как ты при входе в prog3 объявляешь все время var a:integer;, то "a" никогда не будет = 10 (если с ним не производится никаких действий) и
if a = 10 then prog1; до лампочки

if a = 10 then prog1 else a:=a+1; попробуй-так сработает или нет ?

------------ Дoбавленo:

Огласите весь список, пожалуйста...
т.е. полностью текст prog3
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5227
Рейтинг: 587
#6: 2008-05-27 17:47:00 ЛС | профиль | цитата
Tad, пример утрирован, компилятор для микрокантроллера AVR, курсовой у студента заваливается решил помочь так как человек хороший, проверил структуру с предописанием, компилятор пишет типа - фига тебе, такая процедура у тебя уже обьявлена , блин эту программу накалякал за обеденный перерыв проверил в эмуляторе всё работает а с прыжком в нужную процедуру уже битых два часа долбаюсь (тяму то нет), а прошивка завтра в край нужна в четверг ему курсовой сдавать а ещё надо успеть железяку спаять, вобщем конечно не сдаюсь но пока нечего не выходит Вод что я накалякал

code_9154.txt
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
файлы: 1code_9154.txt [5.1KB] [371]
Ответов: 16884
Рейтинг: 1239
#7: 2008-05-27 18:16:35 ЛС | профиль | цитата
А где определена функция Delay_ms ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5227
Рейтинг: 587
#8: 2008-05-27 18:25:03 ЛС | профиль | цитата
Delay_ms это библиотечная функция, определять необезательно, немогу прыгнуть из цикла в процедуре "procedure Led_Out_Cent;" в процедуру procedure Right_Led; ,
если метку на ASM сделать, всё короче параноя у меня уже
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 26067
Рейтинг: 2121
#9: 2008-05-27 19:16:20 ЛС | профиль | цитата
andrestudio, насколько я понял, то у тебя проблема с рекурсией, ты пытаешься закольцевать все методы, не имея условия выхода, если они у тебя идут последовательно, то почему их нельзя поставить последовательно в главном цикле, а закольцевать с услвием выхода каждый светодиодный обработчик
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#10: 2008-05-27 19:24:54 ЛС | профиль | цитата
nesco писал(а):
у тебя проблема с рекурсией
это не рекурсия, а черт знает что
А так попробовать code_9156.txt

Или считать число нажатий кнопки смены режима

nesco, подскажи, как вствлять в тэги code, чтобы точно знать куда попадет - в txt -файл или в code ?
( автоматика достает )
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_9156.txt [575B] [208]
Ответов: 5227
Рейтинг: 587
#11: 2008-05-27 19:25:33 ЛС | профиль | цитата
Да проблема с рекурсией, изначально у меня видать скелет неправельно сделан, пробую переделать откажусь от процедур (кроме процедуры обработки прерываний по таймеру ) остальное в цикле и с вложенными циклами постараюсь сделать теже эфекты, незнаю что получится пока.
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 26067
Рейтинг: 2121
#12: 2008-05-27 19:37:29 ЛС | профиль | цитата
Tad писал(а):
подскажи, как вствлять в тэги code, чтобы точно знать куда попадет

Первый раз текст с тэгом code попадает в *.txt, чтобы он туда не попадал, необходимо вместо code поставить scode, а затем зайти повторно и снова исправить на code, тогда у тебя появится раскрывающеся окно. После первого "просто code" файл находится в аттаче и для прямого редактирования недоступен.
карма: 22

0
Ответов: 2057
Рейтинг: 28
#13: 2008-05-27 19:39:45 ЛС | профиль | цитата
Tad писал(а):
nesco, подскажи, как вствлять в тэги code, чтобы точно знать куда попадет - в txt -файл или в code ?
( автоматика достает )

Если нажимешь на CODE и выбираешь сразу что либо, то это попадёт в txt -файл.
Что бы не попадало, поставь галку "статический"
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#14: 2008-05-27 19:43:35 ЛС | профиль | цитата
nesco писал(а):
чтобы он туда не попадал, необходимо вместо code поставить scode,а затем зайти повторно и снова исправить на code, тогда у тебя появится раскрывающеся окно.
Эдик писал(а):
Что бы не попадало, поставь галку "статический"
Вообщем, как говорит Galkov, танцы с бубном
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 2057
Рейтинг: 28
#15: 2008-05-27 19:45:22 ЛС | профиль | цитата
Tad писал(а):
вместо code поставить scode

Tad писал(а):
поставь галку "статический

Это одно и тоже.
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)