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.

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.
Programstruktur: C för enchipsdatorer
Funktioner och programorganisation
Föreläsning 3 Lista Array/länkad lista Lista implementerad som länkad lista Inlämningsuppgifter.
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Funktionen SA10-Grupper. Följande typer av grupper finns: - Grupp i kurs hör alltid ihop med en kurskod - Grupp i program hör alltid ihop med en programkod.
Operatorer.
#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'
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
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.
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
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ö.
int res2=Math.max(tal1,tal2);
Vektorer (klassen Vector) Sortering
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.
Anders Sjögren Minnen, variabler, att lagra i primärminnet forts.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
Anders Sjögren Mer om datatyper. Anders Sjögren const det finns ett elegantare sätt att skapa konstanter i C än sättet med makro som vi använt tidigare.
Modulär programutveckling
Anders Sjögren Pekare. Anders Sjögren Skapa ett program som byter plats på två heltal Pekare.
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
Anders Sjögren Bitfält Kompakt datalagring i delar av bytes, ett fält av bits StackBytes Heap.
Anders Sjögren ANSI - standard ?. Anders Sjögren ANSI - standard ? Om man skriver ett bra C-program och kompilerar fram ”exe”-filen så vore det ju trevligt.
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
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
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
Språket för inbyggda system 2
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.
Programmering i C# Laborationer.
Anders Sjögren Deklarationsområde och funktioner.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
1 Ingenjörsmetodik IT & ME 2007 Föreläsare Dr. Gunnar Malm.
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
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å.
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
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 Övning6 Läsning från fil till java objekt Sökning Sortering.
Anders Sjögren Mer om datatyper. Anders Sjögren const det finns ett elegantare sätt att skapa konstanter i C än sättet med makro som vi använt tidigare.
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
Anders Sjögren Operatorer. Anders Sjögren Operand(er)
Algoritmer och loopar Algoritmer, beräkningsbarhet
Anders Sjögren Minnen, variabler, att lagra i primärminnet forts. Den här bilden känner ni igen sedan tidigare. Vi skall fortsätta att prata variabeltyper.
Anders Sjögren Minnen, variabler, att lagra i primärminnet forts.
Anders Sjögren Modulär programutveckling. Anders Sjögren Ett programmeringsprojekt, flera personer utvecklar ett program Vi ska utveckla ett ränteberäkningsprogram.
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.
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.
Hud & hudsjukdomar Fredrik Hieronymus.
Administration Distribution Metabolism Exkretion
Kap. 3 Derivator och Integraler
Uppföljning av år 2016 HFS-nätverket
Vårdprevention - en introduktion för medarbetare på sjukhus
Sprintdemo 26. Sprintdemo 26 Dagens program Teknik för demo: Kontakt med projektet: Skype för både ljud och bild Inspelad demo på projektwebben Kontakt.
VA-utbyggnad Långenabben- Björkenäs
Dorotea "Att alla invånare har tillgång till ett allsidigt och tillgängligt utbud av utbildningar av hög kvalité från förskola till och med universitetsutbildning,
Producera information till NPÖ, vad krävs. Johan Lindskog
Presentationens avskrift:

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

Anders Sjögren Bitfält exempel #include typedefstruct { unsignedar: 7, manad :4, dag :5, kontroll :14, :2, unsignedten1 :4, ten2 :4, lab :4, proj :4 ; } studentDataTyp ; FILE* OppnaFil( studentDataTyp*, int* ); void StangFil( FILE*, studentDataTyp*, int ); void Inmatning( studentDataTyp*, int*, int ); void Kontroll( studentDataTyp*, int ); Strukturen ser ut som tidigare Programmets funktioner

Anders Sjögren Bitfält exempel int main( void ) { studentDataTypstudentVektor[30]; intantal=0, xAntal ; FILE*filPek=NULL; filPek = OppnaFil( studentVektor, &antal ); printf("Hur många studenters prestationer skall matas in?--> "); scanf("%d", &xAntal ); Inmatning( studentVektor, &antal, xAntal ); Kontroll( studentVektor, antal ); StangFil( filPek, studentVektor, antal ); return; } Antal studenter i arrayen. Detta värde hålls hela tiden aktuellt Programmeringsidé Studenterna är indelade i grupper om max 30 st. Varje gupp motsvaras av en egen datafil. Uppdatera studentdata genom att läsa in alla poster från datafilen till en vektor. Bearbeta posterna i vektorn och när allt är klart så skriv tillbaks alla posterna till datafilen. Antal studenter som skall tilllfogas

Anders Sjögren Bitfält exempel int main( void ) { studentDataTypstudentVektor[30]; intantal=0, xAntal ; FILE*filPek=NULL; filPek = OppnaFil( studentVektor, &antal ); printf("Hur många studenters prestationer skall matas in?--> "); scanf("%d", &xAntal ); Inmatning( studentVektor, &antal, xAntal ); Kontroll( studentVektor, antal ); StangFil( filPek, studentVektor, antal ); return; } Kan du motivera varför parameterlistan ser ut som den gör? nästa bild

Anders Sjögren Bitfält exempel FILE* OppnaFil( studentDataTyp pVektor[], int* antalPek ){ FILE*filPek; charfilnamn[20]; printf("\nVilken fil skall öppnas? --> "); scanf("%s",filnamn); if ( (filPek=fopen(filnamn,"r+b")) != NULL ) while (fread(&pVektor[*antalPek],sizeof(studentDataTyp),1,filPek)) (*antalPek)++ ; else filPek=fopen(filnamn,"w+b"); return filPek; } Ur main()

Anders Sjögren void Inmatning( studentDataTyp pVektor[], int* antalPek, int extra ){ inti, temp; for ( i=(*antalPek) ; i < (*antalPek)+extra ; i++ ) { printf("\nStudent nr%d :\n", i+1); printf("==============\n"); printf("Född år, xx -> "); scanf("%d",&temp); pVektor[i].ar = temp ; printf(" månad, xx -> "); scanf("%d",&temp); pVektor[i].manad = temp ; printf(" dag, xx -> "); scanf("%d",&temp); pVektor[i].dag = temp ; printf("konrollnummer,xxxx -> "); scanf("%d",&temp); pVektor[i].kontroll = temp ; printf("TEN1 betyg -> "); scanf("%d",&temp); pVektor[i].ten1 = temp ; printf("TEN2 betyg -> "); scanf("%d",&temp); pVektor[i].ten2 = temp ; printf("LAB betyg -> "); scanf("%d",&temp); pVektor[i].lab = temp ; printf("PROJ betyg -> "); scanf("%d",&temp); pVektor[i].proj = temp ; } (*antalPek) += extra ; return; } Ur main()

Anders Sjögren void Kontroll( studentDataTyp pVektor[], int antal ){ int i ; for ( i=1 ; i <= antal ; i++ ) { printf("\nStudent nr%d, kontroll :", i); printf("\n========================\n"); printf("Född år, : %d \n", pVektor[i-1].ar); printf(" månad, : %d \n", pVektor[i-1].manad); printf(" dag, : %d \n", pVektor[i-1].dag); printf("konrollnummer: %d \n", pVektor[i-1].kontroll); printf("TEN1 betyg : %d \n", pVektor[i-1].ten1); printf("TEN2 betyg : %d \n", pVektor[i-1].ten2); printf("LAB betyg : %d \n", pVektor[i-1].lab); printf("PROJ betyg : %d \n", pVektor[i-1].proj); } return; } Bitfält exempel Ur main()

Anders Sjögren void StangFil( FILE* filPek, studentDataTyp pVektor[], int antal ){ rewind( filPek ); fwrite( pVektor, antal*sizeof( studentDataTyp ),1,filPek ); fclose( filPek ); return; } Bitfält exempel Ur main()

Anders Sjögren Parameterlistan på webtentan Tag reda på …  Vilka datatyper anropas funktionen med?  Vilken datatyp returneras? Belöningen: När Du avslöjat alla parametrar kan Du kompilera projektet och se programmet köra!

Anders Sjögren Hjälpmedel för att läsa binärfiler programmet hexdump.c /* hexdump.c */ #include #include int main(int argc, char *argv[]) { char filnamn[25]; unsigned int i=0; unsigned char c; FILE *inFil; printf("Vilken bin\204rfil ska HEX-dumpas?\n"); scanf("%s", filnamn); inFil = fopen( filnamn, "rb"); printf("\n"); while ( fread( &c, sizeof( char ), 1, inFil )== 1 ) { printf("%02X ", c ) ; /* 2-siffrigt hextal */ /* ny rad efter var fjärde byte */ if(++i%4==0)printf("\n"); } fclose( inFil ); printf("\n"); system("PAUSE"); return 0 ; } Kontrollera innehållet i en binärfil? Varje Byte blir två hex-bokstäver, och fyra sådana hexpar på en rad motsvarar en int eller float. Enklast är att placera programmet hexdump.exe i mappen där din binärfil ligger.

Anders Sjögren

Laborationsuppgift Laborationsuppgift Lab 4 ( Laborationsuppgift av Kenneth Börgesson ) Del 1 Att under två laborationspass göra ett program som från tangentbordet läser in godtyckligt antal komplexa tal och lagrar dem i en ny fil som antingen är en textfil eller en binärfil. Programmet ska fråga om man önskar textfil eller binärfil. Innan programmet avslutas ska det öppna den nyskapade filen och skriva ut innehållet på skärmen ( som verifikation på inmatningen ). Del 2 Gör ett tillägg till programmet så att det, för en av filtyperna, även går att lägga till eller ta bort ett värde ( ett komplext tal, ett talpar ) till en befintlig fil. Det spelar ingen roll i vilken ordning talen i filen hamnar. Enklast är om det är sista talet som kan tas bort. Lite mer komplicerat är det om det är det n:e talet som ska kunna tas bort. Välj själv... Gör ett JSP-diagram över ditt program. ( Om strukturen från de tidigare laborationerna kan bibehållas så har Du redan JSP-diagrammet! )