Учебное пособие Новосибирск 2001


страница9/10
lit.na5bal.ru > Документы > Учебное пособие
1   2   3   4   5   6   7   8   9   10
ГЛАВА 9. Текстовые данные
В Турбо Паскале текстовая информация может быть представлена двумя типами данных: символьный (CHAR) и строковый (STRING).

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

Значением данных символьного типа является любой символ из множества набора всех символов компьютера. Каждому символу соответствует порядковый номер (код) в диапазоне 0..255. Для кодировки символов первой половины диапазона (0..127) используется код ASCII(американский стандартный код для обмена информацией). Вторая половина символов с кодами 128..255 может быть различной. Для компьютеров фирмы IBM наиболее распространен альтернативный вариант кодировки символов.

При написании программ символьные данные могут быть представлены либо константами, либо переменными.

Символьная константа представляет собой одиночный символ, заключенный в апострофы, например:



Символьная переменная объявляется в разделе описания переменных:

Var

cr: char;

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

Ввод-вывод символьных данных

Для ввода символьных данных используется оператор READLN. Необходимо помнить, что нажатие любой небуквенной клавиши (<пробел>, и др.) будет значимым и восприниматься как символ.

Пример 1. Организовать ввод переменных:

a = ‘i’; b = ‘_’; c = ‘j’.

Var

a, b, c: char;

Begin

writeln(‘Введите исходные данные’);

readln(a,b,c);

………….

На клавиатуре символы набираются без апострофов:

i _ j

Символ клавиши выходит за пределы списка оператора READLN, поэтому он игнорируется.

Для вывода символьных данных используются операторы WRITE и WRITELN.

Пример 2. Организовать вывод указанных выше переменных на экран.

write(a,b,c);

writeln;

На экране будет отображено:

i _ j

Оператор WRITELN без списка используется для первода курсора к началу следующей строки.

Обработка символьных данных

Поскольку символы в Турбо Паскале упорядочены, к ним можно применять операции отношения (>, >=, <, <=, =, <>). Это дает возможность записывать логические выражения с символьными данными в условных операторах, например:

if ch =’!’ then ch := ‘.’;

Символьные данные могут использоваться и в операторе цикла FOR. Например, при выполнении операторов:

for ch := ‘a’ to ‘d’ write(ch);

writeln;

на экран выводится последовательность:

abcd

Курсор переводится к началу следующей строки.

Библиотека Турбо Паскаля содержит стандартные функции обработки символьных данных. Рассмотрим наиболее распространенные стандартные функции.

ORD(ch) – функция, возвращающая код символа ch.

Пример. Ord(‘a’) = 97.

CHR(N) – функция, преобразующая код N в соответствующий ему символ.

Пример. Chr(97) = ‘a’.

UPCASE(ch) – функция, преобразующая строчную латинскую букву в прописную.

Пример. UpCase(‘a’) = ‘A’.


    1. Строковый тип данных


Значением данных строкового типа является любая последовательность символов из набора символов компьютера(строка).

Строковая константа – это строка, заключенная в апострофы, например:

‘Турбо Паскаль 7.0’

Строковая переменная объявляется в разделе описания перемнных следующим образом:

Var

st: string [5];

В квадратных скобках указывается максимальное число символов в строке st.

Под значение строковой переменной в памяти компьютера отводится (МАХ+1) байт, где МАХ – максимальный размер строки. Еще один байт (с номером 0) выделяется для указания текущей длины строки. Это позволяет вводить строки перменной длины (в данном случае от 1 до 5 символов).

В Турбо Паскале разрешается объявлять переменную без указания максимального размера. Например:

Var

fam: string;

В этом случае устанавливается предельно допустимая длина строки, равная 255 символов.

Ввод-вывод строковых данных

При вводе строк, также как и символов, используется оператор READLN. Однако нажатие клавиши не является значимым символом. Клавиша формирует символ конца строки.

Пример. Организовать ввод фамилии студента.

Var

fam: string;

Begin

writeln(‘Введите фамилию и инициалы студента’);

readln(fam);

……………….

На клавиатуре строка набирается без апострофов, например:

Андреева_С.В.

Одновременно с вводом строки в нулевом байте ячейки fam устанавливается длина строки, равная 13 символам.

Вывод строк осуществляется с помощью операторов writeln и write. например, оператор

writeln(‘|’, fam:15, ‘|’);

Выведет на экран строку:

| Андреева С.В.|
Обработка строковых данных

