Introduktion till Jasmine 1.2 ODQL

Relevanta dokument
INTRODUKTION TILL JDBC

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

Laboration 1 Introduktion till Visual Basic 6.0

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Variabler och konstanter

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

1.1 Skapa ett Inline-Script som skapar filen För att skapa ett inline script drar man InLine till där man vill ha själva scriptet.

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Grundläggande datalogi - Övning 1

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Visual Basic, en snabbgenomgång

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Laboration: Grunderna i Matlab

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

TDIU01 - Programmering i C++, grundkurs

Föreläsning 5: Introduktion av pekare

2.4. Teckensträngar och logiska uttryck

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Introduktion till Matlab

Detta dokument skall ge en kortfattad introduktion till Jasmine installationen vid DSV.

Övningsuppgifter kapitel 8

Frekvenstabell över tärningskast med C#

Instruktion för laboration 1

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

F4. programmeringsteknik och Matlab

Objektorienterad Programmering (TDDC77)

Programmeringsteknik med C och Matlab

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Programmering i C, 7,5 hp

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Föreläsning 3-4 Innehåll

Introduktion till MATLAB, med utgångspunkt från Ada

Exempel på ett litet Ada-program

Föreläsning 2 Programmeringsteknik och C DD1316

Twincat: PLC Control

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

Starta MySQL Query Browser

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

Introduktion till Matlab

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Matematisk Modellering

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Lägg märke till skillnaden, man ser det tydligare om man ritar kurvorna.

Tentamen Grundläggande programmering

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

C++ - En introduktion

Instruktion för laboration 1

Enkla datatyper minne

Användarhandledning Version 1.2

Pascal... Pascal. Pascal... Pascal...

En kort text om programmering i C.

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Objektorienterad programmering i Java

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Grunderna i SQL del 1

Översikt över Visual Basic

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

Lektion 5 HTML, CSS, PHP och MySQL

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

Sample exam questions. Database exam TIG058

1.Lär känna MS SQL Observera. Tips. Förberedelse

Beräkningsverktyg HT07

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Matematisk Modellering

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

TENTAMEN OOP

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

SMD 134 Objektorienterad programmering

Objektorienterad programmering Föreläsning 2

Introduktion till MATLAB

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

Introduktion till användning av linux-servern sledge och några övningsuppgifter

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Karlstads Universitet, Datavetenskap 1

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Objektorienterad Programmering (TDDC77)

Subversion. Laboration. Höstterminen 2008 r81. Ronny Kuylenstierna

Transkript:

Introduktion till Jasmine 1.2 ODQL I detta avsnitt beskrivs ett antal praktiska handgrepp som behövs för att köra Jasmine ODQL. 1 ODQL miljön Man kan enklast köra ODQL mot Jasmine från ett vanligt Command Prompt fönster. ODQL miljön startar man med kommandot codqlie och avslutar med kommandot end;. För att ODQL miljön ska fungera måste Jasmine vara igång. Man kan starta Jasmine (eller kontrollera att den är igång) från Jasmine Startup fönstret (Start Menu > Programs > DatabaseManagementSystems, Jasmine > Jasmine Startup): Kommandot codqlie kan också ta ett antal parametrar: Usage: codqlie [-h -help -?] [-dbname string] [-username string] [-passwd string] [-envfile string] [-execfile string] [-displayprocessedodql] [-useexplicittransactions] [-silent] Option(s): -h or -help or -? this list -dbname string database name -username string login Id -passwd string password -envfile string environment file for this session -execfile string text file containing commands -displayprocessedodql display ODQL text just prior to execution -useexplicittransactions turn off implicit transaction handling -silent do not display startup info Det mest intressanta här är parametern execfile. Man kan använda en fil där man sparar alla ODQL kommandon, och sedan köra den automatiskt när man kommer till ODQL miljön. Sidan 1 av 6

Alla kommandon i ODQL miljön måste avslutas med semikolon (;). Kommentarer i ODQL börjar med /* och avslutas med */. Det är viktigt att komma ihåg att Jasmine ODQL är case sensitive! Alla kommandon måste skrivas på rätt sätt. Alla "SQL" ord stavas alltid med gemener, resten bör man kontrollera i Jasmine Online Documentation om man inte vet. ODQL miljön har en egen buffert, där alla deklarerade variabler finns. Enklast kan man tömma bufferten genom att lämna ODQL miljön med kommandot end;. Det rekommenderade sättet att arbeta är att man bygger in alla kommandon (inklusive kommandot end;) i en fil, som man sedan använder som parameter i kommandot codqlie. När man kommer in i ODQL miljön, använder systemet den default klassfamiljen systemcf. För att ändra till en annan klassfamilj använder man kommandot defaultcf och namnet på den klassfamilj man vill använda. Här är ett exempel: defaultcf CAStore; Klassfamiljen CAStore innehåller den exempeltillämpning som följer med Jasmine. (Observera att CAStore är anpassad för kursen genom ändringar i modellen och inmatning av flera instanser.) Här följer ett enkelt exempel på hur man kan göra för att exekvera en select sats och visa resultatet: Skapa en fil (t ex D:\ODQLtemp\fil1.txt) med följande innehåll: defaultcf CAStore; String str; str = select Customer.shoesize from Customer where Customer.name == Donald Duck ; str.print(); end; Först sätter man CAStore som default klassfamilj. Den andra raden deklarerar stängvariabeln str. Den tredje raden tilldelar variabeln str med select satsens resultat (Donald Ducks skonummer). Den fjärde raden skriver ut str på skärmen. Man kan exekvera filen direkt från kommando prompt med följande kommando: codqlie -execfile D:\ODQLtemp\fil1.txt Detta skulle resultera i att siffran 42 (Donald Ducks skonummer) kommer på skärmen, och ODQL miljön avslutas. Sidan 2 av 6

