Разработка алгоритма, отладка и тестирование программы обработки текстовой информации



Цель работы: Получить навыки в составлении алгоритма и отладке программы обработки данных строкового типа

 

Теоретические положения:

Строка – это последовательность символов кодовой таблицы ASCII, заключенная в апострофы (одинарные кавычки), длинной от 0 до 255 символов.

Тип STRING (строка символов) в языке Pascal широко используется для обработки текстовой информации. Он во многом похож на одномерный массив символов. Массив символов имеет фиксированную длину(количество элементов), которая определяется при описании (VarC:array [0..N] ofchar).

 

Способы описания строк

Varимяперем : string[n];  
1.

 

Typeимятипа=string[n]; Var имя перем : имя типа;  
2.

 

 

где 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- ненулевое значение
           

Пример::Дана непустая последовательность слов. Слова разделены пробелом, в конце строки -точка. Вывести слова предложения.

 

ВводSt
l=length(St); sl=’’
начало
i=1,l,1
(St[i]=’ ‘ )or (St[i])=’.’
ВsводSl
sl=’’  
Sl=Sl+St[i]
конец

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. Результаты: введите строку мама мыла раму. мама мыла раму
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.   Результаты: введите строку мама мыла раму. мама мыла раму

Порядок выполнения работы:

 

  1. Для загрузки интегрированной среды запустите файл  - РascalABC.exe.
  2. Создайте новый файл для ввода текста программы: меню Файлà пункт Новый(Ctrl+N) или кнопка на панели инструментов Новый файл.
  3. В окне для ввода текста программы наберите свою программу. После заголовка программы в комментарии напишите условие задания.
  4. Запустите программу на выполнение: меню Программа àпункт Выполнить или кнопка Выполнить на панели инструментов
  5. Сохраните программу: меню Файлàпункт Сохранить какàукажите место сохранения файла и имя файла.àV:\группа\студент\задача _номер

Содержание отчёта:

8. Шифр работы

9. Название работы

10. Цель работы

11. Условие задачи

12. Блок-схема алгоритма

13. Текст программы

14.

Из окна вывода  
Исходные данные

             Результат решения

 

Контрольные вопросы:

  1. Что называется строкой ?
  2. Какой тип переменной в Турбо Паскале широко используется для обработки текстов.
  3. Можно ли не указывать количество символов в объявлении переменной ?
  4. Какой индекс имеет самый первый байт в строке ?
  5. Может ли количество символов в объявлении переменной быть любой константой порядкового типа, если да, то какое имеет значение ?
  6. Какой функцией осуществляется удаление N строки St, начиная с позиции Poz ?
  7. Назначение функции Сopy?
  8. Что будет содержать переменная 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; просмотров: 75; ЗАКАЗАТЬ РАБОТУ