Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вс сен 20, 2020 08:49

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Список актуальных задач из Rosetta code
Автор Сообщение
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
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 работает.
Сообщение Добавлено: Вс май 24, 2020 01:20
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
Вводить и складывать два числа через перехват исключений - это сильно. Для этого и нужны тесты вроде RosettaCode. Тут вообще можно ограничиться + . - это если оговорить, что числа вводятся с клавиатуры в консоль, а дальше как принято в Форте. У меня больше строк, да... но это GUI.
Сообщение Добавлено: Вт фев 18, 2020 23:06
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
Hishnik писал(а):
Victor__v писал(а):
Интерпретация строки чисел с перехватом ошибок и восстановлением контекста ФС

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

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

Конечно, можно заморочиться и написать такое слово, только код сложнее будет у меня)
Сообщение Добавлено: Вт фев 18, 2020 16:48
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
Victor__v писал(а):
Интерпретация строки чисел с перехватом ошибок и восстановлением контекста ФС

Явно не хватает слова ReadInt.
Сообщение Добавлено: Вт фев 18, 2020 15:55
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
Цитата:
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
.
;

Интерпретация строки чисел с перехватом ошибок и восстановлением контекста ФС
Сообщение Добавлено: Вт фев 18, 2020 11:06
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
http://www.rosettacode.org/wiki/A%2BB

Task
Given two integers, A and B.

Their sum needs to be calculated.


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

1 LABEL.SHOW
80 20 50 20 1 LABEL.RECT
" B" 1 LABEL.TEXT

2 LABEL.SHOW
200 40 100 25 2 LABEL.RECT

0 TEXTEDIT.SHOW
0 40 50 25 0 TEXTEDIT.RECT

1 TEXTEDIT.SHOW
60 40 50 25 1 TEXTEDIT.RECT

0 BUTTON.SHOW
120 40 50 25 0 BUTTON.RECT
" A+B" 0 BUTTON.TEXT

VARIABLE FLAG
CREATE $BUF 256 ALLOT

: GETA
  FLAG OFF
  FLAG SETFLAG $BUF 0 0 TEXTEDIT.GETLINE BEGIN FLAG @ UNTIL
  $BUF STR>
;

: GETB
  FLAG OFF
  FLAG SETFLAG $BUF 0 1 TEXTEDIT.GETLINE BEGIN FLAG @ UNTIL
  $BUF STR>
;

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

" GETA GETB + SHOWRESULT" 0 BUTTON.ACTION



Вложения:
rosetta_aplusb.png
rosetta_aplusb.png [ 2.77 Кб | Просмотров: 2198 ]
Сообщение Добавлено: Вт фев 18, 2020 02:22
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
mOleg писал(а):
А чем раздел Конкурс решения задач не угодил?

RosettaCode содержит несколько побольше задач, там есть примеры на других языках, и в силу участия огромного количества программистов задачи видятся более показательными.
Сообщение Добавлено: Вс фев 16, 2020 17:11
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
А чем раздел Конкурс решения задач не угодил?
Сообщение Добавлено: Вс фев 16, 2020 17:05
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
http://www.rosettacode.org/wiki/Draw_a_pixel

Код:
0 50 320 240 0 IMAGE.RECT
0 IMAGE.CLS
100 100 0xFF0000 0 IMAGE.SETPIXEL
0 IMAGE.SHOW


Вложения:
rosetta_drawpixel.png
rosetta_drawpixel.png [ 3.5 Кб | Просмотров: 2334 ]
Сообщение Добавлено: Сб фев 15, 2020 04:18
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
Victor__v писал(а):
: FACT CELLS [ LIT, ] + @ ;

Вобщем, я у себя уже запустил :)
Сообщение Добавлено: Пт фев 14, 2020 13:06
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
А предназначение LITERAL как раз в компиляции чего-то там в словах.
Что-то в G перемудрили
Сообщение Добавлено: Пт фев 14, 2020 12:25
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
Victor__v писал(а):
f02732 писал(а):
Нет, не прокатит.

А нафига там вообще слово LITERAL используется, если не для компиляции чисел из входного потока?

Да не об этом речь же, в gforth : оставляет на стеке свои служебные данные.
Сообщение Добавлено: Пт фев 14, 2020 12:15
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
f02732 писал(а):
Нет, не прокатит.

А нафига там вообще слово LITERAL используется, если не для компиляции чисел из входного потока?
Сообщение Добавлено: Пт фев 14, 2020 12:08
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
Нет, не прокатит.
Сообщение Добавлено: Пт фев 14, 2020 11:57
  Заголовок сообщения:  Re: Список актуальных задач из Rosetta code  Ответить с цитатой
f02732 писал(а):
Не очень красиво, когда в одной системе код работает, а другой -нет. Даже если я в gforth добавлю LIT, то работать всё равно не будет, в нём : хранит на стеке служебные данные.

Заменить тогда фрагмент [ LIT, ] на LITERAL
Уж это gforth должен схавать
Сообщение Добавлено: Пт фев 14, 2020 11:07

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


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