Ответы на экзаменационные вопросы № 1-34 по дисциплине "Программирование" (Средства модульного программирования в системе Турбо-Паскаль. ООП. Объекты в динамической памяти), страница 13

Если это переменная (переменные) типа char, то из файла считывается символ и присваивается переменной, затем считывается следующий символ и присваивается следующей переменной – и так до тех пор, пока всем переменным типа char, указанным при вызове процедуры Read, будут присвоены считанные из файла значения. (При вводе с клавиатуры между вводимыми значениями требуется вводить некоторый разделитель – пробел, символ табуляции (клавиша <Таb>) или конец строки (клавиша <Enter>). Если очередной считанный символ окажется маркером конца строки EoLn, считывание будет продолжено из новой строки. Если очередной считанный символ окажется маркером конца файла, то выполнение процедуры будет прекращено.             

Считывание значений типа string.           

Если это строковая переменная (переменные), то из файла будут считываться все символы до ближайшего маркера конца строки. Если длина считанной строки превзойдет допустимую для значений типа string величину (255 символов), все оставшиеся до конца строки байты отбрасываются. Считывание нескольких строк подряд следует производить неоднократным обращением к процедуре Readln.      

Считывание числовых значений  

Если это значение типа integer или real, процедура Read будет пропускать любые пробелы, символы табуляции или маркеры конца строки, предшествующие числовой строке. Когда будет обнаружена первая значащая цифра, процедура Read начнет формировать числовое значение, пока не встретится один из перечисленных символов (пробел, символ табуляции или маркер конца строки). Считанная таким образом последовательность цифр рассматривается как символьное представление соответствующего числа, и полученное значение присваивается соответствующей переменной. Если числовая строка не соответствует ожидаемому формату, будет выдано сообщение об ошибке ввода/вывода. Следующая процедура Read начнет считывание с пробела, символа табуляции или маркера конца строки, которым была завершена предыдущая числовая строка.            

4)       

Кроме подпрограмм, осуществляющих ввод/вывод, имеется функция, которая осуществляет контроль за вводом/выводом.       

IOResult()      возвращает код ошибки, возникшей при выполнении последней операции ввода/вывода. Если ошибки не было, функция возвращает нуль.        

Для того чтобы контролировать ошибки ввода/вывода с помощью функции IOResult, должен быть выключен автоконтроль (директива компилятора {$1-}).   

Примеры программ.

Пример 1: Программа, печатающая свой собственный текст.

program type_file;

uses crt;

var f:text; s:string;

begin

clrscr;

assign(f,'t_f.pas');

reset(f);

while not eof(f) do

begin

readln(f,s);

writeln(s)

end;

close(f)

end.

Пример 2: Программа, считывающая целые числа из текстового файла и находящая максимум этих чисел (максимум выводится на экран).

program text_chisla;

var f:text; x,max:integer;

begin

assign(f, 't_c.txt');

reset(f);

read(f,max);

while not eof(f) do

begin

read(f,x); writeln(x);

if x>max then max:=x

end;

writeln('max=',max);

readln

end.

Пример 3: То же самое, но вместо файловой переменной используется стандартная файловая переменная input.

program text_chisla;

var x,max:integer;

begin

assign(input,'t_c.txt');

reset(input);

read(max);

while not eof(input) do

begin

read(x); writeln(x);

if x>max then max:=x

end;

writeln('max=',max);

readln

end.

Пример 4: Программа, считывающая целые числа с клавиатуры и сохраняющая их (и максимум) в текстовом файле. Здесь используется стандартная файловая переменная output.

program text_chisla;

var x,max:integer;

begin

assign(output,'t_c1.txt');

rewrite(output);

readln(x); write(x);max:=x;

while x<>0 do

begin

readln(x); write(x);

if x>max then max:=x

end;

writeln('max=',max);

close(output);

readln

end.

Пример 5: Программа считывает целые числа из одного файла, находит их максимум и

Сохраняет во втором файле числа, большие 10. Используются стандартные файловые переменные input и output.

program text_chisla;

var  x,max:integer;

begin

assign(input,'t_c.txt');