.: Menu :.
Home
Реферати
Книги
Конспекти уроків
Виховні заходи
Зразки документів
Реферати партнерів
Завантаження
Завантажити
Електронні книги


????????...

 
��������...
Структура програми. Стандарні типи даних. Стандартні та означувальні типи. Вирази - системи числення програма в pascal 


Структура програми. Стандарні типи даних. Стандартні та означувальні типи. Вирази

ОСНОВНІ ПОНЯТТЯ АЛГОРИТМІЧНОЇ МОВИ
СКЛАД МОВИ. Звичайна розмовна мова складається з чотирьох основних елементів: сим¬волів, слів, словосполучень і речень. Алгоритмічна мова містить подібні елементи, тільки слова називають елементарними конструкціями, словосполучення-виразами, речення-опера-то¬ра¬ми. Символи, елементарні конструкції, вирази й оператори складають ієрархічну струк-ту¬ру, оскільки елементарні конструкції утворяться з послідовності символів, вирази – це по-слі¬довність елементарних конструкцій і символів, а оператор – послідовність виразів, еле-мен¬тар¬них конструкцій і символів.
ОПИС МОВИ є опис чотирьох названих елементів. Опис символів полягає в пере-раху¬ван¬ні припустимих символів мови. Під описом елементарних конструкцій розуміють правила їхньо¬го утворення. Опис виразів – це правила утворення будь-яких виразів, що мають зміст у даній мові. Опис операторів складається з розгляду усіх типів операторів, припустимих у мові. Опис кожного елемента мови задається його СИНТАКСИСОМ і СЕМАНТИКОЮ. Син¬так¬сичні визначення встановлюють правила побудови елементів мови. Семантика визначає зміст і правила використання тих елементів мови, для яких були дані синтаксичні визначення.
СИМВОЛИ мов – це основні неподільні знаки, якими пишуться всі тексти мовою.
ЕЛЕМЕНТАРНІ КОНСТРУКЦІЇ – це мінімальні одиниці мови, що мають самостій-ний зміст. Вони утворяться з основних символів мови.
ВИРАЗ в алгоритмічній мові складається з елементарних конструкцій і символів, воно задає правило обчислення деякого значення.
ОПЕРАТОР задає повний опис деякої дії, що необхідно виконати. Для опису складної дії може знадобитися група операторів. У цьому випадку оператори поєднуються в СКЛАДЕНИЙ ЧИ ОПЕРАТОРИЙ БЛОК.
Дії, задані операторами, виконуються над ДАНИМИ. Речення алгоритмічної мови, у яких даються відомості про типи даних, називаються ОПИСАМИ операторів, які не вико¬ну-ють¬ся.
Об'єднана єдиним алгоритмом сукупність описів і операторів утворює ПРОГРАМУ алго¬ритмічною мовою.
У процесі вивчення алгоритмічної мови необхідно відрізняти алгоритмічну мову від тієї мови, за допомогою якої здійснюється опис досліджуваної алгоритмічної мови. Звичайно досліджувана мова називається просто мовою, а мова, у термінах якої дається опис дослід¬жу-ва¬ної мови – МЕТАМОВОЮ.
Синтаксичні визначення можуть бути задані формальними чи неформальним способами. Існують три формальних способи:
–    металінгвістична символіка, названа Бекуса-Наура формулами;
–    синтаксичні діаграми;
–    дужкові конструкції.
В наступному викладі будемо користатися неформальним способом.
ОСНОВНІ СИМВОЛИ
Основні символи мови – букви,  цифри і спеціальні символи – складають його   алфавіт.   ТУРБО ПАСКАЛЬ включає наступний набір основних символів:
1) 26 латинських великих і 26 латинських малих букв:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h і j k l m n o p q r s t u v w x y z 
2) _ підкреслення
3) 10 цифр:     0 1 2 3 4 5 6 7 8 9
4) знаки операцій:
+   -   *   /   =   <>   <   >   <=   >=   :=  @
5) обжувачі:
.   ,   '   (   )   [   ]   (.  .)   {  }  (*  *)   ..   :   ;
6) специфікатори:
^  #  $
7) службові (зарезервовані) слова:


ABSOLUTE    EXPORTS    LIBRARY    SET
ASSEMBLER    EXTERNAL    MOD    SHL
AND    FAR    NAME    SHR
ARRAY    FILE    NIL    STRING
ASM    FOR    NEAR    THEN
ASSEMBLER    FORWARD    NOT    TO
BEGIN    FUNCTION    OBJECT    TYPE
CASE    GOTO    OF    UNIT
CONST    IF    OR    UNTIL
CONSTRUCTOR    IMPLEMENTATION    PACKED    USES
DESTRUCTOR    IN    PRIVATE    VAR
DIV    INDEX    PROCEDURE    VIRTUAL
DO    INHERITED    PROGRAM    WHILE
DOWNTO    INLINE    PUBLIC    WITH
ELSE    INTERFACE    RECORD    XOR
END    INTERRUPT    REPEAT   
EXPORT    LABEL    RESIDENT   

Крім перерахованих, у набір основних символів входить пробіл. Пробіли не можна використовувати всередині здвоєних символів і  зарезервованих слів.
EЛЕМЕНТАРНІ КОНСТРУКЦІЇ
Елементарні конструкції мови ПАСКАЛЬ містять у собі імена, числа і рядки.
Імена (ідентифікатори) називають елементи мови – константи, мітки, типи, змінні, процедури, функції, модулі, об'єкти. Ім'я – це послідовність букв і цифр, що починається з букви. В іменах може використовуватись символ _ підкреслення. Ім'я може містити довільну кількість символів, але значущими є 63 символи.
Не дозволяється в мові ПАСКАЛЬ використовувати як імена службові слова і стандартні імена,  якими названі стандартні константи, типи, процедури, функції і файли.
Для поліпшення наочності програми в неї можуть вставлятися пробіли. Принаймні  один  пробіл  потрібно вставити між двома послідовними іменами, чи числами службовими і стандартними іменами. Пробіли не можна використовувати всередині імен і чисел.
Приклади імен мови ПАСКАЛЬ:
A    b12    r1m    SIGMA    gamma    I80_86
Числа в мові ПАСКАЛЬ звичайно записуються  в  десятковій  системі числення. Вони    можуть бути цілими і дійсними.  Позитивний знак числа може бути опущений.  Цілі числа записуються у  формі  без десяткової крапки, наприклад:
217    -45     8954   +483
Дійсні числа  записуються у формі з десятковою  крапкою чи у формі з використанням  десяткового порядку,  що  зображується буквою Е:
28.6     0.65     -0.018   4.0   5Е12   -1.72Е9   73.1Е-16
ПАСКАЛЬ допускає  запис  цілих чисел і фрагментів дійсних чисел у формі з порядком у шістнадцятковій системі числення:
$7F     $40      $ABC0
Рядки в мові ПАСКАЛЬ – це послідовність символів, записаних  між апострофами. Якщо в рядку в якості змістовного символа необхідно вжити сам апостроф, то слід записати  два апострофа. Приклади рядків:
'РЯДОК'   'STRING'    'ПРОГРАМА'    'АД''ЮТАНТ'
КОНЦЕПЦІЯ ТИПУ ДЛЯ ДАНИХ
У  математиці  прийнято класифікувати змінні відповідно до деяких важливих харак¬те-ри¬стик. Виробляється строге розмежування між речовинними, комплексними і логічними змін¬ними, між змінними, що представляють окремі значення і безліч значень і так далі.   При обробці даних на ЕОМ така класифікація ще більш важлива.
У будь-якій алгоритмічній мові кожна константа, змінна, вираз чи функція мають визначений типу.
У мові ПАСКАЛЬ існує правило:  тип явно задається в описі змінних чи функцій,  що передує їхньому використанню.  Концепція типу мови ПАСКАЛЬ має наступні основні властивості:
–    будь-який тип даних визначає множина значень, до якої належить константа, що може приймати змінна чи вираз, операція чи виробляти функція;
–    тип значення, що задається константою, змінною чи виразом, можна визначити по їх  виду чи опису;
–    кожна операція чи функція вимагає аргументів фіксованого типу і видає результат фіксованого типу.
Звідси випливає, що транслятор може використовувати інформацію про тип для пе¬ре-вір¬ки обчислення і правильності різних конструкцій.
Тип визначає:
–    можливі значення змінних, констант, функцій, виразів,  належних до даного типу;
–    внутрішню форму представлення даних в ЕОМ;
–    операції і  функції,   що  можуть виконуватися над величинами, належними до даного типу.
Обов'язковий опис типу приводить до надмірності в тексті програм,  але  така над¬мір-ність є важливим допоміжним засобом розробки програм і розглядається як необхідна  влас-ти¬вість сучасних алгоритмічних мов високого рівня.  У мові ПАСКАЛЬ існують скалярні і струк¬ту¬ро¬вані типи даних.
До  скалярних типів відносяться стандартні типи і типи, визначені користувачем.
Стандартні типи  включають  цілі,   дійсні,   символьні, логічні й адресні типи. Типи, визначені користувачем, – перелічувальні і інтервальні.
Структуровані типи мають чотири різновиди:  масиви,  множини, записи і файли.
Крім перерахованих,  TURBO PASCAL  включає ще два типи – процедурний і об'єкт-ний.
З групи скалярних типів можна виділити порядкові типи, які характеризуються на¬ступ-ними властивостями:
– усі можливі значення порядкового типу являють собою обмежену упорядковану безліч;
– до будь-якого порядкового типу може бути застосована стандартна функція Ord, що як результат повертає порядковий номер конкретного значення в даному типі;
– до будь-якого порядкового типу можуть бути застосовані стандартні функції Pred і Succ, що повертають попереднє і наступне значення відповідно;
– до будь-якого порядкового типу можуть бути застосовані стандартні функції Low і High,  що повертають найменше і найбільше значення величин даного типу.
У мові ПАСКАЛЬ введені поняття еквівалентності і сумісності типів.
Два типи Т1 і Т2 є еквівалентними (ідентичними),  якщо виконується одне з двох умов:
– Т1 і Т2 являють собою те саме ім'я типу;
– тип Т2  описаний  з використанням типу Т1 за допомогою чи рівності послідовності рівностей. Наприклад:
type
T1 = Integer;
T2 = T1;
T3 = T2;
Менш строгі обмеження визначені сумісністю типів. Наприклад типи є сумісними, якщо:
•    вони еквівалентні;
•    є обоє або цілими, або дійсними;
•    один тип – інтервальний, інший - його базовий;
•    обоє інтервальні з загальним базовим;
•    один тип – рядковий, інший – символьний.
У ТУРБО ПАСКАЛЬ обмеження на сумісність типів можна обійти з допомогою приведення типів. Приведення типів дозволяє розглядати ту саму величину в пам'яті ЕОМ як належну  різним  типам.
Для цього використовується конструкція
Ім'я_Типу(змінна чи значення).
Наприклад, Integer('Z') є значення коду символу 'Z' у двохбайтному значенні  цілого числа, а Byte(534) дасть значення 22, оскільки ціле число 534 має тип Word і займає два байти, а тип Byte займає один байт, і в процесі приведення старший байт буде відкинутий.
СТАНДАРТНІ   ТИПИ  ДАНИХ
До стандартних відносяться  цілі, дійсні, логічні, символьний і адресний типи.
ЦІЛІ типи  визначають константи, змінні і функції, значення яких реалізуються мно¬жи-ною цілих чисел,  допустимих у даній ЕОМ.
Тип    діапазон значень    необхідна пам'ять
Shortint      -128 .. 127    1 байт
Integer    -32768 .. 32767    2 байта
Longint    -2 147 483 648..2147483647    4 байта
Byte    0 .. 255    1 байт
Word    0 .. 65535    2 байта

ДІЙСНІ типи  визначають ті дані, що реалізуються підмножиною дійсних чисел, до¬пус-ти¬мих у даній ЕОМ.

Тип    діапазон значень    Кількість цифр мантиси    необхідна пам'ять
Real    2.9e-39 .. 1.7e+38            11    6
Single    1.5e-45 .. 3.4e+38             7    4
Double    5.0e-324 .. 1.7e+308    15    8
Extended    3.4e-4932 .. 1.1e+4932          19    10
Comp    -9.2e+18 .. 9.2e+18            19    8
ЛОГІЧНИЙ тип (Boolean) визначає ті дані, що можуть приймати логічні значення TRUE і FALSE.
До булевих операндів застосовні наступні логічні операції:   not     and      or     xor.
Логічний тип визначений таким чином, що FALSE < TRUE. Це дозволяє застосовувати до булевих операндів всі операції відносини.
У ТУРБО ПАСКАЛЬ введені ще різновиди логічного типу: ByteBool, WordBool і LongBool, що займають у пам'яті ЕОМ один, два і чотири байти відповідно.
СИМВОЛЬНИЙ тип (Char) визначає упорядковану сукупність символів, допустимих   у  данії ЕОМ. Значення символьної змінної чи константи – це один символ із допустимого набору.
Символьна константа  може  записуватися в тексті програми трьома способами:
•    як один символ, укладений в апострофи, наприклад: 'A'   'a'   'Ю'  'ю';
•    за допомогою конструкції виду #K, де K ¬- код відповідного символа, при цьому значення K повинне знаходитися в межах 0..255;
•    за допомогою конструкції виду ^C, де C - код відповідного керуючого  символу, при цьому  значення  C повинне бути на 64 більше коду керуючого символу.
АДРЕСНИЙ тип (Pointer) визначає змінні, котрі можуть містити значення адрес чи даних фрагментів програми. Для збереження адреси вимагаються два слова (4 байти), одне з них визначає сегмент, друге – зміщення.
Робота з адресними змінними  (покажчиками) буде розглянута пізніше, зараз відзна¬чи-мо, що для одержання значення адреси який-небудь змінної введена унарна операція @.
КОНСТАНТИ. ЗМІННІ. ІНЦІЛАЛІЗАЦІЯ ЗМІННИХ
Тип констант  у  мові ПАСКАЛЬ визначається по їхньому виду:  константи цілого типу – це цілі числа, що не містять десяткової крапки, константи дійсного  типу - дійсні числа,  логічні константи логічні значення TRUE і FALSE, символьні константи – або рядок довжиною в один символ, або конструкції виду #K чи ^K.
Тип змінних визначається користувачем у розділі опису змінних.
В даний  час  у  професійному  програмуванні  прийнято записувати імена  змінних з використанням так званої угорської  нотації.
Угорська нотація – це угода про найменування змінних і функцій. Угода широко викори¬сто¬вується при програмуванні на мовах PASCAL, C і в середовищі WINDOWS.
Угорська нотація ґрунтується на наступних принципах:
– імена змінних і функцій повинні містити префікс, що описує їхній тип;
– імена змінних і функцій записуються повними чи словами словосполученнями чи їх-ні¬ми скороченнями,  але так, щоб по імені можна було зрозуміти призначення змінної чи дії, ви¬конувана функцією.
Префікси записуються малими буквами, перша буква кожного слова – велика, префікси і слова записуються або разом, або через символ _ (підкреслення).
Для мови  PASCAL  можуть бути рекомендовані наступні префікси для скалярних змін-них і функцій:
Префікс    Тип
By    Byte
Sh    Shortint
I    Integer
W    Word
L    Longint
R    Real
Si    Single
D    Double
E    Extended
C    Comp
Ch    Char
B    Boolean
P    Pointer
x,у    Координати символу чи крапки на екрані


