1213z wdprog ww04

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

Typy wyliczeniowe

Atrybuty typów

Instrukcja wyboru

Wstęp do programowania

wykład 4

Agata Półrola

Wydział Matematyki i Informatyki UŁ

sem. zimowy 2012/2013

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

Typy wyliczeniowe

Atrybuty typów

Instrukcja wyboru

Jak skonstruować warunek - cd

Test przynależności

Słowo kluczowe

in

pozwala 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ć jako

if liczba in 2..8 then ...

if liczba<2 or liczba>8 then ...
można zapisać jako

if liczba not in 2..8 then ...

przykład z użyciem podtypu:

if liczba in positive then ...

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

Typy wyliczeniowe

Atrybuty typów

Instrukcja wyboru

Priorytet operatorów logicznych

operatory and, or i xor mają 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 postaci a<2 and b>3 nie musimy używać nawiasów

mimo jednakowego priorytetu and, or i xor różne operatory
nie mogą być łączone w wyrażeniu bez użycia nawiasów

A or B and C jest niepoprawne, powinno mieć postać A or (B and C).

Wyrażenie A and B and C jest poprawne.

priorytet operatora not jest wyższy niż w/w pozostałych
operatorów logicznych

not A or B oznacza (not A) or B a nie not (A or B)

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

Typy wyliczeniowe

Atrybuty typów

Instrukcja wyboru

Typ logiczny

Jednym z predefiniowanych typów jest

typ logiczny

, czyli

boolean

,

obejmujący dwie wartości:

false

i

true

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 to

and

,

or

,

xor

,

not

oraz

and then

i

or

else

.

Operacje wejścia/wyjścia dla typu logicznego uzyskujemy poprzez
konkretyzację pakietu

ada.text io.enumeration io

.

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 ;

p r o c e d u r e 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 ;

b e g i n

p := t r u e ;

p u t ( ” 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 . p u t ( q and p ) ;

end w 0 4 l o g i k a ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

Typy wyliczeniowe

Atrybuty typów

Instrukcja wyboru

Typy znakowe

Typy znakowe to:

typ

character

zawierający znaki ze zbioru znaków ISO

8859-1, czyli latin1

256 znaków (drukowalnych i niedrukowalnych)

typ

wide character

(16-bitowy) zawierający znaki ze zbioru

BMP (Basic MultiLingual Plane)

256 początkowych znaków jest takie samo jak w typie character

typ

wide wide character

(32-bitowy) zawierający znaki ze

zbioru ISO 10646

65526 początkowych znaków jest takie samo jak w typie wide character

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

Typy wyliczeniowe

Atrybuty typów

Instrukcja wyboru

Znaki drukowalne ujmujemy w apostrofy (’a’, ’2’, ’ ’)
Łatwy dostęp do znaków z typu character umożliwia pakiet
ada.characters.latin 1

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 typu character,
wide character i wide wide character zapewniają pakiety

ada.text io

,

ada.wide text io

i

ada.wide wide text io

. Do

wprowadzania i wypisywania znaków służą procedury get i put.

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

Typy wyliczeniowe

Atrybuty typów

Instrukcja wyboru

Przykład

with ada . t e x t i o , ada . W i d e T e x t I O ,

ada . w i d e w i d e t e x t i o ;

use ada . t e x t i o ;

p r o c e d u r e w 0 4 z n a k 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 ;

b e g i n

zn := ’ a ’ ; wzn := ’ a ’ ; wwzn:= ’ a ’ ;
p u t ( zn ) ;
ada . W i d e T e x t I O . p u t ( wzn ) ;
ada . w i d e w i d e t e x t i o . p u t ( wwzn ) ;

end w 0 4 z n a k i ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 ;

p r o c e d u r e w 0 4 z n a k i 2

i s

b e g i n

p u t ( 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 z n a k i 2 ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 ;

p r o c e d u r e w 0 4 p o l a i s

odp :

c h a r a c t e r ;

b e g i n

p u t ( ”P−p o l e , o−o b j e t o s c ” ) ;

g e t ( odp ) ;

i f odp= ’ p ’ o r odp= ’P ’ then

p u t ( ” l i c z y m y p o l e ” ) ;

e l s i f odp= ’ o ’ o r odp= ’O ’ then

p u t ( ” l i c z y m y

o b j e t o s c ” ) ;

e l s e

p u t ( ” z l y

k l a w i s z ” ) ;

end i f ;

end w 0 4 p o l a ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 znaleźć 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 UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

Typy wyliczeniowe

Atrybuty typów

Instrukcja wyboru

Przykłady typów wyliczeniowych:

typ boolean

typy znakowe

można również definiować własne typy

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 cyfry rzymskie is (’I’, ’V’, ’X’, ’L’, ’C’,
’D’, ’M’);

type xxx is (r2, ’a’, cc12);

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 pakiet

ada.text io.enumeration io

Procedura put dla typu wyliczeniowego ma parametr Set mogący
przyjmować wartość Upper Case lub Lower Case, co skutkuje
wypisywaniem wartości odpowiednio wielkimi lub małymi literami

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 ;

p r o c e d u r e w 0 4 r z y m s k i e

i s

type CRZ i s ( ’ I ’ ,

’V ’ ,

’X ’ ) ;

package R z 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 (CRZ ) ;

use R z i o ;
c : CRZ ;

b e g i n

p u t ( ” P o d a j c y f r e r z y m s k a (w a p o s t r o f a c h ) : ” ) ;
g e t ( c ) ;
p u t ( c ) ;

end w 0 4 r z y m s k i e ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 ;

p r o c e d u r e w 0 4 k o l o r y

i s

type k o l o r y

i s ( r e d , g r e e n ,

b l u e ) ;

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 ( k o l o r y ) ;

use k i o ;
k :

k o l o r y ;

b e g i n

p u t ( ” P o d a j k o l o r : ” ) ; g e t ( k ) ;
p u t ( 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 UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

Typy wyliczeniowe

Atrybuty typów

Instrukcja wyboru

Atrybuty typów

Atrybuty określone dla typów rzeczywistych i dyskretnych

T - typ

T’first

i

T’last

atrybuty podające najmniejszą i największą wartość w typie T

przykłady: integer’first, natural’last, float’first, kolory’last

T’pred(·)

i

T’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 UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

Typy wyliczeniowe

Atrybuty typów

Instrukcja wyboru

Atrybuty określone dla typów rzeczywistych i dyskretnych - cd

T - typ

T’image(·)

i

T’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(·, ·)

i

T’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 UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

Typy wyliczeniowe

Atrybuty typów

Instrukcja wyboru

Atrybuty określone tylko dla typów dyskretnych

T - typ dyskretny

T’pos(·)

i

T’val(·)

zwracają odpowiednio: pozycję na której stoi w typie T
element będący argumentem (wartość typu
universal integer), oraz wartość stojącą w typie T na
pozycji podanej jako argument

przykłady: integer’pos(12), kolory’val(1), kolory’pos(red)

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

Typy wyliczeniowe

Atrybuty typów

Instrukcja wyboru

Przykład

w i t h ada . t e x t i o ;

u s e ada . t e x t i o ;

p r o c e d u r e w 0 4 c h e m i a

i s

t y p e

p i e r w

i s

(O, S , Ag ) ;

t y p e nazwy

i s

( t l e n ,

s i a r k a ,

s r e b r o ) ;

p a c k a g e 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 ) ;

u s e

k i o ;

p a c k a g e 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 ) ;

u s e k i o 1 ;

k , k2 :

p i e r w ;

b e g i n

p u t ( ” P o d a j

p i e r w i a s t e k : ” ) ; g e t ( k ) ;

p u t ( nazwy ’ v a l ( p i e r w ’ p o s ( k ) ) ,

s e t=>l o w e r c a s e ) ;

n e w l i n e ;

p u t ( ” P o d a j

d r u g i

p i e r w i a s t e k : ” ) ; g e t ( k2 ) ;

p u t ( nazwy ’ v a l ( p i e r w ’ p o s ( k2 ) ) ,

s e t=>l o w e r c a s e ) ;

n e w l i n e ;

p u t ( ” w c z e s n i e j w t a b l i c y

M e n d e l e j e w a : ” ) ;

i f

k2<k t h e n p u t ( k2 ) ;

e l s e

p u t ( k ) ;

end

i f ;

end w 0 4 c h e m i a ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 ;

p r o c e d u r e w 0 4 c a s e 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 ;

b e g i n

p u t ( ” p o d a j d z i e n : ” ) ;

g e t ( d ) ;

c a s e d i s

when p t => p u t ( ” z a c h w i l e w o l n e ” ) ;
when s o |

n i e => p u t ( ” weekend ” ) ;

when wt . . czw => p u t ( ” s r o d e k t y g o d n i a ” ) ;
when o t h e r s => n u l l ;

end c a s e ;

end w 0 4 c a s e ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 instrukcji case musi 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 others musi być ostatnim możliwym “wyborem”

null jest instrukcją “nie rób nic” (może być użyta w dowolnym miejscu

programu)

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Warunki logiczne (cd)

Typ logiczny

Typy znakowe

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 instrukcji case musi 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 others musi być ostatnim możliwym “wyborem”

null jest instrukcją “nie rób nic” (może być użyta w dowolnym miejscu

programu)

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania


Document Outline


Wyszukiwarka

Podobne podstrony:
1213z wdprog ww02
1213z wdprog ww07
1213z wdprog ww11
1213z wdprog ww09
1213z wdprog ww08
1213z wdprog ww12
1213z wdprog ww10
1213z wdprog ww13
1213z wdprog ww06
1213z wdprog ww14
1011z wdprog ww04
1213z wdprog ww05
1213z wdprog ww03
1213z wdprog ww01
1213z wdprog ww02

więcej podobnych podstron