Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Текст лекций.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
1.59 Mб
Скачать

8.2. Особенности ввода информации строкового вида

Напомним, что переменная типа string может быть объявлена как произвольной, так и ограниченной длины. Эти различия необходимо учитывать при вводе информации.

  • Если в списке ввода имеется одна переменная типа string, все символы, набранные на клавиатуре до нажатия клавиши Enter, будут записаны в эту переменную,

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

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

Проиллюстрирует сказанное примерами.

Frame130

Задача корректного ввода последовательности «строка и затем число» может быть решена следующим образом:

Frame131

В операторе while здесь используется новый тип данных – множество. Поскольку этот тип данных будет рассматриваться позже, поясним смыл выражения «not (txt[i] in [’0’..’9’])».

Здесь

  • [’0’..’9’] - множество символов, изображающих цифры;

  • inоперация принадлежности символа txt[i] указанному множеству, которая принимает значение true, если проверяемый символ – цифра и false в противном случае;

  • notоперация логического отрицания.

Отсюда, выражение «not (txt[i] in [’0’..’9’])» принимает значение true, если символ – не цифра.

Вопросы для самоконтроля

  1. Что представляет собой тип данных string?

  2. Какими способами можно объявить переменную строкового типа?

  3. В каком диапазоне может изменяться длина строки в Турбо-Паскале?

  4. Каким образом можно рассматривать строку с позиций обработки?

  5. Сколько байтов в памяти программы занимает величина строкового типа?

  6. Какая функция позволяет получить значение длины строки?

  7. Какие операции (функции) над строками имеются в Турбо-Паскале?

  8. В чем особенности ввода информации строкового типа из текстового файла или с клавиатуры?

9. Типы данных, задаваемых пользователем

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

9.1. Множества

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

В Турбо Паскале в качестве базовых могут использоваться порядковые типы, мощность которых не превышает 256-ти значений. Кроме того, порядковые значения верхней и нижней границы базового типа не должны выходить за пределы диапазона от 0 до 255. Поэтому, в качестве базовых типов множеств не могут использоваться Shortint, Integer, Longint, Word.

Операции, допустимые для работы с множествами приведены в таблице:

Обозначение в Паскале

Действие

Тип результата

*

Пересечение

Множество

+

Объединение

Множество

Разность

Множество

in

Принадлежность элемента множеству

boolean

<=

Является подмножеством

boolean

>=

Включает подмножество

boolean

Более подробную информацию о множествах в Паскале можно найти в рекомендованной литературе.

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

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

Frame132

Используемое в программе множество при необходимости можно получить из двух других множеств операцией объединения (сложения):

Frame133

Возможно также и обратное действие: требуемое множество получить операцией разности множеств:

Frame134