Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru WstÄ™p do programowania wykÅ‚ad 4 Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA sem. zimowy 2011/2012 Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Jak skonstruować warunek - cd Test przynależnoÅ›ci SÅ‚owo kluczoweinpozwala sprawdzić, czy dana wartość należy do pewnego okreÅ›lonego zakresu. Zakres okreÅ›lamy albo poczatek..koniec, albo używajÄ…c nazwy (pod)typu. PrzykÅ‚ady if liczba>=2 and liczba<=8 then ... można zapisać jakoif liczba in 2..8 then ... if liczba<2 or liczba>8 then ... można zapisać jakoif liczba not in 2..8 then ... przykÅ‚ad z użyciem podtypu: if liczba in positive then ... Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Priorytet operatorów logicznych operatoryand,orixormajÄ… jednakowy priorytet priorytet w/w operatorów jest on niższy niż jakiegokolwiek innego operatora, w szczególnoÅ›ci operatorów>,<,<=,>=,= z tego powodu w warunkach postacia<2 and b>3nie musimy używać nawiasów mimo jednakowego priorytetuand,orixorróżne operatory nie mogÄ… być Å‚Ä…czone w wyrażeniu bez użycia nawiasów A or B and Cjest niepoprawne, powinno mieć postaćA or (B and C). WyrażenieA and B and Cjest poprawne. priorytet operatoranotjest wyższy niż w/w pozostaÅ‚ych operatorów logicznych not A or Boznacza(not A) or Ba nie not (A or B) Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Typ logiczny Jednym z predefiniowanych typów jest typ logiczny, czyliboolean, obejmujÄ…cy dwie wartoÅ›ci:falseitrue WartoÅ›ci w typie logicznym sÄ… uporzÄ…dkowane (false < true) Na wartoÅ›ciach i zmiennych typu logicznego można wykonywać operacje logiczne (koniunkcja, alternatywa, dyzjunkcja, negacja). DostÄ™pne operatory toand,or,xor,notorazand thenior else. Operacje wejÅ›cia/wyjÅ›cia dla typu logicznego uzyskujemy poprzez konkretyzacjÄ™ pakietuada.textio.enumerationio. Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru PrzykÅ‚ad with ada . t e x t i o ; use ada . t e x t i o ; procedure w 0 4 l o g i k a i s package b o o l i o i s new ada . t e x t i o . e n u m e r a t i o n i o ( b o o l e a n ) ; p , q : b o o l e a n ; begin p:= t r u e ; put ( w p i s z t r u e a l b o f a l s e : ) ; b o o l i o . g e t ( q ) ; b o o l i o . put ( q and p ) ; end w 0 4 l o g i k a ; Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Typy znakowe Typy znakowe to: typcharacterzawierajÄ…cy znaki ze zbioru znaków ISO 8859-1, czyli latin1 256 znaków (drukowalnych i niedrukowalnych) typwidecharacter(16-bitowy) zawierajÄ…cy znaki ze zbioru BMP (Basic MultiLingual Plane) 256 poczÄ…tkowych znaków jest takie samo jak w typiecharacter typwidewidecharacter(32-bitowy) zawierajÄ…cy znaki ze zbioru ISO 10646 65526 poczÄ…tkowych znaków jest takie samo jak w typiewidecharacter Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Znaki drukowalne ujmujemy w apostrofy ( a , 2 , ) Aatwy dostÄ™p do znaków z typucharacterumożliwia pakiet ada.characters.latin1 zawartość:c:/GNAT/GPL_2006/lib/gcc/pentium-mingw32msv/3.4.6/adainclude/a-chlat1.ads(lub podobna Å›cieżka) Wprowadzanie i wyprowadzanie znaków typucharacter, widecharacteriwidewidecharacterzapewniajÄ… pakiety ada.textio,ada.widetextioiada.widewidetextio. Do wprowadzania i wypisywania znaków sÅ‚użą procedurygetiput. Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru PrzykÅ‚ad with ada . t e x t i o , ada . Wide Text IO , ada . w i d e w i d e t e x t i o ; use ada . t e x t i o ; procedure w 0 4 z n ak i i s zn : c h a r a c t e r ; wzn : w i d e c h a r a c t e r ; wwzn : w i d e w i d e c h a r a c t e r ; begin zn := a ; wzn:= a ; wwzn:= a ; put ( zn ) ; ada . Wide Text IO . put ( wzn ) ; ada . w i d e w i d e t e x t i o . put ( wwzn ) ; end w0 4 z na ki ; Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru PrzykÅ‚ad with ada . t e x t i o , ada . c h a r a c t e r s . l a t i n 1 ; use ada . t e x t i o ; procedure w04 z na k i 2 i s begin put ( ada . c h a r a c t e r s . l a t i n 1 . S e c t i o n s i g n ) ; end w 0 4 zn aki2 ; Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru PrzykÅ‚ad with ada . t e x t i o ; use ada . t e x t i o ; procedure w04 pola i s odp : c h a r a c t e r ; begin put ( P-p ole , o-o b j e t o s c ) ; g e t ( odp ) ; i f odp= p or odp= P then put ( l i c z y m y p o l e ) ; e l s i f odp= o or odp= O then put ( l i c z y m y o b j e t o s c ) ; e l s e put ( z l y k l a w i s z ) ; end i f ; end w04 pola ; Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Typy wyliczeniowe Typ wyliczeniowy to taki typ, którego elementy można wyliczyć (wymienić) elementy typu sÄ… uporzÄ…dkowane (ustawione w okreÅ›lonej kolejnoÅ›ci) można znalezć element pierwszy (najmniejszy), ostatni (najwiÄ™kszy), a dla danego elementu - poprzedzajÄ…cy go i nastÄ™pny po nim, o ile takie istniejÄ… zdefiniowana jest relacja mniejszoÅ›ci - element mniejszy to taki, który stoi wczeÅ›niej w deklaracji typu każdy element ma swojÄ… pozycjÄ™ (numeracja pozycji zaczyna siÄ™ od 0) Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru PrzykÅ‚ady typów wyliczeniowych: typboolean typy znakowe można również definiować wÅ‚asne typy Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Definicja typu wyliczeniowego Typ wyliczeniowy definiujemy nastÄ™pujÄ…co: type nazwa typu is (element 1, element 2, ..., element n); Elementami typu wyliczeniowego mogÄ… być znaki (ujÄ™te w apostrofy) lub identyfikatory. PrzykÅ‚ady type dni is (pon, wt, sr, czw, pt, so, nie); type cyfryrzymskie is ( I , V , X , L , C , D , M ); type xxx is (r2, a , cc12); Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Procedury umożliwiajÄ…ce wprowadzanie i wyprowadzanie wartoÅ›ci tdanego typu wyliczeniowego uzyskujemy konkretyzujÄ…c dla tego typu pakietada.textio.enumerationio Proceduraputdla typu wyliczeniowego ma parametrSetmogÄ…cy przyjmować wartośćUpperCaselubLowerCase, co skutkuje wypisywaniem wartoÅ›ci odpowiednio wielkimi lub maÅ‚ymi literami Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru PrzykÅ‚ad with ada . t e x t i o ; use ada . t e x t i o ; procedure w 0 4 r z y m s k i e i s type CRZ i s ( I , V , X ) ; package Rzio i s new ada . t e x t i o . Enumeration IO (CRZ ) ; use Rzio ; c : CRZ ; begin put ( Podaj c y f r e rzymska (w a p o s t r o f a c h ) : ) ; g e t ( c ) ; put ( c ) ; end w 04 r z y m s k i e ; Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru PrzykÅ‚ad with ada . t e x t i o ; use ada . t e x t i o ; procedure w 0 4 k o l o r y i s type k o l o r y i s ( red , green , b l u e ) ; package k i o i s new ada . t e x t i o . Enumeration IO ( k o l o r y ) ; use k i o ; k : k o l o r y ; begin put ( Podaj k o l o r : ) ; g e t ( k ) ; put ( k , s e t=>l o w e r c a s e ) ; end w 0 4 k o l o r y ; Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Klasyfikacja typów Typy w Adzie dzielÄ… siÄ™ na proste i zÅ‚ożone. WÅ›ród typów prostych wyróżniamy typy dostÄ™pu i typy skalarne. Typy skalarne w Adzie typy dyskretne typy caÅ‚kowite (ze znakiem, modularne) typy wyliczeniowe typy rzeczywiste typy staÅ‚oprzecinkowe (zwykÅ‚e i dziesiÄ™tne) typy zmiennoprzecinkowe http://en.wikibooks.org/wiki/File:Ada_types.png Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Atrybuty typów Atrybuty okreÅ›lone dla typów rzeczywistych i dyskretnych T- typ T firstiT last atrybuty podajÄ…ce najmniejszÄ… i najwiÄ™kszÄ… wartość w typie T przykÅ‚ady:integer first,natural last,float first,kolory last T pred(·)iT succ(·) atrybuty podajÄ…ce poprzedniÄ… / nastÄ™pnÄ… wartość (w typie T) wzglÄ™dem elementu podanego jako argument przykÅ‚ady:integer pred(12),natural pred(12),float succ(12.0), kolory succ(red) Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Atrybuty okreÅ›lone dla typów rzeczywistych i dyskretnych - cd T- typ T image(·)iT value(·) zwracajÄ… odpowiednio: Å‚aÅ„cuch tekstu (napis) odpowiadajÄ…cy wartoÅ›ci typu T podanej jako argument, oraz wartość typu T odpowiadajÄ…cÄ… napisowi podanemu jako argument przykÅ‚ady:integer value("12"),float value("12.13"), kolory image(red) T base odwoÅ‚uje siÄ™ do typu bÄ™dÄ…cego typem bazowym dla T przykÅ‚ady:natural base first,positive base pred(0) T min(·, ·)iT max(·, ·) zwracajÄ… mniejszÄ… / wiÄ™kszÄ… z dwóch wartoÅ›ci typu T podanych jako argumenty przykÅ‚ady:integer max(3, 12),float min(12.1, -2.3) Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Atrybuty okreÅ›lone tylko dla typów dyskretnych T- typ dyskretny T pos(·)iT val(·) zwracajÄ… odpowiednio: pozycjÄ™ na której stoi w typieT element bÄ™dÄ…cy argumentem (wartość typu universalinteger), oraz wartość stojÄ…cÄ… w typieTna pozycji podanej jako argument przykÅ‚ady:integer pos(12),kolory val(1),kolory pos(red) Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru PrzykÅ‚ad wi t h ada . t e x t i o ; use ada . t e x t i o ; p r o c e d u r e w04 chemia i s type p i e r w i s (O, S , Ag ) ; type nazwy i s ( t l e n , s i a r k a , s r e b r o ) ; package k i o i s new ada . t e x t i o . E n u m e r a t i o n I O ( p i e r w ) ; use k i o ; package k i o 1 i s new ada . t e x t i o . E n u m e r a t i o n I O ( nazwy ) ; use k i o 1 ; k , k2 : p i e r w ; b e g i n put ( Podaj p i e r w i a s t e k : ) ; g e t ( k ) ; put ( nazwy v a l ( pi e rw pos ( k ) ) , s e t=>l o w e r c a s e ) ; n e w l i n e ; put ( Podaj d r u g i p i e r w i a s t e k : ) ; g e t ( k2 ) ; put ( nazwy v a l ( pi e rw pos ( k2 ) ) , s e t=>l o w e r c a s e ) ; n e w l i n e ; put ( w c z e s n i e j w t a b l i c y Mendelejewa : ) ; i f k2end w04 chemia ; Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Instrukcja wyboru Instrukcja wyboru sÅ‚uży w Adzie do wybrania wykonania jednego z ciÄ…gów instrukcji, przy czym wybór dokonywany jest na podstawie wyrażenia o wartoÅ›ci typu dyskretnego (tzw. selektora) Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Instrukcja wyboru w Adzie case selektor is when lista_możliwoÅ›ci_1 => instrukcje_1 when lista_możliwoÅ›ci_2 => instrukcje_2 ... when lista_możliwoÅ›ci_n => instrukcje_n end case; --------------------------------------- case selektor is when lista_możliwoÅ›ci_1 => instrukcje_1 when lista_możliwoÅ›ci_2 => instrukcje_2 ... when lista_możliwoÅ›ci_n => instrukcje_n when others => instrukcje end case; Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru PrzykÅ‚ad with ada . t e x t i o ; use ada . t e x t i o ; procedure w04 case i s type d n i i s ( pon , wt , s r , czw , pt , so , n i e ) ; package d i o i s new ada . t e x t i o . e n u m e r a t i o n i o ( d n i ) ; use d i o ; d : d n i ; begin put ( p o d a j d z i e n : ) ; g e t ( d ) ; case d i s when pt => put ( za c h w i l e wolne ) ; when so | n i e => put ( weekend ) ; when wt . . czw => put ( s r o d e k t y g o d n i a ) ; when others => n u l l ; end case ; end w04 case ; Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Lista możliwoÅ›ci może mieć postać: pojedynczego elementu (when pon => ...) alternatywy (when pon | wt | ndz => ...) zakresu (when pon..pt => ) kombinacji powyższych (when pon..sr | pt => ...) Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania Kolejne typy predefiniowane Typy wyliczeniowe Atrybuty typów Instrukcja wyboru Lista możliwoÅ›ci może mieć postać: pojedynczego elementu (when pon => ...) alternatywy (when pon | wt | ndz => ...) zakresu (when pon..pt => ) kombinacji powyższych (when pon..sr | pt => ...) Suma list możliwoÅ›ci instrukcjicasemusi pokrywać caÅ‚y zakres wartoÅ›ci jakie może przyjąć selektor. z tego wzglÄ™du czÄ™sto stosowanÄ… konstrukcjÄ… jest when others => null; (we wszystkich przypadkach nie wymienionych wczeÅ›niej nie podejmujemy żadnych dziaÅ‚aÅ„) when othersmusi być ostatnim możliwym wyborem nulljest instrukcjÄ… nie rób nic (może być użyta w dowolnym miejscu programu) Agata Półrola WydziaÅ‚ Matematyki i Informatyki UA WstÄ™p do programowania