William Sandqvist Funktion som byter plats på två variabler /* swap1.c first attempt at a swaping function */ /* from Stephen Prata, C Primer.

Slides:



Advertisements
Liknande presentationer
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Advertisements

Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
William Sandqvist Booles Algebra Genom att representera logiska uttryck på matematisk form, där sammanfognings-orden OR och AND motsvarade.
Funktioner och programorganisation
Föreläsning 3 Lista Array/länkad lista Lista implementerad som länkad lista Inlämningsuppgifter.
Minnesteknologier Teknologi Accesstid Kostnad $/GB SRAM 1 ns 1000 DRAM
Komplexa tal inför Laborationerna
#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'
PICKit2 programmer-to-go
William Sandqvist Programmet onoffred.c.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Arrays Indicerade variabler.
Föreläsning 2 Datastrukturer Abstrakta datastrukturer Stack
C-programmering ID120V William Sandqvist Länkad lista
Programmeringsteknik för K och Media
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
i olika programmeringsspråk
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Variabler: Datatyp - grundläggande : int, double, char, boolean eller
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Pointers. 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; }
Föreläsning 5 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
William Sandqvist C:s minnesmodell.
Anders Sjögren Minnen, variabler, att lagra i primärminnet forts.
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Modulär programutveckling
Anders Sjögren Pekare. Anders Sjögren Skapa ett program som byter plats på två heltal Pekare.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
Anders Sjögren Bitfält exempel Nu kommer ett förbättrat program. Det är funktions- uppdelat och kan lägga till poster som lagras på fil.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
William Sandqvist Sluten strömkrets? Man har två glödlampor för 220 V och två strömbrytare. Nu vill man ansluta de båda lamporna till 220.
Anders Sjögren Filer - långtidslagring. Anders Sjögren Filtyper i DOS talet ett ( intx=1; ) lagrat i en –textfil, (en sekvens av tecken ( bytes )) enligt.
Programmeringsteknik Föreläsning 8 Skolan för Datavetenskap och kommunikation.
F6 - Pekare 1 Programmeringsteknik, 4p vt-00 Pekare & adresser Alla variabler är knutna till en viss adress i minnet int i; adressen till denna fås med.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
William Sandqvist IS1500 Datorteknik William Sandqvist
Anders Sjögren Deklarationsområde och funktioner.
TILLÄMPAD DATALOGI (TILDA) Övning 2
TILLÄMPAD DATALOGI (TILDA) Övning 2
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
William Sandqvist Är Du bra på for-loopar? Ge triangelns höjd: 12 1> * > *** > *****
William Sandqvist Distributed Computing Client – Server. En skrivarserver kan vara ett exempel på en Client-Server arkitektur. S Burd, Systems.
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
William Sandqvist PWM Sinusoidal Hur tillverkar man en sinusformad spänning? En PWM-signal kan ge en sinusapproximation. Efter filtrering.
Kronljusströmställaren 0, 1, 2, 3
William Sandqvist Datorteknik övning 1 Introduktion till assemblerprogrammering av Nios II William Sandqvist
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
Datorteknik övning 4 Maskinnära programmering med C inför hemlab 1
Anders Sjögren Enkelt program med funktion /* two_func.c - a program that uses two functions in one file */ /* from Stephen Prata C Primer Plus ISBN
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
William Sandqvist Datorteknik övning 4 Maskinnära programmering med C inför hemlab 1.
William Sandqvist Datorteknik övning 3 stackhantering subrutin som anropar subrutin programutveckling.
Språket för inbyggda system. C:s verktygslåda är välfylld! William Sandqvist
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
Anders Sjögren Funktioner något in och något annat ut.
Presentationens avskrift:

William Sandqvist Funktion som byter plats på två variabler /* swap1.c first attempt at a swaping function */ /* from Stephen Prata, C Primer Plus ISBN */ #include void interchange(int u, int v); int main(void) { int x = 5, y = 10; printf("Orginally x = %d and y = %d\n", x, y); interchange(x, y); printf("Now x = %d and y = %d\n", x, y); system("PAUSE"); return 0; } void interchange(int u, int v) { int temp; temp = u; u = v; v = temp; }

William Sandqvist Funktionen fungerar ej Funktionen void interchange( int u, int v) får ju bara kopior av x och y och kan därför inte påverka orginalen talen x och y i main. För att byta plats på två tal krävs två returvärden, och C- funktioner har som mest ett returvärde.

William Sandqvist pekare * adress & och avreferering * int b; Deklaration av heltalsvariabeln b. Plats reserveras. b = 18; Definition av variabeln b. Nu innehåller den talet 18. &b Adressoperatorn. Adressen till variabeln b. int * c; Deklaration av int-pekarvariabeln c. c = &b; Nu pekar c på b. *c Avrefereringsoperatorn. Det som c pekar på. *c = 19; Talet 19 lagras på den plats som c pekar ut. Nu innehåller b = ( ) 18 ( ) 19 ( ) Mer om detta senare i kursen, men det behövs redan nu …

William Sandqvist Funktion som byter plats på två variabler /* swap3.c pointers to make a swapping function work */ /* from Stephen Prata, C Primer Plus ISBN */ #include void interchange(int *, int *); int main(void) { int x = 5, y = 10; printf("Orginally x = %d and y = %d\n", x, y); interchange(&x, &y); printf("Now x = %d and y = %d\n", x, y); system("PAUSE"); return 0; } void interchange(int * u, int * v) { int temp; temp = *u; *u =*v; *v = temp; }

William Sandqvist Nu fungerar det! Funktionens parametrar, u och v är nu ”kopior” av adresserna till variablerna x och y (&x, &y). Med hjälp av de medskickade adresserna kan funktionen returnera värden till x och y. temp = *u; *u = *v; *v = temp; Förutom en C-funktions returvärde kan funktionen även ge retur till adresser som angivits i parameterlistan!

( Kan man klara sig utan mellanvariabeln? ) William Sandqvist XOR får Du lära dig nästa gång! … Cliff-hanger!

( utan mellanvariabel ) William Sandqvist Nördvarning! XOR swap algorithm void interchange(int * u, int * v) { *u ^= *v; *v ^= *u; *u ^= *v; } ?

William Sandqvist ( Funktion som byter på två variabler ) /* swap4.c pointers to make a swapping function work */ /* from Stephen Prata, C Primer Plus ISBN */ #include void interchange(int *, int *); int main(void) { int x = 5, y = 10; printf("Orginally x = %d and y = %d\n", x, y); interchange(&x, &y); printf("Now x = %d and y = %d\n", x, y); system("PAUSE"); return 0; } void interchange(int * u, int * v) { *u ^= *v; *v ^= *u; *u ^= *v; }

( Mind swap? ) William Sandqvist Var mellanlagrar man medvetandet? Hur löser Hollywood-filmerna egentligen mellanlagringen av medvetandet …. XOR-swap?