Урок 2. Переменные в Turbo Pascal

Для хранения данных, полученных от пользователя, в программе вводятся переменные. К примеру для того, чтобы передать программе имя какого-то человека нам нужно в коде программы записать строчку:

Read(name);

Данная строка сообщает нашей программе о том, что нужно получить данные от польхователя и сохранить их в переменную name, которую мы указываем в скобках оператора Read(с англ.: читать)

Хочу обратить Ваше внимание на тот факт, что все идентификаторы(переменные, название программы) в коде Turbo Pascal могут состоять исключительно из символов латинского алфавита (A-Z, a-z), цифр (0-9) и символа нижнего подчеркивания ("_"). Также идентификаторы не должны начинаться с цифр.

/* Примеры правильных имен переменных */
    variable
    Variable
    var1
    var_1234
    VARIABLE
/* Примеры не правильных имен переменных */
    -variable
    123Var
    Var-123	

Для разного формата данных(целые числа, дробные числа, строки) в Pascal введено понятие типов переменных. К примеру для храненения строк имеется тип string. В таких переменных лучше всего хранить текст, к примеру: "Привет", "Добро пожаловать", "Программирование на Turbo Pascal". Конечно в формате string можно хранить и числа любого формата, но учтитите что в таком случае они будут иметь строковый тип и не смогут участвовать в математических вычислениях.

Для целых чисел часто используются два основных типа: Integer и LongInt. Единственным отличием типов переменных, используюмых для одного формата данных, - это Диапазон допустимых значений. К примеру для Integer диапазон допустимых значений [-32768, 32767], то есть минимальным значением для переменной типа Integer является число -32768, а максимальным — 32767.

Далее привожу таблицу типов переменных и их диапахон допустимых значений.

Целые числа Вещественные числа
Типы Диапазон допустимых значений Типы Диапазон допустимых значений Значащие цифры
Shortint [-128, 127] Single 1.5*10-45 .. 3.4*1038 7-8
Integer [-32768, 32767] Real 2.9*10-39 .. 1.7*1038 11-12
Longint [-21 47483648, 21 47483647] Double 5.0*10-324 .. 1.7*10308 15-16
Byte [0, 255] Extended 3.4*10-4932 .. 1.1*104932 19-20
Word [0, 65535] Comp -2*1063+1 .. 1.7*1063-1 19-20

Помимо целочисленных и вещественных типов в Pascal есть еще несколько типов, в том числе пользовательский(ограниченный), который задает сам программист.

Переменные: пример 1

Давайте попробуем усложнить нашу программу из первого урока. Сделаем так, чтобы программа сначала запрашивала имя, а потом здоровалась.

Для получения информации от пользователя в процессе работы программы в Turbo Pascal существуют операторы Read и Readln.

Данные операторы отличаются лишь тем, что после считывания Readln делает перевод строки, а Read не переводит (существует оператор Writeln, который после печати на экран также переводит каретку на первую позицию следующей строки).

На этом хватит тексту и перейдем непосредственно к коду нашей программы

Листинг 2.1.

Program Hello_World_With_Variable;
Uses Crt;

Var name:string;

Begin
    ClrScr;
    Write('Введите имя: ');
    Read(name);
    Write('Привет, ', name, '!');
    ReadLn
End.

Теперь разберем, что я тут написал.

Uses Crt; - об этой строчке я подробнее расскужа позже, пока лишь нужно просто её написать и знать что она нужна.

Var name:string; - здесь мы объявляем переменную name типа string(строка), в которой будем хранить введенное пользователем имя.

Begin - начало раздела описания. Собственно отсюда и начинается выполнение тела нашей программы.

ClrScr; - от английского Clear Screen, что значит "очистить экран" . Этот оператор служит для очистки экрана вывода. Если им не пользоваться, то после очередного запуска программы мы будем видить предыдущий результаты работы компилятора.

Write('Введите имя: '); - здесь мы выводим печатаем строку "Введите имя: ".

Read(name); - сохраняем введенную пользователем информацию в переменную name. В нашем случае мы сохраняем в переменную name введенное имя.

Write('Привет, ', name, '!'); - что же я тут написал? =) Хочу Вас обрадывать: для того чтобы вывести несколько разных строк (переменных), совсем не обязательно для каждой строки писать свой write или writeln, достаточно перечислить их в скобках через запятую. В данном примере я одним оператором write вывел сразу три строчки: 1)'Привет, ' ; 2)name ; 3)'!' .

ReadLn - а это своеобразная задержка, чтобы после выполнения компилятор сразу не закрывал окно результата, а дождался нажатия клавиши пользователем.

End. - конец программы тела программы.

У некоторых из Вас наверняка возник вопрос: "А почему в предпоследней строчке после оператора Readln не стоит точка с запятой?". Так вот, точка с запятой является разделителем между операторами, который сообщает компилятору о конце одного и начале второго оператора. Но поскольку после последнего оператора идет End., то знак ; можно опустить.

Переменные: пример 2.

Теперь попробуем объявить несколько переменных разного типа. Допустим мы хотим знать имя пользователя, его возраст и его рост. Для этого вохмем код программы их первого примера и изменить в соответствии с новыми требованиями.

Program Hello_World_With_Variable;
Uses Crt;

Var name :string;
    years, height :Integer;
Begin
    ClrScr;
    Write('Введите Ваше имя: ');
    ReadLn(name);
    Write('Сколько Вам лет? ')
    ReadLn(years);
    Write('Какой у Вас рост?(в см) ')
    ReadLn(height);
    Write('Привет, ', name, '! Я знаю что тебе ', years, ' лет', ' и твой рост составляет', height, ' см');
    ReadLn
End.

Хочу обратить ваше внимание на 5 строчку кода. Когда у нас есть несколько переменных одного типа, мы можем объявить их в одной строке, описав их через запятую и после последнего поставить знак двоеточия и написать требуюмый тип.