private readonly WindowController _windowcontroller = null;
|
|
- Andreas Driessen
- 6 jaren geleden
- Aantal bezoeken:
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 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 informatiepublic 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 informatieAanvullende 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 informatieUitwerkingen 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 informatieNAAM: 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 informatieKlassen & 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 informatieUitwerking 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 informatieUitwerking 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 informatieUitwerking 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 informatieUitwerkingen 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 informatieVersie 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 informatieEen 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 informatieModelleren 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 informatieDatastructuren 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 informatieVoorbeeld: 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 informatieProgrammeren 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 informatieTweede 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 informatieC# 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 informatieUniversiteit 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 informatieLeren 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 informatieSyntax 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 informatieIn 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 informatieDerde 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 informatieDerde 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 informatieProgrammeren 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 informatieDerde 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 informatieAanvullende 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 informatieDerde 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 informatieVeel 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 informatieFile 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 informatieProgrammeren 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 informatieVoorbeeldtentamen 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 informatieDatatypes 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 informatieProject 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 informatieProgrammeermethoden. 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 informatieBeeldverwerking. 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 informatieDIAGNOSTISCHE 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 informatieOvererving & 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 informatieWiskundige 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 informatieDergelijke 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 informatieIn 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 informatievandaag è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 informatieGebruikers 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 informatieProgrammeren (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 informatieMA!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 informatieSPOJ 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 informatieDit 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 informatiereturn 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 informatieGame 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 informatieUitwerking 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 informatieLabo 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 informatieTentamen 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 informatieElementary 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 informatieInleiding 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 informatieDynamische 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 informatieUitwerking 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 informatieUitwerking 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 informatieDatastructuren: 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 informatieHANDLEIDING 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 informatieDatastructuren: 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 informatieHoofdstuk 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 informatieMatrixoperaties. 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 informatieModelleren 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 informatieEen 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 informatieNet2CountedAccess. 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 informatieProgrammeren 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 informatieIngebouwde 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 informatieMaak 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 informatieIMP 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 informatieExamen 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 informatieTentamen 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 informatieProgrammeren 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 informatieKatholieke 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 informatieProgrammeermethoden. 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 informatieModelleren 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 informatieProgrammeermethoden. 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 informatieImplementatie 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 informatiesheets 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 informatieAPPLICATIEBOUW 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 informatieModelleren 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 informatieOpdrachten 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" );
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 informatieBlokmatrices. , 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 informatieTentamen 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 informatieUitwerkingen 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 informatie1. 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 informatieASRemote 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 informatieextra 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 informatieVakgroep 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 informatieWindows-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 informatieJava 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 informatieProgrammeren 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 informatieUitwerking 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 informatieIntroductie 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 informatieUitwerking 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 informatieUitwerking 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 informatieDOMjudge 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 informatieKwis (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 informatieHANDLEIDING 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 informatieSom 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