Урок №30
Обработка символьных данных.
Теория:
Для вывода кода на экран используется функция ord(x), при условии, что символ введен с клавиатуры. В программе символы заключаются в апострофы. Например, R:=’#’.
С символами можно совершать операции сравнения, при этом будут сравниваться коды символов.
Например, R:=’Привет!’.
Не — NOT — логическое отрицание (меняет значение операнда на противоположное).
И — AND — конъюнкция (true, если оба операнда true).
ИЛИ — OR — дизъюнкция (false, если оба операнда false).
Будем полагать, что текст — это произвольная последовательность символов некоторого алфавита. Алфавитом может служить любое множество символов. Символьный тип данных служит для представления символа, который есть на клавиатуре. Всем имеющимся на клавиатуре символам ставится в соответствие целое число — код символа. Всего кодируется 256 символов. В таблице кодов среди всех символов можно выделить следующие четыре группы:
1) цифры от 0 (код 48) до 9 (код 57);
2) латинские прописные буквы от «А» (код 65) до «Z» (код 90);
3) латинские строчные буквы от «а» (код 97) до «z» (код 122);
4) русские прописные буквы от «А» (код 128) до «Я» (код 159).
Символы в пределах каждой из групп следуют друг за другом в алфавитном порядке и их коды изменяются при этом на 1. Каждый символ строковой величины занимает 1 байт памяти.
Данные символьного типа могут быть представлены двумя способами:
1) графическим, когда соответствующий символ записывается в апострофах, например: ‘+’ (символ «плюс»);
2) с помощью целочисленного кода, когда рядом со знаком целочисленного кода # указывается целое число — код данного символа в таблице ASCII. Например, #65 — представление латинской прописной буквы «А» с помощью целочисленного кода.
Строкой символов, или символьной (строковой, текстовой) константой, будем называть последовательность символов, заключенную в кавычки. Среди строк пустая строка играет ту же роль, что ноль среди чисел. Максимальная длина текстовой строки — 255 символов.
В Паскале существует тип данных, предназначенный для обработки слов (цепочки символов). Такой тип данных называется строковым (тип string). Строки выводятся на экран посредством стандартной процедуры write {writeln) и вводятся с клавиатуры с помощью стандартной процедуры read {readlri).
Объявление данных типа string:
· если данные являются константами:
const <имя_переменной>=<значение>;
· если данные являются переменными:
var <имя_переменной>: string;
<имя_переменной>: string[20];
В квадратных скобках указывается максимальная длина строки. Если длина строки не указана, то она считается равной 255 символам — максимально возможной длине.
Операции над строками.
Для строк определена операция объединения (сцепления), которая обозначается знаком + и объединяет несколько строк в одну.
Например:
A:=’ Новосибирск’;
B:=’ столица Сибири’
С:=A+’- ’+B+’!’
Переменная С иметь значение ‘Новосибирск- столица Сибири!’
Операции отношения (сравнения двух строк) =,<, >, >=,<=, <> .В результате сравнения двух строк получается логическое значение (true или false). Сравнение происходит слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символов (кодировки).
Например:
· ‘строка'<>’строки'(верно, т.к. не совпадают последние символы),
· ‘Abc'<‘abc'(отношение истинно, т.к. код символа ‘A’ равен 65 в десятичной системе счисления, а код символа ‘a’ — 97),
· ‘год’>’век'(отношение верно, т.к. буква ‘г’ в алфавите стоит после буквы ‘в’, а, следовательно.
· ‘кот ’=’ кот’ (отношение истинно, т.к совпадают все символы)
Стандартные функции и процедуры.
Для работы с типом string определены следующие встроенные процедуры и функции:
|
Стандартные функции работы со строками |
|||
|
Функция |
Что возвращает |
Типы аргументов |
Тип функции |
| length(S) | длину строки S | S: string | integer |
| Pos(Sl, S) | номер символа, начиная с которого фрагмент S1 входит в строку S, или 0, если S1 не входит в S | S, S1: string | integer |
| copy(S, n, m) | копирует m символов из строки S, начиная с n | S: string;
n, m: integer |
string |
| upcase(S[i]) | прописной латинский символ | char | char |
|
Стандартные процедуры работы со строками |
|||
|
Процедура |
Что делает |
Тип аргументов |
Где находится результат |
| Delete (S, n, m) | удаляет m символов из строки S, начиная с n | S: string;
n, m: integer; |
в S |
| Insert (Sl, S ,n) | вставляет фрагмент S1 в строку S, начиная с символа n, отодвигая символы вправо | S, S1: string;
n: integer; |
в S |
| Str (a, S) | преобразует число а в строку S | a: real, integer; S: string; | в S |
| val(S, a, code) | преобразует строку S, если возможно, в число а с флагом code | a: real, integer; code: integer;
S: string; |
в а и code |
IV. Первичная проверка усвоения знаний и закрепление знаний
Учитель решает задачи на интерактивной доске, учащиеся решают в тетрадях.. Идём обсуждение правильного решения задач.
· Определить длину строки «Информатики».
K=length(‘Информатики’); K=11
· Получить из слова » Информатики » слово «форма».
S:=’Информатика’
S1:=copy(S, 3, 5)
S1=’форма’
· Чему равна строка M:= copy (S,1,4)
S2=’инфо’
· Получить из слов «Язык», «Turbo», «Pascal» фразу «Язык Turbo Pascal».
A:=’ Язык’;
B:=’ Turbo’
D:= ‘Pascal’
С:=A+’ ’+B+’ ’+D
· Какова позиция буквы «и» в слове «Книга».
S:=’ Книга ’
S1:= ‘и’
K1=Pos(Sl, S); K1=3
· Преобразовать «a» в «A».
S1:=upcase(‘а’)
· Чему станет равной строка M1 после выполнения операторов?
М:= ’моток’
М1:=insert(‘ло’,M,3)
M1=’ молоток’