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.

Slides:



Advertisements
Liknande presentationer
Mall för ett C#-program
Advertisements

Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
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.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Programstruktur: C för enchipsdatorer
Introduktion till C för enchipsdatorer
Funktioner och programorganisation
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
Prolog, Mån 16/9 Rebecca Jonson.
Föreläsning 4 Python: mera om funktioner och parametrar
C-programmering ID120V William Sandqvist Länkad lista
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Programkodens uppbyggnad
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
i olika programmeringsspråk
Objektorienterad programmering i Java
INTRODUKTION TILL PROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
Programmering i C# 3. Klasser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Klasser och objekt Klasser, objekt och instansvariabler
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 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar.
William Sandqvist C:s minnesmodell.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
1.Välj en nod vilken som helst och markera den som öppen. Låt den bli rot. A R B F C D E G
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Anders Sjögren Pekare. Anders Sjögren Skapa ett program som byter plats på två heltal Pekare.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
Föreläsning 4 Klasser Och Objekt.
INTRODUKTION TILL PROGRAMMERING
F5 - Fält & strängar 1 Programmeringsteknik, 4p vt-00 Fält Många element av samma typ Typexempel : lista av heltal Gemensamt namn Individuella värden nås.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
Anders Sjögren Deklarationsområde och funktioner.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 9 ( ) Innehåll: - IPC: Semaforer.
7. Delegerare och notifierare
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 5 Klasser och instanser
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
Anders Sjögren Data (i primärminnet) som en länkad lista datatypen för varje element i listan är en struktur, post ( struct )
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
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
Program indata ? utdata 1/20 Vahid Mosavat, Nada, KTH.
Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng Fält - Vektor - Array Deklarera, skapa och använda Fält som parameter Föreläsning 9.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng Referensvariabel Klass och konstruktorer Klass med set- och get-metoder Klass och fält Fler metoder.
1 IS1200 Datorteknik, övning 4 Maskinnära programmering med C Förberedelser till hemlaboration 1.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Anders Sjögren Funktioner något in och något annat ut.
Länkade listor á la C/C++
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

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 &i Pekarvariabelns värde är en adress int *p; /* pekare till ett heltal */ ”icke”-värdet för pekare är NULL Möjligt att nå andra adresser via p p+1 är den efterföljande adressen *(p+1) är värdet i denna adress

F6 - Pekare 2 Programmeringsteknik, 4p vt-00 Pekare som parametrar Aktuell parameters värde kopieras till den formella parametern. Gäller även för pekare, dvs. adressen kopieras  två identifierare pekar ut samma minnesutrymme. T.ex. låt två variabler byta värden void byt(int *a, int *b) { int t; /* temporär variabel */ t = *a; *a = *b; *b = t; } int v1,v2; byt(&v1,&v2); Anrop

F6 - Pekare 3 Programmeringsteknik, 4p vt-00 Fält & pekare Fältnamnet är i sig en pekare till första elementet i fältet int lista[25]; nu är lista &lista[0] och lista[0] *lista vilket ger lista[3] *(lista+3) …men fältnamnet kan inte byta värde!! Dvs. kan inte sättas att peka någon annanstans

F6 - Pekare 4 Programmeringsteknik, 4p vt-00 exempel2 - igen void exempel2(void) { char str1[] = "Första strängen"; char str2[] = "Andra!"; char str3[25]; printf(" exempel \n\n"); str3 = strcat(str1,str2)); printf("-->%s<--\n",strcat(str1,str2)); printf(" konkatenering \n\n"); }/* exempel2 */

F6 - Pekare 5 Programmeringsteknik, 4p vt-00 Dynamisk minnesallokering calloc Funktionerna malloc() och calloc() (i stdlib.h ) Används för att reservera minne dynamiskt, dvs. under körning. Interaktivt eller på annat sätt kan information fås och användas för att bestämma ”storleken” på fält och mer komplexa datastrukturer. calloc(antal, storlek)returnerar en pekare till ett utrymme med plats för n element med storleken angiven i bytes. sizeof() gör att man slipper veta antalet bytes explicit

F6 - Pekare 6 Programmeringsteknik, 4p vt-00 …och malloc malloc(antal bytes)returnerar en pekare till ett utrymme med plats för n element med storleken angiven i bytes. sizeof() gör att man slipper veta antalet bytes explicit

F6 - Pekare 7 Programmeringsteknik, 4p vt-00...och exempel2 void exempel2(void) { char str1[25] = "Första strängen"; char str2[25] = "Andra!"; char *str3; str3 = calloc(25,sizeof(char)); printf(" exempel \n\n"); printf("-->%s<--\n",str1); str3 = strcat(str2,str1); printf("-->%s<--\n",str3); printf("\n konkatenering \n\n"); }/* exempel2 */

F6 - Pekare 8 Programmeringsteknik, 4p vt-00 körning exempel >Första strängen<-- -->Andra!Första strängen< konkatenering

F6 - Pekare 9 Programmeringsteknik, 4p vt-00 Frigöra minne free Funktion : free(pekare ) Återlämnar minnesutrymme När en funktion exekverat färdigt sker ingen automatisk återlämning av allokerat minnet (ingen garbage collection )

F6 - Pekare 10 Programmeringsteknik, 4p vt-00 Strängfunktionerna igen char *strcat(char *s1, const char *s2) konkatenerar s1 och s2, resultatet i s1 och en pekare till s1 returneras int strcmp(const char *s1, const char *s2) jämförelse, ”logiskt” värde returneras (-,0,+) om s1 är lexikografiskt s2 char *strcpy(char *s1, const char *s2) kopierar tecknen i s2 till s1 tills \0 flyttats, pekaren s1 returneras size_t strlen(const char *s) antalet tecken före \0 returneras (s.273)

F6 - Pekare 11 Programmeringsteknik, 4p vt-00 bubbel igen void bubbel(int lista[],int n) { int i,sist; int bytt; /* logisk */ sist = n-1; /* sista index i listan */ do { bytt = 0; /* logiskt false */ for (i=0;i <= sist-1; i++) { if (lista[i] > lista[i+1]) { byt(&lista[i],&lista[i+1]); bytt = 1; /* logiskt true */ } sist = sist - 1; }while (bytt && sist!=1); } /* bubbel */

F6 - Pekare 12 Programmeringsteknik, 4p vt-00 I sorteringsexemplet Jämförelserna : if (lista[i] > lista[i+1]) if (*(lista+i) > *(lista+i+1)) Anropen : byt(&lista[i],&lista[i+1]); byt(lista+i,lista+i+1);

F6 - Pekare 13 Programmeringsteknik, 4p vt-00 Flerdimensionella fält Fältnamnet är i sig en pekare till första elementet i fältet int a[3][3]; nu är a &a[0] en pekare till ett fält med 3 heltal och basadressen är &a[0][0] vilket ger a[i][j] *(a+i*3+j) Med början i basadressen allokeras 9 heltalsutrymmen Antal värden/rad Antal rader

F6 - Pekare 14 Programmeringsteknik, 4p vt-00 I bilder a a[0] a[1] a[2] [0][1][2]

F6 - Pekare 15 Programmeringsteknik, 4p vt-00 Matrisexempel void skrivMatris(double **matris, int m, int n) { int i,j; printf(" Matris exempel \n\n"); for (i=0;i<m;i++) { for (j=0;j<n;j++) printf("%7.1lf",matris[i][j]); putchar('\n'); }; printf("\n * * * * * * \n\n"); }/* skrivMatris */

F6 - Pekare 16 Programmeringsteknik, 4p vt main int main(void) { double **a; int i,j; a = calloc(4,sizeof(double *)); for (i=0;i<4;i++) a[i] = calloc(3,sizeof(double)); srand(time(NULL)); /* slumptalsfrö */ for (i=0;i<4;i++) for (j=0;j<3;j++) a[i][j] = rand()% ; skrivMatris(a,4,3); return 0; }/* main */

F6 - Pekare 17 Programmeringsteknik, 4p vt-00 körning Matris exempel * * * * * * * * *