Labo 1 Programmeren II



Vergelijkbare documenten
Versturen van vanuit een Delphi VCL toepassing

Labo 2 Programmeren II

Vakgroep CW KAHO Sint-Lieven

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

Inhoud Inhoud. Over dit boek 7. 1 Eclipse IDE (Integrated Development Environment) 9. 2 Functionele specificatie 13

eerste voorbeelden in Java


NetBeans tutorial, Rik Eshuis, Kees Huizing versie 2.2 Augustus 2009

Project 2: LOTTO simulatie Programmeren I

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

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

Java. Basissyllabus. Egon Pas

Een eerste applicatie

Een gelinkte lijst in C#

NAAM: Programmeren 1 Examen 21/01/2011

NAAM: Programmeren 1 Examen 29/08/2012

Handleiding JCreator. Inhoud. Een Workspace en een eerste project maken

Inleiding C++ Coding Conventions

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

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

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Modelleren & Programmeren. Jeroen Fokker

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

Programmeren (1) Examen NAAM:

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

SYNTRA-WEST. Initiatiecursus JAVA. Deel

SYNTRA-WEST. Cursus OOP. Deel

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Kleine cursus PHP5. Auteur: Raymond Moesker

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

BEGINNER JAVA Inhoudsopgave

Zelftest Programmeren in Java

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

Specialisatie RTES - Project FunnyScreens. Installatie en gebruik van JUnit

Inhoudsopgave. Hoofdstuk 1.RMI...2

Modelleren en Programmeren

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Programmeren in C++ Efficiënte zoekfunctie in een boek

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

Software-Ontwikkeling I Academiejaar

INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN

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

Ingebouwde klassen & methodes

Handleiding aanmaak CSR

Handleiding aanmaak CSR

Een stoomcursus door Edgar de Graaf, november 2006

Programmeren Het gesloten boek examen 1.1

VB Magazine Online /08 1 / 6

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

Lessen Java: Reeks pag. 1

Modelleren en Programmeren

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

IMP Uitwerking week 13

Werking van de Office Connector, en het oplossen van fouten.

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

Correspondentie inzake overnemen of reproductie kunt u richten aan:

Parallelle Poort Aansturen Met Visual Basic

Werken op afstand via internet

Inhoudsopgave. Hoofdstuk 1: Ant...4

Game of Life in Java

Een ASP.NET applicatie opzetten. Beginsituatie:

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Programmeren: Visual Basic

Opdracht 7a. Applicatiebouw 2014/2015

Werkomgeving. Android Studio. Android - werkomgeving 1/6

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Tentamen Imperatief Programmeren

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

1 Een beetje theorie vooraf 1. Wat is een programma? 2 Hoe maakt u een programma? 3 IL-code en JIT-compiler 5

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Oefenzitting Werken met Java Achtergrond BVP

Modelleren en Programmeren

Technische nota AbiFire5 Rapporten maken via ODBC

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

Java Les 3 Theorie Herhaal structuren

Handleiding bij de Booktest Generator

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma

Programmeren: Visual Basic

6. Het maken van een database

Open Safari op de Mac, ga naar de webpagina en klik op SSH scripts Mac OS X : Figure 1 SSH scripts downloaden

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

Objectgeoriënteerd Programmeren: WPO 2a

Werken met ActiveX (COM) componenten in.net

int getaantalpassagiers{): void setaantalpassagiers(int aantalpassagiers);

Objectgeoriënteerd programmeren in Java 1

Om de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven.

Introductie in C++ Jan van Rijn. September 2013

Stappenplannen MailPlus SOAP API

File Uploads met standaard ASP.NET

Transcriptie:

Labo 1 Programmeren II L. Schoofs K. van Assche Voor de OA Labo Programmeren II programmeren we in C# en met Microsoft Visual Studio 2005 als ontwikkelomgeving (voorlopig beta2). Deze IDE maakt gebruik van Microsoft.NET Framework SDK v2.0. In eerste instantie zullen we een paar C# programmaatjes beschouwen zonder gebruik te maken van de Visual Studio omgeving. Vervolgens zullen we gebruik maken van de ontwikkelomgeving. Kennismaking met de C# compiler van Microsoft. 1. Eerste C# programma: HalloWereld Volg de instructies van je cursus (hoofdstuk 1.2) Opmerking: De compiler csc.exe bevindt zich normaliter in folder C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215 Je kan ervoor opteren om het pad op te nemen in de PATH environment variabele, zodat je niet telkens het pad expliciet moet vermelden in je DOS prompt. Een handig alternatief is om de voorziene SDK Command Prompt te gebruiken: Start > Alle Programma s > Microsoft.NET Framework SDK v2.0 > SDK Command Prompt 2. Maak een programma dat je naam 10 keer op het scherm drukt. Je naam moet gestockeerd worden in een constante. Wat je hierbij moet weten is dat static final in java overeenkomt met const in C#. Vergeet niet in je hoofdprogramma een object aan te maken waarvan je een methode oproept om je naam te drukken. Schrijf aan het begin van je programma de nodige XML-documentatie. Dit doe je op de volgende manier: 1

Op elke regel van je documentatie schrijf je drie (3) slashen /// Schrijf twee XML-tags: <summary> en </summary> Tussen de tags schrijf je een korte samenvatting van je programma. Consulteer je cursus voor bijkomende informatie (hoofdstuk 1.4) 3. Schrijf 2 testprogramma s die het gemiddelde van gehele getallen bepalen. Het eerste programma doet dit voor 20 random gegenereerde getallen met waarde tussen 0 en 10. Het tweede programma doet dit voor 5 gehele getallen die ingelezen worden door de gebruiker. Let hierbij op het volgende: Het inlezen van gegevens van het toetsenbord doe je aan de hand van Console.ReadLine(). Deze statische methode geeft een string terug. string s = Console.ReadLine(); Het converteren van een string naar een int doe je aan de hand van het volgende statement: int i = int.parse(s); Het genereren van een random nummer tussen 0 en 10 doe je aan de hand van volgende statements: private Random random = new Random(); int nummer = random.next(0,10); Voorzie een centrale klasse (Gemiddelde) die de logica bevat om van een set getallen het gemiddelde te berekenen. Maak vervolgens de 2 gevraagde testprogramma s (TestGemiddelde en TestUserGemiddelde) die de centrale klasse gebruiken. Voorzie in elke klasse XML documentatie. Compileer de code en voer uit: K:\>csc TestGemiddelde.cs Gemiddelde.cs K:\>TestGemiddelde.exe K:\>csc TestUserGemiddelde.cs Gemiddelde.cs K:\>TestUserGemiddelde.exe 2

Kennismaking Visual C#.NET IDE van Microsoft. Opstarten van de IDE kan als volgt: Start > Alle Programma s > Microsoft Visual Studio 2005 beta2 > Microsoft Visual Studio 2005 beta2 In de labo s is normaliter een shortcut op je desktop voorzien. 4. Een bestaande toepassing (Solitaire) inladen, compileren en uitvoeren: Maak in Visual Studio eerst een nieuw project aan: Menu: File > New Project In de New Project Dialog box, kies: Visual C# Windows (links) en Empty Project (rechts) Wijzig de naam Project1 naar Solitaire Wijzig de locatie naar een folder op je K-schijf (daar waar je alle programmeren II code zal onderbrengen). Importeer nu het Solitaire labo (cfr. Modeloplossing 1ICT): Menu: Project > Add Existing Item In de Add Existing Item Dialog box, selecteer: (Stream.java zal je niet nodig hebben.) Solitaire.java. Hernoem je bestand naar Solitaire.cs (in Solution explorer venster) Door te dubbelklikken op Solitaire.cs in het Solution Explorer venster, kan je nu de broncode bekijken. In het Code View venster kan je blokken code samentrekken of opnieuw uitrekken (grijze + en - tekens). Zo kan je in 1 oogopslag zien dat de code uit volgende 3 klassen bestaat : class Positie class SpelBord public class Solitaire Een overzicht van de velden, constructoren en methoden bekom je met de class view (Menu : View > Class View). Een grafische voorstelling verkrijg je door in solution venster voor het project View Class Diagram) te kiezen : Compileer nu even je programma : 3

Figuur 1: Overzicht van de character classes Menu: Build > Build Solution (of functietoets F6) Je merkt dat een aantal aanpassingen zijn vereist om te komen tot een werkend C# programma: main wordt Main System.out.println wordt Console.WriteLine System.out.print wordt Console.Write in.readstring wordt Console.Read (declaratie van variabele in van type Stream mag verwijderd worden) clausule throws IOException mag verwijderd worden uit Main boolean wordt bool static final wordt const String wordt string. Math.abs wordt Math.Abs. touppercase wordt ToUpper. equals wordt == (om strings te vergelijken). random.nextint wordt random.next. Wijzig de syntax voor tweedimensionele rijen : [][] wordt [,] (zowel bij declaratie als in gebruik). 4

Om i-de karakter in een string te bekomen gebruik je nu een indexer: naam.charat(i) wordt naam[i] Vervang de import statements door using System; using System.Text.RegularExpressions; De System namespace leest een aantal basisstructuren van C# in) en. De namespace voor reguliere expressies is te vinden in klassebibliotheek System.dll. Deze bibliotheek voeg je toe aan je project via de optie Add References In het popup venster ga je op zoek naar betreffende.net component. Vervang : return Pattern.matches(pattern, zet); door : Regex regex = new Regex(pattern); return regex.ismatch(zet); Ter vervanging van de String.valueOf() statements doe je de omzetting van char naar string en van int naar string als volgt: string s2 = char.tostring(c)); string s1 = i.tostring(); Compilatie zou hiermee in orde moeten zijn. Je moet echter nog één aanpassing doorvoeren in je programma om correcte uitvoer op je console te komen: public override string ToString() gebruiken in klasse Positie 5. Integreer de eerder geschreven testprogramma s TestGemiddelde en TestUserGemiddelde in Visual Studio. Je kan ervoor opteren op 2 afzonderlijke solutions aan te maken. Het is echter mogelijk om alles in 1 solution te doen, zo vermijd je dupplicatie van de gemeenschappelijke klasse Gemiddelde: In de Visual Studio Solution maak je 3 projecten aan: een klassebibliotheek voor de centrale klasse (>> Gemiddelde.dll) een console applicatie voor het random testprogramma (>> TestGemiddelde.exe) een tweede console applicatie voor testprogramma met gebruikersingave (>> TestUserGemiddelde.exe) 5

Laat elke van deze testprojecten de gemeenschappelijke bibliotheek dll gebruiken (project > add references). Via de solution explorer kan je beslissen welk testproject het actieve is: Set as Startup Project. 6. Als verdere kennismaking met C# gaan we het programma Router omzetten van java naar C#. Download de java code van toledo en zet ze op je k-schijf. Open de commandolijn, compileer het Router programma en verifieer de werking : K:\> javac Router.java K:\> java Router 556.028.717.445 - data d - 2-2 - 0 223.601.443.913 - data d - 1-3 - 0 652.136.807.060 - data d - 3-1 - 0 279.439.120.500 - data a - 0-4 - 1 404.424.455.786 - data a - 3-1 - 1... Neem de 6 bestanden binnen in een nieuwe C# solution (console toepassing). Hernoem alle.java bestanden naar.cs bestanden: Invoer.cs Pakket.cs Router.cs Scheduler.cs Tabel.cs Uitvoer.cs Hieronder geven we aanwijzingen om de conversie tot een goed einde te brengen. Er wordt bij sommige punten slechts summier uitleg gegeven, vermits ze later in de theorie uitvoerig beschreven zullen worden. Let tijdens het veranderen op de omringende code, zodat je de gelijkenissen tussen C# en java ineens meepikt. (a) Schrijf aan het begin van elk bestand: using System; Dit leest een aantal basisstructuren van C# in. Aan het begin van het bestand Pakket.cs verwijder je het import statement en vervang je het door using System.Text;. 6

(b) Verander overal het type String in het type string. De hoofdletter moet dus een kleine letter worden. (c) Verander alle constanten (static final) naar const. Laat hierbij het type en de access modifier onveranderd. Doe dit overal, behalve voor het veld DATA in het bestand Invoer.cs. Daar schrijf je het volgende: public static string[] DATA = new string[4]{"data a",... }; (d) Verander in alle bestanden het opvragen van de lengte van een rij door.length i.p.v..length. (e) Kijk in alle bestanden na of de haakjes van de rijen na het type komen en niet na de identifier. (f) Verander de naam van het hoofdprogramma van main naar Main (in het bestand Router.cs). (g) Verander in het bestand Invoer.cs alle Math.random statements door random.nextdouble(). Zorg ervoor dat je een veld hebt met de naam random, waarin je een object stockeert van het type Random: private random = new Random(); Doe dit ook in het bestand Uitvoer.cs. (h) Verander in het bestand Uitvoer.cs het statement System.out.println naar Console.WriteLine. Hiermee druk je tekst op het scherm. Het argument pakket moet nu expliciet de methode tostring() (kleine letters) oproepen (vergeet dit niet te veranderen, anders worden er rare dingen op het scherm gedrukt). (i) Verander in het bestand Pakket.cs de naam van StringBuffer naar StringBuilder. De functionaliteit van beide klassen is gelijkaardig. Pas de naam van append aan en schrijf het overal met een hoofdletter. Verander in het return statement tostring naar ToString. (j) Verander in het bestand Pakket.cs de eerste constructor naar de volgende signatuur. Laat hierbij de parameters onveranderd: public Pakket(...): this(...) { (k) Verander in het bestand Scheduler.cs de dubbele rij [][] in [,]. Doe dit voor de declaratie, maar ook voor het gebruik van de tweedimensionale rij. 7

(l) In het bestand Scheduler.cs verander je het type byte naar sbyte in alle statements waar queueteller wordt gebruikt. Indien er geen type in het statement voorkomt, moet je niets veranderen. Het type byte kan geen negatieve getallen stockeren, sbyte wel. De s staat dan ook voor signed. (m) In het bestand Tabel.cs moet je overal de equals() methode vervangen door ==. Dit zijn de string-vergelijkingen. (n) Compileer de code met het volgende commando: K:\>csc Router.cs Pakket.cs Invoer.cs Uitvoer.cs Tabel.cs Scheduler.cs Indien er nog fouten optreden, moet je die eerst oplossen. (o) Voer de code uit: K:\>Router.exe. Je zou een uitvoer moeten krijgen die er ongeveer als volgt uit ziet. Doorloop de code en maak een kort verslag van de grootste structurele overeenkomsten tussen C# en Java. 8