Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тurbo Pascal 7+.doc
Скачиваний:
12
Добавлен:
24.12.2018
Размер:
10.09 Mб
Скачать

12.12. Строковый тип String. Работа со строками

Со строковым типом String мы познакомились в разделе 4.14.

Как можно сэкономить память, работая со строками? Если напишем VAR a :String, то Паскаль отведет под символы строковой переменной а 255 байт. Если мы не собираемся присваивать переменной b значений длиннее, например, 20 символов, то нужно написать VAR b :String[20]. В этом случае под символы переменной b в памяти будет отведено 20 байт.

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

Исходные данные

Операция

Результат

Пояснение

s1:='Moто'; s2:='роллер'

s3:=s1+s2

s3='Мотороллер'

Операция + над двумя строками просто соединяет две строки в одну

s5:='Мотороллер'

k:=Pos('poл', s5)

k=5

Функция Pos возвращает позицию, на которой находится строка 'рол' в строке s5

s3:='Мотороллер'

l:=Length(s3)

l=10

Функция Length (длина) выдает (возвращает) количество, символов в строке

s3:='астроном'

s4:=Copy(s3,3,4)

s4='трон'

Функция Сору возвращает часть строки длиной 4 начиная с третьего символа

s5:='Коробочка';

Delete(s5,4,2)

s5='Корочка'

Процедура Delete удаляет из строки s5 два символа начиная с четвертого

s6:='Рука'; s7:='баш';

Insert(s7,s6,3)

s6='Рубашка'

Процедура Insert вставляет в строку s6 строку s7 начиная с третьего символа

х:=2.73284

Str(x:4:2,s8)

s8='2.73'

Процедура Str преобразовывает число в строку; 4:2 - это желаемый формат числа (см. раздел 14.5)

s8='2.73'

Val(s8,x,0sh)

x=2.73

Процедура Val преобразовывает строку в число. Параметр Osh должен иметь тип Integer. Он имеет смысл при анализе ошибки в преобразовании

Процедура Str может вам понадобиться, например, вот в каком случае. Модуль Graph имеет возможность печатать на экране большими красивыми шрифтами. Но так печатает он только строковый тип. А в программе "Торпедная атака" у вас появится желание печатать красивым шрифтом счетчик подбитых кораблей, который, у вас описан как целочисленный. Вот тут и пригодится Str. Примеры использования Str и Val см. в разделе 15.6.

Если задана строка s:='Банка', то считается автоматически заданным массив символов с тем же именем: s[1]='Б', s[2]='a', s[3]='н', s[4]=к, s[5]='a'. Тогда после выполнения оператора s[3]:='p'> мы получим s='Барка'.

Строки можно сравнивать. Условие;s1=s2 считается выполненным, если обе строки абсолютно одинаковы, включая и пробелы.

Сравнение идет посимвольно слева направо. Поэтому считается, что 'панк' < 'парк', так как первый несовпадающий символ 'р' имеет больший номер, чем 'н'.

Задание 114

Среди детей встречается игра, заключающаяся в зашифровке своей речи "для секретности" за счет вставки в произносимые слова какого-нибудь словосочетания, например быр. Тогда вместо слова корова будет произнесено кобырробырвабыр. Составьте программу, которая распечатывает заданную строку, после каждой второй буквы вставляя быр.

Задание 115

Давайте поставим задачу шифрования текста более серьезно. Имеется строка текста. Требуется написать программу, которая зашифровывала бы ее в другую строку. Способов шифровки вы можете придумать сколько угодно. Попробуйте такой - заменять каждый символ текста символом, следующим по порядку в таблице ASCII. Тогда слово КОТ превратится в слово ЛПУ. Составьте, пожалуйста, и программу дешифровки. Когда вы познакомитесь с файлами, вы сможете уже зашифровывать и дешифровывать не отдельные строки, а целые тексты. 3 том числе и ваши паскалев-ские программы.