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

Relevanta dokument
Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Uttryck och villkor. Föreläsning 2

Uttryck och villkor. Föreläsning 2

2.1 Variabler. 2.2 Regler för namngivning i C. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 2

Föreläsning 4. Val, boolska värden, läsbarhet, osv

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Programmeringsteknik med C och Matlab

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Parameteröverföring. Exempel. Exempel. Metodkropp

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

TDIU01 - Programmering i C++, grundkurs

SMD 134 Objektorienterad programmering

Programmering A. Johan Eliasson

TDIU01 - Programmering i C++, grundkurs

Logik och kontrollstrukturer

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

Objektorienterad Programmering (TDDC77)

Programmering i C, 7,5 hp

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Data, typ, selektion, iteration

Enkla datatyper minne

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Loopar och datatyper. Föreläsning 3

Loopar och datatyper. Föreläsning 3

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

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

Övning2. Variabler. Data typer

F4. programmeringsteknik och Matlab

Objektorienterad Programmering (TDDC77)

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

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

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Föreläsning 10. Pekare (Pointers)

Objektorienterad programmering i Java

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

*Pekarvärden *Pekarvariabler & *

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

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

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

Planering Programmering grundkurs HI1024 HT 2014

Repetition C-programmering

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Objektorienterad programmering Föreläsning 4

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

Att komma igång. Föreläsning 1

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

Programmering för språkteknologer I, VT2012. Rum

Introduktion C-programmering

Variabler och konstanter

Språket Python - Del 1 Grundkurs i programmering med Python

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

Föreläsning 3. Programmering, C och programmeringsmiljö

Repetera snabbt vad du lärde dig förra veckan. Du är nu redo att kasta dig in i nästa fas, teorin om villkor.

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

Programmering i C. Christer Sandberg, Gunilla Eken, Stefan Bygde Olof Andersson Linus Källberg Caroline Uppsäll Johan Hägg

Exempel på ett litet Ada-program

Planering Programmering grundkurs HI1024 HT TIDAA

3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 3

DD1314 Programmeringsteknik

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Beräkningsvetenskap föreläsning 2

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Planering Programmering grundkurs HI1024 HT data

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

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Switch, Array (fält) switch break, continue, goto (scary) Sammansatta tilldelningar Kommentarer Array Sortering

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Programmeringsteknik I

Grundläggande programmering med C# 7,5 högskolepoäng

Föreläsning 1 & 2 INTRODUKTION

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

C++ - En introduktion

Att komma igång. Föreläsning 1

Arrays (indicerade variabler) Föreläsning 6

Visual Basic, en snabbgenomgång

Variabler använder man sig av för att under programkörningen spara data eller information i primärminnet. En variabel har typ, namn och värde.

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

JavaScript del 3 If, Operatorer och Confirm

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

"Crash Course in Programming"

Extramaterial till Matematik Y

Programmering Grundkurs (HI1900) Teoridel

Översikt över Visual Basic

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

Funktionens deklaration

Fråga 11. Vad skrivs ut? Fråga 12. Vad skrivs ut? Fråga 13. Vad skrivs ut? x=x+y; y=x-y; x=x-y;

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Föreläsning 5: Introduktion av pekare

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

Transkript:

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å variabler kan samma programmeringssats utföra olika saker / få olika resultat: s = v*t; Variabel-varierbar (eng. variable)

Deklarera och tilldela variabler Beroende av vilken sorts data som skall lagras använder man variabler av olika datatyper (sorter). Innan en variabel kan användas måste man deklarera vilken typ (sort) den är. Ex: int i; Sedan måste man tilldela variabeln ett värde: i = 3; Detta kan göras på samma rad: int i = 3; Variabeln kan senare tilldelas ett nytt värde. Observera dock att den inte får deklareras igen! = -betyder tilldelning inte lika med. Vad betyder: i = i +2;

Exempel på datatyper Typ min/max Egenskaper int long float double -2147483648/2147483647 (garanterat -32768/32767) -2147483648/2147483647 3.4E-38/1.7E38 (7 signifikanta siffror) 1.7E-308/3.4E308 (15 signifikanta siffror) 32-bit +/- heltal 32-bit +/- heltal 32-bit +/-decimaltal 64-bit +/-decimaltal

Exempel på deklarationer och tilldelningar #include <stdio.h> int main(void) int a,b,c=7; float antal,pris=3.70,laengd; a=34; b=32767; antal=-123.978; pris=89.00; laengd=56; c=-38; laengd=laengd+1; //Från boken

Namngivning Välj namn med omsorg. Namnet ska berätta vad variabeln lagrar och göra koden läsbar. Variabler brukar ges små bokstäver och konstanter stora Om namnet innehåller flera ord: antalpersoner eller antal_personer Regler: Engelska (stora eller små) bokstäver får användas (inte å, ä, ö). Siffror 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 får användas. Underscore _ får användas Ett namn får inte inledas med en siffra. reserverade (upptagna) ord får ej användas

Kodblock klumpar ihop flera satser till ett kodblock som utifrån ses som en sats. Ex: int i; i =0; i=i+1;

Deklarationers giltighet En deklaration gäller nedanför där den är gjord inom sitt kod-block. i = 7; //fel i är inte deklarerad int i; //nu är i deklarerad i=4; //går bra programmet vet att i är ett heltal i=i+1; //fel i är inte definierad utanför kodblocket Den gäller också innanför kod-block efter deklarationen: int i = 0; i++; //OK! i = i * i;//ok

Villkor Om du ger mig hundra kronor så får du en biobiljett. Om du hjälper mig med städningen så följer jag med dig på hockey, annars får du gå själv. Om klockan är mer än tio så går jag och lägger mig, annars dricker jag kaffe.

if-satsen if(logiskt_uttryck) sats int tid = 21; if(tid > 22) printf( Gå och lägg dig );

if(logiskt_uttryck) sats1 else sats2 if else int tid = 21; if(tid > 22) printf( Gå och lägg dig ); else printf( Drick kaffe! );

if Med hjälp av klammrar kan vi göra flera saker i en if-sats. if (tid > 22) printf( Borsta tänderna! ); printf( Gå och lägg dig! ); else printf( Koka kaffe ); printf( Drick kaffe );

Flera if Vi kan ha en if sats i en annan if sats nästlat Ex: if(0<x) if(x<10) printf( 0<x<10 ); En särskild form av detta är if else if: if(x<0) sats1 else if(x<10) sats2 else sats3

Logik och programmering Ett logiskt värde är antingen sant eller falskt När vi jämför tal är resultatet antingen sant eller falskt: 3 < 7 sant 3 > 7 falskt 3 == 7 falskt Resultatet av sådana jämförelser är mycket användbara i programmering. Vi kan säga åt datorn att göra något om resultatet är sant och något annat om det är falskt. I C är resultatet av en sådan jämförelse av typen int och sant representeras av 1 och falskt av 0. (dock tolkas alla värden utom 0 som sanna)

Relationsoperatorer ==!= > >= < <= lika med 3==4 är falskt dvs resultatet blir 0 skilt från 3!=4 är sant dvs resultatet blir 1 större än större än eller lika med mindre än mindre än eller lika med

Logiska operatorer Exempel på logiska uttryck: icke (sant) = falskt sant och sant = sant sant eller falskt = sant Logiska operatorer tar en eller två logiska värden och resultatet blir ett logiskt värde I C motsvaras då sant och falskt av 1 och 0

Logiska operatorer i C Icke -!!(1) blir 0!(0) blir 1 och - && 1&&1 blir 1 1&&0 blir 0 0&&1 blir 0 0&&0 blir 0 Eller - 1 1 blir 1 1 0 blir 1 0 1 blir 1 0 0 blir 0

Ett exempel if (x<0 10<x) printf( x är inte mellan 0 och 10 );

Operatorer En operator tar ett eller två data och producerar ett svar. Typexemplet är +. Den tar t.ex två heltal och producerar ett annat heltal nämligen summan: 3 + 5 blir 8

Vanliga matematiska operatorer *, /, +, - fungerar som på era miniräknare. Fungerar både för heltal och decimaltal (flyttal). Heltalsdivision är lite speciell: 5 / 2 blir 2 % - modulus, dvs resten vid heltalsdivision: 5 % 2 blir 1 ++ och är två speciella operatorer: a++; motsvarar a=a+1; dvs a ökar med 1 a ; motsvarar a=a-1; OBS! 4++ ger kompileringsfel!

Konverteringsoperatorn (typ) denna operator konverterar om möjligt talet till höger till datatypen typ. Ex: int i = (int) 3.45; Konverteringen sker dock automatiskt vid behov: int i = 3.45;//ger samma resultat

Konvertering i uttryck float f = 3 / 2; //f blir 1.0 float f = 3.0 / 2; //f blir 1.5 int i1 = 3; int i2 =2; float f = i1 / i2; //f blir 1.0 float f = (float) i1 / i2; //f blir 1.5

Prioritering I ett uttryck med flera operatorer måste de göras i en viss ordning. Vilken bestäms av operatorernas prioritet Du kan precis som i matematiken ändra prioritetsordningen med hjälp av parenteser. Dessa beräknas först. Det är bättre att ha en parentes för mycket än en för litet. Sätt alltid ut parenteser om du är osäker!

1. () 2. ++ 3. (typ) 4. * / % 5. + 6. = Prioritetsordning Om två operatorer har samma prioritet utföres de från vänster till höger Använd alltid parenteser om du är osäker! ex: (float)a/b+c/(d+e)

Att programmera Skriv en rad i taget Kompilera och testkör mellan varje rad Om du får kompileringsfel bör felet vara på senaste raden Rätta bara första kompileringsfelet övriga kan vara följdfel som försvinner av sig själv Välj beskrivande variabelnamn Indentera (tabba) och lämna blankrader så att koden blir lättläst Försök läsa kod så som kompilatorn gör: Läs första raden vad händer Läs nästa rad vad händer osv Använd extra printf satser för att följa koden

Ett exempel I den här uppgiften skall du skriva ett program som räknar ut priset för CD-R skivor. Grundpriset är 9,90 kr, men om man köper flera får man rabatt: fler än 10 st ger 5% rabatt fler än 50 st ger 10% rabatt Programmet skall börja med att fråga användaren hur många skivor han vill köpa för att sedan svara vad totala priset blir.

Ett exempel #include <stdio.h> int main(void) printf("valkommen!\nhur manga skivor vill du kopa?");

Ett exempel #include <stdio.h> int main(void) int antal; printf("valkommen!\nhur manga skivor vill du kopa?"); scanf("%d",&antal);

Ett exempel #include <stdio.h> int main(void) int antal; printf("valkommen!\nhur manga skivor vill du kopa?"); scanf("%d",&antal); printf( du vill köpa %d",antal);

Ett exempel #include <stdio.h> int main(void) int antal; float pris; printf("valkommen!\nhur manga skivor vill du kopa?"); scanf("%d",&antal); pris=antal*9.9; printf("priset blir: %.0f",pris);

Ett exempel #include <stdio.h> int main(void) int antal; float pris; printf("valkommen!\nhur manga skivor vill du kopa?"); scanf("%d",&antal); if(antal<11) pris=antal*9.9; else pris=antal*9.9*0.9; printf("priset blir: %.0f",pris);

Ett exempel #include <stdio.h> int main(void) int antal; float pris; printf("valkommen!\nhur manga skivor vill du kopa?"); scanf("%d",&antal); if(antal<11) pris=antal*9.9; else if(antal<51) pris=antal*9.9*0.95; else pris=antal*9.9*0.9; printf("priset blir: %.0f",pris);

Buggar Programmet nedan innehåller fem fel. Försök finna dessa: void main(void) int x; float y, sum; printf("mata in ett heltal: "); scanf("%d", x); printf("mata in ett flyttal: "); scanf("%d", &y); sum=x+y; printf("summan är ", sum); if(x<0); printf("x är negativt");

Fel Fel 1: Vi saknar #include <stdio.h>. Kompilatorn: Call to undefined function 'printf' Fel 2: Vi har glömt & framför x vid inläsningen: Kompilatorn: Possible use of x before definition Fel 3: Det ska stå %f när vi läser in flyttal Kompilatorn klagar inte. När programmet körs läses inget in, men programmet går att köra. Fel 4: Det saknas %f i formatsträngen när vi ska skriva ut sum. Värdet på sum skrivs inte ut. Fel 5: Vanligt nybörjarfel: if-satsen är en tom sats. Båda satserna körs alltid, den tomma if-satsen, som inte har någon effekt, och printf-satsen, som inte hänger ihop med if-satsen alls, if-satsen är avslutad i och med semikolonet. Rätt kod är: if(x<0)printf("x är negativt"); De första två felen var syntaktiska. De andra tre var logiska fel. Logiska är mer lömska än syntaktiska eftersom kompilatorn inte tillåter oss att köra ett syntaktiskt felaktigt program.