Ограниченный (интервальный) тип данных
В некоторых задачах использование порядковых типов данных требуется ограничить. Например, для возраста ученика из типа Integer или Byte используется только промежуток от 3 лет (для вундеркинда) до 20 лет (для второгодника). Если мы вместо стандартного типа введём интервал, то Паскаль будет помогать нам следить за его нарушением (выходом за границы интервала).
![]() | ![]() |
или
Интервальный тип можно задать не только на базе числового типа, но и на базе других порядковых типов данных. Например:
Над данными интервального типа можно делать все те же операции, что и над базовым типом, из которого он был создан.
Строки
Кроме отдельных символов в программах используют символьные строки. Символьная строка, находящаяся непосредственно в программе, называется строковой константой и заключается в одинарные кавычки (апострофы). Например: ’Жили у бабуси два весёлых гуся’. Длина строки – не более 255 символов. Строковые переменные для хранения символьных строк описываются так:
Var
s:string;
b:string[30];
При первом способе переменной s отводится место для 255 символов. Даже если в переменную s поместили коротенькую строку, всё равно зарезервировано место для 255 символов, из которых бόльшая часть не используется. Второй способ более экономный. Переменной b отводится место для 30 символов. Если попытаемся в b занести более длинную строку, из неё запишутся первые 30 символов, остальные будут потеряны. Попытка использовать строку длиннее, чем 255 символов приводит к сообщению об ошибке «Переполнение строки».
Строки можно присваивать, вводить с клавиатуры. Например:
fam:=’Петров’;
write(’Введите Ваше имя ’); readln(nam);
Над строковыми переменными и константами можно выполнять такие действия:
1. Определять длину строки: dl:=length(a);. Имеется в виду не место, отведённое для строки при объявлении, а сколько в ней на самом деле содержится символов.
2. Склеивать две строки (с помощью знака «+» ). Например, склеив строки a:=’за’; и b:=’мок’;, мы получим c:=a+b; - слово «замок».
3. Выделять из строки один символ (с помощью квадратных скобок). Например, a:=’Семафор’; c:=a[5]; - получим символ ‘ф’.
4. Выделять часть строки (копировать подстроку). Например, s:=’Информатика’; s1:=copy(s,3,5); . В переменную s1 из строки s скопируется 5 символов, начиная с 3-го, то есть, слово «форма».
5. Удалять часть строки: a:=’королева’; delete(a,5,2); . Удалятся 2 символа, начиная с 5-го. Получим в переменной a слово «корова».
6. Вставлять одну строку внутрь другой: a:=’кус’; b:=’акт’; insert(b,a,2);. Получим в переменной a слово «кактус».
7.Искать одну строку внутри другой (позицию, начиная с которой подстрока входит в строку):
b:=’Я шёл рядом с папой по пути домой’; a:=’дом’; m:=pos(a,b); Хотя слово «дом» есть и в слове «рядом», и в слове «домой», найдено будет только первое вхождение. В переменную m будет занесено число 9. Если функция POS не обнаружила одну строку внутри другой, будет выдан 0. Поэтому в задачах, если нас не интересует, с какой позиции найдена подстрока, а только факт её вхождения, можно проверять так: if pos(a,b)>0 then ...
8. Если число записано в кавычках, то это не число, а строка, состоящая из символов-цифр. Например, из строки ’Длина удава – 38 попугаев’ можно выделить подстроку ‘38’, но с ней нельзя будет производить вычислений, пока не превратим её в настоящее число. Сделать это можно так: a:=’38’; val(a,x,k);, где x – числовая переменная для результата, а
k – переменная для кода ошибки. Если в текстовой строке число записано правильно, то код ошибки будет равен 0. Если неправильно (например, содержит буквы или другие символы, не используемые в числах, или, к примеру, тип этого числа не совпадает с типом переменной x), то k будет содержать номер первого символа с ошибкой. Для нас важно, что k>0, что легко проверить. Аналогично работают функции x:=strtoint(a); (строку – в целое число) и x:=strtofloat(a); (строку – в дробное число). Они более просты в использовании, но при ошибке, в отличие от val, программа прерывается.
9. Наоборот, если мы вычислили какое-либо число, то его можно преобразовать в строку, чтобы выполнять с ним строковые операции (например, склейку…). Сделать это можно так: x:=3*d+15; str(x,a); s:=’Длина удава ’+a+’ см.’;. Здесь a – строка, полученная из числа x. Некоторое неудобство доставляют дробные (вещественные) числа. Как и при печати эти числа записываются в строку в формате с фиксированной точкой. Чтобы указать другой формат, можно написать так: str(x:5:2,a); . Здесь 5 – точность числа (количество оставляемых значащих цифр. Остальные округляются), а 2 – количество десятичных знаков (после точки). Для этих же целей можно воспользоваться функциями a:=inttostr(x); (целое число – в строку) и a:=floattostr(x); (дробное число – в строку).
10. С помощью функции uppercase(s); можно преобразовать все строчные буквы в строке s в заглавные (на остальные символы эта функция не действует), а с помощью lowercase(s);- заглавные в строчные.
Строки можно сравнивать с помощью знаков ’>’,’>=’,’<’,’<=’,’=’,’<>’. При этом строки сравниваются посимвольно до первого же несовпадающего символа. Бóльшей считается строка, у которой этот несовпадающий символ имеет бóльший код (вне зависимости от того, какие символы в этих строках находятся дальше и сколько их).
В качестве примера использования символов и строк рассмотрим такие задачи:
Определить, сколько раз во введённой строке a содержится введённое слово b.
Определить, каких букв во введённой строке больше, русских заглавных или русских маленьких (строчных).
Дата добавления: 2014-12-18; просмотров: 969;