5 Grundläggande in- och utmatning

Save this PDF as:
 WORD  PNG  TXT  JPG

Storlek: px
Starta visningen från sidan:

Download "5 Grundläggande in- och utmatning"

Transkript

1 5 Grundläggande in- och utmatning För att användaren skall kunna kommunicera med programmet krävs att man inkluderar ett eller flera bibliotek med rutiner. I Ada finns det ett antal paket som gör detta möjligt. De tre mest grundläggande av dessa är Ada.Text_IO, Ada.Float_Text_IO och Ada.Integer_Text_IO. Alla dessa tre läser data från tangentbordet och skriver saker på skärmen om man bara anropar rätt rutiner. I detta kapitel tas de mest grundläggande operationerna man kan göra för att kunna kommunicera med användaren upp. Paketen innehåller mer än det som tas upp här. Vissa delar av dessa paket kommer senare i boken, bl.a. när filhantering tas upp. Teori 5.1 Biblioteket Ada.Text_IO Biblioteket Ada.Text_IO innehåller procedurer, funktioner, typer m.m. som behövs när man skall inhämta data från eller skicka data till externa enheter (t.ex. tangentbord och skärm). Det avslutande IO i biblioteksnamnet är en förkortning för In and Out. Att det är hantering av textinmatning samt textutmatning det handlar om anges också i namnet. De rutiner som finns tillgängliga i Ada.Text_IO är många och några av de väsentligaste tas upp i detta kapitel. Vill du se alla finns de i bilaga C.1 och i referensmanualen för Ada Allmänt om in- och utmatning internt i datorn Det är väsentligt för en programmerare att veta lite grann om hur datorn arbetar internt. Detta för att bättre förstå hur de olika underprogrammen i paketet fungerar. I bilden som följer ser man schematiskt hur data (de tecken användaren matar in) går från tangentbordet, via tangentbordets inmatningsbuffert, till programmet och hur data går från programmet, via en utmatningsbuffert till skärmen. En buffer är 85

2 ett minne där man lagrar en mindre mängd data innan det levereras vidare. Put(X); Utmatningsbuffert Programmet Get(X); Inmatningsbuffert Den streckade linjen markerar själva datorns arbetsminne (primärminne) där bl.a. programmet finns då det körs. De delar som är markerade inom bubblan är de delar som programmet har tillgång till. De övriga delarna måste programmet fråga datorns operativsystem om hjälp för att nå. Operativsystemet administrerar datorns interna och externa enheter och körs parallellt med programmet. T.ex. hanteras användarens tangentbordstryckningar. Man kan belysa hela förloppet med ett exempel. Antag att programmet skall skriva ut Mata in ett heltal: på skärmen och sedan låta användaren mata in ett heltal. Därefter skall programmet läsa in talet från tangentbordsbufferten och lagra det i en variabel. Steg ett är att programmet måste utföra en instruktion som skriver ut texten Mata in ett heltal:. Instruktionen är: Put("Mata in ett heltal: "); Det som då händer är att texten skickas från programmet till operativsystemet med en begäran om att skrivas ut på skärmen. 86

3 Operativsystemet lagrar texten i utmatningsbufferten och sedan händer inget mer. Det är alltså inte givet att texten kommer ut direkt på skärmen. Detta beror på att man använt Put som instruktion. I instruktionen finns inget som säger att man tvingar operativsystemet att skicka informationen vidare till skärmen. Vad är det som kan framtvinga att texten blir synlig på skärmen? En sak som skulle göra att texten kommer ut är att bufferten blir full och något nytt skall lagras däri. Då töms bufferten (av operativsystemet) ut till skärmen och fylls med nya data. Ett annat sätt är att man ger en instruktion som säger att bufferten skall tömmas. Det finns en sådan i Ada och den instruktionen utförs i lite olika sammanhang. Den utförs bl.a. när man anropar Get (som är en begäran om att läsa från tangentbordet). Det kan man förstå då det är väsentligt att veta vad som skrivits innan man låter användaren mata in data. När man går vidare kommer programmet att be operativsystemet om en inmatning av ett heltal. Instruktionen för detta är (givet att X är en variabel deklarerad för typen Integer ): Teori Get(X); I detta läge töms utmatningsbufferten (om det finns något kvar i den) så att man ser texten på skärmen. Dessutom skickas en begäran till operativsystemet om att få data i tangentbordets inmatningsbuffert. Programmet stannar därefter och väntar på att få klartecken från operativsystemet. Operativsystemet kontrollerar om det redan finns data i bufferten och om det är så ges direkt klartecken. Om inte måste operativsystemet vänta på användarinmatning. Operativsystemet lagrar alla nedtryckningar,som användaren gör på tangentbordet, i inmatningsbufferten. Om användaren raderar tecken tas de bort. När användaren bekräftar sin inmatning (med vagnretur) lagras också detta tecken i bufferten och sedan kan klartecken ges till programmet för vidare bearbetning. 87

4 Innan man går vidare bör också poängteras att användarens alla tangentnedtryckningar också visas (ekas) på skärmen (den streckade pilen i bilden markerar detta) så att användaren ser vad den håller på med. Detta är inget programmet kan styra över så programmets text blandas nu med användarens indata. När nu programmet fått klartecken från operativsystemet kommer programmet att gå igenom inmatningsbufferten, tecken för tecken, för att plocka fram vilket tal det var som matades in. När programmet har hittat det data det söker,avbryts letandet och Get lagrar heltalet i variabeln som skickats som parameter till Get. Exakt hur Get fungerar för heltal,flyttal m.m. förklaras i följande kapitel. Observera att inmatningsbufferten inte måste bli tom efter det att Get gjort sitt jobb. Det kan vara så att användaren matade in fler tecken än det behövdes. Detta gör att operativsystemet nästa gång man vill göra en Get direkt kan ge klartecken och inte behöver vänta på ny inmatning från användaren Proceduren Get (för tecken) Proceduren Get för tecken har en deklaration enligt följande: procedure Get(Item : out Character); Proceduren läser ett tecken (det första) från inmatningsbufferten. En läsning av ett tecken innebär att tecknet försvinner från bufferten. Alla vanliga skrivbara tecken är acceptabla och tecknet lagras i Item för vidare befordran till den som anropar. Ett specialfall är att det är odefinierat vad som händer om en vagnretur (radmatning) ligger som första tecken i bufferten. Vad som då returneras via Item är alltså inte att lita på. Att detta är odefinierat beror på att olika datorer har olika representationer av hur vagnretur lagras internt. Om det finns data i utmatningsbufferten skrivs dessa ut innan Get utför sin uppgift. 88

5 Speciellt är också att man får ett stort problem om man försöker läsa ett tecken om inmatningsbufferten är markerad som slut på data (se funktionen End_Of_File för mer information om detta). Detta fall leder till att ett undantag (eng. exception ), End_Error kastas (eller reses). Om man inte fångar detta undantag i något av de anropande programmen kommer programmet att krascha. Senare finns ett helt kapitel som handlar om undantag Proceduren Get (för strängar) Proceduren Get för strängar har en deklaration enligt följande: Teori procedure Get(Item : out String); Denna procedur beter sig inte riktigt som Get för tecken. Denna Get ignorerar alla vagnreturer som dyker upp i inmatningsbufferten tills att den sträng som skall fyllas är fylld med skrivbara tecken. Om man anropar denna Get med en sträng som är 10 tecken lång kommer Get att läsa 10 tecken från bufferten exklusive de ignorerade vagnreturerna. Om användaren matar in för få tecken kommer alltså Get att be operativsystemet om nya data tills det att hela strängen fyllts med tecken. Efterföljande tecken ligger kvar till nästa inmatning precis som för Get för tecken. Speciellt gäller att den vagnretur som användaren avslutade med alltid finns kvar. Lite speciellt är att Get för strängar känner av hur lång den aktuella strängparametern är. Om det finns data i utmatningsbufferten skrivs dessa ut innan Get utför sin uppgift. 89

6 5.1.4 Proceduren Skip_Line Proceduren Skip_Line har en deklaration enligt följande: procedure Skip_Line(Spacing : in Positive_Count := 1); Proceduren Skip_Line används för att radera resten av en inmatad rad, d.v.s. alla tecken fram t.o.m. en vagnretur. Om inget finns i inmatningsbufferten kommer operativsystemet att fylla på med data och sedan kommer första raden att tas bort. Som man ser i parameterlistan har den formella parametern ett skönsvärde som gör att man inte behöver anropa proceduren med någon aktuell parameter om man endast vill ta bort en rad. Vill man ta bort flera rader på en gång skickar man bara med ett positivt heltal som anger antalet rader som skall tas bort. Om det finns data i utmatningsbufferten skrivs dessa ut innan Skip_Line utför sin uppgift. På samma sätt som för Get kommer End_Error att kastas om inmatningsbufferten är slut Proceduren Get_Line Proceduren Get_Line finns bara för strängar och har en deklaration enligt följande: procedure Get_Line(Item : out String; Last : out Natural); Denna procedur är lite speciell och beter sig lite olika i olika situationer. Man kan förenklat säga att denna procedur löser problemet med inmatningar av strängar som man inte vet exakt hur många tecken de består av. Man skickar in en sträng som är dimensionerad till det maximala antalet tecken man får mata in varefter Get_Line läser, från inmatningsbufferten,in så många tecken som det finns före första vagnreturen. 90

7 Inläsningen sker efter det att operativsystemet givit klartecken att det finns något i inmatningsbufferten. Förutom att skicka tillbaka den inlästa strängen skickas också, i princip, antalet tecken som lästes in och lagrades i strängen tillbaka programmet som anropande Get_Line. Detta via Last -parametern. Ser man mer i detalj på vad som händer,vilket man måste för att kunna hantera denna procedur på ett vettigt sätt, ser man att vagnreturen ibland tas bort av Get_Line och ibland inte. Dessutom kan det vara så att Last -parametern returnerar ett värde som är större än strängens längd. Först vagnreturproblemet. När raden som användaren matat in är kortare än den sträng som programmet skall lagra texten i tas vagnreturen bort från inmatningsbufferten. När det finns minst lika många tecken på den rad som matas in som strängen är lång lämnas de återstående tecknen och vagnreturen kvar i bufferten. Om man sedan tittar på vad som egentligen returneras i Last så är det den position på vilken Get_Line lagt det sista tecknet på i strängen. Det beror alltså på hur strängen är deklarerad i det anropande programmet vad positionerna har för nummer. Antag att man har en sträng som deklarerats enligt följande: Teori Str : String(1.. 10); I detta fall kommer Last att returnera samma position som längden av det antal tecken som matats in. Antar man istället att deklarationen ser ut på följande sätt: Str : String(2.. 11); Om användaren matar in 2 tecken på tangentbordet kommer dessa att lagras i position 2 och 3 i strängen och Last kommer att skicka ut en 3:a till den som anropar. Ytterligare en liten detalj är att den del av strängen som inte fylldes av Get_Line kommer att innehålla samma data som den innehöll innan anropet till Get_Line. 91

