1 / 21

Typy standardowe

Typy standardowe. Typ Boolean Typ Integer Typ Float Typ Character Operacje wejścia-wyjścia. Typ standardowy Boolean 1. Definicja type Boolean is (False, True); Operatory relacyjne takie same jak dla typów wyliczeniowych = /= < <= > >= Operatory logiczne

umed
Download Presentation

Typy standardowe

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Typy standardowe • TypBoolean • TypInteger • TypFloat • TypCharacter • Operacje wejścia-wyjścia

  2. Typ standardowyBoolean1 Definicjatype Boolean is (False, True); Operatory relacyjnetakie same jak dla typów wyliczeniowych= /= < <= > >= Operatory logiczne • Jednoargumentowy (unarny - unary) -not • Dwuargumentowe (binarne – binary) –and, or, xor Priorytety (priorities) operatorów logicznych Priorytet(not) > Priorytet(and)=Priorytet(or)=Priorytet(xor) Zalecenie.Stosuj nawiasy jeżeli masz wątpliwości jak będzie obliczone wyrażenie

  3. Typ standardowyBoolean2 Dodatkowe operatory logiczne dwuargumentowe: or else(odpowiadaor), and then(odpowiadaand) W przypadku tych operatorów najpierw obliczany jest lewy argument i jeżeli wartość operacji może być wyznaczona na tej podstawie, prawy argument nie jest obliczany. Priorytet taki sam jak pozostałych operatorów logicznych dwuargumentowych Operatory przynależności: innot in służą do sprawdzania czy dana typu skalarnego należy do pewnego zakresu Liczba not in 1..10not (Liczba in 1..10)

  4. Typ standardowyBoolean3 Przykłady PP_003_Operatory_Logiczne, PP_004_Nand_Nor

  5. Typ standardowyInteger1 Zbiór do którego należą dane tego typu zależy od implementacji języka. Liczby z tego zbioru reprezentowane są dokładnie. Atrybuty‘First ‘Last ‘Size PrzykładPP_005_Atrybuty_Typu_Integer Operatory relacyjne= /= < <= > >= Operatory algebraiczne (algebraic operators) jednoargumentowe+ - abs dwuargumentowe+ - * / remmod ** PrzykładPP_006_Operacje_Calkowite DefinicjaStosowanie tych samych oznaczeń do różnych operatorów nazywamy przeciążaniem operatorów (operator overloading)

  6. Typ standardowyInteger2 Priorytety operatorów działających na argumentach typuInteger ** abs * / mod rem + - jednoargumentowe + -dwuargumentowe = /= < <= > >= relacyjne ZalecenieStosuj nawiasy jeżeli masz wątpliwości jak będzie obliczone wyrażenie. Nawiasy kosztują mniej niż błędy (Van Tassel, 1982) Uwaga Operacja**nie jest operacją wewnętrzną ponieważ drugi argument (wykładnik) jest typuNatural, a nieInteger.

  7. Typ standardowyInteger3 Zdefiniowane wstępnie (predefined) podtypy utworzone na bazie typuInteger subtype Natural is Integer range 0..Integer’Last subtype Positive is Integer range 1..Integer’Last Dzielenie całkowite 1 Przy dzieleniu dwóch liczb całkowitych - dzielnejAprzez dzielnikB /= 0otrzymuje się ilorazQi resztęR, a więc liczby te spełniają równanie A = Q*B + R W Adzie mamy operatory dwuargumentowe / i remtakie, żeQ = A/B i R = A rem B

  8. Typ standardowyInteger4 Należy zwrócić uwagę na to, że jeżeli A i B nie dzielą się bez reszty, to iloraz jest zawsze liczbą bliższą zera. Przykład 5 / 2 = 2, 5 rem 2 = 1 5 / (-2) = -2, 5 rem (-2) = 1, (-5) / 2 = -2, (-5) rem 2 = -1, (-5) / (-2) = 2, (-5) rem (-2) = -1. W przypadku operatorów/, remmamy • Wartość bezwzględna ilorazu jest równa ilorazowi wartości bezwzględnych argumentów, • Znak reszty jest zawsze równy znakowi dzielnej.

  9. Typ standardowyInteger5 Dzielenie całkowite 2 Drugim operatorem obliczającym resztę jest dwuargumentowy operator wewnętrznymod. Jeżeli B > 0, to A mod B in 0..B-1i jeżeli B < 0, to A mod B in B+1..0 Możemy zinterpretować operatormodjako operator obliczający resztę z dzielenia całkowitego, gdy iloraz jest obliczany przy pomocy funkcji nazywanej częścią całkowitą – funkcją podłoga (floor). Funkcja ta oznaczana jest symbolem. (Ross, Wright, 1999, 188) i określona jest następująco: x = największej liczbie całkowitej takiej, że jest mniejsza lub równax

  10. Typ standardowyInteger6 Przykład4.5 = 4, -4.5 = -5. Jeżeli A = Qm*B + Rm, to Qm = A/B. Przykład 7/3 = 2, 7 mod 3 = 1, -7/3 = -3, -7 mod 3 = 2, 7/-3 = -3, 7 mod -3 = -2, -7/-3 = 2, -7 mod -3 = -1. W przypadku operatoramodmamy: • O znaku wyniku decyduje zawsze znak drugiego argumentu, czyli dzielnika • W przypadku, gdy znaki argumentów są różne, wyniki operacjiAremBi AmodBróżnią się.

  11. Typ standardowyInteger7 Operacja modsłuży do implementacji arytmetyki modulo (modular arithmetic). W arytmetyce tej mamy m.in. (A + B) mod N = (A mod N + B mod N) mod N Przykład Wykresy funkcji k  k mod 5, k  k/5, k in –10..10, k  k rem 5, k  k/5, k in –10..10 pokazano na kolejnych dwóch rysunkach.

  12. Typ standardowyInteger8

  13. Typ standardowyInteger9

  14. Typ standardowyFloat1 Ogólnie, liczby rzeczywiste są reprezentowane w sposób przybliżony. Reprezentacja typu standardowegoFloatzależy od implementacji języka. Inne typy zdefiniowane wstępnie: Short_Float, Long_Float, Long_Long_Float Wybrane atrybuty ‘First, ‘Last, ‘Size, ‘Digits, ‘Model_Epsilon, ‘Safe_First, ‘Safe_Last PrzykładPP_007_Zakresy_Typow_Float PrzykładPP_008_Atrybuty_Typu_Float

  15. Typ standardowyFloat2 Operatory relacyjne= /= < <= > >= algebraiczne jednoargumentowe+ - abs dwuargumentowe+ - * / ** Priorytety takie jak dla typuInteger UwagaWykładnik czyli drugi argument operatora potęgowania jest typuInteger PrzykładPP_009_Operacje_Rzeczywiste Konwersja liczb rzeczywistych na całkowite i odwrotnie Float(67 = 67.0 , Integer(67.4 = 67

  16. Typ standardowyFloat3 • Przy konwersji liczb rzeczywistych na całkowite wynik jest liczbą całkowitą najbliższą liczbie rzeczywistej • W przypadku, gdy liczba rzeczywista jest w równej odległości od dwóch liczb całkowitych wynik konwersji jest liczbą całkowitą dalszą od zera Integer(3.5) = 4, Integer(-3.5) = -4 PrzykładPP_010_Konwersja Częste stosowanie konwersji jawnej może wskazywać na to, że przyjęto nieodpowiednie typy danych PrzykładPP_011_Konwersja_Jednostek

  17. Typ rzeczywisty ogólny PrzykładPP_012_Moje_Liczby_Rzeczywiste Można jednak to zrobić ogólniej, co zapewni nam przenośność programów PrzykładPakiet definicyjnyMy_Reals PrzykładPP_013_Atrybuty_Typu_Real PrzykładPP_014_Test_Reals

  18. Wybrane operacje wejścia-wyjścia 1 subtype Field is Integer range 0 .. 255; subtype Number_Base is Integer range 2 .. 16; Liczby rzeczywiste type Num is digits <>; Default_Fore : Field := 2; Default_Aft : Field := Num'Digits - 1; Default_Exp : Field := 3; procedure Put (Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp);

  19. Wybrane operacje wejścia-wyjścia 2 Liczby całkowite package Ada.Text_IO.Integer_IO is Default_Width : Field := Num'Width; Default_Base : Number_Base := 10; type Num is range <>; procedure Put (Item : in Num; Width : in Field := Default_Width; Base : in Number_Base := Default_Base);

  20. Wybrane operacje wejścia-wyjścia 3 PrzykładPP_015_Formatowanie PrzykładPP_016_Read_Boolean PrzykładPP_017_Czytaj_Typ_Wyliczeniowy PrzykładPP_018_Czytaj_Dowolny_Napis Przykład Pakiet definicyjnyMy_Robust_Input.ads, Pakiet implementacyjny My_Robust_Input.adb PrzykładPP_019_Test_My_Robust_Input

  21. Zadania. Literatura podstawowa Zadania Ada_Zadania_04_Typy_Standardowe.pdf Literatura podstawowa Morawski, M., Zajączkowski, A.M. (2003). Wstęp do programowania w języku Ada’95. Rozdziały 3.6..3.9.

More Related