Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Завдання (інструкційна картка) для лабораторної роботи
Тема дисципліни. Робота з масивами в Turbo Pascal
Інструкційна картка
лабораторного заняття № 9
Тема. Організація програм, для роботи з рядковими змінними
Мета заняття. Сформувати практичні вміння та навички створювати програми для роботи з рядковими змінними, використовувати стандартні функції та процедури для рядкових змінних, знаходити кількісні характеристики тексту, перетворювати текст, виділяти слова у тексті. Формувати якості особистості студентів та пізнавальний інтерес; показати значення теми для програмування та розвязування задач; спонукати до пізнавальної, наукової, творчої діяльності; розвивати самостійність, увагу, відповідальність та творче мислення.
Методичне забезпечення
3. Інструкційні картки.
Матеріально-технічне забезпечення
Питання для актуалізації опорних знань
Правила техніки безпеки
Перед початком роботи потрібно перевірити стан обладнання, робочого місця.
Під час роботи потрібно дотримуватися правил експлуатації компютерного обладнання.
При роботі за компютером слід дотримуватись правил особистої безпеки, зберігати відстань від рівня очей до монітора, від робочого стола до тіла.
Забороняється ходити по компютерній лабораторії, розливати рідину на підлогу, столи, обладнання, заходити з їжею, розмовляти між собою.
Загальні відомості з теми
Рядкові змінні це одномірні впаковані масиви символів, для опису яких в TURBO PASCAL уведений тип String. Наприклад, якщо рядок містить до 30 символів, її тип буде визначений як type s= String [30].
При використанні літерна константа заключається в апострофи. Максимально допустима довжина рядка 255 байт (символів).
Змінну рядкового типу можна визначити через опис типу в розділі опису типів чи безпосередньо в розділі опису змінних. Визначення рядкового типу встановлює максимальну кількість символів, що може містити рядок.
Формат
Type
<iм'я типу>=string [ максимальна довжина рядка ];
Var
<iдентифікатор,... >: <iм'я типу>;
Або
Var
<iдентифікатор,... >: string [ максимальна довжина рядка ];
Максимальну довжину рядка можна не задавати, тоді вона автоматично приймається рівною 255.
Наприклад,
Type
Adress=string [ 50 ];
Var
a: Adress; { Довжина строкової змінної a дорівнює 50 байт }
b: string; { Максимальна довжина не задана, отже довжина строковой змінної b дорівнює 255 байт }
Для визначення пам'яті в байтах, необхідної для розміщення рядка, до значення її максимальної довжини добавляємо 1. Так, для розміщення в пам'яті змінних a і b вимагає відповідно 51 і 256 байт. Додатковий байт розташований в самому початку рядка (має нульовий номер) і містить значення поточної довжини рядка. Розглянемо структуру розміщення рядка в пам'яті на прикладі. Хай M максимальна довжина рядка, L поточна довжина, A - комірка пам'яті. Тоді:
A містить величину поточної довжини;
A+1 перший символ;
...
A+L останній значущий символ;
L+1…+A+M незайняті комірки пам'яті.
До окремих символів рядка можна звернутися по номеру цього символу в рядку (як до елемента одномірного масиву). Наприклад, a [3], b [255]. Значення a(0), b(0) рівні поточній довжині змінних a і b.
Типи string і char суміснi між собою. Це означає, що в усіх тих місцях, де допустиме використання даних рядкового типу, допустиме звертання і до даних типу char, і навпаки. Необхідно тільки слідкувати за тим, щоб при присвоєннi рядкового вислову змінній типу char довжина послідовності символів була рівна 1.
1. Процедура видалення
Delete (st, m, n), де st рядок, m початкова позиція, n Кількість видаляємих символів (від початкової позиції включно).
Наприклад, запис Delete (st, 4, 3) означає, що в рядку st, починаючи із позиції 4, cлід усунути 3 символи. При цьому нова поточна довжина рядка st стане на 3 менша, ніж попередня.
Якщо значення m знаходиться поза відрізком 1... 255, виникне помилка виконання програми; якщо m більше поточної довжини рядка, жоден символ усунений не буде. Якщо кількість символів, що підлягають видаленню, перевищує реально існуючу від початкової позиції до кінця рядка, тоді буде усунений лише максимально можливий в даній ситуації фрагмент.
2. Процедура вставки
Insert (St1, St2, I), де St1 рядок, що вставляється, St2 приймаючий рядок, I позиція рядка St2, із якого починається вставка. Наприклад, запис Insert ('plain', st, 4) означає, що в рядок st треба вставити текст 'plain', починаючи із 4 позиції; при цьому символ в 4 позиції рядка st пересунеться на 5 символів праворуч.
Якщо значення I знаходиться поза відрізком 1... 255, виникне помилка виконання програми; якщо після вставки нова довжина рядка St2 перевищить її максимально допустиму довжину, значення St2 урізається до максимально допустимої довжини (виникає втрата самих правих символів). Якщо позиція вставки більше поточної довжини рядка, тоді буде мати місце проста конкатенація.
3. Процедура перетворення числового значення в рядкове
Str (I, st), де I числове значення цілого чи дійсного типів, st рядок, в який поміщається результат перетворення числа I.
Наприклад, якщо I = 5, тоді після виконання цієї процедури рядкова змінна st одержить значення '5'.
Після I може записуваватися формат (аналогічно форматам виведення). Якщо в форматі вказана недостатня для виводу кількість розрядів, місце виведення автоматично розширюєтьтся до потрібної довжини.
Наприклад, при I = 1500 після виконання процедури Str (I: 6, st) результат має вид: '1500'; при I = 4. 8e+03 після виконання процедури Str (I: 10, st) результат має вид: ' 4800'; при I = 768 після виконання процедури Str (i: 2, st) результат має вид: '768'. При завданні формату необхідно слідкувати, щоб його розмір не перевищував максимальної довжини рядка st, заданого при описі змінної st.
4. Процедура перетворення рядкового значення в числове
Val (st, I, Cod) де st рядок, I зміна цілого або дійсного типу, в якій розміщується результат перетворення рядка st, Cod цілочисельна змінна. Якщо під час операції перетворення помилки не виявлено, значення Cod рівно нулю; якщо помилка виявлена (наприклад, лiтерне значення перекладається в числове), Cod буде містити номер позиції першого помилкового символу, а значення I не визначено.
Приклади
Значення st |
Процедура |
Результат |
'1450' '14. 2e+02' '14. 2fgh' |
Val (st, I, Cod) Val (st, I, Cod) Val (st, I, Cod)? |
1450, Cod=0 1420, Cod=0 Cod=5 |
5. Функція Length (St) обчислює поточну довжину в символах рядка St. Результат має цілий тип. Наприклад, якщо St ='rte', тоді результатом функції Length (St) буде число 3.
6. Функція Copy (St, Poz, N) - виділяє із St підрядок довжиною N символів, починаючи із позиції Poz. Змінні Poz і N мають цілочисельний тип. Якщо Poz>length (St), тоді результатом буде пропуск; якщо Poz>255, виникає помилка при виконанні.
Приклади
Значення St Функція Результат
'abcdefg' Copy (St, 2, 3) 'bcd'
'abcdefg' Copy (St, 4, 10) 'defg'
7. Функція Pos (St1, St2) виявляє першу появу в рядку St2 підрядка St1. Результат має цілий тип і рівний номеру тієї позиції в рядку St2, де знаходиться перший символ підрядка St1. Якщо в St2 підрядок St1 не знайдений, то результат рівний 0. Наприклад, якщо St ='abcdef', тоді результатом функції Pos ('de', st) є число 4, а результат функції Pos ('r', St) є число 0.
8. Функція Concat (St1, St2,..., Stn) виконує зчеплення рядків St1, St2, ..., Stn в тому порядку, в якому вони вказані в списку. Cума символів всіх зчеплених рядків не повинна перевищувати 255. Наприклад, результатом функції Concat ('aa', 'xx', 'y') є літерна величина 'aaxxy'.
9. Функція Upcase (Ch) перетворює малу літеру латинського алфавіту в велику. Параметр і результат мають тип Char. Наприклад, результатом функції Upcase ('a') є символ 'a'.
Зміст роботи
Індивідуальні завдання
Створити блок-схему та програму на мові Pascal для приведеної задачі згідно варіанту:
Методичні РЕКОМЕНДАЦІЇ
Для виконання лабораторної роботи потрібно перш за все опрацювати теоретичний матеріал.
Виконати індивідуальне завдання.
Показати результат роботи викладачеві.
Скласти звіт, в якому відповісти на теоретичні питання, описати алгоритм, тобто створити блок-схему, описати програму (лістинг програми з коментарями), привести контрольний приклад виконання програми (результат роботи програми).
Здати робоче місце, а оформлений звіт викладачеві на підпис.
Під час виконання лабораторної роботи дотримуватися правил безпеки.
Приклади розвязання задач по організації програм, для роботи з рядковими змінними
Розвязання. Введемо рядкову змінну st, оголосивши її довжину за максимумом (255 байт). В цій змінній будемо вводити заданий рядок. Введемо також рядкову змінну w, в яку будемо заносити чергове слово рядка st, і цілочисельну змінну p для позначення позиції чергового пропуску.
Лістинг програми:
Program rjadok;
uses crt;
var
st: string;
w: string;
p: integer;
begin
writeln ('введiть текст, розділяючи слова пропуском: ');
readln (st);
writeln ('заданий текст: ');
writeln (st);
p: =pos (' ', st); { Знаходження позиції 1-го пропуску }
writeln;
writeln ('в текст входять слова: ');
while p>0 do
begin w: =copy (st, 1, p-1); { Виділення слова }
delete (st, 1, p); {Видалення цього слова із тексту разом з пропуском}
writeln (w); { Друк виділеного слова }
p: =pos (' ', st) { Знаходження позиції чергового пропуску }
end; writeln (st) { Друк останнього слова }
end.
Результат роботи програми:
заданий текст: це програма обробки рядків на Pascal.
в текст входять слова:
це
програма
обробки
рядків
на
Pascal
Блок-схема алгоритму
Лістинг програми:
program Stroka;
const n=100;
type STR=array[1..n] of char;
var b: STR; m, i: integer;
begin
writeln (' Введіть строку');
for i:=1 to n do
read (b[i]);
for i:=1 to n-2 do
if ((b[i]='a') and (b[i+1]='b') and (b[i+2]='c')) then Inc(m);
writeln (' Кількість входжень 'abc' у вхідний рядок m=', m);
readln; end.
Контрольні питання
Викладач ____________ М. О. Пашко
PAGE \* MERGEFORMAT 10