Теоретический материал: файловый ввод-вывод (Паскаль)

Стандартные текстовые файлы Input и Output. Примеры задач

В Паскале существуют два стандартных текстовых файла: Input и Output. Эти файлы считаются известными в любой Pascal-программе (иными словами, они описаны в стандартном модуле System). Они обозначают (по терминологии MS-DOS), соответственно, стандартный файл ввода и стандартный файл вывода. Обычно эти стандартные файлы связаны с конкретными физическими устройствами компьютера. Так, файловая переменная Input связана с клавиатурой, файловая переменная Output - с экраном дисплея. Эти файлы считаются заранее открытыми, а соответствующие идентификаторы можно использовать в операциях ввода-вывода.

Рассмотрим, например, следующий оператор:

writeln (Output, 'Результат равен ', (X+Y)*2);

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

Аналогично, оператор read (Input, X1, X2); будет выполняться таким образом: система перейдет в состояние ожидания ввода с клавиатуры двух значений. Типы вводимых значений должны совпадать с типами переменных Х1 и Х2. Эти значения при вводе должны отделяться друг от друга одним или несколькими пробелами, а ввод должен быть завершен нажатием клавиши Enter. В процессе ввода значений набираемые на клавиатуре символы отображаются на экране. После нажатия Enter введенные значения будут присвоены переменным Х1 и Х2, и выполнение программы будет продолжено.

Для стандартных файлов Input и Output допускается сокращенная форма записи операций ввода-вывода. Так, если в процедурах read и readln первый параметр опущен, то по умолчанию подразумевается файл Input. Аналогично, отсутствие в процедурах write и writeln первого параметра означает вывод в стандартный файл Output. Вывод в стандартный файл Output используется очень часто - всегда, когда необходимо выдать некоторую информацию из программы на экран.

В соответствии с общими правилами MS-DOS стандартные файлы ввода-вывода могут быть "переназначены", то есть, связаны с другими физическими устройствами или дисковыми файлами. Простейшим способом переназначения является использование для этой цели процедуры assign, например,

assign (Output,'MyFile.out');

После выполнения такого оператора стандартный файл вывода будет переназначен, то есть файловая переменная Output будет связана с дисковым файлом MyFile.out из текущего каталога. Все операции вывода, явно или неявно работающие с файлом Output, будут выводить информацию в указанный дисковый файл.

Задание. Рассмотрите предложенные программы, наберите их на компьютере, выделите необходимые части алгоритма в подпрограммы, сформулируйте решаемые ими задачи, дополните необходимыми операторами и комментарием.

Program StringCount;
Uses
  Crt;
Var
  i : integer;
  s : string;
  f : text;
Begin
  ClrScr;
  readln(s);
  assign(f, s);
  reset(f);
  i := 0;
  while not Eof(f) do
    begin
      readln(f,s);
      i:=i+1;
    end;
  close(f);
  writeln(i);
  readln;
End.

 

Program Zamen;
Uses
  Crt;
Var
  s : string;
  f, d : text;
Begin
  ClrScr;
  readln(s);
  assign(f, s);
  readln(s);
  assign(d, s);
  reset(f);
  rewrite(d);
  while not Eof(f) do
    begin
      readln(f, s);
      while Pos('o', s)>0 do
        s[Pos('o', s)] := 'a';
      writeln(d, s);
    end;
  close(f);
  close(d);
  readln;
End.

 

Program MaxInFile;
Uses
  Crt;
Var
  i, j, r, Code : integer;
  s : string;
  f : text;
Begin
  ClrScr;
  readln(s);
  assign(f, s);
  reset(f);
  while not Eof(f) do
    begin
      readln(f, s);
      j:=0;
      for i:=1 to Length(s) do
        begin
          Val(s[i], r, Code);
          if r>j
            then
              j:=r;
        end;
      writeln(j);
    end;
  close(f);
  readln;
End.