Practicum Ox intro. Practicum Ox intro. VU Numeriek Programmeren 2.5. Charles Bos. Vrije Universiteit Amsterdam. 3 april /18

Vergelijkbare documenten
Lineaire vergelijkingen

NP2.5w3 Eigenwaarden. Eigenwaarden. VU Numeriek Programmeren 2.5. Charles Bos. Vrije Universiteit Amsterdam 1A april /26

Overzicht. Lineaire vergelijkingen. Onderwerpen & Planning. Doel. VU Numeriek Programmeren 2.5

Overzicht. Eigenwaarden. Beurzen en afhankelijkheid. Eigenwaarden: Intro

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Programmeren Blok B. Onderwerpen. wstomv/edu/2ip05/ College 8. Tom Verhoeff

Overzicht. Random nummer generatie. Waarom? Waarom? VU Numeriek Programmeren 2.5

Syntax- (compile), runtime- en logische fouten Binaire operatoren

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS

Inleiding C++ Coding Conventions

Lineaire vergelijkingen II: Pivotering

Meer Blokken. 1. Dit is een functie genaamd Maximum, die twee argumenten heeft: number1 en number2.

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE

Vakgroep CW KAHO Sint-Lieven

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 8 februari 2010

Een korte samenvatting van enkele FORTRAN opdrachten

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

BEGINNER JAVA Inhoudsopgave

Functioneel programmeren

{ specificatie (contract) en toelichting }

Programmeren in Java les 3

Modelleren en Programmeren

TOPIC G: RECORD TOPIC G: RECORD TOPIC G: RECORD TOPIC G: RECORD 23/12/2010 MODULE D1; <* NOOPTIMIZE + *> <* NOOPTIMIZE + *>

Let op dat de scoping regels gerespecteerd blijven; het volgende voorbeeld mag geen fout melden.

Programmeren in C# Samenvatting van C#

Tentamen Programmeren in C (EE1400)

C++ programmeermethoden Bachelor Kunstmatige Intelligentie

Zelftest Inleiding Programmeren

Toets Programmeren, 2YP05 op donderdag 13 november 2008, 09:00-12:00

Datastructuren Werkcollege Intro

Programmeren met Arduino-software

Programmeren onder RISC OS: de snelstart. in BBC-Basic

Introductie in C++ Jan van Rijn. September 2013

{ specificatie (contract) en toelichting }

(On)Doenlijke problemen

Inhoud. Informatica. Hoofdstuk 5 Scripting. Context. Editor voor Programmeercode. Scripting 1

PC les 1: MATLAB gebruiken

7 Omzetten van Recursieve naar Iteratieve Algoritmen

Functies. Huub de Beer. Eindhoven, 4 juni 2011

Programmeren en Wetenschappelijk Rekenen in Python. Wi1205AE I.A.M. Goddijn, Faculteit EWI 22 april 2014

continue in een for, while of do lus herhaalt de lus vroegtijdig. De volgende herhaling wordt onmiddellijk begonnen.

Add the standing fingers to get the tens and multiply the closed fingers to get the units.

Examen Programmeren I 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011

Turbo Pascal (deel 1)

SPSS VOOR DUMMIES+ Werken met de NSE: enkele handige basisbeginselen. Gebaseerd op SPSS21.0 & Benchmarkbestand NSE 2014

UtlGefOpen Documentation

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

RCL Arduino Workshop 1

Programmeermethoden. Controle-structuren. Walter Kosters. week 3: september kosterswa/pm/

Instructies en blokken

Android apps met App Inventor 2 antwoorden

Zelftest TSO/E REXX. Document: n0167test.fm 25/01/2017. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

VAN HET PROGRAMMEREN. Inleiding

Algoritmen en programmeren: deel 2 - basis

Arduino Workshop 1 Zuid-Limburg

OEFENINGEN PYTHON REEKS 1

Tentamen Programmeren in C (EE1400)

ALGORITMIEK: answers exercise class 7

Programmeren: Visual Basic

Programmeermethoden NA. Week 5: Functies (vervolg)

Jörg R. Hörandel Afdeling Sterrenkunde.

Een unit bundelt een stel definities (van constantes, types, routines). Een unit is in een apart bestand ondergebracht.

Opdrachten numerieke methoden, week 1

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Pascal uitgediept Data structuren

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

Online c++ leren programmeren:

OEFENINGEN PYTHON REEKS 1

Algoritmisch Denken: Dodo s Bit Parity

OEFENINGEN PYTHON REEKS 1

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:

PYTHON REEKS 1: BASICS. Mathias Polfliet

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

Faculteit Economie en Bedrijfskunde

Een spoedcursus python

Technologie: TI-Nspire CX CAS Niveau: beginner

Programmeren. a. 0, 0, 0 b. 0, 0, 27 c. 15, 12, 0 d. 15, 12, 27

2019 SUNEXCHANGE USER GUIDE LAST UPDATED

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Modelleren en Programmeren

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek

VBA voor Doe het Zelvers Deel 7

Programmeermethoden NA. Week 6: Lijsten

Het warmteverlies van het lichaamsoppervlak aan de wordt gegeven door de volgende formule:

Totaal

WORKSHOP ORANGE PI & PYTHON v september 2017

Datastructuren: stapels, rijen en binaire bomen

Een eenvoudig algoritme om permutaties te genereren

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:

Tie breaking in de simplex methode

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE

Transcriptie:

1/18 VU Numeriek Programmeren 2.5 Charles Bos Vrije Universiteit Amsterdam 3 april 2013

2/18 Overzicht Vlotte intro in Ox Hands on

3/18 Minimale elementen Minimale elementen Ox-programma: voeg de standaard headers in, #include <oxstd.h> definieer je hoofdprogramma, main(){} en doe iets binnen die haken, main(){print ("Hallo wereld")} Stijl-elementen: Commentaar: Wat, waarom, wanneer, wie Splits initialisatie, berekening, output Zinnige naamgeving variabelen ir, dval, mx

Voorbeeld 1: Klein programma /* np_w0vb1 Purpose : Provide a first example on Ox Date : 29/3/2013 Author : Charles Bos */ # include <oxstd.h> main () { decl ir, ic, dval, mx; // Initialisation ir= 5; ic= 3; dval = 3.0; // Calculate mx= dval * ones (ir, ic ); } // Output print (" The matrix is ", mx ); 4/18

5/18 Gebruik van functies Je uiteindelijke berekeningen worden te groot om allemaal in main() te doen. Gebruik functies Iedere functie doet een taak De taak is duidelijk uit de naam van de functie Definieer duidelijk wat de functie in en uit gaat (commentaar)! Uitkomsten uit functies: Als het een enkelvoudige output is, maak evt gebruik van het return mx; statement Vang in bij de aanroep het resultaat weer op, vergelijk mx= ones (ir, ic ); mx= CreateMatrix (ir, ic, dval );

6/18 Voorbeeld 2: Functie /* CreateMatrix ( const ir, const ic, const dval ) Purpose : Create a matrix of size ir x ic, with value dval Inputs : ir, ic integer, number of rows and columns dval double, value to place in matrix Return value : my matrix of size ir x ic, with value dval in all elements */ CreateMatrix ( const ir, const ic, const dval ) { decl my; } my= dval * ones (ir, ic ); return my; main () {... // Calculate mx= CreateMatrix (ir, ic, dval );... }

7/18 Adressen Het lastigste punt van Ox: Adressen Wat te doen als info heen en weer gegeven moet worden? Gebruik een adres! Stuur het adres van bijv mx naar de functie, via &mx In de functie komt het adres aan: CreateMatrix(const amy, const ir, const ic, const dval). Wijzig de gegevens op het adres, e.g. amy[0]= rann(2, 3); Evt kun je (als de matrix al bestaat), ook een enkel element wijzigen: amy[0][1][2]= 4.5;

8/18 Voorbeeld 3: Adressen /* CreateMatrix ( const amy, const ir, const ic, const dval )... Outputs : amy address, on output a matrix of size ir x ic, with value dval in all elements Return value : ir boolean, TRUE if all went well */ CreateMatrix ( const amy, const ir, const ic, const dval ) { amy [0]= dval * ones (ir, ic ); } return! ismissing (dval ); // Check if dval was a correct value main () {... // Calculate ir= CreateMatrix (&mx, ir, ic, dval );... }

9/18 Opgaven Opgave 1 Maak een random matrix aan van maat 3 x 5. Print deze matrix, eerst simpel met een Ox opdracht, dan element-voor-element (for-loop), met gebruik van logische routines. Opgave 2 Maak een random matrix aan van maat 3 x 5. Bepaal de som van de elementen, element-voor-element, met gebruik van logische routines.

10/18 Analyse I Magische getallen n = 3, k = 5, de maat van de matrix Initialisatie Creeer de matrix mx met random waarden Printen Gebruik een routine PrintMatrix, die de matrix rij-voor-rij gaat printen mbv routine PrintRijMatrix. Routines PrintMatrix. In: mx. Out: Print op scherm PrintRijMatrix. In: mx, i. Out: Print van rij i op scherm. Of, alternatief: Input is vx, een rij-vector PrintElementMatrix. In: mx, i, j. Out: Print van element i, j op scherm. Of, alternatief, input is dx.

11/18 Live coding Zie scherm... Een uiteindelijke routine: Listing 1: np w0sumb.ox /* SumElementMatrix ( const adsum, const dx ) Purpose : Sum een element van een matrix, effectief double Inputs : adsum pointer, on input sum until this element dx double Output : adsum pointer to double, sum including this element Return value : None */ SumElementMatrix ( const adsum, const dx) { adsum [0]+= dx; }

Do s en don ts Gij zult Elk programma, elk bestand, beginnen met een uitleg-blok (tenminste naam programma, doel, datum, auteur) Gebruik maken van Hongaarse notatie mx, vb, df, ik, amx voor matrix, vector, double, integer, adres van matrix etc. Splits (indien enigszins nuttig) het programma op in logische deeleenheden, routines Geef elke routine een eenduidige uitleg van definitie van input/output Zorg voor duidelijke output van het programma, inclusief het hoogstnodige commentaar Gebruik GEEN globale variabelen (tenzij onafwendbaar, niet in deze cursus) Hou de routines kort (max 24 regels) Gebruik zinvolle namen voor programma s, routines, variabelen 12/18

13/18 Ox en Monahan I Monahan (2001) gebruikt (prachtige) Fortran voorbeelden. Maar... duidelijkheid boven ultieme snelheid: vb matrix-vermenigvuldiging, kolom/rij georienteerd Listing 2: np ay1.f95! Order of computation : row - wise through A do i=1, M S= 0. do j= 1, N S= S + A(i, j) * Y(j) end do Z(i)= S end do WRITE (*,20)! Write z do i= 1, M WRITE (*,30) Z(i) end do Listing 3: np ay2.f95! Order of computation : column - wise through Z= 0.! Initialise full vector Z do j= 1, N do i=1, M Z(i)= Z(i) + A(i, j) * Y(j) end do end do WRITE (*,20)! Write z do i= 1, M WRITE (*,30) Z(i) end do

14/18 Ox en Monahan II Monahan (2001) gebruikt (prachtige) Fortran voorbeelden. Maar... matrix-vermenigvuldigingen: Toegestaan (ZEER gewaardeerd) na week 2, veel duidelijker Listing 4: np ay1.ox vz= zeros (im, 1); for (i= 0; i < im; ++i) { ds= 0; for (j= 0; j < in; ++j) ds= ds + ma[i][j] * vy[j]; vz[i]= ds; } print (" Output z= ", vz ); Listing 5: np ay3.ox // In Ox : Using matrix multiplication vz= ma * vy; print (" Output z= ", vz );

15/18 Ox en Monahan III Monahan (2001) gebruikt (prachtige) Fortran voorbeelden. Maar... geheugen: geen direct probleem, overschrijf geen bestaande matrix als dat geen voordeel oplevert. Doe het wel als het duidelijker code geeft... ma= EliminateColumn (ma, i); EliminateColumn (&ma, i);

16/18 Ox en thuisgebruik VU heeft licentie voor thuisgebruik door studenten. Zie http://download.vu.nl/ login met vu/je-vunetid en paswoord kies de Ox versie die bij je systeem past NB: Grafische mogelijkheden ( OxMetrics) gebruiken we hier niet/nauwelijks; editor ( OxEdit) is voldoende.

17/18 Terugblik Wat hebben we gedaan? Discussie van Ox Eerste set programma s Hoe retourneer ik gegevens van routine naar routine? Thuis/HW: Bestudeer slides Bestudeer evt OxIntro, of oxcursus slides Zorg dat je de basis-programma s kunt repliceren, en vooral begrijpt...

18/18 Bibliografie Monahan, J. F. (2001). Numerical Methods of Statistics. Cambridge series on statistical and probabilistic mathematics. Cambridge: Cambridge University Press.