Процессор выполняет команды алгоритма записанные на каком языке

Обновлено: 04.07.2024

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

Рассмотрим лишь самые общие принципы построения и работы процессора, которые одинаковы как для примитивных, так и для самых современных процессоров.

Любой процессор имеет устройство, выполняющее команды, и собственную внутреннюю память , реализованную внутри микросхемы процессора. Она называется регистрами процессора. Имеется 3 типа регистров:

  • общие регистры хранят целые числа или адреса. Размер общего регистра совпадает с размером машинного слова и в 32-разрядной архитектуре равен четырем байтам. Число общих регистров и их назначение зависит от конкретного процессора. В большинстве Ассемблеров к ним можно обращаться по именам R0 , R1 , R2 , . Среди общих регистров имеются регистры специального назначения: указатель стека SP ( Stack Pointer ), счетчик команд PC ( Program Counter ) и др.;
  • регистр флагов содержит биты, которые устанавливаются в единицу или в ноль в зависимости от результата выполнения последней команды. Так, бит Z устанавливается в единицу, если результат равен нулю (Zero), бит N — если результат отрицательный (Negative), бит V — если произошло переполнение (oVerflow), бит С - если произошел перенос единицы из старшего или младшего разряда ( Carry ), например, при сложении двух целых чисел или при сдвиге. Значения битов в регистре флагов используются в командах условных переходов;
  • плавающие регистры содержат вещественные числа. В простых процессорах аппаратная поддержка арифметики вещественных чисел может отсутствовать. В этом случае плавающих регистров нет, а операции с вещественными числами реализуются программным путем.

Команды, или инструкции, процессора состоят из кода операции и операндов. Команда может вообще не иметь операндов или иметь один, два, три операнда. Команды с числом операндов большим трех встречаются лишь в процессорах специального назначения (служащих, например, для обработки сигналов) и в обычных архитектурах не используются. Чаще всего применяются двухадресные и трехадресные архитектуры: к двухадресным относятся, к примеру, все процессоры серии Intel 80x86 , к трехадресным — серии Motorola 68000. В двухадресной архитектуре команда сложения выглядит следующим образом:

т.е. один из аргументов команды является одновременно и ее результатом. Этот аргумент называется получателем (destination). Аргумент , который не меняется в результате выполнения команды, называется источником (source). Среди программистов нет единого мнения о том, в каком порядке записывать аргументы при использовании Ассемблера, т.е. в символической записи машинных команд. Например, в Ассемблере " masm " фирмы IBM для процессоров Intel 80x86 получатель всегда записывается первым, а источник вторым. Ассемблер " masm " используется в операционных системах MS DOS и Windows . В Ассемблере " as ", который входит в состав компилятора "gcc" и используется в системах типа Unix (Linux и т.п.), получатель всегда является последним аргументом. Та же команда сложения записывается в " as " как

что означает сложить Y и X и результат записать в X .

В трехадресной архитектуре команда сложения имеет 3 операнда:

Получателем в трехадресной архитектуре обычно является третий аргумент , т.е. в данном случае сумма X+Y записывается в Z .

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

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

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

  • абсолютная адресация - когда в команде указывается константа, равная адресу аргумента ;
  • косвенная адресация - когда в команде указывается регистр, содержащий адрес аргумента ;
  • относительная адресация - адрес аргумента равен сумме содержимого регистра и константы, задающей смещение;
  • индексная адресация с масштабированием - адрес аргумента равен сумме содержимого базового регистра, константы, задающей смещение, а также содержимого индексного регистра, умноженного на масштабирующий множитель. Масштабирующий множитель может принимать значения 1, 2, 4, 8. Этот режим удобен для обращения к элементу массива.

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

CISC и RISC-процессоры

