PascalABC.NET Работа со строками на Паскале .
1.34M
Category: programmingprogramming

Лабароторная_№_10_Работа_со_строками_PascalABC_NET_

1. PascalABC.NET Работа со строками на Паскале .

Лабораторная
работа № 10
PASCALABC.NET
РАБОТА СО СТРОКАМИ НА ПАСКАЛЕ .
Дисциплина:
«Основы алгоритмизации и программирования.»
Преподаватель: Шадрин Валерий Георгиевич

2.

Порядок выполнения лабораторной работы.
1. Открыть рабочею папку Ваших работ на рабочем столе :
2. Скачать из папки преподавателя работу:
«лабораторная работа №10»
с методическим материалом, с заданием и примерами для
выполнения лабораторной работы.
Sol_Pascal
группа
Фамилия
3. Изучить методический материал и задание для
выполнения Лабораторной работы
4. Выполнить вначале задание для лабораторной, а затем
практической работы.
Сохранить все результаты в созданной Вами папке :
5. Для закрепления материала: ответить на контрольные
вопросы
Sol_Pascal
группа
Фамилия
2

3.

Теоретические сведения
Строка- это последовательность символов кодовой таблицы персонального компьютера.
Количество символов в строке (длина символа) может динамически изменяться от 0 до 255. Для
определения данных строкового типа используется идентификатор string, за которым следует
заключенное в квадратные скобки значение максимально допустимой длины строки данного
типа. Если это значение не указывается, то по умолчанию длина строки равна 255 байт.
Var имя: string[длина];
Пример: St1: string; - строка длина строки которой =255
st2: string[25];- строка длина строки которой равна 25
К любому символу в строке можно обратиться, указав его номер.
Строковые процедуры и функции
Процедура Delete(St,Poz,N)- удаление N символов в строке ST, начиная с позиции Poz. Если
значение Poz>255, возникает программное прерывание
Процедура Insert(St1, St2, Poz) - вставка строки St1 в строку St2, начиная с позиции Poz
Процедура Str(N,ST)- преобразование числового значения величины N и помещение результата в
строку St
3

4.

Основные понятия.
Строка представляет собой особую форму одномерного массива символов, которая
имеет существенное отличие. Массив символов имеет фиксированную длину
(количество элементов), которая определяется при описании. Строка имеет две
разновидности длины:
– Общая длина строки, которая характеризует размер памяти, выделяемый строке при
описании;
– Текущая длина строки (всегда меньше или равна общей длине), которая показывает
количество смысловых символов строки в каждый конкретный момент времени.
Строка в Паскале – упорядоченная последовательность символов. Количество
символов в строке называется ее длиной. Длина строки в Паскале может лежать в
диапазоне от 0 до 255. Каждый символ строковой величины занимает 1 байт памяти и
имеет числовой код в соответствии с таблицей кодов ASCII.
4

5.

Основные понятия.
Для описания строковых переменных в Паскале существует предопределенный тип
string. В общем виде описание строковой переменной будет выглядеть следующим
образом:
Var <имя_переменной>: string[<максимальная длина строки>]
Операция слияния (сцепления, конкатенации) применяется для соединения нескольких
строк в одну, обозначается знаком «+». Операция слияния применима для любых
строковых выражений, как констант, так и переменных.
Операции отношения позволяют сравнивать строки на отношение ра
венства (=), неравенства (<>), больше (>), меньше (<), больше или равно (>=), меньше или
равно (<=). В результате сравнения двух строк получается логическое значение (true или false).
Сравнение строк производится слева направо посимвольно до первого несовпадающего
символа, большей считается та строка, в которой первый несовпадающий символ имеет
больший код в таблице кодировки. Если строки имеют различную длину, но в общей части
символы совпадают, считается, что короткая строка меньше. Строки равны, если они имеют
5
равную длину и соответствующие символы совпадают.

6.

