Переход на метку без возврата
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Переход на метку без возврата

Переход на метку без возврата

Ответ
Поиск в этой теме
Непрочитано 31.08.2010, 10:48 #1
Переход на метку без возврата
Zaghim
 
Регистрация: 01.07.2010
Сообщений: 521

Скажите, каким образом можно уйти на метку, выполнить там какие-либо действия и не возвращаться назад?

Допустим в такой конструкции
(alert "Ошибка")
(errexit)
.........

(defun errexit ()
..........
)

После завершения куска errexit программа автоматом вернется на ту строку, которая на нее ссылалась и продолжит выполнение команд ниже. А как сделать, что бы она не возвращалась?
Просмотров: 4777
 
Непрочитано 31.08.2010, 11:56
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Вызови ф-ции (exit) или (quit)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 31.08.2010, 13:37
#3
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Цитата:
Вызови ф-ции (exit) или (quit)
А эти функции абсолютно идентичны или между ними есть какое-то различие?
E-degtyarev вне форума  
 
Непрочитано 31.08.2010, 13:41
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Если различие и есть, то мне о нем неизвестно.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 31.08.2010, 13:43
#5
Zaghim


 
Регистрация: 01.07.2010
Сообщений: 521


Выход понятно. Но мне нужно остаться на той метке и там работать дальше... потому что после строки, которая вызывает этот кусок дальше идут команды, а мне нужно что бы они не выполнялись.
Zaghim вне форума  
 
Непрочитано 31.08.2010, 13:52
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


используй cond while if. Попробуй изменить алгоритм.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 31.08.2010, 13:56
#7
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Насколько мне известно в Автолиспе перехода типа GO TO -> Label не существует.
Я объединяю группы "команд", а точнее стандартных функций в функции, а затем (if (...) (первая функция) (вторая функция)) и т.п.
E-degtyarev вне форума  
 
Непрочитано 31.08.2010, 14:16
#8
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от E-degtyarev Посмотреть сообщение
Насколько мне известно в Автолиспе перехода типа GO TO -> Label не существует.
И слава богу...
то автор в этой подтеме слово метка - почти ругательное - есть имена функций, если пишешь на лиспе забудь про метки - это как минимум, следующим этапом будет забыть про циклы (в классическом их понимании - в лиспе они несколько по другому представленны), ну и на последок - ты не поверишь - про переменные тоже надо забывать (в лиспе есть аргументы функций - это несколько другое).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 31.08.2010, 14:57
#9
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от VVA Посмотреть сообщение
Если различие и есть, то мне о нем неизвестно.
Различия нет. Две разноименных функции предусмотрены, чтобы одну из них можно было переопределить (дописав какие-то действия), а потом вызвать вторую для выхода.

Мне так каааэтся.

Цитата:
И слава богу...
Правильно, Дима_. Так их, с "метками".
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 31.08.2010, 16:16
#10
Zaghim


 
Регистрация: 01.07.2010
Сообщений: 521


Ок. Тогда вопрос поставлю по-другому. Вот у вас программа, она что-то чертит. Вы задали точки, она по ним отрисовала. Но, допустим, вам не понравилось как она нарисовала, вы хотите отменить (стереть) начерченное и вернуться в начало программы на задание исходных точек. Как быть? По ходу программы, как было выше, случилась у меня ошибка, я все стираю и хочу вернуться к началу программы. Вроде просто, указал метку и пошел в начало, а ведь программа отработает сначала, а потом вернется туда, где была ошибка...
Zaghim вне форума  
 
Непрочитано 31.08.2010, 16:32
#11
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Как программа поняла что "случилась у меня ошибка"?
p.s. погугли (или например википедия) что такое рекурсия и лямбда функции. Посмотри коды с этого форума, большинство вопросов отпадет само собой.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 31.08.2010, 16:57
#12
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Zaghim Посмотреть сообщение
Но, допустим, вам не понравилось как она нарисовала, вы хотите отменить (стереть) начерченное и вернуться в начало программы на задание исходных точек. Как быть?
Стереть - не правильно. Правильно - отменить [undo] (как это делается,например, в команде отрезок [line])
Для этого есть специальная команда _UNDO и ее опции. Например _Undo _Mark и _Undo _Back. А так же переменная UNDOMARKS. Пример программы с их использованием
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 31.08.2010, 17:09
#13
Zaghim


 
Регистрация: 01.07.2010
Сообщений: 521


