ADA 95 – del6 Foreleser: Olaf Hallan Graven Bok: Programming in ADA95 (2nd) John Barnes.

Slides:



Advertisements
Liknende presentasjoner
Tabeller – Arrays Lage frekvenstabell Norske Bokstaver
Advertisements

Mer sortering Mer Debugging Introduksjon til strukturer.
Eksempel: Administrasjon av biler. Eksempel •Program for å administrere informasjon om biler •Vi ser på tre deler: –Registrere biler: legge inn i tabell.
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
C# for javaprogrammerere
En gang til!? .
Filer Finne minste Finne Største Beregne gjennomsnitt Variabler Tabeller – Arrays Lage frekvenstabell.
Feilhåndtering. Feil er uunngåelige! Erfaring viser at feil i dataprogrammer som består av mer enn noen få linjer ikke er til å unngå. For å få et godt.
Utvider eksemplet om biler fra forrige gang med mer feilsjekk Tid og Dato.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
1 Kap 08 Kø. 2 Kø - Definisjon En kø (eng queue) er en lineær struktur hvor elementer kan innsetttes kun i den ene enden av listen, kalt bak, og fjernes.
ADA 95 – del3 Foreleser: Olaf Hallan Graven Bok: Programming in ADA95 (2nd) John Barnes.
Triggere Mutasjoner i basen. Triggers Triggers are stored procedures that execute automatically when something (event) happens in the database: : data.
Instead-of-trigger Faglig forum. Instead-of-trigger Problem: En har et VIEW som består av mange JOINs. Komplekst å oppdatere alle tabellene som inngår.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 25.9 MER OM: Sub-prosedyrer og sub-funksjoner Kap 4.
Oversikt Access Hva en bør beherske så langt. Tabeller Felt Typer (heltall, desimaltall, tekst, Boolean) Primary Key.
DILEMMA, DRIVKREFTER OG BARRIERER
Geometri 1.
Are Raklev Teoretisk fysikk, rom FØ456,
Forelesning 9 Are Raklev.
Are Raklev Teoretisk fysikk, rom FØ456,
Are Raklev Teoretisk fysikk, rom FØ456,
Måling.
Arbeidsgiver skal utføre risikovurdering.
Måling.
Nye Bildrivstoff Rotary Skien Nye Bildrivstoff Rotary Skien
Are Raklev Teoretisk fysikk, rom FØ456,
Hvilke spørsmål har dere etter å sett denne rullen?
Informasjonsmøte
- Ladningenes rundreise
Brevet til menigheten i Smyrna, Åp 2:8-11
Introduksjon til Partikkelfysikk
Bolk 4 – Binære utfallsvariable, forskjell i andeler mellom grupper
Midlertidig ansettelse i Norge og Sverige: Springbrett eller sidespor?
Sitat fra Sorgenfri av Jo Nesbø
MAT0100V Sannsynlighetsregning og kombinatorikk
Repetisjon om funksjoner
د. عائض بن عبدالله القرني
دورة شرعية في أصول الفقه
Eric Jul PSE Inst. for informatikk
Магістранткі кафедры гісторыі беларускай мовы Лемяшэўскай В. У.
CMPE 152: Compiler Design April 23 Class Meeting
Ujeeddada waxbariddu waa in la bixiyo warbixin ku saabsan caafimmadka galmada waxa uu ka hadlayo. Dhawrista caafimaad ayaa xoogga la saari doonaa. Waxa.
Arbeidsmedisinens plass i Europa
MIN IDRETT.
Oppgaver til diskusjon AP109 Lover og regler i selvvalget
Velkomen til Møteplassen 2017.
Les- skriv 2.
HVORDAN BØR VI FOREBYGGE OG KURERE SOSIALE, PSYKISKE OG PERSONLIGE Problemer? Bildet illustrerer:  ·        bredden  i SINTEFs ekspertise, fra havrom til.
Halvdagsseminar for administrative studieledere 15.februar 2019
Et liv som minoritetsrådgiver
Arbeid, energi og effekt
ER SINE BARNS FØRSTE OG VIKTIGSTE LÆRERE
Trener 1 Alpint Barmarkstrening barn
Kapasitetsbygging i team og organisasjon
Sarcopeni -en tilnærming til klinisk diagnostisk
Foreldremøte Alpingruppa
Ekteskapet, barnet og Bibelen i en kjønnsnøytral tid
Fjerne tidstyver Lean i barnevern Svein Taknæs, rådgiver IKT ORKidé.
Drukningsstatistikk Redningsselskapet
Utforming av prosjekt og søknad
Ny multifunksjonshall på Marienlyst
Eric Jul PSE Inst. for informatikk
Skolehelsetjenesten ved barneskole
Eric Jul PSE-gruppa Ifi, UiO
UngPro Kirkens Bymisjon i Trondheim
Anvendt fluidmekanikk
Utskrift av presentasjonen:

ADA 95 – del6 Foreleser: Olaf Hallan Graven Bok: Programming in ADA95 (2nd) John Barnes

ADA95 for KDA Avanserte typer  Mere om strukturer  Varierende strukturer (Variant part)  Generisk rpogrammering

ADA95 for KDA Mere om strukturer type Matrix is array (integer range <>,integer range <>) of integer; type Square (order: integer) is record Mat:Matrix(1..order,1..order); end record; Var1 : Square(3); Var2 : Square := (3,(1..3 => (1..3 => 0))); begin Var1.order := 10; Var1.Mat(1,1) := 10;

ADA95 for KDA type Matrix is array (integer range <>,integer range <>) of integer; subtype index is integer range 1..10; type Square (order: index ) is record Mat:Matrix(1..order,1..order); end record; Var1 : Square(3); Var2 : Square := (3,(1..3 => (1..3 => 0))); Var3 : Square; begin Var1 := (4,(1..4 => (1..4 => 0))); Var2 := (4,(1..4 => (1..4 => 0))); Var3 := (4,(1..4 => (1..4 => 0))); :=1

ADA95 for KDA Varierende strukturer (Variant part)  Vi kan i ada lage strukturer som varierer i innhold.  Dette gjøres ved å putte en case setning inne i type deklarasjonen.

ADA95 for KDA Varierende strukturer type X is record Y:Valgtype; case Y is when Valg1=> i : integer; when Valg2 => f : float; end case; end record;

ADA95 for KDA Varierende strukturer eksempel type BilType is (Sportsbil,Lastebil,Personbil,Buss); type BilInfo(Bil : BilType) is record RegNr : String(1..7); case Bil is when Sportsbil => MotorHK : integer; when Lastebil => Nyttelast : float; Henger : boolean; when Buss => AntallPas : integer; when Personbil => null; end case; end record;

ADA95 for KDA procedure main is type BilType is (Sportsbil,Lastebil,Personbil,Buss); type BilInfo(Bil : BilType) is ::::::::::::: end record; MinBil : BilInfo(Lastebil); MinBil2 : BilInfo(Sportsbil); begin MinBil.RegNr := "KT00000"; MinBil.Nyttelast := 10.5; MinBil.Henger := false; MinBil2.RegNr := "KT00001"; MinBil2.MotorHK := 564; end prog2;

ADA95 for KDA Generiske enheter  Deklarasjoner og bruk  Typer som parametere  Underprogrammer som parametere  Matte biblioteket

ADA95 for KDA Deklarasjoner og bruk  Til dere som kan templates i C++, det er forskjeller å legge merke til.  Vi tar først det klassiske eksemplet SWAP. procedure Swap(A,B:in out MyType) is T : MyType; begin T := A; A := B; B:= T; end Swap;

ADA95 for KDA Swap Spek: generic type ITEM is private; procedure Exchange(A,B : in out ITEM); Body: procedure Exchange(A,B:in put ITEM) is T:ITEM; begin T := A; A := B; B:= T; end Exchange; Før bruk: Procedure Swap is new Exchange(Integer);

ADA95 for KDA Generiske pakker generic MAX: Positive; type ITEM is Private; package Stack is procedure Push(X:ITEM); function Pop return ITEM; end Stack; width Stack; package IntStack is Stack(100,Integer); begin

