22945

СТАНДАРТНІ ТИПИ ДАНИХ

Лекция

Информатика, кибернетика и программирование

До них відносяться числа символи булеів значення та адреси. Вираз може не мати значення на певних даних наприклад зациклюватись. Вважається що в цьому разі він приймає значення =невизначено. 2 Яке значення набудуть змінні АВС після виконаня оператора { int A=0B=2C=1; A=2 A B C; } З точки зору семантики булевий тип є моделлю двозначної булевої алгебри.

Русский

2013-08-04

194.5 KB

0 чел.

СТАНДАРТНІ ТИПИ ДАНИХ

Згiдно з принципом типізації кожне дане мови програмування належить певному типу і тільки одному. Тип визначає  синтаксичну та семантичну структуру об'єктів, рівень та функції доступу до їх значень(=інтерфейсні функції), їх загальні властивості (операції, стандартні функції ), а також в значній міри і їх прагматику. Наприклад, аналіз типу даного дозволяє, не звертаючись до його значень,  контролювати на чисто синтаксичному рівні помилкове його використання в програмах. Типи даних розподіляються на стандартні та похідні. Стандартні дані – це ті, які  представлені безпосередньо в машинних командах,   ними оперує процесор. До них відносяться числа, символи, булеів значення  та адреси.  З точки зору процесора ці дані  є цілісними, далі неділимими.  Похідні дані мають певну внутрішню структуру, вони будуються зі стандартних даних за допомогою спеціальних конструкторів типів. Це - масиви, структури, обєднання, бітові поля,  потоки.

 

Булевий тип. У мові Сі  цей тип явно не представлено. Роль булевих констант відіграють цілі числа: 0 означає «лжа»,  решта цілих (у тому числі і від’ємні ) означають – «істина». Використовується для побудови логічних виразів, які, взагалі кажучи, є  трьохзначними. Вираз може не мати значення на певних даних (наприклад, зациклюватись). Вважається, що в цьому разі він приймає значення - (=”невизначено”).

Операції: || - диз’юнкція, && - кон’юнкція, ! – заперечення. Їх семантика задається формулами:

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

Впр. 

1) Навести приклади порушень  закону асоціативності для операцій дизюнкції та  конюнкції .

2)  Яке значення набудуть змінні  А,В,С після виконаня оператора

{ int A=0,B=2,C=1;     (A=2<<++A) || ++B && --C; }  ?

З точки зору семантики булевий тип є моделлю двозначної булевої алгебри.

Для змінних цього типу є справедливими закони булевої алгебри.

(P = = 1) P

if  (P = =1) Оп   if (P) Оп

if  (P = = 0) Оп   if  (! P) Оп

2) Символьний тип (Char).

       Слугує для відображення  інформації на периферійних  пристроях. В пам’яті символи зберігаються у вигляді числових кодів. На периферійних пристроях – у вигляді знаків. Відповідність між кодами та їх  знаками подається кодовою таблицею, нпр.,  ASCII (American Standard Cod for Information Interchange ) . Вона містить 256 кодів  з діапазону 0..255.  Кожному символу відповідає певний  код  ( 0 ≤  код ≤ 255 )  таблиці та його знак.

В Сі  символи можна подавати:

1)  знаками в одиночних лапках : a , ‘/’, ‘0’….

2)  за допомогою 8- та 16- річних кодів:

‘\ccc’ – cвісімкова цифра; нпр., ‘\007’ – символ  Bell (дзвоник  в ASCII)

’\xhh’  - h - шістнадцятирічна цифра; нпр., ‘\x7’ -  символ  Bell (дзвоник  в ASCII),

3) у вигляді ескейп-послідовностей ‘\....’ / . Нпр.,

   ‘\a’ -  дзвоник, ‘\n – новий рядок, ‘\r повернення каретки, ‘\0’ -  символ null. 

Семантично тип Char належить до цілочислових типів розміру 1 байт. На ньому визначена цілочислова  арифметика. Символьні дані можуть зустрічатися в арифметичних виразах .  Значеннями таких даних  слугують числові коди символів.

 

3) Цілі типи (int, long, short ).

Цілий тип є наближеною cкінченою моделлю арифметики цілих чисел.

Тип int являє скінченну сукупність цілих чисел, які на внутрішньому рівні подаються 2 байтами(=розмір  машинного слова).

maxint = 215 – 1 = 32 767

minint = – 215 = – 32 768

Знак:  0 для  чисел   >0,  1 для чисел  <0. 

Розміри типів long int  short int  скорочено (long  та  short) залежать від компілятора.

Їх можна знайти за допомогою опрерації sizeof(long) та  sizeof(short) .

Але в будь якому разі – розмір першого не менший від розміру типу int, а розмір другого не більший від розміру int.

