C-programmering, föreläsning 2 Jesper Wilhelmsson

Storlek: px
Starta visningen från sidan:

Download "C-programmering, föreläsning 2 Jesper Wilhelmsson"

Transkript

1 C-programmering, föreläsning 2 Jesper Wilhelmsson Funktioner void Globala och lokala variabler, scope static Arrayer Strängar ASCII, ANSI Argument till main Slumptal

2 Funktioner Nu är det dags att börja titta på funktionsanrop i C. Funktioner och funktionsanrop känner ni igen från ML. Principen är den samma i C men alla funktioner i C måste även deklareras med en returtyp, dvs vilken sorts data som funktionen ska ge tillbaka till den som anropar den. Syntaxen för en funktionsdeklaration ser ut så här: Returtyp Namn ( Argument ) int foo(float tal) Lokala variabler int heltal; Funktionskropp heltal = (int) tal; Retursats return heltal; I det här fallet har vi sagt att funktionen foo ska returnera ett heltal (int). Även argumenten till en funktion måste typdeklareras. Ett anrop till foo kan se ut så här: int x = foo(3.14); Vi har redan sett en del funktioner i inlämningsuppgifterna, framför allt den som kallas main. main är en funktion precis som alla andra, den har en returtyp (int) och kan ta argument. Argumenten till main ska se ut på ett visst sätt, vi återkommer till dessa lite senare. main:s returvärde är även det lite speciellt. Tanken är ju att det är ett Unixsystem som ska ta emot returvärdet från programmet. Detta göra att returvärdet måste följa de konventioner som finns i Unix. Ett programs returvärde i Unix representerar en statusflagga som talar om ifall programmet lyckades med sin uppgift eller ej. Returtypen är alltid int. Om ett program returnerar 0 betyder det att allt gick bra, ett returvärde skilt från 0 betyder att något gick fel. I Unix är detta allt returvärdet säger. Andra operativsystem har lite mer graderade felskalor, till exempel i AmigaOS kan felkoderna användas för att styra beteendet i script. 0: Allt är bra. 5: Mindre fel uppstod, inget som bör påverka scriptets funktion. 10: Fel uppstod. Programmets utdata (som skrivits till stdout) kan vara felaktig. 20: Allvarligt fel, scriptet bör avbrytas. När man deklarerar nya funktioner bör man alltid placera dem ovanför den anropande funktionen i källkoden. Detta för att C-kompilatorn alltid läser källkoden från första till sista raden och endast de funktioner och variabler som deklarerats högre upp i filen får användas. Av denna anledning hamnar normalt main-funktionen sist i en källkodsfil.

3 Funktioner och procedurer I en del programmeringsspråk skiljer man på funktioner och procedurer. Funktioner har alltid ett returvärde medan procedurer aldrig returnerar något. I C finns endast funktioner, men man kan ge en funktion returtypen void. Detta betyder att funktionen inte returnerar något värde. (void = tomrum) Globala och lokala variabler, scope - static Inuti en funktion kan man deklarera variabler. Dessa variabler är endast tillgängliga lokalt i den aktuella funktionen och vi kallar dem därför lokala variabler. Även argumenten till en funktion kan räknas till de lokala variablerna. En variabels livslängd i ett program brukar kallas scope. I C omges alltid ett scope med.... Funktioner i C skrivs alltid med... och har därför alltid ett eget scope, men scope kan deklareras var som helst i koden i ett C-program. Till exempel såg vi redan förra föreläsningen att... kan användas i loopar och villkorliga satser. Det går även att påbörja ett nytt scope mitt i koden, var som helst i koden vilket kan vara användbart till exempel för att lokaldeklarera en indexvariabel vid en for-loop. Man ska alltid sträva efter att ha så kort livslängd på sina variabler som möjligt, det underlättar för gcc:s optimering. Man kan även deklarera variabler utanför funktions-scope:et. Dessa betraktas då som levande i hela programmet och kallas normalt för globala variabler. Globala variabler deklareras när programmet startar och minns sina värden genom hela programkörningen. Globala variabler är lite farliga att använda i större program och man bör tänka efter noga innan man skapar dessa. Anledningen är att globala variabler kan användas även utanför den källkodsfil man deklarerar dem i. Därmed öppnas möjligheterna för namnkonflikter med andra filer i applikationen, oönskad användning av variabeln och eventuell felaktig uppdatering av variabeln i kod som inte borde känna till, eller åtminstone inte ändra variabeln. Nyckelordet static kan användas för att minska den typen av problem. Betrakta kodexemplet nedan.

4 #include<stdio.h> int a = 0; static int b = 0; void foo(void) int c = 0; static int d = 0; printf( global: %d static global: %d lokal: %d static lokal: %d\n", a, b, c, d); a++; b++; c++; d++; int main(void) int i; for (i = 0; i < 10; i++) foo(); return 0; static kan användas både för lokala och globala variabler. Betydelsen är dock ganska olika. Global statisk variabel När en global variabel deklareras statisk begränsas dess åtkomst till den aktuella källkodsfilen. Detta är alltså ett sätt att skydda variabler som måste vara globala i en fil från att kod i andra filer krockar med dem. (Kan jämföras med privata instansvariabler i Java). I kodexemplet ovan har vi två globala variabler, a och b. a är tillgänglig utifrån och dess värde kan alltså ändras utanför vår kontroll, b är statisk och därmed endast tillgänglig i vår egen kod. Lokal statisk variabel I exemplet har vi även två lokala variabler i funktionen foo(). Den ena av dessa är statisk (d). Båda kommer initialt att ha värdet 0. foo() anropas flera gånger och vid varje anrop ökas värdet på alla variabler med ett. Skillnaden mellan den statiska och den icke-statiska variabeln är att den statiska

5 kommer att minnas sitt värde mellan funktionsanropen. Den statiska variabeln kommer alltså endast att deklareras en gång, första gången foo() anropas. Därefter kommer raden att ignoreras - trots att där finns en tilldelning som initierar d till 0. Den icke-statiska variabeln (c) kommer att deklareras och initieras varje gång foo() anropas. Vad är då skillnaden mellan en statisk lokal variabel och en global? Den lokala variabeln är endast tillgänglig inuti funktionen där den deklareras. Globala variabler är tillgängliga i hela programmet (modulo static...). Så hur ser det då ut när vi kör exemplet ovan? Jo, så här: global: 0 static global: 0 lokal: 0 static lokal: 0 global: 1 static global: 1 lokal: 0 static lokal: 1 global: 2 static global: 2 lokal: 0 static lokal: 2 global: 3 static global: 3 lokal: 0 static lokal: 3 global: 4 static global: 4 lokal: 0 static lokal: 4 global: 5 static global: 5 lokal: 0 static lokal: 5 global: 6 static global: 6 lokal: 0 static lokal: 6 global: 7 static global: 7 lokal: 0 static lokal: 7 global: 8 static global: 8 lokal: 0 static lokal: 8 global: 9 static global: 9 lokal: 0 static lokal: 9 Att initiera globala och statiska variabler till noll är egentligen onödigt eftersom alla dessa variabler initieras till noll automatiskt, men bör ändå göras för läsbarhetens skull. Arrayer Ni är vana från ML att använda listor till allt. I C är det lite krångligt att jobba med listor (vi ska göra det senare i denna kurs) och i de flesta enklare fallen vill man i C inte använda rekursiva datatyper (som en lista är). I stället använder man arrayer som lagringsplats för flera saker av samma slag. En array-deklaration kan se ut så här: int siffror[10]; Arrayen vi skapar här heter siffror och har tio platser för att lagra heltal. Det finns flera stora skillnader mellan listor och arrayer. Bland annat typen. En array är alltid typad, och den kan bara innehålla värden av den typ man angett. I arrayen ovan kan vi alltså bara lagra saker med typen int. En annan viktig skillnad mellan arrayer och listor är storleken. En array har alltid en fix storlek. Det går inte att ändra storleken på en array och man kan inte trycka in nya fält mellan två existerande fält i arrayen.

6 Man kan initiera en array direkt vid deklarationen genom att skriva startvärdena inom,,,...: int siffror[] = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ; I det här fallet angav vi ingen storlek på arrayen vilket innebär att mängden initialvärden kommer att avgöra storleken. float siffror[10] = 3.45, 2.657, 5.54, ; Här anger vi en storlek och initierar de första fyra värdena. Övriga värden i arrayen kommer att vara oinitierade. Oinitierad betyder att det kan finnas vad som helst där, C nollställer inte lokala variabler (om de inte är statiska). I PM1/PK1 (Inlämningsuppgift 6, problem 2) skrev ni en funktion, nth, för att hämta det n:te elementet i en lista. Hur gör man motsvarande sak med en array? En array kan alltid indexeras direkt och man behöver aldrig räkna sig fram till någon speciell position. För att komma åt position n skriver man siffror[n]. Arrayer i C är noll-indexerade, det betyder att den första positionen i arrayen har index 0. Funktionen nth blir därmed trivial att skriva i C. Om det är tecken n eller tecken n+1 som ska returneras är en religiös fråga. int nth(int n, int arrayen[]) return arrayen[n]; Ett annat problem i samma inlämningsuppgift var att skriva largest som returnerade det största elementet i en lista. Precis som i ML behövs det i C en loop för att göra detta. Vi använder som tidigare sagts inte rekursion utan väljer i det här fallet en for-loop. Anledningen till att vi väljer just en for-loop är en av de viktiga skillnaderna mellan listor och arrayer, nämligen storleken. Med en lista kan man snurra i loopen tills dess att man kommer fram till slutet som indikeras med en tom lista eller en NULL-pekare av något slag. Detta låter som ett jobb för en while, men i en array finns inget som talar om att ett element är det sista i arrayen. Istället har arrayen en fast storlek som vi måste veta. När vi vet hur många varv vi vill snurra i loopen så är det for vi vill ha! På en lokalt definierad array kan vi använda sizeof() för att ta reda på storleken. sizeof() talar om hur mycket plats arrayen tar i minnet, dvs hur många bytes den tar upp. Såvida det inte är en array av char så kommer antalet bytes inte att vara det samma som arrayens storlek. För att få reda på hur många positioner arrayen har delar vi därför minnesstorleken för hela arrayen med minnesstorleken för ett fält i arrayen.

7 int arr[10]; storlek = sizeof(arr) / sizeof(int); Att ta reda på storleken av en array som vi fått arrayen skickad till oss via funktionsargumenten är inte helt trivialt. Argumentet som tar emot arrayen är nämligen alltid en pekare och försöker vi ta sizeof() på den får vi bara storleken av pekaren. I de fall där man skickar med arrayer till funktioner som är beroende av att veta storleken på dem bör man därför även skicka med storleken via argumenten. int largest(int arr[], int size) int i; int max = arr[0]; for (i = 1; i < size; i++) if (arr[i] > max) max = arr[i]; return max; Strängar Strängar i C är inget annat än arrayer av tecken. char str[42]; - En sträng med plats för 42 tecken. Allt som sagts tidigare om arrayer gäller även strängar med en liten skillnad: Strängar i C är NULL-terminerade. Detta betyder att det sista tecknet i arrayen är '\0' (NULL, tecknet med teckenkod noll) och att man alltså kan se när en sträng är slut utan att veta dess storlek. Notationen som vi använt tidigare för arrayer blir i strängar ett sätt att komma åt enskilda tecken i strängen. str[0] ger det första tecknet i strängen och str[5] det sjätte. Precis som alla andra datatyper kan strängar initieras direkt vid deklaration: char str[] = Hej hopp! ; Standardbiblioteket string innehåller en hel del funktioner för att arbeta med strängar, titta igenom detta så att ni har lite koll på vad som går att göra.

8 ASCII I ML finns en biblioteksfunktion Char.toUpper: char > char som översätter en liten bokstav till motsvarande stor (och lämnar andra tecken oförändrade). Den fungerar dock bara för små engelska bokstäver (a-z). Detta känner ni igen från en uppgift i PM1/PK1. Hur skulle det se ut om vi ville skriva en sådan funktion i C? Man kan naturligtvis lösa problemet med en stor switch. Vi fick ett 'a', då returnerar vi ett 'A', vi fick ett 'b', då returnerar vi ett 'B'... Men det är ju inte vidare snyggt. För att kunna lösa problemet på ett bättre sätt måste vi förstå vad tecken är och hur datorn ser på dem. I datorn är allt bara tal. C som ligger mycket nära datorn är av samma åsikt, allt är bara tal. Vi kan prata om tecken och pekare och annat, men egentligen är det bara tal. Varje tecken vi kan skriva in i datorn representeras av ett tal. Mappningen mellan tecken och tal är standardiserad och återfinns i den så kallade ASCII-tabellen (se länk från kurshemsidan). Varje tal från 0 till 255 mappas till ett tecken. De första 32 är olika typer av styrkoder som vi inte kommer att beröra i denna kurs. Bortsett från NULL då, första tecknet i listan som vi ju redan stött på. Notera att alla bokstäver ligger i ordning bortsett från de tre sista i det svenska alfabetet, å, ä, ö. Dessa har lagts till i ett senare skede och hamnade då i den andra halvan av tabellen. Det kan även vara värt att notera att alla siffror ligger i nummerordning. Så alla tecken är tal, och alla tal är för en dator bara en hög med ettor och nollor. För att få full förståelse för tecknens relationer ser vi den binära kodningen av varje tecken i tabellen. Observera skillnaden mellan stora och små bokstäver. Endast en bit skiljer. Om vi ser till att den biten inte är ett så kommer vi att ha en stor bokstav i stället för en liten. Biten i fråga har värdet 32 och vi kan därför släcka den biten genom att utföra en logisk OCH med 2- komplementet till 32, dvs det tal där alla andra bitar är ett och biten för 32 är noll. 'a' = = ~32 = 'a' & ~32 = = 'A'

9 Nu skriver vi detta i C-kod: #include <stdio.h> void toupper(char str[]) int i; for (i = 0; str[i]!= '\0'; i++) str[i] &= ~32; int main(void) char text[] = "hej hopp ökenråtta!"; toupper(text); printf("%s\n",text); return 0; Kommer programmet att fungera? Testkörning: bash$ toupper HEJ bash$ Det såg inte ut som det skulle. Vad händer med mellanslaget? Titta i ASCII-tabellen efter tecknet för mellanslag (space). Kan man verkligen släcka bit 32 i alla tecken hur som helst? Nej, det går förstås inte. Mellanslaget har teckenkod 32 vilket betyder att när vi släcker bit 32 blir det bara noll kvar, noll som terminerar strängen. För att ordna en funktion som bara konverterar bokstäver måste vi lägga in ett villkor som kontrollerar att tecknet vi vill konvertera faktiskt ligger i rätt intervall (mellan 'a' och 'z'). Vi vill förstås också få med de svenska tecknen som vi hittar i den senare delen av ASCII-tabellen. Dessa ligger lämpligt nog på samma sätt som den första delen av alfabetet och även där kan vi förstora bokstäver genom att släcka bit 32.

10 #include <stdio.h> void toupper(char str[]) int i; for (i = 0; str[i]!= '\0'; i++) if ((str[i] >= 'a' && str[i] <= 'z') (str[i] >= 'à' && str[i] <= 'ÿ')) str[i] &= ~32; int main(void) char text[] = "hej hopp ökenråtta!"; toupper(text); printf("%s\n",text); return 0; ANSI ANSI American National Standards Institute satte för många år sedan ihop en lista över koder för att styra terminaler. Tanken var att en server skulle kunna styra terminalen hos de klienter som kopplade upp sig mot den. Detta sätt att styra fjärr-terminaler blev mycket vanligt i bland annat BBS:er eftersom det till exempel möjliggjorde färggrafik i textläge. Varje kod är en sekvens av tecken som följer ett speciellt mönster. Alla koder inleds med teckenkoden för escape och koderna kallas därför ibland för escape-koder eller escape-sekvenser. Koderna kan användas till det mesta som behövs för att ha kontroll över en terminal. Man kan flytta markören, ändra färger, rulla texten upp eller ner, rensa skärmen och mycket mycket mer. Ni kommer att stöta på ANSI-koderna i några av inlämningsuppgifterna i denna kurs. Även om koderna på sätt och vis har spelat ut sin roll nu när Internet tagit över efter BBS:erna så tycker jag att det tillhör allmänbildning för en programmerare att veta hur dessa koder används. En förteckning över de vanligaste koderna finns på kurshemsidan.

11 Argument till main Vi har nu sett hur olika funktioner kan ta argument av olika slag. Som vi noterat tidigare är main en funktion som alla andra och även den kan ta argument. Argumenttyp och ordning bestäms av anropskonventionerna i Unix eftersom C har sina rötter i den världen. Argumenten skickas med från shellet där programmet startas och består av en array av strängar. int main(int argc, char* argv[]) Det första argumentet, argc, är ett heltal och talar om hur många argument som skickades med från shellet. Det andra argumentet till main, argv, är arrayen av alla text-strängar som skickades med när programmet startades. bash$ argtest hello world 42 Anropet ovan har tre argument, hello, world och 42. ( argtest är namnet på programmet.) Inne i C kommer vi att få tillgång till både programnamn och argument i argv: args = 3 argv[0] = argtest argv[1] = hello argv[2] = world argv[3] = 42 Notera speciellt att även tal som skickas in som argument kommer att komma fram som strängar. För att konvertera tillbaka dem till tal finns en användbar funktion i stdlib, int atoi(char*). Slumptal Inte för att det är specifikt för C, utan mer för att det ingår i inlämningsuppgifterna. Slumptal behövs i många sammanhang och här följer en beskrivning på hur man kommer åt dem i C. Funktionen för att hämta slumptal finns i stdlib och heter rand(). rand() returnerar ett heltal mellan (och inklusive) 0 och RAND_MAX. RAND_MAX är ett hyfsat stort tal, C definierar det till minst (maxvärdet för ett 16-bitars signerat tal). Normalt när man vill ha slumptal har man dock sin egen maxgräns och för att anpassa talet vi får av rand() till denna vill vi dela resultatet med RAND_MAX. På det sättet får vi ett slumptal mellan 0 och 1 som vi sedan kan multiplicera med den övre gränsen. Eftersom rand() inkluderar båda gränserna (0 och

12 RAND_MAX) vill vi egentligen dela med ett tal som är lite större än RAND_MAX, detta för att garantera att vårt nya slumptal alltid är mindre än 1. Nästa detalj vi måste tänka på är att om vi delar två heltal så kommer C att använda heltalsdivision, dvs resultatet kommer att trunkeras till ett heltal som i det här fallet alltid blir 0. För att tvinga fram flyttalsdivision måste minst en av täljare och nämnare vara flyttal. När allt är klart gör vi om resultatet till en int igen. slump = (int)(((rand()/((double)rand_max) + 1)) * max); En annan variant av slumptalsberäkningen har både en max- och en mingräns: slump = (int)(((rand()/((double)rand_max) + 1)) * (max min)) + min; För att skapa slumptal måste C initiera sin slumptalsmotor. Detta görs med funktionen srand(int). Vill man ha samma slumptalsföljd varje gång man kör sitt program initierar man med samma tal varje gång. Oftast vill man dock ha olika slumptalsföljder från körning till körning. För att åstadkomma det hämtar vi ett slumpfrö från systemklockan: srand(time(null));

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

C-programmering, föreläsning 1 Jesper Wilhelmsson

C-programmering, föreläsning 1 Jesper Wilhelmsson C-programmering, föreläsning 1 Jesper Wilhelmsson Introduktion till C Variabler, Typer, Konstanter Operatorer Villkorliga satser if-else, switch Loopar for, while, do... while Inmatning och utmatning stdin

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

Läs mer

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då Agenda Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer Övningar nu och då 1 Motivering I de flesta problem ingår att hantera multipla data I de

Läs mer

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om

Läs mer

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar Dynamiskt minne Agenda Vad är dynamiskt minne Motivering Hur gör man i C Övningar Minne Datorns primärminne används till olika ändamål De flesta system partitionerar minnet efter användningen: Programkoden

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 6: Filhantering Henrik Björklund Umeå universitet 13 oktober 2009 Björklund (UmU) Programmeringsteknik 13 oktober 2009 1 / 22 Textfiler Filer är sekvenser

Läs mer

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

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

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

*Pekarvärden *Pekarvariabler & *

*Pekarvärden *Pekarvariabler & * *Pekarvärden *Pekarvariabler & * Motivering Pekare är ett fundamentalt koncept i C (och C++) Multipla returvärden från funktioner. Arrayer hanteras via pekare Dynamiskt minne (kommer i slutet av kursen)

Läs mer

Planering Programmering grundkurs HI1024 HT 2014

Planering Programmering grundkurs HI1024 HT 2014 Planering Programmering grundkurs HI1024 HT 2014 Föreläsning V36 Föreläsning 1 Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande- Interpreterande Programmeringsmiljö Hello World! Att

Läs mer

Övning från förra gången: readword

Övning från förra gången: readword (9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver

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

En kurs i C-programmering

En kurs i C-programmering En kurs i C-programmering Föreläsningsanteckningar från AD1/PK2 VT06 Jesper Wilhelmsson March 11, 2006 2 Innehåll 1 Introduktion till C 5 1.1 Bakgrund......................................... 5 1.2 Variabler,

Läs mer

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014 Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public

Läs mer

Introduktion C-programmering

Introduktion C-programmering Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder

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

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

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

Repetition C-programmering

Repetition C-programmering Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition

Läs mer

Planering Programmering grundkurs HI1024 HT 2015 - data

Planering Programmering grundkurs HI1024 HT 2015 - data Planering Programmering grundkurs HI1024 HT 2015 - data Föreläsning V36 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning

Läs mer

C++ Slumptalsfunktioner + switch-satsen

C++ Slumptalsfunktioner + switch-satsen C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.

Läs mer

Föreläsning 6: Metoder och fält (arrays)

Föreläsning 6: Metoder och fält (arrays) TDA 545: Objektorienterad programmering Föreläsning 6: Metoder och fält (arrays) Magnus Myréen Chalmers, läsperiod 1, 2015-2016 I (föregående och) denna föreläsning Läsanvisning: kap 2 & 13 meddelanden

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

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

C++ Lektion Tecken och teckenfält

C++ Lektion Tecken och teckenfält C++ Lektion Tecken och teckenfält Teori Hittills har alla variabler du jobbat med varit olika typer av tal, men du kan också deklarera variabler som håller bokstavstecken. Denna variabeltyp kallas för

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 12 I torsdags: Klassen TelefonKostnad Exemplifierar objektorienterad design, metoder, konstruktorer static Standardklassen Math Matematiska

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Underprogram - Funktioner Eric Elfving Institutionen för datavetenskap 18 september 2014 Översikt 2/22 Återblick till satsblocken Funktioner - Namngivna satsblock

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

GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner

GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner GPT föreläsning 8 Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner Denna gång Reflektioner kring OU1 Funktioner Reflektioner

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

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT TIDAA Planering Programmering grundkurs HI1024 HT 2016 - TIDAA Föreläsning V35 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning

Läs mer

En kort text om programmering i C.

En kort text om programmering i C. En kort text om programmering i C C skapades 1972 av Brian Ritchie och Dennis Kerighan på Bell Labs i USA Det blev det språk som är mest använt genom tiderna Det finns många olika språk Pascal, FORTH,

Läs mer

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded

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

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

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner

Läs mer

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

Läs mer

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: Föreläsning 1 OH: Övergripande information Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: * maskinspråk = ettor och nollor, kan bara en maskin förstå. * programmeringsspråk

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel 732G11 Linköpings universitet 2011-02-15 1 2 3 4 Extrapass Extrapass håller på att bokas. Blir 3-4 st. och öppet för alla. Mer info på kursmailen när bokningen är klar. i Java En funktion i Java... public

Läs mer

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe Kodningskonventioner Viktor Kämpe Varför kodningskonventioner? Förståelse för Skillnaden mellan lokala/globala variabler. Funktionsargument. Returvärde. Möjliggör Mix av assembler och C. Kodningskonventioner/VK

Läs mer

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf Föreläsning1 Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf scanf Ni behöver läsa boken både för att

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

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

Föreläsning 10. Pekare (Pointers)

Föreläsning 10. Pekare (Pointers) Föreläsning 10 Pekare (Pointers) Dagens kluringar int a=5; int f(int b) a--; b++; return b; int main() int a=3; printf("%d,",f(a)); printf("%d",a); return 0; int f(int a) if(a==1) return a; else return

Läs mer

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er Labora&on 2 Funk&oner, if och loop övningar/uppgi:er 1M322 Webbteknik 2, 7,5hp Medieteknik 2017 Rune Körnefors rune.kornefors@lnu.se 1. Ladda ner arbetsdokument Till övningarna i denna labora&on finns

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (

Läs mer

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Lektion 4, del 1, kapitel 10 Funktioner i JavaScript Inlärningsmål Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Introduktion

Läs mer

Programmeringsteknik I

Programmeringsteknik I Programmeringsteknik I Föreläsning 2: Grundläggande Java Johan Öfverstedt Java Grundläggande begrepp Datatyper Selektion if Räckvidd (scope) Iteration while Klasser Objekt Metoder Metodhuvudet Kodstandarden

Läs mer

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C 1 of 7 Örebro universitet Institutionen för teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen fredag 15

Läs mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik för ingenjörer, VT06 2 Repetition Repetition -

Läs mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i

Läs mer

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Funktioner. Linda Mannila

Funktioner. Linda Mannila Funktioner Linda Mannila 13.11.2007 Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering Intro till funktioner och moduler Villkorssatsen

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

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

Datorteknik 2 (AVR 2)

Datorteknik 2 (AVR 2) Namn: Laborationen godkänd: Digitala system 15 hp Datorteknik 2 (AVR 2) LTH Ingenjörshögskolan vid Campus Helsingborg Enkel in- och utmatning. Drivrutiner. Bithantering. I denna laboration ska vi förbättra

Läs mer

Indexerade variabler

Indexerade variabler Indexerade variabler Vad har vi lärt oss så här långt Den första sammansatta (compound) datatypen: matris. Att arbeta med 1-dimensionella matriser. Att arbeta med flerdimensionella matriser. Matriser med

Läs mer

Beräkningsvetenskap föreläsning 2

Beräkningsvetenskap föreläsning 2 Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa

Läs mer

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad. 5(16) Tentamen på kurserna Programmeringsteknik med C och Matlab Programmering i C Tid: 2/11-11, kl. 9-13 Lärare: Jonny Pettersson Totalt: 60 poäng Betyg 3: 30 poäng Betyg 4: 39 poäng Betyg 5: 48 poäng

Läs mer

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen Tentamen för teknisk kemi, 10p, moment 1 29 november 1999 Skrivtid 9-15 Hjälpmedel: av följande böcker. - U. Bilting och J. Skansholm: Vägen till C - A. Kelley & I. Pohl: A Book on C Maxpoäng: Gräns för

Läs mer

Det finns många flaggor till g++,

Det finns många flaggor till g++, C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

Läs mer

Loopar och datatyper. Föreläsning 3

Loopar och datatyper. Föreläsning 3 Loopar och datatyper Föreläsning 3 Dagens kluringar int x; printf("ange x:"); scanf("%d",&x); if(/*fyll i kod*/) printf("du angav x mellan 7 och 14"); int i=0; if(i++) i++; printf("%d",i++); //vad skrivs

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

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011, Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman

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

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt

Läs mer

Visual Basic, en snabbgenomgång

Visual Basic, en snabbgenomgång Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika

Läs mer

Funktioner och programstruktur. Föreläsning 5

Funktioner och programstruktur. Föreläsning 5 Funktioner och programstruktur Föreläsning 5 Dagens kluring int v[10]=1,2,3,4,5,6,7,8,9,10; int i; for(i=0;i

Läs mer

Föreläsning 11. Strängar

Föreläsning 11. Strängar Föreläsning 11 Strängar Dagens kluring void findmax(int v[], int length, int *pmax) int i;??=v[0]; for(i=1;i< length;i++) if(v[i]>??)??=v[i]; int main() int a[]=1,2,3,4,2; int max; hittamax(a,5,???); printf(

Läs mer

Indicerade variabler

Indicerade variabler Indicerade variabler ARRAYER kan vara VEKTORARRAYER eller MATRISARRAYER Deklaration och användning av array (=vektorarray) Array och for-loop Slumptal Arrayer i två dimensioner (= matrisarray, matris)

Läs mer

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C 1 of 8 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen

Läs mer

C-programmering AD1, PK2 Inlämningsuppgifter VT05 Senast uppdaterad: 23/2, 21:15

C-programmering AD1, PK2 Inlämningsuppgifter VT05 Senast uppdaterad: 23/2, 21:15 C-programmering AD1, PK2 Inlämningsuppgifter VT05 Senast uppdaterad: 23/2, 21:15 Samtliga uppgifter skall lösas i grupper om exakt två personer. Gör uppgifterna i tur och ordning. De bygger på varandra

Läs mer

Poster ( structar ) Postdeklarationer

Poster ( structar ) Postdeklarationer Poster ( structar ) Exempel på en postdeklaration: struct person { int id; char namn[20]; int vikt, skonr; p1, p2; Detta definierar två variabler p1 och p2 som poster med termerna id, namn, vikt och skonr.

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

struct egendefinierad typ struct LECTURE_TYPE { char teacher[99]; float lengthinminutes; char type; /* L = lecture, E = exercise */ };

struct egendefinierad typ struct LECTURE_TYPE { char teacher[99]; float lengthinminutes; char type; /* L = lecture, E = exercise */ }; struct egendefinierad typ struct LECTURE_TYPE { char teacher[99]; float lengthinminutes; char type; /* L = lecture, E = exercise */ Vad är problemet? Att kunna lagra data som avser flera olika egenskaper

Läs mer

TUTORIAL: KLASSER & OBJEKT

TUTORIAL: KLASSER & OBJEKT TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan

Läs mer

Pekare och arrayer. Indexering och avreferering

Pekare och arrayer. Indexering och avreferering Pekare och arrayer En array är ett sammanhängande minnesområde rymmande ett antal element av en viss typ. Arraynamnet kan ses som adressen till arrayens början, dvs. dess första element. En pekare är en

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via

Läs mer

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera Föreläsning 2 Variabler, tilldelning och kodblock if-satsen Logiska operatorer Andra operatorer Att programmera Variabler Det är i variabler som all data (information) lagras. Genom att ändra värde på

Läs mer

Loopar och datatyper. Föreläsning 3

Loopar och datatyper. Föreläsning 3 Loopar och datatyper Föreläsning 3 Dagens kluringar int x; printf("ange x:"); scanf("%d",&x); if(/*fyll i kod*/) printf("du angav x mellan 7 och 14"); int i=0; if(i++) i++; printf("%d",i++); //vad skrivs

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

Tecken & Strängar. Kapitel 7

Tecken & Strängar. Kapitel 7 Tecken & Strängar Kapitel 7 Datatypen char Alla tecken i teckenuppsättningen Synliga och andra ASCII American Standard Code for Information Interchange Numera 256 tecken (8 bitar (2 8 ) numreras 0..255)

Läs mer

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering 1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data

Läs mer

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305 Klass Object, instans av klass public/private Klassvariabler och klassmetoder 1 Array och ArrayList Arrayer och ArrayList är till för att innehålla

Läs mer

2 Pekare och dynamiska variabler.

2 Pekare och dynamiska variabler. 2 Pekare och dynamiska variabler. När man definierar en variabel reserverar man samtidigt minne för variabelns värde. Detta minnesutrymme kommer man sedan åt med hjälp av variabelns namn. Definierar man

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

Föreläsning 6 pekare och pekare tillsammans med arrayer

Föreläsning 6 pekare och pekare tillsammans med arrayer Föreläsning 6 pekare och pekare tillsammans med arrayer Vi ska nu undersöka vad pekare egentligen är och hur de relaterar till arrayer. Det är ett centralt tema i C-programmering. Vi följer boken och går

Läs mer

Funktioner och programstruktur. Föreläsning 5

Funktioner och programstruktur. Föreläsning 5 Funktioner och programstruktur Föreläsning 5 Dagens kluring int v[10]=1,2,3,4,5,6,7,8,9,10; int i; for(i=0;i

Läs mer

#include <stdio.h> #include <string.h>

#include <stdio.h> #include <string.h> #include #include void fun(char s[]) int i=-1; while(s[++i]!=0) if('a'

Läs mer

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Introduktion till programmering SMD180. Föreläsning 9: Tupler Introduktion till programmering Föreläsning 9: Tupler 1 1 Sammansatta datatyper Strängar Sekvenser av tecken Icke muterbara Syntax: "abcde" Listor Sekvenser av vad som helst Muterbara Syntax: [1, 2, 3]

Läs mer

Instuderingsfrågor, del D

Instuderingsfrågor, del D Uppgift 1. Instuderingsfrågor, del D Objektorienterad programmering, Z1 I vilka av nedanstående problem behöver man använda sig av fält för att få en elegant lösning? I vilka problem är det är det onödigt/olämpligt

Läs mer

Arrays (indicerade variabler) Föreläsning 6

Arrays (indicerade variabler) Föreläsning 6 Arrays (indicerade variabler) Föreläsning 6 Dagens kluring int i; scanf("%d", &i); switch(i) case 1: printf("1"); case 2: printf("2"); case 3: printf("3"); break; case 4: printf("4"); break; case 5: printf("5");

Läs mer

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till:

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till: Länkade listor i C Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till: Dynamiskt allokerad array Arrayer allokerade på stacken Kan alltså användas till att

Läs mer

Laboration 1 - Grunderna för OOP i Java

Laboration 1 - Grunderna för OOP i Java Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben

Läs mer