8 Observera också att en tom rad (med endast en vagnretur) kommer att resultera i att programmet får tillbaka samma sträng som det hade innan anropet. Parametern Last blir satt till värdet Item First - 1 (ett mindre än första index i strängen). Om strängen är definierad från index 1 kommer Last att returnera värdet 0 (noll). Dessutom tas det radslut som ligger i inmatningsbufferten bort. Om bufferten är markerad som slut kraschar programmet enligt tidigare beskrivningar för Get -procedurerna Proceduren Put (för tecken) Proceduren Put för tecken har en deklaration enligt följande: procedure Put(Item : in Character); Proceduren Put ber operativsystemet om att skriva ut ett tecken på skärmen. Detta tecken kan hamna i utmatningsbufferten i väntan på att skrivas ut. Nästa utmatning kommer på samma rad på skärmen som det tecken som just skrivits ut. Generellt är det så i Ada att Put betyder skriv ut datat utan att göra radbrytning efteråt Proceduren Put (för strängar) Proceduren Put för strängar har en deklaration enligt följande: procedure Put(Item : in String); Proceduren Put för strängar utför egentligen så många Put för tecken som det finns i strängen. Varje tecken skrivs ut enligt beskrivningen för teckenutmatningen. Observera att strängen kan vara godtyckligt lång. 92

9 5.1.8 Proceduren New_Line Proceduren New_Line har en deklaration enligt följande: procedure New_Line(Spacing : in Positive_Count := 1); När man vill sätta in en radbrytning i utskriften på skärmen använder man New_Line. Utan aktuell parameter görs en radbrytning och med aktuell parameter anger denna hur många radbrytningar som skall göras. New_Line ser också till att det som finns i utmatningsbufferten skrivs ut på skärmen Proceduren Put_Line Proceduren Put_Line finns bara för strängar och har en deklaration enligt följande: Teori procedure Put_Line(Item : in String); Proceduren Put_Line är en snabbvariant av att anropa först Put för strängen och sedan New_Line utan parameter. Put_Line ser också till att det som finns i utmatningsbufferten skrivs ut på skärmen Funktionen End_Of_Line Funktionen End_Of_Line har en deklaration enligt följande: function End_Of_Line return Boolean; Denna funktion används för att tjuvkika på (utan att läsa in) nästa tecken i tangentbordets inmatningsbuffert. Om nästa tecken är vagnretur (radslut) eller markeringen för filslut returnerar funktionen sanningsvärdet True, annars returneras False. 93

10 Funktionen End_Of_File Funktionen End_Of_File har en deklaration enligt följande: function End_Of_File return Boolean; Denna funktion används för att tjuvkika på tangentbordets inmatningsbuffert. Där kan man se om den är markerad som slut på inmatning (detta kallas för filslut ). Man kan på tangentbordet trycka en tangentkombination som anger att inmatningsbufferten sätts i ett läge så att man har slut på data. Detta kan man alltså detektera med hjälp av funktionen End_Of_File. Sanningsvärdet True returneras om bufferten är slut, annars returneras False. Ett specialfall är att End_Of_File returnerar True även i fallet att inmatningsbufferten innehåller ett radslut följt av filslut. 5.2 Biblioteket Ada.Float_Text_IO Detta är ett komplement till Ada.Text_IO som bara hanterar inoch utmatning av flyttal. Den generiska definitionen som ligger till grund för detta bibliotek finns egentligen i Ada.Text_IO, men då det är mycket vanligt att man använder inmatningar av flyttal finns detta bibliotek fördefinierat utifrån det generella Proceduren Get (för flyttal) Proceduren Get för flyttal har en deklaration enligt följande: procedure Get(Item : out Float; Width : in Field := 0); Proceduren läser ett flyttal från tangentbordsbufferten och returnerar detta via parametern Item. Inledande vita tecken (blanktecken, tabulatortecken, vagnreturer) ignoreras (läses bort). Om man skickar med ett heltal till Width -parametern 94

11 läses maximalt så många tecken även om det skulle kunna vara ett flyttal med fler tecken. Ett flyttal kan matas in på två format,antingen som ett decimaltal eller som ett exponentialtal. Exponentialtal matas in på som en heltalsdel, en punkt, decimaldel, bokstaven E eller e som markerar gånger 10 upphöjt till samt exponentdelen. Punkten och decimaldelen kan tas bort. Det är tillåtet att mata in ett heltal till Get för flyttal då proceduren även klarar detta specialfall. Om bufferten är markerad som slut kastas End_Error. Om det, efter de eventuella inledande vita tecknen, kommer något som inte går att tolka som ett flyttal kastas Data_Error. Ett exempel när detta inträffar är om användaren matar in bokstäver istället för siffror. Alla tecken efter det första flyttalet i inmatningsbufferten lämnas kvar. Om det finns data i utmatningsbufferten skrivs dessa ut innan Get utför sin uppgift. Teori Proceduren Put (för flyttal) Proceduren Put för flyttal har en deklaration enligt följande: procedure Put(Item : in Float Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); Proceduren Put skriver ut ett flyttal på skärmen. Put kan skriva ut flyttalen på ett par olika format. Dels i exponentialform,dels i decimalform. Observera att punkt används istället för kommatecken som decimalavskiljare. Om man endast anropar Put med det flyttal som skall skrivas ut kommer skönsvärdena på formatbeskrivningsparametrarna att träda in och man får en utskrift i exponentialform. 95

