Pascal. ПЕРЕМЕННЫЕ. ФОРМАТЫ ВЫВОДА


Переменные
Компьютер был бы не нужен, если бы не имел возможности хранить у себя в памяти различную информацию и уметь обрабатывать однотипную информацию по одинаковым алгоритмам. 
Для того, чтобы создавать более интересные программы, надо научиться сохранять информацию в памяти компьютера. При этом нам необходимо научиться как-то обращаться к ячейкам памяти компьютера. 
В программировании, как и в жизни, чтобы обращение к какому-либо участку памяти компьютера происходит по имени. Используя это имя можно как читать информацию, так и записывать ее туда.
 
Переменная - это ячейка в памяти компьютера, которая имеет имя и хранит некоторое значение, соответствующее типу.

Слово "переменная" говорит нам о том, что ее значение может меняться в ходе выполнения программы.  При сохранении нового значения переменной - старое стирается.


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

Например,
целые переменные – тип integer (от английского integer – целый), занимают 2 байта в памяти;
вещественные переменные, которые могут иметь дробную часть (тип real – от английского real numbers - вещественные числа), занимают 6 байт в памяти;
символы (тип char – от английского character – символ), занимают 1 байт в памяти.

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

var <имена переменных через запятую>: <тип этих переменных>;
       <имена переменных другого типа через запятую>: <тип этих переменных>; 

 
Пример
var a, b: integer; // объявили две переменных a и b целого типа. Пока мы не задали им начальные значения, так что мы не знаем, что хранится в памяти
begin
 a := 6;  // переменной а присвоили значение 6
end.

Вывод на экран
Попробуем написать калькулятор для простых чисел. Наша задача вывести на экран некоторое арифметическое выражение и заставить компьютер его подсчитать.
Например такое: 
5+7=12
Причем вместо 5 и 7 могут быть разные числа, зависящие от значений переменных a и b в программе.
В операторе вывода можно выводить не только текст, но и значения переменных, а также результат арифметического выражения. Причем последовательность вывода может быть различной. Например, для того, чтобы вывести вышеуказанное выражение, необходимо написать так:
writeln(a, '+', b, '=', a + b);
Если хотим вывести значение переменной, то просто необходимо указать ее имя без кавычек. Если мы хотим вывести результат арифметического выражения, то достаточно просто записать правильно арифметическое выражение.

Особое внимание следует уделить операции деления целых числовых типов данных. В Паскале допускается две операции деления, которые соответственно обозначаются '/' и div. Нужно знать, что результатом деления '/' является не целое, а вещественное число (это справедливо, даже если вы делите 8 на 2, т.е. 8/2=4.0). Деление div – это целочисленное деление, т.е. тип результата целый (т.е. 8 div 4 = 4).

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


Обязательно выполняйте упражнения, так вы сможете быстрее закрепить полученные знания на практике!

Оператор ввода
Для того, чтобы пользователь смог сам задавать значение переменной, необходимо иметь возможность вводить значения с клавиатуры. 
Оператор ввода записывается так:
 
read(a);

После этого оператора данные, которые вводятся с клавиатуры, сохраняются в определенной переменной.
Можно несколько операторов read() также соединить в один.
Например, запись
read(a);
read(b);
выполняет те же действия, что и запись
read(a, b);
то есть первые введенные данные заносит в переменную a, вторые в переменную b.

*** углубленный материал: для интересующихся языком Pascal ***
Дополнительные спецификаторы вывода позволяют управлять выводом чисел в определенных форматах.

1. Для целых данных (integer и др.) - формат задается одним числом, определяющим число позиций, отводимых на это число.
Пример:
Writeln(i:5);
    Выведет на экран значение переменной i, используя для этого 5 позиций (даже если число занимает меньше 5 позиций, свободные позиции все равно будут отображаться).
    Если переменная i:=34, то на экран будут выведены 3 пустых позиции (они для наглядности показаны знаком подчеркивания) и число 34, т.о. всего 5 позиций.

_ _ _ 34
    Если переменная i:=2345666, то данный формат (i:5) не может быть использован (выводимое число занимает больше позиций) и будет просто игнорироваться и все значение переменной отобразиться на экране.

2345666


2. Для вещественных данных (real и др.) - формат задается либо одним числом, определяющим число позиций, отводимых на это число в экспоненциальной форме; либо двумя числами, первое из которых обозначает общий размер поля, отведенного под это число, второе - число знаков после запятой, т.е. точность.
Пример.
Writeln(p:12);    или     Writeln(p:6:2);
    Если переменная p:=1234.6789, то в первом случае на экране появится

_1.2346E+004, а во втором 1234.68
Пример.
Пусть значение переменной X равно 123.45678, тогда оператор
         Write(X);         выведет         "_1.23456780000000000E+02"
         Write(X:8:2);    выведет        "_ _123.46"
         Write(X:10:5);  выведет        "_123.45678"
         Write(X:10);     выведет        "_1.23E+002"
         Write(X:8);       выведет        "_1.2E+02"
         Write(X:1);       выведет        "_1.2E+002"



Попробуем на практике использовать данную информацию.