Метка: Программа

Векторная графика

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

Домены приложений

В современных операционных системах некий функционально законченный блок кода выполняется в специально отведенном для него адресном пространстве – процессе. Код, выполняемый внутри процесса, изолирован. Доступ к коду из другого процесса возможен только через прокси. Прокси находится в адресном пространстве вызывающего процесса и действует как заместитель удаленного объекта. С точки зрения вызывающего объекта прокси – это объект, перенаправляющий вызовы другому процессу. В отличие от обычного, управляемый (managed) код может проверяться...

Построчная алгоритмическая нотация

Как следует из всего предыдущего изложения, задача составления алгоритма всегда связана с использованием некоторого языка, на котором алгоритм записывается. В достаточно общем случае язык — это средство выражения и передачи некоторых сведений. В этом смысле можно говорить о языке общения между людьми, о языке математики, о языке общения между людьми и автоматами. Можно говорить даже о существовании особых языков, на которых автоматы общаются между собой. Выше уже отмечалось, что характер языка, используемого для записи алгоритмов, так...

Вводный курс программирования

 Во вводных курсах программирования, как правило, основное внимание бывает направлено скорее на изучение свойств конкретного языка программирование, чем на рассмотрение более широких аспектов искусства программирования. Да и учебники по программированию в основном посвящены описанию свойств языков. В некоторых учебниках ничего кроме этого содержится, хотя в лучших из них рассматриваются те же вопросы стиля и методологии программирования. Однако для достижения ясности они фактически не выходят за рамки тех методов программирования,...

Эвристическое программирование

Подпрограмма MOVGEN реализует ход коня и заносит в MOVES поля, доступные в текущий момент, на глубину К. Конечно, нет необходимости хранить их в явном виде, и в действительности существуют очень эффективные способы генерации и проверки правильности шахматных ходов, однако для описания их здесь понадобилось бы слишком углубиться в детали. В эту программу все еще не вписаны эвристические приемы, и, если ее прогнать в том виде, как она есть, она будет работать медленнее, чем Cray 1, и выдаст очень немногие результаты в обозримое время, даже для доски...

Документирование программы

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

Используемые методы

Когда программист самостоятельно разрабатывает программу целиком, он имеет почти полную свободу в выборе используемых методов. (Фактически именно эта свобода нередко является причиной низкого качества конечного продукта.) Однако, когда программист работает в группе, он не так свободен и должен научиться работать в условиях определенных ограничений. Эти ограничения должны быть вызваны необходимостью, а не навязываться неоправданно, они должны обеспечивать большую свободу для разработки высококачественного продукта. Такие ограничения...

Основы теории элементарных алгоритмов

В учебном пособии впервые достаточно полно рассматриваются основы теории элементарных алгоритмов (элементарных по Кальмару функций), изученных современной теорией алгоритмов и успешно используемых в математических исследованиях. Излагаются также, способы получения границ оптимизации (в том числе и полиномиального вида) для алгоритмов установления разрешимости синтаксически ограниченных уравнений дискретного характера. Учебное пособие предназначено для студентов математических факультетов вузов и аспирантов. Оно будет также полезно...

Внешнее представление чисел

Для внешнего представления чисел используется система счисления, задаваемая программистом. Стандарт языка предусматривает следующие слова для переключения в наиболее общеупотребительные системы: DECIMAL —> десятичная HEX —> шестнадцатиричная OCTAL —> восьмеричная Первоначально устанавливается десятичная система. Если в процессе работы будет исполнено, например, слово HEX (от HEXADECIMAL — шестнадцатиричная), то при дальнейшем вводе и выводе чисел будет использоваться шестнадцатиричная система с цифрами от 0 до 9 и от А до F до тех пор, пока...

Константы и переменные

Константы и переменные позволяют программисту использовать память в словаре вполне определенным образом. А как быть, если требуется что-то иное? Общий принцип языка Форт состоит в том, чтобы не закрывать от программиста даже самые элементарные единицы, из которых строятся его более сложные слова, а предоставлять их наравне с другими словами. Элементарными словами для работы с памятью в словаре, помимо приведенных выше @ и ! , являются следующие: HERE — > А ALLOT А — > , А — > Предполагается, что словарь занимает некоторую начальную часть адресного...

Кодирование пробела

