Стандартные процедуры и функций для строк




Обработка символьных массивов

На языке TURBO PASCAL

 

Методические указания к выполнению лабораторных работ

по курсу “Программирование и основы алгоритмизации”

для студентов специальности 210100

дневной, вечерней и заочной форм обучения

 

 

Одобрено

редакционно-издательским советом

Балаковского института техники,

технологии и управления

 

 

Балаково 2007

Цель работы – освоение методов обработки символьных массивов на языке программирования Turbo Pascal.

 

ОСНОВНЫЕ ПОНЯТИЯ

 

Операции над символами

Для хранения и обработки символов исполь­зуются переменные типа Char. Значением пере­менной символьного типа может быть любой отобра­жаемый символ:

- буква русского или латинского алфавитов;

- цифра;

-знак препинания;

Переменная символьного типа должна быть объявлена в разделе объ­явления переменных. Объявляется символьная переменная в разделе пере­менных:

var

<Имя переменной>: char;

Примеры:

var

Sim1,sim2: char;

Как и любая переменная программы, пере­менная типа char может по­лучить значение в ре­зультате выполнения оператора присваивания. Если переменная типа char получает значение в результате выполнения опера­ции присваивания, то справа от знака:= должно стоять выражение типа char, например, переменная типа char или сим­вольная константа — сим­вол, заключенный в апострофы.

c1:= '*';

с2:= c1;

Переменная c1 получает значение присваиванием значения константы, а переменная с2 — присваи­ванием значения переменной cl.

Переменную типа char можно сравнить с другой переменной типа char или с символьной константой. Сравнение основано на том, что каждо­му символу поставлено в соответствие число из кодовой таблицы ASC II

'0'<'1'<...<'9'<...<'A'<'B'<...<'Z'<'a'<'b'<...<'z'

Символам русского алфавита соответствуют числа большие, чем символам латинского алфа­вита, при этом справедливо следующее:

'А'<'Б'<'В'<…<'Ю'<'Я'<'а'<'б'<'в'<...<'э'<'ю'<'я'

Пример:

‘В’>’А’ ( ASCII-код символа ‘А’=65, символа ‘В’=66)

‘а’>’А’ ( ASCII-код символа ‘а’=91)

‘А’=’А’

Функции, которые могут применяться к символам

ü Chr(x) - возвращает символ, соответствующий ASC II-коду числа Х.

Выражение Результат

Chr(65) ‘А’

 

ü Ord(ch)- возвращает число, соответствующее символу ch в ASCII-таблице.

Выражение Результат

Ord(‘А’) 65

 

ü Pred(ch)- возвращает символ, который предшествует в ASCII-таблице символу ch.

Выражение Результат

Pred(‘В’) ‘А’

 

ü Succ(ch)- возвращает символ, который следует в ASCII-таблице за символом ch.

Выражение Результат

Succ(‘А’) ‘В’

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

Строка - это последовательность символов ASCII. При использова­нии в выражениях строка заключается в апострофы. Количество символов в строке может динамически изменяться в пределах от 0 до 255. Для опре­деления данных строкового типа используется идентификатор string, за ко­торым следует заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если это значение не указывается, то по умолчанию длина строки принимается равной 255 байт.

var

st1: string[100];

st2: string[80];

st3: string;

Строковые данные могут использоваться в программе в качестве констант, например:

const

address=’ул. Ленина, дом 100, кв.3’

Выражения, в которых операндами служат строковые данные, назы­ваются строковыми. Они состоят из строковых переменных, констант, ука­зателей и знаков операций. Над строковыми данными допустимо выпол­нять операции сцепления и отношения.

Операция сцепления (+) применяется для объединения нескольких строк в одну результирующую строку, например:

Выражение Результат

'Turbo'+' Pascal' 'Turbo Pascal'

Операции отношения =, <>, >, <, >=, <= сравнивают строковые опе­ранды и имеют приоритет ниже, чем у операций сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и больше считается та строка, в которой первый несовпадающий символ имеет больший номер в таблице ASCII. Результат выполнения операций отношения над строковыми операндами имеет булевский тип.

Выражение Результат

‘MS DOS’<’MS Dos’ true

Если строки имеют разную длину, но в общей части символы совпа­дают, считается, что более короткая строка меньше, чем более длинная. Строки считают равными, если они полностью совпадают по длине и со­держат одни и те же символы.

Выражение Результат

‘MS DOS’<’MS DOS ’ true

Для присвоения строковой переменной результата строкового выра­жения используют оператор присвоения (:=).

St1:= ‘MS’;

St2:= ‘DOS’;

St3:=St1+St2;

Если длина переменной после выполнения операции присвоения превышает в описании величину, то все лишние символы отбрасываются.

Вводятся и выводятся строки с помощью стандартных процедур ввода и вывода.

Readln(st);

Writeln(st);

К отдельным символам строки можно обратиться по индексу данного символа в строке. Индекс определяется выражением целочисленного типа, которое записывается в квадратных скобках сразу после идентифика­тора строковой переменной или константы. Например: Address[4] обеспе­чивает доступ к четвертому символу ’Л’, Address[11] – к одиннадцатому символу ’д’.

При помощи записи Address[0] можно получить доступ к нулевому байту, содержащему текущую длину строки. Значение текущей длины строки, можно получить и с помощью функции length(st)

Все остальные действия над строками и сим­волами реализуются с помощью описываемых ниже стандартных процедур и функций.

 

Стандартные процедуры и функций для строк

ü Length(st) – определяет текущую длину строки st. Результат имеет целочисленный тип.

Значение Выражение Результат

‘абвгде’ Length(st) 6

‘река Волга’ Length(st) 10

 

ü Delete (st,Poz, N) - удаляет N символов начиная с позиции Poz из строки st. Если значение Poz>255, возникает программное прерывание.

Значение Выражение Результат

‘абвгде’ Delete (st,4, 2) ‘абве’

‘река Волга’ Delete (st,1, 5) ‘Волга’

ü Insert (St1, St2, Poz) - вставляет подстроку St1 в строку St2, начиная с позиции Poz.

St2:= ‘MS’;

St1:= ‘ DOS’;

Выражение Результат

Insert (St1, St2, 3) ‘ MS DOS

Insert (St1, St2, 5) ‘MS DOS’

ü Copy(St, Poz, N) – выделяет из строки St N симво­лов, начиная с символа с позиции Poz. Если Poz>Length(st), то результатом будет ноль. Если Poz>255, то возникает ошибка. Poz и N целочисленные числа.

Значение Выражение Результат

‘абвгде’ Copy(St, 4,2) ‘гд’

река Волга’ Copy(St, 6,5) ‘Волга’

 

ü Concat(St1,St2,..., StN) – выполняет сцепление строк St1, St2,..., StN в том порядке, в котором они указаны в списке параметров.

Выражение Результат

Concat(‘XX’,’YY’,’ZZ’) ‘XXYYZZ’

Concat(‘река’,’ Волга’) ‘ река Волга’

 

ü Pos (St1, St2) – обнаруживает первое появление в строке St2 подстроки St1. Результат целочисленного типа и равен номеру той позиции, где находится первый символ подстроки St1. Если подстрока не найдена, то результат ноль.

Значение Выражение Результат

‘абвгде’ Pos (‘вг’, St2) 3

‘абвгде’ Pos (‘с’, St2) 0

 

ü Str(X, St) - преобразует число X и помещает в строку St. После X можно записать формат, аналогично формату вывода. Если в формате указано недостаточное для вывода количество разрядов, поле вывода автоматически расширяется до нужной длины.

Значение Выражение Результат

1500 Str (Х:6, St) ‘__1500’

-1500 Str (Х:6, St) ‘_-1500’

78902 Str (Х:3, St) ‘78902’

 

ü Val(St, X, code) - преобразует значение St в величину целочислен­ного или вещественного типа и помещает результат в переменную X. Значение St не должно содержать незначащих пробелов в конце и в начале. Code – целочисленная переменная. Если операция преобразования не привела к ошибке, то значение Code равно нулю. В случае ошибки (литерное значение переводится в цифровое) Code будет содержать номер позиции первого ошибочного символа, а значение X будет неопределенно.

Значение Выражение Результат

‘1500’ Val(St, X, code) code=0

‘1500 ’ Val(St, X, code) code=5

’14.5Е+02’ Val(St, X, code) code=0

’15.4А+02’ Val(St, X, code) code=5

 

ü Upcase (ch) – преобразует строчную букву в прописную. Обрабаты­ваются только буквы латинского алфавита. Если значением ch яв­ляется любой другой символ (в том числе строчная буква русского алфавита), функция возвращает его без преобразования.

Значение Выражение Результат

‘r’ Upcase (ch) ‘R’

'w’ Upcase (ch) ‘W’

 

 

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

 

Номер варианта выбирается по порядковому номеру студента в спи­ске группы. По проведенному заданию требуется:

1. Определить порядок реализации вычислений.

2. Составить графическую схему алгоритма.

3. Записать программу на языке Turbo Pascal.

4. Выполнить расчеты на ЭВМ.

5. Написать отчет по лабораторной работе.

Примеры выполнения

 

Пример 1. Посчитайте количество символов ‘о’ в строке, выведите на экран позиции, на которых они находятся. Затем замените эти символы на ‘!’.

program stroka;

var str: string;

i: integer;

begin

writeln('введите строку');

readln(str);

n:=0;

for i:=1 to length(str) do if str[i]='o' then

begin

n:=n+1;

write(‘ ‘,i);

str[i]='!';

end;

writeln(str);

writeln(‘n=’,n);

end.

Пример 2. Найдите все цифры в строке, укажите их позиции и удалите их из строки.

program stroka;

var str: string;

i: byte;

begin

read(str);

for i:=1 to length(str) do if (ord(str[i])>=48) and (ord(str[i])<=57) then begin

write(‘ ‘,i);

delete(str,i,1);

end;

writeln(str);

end.

 

Пример 3. Определите количество слов в строке, в котором одно сло­во от другого отделяется пробелом. Выведите слова на экран.

program stroka;

var str,str1: string;

i,n,n1,n2: byte;

begin

read(str);

n:=0;

n2:=0;

for i:=1 to length(str) do if (str[i]=' ') or (str[i]='.') then

begin

n:=n+1;

n1:=n2+1;

n2:=i;

str1:=copy(str,n1, n2-n1);

writeln(str1);

end;

writeln(‘n=’,n);

end.

 

ВАРИАНТЫЗАДАНИЙ

 

1. Выведите на экран позиции, на которых находится буква ‘е’. Посчи­тайте их количество.

2. Создайте из четных символов строки st1 строку str2 и из нечетных сим­волов строку str3.

3. В строке, состоящей из русских букв, подсчитайте количество гласных прописных и строчных букв.

4. Поменяйте местами первый и послед­ний символы строки.

5. Удалите из строки пробелы, запятые и точки, другие символы продублируйте.

6. Выведите на экран все цифры встречающиеся в строке. Найдите их произведение.

7. Вставьте в строку после каждого символа про­бел. Вывести на экран ре­зультат.

8. Переверните строку так, чтобы пер­вый символ стал последним и так да­лее. Новую строку выведите на экран.

9. Из введенной строки создайте три строки, состоящих из: прописных английских букв, из строчных английских букв и других символов данной строки.

10. Посчитайте количество слов в строке и выведите длину каждого слова.

11. Замените первые буквы в каждом слове строки на заглавные буквы.

12. Посчитайте сумму всех цифр, встречающихся в строке.

13. Дана строка, в которой имеются несколько букв а. Найти порядковый номер первой и последней из них.

14. Отсортируйте символы строки по возрастанию их номеров в таблице ASC II.

15. Удалите из второй строки все символы, которые встречаются в первой строке, и поместите их в третью строку.

16. Создайте новую строку из символов введенной строки, стоящих на каждой третьей позиции.

