Тема: Turbo Pascal. Алгоритми і програми для обробка текстів.
Мета: Формування умінь створення програм для обробки текстів алгоритмічною мовою високого рівня Turbo Pascal.
Теоретичні відомості
Дані типу рядок – це послідовність довільних символів, взятих з обох боків штрих-символами. Змінну типу рядок оголошують за допомогою слова 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.1 Постановка задачі
Заданий текст, в якому слова розділені крапкою з комою. Вивести на друк слова тексту. Знайти кількість слів в тексті. Якщо слово містить букву “y”, то вивести це слово і вказати, на яких позиціях вона розташована. При відсутності букви “y” в слові вивести це слово і повідомлення «Букви “y” в слові немає». Скласти графічний алгоритм і програму для розв’язування даної задачі.
2.2 Графічний алгоритм показаний на рис. 16.1
2.3 Таблиця ідентифікації змінних
Змінна | slovo | rad | ksliv | pos1 | posy |
Ідентифікатор | slovo | rad | ksliv | pos1 | posy |
2.4 Програма мовою Pascal та результати обчислень
Program S_L{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));
так
ні
ні
так
ні
так
Рисунок 16.1 – Графічний алгоритм
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
3 Контрольні запитання
- Як оголошуються символьні змінні мовою Turbo Pascal?
- Скільки символів може міститись в одному програмному рядку?
- Як визначити кількість символів в тексті мовами Turbo Pascal?
- Яким програмним засобом виконується перегляд тексту по одному чи по m символів мовою Turbo Pascal?
Варіанти завдань наведені нище:
16.1. В заданому тексті знайти і вивести на друк цифри, які містяться в ньому, і їх кількість.
16.2. В заданому тексті знайти і вивести на друк кількість і номери позицій букви “А”, які містяться в ньому.
16.3. В заданому тексті знайти і вивести на друк кількість цифр і кількість букв, які містяться в ньому.
16.4. Дано текст. Підрахувати кількість малих латинських букв, які містяться в ньому до 10-го символа включно. На друк вивести ці букви і обчислену кількість.
16.5. Дано текст. Вияснити чи є він індетифікатором. Інде-тифікатор - це послідовність букв і цифр, які починаються з букви.
16.6. Дано текст. Вияснити, чи є він числом. Від’ємні числа містять на початку знак мінус.
16.7. Якщо в заданому тексті немає символа “*”, то залишити його без зміни. В противному випадку кожну латинську букву, що розташована перед першим символом “*”, замінити на крапку.
16.8. Дано текст. Якщо він не містить символа “+”, то залишити його без зміни. В противному випадку кожну цифру, яка розташована перед першим символом “+”, замінити на кому.
16.9. Дано текст, який містить букви і пропуски. Якщо в ньому немає слова “весна”, то залишити його без зміни. В противному випадку замінити всі слова “весна” на “зима”. Словом вважати послідовність букв розділених пропусками.
16.10. Дано текст, який містить букви і пропуски. Знайти і надрукувати слова і їх кількість, довжина яких перевищує 5 символів. Словом вважати послідовність букв, розділених про-пусками.
16.11. Дано текст, який містить букви і пропуски. Знайти і надрукувати слова і їх кількість, які містять по 2 букви “А”. Словом вважати послідовність букв, розділених пропусками.
16.12. Дано текст, який містить букви і пропуски. Знайти і надрукувати слова і їх кількість, які закінчуються буквосполу-ченням “ати”. Словом вважати послідовність букв, розділених пропусками.
16.13. Дано текст, який містить букви і пропуски. Знайти слова, які закінчуються буквосполученням “ати”, і замінити це буквосполучення на “али”. Словом вважати послідовність букв, розділених пропусками.
16.14. Дано текст, який містить букви і 2 символи “%”. Знайти кількість букв, розташованих між першим і другим символами “%”.
16.15. Дано текст, який містить букви і пропуски. Знайти і надрукувати слово, в якому міститься найбільше символів “А”. Словом вважати послідовність букв, розділених пропусками.
16.16. Дано текст. Якщо 5-й символ в ньому буква, то замінити його на символ “5”. В противному випадку залишити його без зміни.
16.17. Дано 3 символьні послідовності. Сформувати і надрукувати символьну послідовність, яка складається з 5 перших символів кожної послідовності.
16.18. Дано текст, в якому міститься символ “+”. Поміняти місцями послідовність символів, розташованих до нього, з послідовністю після нього. Заданий і перетворений тексти надрукувати.
|
|
16.19. Дано текст, який містить букви і пропуски. Знайти і надрукувати слово, яке складається з найменшої кількості символів. Словом вважати послідовність букв, розділених пропусками.
16.20. Дано текст. Поміняти місцями 5-й і 7-й символи. Заданий і перетворений тексти надрукувати.
16.21. Дано 2 символьні послідовності. Вилучити з першої послідовності кожний символ, що належить і другій послідовності. Надрукувати задані і утворену послідовності.
16.22. Дано текст. Відомо, що в ньому міститься щонайменше одна кома. Вивести на друк заданий текст та номер останньої по порядку коми.
16.23. Дано текст. Вияснити, чи містяться в ньому пари сусідніх букв “ав” або “ва”. Вивести на друк порядкові номери їх перших букв.
16.24. Дано текст. Вияснити, чи містяться в ньому пари сусідніх однакових букв. Вивести на друк ці пари і порядкові номери їх перших букв.
16.25. Дано текст. Перетворити його, вилучивши кожний символ “*” з тексту, і повторити кожний символ, відмінний від “*”.