Download de presentatie
GepubliceerdAndrea Verbeke Laatst gewijzigd meer dan 9 jaar geleden
1
Analoog/Digitaal Analoog Digitaal
Elementen kunnen alle toestanden aannemen (continu) Digitaal Elementen nemen beperkt aantal toestanden aan (discreet) => Binair: twee toestanden 0 en 1 Wel/niet, aan/uit, geladen/ongeladen Binair geheugen eenvoudiger dan analoog Bit (binary digit) - informatie in één cel Byte (= by eight) - 8 bits bij elkaar
2
Digitaliseren Van analoog naar digitaal Tekeningen/beelden/foto's:
Geluid : digitale audio == compact disc
3
Machine-instructies De CPU van een computer kan alleen instructies begrijpen die er zijn “ingebakken”. (machine-instructies) De instructies verschillen sterk per CPU: Motorola /Z80 / 8086 / Pentium Machine-instructies zijn voor normale mensen niet leesbaar: 3E 20 1A 37 BC (hexadecimaal geschreven)
4
talstelsels positiestelsel tientallig heeft 10 cijfers:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 7-tallig 1 2 3 4 5 6 10 11 12 13 14 15 16 20 21 22 2-tallig 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 16-tallig 1 2 3 4 5 6 7 8 9 A B C D E F 10 positiestelsel tientallig heeft 10 cijfers: 234 betekent 2x100+3x10+4x1 zeventallig heeft 7 cijfers: 2347= 2x49+3x7+4x1=12310 tweetallig heeft 2 cijfers: = 1x32 + 0x16 +1x8 +0x4 + 1x2 +1x1=4310 zestientallig heeft 16 “cijfers”: na de 9 komt A, B, C, D, E en F 3E16=3x x1=6210
5
Binaire getallen Negatieve getallen m.b.v. één bit voor het teken 16-bits --> van , .., -1, -0, +0,+1, .., Gebroken getallen: = 1x4 + 0x2 +1x1 + 0x1/2+ 1x1/4+1x1/8 Fixed point notatie: ( ) vast aantal bytes voor het gehele deel en vast aantal bytes voor het gebroken deel Floating point notatie: ( E +5) vast aantal bytes voor de significante cijfers (mantisse) en voor de exponent (niet zo veel)
6
Binair rekenen Optellen: 0+0 = 0, 0+1= 1, 1+0 = 1, 1+1=0 (1 onthouden)
Vermenigvuldigen: 0*0 = 0*1 = 1*0 = 0, 1*1 = 1 vb: (2 plaatsen verschoven)
7
Mensentaal Mondelinge opdrachten zijn vaak onvolledig en dubbelzinnig
“Schiet op!” “Help” “Bereken mijn salaris” “Simuleer een vogel” Een CPU kan hiermee niet overweg
8
Probleem ? CPU mensentaal machine-instructies
9
Oplossingen?! 1e niveau (generatie ) : Machinetaal 00000001 01100101
elementaire instructie geheugenadres 2e niveau (generatie): Assembleertalen HAALOP getal BERGOP resultaat ASSEMBLEERTAAL MACHINETAAL PROGRAMMA ASSEMBLER mnemonic symbolisch adres
10
Oplossingen ? De mens leert machine-instructies
opnieuw leren voor nieuwe computer (computerafhankelijk) ingewikkeld voor grotere programma’s De computer leert mensentaal Kunstmatige Intelligentie in het algemeen complex meest wenselijk 1946 201?
11
Oplossing ! De mens leert opdrachten te geven in een taal die zowel mensen als computers kunnen begrijpen: (hogere) programmeertaal Opdrachten in deze taal worden door de computer omgezet naar machine-instructies voor CPU. 1946 2??? !
12
(hogere) programmeertaal
voor de mens begrijpbaar: leesbaar inzichtelijk met hulp om foutloos te werken voor de computer begrijpbaar : eenduidig: strikte, formele regels goed in machine-code om te zetten voor meerdere CPU’s geschikt
13
Vertalen (noodzakelijk)
Twee vormen van vertalen: COMPILEREN: hele programma vertalen, nog niet uitvoeren vergelijkbaar met vertalen boek INTERPRETEREN: per opdracht vertalen en meteen uitvoeren vergelijkbaar met vertolken
14
Geschiedenis Start Assembler: 1-op-1 met machine-instructie 1960 Fortran / Basic / Cobol: complexere opdrachten 1970 Pascal / C: gestructureerd 1980 SmallTalk / C++: objectgeörienteerd 1990 Java: gedistribueerd
15
Java geschiedenis: genealogie
16
Programmeertermen Edit - Het opstellen van de tekst in een programmeertaal (broncode of source). Compile - Het omzetten van deze tekst naar machine-instructies. Run - Het uitvoeren van de machine- instructies. Debug - Het herstellen van fouten in de programmeertekst.
17
Java Pascal Basic bron- code CPU Compiler en opslaan Interpreter
machine- instructies Interpreter vertalen en direct uitvoeren Compiler en opslaan OS: uitvoeren “bytecode” JVM en uitvoeren Java Basic Pascal
18
Java Compilatie-proces
bytecode in Java Classes Java Virtual Machine (interpreteren) broncode in de programmeertaal Java Java Compiler CPU Classes in Java Bibliotheek Java (progr), Appletviewer Browser, Server Classes op het Internet
19
Drie Soorten Fouten Syntax-fout: zondigen tegen de regels.
door compiler achterhaald. Run-time fout: programma werkt niet zoals programmeur wil (“crash”). door debuggen of (alpha-) testen achterhaald. Ontwerpfout: programma werkt zoals de programmeur het wil, maar doet niet wat gebruiker wil. Wordt door (beta-)testen achterhaald.
20
Edit-Compile-Debug Loop
start End Edit broncode compileer test syntaxfout? runtime fout? ja nee debug Ontwerpfouten ontdek je zo niet! nee
21
“Waterval model” Software engineering systeemeisen bepalen
Edit-Compile- Debug Loop softwareeisen bepalen software ontwerp programmeren en deeltesten systeem testen “Waterval model” operationeel systeem
22
Java: Hello World Program HelloWorld.java public class HelloWorld
{ public static void main(String[] args) { System.out.println("Hello World!"); } c:\pract>javac HelloWorld.java c:\pract>java HelloWorld Hello World! c:\pract>
23
Algoritmen Een computer kent alleen simpele opdrachten (elementaire instructieset). Hoe laat je een computer complexe laten uitvoeren? Met behulp van algoritmen!
24
Wat is een algoritme? Een algoritme legt precies vast hoe een bepaalde taak moet worden uitgevoerd in termen van simpele opdrachten. Eisen: Een algoritme moet eenduidig zijn. Een algoritme moet uitvoerbaar zijn. Een algoritme moet eindigen. Het oudste voorbeeld: bepaal de grootste gemene deler van twee getallen.
25
Grootste Gemene Deler (Euclides, Alexandria, 300 v.Chr.)
Om de GGD van a en b te bepalen, doe het volgende: 1) maak a het grootste getal en b het kleinste, 2) maak c de rest van a gedeeld door b, 3) als c nul is, dan is b het antwoord, 4) anders stop b in a, c in b, en ga naar stap 2.
26
Nassi-Shneidermann diagram
Om een algoritme te ontwerpen, kun je het best gestructureerd te werk gaan. Het NS-diagram helpt je daarbij. Het NS diagram bestaat uit blokken. Ieder blok is 1 opdracht. De blokken kunnen worden samengevoegd. Nassi-Shneidermann diagram
27
NS: Sequentie Om aan te geven dat opdrachten achter elkaar moeten worden uitgevoerd, plaats je rechthoeken onder elkaar: Doe eerst dit Dan dit En tenslotte dit
28
NS: Iteratie Om herhaling van een aantal opdrachten aan te geven, zet je een haak om een groep blokken: Doe eerst dit Dan dit En tenslotte dit Zolang het nog moet Totdat het niet meer hoeft
29
NS: Selectie Je kunt aangeven dat een opdracht alleen onder bepaalde voorwaarden moet worden uitgevoerd: Doe dat Doe dit Voorwaarde voldaan? ja nee
30
NS: combinatie Omdat het samenvoegen van blokken ook weer blokken oplevert, kun je het voorgaande ook combineren: maak a grootste en b kleinste getal maak c de rest van a gedeeld door b is c nul ? ja nee stop b in a herhaal totdat c nul is het antwoord is b stop c in b bepaal GGD(a,b)
31
Opdrachten Verken het programma structorizer
Teken in structorizer de NS voor GGD Teken een NS-diagram voor de bediening van een (eenvoudige) magnetron
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.