18 | -16 | 41 | 543 | -251 | Read(A,B): A→18; B→-16 |
17 | 18 | 25 | Readln(C): C→41 |
Особенности ввода.
Тип вводимого данного должен соответств. типу хi.
Если в процедуре ввода в списке имеются несколько переменных, то во входном файле они должны отделятся друг от друга разделителями.
1)При вводе чисел в качестве разделителя исп-ся пробел.
2)При вводе данных типа char данные во входной файл записывают без разделителей и апострофов.
3)При вводе типа string чтение символов продолжается пока не достигнут конец строки файла или мах длина переменной xi. Переход на новую строку Read не осуществляет. При переходе типа string лучше исп-ть ReadLn.
4)Для переменных типа arrayofchar каждому элементу массива соответствует символ.
Вопрос №18.
Процедуры вывода в стандартный текстовый файл Output. Допустимые типы вводимых переменных. Размещение информации в строке по умолчанию. Управление размещением информации.
1. Write(E1,E2,..,En);
список ввода
2. WriteLn(E1,E2,..,En);
В общем случае Еi – выражение. Допускается строковая константа или переменная.
Допускаются следующие типы:
1. целочисленные и их диапазоны;
2. веществен.;
3. сhar и его диапазон;
4. boolean;
5. string;
6. array of char;
Данные типы при пердаче в вых. фал преобраз. к симв. типу и разбиваются на строки фикс. длины.
При выводе на экран длина строки: 80 символов.
При выводе на печать длина строки: 128(186) символов.
Для вывода исп-ся буфер, в котором предварительно формируется строка вывода.
Если мы работаем с Write, строка выводится только после заполнения буфера; WriteLn – переход на следующую строчку вывода осущ. после вывода всех эл-тов из списка параметров.
Кол-во позиций, отводимых строке вых. файла для выходных данных равно минимально необходимым.
Если тип boolean, выводится ‘true’ или ‘false’. Для веществе. чисел отвод. 23 символа в форме мантиссы и порядка.
Недостаток: жесткая фиксация выводимых значений по позиции в строке. Поэтому для управления выводом по позиции строки исп-ся:
Ei:L1; Ei:L1:L2; , L1 – длина поля, отводимого для вывода Ei.
Если L1> миним.необходимого, то выводимое значение прижимается к правому полю; если < , то расширяется до min необходимого.
L2 – исп-ся только для вывода вещественных данных.
Если при выводе веществ. данных L2 отсутствует, значение будет выведено в виде мантиссы (zmm0.m1m2…mr.Ezppu…).
Write (18.7641:10:2)For I:=1 to 50 doWrite (‘’); WriteLn (‘Таблица: 1’); Write (‘_’); WriteLn;
WriteLn (‘!’, ’x’:5,’!’:5, ‘Y(x)’:14,’!’:10, ‘z(x)’:14, ’!’:11);
For I:=6 to 60 do Write (‘_’);
WriteLn; For I:=6 to 40 do Begin
WriteLn (‘!’, ’I’:5,’!’:5, ‘Y[I]’:20:2,’!’:4, ‘z[I]’:20:2, ’!’:5);
For I:=6 to 40 do Write (‘_’); End;
Вопрос №19.
Записи – это структура данных, состоящая из иерархически упорядоченных разнородных компонентов.
Компоненты записей м. иметь различный тип, доступ осуществляется по именам. Компоненты записи называются полями. На тип поля записей нет ограничений. Макс. уровень вложенности записей =9.
→record→<список_полей>→end→
-----------------------------------
<список_полей>::=→<общая_часть>→-----;→------<выр_часть>→-----;→
--------------------------------------- -----
Поле записи обозначается идентификатором. Областью действия полей записи явялется сама запись. Имя каждого поля д.б. уникальным.
Записи без вариантной части.
<общая_часть>::=------→<поле>→-----:-----→<тип>→
-----,-----
--------------------;---------------------
Тип поля м.б. задан предварительно либо при объявлении записи.
Type data=record
God:1900..2000;
Mes:(yan,fev);
Den:1..31;
End;
Anketa=record
Fio=record
Fam:string[20];
Im:string[10];
Ot:string[20];
End; ...
Var an1,an2:anketa; d1,d2:data; Spisok:array [1..N] of anketa;
Обращение к значению поля осуществляется с помощью ижентификатора поля, разделенных точкой. Для полных переменных типа запись существует операция присваивания.
Вопрос №20.
Запись с вариантной частью.
Позволяют объединить описания записей, которые похожи, но не идентичны по форме.
<вар_часть>::=→case→<поле>→:→<ид_типа>→of→<диапазон>→:→(→<сп_пол>→)→
----------- --------,--------- ---------------
------------------------;---------------------
Активный вариант определяется признаком варианта-самостоятельное поле общей части записи. Если признак варианта отсутствует, то программист обязан следить за тем, какой вариант записи является активным.
Case i:integer of
-------------------
case integer of
type anketa1=record
fio:record
fam:string[20];
im:string[10];
ot:string[20];
end; case pol:(man,woman) of
man:(vozr1:20..30);
woman:(vozr2:18..25);
end;
type vbr=record
case integer of
1: (i1:1..10);
2: (y1:char);
3: (k1:boolean);
end;
varv:vbr;
В вариантной части все имена полей д.б. уникальны, даже если они встречаются в разных вариантах. Запись м. иметь одну вариантную чать, но вариантная часть м.б. вложена в другую вариантную часть. Если поле, соответствующее какому-либо значению признака является пустым, то данный вариант не опускается. <диапазон>:( )
Объем памяти, необходимый для записей с вариантами складывается из объемов полей общей части и максимальной по объему суммы полей переменной части. Поля записи помещаются в памяти последовательно в том порядке, как объявлены.
Вопрос №21.
Оператор WITH.
Используется для сокращения составного имени поля.
WITH →<перем>→DO→<опер>→
------,-------
Переменные типа запись. Облегчает доступ к полям записи и минимизирует повторные адресные вычисления. Внутри оператора WITH к полям записи, записанным в его заголовке можно обращаться как к простым переменным. Идентификатор поля в сокращенной записи оператора WITH обозначает компоненту записи из ближайшего объемлющего оператора WITH, в котором указана переменная с таким полем. withan1,fio,datadobegin
Fam:=’...’; Im:=’...’; God:=1970; Mes:=yan; End;
Если 2 переменные из списка записей оператора WITH имеют поля с одним и тем же именем, то внутри оператора WITH это имя обозначает поле той записи, которая указана в списке последней. Имена отдельных полей могут совпадать с именами переменных.
Вопрос №22.
Множественный тип (Set).
Максимальное количество элементов = 256. Все элементы множества д.б. одного типа. Базовым типом множества м.б. любой скалярный тип кроме вещественных типов. Границы базового типа – 0 до 255. Объем памяти, занимаемые переменными множественного типа – 1 до 32 байт. Данные типа Set хранятся в унитарном коде (в любом значении которого м.б. не более одной единицы, остальные нули).