Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...

Slides:



Advertisements
Liknande presentationer
INTRODUKTION TILL PROGRAMMERING
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
2D1311 Programmeringsteknik med PBL
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
De fundamentala datatyperna
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.
Välkommen Vahid Mosavat
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Grundläggande programmering
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
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.
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
Programmering B PHP Lektion 3
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Repetition inför slutprovet
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; }
Programmering B PHP Lektion 2
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.
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 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Modulär programutveckling
Anders Sjögren Pekare. Anders Sjögren Skapa ett program som byter plats på två heltal Pekare.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Anders Sjögren Bitfält Kompakt datalagring i delar av bytes, ett fält av bits StackBytes Heap.
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.
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.
INTRODUKTION TILL PROGRAMMERING
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
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 Deklarationsområde och funktioner.
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.
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äsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
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
Program indata ? utdata 1/20 Vahid Mosavat, Nada, KTH.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Anders Sjögren Operatorer. Anders Sjögren Operand(er)
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
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.
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.
Python.
Iteration – Repetitionssats - while
Presentationens avskrift:

Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...

Anders Sjögren Det första programmet källkoden 1A_PGM.C (en textfil) #include int main ( void ) { printf("Hello world!\n"); return 0; } Windowsprogram 1A_PGM_W.EXE DOS-promptDOS direkt 1A_PGM.EXE Om man kompilerar denna textfil ( hur man gör kommer senare ) så får man en maskinkodsfil, EXE-fil, som kan exekveras. källkod - editera! kompilera! ”EXE”-fil! plattform!

Anders Sjögren Ett program växer fram... int main ( void ) { return 0; } stommen till alla C-program!

Anders Sjögren Ett program växer fram... /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } stommen till alla C-program!

Anders Sjögren Ett program växer fram... /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } i stommen anger man med hjälp av satser vad som ska utföras i tur och ordning - sekvens satsav- slutare

Anders Sjögren Ett program växer fram... vad satserna gör /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } här skapas, definieras, 2 st variabler (minnen) av typen float (float är ett reserverat ord ) flyttal

Anders Sjögren Ett program växer fram... vad satserna gör /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } funktionen printf() används för att skriva textsträngen,mellan parenteserna, på bild- skärmen

Anders Sjögren Ett program växer fram... vad satserna gör /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } funktionen printf() används för att skriva textsträngen,mellaan parenteserna, på bild- skärmen för att kunna an- vända funktionen printf() så måste filen stdio.h inklu- deras (en textfil).

Anders Sjögren Ett program växer fram... vad satserna gör /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } funktionen scanf() används för att läsa ASCII- tecken från tangentbordet och konvertera dessa till ett flyttal som lagras i variabel startKapita l.

Anders Sjögren Ett program växer fram... vad satserna gör /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } funktionen scanf() används för att läsa ASCII- tecken från tangentbordet och konvertera dessa till ett flyttal som lagras i variabel startKapita l. även för scanf() måste stdio.h inkluderas

Anders Sjögren Ett program växer fram... vad satserna gör /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } satsen är ett tilldelnings- uttryck. Variabeln saldo tilldelas värdet av högerledet där innehållet i variabel startKapital multipliceras med 1,085.

Anders Sjögren Ett program växer fram... vad satserna gör /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } satsen är ett tilldelnings- uttryck. Variabeln saldo tilldelas värdet av högerledet där innehållet i variabel startKapital multipliceras med 1,085. OBS! Tilldelning ej som i matematiken VL=HL, i C går x=x+1 bra!

Anders Sjögren Ett program växer fram... vad satserna gör /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } satsen är ett tilldelnings- uttryck. Variabeln saldo tilldelas värdet av högerledet där innehållet i variabel startKapital multipliceras med 1,085. RANTESATS är en symbolisk konstant, textsub- stitut för 8.5. Texten RANTESATS byts mot texten 8.5 vid kompilering av preprocessorn..

Anders Sjögren Ett program växer fram... vad satserna gör /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } printf() som tidigare, \n är ett styrtecken som betyder ny rad.

Anders Sjögren Ett program växer fram... vad satserna gör /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } printf()konverterar variabelinnehåll och värden till relevanta ASCII- tecken som skrivs på skärmen.

Anders Sjögren Ett program växer fram... vad satserna gör /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } konvertera innehållet i variabeln saldo från flyttalsrepresentation till relevanta ASCII- tecken i ett fält med 11 positioner och avrundat till 2 decimaler

Anders Sjögren Ett program växer fram... vad satserna gör /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } när programmet avslutas returneras heltalsvärdet ( int ) 0 till operativsystemet. Detta värde kan användas för att kontrollera på vilket sätt programmet av- slutats.

Anders Sjögren Ett program växer fram... vad satserna gör /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } raden är en kommentar och påverkar inte programmets funktion.

Anders Sjögren Ett program växer fram... förbättringar /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("\n År Saldo\n == =====\n"); printf("%3d%11.2f\n", 1, saldo); return 0; } byt plats på raderna!

Anders Sjögren Ett program växer fram... förbättringar /* Beräknar kapitaltillväxt */ #include #define RANTESATS 8.5 int main ( void ) { floatstartKapital, saldo ; printf("Insatt kapital? "); scanf("%f", &startKapital); printf("\n År Saldo\n == =====\n"); saldo = startKapital * ( 1 + RANTESATS/100 ); printf("%3d%11.2f\n", 1, saldo); return 0; } OK!

Anders Sjögren Ett program växer fram... förbättringar - program med repetition /* Beräknar kapitaltillväxt på 10 år */ #include #define RANTESATS 8.5 #define ANTAL_AR 10 int main ( void ) { floatstartKapital, saldo, kapital ; intar ; printf("Insatt kapital? "); scanf("%f", &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; } lite förändringar och några nya rader ger - iteration !

Anders Sjögren Ett program växer fram... förbättringar - program med repetition /* 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); 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; } startvärde terminering uppräkning

Anders Sjögren Ett program växer fram... förbättringar - program med alternativa vägar /* 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); 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; } observera hur man med indragningar, indenteringar, försöker göra koden lättare att läsa

Anders Sjögren Mata in ett negativt kapital så räknas det baklänges! Ett program växer fram... förbättringar - program med alternativa vägar /* 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; } lite förändringar och några nya rader ger - selektion ! sant falskt

Anders Sjögren Ett program växer fram... förbättringar - program med funktions-moduler /* 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; } många satser efter varandra gör programmet oöverskådligt - dela upp koden i funktioner

Anders Sjögren Ett program växer fram... förbättringar - program med funktions-moduler Funktionskonstruktionen som följer vill visa principer inte detaljer, det kommer senare.

Anders Sjögren Ett program växer fram... förbättringar - program med funktions-moduler /* 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; } Klipp ut!

Anders Sjögren Ett program växer fram... förbättringar - program med funktions-moduler /* 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); return 0; } OK!

Anders Sjögren Ett program växer fram... förbättringar - program med funktions-moduler 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); } Definiera den nya funktionen! klistra in

Anders Sjögren Ett program växer fram... förbättringar - program med funktions-moduler void TabellPaSkarmen( int antalAr, float kapital ) { int ar ; printf("\n År Saldo\n == =====\n"); for ( ar = 1; ar <= antalAr; 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; } Definiera den nya funktionen! lägg till! ändra!

Anders Sjögren Ett program växer fram... förbättringar - program med funktions-moduler /* Beräknar kapitaltillväxt på 10 år framåt eller bakåt */ #include #define RANTESATS 8.5 #define ANTAL_AR 10 void TabellPaSkarmen( int, float ); int main ( void ) { floatkapital ; intar ; printf("Insatt kapital? "); scanf("%f", &kapital); TabellPaSkarmen( ANTAL_AR, kapital ); return 0; } lägg till funktions- deklaration och funktions- anrop här skall funktions- definitionen in i stommen, main() - funktionen

Anders Sjögren Ett program växer fram... förbättringar - program med funktions-moduler här skall funktions- definitionen in /* Beräknar kapitaltillväxt på 10 år framåt eller bakåt */ #include #define RANTESATS 8.5 #define ANTAL_AR 10 void TabellPaSkarmen( int, float ); int main ( void ) { floatkapital ; intar, antalAr; printf("Insatt kapital och antal år ?(--> )--> "); scanf("%f%d", &kapital, &antalAr); TabellPaSkarmen( antalAr, kapital ); return 0; } ändra

Anders Sjögren Ett program växer fram... förbättringar - program med funktions-moduler en översikts- bild av hela programmet /* Beräknar kapitaltillväxt på 10 år framåt eller bakåt */ #include #define RANTESATS 8.5 void TabellPaSkarmen( int, float ); int main ( void ) { floatkapital ; intantalAr; printf("Insatt kapital och antal år ?(--> )--> "); scanf("%f%d", &kapital, &antalAr); TabellPaSkarmen( antalAr, kapital ); return 0; } void TabellPaSkarmen( int antalAr, float kapital ) { int ar ; printf("\n År Saldo\n == =====\n"); for ( ar = 1; ar <= antalAr; 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; }

Anders Sjögren Ett program växer fram... förbättringar - program med funktions-moduler en översiktsbild av hela programmet /* Beräknar kapitaltillväxt på 10 år framåt eller bakåt */ #include #define RANTESATS 8.5 void TabellPaSkarmen( int, float ); int main ( void ) { floatkapital ; intantalAr; printf("Insatt kapital och antal år ?(--> )--> "); scanf("%f%d", &kapital, &antalAr); TabellPaSkarmen( antalAr, kapital ); return 0; } void TabellPaSkarmen( int antalAr, float kapital ) { int ar ; printf("\n År Saldo\n == =====\n"); for ( ar = 1; ar <= antalAr; 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; } stommen funktionen

Anders Sjögren Ett C-program byggs upp av satser i sekvens styrande satser –iteration –selektion funktioner /* Beräknar kapitaltillväxt på 10 år framåt eller bakåt */ #include #define RANTESATS 8.5 void TabellPaSkarmen( int, float ); int main ( void ) { floatkapital ; intantalAr; printf("Insatt kapital och antal år ?(--> )--> "); scanf("%f%d", &kapital, &antalAr); TabellPaSkarmen( antalAr, kapital ); return 0; } void TabellPaSkarmen( int antalAr, float kapital ) { int ar ; printf("\n År Saldo\n == =====\n"); for ( ar = 1; ar <= antalAr; 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; }

Anders Sjögren Slut Övningsuppgift, se anteckningar