
- •Практикум до навчальної практики з дисципліни «Алгоритми та структури даних»
- •Пояснювальна записка
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Зміст і послідовність виконання завдань.
- •Методичні рекомендації з виконання та оформлення.
- •Варіанти до завдання 3
- •Варіанти до завдання 4
- •Варіанти до завдання 5
- •Контрольні питання.
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Зміст і послідовність виконання завдань.
- •Методичні рекомендації з виконання та оформлення.
- •Варіанти до завдання 3
- •Варіанти до завдання 4
- •Контрольні питання.
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Зміст і послідовність виконання завдань.
- •Методичні рекомендації з виконання та оформлення.
- •Варіанти до завдання 3
- •Варіанти до завдання 4
- •Варіанти до завдання 5
- •Контрольні питання.
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Зміст і послідовність виконання завдань.
- •Методичні рекомендації з виконання та оформлення.
- •Варіанти до завдання 3
- •Варіанти до завдання 4
- •Варіанти до завдання 5
- •Контрольні питання
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Зміст і послідовність виконання завдань.
- •Методичні рекомендації з виконання та оформлення.
- •Варіанти до завдання 3
- •Варіанти до завдання 4
- •Варіанти до завдання 5
- •Контрольні питання
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Зміст і послідовність виконання завдань.
- •Методичні рекомендації з виконання та оформлення.
- •Варіанти до завдання 3
- •Варіанти до завдання 4
- •Варіанти до завдання 5
- •Контрольні питання
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Зміст і послідовність виконання завдань.
- •Методичні рекомендації з виконання та оформлення.
- •Варіанти до завдання 3
- •Варіанти до завдання 4
- •Контрольні питання
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Зміст і послідовність виконання завдань.
- •Методичні рекомендації з виконання та оформлення.
- •Варіанти до завдання 3
- •Варіанти до завдання 4
- •Контрольні питання
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Зміст і послідовність виконання завдань.
- •Методичні рекомендації з виконання та оформлення.
- •Варіанти до завдання 3
- •Варіанти до завдання 4
- •Контрольні питання
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Зміст і послідовність виконання завдань.
- •Методичні рекомендації з виконання та оформлення.
- •Варіанти до завдання 3
- •Варіанти до завдання 4
- •Контрольні питання
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Операції над множинами
- •Зміст і послідовність виконання завдань.
- •Методичні рекомендації з виконання та оформлення.
- •Варіанти до завдання 3
- •Варіанти до завдання 4
- •Контрольні питання
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Зміст і послідовність виконання завдань.
- •Методичні рекомендації з виконання та оформлення.
- •Варіанти до завдання 3
- •Варіанти до завдання 4
- •Контрольні питання
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Розглянемо деякі функції модуля Graph:
- •Зміст і послідовність виконання завдань.
- •Методичні рекомендації з виконання та оформлення.
- •Варіанти до завдання 3
- •Варіанти до завдання 4
- •Контрольні питання
- •Короткі теоретичні відомості з теоретичної частини роботи.
- •Контрольні питання
- •Рекомендована література
- •Додаткова
- •Порядок виконання і захист робіт
Контрольні питання
Дайте визначення поняттю масив.
Як їх оголошують двовимірний масив? Наведіть приклади.
Як визначають кількість елементів у масиві? Наведіть приклади.
Як здійснюється доступ до елементів масиву?
У чому ви бачите подібність одновимірного й двовимірного масивів?
ІНСТРУКЦІЙНА КАРТКА №7
до навчальної практики
з дисципліни «Алгоритми та структури даних»
Тема. Складені структури даних: рядки.
Мета: навчитися розробляти алгоритми та програми складених структур даних, рядків.
Матеріально-технічне оснащення робочого місця:
Інструкційна картка;
ПК.
Короткі теоретичні відомості з теоретичної частини роботи.
В Turbo Pascal мається можливість розробки програм з розвинутими алгоритмами обробки текстової інформації завдяки підтримці мовою стандартного символьного (Char) та спеціального строкового (String) типів.
Значення типу Char – не пустий символ із алфавіту ПЕОМ. Його можна представити:
- в одинарних лапках (наприклад ‘а’);
- кодом ASCII за допомогою префікса # (наприклад #97);
- за допомогою функції Chr (наприклад Chr (97)).
Рядки – це динамічні структури, які мають довжину в межах границь, оголошених при їх описанні, наприклад:
Var
S1 : String[10]; { довжина рядка до 10 символів }
S2 : String; { довжина рядка до 255 символів }
Максимальна довжина рядка – 255 символів. Опис String без вказівки довжини відповідає опису String[255].
Рядки можна описувати як типізовані константи.
При записі у змінну типа String рядка більшої довжини, ніж оголошено, надлишок “відсікається”.
Рядки різної довжини сумісні по привласненню і порівнянню.
Операції над символами. Символи можна привласнювати та порівнювати одне з одним. Символи вважаються рівними, якщо рівні їх ASCII коди; більшим є символ з більшим ASCII кодом.
Символи можна розглядати як елементи множини Set of Char та застосовувати для неї операцію перевірки на включення in:
Var ch:Char;
BEGIN
. . .
ch:=‘a’; if ch in [‘a’..’z’] then . . .
. . .
END.
Стандартні функції, які застосовуються до символьних значень та змінних, подаються нижче:
Chr(X: Byte): Char - повертає символ ASCII-коду X;
Ord(C: Char): Byte - повертає ASCII-код символу С;
Pred(C: Char): Char - видає попередній С символ;
Succ(C: Char): Char - видає наступний після С символ;
UpСase(C: Char): Char - переводить латинські символи до верхнього регістру.
Операції над рядками. Рядки можна привласнювати, об’єднувати та порівнювати.
При привласнені рядків використовується складний символ :=.
При об’єднані рядків використовується символ +.
Порівнювання рядків відбувається посимвольно. Рядки вважаються рівними, якщо мають однакову довжину та посимвольно еквівалентні. Якщо при посимвольному порівнянні виявиться, що один символ більший іншого (його код більший), то рядок, який його утримує, також вважається більшим. Залишки рядків та їх довжини не грають при цьому ролі.
Стандартні підпрограми для роботи з рядками подаються нижче:
Length(S:String):Byte |
– видає поточну довжину рядка; |
Concat(S1, ..., Sn):String |
– повертає об’єднання рядків; |
Copy(S:String; Start,Len:Integer):String |
- повертає підрядок довжиною Len, який починається з позиції Start рядка S; |
Delete(Var S:String; Start,Len:Integer) |
- вилучає із S підрядок довжиною Len, який починається з позиції Start рядка S; |
Insert (Var S:String; SubS:String;Start:Integer) |
- вставляє в S підрядок SubS, починаючи з позиції Start; |
Pos(SubS,S:String):Byte |
- шукає входження підрядка SubS у рядку S та повертає номер першого символу SubS в S або 0, якщо S не містить SubS |
Str (X[:F[:n]];Var S:String) |
- перетворює чисельне значення Х у строкове S. Можливо задання формату для Х; |
Val(S:String;Var X; Var ErrCode:Integer) |
- перетворює строкове значення S (рядок цифр) у чисельне значення Х. |
Для підтримки операцій з ASCIIZ-рядками до комплекту постачання Borland Pascal включено стандартний модуль Strings з наступними функціями:
|
StrCat |
– додає один рядок до кінця другого рядка та повертає вказівник на результуючий рядок; |
|
|
---|---|---|---|---|
|
StrComp |
– порівнює два рядки S1 та S2. Якщо S1<S2, то результатом буде від’ємне число; якщо S1=S2, то результатом буде 0; якщо S1>S2, то результатом буде додатне число; |
|
|
|
StrCopy |
– копіює значення одного рядка в інший. Повертає вказівник на початок результуючого рядка; |
|
|
|
StrDispose |
– знищує рядок, розподілений раніше за допомогою функції StrNew; |
|
|
|
StrECopy |
– копіює значення одного рядка в інший. Повертає вказівник на кінець результуючого рядка; |
|
|
|
StrEnd |
– повертає вказівник на нульовий символ, який завершує рядок; |
|
|
|
StrIComp |
– порівнює два рядки аналогічно StrComp, але без різниці регістра символів; |
|
|
|
StrLCat |
– приєднує початковий рядок до кінця цільового рядка. При цьому довжина результуючого рядка не перевищує заданого максимуму. Вказівник повертається на рядок-результат; |
|
|
|
StrLComp |
–порівнює два рядки з заданою максимальною довжиною; |
|
|
|
StrLCopy |
– копіює задане число символів із початкового рядка в результуючий рядок і повертає вказівник на результуючий рядок; |
|
|
|
StrLen |
– повертає довжину рядка; |
|
|
|
StrLIComp |
– порівнює два рядки з заданою максимальною довжиною без різниці регістра символів; |
|
|
|
StrLower |
– перетворює рядок в нижній регістр та повертає вказівник на нього; |
|
|
|
StrMove |
– переміщає послідовність символів із початкового рядка в цільовий рядок та повертає вказівник на цільовий рядок; |
|
|
|
StrNew |
– виділяє для рядка пам’ять в динамічно розподіленій області; |
|
|
|
StrPas |
– перетворює рядок, який завершується нулем, в рядок Паскаля; |
|
|
|
StrPCopy |
– копіює рядок Паскаля в рядок, який завершується нулем, та повертає вказівник на останній рядок; |
|
|
|
StrPos |
– повертає вказівник на перше входження заданого подрядка в рядок, або nil, якщо шуканий підрядок в рядку не міститься; |
|
|
|
StrRScan |
– повертає вказівник на останнє входження вказаного символу в рядок, або nil, якщо символ в рядку відсутній; |
|
|
|
StrScan |
– повертає вказівник на перше входження вказаного символу в рядок, або nil, якщо символ в рядку відсутній; |
|
|
|
StrUpper |
– перетворює рядок в верхній регістр та повертає вказівник на нього. |
|
|
Приклади запису рядка алгоритмічною мовою 1)Підрахунок заданого символа в тексті |
та в Turbo Pascal: 2)Заміна одного символа на інший |
|||
АЛГ ціл ps (літ Т, В) ПОЧ ціл і, dl, k dl:=довжин(Т); k:=0 для і від 1 до dl пц якщо T[i, 1]=B то k:=k+1 все кц ps:=k КІН |
АЛГ літ zs (літ Т, В1, В2) ПОЧ ціл і, dl dl:=довжин(Т) для і від 1 до dl пц якщо T[i, 1]=В1 то T[i, 1]:=B2 все кц zs:=T КІН |
Мовою Паскаль функції мають вигляд
begin c:=0; for i:=1 to length (S) do if S[i]=b then c:=c+1; count:=c; end; |
begin for i:=1 to length (S) do if S[i]=a then S[i]:=b; Replace:=S; end; |