Основные понятия программирования

Монолитные железобетонные перекрытия

Полы

1 – бетонная подготовка; 2 – толь; 3 – осмоленная подкладка; 4 – плинтус; 5 – утеплитель

а – ребристое; б – кессонное; в – безбалочное.

1 – колонные; 2 – главная балка; 3 – второстепенные балки; 4 – плита; 5 – балки; 6 - капитель

.

Введение основных понятий программирования имеет целью сосредоточить внимание на специфике вычислительной машины как исполнителя программ.

Вычислительная машина – устройство, умеющее выполнять некоторый определенный набор действий.

Команда – приказ на выполнение действия из указанного набора, выраженный каким-либо заранее фиксированным способом.

Система команд – совокупность всех допустимых команд.

Давая задание вычислительной машине на выполнение некоторой работы, обычно ей выдается не одна команда, а некоторая последовательность команд, называемая программой.

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

Пусть требуется найти произведение z двух натуральных чисел x и y.

Составим задание для вычислительной машины, которая не умеет умножать, а умеет лишь складывать. Решить такую задачу в одно действие нельзя. Ее требуется разложить на ряд последовательных действий, т.е. составить программу.

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

Переменную можно представить себе как ящик, на который повешен ярлык с ее именем. Присвоение переменной с именем x значения 5 можно представить себе так: в ящик с ярлыком «x» положить 5 шаров.

Значение одной переменной можно переслать в другую переменную. Но это не меняет значения первой. Например, переслать значение x в переменную u, или присвоить переменной u значение x, означает: задать для u такое же значение, которое имеет переменная x, т.е. скопировать значение x. Если было, допустим, x = 5, то присвоение u значения x (записывается u = x) означает, что нужно посмотреть, сколько шаров лежит в ящике «x» и столько же шаров положить в ящик «u». Теперь будет u = 5, но при этом x сохранило значение (x = 5).

В программировании встречается такая операция присваивания, где слева и справа используется одна и та же переменная. Например, u = u + 1. Здесь перед выполнением собственно присваивания осуществляется операция сложения. Выполнение операции присваивания выполняется по шагам:

1. переслать содержимое ящика «u» в специальное место в процессоре, предназначенное для первого слагаемого;

2. переместить 1 на место второго слагаемого в процессоре;

3. выполнить операцию сложения;

4. переслать результат в ящик «u» (при этой пересылке старое значение u пропадает – «стирается»).

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

В поставленной выше задаче требуется вычислить , пользуясь операцией сложения:

.

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

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

Чтобы повторить операцию сложения требуемое число раз, нужно считать, сколько раз она уже выполнена. Для этого нужно использовать вспомогательную переменную u, называемую счетчиком. Перед первым прибавлением к z значения x можно принять u = 1 и после очередного изменения z значение счетчика u будет изменяться на 1. Тогда программу можно записать так:

1 z = 0

2 u = 1

3 z = z + x

4 u = u + 1

5 Если u ≤ y идти к 3

Эта программа написана на обычном языке человеческого общения с использованием общепринятой математической символики. Команды 1 и 2 задают начальные значения переменных z и u. Команда 3 каждый раз увеличивает значение z на x. Команда 4 увеличивает значение счетчика на 1 после выполнения очередной операции сложения. Команда 5 проверяет условие u ≤ y: если оно выполняется, т.е. не все y сложений еще выполнены, то происходит возврат к команде 3 и ее повторное выполнение; если условие u ≤ y не выполняется, процесс вычислений заканчивается. Это произойдет, когда будет u > y, т.е. все нужные сложения выполнены.

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

Проследим выполнение программы при следующих исходных данных: x = 5, y = 3. Для каждой переменной, используемой в программе, заготовим по одному ящику и повесим на них ярлыки с именами переменных. Чтобы заготовить нужное число ящиков, нужно просмотреть программу сначала, и как только встретится новая переменная, взять новый ящик и повесить на него ярлык с именем. Итак, в программе используется четыре переменных: z, u, x, y (рисунок 1).

Рисунок 1. Представление переменных

Зададимся значениями x = 5, y = 3 и начнем выполнение программы (рисунок 2). То, что в ящике не обозначено его содержимое говорит о том, что значение соответствующей переменной не определено.

Рисунок 2. Исходные значения переменных

Ниже показано содержимое ящиков после выполнения команд 1, 2 (рисунок 3) и после первого выполнения команд 3, 4 (рисунок 4).

Рисунок 3. Состояние после выполнения команд 1 и 2

Рисунок 4. Состояние после первого выполнения команд 3 и 4

Команда 5 проверяет условие u ≤ y. Если оно удовлетворяется для входящих в него переменных, то имеет значение ДА, в противном случае – НЕТ. Условие 2 ≤ 3 имеет значение ДА. Поэтому осуществляется переход к команде 3.

Выполнение программы повторяется, начиная с команды 3. После второго выполнения команд 3 и 4 содержимое ящиков будет следующим (рисунок 5).

Рисунок 5. Состояние после второго выполнения команд 3 и 4

Далее опять выполняется команда 5. Так как условие 3 ≤ 3 имеет значение ДА, происходит возврат к команде 3. После третьего выполнения команд 3 и 4 содержимое ящиков будет следующим (рисунок 6).

Рисунок 6. Конечные значения переменных

Далее выполняется команда 5. Так как условие 4 ≤ 3 имеет значение НЕТ, то переход к команде 3 не происходит. Вычисления закончены.

Чтобы узнать, какое значение имеет результат z после выполнения программы, нужно посмотреть, чему равно содержимое ящика с ярлыком «z».

Процесс выполнения программы можно представить более компактно – в виде трассировочной таблицы, в которой записываются все значения, последовательно принимаемые изменяемыми переменными программы (таблица 1).

Таблица 1. Трассировочная таблица

z u
   

Приведенная выше программа очень простая, но она имеет особенность, характерную для большинства программ, реализуемых для ЭВМ. После выполнения команды 5 (если условие выполняется) осуществляется возврат к команде 3 и повторное выполнение команд 3–5. Многократно повторяющаяся при выполнении часть программы называется циклом. Цикл является типичной структурой, реализуемой в программах для ЭВМ, так как его использование позволяет записать действие (или последовательность действий) один раз, а выполнять многократно.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: