
- •Лабораторна робота №1
- •Завдання підвищеної складності
- •Складемо схему алгоритму
- •Контрольні питання
- •Завдання
- •Завдання підвищених труднощів
- •Лабораторна робота №3 Програмування циклічних алгоритмів
- •Загальні відомості
- •Приклади
- •Контрольні питання
- •Завдання
- •Задачки на кмітливість
- •Завдання підвищеної складності
- •Контрольні питання
- •Завдання підвищеної складності
- •Лабораторна робота 5
- •Загальні відомості
- •Приклади
- •Контрольні питання
- •Завдання
- •Завдання підвищеної складності
- •Лабораторна робота 6 Програмування з використанням безлічей
- •Загальні відомості
- •Приклад
- •Контрольні питання
- •Завдання
- •Завдання підвищеної складності
- •Лабораторна робота 7 Програмування з використанням типу запис
- •Загальні відомості
- •Приклад
- •Контрольні питання
- •Завдання
- •Завдання підвищеної складності
- •Лабораторна робота 8 Програмування з використанням процедур і функцій
- •Загальні відомості
- •Контрольні питання
- •Приклад
- •Завдання
- •Завдання підвищеної складності
- •Лабораторна робота 9 Робота з файлами
- •Загальні відомості
- •Приклад
- •Контрольні питання
- •Завдання
- •Завдання підвищеної складності
- •Завдання:
- •Завдання підвищеної складності
Лабораторна робота 5
Теоретический материал |
Справочник по процедурам и функциям |
Ціль роботи: познайомити з поняттям "стринг" і виробити навички роботи із символьною інформацією в мові програмування Pascal навчитися використовувати рядки символів і безлічі при рішенні завдань.
Загальні відомості
Змінні типу String аналогічні масивам типу Char. Їхньою відмінністю є те, що число символів (довжина рядка) може динамічно мінятися в інтервалі від одиниці до заданого верхнього значення.
Перед виконанням роботи необхідно ознайомитися із правилами опису й використання рядків, припустимих операцій над ними, що відповідають стандартними процедурами й функціями.
Приклади
Приклад1. Дано текст, слова в якому, можуть розділятися пробілами, комами, крапками й т.д. Потрібно надрукувати всі слова з подвоєною буквою "н". Етапи рішення завдання:
Розіб'ємо завдання на кілька блоків а) Формування тіла програми, оголошення змінних; б) Уведення тексту; в) Очищення тексту від "непотрібних" символів до першого слова; г) Обчислення довжини першого слова; д) Пошук у слові букви "н"; е) Підрахунок вартим рядом букв "н"; ж) Печатка знайденого слова; з) Видалення першого слова; і) Якщо текст не закінчився повернення до пункту (в).
Реалізуємо ці блоки на Паскале
a)
program example1;
var st, st1:string;
i,j,k,n:integer;
flag:boolean;
const
znak=[' ','.',',',':',';','!','?'];
begin
end.
Призначення змінних:
t-t- містить уведений текст
st1 - зберігає перше слово тексту
i,j,k,n - допоміжні змінні
flag - указує, що дане слово шукане
б) writeln('Уведіть текст'); readln(st);
в) repeat
while st[1] in znak do delete(st,1,1);
г) i:=1 while (not (st[i] in znak)) and (i<=length(st)) do inc(i);
st1:=copy(st,1,i-1);
flag:=false;
д) while (pos('н',st1)>0) and (not flag) do begin
е) j:=pos('н',st1); n:=j; k:=0;
while st1[n]='н' do begin inc(n); inc(k); end;
if k=2thenflag:=true;
delete(st1,j,k)
end;
ж) if flag then writeln(copy(st,1,i-1));
з) delete(st,1,i);
и) until st='';
Приведемо програму цілком:
program example1;
var st, st1:string;
i,j,k,n:integer;
flag:boolean;
const
znak=[' ','.',',',':',';','!','?'];
begin
writeln('Уведіть текст');
readln(st);
repeat
while st[1] in znak do delete(st,1,1);
i:=1;
while (not (st[i] in znak)) and (i<=length(st)) do inc(i);
st1:=copy(st,1,i-1);
flag:=false;
while (pos('н',st1)>0) and (not flag) do begin
j:=pos('н',st1); n:=j; k:=0;
while st1[n]='н' do begin inc(n); inc(k); end;
if k=2thenflag:=true;
delete(st1,j,k)
end;
ifflagthenwriteln(copy(st,1,i-1));
delete(st,1,i);
untilst='';
readln;
end.
Контрольні питання
Як описуються строкові змінні?
Яка максимальна довжина рядка припустима в Pascal?
Які операції припустимі над строковими даними?
У чому відмінність строкової змінної від масиву символів?
Які стандартні процедури й функції для роботи з рядками ви знаєте?
Що виведе функція Copy(x,Pos(' ',x)+1,18), якщо x='Сила є - розуму не треба'?
Чому дорівнює значення x[0] після присвоювання x:='питання'?