
- •О.Ф. Власенко, и.В. Беляева символы и строки в языке turbo pascal
- •Оглавление
- •Введение
- •Символьный тип Символьный тип char
- •Функция Ord
- •Функция Chr
- •Функция Succ
- •Функция Pred
- •Функция UpCase
- •Процедура Inc
- •Процедура Dec
- •Примеры использования стандартных процедур и функций обработки символов
- •Строки Встроенный тип string
- •Операции над строками string
- •Правила сравнения двух строк
- •Стандартные процедуры и функции для работы со строками string
- •Процедура Delete
- •Процедура Insert
- •Процедура Str
- •Процедура Val
- •Функция Length
- •Функция Concat
- •Функция Copy
- •Функция Pos
- •Примеры использования стандартных процедур и функций обработки строк
- •Множества
- •Операции над множествами
- •Пример использования множеств
- •Пример Обработки массива строк Задача “Поиск символов в тексте”
- •Задача “Поиск слов в строке и удаление символов”
- •Лабораторная работа “обработка строк” Цель работы
- •Общее задание
- •Простые варианты
- •Средние варианты
- •Сложные варианты
- •Список литературы
- •Символы и строки в языке turbo pascal
- •432027, Г. Ульяновск, Сев. Венец, 32.
Операции над строками string
В Turbo Pascal над строками типа String определены операция сравнения и операция склеивания. Операция склеивания обозначается знаком +. Кроме этого, для строк можно использовать оператор присваивания :=.
Продемонстрируем использование операций на примере:
var
a, b, c: string; {Три строки}
name: string; {Имя – тоже строка}
begin
a := 'Ваня'; {В A занесли строку ‘Ваня’}
b := 'Ира'; {В B занесли строку ‘Ира’}
c := a + b; {В C занесена строка ‘ВаняИра’}
c := a + ' + ' + b; {В C занесена строка ‘Ваня + Ира’}
readln(name); {Требуется ввести имя}
if name = 'пароль' {Если имя ‘пароль’}
then writeln('Свой!!!') {Выводится сообщение}
else
begin {Иначе}
writeln('Чужак!!!!!'); {Сообщение выводится }
Halt; {И на этом программа завершает свою работу}
end;
readln(name); {Снова вводится имя}
if name<>'вася' {Если ввели строку, не совпадающую
со строкой ‘вася’}
then writeln('Нет, ты не Вася...') {Сообщается об этом}
else writeln('Здравствуй, Вася!!!'); {Иначе –
приветствуется Вася}
if a<b {Сравниваются строки ‘Ваня’ и ‘Ира’}
{Поскольку строки сравниваются не по длине, а по содержимому,
то оказывается, что строка ‘Ваня’ меньше чем строка ‘Ира’}
then writeln('''',a,'''<''',b,'''') {Будет выведено:
'Ваня'<'Ира'}
else writeln('Неправда, что ''',a,'''<''',b,'''');
a := 'кремний'; {В A и B заносятся новые строки}
b := 'крем';
if a > b {Сравниваются A и B – здесь A больше B}
then writeln('''',a,'''>''',b,'''') {Поэтому будет
выведено ‘кремний’>’крем’}
else writeln('Неправда, что ''',a,'''>''',b,'''');
if a <= b {‘Кремний’ явно не меньше и не равен ’крем’}
then writeln('''',a,'''<=''',b,'''')
else writeln('Неправда, что ''', a, '''<=''', b, '''');
{Следовательно, будет выведено
'Неправда, что 'кремний'<='крем'}
if a >= b {Поскольку ‘кремний’ больше, чем ’крем’}
then writeln('''',a,'''>=''',b,'''') {Будет выведено
‘кремний’>=’крем’}
else writeln('Неправда, что ''', a, '''>=''', b, '''');
end.
Отдельного пояснения требуют операции сравнения строк.
Правила сравнения двух строк
При сравнении двух строк (назовем их A и B) последовательно сравниваются соответствующие символы двух строк – первый с первым (A[1] с B[1]), второй со вторым (A[2] с B[2]) и так далее (A[i] с B[iI]). Сравнение производится по значению ASCII кодов соответствующих символов, то есть условие равенства двух символов выглядит примерно таким образом: ord(A[I])=ord(B[I]). Если первые символы равны, то сравниваются вторые. Если равны и вторые, тогда сравниваются третьи. И так далее до тех пор, пока либо не попадется пара неодинаковых символов, либо обе строки не закончатся одновременно. Если встретилась пара неодинаковых символов, тогда большей считается та строка, символ которой в несовпадающей паре имеет больший ASCII код. Если строки закончились одновременно, то они считаются равными.
Пример:
‘Ложка’=’Ложка’ (все символы совпадают)
‘Китай’<’китай’ (ord(‘К’)<ord(‘к’))
‘к рошка’<’крошка’ (ord(‘ ’)<ord(‘р’))
‘тол’<’толстый’ (все три символа ‘тол’ совпали с ‘толстый’,
но ‘тол’ короче, чем ‘толстый’)
‘ангел’>’angel’ (код русской ‘а’ больше, чем код латинской ‘a’)