Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ.РОБОТИ-1 семестр.doc
Скачиваний:
1
Добавлен:
10.11.2019
Размер:
713.22 Кб
Скачать

3. Контрольні запитання

  1. З якою метою використовуються підпрограми-процедури?

  2. Що таке формальні і фактичні параметри в процедурах?

  3. Як оформляється процедура мовою програмування Pascal?

  4. Яка різниця між зовнішньою і внутрішньою процедурами?

5. Як формується звернення до підпрограми-процедури мовою програмування Pascal?

6. Поясніть, як і куди здійснюється вихід з підпрограми-процедури?

Лабораторна робота №14

Тема: Алгоритми і програми для обробка текстів.

Мета: Формування умінь створення програм для обробки текстів на алгоритмічній мові високого рівня Pascal.

1. Теоретичні відомості

Дані типу рядок – це послідовність довільних символів, взятих з обох боків штрих-символами. Змінну типу рядок оголошують за допомогою слова string :

var <змінна> : string[n];

де n – довжина рядка , n<256. Довжину рядка можна не зазначати.

Над даними типу рядок визначені такі стандартні функції та процедури:

length(<рядок>) - визначає кількість символів у рядку;

copy(r,m,n) - дає n символів рядка r , починаючи з символу з номером m ;

concat(r1,r2,…,rn) - з’єднує рядки r1,…,rn в один рядок;

pos(r1,r2) - визначає номер символу, з якого починається входження рядка r1 у рядок r2.

insert(r1,<змінна>,n)–вставляє рядок r1 у рядок,заданий змінною,починаючи з позиції n;

delete(<змінна>,m,n) - вилучає n символів з рядка, заданого змінною, починаючи з позиції m ;

str(<число>,<змінна>) – переводить числове дане в дане типу рядок;

val(r1,s1,s2) – засилає у числову змінну s1 числовий образ рядка r1 .

Є два способи опрацювання даних типу string . Перший – можна опрацьовувати весь рядок як єдине ціле, застосовуючи до нього функції та процедури, другий – можна розглядати рядок як масив, складений з елементів-символів, і опрацьовувати його за правилами роботи з елементами масиву.

2. Хід роботи

2.1. Постановка задачі

Заданий текст, в якому слова розділені крапкою з комою. Вивести на друк слова тексту. Знайти кількість слів в тексті. Якщо слово містить букву “y” , то вказати, на яких позиціях вона знаходиться. При відсутності букви “y” в слові вивести це слово і повідомлення “Букви “y” в слові немає”. Скласти графічний алгоритм і програму для розв’язування даної задачі.

2.2. Графічний алгоритм показаний на рис.1.

ні

так

так

ні

ні

так

так

ні

Рис.1. Графічний алгоритм

2.3. Таблиця ідентифікації змінних

Змінна

slovo

rad

ksliv

pos1

posy

Ідентифікатор

slovo

rad

ksliv

pos1

posy


2.4. Програма мовою Pascal та результати обчислень

Program sumvol;

Var

pos1,posy:integer;

slovo,rad:string;

ksliv:integer;

Begin

writeln('Введіть текст, в якому слова розділені символом ";" :');

read(rad);

ksliv:=0;

while pos(';',rad)>0 do

begin

pos1:=pos(';',rad);

if pos1=1 then

rad:=copy(rad,pos1+1,length(rad));

if pos1>1 then

begin

slovo:=copy(rad,1,pos1-1);

rad:=copy(rad,pos1+1,length(rad));

posy:=pos('у',slovo);

write('слово: ',slovo);

if posy>0 then

writeln(' ---> буква "у" в слові розташована на позиції ',posy)

else

writeln(' ---> букви "у" в слові немає ');

end;

ksliv:=ksliv+1;

end;

writeln('Кількість слів у тексті, розділених символом ";" =',ksliv);

End.

Результат виконання програми:

Введіть текст, в якому слова розділені символом ";" :

цибуля;огірочок;квасоля;грушка;морква;петрушка;

слово: цибуля ---> буква "у" в слові розташована на позиції 4

слово: огірочок ---> букви "у" в слові немає

слово: квасоля ---> букви "у" в слові немає

слово: грушка ---> буква "у" в слові розташована на позиції 3

слово: морква ---> букви "у" в слові немає

слово: петрушка ---> буква "у" в слові розташована на позиції 5

Кількість слів у тексті, розділених символом ";" = 6