Уровни языков программирования. Компиляторы и интерпретаторы

Компиляторы и интерпретаторы

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

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

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

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

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

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

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

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

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

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

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

Имя переменной – это название места (ячейки) в общем объеме ОЗУ используемое в программе на алгоритмическом языке вместо указания адреса, определяемого номером в шестнадцатеричной системе счисления. Языки программирования позволяют работать с простыми переменными и индексированными (элементами массива).

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

Основные этапы решения задач на ЭВМ:

Вне зависимости от того, на каком алгоритмическом языке создается программа, этапы подготовки и решения задач на ЭВМ выглядят следующим образом:

1. Математическая постановка задачи - это формулировка задачи как задачи некоторого раздела математики.

2. Построение математической модели.

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

Пример. Определить периметр крышки стола.

       
   
 


рисунок 1 рисунок 2

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

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

Если это доказано, то математическая постановка задачи имеет такой вид:

исходные данные: r- радиус закругления,

a, b, c, d- размеры прямолинейных частей фигуры;

результат: Р (периметр);

Вычислить значение Р: Р= 2Пr+a+b+c+d.

Если величина r такова, что при требуемой точности вычисления результатов закруглением углов можно пренебречь, то в качестве модели объекта можно взять четырехугольник общего вида (рис.2). В этом случае приходим к такой задаче:

исходные данные: а, b, с, d- размеры прямолинейной части фигуры;

результат: Р (периметр).

Вычислить значение Р: Р=a+b+c+d.

В качестве модели объекта задачи можно взять прямоугольник со сторонами а и b. Если окажется, что при заданной точности вычисления противоположенные стороны крышки можно считать равными, как и диагонали ее, МПЗ имеет такой вид:

исходные данные: a, b - размеры прямоугольника;

результат: P (периметр)

Вычислить значение Р:

P=2(a+b).

3. Выбор метода решения.

4. Построение алгоритма.

5. Запись алгоритма на языке программирования.

6. Отладка программы на ЭВМ.

Пример решения задачи. Составить программу начисления зарплаты согласно следующему правилу:

если стаж сотрудника менее 5 лет, то зарплата 130 руб., при стаже работы от 5 до 15 лет - 180 руб., при стаже свыше 15 лет зарплата повышается с каждым годом на 10 руб.

Сформулируем задачу в математическом виде: Вычислить

 
 


130, если ST< 5;

ZP < 180, если 5<ST<15

180 +(T-15)10, если 15<ST

ZP - заработанная плата, ST - стаж работы.

Описание алгоритма на естественном языке:

1. Запросить ST;

2. Если ST< 5, то ZP:=130, перейти в п.5,

3. Если ST< 15, то ZP:=180, перейти к п. 5

4. ZP = 180+(ST-15)•10

5. Сообщить значение, ST

6. Конец.

Пример блок-схемы алгоритма решения задачи




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



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