2 Mängdhantering ODQL liknar i mycket SQL. En viktig skillnad är att man i ODQL kan arbeta explicit med mängder. De vanligaste mängderna är bags, alltså egentligen inte mängder eftersom de kan innehålla dubbletter. En bag ser ut så här: Bag{1, 2, 4, 1, 8} ODQL tillhandahåller ett antal mängdoperationer, de viktigaste är: union intersect differ haselement scan directadd Detaljerad information om och exempel på dessa operationer kan man hitta i Jasmine Online Documentation (Start Menu > Programs > DatabaseManagementSystems > Jasmine > Jasmine Online Documentation). Där hittar man också andra användbara operationer som inte nämns i den här introduktionen. Här är ett litet exempel om mängdhantering: Integer set is1; Integer set is2; Integer set is3; Integer set is4; Integer set is5; is1 = Bag{1,2,3,4}; is2 = Bag{1,3,5,7}; is3 = Bag{}; is4 = Bag{}; is3 = is1.union(is2); is3.print(); is3 = is1.intersect(is2); is3.print(); is4.directadd(5); is4.directadd(81); is4.print(); is4 = is4.add(73); Sidan 3 av 6

is4.directremove(81); is4.print(); is5.print(); is5.directadd(5); is5.print(); Exekvering av dessa kommandon resulterar i följande: Bag{ 4, 2, 1, 3, 5, 7 } Bag{ 1, 3 } Bag{ 5, 81 } Bag{ 5, 73 } NIL NIL Det är viktigt att observera här att en mängd-variabel som inte har instansierats har värdet NIL. En del mängdfunktioner (som add() och directadd()) fungerar då inte på variabeln. I exemplet var variabeln is5 NIL innan och efter directadd(). Variabeln is4 å andra sidan tilldelades först en tom mängd. Därefter kunde man utföra add() och directadd() operationer på den. I exemplet ovan användes mängder (set) av heltal (Integer). I Jasmine ODQL kan man använda följande basklasser (motsvarar datatyper): Integer Real String Date Utöver dem kan man använda sig av alla klasser som man har i den aktuella klassfamiljen. Om man till exempel har en klass Customer, kan man definiera variabler och tilldela dem enligt följande exempel: Customer c1; Customer set cs1; cs1 = select Customer from Customer; Här är ett annat exempel som använder operationen haselement(): /* Vilka accessoarer innehåller inte blått? */ String set strset; Sidan 4 av 6

strset = select Accessory.name from Accessory where not(accessory.colors.haselement("blue")); strset.print(); Först ges en kommentar inom /* */. Därefter deklareras en variabel strset som är mängdvärd. Därefter tilldelas strset namnen på de accessoarer som inte är blåa. Accessory.colors är en mängd, därför kan man använda en mängdoperation. Till slut skrivs värdet på strset ut. Resultatet blir så här: Bag{ Red Umbrella, Beige Bag, Pigskin Bag, Red Bag, Large bag, Red Sun Hat, Black Satin Sandal, Loafer, Sandal } Man kan iterera över en mängd med hjälp av scan()-satsen. I följande exempel skrivs namnen på alla kunder ut: Customer c1; Customer set cs1; cs1 = select Customer from Customer; scan(cs1, c1) { c1.name.print(); }; /* c1 är en variabel som itererar över elementen i cs1 */ Resultatet blir såhär: Scrooge McDuck Donald Duck Huey Duck Dewey Duck Louie Duck Etc. Sidan 5 av 6

3 Imperativa konstruktioner ODQL innehåller vanliga imperativa programspråkskonstruktioner som if-then-else och while. I exemplet nedan skrivs en mängd om den innehåller elementet 2. Integer set is1; Integer set is2; is1 = Bag{1,2,3,4}; is2 = Bag{1,3,5,7}; if (is1.haselement(2)) { is1.print(); }; if (is2.haselement(2)) { is2.print(); }; 4 ODQL och Jasmine studio Mycket av det som går att göra i ODQL kan också göras i Jasmine Studio, men Studio har åtskilliga begränsningar. 5 Resurser För det mesta kan man hitta information i Jasmine Online Documentation. Start Menu > Programs > DatabaseManagementSystems > Jasmine > Jasmine Online Documentation Sidan 6 av 6