12 De konstanter som står i parameterlistan, som skönsvärden, har följande värden. Default_Fore : Field := 2; Default_Aft : Field := Float'Digits - 1; Default_Exp : Field := 3; Dessa konstanter gör att man får ett exponentialtal med två siffror före decimalpunkten,så många decimaler som ett normalt flyttal kan ha, enligt Ada:s standard, samt tre exponentsiffror. Mellan decimal- och exponentdelen sätts bokstaven E in för att markera gånger 10 upphöjt till. Om man vill modifiera någon eller några av formatparametrarna skickar man bara in tal som motsvarar det man anser vara rimligt. Vill man t.ex. få en utskrift utan exponentdel skickar man in en nolla till Exp. I fallet att talet man skriver ut inte har så många siffror att det fyller upp antalet positioner som anges i Fore, högerjusteras utmatningen av heltalsdelen i så många positioner som är angivet. De inledande positionerna fylls med blanktecken. Är det istället så att Fore inte räcker till för att skriva ut heltalsdelen kommer denna att skrivas ut i så många positioner som behövs. Några exempel på anrop, som skriver ut ett flyttal som ligger i variabeln F i decimalform med 2 heltalspositioner och 4 decimaler, följer här. Put(F, Fore => 2, Aft => 4, Exp=> 0); Put(F, Aft => 4, Exp=> 0); Put(Item => F, Aft => 4, Exp=> 0); Put(F, 2, 4, 0); Put(F, Exp=> 0, Aft => 4, Fore => 2); Alla anrop är identiska, men de är mer eller mindre läsbara. En rekommendation är att använda den första varianten. Denna är lätt att förstå och ger nästa programmerare mindre arbete med att förstå vad programmet gör. Många tror att variant nummer fyra är att föredra då det går snabbare att skriva, just då man skriver 96

13 den programraden, men med mycket stor sannolikhet ställer den till det för den som senare skall modifiera programmet. 5.3 Biblioteket Ada.Integer_Text_IO Detta är ett komplement till Ada.Text_IO som endast hanterar in- och utmatning av heltal. Egentligen finns definitionen som ligger till grund för detta bibliotek inuti paketet Ada.Text_IO, men då det är mycket med heltalsinmatningar finns detta bibliotek fördefinierat utifrån det generella Proceduren Get (för heltal) Proceduren Get för heltal har en deklaration enligt följande: Teori procedure Get(Item : out Integer; Width : in Field := 0); Proceduren läser ett heltal från tangentbordsbufferten och returnerar detta via parametern Item. Inledande vita tecken (blanktecken, tabulatortecken, vagnreturer) ignoreras (läses bort). Om man skickar med ett heltal till Width -parametern läses maximalt så många tecken även om det skulle kunna vara ett heltal även med fler tecken. Ett heltal kan matas in på två format. Antingen som ett vanligt heltal eller som ett heltal i en annan talbas än 10. De talbaser som Ada klarar är 2, 3,..., 16. Inmatning i en annan talbas än 10 har följande format. Det är givetvis också tillåtet att mata in tal i basen 10 på detta sätt. talbas#tal# Det binära talet skulle alltså matas in som 2# #. Om bufferten är markerad som slut kastas End_Error. Om det efter de eventuella inledande vita tecknen kommer något som inte går att tolka som ett heltal kastas Data_Error. Ett exempel 97

14 när detta inträffar är om användaren matar in bokstäver istället för siffror. Om inmatningen ger ett heltal som inte går att lagra i heltalsvariabeln kastas Constraint_Error som i princip betyder utanför gränserna. Alla tecken efter det första heltalet i inmatningsbufferten lämnas kvar. Om det finns data i utmatningsbufferten skrivs dessa ut innan Get utför sin uppgift Proceduren Put (för heltal) Proceduren Put för heltal har en deklaration enligt följande: procedure Put(Item : in Integer; Width : in Field := Default_Width; Base : in Number_Base := Default_Base); Proceduren Put skriver ut ett heltal på skärmen. Put kan skriva ut heltal på ett par olika format. Dels som ett vanligt heltal eller som ett heltal i en annan talbas än 10. Se mer om detta i beskrivningen om Get för heltal. Om man endast anropar Put med det heltal som skall skrivas ut kommer skönsvärdena på formatparametrarna att träda in. De konstanter som står i parameterlistan som skönsvärden har följande värden. Default_Width : Field := Integer'Width; Default_Base : Number_Base := 10; Detta ger att man får ett vanligt heltal utskrivet högerjusterat i Default_Width antal positioner på skärmen. Om man vill modifiera någon eller några av formatparametrarna skickar man bara in tal som motsvarar det man anser vara rimligt. Vill man t.ex. få en utskrift som ett binärt heltal (på det format som angavs i beskrivningen av Get ) skickar man in en tvåa till Base. 98

15 Om talet man skriver ut inte har så många siffror att det fyller upp det antal positioner som anges i Width högerjusteras utmatningen av heltalsdelen i så många positioner som är angivet och de inledande positionerna fylls med blanktecken. Om det istället är så att Width inte räcker till för att skriva ut heltalet kommer heltalet att skrivas ut i så många positioner som behövs. Några exempel på anrop som skriver ut ett heltal, som ligger i variabeln I, i normal form med fem positioners utrymme på skärmen, följer här. Put(I, Width => 5); Put(I, 5); Put(Item => I, Width => 5); Put(Width => 5, Item => I); Alla anrop är identiska, men de är mer eller mindre läsbara. En rekommendation är att använda den första varianten. Denna är lätt att förstå och ger nästa programmerare mindre arbete med att förstå vad programmet gör. Många tror att variant nummer två är att föredra då det går snabbare att skriva,just då man skriver den programraden, men med mycket stor sannolikhet ställer den till det för den som senare skall modifiera programmet. Teori 99

16 100 Grundläggande in- och utmatning

Föreläsning 4: Poster

Föreläsning 4: Poster Föreläsning 4: Poster Följande är genomgånget: type Person_Type is Namn : String(30); Skonr : Float; Kon : Boolean; Diskussion runt detta med olika typer m.m. Har tagit upp vilka operationer man kan göra

Läs mer

Exempel på ett litet Ada-program

Exempel på ett litet Ada-program Exempel på ett litet Ada-program -- En kommentar som beskriver något. with Ada.Text_IO; procedure Mini is -- Deklarationer. K : constant Integer := 5; X, Y : Integer; -- Körbar kod. Ada.Text_IO.Put( Utskrift

Läs mer

Föreläsning 0: Introduktion av Ada

Föreläsning 0: Introduktion av Ada Föreläsning 0: Introduktion av Ada OBS! Detta är antagligen det enda papper som delas ut under hela FÖ serien. Det finns förutom detta ett antal OH:n som kommer att användas under nästa FÖ, men sen är

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

Föreläsning 1: Momstabellen i C++

Föreläsning 1: Momstabellen i C++ Nu sätter vi igång med C++! Föreläsning 1: Momstabellen i C++ På den här föreläsningen skall jag ta ett stort exempel och ett par små och med dessa hoppas jag att täcka in mycket av det som är grundläggande.

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet 1 Texthantering I detta avsnitt tas det upp två sätt att arbeta med text i C++ program. Det första sättet som behandlas är hanteringen av textfält. Texter i C++ består utav en serie med enstaka tecken

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2008-03-12.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som läser igenom en textfil som heter FIL.TXT och skriver ut alla rader där det står ett decimaltal först på raden. Decimaltal

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

Läs mer

Uppgift 1 (vadå sortering?)

Uppgift 1 (vadå sortering?) 2011-06-08.kl.14-19 Uppgift 1 (vadå sortering?) Du skall skriva ett program som sorterar in en sekvens av tal i en vektor (en array ) enligt en speciell metod. Inledningsvis skall vektorn innehålla endast

Läs mer

Föreläsning 5: Introduktion av pekare

Föreläsning 5: Introduktion av pekare Föreläsning 5: Introduktion av pekare Det bör påpekas att det som tas upp i introduktionen inte är reella exempel på kod. Man anväder inte pekare till att peka på enstaka heltal som i exemplen nedan, men

Läs mer

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada. Sockets: server with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.Text_IO; with TJa.Sockets; use TJa.Sockets; procedure Server is -- Servern

Läs mer

Objektorienterad programmering D2

Objektorienterad programmering D2 Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste

Läs mer

1 Funktioner och procedurell abstraktion

1 Funktioner och procedurell abstraktion 1 Funktioner och procedurell abstraktion Det som gör programkonstruktion hanterlig och övergripbar och överhuvudtaget genomförbar är möjligheten att dela upp program i olika avsnitt, i underprogram. Vår

Läs mer

Uppgift 1 (Oläsliga krypterade meddelanden)

Uppgift 1 (Oläsliga krypterade meddelanden) Uppgift 1 (Oläsliga krypterade meddelanden) Ofta vill man kryptera text för att inte andra skall se vad man skrivit. I den givna filen KRYPTERAD_TEXT.TXT finns en krypterad text som kan vara av intresse

Läs mer

Uppgift 1a (Aktiekurser utan poster)

Uppgift 1a (Aktiekurser utan poster) Uppgift 1a (Aktiekurser utan poster) Vi har lite olika upplägg i de kurser vi håller och i vissa kurser finns det med något som vi kallar "poster" (eng. "record"). I andra har vi inte med detta. Vi har

Läs mer

4 Sammansatta datatyper

4 Sammansatta datatyper 4 Sammansatta datatyper De enkla datatyper som vi hittills använt är otillräckliga när man ska hantera stora datamängder. Vill man exempelvis läsa in 100 reella mätvärden, som man tillfälligt vill spara

Läs mer

Enklast att skriva variabelnamn utan ; innehåll och variabelnamn skrivs ut

Enklast att skriva variabelnamn utan ; innehåll och variabelnamn skrivs ut F5: Filhantering in- och utmatning (kap. 2 och 8) 1 Utskrift på skärm, inläsning från tangentbord (kap. 2) Spara och hämta variabler med save och load (kap. 2) Kommandot textread Mer avancerad filhantering:

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) Uppgift 1 ( Betyg 3 uppgift ) I filerna queue_handling.ads och queue_handling.adb finns en datastruktur som motsvarar en kö. Det finns fyra operationer som kan utföras på en kö. 1) Enqueue som stoppar

