Ограниченный (интервальный) тип данных
В некоторых задачах использование порядковых типов данных требуется ограничить. Например, для возраста ученика из типа 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; просмотров: 948;