Для величин структурованого типу можуть бути використані слідуючі префікси:
Префікс    Тип
A    Array
S    String
Sz    Stringz
Se    Set
Re    Record
F    File
T    Text

Наприклад: rV, arVector[1..20], sName, iCount.
У відкомпільованій програмі для всіх змінних відведене місце в пам'яті, і всім змінним привласнені нульові значення.
Для завдання початкових значень змінним (ініціалізації  змінних) TURBO PASCAL дозволяє привласнювати початкові значення змінним одночасно з їхнім описом. Для цього використовується конструкція
ім'я змінної: тип = значення;
яка повинна бути розміщена в розділі опису констант, наприклад:
const rWeight: Real = 0.4;
ВИРАЗИ. ОПЕРАТОР  ПРИСВОЮВАННЯ
Вирази складаються  з  констант,  змінних,  покажчиків функцій, знаків операцій і ду-жок. Вираз задає правило обчислення деякогого значення.  Порядок обчислення визна¬ча¬єть-ся старшинством (пріоритетом) операцій, що містяться  в ньому. У мові ПАСКАЛЬ прийнятий на¬ступний пріоритет операцій:

1.    унарна операція  not, унарний мінус  –, взяття адреси  @
2.    операції типу множення  *  /  div  mod  and  shl  shr
3.    операції типу додавання  +  -  or  xor
4.    операції відносини  =   <>   <    >   <=    >=  in
Вирази входять до складу багатьох операторів мови ПАСКАЛЬ, а також можуть бути аргументами убудованих функцій.
В операторі присвоювання тип змінної і тип виразу повинні збігатися крім випадку, коли вираз відноситься до цілого типу, а змінна – до дійсного. При цьому відбувається  перетворення  значення   виразу   до дійсного типу.
ОПЕРАТОРИ ВВОДУ І ВИВОДУ
Розглянемо організацію введення і висновку даних з термінального пристрою. Тер¬мі-наль¬ний пристрій – це пристрій, з яким працює користувач, звичайно це екран (дисп¬лей) і клавіатура.
Для введення і висновку даних використовуються стандартні процедури введення і вис¬нов¬ку Read і Write, що оперують стандартними послідовними файлами INPUT и OUTPUT.
Ці файли розбиваються на рядки змінної довжини, відокремлювані один від одного ознакою кінця рядка.  Кінець рядка задається натисканням клавіші ENTER.
Для уведення вихідних даних використовуються оператори процедур уведення:
Read(A1,A2,...AK);
ReadLn(A1,A2,...AK);
ReadLn;
Перший з них реалізує читання K значень вихідних даних і  присвоювання цих значень змінним А1,  А2,  ...,  АK. Другий оператор реалізує читання K значень вихідний даних, пропуск інших значень до початку наступного рядка, присвоювання значень змінних  А1,  А2, ..., АК. Третій оператор реалізує пропуск рядка вихідних  даних.
При введенні вихідних даних  відбувається  перетворення  із  зовнішньої форми пред-ста⬬лення у внутрішнім, обумовленим типом змінних. Змінні, що утворюють список введен-ня, можуть належати або до цілого, або до дійсного, або до символьного типам. Читан¬ня вихід¬них даних логічного типу в мові ПАСКАЛЬ неприпустимо.
Оператори введення при читанні значень змінних цілого і дійсного типу пропускає про¬біли, що передують числу.  У той же час ці оператори не пропускають пробілів, що пере-дують значенням символьних змінних,  тому що пробіли є  рівноправними символами рядків. Приклад запису операторів введення:

Var    rV, rS: Real;
iW, iJ: Integer;
chC, chD: Char;
................
Read(rV, rS, iW, iJ);
Read(chC, chD);

Значення вихідних даних можуть відокремлюватися один від одного пробілами і натисканням клавіш табуляції і Enter.
Для виведення результатів роботи програми на екран використовуються оператори:
Write(A1,A2,...AK);
WriteLn(A1,A2,...AK);
WriteLn;
Перший з цих операторів реалізує виведення значень змінних  А1, А2,...,АК у   рядок екрана.  Другий оператор реалізує виведення значень змінних А1,  А2,  ...,  АК і перехід до  початку  наступної рядка. Третій оператор реалізує пропуск рядка і перехід до початку наступної рядка.
Змінні, у списоку виведення, можуть відноситись до цілого, дійсного, символьному чи булевого типу. У якості елемента списку виведення крім імен змінних можуть використо-вува¬тися вирази і рядки. Виведення кожного значення в рядок екрана відбувається відпо¬від-но із шириною поля виведення,  обумовленою конкретною  реалізацією мови.
Форма представлення значень у полі виведення відповідає типу змінних і виразів:  величини цілого типу виводяться як цілі десяткові числа,  дійсного типу – як  дійсні  десяткові числа з десятковим порядком,  символьного типу і рядка – у виді символів, логіч-но¬го типу – у виді логічних констант TRUE і FALSE.
Оператор висновку  дозволяє  задати  ширину полючи висновку для кожного елемента списку висновку.  У цьому випадку елемент списку висновку має вид А:K, де А – вираз чи рядок,  K – вираз або константа цілого типу.
Якщо виведене значення займає в поле виведення менше позицій, чим ДО, то перед цим значенням розташовуються пробіли.  Якщо виведене значення не міститься в ширині поля K,  то для цього значення буде відведена необхідна кількість позицій. Для величин дійсного типу елемент списку виведення може мати вид А:K:М, де А – змінна чи вираз дійсного типу,  K – ширина поля виведення,  М  -  число  цифр дробової частини виведеного значення.  K і М – цілого типу.  У цьому випадку дійсні значення виводяться у формі десяткового числа з фіксованою крапкою.
Приклад запису операторів виведення:
. . . . . . . . . . . .
var rA, rB: Real;       iP,iQ:Integer;
bR, bS: Boolean;    chT, chV, chU, chW: Char;
. . . . . . . . . . . .
WriteLn(rA, rB:10:2);
WriteLn(iP, iQ:8);
WriteLn(bR, bS:8);
WriteLn(chT, chV, chU, chW);
СТРУКТУРА ПРОГРАМИ
Програма мовою ПАСКАЛЬ складається з заголовка, розділів описів і розділ операторів.
Заголовок програми містить ім'я програми, наприклад:
Program PRIM;
Описи можуть містити в собі розділ бібліотек, що підключаються, (модулів), розділів  опису міток, розділів опису констант, розділ опису типів,  розділ опису змінних,  розділ опису процедур іь функцій.
Розділ опису  модулів  визначається службовим словом USES і має імена модулів, що підключаються, (бібліотек)  як вхідних до  складу системи TURBO PASCAL, так і написаних користувачем. Розділ опису модулів повинний бути першим серед розділів описів. Імена модулів відокремлюються один від одного комами: uses  CRT, Graph;
Будь-який оператор  у програмі може бути позначений міткою.  У якості мітки використовуються довільні цілі без знака, що  містять не більш чотирьох цифр, або імена. Мітка ставиться перед оператором і відокремлюється від нього двокрапкою.  Усі мітки,  використовувані в програмі,  повинні бути перераховані в розділі опису міток, наприклад: label 3, 471, 29, Quit;
Опис констант  дозволяє використовувати імена як синоніми констант, їх необхідно визначити в розділі описів констант: const K= 1024;   MAXIM= 16384;
У розділі опису змінних необхідно визначити тип усіх змінних, використовуваних у про¬гра¬мі:
var P,Q,R: Integer;          A,B:   Char;          F1,F2: Boolean;
Опис типів,  прцедур і функцій буде розглянуто нижче. Окремі розділи описів можуть бути відсутні,  але варто пам'ятати,  що в ПАСКАЛЬ – програмі   повинні  бути обов'язково опи¬сані усі компоненти програми.
Розділ операторів  являє собою складений оператор,  що містить між службовими словами
begin.......end
послідовність  операторів.  Оператори  відокремлюються  один від одного символом ;.
Текст програми закінчується символом крапка.
Крім описів  і  операторів  ПАСКАЛЬ – програма може містити коментарі, що  являють собою довільну  послідовність символів,  розташовану між відкриваючою дужкою коментарів { і закриваючою дужкою коментарів }.
Текст ПАСКАЛЬ – програми може містити ключі компіляції,  які дозволяють керувати режимом компіляції.  Синтаксично ключі компіляції записуються як коментарі. Ключ компіляції містить символ $ і буква-ключ з наступним знаком + (включити режим)  чи - (виключити режим). Наприклад:
{$E+} – емулювати математичний співпроцесор;
{$F+} - формувати далекий тип виклику процедур і функцій;
{$N+} - використовувати математичний співпроцесор;
{$R+} - перевіряти вихід за границі діапазонів.
Деякі ключі компіляції можуть містити параметр, наприклад:
{$I ім'я файлу} - включити в текст компілюючої програми  названий файл.
Приклад запису простої програми:
Program TRIANG;
var A, B, C, S, P: Real;
begin
Read(A,B,C);
WriteLn(A,B,C);
P:=(A+B+C)/2;
S:=Sqrt(P*(P-A)*(P-B)*(P-C));
WriteLn('S=',S:8:3)
end.
ЗАВДАННЯ ДО РОЗВ’ЯЗАННЯ
1) Дана довжина ребра куба. Знайти об’єм куба і площу його бічної поверхні.
2) Дані катети прямокутного трикутника. Знайти його гіпотенузу і площу.
3) Дано x, y, z .Обчислити b, якщо
b=x(arctg z + e-(x+3))
4) Дано дійсні числа  x і y. Одержати

5) Три опори з’єднані паралельно. Знайти опір з’єднання.

Search:
????????...

характеристика Остапа Хруща та Максима Гудзя

Аксіоми по стереометрії

Вивихи, допомога при вивихах

люголь с крохмалем

образ гобсека

Русова вибрані твори

характеристика образу карпа

план характеристики чіпки

люголь с крохмалем

графічні малюнки



?????????? ????????? ????
   
Created by Yura Pagor, 2007-2010