Существует два подхода к конструированию процессоров. Первый состоит в том, чтобы придумать как можно больше разных команд и предусмотреть как можно больше разных режимов адресации. Процессоры такого типа называются CISC-процессорами, от слов Сomplex Instruction Set Computers. Это, в частности, Intel 80x86 и Motorola 68000. Противоположный подход состоит в том, чтобы реализовать лишь минимальное множество команд и режимов адресации, процессоры такого типа называются RISC-процессорами, от слов Reduced Instruction Set Computers. Примеры RISC-процессоров: DEC Alpha, Power PC, Intel Itanium .

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

  1. все команды выполняются исключительно быстро, причем за одинаковое время, т.е. за фиксированное число тактов работы процессора;
  2. значительно поднимается тактовая частота процессора;
  3. намного увеличивается количество регистров процессора и объем кеш -памяти;
  4. удается добиться ортогональности режимов адресации, набора команд и набора регистров. Это означает, что нет каких-либо выделенных регистров или режимов адресации: в любых (или почти любых) командах можно использовать произвольные регистры и режимы адресации независимо друг от друга. Следует отметить, что к памяти могут обращаться лишь команды загрузки слова из памяти в регистр и записи из регистра в память, а все арифметические команды работают только с регистрами;
  5. простота команд позволяет эффективно организовать их выполнение в конвейере ( pipeline ), что значительно ускоряет работу программы.

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

RISC-архитектуры обладают неоспоримыми преимуществами по сравнению с CISC-архитектурами — быстродействием, низкой стоимостью, удобством программирования и т.д. — и практически не имеют недостатков. Существование CISC-процессоров в большинстве случаев объясняется лишь традицией и требованием совместимости со старым программным обеспечением. Впрочем, существует и третий вариант — процессоры, которые по сути являются RISC-процессорами, но эмулируют внешнюю систему команд устаревших процессоров, например, современные процессоры Intel Pentium.

Алгоритм работы компьютера

Среди всех регистров процессора в любой архитектуре всегда имеется два выделенных регистра: это регистр PC, что означает Program Counter , по-русски его называют счетчиком команд, и регистр SP — Stack Pointer , т.е. указатель стека. Иногда регистр PC обозначают как IP, что означает Instruction Pointer , указатель инструкции. (Команды процессора часто называют инструкциями.)

В фон-Неймановской архитектуре , по которой построены все современные компьютеры, программа, состоящая из машинных команд, содержится в оперативной памяти. Регистр PC всегда содержит адрес команды, которая будет выполняться на следующем шаге. Алгоритм работы процессора выглядит следующим образом:

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

2.1. Процессор.

Самый основной элемент компьютера, это, конечно, процессор. Давайте подробней его рассмотрим. Упрощённая структура процессора (рис. 4):


Рис. 4. Упрощённая структура процессора

Основные элементы процессора:

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

· Арифметико-логическое устройство выполняет арифметические операции, такие как сложение, вычитание, а также логические операции.

· Блок управления определяет последовательность микрокоманд, выполняемых при обработке машинных кодов (команд).

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

2.2. Режимы работы процессора.

Процессор архитектуры x86 может работать в одном из пяти режимов и переключаться между ними очень быстро:

1. Реальный (незащищенный) режим (real address mode) — режим, в котором работал процессор 8086. В современных процессорах этот режим поддерживается в основном для совместимости с древним программным обеспечением (DOS-программами).

2. Защищенный режим (protected mode) — режим, который впервые был реализован в 80286 процессоре. Все современные операционные системы (Windows, Linux и пр.) работают в защищенном режиме. Программы реального режима не могут функционировать в защищенном режиме.

3. Режим виртуального процессора 8086 (virtual-8086 mode, V86) — в этот режим можно перейти только из защищенного режима. Служит для обеспечения функционирования программ реального режима, причем дает возможность одновременной работы нескольких таких программ, что в реальном режиме невозможно. Режим V86 предоставляет аппаратные средства для формирования виртуальной машины, эмулирующей процессор8086. Виртуальная машина формируется программными средствами операционной системы. В Windows такая виртуальная машина называется VDM (Virtual DOS Machine — виртуальная машина DOS). VDM перехватывает и обрабатывает системные вызовы от работающих DOS-приложений.

