Организация и функционирование компьютеров

         

Компьютер – универсальная вычислительная машина


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

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

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

Традиция связывает термин «алгоритм» с именем арабского ученого Аль-Хорезми.

Контрольные вопросы по теме.

Каково самое общее предназначение компьютера?

Что означает определение «универсальный» по отношении к компьютеру?

Что означают определения «дискретный» и «конечный» по отношению к алгоритму?

Для чего нужны блок-схемы?




Проблемами алгоритмизации при решении математических задач занимались Паскаль, Декарт, Лейбниц, Лаплас  и многие другие великие ученые. Особый интерес в этой области был инициирован Гильбертом в связи с его знаменитыми проблемами. В двадцатом веке формальная теория алгоритмов бурно развивалась. Можно назвать такие фамилии, как Гедель, Клини, Черч, Тьюринг, Пост, Марков, Петер.



Параллельно с теорией делались попытки создать практически работающие вычислительные устройства. В 1642г. Паскаль изобрел устройство, выполняющее сложение чисел, а в 1673г. Лейбниц сконструировал арифмометр, позволяющий выполнять четыре арифметических действия. В первой половине XIX в. английский математик Чарльз Бэббидж попытался построить универсальную машину, которая должна была выполнять любые вычисления без участия человека.  Программы для нее вводилась с помощью перфокарт, которые уже тогда употреблялись в ткацких станках. Реально такая машина (но не механическая, а электронная) была построена в США в 1943г.

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

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


Этим он отличается от вычислительных устройств, являющихся частью производственных комплексов и выполняющих внутри них специальные функции. Любая информация представляется в цифровой форме (в двоичной системе счисления) и размещается в специальном хранилище данных, которое называется оперативной памятью компьютера. Алгоритм отображается в компьютере в форме машинной программы и состоит из отдельных инструкций – машинных команд. Очередная машинная команда производит с данными в оперативной памяти определенные действия. Число различных типов машинных команд ограничено.

Отметим основные свойства алгоритмов, лежащих в основе работы современных компьютеров:

¨ дискретность - алгоритм представляет собой структурированное конечное множество элементарных действий; все типы элементарных действий задаются заранее списком;

¨     массовость - алгоритм должен быть применим ко многим различным наборам входной информации, а не к одному единственному;

¨     повторяемость - алгоритм должен давать один и тот же результат при одних и тех же входных значениях;

¨     конечность - алгоритм должен давать решение задачи за конечное число шагов.

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

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


А для этого необходимо иметь аде­кват­ные средства для описания маленьких, элементарных шагов алго­рит­ма и для описания структуры алгоритма.

Алгоритмы для первых компьютеров изображались в форме блок-схем. Блок-схема представляет собой изображение на бумаге. Элементарное действие алгоритма изображается текстом в одном блоке схемы, а линии, соединяющие блоки, указывают после­до­вательность работы блоков. Поскольку реально выбор того или иного продолжения работы зачастую зависит от данных, поступивших на обра­ботку, очередной блок может иметь не одно, а несколько продолжений, и для него необходимо указывать, каким условиям соответствует то или иное продол­жение. Принято проверки такого рода выделять в отдельный блок специ­ального типа (условный блок). Обычный блок имеет одно продолжение, условный блок - несколько продолжений, соответствующих различным вариантам проверки условия. Иногда для удобства условный блок заключается в ромбовидные рамки. Тем или иным обра­зом зачастую выделяют и другие типы блоков (с помощью овальных, косых или иных рамок).

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

Контрольные вопросы по теме.

1.     Каково самое общее предназначение компьютера?

2.     Что означает определение «универсальный» по отношении к компьютеру?

3.     Что означают определения «дискретный» и «конечный» по отношению к алгоритму?

4.     Для чего нужны блок-схемы?


Содержание раздела