#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'<=s[i]&& s[i]<='z') s[i]-='a'-'A'; } int main() { char s[] = "Hej pa dig"; fun(s); printf(s);

Slides:



Advertisements
Liknande presentationer
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.
Advertisements

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.
Word Word är ett av de vanligaste ordbehandlingsprogrammen. Vi skall idag gå igenom de vanligaste funktionerna i programmet. Fördelarna med att använda.
Föreläsning1. • Boken?!?! • Vad är ett program? • Kompilerande-Interpreterande • Programmeringsmiljö • Hello World! • Att programmera och ett enkelt program.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
Sökning och sortering Linda Mannila
Föreläsning 3 Lista Array/länkad lista Lista implementerad som länkad lista Inlämningsuppgifter.
Programmeringsteknik
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
Metoder i java Det finns två typer av metoder i java
C-programmering ID120V William Sandqvist Länkad lista
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
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.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT CD5250 OOP med C++
Programmering i C# 3. Klasser.
Ali Ghodsi Variabler En variabel är en sorts behållare som man kan placera data i Man måste ange typ och namn för alla variabler.
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.
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.
SCHEMAREGISTRERING. SCHEMAREGISTRERING FÖR FÖRSKOLEBARN OCH FRITIDSHEMSBARN Klicka på figuren med barnets namn.
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
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
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
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.
William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Google SketchUp Del 1.
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 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
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.
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.
Anders Sjögren Deklarationsområde och funktioner.
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.
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å.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
Anders Sjögren Data (i primärminnet) som en länkad lista datatypen för varje element i listan är en struktur, post ( struct )
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
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 Programmering i ANSI-C Ett första program för att se vart vi ska...
Anders Sjögren Funktioner något in och något annat ut.
KPP053, HT2015 MATLAB, Föreläsning 4
Presentationens avskrift:

#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'<=s[i]&& s[i]<='z') s[i]-='a'-'A'; } int main() { char s[] = "Hej pa dig"; fun(s); printf(s); return 0; }

Vad är en struct? Deklarera och använda Initiera och kopiera Struct som parameter och returvärde till funktioner Arrayer av structar En databas

En struct används för att definiera en ny sammansatt datatyp, en datastruktur. Tidigare har vi sett arrayer som samlar data. Structar skilljer sig på två punkter: De olika medlemmarna i en struct behöver inte vara av samma datatyp Medlemmarna får ett namn och man väljer medlem mha namnet Precis som arrayer samlar data som hör ihop så samlar en struct data som hör ihop. I ett bilregister representerar vi en bil med en struct som innehåller bilmärke, årsmodell, antal körda mil I ett grafiskt program representerar vi en punkt med en struct som innehåller x och y koordinater I samma program representerar vi en cirkel med en struct som innehåller en punkt (mitten) och en radie

#include #define ORDLANGD 30 struct bil{ char marke[ORDLANGD]; int arsmodell; int mil; };//OBS semikolon glömmer man alltid! Ger svårtolkade fel. int main(){ struct bil b1;//b1 är variabel av datatypen struct bil strcpy(b1.marke,"Volvo"); b1.arsmodell=1971; b1.mil=21000; printf("Bil: %s, Arsmodell: %d, Mil: %d",b1.marke,b1.arsmodell,b1.mil); return 0; }

struct bil { char marke[ORDLANGD]; int arsmodell; int mil; }; typedef struct bil Bil;//Definierar Bil att betyda struct bil. Använd stor bokstav int main() { Bil b1;//Snyggare och enklare strcpy(b1.marke,"Volvo"); b1.arsmodell=1971; b1.mil=21000; printf("Bil: %s, Arsmodell: %d, Mil: %d",b1.marke,b1.arsmodell,b1.mil); return 0; }

#include #define ORDLANGD 30 struct bil { char marke[ORDLANGD]; int arsmodell; int mil; }; typedef struct bil Bil; int main() { Bil b1={"Volvo",2013,2100},b2={"Saab",1992,23000},b3; b3=b2;//Fungerar! Även arrayen kopieras! == fungerar dock ej på structar b3.mil=b3.mil+1000; printf("Bil: %s, Arsmodell: %d, Mil: %d",b3.marke,b3.arsmodell,b3.mil); return 0; }

#include #define ORDLANGD 30 struct bil{ char marke[ORDLANGD]; int arsmodell; int mil; }; typedef struct bil Bil; void skrivBil(Bil b){ printf("Bil: %s, Arsmodell: %d, Mil: %d\n",b.marke,b.arsmodell,b.mil); } int main(){ Bil b1={"Volvo",2013,2100},b2={"Saab",1992,23000},b3; b3=b2; b3.mil=b3.mil+1000; skrivBil(b1); skrivBil(b2); skrivBil(b3); return 0; } Structar kopieras vid funktionsanrop (passed by value) och eftersom de kan vara stora skickar man ofta en pekare även om man inte ska ändra i structen

