SlideShare a Scribd company logo
ISW Informatica Programmeren
Geschiedenis 1 telraam (Mesopotami ë 3000 v.C) Pascal (1623) : mechanische rekenmachine Babbage (1822): eerste volautomatische computer met geheugen voor tussenresultaten en geheugen voor instructies ontworpen( "Analytical Engine”) Augusta Ada Byron (1843) eerste programma voor de "analytical engine” Herman Hollerith (1890):  volkstelling d.m.v. geperforeerde kartonnen kaarten Alan TURING (1936) artikel 'On computable numbers’. Concept bevatte eigenschappen van de moderne computer. Dat jaar gebouwd. 1946 ENIAC: eerste elektronische computer voor algemene doeleinden
Geschiedenis 2 1e generatie: von Neuman computer: 1) een centraal geheugen dat het programma, de gegevens, de tussenresultaten en de resultaten van de bewerkingen kan bevatten. 2) een stuureenheid met een teller om de instructies één voor één uit het geheugen te lezen en ze uit te voeren; 3) een rekeneenheid die rekenkundige en logische bewerkingen verricht onder leiding van de stuureenheid, met gegevens afkomstig uit het geheugen. 4) in- en uitvoerapparaten die de communicatie tussen computer en gebruiker mogelijk maken Zeer klein geheugen (akoestische vertragingslijnen met kwik of geheugen kathode straalbuizen)
Geschiedenis 3 2de generatie (jaren 50). hardware: twee nieuwe componenten:  radiobuis    transistor als schakelaar in stuur- en rekenkundige eenheden, kwiklijnen  en kathode straalbuizen    magnetische ferriet ringetjes in centraal geheugen. besturing: batch (= letterlijk: stapel) programmeren: grotere rekenkracht   complexe programma’s    hogere programmeertaal :  1956: FORTRAN
Geschiedenis 4 3de generatie (vanaf 1965). hardware: nieuwe componenten:  ge ïntegreerde schakelingen ( meerdere transistoren, en hun doorverbindingen, samen op een enkel plaatje silicium - chips) besturing: interactieve minicomputers, systeemsoftware programmeren: FORTRAN, software engineering, Pascal
Geschiedenis 5 De vierde generatie (vanaf jaren 70). hardware: :  zeer goedkope microprocessoren persoonlijke computer: Apple 2 (1978), IBM PC (1981) besturing: UNIX, MS-DOS en Windows talen:  C als basis van UNIX (oorspronkelijk in assembler) object-geori ënteerde talen toepassingsgerichte omgevingen (bijvoorbeeld: spreadsheets, tekstverwerking)
Computers To compute  = berekenen Eerste toepassingen numeriek Programmeerbare digitale computer programmeerbaar: instructies maken geen deel uit van de machine digitaal: informatie wordt voorgesteld door getallen ( digits )
Binaire getallen Er zijn10 soorten mensen De mensen die het binaire stelsel begrijpen en de mensen die dat niet begrijpen Basis 2 …  2^2|2^1|2^0 1011
Programmeren Computerprogramma expliciete lijst van instructies die aangeven wat de computer moet doen om  input  om te zetten in betekenisvolle  output   een programma is een recept voor  problem solving   een programma is een model van de werkelijkheid Specificaties. Beschrijven wat programma kan doen. Defini ëren: verzameling van alle mogelijke gegevens die ingevoerd kunnen worden verzameling van alle mogelijke resultaten functie die elk element van 1ste verzameling doet overeenstemmen met een element van de 2de verzameling
Compromis Bij het opstellen van een programma moet evenwicht gevonden worden tussen volledigheid en correctheid inspanning voor het opstellen van de specificaties Factoren aantal gebruikers van een programma aantal andere programma’s waarmee gegevens uitgewisseld moeten worden
Afwegingen Goed programma betrouwbaar stabiel effici ënt  in ontwikkeling  effici ënt  in uitvoering (geheugen en rekentijd) flexibel leesbaar Quality is fitness for purpose. Er is geen pasklare oplossing
Problem solving Cyclus analyse van het probleem keuze en ontwerp van de oplossing realisatie van de oplossing evaluatie van de oplossing Oplossing van complexe problemen splitsen in deelproblemen die onafhankelijk van elkaar opgelost kunnen worden.
Methode 1: Top-down eerst globaal weinig aandacht voor details later details invullen, rekening houdend met middelen eventueel feedback naar globaal niveau wanneer blijkt dat deeloplossingen niet optimaal zijn qua haalbaarheid (bijvoorbeeld: te duur) zeker aan te raden wanneer problemen omvangrijk zijn of niet echt bekend
Methode 2: Bottom-up eerst deelproblemen oplossen  (   deelprogramma’s) deze deelprogramma’s gebruiken als bouwstenen verder gaan tot het probleem opgelost eventueel feedback naar globaal niveau wanneer blijkt dat deeloplossingen slecht gekozen zijn heeft vooral zin wanneer je niet met een schone lei begint, en stukken bestaande programma’s opnieuw wilt gebruiken werkt alleen als die bestaande programma’s voldoende algemeen zijn, en informatie-uitwisseling transparant is
Methode 1/2: hybride top-down design van oplossing bottom-up om beschikbare componenten maximaal in te passen in de globale oplossing Risico’s van  hergebruik van deelprogramma’s Voorbeeld: Europese raket Ariane 5 Hergebruik Ariane 4 deelprogramma Een ander programma probeerde een getal van 64 bits lang in een ruimte voor een 16 bit getal te “proppen” Gevolg: raket stortte na 37 seconden neer Belangrijk: testen voor nieuwe situaties Risico op over-veralgemenisering (“o, dat kunnen we al”)
Een problem solving illustratie lekke band met de auto opdracht: schrijf een programma dat aan de chauffeur uitlegt wat hij moet doen eerst keuze van strategie (ANWB bellen, repareren, om hulp roepen, …)
Top-down oplossing Gegevens defect wiel reservewiel gereedschap Acties op gegevens onderzoek reservewiel indien OK, monteer Monteer neem gereedschap neem reservewiel vervang defect wiel door reservewiel ruim gereedschap op
Bottom-up oplossing Bout losdraaien zet sleutel draai in tegenwijzerzin indien klem, sta op sleutel Wiel demonteren Bout losdraaien alle andere bouten losdraaien bouten opzijleggen wiel afnemen Hergebruik wisselen van banden om slijtage voor en achter te uniformiseren Van lekke band: een schommel maken voor de kinderen
Procedureel programmeren Modulair programmeren: een groot programma moet verdeeld kunnen worden in verscheidene kleinere delen die apart geprogrammeerd kunnen worden eventueel door verschillende programmeurs een goed gedefinieerde interface hebben om met de andere delen te interageren Procedureel: Nadruk op handelingen (procedures, routines, functies) procedures zijn de bouwstenen van een programma gegevens (data) gescheiden van de procedures Model open(door)
Object-georiënteerd programmeren Modulair: aparte blokken met duidelijke interface Nadruk op data (objecten) objecten zijn de bouwstenen van een programma gegevens (data) samen ingekapseld met de procedures Model door.open Klassen en objecten
Beslissingstabellen Nadelen: werkt enkel voor eenvoudige problemen geen aanduiding van volgorde in uitvoering  van handelingen Externe hulp nodig Tracht gereedschappen te lenen of roep externe hulp Gereedschappen  niet  OK Externe hulp nodig Herstel zelf Gereedschappen OK Reserve wiel  niet  OK Reservewiel OK
Analyse en ontwerp en  Hulpmiddelen bij het analyseren en ontwerpen van programma’s: beslissingstabellen flowcharts gestructureerde flow charts Nassi-Schneiderman pseudocode naamgeving en commentaar
Flow charts
Flowcharts Symbolen rechthoeken om verzamelingen akties voor te stellen met 1 beginpunt en 1 eindpunt. ruiten om beslissingen betreffende het verder verloop van het programma voor te stellen. georiënteerde lijnen tussen deze elementen om het verloop van het programma voor te stellen  Nadelen gegevensstructuren worden niet voorgesteld leggen geen structuur op kunnen leiden tot grote lappen papier moeten handmatig vertaald worden naar ‘code’
Data-flow charts
Data-flow charts beschrijven wat er met de gegevens gebeurt. Voor elk gegeven zijn de opeenvolgende bewerkingen die het ondergaat voorgesteld. bijzonder nuttig om de uitwisselingen van gegevens tussen verschillende programma’s op een overzichtelijke wijze weer te geven. Ook, in combinatie met programmastroomschema's, om bepaalde programmafouten op te sporen en om een optimale volgorde van instructies te zoeken. Als bepaalde gegevens op verschillende manier behandeld kunnen worden in een programma, kan men dat niet op een eenvoudige wijze weergeven in de gegevensstroomschema's en is men dikwijls verplicht voor elk geval een afzonderlijk schema te tekenen.
Gestructureerde flowcharts programma's opbouwen met behulp van modules die één beginpunt en één eindpunt hebben (rechthoek) In plaats van spronginstructies: twee gespecialiseerde controle-instructies: voor selekties  voor herhalingen
Gestructureerde flowcharts
Gestructureerde flowcharts Herhalingsinstructie
Pseudocode Voorbeeld: Program  repareer controleer wiel controleer gereedschap vervang wiel berg gereedschap op Procedure  vervang wiel neem gereedschap draai bouten los leg bouten weg neem wiel1 af monteer wiel2 draai bouten vast
Aanpasbaarheid van een programma totale kostprijs van een professioneel softwarepakket wordt hoofdzakelijk bepaald door  testen  de  vele  kleine aanpassingen die nodig blijken gedurende de normale levensduur van een softwarepakket.  Hieruit kan men besluiten dat het gemak waarmee men programma's kan testen en wijzigen een doorslaggevende invloed zal hebben op de totale kostprijs van de programma's.
Leesbaarheid van een programma Uitvoerbare code Modulaire structuur Duidelijke, intuïtieve naamgeving van variabelen en modules Indentering Commentaar Is deel van het programma maar wordt niet door de computer uitgevoerd Essentieel: ook anderen kunnen dan het programma aanpassen Het programma zonder de commentaar doet hetzelfde als mè t Nadeel: niets belet dat commentaar verkeerd is, of niet wordt aangepast