Константи цілого типу можуть записуватись в 10-й, 8-й та 16-й системах з закінченнями u (U) для безнакових цілих, l(L) – для довгих цілих. Нпр.,

10U, 0L, 25uL

037, -0777                   ---  8-і цілі  

-0x25, 0xFFF0             --- 16-цілі.

У файлі  <limits.h> визначаються розміри деяких констант для цілочислових типів  компілятора. Нпр.,  

СHAR_BIT         8                                бітів  в полі для   char

 UCHAR_MAX   255                            мах  значення в  char

 INT_MAX           +32767                      мах  значення в  int

 INT_MIN             -32768                      мin  значення в int

 LONG_MAX       +2147483647           мах  значення в  long

 UINT_MAX         65535                       мах  значення в  unsigned int

і т.д.

Алгебра

          ! ++, --  ~ (побітове заперечення) + -                       (унарні операції)

*, /, %

+,  –

<<, >>,

<  <=  >  >=

= =  !=

& (побітова конюнкція)

^ ( побітове додавання по модулю 2)

|  (побітова диз’юнкція)

&&

||

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

Прикл.

int i=3;

  1.  i<<2 ==00001100  i>>2 ==00000000
  2.  i& ~07 ==00000011 & ~00000111 == 00000011 & 111111000 == 00000000

           Впр. 3.2 РП   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

4) Дійсний тип. (double, long double, float).

Машинний тип Real призначений для моделювання дійсної арифметики.

Множина R дійсних чисел континуальна. Real – скінченна підмножина раціональних чисел.

Нехай , тоді [x] подання x в Real.  [ ] : RReal.

Невеликі цілі числа при такому відображенні залишаються на місці [0] = 0, [1] = 1, ...

Прообрази R в Real є зв’язними (неперервними) інтервалами

Якщо [X1] =  [X2]  і  ,   [X3] = [X1]= [X2]. Real є симетричним відносно 0: [-X] = -[X].

В Real існує найбільше значення max.

- зв’язана в R.

- зв’язана в R.

Алгебра

1) +, * – комутативні операції

[X] + [Y] = [Y] + [X]

[X] * [Y] = [Y] * [Y]

2) X ≥ Y > 0

([X] + [Y]) – [Y] = [X]

3) Симетричність відносно 0

[X] – [Y] = [X] + [-Y]

[-X] * [Y] = [X] * [-Y] = -[X] * [Y]

4) Монотонність : якщо 0 ≤ Х ≤ a, 0 ≤ Yb, то

[X] + [Y] ≤ [a] + [b]

[X] * [Y] ≤ [a] * [b]

[X] + [b] ≤ [Y] + [a]

[X] / [Y] ≤ [a] / [b]

5) Для  X = Y : [X] = [Y]

        XY:  [X] – [Y] ≥ 0

                     [X] – [X] = 0

                     [X] + 0 = 0 + [X] = [X]

На внутрішньому рівні тип Real подається у вигляді десяткових дробів з мантисою і порядком.

, де m – мантиса, р – порядок. Цей запис означає число  .

Використовується нормалізоване подання чисел  – з мантисою  0.1 ≤ m < 1.

Нпр.,  0.01E+1 – ненормалізована форма,  0.1Е+0 – нормалізована форма

Внутрішнє подання даних типу Real має вигляд:

Всі поля мають фіксований розмір, який залежить від компілятора. Розряди поза мантисою і порядком -  відкидаються.

Якщо взяти числа з фіксованими порядками: то найбільша щільність чисел  має місце на інтервалі [0.1 , 1) ( числа  мають вигляд  ). На інтервалі [1 , 10)  щільність менша (числа тут мають вигляд  ). Кількість мантис - та ж сама, а інтервал в 10 разів більший. І т.д.  Звідси випливає, що похибка  обчислень для  великих чисел зростає. Навіть великі цілі числа  будуть подаватися неточно. Молодші розряди, які не попадають в мантису  замінюються на 0. Нпр., якщо  мантиса  має розмір  11 десяткових цифр, то 11-разрядне  ціле число n=100 0000 0001   буде подано точно як , а 12-розрядне ціле n1=1000 0000 0001- неточно  як  [n1]= 0.1E+12 ( наймолодша цифра (=1) буде втрачена !!! ). Щільність розташування чисел в Real характеризує константа-машинний нуль =.

У файлі  <float.h> визначаються розміри деяких констант для дійсних  типів даного компілятора. Нпр.,  

 FLT_DIG            6                                кількість десяткових цифр в мантисі  для  float

 FLT_EPSILON  1E-5                           машинний нуль в  float

 FLT_MAX          1E +37                     мах  значення в  float

 FLT_MIN            1E-37                      min  значення в float

FLT_MIN_EXP                                  найменше  n  таке, що  точно подається в float

 DBL_DIG            10                           кількість десяткових цифр в мантисі  в double

 DBL_EPSILON  1E-9                        машинний нуль  в double

 DBL_MAX          1E +37                   мах  значення в  double

 DBL_MIN            1E-37                     min  значення в double

 DBL_MIN_EXP                                  найменше  n  таке, що   точно подається в  double

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

Закінчення  f (F) вказує на тип float, а  l(L) –  на тип long double. Нпр.,

1.0f          ---  належить до   float

1e-2L       --- належить до    long double

1.0e+25  ---  належить до   double.

Впр. 2.11. Знайти за допомогою рядів Тейлора наближені значення функцій  та  з урахуванням їх повільного спадання для великих аргументів (). Скористатися тотожність , де ,  та  періодичністю функції .

Алгебра

1) Адитивні  операції:   +, –.

Цим операціям передує вирівнювання порядків. Операнд з меншим порядком приводиться до більшого (за абсолютною величиною).

,  , де

 

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

Прикл.

1)   a = 0.123555E+5

      b = 0.155E+6

     Вирівнювання:  a = 0.0123555E+6,  b = 0.155E+6

     a + b = 0.1673555E+6

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

2)   Нехай в мантисі 4 десяткові цифри.

     a = 0.1222E+3

     b = 0.15E+6

     Вирівнювання порядків:  a = 0.0001E+6,  b = 0.15E+6

     a + b = 0.1501E+6

     У сумі  втрачено 0.0000222Е+6 !!!

2) Мультиплікативні  операції : *, /.

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

Оскільки діапазон порядків обмежений, то можлива ситуація зникнення” порядків. Тому ділити на дуже маленькі числа і множити на дуже великі небезпечно !!!.

Прикл.   Нехай в мантисі 4 цифри. Розв’язати рівняння  x2 – 200x + 1 = 0.

d = sqrt( sqr(-200) – 4) == sqrt (0.4E+5 – 0.00004E+5) == 200.0

x1 = 200.0;

x2 = 0.0000;

Виберемо за х1 більший з коренів. За теоремою Вієта маємо

x2 = c/(a*x1);

x2 = 1.000/(200.0*1.000) == 0.005

Отже за першим методом ми отримали значення х2 далеке від кореня.. Після підстановки його в рівняння маємо: . Другий метод дає значно кращий результат: .

Функції для роботи з дійсними типами знаходяться в  бібліотеці   <math.h>. Всі функції повертають значення типу double. Кути в тригонометричних функціях задаються в радіанах. Деякі з функцій наведені нижче. Далі:

 double x,y;

 int n;  

sin(x)  

cos(x)

tan(x)      

asin(x)             арксинус  ,

atan(x)             арктангес

exp(x)             

log(x)              

log10(x)          

pow(x,y)         

sqrt(x)            ,

ceil(x)              найближче до ціле в типі  double, яке не менше  

floor(x)            найближче до ціле в типі  double, яке не більше

fabs(x)             

frexp(x,int *exp)       виділяє нормалізовану мантису   в діапазоні , яка повертається, та двійковий порядок , який зберігається за адресою exp. Таким чином, . Для   обидві  частини результату теж  =0.

modf(x, double *ip)  виділяє цілу та дробову частини, які мають знак однаковий з . Ціла частина зберігається за адресою , дробова повертається як результат.

Тип числових виразів. Перетворення числових типів.

Всі числові типи упорядковані за старшинством наступним чином:

char < unsigned char< short<unsigned short<int< unsigned int< long<unsigned long< <float<double<long double.

Кожний числовий вираз  має певний тип,  яким є  старший  з типів всіх його операндів.  

В процесі обчислення значення виразу всі його операнди автоматично перетворюються до  типу виразу.

1) Цілочислове підвищення. Здійснюється, коли вираз має тип int або long.  Якщо тип виразу дозволяє точно подати значення молодшого операнду, то останнє перетворються до нього, у супротивному   - до  беззнакового типу  unsigned int   або  unsigned long.

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

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

4) Перетворення типів в операціях присвоєння. Тип виразу-присвоєння   співпадає з типом лівого операнда. При обчисленні значення виразу  даний операнд перетворюється  до типу лівого за вказаними вище правилами.

Табл..  Пріоритети операцій та порядок виконання

Операції

Порядок виконання

() [ ] ->

==>

! ~ ++ -- + _-  * & (тип) sizeof

<==

*  /  %

==>

+  -

==>

<<  >>

==>

<   <=   >   >=

==>

==   !=

==>

&

==>

^

==>

|

===>

&&

==>

||

==>

?:

<===

=  +=  -=  *=  /=  &=  |=  <<=  >>=

