Imperatief programmeren

Slides:



Advertisements
Verwante presentaties
Objectgeoriënteerd Programmeren in C++
Advertisements

Computers Door: Jelle Smits 3TG erste.
Hoofdstuk 1 Programmeren.
Inleiding programmeren in C++ Life Science & Technology 19 januari Universiteit Leiden.
Het ontwerpen van een klasse
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
Klassen en objecten.
Greenfoot Workshop Bobby - Snake.
Hoofdstuk 1 Programmeren.
Hoofdstuk 2 Hallo, C# !.
‘Inleiding programmeren in Java’ Derde college Maandag 22 januari 2001 drs. F. de Vries.
Frank Stalpers en Ad Baars
Visual Basic .NET voor studenten
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Consoletoepassing Variabelen Klassen
Algoritmiek Object-georiënteerd Programmeren
Inleiding programmeren in C++ Life Science & Technology Inleiding
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Hoofdstuk 2 Java. Soorten Java-programma’s nJava Applet programma “leeft” op een WWW-pagina nJava Application programma heeft een eigen window nJavascript.
Visual Basic.NET voor studenten De VB- ontwikkelomgeving Hoofdstuk 2.
Hoorcollege 2 Basis gameprogrammeren. Soorten programma’s Console- applicatie.
Keuzevak in de Tweede Fase HAVO en VWO
De eerste computers.
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Hoorcollege 1a Praktische zaken. Gameprogrammeren Doel van het vak: Games programmeren (de game loop, sprites, audio, physics, animatie…) Basisprogrammeertechnieken.
PROGRAMMEREN LOGISCH en FUNCTIONEEL Ik zeg wat ik denk!
Hoofdstuk 3 Methoden om te tekenen.
Ca1-1 Les 1: Inleiding Computer Science is a science of abstraction -creating the right model for a problem and devising the appropriate mechanizable techniques.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Imperatief programmeren nJeroen Fokker. Wat heb je nodig? nCollegediktaat ukopen bij A-Eskwadraat (BBG-238) uof zelf downloaden en uitprinten nSolis-id.
Studiehouding Ergens verstand van krijgen kost tijd… Uren die je alleen in je boeken doorbrengt maken het verschil. Er is niets mis met onafhankelijkheid.
Mobiel programmeren Jeroen Fokker.
7 Databases i&i-conferentie 25 november Databases i&i-conferentie 25 november 2015 Van boek naar interactief 2001: Turing (voorloper Enigma) twee.
Hoofdstuk 2 Hallo, C# !. Opbouw broncode nOpdrachten om het geheugen te veranderen nOpdrachten zijn gegroepeerd in methoden nMethoden zijn gegroepeerd.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Soorten programma’s nConsole- applicatie. Soorten programma’s nConsole- applicatie nWindows- applicatie.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 3 inleveropdrachten) college Tent. 1 Tent. 3 college prakt. 1 prakt. 3 prakt.
Windows-applicatie class HalloWin1 { static void Main ( ) { } Form scherm; scherm = new Form( ); Application.Run(scherm); using System.Windows.Forms; scherm.Text.
1 K. Werschkull Programmeren in Delphi 7 De ontwikkeling van de computer Programmeertalen Compilers Hoofdstuk 1 Hoofdstuk 1: De ontwikkeling van de computer.
C++ Les 1: introductie. Programmeren Programma’s scripts Websites libraries (Sound, GUI, netwerking…)
Informatica Welkom! maandag 16 November Les B-1.
Webwinkel in het D-cluster van de opleiding Logistiek Ad van Kooten – docent ERP toepassingen  Pract. 1.
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Software Development fundamentals
Arjan Egges & Paul Bergervoet
Aanroep van een methode voert opdrachten uit in de body daarvan
ISensorEventListener
Objectgeoriënteerd Programmeren
Gameprogrammeren: Objecten en geheugen
Hoofdstuk 9.2 Strings.
Arjan Egges & Paul Bergervoet
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Methoden
Gameprogrammeren: Programmastructuur
Basis Gameprogrammeren
Gameprogrammeren: Game Basics
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Tinpro015b-les4 Klassen.
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Programmeren woensdag 4 oktober 2017.
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Klassen en objecten
Software Development fundamentals
Software Development fundamentals
Java Masterclass Sar Maroof.
Software Development fundamentals
Software Development fundamentals
Transcript van de presentatie:

Imperatief programmeren Jeroen Fokker

www.cs.uu.nl / docs / vakken / imp Wat heb je nodig? Collegediktaat kopen bij A-Eskwadraat (BBG-238) of zelf downloaden en uitprinten Solis-id met password Microsoft Visual Studio Community 2015 of Visual Studio Express C# 2010/2013 op de prakticumcomputers en/of zelf gratis downloaden www.cs.uu.nl / docs / vakken / imp

Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens) Oefening (6 werkcolleges) Praktijk (15 keer, 3 inleveropgaven) 13-15 wo 15-17 <24 11-13 vr 13-15 15-17 <24 prakt. college prakt. college werkcoll prakt. college prakt. college werkcoll prakt. 1 college Tent. 1 prakt. 1 college prakt. 1 college werkcoll prakt. 2 college prakt. 2 college werkcoll prakt. 2 college Tent. 2 prakt. 2 college prakt. 3 college werkcoll prakt. 3 college prakt. 3 college werkcoll prakt. 3 Tent. 3

Verplichtingen Meedoen aan 3 deeltentamens Inleveren van 3 practicumopgaven (in teams van 2) Als je er eentje ontbreekt of 20/30/50-gemiddelde is <5: Aanvullende toets in kerstvakantie Als je er eentje ontbreekt of 20/30/50-gemiddelde is <5: Aanvullende opgave in periode 2

Practicumopgaven 2 1 3

Hoofdstuk 1 Programmeren

Imperatief programmeren Von Neumann’s computer-model (1950): computer = + geheugen om waarden op te slaan processor om opdrachten uit te voeren

Opdrachten Opdracht: voorschrift om het geheugen te veranderen Programma: lange reeks opdrachten, die één voor één worden uitgevoerd door de processor opdrachten staan zelf ook in het geheugen maar veranderen zichzelf niet

Programmeertalen Programmeertaal: notatie voor programma’s sinds 1945: 4000 verschillende talen gepubliceerd

Geschiedenis van computers: ~1820-1871 Charles Babbage Difference Engine (ontwerp 1821, bouw 1991) Analytical Engine (ontwerp 1830-1870)

Geschiedenis van programmeren: 1936 Alan Turing: On computable numbers, with an application to the Entscheidungs- problem 1822 Automatische central, 1829 automatische interlokale verbinding; 1831 telefooncel

Geschiedenis van computers&programmeren: 1940-45 Z3 (Dld 1941) Eniac (USA 1943) “Electronic Numeric Integrator And Computer”. Z3 (Duitsland 1941) heette oorspronkelijk V3 maar dat gaf verwarring met raketten; werd niettemin gebombardeerd – de foto is reconstructie uit de 60er jaren met ontwerper Konrad Zuse; had een heuse programmeertaal “PlanKalkül”, maar dat wist na de oorlog niemand meer. Colossus, Engels apparaat voor decodering van de Enigma – eigenlijk geen computer, want niet programmeerbaar. ENIAC (USA 1943) Colossus (Eng 1943)

Geschiedenis van computers&programmeren: 1945-50 Programmeertaal: Machinetaal Mark-I (Eng 1948) Illiac-II, Mark-I Illiac (USA 1948)

Geschiedenis van computers&programmeren: 1950-55 Programmeertaal: Assembler Univac (1951) “Universal automatic Computer” Univac (1951)