Стандартные функции для работы со строками в Паскале .
Copy (S, poz, n) выделяет из строки S, начиная с позиции poz, подстроку из n
символов. Здесь S – любое строковое выражение, poz, n – целочисленные выражения
-- Concat (s1, s2,...,sn) выполняет слияние строк s1, s2,...,sn в одну строку.
– Length(S) определяет текущую длину строкового выражения S. Результат – значение целого
типа.
– Pos(subS, S) определяет позицию первого вхождения подстроки subS в строку S. Результат –
целое число, равное номеру позиции, где находится первый символ искомой подстроки. Если
вхождение подстроки не обнаружено, то результат функции будет равен 0.
– Delete (S, poz, n) удаляет из строки S, начиная с позиции poz, подстроку из n символов. Здесь
S – строковая переменная (в данном случае нельзя записать никакое другое строковое
выражение, кроме имени строковой переменной, т.к. только с именем переменной связана
область памяти, куда будет помещен результат выполнения процедуры); poz, n – любые
целочисленные выражения.
6

7.

Стандартные функции для работы со строками в Паскале .
– Insert(subS, S, poz) вставляет в строку S, начиная с позиции poz, подстроку subS. Здесь subS
– любое строковое выражение, S – строковая переменная (именно ей будет присвоен
результат выполнения процедуры), poz – целочисленное выражение.
Процедура Val(St,N,Code)- преобразует значение St в величину целочисленного или вещественного типа и
помещает результат в N. Code- целочисленная переменная. Если во время операции преобразования ошибки не
обнаружено, значение Code равно нулю, если ошибка обнаружена, Code будет содержать номер позиции первого
ошибочного символа, а значение N не определено
Функция Concat(St1,St2,…,StN)- выполняет сцепление строк St1,St2,…,StN в том порядке, в каком они указаны в
списке параметров. Сумма символов всех сцепленных строк не должна превышать 255.
Функция Copy(St,Poz,N)- выделяет из ST подстроку длиной N символов, начиная с позиции Poz.Если Poz
больше длины строки, то результатом будет пробел; если Poz>255, возникнет ошибка при выполнении
Функция Length(St) -вычисляет текущую длину в символах строки St
Функция Pos(St1,St2)- обнаруживает первое появление в строке St2 подстроки St1. Результат имеет
целочисленный тип и равен номеру той позиции, где находится первый символ подстроки St1. если в St2
подстроки St1 не найдено, результат равен 0
Функция UpCase(Ch)- преобразует строчную букву в прописную. Обрабатывает только буквы латинского7
алфавита.

8.

СИМВОЛЫ. СТРОКИ
Для описания символов используется зарезервированное слово Char. Для символов
определены операции сравнения: >; <; >=; <=; =. Сравнение происходит по коду символа
в таблице ASCII-кодов. Получить код символа в таблице кодировки можно с помощью
функции Ord(c), которая возвращает целое число – код символа c в таблице кодов ASCII.
Обратная функция – Chr(a), возвращает символ, соответствующий коду в таблице кодов
ASCII равному целому числу а.
Строка – одномерный массив, состоящий из символов: букв, цифр, пробела, подчеркивания,
знаков препинания, скобок и т.п. Доступ к символу строки осуществляется также как в
обычном массиве – указанием номера символа в строке. Описание переменных, имеющих тип
строки, в Паскале осуществляется следующим образом:
Var
s1, s2, s3, s4: String;
Значение строкового типа представляет собой последовательность символов, заключенную в
одиночные апострофы «'». Примеры:
s1 := ‘ Это- пример строки . This is a string';
s2 := '1+2=3. Это строка. Числа в строке представляют собой символы';
WriteLn(s1[3]); {Будет выведен третий символ строки s1 'o'}
8

9.

СИМВОЛЫ. СТРОКИ
Для строк определена операция соединения строк (конкатенация). При этой операции порядок
соединяемых строк важен. Например,
s1:='Соеди';
s2:='нение';
s3:=s1+s2; {s3='Соединение'}
s4:=s2+s1; {s4='нениеСоеди'}
Функция Length(s) возвращает целое число, равное числу символов в строке s, т.е. длину
строки. Например, для переменной s1 из предыдущего примера, команда
WriteLn(‘длина строки s1 = ’, Length(s1))
выведет на экран число 5.
Для работы со строками, содержащими числа, удобны функции преобразования строки в число,
и обратные функции преобразования числа в строку.
Преобразование строки в число
StrToInt(s1) – преобразует строку s1 в целое число;
StrToFloat(s2) – преобразует строку s2 в вещественное число.
Преобразование числа в строку
IntToStr(a) – преобразует целое число a в строку;
9
FloatToStr(b) – преобразует вещественное число b в строку.

