Язык программирования Форт



         

Упражнения


Они могут показаться вам вначале очень простыми, но потом будут усложняться. Если даже они покажутся вам скучными, пожалуйста, проделайте их. Одной из самых важных компонент изучения Форта является освоение работы со стеком настолько, чтобы вы чувствовали себя с ним комфортно, а слова, связанные с манипуляциями в стеке, стали бы вашей второй натурой. Затраченное вами время сторицей окупится впоследствии.

  1. Напишите слово или слова, с помощью которых содержимое стека изменялось бы в соответствии с заданием. Стараи тесь обойтись минимумом слов. (Мы пользуемся здесь буквами вместо чисел, чтобы у вас возникла уверенность, что эти при меры пригодятся и в более общих ситуациях.)

    До После До После До После (а) а b b а (б) а b а b b (в) а b а b а (г) а b а а b (д) а b b b а (е) а b с b с а (ж) а b с а с b (з) а b c с b а (и) а b с b а с (к) а b c с а b (л) а b c а b b c (м) а b с а а b с (н) а b а а b b (о) а b c а а b b с с

  2. Принимая содержимое стека таким, как показано, напишите слово или слова для вычисления выражений. Снова ста райтесь обойтись минимальным количеством слов.

    Стек Выражение Стек Выражение (а) а b ab (б) а b ab^2 (в) а b2 а + b (г) а b а b (д) а b a^2b^3 (е) а b а(а + b) (ж) a b a^2+2ab+b^2 (указание: разложите на множители) (з) а b с (а + b)/с (и) а b с (a+b)/(b+c) (к) а b с (а+с)/(b+с) (л) а b c (a+b)/(2c) (м) а b c а/(2с)+Ь/(2с) (н) а b с (b-a)(b-c) (о) а b c d ab+ac+ad (п) a b c d ab+abcd

    Не применяйте ROLL и PICK !

  3. Напишите новое определение слова OVER (NEWOVER), используя другие слова.
  4. Слово 2DUP выполняет следующие операции в стеке :

    ( n1 n2 - n1 n2 n1 n2 )

    Оно применяется для чисел двойной длины. Напишите определение этого слова под именем NEW2DUP, используя для этого только два слова.

  5. Определите слова DUP и OVER, используя PICK. Проделайте это для обоих стандартов. Дайте этим словам новые имена во избежание путаницы.
  6. Определите ROT, используя слово ROLL. Проделайте это для стандартов Форт-79 и Форт-83. Дайте этому слову новое имя.
  7. Слово 2SWAP выполняет в стеке следующие операции:

    ( n1 n2 nЗ n4 - nЗ n4 n1 n2).

    Определите это слово на Форт-79 и Форт-83.

  8. Определите слово ROTSTACK, которое производило бы ротацию элементов стека независимо от его длины. Если в стеке находится а Ь с d e f, то после исполнения ROTSTACK в нем должно быть Ь с d e f а. Используйте для этого только два слова. Проделайте это на Форт-79 и Форт-83.
  9. Объем сферы выражается формулой 4/ЗПи * r^3. Напишите слово для определения объема, умноженного на 100, если в стеке задано значение r. (Указание: используйте число Пи = 3.14, умножив его на 100.)
  10. Определите слово, помещающее в стек произведение двух самых нижних чисел в стеке, не разрушая содержимого стека. Все, что вам известно : в стеке находятся два или более числа. (На практике вы не должны допускать разрастание стека, чтобы не приходилось делать что-либо подобное.)
  11. Слово MOD дает остаток от деления нацело, т.е. 11 3 MOD выдает в результате 2. Дайте определение слова MOD.




Содержание  Назад  Вперед