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

Slides:



Advertisements
Liknende presentasjoner
Tabeller av objekter Klassen ArrayList
Advertisements

14 okt. 2003, Arne Maus Inst. for informatikk, UiO
C++ for Java-programmerere
SingleGUIThread OpptaksThreads klientServerThread Monitor/BrowseklientMonitor/Browseklient klientServerThread Thread Modell SNC-VL10 SNT-V304 Nettverks.
TIF seminar -Visual Basic (VBA) og RExcel Elisabeth Orskaug Norsk Regnesentral Oslo, 8. november 2011.
NUUG.topic = Ruby.new Johannes Brodwall Takk til Dave Thomas for bruk av enkelte slides.
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java 12 Mer filbehandling - skrive til fil HashMap Et større eksempel Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
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.
ADA 95 – del6 Foreleser: Olaf Hallan Graven Bok: Programming in ADA95 (2nd) John Barnes.
Objektorientert programmering Objektorientert systemutvikling
Objektorientert programmering i PHP del 2
Java 14 Et eksempel fra bioinformatikk: analyse av biologiske sekvenser Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
IS-102 Klassedefinisjoner
#include Ligner litt på import i java. Setter inn hele fila stdio.h i programteksten. Definerer en del io funksjoner slik at signaturen er kjent. I dette.
C# for javaprogrammerere
En gang til!? .
Om Øvelse 7 Stoff relatert til øvelse 7 Generering av tilfeldige tall Bruk ting vi har lært før.
Filer Finne minste Finne Største Beregne gjennomsnitt Variabler Tabeller – Arrays Lage frekvenstabell.
Global oppvarming Mål: Vi skal lage en enkel database med temperaturdata fra 1770 til i dag. Deretter tilby et brukergrensesnitt mot databasen.
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.
Gjennomgang av prøven Tidsangivelse. Prøven deles ut Vi fyller ut øvelsen sammen.
Sortering og søk. Sortering av data som ligger på en fil Prisipielt to hovedmåter gjøre dette på: 1.Arbeide mot filen 1.Lese en linje, og lese de resterende.
INF150 Programmering mandag 11.9
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
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.
Kap 05 Abstrakte datastrukturer. Arv - Implementering Interface / Abstrakte klasser / Konkrete klasser Concrete classAbstract class Interface extends.
Kap 10 Graf.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
std::basic_string En oversikt over C++ Standard bibliotekets streng-klasse.
Oversikt Den delen av Standard C++ Library som tidligere var STL Konsepter i STL: –Iteratorer –Samlinger (containers) –Algoritmer –Funksjonsobjekter.
Persistenslag i Fakir Teori og praksis. Bruk av persistenslag 4 Felles interface for alle record brokere: interface IDbRecordBroker : IDispatch { HRESULT.
INF 295 Algoritmer og datastrukturer Forelesning 7 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
Høgskolen i Oslo Webprogrammering Java-scripting 2 Klientvalidering.
Triggere Mutasjoner i basen. Triggers Triggers are stored procedures that execute automatically when something (event) happens in the database: : data.
  Den perfekte julegaven til Javakoden din Johannes Brodwall Steria.
Dynamiske nettsider PHP Del 1 – variable. PHP  PHP (Personal Home Page)  Fritt tilgjengelig programmeringsspråk  åpen kildekode  Plattformuavhengig.
Normal text - click to edit Rakett-teknikk. Normal text - click to edit 100 år f.kr. Heros kule Dampdrevet kule av Hero fra Alexandria.
Java 11 Programmering med og uten objekter: hva er forskjellen?
OOT Seminar H-97 CORBA Praktisk del. Valg av ORB implementasjon n Har valgt å bruke Visigenic sin ORB implementsjon n ORB’en er 100% Java kodet n Bygger.
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Løsningsforslag til MOFScript oppgave. Metamodellen.
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 18.9 Lesing av data fra fil og skriving av data til fil. Side 411 – 4.. Kap 4.
02 - Java datatyper Grundlæggende om datatyper og variable.
1 Pointere, referencer, struct’s mv.. 2 Erklæringer Eksempel på erklæringer int i, *ip, f ( ), *fip( ), (*pfi) ( ); Erklærer en integer, en pointer til.
Linq – The Basics Arve Bjørnerud 20. November 2009.
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.
GPS simulator Et C# program som sender data fra en GPS fil til RS232 og simulerer en GPS engine. Tre linjer pr. sekund er satt opp.
INF1000 (Uke 14) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B.
INF1000 (Uke 13) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
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.
Inf1000 (Uke 10) HashMap og ArrayList
Finne feil - Debugging Introduksjon til sortering.
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
IS-102 Interaksjon med objekter
PL/SQL تعريف المتغيرات
فصل هفتم شاخص گذاری.
CMPE 152: Compiler Design April 23 Class Meeting
Siste uke med fokus på Python  Java
Utskrift av presentasjonen:

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

ADA95 for KDA Pakker  Ada har innebygget en mekanisme for å gruppere sammen underprogrammer som utfører en oppgave sammen, eller som utfører beslektede oppgaver.  Denne mekanismen kalles pakke, og kan sammenlignes med en klasse i C++ som man har et globalt objekt av, eller namespace.

ADA95 for KDA Pakker  Pakker deles i to biter: –Pakke spesifikasjonen –Pakke kroppen(body)  Vi har allerede støtt på en pakke: –text_io  Eksempel på en pakke.

ADA95 for KDA Pakke eksempel  Fil a.ads (Pakkespesifikasjonen) package a is procedure set(X: in integer); function get return integer; end a;

ADA95 for KDA  Fil a.adb (Pakkekroppen) with text_io; package body a is Remember : integer; procedure set(X: in integer) is begin Remember := X; end set; function get return integer is begin return Remember; end get;

ADA95 for KDA Slutten på pakkekroppen begin -- dette blir kjørt før pakka tas -- i bruk. Remember := 0; text_io.put_line("Starting"); -- utskrift som bevis på kjøring end a;

ADA95 for KDA Bruk av pakka with text_io; with a; procedure main is package int_io is new text_io.integer_io(integer); procedure p is begin int_io.put(a.get); text_io.put_line(""); a.set(100); int_io.put(a.get); text_io.put_line(""); end p;

ADA95 for KDA Bruk av pakka begin int_io.put(a.get); text_io.put_line(""); a.set(10); int_io.put(a.get); text_io.put_line(""); p; int_io.put(a.get); text_io.put_line(""); end main; Starting

ADA95 for KDA Gjeming av informasjon (Private typer)  Normale private typer  Begrensede private typer

ADA95 for KDA Private typer  Vi kan lage pakker uten private typer: package ComplexNumbers is type Complex is record Real,Imag : float; end record; function ”+” (X:Complex) return Complex; function ”+” (X,Y:Complex) return Complex; function ”-” (X:Complex) return Complex; function ”-” (X,Y:Complex) return Complex; end ComplexNumbers;

ADA95 for KDA eller med privat type. package ComplexNumbers is type Complex is private; function ”+” (X:Complex) return Complex; function ”+” (X,Y:Complex) return Complex; function ”-” (X:Complex) return Complex; function ”-” (X,Y:Complex) return Complex; private type Complex is record Real,Imag : float; end record; end ComplexNumbers;

ADA95 for KDA Pakkekroppen package body ComplexNumbers is function ”+” (X,Y:Complex) return Complex is begin return (X.Real+Y.Real,X.Imag+Y.Imag); end ”+”; ::::::::::::::::::: end ComplexNumbers;

ADA95 for KDA Bruk av ComplexNumbers with ComplexNumbers; procedure Main is a,b,c : ComplexNumbers.Complex; `begin a := b + c; Hvilken + er dette? a:=ComplexNumbers.+(b,c); a := b + c; use ComplexNumbers ;Type.Complex

ADA95 for KDA Arv (Subtype)  Vi kan gjøre slikt som: type Lengde is new Integer;  I dette tilfellet kan vi lage nye operatorer: function “+”(L,R : Lengde) return Lengde;  Men husk at dersom vi ikke lager nye operatorer arver vi alle fra integer.  Hva dersom vi ønsker å fjerne operatorer: function “*”(l,r:Lengde) return Lengde is abstract;

ADA95 for KDA Stack pakke package StackPak is type Stack is private; procedure Push(S: in out Stack; X:in integer); procedure Pop(S: in out Stack; X:out integer); function ”=”(S1,S2:Stack) return boolean; private MAX : constant := 100; type IntVec is array (integer range <>) of integer; type Stack is record Data: IntVec(1..MAX); Top : integer range 0..MAX := 0; end record; end StackPak;

ADA95 for KDA package body StackPak is procedure Push(S: in out Stack; X:in integer) is begin S.Top := S.Top + 1; S.Data(S.Top) := X; end Push; procedure Pop(S: in out Stack; X:out integer) is begin X := S.Data(S.Top); S.Top := S.Top - 1; end Pop; function ”=”(S1,S2:Stack) return boolean is begin if S1.Top /= S2.Top then return false; end if; return true; end ”=”; end StackPak;

ADA95 for KDA with StackPak; procedure main is MyStack : StackPak.Stack; Empty: StackPak.Stack; begin StackPak.Push(MyStack,Tall); StackPak.Pop(MyStack,Tall2); if (MyStack /= Empty) then MyStack := Empty; end if; end main;

ADA95 for KDA Limited private  Det er mulig å lage typer slik: type T is limited private;  Dette betyr at operatorene =, /= og := ikke automatisk er tilgjengelig for denne typen.

ADA95 for KDA Stack eksempel package StackPak is type Stack is limited private; procedure Push(S: in out Stack; X:in integer); procedure Pop(S: in out Stack; X:out integer); function ”=”(S1,S2:Stack) return boolean; private type Cell; type Stack is access Cell; type Cell is record Next: Stack; Value : integer; end record; end StackPak;

ADA95 for KDA package body StackPak is procedure Push(S: in out Stack; X:in integer) is begin S := new Cell’(S,X); end Push; procedure Pop(S: in out Stack; X:out integer) is begin X := S.Value; S := S.Next; end Pop; function ”=”(S1,S2:Stack) return boolean is begin ::::::::::::::: end ”=”; end StackPak;

ADA95 for KDA Løse enheter  Vi kan i ada dele ut funksjoner og prosedyrer i egene file. Dette gjøres ved: 1. Der kroppen til prosedyra skulle vært skrives: procedure X(parametre)is separate; 2. Lag en egen fil: separate(Pakkenavn) procedure X (Parametre) is --osv.

ADA95 for KDA Løse enheter  Løse enheter i gnat skal hete:  Pakkenavn~underprogramnavn.adb  Disse filene kompileres automatisk med.

ADA95 for KDA Child library units  Dette er en teknikk som benyttes dersom vi ønsker å lage en ny pakke som benytter private typer i en pakke, men der den nye koden ikke skal være en del av den gamle pakka.

ADA95 for KDA Eksempel package ComplexNum is type Complex is private; ::::::::: end ComplexNum; Package ComplexNum.Underpakke is function a(...) return Complex; end Complex.Underpakke;

ADA95 for KDA Bruk av underpakker  Dersom vi tar med oss en underrpakke slik: with ComplexNum.Underpakke;  Fører dette automatisk til at pakka ComplexNum også blir tatt med.

ADA95 for KDA Child library units  Det er mulig å lage underpakker som pakker inne i andre pakker: package P1 is package P2 is :::::::::::::::::: end P2; :::::::: end P1;

ADA95 for KDA Private Child lib-units  EN siste mulighet er å lage private underpakker.  Dette gjøres ved å skrive private forran package når vi lager pakka: package P1 is private package P2 is :::::::::::::::::: end P2; :::::::: end P1;

ADA95 for KDA Kort oppramsing av synlighetsregler  En pakkespesifikasjon behøver ikke benytte with ForreldrePakke;  En pakke spesifikasjon kan ikke benytte with Pakke.Barn;  En pakkebody kan benytte with Pakke.Barn og/eller Pakke.Bror  Ting i en forreldrepakke er synlig i barn. (use ikke nødvendig)

ADA95 for KDA Kort oppramsing av synlighetsregler  En privat barn er ikke synlig utenfor pakketreet.  Private deler og pakkekroppen til barnepakker kan benytte private deler av forreldrepakker.  Hele private barnepakker kan benytte private deler av forreldrepakker.  Use på en barnepakke fører til use på forreldrepakka også.  Use på en forreldrepakke fører til use på alle barnepakker som er inkludert med with.

ADA95 for KDA Forandring av navn  Det er mulig å bytte ut navnet på eksisterende enheter i ADA. declare procedure aset(X:integer) renames a.set; function rar return integer renames a.get; begin int_io.put(a.get); -- kan skrives som int_io.put(rar); end;

ADA95 for KDA På tide med oppgaver igjen Kap 11: 11.1, 11.3, 11.4 (1-4) og 11.5 (1-2) Kap 12: 12.1 og 12.3 Kap 5: 5.4 og 5.5 Kap 6: 6.2, og 6.8 Kap 7: 7.1 og 7.2 Kap 8: 8.1, 8.3, 8.6 og 8.7 Kap 9: 9.1 (1-3,7), 9.2 (1-2) og 9.3 Kap 10: 10.2, 10.3 og 10.6