16 november 2016: College 1

advertisement
Mobiel programmeren
Jeroen Fokker
Wat heb je nodig?
Website
Met collegediktaat en software
www.cs.uu.nl / docs / vakken / b1mop
Laptop – bring your own device
Microsoft Visual Studio Community 2015
of Xamarin Studio
Android device
eventueel gesimuleerd in software
Wat gaan we doen?
 Theorie (16 colleges + 2 deeltentamens)
 Praktijk (16 keer, 3 inleveropdrachten)
 Oefening (4 werkcolleges)
Groeps-indeling
Niet helemaal zoals in Osiris, maar:
Verplichtingen
Meedoen aan 2 deeltentamens
Als je er eentje ontbreekt
of 50/50-gemiddelde is <5:
Aanvullende toets in maart
Inleveren van 3 practicumopgaven
(in teams van 2)
Als je er eentje ontbreekt
of 20/40/40-gemiddelde is <5:
Aanvullende opdracht in periode 3
Hoofdstuk 1
Mobiel
Programmeren
Programmeren
Von Neumann’s computer-model (1950):
computer
=
+
geheugen
processor
om waarden
op te slaan
om opdrachten
uit te voeren
Opdrachten
Opdracht:
voorschrift om het geheugen te veranderen
opdrachten staan zelf ook in het geheugen
maar veranderen zichzelf niet
Programma:
lange reeks opdrachten,
die één voor één worden uitgevoerd
door de processor
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 telefonie:
1875
Thomas Edison
microfoon
Alexander Bell
telefoon
Geschiedenis van telefonie:
1880
Commerciële telefoonnetten
Geschiedenis van telefonie:
1890
Interlocaal telefoneren
Geschiedenis van telefonie:
1922
Automatische centrale, kiesschijf
Geschiedenis van computers&programmeren:
1936
Alan Turing:
On computable
numbers, with an
application to the
Entscheidungsproblem
Geschiedenis van computers&telefonie:
1941-44
Bomba
(Engels/Poolse crypto-cracking machine)
Enigma
(Duitse versleutelingsmachine)
Geschiedenis van computers&programmeren:
1940-45
Z3 (Dld 1941)
ENIAC (USA 1943)
Colossus (Eng 1943)
Geschiedenis van computers&programmeren:
1945-50
 Programmeertaal:
Machinetaal
Mark-I (Eng 1948)
Illiac (USA 1948)
Geschiedenis van computers&programmeren:
1950-55
 Programmeertaal:
Assembler
Univac (1951)
Geschiedenis van telefonie:
1950-60
Eerste autotelefoons
Geschiedenis van computers&programmeren:
1955-60
 Programmeertaal:
Fortran
NCR304 (1957)
Zebra (NL, 1958)
Geschiedenis van computers&programmeren:
1960-65
 Programmeertaal:
Cobol
Algol
Lisp
IBM
PDP-1
Geschiedenis van telefonie:
1960-65
Automatisch
telefoonnet
voltooid
Commerciële radiotelefonie
Geschiedenis van computers&programmeren:
1965-70
 Programmeertaal:
Basic
LINC-8 (1966)
PDP-8 (1966)
Geschiedenis van computers&programmeren:
1970-75
 Programmeertaal:
Pascal
PDP-11 (1970)
Geschiedenis van computers&telefonie:
1975-80
Apple-][ (1977)
Motorola
Dyna-Tac (1973)
Geschiedenis van computers&programmeren:
1980-85
 Programmeertaal:
C
Vax-11 (1981)
IBM-PC (1981)
Commodore64 (1984)
Geschiedenis van computers&programmeren:
1985-90
Geschiedenis van telefonie:
1990-95: “2G” GSM-netwerk
IBM Simon
(1994)
Nokia 1610
(1996)
Kermit
(1992)
Geschiedenis van telefonie:
1995-2000 “PDA”
Nokia 3310
(2000)
Geschiedenis van computers&programmeren:
1990-95
 Programmeertaal:
C++
Geschiedenis van computers&programmeren:
1995-2000
 Programmeertaal:
Java
Geschiedenis van computers&programmeren:
2000-2005
Geschiedenis van computers&programmeren:
2000-2005
 Programmeertaal:
C#
PHP
Geschiedenis van computers&telefonie:
2005-2010
Geschiedenis van telefonie&programmeren:
2005-2010
Apple iPhone
(2007)
HTC Dream
(2008)
Windows Phone
(2010)
 Programmeertaal:  Programmeertaal:  Programmeertaal:
Objective C
Swift
Java
C#
C++
C#
Geschiedenis van computers&programmeren:
2010-2015
Geschiedenis van telefonie:
2010-2015
iOS 8.4
(2015)
Android 6.0
(2015)
Windows 8.1
(2014)
Geschiedenis van computers, telefonie, programmeren:
2015-2020
E-health
Self-driving car
Geschiedenis van
programmeertalen
1945
1950
1955
1960
1965
1970
1975
1980
1985
1990
1995
2000
Mach.taal
Assembler
Fortran
Algol
Basic
Pascal
Simula
C
Cobol
Lisp
Prolog
SQL
C++
Java
C#
Haskell
Swift
Perl
PHP
Python
Geheugencapaciteit
 65er
 70er
 80er
 85er
 90er
 95er
 00er
 05er
 10er
jaren:
jaren:
jaren:
jaren:
jaren:
jaren:
jaren:
jaren:
jaren:
8 kB RAM
16 kB RAM
64 kB RAM
640 kB RAM
4 MB RAM
16 MB RAM
128 MB RAM
1GB RAM
8GB RAM
ponskaarten
tape
floppy-disk
harddisk
CD
DVD
Stick / Cloud
Soorten programma’s
 Consoleapplicatie
Soorten programma’s
 Consoleapplicatie
 Windowsapplicatie
Soorten programma’s
 Consoleapplicatie
 Windowsapplicatie
 Webapplicatie
Soorten programma’s
 Consoleapplicatie
 Windowsapplicatie
 Webapplicatie
 Game
Soorten programma’s
 Consoleapplicatie
 Windowsapplicatie
 Webapplicatie
 Game
 Applet
Soorten programma’s
 Consoleapplicatie
 Windowsapplicatie
 Webapplicatie
 Game
 Applet
 App
Opbouw broncode
Opdrachten om
het geheugen
te veranderen
Opdrachten zijn
gegroepeerd in
methoden
Methoden zijn
gegroepeerd in
klassen
“Code”
“Code”
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
using
using
using
één klasse
...met één
methode
...met acht
opdrachten
accolades
begrenzen
klasse
en methode
Android.OS;
Android.App;
Android.Widget;
Android.Graphics;
[ActivityAttribute(Label = "Hello", MainLauncher = true)]
public class HalloApp : Activity
{
protected override void OnCreate(Bundle b)
{ base.OnCreate(b);
TextView scherm;
scherm = new TextView(this);
scherm.Text
= "Hallo!";
scherm.TextSize = 80;
scherm.SetBackgroundColor(Color.Yellow);
scherm.SetTextColor(Color.DarkBlue);
this.SetContentView(scherm);
}
}
Programmeer-problemen
vroeger:
hoe kan ik het geheugen zo
efficiënt mogelijk gebruiken?
nu:
hoe kan ik die overvloed van
geheugen nog overzien?
Mobiel:
Hoe spaar ik mijn batterij?
Indeling van het geheugen
plaats in het geheugen
met een naam
groepje variabelen
dat bij elkaar hoort
groepje objecten
dat bij elkaar hoort
variabele
object
object
Indeling van het programma
voorschrift om het
geheugen te veranderen
groepje opdrachten
dat bij elkaar hoort
groepje methoden
dat bij elkaar hoort
groepje klassen
dat bij elkaar hoort
opdracht
methode
klasse
namespace
Download