Вниз  MIDlet Pascal
- 3.11.2015 / 21:11
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
RblSb, в смысле "зачем"? У меня есть код:
  1. 100 a$="trulala"
  2. 200 print a$
  3. 300 print a$+a$
  4. 400 goto 200
В паскале он бы выглядел так:
  1. program bulala;
  2. label
  3.   m1;
  4. var
  5.   a: string;
  6. begin
  7. m1:
  8.   a:="trulala";
  9.   println (a);
  10.   println (a+a);
  11.   goto m1;
  12. end.
А как в мидлете сделать? Процедуры пробовал, но у меня начинается рекурсия, и в конце-концов ломается обработка пунктов меню, а затем и логика мидлета.
__________________
 わからない!!
- 4.11.2015 / 01:00
Kalter
  Пользователь

Kalter 
Сейчас: Offline
ЕМНИП, никак. mp3ide подсвечивает goto, но сам компилятор в него не могёт. А именно в данном случае goto образовывает бесконечный цикл, который в MIDlet Pascal реализовывается с помощью while true или repeat + until false / forever . Понимаю что это не ответ, но я не припоминаю случаев, когда приходилось бы использовать безальтернативное goto.
__________________
 Homo homini penis est.
- 4.11.2015 / 03:56
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
Kalter, случай я выше написал. Если подпрограмму в бейсике можно написать в виде процедуры/функции, то вот такой код я хз как
__________________
 わからない!!
- 4.11.2015 / 05:38
RblSb
  Пользователь

RblSb 
Сейчас: Offline
ВитаминКО, случай выше можно реализовать циклом. И раз уж ты не можешь нормально ответить, зачем тебе гото, то скажу сразу - бейсик слишком хорош, чтобы его код реализовался в етих ваших паскалях и жабах ;-)
- 4.11.2015 / 13:31
19Ram84
  Пользователь

19Ram84 
Сейчас: Offline
Эх добавили бы ещё, интерпритатор применяемый на стадии разработки, было бы ваще супер :hack:
- 4.11.2015 / 14:06
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
RblSb, окей, тот код можно в цикле :) А как такой? :gg:
  1. 100 MENU1%=SELECT ("Меню 1", "Пункт 1.1", "Пункт 1.2", "Пункт 1.3")
  2. 200 IF MENU1%=0 THEN GOTO 600
  3. 300 IF MENU1%=1 THEN GOTO 1100
  4. 400 IF MENU1%=2 THEN GOTO 1500
  5. 500 GOTO 100
  6.  
  7. 600 MENU2%=SELECT ("Меню 2", "Пункт 2.1", "Пункт 2.2", "Пункт 2.3")
  8. 700 IF MENU2%=0 THEN GOTO 5000
  9. 800 IF MENU2%=1 THEN GOTO 8000
  10. 900 IF MENU2%=2 THEN GOTO 100
  11. 1000 GOTO 600
  12.  
  13. 1100 MENU3%=SELECT ("Меню 3", "Пункт 3.1", "Пункт 3.2")
  14. 1200 IF MENU3%=0 THEN GOTO 3000
  15. 1300 IF MENU3%=1 THEN GOTO 3500
  16. 1400 GOTO 1100
  17.  
  18. 1500 MENU4%=SELECT ("Меню 4", "Пункт 4.1", "Пункт 4.2")
  19. 1600 IF MENU4%=0 THEN GOTO 100
  20. 1700 IF MENU4%=1 THEN GOTO 1900
  21. 1800 GOTO 1500
Это, конечно, тривиальный пример, но так устроена навигация в моббейсике, если используются меню. В мидлетпаскале я без циклов делал все, на процедурах, но, как-то не так, что ли.. При компиляции начинается рекурсия и, если все собралось, то либо в течении какого-то времени начинает тормозить до полного отказа переходить по пунктам, либо не запускается.
В общем, нужен пример навигации, как выше, только на этом паскале :gy:
:ps: Вот код на паскале, который на данный момент :кек2:
Показать бiдлокод
Это можно как-то улучшить?
__________________
 わからない!!
- 5.11.2015 / 17:51
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
19Ram84, и получился бы такой же "тяжеловесный" бейсик :hack: Здесь суть как раз в компиляции.

В общем, ясно, либо всем до лампочки на мою просьбу, либо реально никто не знает, как правильно сделать
__________________
 わからない!!
- 5.11.2015 / 18:53
RblSb
  Пользователь

RblSb 
Сейчас: Offline
ВитаминКО, нужно програмно анализировать бейсиковый код так, чтобы анализатор понимал, как разделить код на функции и где еще вставить циклы. Любой ли код можно так преобразовать - хз. Уже все это давно обсуждали, используй поиск.
- 5.11.2015 / 21:28
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
RblSb, гугол говорит мне, что в таком случае можно Goto использовать, но суть как раз в том, что его дефолтно нету именно в мидлетпаскале.

Ладно, буду упрощать код, может, получится что. Понимаю, что проще сразу на яве написать, там то попроще будет, но мне принципиально надо именно на мп это сделать. Спасибо.
__________________
 わからない!!
- 6.11.2015 / 00:23
19Ram84
  Пользователь

19Ram84 
Сейчас: Offline
Думаю не получился бы, как бейсик :)
Так как бейсик применяет интепритатор, и в самом собранном мидлете.
А мп применял бы его только на уровне написания кода, а затем компилит его в класс файл.
Просто писать код на угад, может только уже профи.
Для новичков же писать на угад не очень :-(
Напишет код, а он вдруг кривой выйдет, а сотни раз превефицировать и опять пихать в архив, нервы сдадут :-D
Я понимаю что конечно интерпритатор добавить тяжело, но его наличие даст мп 100 очков перед мб, и тысячи юзверей мб, скажут тебе спасибо
Простой пример, когда мы перед установкой ос, тестим её б виртуалбоксе, мы же задумываемся о скорости? Также и здесь на стадии наоисания смотрим как работает код(мы же не будем на нём работать) а затем собираем в мидлет, где скорость уже будет другая.

Изменено 19Ram84 (6.11 / 00:31) (всего 1 раз)
Наверх  Всего сообщений: 1594
Фильтровать сообщения
Поиск по теме
Файлы топика (72)