Läs mer

Tentaupplägg denna gång

Tentaupplägg denna gång Några tips på vägen kanske kan vara bra. Tentaupplägg denna gång TIPS 1: Läs igenom ALLA uppgifterna och välj den du känner att det är den lättaste först. Det kan gärna ta 10-20 minuter. Försök skriva

Läs mer

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Inledande programmering med C# (1DV402) 27+15=42 1 (22) 27+15=42 1 (22) Variabler Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll

Läs mer

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer Datorlära 1 Introduktion till datasystemet, epost konto, afs hemkonto Introduktion till datorer och datasalar Open Office Calculator Beräkningar med Open Office Calc Diagram med OO Calc Datorlära 2 Utforma

Läs mer

Chapter 3: Using Classes and Objects

Chapter 3: Using Classes and Objects Chapter 3: Using Classes and Objects I dessa uppgifter kommer du att lära dig om hur man använder klasser och metoder från java biblioteket. Du kommer inte att förstå allt som händer bakom metod anrop

Läs mer

Textsträngar från/till skärm eller fil

Textsträngar från/till skärm eller fil Textsträngar från/till skärm eller fil Textsträngar [Kapitel 8.1] In- och utmatning till skärm [Kapitel 8.2] Rekursion Gränssnitt Felhantering In- och utmatning till fil Histogram 2010-10-25 Datorlära,

Läs mer

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram Mål Lab 2: Underprogram Följande laboration introducerar underprogram; procedurer, funktioner och operatorer. I denna laboration kommer du att lära dig: Hur man skriver underprogram och hur dessa anropas.

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

Grundläggande programmering med C# 7,5 högskolepoäng

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

Läs mer

Föreläsning 7: Filer

Föreläsning 7: Filer Genomgånget på FÖ: Föreläsning 7: Filer Undantag: Liten mall för undantag ("exceptions") och vad man har det till. Dock inte med betoning på allt, men det väsentliga är upptaget. Filer: P. Open(filvar,

Läs mer

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) Grundläggande programmering med C# Provmoment: Ladokkod: Tentamen ges för: 7,5 högskolepoäng TEN1 NGC011 Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) (Ifylles av student) (Ifylles av student)

Läs mer

Grunderna i stegkodsprogrammering

Grunderna i stegkodsprogrammering Kapitel 1 Grunderna i stegkodsprogrammering Följande bilaga innehåller grunderna i stegkodsprogrammering i den form som används under kursen. Vi kommer att kort diskutera olika datatyper, villkor, operationer

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

Läs mer

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

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 Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

Läs mer

Uppgift 1 (Sorterade heltal som är OK)

Uppgift 1 (Sorterade heltal som är OK) 2013-03-12.kl.14-19 Uppgift 1 (Sorterade heltal som är OK) Ibland råkar man ut för att man måste se till att man inte får dubletter i sina inmatningar. Denna uppgift baserar sig på detta, men dessutom

Läs mer

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB. 30.04.2015

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB. 30.04.2015 Problem: BOW Bowling swedish BOI 0, dag. Tillgängligt minne: 6 MB. 30.04.0 Byteasar tycker om både bowling och statistik. Han har skrivit ner resultatet från några tidigare bowlingspel. Tyvärr är några

Läs mer

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan. Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

Läs mer

Paket (2) nautisk_mil : constant Float := * foot; ångström : constant Float := 10.0E-10; mile : constant Float := 5280.

Paket (2) nautisk_mil : constant Float := * foot; ångström : constant Float := 10.0E-10; mile : constant Float := 5280. Paket (2) with LängdKonstanter; use LängdKonstanter; procedure Main is Ett huvudprogram som infogar detta paket: Paket (1) Ett paket med en praktisk uppsättning konstanter: package LängdKonstanter is --

Läs mer

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

Övningar Dag 2 En första klass

Övningar Dag 2 En första klass Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt

Läs mer

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Introduktion till integrering av Schenkers e-tjänster. Version 2.0 Introduktion till integrering av Schenkers e- Version 2.0 Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen

Läs mer

Hjälpmedel för kompilatorkonstruktion, DVB004

Hjälpmedel för kompilatorkonstruktion, DVB004 Hjälpmedel för kompilatorkonstruktion, DVB004 Version 4.2 021104 Göran Fries 031104 GF Kompilatorn kan lämpligen konstrueras i tre ganska fristående pass (p1,p2,p3). Första passet gör en lexikalisk analys,

Läs mer

Att använda pekare i. C-kod

Att använda pekare i. C-kod Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

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

Introduktion till MATLAB, med utgångspunkt från Ada Introduktion till, med utgångspunkt från Desktop-miljö som innefattar editor, kommandofönster, graffönster och mycket mer. Interpreteras Snabbt att testa kommandon Terminal + emacs + gnatmake Kompileras

Läs mer

Parameteröverföring. Exempel. Exempel. Metodkropp

Parameteröverföring. Exempel. Exempel. Metodkropp Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2005-06-09.kl.08-13 Uppgift 1 ( Betyg 3 uppgift ) Ett plustecken kan se ut på många sätt. En variant är den som ses nedan. Skriv ett program som låter användaren mata in storleken på plusset enligt exemplen

Läs mer

16 Programmering TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5

16 Programmering TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5 16 Programmering Skriva program till TI-86... 214 Köra program... 221 Arbeta med program... 223 Hämta och köra assemblerprogram... 226 Arbeta med strängar... 227 TI -86 M1 M2 M3 M4 M5 F1 F2 F3 F4 F5 214

Läs mer

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010 Föreläsning 6 Kapitel 5 5.1 switch-satsen Vi ser på ett par exempel ur boken: int a; srand(time(0)); a=rand()%6+1; if(a==1) printf("hej Du glade\n"); else if(a==2) printf("god dag\n"); else if(a==3) printf("är

Läs mer

Föreläsning 7 Strängar

Föreläsning 7 Strängar Föreläsning 7 Strängar I C använder vi strängar för att lagra text. Strängar kommer in ganska sent i kursen, det är jag inte så glad över, men det finns också fördelar, vi har grundat oss rejält nu i funktioner,

Läs mer

KPP053, HT2015 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

KPP053, HT2015 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner KPP053, HT2015 MATLAB, Föreläsning 1 Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner MATLAB Väletablerat Mycket omfattande program GNU OCTAVE Öppen

Läs mer

Björn Abelli Programmeringens grunder med exempel i C#

Björn Abelli Programmeringens grunder med exempel i C# Björn Abelli Programmeringens grunder med exempel i C# Övningshäfte (bearbetning pågår) Senaste uppdatering: 2004-12-12 I denna version finns övningar för de mest centrala avsnitten. Häftet kommer att

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1 Innehåll n n n n n Repetition Typomvandlingar

Läs mer

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler 1 Datorn som miniräknare I detta avsnitt tas upp hur man kan skriva program som utför enkla räkneoperationer och skriver resultat på skärmen. Syftet är i huvudsak att se hur flera satser kan bygga upp

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Java Språket Utmatning av Sträng litteraler Variabler

Läs mer

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll, 040110.

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll, 040110. 1(8) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Denna tenta kommer att vara färdigrättad On 14/1-04 och kan då hämtas på mitt

Läs mer

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler 21-1-2 1 Dagens föreläsning Hur fungerar ett Lisp system intern struktur av symbolen, tal, listan pekare - delade strukturer - eq minneshantering fri lista - sophämtning/garbage collection stack Diverse

Läs mer

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print. 1 Inmatning och utskrift Inmatning från tangentbord och utskrift till skärm sker i java med hjälp av objekten System.out och System.in. Dessa båda objekt är exempel på strömmar. En ström är en typ som

Läs mer

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010 Linköpings universitet Institutionen för datavetenskap, IDA Olle Willén mars 2010 Tentamen TDDB53 TENTAMEN TDDB53 (provkod TEN2) den 7 april 2010 kl 8 12 Jour: Emil Nielsen, tel 070 499 89 88 Hjälpmedel:

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2004-03-10.kl.08-13 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som ritar ut en åtthörning på skärmen. Åtthörningen skall dock se ut enligt exemplen nedan och det är så att användaren skall

Läs mer

2016-03-18.kl.14-19. Tentaupplägg

2016-03-18.kl.14-19. Tentaupplägg Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer

Läs mer

Enkla datatyper minne

Enkla datatyper minne Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in

Läs mer

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA20/EDA501 Programmering 2011 10 19, 8.00 13.00 Anvisningar: Denna tentamen består av fem uppgifter. Preliminärt ger uppgifterna

Läs mer

C++ - En introduktion

C++ - En introduktion C++ - En introduktion De imperativa grunderna för dig som kan programmera Eric Elfving Institutionen för datavetenskap 1 / 72 Översikt 1 Grunderna 2 Uttryck och satser 3 Funktioner 4 Poster 1 Grunderna

Läs mer

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1) Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet

Läs mer

INSTRUKTION Specifikation E modul.doc

INSTRUKTION Specifikation E modul.doc 1 (13) Syfte Detta är en instruktion för hur det är tänkt att specifikationen ska fyllas i vid beställning av en E modul. Förhoppningen är dock att specifikationsmallen är självinstruerande så att detta

Läs mer

Att skriva till och läsa från terminalfönstret

Att skriva till och läsa från terminalfönstret Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen

Läs mer

Objektsamlingar i Java

Objektsamlingar i Java 1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och

Läs mer

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm. Algoritmanalys Analys av algoritmer används för att uppskatta effektivitet. Om vi t. ex. har n stycken tal lagrat i en array och vi vill linjärsöka i denna. Det betyder att vi måste leta i arrayen tills

Läs mer

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud. Analog Digitalitet Kontinuerlig Direkt proportionerlig mot källan Ex. sprittermometer Elektrisk signal som representerar ljud Diskret Digital Representation som siffror/symboler Ex. CD-skiva Varje siffra

Läs mer

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter TENTA: TDDD11 & TDDC68 Tillåtna hjälpmedel Det är tillåtet att ha böcker (t.ex. Ada-bok, formelsamlingar, lexikon,...) med sig samt utdelade lathundar (finns på kurshemsidan) för Ada, Unix och Emacs. Utdraget

Läs mer

Patrik Calén 2014-03-24

Patrik Calén 2014-03-24 PVF PLÅT & VENT FORUM AB PVF-Kalkyl Byggplåt Kom igång manual Patrik Calén 2014-03-24 1 Innehå ll Kom igång o Skapa ett projekt 3 Nytt projekt 4 Nytt projekt från mall 5 Ritningsinläsning 6 o Objektträd