17. Даны две строки (одинаковой длины). Создайте третью строку из символов, которые на одинаковых позициях совпадают.

18. В строке, состоящей из латинских букв, подсчитайте количество глас­ных букв.

19. Задано существительное первого склонения, оканчивающееся на ‘а’. Напечатайте это слово во всех падежах.

20. Из строки удалите все символы, совпадающие с последним символом.

21. Выведите на экран самое короткое слово из введенной строки.

22. Напишите программу, которая вводит строку и выводит ее, сокращая каждый раз на 1 символ до тех пор, пока в строке не останется 1 сим­вол.

23. Введите два целых числа. Преобразуйте числа в две строки, объедини­те их в одну строку и выведите результат на экран.

24. Выясните, какая из букв - первая или последняя - встречается в строке чаще.

25. Вычислите суммы позиций, на которых в слове стоят буквы ‘п’ и ‘т’.

26. Посчитайте число различных символов в слове.

27. Слово состоит из двух частей одинаковой длины и соединительной гласной. Найдите обе части этого слова.

28. Выведите на печать подстроку, заключенную между двумя запятыми.

29. Замените в строке все цифры на следующую по порядку цифру. Цифру 9 заменить на цифру 0.

30. *Найти количество слов в строке, сравнить их между собой и вывести на экран по возраста­нию.

31. *Вводятся два слова. Проверти, являются ли они анаграммой, то есть можно ли из всех букв первого слова, составить второе слово.

32. *Найти в строке слова, являющиеся переверты­шами, то есть те которые читаются слева на­право и справа налево одинаково. Например «комок».

 

СОДЕРЖАНИЕ И ОФОРМЛЕНИЕ ОТЧЕТА

 

Отчет оформляется в текстовом редакторе Word на бумаге формата А4 ГОСТ 6656-76 (210х297 мм) и содержит:

1. название работы;

2.цель работы.

3. задание;

4. графическую схему алгоритма;

5. программу на языке TURBO PASCAL;

6. результаты вычисления.

 

ВОПРОСЫДЛЯ САМОКОНТРОЛЯ

 

1. Что такое строка?

2. Каким идентификатором определяются данные строкового типа?

3. Какова максимальная длина строки? Как определить текущую дли­ну строки?

4. Какие выражения называются строковыми?

5. Какие операции допустимы над строковыми данными?

6. Каким образом производится сравнение строк?

7. Какие требования предъявляются к записи выражений с операнда­ми строкового типа?

8. Как обратиться к отдельным символам строки?

9. Объясните назначение специальных строковых процедур и функ­ций. Приведите примеры.

 

ВРЕМЯ, ОТВЕДЕННОЕ НА ВЫПОЛНЕНИЕ РАБОТЫ

 

Подготовка к работе - 1 акад. ч.

Выполнение работы - 1 акад. ч.

Расчеты на ЭВМ - 1 акад. ч.

Оформление работы - 1 акад. ч.

 

 

ЛитЕратура

 

  1. Алексеев Е.Р. Turbo Pascal 7.0. Численные методы. – М.: АСТ, 2004.
  2. Гусева А.И. Учимся программировать: Pascal 7.0. Задачи и методы их решения. – М.: Диалог-МИФИ, 1997.
  3. Емелина Е.И. Основы программирования на языке Паскаль. – М.: Финансы и статистика, 1997.
  4. Епанешников А.М., Епанешников В.А. Программирование в среде TURBO PASCAL 7.0. - М.: Диалог-МИФИ, 1996.
  5. Немнюгин С.А. Turbo Pascal. – СПб.: Питер, 2001.
  6. Попов В.Б. TURBO PASCAL 7.0. -М.: Финансы и статистика, 1996.
  7. Попов В.Б. Turbo Pascal для школьников. - М.: Финансы и статисти­ка, 2001.
  8. Турбо Паскаль 7.0.- К.: Торгово-издательское бюро BHV, 1996.
  9. ГОСТ 19.701-90. Единая система программной документации. Схе­мы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: