Цель работы: освоить строковые операции, процедуры и функции; научиться создавать программы обработки текстовых данных.
Общие сведения
Для обработки текстовой информации можно использовать те же методы, что применяют для одномерных массивов, так как структура строкового типа схожа с массивом. Однако для упрощения написания программ по работе с текстами были разработаны стандартные строковые процедуры и функции. Поэтому основной задачей этой лабораторной работы является освоение строковых операций, функций Length, Pos, Copy и процедур Delete, Insert.
Перед выполнением работы необходимо ознакомиться с теоретическим материалом по теме «Обработка литерных величин. Данные типа Char и String» ([1], с. 73-82).
Пример 1. Составить программу обработки данной строки, позволяющую выписать все знаки сравнения и все скобки, сохранив их последовательность.
Решение. Все знаки сравнения и скобки перечислим в строковой константе srav_sk. В теле программы последовательно рассмотрим все символы введенной строки s, проверяя каждый на вхождение в строку srav_sk, выводя на экран содержащиеся в строковой константе символы строки s.
program string_1;
const srav_sk=’=(){}[]’;
var s:String; i:Integer;
begin
Writeln(‘Введите строку:’); Readln(s);
for i:=1 to Length(s) do
if Pos(s[i],srav_sk)0 then write(s[i]);
Readln
end.
Пример 2. Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Составить программу обработки данной строки, выводящую через запятую слова четной длины, которые при обмене местами левой и правой половины дают то же слово (например, папа, мама, канкан).
Решение. В строке, последовательно перебирая элементы, будем выделять начало ns и конец ks каждого слова, копировать слово в другую строковую переменную, а затем проверять четность длины и равенство частей строки slovo. Слова, для которых выполнено условие задания будем склеивать в переменной otv. После добавления к ответу последнего слова в конце otv будет лишняя запятая, которую перед выводом на экран необходимо удалить.
program string_2;
var s,slovo,otv:String; ns,ks,i,m:Integer;
begin
Writeln(‘Введите строку:’); Readln(s);
i:=1; ns:=1; otv:=»; s:=s+’ ‘;
while i
begin
while (i
ks:=i; slovo:=Copy(s,ns,ks-ns); {выделяем слово}
m:=Length(slovo) div 2; {половина длины слова}
if (Length(slovo) mod 2=0) and (Copy(slovo,1,m)=Copy(slovo,m+1,m))
{если слово имеет четную длину}
then otv:=otv+slovo+’,’; {добавляем слово к ответу}
while (i
ns:=i; {начало следующего слова}
end;
Delete(otv,Length(otv),1); {удаляем лишнюю запятую в конце}
Writeln(otv);
Readln
end.
Варианты заданий
Задание 1. Составить программу обработки данной строки, позволяющую:
1)найти количество гласных букв в тексте (учитывать и прописные, и строчные буквы);
2)выписать все гласные буквы из данной строки, сохранив их последовательность (учитывать и прописные, и строчные буквы);
3)выписать все прописные буквы из данной строки в порядке их следования;
4)определить, каких строчных согласных в тексте больше – глухих или звонких;
5)найти количество прописных букв в тексте;
6)определить, содержатся ли в тексте цифры;
7)выписать все цифры, встречающиеся в тексте, сохранив их последовательность;
8)найти количество строчных согласных букв в тексте;
9)найти общее количество круглых, квадратных и фигурных скобок в тексте;
10)выписать из данной строки все символы, отличные от пробелов и букв латинского алфавита, сохранив их последовательность;
11)выписать все знаки препинания из данной строки, сохранив их последовательность;
12)выписать из данной строки все символы, отличные от круглых, квадратных и фигурных скобок, сохранив их последовательность.
Задание 2. Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Составить программу обработки данной строки, выводящую через запятую:
1)слова, одинаково читающиеся справа налево и слева направо;
2)слова текста с удвоенными буквами, например: класс, сумма, ссылка;
3)слова, содержащие одинаковое количество гласных и согласных букв;
4)слова заданной длины, в которые входит данная буква;
5)слова, состоящие из одинаковых символов (например, ааа, ееее и т.п.);
6)слова-аббревиатуры, состоящие только из прописных букв;
7)слова, в которых нет глухих согласных;
8)слова, содержащие хотя бы одну гласную;
9)слова, начинающиеся с прописной буквы, в которых все остальные буквы строчные;
10)слова, которые начинаются и заканчиваются одной и той же буквой и содержат хотя бы одну букву а;
11)слова, которые содержат ровно три буквы а;
12)слова, состоящие из букв латинского алфавита.
ПРИЛОЖЕНИЕ
Гласные строчные буквы: a, e, o, u, i, y
Гласные прописные буквы: A, E, O, U, I, Y
Звонкие согласные (указаны только строчные): b, d, g, j, n, m, r, v, z, w
Глухие согласные (указаны только строчные): c, f, h, k, l, q, p, s, t, x
Десятичные цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Дополнительные задания
1.Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Составить программу обработки данной строки, позволяющую:
a)определить количество слов в строке;
b)удалить из строки избыточные пробелы, чтобы между словами осталось только по одному пробелу;
c)найти самое короткое слово и его длину;
2.Инициалы. В строке через пробел указаны имя, отчество и фамилия. Записать строку в следующей форме: фамилия, пробел, инициалы. Например, строка «Александр Иванович Смирнов» должна превратиться в текст «Смирнов А.И.».
3.Дата. Проверить, является ли данная строка верной записью даты в форме ДД.ММ.ГГ. Считать, что в каждом месяце года 30 дней.
Контрольные вопросы
1.Как описываются в языке Паскаль строковые величины?
2.В чем сходство и в чем различие между массивами и строками?
3.Существуют ли ограничения, накладываемые на длину строки?
4.Какие строковые процедуры существуют в языке Паскаль?
5.Перечислите строковые функции.
ЛИТЕРАТУРА
1. Касторнов А.Ф. Евстратова Г.А. Язык программирования Паскаль: Учеб. пособие. – Череповец, 2010.
2. Немнюгин С.А. Turbo Pascal: Программирование на языке высокого уровня: Учебник для вузов. – СПб.: Питер, 2007.
3. Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Учебник для вузов. – СПб.: Питер, 2004.
4. Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Практикум. – СПб.: Питер, 2006.
5. Ставровский А.Б. Турбо Паскаль 7.0: Учебник для вузов. – Киев, 2001.
6. Фаронов В.В.Система программирования Delphi. – СПб., 2006.
7. Фаронов В.В. Турбо Паскаль 7.0: Практика программирования: учебное пособие.-М.: ОМД Групп, 2003.
8. Программирование на языке Паскаль: задачник / под ред. Усковой О.Ф. – СПб.: Питер, 2002.
9. Юркин А.Г. Задачник по программированию. – СПб.: Питер, 2002.
Статьи к прочтению:
- Обращаться по любым вопросам, связанным с деятельностью комитета, в руководящие органы молодежного комитета;
- Обратная связь по входу шифртекста fbc
Процедуры и функции для строковых величин
Похожие статьи:
-
Распределенная обработка данных.
Распределенная обработка данных — обработка данных, проводимая в распределенной системе, при которой каждый из технологических или функциональных узлов…
-
Обработка данных в потоке. конвейер
Ввод и вывод. Перенаправление ввода и вывода Каждая программа работает с данными определенного типа: текстовыми, графическими, звуковыми и т. п. Основной…