Переменные и константы
Lazarus IDE: Основы программирования в Windows
Несмотря на то, что всё потихоньку уходит в сеть, программирование для настольных компьютеров остаётся востребованным. И будет таковым ещё долго. Ну а самая распространённая операционная система для настольных компьютеров – это по-прежнему Windows. Поэтому любой программист, даже если он собирается стать веб-разработчиком, должен знать хотя бы основы создания программ для Windows. Подробнее... |
Ну вот наконец-то мы с вами подбираемся к практической части программирования. И после изучения этого раздела вы уже сможете написать какую-нибудь более полезную программу, чем мы делали раньше.
Типы данных сами по себе в программе не нужны. Нас интересует только информация, которую можно представить тем или иным типом данных. А чтобы работать с этой информацией в программе, необходимо связать с типами данных переменные.
Для чего нужны переменные? Конечно, можно записывать информацию непосредственно в память компьютера. Можно также читать информацию непосредственно из памяти. Когда-то так все и было. Но представьте, что требуется обработать несколько сотен чисел. Каждое из них нужно записать в какую-то ячейку памяти, а потом ещё не забыть, куда вы записали число 5, а куда – 25. Такая программа была бы очень сложной для понимания, и ошибок в ней было бы допущено немало. Поэтому в языках высокого уровня придумали такую вещь, как переменные.
Переменная – это некая часть информации определённого типа, которая имеет уникальное имя и связана с конкретной областью памяти компьютера. При этом программисту, который работает с языками высокого уровня, совершенно не обязательно заботиться о выделении памяти и помнить, с какими ячейками в памяти связана эта информация, то есть работа программиста благодаря возможности объявления переменных существенно упрощается.
Прежде чем работать с переменными, их надо объявить. Объявляются переменные в начале программы или в начале процедуры с помощью зарезервированного слова var. Например:
Var X, Y : byte; a, b : integer; ch : Char;
В этом примере мы объявили две переменные типа Byte – X и Y, две переменные типа Integer – a и b, и одну переменную типа Char. Если объявляются переменные одного типа, то их можно записывать через запятую в одной строке.
Имена переменных и прочих данных называются идентификаторами. К идентификаторам предъявляются определённые требования. Основные требования к идентификаторам в Паскале:
- Идентификатор может содержать латинские буквы и цифры, но должен обязательно начинаться с буквы. В Паскале к буквам также приравнивается символ подчёркивания (_).
- Идентификатор не должен совпадать с ключевыми (зарезервированными) словами (список ключевых слов см. в справочном материале среды разработки).
- Идентификатор не должен содержать специальные символы. Специальные символы: + - * / = < > [ ] . , ( ) : ; { } ^ @ $ # & %.
- Идентификатор не должен содержать пробелов.
Регистр букв в Паскале роли не играет. Например, TYPE, type, Type и tYpe – это одно и то же имя с точки зрения компилятора Паскаля. То есть, объявив переменные X и Y, мы можем затем использовать их в программе как x и y – для компилятора это не имеет значения. Стоит отметить, что в некоторых языках (например, С++) это не так (Y и у в С++ – это не одно и то же).
Переменным можно присваивать значения. Для этого чаще всего используется оператор (операторы мы будем изучать в следующих разделах)
:=
двоеточие, за которым следует знак равно. Например, записать в переменную а число 1 можно так:
а := 1;
Есть и другие способы, но они сложнее для понимания. Поэтому мы пока не будем их рассматривать.
Переменной можно присваивать не только постоянные значения, но и значения из других переменных. Например
y := 1;
x := 100;
y := x;
После выполнения этого кода значение, которое хранится в переменной у, будет равно 100.
Переменные могут изменять своё значение по ходу выполнения программы (потому и называются переменными). Но бывают случаи, когда данные не меняются в процессе работы программы. Такие данные можно объявить как константы. Константы объявляются следующим образом:
Const Left = 2; Top = 4; Y = ‘Y’;
Что же происходит, когда мы объявляем переменные и константы? При объявлении переменной компилятор автоматически выделяет для неё память (например, для переменной типа Byte будет выделен один байт), запоминает объём выделенной памяти и начальный адрес выделенной памяти, а затем связывает с этой областью памяти переменную.
Допустим, что в нашем случае для переменной Х компилятор выделил один байт по адресу 100 (на самом деле адрес будет другим, но в данном случае это не важно). Тогда, если мы напишем:
Х := 50
то компилятор сделает все таким образом, что наша программа запишет число 50 в ячейку памяти по адресу 100. То есть всю чёрную работу за нас сделает компилятор, а нам только остаётся наслаждаться программированием на высоком уровне.
program perem; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; { Объявляем константы } const X1 = 100; X2 = 50; SIM = 'Z'; { Объявляем переменные } var x : byte; Simbol : Char; begin WriteLn('X1 = ', X1, ', X2 = ', X2); WriteLn('X1 + X2 = ', X1 + X2); Write('X = '); ReadLn(x); WriteLn('X1 + X2 + X = ', X1 + X2 + x); Write('Simbol = '); ReadLn(Simbol); WriteLn('Simbol + SIM = ', Simbol + SIM); ReadLn; end.
В этой программе мы впервые использовали функцию ReadLn для ввода данных, то есть для получения информации от пользователя. Когда программа доходит до этой функции, то она останавливается и ждёт, пока пользователь введёт данные и нажмёт клавишу ENTER. Функция
ReadLn(x);
Дождавшись, когда пользователь нажмёт ENTER, записывает введённые перед этим данные в переменную х. Например, если пользователь ввёл число 5 и нажал ENTER, то в переменной х будет храниться число 5. Тогда следующая строка выведет результат:
X1 + X2 + X = 155
так как константа Х1 = 100, а константа Х2 = 50.
Программа, приведённая выше - это пример плохой программы. Потому что если вместо числа в первом случае использования функции ReadLn пользователь введёт символ, то программа завершится с ошибкой (Паскаль не умеет складывать числа с символами). Поэтому в подобных случаях следует выполнять проверку введённых данных, прежде чем работать с ними.
Создать программу, исходные коды которой приведены в листинге 14.1. Разобраться с тем, что, как и почему работает в этой программе.
Создать свою программу - простой калькулятор. Пользователь вводит два числа, программа их складывает и выдаёт результат.