Ввиду его особой важности для кодирования пробела выделена специальная константа BL (от BLANK — пробел), которую для кода ASGII можно задать так: 32 CONSTANT BL. При исполнении слова BL на стеке остается код пробела. Чтобы вывести пробел на терминал, имеются следующие стандартные слова: « SPACE ( — > ) BL EMIT | i SPACES < N--->) ?DUP IF 0 DO SPACE LOOP THEN f Слово SPACE (пробел) выводит на терминал один пробел, а слово SPACES (пробелы) — несколько, снимая их количество со стека (это значение, как и длина строки в слове TYPE, должно быть неотрицательным). Внутри определений через двоеточие...

Форматные преобразования

Важной областью применения строковых значений являются форматные преобразования, позволяющие переводить число из машинного двоичного представления в строку литер. Эти преобразования выполняются над числами двойной длины, результирующая строка размещается во временном буфере PAD (прокладка), который заполняется с конца. Такое название буфера связано с тем, что он располагается в незащищенной части адресного пространства между словарем и стеком. Слово PAD кладет на стек адрес конца этого буфера и обычно определяется так: Г PAD ( —> А ) HERE...

Определяющие слова

Конструкции языка Форт, которые мы рассматривали до сих пор, имеют аналоги в других известных языках программирования. Например, определению через двоеточие очевидным образом соответствует описание процедуры в языках Фортран и Паскаль. Теперь мы рассмотрим свойство языка Форт, которое существенно отличает его от других и в значительной степени определяет его как нечто новое. Программируя какую-либо задачу, мы моделируем понятия, в которых эта задача формулируется и решается, через понятия данного языка программирования. Традиционные...

Разновидности шитого кода

Во всех разновидностях шитого кода его интерпретатор должен обеспечивать выполнение трех действий, которые традиционно обозначаются так: NEXT (следующий) — переход к интерпретации следующей ссылки в данной последовательности ссылок; CALL (вызов) — переход в подпрограмму верхнего уровня, представленную в шитом коде; RETURN (возврат) — возврат из подпрограммы верхнего уровня на продолжение интерпретации. В силу его очевидной рекурсивности интерпретатор использует специальный стек в качестве собственной структуры данных. Этот стек называется...

Стек возвратов и реализация структур управления

Один из важных принципов языка Форт состоит в том, чтобы предоставить программисту максимальный доступ ко всем средствам его реализации. В соответствии с этим принципом собственные данные адресного интерпретатора — стек возвратов — были сделаны доступными, для чего введены специальные слова: > RA ->, R> ->А и R@->A. Буква R (от RETURN— возврат) в имени этих слов напоминает о том, что они работают со стеком возвратов. Все эти слова можно использовать только внутри компилируемых определений. Во время исполнения любого такого определения, представленного...

DOES

Эта команда перехода с возвратом передает управление на точку DOES, сообщив ей в качестве своего адреса возврата адрес следующей последовательности ссылок — исполняющей части определения CONST . Точка DOES кладет на стек адрес поля параметров статьи ХОР (в этот момент в рабочей ячейке W еще находится адрес поля кода статьи ХОР , загруженный туда действием NEXT) и исполняет действие CALL для исполняющей части определения CONST . Следующее исполняемое слово @ заменит на стеке адрес поля параметров статьи ХОР числом 4, скомпилированным по этому адресу,...

Защита от зацикливания

С помощью этого же механизма можно ввести защиту от зацикливания, например подсчитывая в точке NEXT число исполненных слов и возобновляя диалог при достижении некоторого заданного значения этого счетчика. Если данная ЭВМ имеет встроенный таймер и операционная система позволяет обрабатывать асинхронные выходы по истечении заданного интервала времени, то этот механизм можно также использовать для предохранения от зацикливания. В процедуре обработки выхода по исчерпанию временного интервала нужно подменить точку NEXT на такую, которая...

Операция присваивания

Отметим сейчас важное свойство операции присваивания, которое вытекает из правил ее выполнения, описанных в п. 3. Дело в том, что эта операция вполне допускает случаи, когда одна и та же переменная находится и слева и справа от знака присваивания. Так, например, можно написать и это означает, что требуется к значению переменной п, которое она имела к началу выполнения операции присваивания, прибавить число 1 и считать полученное значение новым значением переменной п. Прежнее значение п при этом пропадает. Легко заметить, что, используя указанное...