Разработка алгоритма, отладка и тестирование программы обработки текстовой информации
Цель работы: Получить навыки в составлении алгоритма и отладке программы обработки данных строкового типа
Теоретические положения:
Строка – это последовательность символов кодовой таблицы ASCII, заключенная в апострофы (одинарные кавычки), длинной от 0 до 255 символов.
Тип STRING (строка символов) в языке Pascal широко используется для обработки текстовой информации. Он во многом похож на одномерный массив символов. Массив символов имеет фиксированную длину(количество элементов), которая определяется при описании (VarC:array [0..N] ofchar).
Способы описания строк
Varимяперем : string[n]; |
Typeимятипа=string[n]; Var имя перем : имя типа; |
где n-максимальное количество символов в строке (по умолчанию n =255). Может быть любой константой порядкового типа.
Ввод строк осуществляется процедурой Readln. За одну процедуру можно ввести только одну строку. К символу строки можно обратиться как к элементу одномерного массива. Любой символ занимает в оперативной памяти 1 байт. Самый первый байт в строке имеет индекс 0 и содержит текущую длину строки.
Например:
Var st : string[11]; x:byte;
Begin
Readln(st); {вводстроки st=’молоко’}
if st[ 5 ]=’A’ then . . .
x:= ord(st[0]);{x – текущаядлинастроки}
...
End.
6 | м | о | л | о | к | о |
i = 0 1 2 3 4 5 6 7 8 9 10 11 (номер байта)
Операции над строками
1) Объединение строк (конкатененация)à+
|
|
Например:
Var s,s1,s2: string;
S1:=’ком’;S2:=’пот’;
S:=S1 + S1; {s=‘компот’}
2) Сравнение строк (>, <, <=, >=, = <>)
Выполняется посимвольное сравнение строк по кодам таблицы ASCII.
Стандартные строковые процедуры и функции :
Имя и параметры | Типы параметров | Тип результата | Действие | ||||
Функции | |||||||
Length(s) | string | integer | опеределяет длину строки s | ||||
Copy(s,i,n) | s - string, in - integer | string | Выделяет из строки s подстроку начиная с позиции i длиной n символов | ||||
Pos(s1,s) | s1, s - string | integer | возвращает позицию первого вхождения подстроки s1 в строку s (или 0 если подстрока не найдена) | ||||
Concat(s1,..., sn) | s1,..., sn - string | string | Объединяет строки s1,..., sn в одну строку | ||||
IntToStr(i) | i - integer | string | преобразует целое число i в строку символов | ||||
StrToInt(s) | s - string | integer | преобразует строку s в целое число | ||||
FloatToStr(r) | r - real | string | преобразует вещественное число r в строку символов | ||||
StrToFloat(s) | s - string | real | преобразует строку s в вещественное | ||||
UpCase(c) | c - char | char | возвращает символ c, преобразованный к верхнему регистру | ||||
LowCase(c) | c - char | char | возвращает символ c, преобразованный к нижнему регистру | ||||
UpperCase(s) | s - string | string | возвращает строку s, преобразованную к верхнему регистру
| ||||
LowerCase(s) | s - string | string | возвращает строку s, преобразованную к нижнему регистру | ||||
Trim(s) | s - string | string | возвращает копию строки s с удаленными лидирующими и заключительными пробелами | ||||
TrimLeft(s) | s - string | string | возвращает копию строки s с удаленными лидирующими пробелами | ||||
TrimRight(s) | s - string | string | возвращает копию строки s с удаленными заключительными пробелами | ||||
Процедуры | |||||||
Delete(s,i,n) | s - string, i,n - integer |
| удаляет в строке sn символов начиная с позиции i | ||||
Insert(s1,s,i) | s, s1 - string, i - integer |
| вставляет подстроку s1 в строку s с позиции i | ||||
SetLength(s,n) | s - string, n - integer |
| устанавливает длину строки s равной n | ||||
Str(x,s) Str(x:n,s) Str(x:n:m,s) | s - string, x - integer, realn, m - integer |
| преобразует число x в строку s (во втором и третьем случаях согласно формату вывода, устанавливаемому n и m) | ||||
Val(s,v,c) | s - string, v - integer, real c - integer |
| преобразует строку s к числовому представлению v. Если преобразование возможно, то c= 0, иначе c- ненулевое значение | ||||
Пример::Дана непустая последовательность слов. Слова разделены пробелом, в конце строки -точка. Вывести слова предложения.
| Program stroka; Var St,Sl:string; l,i:integer; Begin writeln('введите строку'); readln (St); l:=length(St); Sl:=''; for i:=1 to l do if (St[i]=' ') or (St[i]='.') thenbegin writeln(Sl) ; Sl:=''; end else Sl:=Sl+St[i]; end. Результаты: введите строку мама мыла раму. мама мыла раму |
Порядок выполнения работы:
- Для загрузки интегрированной среды запустите файл - РascalABC.exe.
- Создайте новый файл для ввода текста программы: меню Файлà пункт Новый(Ctrl+N) или кнопка на панели инструментов Новый файл.
- В окне для ввода текста программы наберите свою программу. После заголовка программы в комментарии напишите условие задания.
- Запустите программу на выполнение: меню Программа àпункт Выполнить или кнопка Выполнить на панели инструментов
- Сохраните программу: меню Файлàпункт Сохранить какàукажите место сохранения файла и имя файла.àV:\группа\студент\задача _номер
Содержание отчёта:
8. Шифр работы
9. Название работы
10. Цель работы
|
|
11. Условие задачи
12. Блок-схема алгоритма
13. Текст программы
14.
Из окна вывода |
Результат решения
Контрольные вопросы:
- Что называется строкой ?
- Какой тип переменной в Турбо Паскале широко используется для обработки текстов.
- Можно ли не указывать количество символов в объявлении переменной ?
- Какой индекс имеет самый первый байт в строке ?
- Может ли количество символов в объявлении переменной быть любой константой порядкового типа, если да, то какое имеет значение ?
- Какой функцией осуществляется удаление N строки St, начиная с позиции Poz ?
- Назначение функции Сopy?
- Что будет содержать переменная Rez в функции VAL, если во время операции преобразования будут обнаружены ошибки ?
Индивидуальные задания:
Вариант №1
Удалить пробелы в заданной строке.
Вариант №2
Дана строка, содержащая текст. Найти длину самого короткого слова и самого длинного слова и вывести эти слова.
Вариант №3
Составить под программу, которая подсчитывает для заданного текста количество слов, начинающихся с буквы «А». Слова разделены пробелом, в конце «.». В основной программе обработать два текста.
Вариант №4
Дана последовательность, содержащая произвольное количество слов. Слова разделены пробелом, за последним точка. Перенести первую букву каждого слова в его конец.
Вариант №5
Дана последовательность слов. Количество слов произвольное. Слова разделены пробелом, за последним точка. Удалить из каждого слова все предыдущие вхождения последней буквы.
Вариант №6
Дана последовательность слов. Количество слов произвольное. Слова разделены запятой, за последним точка. Напечатать эту последовательность, но в обратном порядке.
Вариант №7
Дано число в двоичной системе счисления. Перевести его в шестнадцатеричную систему счисления.
Вариант №8
Дано предложение. Слова разделены запятой, за последним точка. Вывести слова, начинающиеся и оканчивающиеся одинаковым символом.
Вариант №9
Дана последовательность слов. Количество слов произвольное. Слова разделены запятой, за последним точка. Удалить из каждого слова первую букву.
Вариант №10
Вести строку. Построить результирующую, состоящую из символов исходной строки с нечетными значениями кодов, отсортированными в порядке обратном алфавитному.
Вариант №11
Заданы две строки знаков: одна длиной 80, а другая не более 80. Определить количество вхождений второй строки в первую в качестве подстроки.
Вариант №12
Дана последовательность слов. Количество слов произвольное. Слова разделены запятой, за последним точка. Напечатать все слова в алфавитном порядке.
Вариант №13
Дана последовательность слов. Количество слов произвольное. Слова разделены пробелами, за последним точка. Напечатать слова максимальной длины.
Вариант №14
Строка символов содержит перечень слов, разделенных пробелом. Напечатать текст, составленный из последних литер всех слов списка.
Вариант №15
Определить количество вхождений в строку последнего символа.
Вариант №16
Дана последовательность символов. Заменить в строке все заданные символы на заданный.
Вариант №17
В строке имеется единственный фрагмент, заключенный в круглые скобки. Определить количество составляющих его символов.
Вариант №18
В строке, среди знаков, которой могут встречаться открывающие и закрывающие скобки, проверить равенство числа открывающих скобок числу закрывающих.
Вариант №19
Дана последовательность, содержащая произвольное количество слов. Слова разделены пробелом, за последним точка. Удалить из каждого слова последнюю букву.
Вариант №20
Дана последовательность слов. Количество слов произвольное. Слова разделены запятой, за последним точка. Напечатать все слова, которые встречаются в последовательности по одному ряду.
Вариант №21
Дана последовательность слов. Количество слов произвольное. Слова разделены пробелом, за последним точка. Напечатать слова, у которых первая буква слова входит в него еще раз.
Вариант №22
Дано предложение. Вывести слова, начинающиеся на гласную букву.
Вариант №23
Дана последовательность слов. Количество слов произвольное. Слова разделены пробелом, за последним точка. Если слово нечетной длины, то удалить его среднюю букву.
Вариант №24
Дано число в двоичной системе счисления. Перевести его в восьмеричную систему счисления.
Вариант №25
Дана последовательность слов. Количество слов произвольное. Слова разделены пробелом, за последним точка. Удалить из последовательности повторяющиеся слова.
Вариант №26
В строке заменить второй справа заданный символ на другой.
Вариант №27
Дана последовательность слов, слова разделены пробелами, за последним точка. Напечатать все симметричные слова последовательности.
Вариант №28
Строка символов содержит перечень слов, разделенных пробелами. Напечатать слово из этого списка, которое по алфавиту предшествует всем другим словам (считать, что все слова различны).
Вариант №29
Дана последовательность слов. Количество слов произвольное. Слова разделены пробелом, за последним точка. Удалить из каждого слова все предыдущие вхождения первой буквы.
Вариант №30
Дан текст, представленный массивом строк. Заменить каждую точку троеточием и подсчитать количество замен.
Вариант №31
Дана последовательность слов. Количество слов произвольное. Слова разделены пробелом, за последним точка. Напечатать слова, буквы которых упорядочены по алфавиту.
Вариант №32
Дана последовательность слов. Количество слов произвольное. Слова разделены пробелом, за последним точка. Напечатать слова, которые не содержат повторяющихся букв.
Вариант №33
Строка символов содержит несколько предложений, каждое из которых заканчивается точкой, восклицательным или вопросительным знаком. Определить количество предложений и длину каждого из них в символах.
Вариант №34
Заменить заданную подстроку в исходной строке на другую подстроку. Заменяемая и заменяющая подстрока задаются строками, которые могут иметь разную длину.
Вариант №35
Дана последовательность слов. Количество слов произвольное. Слова разделены пробелом, за последним точка. Напечатать слова, каждая буква в которых встречается два и более раза.
Вариант №36
Дана строка символов. Определить процент вхождения каждого символа в строку.
Лабораторная работа №4
Дата добавления: 2018-06-26; просмотров: 400; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!