Компиляторы и интерпретаторы
С помощью языков программирования создается не готовая программа, а только ее текст, описывающий ранее разработанный алгоритм.
Программы, которые называется – компиляторами.
Программы - интерпретаторы используют машинный код отдельно от исходного текста, либо сразу выполняют команды языка, указанные в тексте программы.
Интерпретато р берет очередной оператор языка из текста программы, анализирует его структуру и затем сразу исполняет (обычно после анализа оператор транслируется в некоторое промежуточное представление или даже машинный код для более эффективного дальнейшего исполнения). Только после того как текущий оператор успешно выполнен, интерпретатор перейдет к следующему.
Компиляторы автоматически переводят текст программы в машинный код (полностью обрабатывают весь текст программы). Они просматривают его в поисках синтаксических ошибок (иногда несколько раз), выполняют определенный смысловой анализ и затем автоматически переводят (транслируют) на машинный язык — генерируют машинный код. В реальных системах программирования перемешаны технологии и компиляции, и интерпретации.
|
|
Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня. В данном случае «низкий уровень» не значит «плохой». Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора.
Языком самого низкого уровня является язык ассемблера, который просто представляет каждую команду машинного кода, но не в виде чисел, а с помощью условных символьных обозначений, называемых мнемониками. Однозначное преобразование одной машинной инструкции в одну команду ассемблера называется транслитерацией. Так как наборы инструкций для каждого модели процессора отличаются, конкретной компьютерной архитектуре соответствует свой язык ассемблера, и написанная на нем программа может быть использована только в этой среде.
С помощью языков низкого уровня создаются очень эффективные и компактные программы, так как разработчик получает доступ ко всем возможностям процессора. С другой стороны, при этом требуется очень хорошо понимать устройство компьютера, затрудняется отладка больших приложений, а результирующая программа не может быть перенесена на компьютер с другим типом процессора. Подобные языки обычно применяют для написания небольших системных приложений, драйверов устройств, модулей стыковки с нестандартным оборудованием, когда важнейшими требованиями становятся компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам. В некоторых областям (например, в машинной графике), на языке ассемблера пишутся библиотеки, эффективно реализующие требующие интенсивных вычислений алгоритмы обработки изображений.
|
|
Языки программирования высокого уровня значительно ближе и понятнее человеку, нежели компьютеру. Особенности конкретных компьютерных архитектур в них не учитываются, поэтому создаваемые программы на уровне исходных текстов легко переносимы на другие платформы, для которых создан транслятор этого языка. Разрабатывать программы на языках высокого, уровня с помощью понятных и мощных команд значительно проще, а ошибок при создании программ допускается гораздо меньше.
Программирование – это процесс составления компьютерной программы на основе некоторого алгоритма. Компьютерная программа – это закодированная информация о действиях, которые предписывается выполнить компьютеру, записанный или на языке машинных двоичный кодов, или на специальном языке программирования.
Переменная в программировании: тип, имя и значение. Мы знаем что в математике переменные – это данные которые меняют свои значения. В программировании переменная – это небольшая область в оперативной памяти компьютера, куда во время работы программы можно занести и хранить в закодированном виде некоторое значение, которым при необходимости можно пользоваться и которое можно изменять.
Имя переменной – это название места (ячейки) в общем объеме ОЗУ используемое в программе на алгоритмическом языке вместо указания адреса, определяемого номером в шестнадцатеричной системе счисления. Языки программирования позволяют работать с простыми переменными и индексированными (элементами массива).
Типы переменных. Значение переменной, занесенное и хранимое в ячейке с ее именем, может быть, как уже отмечалось, различным по типу числом либо символьным текстом. В соответствии со значением переменные называются целыми, действительными, символьными. Очевидно, что операции, которые можно произвести с числами, нельзя осуществить с символьным текстом. Объем памяти для хранения разных по типу значений тоже потребуется различный. Поэтому в некоторых языках программирования предусмотрены операторы, объявляющие тип переменной с указанным именем, в других языках программирования прямо в имени переменной употребляют значки, чтобы указать транслятору, сколько может понадобиться места для хранение значения данной переменной.
Основные этапы решения задач на ЭВМ:
Вне зависимости от того, на каком алгоритмическом языке создается программа, этапы подготовки и решения задач на ЭВМ выглядят следующим образом:
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. Конец.
Пример блок-схемы алгоритма решения задачи