Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Имя переменной обозначает символический адрес той ячейки памяти, в которой записано числовое значение соответствующей переменной или функции (после ее вычисления). Следовательно, термины "переменная" или "функция" только условно соответствуют общепринятым математическим понятиям. Числа, используемые, например, в операторах присваивания для задания значений переменных, называются константами. Константы обозначают сами числа, а не фактические адреса ячеек памяти.

Операции, указанные справа от символа "=", выполняются над записанными в выражении константами (константа- величина, значение которой не изменяется в период ее существования) и теми числами, которые хранятся в ячейках памяти, обозначенных встречающимися именами. Результат помешается в ту ячейку памяти, символический адрес которой указан слева от символа "=". Говорят, что переменной присваивается значение посредством оператора присваивания. Следовательно, используемый здесь символ "=" (присвоить) имеет смысл, отличный от принятого в математике.

В операторах присваивания справа от знака "=" часто используется арифметические выражения. Арифметическим выражением называется математическая запись, состоящая из констант, переменных, стандартных и нестандартных функций, объединённых знаками арифметических операций:

·  " + " - сложение;

·  " – " - вычитание;

·  " / " - деление;

·  " * " - умножение;

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

НЕ нашли? Не то? Что вы ищете?

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

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

Действие оператора

К=1

В ячейку памяти с символическим адресом К помещается 1. (переменной К присваивается значение 1)

L=K

В ячейку памяти с символическим адресом L пересылается содержимое ячейки с символическим адресом К (переменной L присваивается значение К). При этом К не изменяется.

К=К+1

К содержимому ячейки с символическим адресом К прибавляется 1, результат помещается в ту же ячейку К. При этом старое значение К пропадает (стирается).

Y=SIN(X)

Вычисляется sin угла (выраженного в радианах), величина которого находится в ячейке X, и результат помещается в ячейку Y.

X=SIN(X)

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

Замечания:

1. Перед выполнением присваивания старое значение стирается.

2. При пересылке значение переменной копируется. Значение копируемой переменной не изменяется.

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

4. Если переменной не присвоено значение, то ее значение не определено.

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

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

Подпрограмма. Группу операторов, которые решают логически самостоятельную часть задачи, можно объединить в подпрограмму. Подпрограммы подробно рассматриваются ниже.

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

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

Комментарии можно записывать около любого блока.

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

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

18.  Управляющие конструкции алгоритмического языка. Основные структуры алгоритмов.

Управляющие конструкции алгоритмического языка

Большинство алгоритмических языков относится к так называемым процедурным языкам, в которых основной единицей является оператор. Оператор представляет собой команду на выполнение некоторого действия. Язык, таким образом, состоит в основном из фраз в повелительном наклонении. Альтернативой операторам являются описания, определяющие объекты или типы объектов и их взаимосвязи. Считается, что чем больший процент составляют описания, тем более совершенным является язык. Существуют алгоритмические языки, состоящие в основном из описаний (функциональные языки), однако, данный курс ограничивается процедурными языками.

Всякий алгоритм предназначен исполнителю, который однозначно понимает команды алгоритма. Пример: опишем алгоритм проезда от Аэровокзала в Москве до аэропорта Домодедово.

Алгоритм Проезд от Аэровокзала до Домодедово через МКАД

| Дано: находимся у Аэровокзала

| Надо: оказаться в аэропорту Домодедово

начало алгоритма

| повернуть направо на центральный проезд

| Ленинградского проспекта в сторону центра;

| проехать до второго светофора;

| выполнить разворот на перекрестке

| проехать по Ленинградскому проспекту из центра

| до пересечения с Московской кольцевой дорогой;

| переехать мост над кольцевой дорогой и

| повернуть направо на внешнюю часть кольцевой дороги;

| двигаться по кольцевой дороге в направлении против

| часовой стрелки до Каширского шоссе;

| повернуть направо на Каширское шоссе в сторону из города;

| двигаться, никуда не сворачивая, до

| аэропорта Домодедово;

конец алгоритма

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

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

Алгоритм Оптимальный путь от Аэровокзала до Домодедово

| Дано: находимся у Аэровокзала

| Надо: оказаться в аэропорту Домодедово

начало алгоритма

| если

| нет пробки на Ленинградском проспекте

| в направлении из центра

| то

