Урок 15 апреля

Символьный тип данных. Строки символов. 

До этого времени мы обходились числовыми данными: целыми (integer) и вещественными(real).Пришло время разобраться с символами и строками.

Символьный тип данных: сhar

 Все символы закодированы в таблице символов и именно с ее помощью и распознаются значения нажатых клавиш. Каждый символ занимает 1 байт памяти. 
таблица ASCII
Для работы с символами нам достаточно двух функций: СHR и  ORD.
CHR- определяет  символ по коду. Пример: write(chr(65)); выведет букву А.
ORD-определяет  код по символу. write(ord('A')); выведет 65 (номер буквы А в таблице)
Программа 1
var 
  c: char;
  code: integer;
begin
  readln(c);
  code := Ord(c);
  writeln('Код символа ',c,' равен ',code);
  readln(code);
  c := Chr(code);
  writeln('Символ с кодом ',code,' - это ',c);
end.
Строковый тип данных:string
Строка — это последовательность символов. Количество символов в строке называется ее длиной. Длина строки может находиться в диапазоне от 0 до 255. 
Описываем строку с явным или неявным заданием ее длины, вводим и выводим как обычно. Для работы со строками будем использовать 4 функции и 4 процедуры.
Программа 2
var
s:string;
s1:string[30];
begin
  read(s);
  s1:='It is a wonderful life!';
  write(s, ' ', s1);
end. 

Функции и процедуры работы со строками

Функции
Процедуры
+
Слияние строк
DELETE
Удаление символов из строки
LENGTH
Длина строки
INSERT
Вставка символов в строку
COPY
Копирование части строки
STR
«Превращение» числа в строку
POS
Подстрока в строке
VAL
«Превращение» строки в число

Функция Copy(S, Pozition, N) выделяет из строки S подстроку длиной N символов, начиная с позиции Pozition. Здесь N и Pozition  - целочисленные выражения.
Значение S
Выражение
Результат
'Мама мыла раму'
Copy(S, 6, 4)
'мыла'
'Маша ела кашу'
Copy(S, 1, 8)
'Маша ела'

Функция Concat(S1, S2, …, SN) выполняет сцепление (конкатенацию) строк S1, S2, …, SN в одну строку.
Выражение
Результат
Concat('Маша ', 'ела ', 'кашу')
'Маша ела кашу'

Функция Length(S)определяет текущую длину строки S. 
Результат - значение целого типа.
Значение S
Выражение
Результат
'test-5'
Length(S)
6
'(A+B)*C'
Length(S)
7

 Функция Pos(S1, S2) обнаруживает первое появление в строке S2 подстроки S1. Результат  -  целое число, равное номеру позиции, где находится первый символ подстроки S1. Если в S2 подстроки S1 не обнаружено, то результат равен 0.
Значение S2
Выражение
Результат
'abcdef'
Pos('cd', S2)
3
'abcdcdef'
Pos('cd', S2)
3
'abcdef'
Pos('k', S2)
0

Процедура Delete(S, Poz, N) - удаление N символов из строки S, начиная с позиции Poz. В результате выполнения процедуры уменьшается текущая длина строки в переменной S.
Исходное значение S
Оператор
Конечное значение S
'abcdefg'
Delete(S, 3, 2)
'abefg'
'abcdefg'
Delete(S, 2, 6)
'a'

Процедура Insert(S1, S2, Poz) - вставка строки S1 в строку S2, начиная с позиции Poz.
Исходное значение S
Оператор
Конечное значение S
'РС'
Insert('IBM-', S2, 5)
'IBM-PC'
'Рис. 2'
Insert('N', S2, 6)
'Рис. N 2'

Процедура  Str (x,s)  преобразует число X в строку s 
Пример: K:=5; str(k,s3);

Процедура  Val(s,v,code) преобразует строку s в значение числовой переменной v, 
(если это возможно , то code - 0 иначе Code<>0)
Пример: S:='1234', val(s,k,c);

Домашнее задание.

1. Проверить работоспособность программ 1 и 2 в Паскале.
2. Пройти проверку знаний по этому разделу.
Перед заполнением форму ответа внимательно прочтите текст параграфа.
Я вижу ваши ответы и засчитаю первый ответ.