10.

Пример выполнения задания:
Дана строка. Определить, сколько раз в нее входит группа букв ешь.
Решение:
1 Алгоритм задачи:
а) для поиска первого
вхождения сочетания
«ешь» используем
функцию Pos, она покажет
первый символ к;
б) дальше надо отрезать от
строки символы с первого
по к+1 и снова
воспользоваться
указанной функцией;
в) выполнять эти
действия, пока значение
Pos не станет нулевым, но
ко-гда это произошло, N
все равно увеличивается
на 1, поэтому печатаем N
– 1.
1. Начало;
2. Ввод (S);
3. N=0;
4. K=Pos(‘ешь’, S);
5. Пока K <> 0
выполнять
нц
K=Pos(‘ешь’, S);
Delete (S, 1, K+1);
N=N+1;
кц
6. Если N>0 то N=N+1;
7. Вывод (N-1);
8. Конец.
program stroka1;
var K, N:integer;
S:string;
begin
writeln('Введите текст');
readln(S);
N:=0;
K:=Pos('ешь', S);
while K<>0 do
begin
K:=Pos('ешь', S);
N:=N+1;
Delete (S, 1, K+1);
end;
if N>0 then N:=N-1;
writeln('В тексте ешь встречается ', N, ' раз');
end
10

11.

Пример выполнения задания:
Пример 2. Дана последовательность символов, состоящая из слов (под
словом понимается любая последовательность символов между двумя соседними пробелами). Определить количество слов, начинающихся с буквы b.
Решение
• program ex2;
begin
var str1 := ReadString('Введите текст');
var m := 0; // счетчик
if str1[1] = 'b' then inc(m); // проверка 1-го символа в строке
// проверка остальных символов
for var k := 1 to length(str1) — 1 do
if (str1[k] = ' ') and (str1[k+1] = 'b') then inc(m);
println('m =', m);
end.
11

12.

Пример выполнения задания:
Пример3. Дана строка, содержащая открывающую и закрывающую
круглые скобки. Удалить текст, расположенный между скобками, вместе со
скобками и вывести новую строку на экран.
Решение
• program ex3;
begin
var str := ReadString('Введите текст');
// определение номеров позиций открывающей и закрывающей скобок
var m := pos('(', str);
var n := pos(')', str);
delete(str, m, n — m + 1); // удаление текста между скобками
writeln(str)
end.
12

13.

Варианты для лабораторной работы:
1. Дана строка. Определить и вывести на экран количество знаков препинания в ней (точка, запятая, точка с запятой, вопросительный и восклицательный
знаки, тире, двоеточие).
2. Дана строка. Посчитать и вывести на экран количество гласных букв
в ней.
3. Дана строка. Написать программу, которая определяет, является ли
строка
1) целым числом (содержит только цифры),
2) действительным числом (содержит только цифры и десятичную
точку).
Вывести на экран соответствующее сообщение.
4. Дана строка. Написать программу, которая определяет количество
удвоенных согласных и выводит его на экран, а также сами согласные по одному разу.
5. Ввести строку, которая заканчивается точкой. Определить, сколько
пробелов в строке и удалить их. Вывести на экран количество пробелов и новую строку.
6. Ввести строку, которая заканчивается точкой. Определить, содержит
ли строка цифры и знаки арифметических операций и вывести их на экран;
если их в строке нет, вывести соответствующее сообщение.
13

14.

Варианты для лабораторной работы:
7. Дана строка, состоящая из строчных английских букв и цифр 0..9, не
содержащая пробелов. Вывести на экран подряд все цифры, встречающиеся в
строке.
8. Дана строка, содержащая открывающую и закрывающую круглые
скобки.
1) Вывести на экран все символы, расположенные между скобками.
2) Удалить все символы, расположенные между скобками:
а) оставив скобки на месте;
б) вместе со скобками.
9. Дана строка, состоящая из строчных английских букв без пробелов.
Удалить все символы, расположенные между первым и вторым вхождением
буквы ‘a’. Вывести на экран новую строку.
10. Дана последовательность символов, состоящая из слов. Удалить из
текста все слова, начинающиеся с буквы а. Вывести на экран полученную строку. Если в
тексте слова с указанным свойством отсутствуют, вывести сообщение «Нет».
14

