Программирование на алгоритмическом языке
Зачем нужны символьные строки?
Символьные строки
Символьные строки
Задачи
Задачи
Задачи
Операции со строками
Операции со строками
Поиск в строках
Пример обработки строк
Пример обработки строк
Задачи
Задачи
Задачи
Преобразования «строка» – «число»
Задачи
Задачи
827.00K
Категория: ПрограммированиеПрограммирование

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

1. Программирование на алгоритмическом языке

§ 66. Символьные строки
1

2. Зачем нужны символьные строки?

Алгоритмизация и программирование, АлгЯзык, 10 класс
2
Зачем нужны символьные строки?
симтаб s[1:80]
| массив символов
элементы массива – отдельные объекты
сложно работать со строками переменной длины
Хочется:
• строка – единый объект
• длина строки может меняться во время работы программы
лит s
| символьная строка
литерный тип
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

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

Алгоритмизация и программирование, АлгЯзык, 10 класс
3
Символьные строки
Присваивание:
s:= 'Вася пошёл гулять'
лит s
Ввод с клавиатуры:
ввод s
Вывод на экран:
вывод s
?
А если массив?
Отдельный символ:
s[4]:= 'a'
Длина строки:
цел n
n:= длин(s)
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

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

Алгоритмизация и программирование, АлгЯзык, 10 класс
4
Символьные строки
Задача: заменить в строке все буквы 'а' на буквы 'б'.
алг Замена а на б
нач
лит s
вывод 'Введите строку: '
ввод s
цел i
нц для i от 1 до длин(s)
если s[i] = 'а' то
s[i]:= 'б'
все
кц
вывод s
кон
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

5. Задачи

Алгоритмизация и программирование, АлгЯзык, 10 класс
5
Задачи
«A»: Ввести с клавиатуры символьную строку и заменить в ней все
буквы «а» на «б» и все буквы «б» на «а» (заглавные на
заглавные, строчные на строчные).
Пример:
Введите строку:
ааббААББссСС
Результат:
ббааББААссСС
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

6. Задачи

Алгоритмизация и программирование, АлгЯзык, 10 класс
6
Задачи
«B»: Ввести с клавиатуры символьную строку и определить, сколько
в ней слов. Словом считается последовательности
непробельных символов, отделенная с двух сторон пробелами
(или стоящая с краю строки). Слова могут быть разделены
несколькими пробелами, в начале и в конце строки тоже могут
быть пробелы.
Пример:
Введите строку:
Вася пошел
гулять
Найдено слов: 3
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

7. Задачи

Алгоритмизация и программирование, АлгЯзык, 10 класс
7
Задачи
«C»: Ввести с клавиатуры символьную строку и найдите самое
длинное слово и его длину. Словом считается
последовательности непробельных символов, отделенная с
двух сторон пробелами (или стоящая с краю строки). Слова
могут быть разделены несколькими пробелами, в начале и в
конце строки тоже могут быть пробелы.
Пример:
Введите строку:
Вася
пошел гулять
Самое длинное слово: гулять, длина 6
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

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

Алгоритмизация и программирование, АлгЯзык, 10 класс
8
Операции со строками
Объединение (конкатенация) :
s1:= 'Привет'
'Привет, Вася!'
s2:= 'Вася'
s := s1 + ', ' + s2 + '!'
Срез:
s:= '123456789'
s1:= s[3:7]
| '34567'
с какого символа
К.Ю. Поляков, Е.А. Ерёмин, 2013
до какого символа
http://kpolyakov.spb.ru

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

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

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

Алгоритмизация и программирование, АлгЯзык, 10 класс
10
Поиск в строках
s:= 'Здесь был Вася.'
что
где
n:= позиция('с', s)
если n > 0 то
вывод 'Номер символа ', n
иначе
вывод 'Символ не найден.'
все
!
Находит первое слева вхождение
подстроки!
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

11. Пример обработки строк

Алгоритмизация и программирование, АлгЯзык, 10 класс
11
Пример обработки строк
Задача: Ввести имя, отчество и фамилию. Преобразовать их к
формату «фамилия-инициалы».
Пример:
Введите имя, отчество и фамилию:
Василий Алибабаевич Хрюндиков
Результат:
Хрюндиков В.А.
Алибабаевич Хрюндиков
Алгоритм:
• найти первый пробел и выделить имя
Хрюндиков
• удалить имя с пробелом из основной строки
• найти первый пробел и выделить отчество
• удалить отчество с пробелом из основной строки
• «сцепить» фамилию, первые буквы имени и фамилии, точки,
пробелы…
Хрюндиков В.А.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

12. Пример обработки строк

Алгоритмизация и программирование, АлгЯзык, 10 класс
12
Пример обработки строк
алг FIO
нач
лит s, name, name2
цел n
вывод 'Введите имя, отчество и фамилию'
ввод s
n:= позиция(' ', s);
name:= s[1:n-1]
| вырезать имя
удалить(s, 1, n)
n:= позиция(' ', s)
name2:= s[1:n-1] | вырезать отчество
удалить(s, 1, n) | осталась фамилия
s:= s + ' ' + name[1] + '.' + name2[1] + '.'
вывод s
кон
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

13. Задачи

Алгоритмизация и программирование, АлгЯзык, 10 класс
13
Задачи
«A»: Ввести с клавиатуры в одну строку фамилию, имя и отчество,
разделив их пробелом. Вывести фамилию и инициалы.
Пример:
Введите фамилию, имя и отчество:
Иванов Петр Семёнович
П.С. Иванов
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

14. Задачи

Алгоритмизация и программирование, АлгЯзык, 10 класс
14
Задачи
«B»: Ввести адрес файла и «разобрать» его на части, разделенные
знаком '/'. Каждую часть вывести в отдельной строке.
Пример:
Введите адрес файла:
C:/Фото/2013/Поход/vasya.jpg
C:
Фото
2013
Поход
vasya.jpg
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

15. Задачи

Алгоритмизация и программирование, АлгЯзык, 10 класс
15
Задачи
«C»: Напишите программу, которая заменяет во всей строке одну
последовательность символов на другую.
Пример:
Введите строку:
(X > 0) and (Y < X) and (Z > Y) and (Z <> 5)
Что меняем: and
Чем заменить: &
Результат
(X > 0) & (Y < X) & (Z > Y) & (Z <> 5)
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

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

Алгоритмизация и программирование, АлгЯзык, 10 класс
16
Преобразования «строка» – «число»
Из строки в число:
да или нет
s:= '123'
N:= лит_в_цел(s, OK)
если не OK то вывод
s:= '123.456';
X:= лит_в_вещ(s, OK)
если не OK то вывод
цел N, вещ X,
лит s, лог OK
| N = 123
'Ошибка!' все
| X = 123.456
'Ошибка!' все
Из числа в строку:
N:= 123
s:= цел_в_лит(N) | '123'
X:= 123.456
s:= вещ_в_лит(X) | '123.456'
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

17. Задачи

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

18. Задачи

Алгоритмизация и программирование, АлгЯзык, 10 класс
18
Задачи
«C»: Напишите программу, которая вычисляет выражение,
состоящее из трех чисел и двух знаков (допускаются знаки «+»,
«–», «*» и «/»). Выражение вводится как символьная строка,
все числа целые. Операция «/» выполняется как
целочисленное деление (div).
Пример:
Введите выражение:
12*3+45
Ответ: 81
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
English     Русский Правила