VVA: Вопрос не в том, как я буду делать - стирать или отменять, это мое дело, для меня разницы никакой.
Дима: Ок, спасибо, посмотрю.
Zaghim вне форума  
 
Непрочитано 31.08.2010, 18:57
#14
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Zaghim, посмотри Ctrl+Z в процессе выполнения функции. Как?
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Автор темы   Непрочитано 01.09.2010, 09:06
#15
Zaghim


 
Регистрация: 01.07.2010
Сообщений: 521


Да как все стереть (отменить) - это я реализовал, и, по-другому. Вопрос в том, как бы после стерания всего свалить на начало)
Zaghim вне форума  
 
Непрочитано 01.09.2010, 11:14
#16
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


вызвать функцию "начало"
p.s. я серьезно

(функция "запрос данных")
(функция "рисование")
(функция "проверка на ошибку")
(функция "откат рисования")

(ФУНКЦИЯ НАЧАЛО
(запрос данных)
(функция рисования)
(if (проверка на ошибку)
((откат рисования) (НАЧАЛО));действия при ошибке
(ЗДЕСЬ ДЕЙСТВИЯ ЕСЛИ НЕТ ОШИБКИ (НАПРМЕР НИЧЕГО - ВЫХОД));действия если нет ошибки
);конец if
);конец НАЧАЛО
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 01.09.2010 в 11:26.
Дима_ вне форума  
 
Автор темы   Непрочитано 01.09.2010, 11:27
#17
Zaghim


 
Регистрация: 01.07.2010
Сообщений: 521


)) А когда завершится функция начало, ты вернешься в откат рисования, сразу за меткой перехода на начало! ... т.е. твоя программа отработает, а потом дорисует (если дорисует) с того момента, когда уходил на начало...
Zaghim вне форума  
 
Непрочитано 01.09.2010, 11:29
#18
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


посмотри еще раз повнимательней - после вызова начало ничего нет - выход
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 01.09.2010, 11:38
#19
Zaghim


 
Регистрация: 01.07.2010
Сообщений: 521


У меня немножко другой случай...но в общем-то я разобрался... Только работает криво, иногда нормально делается откат иногда выдается такая ошибка, не знаешь, что она значит?
error: stream is closed: #<FILE internal>
Zaghim вне форума  
 
Непрочитано 01.09.2010, 11:45
#20
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


пишешь в закрытый файл
по поводу отката см. пункт 12
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 01.09.2010, 11:57
#21
Zaghim


 
Регистрация: 01.07.2010
Сообщений: 521


Блин, вообще я в файл ничего не пишу, только читаю из него, и, думал, что я его наоборот не закрываю...
Zaghim вне форума  
 
Непрочитано 01.09.2010, 12:01
#22
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


без кода лечить сложно будет
собственно для этого в лиспе и нет меток, функция должна быть целиковой - результат должен зависеть ТОЛЬКО от входящих аргументов, ссылок ни на какие "переменные" быть не должно (как для чтения так и для установки данных), тогда того гемороя о каком ты пишешь (иногда работает иногда нет) не будет.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Переход на метку без возврата



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Железобетонные подкрановые балки. Без предварительно напряженной арматуры!? Розмысл Железобетонные конструкции 9 14.08.2019 22:42
Монолитный Ж/Б каркас многоэтажки без вертикальных связей? depak Железобетонные конструкции 35 11.10.2018 13:35
Серия 1.460.3-23.98 без прогонов Xo66iT Прочее. Архитектура и строительство 5 15.11.2016 09:53
Проект без АПЗ, а строительство без разрешения, стоит ли? HG Прочее. Архитектура и строительство 23 22.03.2010 16:59
Неужели ОВ-шники обходятся без Лиспа? Danilin LISP 19 16.02.2006 20:38