Wykład nr 4 26 10 2011


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


Wyszukiwarka