none
Помогите RRS feed

  • Вопрос

  • ДОСЛІДЖЕННЯ ЦІЛИХ ТА ДІЙСНИХ ТИПІВ ТА ОПЕРАЦІЙ НАД ЗНАЧЕННЯМИ ДАНИХ ТИПІВ

    Мета лабораторної роботи - дослідити та вивчити напередвизначені цілі та дійсні типи, устрій їх значень та операції над значеннями цих типів.

    Теоретичні відомості

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

    Опис програмних об’єктів

    <опис константи>::=const< індикатор типу >< ідентифікатор >=< статичний вираз >
    <опис змінної>::=< індикатор типу ><ідентифікатор>
    <опис посилання>::=< індикатор типу >&< ідентифікатор >=< ідентифікатор >

    Наприклад:
    const  float PI = 3.14;
    int sum;
    int &ref_sum =sum; \\ опис посилання ref_sum

    Літерали та константи є об’єктами з незмінним значенням. Змінні є програмними об’єктами, які зберігають дані, що можуть змінюватись під час виконання програм. 
    Описані програмні об’єкти повинні бути ініціалізовані перед використанням шляхом надання їм початкового значення при створенні або за допомогою оператора привласнення.
    Цілі змінні можуть зберігати значення цілих чисел у визначеному діапазоні (наприклад, для цілого типу діапазон значень -32767 - 32767, довгого цілого типу діапазон -2147483648 - 2147483647).
    Змінні дійсного типу можуть містити числа з дробною частиною. Такі дані можуть бути представлені у двох формах: стандартної десятинній або експоненціальній. Зображення стандартної десятинної форми включає цілу частину, десятинну крапку та дробову частину (наприклад: 6.768, 0.0012, -45.789, 23.0).
    Експоненціальна форма (або наукова нотація) використовується для написання дуже великих або дуже малих чисел. Експоненціальна форма включає три частини: 
    коефіцієнт, який виглядає як стандартна десятинна форма дійсного числа;
    буква E або e;
    експонента, яка має ту ж форму, як ціла константа.

    Наприклад:
    Десятинна форма Звичайна експоненціальна форма Експоненціальна форма у мовах Pascal та C
    -12345000000
    0.00000467 -1.12345 x 1010
    4.67 x 10-6 -1.2345E+10
    4.67e-6

    Отже, експоненціальна форма у мовах програмування зв’язана з науковою нотацією наступним чином:
    (коефіцієнт)E(експонента) = (коефіцієнт) x 10 (експонента)
    Точність дійсних змінних обмежена кількістю цифр коефіцієнта (наприклад, 11-12 цифр для типу Real Pascal).
    Дійсні змінні можуть зберігати значення дійсних чисел у визначених діапазонах.

    Ініціалізація змінних  при створенні

    Наприклад:
    const r : real  = 5; \\ опис та ініціалізація змінної r
    const db_pi : real  = 2 * PI; \\ опис та ініціалізація змінної db_pi

    Ініціалізація::=< індикатор типу >< ідентифікатор >=< статичний вираз >

    Наприклад:
    float r = 5;
    float db_pi  = 2 * PI;

    Оператор привласнення

    <оператор привласнення >::=<ідентифікатор>=<вираз >

    Наприклад:
    len = db_pi   *  r ;
    Операції над значеннями цілих та дійсних типів

    Існує декілька операцій у мовах програмування, які мають звичайний арифметичний сенс, і які можуть розглядатися як ідентичні для цілих та дійсних даних: додавання, віднімання, множення та ділення (real division).
    Також, існують спеціальні операції для цілих чисел: цілочисельне ділення (integer division) та взяття решти від цілочисельного ділення (modular division).
    Цілочисельне ділення є обчисленням цілої частини результату ділення двох чисел. Символ, які використовується для позначення цієї операції у мові Pascal - "div". Наприклад, 7 div 3 = 2, 17 div 5 = 3.
    Взяття решти від цілочисельного ділення – це операція, яка дає ціле число, що отримується як решта від цілочисельного ділення двох позитивних цілих чисел. Ця операція позначається символом "mod" у мові Pascal та " % " у мові C:  7 mod 3 = 1,  15 mod 2 = 3, 23 % 8 = 7, 78 % 15 = 3.
    Треба відмітити, що дійсне ділення ( / ) завжди дає результат дійсного типу, в незалежності від того, що один або обидва операнди є цілими. Тому при необхідності застосування дійсного ділення його результат має бути присвоєним змінній дійсного типу.
    Результат дійсного ділення може бути присвоєним змінної цілого типу шляхом його перетворення у цілий тип. Є спеціальні функції для такого перетворення у мові Pascal - "Round()" та "Trunc()". Функція "Round()" округлює результат виразу між дужками звичайним математичним чином (наприклад, round(5.67) дорівнюється 6). Функція "Trunc()" просто відкидає дробову частину (наприклад, trunc(3.75) дорівнюється 3).
    Мова С передбачає те, що дробова частина дійсного числа зажди відкидається, якщо змінна, який присвоюється результат, має цілій тип.

    Загальна спрощена структура програми 

    програма::=main(){{<оператор>}0}

    // Рівень опису глобальних програмних об’єктів. Включає об’яву та опис об’ктів та типів.
    main()
    { // Тіло програми, що включає оператори програми
    }

    Методичні вказівки

    Правила складання ідентифікаторів

    а) Smalltalk- стиль. 
    Для написання позначок використовуйте малі літери. Якщо позначка складається з декількох слів, тоді кожне слово починайте з великої літери.

    б) Написання префіксів. Угорська нотація
    Таблиця 2.1
    Тип Приставка Приклад
    Char c cDriveName
    Int n nIndex
    Long l lFileSise
    Double f fVolume
    Long pointer p lpszDirName
    Член структурних даних m_ m_NIndex
    Позначка константи Нижній регістр ONE,TWO
    ASCIIZ-строка sz szName



    Правила опису об’єктів у програмі

    1. Не розташовуйте в одному рядку більше одного ідентифікатора при описі об'єктів.
    2. Розташовуйте описи за алфавітом та вирівнюйте розташування описів за стовбчиками, наприклад,
    int ab,
    bcd,
    z;
    3. Супроводжуйте позначки пробілами (за винятком: перед та після дужок,  перед комою,  крапкою,  крапкою з комою).
    4. Використовуйте позначки з сенсом, якщо у позначці є цифри,  розташовуйте їх в кінці.
    5. Не використовуйте одну позначку для декількох цілей.
    6. Уникайте литералів, а використовуйте константи.
    7. Для позначок використовуйте Smalltalk – стиль та Угорську нотацію.
    8. Вирівнюйте усі оператори привласнення вертикально.
    9. Не розташовуйте на одному рядку більше одного оператору привласнення.

    Завдання 1

    Написати програми, які складаються з наступних дій:
    Опису констант цілого типу.
    Опису змінних цілого типу.
    Ініціювання об'єктів при описі.
    Ініціювання об'єктів оператором привласнення, використовуючи значення з варіантів (табл. 2.2). Дослідити входження даних з варіанта до діапазону подання значень відповідного типу.
    Примітка: При написанні програми дослідити опис літералів у 10-й, 8-й, 16-й системах числення.
    Таблиця 2.2
    № 
    варіанта Цілі типи
    Short int long unsigned  short
    1 54
    789
    3d 800
    67.8
    -1275978 3475898789
    -45.78
    567 288
    156378
    -40
    2 -70
    657
    7a -745
    20.78
    228597 14756987897
    71.8
    -57 135
    351362
    -34
    3 20
    387
    5b 456
    74.8
    -428557 2568912795
    43.3
    -45 70
    456239
    -37
    4 1c
    -88
    510 1024
    -61.37
    337752 4015642735
    -97.8
    2768 438
    74234
    -65
    5 32
    -566
    2f 31.55
    -3689
    99771 231456
    47.9
    21345678901 -453
    12
    135790
    6 5d
    -100
    398 89
    23.7
    -45621 9876543210
    5.5
    -42764 7532
    -10
    68909
    7 -44
    3b
    157 8.9
    40876
    -865 -39.1
    3152748507
    907 -77
    456
    100543
    8 8a
    64
    -136 -5.67
    98
    209754 361
    78.9
    -2973738122 87654
    -13
    67
    9 607
    3d
    -58 903
    12.4
    -43956 -832
    5301090804
    39.5 -45321
    90
    6543
    10 23
    150
    7a -53
    9.9
    42985 -24.8
    740
    11435684900 78
    -34
    68355
    11 -409
    2e
    13 -0.06
    2050
    153896 38
    -3344556677
    51.6 293
    71098
    -5
    12 6c
    -67
    256 89761
    -53
    82.4 -37
    44.9
    6785940321 123654
    -456
    879
    13 90
    379
    1f -753
    4.23
    51806 -12.47
    2918467325
    9080 -75
    98765
    37
    14 135
    4e
    -86 9.63
    -42659
    163 10003254761
    36.8
    472 1703
    403070
    -5
    15 7b
    -64
    465 35642
    905
    -57.91 -2431587690
    33578
    7.12 -54
    314
    69653

    Завдання 2

    Написати програми, які складаються з наступних дій:
    Опису змінних дійсного типу.
    Опису констант дійсного типу.
    Ініціювання об'єктів при опису.
    Ініціювання об'єктів оператором привласнення, використовуючи значення з варіанта (табл. 2.3). Дослідити входження даних з варіанта до діапазону подання значень відповідного типу.
    Примітка: При написанні програми дослідити опис дійсних літералів.

    Таблиця 2.3
    № варіанта Дійсні типи
    float double
    1 -23564567894.76
    0.000000984879
    345.541051 -345.541051
    0.876710-329
    2 0.0000000078234
    -0.56781062
    3465787652.98 -0.46810500
    567.6710-90
    3 -45.67810-43
    25167876500.01
    0.120002312 -45.67810-1333
    0.7671065
    4 765.231029
    -123456789086.9
    76.510-400 -0.43510-432
    9876.45610201
    5 35678932109.67
    -0.0000007654
    98.12310-61 -64.87321099
    0.543210-396
    6 0.02000405434
    -374.121043
    98765432753.76 -0.321101097
    98.7610-86
    7 -408.34110-40
    0.876500023
    6574839201.998 456.2310-3048
    -0.35781052
    8 -0.002345087
    2938485763.12
    786.321042 0.438510-111
    -49.765104125
    9 0.2327218654
    -8694032167.9
    786.321054 -0.2531099
    854.10110-895
    10 -0.00330044982
    214.5610-63
    10243657043.55 0.73110-3408
    -452.111045
    11 0.000010001001
    -342.9871074
    62413879012.45 -0.842107041
    124.83210-212
    12 0.0908070605
    -116655773377.99
    78.5210-49 0.13210-273
    -943.14104867
    13 -0.58123109845
    23864561254.93
    612.381046 -0.74810301
    425.7310-2322
    14 0.6891354328
    362514748596.84
    -52.2910-73 0.89910-5320
    -743.610189
    15 0.0000000002222
    -61879153264.89
    473.51091 -0.0210-300
    365.1102581

    Завдання 3

    Написати програми, які складаються з наступних дій:
    Опису змінних цілого та дійсного типів.
    Використання арифметичних унарних операцій над змінними цілого (табл. 2.4) та дійсного типів. Значення дійсних типів обираються  довільно. 
    Використання арифметичних бінарних операцій над змінними цілого та дійсного типів. Значення дійсних типів обираються  довільно. 

    Таблиця 2.4

    варі-анта Опе-ран-ди Операції
    Збере-ження знаку Запере-чення знаку Дода-вання Відні-мання Мно-ження Ціло-чисель-не ділення Зали-шок від ділення Ділення
    1 1 67 -23 -47 999 34 12 12 19 30
    2 - - 98 -765 3 3 5 3 7
    2 1 -8 890 235 78 97 15 15 17 48
    2 - - -655 34 20 5 4 3 7
    3 1 76 -32 -117 -65 18 16 16 28 44
    2 - - 68 99 4 4 3 5 5
    4 1 -34 98 345 43 7 18 18 19 81
    2 - - -55 87 23 6 5 4 10
    5 1 56 -73 46 -79 13 20 20 32 18
    2 - - 87 12 3 5 6 6 4
    6 1 -23 802 231 48 12 10 10 24 45
    2 - - -57 207 9 2 4 5 9
    7 1 75 -54 271 -78 17 18 18 38 50
    2 - - 112 190 5 3 4 4 9
    8 1 -44 86 45 63 14 21 21 27 102
    2 - - -256 27 3 3 2 7 9
    9 1 112 -31 65 -95 18 8 8 53 94
    2 - - 13 209 4 4 3 9 8
    10 1 -69 154 203 -184 20 9 9 46 35
    2 - - 32 84 7 3 4 4 9
    11 1 70 -13 37 98 33 15 15 29 134
    2 - - -87 130 4 3 6 5 10
    12 1 -29 91 173 -47 46 20 20 74 24
    2 - - 34 95 3 2 7 7 5
    13 1 34 -25 17 293 26 24 24 82 72
    2 - - -68 86 5 6 5 9 7
    14 1 -59 101 136 -43 15 12 12 16 52
    2 - - -57 63 7 6 7 5 8
    15 1 78 -49 23 245 22 18 18 36 81
    2 - - 64 192 11 9 5 7 6

    Контрольні запитання

    1. Наведіть поняття типу в мовах програмування, дайте класифікацію типів.
    2. Що таке дискретний діапазон та дискретні типи?
    3. Перелічить існуючі цілі та дійсні типи.
    4. Наведіть приклади значень цілих типів та їх зображень у різних системах числення.
    5. Наведіть приклади значень дійних типів та їх зображень.
    6. Чому обчислення над дійсними значеннями є неточними за своєю природою?
    7. Як досягти найменшої похибки в обчисленнях с дійними значеннями?

                  Помогите 5 вариант, очень прошу ) в с++ буду благодарен))
    8 сентября 2014 г. 11:21

Ответы

Все ответы