15.

Варианты для лабораторной работы:
11. Дана строка, состоящая из слов. Определить и вывести на экран:
1) количество слов;
2) количество символов в самом коротком и самом длинном слове;
3) количество слов, содержащих одновременно буквы «у» и «е»;
4) количество слов, начинающихся с гласной буквы;
5) количество символов в первом и последнем слове.
12. Дана строка, состоящая из слов. Вывести на экран все слова:
1) начинающиеся с буквы «с»;
2) состоящие из четырех символов;
3) не содержащие гласных букв;
4) состоящие более чем из трех символов;
5) содержащие цифры.
13. Дана последовательность символов, состоящая из букв английского
алфавита без пробелов. Удалить все буквы, которые встречаются более 1 раза.
Вывести на экран полученную строку.
14. Дана последовательность символов, состоящая из слов. Если существует буква, входящая
во все слова, вывести на экран сообщение «Да», в противном случае — сообщение «Нет».
15. Дана строка, состоящая из строчных английских букв без пробелов.
Оставить в строке только первое вхождение каждого символа и вывести полученную строку15
на экран.

16.

Варианты для лабораторной работы:
16. Дана строка, состоящая из строчных английских букв без пробелов.
После каждой буквы ‘a’ вставить вторую такую же и вывести новую строку на экран.
17. Дана строка, которая содержит комментарии, расположенные между символами «(*» и «*)».
Удалить все комментарии и вывести на экран новую строку.
18. Дана последовательность символов, состоящая из слов. Определить
содержит ли строка слова, состоящие исключительно из цифр, если да, то
1) вывести эти слова на экран;
2) удалить их из строки и вывести на экран новую строку;
3) заменить все такие слова словом «число» и вывести на экран новую строку.
19. Строка содержит латинские буквы и цифры и состоит из слов, разделенных пробелами. Выполнить следующие задания:
1) определить количество слов, состоящих исключительно из букв, и вывести их на экран;
2) определить количество разных цифр, встречающихся в строке;
3) вывести на экран все слова, содержащие только цифры;
4) определить количество слов, содержащих сочетание букв adf;
5) вывести на экран все слова, содержащие удвоенные символы;
6) определить количество слов, содержащих хотя бы одну букву «z».
20. В заданной строке заменить все знаки препинания (. , — : ? !) на точку с запятой. Определить
16
и вывести на экран количество замен, а также новую строку.

17.

Варианты для лабораторной работы:
21. Строка содержит латинские буквы, цифры и открывающие и закрывающие скобки. Определить,
одинаковое ли количество открывающих и закрывающих скобок содержится в строке. Рассмотреть 3
случая:
1) строка содержит только круглые скобки;
2) строка содержит круглые и квадратные скобки;
3) строка содержит круглые, квадратные и фигурные скобки.
22. Текст состоит из слов, разделенных одним или несколькими пробелами. Отредактировать текст,
удалив лишние пробелы (удалить пробелы в начале и в конце, если они есть, и между словами
оставить по одному пробелу).
23. Дан текст из строчных латинских букв, который заканчивается точкой. Вывести на экран
1) все буквы, входящие в этот текст не менее двух раз;
2) все буквы, входящие в этот текст по одному разу.
24. Дана строка из строчных русских букв. Вывести на экран в алфавитном порядке все гласные
буквы (а, е, и, о, у, ы, э, ю, я), входящие в эту строку.
17

18.

Варианты для лабораторной работы:
25. Задан текст, состоящий из слов. Определить:
1) какие цифры содержатся в этом тексте;
2) с каких букв (русских) начинаются слова в тексте;
3) содержит ли текст другие символы, кроме латинских букв и цифр;
4) какие латинские буквы есть в каждом слове этого текста;
5) какие буквы встречаются только в одном слове этого текста.
Результаты вывести на экран.
26. В строке содержится запись арифметического выражения. Определить:
1) какие арифметические операции использованы в выражении;
2) какие цифры есть в выражении;
3) каких цифр нет в выражении;
4) есть ли в записи этого выражения скобки (круглые).
Результаты вывести на экран
18

19.

Задания к практической работе.
1 Даны целые положительные числа n1 и n2 и строки S1 и S2. Получить из этих строк
новую строку, содержащую первые n1 символов S1 и последние n2 символов строки S2.
2 Даны целое положительное число n и строка S. Преобразовать строку S в строку длины n
следующим образом: если длина S больше n, то отбросить первые символы, если меньше,
то в начало добавить «.».
3 Даны строки S1 и S2. Проверить, содержится ли S1 в строке S2.
4 Даны строки S1 и S2. Удалить из строки S1 подстроку S2, если S2 не со-держится в S1,
вывести S1 без изменений
5 Даны строки S1 и S2. Удалить из строки S1 первую подстроку S2, если S2 не содержится
в S1, вывести S1 без изменений
6 Даны строки S1 и S2. Удалить из строки S1 последнюю подстроку S2, если S2 не
содержится в S1, вывести S1 без изменений
7 Даны строки S1 и S2. Удалить из строки S1 все подстроки S2, если S2 не содержится в S1,
вывести S1 без изменений
8 Даны строки S, S1 и S2. Заменить в строке S последнюю подстроку S1 на S2, если S1 не
содержится в S, вывести S без изменений
19

20.

Задания к практической работе.
9 Даны строки S, S1 и S2. Заменить в строке S первую подстроку S1 на S2, если S1
не содержится в S, вывести S без изменений
10 Даны строки S, S1 и S2. Заменить в строке S все подстроки S1 на S2, если S1 не
содержится в S, вывести S без изменений
11 Дано полное имя файла, т.е. путь к файлу, имя и расширение. Выделить из
строки только имя файла без расширения.
12 Дано полное имя файла, т.е. путь к файлу, имя и расширение. Выделить из
строки только расширение файла без точки.
13 Дано полное имя файла, т.е. путь к файлу, имя и расширение. Выделить из
строки только имя первого каталога без символа \.
14 Дано полное имя файла, т.е. путь к файлу, имя и расширение. Выделить из
строки только имя последнего каталога без символа \.
15 Дана строка, содержащая круглые скобки. Выдать сообщение, правильно ли
расставлены скобки (количество открывающихся соответствует количеству
закрывающихся)
16 Строка содержит одно слово. Проверить, будет ли оно читаться одинаково
слева направо и наоборот.
20

21.

Задания к практической работе.
17 В строке заменить все пробелы на «_», посчитать количество замененных
символов
18 В строке заменить все пробелы на «*»,посчитать количество замененных символов
19 Дана строка. Определить, сколько в ней «,»
20 Дана строка. Определить, сколько в ней «;»
21 Удалить часть символьной строки в скобках (вместе со скобками)
22 Удалить часть символьной строки в кавычках (вместе с кавычками)
23 Дана строка, содержащая кавычки. Выдать сообщение, правильно ли расставлены
кавычки (количество открывающихся соответствует количеству закрывающихся)
24 Дана строка. Найти количество слов, начинающихся с буквы А
25 Дана строка. Найти количество слов, начинающихся с буквы А
26 Дана строка. Заменить первую букву слов, начинающихся с буквы А, на малую
букву
21

22.

Задания к практической работе.
27 Дана строка. Заменить последнюю букву слов, заканчивающихся на е,
на большую букву
28 Дана строка. Найти количество букв к.
29 Дана строка. Определить, сколько раз в нее входит группа букв ель
30 Дана строка. Определить, сколько раз в нее входит группа букв ого
22

23.

Контрольные вопросы:
1.
2.
3.
4.
5.
6.
7.
8.
Объявление строковых и символьных переменных
Строковые выражения.
Строковые операции
Что такое строка в языке Паскаль?
Чему равна длина строки в Паскале?
Операции над строками в Паскале
Стандартные функции работы со строками
Процедуры преобразования типов в Паскале
23

24.

24
English     Русский Rules