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

Содержание

Слайд 2

Каждая переменная символьного типа может принимать значение только одного символа. Все символы

Каждая переменная символьного типа может принимать значение только одного символа. Все символы
упорядочены в соответствии с принятым в ЭВМ коде (например ASCII).
При этом порядковый но­мер символов называется кодом (например, код латинского символа 'А '  равен 65; символа '3' равен 51). Для символьных данных не определены никакие арифметические операции, но они могут сравниваться по своим кодам, участвовать в чтении, печати, операторах присваивания.

Тип  данных CHAR

05.05.2022

Слайд 3

Тип  данных CHAR

Строка - это последовательность символов. Строку можно представить как массив,

Тип данных CHAR Строка - это последовательность символов. Строку можно представить как
элементы которого имеют тип CHАR. Например: BUK: array[1..17] of char; Массив BUK-массив символов, который содержит 17 символов. Если символов меньше, то строка дополняется пробелами справа. В про­тивном случае возникает ошибка несоответствия типов. Так как массивы символов являются обычными массивами с элементами типа CHAR, они обладают всеми свойствами массивов.

05.05.2022

Слайд 4

Пример 1: Из набора 10 любых символов напечатать только заглавные английские буквы

Пример 1: Из набора 10 любых символов напечатать только заглавные английские буквы
и их коды.

program pr1; type sl =array [1..10] of char; var   s: sl; {описание массива символов} i: integer; begin writeln ('введите 10  символов'): for i:=1 to 10 do  readln (s[i]);          {ввод массива} for i:=1 to 10 do if (s[i]>=’A’) and (s[i]<= ‘Z’) then writeln (‘Символ :’, s[i], ‘ его код =’, ord (s[i]); readln; end.

05.05.2022

Слайд 5

05.05.2022

Пример 2: Из набора 10 любых символов напечатать только заглавные русские буквы

05.05.2022 Пример 2: Из набора 10 любых символов напечатать только заглавные русские
и их коды. САМОСТОЯТЕЛЬНО

Слайд 6

program pr1;
var
str: string;
i: integer;
begin
str := 'ABdkявCDEf';
writeln(str);
for i :=

program pr1; var str: string; i: integer; begin str := 'ABdkявCDEf'; writeln(str);
1 to 10 do
if str[i] in ['A'..'Z'] then
writeln(str[i], ' ', Ord(str[i]));
readln;
end.

05.05.2022

Пример 3: Набрать программу. Посмотреть, что получилось.

Слайд 7

Тип данных STRING

Переменная типа STRING может принимать значения переменной длины. Максимально

Тип данных STRING Переменная типа STRING может принимать значения переменной длины. Максимально
возможная длина переменной 255 символов. Например: str: STRING[200]; ow: STRING[10]; В скобках указывается максимальная длина для данной переменной. Для ввода значений типа STRING необходимо использовать READLN, а не READ. За один раз может быть введена только одна строка. Две строки можно сравнивать, используя операции отношения (сначала сравниваются самые левые символы, если они равны, то сравниваются следующие).

05.05.2022

Слайд 8

Операции над строками:

Операция сцепления (+)
B:=’Вася’
M:=’Эх,’+B+’,’+B+’!’
M=‘Эх, Вася, Вася!

Операции над строками: Операция сцепления (+) B:=’Вася’ M:=’Эх,’+B+’,’+B+’!’ M=‘Эх, Вася, Вася!

Слайд 9

Операции отношения
(сравнения двух строк) =,<, >
Сравните (поставьте знак):
‘Иванов’ ‘Иванова’
‘Моряк’ ‘Море’
‘оно’

Операции отношения (сравнения двух строк) =, Сравните (поставьте знак): ‘Иванов’ ‘Иванова’ ‘Моряк’
‘она

<

>

<

Операции над строками:

Слайд 10

1) Функция LENGTH C:=LENGTH(str); Переменной С будет присвоено целое значение, показывающее количествo символов

1) Функция LENGTH C:=LENGTH(str); Переменной С будет присвоено целое значение, показывающее количествo
в строковой переменной str .
2) Функция СОNCAТ - сцепление строк в порядке их перечисления. str:=CONCAT(st1,st2,...,stN);str-переменная типа STRING, состоящая из строк st1,...,stN.
3) Функция POS P:=POS (st1, st2); Р-целое число, показывающее номер позиции, с которой начина­ется строка st1 в строкe st2.
x:= pos(‘Саша’, ‘Шла Саша по шоссе.’)
x=5
4) Функция COPY S1:=COPY( str, I, J); Sl-символьная подстрока, выделенная из строки str с позиции I, длиной J символов.
S:=’Информатика’
M:=copy(S,1,4);
M=‘Инфо’

