Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт июл 10, 2020 16:28

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Вт фев 18, 2020 11:06 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1002
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Цитата:
Given two integers, A and B.

Their sum needs to be calculated.


Для Nova-forth
Код:
: CATCH: R> CATCH ;

: PLUS:
['] THROW >R
'CR' PARSE FROM ParseBuff.simb KEEP! FROM ParseBuff KEEP!
0 >IN KEEP!
CATCH:
0 BEGIN PARSE-NAME DUP WHILE STR>NUM THROW + REPEAT 2DROP
.
;

Интерпретация строки чисел с перехватом ошибок и восстановлением контекста ФС

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Вт фев 18, 2020 15:55 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6942
Благодарил (а): 17 раз.
Поблагодарили: 112 раз.
Victor__v писал(а):
Интерпретация строки чисел с перехватом ошибок и восстановлением контекста ФС

Явно не хватает слова ReadInt.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Вт фев 18, 2020 16:48 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1002
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Hishnik писал(а):
Victor__v писал(а):
Интерпретация строки чисел с перехватом ошибок и восстановлением контекста ФС

Явно не хватает слова ReadInt.

STR>NUM \ A U -- num err|0

Конечно, можно заморочиться и написать такое слово, только код сложнее будет у меня)

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Вт фев 18, 2020 23:06 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6942
Благодарил (а): 17 раз.
Поблагодарили: 112 раз.
Вводить и складывать два числа через перехват исключений - это сильно. Для этого и нужны тесты вроде RosettaCode. Тут вообще можно ограничиться + . - это если оговорить, что числа вводятся с клавиатуры в консоль, а дальше как принято в Форте. У меня больше строк, да... но это GUI.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Список актуальных задач из Rosetta code
СообщениеДобавлено: Вс май 24, 2020 01:20 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6942
Благодарил (а): 17 раз.
Поблагодарили: 112 раз.
Rosetta Code оказался эффективным мотиватором для изменения нового Кварка :)
Вариант кода с чуть улучшенным взаимодействием виджетов.



Код:
0 LABEL.SHOW
20 40 100 40 0 LABEL.RECT
" A" 0 LABEL.TEXT

1 LABEL.SHOW
180 40 100 40 1 LABEL.RECT
" B" 1 LABEL.TEXT

2 LABEL.SHOW
300 40 100 40 2 LABEL.RECT

0 TEXTEDIT.SHOW
0 80 100 40 0 TEXTEDIT.RECT

1 TEXTEDIT.SHOW
120 80 100 40 1 TEXTEDIT.RECT

0 BUTTON.SHOW
320 80 100 50 0 BUTTON.RECT
" A+B" 0 BUTTON.TEXT

VARIABLE FLAG
FLAG OFF

: WAITGUI BEGIN FLAG @ UNTIL FLAG OFF ;

: EDIT.GETLINE
  FLAG SETFLAG
  TEXTEDIT.GETLINE WAITGUI
;

CREATE $BUF 256 ALLOT

: GETA
  $BUF 0 0 EDIT.GETLINE
  $BUF STR>
;

: GETB
  $BUF 0 1 EDIT.GETLINE
  $BUF STR>
;

: SHOWRESULT
  $BUF >STR
  $BUF 2 LABEL.TEXT
;

" GETA GETB + SHOWRESULT" 0 BUTTON.ACTION


Теперь чтение строки "обернуто" в еще одно слово. После некоторых позиционных войн с Qt выяснилось, что взаимодействие потоков не так просто, и заставить Qt "прокачивать" очередь сообщений не особенно удается, если Форт-машина при этом стоит. А она стоит, потому что ждет реакции на запрос (например, содержимого TextEdit). Скомпилировать серию вызовов на C++ в целом не получается, а вот слово EDIT.GETLINE работает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3, 4

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB