Какой тип данных в языке pascal предназначен для хранения строковой информации

Типы данных в object pascal

Object Pascal унаследовал от базового языка Borland Pascal все его особенности и достоинства.

Так же, как и в Borland Раscal, в Delphi все используемые типы данных можно разделить на две основные группы. К первой относятся стандартные типы, предопределенные спецификацией языка Pascal. На основе этих типов разработчик может описывать собственные типы данных, которые относятся ко второй группе.

К простым числовым типам относятся: Integer, Cardinal, ShortInt, SmallInt, LongInt, Int64, Byte, Word, LongWord, Real, Real48, Single, Double, Extended, Comp, Currency. Для процесса обучения достаточно использования Integer для хранения целочисленных значений и Real для вещественных значений.

Для символьных данных базовым является тип Char. На его основе созданы два дополнительных типа – AnsiChar и WideChar для использования двух кодировок символов ANSI и Unicode.

В Delphi 4 расширены возможности логического типа данных. Помимо базового типа Boolean можно использовать дополнительные типы ByteBool, WordBool, LongBool. Эти типы необходимы для обеспечения совместимости с функциями Windows и другими средами разработки.

Введены новые типы для хранения строковой информации. Тип AnsiString предназначен для создания переменных, хранящих тексты произвольной длины. Тип WideString осуществляет динамическое выделение памяти для хранения текста. Текст должен быть представлен в кодировке Unicode. Многие функции и процедуры по работе со строковыми данными отличаются от функций и процедур Турбо Паскаля (см. приложение 1 файла материалов).

Массивы стали открытыми, их размер можно задавать динамически. В четвертой версии Delphi появились многомерные динамические массивы.

Статические массивы можно описывать по старым правилам, например:

Var a : Array [1..5] Of Real;

При описании параметров функции или процедуры допускается следующий вариант:

Function Prim (a : Array Of Real) : Real

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

В Object Pascal длина динамических массивов определяется во время выполнения программы. Описав переменную как a1 : Array Of Real;, мы имеем указатель, который будет соответствовать массиву вещественных чисел. Память под него выделяется процедурой SetLength:

В динамических массивах нумерация начинается только с 0. Хотя это по природе своей указатели, знак разыменования (^) не применяется.

Дальнейшим развитием идеи динамических массивов являются многомерные динамические массивы:

Var aa : Array Of Array Of Real;

В функции SetLength после имени переменной нужного типа можно задать сразу все размерности массива, например: SetLength(aa, 10, 5).

В практике программирования встречаются ситуации, когда передаваемое переменной значение может иметь неизвестный заранее тип данных. Для таких случаев в Delphi существует типVariant.Вариант – тип данных, позволяющий хранить данные любых типов, кроме структурных. Переменная-вариант занимает в памяти дополнительные два байта, в которые помещается информация о действительном типе переменной. Эта информация позволяет компилятору создать код, который будет осуществлять необходимое преобразование типов на этапе прогона программы. В переменную-вариант можно поместить: целое или вещественное число; логическое выражение; строку; время и/или дату; OLE-объект; массив произвольной размерности и длины. Следующий пример иллюстрирует использование вариантов.

Var V1, V2, V3, V4, V5 : Variant;

i : Integer; s : String;

V1 := 1; V2 := 1234.5678; V3 := ‘Строка символов’; V4 := ‘1000’;

V5 := V1 + V2 + V3 // Получится число 2235.5678

s := V3; // s = ‘Строка символов’

s := V5; // s = ‘2235.5678’

Тип дата-время определяется идентификатором TDateTime и предназначен для хранения даты и времени. Тип дата-время занимает 8 байт и представляет собой вещественное число с фиксированной дробной частью: в целой части числа хранится дата, в дробной – время. Над данными этого типа определены те же операции, что и над вещественными числами, а в выражениях этого типа могут участвовать константы и переменные целого и вещественного типов. Существуют стандартные процедуры и функции по работе с данными дата-время. Вот некоторые из них:

Date – возвращает текущую дату;

DateToStr (d : TDateTime) – преобразует дату в строку символов;

DateTimeToStr(d : TDateTime) – преобразует дату и время в строку символов;

Time – возвращает текущее время;

TimeToStr(T : TDateTime) – преобразует время в строку.

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

Помимо проблем с самой программой, сбой может возникнуть и в операционной системе. Он может быть вызван программными или аппаратными причинами.

При разработке приложений в Delphi программист имеет возможность использовать несколько механизмов, обеспечивающих обработку исключительных ситуаций. Это и специальные операторы языка Object Pascal и классы, предназначенные для программирования реакции на ошибки.

Исключительная ситуация – это нештатное событие, которое может повлиять на дальнейшее выполнение программы. Современный компилятор выдает код, который перехватывает любое такое событие, предотвращает нежелательные последствия, сохраняет необходимые данные о состоянии программы. С точки зрения Object Pascal исключительная ситуация – это объект.

Для обработки исключительных ситуаций предназначен класс Exception.

Тип Exception порождает многочисленные дочерние типы, соответствующие часто встречающимся случаям ошибок ввода/вывода, распределения памяти и т. п. Exception и его потомки представляют собой исключение из правила, предписывающего все объектные типы именовать с буквы “Т”. Имена потомков типа Exception начинаются с”Е”.

Приведем примеры классов, обрабатывающих исключительные ситуации:

EOutOfMemory – недостаточно места в куче;

EOutOfResources – нехватка системных ресурсов;

EInvalidPointer – недопустимый указатель;

EDivByZero – ошибка целочисленного деления на ноль;

ERangeError – число или выражение выходит за допустимый диапазон;

EIntError – любая ошибка в целочисленных вычислениях;

EInvalidOp – неверная операция;

EZeroDivide – попытка деления на ноль;

EOverflow – переполнение с плавающей точкой;

EСonvertError – ошибка преобразования в функциях StrToInt или StrToFloat;

С перечнем стандартных классов исключений можно познакомиться в справочной литературе или в справочной системе, встроенной в Delphi.

Для обработки исключений в Object Pascal предусмотренмеханизм защищенного блока:

Порядок выполнения операторов:

1) сначала выполняются операторы секции Try … Except;

2) если операторы выполнены без возникновения исключительной ситуации, работа защищенного блока на этом прекращается и управление получает оператор, стоящий за End;

3) если при выполнении части Try возникло исключение, управление получает соответствующий обработчик в секции Except, а если таковой не найден – первый из операторов, стоящих за словом Else.

Имеется возможность использовать эту конструкцию без части Else.

В блоке Except могут располагаться обработчики исключений:

Здесь On, Do – ключевые слова;– класс обработки исключения;– любой оператор Object Pascal, кроме оператора передачи управления Goto на метку вне блока Except. Имя класса служит своеобразным ключом выбора, а собственно обработка осуществляется оператором, стоящим за Do. Обработчик исключения – совокупность операторов OnDo , определяющая действия программы в зависимости от класса исключения

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

On ERangeError Do . . .;

On EDivByZero Do . . .;

On EIntError Do . . .;

Среда Delphi при каждой исключительной ситуации перехватывает управление программой. Такое поведение среды отменяется с помощью опции Tools/Environment Options, где на странице Preference нужно отменить переключатель Break on exception.

Если для программиста важен лишь сам факт возникновения исключения и несущественен тип связанной с ним ошибки, он может опустить в секции Except … End обработчики вместе со словом Else, оставив в ней лишь необходимый код реакции на любую ошибку:

Приведение типов данных

На операции с переменной определенного типа компилятор обычно налагает ограничения, разрешая выполнение только тех операций, которые характерны для указанного типа данных. Иногда компилятор автоматически осуществляет приведение типов, например при присвоении целого значения действительной переменной. В Delphi существуют операции приведения типов IS и AS.

В операции IS определяется, принадлежит ли данный объект указанному типу или одному из его потомков. Выражение

AnObject IS TMyClass

возвращает True, если переменная AnObject ссылается на образец объектного типа TMyClass или одного из его потомков.

Сама по себе IS не является операцией задания типа. В ней лишь проверяется совместимость объектных типов. Для корректного приведения типа объекта применяется операция AS:

With AnObject AS TMyClass Do . . .

В операции AS сначала проверяется совместимость типов с помощью операции IS. Если типы несовместимы, запускается обработчик исключительной ситуации. Таким образом, в конструкции AS операция явного приведения типа оказывается заключенной в безопасную оболочку.

Статьи к прочтению:

Паскаль с нуля [ч2]. Переменные и типы данных

Похожие статьи:

Составной оператор Если при некотором условии надо выполнить определенную последовательность операторов, то их объединяют в один составной оператор….

Алфавит языка программирования Pascal включает:  Латинские буквы: A a B b… Z z  Цифры: 0 1 2..9  Знаки математических операций: +(сложение)…

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

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

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

Удобство и эффективность применения компьютеров для подготовки текстов привели к созданию множества программ для обработки документов. Такие программы называются редакторами текстов (Word Processors). Возможности этих программ различны — от программ, предназначенных для подготовки небольших документов простой структуры, до программ для набора, оформления и полной подготовки к типографскому изданию.

Текстовые файлы связываются с файловыми переменными, принадлежащими стандартному типу text. Текстовые файлы предназначены для хранения тек­стовой информации.

Текстовый файл трактуется в Турбо Паскале как совокупность строк пере­менной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой записи (строки) ставится специальный признак eoln

eoln — последовательность кодов ASCII #13 (CR) и #10 (LF);

eof — код #26 стандарта ASCII.

Для доступа к записям применяются процедуры read, readln, write, writeln. Они отличаются возможностью обращения к ним с переменным количеством фактических параметров, в качестве которых могут использоваться символы, строки и числа. Первым параметром в любой из перечисленных процедур может стоять файловая переменная. В этом случае осуществляется обращение к дисковому файлу или логическому устройству, связанному с переменной процедурой assign. Если файловая переменная не указана, происходит обра­щение к стандартным устройствам input и output.

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

Предметом рассмотрения моей работы – строковые данные и текстовые файлы.

Объект исследования – строковый тип данных и текстовые файлы в языке Pascal.

Глава I. Строковый тип данных в языке Pascal

Тип данных – понятие, используемое в языках программирования для характеристики данных (переменных, массив и др.) в программах.

Достоинством языка Паскаль является возможность использования широкого набора разных типов данных.

Познакомимся с типом данных, который относится к числу структурированных. Это строковый тип данных (строка). Строка – это последовательность символов. Каждый символ занимает 1 байт памяти (код ASCII). Количество символов в строке называется ее длиной. Длина строки может находиться в диапазоне от 0 до 255. Строковые величины могут быть константами и переменными. Особенностью строки в Turbo Pascal является то, что с ней можно работать как с массивом символов, с одной стороны, и как с единым объектом, — с другой. За счет этого обработка строк достаточно гибка и удобна. Строковая константа есть последовательность символов, заключенная в апострофы. Например: «это строковая константа», «272». Строковая переменная описывается в разделе описания переменных следующим образом:

Var Name : string [20].

Параметр длины может и не указываться в описании. В таком случае подразумевается, что он равен максимальной величине — 255. Например: Var slovo : string.

Строковая переменная занимает в памяти на 1 байт больше, чем указанная в описании длина. Дело в том, что один (нулевой) байт содержит значение текущей длины строки. Если строковой переменной не присвоено никакого значения, то ее текущая длина равна нулю. По мере заполнения строки символами ее текущая длина возрастает, но она не должна превышать максимальной по описанию величины.

Символы внутри строки индексируются (нумеруются) от единицы. Каждый отдельный символ идентифицируется именем строки с индексом, заключенным в квадратные скобки. Например: N[5], S[i], slovo[k+l]. Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания.

Тип string и стандартный тип char. Тип string и стандартный тип char совместимы. Строки и символы могут употребляться в одних и тех же выражениях.

Строковые выражения строятся из строковых констант, переменных, функций и знаков операций. Над строковыми данными допустимы операции сцепления и операции отношения.

Операция сцепления (конкатенации) (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и переменные.

Пример: ‘Мама ‘ + ‘мыла ‘ + ‘раму’. В результате получится строка: ‘Мама мыла раму’. Длина результирующей строки не должна превышать 255.

Операции отношения: =, , =, <>. Позволяют произвести сравнение двух строк, в результате чего получается логическое значение (true или false). Операция отношения имеет приоритет более низкий, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы (приложение 1).

Функция Copy. Функция Copy(S, Pozition, N) выделяет из строки S подстроку длиной N символов, начиная с позиции Pozition. Здесь N и Pozition — целочисленные выражения (приложение 1).

Функция Concat. Функция Concat(S1, S2, …, SN) выполняет сцепление (конкатенацию) строк S1, S2, …, SN в одну строку (приложение 1).

Функция Length. Функция Length(S) – определяет текущую длину строки S. Результат – значение целого типа (приложение 1).

Процедура Delete Процедура Delete(S, Poz, N) – удаление N символов из строки S, начиная с позиции Poz.

В результате выполнения процедуры уменьшается текущая длина строки в переменной S.

Глава II. Текстовые файлы.

Обработка текстовых файлов в языке Pascal

Прежде чем перейти к обработке текстовых файлов на языке Pascal следует разобраться с понятием файл. На языке Pascal файл представляет собой упорядоченную последовательность элементов. И в отличие от общепринятого понятия файлом на языке Pascal может быть не только информация хранящиеся на дисках, но и внешние устройства (такие как: дисплей, клавиатура, принтер, любой порт ПК и т. д.).

Теперь рассмотрим причину использования файлового типа данных при разработке программ. Введение файлового типа в язык Pascal вызвано необходимостью обеспечить возможность работы с периферийными (внешними) устройствами ПК, предназначенными для ввода, вывода и хранения данных. Общее свойство массива, множества и записи заключается в том, что количество их компонентов определено на этапе написания программы (то есть в исходном тексте программы), тогда как количество компонентов файла в исходном тексте программы не определяется и может быть произвольным. Это обстоятельство позволяет оперативно изменять, к примеру, входные данные независимо от программы.

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

Файлы расположенные на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой. В программах на языке Pascal имена файлов задаются с помощью строк. Например, имя файла на диске может иметь вид:

‘[имя диска]:\[каталог]\[подкаталог]\. \[подкаталог]\[имя файла с расширением]’

Операционная система MS-DOS ограничивает эту строку до 79 символов. Даже в одноименном модуле DOS языка Pascal имеется тип данных PathSTR = String[79], то есть строка, максимальная длина которой 79 символов. Если же файл находится в том же каталоге, что и программа то имя файла можно указать короче : ‘[имя файла с расширением]’. Также именами файлов могут быть и имена внешних устройств:

‘CON’, ‘LPT1’, ‘LPT2’, ‘LPT3’, ‘PRN’, ‘COM1’, ‘AUX’, ‘NUL’.

Отмечу что, здесь CON – совокупность устройств ввода-вывода, где устройство ввода клавиатура, а устройство вывода дисплей; ‘LPT1’, ‘LPT2’, ‘LPT3’ – последовательность устройств для печати и ‘LPT1’ синонимичен с ‘PRN’ и является обыкновенным принтером; ‘COM1’ – это последовательный порт ПК и т. д.

С файловой системой в Turbo Pascal связано понятие буфера ввода — вывода. Ввод и вывод данных осуществляется через буфер. Буфер – это область в памяти, которая выделяется для каждого файла. При записи в файл вся информация сначала направляется в буфер и там накапливается до тех пор, пока весь объем буфера не будет заполнен. Только после этого или после специальной команды сброса происходит передача данных на внешнее устройство. При чтении из файла данные вначале считываются в буфер, причем данных считывается не столько, сколько запрашивается, а сколько поместится в буфер. Механизм буферизации позволяет более быстро и эффективно обмениваться информацией с внешними устройствами.

Теперь перейдем к переменным файлового типа. Язык Pascal поддерживает 3 файловых типа:

1-ый – текстовые файлы.

2-ой – типизированные файлы.

3-ий – нетипизированные файлы.

Описание переменных к этим трем файловым типам данных выглядит следующим образом:

для текстовых файлов : Var T:Text;

для типизированных файлов : Var F:File of тип_данных;

для нетипизированных файлов : Var F:File;

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

Особое место на языке Pascal занимают текстовые файлы, которые являются темой настоящей курсовой работы. Текстовый файл представляет собой линейную последовательность символов, организованных в строки переменной длины.

В конце строк стоит признак конца строки EOln (в операционной системе MS-DOS, а как следствие и в её оболочке MS-Windows End Of Line состоит из двух символов: LF- перевод строки, имеющий порядковый номер в ASCII таблице #10 и CR — возврат каретки c порядковым номером в ASCII таблице #13). В самом конце текстового файля стоит признак конца файла EOF (End Of File имеющий порядковый номер в ASCII таблице -#26). Признак конца строки вводится при помощи нажатия клавиши Enter, а признак конца файла при помощи нажатия клавиш Ctrl+Z. Обычно эти специальные символы или признаки не отображаются в текстовых редакторах.

В текстовом файле всегда имеется так называемый курсор или указатель который стоит на определенном символе. Если файл пустой то первым и единственным считанным символом будет EOF (#26).

Помимо текстовых переменных вводимых программистом но языке Pascal имеются также стандартные файловые переменные текстового типа: Input и Output. Стандартная текстовая переменная Input представляет собой доступный только для чтения файл, связанный со стандартным файлом ввода операционной системы. Стандартная текстовая переменная Output – это доступный только для записи файл, связанный со стандартным файлом вывода. Обычно стандартным файлом ввода-вывода является внешнее устройство – Консоль (‘CON’) о котором уже говорилось выше.

В чем же суть обработки текстовых файлов? Учитывая специфику слова «обработка», под обработкой текстовых файлов можно понять считывание информации со входного файла, изменение информации и записи этой информации на выходной файл. Запись не читанных со входного файла текстовых данных на выходной файл является видоизменением текстового файла, но не подпадает под понятие обработка текстового файла.

Теперь самое время перейти к стандартным функциям и процедурам, которые Pascal предоставляет нам для работы с текстовыми файлами и в некоторых случаях с файлами вообще.

Процедура Assign([файловая переменная],[имя файла]);

Для работы с файлами вторым важным действием после объявления файловой переменной является «связывание» этой переменной с физическим файлом. Это действие и выполняет процедура Assign.То есть выполняя действия над файловой переменной программа, ассоциирующая файловую переменную с конкретным физическим файлом, производит операции именно над этим физическим файлом. Как было отмечено процедура Assign является обязательной для работы с файлами. С одним и тем же физическим файлом можно связать несколько файловых переменных. Также с одной файловой переменной можно последовательно связать различные физические файлы. Причем при последовательном связывании с одной и той же переменной различных физических файлов операции произведенные над переменной до связывания становятся недействительными. Например следует дважды открыть одну и ту же переменную дважды связанную с различными файлами для чтения: Assign(T,’file1.txt); Reset(T); Assign(T,’file2.txt’); Reset(T);. О процедурах открытия файлов будет говориться ниже.

Что касается стандартных входных и выходных текстовых файлов Input и Output то они автоматически связываются со стандартным устройством ввода-вывода (обычно это совокупность устройств – дисплей и клавиатура). То есть два оператора Assign(Input,’CON’); Assign(Output,’CON’); выполняются по умолчанию и их не следует писать. Процедура Assign работает со всеми типами файлов.

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

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

Открывает логический файл (то есть файловая переменная связанная с физическим файлом) для чтения. Естественно, что для чтения следует открывать входной файл. После выполнения процедуры Reset курсор ставится на первый элемент файла (в случае текстового файла на первый символ) и с файла уже можно считывать информацию. Если текстовый файл пустой, то первым символом будет EOF — #26.

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

Что касается стандартного входного текстового файла Input, то он открывается для чтения автоматически. То есть не следует писать Reset(Input); в программе.

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

Создает и открывает внешний физический файл связанный с файловой переменной для последующей записи в него. Новый созданный файл бывает пустой и курсор становится в самое начало файла. Если описанный в процедуре Assign внешний файл уже существует, то он стирается и создаётся заново. Разумеется после выполнения процедуры Rewrite созданный для записи файл является выходным файлом. Процедура Rewrite используется со всеми файловыми типами данных.

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

Что касается стандартного выходного текстового файла Output то он открывается для записи автоматически. То есть не следует писать Rewrite(Output); в программе.

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

Открывает внешний физический текстовый файл связанный с файловой переменной для последующей записи в него. Однако в отличии от процедуры Rewrite этот файл существует запись производится в самый конец файла. Разумеется процедура Append используется для открытия выходных текстовых файлов. После открытия файла курсор становится в самый конец файла. Процедура Append используется только для текстовых файлов.

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

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

Сохраняет и закрывает открытый физический файл связанный с файловой переменной. Как было отмечено в определении файл перед закрытием должен быть открыт (процедурами Reset или Rewrite для всех типов файлов или процедурой Append для текстовых файлов). Если в выходных файлах были произведены изменения, то для сохранения информации они должны быть обязательно закрыты процедурой Close. Процедура Close может быть использована для любых типов файлов. Если последовательно открывать файл различными процедурами, то в промежутках между этими процедурами оператор Close автоматически. То есть если в начале открыть файл для записи процедурой Rewrite а затем сразу открыть его для чтения процедурой Reset, то до процедуры Reset автоматически произойдет сохранение и закрытие файла оператором Close.

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

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

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

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

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

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

Символьный тип данных (Char).

Строковой тип данных (String).

Целочисленный тип данных (Integer, LongInt, Word, Byte).

Переменные вещественного типа (Real, Single, Double, Complex, Extended).

Считывание информации из входного файла процедурой Read всегда происходит только последовательно. Так как при считывании текущая позиция перемещается к следующему символу.

Теперь рассмотрим как процедура Read присваивает значения различным типам данных.

Символьный тип. При вводе переменных типа Char выполняется

чтение одного символа из файла и присваивание считанного значения переменной. Если перед выполнением чтения указатель достиг конца очередной строки, то результатом чтения будет символ CR (ASCII код #13) , а если достигнут конец файла, то — символ EOF ( код #26).

При вводе переменных типа String количество считанных процедурой и

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

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

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

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

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

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

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

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

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

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

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

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

В приложении 8 и 9 приведены примеры программ обрабатывающих текстовый файл.

В данной работе мы рассмотрели строковый тип данных и обработку текстовых файлов в языке Pascal. Также в ходе выполнения курсовой работы я ознакомился с новыми приемами программирования и особенностями языка Pascal.

Pascal предлагает богатую среду программирования, которая делает разработку программного обеспечения более производительной и более приятной.

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

Система программирования Pascal остается одной из самых популярных систем программирования в мире.

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

Таким образом, основными достоинствами Pascal является:

-Качественная среда разработки, включающая мощный отладчик.

-Удачная система помощи — язык можно изучить лишь по справочным статьям, без посторонних книг.

-Высокая скорость компиляции, высокая скорость выполнения откомпилированных программ.

-Качественно реализованное объединение Паскаля и ассемблера.

Однако существуют и некоторые недостатки данного языка программирования:

-Компилятор рассчитан на реальный режим DOS, который сейчас практически не используется.

-Недостаточно полно реализовано объектно-ориентированное программирование.

Компьютеры могут работать с различными типами данных. К основным типам относятся: целые числа, действительные числа, строковые величины и логические величины.

Данным разных типов выделяется разное количество ячеек оперативной памяти.

Зачем нужны типы данных? Прежде всего, они указывают, как кодировать данные в ПК при их вводе и трансляции программ и как декодировать данные при их выводе и исполнении программ. Все данные в ПК представляются в конечном счете по­следовательностями нулей и единиц; в то же время одни последовательности обозначают числа, дру­гие, — буквы и т. д. Кроме того, разные типы дан­ных требуют для своего машинного представления разного числа двоичных разрядов: логическому значению достаточно одного разряда, символы обычно размещаются в одном байте (8 разрядов), целые числа требуют 16 – 32 разряда и т. д. Описание ти­па в программе, с одной стороны, указывает транс­лятору, сколько места в памяти отвести для одной единицы данных этого типа; с другой стороны, «гля­дя» на полученный код (машинное представление), ПК «понимает», что означает данная последо­вательность нулей и единиц (число, букву или что-то еще) и как с ней можно работать. Конкретная система кодирования зависит не только от языка, но и от транслятора, а также от типа ПК и струк­туры ее памяти (размера ячейки, системы адре­сации и т. д.). Благодаря этому кодированию становится возможным контроль над многими ошибками в программе. Зная тип переменной, транслятор может обнаружить, что переменной присваивается недопустимое значение, что к ней применяется неправильная операция (например, требуется сложить буквы), и выдать программисту сообщение об ошибке.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *