De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Imperatief programmeren

Verwante presentaties


Presentatie over: "Imperatief programmeren"— Transcript van de presentatie:

1 Imperatief programmeren
Jeroen Fokker

2 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 / docs / vakken / imp

3 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

4 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

5 Practicumopgaven 2 1 3

6 Hoofdstuk 1 Programmeren

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

8 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

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

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

11 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

12 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)

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

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

15 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)

16 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 $ ) IBM PDP-1

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

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

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

20 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)

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

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

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

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

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

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

27 Geschiedenis van computers&programmeren: 2010-2015
iPad

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

29 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#

30 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

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

32 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

33 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

34 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#

35 Hoofdstuk 2 Hallo, C# !

36 Soorten programma’s Console- applicatie

37 Soorten programma’s Console- applicatie Windows- applicatie

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

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

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

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

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

43 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!

44 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

45 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

46 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

47 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

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

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

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

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

52 Syntax van blok blok declaratie { } opdracht

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

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

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

56 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

57 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

58 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

59 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

60 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( ); }

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

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

63 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


Download ppt "Imperatief programmeren"

Verwante presentaties


Ads door Google