4. Нереальный режим (unreal mode, он же big real mode) — аналогичен реальному режиму, только позволяет получать доступ ко всей физической памяти, что невозможно в реальном режиме.

5. Режим системного управления System Management Mode (SMM) используется в служебных и отладочных целях.

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

2.3. Регистры процессора (программная модель процессора).

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

· 8 регистров общего назначения, служащих для хранения данных и указателей;

· регистры сегментов — они хранят 6 селекторов сегментов;

· регистр управления и контроля EFLAGS, который позволяет управлять состоянием выполнения программы и состоянием (на уровне приложения) процессора;

· регистр-указатель EIP выполняемой следующей инструкции процессора;

· система команд (инструкций) процессора;

· режимы адресации данных в командах процессора.

Начнем с описания базовых регистров процессора Intel 80386.

Базовые регистры процессора Intel 80386 являются основой для разработки программ и позволяют решать основные задачи по обработке данных. Все они показаны на рис. 5.


Рис. 5. Базовые регистры процессора Intel 80386

Среди базового набора регистров выделим отдельные группы и рассмотрим их назначение.

2.4. Регистры общего назначения.

Остальные четыре регистра – ESI (индекс источника), EDI (индекс приемника), ЕВР (указатель базы), ESP (указатель стека) – имеют более конкретное назначение и применяются для хранения всевозможных временных переменных. Регистры ESI и EDI необходимы в строковых операциях, ЕВР и ESP – при работе со стеком. Так же как и в случае с регистрами ЕАХ - EDX, младшие половины этих четырех регистров называются SI, DI, BP и SP соответственно, и в процессорах до 80386 только они и присутствовали.

2.5. Сегментные регистры.

При использовании сегментированных моделей памяти для формирования любого адреса нужны два числа – адрес начала сегмента и смещение искомого байта относительно этого начала (в бессегментной модели памяти flat адреса начал всех сегментов равны). Операционные системы (кроме DOS) могут размещать сегменты, с которыми работает программа пользователя, в разных местах памяти и даже временно записывать их на диск, если памяти не хватает. Так как сегменты способны оказаться где угодно, программа обращается к ним, применяя вместо настоящего адреса начала сегмента 16-битное число, называемое селектором. В процессорах Intel предусмотрено шесть 16-битных регистров - CS, DS, ES, FS, GS, SS , где хранятся селекторы. (Регистры FS и GS отсутствовали в 8086, но появились уже в 80286.) Это означает, что в любой момент можно изменить параметры, записанные в этих регистрах.

В отличие от DS, ES, GS, FS, которые называются регистрами сегментов данных, CS и SS отвечают за сегменты двух особенных типов – сегмент кода и сегмент стека. Первый содержит программу, исполняющуюся в данный момент, следовательно, запись нового селектора в этот регистр приводит к тому, что далее будет исполнена не следующая по тексту программы команда, а команда из кода, находящегося в другом сегменте, с тем же смещением. Смещение очередной выполняемой команды всегда хранится в специальном регистре EIP (указатель инструкции, 16-битная форма IP), запись в который так же приведет к тому, что далее будет исполнена какая-нибудь другая команда. На самом деле все команды передачи управления – перехода, условного перехода, цикла, вызова подпрограммы и т.п. – и осуществляют эту самую запись в CS и EIP.

2.6. Регистр флагов.

Еще один важный регистр, использующийся при выполнении большинства команд, - регистр флагов. Как и раньше, его младшие 16 бит, представлявшие собой весь этот регистр до процессора 80386, называются FLAGS. В EFLAGS каждый бит является флагом, то есть устанавливается в 1 при определенных условиях или установка его в 1 изменяет поведение процессора. Все флаги, расположенные в старшем слове регистра, имеют отношение к управлению защищенным режимом, поэтому здесь рассмотрен только регистр FLAGS (см. рис. 6):


Рис. 6. Регистр флагов FLAGS.

