ISW Informatica <ul><ul><li>Programmeren </li></ul></ul>
Geschiedenis 1 <ul><li>telraam (Mesopotami ë 3000 v.C) </li></ul><ul><li>Pascal (1623) : mechanische rekenmachine </li></u...
Geschiedenis 2 <ul><li>1e generatie: von Neuman computer: </li></ul><ul><ul><li>1) een centraal geheugen dat het programma...
Geschiedenis 3 <ul><li>2de generatie (jaren 50). </li></ul><ul><li>hardware: twee nieuwe componenten:  </li></ul><ul><ul><...
Geschiedenis 4 <ul><li>3de generatie (vanaf 1965). </li></ul><ul><li>hardware: nieuwe componenten:  </li></ul><ul><ul><li>...
Geschiedenis 5 <ul><li>De vierde generatie (vanaf jaren 70). </li></ul><ul><li>hardware: :  </li></ul><ul><ul><li>zeer goe...
Computers <ul><li>To compute  = berekenen </li></ul><ul><li>Eerste toepassingen numeriek </li></ul><ul><li>Programmeerbare...
Binaire getallen <ul><li>Er zijn10 soorten mensen </li></ul><ul><li>De mensen die het binaire stelsel begrijpen en de mens...
Programmeren <ul><li>Computerprogramma </li></ul><ul><li>expliciete lijst van instructies die aangeven wat de computer moe...
Compromis <ul><li>Bij het opstellen van een programma moet evenwicht gevonden worden tussen </li></ul><ul><li>volledigheid...
Afwegingen <ul><li>Goed programma </li></ul><ul><ul><li>betrouwbaar </li></ul></ul><ul><ul><li>stabiel </li></ul></ul><ul>...
Problem solving <ul><li>Cyclus </li></ul><ul><li>analyse van het probleem </li></ul><ul><li>keuze en ontwerp van de oploss...
Methode 1: Top-down <ul><li>eerst globaal </li></ul><ul><li>weinig aandacht voor details </li></ul><ul><li>later details i...
Methode 2: Bottom-up <ul><li>eerst deelproblemen oplossen  (   deelprogramma’s) </li></ul><ul><li>deze deelprogramma’s ge...
Methode 1/2: hybride <ul><li>top-down design van oplossing </li></ul><ul><li>bottom-up om beschikbare componenten maximaal...
Een problem solving illustratie <ul><li>lekke band met de auto </li></ul><ul><li>opdracht: schrijf een programma dat aan d...
Top-down oplossing <ul><li>Gegevens </li></ul><ul><li>defect wiel </li></ul><ul><li>reservewiel </li></ul><ul><li>gereedsc...
Bottom-up oplossing <ul><li>Bout losdraaien </li></ul><ul><li>zet sleutel </li></ul><ul><li>draai in tegenwijzerzin </li><...
Procedureel programmeren <ul><li>Modulair programmeren: een groot programma moet verdeeld kunnen worden in verscheidene kl...
Object-georiënteerd programmeren <ul><li>Modulair: aparte blokken met duidelijke interface </li></ul><ul><li>Nadruk op dat...
Beslissingstabellen <ul><li>Nadelen: </li></ul><ul><ul><li>werkt enkel voor eenvoudige problemen </li></ul></ul><ul><ul><l...
Analyse en ontwerp en  <ul><li>Hulpmiddelen bij het analyseren en ontwerpen </li></ul><ul><li>van programma’s: </li></ul><...
Flow charts
Flowcharts <ul><li>Symbolen </li></ul><ul><li>rechthoeken om verzamelingen akties voor te stellen met 1 beginpunt en 1 ein...
Data-flow charts
Data-flow charts <ul><li>beschrijven wat er met de gegevens gebeurt. Voor elk gegeven zijn de opeenvolgende bewerkingen di...
Gestructureerde flowcharts <ul><li>programma's opbouwen met behulp van modules die één beginpunt en één eindpunt hebben (r...
Gestructureerde flowcharts
Gestructureerde flowcharts <ul><li>Herhalingsinstructie </li></ul>
Pseudocode <ul><li>Voorbeeld: </li></ul><ul><li>Program  repareer </li></ul><ul><ul><li>controleer wiel </li></ul></ul><ul...
Aanpasbaarheid van een programma <ul><li>totale kostprijs van een professioneel softwarepakket wordt hoofdzakelijk bepaald...
Leesbaarheid van een programma <ul><li>Uitvoerbare code </li></ul><ul><ul><li>Modulaire structuur </li></ul></ul><ul><ul><...
Upcoming SlideShare
Loading in …5
×

Isw Programmeren

782 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
782
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Isw Programmeren

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

×