Программирование (Паскаль)
Что такое символьная строка?
Символьные строки
Сравнение строк
Сравнение строк
Посимвольная обработка строк
Задачи
Задачи
Операции со строками
Операции со строками
Поиск в строках
Задачи
Задачи
Преобразования «строка»  «число»
Преобразования «число»  «строка»
Задачи
Задачи
420.00K
Category: programmingprogramming

Программирование (Паскаль). § 19. Символьные строки

1. Программирование (Паскаль)

1
Программирование
(Паскаль)
§ 19. Символьные строки
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

2. Что такое символьная строка?

Программирование (Паскаль), 9 класс
2
Что такое символьная строка?
Символьная строка – это последовательность
символов.
Хочется:
• строка – единый объект
• длина строки может меняться во время работы
программы
var s: string; { символьная строка }
строковый тип
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

3. Символьные строки

Программирование (Паскаль), 9 класс
3
Символьные строки
Присваивание:
s:= 'Вася пошёл гулять';
var s: string;
Ввод с клавиатуры:
readln(s);
ввод до конца строки
Вывод на экран:
writeln(s);
Длина строки:
var n: integer;
n:= Length(s);
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

4. Сравнение строк

Программирование (Паскаль), 9 класс
4
Сравнение строк
?
var s: string;
Какой правильный
...
пароль?
writeln('Введите пароль: ');
readln(s);
if s='sEzAm' then
write('Слушаюсь и повинуюсь!')
else
write('Пароль неправильный');
?
Как одна строка может быть меньше другой?
стоит раньше в отсортированном списке
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

5. Сравнение строк

Программирование (Паскаль), 9 класс
5
Сравнение строк
var s1, s2: string;
Что выведет?
...
s1:= 'паровоз';
s2:= 'пароход';
if s1 < s2 then
паровоз < пароход
write(s1, '<', s2)
else
if s1 = s2 then
write(s1, '=', s2)
else
первые отличающиеся
write(s1, '>', s2);
буквы
?
Сравниваем с начала: паровоз
пароход
!
в < х!
«в»: код 1074 «х»: код 1093
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

6. Посимвольная обработка строк

Программирование (Паскаль), 9 класс
6
Посимвольная обработка строк
s[4]:= 'a';
Задача. Ввести строку и заменить в ней все буквы «э» на
буквы «е».
для каждого символа
var i: integer;
строки
...
for i:=1 to length(s) do
if s[i]='э' then
s[i]:='е';
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

7. Задачи

Программирование (Паскаль), 9 класс
7
Задачи
«A»: Напишите программу, которая вводит строку,
состоящую только из точек и букв Х, и заменяет в
ней все точки на нули и все буквы X на единицы.
Пример:
Введите строку: ..X.XX.
Двоичный код: 0010110
«B»: Напишите программу, которая в символьной строке
заменяет все нули на единицы и наоборот.
Остальные символы не должны измениться.
Пример:
Введите строку: 10а01Bx1010c
Инверсия: 01a10Bx0101c
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

8. Задачи

Программирование (Паскаль), 9 класс
8
Задачи
«С»: Введите битовую строку и дополните её последним
битом, который должен быть равен 0, если в
исходной строке чётное число единиц, и равен 1,
если нечётное (в получившейся строке должно
всегда быть чётное число единиц).
Пример:
Введите битовую строку: 01101010110
Результат: 011010101100
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

9. Операции со строками

Программирование (Паскаль), 9 класс
9
Операции со строками
Объединение (конкатенация) :
s1:= 'Привет' ;
'Привет, Вася!'
s2:= 'Вася' ;
s := s1 + ', ' + s2 + '!' ;
Срез (выделение части строки):
s:= '123456789' ;
s1:= copy(s,3,5); { '34567' }
с какого
символа
К.Ю. Поляков, Е.А. Ерёмин, 2018
сколько
символов
http://kpolyakov.spb.ru

10. Операции со строками

Программирование (Паскаль), 9 класс
10
Операции со строками
Удаление:
s:= '123456789';
delete(s, 3, 6); { '129' }
с какого
символа
сколько
символов
Вставка:
s:= '123456789’;
insert('ABC', s, 3) ; { '12ABC3456789' }
что
?
куда
с какого
символа
Процедуры или функции?
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

11. Поиск в строках

Программирование (Паскаль), 9 класс
11
Поиск в строках
s:= 'Здесь был Вася.';
что
где
n:= pos('с', s);
if n > 0 then
write('Номер символа ', n)
else
write('Символ не найден.');
!
Находит первое слева вхождение подстроки!
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

12. Задачи

Программирование (Паскаль), 9 класс
12
Задачи
«A»: Ввести с клавиатуры в одну строку фамилию и имя,
разделив их пробелом. Вывести первую букву имени с
точкой и потом фамилию.
Пример:
Введите фамилию и имя:
Иванов Петр
П. Иванов
«B»: Ввести с клавиатуры в одну строку фамилию, имя и
отчество, разделив их пробелом. Вывести фамилию и
инициалы.
Пример:
Введите фамилию, имя и отчество:
Иванов Петр Семёнович
П.С. Иванов
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

13. Задачи

Программирование (Паскаль), 9 класс
13
Задачи
«C»: Ввести адрес файла и «разобрать» его на части,
разделенные знаком '/'. Каждую часть вывести в
отдельной строке.
Пример:
Введите адрес файла:
C:/Фото/2015/Байкал/shaman.jpg
C:
Фото
2015
Байкал
shaman.jpg
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

14. Преобразования «строка»  «число»

Программирование (Паскаль), 9 класс
14
Преобразования «строка» «число»
Целое число:
var r: integer;
номер первого
...
ошибочного символа
s:= '123';
val(s, N, r); { N = 123 }
Вещественное число:
var r: integer;
...
s:='123.456';
val(s, X, r); { X = 123.456}
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

15. Преобразования «число»  «строка»

Программирование (Паскаль), 9 класс
15
Преобразования «число» «строка»
n:= 123;
str(N, s); { s = '123' }
x:= 123.456;
str(X, s); { s = '1.234560E+002' }
str(X:10:3, s); { s = ' 123.456' }
?
Как объявить переменные?
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

16. Задачи

Программирование (Паскаль), 9 класс
16
Задачи
«A»: Напишите программу, которая вычисляет сумму двух
чисел, введенную в форме символьной строки. Все числа
целые.
Пример:
Введите выражение:
12+3
Ответ: 15
«B»: Напишите программу, которая вычисляет сумму трёх
чисел, введенную в форме символьной строки. Все числа
целые.
Пример:
Введите выражение:
12+3+45
Ответ: 60
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

17. Задачи

Программирование (Паскаль), 9 класс
17
Задачи
«C»: Напишите программу, которая вычисляет сумму
произвольного количества чисел, введенную в форме
символьной строки. Все числа целые.
Пример:
Введите выражение:
12+3+45+10
Ответ: 70
«D»: Напишите программу, которая вычисляет выражение,
содержащее целые числа и знаки сложения и вычитания.
Пример:
Введите выражение:
12+134–45–17
Ответ: 84
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
English     Русский Rules