void okaMil(Bil *b,int mil){ (*b).mil=(*b).mil+mil;//Obs ()-behövs! } int main() { Bil b1={"Volvo",2013,2100},b2={"Saab",1992,23000},b3; b3=b2; okaMil(&b3,1000); skrivBil(b1); skrivBil(b2); skrivBil(b3); return 0; }

void okaMil(Bil *b,int mil){ b->mil=b->mil+mil; //snabbare skrivsätt }//betyder samma sak int main() { Bil b1={"Volvo",2013,2100},b2={"Saab",1992,23000},b3; b3=b2; okaMil(&b3,1000); skrivBil(b1); skrivBil(b2); skrivBil(b3); return 0; }

Bil skapaBil(char marke[],int arsmodell, int mil){//Observera att vi kan ha samma namn! Bil b; strcpy(b.marke,marke); b.arsmodell=arsmodell; b.mil=mil; return b;//Äntligen kan vi returnera flera värden! } int main(){ Bil b1,b2; b1=skapaBil("Volvo",2013,2100); b2=skapaBil("Saab",1993,17000); skrivBil(b1); skrivBil(b2); return 0; }

Som vi redan sett kan en struct ha en array som en medlem. Vi kan också ha arrayer där elementen är en struct Eller en struct som har en annan struct som medlem Och vi får nästla dem i flera lager. Ex: en array av structar som har en medlem som är en struct som består av arrayer där en av arrayerna består av en annan struct osv Vi kan till och med (och det används ofta) ha en struct där en av medlemmarna är en pekare till en struct av samma typ (rekursiv def) Vad vi ska fokusera på är en array av structar

void registreraBilar(Bil reg[],int *antal){ char fortsatt[ORDLANGD] = "ja", marke[ORDLANGD], tmp[ORDLANGD]; int arsmodell,mil; while(strcmp(fortsatt,"ja")==0){//#include printf("Ange marke:"); gets(marke); printf("Ange arsmodell:"); gets(tmp);//scanf lämnar return-tecken som ställer till arsmodell=atoi(tmp);//#include printf("Ange mil:"); gets(tmp); mil=atoi(tmp); reg[*antal]=skapaBil(marke,arsmodell,mil); (*antal)++; printf("Vill du fortsatta? (ja/nej)"); gets(fortsatt); } int main(){ Bil bilRegister[MAX]; int antal=0; registreraBilar(bilRegister,&antal); skrivBil(bilRegister[0]);//tillfällig test att det verkar funka return 0; }

För att se att det funkar som det ska verkar det vara ett bra läge att skriva en funktion som skriver ut hela registret. Den kommer senare vara bra när man jobbar vidare med mer funktionalitet Ni får anrop och funktionshuvud men sedan är det dags att börja jobba!

#include #define ORDLANGD 30 #define MAX 100 struct bil { char marke[ORDLANGD]; int arsmodell; int mil; }; typedef struct bil Bil; void skrivBil(Bil b){ printf("Bil: %s, Arsmodell: %d, Mil: %d\n",b.marke,b.arsmodell,b.mil); } Bil skapaBil(char marke[],int arsmodell, int mil) { Bil b; strcpy(b.marke,marke); b.arsmodell=arsmodell; b.mil=mil; return b; } void registreraBilar(Bil reg[],int *antal){ char fortsatt[ORDLANGD] = "ja",marke[ORDLANGD],tmp[ORDLANGD]; int arsmodell,mil; while(strcmp(fortsatt,"ja")==0){ printf("Ange marke:"); gets(marke); printf("Ange arsmodell:"); gets(tmp); arsmodell=atoi(tmp); printf("Ange mil:"); gets(tmp); mil=atoi(tmp); reg[*antal]=skapaBil(marke,arsmodell,mil); (*antal)++; printf("Vill du fortsatta? (ja/nej)"); gets(fortsatt); } void skrivaUtRegister(Bil reg[],int antal){/*här ska koden in*/} int main(){ Bil bilRegister[MAX]; int antal=0; registreraBilar(bilRegister,&antal); skrivaUtRegister(bilRegister,antal); return 0; }

Läs igenom föreläsningen och programmera exemplen och experimentera Lägg till funktionen som skriver ut alla bilar i registret i vårt bilregisterprogram. Utskriften ska se ut enlig nedan: 1. Bil: Volvo, Årsmodell: 2011, Mil: Bil: Saab, Årsmodell: 2000, Mil: Bil: Fiat, Årsmodell: 1999, Mil: Ändra programmet så att det startar med en meny enligt nedan. Beroende vad man väljer anropas rätt funktion. Sedan får användaren en ny chans att välja ända tills han väljer avsluta. 1.Registrera bilar 2.Skriv ut alla bilar 3.Avsluta Lägg till ett menyalternativ som är Öka mil där man ska kunna välja en bil genom att ange dess plats i registret och sedan kan öka antalet mil den har gått. Så för att öka fiatens mil ovan anger man 3. Gör K16 E10 Skumma igenom 16.1 Läs tom halva sid389 E-excercises, P-programming projects