- •Для студентів I курсу денної форми навчання зі спеціальності 6.080200 – «інформатика» (у тому числі скорочений термін навчання)
- •Лабораторна робота №1 Програмування лінійних алгоритмів.
- •Контрольні питання:
- •Задачі.
- •Лабораторна робота №2 Програмування алгоритмів, що розгалужуються
- •Лабораторна робота №3
- •Задачі.
- •Лабораторна робота №4 Програмування циклічних алгоритмів (продовження)
- •Контрольні питання
- •Задачі.
- •Лабораторна робота 5 Програмування з використанням масивів
- •Контрольні питання
- •Лабораторна робота 6. Програмування з використанням записів
- •Змінні типу String аналогічні масивам типу Char. Їхньою відмінністю є те, що число символів (довжина рядка) може динамічно змінюватися в інтервалі від одиниці до заданого верхнього значення.
- •Контрольні питання
- •Лабораторна робота 7 Програмування з використанням множин
- •Контрольні питання
- •Лабораторна робота 8 Програмування з використанням типу запис
- •Приклад. Дано два раціональних числа, опишіть їх, використовуючи структуру даних запис (чисельник, знаменник). Скоротити їх, знайти їх суму. Етапи рішення програми:
- •Контрольні питання
- •Лабораторна робота 9 Програмування з використанням процедур і функцій
- •Контрольні питання
- •Задачі.
- •Лабораторна робота 10 Робота з файлами
- •Контрольні питання
- •Лабораторна робота 11 Графіка в Turbo Pascal
- •Процедури і функції модуля craph Процедури.
- •Функції.
- •GraphResult Повертає значення GrOk, що відповідає коду 0, якщо всі графічні операції програми виконалися без помилок, чи повертає числовий код помилки (від -1 до -14).
- •Приклад. Побудувати правильний n - кутник.
- •Лабораторна робота 12 Контрольна робота
- •Контрольні питання
- •Література
- •39614, М. Кременчук, вул Першотравнева, 20
Лабораторна робота 6. Програмування з використанням записів
Мета роботи. Познайомитися з поняттям "стринг" і виробити навички роботи із символьною інформацією в мові програмування Pascal навчитися використовувати рядки символів і множини при рішенні задач.
Змінні типу String аналогічні масивам типу Char. Їхньою відмінністю є те, що число символів (довжина рядка) може динамічно змінюватися в інтервалі від одиниці до заданого верхнього значення.
Перед виконанням роботи необхідно ознайомитися з правилами опису і використання рядків, припустимих операцій над ними, що відповідають стандартними процедурами і функціями.
Приклад. Дано текст, слова в якому, можуть розділятися пробілами, комами, точками. Потрібно надрукувати всі слова з подвоєною буквою "н". Етапи рішення задачі:
-
Розіб'ємо задачу на кілька блоків а) Формування тіла програми, оголошення змінних;
program example7;
var st, st1:string; i,j,k,n:integer; flag:boolean;
const znak=[' ','.',',',':',';','!','?'];
Призначення змінних: 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=2 then flag:=true;
delete(st1,j,k)
end; ж) Друк знайденого слова;
if flag then writeln(copy(st,1,i-1)); з) Видалення першого слова;
delete(st,1,і);
і) Якщо текст не закінчився повернення до пункту (в).
until st='';
-
Реалізуємо ці блоки на Паскале. Приведемо програму цілком:
program example7;
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=2 then flag:=true;
delete(st1,j,k)
end;
if flag then writeln(copy(st,1,i-1));
delete(st,1,i);
until st='';
end.
Контрольні питання
-
Як описуються строкові змінні?
-
Яка максимальна довжина рядка припустима в Pascal?
-
Які операції припустимі над строковими даними?
-
У чому відмінність строкової змінної від масиву символів?
-
Які стандартні процедури і функції для роботи з рядками ви знаєте?
-
Що виведе функція Copy(x,Pos(' ',x)+1,18), якщо x='Сила є - розуму не треба'?
-
Чому дорівнює значення x[0] після присвоювання x:='питання'?
Задачі
Обробка тексту: У наступних завданнях під словом "текст" розуміється рядок символів, що розділені пробілами, ",", ".", "!", "?", ";" ,":" (одним чи кількома).
-
Заданий текст. а) Підрахувати кількість слів у даному рядку. б) Підрахувати кількість букв "а" в останнім слові даного рядка. в) Знайти кількість слів, що починаються з букви "б". г) Знайти кількість слів, у яких перший і останній символи збігаються між собою. д) Знайти довжину самого короткого слова.
-
Скласти програму циклічної перестановки букв у словах тексту так, що i-я буква слова стає i+1-ої, а остання - першої.
-
У кожнім слові тексту заміните "а" на букву "е", якщо "а" стоїть на парному місці, і замінити букву "б" на сполучення "ак", якщо "б" стоїть на непарному місці.
-
Ворошиловград одержав нову назву - місто Луганськ. Написати програму, що здійснює в деякому тексті заміну слова "Ворошиловград" словом "Луганськ" (врахувати, що слова мають різну довжину!)
-
Дано текст, що містить від 2 до 30 слів, у кожнім з який від 2 до 10 латинських букв; між сусідніми словами - не менш одного пробілу. Надрукувати всі слова, відмінні від останнього слова, попередньо перетворивши кожне з них за наступним правилом: 1) перенести першу букву в кінець слова; 2) перенести останню букву в початок слова.
-
Відредагувати задане пропозиції тексту, видаляючи з нього всі слова з непарними номерами і перевертаючи слова з парними номерами. Наприклад, HOW DO YOU DO -> OD OD
-
Дано текст. Надрукувати всі слова, відмінні від останнього слова, попередньо перетворивши кожне з них за наступним правилом: 1) залишити в слові тільки перші входження кожної букви; 2) якщо слово непарної довжини, то видалити його середню букву
-
Написати програму для підрахунку суми місць, на яких у словах тексту розташована задана буква.
-
Скласти таблицю слів даного тексту, що починаються з букви "А", із указівкою числа повторень кожного слова.
-
Скласти програму для викреслювання зі слів тексту всіх букв, що розташовані на непарних місцях після букви "а". Задачі на кмітливість
-
Скласти програми для перекладу арабських чисел у римські і для зворотної операції. Наприклад, 255 = CCLV = сто + сто + п'ятдесят + п'ять.
-
Автоморфними називаються числа, що містяться в останніх розрядах їхнього квадрата. Наприклад: 52=25, 252=625. Скласти програму для знаходження автоморфних чисел.
-
Підрахувати, скільки букв треба виправити в слові Х, щоб вийшло слово Y (Х,Y - слова однакової довжини).
-
Яке мінімальне число букв необхідно замінити в слові X для того, щоб воно читалося однаково як зліва на право так і навпаки?
-
Скласти програму для підрахунку числа однакових букв у словах X і Y рівної довжини, що розташовані на тих самих місцях.
-
Задано визначену кількість конкретних сполучень букв (наприклад, УЩ, ЮЩ і ін.). Визначити, скільки таких груп символів міститься в тексті, що вводиться з клавіатури.
-
З клавіатури вводиться текст. Підрахувати і вивести на друк кількість слів тексту, що починаються з голосної.