Слайд 1Символьные и строковые величины
10 класс
Слайд 2Основные теоретические сведения
Примеры решения задач
Слайд 3Основные теоретические сведения
Описание символов и строк
Операции над символами
Функции обработки символьных
величин
Операции над строками
Процедуры и функции обработки строковых величин
Слайд 4Описание символов и строк
Значения строковых и символьных констант записываются в
апострофах. Значения символов можно задавать с помощью знака # и
кодового номера символа:
C1:=’$’; С2:=#36; (знак - ’$’)
S:=’Привет’; C3:=#27; (код клавиши Esc)
Writeln (’сумма чисел равна’); write(a,#9,b); (#9 – код клавиши Tad)
If c=’+’ then … For c:=’a’ to ’z’ do …
Слайд 5Операции над символами
Два символа можно сравнить. Больше будет тот символ,
кодовый номер больше.
Символы алфавита, набранные в одном регистре упорядочены в
алфавитном порядке;
’Б’<’Д’; ’п’<’т’; ’S’<’Z’; ’f’<’v’;
Большие буквы алфавита меньше маленьких букв алфавита;
’Б’<’б’; ’Я’<’а’;’R’<’r’; ’Z’<’a’;
Символы цифр расположены в порядке возрастания их числовых значений;
’1’<’5’; ’0’<’9’
Символы цифр меньше символов любых букв;
’1’<’r’; ’2’<’W’; ’5’<’ж’; ’9’<’Я’
Символы латинских букв меньше символов русских букв;
’z’<’б’; ’W’<’Ц’; ’D’<’ж’; ’q’<’Я’
Слайд 6Функции обработки символьных величин
Слайд 7Операции над строками
Строки можно складывать – результатом будет новая строка,
полученная приписыванием к первой строке второй:
S1:='Иванов';
S2:='Павел';
S3:=S1+' '+S2;
После
выполнения команд строка S3 получит значение 'Иванов Павел'
Слайд 8Операции над строками
Две строки можно сравнивать.
Строки сравниваются в лексикографическом порядке
посимвольно.
Сравнивают первые символы, больше будет та строка, первый символ которой
больше;
Если первые символы равны, то сравнивают вторые, третьи и т.д.
Если все символы двух строк равны, то строки равны.
Если одна из строк является началом другой, то вторая строка больше.
Слайд 10Процедуры и функции обработки строковых величин
Слайд 12Примеры решения задач
Определение кода введенного символа
Ввод-вывод строк
Поиск символов в строке
1
Поиск символов в строке 2
Преобразование строк
Простейшее преобразование строки
Удаление, вставка и
замена символов
Слайд 13Определение кода введенного символа
Написать программу, которая выведет код введенного символа.
Слайд 14Этапы выполнения задания
Определение исходных данных: переменная с (введенный символ).
Определение
результатов: переменная x (код символа в кодовой таблице).
Алгоритм решения задачи.
Ввод
исходных данных
Определение кода символа
Вывод результата.
Описание переменных:
Переменная c – тип char, переменная x – тип byte.
Слайд 15Программа:
var c:char;
x:byte;
begin
writeln('введите символ');
readln(c);
x:=ord(c);
writeln('код=',x);
end.
Слайд 16Тестирование и вопросы
Запустите программу и введите значения
$
Проверьте, результат должен быть
следующим:
код=36
Определите код символа пробел.
Определите коды непечатных символов, которые вставляются
в текст при нажатии клавиш табуляция и ввод.
* Какому символу соответствует код 168?
* Измените программу так, чтобы она запрашивала код символа и выдавала символ.
Слайд 17Ввод-вывод строк
Напишите программу, которая спросит имя пользователя, а затем поздоровается
с ним.
Слайд 18Разбор задания
Определение исходных данных: переменная imja, строка, в которой будет
храниться введенное имя.
Определение результатов: строка с приветствием.
Алгоритм решения задачи.
Ввод имени
Вывод
строки с приветствием
Описание переменных:
Переменная imja – тип string.
Слайд 19Программа
Программа:
var imja:string;
begin
writeln ('Как тебя зовут? ');
readln(imja);
writeln ('Привет,
',imja);
end.
Слайд 20Тестирование
Если запустить программу и ввести значение – Маша
то результат должен
быть следующим:
Привет, Маша
Слайд 21Поиск символов в строке 1
Написать программу которая определит каких букв
в строке с русским текстом больше: ‘о’ или ‘O’.
Слайд 22Исходные данные и результаты
Исходные данные
переменная St - исходный текст.
Результат
Сообщение
о том каких букв больше.
Слайд 23Алгоритм решения задачи
Ввод исходных данных.
В цикле от 1 до длины
строки St проверяем каждый символ строки.
Если встретилась буква ‘o’,
то увеличиваем на 1 значение счетчика k1, если ‘O’ – значение счетчика k2.
Сравниваем полученные значения счетчиков.
Вывод результата.
Слайд 24Описание переменных
Переменная St имеет тип string.
Переменные k1 и k2 имеют
тип integer.
Тип переменной i – счетчика цикла – integer.
Для хранения длины строки используем переменную n типа integer.
Слайд 25Программа
Var St: 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.
Слайд 26Тестирование
Запустите программу и введите значение
OOOoooOOO
Проверьте, результат должен быть следующим:
букв O
больше чем o
Слайд 27Вопросы
Будет ли работать программа, если ввести текст на английском языке?
Почему? Какие изменения необходимо внести в программу для работы с
английским текстом? Подберите тесты для проверки программы.
Измените программу так, чтобы можно было работать с текстом, как на русском, так и на английском языке.
Ведите текст, в котором нет букв ‘o’. Какой ответ выдаст программа? Внесите изменения в программу, так чтобы на этот случай выдавалось сообщение ‘в тексте нет букв O и o’.
Слайд 28Поиск символов в строке 2
Задано слово. Вывести согласные буквы слова
синим цветом, а гласные буквы красным. Посчитать количество гласных букв
во введенном слове.
Слайд 29Исходные данные и результаты
Исходные данные
переменная St - исходный текст.
Результат
слово,
в котором буквы выводятся разными цветами и сообщение о количестве
гласных букв.
Слайд 30Алгоритм решения задачи
Ввод исходных данных.
Создаем дополнительную строку, в которой хранятся
все гласные буквы: g:=’ЁУЕЭОАЫЯИЮёуеэоаыяию’.
Заводим переменную k – счетчик гласных букв.
Вначале ее значение равно 0.
В цикле от 1 до длины строки St находим позицию текущего символа из строки St в строке с гласными буквами (переменная p). Если это значение не равно нулю, то символ – гласная.
Если символ является гласной буквой, то выводим его на экран красным цветом и увеличиваем значение счетчика гласных букв на 1, если символ не является гласной буквой, то выводим его синим цветом.
Вывод результата.
Слайд 31Описание переменных
Переменные St и g имеют тип string.
Переменные k и
p имеют тип integer.
Тип переменной i – счетчика цикла
– integer.
Для хранения длины строки используем переменную n типа integer.
Слайд 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 p0 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('количество гласных букв равно
', k);
End.
Слайд 34Вопросы
Будет ли работать программа, если ввести текст на английском языке?
Почему? Какие изменения необходимо внести в программу для работы с
английским текстом? Подберите тесты для проверки программы.
Измените программу так, чтобы можно было работать с текстом, как на русском, так и на английском языке.
*Почему сообщение количество гласных букв равно выводится на экран до вывода символов разными цветами, хотя команда для вывода этого сообщения выполняется в программе последней?
Слайд 35Простейшее преобразование строки
Написать программу которая из слова ТЕСТИРОВАНИЕ получит слово
РИСОВАНИЕ.
Слайд 36Этапы выполнения задания.
Определение исходных данных: слово ТЕСТИРОВАНИЕ будем хранить как
константу с именем s.
Определение результатов: полученные слова.
Алгоритм решения задачи.
Для получения
слова нужно скопировать из исходной строки шестой символ, восемь символов, начиная с позиции 5
Затем все сложить. Получим ’Р’+’ИРОВАНИЕ’.
Затем удалить третий символ (’РИОВАНИЕ’)
Вставить на третье место третий символ исходной строки (’РИСОВАНИЕ’).
Вывод результата.
Слайд 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.
Слайд 38Удаление, вставка и замена символов
Написать программу, которая в заданном тексте
заменит все встречающиеся пары из одинаковых цифр, словом ‘две’.
Слайд 39Исходные данные и результаты
Исходные данные
переменная St - исходный текст.
Результат
Преобразованный
текст
Слайд 40Алгоритм решения задачи
Ввод исходных данных.
Просматриваем строку и выделяем из строки
по два символа.
Проверяем одинаковые ли эти символы, и являются
ли они цифрами.
Если да, удаляем их из строки и на их место вставляем слово ‘два’.
Для того, чтобы проверить является ли символ цифрой, создадим строку z, состоящую из всех цифр, и будем определять позицию текущего символа строки в строке из цифр.
Если позиция текущего символа в этой строке отлична от нуля, то символ – цифра, иначе нет.
Поскольку длина строки при замене будет меняться, то для просмотра строки удобнее использовать цикл while.
Вывод результата.
Слайд 41Описание переменных
Переменные St и z имеют тип string. Такой же
тип имеет переменная x, предназначенная для выделения пар символов
Тип
переменной i – счетчика цикла – integer.
Для хранения длины строки используем переменную n типа integer.
Слайд 42Программа
Var St: string; z:string[10]; x:string[2];
i: integer;
Begin
Write('введите строку текста - St');
Readln(St);
z:='0123456789';
i:=1;
while
i
Слайд 43Тестирование
Запустите программу и введите значение
st=111123455677
Проверьте, результат должен быть следующим:
преобразованная строка
дведве234две6две
Слайд 44Вопросы
Будет ли работать программа, если ввести римские цифры? Почему? Какие
изменения необходимо внести в программу для работы с римскими цифрами
(I –1, V –5, X –10, L –50, C –100, D – 500, M –1000)? Подберите тесты для проверки программы.
Измените программу так, чтобы можно было работать как с арабскими, так и с римскими цифрами.
Ведите текст, в котором нет цифр. Какой ответ выдаст программа? Внесите изменения в программу, так чтобы на этот случай выдавалось сообщение ‘в тексте нет цифр’.