Тождественность и совместимость типов.
Для того, чтобы в программе не получилось путаницы с величинами разных типов нужно правильно применять понятия тождественности и совместимости типов.
Два типа называются тождественными, если они описаны вместе или если их определения используют один и тот же идентификатор типа.
Type
M1, M2= array [1..9] of real
S=array[1..9] of integer;
M1,M2 - тождественные типы
M1,S- не - тождественные типы.
Тождественность требуется при замене формальных параметров на фактические в процедурах и функциях. Например, abs(x), где х- целое или вещественное число, мы не можем поставить abs(x), если х- символьная или булевская переменная.
Огромную роль в выражениях и операциях сравнения, операторе присваивания играет совместимость типов.
В операциях сравнения два типа являются совместимыми, если соблюдается хотя бы одно из условий:
1. Оба типа одинаковые
2. Оба типа вещественные
3. Оба типа целые
4. Один тип является поддиапазоном другого
5. Оба типа поддиапазоны одного и того же типа
6. Один тип строковый, другой символьный
Например, ‘a’>’3’-допустимо ‘a’>3- недопустимо!!!
В операции присваивания два типа совместимы, если выполняется хотя бы одно из условий:
1. Типы тождественны
2. Первый строковый, второй литерный
3. Первый вещественный, второй целый
Например,
Var a: integer;
B: real;
C: char;
S: string;
A:=b;- НЕЛЬЗЯ!
B:=a;
C:=s; - НЕЛЬЗЯ!
S:=c;
A:=s; - НЕЛЬЗЯ!
Лекция 13.
Ввод-вывод данных в Turbo Pascal
Ввод данных- передача информации от внешних устройств в ОП.
Вывод данных- обратный процесс, передача информации из ОП на внешние устройства.
Для ввода- вывода данных в Turbo Pascal существуют 4 процедуры:
Read, Readln
Write, Writeln
Процедура Read обеспечивает ввод данных с клавиатуры в ОП. Формат записи процедуры:
Read(х1, х2, х3…хn)-позволяет ввести в ОП значения переменных х1, х2, х3…хn.
При выполнении процедуры Read компьютер приостанавливает свою работу и ждет ввода значений указанных переменных. Значения набираются с клавиатуры через пробел. Ввод всех значений списка, заканчивается нажатием клавиши Enter.
Зам! Ввод данных производится в строгом соответствии с описанием.
Пример,
Var C: char;
T: integer;
D:real;
….
Read(d,t,c); И ВВОДИМ ДАННЫЕ: ю 64000 34
Возникнет ошибка выполнения программы, так как d- переменная типа real и мы не имеем права вводить символ «ю», кроме того, значение переменной Т выходит за диапазон значений типа.
Если в программе имеются несколько операторов Read, то данные считываются потоком, т.е. после считывания данных для одного оператора данные для другого читаются из той же строки.
Read(x,y);
Read(z,d,f);
Если введем данные 1 2 3
4 5 6
то получим x=1, y=2, z=3, d=4, f=5.
Оператор readln отличается от оператора read только тем, что после считывания последнего в списке значения для одного оператора readln, данные для следующего оператора считываются с новой строки.
Readln(x,y);
Readln(z,v);
Если введем 2 4 6 7
3 9
то получим в памяти x=2, y=4, z=3, v=9.
Примечание, по возможности, показать все на компьютере при помощи Debug® Watch.
Оператор вывода имеет следующий формат записи
Write(<список вывода>) ;
Элементами списка вывода могут быть постоянные, переменные, выражения.
Фрагмент программы | На экране. |
Write(7); | |
Write(‘привет’); | привет |
Const n=10; … Write(n); | |
Var x: byte; …. X:=5; Write(x); | |
Const n=15; Var x: word; …. X:=10; Write(x+n); |
При выводе на экран нескольких выражений, они отделяются друг от друга запятой. При появлении этих выражений не экране они записываются подряд, не отделяясь друг от друга пробелами.
X:=4;
Y:=5;
Z:=7;
Write(x,y,z);
На экране 457.
Чтобы «отделить» числа друг от друга можно выводить пробелы- Write(x,’ ‘,y,’ ‘,z,’ ‘); или использовать форматы вывода.
Формат вывода определяет представление информации на экране и записывается в списке вызова через двоеточие.
Write(x:r)- значение х выводится в крайние правые позиции поля шириной R.
X:=14;
Write(x:5);
НА экране _ _ _ 14
Наш пример можно записать Write(x:2,y:3,z:4).
НА ЭКРАНЕ: _ 4_ _5_ _ _ 7
Кроме того, форматы вывода очень важны при выводе действительных (вещественных) чисел. В общем случае, вещественное число выводится в форме с плавающей точкой (запятой).
Пример,
Const n=0.2;
…
write(n);
НА ЭКРАНЕ: 2.0000000Е-01
Такое представление информации является не привычным для нас. Поэтому будем использовать следующий формат вывода:
Write(x:r:w)- значение х выводится крайние правые позиции поля шириной R, причем W знаков отводится под дробную часть.
write(n:6:2);
НА ЭКРАНЕ: _ _ _ _0.2 0
Оператор Writeln работает так же как и оператор Write, только после вывода всего списка он передает курсор на следующую строку.
Пример,
X:=3;
Y:=x/2;
Z:=x*2;
Write(‘x=’,x);
Write(z:2, y:4:2)
НА ЭКРАНЕ: х=3_ 6_ 1 ,50
X:=3;
Y:=x/2;
Z:=x*2;
Writeln(‘x=’,x);
Writeln(z:2, y:4:2)
НА ЭКРАНЕ: х=3
_ 6_ 1 ,50
Дата добавления: 2016-05-25; просмотров: 626;