Läs mer

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: Onsdagen 15 december 2004, 8:30 till 13:30 Plats: M Ansvarig lärare: Katarina Blom, tel 772 10 60. Läraren besöker tentamen kl

Läs mer

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

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad 1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen

Läs mer

Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad programmering CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar

Läs mer

trafiksimulering Intro OU5 trafiksimulering

trafiksimulering Intro OU5 trafiksimulering Presentation av obligatoriska uppgiften trafiksimulering Ett lite större program med flera klasser Hur man designar ett system Hur man gör simuleringar 1 Valsätr ravägen Korsningen Dag hammarsköldsväg

Läs mer

Programmeringsolympiaden 2012 Kvalificering

Programmeringsolympiaden 2012 Kvalificering Programmeringsolympiaden 2012 Kvalificering TÄVLINGSREGLER Tävlingen äger rum på ett av skolan bestämt datum under sex timmar effektiv tid. Tävlingen består av sex uppgifter som samtliga ska lösas genom

Läs mer

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn. Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E Föreläsning 4: Villkor och rekursion Konverterar mellan de grundläggande typerna: >>> int("") >>> int(.999) >>> float().0

Läs mer

Innehållsförteckning. Exempel. Åtkomst & användarhandledning

Innehållsförteckning. Exempel. Åtkomst & användarhandledning Framsidan Framsidan på din labrapport kan du utforma ganska fritt. Tänk bara på att den ska vara läsbar, och innehålla (minst) följande information: Ditt namn Din e-mail adress här på CS! Kursens namn

Läs mer

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik I 2016-06-11 Skrivtid: 0900 1400 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

UPPGIFT 1 ÖVERSÄTTNING

UPPGIFT 1 ÖVERSÄTTNING UPPGIFT 1 ÖVERSÄTTNING Fikonspråket är ett hemligt språk med gamla anor som till och med har givit upphov till vissa svenska ord, till exempel fimp (fikonspråkets fimpstukon betyder stump). Rövarspråket

Läs mer

E-POST3 Ett lättanvänt e-postprogram med stöd för talsyntes

E-POST3 Ett lättanvänt e-postprogram med stöd för talsyntes E-POST3 Ett lättanvänt e-postprogram med stöd för talsyntes Sida 2 av 2 Innehållsförteckning INNEHÅLLSFÖRTECKNING...3 REKOMMENDERAD UTRUSTNING...5 INSTALLATION...5 ANVÄNDARLÄGE I E-POST3...6 STARTSIDA...7

Läs mer

Anvisningar för ifyllning av Excelark för databaser (sekventiella textfiler)

Anvisningar för ifyllning av Excelark för databaser (sekventiella textfiler) 2009-10-09 (reviderad 2011-01-04, 2011-01-31, 2011-10-03, 2012-02-20, 2012-09-17, 2014-05-09) Riksarkivet Anvisningar för ifyllning av Excelark för databaser (sekventiella textfiler) 1 Anvisningar för

Läs mer

KOMPLETTERANDE HEMTENTAMEN TDDB53

KOMPLETTERANDE HEMTENTAMEN TDDB53 Linköpings universitet Institutionen för datavetenskap, IDA Olle Willén mars 2003 Tentamen TDDB53 KOMPLETTERANDE HEMTENTAMEN TDDB53 Programmering i Ada för MI (MI-ADA) i mars 2003 Tentan lämnas ut 24/3

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program, Draw_Hexagones, som ritar ut en bikupa enligt körexemplen nedan. Exempel 1: Mata in storlek på bikupan: 1 Exempel 3: Mata in storlek på bikupan: 3 \ / \

Läs mer

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2014-10-17 Skrivtid: 0800-1300 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

Rekursion och induktion för algoritmkonstruktion

Rekursion och induktion för algoritmkonstruktion Informationsteknologi Tom Smedsaas, Malin Källén 20 mars 2016 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2010-04-06.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Skriv den funktion, draw_figure, som ritar ut en liksidig figur enligt exemplen nedan med så många hörn som anges som parameter till funktionen (den ritar

Läs mer

KOMPLETTERANDE HEMTENTAMEN TDDB53

KOMPLETTERANDE HEMTENTAMEN TDDB53 Linköpings universitet Institutionen för datavetenskap, IDA Olle Willén februari 2009 Tentamen TDDB53 KOMPLETTERANDE HEMTENTAMEN TDDB53 Programmering i Ada för MI (MI-ADA) i februari 2009 Tentan lämnas

Läs mer

Anvisning för ARVI-systemet för dig som matar in personbedömningar 13.4.2015

Anvisning för ARVI-systemet för dig som matar in personbedömningar 13.4.2015 Anvisning för ARVI-systemet för dig som matar in personbedömningar 13.4.2015 Innehåll Grunder för ARVI-systemet... 1 Att mata in bedömningen... 2 Att skicka bedömningen till TE-byrån... 5 Att avsluta ARVI...

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

En snabb titt på XML LEKTION 6

En snabb titt på XML LEKTION 6 LEKTION 6 En snabb titt på XML Bokstaven x i Ajax står för XML, ett mycket användbart beskrivningsspråk som gör det möjligt för Ajax-tillämpningar att hantera komplex strukturerad information. I den här

Läs mer