Смекни!
smekni.com

Строковый тип данных в языке Pascal 2 (стр. 3 из 4)

-При вводе числовых переменных процедура Read вначале выделяет

подстроку во входном потоке по следующем правилу: все ведущие пробелы, символы табуляции и маркеры конца строк EOLn пропускаются, после выделения первого значащего символа, наоборот, любой из перечисленных символов или EOF служат признаком конца подстроки. Выделенная таким образом подстрока затем рассматривается как символьное представление числовой константы соответствующего типа и преобразуется в численное представление, а полученное значение присваивается числовой переменной. Если в подстроке был нарушен требуемый формат представления численной константы, возникает ошибка ввода. Если при пропуске ведущих пробелов встретился символ EOF, переменная получает значение 0. В Турбо Паскале не предусмотрен ввод шестнадцатеричных констант.

Отмечу что, ввод переменных типа Boolean процедурами ввода не предусмотрен.

Что касается стандартных текстовых переменных, то при использовании процедуры Read применительно к стандартному входному файлу Input, т.е. при вводе с клавиатуры, символьные строки запоминаются в буфере, который передается процедуре только после нажатия на клавишу Enter. Кроме того, при работе с файлом Input в записи оператора Read не надо писать имя файла, иначе это приведет к ошибке. Это позволяет редактировать данные при их вводе. Максимальная длина буфера ввода при работе с клавиатурой составляет 127 символов. Ввод с клавиатуры по процедуре Read сопровождается эхо-повтором вводимых символов на экране ПК.

Процедура Read прекрасно приспособлена вводу чисел. При обращении к ней за вводом очередного целого или вещественного числа процедура «перескакивает» маркеры конца строк, т. е. фактически весь файл рассматривается ею как одна длинная строка, содержащая текстовое представление чисел.

В приложении 5 приводится пример программы использующей процедуру Read.

8. Процедура ReadLn([файловая переменная],[список ввода]);

Это процедура идентична процедуре Read (она также присваивает переменным, перечисленным в списке ввода значения, считанные из текстового файла), за исключением того, что после считывания последней переменной оставшаяся часть строки до маркера Eoln пропускается. Поэтому следующее обращение к ReadLn или Read начинается с первого символа новой строки. Кроме этого, эту процедуру можно вызывать без параметра [список ввода], что приведет к пропуску всех символов текущей строки вплоть до Eoln. Процедура ReadLn используется только с текстовыми файлами.

Если процедура используется для чтения с клавиатуры (Input), нажатие на клавишу Enter отобразится на экране как последовательность CR + LF и курсор будет помещен в начало следующей строки. В то время как в процедуре Read эхо-повтором клавиши Enter является символ CR.

Допустим нам дан входной файл my_file.txt следующего вида:

Sharifov

Rustam

1987

Program Read_from_file;

Var

F,I:string[15];

D:word;

T:Text;

Begin

Assign(T,’my_file.txt’);

Reset(T);

ReadLn(T,F,I,D); {Данные во входном файле соответсвующие переменных расположены в новых строках. Процедура каждый раз считывает данные из новой строки и перемещает курсор за признак конца строки EOLn }

End.

9. Процедура Write([файловая переменная],[список вывода]);

Обеспечивает вывод информации в текстовый файл или передачу её на логическое устройство. Файловая переменная должна быть связана с внешним файлом для вывода информации. Если файловая переменная отсутствует, то подразумевается вывод информации на стандартное устройство вывода (дисплей ПК). Здесь [список вывода]: последовательность из одного или более выражений типа:

-Символьный тип (Char)

-Строковой тип (String)

-Целые числа

-Вещественные числа

-Булевые константы (Boolean)

Элементы списка вывода разделяются друг от друга запятой. Любой элемент списка вывода может иметь вид:

Выводимое_выражение[:ширина поля[:кол-во десятичных знаков]]