| /* ...выполняем предыдущий алгоритм...*/

| Проезд от Аэровокзала до Домодедово через МКАД

| иначе

| повернуть направо на боковой проезд

| Ленинградского проспекта в сторону центра;

| доехать до пересечения с Беговой улицей;

| повернуть направо на Третье транспортное кольцо;

| ехать по Третьему транспортному кольцу против

| часовой стрелки до пересечения с Варшавским шоссе;

| повернуть направо на Варшавское шоссе в сторону из центра;

| ехать прямо до развилки с Каширским шоссе;

| на развилке с Каширским шоссе проехать прямо в сторону

| Каширского шоссе; /* Варшавское уходит направо*/

| двигаться, никуда не сворачивая, до аэропорта Домодедово;

| конец если

конец алгоритма

Здесь исполнитель алгоритма сначала должен проверить условие

Нет ли пробки на Ленинградском проспекте в направлении из центра

Если это условие истинно, то выполняется первый алгоритм "Проезд от Аэровокзала до Домодедово через МКАД"; если ложно – выполняется часть алгоритма между строками "иначе" и "конец если".

Второй важнейшей конструкцией алгоритмического языка является конструкция "цикл пока". Заголовок цикла состоит из ключевых слов "цикл пока", за которыми следует некоторое условие. Дальше записывается тело цикла, завершаемое строкой "конец цикла". При выполнении цикла исполнитель сначала проверяет условие в заголовке тела цикла. Если условие истинно, то выполняется тело цикла. Затем вновь проверяется условие в заголовке цикла, опять выполняется тело цикла, если условие истинно, и так до бесконечности. Если же условие ложно с самого начала или становится ложным в результате предыдущего выполнения тела цикла, то тело цикла не выполняется и цикл завершается. Таким образом, по выходу из цикла условие, записанное в его заголовке, всегда ложно. Если условие ложно перед началом цикла, то цикл не выполняется ни разу! Программисты иногда называют "цикл пока" циклом с предусловием, поскольку условие продолжения цикла проверяется перед выполнением тела цикла, а не после него. Иногда используют циклы с постусловием (например do... while), когда тело цикла всегда выполняется хотя бы один раз, а условие продолжения проверяется после каждой итерации. Всегда предпочтительнее использовать цикл с предусловием, это помогает избежать многих ошибок.

Для иллюстрации конструкции "цикл пока" можно привести следующую модификацию алгоритма проезда.

Алгоритм Добраться из Аэровокзала до Домодедово

| Дано: находимся у Аэровокзала

| Надо: оказаться в аэропорту Домодедово

начало алгоритма

| цикл Пока пробка на Ленинградском проспекте

| выпить чашку кофе в кафе Аэровокзала

| ждать полчаса

| конец цикла

| Проезд от аэровокзала до Домодедово через МКАД

конец алгоритма

Здесь снова использован определенный ранее алгоритм "Проезд от аэровокзала до Домодедово". Условие продолжения цикла проверяется перед выполнением тела цикла, но не в процессе его выполнения! Так, если пробка рассосалась после чашки кофе, то все равно нужно ждать полчаса.

Теперь можно подвести итоги.

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

если условие

| то

| последовательность действий 1

| иначе

| последовательность действий 2

конец если

Последовательность действий 1 выполняется, когда условие истинно; в противном случае выполняется последовательность действий 2. Ключевое слово "иначе" и последовательность действий 2 могут отсутствовать; в этом случае, когда условие ложно, исполнитель ничего не делает.

Помимо элементарных действий, в записи алгоритма можно использовать другие алгоритмы.

Основные структуры алгоритмов.

Основные структуры алгоритмов – это ограниченный набор стандартных способов соединения отдельных блоков или структур для выполнения типичных последовательностей действий.

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

К основным структурам относятся:

·  следование а,

·  две разновидности цикла б, в,

·  три разновидности разветвления г, д, е.

Основные структуры алгоритмов.

Отметим вначале особенности трех основных типов структур.

Следование—это последовательное размещение блоков и групп блоков, такая структура называется также линейной.

Если некоторая часть программы (на схеме группа блоков) выполняется многократно и после проверки некоторого условия в какой-то момент осуществляется выход из нее, то такую часть называют циклом,

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

Теперь рассмотрим особенности каждого вида цикла и разветвления.