ADA95 for KDA Typer som parametere  Type T is private;  Type T is limited private;  Type T is (<>);  Type T is range <>;  Type T is digits <>;  Type T is delta <>;

ADA95 for KDA Tabelltyper Generic type Index is (<>); type Floating is digits <>; type Vector is array (Index range <>) of Floating; function Sum(A:Vector) return Floating; function Sum(A:Vector) return Floating is Result : Floating := 0.0; begin for I in A’Range loop Result := Result + A(I); end loop; return Result; end Sum;

ADA95 for KDA type VectorType is array (Integer range <>) of Float; function Sum_Vector is new Sum(Integer,Float, VectorType); MyVector: VectorType(1..5); VectorSum: Float := 0.0; begin MyVector(1) := 1.1; MyVector(2) := 2.2; MyVector(3) := 3.3; MyVector(4) := 4.4; MyVector(5) := 5.5; VectorSum := Sum_Vector(MyVector); Float_io.put(VectorSum); -- og ut kommer 16.5 end;

ADA95 for KDA Underprogrammer som parametere  En genrisk parameter kan også være et underprogram.  Tenk f.eks på en funksjon som skal sortere en tabell.  Definisjonen ligner på sum eksemplet, men vi har i i tillegg brukt for operatoren ”>”

ADA95 for KDA Generic type Index is (<>); type Item is (<>); type Vector is array (Index range <>) of Item; procedure Sort(C:in out Vector); procedure Sort(C:in out Vector) is Min : Index; Tmp : Item; begin for I in C’First.. Index’Pred(C’Last) loop -- C’Last-1 Min := I; for J in Index’Succ(I)..C’Last loop if C(j) < C(Min) then Min := J; end if; end loop; Tmp := C(I); C(I) := C(Min); C(Min) := Tmp; end loop; end Sort; with function”<”(X,Y:Item) return Boolean;

ADA95 for KDA Bruk av Sort type VectorType is array (Integer range <>) of Integer; procedure SortVector is new Sort(Integer, Integer, VectorType, ”<”); procedure RevSortVector is new Sort(Integer, Integer, VectorType, ”>”); MyVector: VectorType(1..5);

ADA95 for KDA Numeriske typer  Heltallstyper  Kommatallstyper –Flytende komma –Fast komma

ADA95 for KDA Heltallstyper  Vi har samme problemet i ada som i mange andre språk, at størrelsen på en ferdig definert type ikke er fast. (Den er kompilator avhengig)  Dette gjør at man er oppfordret til slike ting: type MyInteger is range ;

ADA95 for KDA Flytende komma  Floatingpoint typer lages ved: type Real is digits 10; Hvordan dette gjøres er kompilator avhengig. type MyFloat is digit 1; MyFloat’Digit -- Skriver ut antall digits MyFloat’Epislon -- Skriver ut avstangen ifra 1.0 til neste verdi Gnat: E-07 Vantage: E-02

ADA95 for KDA Fast komma  Benyttes der vi ikke har eller ikke ønsker å benytte flytende komma. type MyFixed is delta 0.1 range ;  Vi kan også tvinge typer til å benytte et spesifisert antall bit. type MyFixed is delta 0.1 range ; for MyFuixed’size use 8; -- bruker minimum 8 bit

ADA95 for KDA Triks med strenger  Vi må alltid sette lengden på strenger.  Men vi kan nå utnytte det vi har gjennomgått til å lage noe ala: type V_STRING(N:Positive := 1) record s : String(1..N); end record;

ADA95 for KDA Triks med strenger Vi kan da lage strenger slik: declare Text : V_String; begin V_String := (5,”Hallo”); end;

ADA95 for KDA Hvordan unngå å spesifisere lengden på en streng function ”+”(S:String) return V_String begin return (S’length,S); end ”+”; declare Text : V_String; begin Text := +”Dette er en tekst”; end;

ADA95 for KDA with text_io; procedure prog1 is type V_STRING(N:Natural := 1) is record s : String(1..N); end record; Text : V_String; function "+"(S:String) return V_String is begin return (S'length,S); end "+"; begin Text := +"Dette er en tekst"; text_io.put_line(Text.s); end prog1;