More Related Content

PDF
Activate Tech and Media Outlook 2017
PPTX
iARM UI configuration
PPTX
Informatica inleiding
PDF
Analyse Road accidents
PPTX
Bits en Atomen; Electronica als Linking Pin; Presentatie voor AdeKUS/FTeW; Pi...
PPTX
Cursus - Stresstest voor de pc
PDF
Hands On Ethical Hacking and Network Defense 2nd Edition Simpson Test Bank
PDF
Data-science, een kwestie van goed samenwerken
Activate Tech and Media Outlook 2017
iARM UI configuration
Informatica inleiding
Analyse Road accidents
Bits en Atomen; Electronica als Linking Pin; Presentatie voor AdeKUS/FTeW; Pi...
Cursus - Stresstest voor de pc
Hands On Ethical Hacking and Network Defense 2nd Edition Simpson Test Bank
Data-science, een kwestie van goed samenwerken

Similar to Isw Programmeren (20)

PDF
Data-science, een kwestie van goed samenwerken
PPTX
Bs 2 les 20110328
PPT
D0R29A-Sessie5a-20071031
PDF
Meetup at SIG: Meten is weten
PDF
Instant Access to Windows Kernel Programming Second Edition Pavel Yosifovich ...
PDF
Content hot topics scia engineer
PDF
Management Game "Tactec Moodle"; ontwikkel een plan voor de invoering van Moodle
PDF
Starting out with Visual C 2010 2nd Edition Edition Tony Gaddis
DOCX
Didax Beheerhandboek v300
PPTX
Niet onderhoudbare software in 10 makkelijke stappen
PPS
PhD presentation
PPT
Large assy's in Autodesk Inventor
PDF
Test Bank for Systems Analysis and Design 11th Edition by Tilley
PPT
Webcommunicatie / college 3
PPT
Presentatie Gemeente Terneuzen samenwerking met IBM ~1841203
PDF
Computer Reparatie
PDF
C++ Programming: From Problem Analysis to Program Design (MindTap Course List...
PPTX
Powerpoint de schil
PPSX
New features cognos10.2
Data-science, een kwestie van goed samenwerken
Bs 2 les 20110328
D0R29A-Sessie5a-20071031
Meetup at SIG: Meten is weten
Instant Access to Windows Kernel Programming Second Edition Pavel Yosifovich ...
Content hot topics scia engineer
Management Game "Tactec Moodle"; ontwikkel een plan voor de invoering van Moodle
Starting out with Visual C 2010 2nd Edition Edition Tony Gaddis
Didax Beheerhandboek v300
Niet onderhoudbare software in 10 makkelijke stappen
PhD presentation
Large assy's in Autodesk Inventor
Test Bank for Systems Analysis and Design 11th Edition by Tilley
Webcommunicatie / college 3
Presentatie Gemeente Terneuzen samenwerking met IBM ~1841203
Computer Reparatie
C++ Programming: From Problem Analysis to Program Design (MindTap Course List...
Powerpoint de schil
New features cognos10.2
Ad

Isw Programmeren

  • 2. Geschiedenis 1 telraam (Mesopotami ë 3000 v.C) Pascal (1623) : mechanische rekenmachine Babbage (1822): eerste volautomatische computer met geheugen voor tussenresultaten en geheugen voor instructies ontworpen( "Analytical Engine”) Augusta Ada Byron (1843) eerste programma voor de "analytical engine” Herman Hollerith (1890): volkstelling d.m.v. geperforeerde kartonnen kaarten Alan TURING (1936) artikel 'On computable numbers’. Concept bevatte eigenschappen van de moderne computer. Dat jaar gebouwd. 1946 ENIAC: eerste elektronische computer voor algemene doeleinden
  • 3. Geschiedenis 2 1e generatie: von Neuman computer: 1) een centraal geheugen dat het programma, de gegevens, de tussenresultaten en de resultaten van de bewerkingen kan bevatten. 2) een stuureenheid met een teller om de instructies één voor één uit het geheugen te lezen en ze uit te voeren; 3) een rekeneenheid die rekenkundige en logische bewerkingen verricht onder leiding van de stuureenheid, met gegevens afkomstig uit het geheugen. 4) in- en uitvoerapparaten die de communicatie tussen computer en gebruiker mogelijk maken Zeer klein geheugen (akoestische vertragingslijnen met kwik of geheugen kathode straalbuizen)
  • 4. Geschiedenis 3 2de generatie (jaren 50). hardware: twee nieuwe componenten: radiobuis  transistor als schakelaar in stuur- en rekenkundige eenheden, kwiklijnen en kathode straalbuizen  magnetische ferriet ringetjes in centraal geheugen. besturing: batch (= letterlijk: stapel) programmeren: grotere rekenkracht  complexe programma’s  hogere programmeertaal : 1956: FORTRAN
  • 5. Geschiedenis 4 3de generatie (vanaf 1965). hardware: nieuwe componenten: ge ïntegreerde schakelingen ( meerdere transistoren, en hun doorverbindingen, samen op een enkel plaatje silicium - chips) besturing: interactieve minicomputers, systeemsoftware programmeren: FORTRAN, software engineering, Pascal
  • 6. Geschiedenis 5 De vierde generatie (vanaf jaren 70). hardware: : zeer goedkope microprocessoren persoonlijke computer: Apple 2 (1978), IBM PC (1981) besturing: UNIX, MS-DOS en Windows talen: C als basis van UNIX (oorspronkelijk in assembler) object-geori ënteerde talen toepassingsgerichte omgevingen (bijvoorbeeld: spreadsheets, tekstverwerking)
  • 7. Computers To compute = berekenen Eerste toepassingen numeriek Programmeerbare digitale computer programmeerbaar: instructies maken geen deel uit van de machine digitaal: informatie wordt voorgesteld door getallen ( digits )
  • 8. Binaire getallen Er zijn10 soorten mensen De mensen die het binaire stelsel begrijpen en de mensen die dat niet begrijpen Basis 2 … 2^2|2^1|2^0 1011
  • 9. Programmeren Computerprogramma expliciete lijst van instructies die aangeven wat de computer moet doen om input om te zetten in betekenisvolle output een programma is een recept voor problem solving een programma is een model van de werkelijkheid Specificaties. Beschrijven wat programma kan doen. Defini ëren: verzameling van alle mogelijke gegevens die ingevoerd kunnen worden verzameling van alle mogelijke resultaten functie die elk element van 1ste verzameling doet overeenstemmen met een element van de 2de verzameling
  • 10. Compromis Bij het opstellen van een programma moet evenwicht gevonden worden tussen volledigheid en correctheid inspanning voor het opstellen van de specificaties Factoren aantal gebruikers van een programma aantal andere programma’s waarmee gegevens uitgewisseld moeten worden
  • 11. Afwegingen Goed programma betrouwbaar stabiel effici ënt in ontwikkeling effici ënt in uitvoering (geheugen en rekentijd) flexibel leesbaar Quality is fitness for purpose. Er is geen pasklare oplossing
  • 12. Problem solving Cyclus analyse van het probleem keuze en ontwerp van de oplossing realisatie van de oplossing evaluatie van de oplossing Oplossing van complexe problemen splitsen in deelproblemen die onafhankelijk van elkaar opgelost kunnen worden.
  • 13. Methode 1: Top-down eerst globaal weinig aandacht voor details later details invullen, rekening houdend met middelen eventueel feedback naar globaal niveau wanneer blijkt dat deeloplossingen niet optimaal zijn qua haalbaarheid (bijvoorbeeld: te duur) zeker aan te raden wanneer problemen omvangrijk zijn of niet echt bekend
  • 14. Methode 2: Bottom-up eerst deelproblemen oplossen (  deelprogramma’s) deze deelprogramma’s gebruiken als bouwstenen verder gaan tot het probleem opgelost eventueel feedback naar globaal niveau wanneer blijkt dat deeloplossingen slecht gekozen zijn heeft vooral zin wanneer je niet met een schone lei begint, en stukken bestaande programma’s opnieuw wilt gebruiken werkt alleen als die bestaande programma’s voldoende algemeen zijn, en informatie-uitwisseling transparant is
  • 15. Methode 1/2: hybride top-down design van oplossing bottom-up om beschikbare componenten maximaal in te passen in de globale oplossing Risico’s van hergebruik van deelprogramma’s Voorbeeld: Europese raket Ariane 5 Hergebruik Ariane 4 deelprogramma Een ander programma probeerde een getal van 64 bits lang in een ruimte voor een 16 bit getal te “proppen” Gevolg: raket stortte na 37 seconden neer Belangrijk: testen voor nieuwe situaties Risico op over-veralgemenisering (“o, dat kunnen we al”)
  • 16. Een problem solving illustratie lekke band met de auto opdracht: schrijf een programma dat aan de chauffeur uitlegt wat hij moet doen eerst keuze van strategie (ANWB bellen, repareren, om hulp roepen, …)
  • 17. Top-down oplossing Gegevens defect wiel reservewiel gereedschap Acties op gegevens onderzoek reservewiel indien OK, monteer Monteer neem gereedschap neem reservewiel vervang defect wiel door reservewiel ruim gereedschap op
  • 18. Bottom-up oplossing Bout losdraaien zet sleutel draai in tegenwijzerzin indien klem, sta op sleutel Wiel demonteren Bout losdraaien alle andere bouten losdraaien bouten opzijleggen wiel afnemen Hergebruik wisselen van banden om slijtage voor en achter te uniformiseren Van lekke band: een schommel maken voor de kinderen
  • 19. Procedureel programmeren Modulair programmeren: een groot programma moet verdeeld kunnen worden in verscheidene kleinere delen die apart geprogrammeerd kunnen worden eventueel door verschillende programmeurs een goed gedefinieerde interface hebben om met de andere delen te interageren Procedureel: Nadruk op handelingen (procedures, routines, functies) procedures zijn de bouwstenen van een programma gegevens (data) gescheiden van de procedures Model open(door)
  • 20. Object-georiënteerd programmeren Modulair: aparte blokken met duidelijke interface Nadruk op data (objecten) objecten zijn de bouwstenen van een programma gegevens (data) samen ingekapseld met de procedures Model door.open Klassen en objecten
  • 21. Beslissingstabellen Nadelen: werkt enkel voor eenvoudige problemen geen aanduiding van volgorde in uitvoering van handelingen Externe hulp nodig Tracht gereedschappen te lenen of roep externe hulp Gereedschappen niet OK Externe hulp nodig Herstel zelf Gereedschappen OK Reserve wiel niet OK Reservewiel OK
  • 22. Analyse en ontwerp en Hulpmiddelen bij het analyseren en ontwerpen van programma’s: beslissingstabellen flowcharts gestructureerde flow charts Nassi-Schneiderman pseudocode naamgeving en commentaar
  • 24. Flowcharts Symbolen rechthoeken om verzamelingen akties voor te stellen met 1 beginpunt en 1 eindpunt. ruiten om beslissingen betreffende het verder verloop van het programma voor te stellen. georiënteerde lijnen tussen deze elementen om het verloop van het programma voor te stellen Nadelen gegevensstructuren worden niet voorgesteld leggen geen structuur op kunnen leiden tot grote lappen papier moeten handmatig vertaald worden naar ‘code’
  • 26. Data-flow charts beschrijven wat er met de gegevens gebeurt. Voor elk gegeven zijn de opeenvolgende bewerkingen die het ondergaat voorgesteld. bijzonder nuttig om de uitwisselingen van gegevens tussen verschillende programma’s op een overzichtelijke wijze weer te geven. Ook, in combinatie met programmastroomschema's, om bepaalde programmafouten op te sporen en om een optimale volgorde van instructies te zoeken. Als bepaalde gegevens op verschillende manier behandeld kunnen worden in een programma, kan men dat niet op een eenvoudige wijze weergeven in de gegevensstroomschema's en is men dikwijls verplicht voor elk geval een afzonderlijk schema te tekenen.
  • 27. Gestructureerde flowcharts programma's opbouwen met behulp van modules die één beginpunt en één eindpunt hebben (rechthoek) In plaats van spronginstructies: twee gespecialiseerde controle-instructies: voor selekties voor herhalingen
  • 30. Pseudocode Voorbeeld: Program repareer controleer wiel controleer gereedschap vervang wiel berg gereedschap op Procedure vervang wiel neem gereedschap draai bouten los leg bouten weg neem wiel1 af monteer wiel2 draai bouten vast
  • 31. Aanpasbaarheid van een programma totale kostprijs van een professioneel softwarepakket wordt hoofdzakelijk bepaald door testen de vele kleine aanpassingen die nodig blijken gedurende de normale levensduur van een softwarepakket. Hieruit kan men besluiten dat het gemak waarmee men programma's kan testen en wijzigen een doorslaggevende invloed zal hebben op de totale kostprijs van de programma's.
  • 32. Leesbaarheid van een programma Uitvoerbare code Modulaire structuur Duidelijke, intuïtieve naamgeving van variabelen en modules Indentering Commentaar Is deel van het programma maar wordt niet door de computer uitgevoerd Essentieel: ook anderen kunnen dan het programma aanpassen Het programma zonder de commentaar doet hetzelfde als mè t Nadeel: niets belet dat commentaar verkeerd is, of niet wordt aangepast