Цикл До применяется при необходимости выполнить какие-либо вычисления нескольких раз до выполнения некоторого условия (блок 3). Особенность этого цикла в том, что он всегда выполняется хотя бы один раз, так как первая проверка условия выхода из цикла происходит после того, как тело цикла выполнено. Тело цикла (блок 2)—та последовательность действий, которая выполняется многократно (в цикле). Начальные присвоения (блок 1) задание начальных значений тем переменным, которые используются в теле цикла. Цикл такого типа называют также итеративным циклом в том случае, когда количество повторений неизвестно до начала выполнения цикла.

Цикл Пока отличается от цикла До тем, что проверка условия (блок 3) производится до выполнения тела цикла (блок 2), и, если при первой проверке условие выхода из цикла выполняется, то тело цикла не выполняется ни разу. Цикл такого типа называется также циклом по условию.

Замечание. В некоторых случаях проверка условия осуществляется внутри тела цикла, т. е. тело цикла разбивается на две последовательности операторов: одна выполняется до проверки условия, вторая—после.

Существует еще одна важная разновидность цикла: цикл по счетчику. Для него существует специальное обозначение и специальный оператор в различных алгоритмических языках программирования (оператор цикла). Для организации цикла по счетчику используется управляющая переменная цикла, изменяющаяся в заданных пределах с постоянным шагом. Разветвление применяется, когда в зависимости от условия нужно выполнить либо одно, либо другое действие. Действие 1 (блок 1) или действие 2 (блок 2) могут, в свою очередь, представлять собой одну из типовых структур.

Обход — частный случай разветвления, когда одна ветвь не содержит никаких действий. Множественный выбор является обобщением разветвления, когда в зависимости от значения переменной (i) выполняется одно из нескольких действий. При i = 1 выполняется действие S1, при i = 2 – действие S2 и т. д.

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

19.  Представление данных в ПК. Системы счисления и единицы измерения информации.

Системы счисления

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

N=XnX(n-1)...X3X2X1X0X-1X-2X-3...X-m

"Вес" каждой цифры в числе определяется значением самой цифры и некоторым множителем qa, где q- простое число, называемое основанием системы, а - порядковый номер позиции, начиная с нуля.

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

Рассмотрим привычную десятичную систему. Она содержит лишь десять различных цифр, т. е. Xi могут принимать значения 0,1,2,...,9.

Например, число N=123,45 обозначает сокращенную запись выражения

N=l*102+2*101+3*100+4*10-1+5*10-2

Основание системы счисления q здесь равно 10.

В ЭВМ в основном нашла применение не привычная нам в повседневной жизни десятичная система счисления, а двоичная и так называемые двоично-кодированные системы счисления.

Двоичная система счисления

Основанием двоичной системы счисления является число 2. т. к. для записи чисел используются всего две цифры - 0 и 1. Примеры записи чисел в двоичной системе приведены в таблице 1.

В этой системе счисления для представления любого разряда двоичного числа достаточно иметь один физический элемент только с двумя резко различимыми устойчивыми состояниями, одно из которых изображает 1, другое - 0 (это, в свою очередь, обеспечивает высокую надежность представления чисел при минимальной сложности оборудования).

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

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

Восьмеричная и шестнадцатеричная системы счисления

Рассматриваемые системы счисления относятся к двоично-кодированным системам, когда основание системы счисления представляют целые степени двойки: 2 в 3-ей степени - для восьмеричной и 2 в 4-й для шестнадцатеричной системы.

Основанием восьмеричной системы счисления является число 8, т. е. для записи чисел используются восемь цифр от 0 до 7. Необходимо запомнить, что цифра 8 при записи чисел в восьмеричной системе не используется. Обычно числа, записанные в восьмеричной форме, снабжают индексом 8, чтобы отличать их от десятичных чисел, с которыми мы привыкли работать. Например, 438, 1658.

Шестнадцатеричная система счисления в качестве основания системы использует число 16. В системах счисления с основанием больше 10 кроме цифр от 0 до 9 применяют еще и буквы латинского алфавита.

Числа, записанные в шестнадцатеричной форме, снабжают индексом 16, например, 2416, А216, FE16 и В716.

