производить выбор одной из двух
Она позволяет программе разветвляться, т.е. производить выбор одной из двух возможностей, как, например, в данном случае: печатать или не печатать столбик из 64 символов "X". Есть и другие способы разветвления программы, но данная конструкция является основной. Ветвление -- это важное свойство любого языка программирования, поскольку оно обеспечивает гибкость и удобство программирования задач любой сложности. Если вы знакомы с другими языками программирования, то, вероятно, обнаружите, что конструкция языка IF-THEN рассматривает слова DUP и BAR как подпрограммы. Подпрограммы (т.е. небольшие программы, находящиеся внутри больших программ) всегда определяются в Форте самостоятельными словами в том смысле, что Форт-программа построена из большого числа коротких подпрограмм.
Второе улучшение состоит в том, чтобы Форт сам определял, сколько чисел нужно отобразить на гистограмме. Это делается с помощью слова DEPTH (глубина), которое возвращает в стек количество чисел в стеке, и не разрушает стек. Например, если ввести
28943 DEPTH .
вы увидите
5 ok
на экране (а сами числа по-прежнему находятся в стеке). Вот теперь мы можем определить слово GRAPH, которое будет строить гистограмму чисел, находящихся в стеке:
: GRAPH CR DEPTH 0 DO LIMITBAR LOOP ;
Теперь посмотрим на всю программу, собранную вместе и с добавленными комментариями:
: TASK ; ( Слово, которое должно забываться при стирании программы) : .X ." X" ; ( Символ для печати) : BAR ( n -- ) 0 DO .X LOOP CR ; (Вывод столбика из X) : LIMITBAR ( n -- ) DUP 64 > IF DROP 64 THEN BAR ; ( Строит столбик из не более 64 символов ) ; GRAPH ( n1 n2 n3 . . . --) CR DEPTH 0 DO LIMITBAR LOOP ;
Чтобы запустить программу GRAPH, вы должны ввести несколько чисел и после этого -- слово GRAPH. Итак, считая, что вначале стек был пустым, после ввода
9 10 12 14 10 6 GRAPH
получаем гистограмму:
ххххххххх хххххххххх хххххххххххх хххххххххххххх хххххххххх хххххх
Несмотря на свою краткость, эта программа демонстрирует несколько важных свойств языка Форт.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий