Введение в написание программ

Алгоритмы

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

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

Не буду сильно распинаться и только добавлю следующую схему:

Перед нами простой алгоритм описанный с помощью "Блок-схемы". Какие основные элементы можно выделить из схемы?

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

Должен предупредить

Цикл в этой блок схеме обозначен.. так скажем не канонично.. Для циклов есть более правильное обозначение. Ознакомиться с ним вы можете на этой странице:

В ходе нашей работы нам предстоит описывать алгоритмы в тысячи шагов. Это кажется чем-то очень сложным, но в действительности, у нас будут инструменты которые облегчат их написание.

Программа

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

Если проще, то программа - это алгоритм(скорее всего очень длинный) + данные. Данные могут приходить из внешнего мира, или быть зашиты в программу.

Как программа выполняется на компьютере?

Если отбросить все лишнее, и посмотреть как работают наши компьютеры, то схема будет простой.

CPU действует относительнsо примитивно.. внутри него есть специальные ячейки, в которые можно ложить значения, называются они регистрами. Например для того чтобы сложить два числа вам потребуется положить эти числа в специальные регистры и вызвать команду суммирования, после этого в определенном регистре будет лежать результат сложения.

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

Теперь мы можем представить как выглядят эти команды:

- Положить значение из адреса X в регистр A
- Положить значение из адреса Y в регистр B
- Выполнить операцию суммирования (результат работы будет лежать в регистре A)
- Положить значение из регистра A по адресу Z в оперативной памяти