Переменные в программе дают возможность обращаться к областям в памяти компьютера с удобных имен - это упрощает написание, отладку и модификацию программы. Получив описание переменной, современный транслятор (непринципиально, будет это компилятор или интерпретирующая программа) должен отвести под эту переменную область памяти, достаточную для размещения в ней данных и впоследствии учитывать тип переменной, делая, при необходимости, неявные преобразования типа. Ранние языки программирования не допускали неявных преобразований, т.е. преобразований, которые выполняются без участия программиста. Пример таких языков - Fortran II. В этом языке нельзя было смешивать в одном операторе переменные разных типов. Кстати, о типе переменных. Существуют разные классификации, но для понимания самой концепции типов непринципиально, какой классификацией пользоваться. Если говорить упрощенно, можно различать числовые и нечисловые данные. С числовыми можно совершать математические операции, а нечисловые можно только вводить в компьютер (например, с клавиатуры) и выводить из компьютера во внешнюю среду (например, отображать на мониторе). И вот тут самое интересное. Перед тем, как компьютер получит числовое данное, оно должно быть введено в форме нечислового. Тут-то и возникает неявное преобразование типов. Когда мы, к примеру, вводим число 25, то нажимаем клавиши "2" и "5", посылая компьютеру определенные коды. Компьютер преобразует их и получает последовательность символов "25". Это то же, что число 25? Если мы пишем 25 на бумаге, то для нас оно хоть число, хоть текст, изображающий число. А для компьютера это не так. Его система команд обрабатывает символы отдельно, числа отдельно. И хранит компьютер число 25 и символы "25" совсем по-разному. Вот поэтому мы должны описывая переменные, сообщать не только их имена, но и тип - чтобы транслятор "понял", как эти данные ему обрабатывать. Даже числовые данные неоднородны - компьютер может хранить их с разным представлением (целые, с фиксированной точкой, с плавающей точкой) и с разной разрядностью (максимальным числом цифр). И, встретив в операции два числа разного типа, транслятор должен привести их к одному - это тоже случай неявного приведения типов. Например, оно возникнет при вычислении выражения 2.5+1, потому что первое значение дробное, а второе - целое. Транслятор приведет его к 2.5+1.0.
Описание переменной должно быть сделано до её первого использования в программе. Обычно стараются вынести все описания в начало программы - при изучении текста чужой программы так легче найти нужное описание. Это характерно для "классических" языков программирования типа Pascal. Описание переменных в этом языке делается в разделе, который начинается ключевым словом var (от английского слова variable - переменная). Альтернативой является описание в месте, непосредственно предшествующем первому использованию переменной - это облегчает первичное написание программы, когда заранее сложно сказать, какие переменные понадобятся - особенно этим любят пользоваться программисты на языках С/С++, хотя и в этом языке есть возможность описать переменные в начале программы.
Примеры описания одних и тех же переменных: a) Pascal var a:integer; b1, b134, delta: real; weight: array[1..n] of integer;
б) С/С++ int a; single b1, b134, delta; int weight[n+1];
в) BASIC DIM a AS INTEGER DIM b1 AS REAL, b134 AS REAL, delta AS REAL DIM weight(1 To N) AS INTEGER
1) a := 4;
b := 6;
b := 8 + a * b;
a := b / 4 * a.
а = 4
b = 6
b = 8 + 4 * 6 = 32
a = 32 / 4 * 4 = 32 / 16 = 2
2) a := 3;
b := 6;
b := 12 + a * b;
a := b / 5 * a.
a = 3
b = 6
b = 12 + 3 * 8 = 30
a = 30 / 5 * 3 = 6 * 3 = 18
3) a := 8;
b := 8 + a / 2;
a := a – b / 2.
a = 8
b = 8 + 8 / 2 = 12
a = 8 - 12 / 2 = 8 - 6 = 2
4) a := 2;
b := 6;
b := 12 + a * b;
a := b / 4 * a.
a = 2
b = 6
b = 12 + 2 * 6 = 12 + 12 = 24
a = 24 / 4 * 2 = 6 * 2 = 12
5) a := 3;
b := 8 + 2 * a;
a := b / 2 * a.
a = 3
b = 8 + 2 * 3 = 8 + 6 = 14
a = 14 / 2 * 3 = 7 * 3 = 21
6) f := 21;
e := 10;
f := 5 * f + 5;
e := f – 10 – e * 5.
f = 21
e = 10
f = 5 * 21 + 5 = 105 + 5 = 110
e = 110 - 10 - 10 * 5 = 100 - 50 = 50
7) a := 14;
b := 4;
a := a / 2 - b;
b := (a * b) / 2;
b := a + b
a = 14
b = 4
a = 14 / 2 - 4 = 7-4 = 3
b = ( 3 * 4) / 2 = 12 / 2 = 6
b = 3 + 6 = 9
8) b := 5;
a := -3;
a := 7 + a * b;
b := a / 2 + b
b =5
a = -3
a = 7 + (-3 * 5) = 7 + (-15) = -8
b = -8/2 + 5 = -4 +5 = 1
9) a := 4;
b := 5;
a := b + 15;
b := 100 / a * 4.
a = 4
b = 5
a = 5 + 15 = 20
b = 100 / 20 * 4 = 5 * 4 = 20
10) b := 8;
a := 10;
b := b + a * 2;
a := 29 - a;
b = 8
a = 10
b = 8 + 10 * 2 = 8 + 20 = 28
a = 29 - 10 = 19;
Объяснение: