Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PASСAL_a4_2007.doc
Скачиваний:
31
Добавлен:
13.09.2019
Размер:
2.51 Mб
Скачать

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

Операция склеивания (конкатенации)

Символьные строки можно "склеивать" между собой с помощью операции "+" (ее принято называть операцией конкатенации).

Например, выполнение группы операторов

a1 := 'ма'; a2 := 'шина';

b := a1 + a2;

приведет к тому, что переменной b будет присвоено значение 'машина'.

Функция определения длины строки

length(st : String) : Integer;

возвращает значение типа Integer, равное длине строки.

Функция выделения фрагмента строки

copy(st : String; n1,n2 : byte) : string;

возвращает значение типа String - фрагмент исходной строки, начинающийся с номера n1 и содержащий n2 символов.

Процедура удаления фрагмента

delete(var st : String; n1, n2 : byte);

приводит к удалению из исходной строки фрагмента, начинающегося с номера n1 и содержащего n2 символов.

Процедура вставки фрагмента

insert(fragment: String; var st : String; n : byte);

приводит к вставке указанного фрагмента (fragment) в исходную строку (st), начиная с номера n.

Функция поиска фрагмента

pos(fragment, st : string) : Integer;

возвращает значение типа Integer, содержащее номер символа, начиная с которого фрагмент совпадает с частью строки. Если же фрагмент не содержится в строке, то возвращаемое значение равно 0.

2. Практика

Задание 1

Скопируйте в Ваш каталог файлы obrstr1.pas, obrstr2.pas, obrstr3.pas и obrstr4.pas из каталога PAS_TXT. Запустите среду Turbo Pascal.

Задание 2

Считайте с диска файл с именем obrstr1.pas. Он представляет собой программу поиска всех букв "а" и печать номеров позиций этих букв в строке символов. Запустите эту программу, введите строку, содержащую нужные символы, и убедитесь, что программа работает правильно.

Модифицируйте программу так, чтобы:

а) подсчитывалось и печаталось число букв "а";

б) учитывались еще и заглавные буквы "А".

Задание 3

Считайте с диска файл с именем obrstr2.pas. Он содержит программу замены всех букв "а" на "б". Модифицируйте программу так, чтобы происходила еще и обратная замена, например слово "баба" превращалось в "абаб". Сделайте то же с учетом заглавных букв.

Задание 4

В файле obrstr3.pas находится программа поиска в строке всех заданных фрагментов. Разберите, в чем ее отличие от предыдущих программ. Модифицируйте программу так, чтобы вместо фрагмента "мама" отыскивался фрагмент "ма" (в слове "мама" он должен обнаруживаться дважды).

Задание 5

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

Модифицируйте программу так, чтобы слово "мама" заменялось словом "бабушка". С какой проблемой вы столкнулись?

Напишите программу замены всех вхождений данного фрагмента на другой.

  • Продемонстрируйте преподавателю выполненные задания.

Задание 6

Выйдите из среды Turbo Pascal. Удалите из Вашего каталога файлы obrstr1.pas, obrstr2.pas, obrstr3.pas и obrstr4.pas.

Вопросы для контроля

  1. Для чего используются строковые типы данных?

  2. Как ввести строку?

  3. Как вывести строку в заданное место экрана? С нужным количеством символов?

  4. Что означает описание var kuku : string[80]; ?

  5. Какие из следующих описаний являются неправильными и почему:

const v=121;

r=300;

var a: string[20]; e: string[0];

b: string[r-100]; f: string[r];

c: string[v]; g: string;

d: string[v-200]; h: string[r/v];

6. Как можно занести значение в переменную типа string?

7. Исходя из заданных объявлений переменных укажите, что будет выдано на экран дисплея в результате выполнения следующих фрагментов:

var str: string[25];

str1: string[11];

str2: string[8];

str3: string[20];

i,j: integer;

. . .

а)

str1:='Миссисипи';

j:=pos('си',str1);

i:=pos('бу',str1);

writeln(i,j);

for i:=1 to length(str1) do

if str1[i]='и' then

str1[i]:='o';

writeln(str1);

б)

str:='А у вас в квартире газ?'

str3:='';

for i:=1 to length(str) do

if str[i]<>' ' then

str3:=str3+str[i];

writeln(str3);

. . .

в)

str2:='компания';

str:='непьющих';

str3:='гетер';

str1:=copy(srt2,1,4)+

copy(str,1,3)+

copy(str3,3,2);

writeln(str1);

. . .

г)

str:='фантаст';

j:=length(str);

writeln(j);

str:=str+'ика';

writeln(length(str));

. . . . . .

д)

str:='';

write(length(str));

for j:=1 to 3 do

str:=str+'xa-';

writeln(str,length(str));

. . .

е)

str1:='сосиска';

delete(str1,3,2);

write(str1);

insert(str1,'исоч',4);

write(str1);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]