IV. ЯЗЫКИ ПРОГРАММИРОВАНИЯ. Основные понятия.
(Pascal)
Введение
Достаточно распространенными языками программирования являются C++, Pascal, Basic, Fortran. Язык программирования Паскаль (Pascal) разработан профессором Нильсом Виртом в 1970г. в Швейцарском техническом университете в г. Цюрихе. В этом языке реализованы принципы концепции структурного программирования:
– простота чтения и понимания текста программы;
– простота внесения изменений в программу;
– простота анализа правильности программы.
Все версии Паскаля (их немного) совместимы друг с другом (этого не скажешь о Бейсике). Корпорация Borland International разработала версию Turbo Pascal со встроенным отладчиком, позволяющим сократить время отладки программы, использовать мышь, оконный режим, возможность создавать объектно-ориентированные программы.
4.1. Основные понятия любого алгоритмического языка
Состав языка. Любой алгоритмический язык содержит элементы –символы, элементарные конструкции, выражения и операторы, которые составляют его иерархическую структуру.
Описание языка есть описание четырех названных элементов. Описание символов заключается в перечислении допустимых символов языка. Под описанием элементарных конструкций понимают правила их образования. Описание выражений – это правила образования любых выражений, имеющих смысл в данном языке. Описание операторов состоит из рассмотрения всех типов операторов, допустимых в языке. Описание каждого элемента языка задается его синтаксисом и семантикой. Синтаксические определения устанавливают правила построения элементов языка. Семантика определяет смысл и правила использования элементов языка. Символы языка – это основные неделимые знаки, в терминах которых пишутся все тексты на языке.
|
Элементарные конструкции – это минимальные единицы языка, имеющие самостоятельный смысл. Они образуются из основных символов языка. Выражение состоит из элементарных конструкций и символов, задает правило вычисления некоторого значения.
Оператор задает полное описание некоторого действия. Для описания сложного действия может потребоваться группа операторов. В этом случае операторы объединяются в составной оператор или блок. Действия, заданные операторами, выполняются над данными. Предложения алгоритмического языка, в которых даются сведения о типах данных, называются описаниями или неисполняемыми операторами. Объединенная единым алгоритмом совокупность описаний и операторов образует программу на алгоритмическом языке.
Алгоритм – это точная, конечная последовательность действий, исполнение которых позволяет получить решение задачи, однозначно определяемое исходными данными.
Блок-схема – это графическое отображение алгоритма. Каждому действию соответствует определенная алгоритмическая фигура. Блоки соединяют между собой стрелками, которые указывают порядок действий.
– блоки начала и конца алгоритма, имеют один выход и один вход соответственно.
– блок ввода данных
– блок вычислений
– блок вывода на экран, принтер или в файл
– блок разветвления (условия)
Пример 1. Вычислить функцию у(х)=ах2+bx+c. Запишем алгоритм примера в графической форме.
Это линейный алгоритм.
| Пример 2. Вычислить функцию у(х)= . Запишем алгоритм примера в графической форме.
Это простой разветвляющийся алгоритм. |
Пример 3. Вычислить функцию у(х)= .
Запишем алгоритм примера в графической форме. Это многоразветвляющийся алгоритм.
Основные свойства алгоритма:
1. детерминированность (определенность) – получение однозначного результата вычислительного процесса при заданных исходных данных. Благодаря этому свойству процесс выполнения алгоритма носит механический характер;
2. результативность – указывает на наличие таких исходных данных, для которых реализуемый по заданному алгоритму вычислительный процесс должен через конечное число шагов остановиться и выдать искомый результат;
3. массовость – это свойство предполагает, что алгоритм должен быть пригоден для решения всех задач данного типа;
4. дискретность – означает разделяемость вычислительного процесса на отдельные этапы, выполнение которых исполнителем (компьютером) не вызывает сомнений.
Три основных вида вычислительных процессов: линейный; ветвящийся; циклический.
Линейным называется такой вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов.
Ветвящимся называется такой вычислительный процесс, в котором выбор направления обработки информации зависит от исходных или промежуточных данных (от результатов проверки выполнения какого-либо логического условия).
|
Циклом называется многократно повторяемый участок вычислений. Вычислительный процесс, содержащий один или несколько циклов, называется циклическим. По количеству выполнения циклы делятся на циклы с определенным (заранее заданным) числом повторений и циклы с неопределенным числом повторений. Количество повторений последних зависит от соблюдения некоторого условия, задающего необходимость выполнения цикла. При этом условие может проверяться в начале цикла – тогда речь идет о цикле с предусловием, или в конце – тогда это цикл с постусловием.
Основные символы Pascal
Основные символы языка – буквы, цифры и специальные символы – составляют его алфавит. Pascal включает следующий набор основных символов:
1) 26 латинских строчных и 26 латинских прописных букв:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
2) _ подчеркивание
3) 10 цифр: 0 1 2 3 4 5 6 7 8 9
4) знаки операций: + - * / = <> < > <= >=:= @
5) ограничители:., ' () [ ] (..) { } (* *)..:;
6) спецификаторы: ^ # $
7) служебные (зарезервированные) слова:
ABSOLUTE EXPORTS LIBRARY SET
ASSEMBLER EXTERNAL MOD SHL
AND FAR NAME SHR
ARRAY FILE NIL STRING
ASM FOR NEAR THEN
ASSEMBLER FORWARD NOT TO
BEGIN FUNCTION OBJECT TYPE
CASE GOTO OF UNIT
CONST IF OR UNTIL
CONSTRUCTOR IMPLEMENTATION PACKED USES
DESTRUCTOR IN PRIVATE VAR
DIV INDEX PROCEDURE VIRTUAL
DO INHERITED PROGRAM WHILE
DOWNTO INLINE PUBLIC WITH
ELSE INTERFACE RECORD XOR
END INTERRUPT REPEAT
EXPORT LABEL RESIDENT
Кроме перечисленных, в набор основных символов входит пробел. Пробелы нельзя использовать внутри сдвоенных символов и зарезервированных слов.
Элементарные конструкции
Элементарные конструкции языка Pascal включают в себя имена, числа и строки. Именами (идентификаторами) называют элементы языка – константы, метки, типы, переменные, процедуры, функции, модули, объекты. Имя – это последовательность букв и цифр, начинающаяся с буквы. В именах может использоваться символ _ подчеркивание. Имя может содержать произвольное количество символов, но значащими являются 63 символа. Не разрешается в языке Pascal использовать в качестве имен служебные слова и стандартные имена, которыми названы стандартные константы, типы, процедуры, функции и файлы.
В программу вставляются пробелы. Один пробел требуется вставить между двумя последовательными именами, числами или служебными и стандартными именами. Пробелы нельзя использовать внутри имен и чисел.
Примеры имен языка: A b12 r1m SIGMA gamma I80_86
Числа в языке Pascal записываются в десятичной системе счисления, могут быть целыми и действительными. Положительный знак числа может быть опущен. Целые числа записываются в форме без десятичной точки, например:
217 -45 8954 +483
Действительные числа записываются в форме с десятичной точкой или в форме с использованием десятичного порядка, который изображается буквой Е:
28.6 0.65 -0.018 4.0 5Е12 -1.72Е9 73.1Е-16
Строки – это последовательность символов, записанная между апострофами. Если в строке в качестве содержательного символа необходимо употребить сам апостроф, то следует записать два апострофа. Примеры строк: 'СТРОКА' 'STRING' 'ПРОГРАММА' 'АД''ЮТАНТ'.
Концепция типа данных
Строгая классификация (разграничение) переменных производится между вещественными, комплексными и логическими переменными, между переменными, представляющими отдельные значения и множество значений. В любом алгоритмическом языке каждая константа, переменная, выражение или функция бывают определенного типа. В языке Pascal существует правило: тип явно задается в описании переменной или функции, которое предшествует их использованию.
Концепция типа языка Pascal имеет следующие основные свойства:
1. любой тип данных определяет множество значений, к которому принадлежит константа, которое может принимать переменная или выражение, или вырабатывать операция или функция;
2. тип значения, задаваемого константой, переменной или выражением, можно определить по их виду или описанию;
3. каждая операция или функция требует аргументов фиксированного типа и выдает результат фиксированного типа.
Отсюда следует, что транслятор может использовать информацию о типах для проверки вычислимости и правильности различных конструкций.
Тип определяет:
- возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;
- внутреннюю форму представления данных в ПК;
- операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.
Описание типа является обязательным и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня. В языке Pascal существуют скалярные и структурированные типы данных.
К cкалярному типу относятся стандартные типы и типы, определяемые пользователем. Стандартные типы включают целые, действительные, символьный, логические и адресный типы. Типы, определяемые пользователем, – перечисляемый и интервальный.
Структурированные типы имеют четыре разновидности: массивы, множества, записи и файлы. Кроме перечисленных, Pascal включает еще два типа – процедурный и объектный.
Из группы скалярных типов можно выделить порядковые типы, которые характеризуются следующими свойствами:
1. все возможные значения порядкового типа представляют собой ограниченное упорядоченное множество;
2. к любому порядковому типу может быть применена стандартная функция Ord, которая в качестве результата возвращает порядковый номер конкретного значения в данном типе;
3. к любому порядковому типу могут быть применены стандартные функции Pred и Succ, которые возвращают предыдущее и последующее значения соответственно;
4. к любому порядковому типу могут быть применены стандартные функции Low и High, которые возвращают наименьшее и наибольшее значения величин данного типа.
В языке Pascal введено понятие эквивалентноститипов. Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется одно из двух условий:
1. Т1 и Т2 представляют собой одно и то же имя типа;
2. тип Т2 описан с использованием типа Т1 с помощью равенства или последовательности равенств.
Например:
Type T1 = Integer;
T2 = T1;
T3 = T2;
Понятие совместимости. Типы являются совместимыми, если:
1. они эквивалентны;
2. являются оба либо целыми, либо действительными;
3. один тип – интервальный, другой – его базовый;
4. оба интервальные с общим базовым;
5. один тип – строковый, другой – символьный.
В Pascal ограничения на совместимость типов можно обойти с помощью приведения типов. Приведение типов позволяет рассматривать одну и ту же величину в памяти ПК как принадлежащую разным типам. Для этого используется конструкция: Имя_Типа(переменная или значение).
4.5. Стандартные типы данных
К стандартным относятся целые, действительные, логические, символьный и адресный типы.
Целые типы определяют константы, переменные и функции, значения которых реализуются множеством целых чисел.
Тип диапазон значений требуемая память
______________________________________________________
Shortint -128.. 127 1 байт
Integer -32768.. 32767 2 байта целый
Longint -2147483648.. 2147483647 4 байта
Byte 0.. 255 1 байт
Word 0.. 65535 2 байта
______________________________________________________
Над целыми операндами можно выполнять следующие арифметические операции: сложение, вычитание, умножение, деление, получение остатка от деления. Знаки этих операций: + - * div mod
Результат арифметической операции над целыми операндами есть величина целого типа. Результат выполнения операции деления целых величин есть целая часть частного. Результат выполнения операции получения остатка от деления – остаток от деления целых.
Например: 17 div 2 = 8, 3 div 5 = 0. 17 mod 2 = 1, 3 mod 5 = 3.
Операции отношения, примененные к целым операндам, дают результат логического типа TRUE или FALSE (истина или ложь). В языке Pascal имеются следующие операции отношения: равенство =, неравенство <>, больше или равно >=, меньше или равно <=, больше >, меньше <. К аргументам целого типа применимы следующие стандартные (встроенные) функции, результат выполнения которых имеет целый тип: Abs(X), Sqr(X), Succ(X), Pred(X), и которые определяют соответственно абсолютное значение Х, Х 2, Х+1, Х-1.
Следующая группа стандартных функций для аргумента целого типа дает действительный результат: Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X), Sqrt(X). Эти функции вычисляют синус, косинус и арктангенс угла, заданного в радианах, логарифм натуральный, экспоненту и корень квадратный соответственно.
Результат выполнения функции проверки целой величины на нечетность Odd(X) имеет значение истина, если аргумент нечетный, и значение ложь, если аргумент четный:
X=5 Odd(X)=TRUE, X=4 Odd(X)=FALSE.
Для быстрой работы с целыми числами определены процедуры:
Inc(X) X:=X+1
Inc(X,N) X:=X+N
Dec(X) X:=X-1
Dec(X,N) X:=X-N
Действительные типы определяет те данные, которые реализуются подмножеством действительных чисел.
Тип Диапазон Количество цифр Требуемая значений
мантиссы память (байт)
Real 2.9e-39.. 1.7e+38 11 вещественный 6
Single 1.5e-45.. 3.4e+38 7 4
Double 5.0e-324.. 1.7e+308 15 8
Extended 3.4e-4932.. 1.1e+4932 19 10
Comp -9.2e+18.. 9.2e+18 19 8
Тип Real определен в стандартном Pascal и математическим сопроцессором не поддерживается. Остальные действительные типы реализованы на всех современных компьютерах. Тип Comp относится к действительным типам, но хранит только длинные целые значения.
Над действительными операндами можно выполнять следующие арифметические операции, дающие действительный результат:
сложение +, вычитание –, умножение *, деление /.
К величинам действительного типа применимы все операции отношения, дающие булевский результат. Один из операндов, участвующих в этих операциях, может быть целым.
К действительным аргументам применимы функции, дающие действительный результат: Abs(X), Sqr(X), Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X), Sqrt(X), Frac(X), Int(X), Pi.
Функция Frac(X) возвращает дробную часть X, функция Int(X) – целую часть X. Безаргументная функция Pi возвращает значение числа Пи действительного типа.
К аргументам действительного типа применимы функции Trunc(X) и Round(X), дающие целый результат. Первая из них выделяет целую часть действительного аргумента путем отсечения дробной части, вторая округляет аргумент до ближайшего целого.
Логический тип (Boolean) определяет те данные, которые могут принимать логические значения TRUE(1) и FALSE(0). К булевским операндам применимы следующие логические операции: not (не) and (и) or (или) xor (логич. или). Логический тип определен таким образом, что FALSE < TRUE. Это позволяет применять к булевским операндам все операции отношения.
Символьный тип (Char) определяет упорядоченную совокупность символов, значение символьной переменной или константы – это один символ из допустимого набора.
Символьная константа записывается в тексте программы тремя способами:
1. как один символ, заключенный в апострофы, например: 'A' 'a' 'Ю' 'ю';
2. с помощью конструкции вида #K, где K – код соответствующего символа, при этом значение K должно находиться в пределах 0..255;
3. с помощью конструкции вида ^C, где C – код соответствующего управляющего символа, при этом значение C должно быть на 64 больше кода управляющего символа.
К величинам символьного типа применимы все операции отношения.
Для величин символьного типа определены две функции преобразования Ord(C) и Chr(K). Первая функция определяет порядковый номер символа С в наборе символов, вторая определяет по порядковому номеру К символ, стоящий на К-ом месте в наборе символов. Порядковый номер имеет целый тип.
К аргументам символьного типа применяются функции, которые определяют предыдущий и последующий символы: Pred(C) Succ(C). Pred('F') = 'E'; Succ('Y') = 'Z'.
При отсутствии предыдущего или последующего символов значение соответствующих функций не определено. Для литер из интервала 'a'..'z' применима функция UpCase(C), которая переводит эти литеры в верхний регистр 'A'..'Z'.
Адресный тип (Pointer) определяет переменные, которые могут содержать значения адресов данных или фрагментов программы. Для хранения адреса требуются два слова (4 байта), одно из них определяет сегмент, второе – смещение. Для получения значения адреса какой-либо переменной введена унарная операция @.
Константы
Тип констант в языке Pascal определяется по их виду:
1. константы целого типа – это целые числа, не содержащие десятичной точки,
2. константы действительного типа – действительные числа,
3. логические константы – логические значения TRUE и FALSE,
4. символьные константы – строки длиной в один символ или конструкции вида #K или ^K.
Язык Pascal допускает использовать синонимы для обозначения констант, в этом случае текст программы содержит раздел описания констант, например:
const имя константы = значение const e=2.71828; const t=56;
4.7. Переменные. Инициализация переменных
Тип переменных определяется пользователем в разделе описания переменных:
Var x,y,z,max:real; i,j:integer; num:char;
Имена переменных принято записывать с использованием так называемой венгерской нотации. Венгерская нотация – это соглашение о наименованиях переменных и функций. Соглашение широко используется при программировании на языках Pascal, C и в среде Windows. Венгерская нотация основывается на следующих принципах:
- имена переменных и функций должны содержать префикс, описывающий их тип;
- имена переменных и функций записываются полными словами или словосочетаниями или их сокращениями, но так, чтобы по имени можно было понять назначение переменной или действие, выполняемое функцией.
Префиксы записываются малыми буквами, первая буква каждого слова заглавная, префиксы и слова записываются либо слитно, либо через символ _ (подчеркивание).
Для языка Pascal могут быть рекомендованы следующие префиксы для скалярных переменных и функций:
Префикс | Тип | Префикс | Тип |
by | Byte | d | Double |
sh | Shortint | e | Extended |
i | Integer | c | Comp |
w | Word | ch | Char |
l | Longint | b | Boolean |
r | Real | p | Pointer |
si | Single | x,у | координаты символа или точки на экране. |
Для величин структурированного типа могут быть использованы следующие префиксы:
Префикс | Тип | Префикс | Тип |
a | Array | sz | Stringz |
s | String | se | Set |
re | Record | f | File |
t | Text |
Например: rV, arVector[1..20], sName, iCount.
В откомпилированной программе для всех переменных отведено место в памяти, и всем переменным присвоены нулевые значения. Pascal позволяет присваивать начальные значения переменным одновременно с их описанием. Для этого используется конструкция
имя переменной: тип = значение;
которая должна быть размещена в разделе описания констант.
Например: const rWeight: Real = 0.4;
4.8. Выражения
Выражение состоит из констант, переменных, указателей функций, знаков операций и скобок. Выражение задает правило вычисления некоторого значения. Порядок вычисления определяется старшинством (приоритетом) содержащихся в нем операций. В языке Pascal принят следующий приоритет операций:
1. унарная операция not, унарный минус –, взятие адреса @
2. операции типа умножения * / div mod and shl shr
3. операции типа сложения + – or xor
4. операции отношения = <> < > <= >=
Выражения входят в состав многих операторов языка Pascal, а также могут быть аргументами встроенных функций.
Пример записи математического выражения на Pascal:
2*a+sqr(sin(x))-abs(a-x))/(exp(ln(abs(a+x)/3))+arctan(x/sqrt(1-sqr(x)))-3*ln(a))
Показать все стандартные математические функции.
4.9. Оператор Присваивания
y:=5; (переменной у присваивается значение 5)
y:=x+z; (переменной у присваивается значение суммы двух переменных x и z)
Тип переменной и тип выражения должны совпадать кроме случая, когда выражение относится к целому типу, а переменная – к действительному. При этом происходит преобразование значения выражения к действительному типу.
4.10. Операторы ввода и вывода
Для ввода и вывода данных используются стандартные процедуры ввода и вывода Read и Write, оперирующие стандартными последовательными файлами INPUT и OUTPUT. Эти файлы разбиваются на строки переменной длины, отделяемые друг от друга признаком конца строки. Конец строки задается нажатием клавиши ENTER.
Для ввода исходных данных используются операторы процедур ввода:
Read(A1,...,AK); – чтение исходных данных и присваивание значений переменным А1,..., АК.
ReadLn(A1,A2,...AK); – чтение исходных данных, пропуск остальных значений до начала следующей строки, присваивание считанных значений переменным А1,..., АК.
ReadLn; – пропуск строки исходных данных
При вводе исходных данных происходит преобразование из внешней формы представления во внутреннюю, определяемую типом переменных. Переменные, образующие список ввода, могут принадлежать либо к целому, либо к действительному, либо к символьному типам. Чтение исходных данных логического типа в языке Pascal недопустимо.
Операторы ввода при чтении значений переменных целого и действительного типа пропускает пробелы, предшествующие числу. Но эти операторы не пропускают пробелов, предшествующих значениям символьных переменных, так как пробелы являются равноправными символами строк. Пример записи операторов ввода:
var rV, rS: Real;
iW, iJ: Integer;
chC, chD: Char;
..............
Read(rV, rS, iW, iJ);
Read(chC, chD);
Значения исходных данных могут отделяться друг от друга пробелами и нажатием клавиш табуляции и Enter.
Для вывода результатов работы программы на экран используются операторы:
Write(А1,..., АК); – реализует вывод значений переменных А1,..., АК в строку экрана.
WriteLn(А1,..., АК); – реализует вывод значений переменных А1,..., АК и переход к началу следующей строки.
WriteLn; – реализует пропуск строки и переход к началу следующей строки.
Переменные, составляющие список вывода, могут относиться к целому, действительному, символьному или булевскому типам. В качестве элемента списка вывода кроме имен переменных могут использоваться выражения и строки.
Вывод каждого значения в строку экрана происходит в соответствии с шириной поля вывода, определяемой конкретной реализацией языка. Форма представления значений в поле вывода соответствует типу переменных и выражений: величины целого типа выводятся как целые десятичные числа, действительного типа – как действительные десятичные числа с десятичным порядком, символьного типа и строки – в виде символов, логического типа – в виде логических констант TRUE и FALSE.
Оператор вывода позволяет задать ширину поля вывода для каждого элемента списка вывода. В этом случае элемент списка вывода имеет вид А:К, где А – выражение или строка, К – выражение либо константа целого типа.
Если выводимое значение занимает в поле вывода меньше позиций, чем К, то перед этим значением располагаются пробелы. Если выводимое значение не помещается в ширину поля К, то для этого значения будет отведено необходимое количество позиций.
Для величин действительного типа элемент списка вывода может иметь вид А:К:М, где А – переменная или выражение действительного типа, К – ширина поля вывода, М – число цифр дробной части выводимого значения. К и М – выражения или константы целого типа. В этом случае действительные значения выводятся в форме десятичного числа с фиксированной точкой.
Пример записи операторов вывода:
var rA, rB: Real; iP,iQ:Integer;
bR, bS: Boolean; chT, chV, chU, chW: Char;
....
WriteLn(rA, rB:10:2);
WriteLn(iP, iQ:8);
WriteLn(bR, bS:8);
WriteLn(chT, chV, chU, chW);
Структура программы
Программа на языке Pascal состоит из заголовка, разделов описаний и раздела операторов.
Заголовок программы содержит имя программы, например: Program Prim1;
Описания включают в себя раздел подключаемых библиотек (модулей), раздел описания меток, раздел описания констант, раздел описания типов, раздел описания переменных, раздел описания процедур и функций.
Раздел описания модулей определяется служебным словом USES и содержит имена подключаемых модулей (библиотек) входящих в состав системы Pascal и написанных пользователем. Раздел описания модулей должен быть первым среди разделов описаний. Имена модулей отделяются друг от друга запятыми: uses CRT, Graph;
Раздел описания меток. Любой оператор в программе может быть помечен меткой. В качестве метки используются произвольные целые без знака, содержащие не более четырех цифр, либо имена. Метка ставится перед оператором и отделяется от него двоеточием. Все метки, используемые в программе, должны быть перечислены в разделе описания меток, например: label 3, 471, 29, Quit;
Описание констант позволяет использовать имена как синонимы констант, их необходимо определить в разделе описаний констант: const K=1024; MAX=16384;
В разделе описания переменных необходимо определить тип всех переменных, используемых в программе:
var P,Q,R: Integer;
A,B: Char; F1,F2: Boolean;
Отдельные разделы описаний могут отсутствовать, но следует помнить, что в Pascal-программе должны быть обязательно описаны все компоненты программы.
Раздел операторов представляет собой составной оператор, который содержит между служебными словами begin.......end последовательность операторов. Операторы отделяются друг от друга символом; Текст программы заканчивается символом точка.
Pascal-программа может содержать комментарии, которые представляют собой произвольную последовательность символов, расположенную между открывающей скобкой комментариев { и закрывающей скобкой комментариев }.
Текст Pascal-программы может содержать ключи компиляции, которые позволяют управлять режимом компиляции. Синтаксически ключи компиляции записываются как комментарии. Ключ компиляции содержит символ $ и букву-ключ с последующим знаком + (включить режим) или - (выключить режим). Например:
{$E+} - эмулировать математический сопроцессор;
{$F+} - формировать дальний тип вызова процедур и функций;
{$N+} - использовать математический сопроцессор;
{$R+} - проверять выход за границы диапазонов.
Некоторые ключи компиляции могут содержать параметр, например: {$I имя файла} – включить в текст компилируемой программы названный файл.
Пример записи простой программы:
Program Primer1;
var A, B, C, S, P: Real;
begin
Read(A,B,C);
WriteLn(A,B,C);
P:=(A+B+C)/2;
S:=Sqrt(P*(P-A)*(P-B)*(P-C));
WriteLn('S=',S:8:3)
end.