<==

,

==>


Типи даних

Стандартні

Похідні

Числові

имвольний

Булевий

цілі 

дійсні

       Адреси

знак

15 біт

Real

R

[X1]

[X2]

[XP]

Xi

Xk

X1

X2

знак

m - мантиса

р - порядок


 

А также другие работы, которые могут Вас заинтересовать

83519. Поняття і значення права мирного вирішення міжнародних спорів 36.45 KB
  Право мирного вирішення міжнародних спорів - галузь міжнародного права, норми та принципи якої встановлюють порядок врегулювання спорів між суб\'єктами міжнародного права мирними засобами.
83520. Поняття міжнародного спору 35.63 KB
  Міжнародний Суд ООН вбачає ознаки спору в обставинах за якими було висунуто деякі звинувачення проти ряду країн які їх відхилили консультативний висновок від ЗО березня 1950 р. Предметом міжнародного спору може бути зокрема правовий статус конкретної території розмежування державних кордонів втручання у внутрішні справи доступ до континентального шельфу тощо. Від спору слід відрізняти односторонні претензії.
83521. Види міжнародних спорів 35.18 KB
  Для міжнародного права істотним є розмежування спорів міжнародних та спорів що не мають такого характеру. У першому випадку Рада Безпеки ООН на підставі Розділу VII Статуту ООН має загальну виключну компетенцію для підтримання чи відновлення міжнародного миру та безпеки. У доктрині міжнародного права також застосовується поділ міжнародних спорів на правові юридичні в яких підставою претензій та заперечень на них виступають норми міжнародного права та політичні які ґрунтуються на політичних аргументах неправової природи. 36 Статуту спори...
83522. Засоби вирішення міжнародних спорів. «Спір і ситуація». Класифікація мирних засобів вирішення міжнародних спорів 38.21 KB
  Класифікація мирних засобів вирішення міжнародних спорів Статут ООН п. Стаття 33 Статуту ООН серед мирних засобів вирішення міжнародних спорів вказує переговори обстеження посередництво примирення арбітраж судовий розгляд звернення до регіональних органів або угод. Можна виділити дипломатичні погоджувальні та судові засоби вирішення міжнародних спорів.
83523. Дипломатичні засоби вирішення міжнародних переговорів. Безпосередні переговори і консультації. Добрі послуги і посередництво. Міжнародна примирлива процедура: слідчі і погоджувальні комісії 38.73 KB
  Переговори ведуться безпосередньо сторонами, які знаходяться у спорі. Проведення переговорів не вимагає участі третьої сторони (іншої держави, міжнародної організації). Ініціатива переговорів завжди належить сторонам спору, які тим самим здійснюють певний контроль над процесом його розв\'язання.
83524. Судові засоби вирішення міжнародних спорів. Міжнародний арбітраж як засіб мирного вирішення міжнародних спорів. Постійна палата третейського суду. Структура і компетенція Міжнародного Суду ООН 39.98 KB
  Постійна палата третейського суду. Структура і компетенція Міжнародного Суду ООН. Спробою інституалізації арбітражу було створення Постійної палати третейського суду на підставі положень Гаазьких конвенції 1899 р. Згідно зі Статутом Міжнародного Суду ООН кандидати у члени цього суду висуваються не державами а національними групами Постійної палати третейського суду тобто групами суддів Палати які представляють одну й ту саму державу.
83525. Вирішення спорів у міжнародних організаціях 39 KB
  Мирне вирішення міжнародних спорів надає широку компетенцію Раді Безпеки органу ООН який несе головну відповідальність за підтримання міжнародного миру та безпеки ст. Також компетенцію в сфері мирного вирішення міжнародних спорів має Генеральна Асамблея ООН проте вона є обмеженою на користь Ради Безпеки. Держава яка не є членом OOН також може звернутися до Ради Безпеки або Генеральної Асамблеї з приводу будьякого спору в якому вона є стороною за умови що вона заздалегідь прийме на себе зобов\'язання за...
83526. Дипломатія і дипломатичне право 34.31 KB
  Дипломатичне право у свою чергу є сукупністю міжнародноправових норм що визначають правове положення та регулюють діяльність дипломатичних представництв держав.
83527. Органи зовнішніх зносин держав 36.52 KB
  Президент України відповідно до Конституції України забезпечу державну незалежність національну безпеку і правонаступник держави; представляє державу в міжнародних відносинах здійсни керівництво зовнішньополітичною діяльністю держави веде переговори та укладає міжнародні договори України; приймає рішення про ви знання іноземних держав; призначає та звільняє голів дипломатичну представництв України в інших державах і при міжнародних організаціях; приймає вірчі і відзивні грамоти дипломатичних представника іноземних держав; вносить до...