- •Оператор безумовного переходу
- •Ініціалізація масивів.
- •Символьні масиви. Рядковий тип.
- •Одновимірні масиви
- •Багатовимірні масиви
- •Функції
- •Рекурсія
- •Вказівний тип
- •Динамічний розподіл памяті
- •Структурний тип.
- •Об’єднуючий тип
- •Директиви препроцесора
- •Коментарії
- •Вказівник this
- •Перевантаження функцій
- •Перевантаження конструкторів
- •Стандартні значення параметрів функцій
- •Перевантаження унарних операторів
- •Перевантаження бінарних операторів
- •Дружні операторні функції
- •Наслідування
- •Захищене наслідування
- •Відкрите наслідування
- •Закрите наслідування
- •Множинне наслідування
- •Віртуальні функції
- •Чисто віртуальні функції
- •Абстрактні класи
- •Шаблони
- •Статичні елементи класу
- •Включення файлів
- •Потокова система вводу виводу
- •Маніпулятори введення-виведення
- •Поняття клас
- •Поняття об’єкт
- •Конструктори
- •Відкриті та закриті поля класу
- •Захищені поля класу
- •Дружні функції
- •Дружні класи
- •Масиви об’єктів
- •Ініціалізовані масиви об’єктів 44. Неініціалізовані масиви об’єктів
- •Вказівники на об’єкти
- •Посилання
- •Множини
- •Процедури
- •Функції
- •Рекурсивні функції
- •Оператор приєднання
- •Текстові файли
- •Модулі.
- •Вказівники.
- •Операції над вказівниками.
- •Списки.
- •Вставка елемента в список.
- •Видалення елемента із списку.
- •Динамічні рядки символів.
- •Пошук елемента списку
- •Поняття черги та стеку
- •Службові слова мови с
- •Типи даних
- •Змінні та константи
- •Оператори мови с
- •Ввід та вивід на консоль
- •Модифікатори
- •Мультиплікативні операції
- •Адитивні операції
- •Умовний оператор
- •Оператор вибору
- •Цикл з параметром
- •Цикл з передумовою
Оператор безумовного переходу
Розглянутий умовний оператор if-then-else вибирає один з двох можливих напрямів виконання програми залежно від виконання умови. Інакше його називають оператором умовного переходу. В програмі може виникнути потреба перейти до ви конання деякого відрізка програми незалежно від жодної умови. Такий перехід реалізують у мові Паскаль за допомогою оператора безумовного переходу
goto <позначка>.
Тут позначка (мітка) - це число без знака, описане в розділі label (в Турбо Паскалі може бути ідентифікатор). Оператор goto передає керування до оператора, виділеного відповідною позначкою.
Застосовують його в крайніх випадках - для виходу із деякого складеного оператора.
У середині складеного оператора можна довільно передавати керування або виходити з нього, однак входити можна тільки через початок. Не можна передавати керування з однієї гілки умовного оператора в іншу:
goto 15;
…….
15: begin
s1
s2;
………
end;
Ініціалізація масивів.
При визначенні масивів можлива їх ініціалізація, тобто присвоювання початкових значень їх елементам. Використання ініціалізації дозволяє змінити формат визначення масиву. Наприклад, можна явно не вказувати кількість елементів одновимірного масиву, а тільки перерахувати їх початкові значення в списку ініціалізації:
double d[ ]={1.0, 2.0, 3.0, 4.0, 5.0}; d[0] = 1.0, d[1]=2.0 і т. д.
Якщо у визначенні масиву явно вказаний його розмір, то кількість початкових значень не може бути більше кількості елементів в масиві. Якщо кількість початкових значень менше ніж оголошена довжина масиву, то початкові значення отримають тільки перші елементи масиву.
Правила ініціалізації багатовимірних масивів відповідають визначенню багатовимірного масиву як одновимірного, елементами якого є масиви, розмірність яких на одиницю менше ніж у початкового масиву. Одновимірний масив ініціалізувався вкладеним у фігурні дужки списком початкових значень. В свою чергу, початкове значення, якщо воно відноситься до масиву, також є заключений у фігурні дужки список початкових значень.
За допомогою ініціалізації можна присвоювати значення не всім елементам багатовимірного масиву.
Символьні масиви. Рядковий тип.
Окремо виділимо масиви, елементи яких є символьного типу (char). Такі одновимірні масиви, індексами яких є діапазон цілого типу, називають рядками.
У Паскалі є деякі додаткові засоби роботи з такими масивами. По-перше, змінним такого типу можна присвоювати символьні сталі (тобто рядки символів).
Крім того, для рядкових масивів допустима операція конкатенації, яку позначають символом +. Виведення для рядка не є обов'язково покомпонентне, дозволено задати й ім'я. Операцію конкатенації не можна використати в правій частині присвоєння.
Рядки, що містять однакову кількість компонентів можна порівнювати за допомогою
знаків -, <>, <, <-, >, >=.
Рядки порівнюють шляхом послідовного порівняння символів до першого незбігання.
Стандартна процедура read не читає автоматично рядки, їх треба читати в циклі символ за символом.
Рядковий тип (string)
У Турбо Паскалі реалізований рядковий тип, що є узагальненням символьних масивів, який дає змогу, на відміну від них, динамічно змінювати довжину рядка. Загальний вигляд опису рядкового типу такий:
type
<ім'я>=string[<максимальний розмір>];
Наприклад:
type
Line=string[80];
var R: Line;
Змінна R типу Line може набувати значення будь-якої послідовності символів (типу char) завдовжки від (задане число в програмі) до (задане число в програмі). Це значення може бути присвоєне або введенне.
Як і для символьних масивів, тут використовується операція конкатенації.
Максимальну довжину в описі рядкового типу зазначають цілим числом або не зазначають, за замовчуванням приймається 255.
Під змінну рядкового типу відводиться N+1 байтів пам'яті, де N - максимальна довжина, зазначена в описі (рис 1).
Нульовим елементом є байт.
Крім операції конкатенації, над змінними рядкового типу визначені операції порівняння, у разі використання яких діють такі правила:
а) коротший рядок завжди менший від довшого;
б) якщо довжини однакові, то поелементно порівнюються символи порівнюваних рядків з урахуванням впорядкованості значень стандартного символьного типу char.
Присвоєння змінній рядкового типу виразу з довжиною, більшою від максимально допустимої, зумовлює до обрізання рядка до максимальної довжини.
Доступ до окремих елементів рядкових типів такий самий, як і до елементів звичайних одновимірних масивів - за допомогою індексів у квадратних дужках.
У Турбо Паскалі з рядковими типами використовують низку функцій:
1) concat: - злиття довільної кількості рядків. Якщо довжина вислідного >255, то він буде обрізаний;
2) copy - повертає частину рядка 5 довжиною Count, починаючи від символу з номером Index;
3) delete - вилучає з рядка s частину цього рядка довжиною Count, починаючи з Index;
4) Insert — вставляє рядок Source в рядок s, починаючи з Index;
5) Length - повертає довжину рядка s;
6) Pos - результатом цієї функції є номер позиції, з якої в рядку s розміщений рядок Substr.