[ширина поля] и [количество десятичных знаков] – это выражения типа Word. Квадратные скобки означают возможность отсутствия заключенных в них параметров. Подпараметр [ширина поля], если он присутствует, указывает минимальную ширину поля, в которое будет записываться символьное представление выводимого значения. Именно символьное представление, так как все данные перечисленные в списке вывода переводиться в символьный тип и только после этого записываются в текстовый файл. Если символьное представление имеет меньшую длину, чем [ширина поля], то оно будет дополнено слева пробелами, если – большую длину, то подпараметр [ширина поля] игнорируется и выводится необходимое число символов.

Подпараметр [количество десятичных знаков] задает количество десятичных знаков в дробной части вещественного числа. Он может использоваться только совместно с [ширина поля] и только по отношению к выводимому выражения одного из вещественных типов.

Если ширина поля вывода не указана, соответствующий элемент вывода выводится вслед за предыдущим без какого-либо их разделения.

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

При выводе булевых переменных в зависимости от их значения выводятся строки TRUE или FALSE.

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

Экспоненциальный формат вещественного числа выглядит следующим образом:

_s#.##############E*#### , где

_ - пробел;

s - пробел для положительного и знак « - »для отрицательного числа;

# - десятичная цифр;

E - символ десятичного основания;

* - знак «+» или « - » в зависимости от знака десятичного порядка цифр;

Если подпараметр ширина поля для вещественных чисел опущен,

принимается его значение по умолчанию (23) .

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

Если значение подпараметра ширина поля окажется недостаточным для размещения целой части вещественного числа или другого выражения, то в этом случае этот параметр автоматически увеличивается.

При заполнении стандартного текстового файла его содержимое сдвигается вверх на одну строку.

В приложении 5 приводится пример программы использующей процедуру Write.

10. Процедура WriteLn([файловая переменная],[список вывода]);

Эта процедура полностью идентична процедуре WRITE за исключением того, что выводимая в текстовый файл строка символов завершается признаком конца строки EOLn.

WriteLn используется только для текстовых файлов. При вызове

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

В приложении 6 приводится пример программы использующей процедуру Write.

11. Функция EOLn([файловая переменная]);

Это логическая функция, то есть возвращает значения TRUE или FALSE. Возвращает значение True, если на входном текстовом файле указатель достиг маркера конца строки. Иначе принимает значение False.

Если параметр [файловая переменная] опущен, функция проверяет стандартный файл Input.

В приложении 6 приводится пример программы использующей функцию EOLn.

12. Функция EOF([файловая переменная]);

Проверяет является ли текущая позиция файла концом файла. EOF возвращает TRUE, если следующим считанным символом из файла или если файл пуст будет признак конца файла. В противном случае функция EOF возвращает FALSE.

Если параметр [файловая переменная] опущен то функция проверяет стандартный файл Input.

С помощью этой функции можно с легкостью считать всю информацию из файла.

В приложении 7 приводится пример программы использующей функцию EOF.

13. Функция SeekEOLn([файловая переменная]);

Пропускает все пробелы и знаки табуляции до маркера конца строки ЕОLn или до первого значащего символа и возвращает TRUE если маркер обнаружен. Т.е. функция проверяет есть ли значащие символы до конца строки и принимает значение FALSE если они есть.

Если параметр [файловая переменная] опущен, функция проверяет стандартный файл INPUT.

В приложении 7 приводится пример программы использующей функцию EOLn.

14. Функция SeekEOF([файловая переменная]);

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

Если параметр [файловая переменная] опущен, функция проверяет стандартный файл INPUT.

15. Процедура Flush([файловая переменная]);

Сбрасывает буфер текстового файла, связанного с файловой переменной и открытого для вывода процедурой Rewrite или Append. Это дает гарантию того, что вся информация, записываемая в файл, будет сохранена во внешнем физическом файле.

Процедура не влияет на файлы открытые для ввода.

16. Процедура SetTextBuf([файловая переменная],[новый размер буфера]);

Назначает буфер ввода-вывода для текстового файла, связанного с файловой переменной. [новый размер буфера] – это переменная типа Word.

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