Wykład nr 3 19 10 11


Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Wstęp do programowania
wykład 3
Agata Półrola
Wydział Matematyki i Informatyki UA
sem. zimowy 2011/2012
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Typy modularne
Opis typu
Ada pozwala definiować  cykliczne typy całkowite (bez znaku).
Definicja typu:
type nazwatypu is mod N;
gdzie N jest liczbą całkowitą dodatnią.
Przykład
type godzina is mod 24;
Wszystkie operacje arytmetyczne na danym typie są wykonywane
modulo N. Zakres typu obejmuje wartości całkowite od 0 do
N - 1.
Standardowy pakietInterfaceszawiera definicje kilku typów
modularnych (dla N będących potęgami dwójki).
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Operaje wejścia/wyjścia
Operacje wejścia/wyjścia dla typu modularnegoTuzyskujemy
konkretyzując dla niego pakietada.textio.modulario
Przykład
with ada.text_io; use ada.text_io;
procedure w03_mod is
type godzina is mod 24;
package xx is new ada.text_io.modular_io(godzina);
use xx;
begin
....
Do wypisywania liczb służy proceduraput, do ich pobierania
proceduragetz uzyskanego pakietu.
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Przykład (Typy modularne)
wi t h ada . T ext I O ; use ada . T e xt I O ;
p r o c e d u r e w03 mod i s
type g o d z i n a i s mod 2 4 ;
package xx i s new ada . t e x t i o . m o d u l a r i o ( g o d z i n a ) ;
use xx ;
d : g o d z i n a := 1 0 ; d1 : g o d z i n a := 2 3 ; d2 : g o d z i n a ;
b e g i n
p u t l i n e (  o p e r a c j e a r y t m e t y c z n e ( n i e k o n i e c z n i e sensowne ) :  ) ;
put ( d1 ) ; put (  +  ) ; put ( d ) ; put (  = ) ;
d2 := d1+d ; put ( d2 ) ; n e w l i n e ;
put ( d1 ) ; put (  "  ) ; put ( d ) ; put (  = ) ;
d2 := d1"d ; put ( d2 ) ;
s k i p l i n e ;
p u t l i n e (  Odliczamy k o l e j n e g o d z i n y od 1 0 : 0 0 . . . .  ) ;
f o r i i n 1 . . 1 8 l o o p put ( d ) ; d:=d+1; n e w l i n e ; end l o o p ;
end w03 mod ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Konwersja typów
Konwersja z typu całkowitego ze znakiemTcdo typu modularnego
Tmmoże być wykonana:
za pomocą operacjiTm(wartośćtypuTc)- w przypadku
gdy konwertowana wartość będzie poza zakresem typuTm
dostaniemy błąd
za pomocą operacjiTm mod(wartośćtypuTc), która nie
spowoduje błędu przekroczenia zakresu
Przykład
liczba_godzin_od_polnocy: integer := 134;
g: godzina;
...
g := godzina mod(liczba_godzin_od_polnocy);
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Przykład (Typy modularne - cd)
wi t h ada . Text IO , ada . I n t e g e r T e x t I O ;
use ada . Text IO , ada . I n t e g e r T e x t I O ;
p r o c e d u r e w03 mod 2 i s
type g o d z i n a i s mod 2 4 ;
package xx i s new ada . t e x t i o . m o d u l a r i o ( g o d z i n a ) ;
use xx ;
i l e : i n t e g e r ; d : g o d z i n a ;
b e g i n
put (  p o d a j l i c z b e :  ) ; g e t ( i l e ) ;
put (  j e s l i t y l e g o d z i n u p l y n i e od p o l n o c y , b e d z i e g o d z i n a  ) ;
d:= g o d z i n a  mod( i l e ) ; put ( d ) ;
n e w l i n e ( 2 ) ;
put (  p o d a j b i e z a c a g o d z i n e ( p e l n a , w f o r m a c i e GG ) :  ) ; g e t ( d ) ;
put (  za i l e g o d z i n ? . . . p o d a j : za  ) ; g e t ( i l e ) ;
put (  wtedy b e d z i e g o d z i n a  ) ;
d:= d + g o d z i n a  mod( i l e ) ; put ( d ) ;
end w03 mod 2 ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Typy stałoprzecinkowe
W Adzie są dwa rodzaje typów stałoprzecinkowych: typy
stałoprzecinowe zwykłe i typy stałoprzecinkowe dziesiętne.
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Typy stałoprzecinkowe zwykłe
Zwykłe typy stałoprzecinkowe są używane w bardzo szczególnych
przypadkach, np. do obliczeń przybliżonych na maszynach nie
mających możliwości wykonywania obliczeń zmiennoprzecinkowych.
Definicja typu:
type T is delta D range P..K;
gdzieDjest dokładnością, aPiKwyznaczają zakres typu.
Wszystkie trzy wartości muszą być liczbami rzeczywistymi.
Przykład
type T is delta 0.1 range -1.0..1.0;
Implementacja Ady wybieraT smallbędący potęgą dwójki bliską
D; rzeczywisty  krok między wartościami w typie toT small
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Operacje wejścia/wyjścia
Operacje wejścia/wyjścia dla zwykłego typu stałoprzecinkowego
uzyskujemy konkretyzując pakietada.textio.fixedio
Przykład
with ada.txt_io; use ada.text_io;
procedure w03_fixord is
type T is delta 0.3 range 1.0..10.0;
package xyz is new ada.text_io.fixed_io(T);
use xyz;
begin
...
Do wypisywania i pobierania liczb służą odpowiednio proceduryputiget
z otrzymanego pakietu
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Przykład (Typ stałoprzecinkowy zwykły)
wi t h ada . Text IO , ada . f l o a t t e x t i o ;
use ada . t e x t i o , ada . f l o a t t e x t i o ;
p r o c e d u r e w 0 3 f i x o r d i s
type T i s d e l t a 0 . 3 range 1 . 0 . . 4 . 0 ;
package x y z i s new ada . t e x t i o . f i x e d i o (T ) ; use x y z ;
a : T ;
b e g i n
put (  prawdziwy  krok  t o  ) ;
put ( f l o a t (T s m a l l ) , exp=>0, a f t =>10); n e w l i n e ;
put (  p o d a j l i c z b e z p r z e d z i a l u [ 1 , 4 ] >  ) ; g e t ( a ) ;
put (  podana l i c z b a :  ) ; put ( a ) ; n e w l i n e ;
put (  w s z y s t k i e l i c z b y w t y p i e :  ) ; n e w l i n e ;
a:=T f i r s t ;
l o o p
put ( a , a f t =>4); n e w l i n e ;
i f aend l o o p ;
end w 0 3 f i x o r d ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Typy stałoprzecinkowe dziesiętne
Typy stałoprzecinkowe dziesiętne są podobne do zwykłych, ale
delta (D) musi być potęgą 10, dodatkowo określa się liczbę
znaczących cyfr dziesiętnych. (N)
Definicja typu:
type T is delta D digits N;
Przykład
type Money is delta 0.01 digits 14;
Tak zdefiniowany typ pozwala reprezentować wartości do tryliona,
z dokładnością 0.01.
Przyjmując że to waluta - mamy 12 cyfr na złotówki i 2 na grosze
Typy tego rodzaju mogą być używane np. w zastosowaniach z
zakresu księgowości.
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Operacje wejścia/wyjścia
Operacje wejścia/wyjścia dla typu stałoprzecinkowego dziesiętnego
uzyskujemy konkretyzując dla niego pakiet
ada.textio.decimalio
Przykład
with ada.text_io; use ada.text_io;
procedure w03_fixdec is
type M is delta 0.01 digits 10;
package xyz is new ada.text_io.decimal_io(M);
use xyz;
...
begin
...
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Przykład (Typ stałoprzecinkowy dziesiętny)
wi t h ada . T ext I O ; use ada . t e x t i o ;
p r o c e d u r e w 0 3 f i x d e c i s
type M i s d e l t a 0 . 0 1 d i g i t s 1 0 ;
package x y z i s new ada . t e x t i o . d e c i m a l i o (M) ; use x y z ;
a :M;
b e g i n
a:=M f i r s t ;
l o o p
put ( a , a f t =>15); n e w l i n e ;
i f aa :=M s u c c ( a ) ; -- a l t e r n a t y w n i e : a:=a+M s m a l l ;
s k i p l i n e ;
e l s e e x i t ; end i f ;
end l o o p ;
end w 0 3 f i x d e c ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Inne typy liczbowe definiowane przez użytkownika
Jak zdefiniować
Ada pozwala na definiowanie własnych typów liczbowych
 pochodzących od typów zdefiniowanych wcześniej. Nowy typ
zazwyczaj obejmuje pewien podzakres typu bazowego. Definiujemy
go wtedy:
type nazwatypu is new typbazowy range zakres;
Przykłady
type ocena is new integer range 0..6;
type NieujFloat is new float range 0.0..float last;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Konsekwencje
Zdefiniowane w powyższy sposób typy liczbowe są odrębnymi
typami.
nie można łączyć ich w jednym wyrażeniu z wartościami ich
typu  bazowego (np.ocenazinteger)
łączenie jest możliwe dopiero po zastosowaniu konwersji typów
aby uzyskać operacje wejścia/wyjścia dla takiego typu, należy
skonkretyzować dla niego odpowiedni pakiet
(ada.textio.integerioalboada.textio.floatio)
Kiedy stosować?
Stosowanie takich typów ma sens gdy chcemy uniknąć omyłkowego
 mieszania wartości pewnego rodzaju z innymi (czyli gdy
naprawdę chcemy mieć odrębny typ)
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Przykład (Nowe typy)
wi t h ada . t e x t i o , ada . i n t e g e r t e x t i o , ada . F l o a t T e x t I O ;
use ada . t e x t i o , ada . i n t e g e r t e x t i o , ada . F l o a t T e x t I O ;
p r o c e d u r e w03 nowetypy i s
type ocena i s new i n t e g e r range 2 . . 5 ;
package o c e n a i o i s new ada . t e x t i o . i n t e g e r i o ( ocena ) ;
o , o1 , o2 : ocena ; s r e d n i a : f l o a t ; b : i n t e g e r ;
b e g i n
put (  p o d a j dwie oceny (2 -5):  ) ;
o c e n a i o . g e t ( o1 ) ; o c e n a i o . g e t ( o2 ) ;
o :=( o1+o2 ) / 2 ;
put (  s r e d n i a ocena t o :  ) ; o c e n a i o . put ( o ) ; n e w l i n e ;
put (  prawdziwa s r e d n i a ocen t o  ) ; s r e d n i a := f l o a t ( o1+o2 ) / 2 . 0 ;
put ( s r e d n i a , exp =>0); n e w l i n e ;
put (  suma ocen t o  ) ; b:= i n t e g e r ( o1)+ i n t e g e r ( o2 ) ;
put ( b ) ; n e w l i n e ;
put (  ocena bedaca suma t o  ) ; o:= o1+o2 ; o c e n a i o . put ( o ) ;
end w03 nowetypy ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Podtypy
Jak i kiedy definiować
Jeśli nie potrzebujemy odrębnego typu, a jedynie chcemy
ograniczyć zakres możliwych wartości dla pewnych zmiennych,
możemy zdefiniować podtyp.
Przykłady
subtype calkowitedo10 is integer range 0..10;
subtype nieujfloat is float range 0.0..float last;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Konskwencje
Zdefiniowane w ten sposób podtypy nie są odrębnymi typami
można łączyć je w jednym wyrażeniu z wartościami typu
bazowego
operacje wejścia/wyjścia dla podtypu są realizowane przez
odpowiednie procedury dla typu bazowego
ale: jeśli mamy zmienną danego podtypu, to nie może ona
przyjąc wartości przekraczającej zakres tego podtypu (błąd
przekroczenia zakresu -constrainterror)
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Przykład (Podtypy)
wi t h ada . t e x t i o , ada . i n t e g e r t e x t i o , ada . F l o a t T e x t I O ;
use ada . t e x t i o , ada . i n t e g e r t e x t i o , ada . F l o a t T e x t I O ;
p r o c e d u r e w03 podtypy1 i s
s ubt y pe ocena i s i n t e g e r range 2 . . 5 ;
o , o1 , o2 : ocena ; s r e d n i a : f l o a t ; b : i n t e g e r ;
b e g i n
put (  p o d a j dwie oceny (2 -5):  ) ;
ada . i n t e g e r t e x t i o . g e t ( o1 ) ; g e t ( o2 ) ;
o :=( o1+o2 ) / 2 ;
put (  s r e d n i a ocena t o :  ) ; put ( o ) ; n e w l i n e ;
put (  prawdziwa s r e d n i a ocen t o  ) ; s r e d n i a := f l o a t ( o1+o2 ) / 2 . 0 ;
put ( s r e d n i a , exp =>0); n e w l i n e ;
put (  suma ocen t o  ) ; b:= o1+o2 ;
put ( b ) ; n e w l i n e ;
put (  ocena bedaca suma t o  ) ; o:= o1+o2 ; put ( o ) ;
end w03 podtypy1 ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Predfiniowane podtypy całkowite
Podtypów obejmujących pewne często używane zakresy możemy
nie definiować - są dostępne w języku (predefiniowane):
podtyppositive- liczby całkowite dodatnie (integer
range 1..integer last)
podtypnatural- liczby całkowite nieujemne (integer
range 0..integer last)
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Trochę matematyki
Stałe matematyczne
Ada zawiera pakietada.numerics, w którym zdefiniowane są
wartości stałych e i Ą
stała e toada.numerics.e
stała pi toada.numerics.pi
Obie wartości są typuuniversalreal.
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Przykład (Jak uzyskać Ą i e)
wi t h ada . t e x t i o , ada . f l o a t t e x t i o , ada . n u m e r i c s ;
use ada . t e x t i o , ada . f l o a t t e x t i o ;
p r o c e d u r e w 0 3 s t a l e m a t i s
b e g i n
put (  s t a l a p i w y n o s i  ) ;
put ( ada . n u m e r i c s . p i , exp=>0, a f t =>20);
n e w l i n e ;
put (  s t a l a e w y n o s i  ) ;
put ( ada . n u m e r i c s . e , exp=>0, a f t =>20);
end w 0 3 s t a l e m a t ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Funkcje matematyczne
Czasami w programie potrzebujemy bardziej zaawansowanych
funkcji matematycznych. Funkcje dla typufloatsą udostępniane
przez pakietada.numerics.elementaryfunctions.
Dostępne funkcje:
"
sqrt(sqrt(x)- x,xtypufloat)
log(log(x)to ln(x),log(x,a)to loga(x))
exp(exp(x)to ex)
**- potęgowanie o wykładniku rzeczywistym
sin, cos, tan, cot, arcsin, arccos, arctan,
arccot, sinh, cosh, tanh, coth, arcsinh, arccosh,
arctanh, arccoth
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Przykład (Funkcje matematyczne)
wi t h ada . t e x t i o , ada . f l o a t t e x t i o ,
ada . n u m e r i c s . e l e m e n t a r y f u n c t i o n s ;
use ada . t e x t i o , ada . f l o a t t e x t i o ,
ada . n u m e r i c s . e l e m e n t a r y f u n c t i o n s ;
p r o c e d u r e w03 mat i s
b e g i n
put (  put 2Ć{1/2} t o  ) ; s e t c o l ( 2 0 ) ;
put ( 2 . 0 " " 0 . 5 , exp=>0, a f t =>10); n e w l i n e ;
put (  p i e r w i a s t e k z 2 t o  ) ; s e t c o l ( 2 0 ) ;
put ( s q r t ( 2 . 0 ) , exp=>0, a f t =>10);
end w03 mat ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Pakietada.numerics.elementaryfunctionsjest konkretyzacją
pakietu rodzajowego
ada.numerics.genericelementaryfunctionsdla typu
float. Jeśli potrzebujemy funkcji matematycznych dla innego
typu rzeczywistego, musimy sami dokonać odpowiedniej
konkretyzacji tego pakietu
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Przykład (Funkcje matematyczne, typlongfloat)
wi t h ada . t e x t i o , ada . l o n g f l o a t t e x t i o ,
ada . n u m e r i c s . g e n e r i c e l e m e n t a r y f u n c t i o n s ;
use ada . t e x t i o , ada . l o n g f l o a t t e x t i o ;
p r o c e d u r e w 0 3 m a t l f i s
package f 1 i s new
ada . Numerics . g e n e r i c e l e m e n t a r y f u n c t i o n s ( l o n g f l o a t ) ;
use f 1 ;
b e g i n
put (  put 22222222222222Ć{1/2} t o  ) ; s e t c o l ( 4 0 ) ;
put ( 2 2 2 2 2 2 2 2 2 2 2 2 2 2 . 0 " " 0 . 5 , exp=>0, a f t =>10); n e w l i n e ;
put (  p i e r w i a s t e k z 22222222222222 t o  ) ; s e t c o l ( 4 0 ) ;
put ( s q r t ( 2 2 2 2 2 2 2 2 2 2 2 2 2 2 . 0 ) , exp=>0, a f t =>10);
end w 0 3 m a t l f ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Instrukcja warunkowa
W programie używamy instrukcji sterujących, umożliwiających
warunkowe lub iteracyjne wykonanie pewnych fragmentów kodu
Jedną z instrukcji sterujących jest instrukcja warunkowa
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Instrukcja warunkowa
Instrukcja warunkowa występuje zazwyczaj w trzech wersjach:
jeżeli warunek to instrukcje_do_wykonania
jeżeli warunek to
instrukcje_do_wykonania_1
w_przeciwnym_razie
instrukcje_do_wykonania_2
jeżeli warunek1 to
instrukcje_do_wykonania1
jeżeli warunek2 to
instrukcje_do_wykonania_2
...
w_pozostałych_przypadkach
instrukcje_do_wykonania_n
Instrukcja daje możliwość wyboru jednego z dostępnych wariantów,
zależnie od wartości logicznej warunku
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Instrukcja warunkowa w Adzie
if warunek then
instrukcje_do_wykonania
end if;
---------------------------------------
if warunek then
instrukcje_do_wykonania_1
else
instrukcje_do_wykonania_2
end if;
-------------------------------------
if warunek1 then
instrukcje_do_wykonania1
elsif warunek2 then
instrukcje_do_wykonania_2
...
else
instrukcje_do_wykonania_n
end if;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Jak skonstruować warunek
Porównywanie liczb
Liczby możemy ze sobą porównywać. Operatory porównywania to
< > <= >= = /=
Wyrażenie zawierające operator porównywania jest
wyrażeniem logicznym - ma wartość prawdy lub fałszu (true
lubfalse)
Przy porównywaniu nie wolno mieszać typów liczbowych (tak
jak w wyrażeniach arytmetycznych)
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Przykład (Instukcja warunkowa - wersja 1)
wi t h ada . i n t e g e r t e x t i o , ada . t e x t i o ,
ada . f l o a t t e x t i o , ada . n u m e r i c s ;
use ada . i n t e g e r t e x t i o , ada . t e x t i o ,
ada . f l o a t t e x t i o , ada . n u m e r i c s ;
p r o c e d u r e w 0 3 i f 1 i s
r : i n t e g e r ;
b e g i n
put (  p o d a j promien k o l a :  ) ; g e t ( r ) ;
i f r >0 then
put (  p o l e k o l a o tym p r o m i e n i u w y n o s i  ) ;
put ( ada . n u m e r i c s . p i " f l o a t ( r " " 2 ) , exp =>0);
end i f ;
end w 0 3 i f 1 ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Przykład (Instrukcja warunkowa - wersja 2)
wi t h ada . t e x t i o ,
ada . f l o a t t e x t i o , ada . n u m e r i c s ;
use ada . t e x t i o ,
ada . f l o a t t e x t i o , ada . n u m e r i c s ;
p r o c e d u r e w 0 3 i f 2 i s
r : f l o a t ;
b e g i n
put (  p o d a j promien k o l a :  ) ; g e t ( r ) ;
i f r >0.0 then -- warunek bez  m i e s z a n i a  typow !
put (  p o l e k o l a o tym p r o m i e n i u w y n o s i  ) ;
put ( ada . n u m e r i c s . p i " f l o a t ( r " " 2 ) , exp =>0);
e l s e
put (  n i e p o p r a w n a w a r t o s c !  ) ;
end i f ;
end w 0 3 i f 2 ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Przykład (Instrukcja warunkowa - wersja 3)
wi t h ada . t e x t i o , ada . f l o a t t e x t i o ;
use ada . t e x t i o , ada . f l o a t t e x t i o ;
p r o c e d u r e w 0 3 i f 3 i s
a : f l o a t ;
b e g i n
put (  p o d a j l i c z b e :  ) ; g e t ( a ) ;
i f a >0.0 then
put (  l i c z b a b y l a d o d a t n i a  ) ;
e l s i f a =0.0 then
put (  l i c z b a b y l a zerem  ) ;
e l s e
put (  l i c z b a b y l a ujemna  ) ;
end i f ;
end w 0 3 i f 3 ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Spójniki logiczne
Dostępne operatory logiczne toand,or,not,xor,and thenior
else,
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Spójniki logiczne
Dostępne operatory logiczne toand,or,not,xor,and thenior
else,
W1 and W2,W1 or W2- zawsze oblicza się wartość logiczną
obu warunków (W1iW2)
W1 and then W2,W1 or else W2- wartość logicznąW2
oblicza się tylko gdy potrzeba (tj. gdy obliczenieW1nie mówi
nic o ostatecznym wyniku), czyli
w przypadkuand then- gdyW1jest prawdziwy
w przypadkuor else- gdyW1jest fałszywy
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Typy modularne Typy stałoprzecinkowe Własne typy liczbowe Podtypy Funkcje i stałe matematyczne Instrukcja warunkowa
Przykład (Spójnikand then)
wi t h ada . t e x t i o , ada . i n t e g e r t e x t i o ;
use ada . t e x t i o , ada . i n t e g e r t e x t i o ;
p r o c e d u r e w 0 3 i f 4 i s
a , b : i n t e g e r ;
b e g i n
put (  p o d a j dwie l i c z b y :  ) ; g e t ( a ) ; g e t ( b ) ;
i f b/=0 and then a /b>1 then
put (  i l o r a z t y c h l i c z b j e s t w i e k s z y od 1  ) ;
end i f ;
end w 0 3 i f 4 ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania


Wyszukiwarka

Podobne podstrony:
Wykład 7 przestępca charakterystyka [10 11]
wyklad 02 03 10 11 fizyka
Wykład nr 4 26 10 2011
Wykład 9 przestępczość przestępczość ujawniona [10 11]
ET DI2 ObwodySygnaly2 wyklad nr 9 10 czworniki aktywne
Wykład nr 10 Rektyfikacja
BO II stacjonarne wykład nr 10
Wykład 6 przestępca koncepcje socjologiczne 2 [10 11]
9,10,11 Wytyczne wykonania projektu nr 3
BO II stacjonarne wykład nr 11
Wyklad nr 11
F II wyklad 10 11
koncepcje zarządzania, wykład 9, 10, 11
0214 13 10 2009, wykład nr 14 , Układ pokarmowy, cześć II Paul Esz
Wykład nr 6 9 11 11
Algebra 10 10 11 Wyklad
0203 11 03 2009, wykład nr 3 , Białka powierzchni komórkowej Cząsteczki adhezyjne

więcej podobnych podstron