Geschiedenis van computers&programmeren: 1955-60 Programmeertaal: Fortran NCR304 (1957) fabrikant “National Cash Registers” Zebra (“Zeer Eenvoudige Binaire Reken Automaat”), gebouwd bij het Mathematich Centrum in A’dam (voorloper van het CWI) NCR304 (1957) Zebra (NL, 1958)

Geschiedenis van computers&programmeren: 1960-65 Programmeertaal: Cobol Algol Lisp IBM mainframe (“International Business Machines”), en Dec (Digital Equipment Company) PDP-1 (“Programmable Data Processor”) (minicomputer, ca $100.000) IBM PDP-1

Geschiedenis van computers&programmeren: 1965-70 Programmeertaal: Basic LINC-8 (1966) PDP-8 (1966) LINC-8 (1966) PDP-8 (1966)

Geschiedenis van computers&programmeren: 1970-75 Programmeertaal: Pascal PDP-11/40 (1970) (minicomputer, $20.000) PDP-11 (1970)

Geschiedenis van computers&programmeren: 1975-80 Apple-II (1977) (microcomputer, $2000) Apple-][ (1977)

Geschiedenis van computers&programmeren: 1980-85 Programmeertaal: C Vax-11 (1981) VAX-11 (80er jaren), IBM PC (1981) “Personal computer”, commodore64 (1984) spelcomputer Commodore64 (1984) IBM-PC (1981)

Geschiedenis van computers&programmeren: 1985-90 Apple Mac (1985) Windows 2.0 (1988)

Geschiedenis van computers&programmeren: 1990-95 Programmeertaal: C++ Moscaic (1994), XS4all eerste NL internetprovider (1993), windows 3.1

Geschiedenis van computers&programmeren: 1995-2000 Programmeertaal: Java Netscape (1994-1998), Google (1998) SGI Onyx (1996)

Geschiedenis van computers&programmeren: 2000-2005 Windows-XP, Apple OS-X

Geschiedenis van computers&programmeren: 2000-2005 Programmeertaal: C# PHP Windows-XP, Apple OS-X

Geschiedenis van computers&programmeren: 2005-2010 Netbook, iBook, iPhone

Geschiedenis van computers&programmeren: 2010-2015 iPad

Geschiedenis van computers&programmeren: 2015-2020 E-health iPad Self-driving car

Geschiedenis van programmeertalen 1945 1950 1955 1960 1965 1970 1975 1980 1985 1990 1995 2000 Assembler Mach.taal Fortran Algol Basic Pascal Simula C C++ Java Cobol SQL Lisp Prolog Haskell PHP Perl Python Functioneel Programmeren (jaar 2) Databases (periode 3) Web- technologie (keuzevak) Imperatief Programmeren C#

Geheugencapaciteit 65er jaren: 8 kB RAM ponskaarten 70er jaren: 16 kB RAM tape 80er jaren: 64 kB RAM floppy-disk 85er jaren: 640 kB RAM 90er jaren: 4 MB RAM harddisk 95er jaren: 16 MB RAM CD 00er jaren: 128 MB RAM DVD 05er jaren: 1GB RAM 10er jaren: 8GB RAM Stick / Cloud

Programmeer-problemen vroeger: hoe kan ik het geheugen zo efficiënt mogelijk gebruiken? nu: hoe kan ik die overvloed van geheugen nog overzien?

Indeling van het geheugen plaats in het geheugen met een naam groepje variabelen dat bij elkaar hoort variabele object object groepje objecten dat bij elkaar hoort

Indeling van het programma voorschrift om het geheugen te veranderen groepje opdrachten dat bij elkaar hoort opdracht methode klasse groepje methoden dat bij elkaar hoort namespace groepje klassen dat bij elkaar hoort

Programmeer-paradigma’s Imperatief Declaratief Assembler Fortran Basic Functioneel Lisp Procedureel Algol Excel Haskell Pascal C Object- georiënteerd Logisch Simula Prolog C++ Java C#

Hoofdstuk 2 Hallo, C# !

Soorten programma’s Console- applicatie

Soorten programma’s Console- applicatie Windows- applicatie

Soorten programma’s Console- applicatie Windows- applicatie Web- applicatie

Soorten programma’s Console- applicatie Windows- applicatie Web- applicatie Game

Soorten programma’s Console- applicatie Windows- applicatie Web- applicatie Game Applet

Soorten programma’s Console- applicatie Windows- applicatie Web- applicatie Game Applet App

Opbouw broncode Opdrachten om het geheugen te veranderen Opdrachten zijn gegroepeerd in methoden Methoden zijn gegroepeerd in klassen

Soorten opdrachten Toekennings -opdracht: verander het geheugen Aanroep van een andere methode: voer eerst de opdrachten in die methode uit, en ga daarna verder waar je gebleven was en dat kunnen zelf ook weer aanroepen zijn van weer andere methodes... dus de “waar was ik gebleven” administratie is best ingewikkeld!

Voorbeeld C#-programma using System; class Hallo { static void Main ( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } één klasse ...met één methode ...met twee opdrachten accolades begrenzen klasse, resp. methode

Klasse- en methode-header using System; class Hallo { static void Main ( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } naam: bedacht door de programmeur naam: bedacht door de programmeur één van de methodes moet Main heten Main

Opdracht: methode-aanroep using System; class Hallo { static void Main( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } opdrachten: aanroep van andere methoden klasse waaruit de methode komt altijd een punt naam van de methode overige details

Klasse-bibliotheken library-klassen mag je gebruiken... using System; class Hallo { static void Main( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } als je ze maar aangeeft in welke library ze staan

Methode-header en -aanroep using System; class Hallo { static void Main( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } methode- header methode- aanroep

Syntax en semantiek Syntax: de vorm van het programma Semantiek: wat het programma betekent compilatie eenheid using ; klasse declaratie library naam

Syntax van klasse-declaratie public private : naam class naam { member }

Syntax van member member type void naam ( type naam ) blok , public private static type void naam ( type naam ) blok ,

Syntax van blok blok declaratie { } opdracht

Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;

Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;

Console-applicatie using System; class Hallo2 { static void Main ( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); }

Toekennings-opdracht geeft een waarde aan een variabele Console-applicatie using System; class Hallo2 { static void Main ( ) { Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); } Toekennings-opdracht geeft een waarde aan een variabele

Declaratie introduceert een variabele van een bepaald type Console-applicatie using System; class Hallo2 { static void Main ( ) { string naam; Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); } Declaratie introduceert een variabele van een bepaald type

gebruik van de variabele Console-applicatie using System; class Hallo2 { static void Main ( ) { string naam; Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); Console.WriteLine("Hallo, " + naam + "!"); } gebruik van de variabele

Property van een object Console-applicatie using System; class Hallo2 { static void Main ( ) { string naam; Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); Console.WriteLine("Hallo, " + naam + "!"); Console.WriteLine("met " + naam.Length + " letters."); } Property van een object

Console-applicatie using System; class Hallo2 { static void Main ( ) { string naam; Console.WriteLine("Wat is je naam?"); naam = Console.ReadLine( ); Console.WriteLine("Hallo, " + naam + "!"); Console.WriteLine("met " + naam.Length + " letters."); Console.ReadLine( ); }

Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;

Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += toekenning variabele = expressie ;

Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens) Oefening (6 werkcolleges) Praktijk (15 keer, 3 inleveropgaven) 13-15 wo 15-17 <24 11-13 vr 13-15 15-17 <24 prakt. college prakt. college werkcoll prakt. college prakt. college werkcoll prakt. 1 college Tent. 1 prakt. 1 college prakt. 1 college werkcoll prakt. 2 college prakt. 2 college werkcoll prakt. 2 college Tent. 2 prakt. 2 college prakt. 3 college werkcoll prakt. 3 college prakt. 3 college werkcoll prakt. 3 Tent. 3