Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Символьный тип Char. Работа с символами

С символьным типом Charмы познакомились в 5.6. Значением символьной переменной являются символы из таблицы ASCII.

Для работы с символами вам достаточно кроме вышеизложенных знать еще одну функцию - Chr. Выполнив оператор c1:=Chr(69), Паскаль присваивает c1 значение символа, соответствующего номеру 69 по таблице ASCII, т.е. латинского 'Е'.

Задание 112: Угадайте, что напечатает компьютер, выполнив оператор Write(Chr(Ord(Succ(Pred('+')))))

Задание 113: Распечатайте часть таблицы ASCII, конкретнее - символы, соответствующие кодам 32-255. Обратите внимание:

1) на символы так называемой псевдографики, применяемые для вычерчивания таблиц в текстовом режиме;

2) на разрыв в расположении строчных букв русского алфавита.

 

Использование клавиш передвижения курсора для управления компьютером с клавиатуры.

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

if ReadKey=’R’ then…,

подразумевая какие-либо действия в случае, если нажата клавиша R. Если вы знаете коды клавиш по таблице ASCII, то вы можете то же самое записать по другому:

if ReadKey=#82 then…,

так как код клавиши R равен 82. Этот способ более универсальный, так как коды в буфер клавиатуры посылают и те клавиши клавиатуры, которым не приписано никакого символа. Например, клавиша Tab посылает код 9.

Итак, нам хотелось бы для управления компьютером использовать и другие клавиши, например, ® ­ ¯. Сложность в том, что в отличие от алфавитных и цифровых клавиш, эти и некоторые другие клавиши и комбинации клавиш посылают в буфер клавиатуры не один код, а два, причем первый из них – ноль. Например, клавиша ­ посылает в буфер пару (0,72), клавиша Insert посылает в буфер пару (0,82). Эта парочка называется расширенным кодом. Вот что будет в буфере, если мы нажмем подряд шесть клавиш: R R R ­ Insert Insert:

                               

Если вы помните механику работы буфера клавиатуры, то можете умелым использованием функции ReadKey выудить факт нажатия нужной вам клавиши. Так, если вы хотите определить, была ли нажата Insert, то можете записать такой фрагмент:

kl:= ReadKey; if kl =#0 then if ReadKey=#82 then…

При этом компьютер не спутает невинную клавишу R с клавишей Insert.

 

Вот коды, которые посылают некоторые клавиши в буфер клавиатуры:

­ 0 72 ¯ 0 80   0 75 ® 0 77
Page Up 0 73 Page Down 0 81 Home 0 71 End 0 79
Insert 0 82 Delete 0 83 BackSpace 8 Esc 27
Tab 9 Enter 13 пробел 32 серый + 43
F1 0 59 F2 0 60 F3 0 61 F4 0 62
F5 0 63 F6 0 64 F7 0 65 F8 0 66
F9 0 67 F10 0 68 F11 0 133 F12 0 134

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

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

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

Исходные данные Операция Результат Пояснение
s1:='Мото'; s2:='роллер' s3:=s1+s2 s3='Мото-роллер' Операция + над двумя строками просто соединяет две строки в одну
s5:='Мото-роллер' k:=Pos('рол',s5) k=5 Функция Posвозвращает позицию, на которой находится строка 'рол' в строке s5
s3:='Мото-роллер' l:=Length(s3) l=10 Функция Length(длина) выдает (возвращает) количество символов в строк
s3:='астро-ном' s4:=Copy(s3,3,4) s4= ‘трон’ Функция Copyвозвращает часть строки длиной 4, начиная с третьего символа
s5:='Коро-бочка'; Delete(s5,4,2) s5='Коро-чка' Процедура Deleteудаляет из строки s5 два символа, начиная с четвертого
s6:='Рука'; s7:='баш'; Insert(s7,s6,3) s6='Руба-шка' Процедура Insertвставляет в строку s6 строку s7, начиная с третьего символа
x:=2.73284 Str(x:4:2,s8) s8='2.73' Процедура Strпреобразует число в строку. 4:2 – это желаемый формат числа (см. 14.5)
s8='2.73' Val(s8,x,Osh) x=2.73 Процедура Valпреобразует строку в число. Параметр Osh должен иметь тип Integer. Он имеет смысл при анализе ошибки в преобразовании

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

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

Строки можно сравнивать. Условие s1=s2 считается выполненным, если обе строки абсолютно одинаковы, включая и пробелы. Сравнение идет посимвольно слева направо. Поэтому считается, что ‘панк’ < ‘парк’, так как первый несовпадающий символ ‘р’ имеет больший номер, чем ‘н’.

 

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

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




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 592; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.