Понятие о программировании

Все, что делает компьютер, заключается в выполнении различных программ. Причем, некоторые действия, которые совершает микропроцессор (МП) компьютера, казалось бы, аппаратным путем, т. е. путем взаимодействия электронных схем между собой, на самом деле всего лишь выполнение микропрограмм, намертво «зашитых» в его электронной начинке. Можно сказать, что программы – это и есть компьютер, без них он способен сделать не больше, чем телевизор где-нибудь в Антарктиде, где нет телевещания.

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

Команды представляют собой двоичные числа, порой довольно длинные. Любая команда содержит инструкцию, что именно процессору нужно делать на данном шаге (иногда команды так и называют – инструкциями). Каждая инструкция (а их существует сотни разновидностей) кодируется определенным двоичным числом, которое может быть короче, чем команда. Процессор всегда «знает», какая часть команды представляет собой инструкцию, и поступает соответствующим образом. Если это требуется, другая часть команды предоставляет данные, необходимые для выполнения инструкции, – непосредственно числа или чаще их адреса в памяти. При этом часть адресов памяти может выделяться под так называемые регистры – ячейки с очень быстрым доступом. Выполнив предусмотренную инструкцией обработку данных, микропроцессор помещает результат в такой регистр либо в основную память.

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

Однако если бы компьютер «умел» только это, его использование не имело бы особого смысла – составить программу из последовательности операций и прогнать ее на компьютере ничуть не быстрее, чем просто выполнить те же операции вручную. Такие простейшие программы целесообразно использовать, например, для проведения однотипных расчетов (и они нередко используются в калькуляторах для вычисления по формулам), но компьютер обладает значительно большими возможностями. Почему?

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

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

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

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





Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: