Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SODERZhANIE_Uch_Pr_dlya_PI.docx
Скачиваний:
6
Добавлен:
28.09.2019
Размер:
682.73 Кб
Скачать

Оператор присваивания

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

<переменная>:=выражение.

необходимо учесть, что переменная и выражение должны быть одного типа. Например, если переменные описаны следующим образом:

var

x,y : integer;

a,b : real;

то можно записать операторы присваивания

x:=x+5;

y:=x;

a:=b;

b:=5.33*x+y/2;

Как уже говорилось, тип переменной позволяет не только устанавливать длину ее внутреннего представления, но и контролировать те действия, которые осуществляются над ней в программе. Контроль за использованием переменных еще на этапе компиляции программы – важное преимущество Паскаля, повышающее его надежность. В Паскале почти не возможны автоматические преобразования типов. Исключение сделано только в отношении констант и переменных типа integer, которые можно использовать и в выражениях типа real, т.е. для описанных выше переменных оператор x:=a будет неверным из-за невозможности преобразования вещественного типа к целому. В то же время, оператор a:=x будет верным.

Что происходит со старым значением переменной, когда ей присваивается новое значение? Оно просто стирается. Поскольку переменная может хранить только одно число, то выполнение оператора присваивания приводит к потере предыдущего значения переменной. Переменная всегда содержит результат последнего оператора присваивания.

Процедуры ввода и вывода

Ввод/вывод связан с обменом информацией между оперативной памятью и внешними устройствами. Здесь рассмотрены процедуры ввода/вывода: read, readln, write, writeln, использующие стандартные файлы ввода/вывода. Стандартным файлом ввода является клавиатура, а вывода – экран. Для ввода данных с клавиатуры применяются процедуры:

read (<список ввода>);

readln (<список ввода>);

Список ввода – это последовательность из одной или более переменных типа char, string, а также любого целого или вещественного типа. При вводе числовых переменных процедура read вначале выделяет подстроку во входном потоке по следующему правилу: все ведущие пробелы, символы табуляции и маркеры конца строки пропускаются, выделяется первый значащий символ, признаком конца подстроки является любой из вышеперечисленных символов или символ конец файла. Выделенная таким образом подстрока рассматривается как символьное представление числовой константы, которое преобразуется в соответствии с типом переменной, и полученное значение присваивается переменной. Если значащих символов в строке нет, а список ввода еще не исчерпан, то автоматически осуществляется переход к новой строке. Процедура readln идентична процедуре read за исключением того, что после считывания последней переменной, оставшаяся часть строки пропускается, так что следующее обращение к read или readln начнется с первого символа новой строки. Кроме того, процедуру readln можно вызывать без параметров, что приведет к пропуску всех символов текущей строки. Рассмотрим следующий фрагмент программы:

var a,b,c,d:real;

begin ... read(a,b,c,d); ... end.

Пусть, требуется ввести числа 1,3;13,3;76,8;125,0. Информация набирается в виде: 1.3 13.3 76.8 125.0 на одной или нескольких строках.

В результате выполнения процедуры read переменной а присвоится значение 1.3, переменной b – значение 13.3, с 76.8, d 125.0. Если же ввод производится с помощью двух процедур:

readln(a,b,c);read(d);

числа, соответствующие a,b,c, набираются на одной строке, а число, соответствующее d, – на другой.

Для вывода данных на экран используются процедуры:

writeln(<список ввода>);

write(<список ввода>);

Список вывода может содержать одно или несколько выражений типа char, string, boolean, а также любого целого или вещественного типа. Отличие процедуры writeln от write состоит лишь в том, что в процедуре write курсор остается на той же строке экрана за последним выведенным символом, а в writeln курсор переходит на начало следующей строки. Предположим, что переменные a,b,c описаны как целые и имеют соответственно значения 132, 25, -37. После выполнения процедур

writeln(a,b);write(c);

a и b будут напечатаны на одной строке, а с  на другой:

13225

-37

Кроме того, процедура вывода предоставляет возможность указать в выводимом числе количество позиций и сколько из них после запятой (последнее только для чисел с плавающей точкой):

writeln(a:3,b:5,c:4);

В этом случае при печати под значение переменной a отводится 3 позиции, b5 позиций, под с4 позиции, т.е. будет выведено 132 25 -37.

Если количество литер в представлении выводимого значения меньше, чем указано в процедуре, то оно слева дополняется пробелами. Если количество указанных позиций недостаточно, то происходит автоматическое увеличение поля до необходимых размеров:

writeln('a=',a:1,'b=',b:2,'c=',c:3);

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

a=132b=25c= -37

Пусть переменные d, e, f описаны как вещественные и имеют соответственно значения 13,13;123,45;-987,654. Результатом работы оператора

writeln('d=',d:5:2,'e=',e:8:3,'f=',f:8:2);

будет строка

d=13.13e= 123.450f= -987.65

Если для чисел с плавающей точкой указывается только количество позиций в числе, без указания числа позиций после запятой, то в этом случае числа выводятся в экспоненциальной форме, занимая указанное количество позиций. Если длина поля не указывается совсем, то под каждое число отводится стандартная длина поля и числа печатаются в экспоненциальной форме:

writeln('d=',d:10,' e=',e:9,' f=',f);

d= 1.313E+01 e= 1.23Е+02 f=-9.8765000000E+02

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]