И вот, когда вы разобрались в том, что же такое программирование и Алгоритм, пришло время разобраться в том, как писать свои программы.
Для этого нужно узнать синтаксис языка программирования Pascal. Это мы будем делать на примере несложной программы.
Программа
program prim;
const
k = 2;
var
x1, x2, d: real;
a, b, c: integer;
begin
writeln('Vvedite a,b,c');
readln(a, b, c);
writeln();
writeln(a, 'x^2 + ', b, 'x + ', c);
d := sqr(b) - 4 * a * c;
x1 := (-b + sqrt(d)) / (a * k);
x2 := (-b - sqrt(d)) / (a * k);
writeln('d = ', d);
writeln('x1 = ', x1);
writeln('x2 = ', x2);
end.
Результат работы программы
Начальные сведения
Если вы еще не поняли, то эта программа находит решение квадратного уравнения. На ее примере мы будем рассматривать особенности языка паскаль.
В этой программе 3 блока, у каждого блока есть свое назначение:
- const - блок, отвечающий за константные значения в программе;
- var - блок отвечающий за описание переменных основной программы;
- begin и end. - между этими операторами помещается основной код программы.
А как же program скажете вы, дело в том, что program не является блоком, на самом деле его вообще можно не использовать, он задает имя программы.
Мы знаем, что сначала программа компилируется, а потом запускается. Так как анализ программы проходит сверху вниз, то блоки var и const должны быть обязательно перед begin, иначе в основной программе не будут определенны переменные.
Вы могли догадаться за что отвечают writeln() и readln(x).
- readln(x) - позволяет заносить информацию в переменную.
- writeln() - позволяет выводить информацию на консоль.
Константные значения нельзя вводить, но можно выводить.
Обо всех остальных нюансах рассказано ниже.
Основные символы
Символы, которые можно использовать для написания программы.
- буквы латинского алфавита (прописные и строчные): A-Z, a-z, символ подчеркивания "_";
- цифры: 0-9;
- специальные символы:
- " + - * / " (арифметические операции);
- " = <> < <= > >= " (операции отношения);
- " := " (оператор присваивания);
- " . , : ; ( ) [ ] { } ^ # $ @ & " (ограничители).
Зарезервированные слова
Это служебные обозначения и ключевые слова, используемые в языке Паскаль для обозначения конструкций самого языка.
Мы будем разбирать их в следующих статьях, но если вам нужно узнать о них информацию, просто кликните на нужное слово.
В нашей программе использовались следующие служебные слова: begin, const, end, program, var.
Некоторые из зарезервированных слов достойны целой статьи, а некоторые можно просто пояснить:
- begin - обозначает начало основной программы
- end. - обозначает конец программы
- program - задает название программы, не является обязательным оператором в отличие от предыдущих.
- var - блок описания переменных
- const - блок описания констант
Данные и их типы
Любая программа предназначена для обработки данных (чисел, текстов, последовательностей битов и т.д.). Так в каждом алгоритме выделяются входные (исходные) и выходные (результатные) данные, а в процессе работы алгоритма могут появиться еще и промежуточные данные.
Для того чтобы работать с данными в программе на языке Паскаль, используются константы и переменные разных типов.
Тип данных определяет объем памяти компьютера, выделяемой для хранения значения переменной или константы, набор операций, которые могут быть применены к ним, а также тип результата выполнения этих операций.
Пример
Для представления чисел целого типа отводиться от 1 до 4 байт памяти и определены операции +, -, * и специальная операция целочисленного деления div (так как обычное деление может дать дробный результат).
Виды типов данных:
- Простые:
- Целые
- Вещественный
- Логический
- Символьный
- Перечислимый
- Ссылочные
- Структурированные
- Тип объекта
- Процедурные
Простые типы являются базовыми, так как на их основе строятся более сложные структурированные типы и могут быть стандартными и задаваемые пользователем (перечислимыми).
Некоторые из простых типов можно отнести к порядковым. Данные порядковых типов могут принимать ограниченное множество упорядоченных значений. К порядковым относят все простые типы, кроме вещественного (так как количество вещественных чисел неисчислимо).
Идентификаторы
Идентификаторы - это имена, задаваемые программным объектам
Могут состоять только из цифр, латинских букв и знака "_" (подчеркивание). Однако цифра не может начинать имя.
Идентификаторы могут иметь любую длину, но если у двух имен первые 63 символа совпадают, то такие имена считаются идентичными (верно для Turbo Pascal, во Free Pascal - это ограничение снято).
Идентификатор не должен совпадать с каким-либо из зарезервированных слов.
Регистр букв не учитывается.
Примеры:
A, B, alfa, BETTA, d1, c100, _summa, __proizVEDENIE
summa, Summa, SuMmA, SUMMA - один и тот же идентификатор
Идентификаторы описываются в блоке var для дальнейшего использования в основной программе.
Константы
Определяют значения, которые известны еще до начала выполнения программы.
Могут быть числовыми, логическими, символьными и строковыми.
Примеры
- -100, 0, 256, +123456 (целые константы);
- $101, $ABCD, $EF, $10FF (шестнадцатиричные константы);
- 3.1415, -2.71828 (вещественные в форме с фиксированной точкой);
- 9.10956E-28, 1E7 (вещественные в форме с плавающей точкой);
- true, false (логические);
- 'A', '?', '#' (символьные);
- 'Текст в апострофах', '1E7', 'program' (строковые);
Пример в программе
const
k = 2;
Переменные
Переменная - это величина, которая может менять свое значение в процессе выполнения программы. Для обозначения переменных в программах используются (идентификаторы).
Каждой переменной соответствует выделенная под нее область памяти компьютера, в которой хранится текущее принимаемое этой переменной значение.
Выбор имени переменной следует осуществлять исходя из логической или физической сущности обозначаемого ей объекта, с учетом следующих ограничений:
- в пределах области определения имя должно быть уникальным, то есть каждому имени должен соответствовать только
- один обозначаемый объект;
- в качестве имен нельзя использовать ключевые слова;
- длинные имена рекомендуется сокращать, например, за счет удаления гласных букв;
- следует избегать схожих по вид имен (A1,AL,AI, BOB0).
Каждая переменная в Паскале обязательно должна относиться к какому-либо типу.
Тип сопоставляется переменной с помощью описания переменных в специальном разделе программы var (от англ. variable)
Пример
Var
symbol: char; // переменная символьного типа
alfa, betta: real; // 2 переменные вещественного типа
a, b, c, d: integer; // 4 переменные целого типа}
logic_flag: boolean; // переменная логического типа
str: string; // переменная - строка
Выражения
Определяют порядок получения некоторого значения. Могут состоять из операндов, знаков операций и круглых скобок.
Константы, переменные и функции, называемые операндами, должны всегда быть обязательно либо описаны в программе (var), либо иметь стандартные имена.
Операнды объединяются символами арифметических операций.
Порядок выполнения операций в выражении подчиняется следующим правилам:
- первыми выполняются операции в скобках, начиная с самых внутренних (правило скобок);
- вначале высчитывается значение функций, затем операции умножения и деления, затем сложения и вычитания (правило приоритета операций);
- операции одинакового приоритета выполняются слева направо в порядке следования (правило следования).
Примеры
Примеры из программы
d := sqr(b) - 4 * a * c;
В этом примере мы считаем дискриминант (D=b2 - 4ac) и присваиваем (:=) получившееся значение переменной d.
x1 := (-b + sqrt(d)) / (a * k);
x2 := (-b - sqrt(d)) / (a * k);
В этих примерах мы считаем корни уравнения и присваиваем получившееся значение переменным x1 и x2.
Некоторые стандартные функции
abs(x) - Абсолютное значение (модуль) числа
arctan(x) - Арктангенс (в радианах)
cos(x) - Косинус (в радианах)
exp(x) - Экспонента (ex)
frac(x) - Взятие дробной части числа
int(x) - Взятие целой части числа
ln(x) - Натуральный логорифм (по основанию e)
odd(x) - Проверка нечетности числа
pi - значение числа пи
round(x) - Округление к ближайшему целому
trunc(x) - Округление вниз - к ближайшему меньешему целому
sin(x) - Синус (в радианах)
sqr(x) - Возведение в квадрат
sqrt(x) - Извлечение квадратного корня
Возведение в степень
Так как стандартной функции для вычисления операции возведения в степень в языке Паскаль не предусмотренно, следует воспользоваться следующим математическим тождеством:
x=elnx -> xa=(elnx)a -> xa=ealnx
Выражение на языке Паскаль, используемое для возведения в степень xa:
exp(a*ln(x))
Эта формула иногда не подходит, например при возведении отрицательного значения или возведения в отрицательную степень, если вы используете Pascal ABC, то можете возводить в степень с помощью стандартной функции power(x,a)
Что же в итоге
В этой статье вы познакомились с алфавитом языка программирования Pascal. Из этих элементарных частей, как из атомов и молекул, пишется код разной сложности.
Советую попрактиковаться в составлении простых программ, для этого скачайте файл с заданиями!