CF – флаг переноса. Устанавливается в 1, если результат предыдущей операции не уместился в приемнике и произошел перенос из старшего бита или если требуется заем (при вычитании), в противном случае – в 0. Например, после сложения слова 0 FFFFh и 1, если регистр, в который надо поместить результат, – слово, в него будет записано 0000 h и флаг CF = 1.

PF – флаг четности. Устанавливается в 1, если младший байт результата предыдущей команды содержит четное число битов, равных 1, и в 0, если нечетное. Это не то же самое, что делимость на два. Число делится на два без остатка, если его самый младший бит равен нулю, и не делится, когда он равен 1.

AF – флаг полупереноса или вспомогательного переноса. Устанавливается в 1, если в результате предыдущей операции произошел перенос (или заем) из третьего бита в четвертый. Этот флаг используется автоматически командами двоично-десятичной коррекции.

ZF – флаг нуля. Устанавливается в 1, если результат предыдущей команды – ноль.

SF – флаг знака. Он всегда равен старшему биту результата.

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

IF – флаг прерываний. Сброс этого флага в 0 приводит к тому, что процессор перестает обрабатывать прерывания от внешних устройств. Обычно его сбрасывают на короткое время для выполнения критических участков кода.

DF – флаг направления. Он контролирует поведение команд обработки строк: когда он установлен в 1, строки обрабатываются в сторону уменьшения адресов, когда DF =0 – наоборот.

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

Флаги IOPL (уровень привилегий ввода-вывода) и NT (вложенная задача) применяются в защищенном режиме.

2.7. Цикл выполнения команды

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

Для того чтобы процессор знал, какую команду нужно выполнять в определённый момент, существует счётчик команд – специальный регистр, в котором хранится адрес команды, которая должна быть выполнена после выполнения текущей команды. То есть при запуске программы в этом регистре хранится адрес первой команды. В процессорах Intel в качестве счётчика команд (его ещё называют указатель команды) используется регистр EIP (или IP в 16-разрядных программах).

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

Цикл выполнения команды – это последовательность действий, которая совершается процессором при выполнении одной машинной команды. При выполнении каждой машинной команды процессор должен выполнить как минимум три действия: выборку, декодирование и выполнение. Если в команде используется операнд, расположенный в оперативной памяти, то процессору придётся выполнить ещё две операции: выборку операнда из памяти и запись результата в память. Ниже описаны эти пять операций.

  • Выборка команды . Блок управления извлекает команду из памяти (из очереди команд), копирует её во внутреннюю память процессора и увеличивает значение счётчика команд на длину этой команды (разные команды могут иметь разный размер).
  • Декодирование команды . Блок управления определяет тип выполняемой команды, пересылает указанные в ней операнды в АЛУ и генерирует электрические сигналы управления АЛУ, которые соответствуют типу выполняемой операции.
  • Выборка операндов . Если в команде используется операнд, расположенный в оперативной памяти, то блок управления начинает операцию по его выборке из памяти.
  • Выполнение команды . АЛУ выполняет указанную в команде операцию, сохраняет полученный результат в заданном месте и обновляет состояние флагов, по значению которых программа может судить о результате выполнения команды.
  • Запись результата в память . Если результат выполнения команды должен быть сохранён в памяти, блок управления начинает операцию сохранения данных в памяти.

Суммируем полученные знания и составим цикл выполнения команды:

  1. Выбрать из очереди команд команду, на которую указывает счётчик команд.
  2. Определить адрес следующей команды в очереди команд и записать адрес следующей команды в счётчик команд.
  3. Декодировать команду.
  4. Если в команде есть операнды, находящиеся в памяти, то выбрать операнды.
  5. Выполнить команду и установить флаги.
  6. Записать результат в память (по необходимости).
  7. Начать выполнение следующей команды с п.1.

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

4. Алгоритмы и языки программирования

4.1. Понятие алгоритма

Понятие алгоритма относится к основным понятиям информатики. Рассмотрим основные понятия, связанные с понятием алгоритма.

Когда речь идет об алгоритме, всегда подразумевается существование некоторого исполнителя, для которого предназначен алгоритм.

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

Предписание – приказ на выполнение действий из указанного конечного набора.

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

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

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

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

Составлению программы предшествует разработка алгоритма.

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

Любой алгоритм обладает следующими свойствами:

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

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

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

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

Алгоритм – это правило, следовательно, оно должно быть сформулировано на некотором языке. Исходные данные и искомые результаты также должны быть описаны на некотором языке, возможно отличном от языка, на котором описан алгоритм.

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

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

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

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

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

Следование. Представляет собой последовательное выполнение действий (рис. 12).

Рис. 12. Следование.

Развилка. Применяется в случае, когда в зависимости от истинности некоторого логического условия необходимо выполнить то или иное действие (рис. 13).

Действия 1 и 2 могут, в свою очередь, включать в себя другие алгоритмические структуры.

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

Цикл До. Применяется, когда некоторые операции надо повторять до тех пор, пока некоторое условие не станет ложным (рис. 14).

Рис. 14. Цикл До.

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

Цикл Пока. Применяется, когда некоторые операции надо повторять до тех пор, пока некоторое условие не станет истинным (рис. 15).

Рис. 15. Цикл Пока.

4.2. Понятие языка

Естественный язык – социальное средство хранения и передачи информации, одно из самых эффективных средств управления поведением человека. Он неразрывно связан с мышлением и существует в виде речи.

Кроме естественного языка существуют искусственные языки, целенаправленно сконструированные для:

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

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

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

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

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

  • зависимость синтаксиса от семантики;
  • многозначность смысла предложений;
  • расплывчатость смысла предложений и возможность парадоксальных предложений.

Зависимость синтаксиса от семантики заключается в том, что способ построения предложения зависит от его смысла. Например, правильность предложения

Кравченко пришел домой

зависит от того, является ли Кравченко мужчиной или женщиной.

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

Приведем пример многозначности естественного языка:

Я вижу косу.

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

Пример парадоксального предложения:

Если у состава отцепить последний вагон, то у состава не будет последнего вагона.

4.3. Языки программирования

Искусственные языки, предназначенные для записи программ, называются языками программирования или алгоритмическими языками. Все языки программирования делятся машинно-зависимые и машинно-независимые.

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

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

  • языки символического кодирования (мнемокоды);
  • макроязыки.

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

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

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

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

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

При программировании на процедурно-ориентированных языках не требуется детального знания устройства компьютера. Наиболее широко используемыми языками высокого уровня являются БЭЙСИК, ПАСКАЛЬ, СИ.

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

4.4. Процесс выполнения программы на ЭВМ

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

Рис. 16. Распределение памяти при выполнении программы.

Процесс выполнения программы на ЭВМ разбивается на ряд этапов (рис. 17).

Рис.17. Процесс выполнения программы на ЭВМ.

Программа пишется программистом на одном из языков программирования. Процессор ЭВМ может реально выполнять только команды машинного языка. Преобразование исходного текста программы в машинные коды выполняется специальной программой – транслятором. Рассмотренный выше ассемблер является одной из разновидностей транслятора.

Трансляторы бывают двух видов: компиляторы и интерпретаторы.

Компилятор преобразует исходную программу на любом языке высокого уровня в некоторую стандартную форму на машинном языке, называемую объектным модулем.

Интерпретатор преобразует отдельные предложения исходного языка в машинный код и немедленно их исполняет. Интерпретатор не создает объектный модуль.

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

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

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

Компилятор не может указать конкретный адрес оперативной памяти, начиная с которого будет располагаться формируемый объектный модуль, поскольку:

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

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

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

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

ВложениеРазмер
itogovyy_test_po_informatike_2_semestr.doc 315.5 КБ

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

Тесты для оценки качества подготовки по информатике за 2 семестр

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

Время выполнения теста: 45 мин.

Тесты составлены на основе «Обязательного минимума содержания образования по информатике»

Таблица соответствия номеров вопросов темам курса

1. Информация и информационные процессы

Представление о развитии ВТ и становлении информационного общества

2. Представление информации

Знание единиц измерения количества информации

Умение определять количество информации

Умение записывать десятичные числа в двоичной системе счисления

Знание основных устройств компьютера и их функций

Знание правил техники безопасности, технической эксплуатации, сохранности информации и защиты ее от вирусов при работе на компьютере

Знание, что такое файл и файловая система

4. Моделирование и формализация

Представление о процессе моделирования и решение задач на компьютере

5. Алгоритмы и исполнители

Представление об алгоритме, исполнителе, системе команд исполнителя

Знание основных алгоритмических конструкций

Умение формально выполнять алгоритмы

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

6. Информационные технологии

Технологи обработки текста и графики

Представление о возможностях текстовых редакторов

Знание о существовании различных форматов и кодировок текстовых документов

Представление о различных типах графических редакторов и их возможностях

Представление о существовании различных форматов графических файлов

Представление о мультимедиа-технологии

Технология обработки числовой информации

Знание структуры и возможностей электронных таблиц

Умение решать задачи в электронных таблицах

Технология хранения, поиска и сортировки информации

Знание структуры и возможностей баз данных

Умение решать задачи на поиск и сортировку записей

Представление о технических характеристиках модемов и линий связи

Представление об информационных сервисах Интернета

Представление об основах технологии WWW

  1. Массовое производство персональных компьютеров началось.
  1. В детской игре «Угадай число» первый участник загадал целое число в промежутке от 1 до 8. Второй участник задает вопросы: «Загаданное число больше числа _?» Какое максимальное количество вопросов при правильной стратегии (интервал чисел в каждом вопросе делится пополам) должен задать второй участник, чтобы отгадать число?
  1. Как записывается десятичное число 5 в двоичной системе счисления?
  1. Производительность работы компьютера (быстрота выполнения операций) зависит от.

1) размера экрана дисплея
2) частоты процессора
3) напряжения питания
4) быстроты, нажатия на клавиши

  1. Какое устройство может оказывать вредное воздействие на здоровье человека?

3) системный блок

1) единица измерения информации
2) программа в оперативной памяти
3) текст, распечатанный на принтере
4) программа или данные на диске

  1. Модель есть замещение изучаемого объекта другим объектом, который отражает.

1) все стороны данного объекта
2) некоторые стороны данного объекта
3) существенные стороны данного объекта
4) несущественные стороны данного объекта

1)последовательность команд, которую может выполнить исполнитель
2) система команд исполнителя
3) математическая модель
4) информационная модель

  1. Алгоритмическая структура какого типа изображена на блок-схеме?

1)цикл
2) ветвление
3) подпрограмма
4) линейная

  1. Какая из последовательностей команд приведет исполнителя Черепашка в первоначальное место и положение?

1) вперед (1 см), направо (90°), вперед (1 см), направо (90°), вперед (1 см), направо (90°)вперед (1 см), направо (90°);
2) вперед (1 см), направо (90°), вперед (1 см),направо (90°), вперед (1 см), направо (90°), вперед (1 см),
3) вперед (1 см), направо (90°), вперед (1 см), направо (90°), вперед (1 см), направо (90°)
4) вперед (1 см), направо (90°), вперед (1 см),направо (90°)

1) значение переменной

3) тип переменной

2) имя переменной

4) тип алгоритма

  1. Минимальным объектом, используемым в текстовом редакторе, является.

1) слово
2) точка экрана (пиксель)
3) абзац
4) символ (знакоместо)

  1. Количество различных кодировок букв русского алфавита составляет.

1) одну
2) две (MS-DOS, Windows)
3) три (MS-DOS, Windows, Macintosh)
4) пять (MS-DOS, Windows, Macintosh, КОИ-8, ISO)

  1. Инструментами в графическом редакторе являются.

1) линия, круг, прямоугольник

2) выделение, копирование, вставка
3) карандаш, кисть, ластик
4) наборы цветов (палитры)

Читайте также: