поняття множини

Міністерство сільського господарства Російської Федерації

ФГТУ ВПО Воронезький державний аграрний університет імені К.Д. Глінки

Кафедра інформаційного забезпечення та моделювання агроекономічний систем

На тему: Поняття множини. символьний тип

Мова програмування Pascal був розроблений в 1968-1971 рр. Ніклаус Віртом в Цюріхському Інституті інформатики (Швейцарія), і названий вчесть Блеза Паскаля - видатного математика, філософа і фізика 17-го століття. Початкова мета розробки мови диктувалася необхідністю створення інструменту "для навчання програмуванню як систематичній дисципліні". Однак дуже скоро виявилася надзвичайна ефективність мови Pascal в найрізноманітніших додатках, від вирішення невеликих задач чисельного характеру до розробки складних програмних систем - компіляторів, баз даних, операційних систем і т.п. До теперішнього часу Pascal належить до групи найбільш поширених і популярних у світі мов програмування:

існують численні реалізації мови практично для всіх

розроблені десятки діалектів і

проблемно-орієнтованих розширень мови Pascal;

базуються на цій мові.

Перевагою мови Паскаль є можливість використання широкого набору різних типів даних. Тип даних визначає можливі значення констант, змінних, функцій, виразів і операцій, які можуть виконуватися над ними.

Типи даних підрозділяються на прості і складні. Прості типи поділяються на стандартні (зумовлені) типи і типи визначаються користувачем (призначені для користувача типи). Імена стандартних типів є ідентифікаторами і діють в будь-якій точці програми. Вони описані в стандартному модулі System. Так само, як і інші ідентифікатори, імена стандартних типів можуть бути перевизначені в програмі. Однак залишається можливість звернення до їх первісного змісту за допомогою кваліфікованого ідентифікатора із зазначенням імені модуля System.

До стандартних типів відносяться:

група цілих типів (Shortint, Integer, Longint, Byte, Word);

група речових типів (Single, Real, Double, Extended, Comp);

група логічних (булевих) типів (Boolean, ByteBool, WordBool, LongBool);

символьний тип (Char);

строковий тип (String, Pchar);

вказівний тип (Pointer);

текстовий тип (Text).

Символьний тип, цілі і булевские типи відносять до, так званим, порядковим типам.

Порядкові типи характеризуються наступними властивостями:

Безліч допустимих значень будь-якого порядкового типу являє собою упорядковану послідовність. кожен елемент якої має свій порядковий номер. Порядковий номер представляється цілим числом. Перше значення будь-якого порядкового типу має номер 0, наступний номер 1 і т.д. Виняток становлять порядкові типи Integer, Shortint, Longint, де порядковим номером значень цих типів є саме значення.

До будь-якого значення порядкового типу можна застосовувати функції повертають номер, попереднє чи наступне значення даного типу.

Призначені для користувача типи - додаткові абстрактні типи, характеристики яких програміст може визначати самостійно. До призначеним для користувача типам відносяться:

• вказівні типи (крім стандартного типу Pointer);

Перераховуються і інтервальний типи є порядковими.

Поняття множини. Операції над безліччю

Множинний тип даних Паскаля нагадує перелічувальний тип даних. Разом з тим множинний тип даних - набір елементів не організованих в порядку проходження.

В математиці множинний тип даних - будь-яка сукупність елементів довільної природи. Операції, які проводяться над множинами, по суті полягають у включенні і виключенні елементів з безлічі.

Поняття множини в мові програмування значно вужче математичного поняття.

У Паскалі під множинним типом розуміється кінцева сукупність елементів, що належать деякому базовому типу даних.

В якості базових типів можуть використовуватися:

діапазонні на основі перерахованих вище.

Такі обмеження пов'язані з формою подання множинного типу даних в Паскалі і можуть бути зведені до того, щоб функція ord () для використовуваного базового типу лежала в межах від 0 до 255.

Після того, як базовий тип заданий, сукупність значень відповідного множинного типу даних визначається автоматично. У неї входять всі можливі множини, які є довільними комбінаціями значень базового типу. Всі ці безлічі є окремими значеннями певного множинного типу даних.

Опис множинного типу даних:

Приклад множинного типу даних:

Для того щоб надати змінної множинного типу значення, використовують конструктор безлічі - перерахування елементів безлічі через кому в квадратних дужках. наприклад,

Конструктор безлічі може містити діапазон значень базового типу. Тоді в багатьох включаються всі елементи діапазону. наприклад,

Обидві форми конструювання множин можуть поєднуватися. наприклад,

Конструктор виду [] позначає порожні множини.

У програмі можна використовувати множинні тип як константи, в цьому випадку їх визначають наступним способом:

Можна множинний тип визначити як типізовану константу:

При описі множинного тип як констант допускається використання знака "+" (злиття множин). наприклад,

З множинними типами Паскаля можна виконувати дії об'єднання, виключення і перетину.

Об'єднання множинних типів містить елементи, які належать хоча б одній безлічі, при цьому кожен елемент входить в об'єднання тільки один раз. Операція об'єднання множин позначається знаком '+'.

Приклад об'єднання множинних типів:

Varsmall, capital, latin: symbol; .................. small: = [ 'a'. 'Z']; capital: = [ 'A'. 'Z']; latin: = small + capital; образованимножествалатінскіхбуквпутемоб'едіненіямножествsmallіcapital>

Можливо об'єднувати множинні типи і окремі елементи. наприклад,

Виняток визначається як різниця множинних типів, в якому з зменшуваного виключаються елементи, що входять до від'ємник. Якщо в віднімається є елементи, які відсутні в зменшуваному, то вони ніяк не впливають на результат. Операція виключення позначається знаком '-'. Приклад виключення множинних типів Паскаля

Припинення множинних типів-множини, що містять елементи, які одночасно входять в обидва безлічі. Операція перетину множин позначається знаком '*'.

Приклад перетину множинних типів

Операції відносини множинних тіповНаряду з розглянутими вище операціями, над значеннями множинного типу визначені і деякі операції відносини. Операндами операцій над множинними значеннями в загальному випадку є множинні вирази. Серед операцій відносини над значеннями множинного типу особливе місце займає спеціальна операція перевірки входження елемента в безлічі, що позначається службовим словом in. На відміну від інших операцій відносини, в яких значення обох операндів відносяться до одного і того ж множинного типу значень, в операції in перший операнд повинен належати базового типу, а другий - множинного типу значень, побудованому на основі цього базового типу. Результатом операції відносини, як зазвичай, є логічне значення (true або false).

Операція порівняння на рівність множинних типів. Безлічі вважаються рівними (еквівалентними), якщо всі елементи одного безлічі присутні в іншому і навпаки. Для операції порівняння на рівність чи нерівність використовуються символи '=' і '<>'. A: = [2,1,3]; D: = [1,3,2];

Тоді операція A = D має значення true, а операція A<>D має значення false.

Перевірка включення. Одне безліч вважається включеним в інше (одне безліч є підмножиною іншого), якщо всі його елементи містяться у другому безлічі. Протилежне твердження може бути і несправедливим. Операції перевірки включення позначаються '<=’ и ‘>= '.

letter> = glasn; soglan <= letter;

Слід зазначити, що застосування операцій <и> над операндами множинного типу неприпустимо.

Символьний тип. CHAR - займає 1 байт. Значним символьного типу є безліч всіх символів ПК. Кожному символу присвоюється ціле число в діапазоні 0 ... 255. Це число служить кодом внутрішнього уявлення символу. Для кодування використовується код ASCII (American Standart Code for Information Interchange - американський стандартний код для обміну інформацією). Це 7-бітний код, тобто з його допомогою можна закодувати лише 128 символів в діапазоні від 0 до 127. У той же час в 8-бітному байті, відведеному для зберігання символу в Турбо Паскалі, можна закодувати в два рази більше символів в діапазоні від 0 до 255. Перша половина символів ПК з кодами 0 ... 127 відповідає стандарту ASCII. Друга половина символів з кодами 128 ... 255 не обмежена жорсткими рамками стандарту і може змінюється на ПК різних типів. Символи з кодами 0 ... 31 відносяться до службових кодами. Якщо ці коди використовувати в символьному тексті програми, вони вважаються пробілами.

Робота з символьними змінними В Turbo Pascal 7.0 для роботи з символами використовуються два типи змінних:

символьний тип даних;

строковий тип даних.

Стандартні функції для роботи з символьними величинами:

Операція складання символьних величин.

Операція складання дозволяє будувати з двох символьних рядків третю, що складаються з символів першої, за якою слідують символи другий. Позначається ця операція знаком "+". наример:

Описуємо рядкові змінні.

Привласнюється значення рядка полягає в апострофи. Дамо першим двом наступні значення, а третя буде дорівнює їх склеювання:

Рядок s3 має значення 'Тихіше води, нижче трави ".

Під довжиною рядка розуміється кількість введених символів, але вона не може перевищувати максимально можливої ​​довжини (в описовій частині). Це значення можна визначити за допомогою функції, результат якої ціле число, яке дорівнює кількості символів.

В результаті значення цілих змінних будуть рівні: kl = 5, k2 = 21.

Значення змінної s1 = 'віз'. А на екрані будуть виведені наступні рядки: віз і 34.

В Turbo Pascal для цього використовується процедура Delete (str, n, m), яка вирізає з рядка str m символів, починаючи з n-го. таким чином сама рядок змінюється. наприклад:

Дан фрагмент програми:

Після виконання цих операторів з рядка будуть вилучені два символу, починаючи з третього, тобто рядок буде такий: s = '1256'.

В Turbo Pascal це можна зробити, застосовуючи процедуру Insert (s1, s2, n) - вставка рядка s1 у рядок s2, починаючи з п-го символу, при цьому перший рядок залишається такою ж, як і була, а друга отримує нове значення. наприклад:

