|
Машинный код (также употребляются термины собственный код, или платформенно-ориентированный код, или родной код, или нативный код — от англ. native code) — система команд конкретной вычислительной машины, которая интерпретируется непосредственно микропроцессором или микропрограммами данной вычислительной машины.
Каждая модель процессора имеет свой собственный набор команд, хотя во многих моделях эти наборы команд сильно перекрываются. Говорят, что процессор A совместим с процессором B, если процессор A полностью «понимает» машинный код процессора B. Если процессор A знает несколько команд, которых не понимает процессор B, то B несовместим с A.
«Слова» машинного кода называются машинными инструкциями. Каждая из них описывает элементарное действие, выполняемое процессором, такое как «переслать байт из памяти в регистр». Программа — это просто длинный список инструкций, выполняемых процессором. Раньше процессоры просто выполняли инструкции одну за другой, но новые суперскалярные процессоры способны выполнять несколько инструкций за раз. Прямой поток выполнения команд может быть изменён инструкцией перехода, которая переносит выполнение на инструкцию с заданным адресом. Инструкция перехода может быть условной, выполняющей переход только при соблюдении некоторого условия.
Псевдоко́д — компактный (зачастую неформальный) язык описания алгоритмов, использующий ключевые слова императивных языков программирования, но опускающий несущественные подробности и специфический синтаксис. Псевдокод обычно опускает детали, несущественные для понимания алгоритма человеком. Такими несущественными деталями могут быть описания переменных, системно-зависимый код и подпрограммы. Главная цель использования псевдокода — обеспечить понимание алгоритма человеком, сделать описание более воспринимаемым, чем исходный код на языке программирования. Псевдокод широко используется в учебниках и научно-технических публикациях, а также на начальных стадиях разработки компьютерных программ.
Блок-схемы можно раcсматривать как графическую альтернативу псевдокоду. В отличие от стандартизации синтаксиса языков программирования, на синтаксис псевдокода обычно не устанавливается стандартов, так как последний непосредственно не компилируется в исполняемую программу. Поэтому можно сказать, что обычно автор каждый публикации применяет свой оригинальный псевдокод, однако чтобы быть максимально понятным читателям, авторы публикаций содержащих псевдокод, как правило, заимствуют нужные им конструкции из какого-либо языка программирования. Зачастую источником псевдокода служат несколько языков, и таким образом псевдокод часто не содержит специфических признаков конкретного языка программирования. Кроме того, математические выражения часто включаются в псевдокод в том виде, как их принято записывать в математике, а не в языках программирования, а некоторые фрагменты псевдокода могут быть фразами естественного языка (русского, английского и т. д.). Однако при этом конструкции некоторых языков программирования чаще используются для псевдокода. Так, например, очень часто используется синтаксис, похожий на синтаксис языка Паскаль. Это объясняется тем, что Паскаль создавался как язык, ориентированный на задачи обучения программированию, и поэтому синтаксис этого языка особенно приспособлен для восприятия человеком. Часто используются и другие языки: Си, Алгол, Фортран и другие.
При описании в виде блок-схем алгоритм изображается геометрическими фигурами (блоками), связанными по управлению линиями (направлениями потока) со стрелками. В блоках записывается последовательность действий.
Таблица 1- Основные блоки
Наименование | Обозначение | Функции |
Процесс | Выполнение операций, в результате которых изменяется значение, форма представления или расположение данных. | |
Ввод-вывод (данные) | Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов (вывод). | |
Условие | Выбор направления выполнения алгоритма в зависимости от некоторых переменных условий. |
Продолжение таблицы 1- Основные блоки
Наименование | Обозначение | Функции | |
Предопределённый (типовой) процесс | Использование ранее созданных и отдельно написанных программ (подпрограмм) | ||
Документ | Вывод данных на бумажный носитель. | ||
Магнитный диск | Ввод-вывод данных, носителем которых служит магнитный диск | ||
Пуск-останов | Начало, конец, прерывание процесса обработки данных. | ||
Соединитель | Указание связи между прерванными линиями, соединяющими блоки | ||
Приведем пример записи алгоритма в виде блок-схемы, псевдокодов и на языке Паскаль. Необходимо грамотно составить алгоритм с помощью блок-схемы, а уже затем, зная, как записываются команды на конкретном языке программирования, набрать программу на компьютере и получить результат, запустив ее на исполнение.
Рассмотрим линейный алгоритм, представленный в таблице 2.
Таблица 2 - Способы описания линейного алгоритма
Приведем пример записи разветвляющегося алгоритма для нахождения наибольшего из двух чисел (таблица 3). Алгоритм представим в виде блок-схемы, псевдокодов и на языке Паскаль.
Таблица 3 - Способы описания разветвляющегося алгоритма
Рассмотрим циклический алгоритм нахождения суммы первых натуральных нечетных чисел до n. Представим запись алгоритма тремя способами: в виде блок-схемы, в виде псевдокодов и на языке программирования Pascal. Пример представлен в таблице 4.
Блок-схема состоит из следующих базовых структур:
- две составные команды (команда следования и команда повторения с предусловием);
- простая команда.
Все команды соединены последовательно. Конструкции оформлены стандартным образом, поэтому их легко распознать и перевести на язык программирования. Каждая конструкция имеет один вход и один выход.
Пунктирные стрелки в таблице отражают последовательность выполнения технологической цепочки. После записи алгоритма в виде блок-схемы каждая команда переводится на алгоритмический язык, а уже затем на язык программирования.
Таблица 4 - Способы описания циклического алгоритма
Дата добавления: 2015-08-27; просмотров: 454 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Способы описания алгоритмов | | | Анализ алгоритмов затраты по объему памяти и времени, стандартные классы сложности |