рядок.
Pos(r1,r2) – визначає номер символу, з якого починається входження рядка r1 у рядок r2.
Та процедури:
Insert(r1,<змінна>, n) – вставляє рядок r1 у рядок, заданий змінною, починаючи з позиції n.
Delete(<змінна>, m, n) – вилучає n символів з рядка, заданого змінною, починаючи з позиції m.
Str(<число>, <змінна>) – переводить числове дане в дане типу рядок.
Val(r1, s1, s2) – засилає у числову змінну s1 числовий образ рядка r1. якщо це можливо, то змінна s2 отримує значення 0, інакше – числове значення номера першого недопустимого символу заданого рядка, де зазначена змінна посилає в процедуру вхідне дане типу рядок і отримує назад інщий рядок – результат виконання процедури.
25. структура процедури. Локальні і глобальні змінні. Механізм передачі параметрів.
Загальний опис процедури:
procedure<назва> (<список формальних параметрів>);
<розділи описів і оголошення процедури>;
Begin <розділ команд процедури>
End;
У списку формальних параметрів перераховують змінні разом із зазначенням їх типів. Розрізняють параметри-аргументи(параметри-значення) – вхідні дані для процедури, і параметри-результати(параметри-змінні), через які можна повертати результати роботи в основну програму. Перед списками параметрів результатів кожного типу записують слово var. Зауважимо, що масиви фіксованих розмірів у списках формальних параметрів не можна описувати за допомогою слова array. Розділи описів і оголошення у підпрограмах мають таку саму структуру як і в основній програмі. Процедуру викликають за допомогою команди виклику:
<назва процедури> (<список фактичних параметрів>);
Параметри, які записують у команді виклику процедури називаються фактичними. Фактичними параметрами-аргументами можуть бути сталі, змінні, вирази, а параметрами-результатами – лише змінні. Між фактичними і формальними параметрами має бути відповідність за кількістю і типами. Відповідні фактичні і формальні параметри можуть мати різні імена. Команда виклику функціонує так: значення фактичних параметрів присвоюються відповідним формальним параметрам процедури, виконується процедура, визначаються параметри-результати, значення яких надаються(повертаються) відповідним фактичним параметрам у команді виклику.
Змінні, описані в розділі описів основної програми, називаються глобальними. Вони діють у всіх підпрограмах, з яких складається програма. Змінні, описані в розділі описів конкретної процедури називаються локальними. Вони діють тільки в межах конкретної процедури. Процедури можуть отримувати і повертати значення не твльки через параметри-результати, а й через глобальні змінні. Тому списки параметрів у процедурі може й не бути.
26. Структура функцій. Рекурсивні функції.
Функція, на відміну від процедури, може повертати в місце виклику лише один результат простого стандартного типу.
Загальний опис функції:
Function <назва> (<список формальних параметрів>): <тип функції> ;
<розділів описів і оголошень функції> ;
Begin <розділ команд функцій, де має бути така команда: назва:=вираз>
End;
У розділі команд функції має бути команда присвоєння значення деякого виразу назві функції. Результат функції повертається в основну програму через її назву (як і у випадку використання стандартних функцій). Виклик функції здійснюється лише з виразів так:
<назва> (<список фактичних параметрів>).
Рекурсією називається алгоритмічна конструкція, де підпрограма викликає сама себе. Рекурсія дає змогу записувати циклічний алгоритм, не використовуючи команду циклу. Розглянемо спочатку поняття стеку.
Стек – це структура даних оперативної памяті, де дані запамятовуються і зберігаються за принципом «перший прийшов – останній пішов».
Обчислимо функцію suma(3,5). Формально можна записати suma(3,5)=5+ suma(3,4)=5+4+ suma(3,3)=5+4+3
Система виконує такі обчислення за два етапи:
1. спочатку формує стек, куди заносить числа 5, 4, 3.
2. додає числа у зворотній послідовності(оскільки вони надходять зі стеку): 3+4+5=12.
Обчислимо 4!:
factorial(4)=4* factorial(3)=4*3* factorial(2)=4*3*2* factorial(1)=
=4*3*2*1* factorial(0)=4*3*2*1*1
У стек будуть занесені числа 4, 3, 2, 1, 1. результат утвориться так:
1*1*2*3*4=24.
Зауваження. Застосовуючи рекурсію потрібно правильно складати стоп-умови, які забезпечують закінчення циклічних обчислень.
27. Файлові типи даних. Процедури та функції роботи з числовими файлами.
Файловий тип даних у мові ТР використовується в тих випадках, коли інформація з якою ми будемо працювати повинна поміщатися у файл і там зберігатися.
Для організації роботи по введенню даних у файл чи зчитування даних у Тр повинна бути використана змінна файлового типу, яка є представником файлів у програмі. Для запису чи зчитування даних існує також поняття вказівника даних, який вказує на кожному кроці роботи на місце роботи куди можна записати елемент чи на елемент.
Файловий тип даних описується за допомогою службових слів File of а сам формат змінних такий <імя змінних>:file of<тип>
Тип вказує на типии елементів, які використовуються при організації файлів і можуть будь-якого типу крім файлового або комбінованого одним із полів якого є файловий тип. Операції над файлами, та послідовності дій при роботі з ними: всі операції з файлами повністю можна реалізувати за допомогою стандартних процедур і функцій а послідовність може бути наступною:
Опис змінного файлового типу;
Відкриття чи створення файлу
Введення чи їх зчитування
Закриття файлу;
Для виконання даних дій використовують процедури і функції:
Процедура Assign. Визначена для встановлення звязку з конкретним фізичним файлом на магнітному диску і змінною файлового типу, яка надалі виступає у ролі представника файлу у ТР.
Формат Assign(<імя змінної файлового типу>,<імя файлу>). Імя ф-лу задається за правилами оперативної системи MSDOS і може крім власного імені містити маршрут доступу до нього.
Дане імя – вираз рядкового типу і пишеться в апострофах.
Наприклад var
F: file of integer;
Begin
Assign(f,’my.dat’);
2) процедура reset I rewrite. Дані процедури використовуються для відкриття файлу. Формати: reset(<файлові змінні>), rewrite (<файлові змінні>).
Під відкриттям файлу розуміється пошук його на диску, утворення спецсистем буферів для запису чи зчитування інформації і встановлення вказівника файлів на його початок. Дія процедури reset: може відкривати файл тільки в тому випадку якщо він попередньо був створений на диску. Дія процедури rewrite: дана процедура допускає, що файл, який потрібно відкрити може ще