private readonly WindowController _windowcontroller = null;

Maat: px
Weergave met pagina beginnen:

Download "private readonly WindowController _windowcontroller = null;"

Transcriptie

1 using System; using System.IO; using System.Windows.Forms; using Ionic.Zip; using Radon.Common; using Radon.Common.Enums; using Radon.Common.Utility; using Radon.Logging; using Radon.Model; using Radon.Service; using Radon.Shared.Common.Exceptions; using Radon.WinApp.Client.Forms; using Radon.WinApp.Client.UserControls; using Radon.WinApp.Client.Utils; namespace Radon.WinApp.Client public partial class RadonMainForm : RadonBaseForm #region Fields private readonly WindowController _windowcontroller = null; private Scenario _scenario; private const string SCENARIOMANAGERGESTART = "De scenariomanager is actief."; private const string SCENARIOINGELEZEN = "Het scenario is ingelezen."; private const string SCENARIOOPGESLAGEN = "Het scenario is opgeslagen."; #endregion #region Properties /// ingelezen scenario public Scenario Scenario get return _scenario;

2 set _scenario = value; #endregion #region Constructors public RadonMainForm() InitializeComponent(); _windowcontroller = new WindowController(this, mainpanel); FormUtils.ScenarioChanged += new FormUtils.ScenarioChangedHandler(FormUtils_ScenarioChanged); FormUtils.ScenarioTobeSaved += new FormUtils.ScenarioToBeSavedHandler(FormUtils_ScenarioToBeSaved); UpdateStatusTekst(SCENARIOMANAGERGESTART); string[] args = Environment.GetCommandLineArgs(); if (args.length >= 2) string eersteparameter = args[1]; if (eersteparameter.endswith(bestandsextentieenum.scenarioxml.tostring())) try LoadScenario(eersteParameter); catch (Exception ex) FormUtils.ToonFoutmelding(string.Format(RadonExceptionFormat.ErrorFormat_Fo utopgetreden, "het inlezen van een scenario"), Constants.RadonScenarioManagerFormTitle, ex); throw new Exception("");

3 /// Ontvang events die aangeven dat er iets in het scenario object veranderd is. private void FormUtils_ScenarioChanged() IsModified = true; /// Ontvang events die aangeven dat er iets in het scenario object veranderd is. private void FormUtils_ScenarioToBeSaved() SaveScenario(false); #endregion #region Event handlers is /// Maar de "opslaan" en "opslaan als" beschikbaar, /// afhankelijk van of er een scenario is ingeladen. /// <param name="sender"></param> /// <param name="e"></param> private void MenuStrip_Paint(object sender, PaintEventArgs e) //disable "opslaan" en "opslaan als" opties als scenario null bewaarscenariotoolstripmenuitem.enabled = Scenario!= null; bewaarscenarioalstoolstripmenuitem.enabled = Scenario!= null; /// Event handler voor als er op een node in de scenarioboom is geklikt. /// Dan moet de desbetreffende informatie, afhankelijk van de node, getoond worden. /// <param name="treenode"></param> private void ScenarioStructuurUserControl_NodeClicked(TreeNode treenode)

4 try if (treenode!= null) Type treenodetype = treenode.gettype(); if (treenodetype == typeof(extrapolatieopdrachtnode)) ExtrapolatieOpdrachtNode extrapolatieopdrachtnode = treenode as ExtrapolatieOpdrachtNode; _windowcontroller.showextrapolatieopdracht(scenario, extrapolatieopdrachtnode.extrapolatieopdracht, UpdateGetoondeSturingen, UpdateGetoondeExtrapolaties); else if (treenodetype == typeof(extrapolatienode)) ExtrapolatieNode extrapolatienode = treenode as ExtrapolatieNode; _windowcontroller.showextrapolatieform(scenario.scenariobasepath, extrapolatienode.sturing.sturingdata.metadata, "Extrapolatie", true); else if (treenodetype == typeof(historischeonderwijsmatrixnode)) HistorischeOnderwijsmatrixNode historischeonderwijsmatrixnode = treenode as HistorischeOnderwijsmatrixNode; _windowcontroller.showhistorischeonderwijsmatrixform(scenario.scenariobasep ath, historischeonderwijsmatrixnode.historischeonderwijsmatrix.ramingdata.metada ta, "Historische onderwijsmatrix", true); else if (treenodetype == typeof(sturingnode)) SturingNode sturingnode = treenode as SturingNode; _windowcontroller.showsturingform(scenario.scenariobasepath, sturingnode.sturing.sturingdata.metadata, "Sturing", true); else if (treenodetype == typeof(ramingnode)) RamingNode ramingnode = treenode as RamingNode;

5 if(ramingnode.text!= String.Format(Constants.RamingOntbreekt,ramingNode.Raming.Jaar)) _windowcontroller.showramingform(scenario.scenariobasepath, ramingnode.raming.ramingdata.metadata, "Raming", true); StartRamingNode; else if (treenodetype == typeof(startramingnode)) StartRamingNode startramingnode = treenode as if (Scenario.StartStroom == null) //verwijder StartRaming usercontrol uit cache _windowcontroller.removecontrol(startramingnode); FormUtils.ToonInformatieMelding("Kan raming niet opstarten. Start stroom is onbekend."); else if (Scenario.StartStroom!= startramingnode.startstroom) //verwijder StartRaming usercontrol uit cache _windowcontroller.removecontrol(startramingnode); startramingnode.startstroom = Scenario.StartStroom; _windowcontroller.showstartramingform(scenario, startramingnode, UpdateGetoondeRamingen); else if (treenodetype == typeof(bevolkingsgegevensstroomnode)) BevolkingsgegevensStroomNode bevolkingsgegevensstroomnode = treenode as BevolkingsgegevensStroomNode;

6 if (bevolkingsgegevensstroomnode.stroom!= null && bevolkingsgegevensstroomnode.stroom.stroomgegevens!= null) _windowcontroller.showbevolkingsgegevensstroomform(scenario.scenariobasepat h, bevolkingsgegevensstroomnode.stroom. StroomBestand.Metadata, bevolkingsgegevensstroomnode.stroomnaam, true); else if (treenodetype == typeof(scenarionode)) _windowcontroller.showmetadataform(scenario.scenariobasepath, Scenario.Metadata, "Scenario", false); catch (Exception exp) FormUtils.ToonFoutmelding(string.Format(RadonExceptionFormat.ErrorFormat_Fo utopgetreden, "het selecteren van scenario structuur"), Constants.RadonScenarioManagerFormTitle, exp); /// Event handler voor als er op een node in de scenarioboom is verwijderd. /// Zorgt voor het verwijderen van de bijbehorende form uit de Window Controller /// <param name="treenode"></param> private void ScenarioStructuurUserControl_NodeRemoved(TreeNode treenode) try if (treenode!= null)

7 Type treenodetype = treenode.gettype(); // afhankelijk van het type node wordt de node verwijderd en de bijbehorende form uit de window controller gehaald. if (treenodetype == typeof(extrapolatieopdrachtnode)) ExtrapolatieOpdrachtNode extrapolatieopdrachtnode = treenode as ExtrapolatieOpdrachtNode; _windowcontroller.removecontrol(extrapolatieopdrachtnode.extrapolatieopdrac ht); else if (treenodetype == typeof(sturingnode) treenodetype == typeof(extrapolatienode)) SturingNode sturingnode = treenode as SturingNode; _windowcontroller.removecontrol(sturingnode.sturing.sturingdata.metadata); else if (treenodetype == typeof(historischeonderwijsmatrixjaarnode)) HistorischeOnderwijsmatrixJaarNode historischeonderwijsmatrixjaarnode = treenode as HistorischeOnderwijsmatrixJaarNode; foreach (HistorischeOnderwijsmatrixNode historischeonderwijsmatrixnode in historischeonderwijsmatrixjaarnode.nodes) _windowcontroller.removecontrol(historischeonderwijsmatrixnode.historischeo nderwijsmatrix.ramingdata.metadata); else if (treenodetype == typeof(sturingjaarnode)) SturingJaarNode sturingjaarnode = treenode as SturingJaarNode; foreach (SturingNode sturingnode in sturingjaarnode.nodes) _windowcontroller.removecontrol(sturingnode.sturing.sturingdata.metadata); else

8 _windowcontroller.removecontrol(treenode); catch (Exception exp) FormUtils.ToonFoutmelding(string.Format(RadonExceptionFormat.ErrorFormat_Fo utopgetreden, "het selecteren van scenario structuur"), Constants.RadonScenarioManagerFormTitle, exp); private void ScenarioStructuurUserControl_StatusChanged(string message) UpdateStatusTekst(message); /// Vang af als de applicatie gesloten wordt. /// Vraag, indien nodig, of er nog moet worden opgeslagen. /// <param name="sender"></param> /// <param name="e"></param> private void RadonMainForm_FormClosing(object sender, FormClosingEventArgs e) if (IsModified) bool cancelclose = false; // Melding geven aan gebruiker dat het scenario gewijzigd is. DialogResult result = FormUtils.ToonYesNoCancelWaarschuwing("Er zijn wijzigingen in het scenario. Wilt u deze opslaan?"); if (result == DialogResult.Yes) SaveScenario(false); cancelclose = true; else if (result == DialogResult.Cancel)

9 cancelclose = true; if (cancelclose) e.cancel = true; #endregion #region Event handlers van menu items private void OpenScenarioToolStripMenuItem_Click(object sender, EventArgs e) OpenScenario(); private void RadonAfsluitenToolStripMenuItem_Click(object sender, EventArgs e) try Close(); catch (Exception exp) FormUtils.ToonFoutmelding(string.Format(RadonExceptionFormat.ErrorFormat_Fo utopgetreden, "het afsluiten van de applicatie"), Constants.RadonScenarioManagerFormTitle, exp); e) private void HelpToolStripMenuItem_Click(object sender, EventArgs try _windowcontroller.showaboutform(); catch (Exception exp)

10 FormUtils.ToonFoutmelding(string.Format(RadonExceptionFormat.ErrorFormat_Fo utopgetreden, "het openen van About form"), Constants.RadonScenarioManagerFormTitle, exp); private void BewaarScenarioToolStripMenuItem_Click(object sender, EventArgs e) SaveScenario(false); private void BewaarScenarioAlsToolStripMenuItem_Click(object sender, EventArgs e) SaveScenario(true); private void SjabloonEditorToolStripMenuItem_Click(object sender, EventArgs e) SjabloonManager sjabloonmanager = new SjabloonManager(); sjabloonmanager.show(); private void AggregatieManagerToolStripMenuItem_Click(object sender, EventArgs e) AggregatieManager aggregatiemanager = new AggregatieManager(); if (_scenario!= null) aggregatiemanager.scenariobasepath = _scenario.scenariobasepath; aggregatiemanager.show(); private void LogfileBekijkenToolStripMenuItem_Click(object sender, EventArgs e) ShowLogfileViewer(); EventArgs e) private void NieuwScenarioToolStripMenuItem_Click(object sender,

11 CreateNewScenario(); #endregion #region Methods /// Laat de gebruiker een scenario selecteren en /// laad als nodig het geselecteerde scenario in. private void OpenScenario() try OpenFileDialog openscenariofiledialog = new OpenFileDialog(); openscenariofiledialog.filter = Constants.ScenarioFilter; openscenariofiledialog.title = "Open - Scenario"; FileDialogUtils.SetRadonScenarioDirectory(openScenarioFileDialog); DialogResult result = openscenariofiledialog.showdialog(this); if (result == DialogResult.OK) string filename = openscenariofiledialog.filename; LoadScenario(filename); catch (Exception exp) FormUtils.ToonFoutmelding(string.Format(RadonExceptionFormat.ErrorFormat_Fo utopgetreden, "het inlezen van een scenario"), Constants.RadonScenarioManagerFormTitle, exp); /// Maak een nieuw scenario aan. private void CreateNewScenario() using (var newscenariodialog = new NewScenarioDialog()) if (newscenariodialog.showdialog(this) == DialogResult.OK)

12 Scenario = CreateNewScenario(newScenarioDialog.ScenarioNaam, newscenariodialog.scenariofolder); SaveScenario(false); scenariostructuurusercontrol.initialize(scenario); /// Maak een nieuw scenario aan /// <param name="scenarionaam">de naam van het scenario</param> /// <param name="scenariofolder">de folder waar het scenario geplaatst wordt</param> /// <returns></returns> private Scenario CreateNewScenario(string scenarionaam, string scenariofolder) Scenario scenario = null; if (!string.isnullorempty(scenarionaam) &&!string.isnullorempty(scenariofolder)) // Maak het nieuwe scenario aan en zet alle properties, waar mogelijk uit de configuratie string filename = string.format("0.scenarioxml", scenarionaam); MetaData metadata = new MetaData(string.Empty, DateTime.Now, DateTime.Now, RadonService.GetRadonVersie(), filename, string.empty, string.empty); scenario = new Scenario(metaData, null, null, null, null, null); scenario.scenariobasepath = scenariofolder; scenario.dimensienamen = new DimensieNamen( Configuration.ScenarioSettings.DefaultDimensieNamen.Herkomst, Configuration.ScenarioSettings.DefaultDimensieNamen.Bestemming, Configuration.ScenarioSettings.DefaultDimensieNamen.Leeftijd

13 , Configuration.ScenarioSettings.DefaultDimensieNamen.Jaar); scenario.bbocategorie = Configuration.ScenarioSettings.BboCategorie; scenario.diplomeringscategorieen = new Dimensie( Path.Combine(Configuration.ScenarioSettings.DirectoryNamen.DimensieDefiniti es, "diplomering.dimensiewaardexml"), null, "DiplomeringsCategorieen", DimensieSoort.DiplomeringsCategorieen, 0, null, null); // Unzip de template scenario directories en bestanden naar de scenario folder using (var zip = ZipFile.Read("ScenarioTemplate\\ScenarioTemplate.zip")) zip.extractall(scenariofolder); return scenario; /// Laad een scenario in en pas de GUI aan /// <param name="bestandsnaam"></param> private void LoadScenario(string bestandsnaam) // De aanroep van deze method dient in een try-catch te staan. Scenario scenario = StorageService.GetScenarioWithoutInputData(bestandsnaam); _scenario = scenario; _windowcontroller.resetwindowcontroller(); scenariostructuurusercontrol.initialize(_scenario); IsModified = false; UpdateStatusTekst(SCENARIOINGELEZEN);

14 /// Sla het scenario op. /// <param name="saveas">geef aan of de gebruiker een (andere) naam mag opgeven.</param> private void SaveScenario(bool saveas) try if (Scenario!= null) // cancel gaat naar true als er een bestandsnaam opgegeven had moeten worden en dat niet gebeurd is. bool cancel = false; if (saveas Scenario.Metadata == null Scenario.Metadata.Bestandsnaam == string.empty) SaveFileDialog savefiledialog = new SaveFileDialog(); savefiledialog.filter = Constants.ScenarioFilter; savefiledialog.initialdirectory = Scenario.ScenarioBasePath; DialogResult result = savefiledialog.showdialog(this); if (result == DialogResult.OK) string bestandsnaam = savefiledialog.filename; StorageService.UpdateScenarioFileProperties(Scenario, bestandsnaam); else cancel = true; if (!cancel) StorageService.SaveScenarioXml(Scenario.ScenarioBasePath, Scenario); _windowcontroller.updatemetadatacontrol(scenario); scenariostructuurusercontrol.updatescenarionode(); IsModified = false; UpdateStatusTekst(SCENARIOOPGESLAGEN);

15 FormUtils.ToonInformatieMelding("Scenario opgeslagen"); catch (Exception ex) LogService.Log(ex); FormUtils.ToonFoutmelding(string.Format(RadonExceptionFormat.ErrorFormat_Fo utopgetreden, "het bewaren van een scenario"), Constants.RadonScenarioManagerFormTitle, ex); /// Toon de nieuw toegevoegde sturingen. /// Zet het scenario op "gewijzigd". private void UpdateGetoondeSturingen() scenariostructuurusercontrol.initsturingennode(); IsModified = true; /// Toon de nieuw toegevoegde etrapolatie. /// Zet het scenario op "gewijzigd". private void UpdateGetoondeExtrapolaties() scenariostructuurusercontrol.initextrapolatienode(); IsModified = true; /// Toon de nieuw toegevoegde ramingen. /// Zet het scenario op "gewijzigd". private void UpdateGetoondeRamingen() if (Scenario.RamingenLijst!= null) foreach (Raming raming in Scenario.RamingenLijst) _windowcontroller.removecontrol(raming);

16 // Na het ramen zijn de ramingsresultaten in de scenario file toegevoegd. // Het scenario wordt opnieuw ingelezen en alleen de ramingsinformatie wordt hier uit gebruikt // om de ramingen in het scenario overzicht te laten zien. string scenariobestandsnaam = FileUtility.GetFullPath(Scenario.ScenarioBasePath, Scenario.Metadata.Bestandsnaam); Scenario scenario = StorageService.GetScenarioWithoutInputData(scenarioBestandsnaam); Scenario.RamingenLijst = scenario.ramingenlijst; scenariostructuurusercontrol.initramingennode(); IsModified = true; /// Toon een melding in de status strip van de Scenario Manager. /// <param name="message"></param> private void UpdateStatusTekst(string message) StatusTekst_ToolStripStatusLabel.Text = message; Refresh(); private void ShowLogfileViewer() try LogfileViewer logfileviewer = new LogfileViewer(); logfileviewer.show(); catch (Exception ex) string foutmelding = "Er is een onverwachte fout opgetreden in de logfile viewer.\n" + ex.message; string caption = "Radon logfile viewer : Error"; FormUtils.ToonFoutmelding(foutmelding, caption); #endregion

17

18 using System; using System.Diagnostics; using Radon.Logging; using Radon.Common; using Radon.Common.Enums; using Radon.Common.Exceptions.ServiceRekenExceptions; using Radon.Shared.Common.Exceptions; using Radon.Shared.Common.Exceptions.ServiceExceptions; using Radon.Shared.Common.Utility; using Radon.Shared.Model; namespace Radon.Service.Reken /// /// Lost lineair stelsel op met de CG-methode /// /// Bepaalt op iteratieve wijze de oplossing van een stelsel /// lineaire vergelijkingen m.b.v. van de Gepreconditioneerde /// Geconjugeerde Gradienten (CG-) methode /// De coefficientenmatrix M van het stelsel (Mx = b) is van de /// speciale gedaante: /// M = (A*S*W) * (A*S*W) (T) (T betekent: getransponeerd) /// waarin A een rechthoekige matrix is en S en W beide diagonaal- /// matrices zijn waarmee resp. kolommen van A worden geselecteerd /// en gewogen /// /// /// Om de convergentie van de oplosmethode versnellen wordt niet /// M * x = b /// zelf opgelost, maar wordt het iteratieproces toegepast op een /// geschaalde versie, i.c. op /// N * y = f /// waar: /// N = D**(-1) * M * D**(-1) /// /// y = D * x /// /// f = D**(-1) * b /// /// De diagonal matrix D is zodanig dat N een hoofddiagonaal

19 /// heeft die bestaat uit enen: ofwel, d(i) = SQRT(M(i,i)) public class Smrcg #region Fields private double _maxabsresidu; private double _maxepsilon; private double _maxverschileigenwaarde; private double _overflowepsilon; private double _maxafwijkingaanpassing; private MatrixOperation _matrixoperation; #endregion #region Constructor public Smrcg() _matrixoperation = new MatrixOperation(); _maxabsresidu = Configuration.RekenSettings.SmrcgSettings.MaxAbsResidu; _maxepsilon = Configuration.RekenSettings.SmrcgSettings.MaxEpsilon; _maxverschileigenwaarde = Configuration.RekenSettings.SmrcgSettings.MaxVerschilEigenwaarde; _overflowepsilon = Configuration.RekenSettings.SmrcgSettings.OverflowEpsilon; _maxafwijkingaanpassing = Configuration.RekenSettings.SmrcgSettings.MaxAfwijkingAanpassing; #endregion #region Methods /// Lost lineair stelsel op met de gepreconditioneerde geconjugeerde Gradienten (CG-) methode /// <param name="x">x vector uit stelsel van de vorm Mx = b, bij in de start vector, bij uit de oplossing</param> /// <param name="b">b vector uit stelsel van de vorm Mx = b</param> /// <param name="a">a matrix uit stelsel van de vorm Mx = b, waarbij M = AA'</param> /// <param name="selector">selectoren, lengte gelijk aan aantal kolommen Matrix A</param> /// <param name="weight">gewichten, lengte </param> /// <param name="maximumiteraties">maximum iteraties dat in het algoritme gebruikt wordt</param>

20 /// <param name="residue">out parameter, geeft de residuen (b-mx, met x de oplossing)</param> /// <param name="result">out parameter, geeft het soort resultaat aan (normale oplossing, maximum iteraties bereikt of singulier, maar wel oplossing)</param> public void Execute(ref Vector<double,DoubleVectorOperation> x, Vector<double, DoubleVectorOperation> b, Matrix A, Vector<int, IntVectorOperation> selector, Vector<double, DoubleVectorOperation> weight, int maximumiteraties, out SmrcgResultEnum result) try Check.ArgumentIsNotNull(x, "x"); Check.ArgumentIsNotNull(b, "b"); Check.ArgumentIsNotNull(A, "A"); Vector<double, DoubleVectorOperation> residue; Vector<double, DoubleVectorOperation> di; double bn; bool restarted = false; Vector<double, DoubleVectorOperation> baangepast = null; // Controleer of alle verplichte argumenten niet null zijn en of het systeem klopt // (dwz of M, x, s en w qua formaat op elkaar passen) CheckArguments(x, b, A, selector, weight); // Initialiseer de lokale variabelen: vector r, vector diagonaal inverse (di) en double bn (sqrt(b'b)) Initaliseer(A, b, x, selector, weight, out residue, out di, out bn); // Zet het resultaat initieel op normaal // (dit wordt in de itereer eventueel op maxiteraties bereikt of singuliere oplossing gezet) result = SmrcgResultEnum.Normaal; // Voer het algoritme uit while (Itereer(A, ref residue, ref x, ref baangepast, b, bn, di, selector, weight, maximumiteraties, ref result)) // Indien het algoritme nogmaals wordt aangeroepen is het rechter lid b aangepast,

21 kunnen worden // onthou dit zodat straks de residuen gecorrigeerd restarted = true; // Corrigeer de residuen als het algoritme is opgelost met een aangepast rechter lid if (restarted) residue = residue - b + baangepast; LogService.Log(TraceLevel.Info, "SMRCG: residuen aangepast omdat algoritme is opgelost met aangepast rechterlid b (r = r - b + aangepaste b)"); catch (Exception exception) LogService.Log(exception); throw new ServiceRekenException(string.Format(RadonExceptionFormat.ErrorFormat_FoutOp getreden, "het uitvoeren van het SMRCG algoritme"), exception); private void Initaliseer(Matrix A, Vector<double, DoubleVectorOperation> b, Vector<double, DoubleVectorOperation> x, Vector<int, IntVectorOperation> selector, Vector<double, DoubleVectorOperation> weight, out Vector<double, DoubleVectorOperation> r, out Vector<double, DoubleVectorOperation> di, out double bn) // Bereken bn = SQRT(b'b) bn = Math.Sqrt(b.InProduct(b)); LogService.Log(TraceLevel.Info, string.format("smrcg: SQRT(b'b) = 0 ", bn)); // Bereken D inverse als 1 / sqrt(m) di = DiagonalInverse(A, selector, weight); LogService.Log(TraceLevel.Info, "SMRCG: Diagonaal inverse 1 / SQRT(M) berekend"); // Bereken Mx (= AA'x = symmetric operation) Vector<double, DoubleVectorOperation> Mx = _matrixoperation.symmetric(a, x, selector, weight);

22 LogService.Log(TraceLevel.Info, "SMRCG: matrixoperatie symmetric aangeroepen voor berekening AA'x (=Mx)"); b-mx"); // Bereken r = b - Mx r = b - Mx; LogService.Log(TraceLevel.Info, "SMRCG: Residuen berekend als private bool Itereer(Matrix A, ref Vector<double, DoubleVectorOperation> r, ref Vector<double, DoubleVectorOperation> x, ref Vector<double, DoubleVectorOperation> baangepast, Vector<double, DoubleVectorOperation> b, double bn, Vector<double, DoubleVectorOperation> di, Vector<int, IntVectorOperation> selector, Vector<double, DoubleVectorOperation> weight, int maximumiteraties, ref SmrcgResultEnum result) // Controleer of intiele oplossing al goed (genoeg) is if (CheckInitieleResiduen(r, bn)) // Oplossing gevonden, geef aan dat niet opnieuw geprobeerd hoeft te worden return false; // Bereken geschaald residu, per element te berekenen als z(i) = D(ii)**(-1) * r(i) Vector<double, DoubleVectorOperation> z = di * r; LogService.Log(TraceLevel.Info, "SMRCG: Geschaalde residuen berekend als z = D(-1) * r"); // Bereken p = z (dmv kopieren) Vector<double, DoubleVectorOperation> p = new Vector<double, DoubleVectorOperation>(z.Data); // Bereken γ = z'r (totale geschaalde residue als intiele waarde van gamma) double gamma = z.inproduct(r); LogService.Log(TraceLevel.Info, "SMRCG: Initiële gamma berekend als totale geschaalde residue γ = z'r = " + gamma);

23 geschaalde residuen // Onthou intiele gamma voor berekening afname euclidische norm double gammainitieel = gamma; // Zet γ^ op γ double gammavorigeiteratie = gamma; iteratie++) iteratie); // Itereren double maxeigenwaarde = 0.0D; for (int iteratie = 1; iteratie <= maximumiteraties; LogService.Log(TraceLevel.Info, "SMRCG: Iteratie: " + // Bereken q = Mp Vector<double, DoubleVectorOperation> q = _matrixoperation.symmetric(a, p, selector, weight); // Bereken p'p double ptp = p.inproduct(p); // Bereken p'q double ptq = p.inproduct(q); // Bereken e = p'q / p'p double eigenwaarde = ptq / ptp; LogService.Log(TraceLevel.Verbose, string.format("smrcg: Eigenwaarde = p'q / p'p = 0 / 1 = 2", ptq, ptp, eigenwaarde)); LogService.Log(TraceLevel.Verbose, string.format("smrcg: Maximum eigenwaarde = Max(0, 1)", maxeigenwaarde, eigenwaarde)); // Bereken em = max(em,e) maxeigenwaarde = Math.Max(maxEigenWaarde, eigenwaarde); if (eigenwaarde <= _maxverschileigenwaarde * maxeigenwaarde) // Singulariteit gevonden string message = string.format( "SMRCG: Singulariteit gevonden: eigenwaarde (0) is kleiner of gelijk aan 1 * maximum eigenwaarde (2)", eigenwaarde, _maxverschileigenwaarde, maxeigenwaarde); LogService.Log(TraceLevel.Verbose, message);

24 // Controleer norm zoekrichting if (ptp == 0.0D) throw new RadonDistanceZeroException("De norm van de zoekrichting is nul geworden, het SMRCG algoritme kan geen oplossing vinden."); // Bereken z = Dp (=> is gelijk aan p / D(-1)) z = p / di; LogService.Log(TraceLevel.Verbose, "SMRCG: z = Dp = p / inverse van D berekend"); // Bereken b'p double btp = b.inproduct(p); // Bereken p'z double ptz = p.inproduct(z); // Bereken j = b'p / p'z double j = btp / ptz; LogService.Log(TraceLevel.Verbose, "SMRCG: j = b'p / p'z = " + btp + " / " + ptz + " = " + j); // Bereken cn = j SQRT(z'z) double cn = Math.Abs(j) * Math.Sqrt(z.InProduct(z)); LogService.Log(TraceLevel.Verbose, "SMRCG: cn = j SQRT(z'z) = " + cn ); if (cn <= 1.0 cn <= _maxafwijkingaanpassing * bn) // Bereken b - jz (bij eerste keer, zonder aanpassing is dit met de originele b, anders de vorige, aangepaste b) if (baangepast == null) baangepast = b - z * j; else baangepast = baangepast - z*j; // Zet residuen op b r = b.clone();

25 x.length); // Herstart met 0 vector x = new Vector<double, DoubleVectorOperation>(0, // Probeer opnieuw na aanpassing van rechterlid result = SmrcgResultEnum.SinguliereOplossing; // Log herstart LogService.Log(TraceLevel.Info, "SMRCG: het SMRCG algritme wordt herstart met aangepaste rechterlid b en nul-vector x"); return true; else throw new RadonConflictingException("Er zijn conflicterende eisen, het SMRCG algoritme kan geen oplossing vinden."); double alpha; // controleer of log(γ^) - log p'q <= ε4 if (Math.Log10(gammaVorigeIteratie) - Math.Log10(Math.Abs(ptq)) <= _overflowepsilon) // α = γ^ / p'q alpha = gammavorigeiteratie / ptq; LogService.Log(TraceLevel.Verbose, "SMRCG: α = γ^ / p'q = " + gammavorigeiteratie + " / " + ptq + " = " + alpha); else throw new RadonOverflowException("Er is een overflow opgetreden, het SMRCG algoritme kan geen oplossing vinden."); + αp"); // x = x + αp x = x + (alpha * p); LogService.Log(TraceLevel.Verbose, "SMRCG: x berekend als x // r = r - αq r = r - (alpha * q);

26 berekend als r - αq"); LogService.Log(TraceLevel.Verbose, "SMRCG: residuen // z = D(-1)r z = di * r; LogService.Log(TraceLevel.Verbose, "SMRCG: z berekend als inverse D * r"); // γ = z'r gamma = z.inproduct(r); LogService.Log(TraceLevel.Verbose, "SMRCG: gamma berekend als z'r = " + gamma); // controleer max r <=ε1 of max r <=ε2*bn double rn = r.maximumnorm; if (rn <= _maxabsresidu rn <= _maxepsilon*bn) LogService.Log(TraceLevel.Info, "SMRCG: er is binnen het maximum aantal iteraties een oplossing gevonden."); LogResiduen(r, z, gammainitieel); // Oplossing gevonden // Herstart niet nodig // Resultaat kan niet op normaal worden gezet (kan namelijk ook een oplossing zijn na aanpassing rechterlid) return false; " + beta); // Bereken β = γ / γ^ double beta = gamma / gammavorigeiteratie; LogService.Log(TraceLevel.Verbose, "SMRCG: beta = γ / γ^ = berekend"); // Bereken p = z + βp p = z + (beta * p); LogService.Log(TraceLevel.Verbose, "SMRCG: p = z + βp // Zet γ^ op γ gammavorigeiteratie = gamma; herstart niet nodig // Maximum iteraties bereikt, wel oplossing teruggeven, result = SmrcgResultEnum.MaximumAantalIteratiesBereikt;

27 LogService.Log(TraceLevel.Info, "SMRCG: maximum aantal iteraties bereikt, oplossing tot nu toe wordt teruggegeven"); LogResiduen(r, z, gammainitieel); return false; private Vector<double, DoubleVectorOperation> DiagonalInverse(Matrix A, Vector<int, IntVectorOperation> selector, Vector<double, DoubleVectorOperation> weight) // Bereken DIAG (A*s*w*A(T)) Vector<double, DoubleVectorOperation> diagonaald = _matrixoperation.diagonal(a, selector, weight); // Bereken inverse van diagonaal (1 als 0, 1/diagonaal als > 0), D(ii) < 0 geeft exception Vector<double, DoubleVectorOperation> diagonaaldinverse = new Vector<double, DoubleVectorOperation>(new double[diagonaald.length]); for (int index = 0; index < diagonaald.length; index++) double diagonaalelement = diagonaald[index]; if (diagonaalelement > 0) diagonaaldinverse.data[index] = 1 / diagonaalelement; else if (diagonaalelement == 0) diagonaaldinverse.data[index] = 1; else string message =string.format( "Kan SMRCG algoritme niet uitvoeren; diagonaalelement AA' kleiner dan 0 op rij 0.", index + 1); throw new RadonNegativeDiagonalElementException(message); return diagonaaldinverse; private bool CheckInitieleResiduen(Vector<double, DoubleVectorOperation> r, double bn)

28 bool succeed = false; // Controleer de intiele residuen, dit kan de oplossing zijn double maximumnormr = r.maximumnorm; if (maximumnormr <= _maxabsresidu maximumnormr <= _maxepsilon * bn) string details = string.format( "Maximum norm van residuen (0) is kleiner dan of gelijk aan 1 of kleiner dan of gelijk aan 2 * bn (3)", maximumnormr, _maxabsresidu, _maxepsilon, bn); LogService.Log(TraceLevel.Info, "SMRCG: Initiële oplossing is oplossing", details ); succeed = true; return succeed; private void CheckArguments(Vector<double, DoubleVectorOperation> x, Vector<double, DoubleVectorOperation> b, Matrix A, Vector<int, IntVectorOperation> selector, Vector<double, DoubleVectorOperation> weight) // aantal rijen van A moet gelijk zijn aan elementen van b if (A.AantalRijen!= b.length) string message = string.format( "Kan SMRCG algoritme niet uitvoeren: aantal rijen van matrix A (0) is niet gelijk aan aantal elementen van vector b (1)", A.AantalRijen, b.length); throw new IncompatibleArgumentsException(message); // aantal rijen van A moet gelijk zijn aan elementen van x if (A.AantalRijen!= x.length) string message = string.format( "Kan SMRCG algoritme niet uitvoeren: aantal rijen van matrix A (0) is niet gelijk aan aantal elementen van vector x (1)", A.AantalRijen, x.length);

29 throw new IncompatibleArgumentsException(message); // aantal elementen van selector moet gelijk zijn aan kolommen van A (selector is optioneel) if (selector!= null && A.AantalKolommen!= selector.length) string message = string.format( "Kan SMRCG algoritme niet uitvoeren: aantal kolommen van matrix A (0) is niet gelijk aan aantal elementen van vector selector (1)", A.AantalKolommen, selector.length); throw new IncompatibleArgumentsException(message); // aantal elementen van weight moet gelijk zijn aan kolommen van A (weight is optioneel) if (weight!= null && A.AantalKolommen!= weight.length) string message = string.format( "Kan SMRCG algoritme niet uitvoeren: aantal kolommen van matrix A (0) is niet gelijk aan aantal elementen van vector weight (1)", A.AantalKolommen, weight.length); throw new IncompatibleArgumentsException(message); private void LogResiduen(Vector<double, DoubleVectorOperation> r, Vector<double, DoubleVectorOperation> z, double gammainitieel) double maximumnormresiduen = r.maximumnorm; double euclidischenormresiduen = r.inproduct(r); double euclidischenormgeschaalderesiduen = r.inproduct(z); double afnameeuclidischenormgeschaalderesiduen = euclidischenormgeschaalderesiduen / gammainitieel; LogService.Log(TraceLevel.Info, string.format("smrcg: Maximum norm ongeschaalde residuen = 0", maximumnormresiduen)); LogService.Log(TraceLevel.Info, string.format("smrcg: Euclidische norm ongeschaalde residuen = 0", euclidischenormresiduen));

30 LogService.Log(TraceLevel.Info, string.format("smrcg: Euclidische norm geschaalde residuen = 0", euclidischenormgeschaalderesiduen)); LogService.Log(TraceLevel.Info, string.format("smrcg: Afname euclidische norm geschaalde residuen = 0", afnameeuclidischenormgeschaalderesiduen)); #endregion

ASP.NET Test 2009-2010. Jan Van Ryckeghem

ASP.NET Test 2009-2010. Jan Van Ryckeghem ASP.NET Test 2009-2010 Jan Van Ryckeghem Inhoud Exceptionhandling H4... 3 Try Catch slide 25... 3 Error pagina slide 29... 3 Error.aspx... 3 Error.aspx.cs... 4 Web.config... 4 Logbestand aanmaken... 4

Nadere informatie

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B; Beschouw bijvoorbeeld de twee onderstaande klassen, waarvan de attributen en eigenschappen geannoteerd zijn met bijkomende XML-annotaties: using System ; using System. Xml ; using System. Xml. S e r i

Nadere informatie

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, 13.30-15.30 uur Naam: Studentnummer: Het tentamen bestaat uit 4 opgaven. Opgaven 1 levert 8 punten op, opgave 2 levert 12 punten

Nadere informatie

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur 1. (2 punten per deelvraag) Deze opgave bestaat uit een aantal tekstvragen. Houd het antwoord kort: een

Nadere informatie

NAAM: Programmeren 1 Examen 29/08/2012

NAAM: Programmeren 1 Examen 29/08/2012 Programmeren 29 augustus 202 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet je

Nadere informatie

Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers

Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers 1 Inhoud Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers 2 Geluidsbronnen simulator, deel 2 Inleiding De weergave versnellen

Nadere informatie

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, uur

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, uur Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, 11.00-13.00 uur 1. Een klasse is niet: (a) het type van een object (b) een groepje methoden (c) een groepje variabelen

Nadere informatie

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur 1. deze opgave telt voor 30% van het totaal. Schrijf een compleet programma, dat door de gebruiker vanaf

Nadere informatie

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, 13.00-15.00 uur 1. De situatie die ontstaat door class A : B C D; kan beschreven worden door (a) B is een A (b)

Nadere informatie

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, 11.00-13.00 uur 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan

Nadere informatie

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 1 februari 2019, 11.00 13.00 uur Voor de meerkeuzevragen hebben we verschillende versies. Dit zijn de juiste antwoorden per versie.

Nadere informatie

Een gelinkte lijst in C#

Een gelinkte lijst in C# Een gelinkte lijst in C# In deze tutorial ga demonstreren hoe je een gelinkte lijst kan opstellen in C#. We gaan een klasse schrijven, die een gelijkaardige functionaliteit heeft als een ArrayList, namelijk

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 6 december 2013 Terugblik Programma en geheugen Opdrachten Variabelen Methoden Objecten Klasse Programma en geheugen Opdrachten Variabelen zijn gegroepeerd in

Nadere informatie

Datastructuren Werkcollege Intro

Datastructuren Werkcollege Intro Bart Hijmans, Universiteit Leiden. Universiteit Leiden The Netherlands Focus 1 19 ˆ Ervaring in gebruik en implementatie van datastructuren ˆ Kennis van mogelijkheden ˆ Programmeren voor andere programmeurs

Nadere informatie

Voorbeeld: Simulatie van bewegende deeltjes

Voorbeeld: Simulatie van bewegende deeltjes Voorbeeld: Simulatie van bewegende deeltjes Simulatie - object Ruimte - objecten Deeltje - objecten Button - objecten Simulatie Samenhang van objecten sim geërfd van Form stap zelf gedeclareerd auto r1

Nadere informatie

Programmeren in C# Samenvatting van C#

Programmeren in C# Samenvatting van C# Programmeren in C# Samenvatting van C# Proceduraal Programmeren Functies (O: void + return, I: referentie of value) Arrays, Lijsten Lussen (for, while, do while) Condities, if-else, switch Variabelen,

Nadere informatie

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, 8.30-10.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

C# 6 Door Alex en Chris van Beek

C# 6 Door Alex en Chris van Beek C# 6 Door Alex en Chris van Beek Over ons Enthousiastelingen Software Architecten bij Luminis Arnhem B.V. Gespecialiseerd in Microsoft technologie:.net, Azure en Windows Twitter: @Beekje en @cbeek Blog:

Nadere informatie

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren Universiteit van Amsterdam FNWI Voorbeeld van tussentoets Inleiding programmeren Opgave 1: Wat is de uitvoer van dit programma? public class Opgave { static int i = 0 ; static int j = 1 ; int i = 1 ; int

Nadere informatie

Leren programmeren in C# Deel 2 - Gegevens

Leren programmeren in C# Deel 2 - Gegevens Michiel Rotteveel Leren programmeren in C# Deel 2 - Gegevens Errata 1e druk Brinkman Uitgeverij Amsterdam 2017 Deze errata horen bij Leren programmeren in C#: Deel 2 Gegevens, isbn 978 90 5752 342 7 /

Nadere informatie

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

Syntax van opdracht. opdracht. expressie. variabele. = expressie ; klasse naam. methode naam. property naam += object Syntax van opdracht opdracht klasse naam methode naam ( expressie ) ; object expressie. property naam +=, variabele = expressie ; Static gewone methoden Bewerken een object Aanroep: object. methode ( )

Nadere informatie

In de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal.

In de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal. 4. Array s Een array is een geïndexeerde variabele. Deze zin zal de nodig vragen oproepen, waarop enige uitleg van toepassing is. Met variabelen hebben we al kennis gemaakt. In een variabele kun je iets

Nadere informatie

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 11 november 2016, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 11 november 2016, uur Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 11 november 2016, 8.30 10.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, 8.30-10.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Programmeren 1 20 januari 2012 Prof. T. Schrijvers

Programmeren 1 20 januari 2012 Prof. T. Schrijvers Programmeren 1 20 januari 2012 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet

Nadere informatie

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur Dit tentamen is in elektronische vorm beschikbaar gemaakt door de TBC van A Eskwadraat. A Eskwadraat kan niet aansprakelijk worden gesteld voor de gevolgen van eventuele fouten in dit tentamen. Aanvullende

Nadere informatie

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 9 november 2018, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 9 november 2018, uur Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 9 november 2018, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Veel succes! 1. Gegeven is de volgende klasse:

Veel succes! 1. Gegeven is de volgende klasse: Dit tentamen is in elektronische vorm beschikbaar gemaakt door de TBC van A Eskwadraat. A Eskwadraat kan niet aansprakelijk worden gesteld voor de gevolgen van eventuele fouten in dit tentamen. Derde deeltentamen

Nadere informatie

File Uploads met standaard ASP.NET

File Uploads met standaard ASP.NET File Uploads met standaard ASP.NET In deze tutorial gaan we een aspx pagina maken (met codebehind), waarmee je een bestand kan uploaden naar de webserver. Noot: de hier beschreven code gaat niet in op

Nadere informatie

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Programmeren 1 23 januari 2013 Prof. T. Schrijvers Programmeren 1 23 januari 2013 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet

Nadere informatie

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

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, 14.00-15.30, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Dit tentamen bestaat uit twee delen. Deel 1 (14.00-14.45, gesloten

Nadere informatie

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double. Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort

Nadere informatie

Project documentatie Project Expo

Project documentatie Project Expo Project documentatie Project Expo Klas: IP110 Groep:3 Groepsleden: Leonard Breitkopf Nander Konijn Onno van Gijssel Contactgegevens: onno.van.gijssel@hva.nl 1 Inhoudsopgave Inhoudsopgave... 2 Inleiding...

Nadere informatie

Programmeermethoden. Arrays. Walter Kosters. week 7: oktober kosterswa/pm/

Programmeermethoden. Arrays. Walter Kosters. week 7: oktober kosterswa/pm/ Programmeermethoden Walter Kosters week 7: 15 19 oktober 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Nonogrammen Japanse puzzels (Nonogrammen) zien er zo uit: 1 1,1 1 1,1 1 0 1,1 0 1,1 3 7 7 7 7 7 7

Nadere informatie

Beeldverwerking. Scientific Computing. sleij101/ Program. WISB356, Utrecht, najaar WISB356, Utrecht, najaar 2010

Beeldverwerking. Scientific Computing.   sleij101/ Program. WISB356, Utrecht, najaar WISB356, Utrecht, najaar 2010 WISB36, Utrecht, najaar Scientific Computing WISB36, Utrecht, najaar Beeldverwerking Gerard Sleijpen Rob Bisseling Department of Mathematics Gerard Sleijpen Rob Bisseling Department of Mathematics http://wwwstaffscienceuunl/

Nadere informatie

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING DIAGNOSTISCHE TOETS Softwaresystemen datum: Donderdag van Week 7 UITWERKING Deze diagnostische toets bevat vragen over excepties en concurrency. Beantwoord de vragen zo goed mogelijk in 30 minuten Bespreek

Nadere informatie

Overerving & Polymorfisme

Overerving & Polymorfisme Overerving & Polymorfisme Overerving Sommige klassen zijn speciaal geval van andere klasse Docent is een speciaal geval van werknemer, dwz. elke docent is ook werknemer Functionaliteit van docent = functionaliteit

Nadere informatie

Wiskundige Analyse I. Hoofdstuk 1. Vraag 1.1 Het beginvoorwaardenprobleem. x 2 y + xy + x 2 y = 0, y(0+) = 1, y (0+) = 0. bezit een unieke oplossing.

Wiskundige Analyse I. Hoofdstuk 1. Vraag 1.1 Het beginvoorwaardenprobleem. x 2 y + xy + x 2 y = 0, y(0+) = 1, y (0+) = 0. bezit een unieke oplossing. Hoofdstuk 1 Wiskundige Analyse I Vraag 1.1 Het beginvoordenprobleem x 2 y + xy + y = 0, y(0+) = 1, y (0+) = 0 bezit een unieke oplossing. vals Vraag 1.2 Het beginvoordenprobleem x 2 y + xy + x 2 y = 0,

Nadere informatie

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen.

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen. Indexers in C#.Net In deze tutorial ga ik het hebben over indexers. Bij het gebruik van bijvoorbeeld een ArrayList object, kan je de gegevens uit deze collectie opvragen als ware het een array. // ArrayList

Nadere informatie

In BlueJ. Doe onderstaande met muis/menu s:

In BlueJ. Doe onderstaande met muis/menu s: In BlueJ Doe onderstaande met muis/menu s: Download en unzip het bestand sklok-run.zip en open het in BlueJ Maak een Schaakklok-object Voer herstart() uit voor dit object Vraag de resterende tijd op voor

Nadere informatie

vandaag èn vrijdag deadline maandag 12 dec.

vandaag èn vrijdag deadline maandag 12 dec. vandaag èn vrijdag deadline maandag 12 dec. Herhaling met een teller int t ; t = 0; for while ( ( t=0 t

Nadere informatie

Gebruikers handleiding. Lizard Configuration Manager ToolTip. Installatie. Instellen. Initieel instellen

Gebruikers handleiding. Lizard Configuration Manager ToolTip. Installatie. Instellen. Initieel instellen Gebruikers handleiding Lizard Configuration Manager ToolTip Installatie Installeer eerst het volgende: Installeer python 2.5.2; zie de map Breda\Tooltip\lcm\install\python-2.5.2.msi Ga naar dos (run/uitvoeren

Nadere informatie

Programmeren (1) Examen NAAM:

Programmeren (1) Examen NAAM: Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft

Nadere informatie

MA!N Rapportages en Analyses

MA!N Rapportages en Analyses MA!N Rapportages en Analyses Auteur Versie CE-iT 1.2 Inhoud 1 Inleiding... 3 2 Microsoft Excel Pivot analyses... 4 2.1 Verbinding met database... 4 2.2 Data analyseren... 5 2.3 Analyses verversen... 6

Nadere informatie

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

SPOJ oplossingen Gilles Callebaut 7 augustus 2015 SPOJ oplossingen 2012-2013 Gilles Callebaut 7 augustus 2015 DISCLAIMER Oefeningen zijn niet altijd correct of optimaal. Gelieve de oefeningen enkel te gebruiken ter ondersteuning. Van kopiëren leer je

Nadere informatie

Dit kan gebruikt worden in zowel een ASP.NET web applicatie als een desktop applicatie.

Dit kan gebruikt worden in zowel een ASP.NET web applicatie als een desktop applicatie. Introductie Dit artikel laat zien hoe je een Image in een C# applicatie kan opslaan in een database en het kan ophalen uit de database om het te laten zien. Voor de database gebruiken we MS SQL maar voor

Nadere informatie

return an ; } private I L i s t l i j s t ;

return an ; } private I L i s t l i j s t ; In bovenstaande code werd de binding t e k s t. DataBindings. Add(new Binding ( Text, l i j s t, ) ) ; gebruikt om de eigenschap Text van het object tekst (dwz. tekst.text) te binden aan het object lijst.

Nadere informatie

Game of Life in Java

Game of Life in Java Game of Life in Java Auteur: drs. M.S.L.F. Manssen http://www.manssen.eu Game of Life is een spel van een rooster van cellen, waarbij telkens een ronde gebeurt waarbij de nieuwe waardes van cellen gebeurt.

Nadere informatie

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, 8.30-10.30 uur 1. Een Intent-object wordt gebruikt voor communicatie (a) van een Activity naar een bijbehorende View

Nadere informatie

Labo 2 Programmeren II

Labo 2 Programmeren II Labo 2 Programmeren II L. Schoofs K. van Assche Gebruik Visual Studio 2005 om een programma te ontwikkelen dat eenvoudige grafieken tekent. Deze opgave heb je vorig academiejaar reeds in Java geïmplementeerd.

Nadere informatie

Tentamen Imperatief Programmeren

Tentamen Imperatief Programmeren Tentamen Imperatief Programmeren Maandag 22 oktober 2001 Toelichting Dit is een open boek tentamen, d.w.z. het cursusboek mag gebruikt worden. N.B.: Het tentamen is individueel: voor het maken van de opgaven

Nadere informatie

Elementary Data Structures 3

Elementary Data Structures 3 Elementary Data Structures 3 Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 29 september 2014 ODE/FHTBM Elementary Data Structures 3 29 september 2014 1/14 Meer

Nadere informatie

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014!

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014! Inleiding Software Engineering Unit Testing, Contracten, Debugger 13 Februari 2014 Beknopte info over Unit Testing en Contracten kan je vinden op het einde van dit document. Eclipse beschikt over een handige

Nadere informatie

Dynamische Websites. Week 10

Dynamische Websites. Week 10 Dynamische Websites Week 10 INFO Feedback vraag het in de labo s als je feedback wilt op je code Lessen op 5/12 en 12/12 om 17.15 op 19/12 om 11.00 KLEURENCODE GROEN = zelf kunnen schrijven PAARS = code

Nadere informatie

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 21 oktober 2011, uur

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 21 oktober 2011, uur Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 21 oktober 2011, 11.00-13.00 uur 1. Deze opgave bestaat uit een aantal tekstvragen. Houd het antwoord kort: een of twee zinnen per onderdeel

Nadere informatie

Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur

Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het

Nadere informatie

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden : stapels, rijen en binaire bomen Walter Kosters week 12: 26 30 november 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 en Vierde programmeeropgave Othello programmeren we als volgt:

Nadere informatie

HANDLEIDING DMS Plugin Installatie, configuratie & werking

HANDLEIDING DMS Plugin Installatie, configuratie & werking HANDLEIDING DMS Plugin Installatie, configuratie & werking Dit document is de handleiding voor de installatie, configuratie en werking van de DMS Plugin. Versie 1-12/09/2005 Inhoudstafel 1 Installatie...

Nadere informatie

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)

Nadere informatie

Hoofdstuk 1 : Vectoren (A5D)

Hoofdstuk 1 : Vectoren (A5D) 1 Hoofdstuk 1 : Vectoren (A5D) Hoofdstuk 1 : Vectoren (A5D) Les 1 : Stelsels en Echelon vorm DOEL : WE GAAN EEN AANTAL VERGELIJKINGEN MET EEN AANTAL VARIABELEN PROBEREN OP TE LOSSEN. Definities Stelsel

Nadere informatie

Matrixoperaties. Definitie. Voorbeelden. Een matrix is een rechthoekig array van getallen, die kentallen of elementen heten.

Matrixoperaties. Definitie. Voorbeelden. Een matrix is een rechthoekig array van getallen, die kentallen of elementen heten. Definitie Een matrix is een rechthoekig array van getallen, die kentallen of elementen heten. Voorbeelden De coëfficiëntenmatrix of aangevulde matrix bij een stelsel lineaire vergelijkingen. Een rij-echelonmatrix

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 18 december 2015 Overerving (inheritance) Constructors Overriding Inheritance demo Exceptions Zelf exceptions veroorzaken Overerving (inheritance) 2-dimensionaal

Nadere informatie

Een korte samenvatting van enkele FORTRAN opdrachten

Een korte samenvatting van enkele FORTRAN opdrachten Een korte samenvatting van enkele FORTRAN opdrachten Inhoud 1 Introductie 3 2 De structuur van een FORTRAN programma 3 3 Datatypen, variabelen en declaraties 3 4 Expressies-volgorde van uitwerking 4 5

Nadere informatie

Net2CountedAccess. Handleiding 1.0

Net2CountedAccess. Handleiding 1.0 1.0 INTOACCESS B.V. THE INTEGRATORS A.Hofmanweg 5A 2031 BH Haarlem The Netherlands info@intoaccess.com www.intoaccess.com +31(0)23 7505 128 Page 2 of 13 Net2CountedAccess Index Installatie en configuratie

Nadere informatie

Programmeren in C# Bestanden. Hoofdstuk 18

Programmeren in C# Bestanden. Hoofdstuk 18 Programmeren in C# Bestanden Hoofdstuk 18 In dit hoofdstuk Tekstbestanden Lezen en schrijven Mappen (Directories) MessageBox Standaard dialoogvensters Menu s Programmeren in C# 2 In dit hoofdstuk Tekstbestanden

Nadere informatie

Ingebouwde klassen & methodes

Ingebouwde klassen & methodes Ingebouwde klassen & methodes Statische methodes Methodes die bij een klasse horen ipv. bij een object public class Docent { public static Docent departementshoofd() { return new Docent("Jan Ivens"); private

Nadere informatie

Maak een pivot uit een Generic.List

Maak een pivot uit een Generic.List Maak een pivot uit een Generic.List Introductie in extensions, reflection en code generation Nivo: 400 Introductie In bepaalde gevallen komt het voor dat je een Generic.List van een specifieke class hebt,

Nadere informatie

IMP Uitwerking week 13

IMP Uitwerking week 13 IMP Uitwerking week 13 Opgave 1 Nee. Anders moet bijvoorbeeld een venster applicatie een subklasse zijn van zowel Frame en WindowListener. Als de applicatie ook een button of een menu heeft, dan moet het

Nadere informatie

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010 Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar 2009-2010 16 juni, 2010 **BELANGRIJK** 1. Schrijf je naam onderaan op elk blad. 2.

Nadere informatie

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Gesloten boek examen: er mag geen gebruik worden gemaakt van het studieboek.

Nadere informatie

Programmeren in C# Klassen schrijven

Programmeren in C# Klassen schrijven Programmeren in C# Klassen schrijven In dit hoofdstuk Klassestructuur Private variabelen Publieke methoden (public) Properties Constructormethodes Private methodes (private) Static methodes en properties

Nadere informatie

Katholieke Hogeschool Kempen ASP

Katholieke Hogeschool Kempen ASP Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica ASP www.projectchatroom.be Yorkim Parmentier 3TI4 Andy Geluykens 3TI4 Academiejaar

Nadere informatie

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

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/ Programmeermethoden Recursie Walter Kosters week 11: 20 24 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Vierde programmeeropgave 1 De Grote getallen programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 27 november 2015 Recursie Objecten Constructors Aanpassen variabelen this keyword Recursie Recursie Recursieve functie roept zichzelf (direct of indirect) aan

Nadere informatie

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

Programmeermethoden. Recursie. week 11: november kosterswa/pm/ Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

Implementatie AssurePay ASP.NET. ideal

Implementatie AssurePay ASP.NET. ideal Implementatie AssurePay ASP.NET ideal Implementatie AssurePay ASP.NET 2 van 11 Inhoudsopgave Microsoft ASP.NET... 3 Classic ASP... 9 Implementatie AssurePay ASP.NET 3 van 11 Microsoft ASP.NET Implementeren

Nadere informatie

sheets Programmeren 1 Java college 6, Walter Kosters De sheets zijn gebaseerd op met name hoofdstuk 13 en 14 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/

Nadere informatie

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

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN Onderdeel van SmartProducts INHOUD COLLEGE 3 Scope van variabelen {3.9} Class ontwerpen en maken,

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 25 november 2015 Herhaling Meer herhaling Recursie Mutuele recursie Objecten Herhaling Fibonacci class Fibonacci { public static void fibonaccitot(int bovengrens)

Nadere informatie

Opdrachten herhalen. public void tekenscherm (object o, PEA pea) { int x; x = 1; zolang de voorwaarde geldig is

Opdrachten herhalen. public void tekenscherm (object o, PEA pea) { int x; x = 1; zolang de voorwaarde geldig is Opdrachten herhalen public void tekenscherm (object o, PEA pea) { int x; x = 1; while ( x

Nadere informatie

// schrijf een static methode die telt hoe // vaak een symbool voorkomt in een string // voorbeeld-aanroep: int n; n = Demo. Freq( e, "some text" );

// schrijf een static methode die telt hoe // vaak een symbool voorkomt in een string // voorbeeld-aanroep: int n; n = Demo. Freq( e, some text ); Publieksvraag // schrijf een static methode die telt hoe // vaak een symbool voorkomt in een string // voorbeeld-aanroep: int n; n = Demo. Freq( e, "some text" ); // hint: gebruik een for opdracht Tel

Nadere informatie

Blokmatrices. , I 21 = ( 0 0 ) en I 22 = 1.

Blokmatrices. , I 21 = ( 0 0 ) en I 22 = 1. Blokmatrices Soms kan het handig zijn een matrix in zogenaamde blokken op te delen, vooral als sommige van deze blokken uit louter nullen bestaan Berekeningen kunnen hierdoor soms aanzienlijk worden vereenvoudigd

Nadere informatie

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Vrijdag 22 januari 2010 Toelichting Dit is een open boek tentamen. Communicatie en het gebruik van hulpmiddelen zijn niet toegestaan.

Nadere informatie

Uitwerkingen Derde deeltentamen Imperatief programmeren Vrijdag 12 november 2010, uur

Uitwerkingen Derde deeltentamen Imperatief programmeren Vrijdag 12 november 2010, uur 1. (telt voor 20%) Uitwerkingen Derde deeltentamen Imperatief programmeren Vrijdag 12 november 2010, 8.30-10.30 uur Bij het spel Reversi leggen twee spelers om de beurt een gekleurde steen op een veld

Nadere informatie

1. Document Management

1. Document Management 1. Document Management 1.1. Revision Manager Revision Manager is een gescheiden module waarin het aanmaken van afgeleide documenten en het onderhouden van revisies moet gebeuren om de aanwezige Links te

Nadere informatie

ASRemote WebService. Via deze webservice kunt u:

ASRemote WebService. Via deze webservice kunt u: ASRemote WebService De ASRemote WebService is een SOAP Webservice die softwarematige communicatie met Exact Globe mogelijk maakt vanaf een willekeurige locatie op het internet. Via deze webservice kunt

Nadere informatie

extra sommen bij Numerieke lineaire algebra

extra sommen bij Numerieke lineaire algebra extra sommen bij Numerieke lineaire algebra 31 oktober 2012 1. Stel, we willen met een rekenapparaat (dat arithmetische bewerkingen uitvoert met een relatieve nauwkeurigheid ξ, ξ ξ) voor twee getallen

Nadere informatie

Vakgroep CW KAHO Sint-Lieven

Vakgroep CW KAHO Sint-Lieven Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be

Nadere informatie

Windows-applicatie. using System.Windows.Forms; using System.Drawing; class HalloWin1 { static void Main ( )

Windows-applicatie. using System.Windows.Forms; using System.Drawing; class HalloWin1 { static void Main ( ) Windows-applicatie using System.Windows.Forms; using System.Drawing; class HalloWin1 { static void Main ( ) { Form scherm; declaratie en toekenning van een variabele met type Form scherm = new Form( );

Nadere informatie

Java Programma structuur

Java Programma structuur Java Programma structuur public class Bla // div. statements public static void main(string argv[]) // meer spul Voortgezet Prog. voor KI, week 4:11 november 2002 1 Lijsten Voorbeelden 2, 3, 5, 7, 13 Jan,

Nadere informatie

Programmeren in C# Overerving

Programmeren in C# Overerving Programmeren in C# Overerving Programmeren in C# 2 public class Balloon private int x = 50; private int y = 50; private int diameter = 20; public int Diameter getreturn diameter; setif (value

Nadere informatie

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 22 december 2017, uur

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 22 december 2017, uur Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 22 december 2017, 8.30 10.30 uur 1. De symbolencombinatie /= betekent (a) hier begint een meer-regelig commentaar (b)... wordt één-...

Nadere informatie

Introductie in C++ Jan van Rijn. September 2013

Introductie in C++ Jan van Rijn. September 2013 Introductie in C++ Jan van Rijn September 2013 Inhoud Classes Overerving Const correctness Standard C++ library Templates Classes Voordelen van classes: Modelleren Modulariteit Informatie afschermen Makkelijk(er)

Nadere informatie

Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 10 november 2017, uur

Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 10 november 2017, uur Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 10 november 2017, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het

Nadere informatie

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 21 december 2018, uur

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 21 december 2018, uur Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 21 december 2018, 8.30 10.30 uur 1. Gegeven zijn de integer variabele x en de string variabele s. Welke van de volgende uitspraken

Nadere informatie

DOMjudge teamhandleiding

DOMjudge teamhandleiding judge DOMjudge teamhandleiding Samenvatting /\ DOM DOM judge Hieronder staat de belangrijkste informatie kort samengevat. Dit is bedoeld om snel aan de slag te kunnen. We raden echter ten zeerste aan dat

Nadere informatie

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Kwis (3) class X { public void a() { System.out.println(x); public static void main(string[] args) { X x = new X(); Kwis (3) class X { public void a() { System.out.println("x"); class Y extends X { public void a() { System.out.println("y"); class Z extends Y { public void a() { System.out.println("z"); public static

Nadere informatie

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) LES 4 In deze les gaan we een eenvoudig dobbelspelletje maken: Allereerst krijgt de speler de gelegenheid zijn/haar naam in te vullen en daarna op OK te klikken

Nadere informatie

Som Van Twee Getallen

Som Van Twee Getallen Public Class frmsomvantweegetallen Som Van Twee Getallen Private Sub btnberekensom_click(sender As System.Object, e As System.EventArgs) Handles btnberekensom.click 'Declareer de variabelen '-----------------------

Nadere informatie