Similar presentations:
Символьные и строковые величины. 10 класс
1. Символьные и строковые величины
10 класс2.
Основные теоретические сведенияПримеры решения задач
2
3. Основные теоретические сведения
Описание символов и строкОперации над символами
Функции обработки символьных
величин
Операции над строками
Процедуры и функции обработки
строковых величин
3
4. Описание символов и строк
Тип данныхОписание
Сhar
Хранит один символ кодовой
таблицы
String
Хранит значение строки символов
кодовой таблицы
Значения строковых и символьных констант записываются в
апострофах. Значения символов можно задавать с помощью
знака # и кодового номера символа:
C1:=’$’;
S:=’Привет’;
Writeln (’сумма чисел равна’);
If c=’+’ then …
С2:=#36; (знак - ’$’)
C3:=#27; (код клавиши Esc)
write(a,#9,b); (#9 – код клавиши Tad)
For c:=’a’ to ’z’ do …
4
5. Операции над символами
Два символа можно сравнить. Больше будет тот символ, кодовыйномер больше.
Символы алфавита, набранные в одном регистре упорядочены в
алфавитном порядке;
Большие буквы алфавита меньше маленьких букв алфавита;
’1’<’5’; ’0’<’9’
Символы цифр меньше символов любых букв;
’Б’<’б’; ’Я’<’а’;’R’<’r’; ’Z’<’a’;
Символы цифр расположены в порядке возрастания их числовых
значений;
’Б’<’Д’; ’п’<’т’; ’S’<’Z’; ’f’<’v’;
’1’<’r’; ’2’<’W’; ’5’<’ж’; ’9’<’Я’
Символы латинских букв меньше символов русских букв;
’z’<’б’; ’W’<’Ц’; ’D’<’ж’; ’q’<’Я’
5
6. Функции обработки символьных величин
Названиефункции
Действие
Тип
аргументов
Тип
результата
Chr(x)
Определяет символ по его номеру в
кодовой таблице
byte
char
Ord(c)
Определяет код символа в кодовой
таблице
char
byte
Upcase(c)
Преобразует символ в верхний
регистр
char
char
LowCase(c)
Преобразует символ в нижний
регистр
char
char
Pred(c)
Возвращает предыдущий символ в
кодовой таблице
char
char
Succ(c)
Возвращает следующий символ в
кодовой таблице
char
char
6
7. Операции над строками
Строки можно складывать – результатомбудет новая строка, полученная
приписыванием к первой строке второй:
S1:='Иванов';
S2:='Павел';
S3:=S1+' '+S2;
После выполнения команд строка S3
получит значение 'Иванов Павел'
7
8. Операции над строками
Две строки можно сравнивать.Строки сравниваются в лексикографическом
порядке посимвольно.
Сравнивают
первые символы, больше будет та
строка, первый символ которой больше;
Если первые символы равны, то сравнивают
вторые, третьи и т.д.
Если все символы двух строк равны, то строки
равны.
Если одна из строк является началом другой, то
вторая строка больше.
8
9. Примеры сравнения строк
Первая строка Вторая строкаРезультат
’Четверг’
’Пятница’
Первая больше
’Понедельник’
’Пятница’
Вторая больше
’111111’
’111111’
Равны
’Лес’
’Леска’
Вторая больше
9
10. Процедуры и функции обработки строковых величин
Названиефункции.
Действие.
Тип аргумента
(ов).
Тип результата.
Length (s)
Возвращает длину строки s
string
integer
Pos (s1,s2)
Ищет первое вхождение
строки s1 в строке s2
s1, s2 – string
byte
Copy (a,n,k)
копирует подстроку строки
а, из k символов, начиная с
позиции n
a – string,
k, n,– integer
string
delete(s, n, k)
удаляет k символов из строки s – string
s, начиная с символа с
k, n – integer
номером n
Процедура, результат
сохраняется в переменной s
insert(s1, s2, n)
вставляет строку s1 в строку
s2, начиная с позиции n
Процедура, результат
сохраняется в переменной s2
n – integer
s1, s2 – string
10
11. Примеры использования функций
Исходные данныеКоманда
Результат
s:= 'informatika'
a:=copy(s,3,5);
а:= 'forma'
s:= 'informatika'
delete(s,3,7);
s:= 'inka'
s:= 'vina'
a:= 'elich'
insert(a,s,2);
s:= 'velichina'
d='Информатика’;
d:=Length(s)
d=11
S:=‘Шла Саша по шоссе’;
N:=Pos(‘Саша’,S);
N=5
11
12. Примеры решения задач
Определение кода введенного символаВвод-вывод строк
Поиск символов в строке 1
Поиск символов в строке 2
Преобразование строк
Простейшее
преобразование строки
Удаление, вставка и замена символов
12
13. Определение кода введенного символа
Написать программу, которая выведеткод введенного символа.
13
14. Этапы выполнения задания
Определение исходных данных: переменная с(введенный символ).
Определение результатов: переменная x (код
символа в кодовой таблице).
Алгоритм решения задачи.
I.
II.
III.
1.
2.
3.
IV.
V.
Ввод исходных данных
Определение кода символа
Вывод результата.
Описание переменных:
Переменная c – тип char, переменная x – тип byte.
14
15. Программа:
var c:char;x:byte;
begin
writeln('введите символ');
readln(c);
x:=ord(c);
writeln('код=',x);
end.
15
16. Тестирование и вопросы
Запустите программу и введите значения$
Проверьте, результат должен быть следующим:
код=36
Определите код символа пробел.
Определите коды непечатных символов, которые
вставляются в текст при нажатии клавиш табуляция и
ввод.
* Какому символу соответствует код 168?
* Измените программу так, чтобы она запрашивала
код символа и выдавала символ.
16
17. Ввод-вывод строк
Напишите программу, которая спроситимя пользователя, а затем
поздоровается с ним.
17
18. Разбор задания
Определение исходных данных:переменная imja, строка, в которой будет
храниться введенное имя.
Определение результатов: строка с
приветствием.
Алгоритм решения задачи.
I.
II.
III.
1.
2.
IV.
V.
Ввод имени
Вывод строки с приветствием
Описание переменных:
Переменная imja – тип string.
18
19. Программа
Программа:var imja:string;
begin
writeln ('Как тебя зовут? ');
readln(imja);
writeln ('Привет, ',imja);
end.
19
20. Тестирование
Если запустить программу и ввести значение –Маша
то результат должен быть следующим:
Привет, Маша
20
21. Поиск символов в строке 1
Написать программу которая определиткаких букв в строке с русским текстом
больше: ‘о’ или ‘O’.
21
22. Исходные данные и результаты
Исходныеданные
переменная
St - исходный текст.
Результат
Сообщение
о том каких букв больше.
22
23. Алгоритм решения задачи
Ввод исходных данных.В цикле от 1 до длины строки St
проверяем каждый символ строки.
Если встретилась буква ‘o’, то
увеличиваем на 1 значение счетчика k1,
если ‘O’ – значение счетчика k2.
Сравниваем полученные значения
счетчиков.
Вывод результата.
23
24. Описание переменных
Переменная St имеет тип string.Переменные k1 и k2 имеют тип integer.
Тип переменной i – счетчика цикла –
integer.
Для хранения длины строки используем
переменную n типа integer.
24
25. Программа
VarSt: string;
n,i,k1,k2: integer;
Begin
Write('введите строку текста - St');
Readln(St);
n:=length(St);
For i:=1 to n do
begin
If St[i]='o' then
k1:=k1+1;
If St[i]='O' then
K2:=k2+1;
end;
if k1>k2 then
writeln('букв о больше чем О')
else
if k2>k1 then
writeln('букв O больше чем o')
else
writeln('количество букв о равно количеству букв О');
End.
25
26. Тестирование
Запустите программу и введитезначение
OOOoooOOO
Проверьте, результат должен быть
следующим:
букв O больше чем o
26
27. Вопросы
Будет ли работать программа, если ввести текст наанглийском языке? Почему? Какие изменения
необходимо внести в программу для работы с
английским текстом? Подберите тесты для
проверки программы.
Измените программу так, чтобы можно было
работать с текстом, как на русском, так и на
английском языке.
Ведите текст, в котором нет букв ‘o’. Какой ответ
выдаст программа? Внесите изменения в
программу, так чтобы на этот случай выдавалось
сообщение ‘в тексте нет букв O и o’.
27
28. Поиск символов в строке 2
Задано слово. Вывести согласные буквыслова синим цветом, а гласные буквы
красным. Посчитать количество гласных
букв во введенном слове.
28
29. Исходные данные и результаты
Исходныеданные
переменная
St - исходный текст.
Результат
слово,
в котором буквы выводятся разными
цветами и сообщение о количестве
гласных букв.
29
30. Алгоритм решения задачи
Ввод исходных данных.Создаем дополнительную строку, в которой хранятся все
гласные буквы: g:=’ЁУЕЭОАЫЯИЮёуеэоаыяию’.
Заводим переменную k – счетчик гласных букв. Вначале
ее значение равно 0.
В цикле от 1 до длины строки St находим позицию
текущего символа из строки St в строке с гласными
буквами (переменная p). Если это значение не равно
нулю, то символ – гласная.
Если символ является гласной буквой, то выводим его на
экран красным цветом и увеличиваем значение счетчика
гласных букв на 1, если символ не является гласной
буквой, то выводим его синим цветом.
Вывод результата.
30
31. Описание переменных
Переменные St и g имеют тип string.Переменные k и p имеют тип integer.
Тип переменной i – счетчика цикла –
integer.
Для хранения длины строки
используем переменную n типа
integer.
31
32. Программа
Uses GraphABC;Var
St,g: string;
n,i,k,p: integer;
Begin
Writeln('введите строку текста - St');
Readln(St);
writeln(St);
n:=length(St);
g:= 'ЁУЕЭОАЫЯИЮёуеэоаыяию';
SetFontName('Couier New');
For i:=1 to n do
begin
p:=pos(st[i],g);
if p<>0 then
begin
SetFontColor(clRed);
TextOut(10*i,50,st[i]);
k:=k+1;
end
else
begin
SetFontColor(clBlue);
TextOut(10*i,50,st[i]);
end;
end;
SetFontColor(clGreen);
writeln('количество гласных букв равно
End.
', k);
32
33. Тестирование
3334. Вопросы
Будет ли работать программа, если ввести текст наанглийском языке? Почему? Какие изменения
необходимо внести в программу для работы с
английским текстом? Подберите тесты для
проверки программы.
Измените программу так, чтобы можно было
работать с текстом, как на русском, так и на
английском языке.
*Почему сообщение количество гласных букв равно
выводится на экран до вывода символов разными
цветами, хотя команда для вывода этого
сообщения выполняется в программе последней?
34
35. Простейшее преобразование строки
Написать программу которая из словаТЕСТИРОВАНИЕ получит слово
РИСОВАНИЕ.
35
36. Этапы выполнения задания.
Определение исходных данных: словоТЕСТИРОВАНИЕ будем хранить как константу с
именем s.
Определение результатов: полученные слова.
Алгоритм решения задачи.
Для получения слова нужно скопировать из исходной
строки шестой символ, восемь символов, начиная с
позиции 5
Затем все сложить. Получим ’Р’+’ИРОВАНИЕ’.
Затем удалить третий символ (’РИОВАНИЕ’)
Вставить на третье место третий символ исходной строки
(’РИСОВАНИЕ’).
Вывод результата.
36
37. Программа
const s='ТЕСТИРОВАНИЕ';var s1:string;
begin
s1:=s[6]+copy(s,5,8);
delete(s1,3,1);
insert(s[3],s1,3);
writeln('слово=', s1);
End.
{РИРОВАНИЕ}
{РИОВАНИЕ}
{РИСОВАНИЕ}
37
38. Удаление, вставка и замена символов
Написать программу, которая взаданном тексте заменит все
встречающиеся пары из одинаковых
цифр, словом ‘две’.
38
39. Исходные данные и результаты
Исходныеданные
переменная
St - исходный текст.
Результат
Преобразованный
текст
39
40. Алгоритм решения задачи
Ввод исходных данных.Просматриваем строку и выделяем из строки по два
символа.
Проверяем одинаковые ли эти символы, и являются ли они
цифрами.
Если да, удаляем их из строки и на их место вставляем
слово ‘два’.
Для того, чтобы проверить является ли символ цифрой,
создадим строку z, состоящую из всех цифр, и будем
определять позицию текущего символа строки в строке из
цифр.
Если позиция текущего символа в этой строке отлична от
нуля, то символ – цифра, иначе нет.
Поскольку длина строки при замене будет меняться, то для
просмотра строки удобнее использовать цикл while.
Вывод результата.
40
41. Описание переменных
Переменные St и z имеют тип string. Такойже тип имеет переменная x,
предназначенная для выделения пар
символов
Тип переменной i – счетчика цикла –
integer.
Для хранения длины строки используем
переменную n типа integer.
41
42. Программа
VarSt: string; z:string[10]; x:string[2];
i: integer;
Begin
Write('введите строку текста - St');
Readln(St);
z:='0123456789';
i:=1;
while i<=length(st)-1 do
begin
x:=copy(st,I,2);
if (x[1]=x[2]) and (pos(x[1],z)<>0) then
begin
delete(st,i,2);
insert('две',st,i);
i:=i+1;
end;
i:=i+1;
end;
writeln('преобразованная строка ', st);
End.
42
43. Тестирование
Запустите программу и введитезначение
st=111123455677
Проверьте, результат должен быть
следующим:
преобразованная строка
дведве234две6две
43
44. Вопросы
Будет ли работать программа, если ввести римскиецифры? Почему? Какие изменения необходимо
внести в программу для работы с римскими
цифрами (I –1, V –5, X –10, L –50, C –100, D – 500, M
–1000)? Подберите тесты для проверки программы.
Измените программу так, чтобы можно было
работать как с арабскими, так и с римскими
цифрами.
Ведите текст, в котором нет цифр. Какой ответ
выдаст программа? Внесите изменения в
программу, так чтобы на этот случай выдавалось
сообщение ‘в тексте нет цифр’.
44