ВУЗ: Пермский национальный исследовательский политехнический университет
Категория: Учебное пособие
Дисциплина: Информатика
Добавлен: 19.10.2018
Просмотров: 12731
Скачиваний: 132
61
Трансляция, интерпретация и компиляция программ
С помощью языка программирования создается текст про-
граммы, описывающий ранее разработанный алгоритм решения
задачи. Затем этот текст программы специальными служебными
приложениями (трансляторами) либо сначала переводится в
машинный код (для этого служат программы-компиляторы),
который затем используется отдельно от исходного текста про-
граммы, либо сразу покомандно исполняется (этим занимаются
программы-интерпретаторы).
Интерпретатор берет очередной оператор языка из текста
программы, анализирует его структуру и затем сразу исполняет.
Только после того, как текущий оператор успешно выполнен,
интерпретатор перейдет к следующему.
Компиляторы полностью обрабатывают весь текст про-
граммы. Они просматривают его в поисках синтаксических
ошибок, выполняют определенный смысловой анализ и затем
автоматически переводят (транслируют) на машинный язык –
генерируют машинный код, который затем исполняется непо-
средственно процессором.
Системы программирования
Для создания программы на выбранном языке программи-
рования необходимо иметь следующие компоненты:
– текстовый редактор;
– компилятор;
– редактор связей;
– библиотеки функций;
– отладчик (пошаговое выполнение).
Все это представляет собой интегрированную систему про-
граммирования.
Этапы решения задачи на компьютере
1. Формализация данных.
2. Создание математической модели.
3. Детальное описание алгоритма (блок-схема).
62
4. Реализация на языке программирования.
5. Отладка программы.
6. Тестирование программы.
7. Анализ результатов работы программы.
7.2. Программирование на языке Pascal
PascalABC.NET – это язык программирования Pascal нового
поколения, включающий классический Pascal, большинство
возможностей языка Delphi, а также ряд собственных расшире-
ний. Он реализован на платформе Microsoft.NET и содержит все
современные языковые средства: классы, перегрузку операций,
интерфейсы, обработку исключений, обобщенные классы и под-
программы, средства параллельного программирования [6].
PascalABC.NET – это также простая и мощная интегриро-
ванная среда разработки, содержащая средства автоформатиро-
вания, встроенный отладчик и встроенный дизайнер форм.
Операторы языка программирования
Служат для описания некоторого законченного этапа обра-
ботки данных. Операторы определяют действия над объектами
программы. Операторы могут быть простыми и структуриро-
ванными, т.е. состоящими из других операторов. Операторы,
следующие в программе друг за другом, разделяются точкой с
запятой (;).
Идентификаторы
Выполняют роль имен, которые даются различным про-
граммным объектам – константам, типам, переменным величи-
нам, функциям и т. п., чтобы программисту было удобно ссы-
латься на эти объекты. Идентификатор может начинаться только
с буквы или знака подчеркивания. Пробелы и другие специаль-
ные символы недопустимы в идентификаторах. Компилятор не
делает различия между прописными и строчными буквами.
63
Типы данных
Каждая константа, переменная, элемент массива принадле-
жат к определенному типу данных. Тип определяет форму внут-
реннего представления, множество принимаемых значений
и множество допустимых операций. Тип констант распознается
компилятором автоматически. Тип переменных должен быть
описан в разделе описаний (в разделе переменных, начинаю-
щемся со специального слова var). PascalABC.NET характери-
зуется разветвленной структурой типов данных (табл. 1). В табл. 1
представлена информация о простых типах данных. Для вещест-
венных типов в скобках указано количество сохраняемых зна-
чащих цифр мантиссы в десятичном представлении числа.
Т а б л и ц а 1
Типы данных языка программирования PascalABC.NET
Идентификатор
Длина, байт
Диапазон (множество) значений
Целые типы
shortint
1 –128…127
smallint
2 –32768…32767
integer, longint
4 –2147483648…2147483647
byte
1 0…255
word
2 0…65535
Вещественные типы
real, double
8 –1,8·10
308
…1,8·10
308
(15–16)
singl
4
–3,4
10
38
…3,4
10
38
(7–8)
Логический тип
boolean
1 true
(истина), false (ложь)
Символьный тип
char
2 Unicode-символ
Арифметическое выражение
Задает порядок выполнения действий над элементами дан-
ных и состоит из операндов (констант, переменных, обращений
к функциям), круглых скобок и знаков операций. Выражение
64
должно содержать данные одного типа, при этом значение выра-
жения получается того же типа. Однако допускается использова-
ние в одном выражении данных целого и вещественного типов,
результат в этом случае получается вещественного типа.
Арифметические операции приведены в табл. 2. Операции
выполняются в соответствии с их приоритетом. Операции с рав-
ным приоритетом выполняются слева направо. В случае необхо-
димости изменения порядка выполнения операции используются
круглые скобки.
Т а б л и ц а 2
Арифметические операции языка программирования
PascalABC.NET
Знак
операции
Содержание Выражение
Тип
операндов
Тип
результата
+
сложение
A + B
целый, вещест-
венный
целый, вещест-
венный
-
вычитание
A – B
целый, вещест-
венный
целый, вещест-
венный
*
умножение
A * B
целый, вещест-
венный
целый, вещест-
венный
/
деление
A/B
целый, вещест-
венный
целый, вещест-
венный
div
целочисленное
деление
A div B целый
целый
mod
остаток
A mod B целый
целый
Операция div возвращает целую часть частного, дробная
часть отбрасывается. Операция mod восстанавливает остаток,
полученный при выполнении целочисленного деления. Напри-
мер, значение выражения 10 div 3 будет равно 3, а значение
выражения 10 mod 3 будет равно 1.
Стандартные функции
В языке Pascal существуют заранее разработанные подпро-
граммы-функции (табл. 3), которые могут использоваться в про-
граммах. Аргументы функций записываются в круглых скобках.
65
Т а б л и ц а 3
Стандартные функции языка программирования PascalABC.NET
Обозначение Тип аргумента
Тип результата
Функция
Pi -
real
число
= 3,1415926536
abs(x) integer/real
integer/real
модуль аргумента
arctan(x) integer/real
real
арктангенс (радианы)
cos(x) integer/real
real косинус (х в радианах)
sin(x) integer/real
real синус (х в радианах)
exp(x) integer/real
real экспонента е
х
frac(x) integer/real
real дробная часть х
int(x) integer/real
real целая часть х
ln(x) integer/real
real
натуральный логарифм
random real
псевдослучайное число
из диапазона [0,1)
random(x) integer integer
псевдослучайное число
из диапазона [0,х)
round(x) real integer
округление до ближай-
шего целого
sqr(x) integer/real
integer/real
квадрат х
sqrt(x) integer/real
real корень квадратный
trunc(x) real integer
ближайшее целое,
не превышающее х
по модулю
Для выполнения операции возведения в степень а
b
исполь-
зуется следующая математическая формула:
ln( )
b
b
a
a
e
. На язы-
ке Pascal это будет выглядеть так: exp(b*ln(a)).
Можно также воспользоваться функцией
function Power(const Base, Exponent:
Extended): Extended, которая возводит число A в степень
B. Например, Power(A, B);
Вычисление tg(x) производится с помощью выражения
sin(x)/cos(x).
Вычисление log
b
a производится с помощью выражения:
ln(a)/ln(b).
Например, запишем по правилам языка Pascal математиче-
ское выражение:
2
1
a b x
x
.
На Pascal это выглядит так: (a+b*x)/sqrt(x*x+1).