Cтандартные функции:

05.05.2022

Слайд 11

5) Процедура DELETE(Str, I, J); Из строки str удаляется J символов, начиная

5) Процедура DELETE(Str, I, J); Из строки str удаляется J символов, начиная
с I позиции.
М:=’Мой родной город’
delete(M,5,7);
M=‘Мой город’
6) Процедура INSERT(Str1, Str2, I); Строка Str1 вставляется с I позиции в строку Str2.
М:=’моток’
insert(‘ло’,M,3);
M=‘молоток’
7) Процедура STR (V, S1); Числовое значение переменной V преобразуется в строку символов и записывается в строку S1.
8) Процедура VAL (S1, V, C);
Строковое выражение S1 преобразуется в величину целочислен­ного или вещественного типа и записывается в переменной V . Если при  этом ошибок не обнаруживается, то С будет равно 0 . В противном  случае значение С будет равно номеру позиции пер­вого ошибочного символа и V будет неопределено. Строка S1 не должна содержать незначащих пробелов, перемен­ная V может быть целой или вещественной, а переменная С - только целой .

Cтандартные процедуры :

05.05.2022

Слайд 12

Пример 4: Подсчитать количество слов во введенной с клавиатуры строке.

program pr2; var s:

Пример 4: Подсчитать количество слов во введенной с клавиатуры строке. program pr2;
string[30]; kol, i, n: integer; begin writeln ('введите строку'); readln (s); kol:=0;          {счетчик количества слов} n:= length(s);            {определяем длину введенного текста} s:= concat('  ',s); {добавляем пробел к первому слову} for i:=1 to n do if (copy (s,i,1)='  ') and (copy (s,i+1,1)<>' ') then  kol := kol+1;{подсчет количества слов} writeln (s,'  количество слов= ',  kol); readln; end.

05.05.2022

Слайд 13

Пример 5. Набери программу. Прочитай, что получилось.

Пример 5. Набери программу. Прочитай, что получилось.

Слайд 14

Практическая работа «Программирование обработки строк символов»

05.05.2022

Практическая работа «Программирование обработки строк символов» 05.05.2022

Слайд 15

№1. Дана переменная s строкового типа данных (в дальнейшем будем называть строка).

№1. Дана переменная s строкового типа данных (в дальнейшем будем называть строка).
Надо определить, сколько слов в предложении (словом считать набор символов, разделенных пробелами. Исключения составят первое и последнее слова). При этом считается, что подряд не может идти боле одного пробела. В конце и в начале строки пробелов нет.
Решение. Т.к. слово заканчивается пробелом, то для того, чтобы определить количество слов, достаточно подсчитать количество пробелов в строке

05.05.2022

Слайд 16

05.05.2022


05.05.2022

Слайд 17

№2. Удалить из строки все буквы ‘r’.

05.05.2022

№2. Удалить из строки все буквы ‘r’. 05.05.2022

Слайд 18

№ 3. В строке, после каждой буквы ‘a’ добавить букву ‘h’.

Решение.

№ 3. В строке, после каждой буквы ‘a’ добавить букву ‘h’. Решение.
В этой строке буквы ‘a’ не удаляются, поэтому нельзя воспользоваться тем же циклом. Попробуем снова расписать действия. При этом надо учесть, что нужные буквы могут находиться в строке где угодно, поэтому просмотреть надо всю строку.
Поставим указатель на первый символ (i:=1).
Пока просматриваемый символ не перешел за последний, делай:
1) если просматриваемый символ равен ‘a’, тогда А) добавь ‘h’ в строку после него;
В) передвинь указатель с ‘a’ на ‘h’, то есть увеличь его на 1.
2) перейди к следующему символу, то есть увеличь указатель на 1.

05.05.2022

End.

Слайд 19

№ 4. Составить программу для решения следующей задачи: Из строки выбрать все

№ 4. Составить программу для решения следующей задачи: Из строки выбрать все
цифры и сформировать другую строку из этих цифр, сохранив их последовательность.

Входные данные: S= sdfg7452tg2345dfg74
Выходные данные: M=7452234574

05.05.2022

Слайд 20

№5. Составить программу для решения следующей задачи: Дана строка, содержащая английский текст.

№5. Составить программу для решения следующей задачи: Дана строка, содержащая английский текст.
Найти количество слов, начинающихся с буквы b.

Входные данные: S=’asdf bgdg bdsg’            
Выходные данные: k=2

05.05.2022