В результаті виконання даної процедури рядок буде такий

Треба зауважити, що число 25 і рядок 25 - це не одне і те ж. Для роботи з числами і рядками в Turbo Pascal застосовуються дві процедури.

Str (n, s1) - переводить числове значення n в строкове і привласнює результат рядку s1, причому можна переводити як цілі числа, так і речові. наприклад:

n: = 12; str (n, s1); - після виконання s1 = '12 '

Існує зворотна операція, яка переводить строкове значення в числове.

Функція val (s, n, k) - переводить строкове значення в числове, якщо даний рядок дійсно є записом числа (цілого або речового), то значення k = 0, а n - це число, інакше k дорівнюватиме номеру символу, в якому зустрічається перше порушення записи числа n. наприклад:

val ( '1234', n, k) п = 1234, k = 0;

Функції перетворення типів

Іноді в програмах виникає необхідність по коду визначити символ і, навпаки, по символу визначити його код. Для цього використовують функцію: CHR (x).

Ця функція повертає символ, відповідний ASCII-коду числа x. наприклад:

for i = 0 to 255 do writeln (i, '', chr (i));

Для визначення коду по символу використовують функцію ORD. наприклад:

Запис - тип даних, що складається з фіксованого числа компонентів (званих полями) одного або декількох типів.

Наведемо приклади опису типу запис:

type Point = RECORD x, y: Real

Dates = RECORD day. 1..31; mon. String [3]; year: 1..3000

Можна визначити масив записів, поля яких також є масивами:

type Student = Array [1..N] of Record fam. String [15]; birth: Dates; man. Boolean; marks: Array [1..10] of 0..5

Ідентифікатор Group можна використовувати для зберігання інформації про групу студентів (прізвище, дата народження, стать і оцінки по 10 предметів).

Звернення до значення поля запису відбувається за допомогою складного імені, що містить ідентифікатор змінної і ім'я поля, розділені точкою. Наприклад, p.x, dt.mon, group [1] .man, group [2] .marks [1].

Складене ім'я може використовуватися скрізь, де допустимо застосування ідентифікатора типу поля: у виразах, операторах вводу-виводу, привласнення, як фактичних параметрів.

Звернення до поля записи за допомогою складного імені може мати громіздкий вигляд. Оператор WITH, вирішальний цю проблему, має такий вигляд:

WITH <Переменная типа запись> DO <Оператор>

Якщо після слова WITH задати ім'я запису, то в операторі, наступним за DO, для доступу до поля можна вказувати тільки ім'я поля без імені змінної.

Записи з варіантами

Записи можуть мати варіанти. Як приклад наведемо дослідження для перевірки якості деякого ліки. Якщо перевірки не проводиться, то єдині дані, які нас цікавлять, - це чи застосовував даний пацієнт раніше дані ліки. Якщо ж проводиться перевірка, то необхідно зібрати відомості по великому числу даних щодо головного болю, лихоманки і нудоти.

Ми використовуємо дві структури даних типу запис:

Що можна зробити з описами змінних, щоб ми могли працювати одночасно з обома структурами? Для цього в описі запису можна застосувати спеціальний перемикач Case. Після можливого результату Proverka в дужках наводиться опис відповідних полів. Етоіллюстріруетсяніже:

type Effect = Record Nomer: Integer; Case Proverka: Boolean of

FALSE: (PrinimalRanee: Boolean);

TRUE. (GolovBol, Lihoradka, Toshnota: Boolean)

var Nekto: Effect;

Перемикач Case використовується тут для опису змінних і відрізняється від оператора Case: в перемикачі Case використовуються дужки і відсутня службове слово end, обов'язкове в кінці "звичайного" Case.

Частина, яка зустрічається в обох структурах, називається фіксованою частиною. Частина, яка зустрічається тільки в одній зі структур, називається варіантної частиною, а поле, яке є важливим для продовження подальшої структури, називається загальним вузловим полем (або тегом).

У разі, коли один з варіантів не містить полів (тобто список полів порожній), в дужках після відповідної константи нічого не пишуть, наприклад:

Type Pogoda = Record Temperatura: Integer; Vlagnost. Integer; Case Veter: Boolean of TRUE. (Napravlenie: (S, N, V, O); Skorost. Integer); FALSE: ()

Після варіантної частини запису поля з'являтися не можуть.

Імена полів, що використовуються в описі різних варіантів, не повинні повторюватися в цьому записі; не можна також застосовувати одне і те ж ім'я в загальній і варіантної частинах записи.

Варіантна частина може містити інші записи, в тому числі і з варіантами. Ступінь вкладеності записів в варіантної частини не обмежена.

Список вихідних даних

Виводяться учні одного класу, або проживають в одному будинку.

Розробка блок-схеми рішення завдання

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls, Mask, DBCtrls, ExtCtrls, Grids, DBGrids, ComCtrls;

type TForm1 = class (TForm) PageControl1: TPageControl;

Схожі статті