К строковым данным применима операция отношения, напрмер:

‘Паскаль’ > ‘ПАскаль’,

так как код символа ‘а’ больше кода символа ‘А’.

К строкам можно применять операцию сцепления (обозначается символом ‘+’) – объединение нескольких строк в одну.

Пример 1

Program PS_1;

Var

fam, c, fam1: string;

Begin

writeln(‘Введите фамилию студента’);

readln(fam);

c := ‘ ‘;

fam1 := fam + c;

writeln(‘|’, fam1, ‘|’);

End.

На экран будет выведено:

|Андреева С.В. |

Большинство действий над строками реализуется с помощью стандартных процедур и функций. Рассмотрим две стандартные функции.

LENGTH(st) – возвращает длину строки st из нулевого байта, напрмер: Length(fam) = 13 символов.

COPY(st, i, n) – копирует из заданной строки st, начиная с ой позиции, n символов в подстроку.

Пример 2

Шапка экзаменационной ведомости имеет вид:


1)

2)

3)

4)



п/п

Ф.И.О.

Математика

Информатика

Химия


















Напишем программу вывода третьей строки.

Program PS_2;

Const

pr = ‘ ‘; {15 пробелов}

Begin

writeln(‘|п/п|’, pr, copy(pr, 1, 12), ‘|’,

copy(pr,1, 13), ‘|’, copy (pr, 1,7), ‘|’);

End.

На экран будет выведено:

|п/п)

||

||

||

||

||

В данной программе введен раздел определения констант CONST, в котором объявлена строковая константа pr, состоящая из 15 пробелов. При выводе из этой константы копируется нужное число пробелов.

Пример 3

Выравнять графу с фамилиями студентов по левому краю.

Program PS_2;

Const

pr = ‘ ‘; {15 пробелов}

Var

fam, fam1: string;

d: integer;

Begin

writeln(‘Введите фамилию студента’);

readln(fam);

d := 15 - Length(fam);

fam1 := fam + copy(pr,1,d);

writeln(‘|’, fam1, ‘|’);

End.

На экран будет выведено:

|Андреева С.В. |

Переменная d в программе определяет количество пробелов, которые надо присоединить к строковой переменной fam, чтобы получить длину строки fam1, равную 15 символам.
ГЛАВА 10. Записи и файлы входных данных

10.1. Понятие записи

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

Андреева С.В. 4 5 5

Данная запись состоит из четырех полей: первое поле - строкового типа (фамилия студента) и три числовых поля (оценки студента).

Описанию переменной типа запись предшествует определение с помощью раздела TYPE. Например, объявление записи строки экзаменационной ведомости выглядит следующим образом.

Type

Zap = record

fam: string;

m, inf, h: integer;

end;

Var

str: Zap;

Здесь zap – имя типа записи; fam, m, inf, h – поля записи;

str – переменная типа запись.

Служебные слова RECORD…END играют роль операторных скобок, внутри которых записываются поля с указанием их типов.

Для обращения к отдельным полям записи используется селектор записи.

Общий вид селектора записи:

< имя записи >.< имя поля >

Например, селекторы записи str записываются следующим образом: str.fam, str.m, str.inf, str.h.

10.2. Файлы входных данных

При большом объеме входных данных ввод с клавиатуры становится неэффективным, так как любые ошибки связаны с повторным вводом всех данных. Целесообразно для входных данных создать отдельный файл и хранить его на диске. В программе в этом случае с помощью специальных процедур организуется чтение входных данных из файла. Имя файла задается по тем же правилам, которые определены в MS DOS, только указывается стандартное расширение .DAT. Для создания файла данных можно воспользоваться любым текстовым редактором. Если файл небольшого объема, то удобно использовать редактор NC. Для вызова редактора NC надо нажать клавиши [+ ].

Файловая переменная

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

- Типизированные файлы, которые задаются описанием:

<файловая переменная>: FILE OF <тип компонент файла>;

Например, если компоненты файла имеют тип записи, то в разделе описания переменных можно объявить файл следующим образом:

Var

f: file of Zap;

f – файловая переменная.

- Нетипизированные файлы задаются типом FILE, например:

Var

f: file;

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

- Текстовые файлы задаются типом TEXT, например:

Var

f: text;

Текстовый файл представляет собой совокупность строк переменной длины. В конце каждой строки после нажатия клавиши формируется специальный признак EOLN (End Of Line). Число строк в текстовом файле может быть произвольным. В конце файла автоматически формируется признак EOF (End Of File).

