Глава 3. Оператор присваивания, ввод и вывод данных

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

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

Синтаксис оператора присваивания:

переменная:=выражение;

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

1) оба типа одинаковые;

2) обе части имеют совместимые порядковые типы, при этом диапазон значений правой части попадает в диапазон возможных значений левой части;

3) обе части вещественного типа, при этом диапазон значений правой части попадает в диапазон возможных значений левой части;

4) левая часть имеет вещественный тип, а правая – целый;

5) левая часть имеет строковый тип, а правая – символьный (char);

6) обе части имеют совместимые множественные типы, при этом все значения правой части попадают в диапазон возможных значений левой части;

7) обе части имеют совместимые типы указателей;

8) правая частьимеет тип pchar, левая часть – строковая константа (при расширении синтаксиса директивой {$X+});

9) правая часть имееттип pchar, левая – символьный массив с нулевой базой вида array [0..X] ofchar (при расширении синтаксиса директивой {$X+});

10) обе части имеют совместимые процедурные типы;

11) левая часть имеет процедурный тип, а правая – процедура или функция с идентичным типом результата и соответствующими параметрами.

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

Пример. Задание значений переменных с помощью оператора присваивания.

c:=0.1; {переменной с присваивается значение 0,1}

x:=cos(y)+sin(y);

a:=b;

n:=n+1;

Ввод данных с клавиатуры

Для ввода данных с клавиатуры в языке программирования Паскаль определены процедуры readиreadln (англ., read – читать, буквы ln – сокращение английского слова line – строка). Они позволяют вводить с клавиатуры данные целых, вещественных, символьного и строкового типов.

Синтаксис процедур read и readln:

read(список_переменных);

readln(список_переменных);

readln;

В скобках через запятую перечисляются имена переменных, которым присвоятся введенные значения.

При выполнении процедуры read исполнение программы останавливается и ожидается ввод данных с клавиатуры. Вводимые данные должны разделяться либо пробелами, либо переводом строки (нажатием клавиши Enter). Для завершения ввода данных нажимается клавиша Enter.

Процедура readln после ввода всех значений осуществляет переход на новую строку, и следующий ввод данных будет выполняться с новой строки. В случае процедуры read следующий ввод данных будет выполняться с той же строки.

Процедура readln без параметров просто ожидает нажатия клавиши Enter.

Рассмотрим пример ввода данных. Пусть в программе определены переменные

var x,a,b,d:real;

n:integer;

и программа содержит вызовы процедур

read(x); //ввод одной переменной

read(a,b,d); //ввод трех переменных

readln(n); {ввод одной переменной с переходом, после ввода, на новую строку}

readln; //ожидание нажатия клавиши Enter

Допустим переменной x нужно задать значение 0,01, переменным a, b, d соответственно 1, 2, 5, переменной n значение 9. Для этого нужно ввести с клавиатуры через пробел

0.01 1 2 5 9{нажатие клавиши Enter}

Аналогичные результаты будут, если данные ввести, разделяя их переводом строки (нажатием клавиши Enter).

0.01{нажатие клавиши Enter}

1{нажатие клавиши Enter}

2{нажатие клавиши Enter}

5{нажатие клавиши Enter}

9{нажатие клавиши Enter}

При выполнении процедуры readln без параметров, программа остановится, и будет ожидать нажатия клавиши Enter.

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

(При вводе символов и строк существуют особенности, которые в учебном пособии не рассматриваются.)

Вывод данных на экран

Для вывода данных на экран в языке программирования Паскаль определены процедуры write и writeln (англ., write – писать, буквы ln – сокращение английского слова line – строка). Они позволяют выводить на экран данные логических, целых, вещественных, символьного и строкового типов. При выводе данных происходит преобразования данных из внутреннего представления в символы, выводимые на экран.

Синтаксис процедур writeиwriteln

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

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

writeln;

При выполнении процедуры write величины, указанные в списке вывода, выводятся на экран. Вывод осуществляется в одну строку. Процедура writeln после вывода всех значений осуществляет переход на новую строку, и следующий вывод данных будет выполняться с новой строки. Процедура writeln без параметров просто осуществляет переход на новую строку.

В список вывода могут входить:

1) имена переменных, в этом случае на экран выводятся значения переменных;

2) вычислимые выражения, в этом случае сначала вычисляется значение выражения, а затем результат выводится на экран;

3) строковые константы в апострофах (одинарные кавычки), которые выводятся на экран без изменений и используются в основном для пояснений.

При отображении данных на экране под них отводится определенное число позиций. По умолчанию – это минимальное число позиций, необходимое для представления данных. Например, под вещественное число отводится 17 позиций, из них 10 – на дробную часть. На экране, внутри отведенных позиций, данные выравниваются по правому краю: если данные короче, то они сдвигаются к правому краю, если длиннее, количество позиций увеличивается до необходимых размеров.

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

Рассмотрим несколько примеров вывода данных на экран. Пусть в программе определены переменные

var x,a,b:real;

i,n:integer;

flag:boolean;

и в программе им присвоены следующие значения x:=0.01, a:=1, b:=2,n:=5,i:=1,flag:=true.

Пример 1. Вывод на экран строковой константы. В результате выполнения оператора

writeln('Ответ');

на экран выведется

Ответ

Пример 2. Вывод на экран значений переменных. В результате выполнения последовательности операторов

//вывод на экран значения переменной x

writeln(x);

{вывод на экран поясняющей константы 'x=' и значения переменной x}

writeln('x=',x);

//вывод на экран значения переменной логического типа

writeln('Значение флага=',flag);

//вывод на экран значений двух переменных a и b с пояснениями

writeln('а=',a, 'b=',b);

на экран выведется

1.0000000000000000E-002

x= 1.0000000000000000E-002

Значение флага=TRUE

а= 1.0000000000000000E+000 b= 2.0000000000000000E+000

Пример 3. Вывод на экран значения вычислимого выражения. В результате выполнения оператора

writeln(cos(x)+sin(x));

на экран выведется значение выражения cos(x)+sin(x)

1.00994983375083194268E+0000

Пример 4. Результаты форматирования. В результате выполнения оператора

writeln('а=',а,' b=',b:2:3,' n=',n,' i=',i:3);

на экран выведется

а= 1.0000000000000000E+000 b=2.000 n=5 i= 1

Рассмотрим несколько комплексных примеров на использование оператора присваивания, процедуры ввода данных с клавиатуры и процедуры вывода данных на экран.

Пример 2.1. Даноa=–2, b=0,00005, c=100000.Записать a, b, cв экспоненциальной форме. Составить программу для вычисления значения выражения Глава 3. Оператор присваивания, ввод и вывод данных - student2.ru . Вывести значение Глава 3. Оператор присваивания, ввод и вывод данных - student2.ru на экран.

programprog; //Заголовок программы
const a=-2; b=5e-5; c=1e+5; //Описание констант
vary:real; //Описание переменных
begin //Начало программы
{Основные вычисления} y:=(1+sqr(cos(pi-b)))/(a+exp(1/2*ln(c))+ln(abs(a)));
writeln('y=',y) //Вывод результата на экран
end. //Конец программы
     

Пример 2.2. Дано: Глава 3. Оператор присваивания, ввод и вывод данных - student2.ru , Глава 3. Оператор присваивания, ввод и вывод данных - student2.ru и Глава 3. Оператор присваивания, ввод и вывод данных - student2.ru – любые вещественные числа. Записать xв экспоненциальной форме. Составить программу для вычисления значения выражения Глава 3. Оператор присваивания, ввод и вывод данных - student2.ru , где Глава 3. Оператор присваивания, ввод и вывод данных - student2.ru . Вывести значения Глава 3. Оператор присваивания, ввод и вывод данных - student2.ru и Глава 3. Оператор присваивания, ввод и вывод данных - student2.ru на экран.

programprog; //Заголовок программы
constx=2e+2; //Описание констант
var y,t,a,b:real; //Описание переменных
begin //Начало программы
writeln('Введите а, b'); //Вывод на экран подсказки
read(a,b); //Ввод данных с клавиатуры
t:=b*sin(x); y:=a*x+sqr(t); //Основные вычисления
writeln('t=',t, 'y=',y) //Вывод результата на экран
end. //Конец программы

Пример 2.3. Дано n=0,1241456, h – любое число. Составить программу для вычисления функций:

Глава 3. Оператор присваивания, ввод и вывод данных - student2.ru ; Глава 3. Оператор присваивания, ввод и вывод данных - student2.ru ; Глава 3. Оператор присваивания, ввод и вывод данных - student2.ru .

program prog;

const n=1.241456e-1;

var h:integer; a,b,c:real;

begin

writeln('Введитеh='); read(h);

b:=1-sqrt(3/(3+abs(sin(sqr(h))/cos(sqr(h))-sin(h))));

a:=sin(b-n)/exp(sin(h))*sqr(cos(b-h))*1/ln(abs(b));

c:=a*exp(3*ln(h))*sqr(sin(exp(3*ln(b))));

writeln('b=',b,' a=',a,' c=',c);

end.

Пример 2.4. Дан радиус круга. Вычислить длину окружности и площадь круга. Результаты вывести на экран.

program prog;

var r,s,l: real;

begin

writeln ('введитерадиус'); read(r);

s:=pi*sqr(r);

l:=2*pi*r;

writeln('площадь круга=',s:8:2);

writeln('длина окружности=',l:8:2);

end.

Контрольные вопросы

1. Какой оператор в языке программирования Паскаль используется для задания значений переменных в программе?

2. При каких условиях типы данных левой и правой частей оператора присваивания совместимы?

3. Какая процедура в языке программирования Паскаль используется для ввода данных с клавиатуры?

4. Замените последовательность процедур одной процедурой read(x), read(y), read(z).

5. В чём заключается разница выполнения процедур read(список переменных), readln(список переменных) и readln?

6. Какая процедура в языке программирования Паскаль используется для вывода данных на экран?

7. Какие параметры могут входить в список вывода процедуры write?

8. Замените последовательность процедур одной процедурой write('x='),write(x),write(y).

9. В чем заключается разница выполнения процедур write(список вывода), writeln(список вывода) и writeln?

10. Для чего используется формат отображения чисел? Чем будут отличаться результаты вывода на экран вещественных чисел write(x) и write(x:4:2)?

Рекомендуемая литература

1. Павловская, Т.А. Паскаль. Программирование на языке высокого уровня / Т.А. Павловская. – СПб.: Питер, 2010. – 464 с.


Наши рекомендации