Anders Sjögren Selektion i C ”vägval” if och switch - satserna.

Slides:



Advertisements
Liknande presentationer
Villkor Booelska operatorer Villkorsatser Switchsatser Villkor och annat.
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.
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 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
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. Operatorer Tilldelning Kodblock { } if – satsen Logiska uttryck Att programmera.
C-programmering ID120V William Sandqvist Länkad lista
Grundläggande programmering
Realtidsprog. - Anders Arvidsson1 Realtidsprogrammering En introduktion – Implementering (med exempel från PIC)
Flödeskontroll Satser i ett program utförs en och en efter varandra. Detta kallas sekvensiell flödeskontroll. Ofta är det dock nödvändigt att modifiera.
Iteration i C ”upprepa”
Programmering B PHP Lektion 2
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.
Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT CD5250 OOP med C++
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ö.
Programmering B PHP Lektion 3
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.
Några småsaker switch break, continue, goto Kommentarer.
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.
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.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Modulär programutveckling
Anders Sjögren Bitfält Kompakt datalagring i delar av bytes, ett fält av bits StackBytes Heap.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 2 Skolan för Datavetenskap och kommunikation.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
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.
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.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Språket för inbyggda system 2
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Repetitionssatser: do-satsen och for-satsen -Operatorer:
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.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
Anders Sjögren Deklarationsområde och funktioner.
William Sandqvist Flera saker samtidigt? /* Blink1: 1s ON - 1s OFF */ /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
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 )
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning 3 Operatorer Flödeskontroll Primitiva datatyperKlasser i API och egna klasser int double byte float char boolean short long String BufferedReader.
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.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
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
Selektion jämförande och logiska operatorer
Anders Sjögren Operatorer. Anders Sjögren Operand(er)
Språket för inbyggda system. C:s verktygslåda är välfylld! William Sandqvist
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 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.
KPP053, HT2015 MATLAB, Föreläsning 4
Föreläsning 3: Booleans, if, switch
Iteration – Repetitionssats - while
Presentationens avskrift:

Anders Sjögren Selektion i C ”vägval” if och switch - satserna

Anders Sjögren Selektion if Minns ni pro- grammet som beräknar kapital- ökningen vid någon ränta?

Anders Sjögren Mata in ett negativt kapital så räknas det baklänges! Selektion if /* Beräknar kapitaltillväxt på 10 år framåt eller bakåt */ #include #define RANTESATS 8.5 #define ANTAL_AR 10 int main ( void ) { floatkapital ; intar ; printf("Insatt kapital? "); scanf("%f", &kapital); printf("\n År Saldo\n == =====\n"); for ( ar = 1; ar <= ANTAL_AR ; ar++ ) { if ( kapital > 0 ) kapital = kapital * ( 1 + RANTESATS/100 ); else kapital = kapital * 1/( 1 + RANTESATS/100 ); printf("%3d%11.2f\n", ar,kapital>0 ? kapital:-kapital); } return 0; } Gör antingen det ena eller det andra! sant falskt

Anders Sjögren Selektion if if - satsen har i exemplet formen if ( uttryck ) sats else sats

Anders Sjögren Selektion if en enklare form får man om man skippar else - delen if ( uttryck ) sats else sats exempel

Anders Sjögren Selektion if /* Beräknar kapitaltillväxt på 10 år */ #include #define RANTESATS 8.5 #define ANTAL_AR 10 int main ( void ) { floatkapital ; intar ; printf("Insatt kapital? "); scanf("%f", &kapital); if ( kapital < 0 ) kapital= -kapital; printf("\n År Saldo\n == =====\n"); for ( ar = 1; ar <= ANTAL_AR ; ar++ ) { kapital = kapital * ( 1 + RANTESATS/100 ); printf("%3d%11.2f\n", ar, kapital); } return 0; } antag att man i något av de första ränte-programmen vill rätta till negativa kapital- inmatningar då kan man göra så här.

Anders Sjögren Programkörning Utan if-sats Med if-sats

Anders Sjögren Young man´s future choice Marriage - a selection? Marry girl not JSP Young man´s future choice

Anders Sjögren Selectionparts Young man´s future choice A selection must contain at least two selection components. If It only contains one there is no selection. Marry girl Be free!! Like this!

Anders Sjögren Al Bundy? Young man´s future choice We know the end…? Peg.. - make dinner! Marry girl It is however possible to leave a selection component empty.

Anders Sjögren Selektion if if ( uttryck ) sats Hmm, undrar hur man gör om man vill utföra flera satser ?

Anders Sjögren Sammansatt sats { sats_1 sats_2 ” } Inga problem, man bildar en sats av flera satser i en sammansatt sats! Enkelt va !? blocket betraktas språkmässsigt som en sats. OBS! Satsen av- slutas inte med };,semikolon ingår i ”måsvingen”

Anders Sjögren Selektion if detta skulle kunna ändras till det här scanf("%f", &kapital); if ( kapital < 0 ) { kapital= -kapital; printf("Det inmatade negativa värdet "); printf("har korrigerats till positivt \n"); } printf("\n År Saldo\n == =====\n"); I senaste ränteexemplet såg det ut så här scanf("%f", &kapital); if ( kapital < 0 ) kapital= -kapital; printf("\n År Saldo\n == =====\n");

Anders Sjögren Selektion if detta skulle nu kunna ändras till det här scanf("%f", &kapital); if ( kapital < 0 ) { kapital= -kapital; printf("Det inmatade negativa värdet "); printf("har korrigerats till positivt \n"); } printf("\n År Saldo\n == =====\n"); I senaste ränteexemplet såg det ut så här scanf("%f", &kapital); if ( kapital < 0 ) kapital= -kapital; printf("\n År Saldo\n == =====\n");

Anders Sjögren Programkörning

Anders Sjögren Checkbox eller Radiobutton? Checkbox: if(a)b; if(c)d; if(e)f;... Radio Button: if(a)b; else if(c)d;... else f;

Anders Sjögren Selektion nästlade if - satser printf("\n År Saldo\n == =====\n"); for ( ar = 1; ar <= ANTAL_AR ; ar++ ) { if ( kapital > 0 ) kapital = kapital * ( 1 + RANTESATS/100 ); else kapital = kapital * 1/( 1 + RANTESATS/100 ); /* enheter i tabellen */ if ( -10 < kapital && kapital < 10 ) printf("%3d%11.2f kr\n", ar, kapital>0 ? kapital : -kapital); else if ( -100 < kapital && kapital < 100 ) printf("%3d%11.2f da(deka)kr\n", ar, (kapital>0 ? kapital :.... else if ( < kapital && kapital < 1000 ) printf("%3d%11.2f h(hekto)kr\n", ar, (kapital>0 ? kapital :... else printf("%3d%11.2f kkr\n", ar, (kapital>0 ? kapital : -kapital)/1000); } return 0; } ny kod ”gör antingen A eller B eller C.....”, endast ett alternativ utförs!

Anders Sjögren Selektion nästlade if - satser resultat av en programkörning, exekveringsresultat!

Anders Sjögren Nästlade if-satser Strukturdiagram if(a) b; else if(c) d; else f;

Anders Sjögren Selektion switch - satsen Tänk om man skulle lägga in en enkel kalkylator i ränte- programmet ?

Anders Sjögren Selektion switch - satsen /* Beräknar kapitaltillväxt på x år framåt eller bakåt */ #include #define RANTESATS 8.5 void TabellPaSkarmen( int, float ); void easycalc( void ); int main ( void ) { floatkapital ; intantalAr; printf("Insatt kapital och antal år ?(--> )--> "); scanf("%f%d", &kapital, &antalAr); TabellPaSkarmen( antalAr, kapital ); easycalc(); printf("\nSlut"); return 0; } tillkommen kod i main()

Anders Sjögren void easycalc( void ) /* Enkel kalkylator */ { float x, y; char c; printf( "\nKalkylator som klarar de fyra räknesätten t ex 3+2\n"); printf( "a, avslutar\n"); while (printf("-->"), scanf("%f%c%f", &x, &c, &y ) == 3) { switch(c) { case '+': printf("%f\n", x + y); break; case '-': printf("%f\n", x - y); break; case '*': printf("%f\n", x * y); break; case '/': if (y != 0) printf("%f\n", x / y); else printf("Division med noll\n"); break; default: printf("Felaktig operator\n"); break; } return; } Selektion switch - satsen heltalstyp om inte break finns med testas varje ”case”, man trillar igenom. kan tas bort om man vill

Anders Sjögren Ett enkelt Kalkylatorprogram

Anders Sjögren Ett enkelt Kalkylatorprogram Provkör programmet easycalc() vid övningen...

Anders Sjögren En varning! Tips! Töm tangentbordsbufferten med denna kod while( getchar() != '\n' ) /* nothing */ ; Innan Du använder scanf("%c", &c); Annars är det risk att c innehåller det osynliga '\n' -tecknet ! Returntangenten är också en char! Varför fungerar: scanf("%f%c%f", &x, &c, &y ) ?

Anders Sjögren scanf() vad händer i detalj.. scanf("%f%d", &kapital, &antalAr); Insatt kapital och antal år ?(--> )--> tangentbordsbuffert Eko till skärmen! scanf() läser från textfilen CON (tangentbords- bufferten)