Обратите внимание на то, что при записи чисел используются латинские буквы от А до F. Вместо "цифры" 10 ставят букву А, вместо 11 - В, 12-ти соответствует С, 13-ти - D, 14-ти - Е, и 15-ти - F (см. Таблицу 2.).

Таблица 2. Таблица соответствия чисел

16-я с. с

0

1

2

3

4

5

6

7

8

9

А

В

C

D

Е

F

10-я с. с.

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Большим достоинством восьмеричной и шестнадцатеричной систем счисления является, во-первых, возможность более компактно представить запись двоичного числа, а именно, запись одного и того же двоичного числа в восьмеричной и шестнадцатеричной системах будет соответственно в 3 и 4 раза короче двоичной. Во-вторых, сравнительно просто осуществляется преобразование чисел из двоичной в восьмеричную и шестнадцатеричную системы и наоборот. Действительно, так как для восьмеричного числа каждый разряд представляется группой из трех двоичных разрядов (триад), а для шестнадцатеричного - группой из четырех двоичных разрядов (тетрад), то для такого преобразования достаточно объединить двоичные цифры в группы по 3 и 4 бита соответственно, продвигаясь от разделительной запятой вправо и влево.

При этом, в случае необходимости добавляют нули в начале и в конце числа и каждую такую группу - триаду или тетраду - заменяют эквивалентной восьмеричной или шестнадцатеричной цифрой. Например, нужно перевести двоичное число в восьмеричную систему. Разбиваем его на тройки, начиная с младшего разряда,

(10)(101)(111),

поскольку старшие разряды образуют не тройку, а двойку, дополним их нулем - (010)(101)(111). Теперь по таблице 1 определим восьмеричные значения каждой тройки в отдельности, т. е. двоичное число 0102 соответствует восьмеричному числу 28, двоичное число 1012 - восьмеричному числу 58,1112 - восьмеричному числу 78. Следовательно, двоичному числу эквивалентно восьмеричное число 2578.

Например, требуется перевести двоичное число в шестнадцатеричную систему счисления. Разбиваем его по 4 разряда - (1)(1111)(0101), теперь старшую четверку дополняем нулями (0001)(1111)(0101). Далее по таблице 1 определяем шестнадцатеричные эквиваленты для каждой четверки:

·  двоичному числу 0001 соответствует шестнадцатеричное число 1;

·  числу 1111 - F;

·  числу 0

Следовательно, эквивалентом двоичного числа является шестнадцатеричное число 1F516.

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

Перевод чисел из одной системы счисления в другую

Правило перевода целых чисел: для перевода целого числа Np, представленного в системе счисления с основанием р, в систему счисления с основанием q необходимо данное число делить на основание q (по правилам в системе счисления с основанием р) до получения целого остатка, меньшего q. Полученное частное снова необходимо делить на основание q до получения целого остатка, меньшего q, и т. д. до тех пор, пока последнее частное будет меньше q. Число Nq в системе счисления с основанием q представится в виде упорядоченной последовательности остатков деления в порядке, обратном их получения. Причем старшую цифру числа Nq дает последнее частное.

Пример перевода десятичного числа 118 в двоичную форму, в восьмеричную форму и в шестнадцатеричную форму:

Пример обратного перевода из вышеперечисленных систем счисления в десятичную:

=0*20+1*21+1*22+0*23+1*24+1*25+1*26=

=0+1*2+1*4+0+1*16+1*32+1*64=

= 2+4+16+32+64=11810

1668 = 6*80+6*81+1*82=6 + 48 + 64= 11810

7616=6*160+7*161 = 6+112=11810

Для перевода двоичного числа в восьмеричную систему счисления необходимо разбить это двоичное число на триады (по 3 разряда, или бита), начиная с младшего разряда.

1110110 = (001)(1=1668

Затем надо по таблице 1 записать восьмеричные числа, которые соответствуют каждой триаде, в том же порядке. Из таблицы следует, что двоичному числу 0012 эквивалентно восьмеричное число 18, а числу 1102 эквивалентно восьмеричное число 68. Запишем восьмеричные числа в той же последовательности, что и триады, и получим результат 1668. Итак, эквивалентом двоичного числа является восьмеричное число 1668.

Аналогично производится перевод из двоичной системы счисления в шестнадцатеричную. Единственное отличие в том, что двоичное число нужно разбить на тетрады (по 4 разряда, или бита), начиная с младшего разряда. Например, переведем в шестнадцатеричную систему счисления двоичное число :

= (0111)(0110)2 = 7616.

Единицы измерения информации

Для цифровых ЭВМ элементарной единицей измерения количества информации является двоичный знак, который называется бит (сокращение от английского binary digit). Бит - это количество информации, получаемой в результате однократного выбора из двух равновероятных событий. Значением бита является 0 или 1.

В таблице 1 показано, как двоичные числа соответствуют, привычным нам, десятичным числам. Из нее видно, что десятичное число 3 в двоичной системе запишется в виде 11, а десятичное число 11 - как 1011. Таким образом, для кодирования десятичного числа 3 (т. е. для представления его в двоичной форме) нужно 2 бита (разряда), а для кодирования числа 11 необходимо 4 бита. Как видите, в восьми двоичных разрядах умещается 256 целых чисел - вполне достаточно для того, чтобы дать уникальное 8-битовое обозначение каждой заглавной и строчной букве русского и латинского алфавитов, всем цифрам, знакам препинания, некоторым другим, необходимым символам, а также служебным кодам для передачи информации. Таким образом, единицей измерения компьютерной информации служит восьмибитовое число - байт (byte). Иначе говоря, 1 байт = 8 бит.

Общепринятый способ кодирования символов 8-битовыми числами называется ASCII (American Standard Coding for Information Interchange).

Для измерения больших объемов информации используются следующие единицы измерения:

1 Килобайт=1024, или 210 байт;

1 Мегабайт= 1 или 220 байт, или 1024 Кбайт;

1 Гигабайт= 1, или 230 байт, или 1024 Мбайт;

1 Терабайт= , или 240 байт, или 1024 Гбайт.

20.  Понятие переменной в языках программирования высокого уровня.

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

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

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

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

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

Каждой переменной присваивается имя. В рассмотренном примере используются переменные "скорость", "обороты двигателя", "передача", "нагрузка", "температура", "обогащенность смеси", "угол опережения зажигания" и другие. С каждой переменной связан ее тип, т. е. множество значений, которое она может принимать. Например, "передача" принимает целые значения от 1 до 5 (обратная и первая передачи не различаются), тогда как "скорость", а также "обогащенность смеси" принимают вещественные значения (скорость измеряется в м/сек, обогащенность смеси может измеряться либо соотношением кислорода и паров бензина в единице объема, либо в процентах относительно стехиометрической смеси 14/1, соответствующей полному сгоранию паров бензина).

С переменной можно выполнять два действия:

1.  прочитать текущее значение переменной;

2.  записать новое значение в переменную или, как говорят программисты, присвоить новое значение переменной.

В алгоритмическом языке чтение значения переменной выполняется в результате использования ее имени в любом выражении. Запись нового значения переменной выполняется с помощью так называемого оператора присваивания. Он выглядит следующим образом:

имя переменной = выражение;

Знак = читается как присвоить значение.

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

скорость = число импульсов от датчика скорости;

Переменная "число импульсов от датчика скорости" в течение каждого интервала времени суммирует число импульсов. В начале каждого интервала она обнуляется. Полученная в результате скорость выражается в м/с. Если нужно получить скорость в км/час, то дополнительно выполняется следующее действие:

скорость = скорость * 3600 / 1000;

Здесь переменная "скорость" входит как в правую, так и в левую части оператора присваивания. В правой части используется старое значение этой переменной, вычисленное в м/сек. Поскольку час содержит 3600 секунд, то при умножении на 3600 получается расстояние в метрах, проходимое за 1 час; после деления на 1000 получается расстояние в километрах. Вычисленное значение затем присваивается переменной "скорость".

Суммируем сказанное выше:

1.  внутреннее состояние универсального исполнителя определяется состоянием его памяти. Память - это материальный носитель (лента машины Тьюринга, ламповая или ферритовая память первых компьютеров, полупроводниковая память современных компьютеров), который хранит информацию. Эту информацию можно читать и перезаписывать;

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

3.  с переменной можно выполнять два действия: прочитать ее текущее значение и записать в нее новое значение (старое теряется). В алгоритмическом языке значение переменной читается, когда ее имя используется в любом выражении, значение которого надо вычислить. Для записи нового значения в переменную применяется оператор присваивания, который имеет вид:

имя переменной = выражение;

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6