- •Лабораторна робота № 1
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота № 2
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота №3
- •Теоретичні відомості.
- •2. Хід роботи
- •3. Контрольні запитання
- •Лабораторна робота №4
- •1. Теоретичні відомості
- •2. Хід роботи
- •3. Контрольні запитання
- •Лабораторна робота №5
- •1. Теоретичні відомості
- •2. Хід роботи
- •3. Контрольні запитання
- •Лабораторна робота №6
- •1. Теоретичні відомості
- •2. Хід роботи
- •3. Контрольні запитання
- •Лабораторна робота №7
- •1. Теоретичні відомості
- •2. Хід роботи
- •3. Контрольні запитання
- •Лабораторна робота №8
- •1. Теоретичні відомості
- •2. Хід роботи
- •3. Контрольні запитання
- •Лабораторна робота №9
- •1. Теоретичні відомості
- •2. Хід роботи
- •3. Контрольні запитання
- •Лабораторна робота №10
- •Теоретичні відомості.
- •2. Хід роботи
- •3. Контрольні запитання
- •Лабораторна робота №11
- •1. Теоретичні відомості
- •2. Хід роботи
- •3. Контрольні запитання
- •Лабораторна робота №12
- •1. Теоретичні відомості
- •2. Хід роботи
- •3. Контрольні запитання
- •Лабораторна робота №13
- •1. Теоретичні відомості
- •2. Хід роботи
- •3. Контрольні запитання
- •Лабораторна робота №14
- •1. Теоретичні відомості
- •2. Хід роботи
- •3. Контрольні запитання
- •Лабораторна робота №15
- •1. Теоретичні відомості
- •2. Хід роботи
- •3. Контрольні запитання
3. Контрольні запитання
З якою метою використовуються підпрограми-процедури?
Що таке формальні і фактичні параметри в процедурах?
Як оформляється процедура мовою програмування Pascal?
Яка різниця між зовнішньою і внутрішньою процедурами?
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