Для проверки окончания чтения файла используется стандартная логическая функция EOF(f).



В дальнейшем ограничимся рассмотрением только текстовых файлов.

Доступ к файлам данных

Файл данных становится доступным программе после выполнения стандартной процедуры открытия файла:

ASSIGN (<файловая переменная>, <имя файла>);

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

<имя файла> - либо строка, либо переменная строкового типа.

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

ASSIGN(f, ‘Wed.dat’);

Инициация файла

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

RESET(<файловая переменная>);

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

Чтение данных из файла

Чтение файла осуществляется построчно с помощью оператора READLN, в котором указываются файловая переменная и список переменных ввода.

Пример. Пусть файл данных экзаменационной ведомости состоит из строк вида:

4 5 5 Андреева С.В.
Оператор: Readln(f, str.m, str.inf, str.h, str.fam);

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

Заметим, что поле fam записывается в конце строки. Это связано с тем, что при описании типа поля fam (string) не указан его максимальный размер, и, следовательно, конец поля должен быть зафиксирован клавишей .

10.3. Пример решения задачи создания документа

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

РЕЗУЛЬТАТЫ ОСЕННЕЙ СЕССИИ ГР.151



п/п

Ф.И.О.

Математика

Информатика

Химия

Средний балл

1

Андреева С.В.

4

5

5

x













20

Яковлев А.Н.

5

5

4

x

Ср.оценка по дисциплине

x

x

x

-


x - расчетные данные.

Решение

Решение задачи можно разбить на два этапа.

I. Создание файла входных данных вида:

4 5 5 Андреева С.В.

…………………………………..

5 5 4 Яковлев А.Н.

II. Составление программы обеспечивающей:

а) чтение и обработку файла;

б) вывод документа с расчетными данными по заданной форме.

Замечание. В программе необходимо предусмотреть задание входных данных типом запись.

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




1   2   3   4   5   6   7   8   9   10

Похожие:

Учебное пособие Новосибирск 2001 iconУчебное пособие географического практикума для обучающихся профильных классов Новокузнецк
Учебное пособие предназначено для обучающихся общеобразовательных и инновационных школ с углубленным изучением географии

Учебное пособие Новосибирск 2001 iconУчебное пособие Рекомендовано умо вузов России по образованию в области социальной работы
...

Учебное пособие Новосибирск 2001 iconУчебное пособие (для студентов) Тема: «Приемное отделение больницы»
...

Учебное пособие Новосибирск 2001 iconУчебное пособие включает программу для дошкольных образовательных...
Л18 Авдеева Н. Н., Князева О. Л, Стеркина Р. Б безопасность: Учебное пособие по основам безопасности жизнедеятельности детей старшего...

Учебное пособие Новосибирск 2001 iconМеталлы подгрупп
Щая химия в формулах, определениях, схемах. Справочное руководство. Под ред. В. Ф. Тикавого. Минск: Университетское, 1987; Глинка...

Учебное пособие Новосибирск 2001 iconКураков Л. П., Тимирясов В. Г., Кураков В. Л. К 93 Современные банковские...
К 93 Современные банковские системы: Учебное пособие. — 3-е изд., перераб и доп. — М.: Гелиос арв, 2000. — 320 с

Учебное пособие Новосибирск 2001 iconУчебное пособие для самоподготовки к практическим занятиям по нейрохирургии...
Учебное пособие предназначено для унификации требований к знаниям и умениям студентов при проведении практических занятий по нейрохирургии,...

Учебное пособие Новосибирск 2001 iconУчебное пособие для самоподготовки к практическим занятиям и самостоятельной работы
Учебное пособие для самоподготовки к практическим занятиям и самостоятельной работы студентов 4 курса педиатрического факультета...

Учебное пособие Новосибирск 2001 iconУчебное пособие для студентов Специальность: 09. 02. 03 Программирование в компьютерных системах
Химия. Самостоятельная внеаудиторная работа. Учебное пособие для студентов. Специальность: 09. 02. 03 Программирование в компьютерных...

Учебное пособие Новосибирск 2001 iconУчебное пособие для студентов медико-профилактического и стоматологического...
Учебное пособие для студентов медико-профилактического и стоматологического факультетов медицинских вузов по курсу «Общая хирургия»...


Литература




При копировании материала укажите ссылку © 2000-2017
контакты
lit.na5bal.ru
..На главную