Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср апр 24, 2024 08:45

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Простая математическая задача на Forth
СообщениеДобавлено: Вс ноя 22, 2009 11:36 
Не в сети

Зарегистрирован: Вс ноя 22, 2009 08:55
Сообщения: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Добрый день уважаемые Forth программисты.
Я программирую на Java+Flex, но так вышло, что встала задача решения простой математической задачи и именно на Forth. При всем уважении к языку Forth, нет ни времени ни желания изучать синтаксис и методологию языка для решение единожды вставшей задачи.
Если кого ни будь не затруднит выложить листинг реализации задачи:
"Вычисление квадратного корня из целого числа. (число должно быть введено, результат выведен)"
Буду очень признателен, в случае необходимости готов дать ответную консультацию по языкам mxml, AS3, Java.
Спасибо за внимание.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 22, 2009 12:17 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
речь о конкретном диалекте Форта? (в смысле для какого конкретно компилятора нужно решение?)
как должен производиться ввод и вывод числа?

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 22, 2009 12:45 
Не в сети

Зарегистрирован: Вс ноя 22, 2009 08:55
Сообщения: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия Gforth (version 0.6.2, August 25, 2003).
Ввод\вывод любым способом (предпочтительно консоль)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 22, 2009 12:57 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
угу, если консоль то с вводом выводом вообще проблем нет, так как Форт система интерактивная

возможно вам подойтет лучше всего вот этот текст выдержка оттуда:

Цитата:
Example 3. Square Root

There are many ways to take the square root of an integer. The special routine here was first discovered by Wil Baden. Wil used this routine as a programming challenge while attending a FORML Conference in Taiwan, 1984.

This algorithm is based on the fact that the square of n+1 is equal to the sum of the square of n plus 2n+1. You start with an 0 on the stack and add to it 1, 3, 5, 7, etc., until the sum is greater than the integer you wished to take the root. That number when you stopped is the square root.
<pre>
: SQRT ( n1 -- n2, n2**2<=n1 )
0 ( initial root )
SWAP 0 ( set n1 as the limit )
DO 1 + DUP ( refresh root )
2* 1 + ( 2n+1 )
+LOOP ( add 2n+1 to sum, loop if )
; ( less than n1, else done )
</pre>
The definite loop structure:

( limit index ) DO <repeat-clasue> ( inc ) +LOOP

is very similar to the DO...LOOP sructure in repeating the repeat-clause. The difference is that +LOOP increments the index by the number on the top of the data stack. It thus allow the loop index to be incremented or decremented by an arbitrary amount computed at the run time. +LOOP terminates the loop when the incremented index is equal to or greater then the limit.

Wil uses +LOOP in an unconventional way. Here the index is used as an accumulator, adding up the sequence of (2n+1) until the sum exceeds n1. At this point, n2 left on the stack is the square root of n1.


Exercise 2. Newton's method to find the square root is a very common method used in computers. If r1 is an approximation to the square root of n, then a better approximation is:

r2 = ( r1 + n/r1 ) /2

See if you can write a program to find the square root this way.

Exercise 3. Cube and power of 4 of integers can run out of the single interger range very quickly. It is therefore not a bad idea to find the cubic roots or power of 4 roots by raising consecutive integers to the 3rd or 4th power and compare them to the integer you want to take the root. Write new instruction CubicRoot to find the cubic root of any positive integer. Try the same for the root of 4th power as well.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 22, 2009 12:58 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
то есть в консоли надо набрать сначала текст слова SQRT
а потом просто:

число SQRT .

число должно быть положительным 8)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 22, 2009 15:43 
Не в сети

Зарегистрирован: Вс ноя 22, 2009 08:55
Сообщения: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Большое спасибо за помошь)))


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 22, 2009 15:56 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Deidara писал(а):
При всем уважении к языку Forth, нет ни времени ни желания изучать синтаксис и методологию языка для решение единожды вставшей задачи.

К слову. Изучение Форта полезно для любого программиста, желающего знать и понимать то, как работают используемые им инструменты, а также тонкости работы компьютера. Это позволяет оптимальнее и эффективнее их использовать, а так же совершенствовать уже имеющиеся инструменты и создавать новые.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

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


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

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


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

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