# Scripttalen

# 2010 juni examen

Je krijg een bestand in de vorm van datebook.txt

Dit bestand moet je weer splitsen en dan de huidige datum vergelijken met de datum van vandaag (localtime).

Indien de datums overeenkomen moet je naar die persoon een mailtje sturen, of een tekst bestand laten printen met daarin wat info.

Dit tekstbestand moet je dan ook wegschrijven.

Daarna moet je het programma voorzien van een menu, dit moet een entry bevatten om iemand toe tevoegen aan de lijst en om het programma te stoppen.

Heel simepl dus.

1 oefening python:

oefening waar je een sorteeralgoritme moet schrijven

Een oefening waarbij je op sites moet gaan zoeken naar een bepaald woord dat gebruiker ingeeft eventueel via command line.

Op basis van het aantal keer dat dit woord komt in de site is de site hot or not.

# 2011 juni examen

Lector: Frans Sanen

Het examen bestaat uit 1 oefening Perl, 1 oefening Python en 1 regex (die je niet kan voorbereiden, maar ter plaatse, tijdens het mondelinge gedeelte, moet bedenken).

Permanente evalutie: 8/20

Examen: Perl (6/20), Python (4/20), mondeling gedeelte (2/20)

### <span class="mw-headline" id="bkmrk-perl-0">Perl</span>

Je krijgt een .ics bestand met daarin afspraken. Elke afspraak heeft een aantal eigenschappen zoals begin- en einduur, locatie en naam en emailadres van de betrokken persoon.

Opdracht:

- Het script moet een email kunnen sturen a.d.h.v. een geformatteerde tekst (printf) met daarin de variabelen uit de afspraak (.ics-bestand).
- De personen die in de week van het uitvoeren van het Perl script een afspraak hebben, moeten deze mail automatisch ontvangen.
- Het script moet ook een bestand kunnen genereren met daarin de klanten die al betaald hebben. Dit door in één of ander bestand de tekst PAID toe te voegen. *(Ik weer niet meer exact hoe dit deel in elkaar zat)*
- Extra: Hoe kan je er voor zorgen dat het script elke dag om 8u wordt uitgevoerd?

### <span class="mw-headline" id="bkmrk-python-0">Python</span>

Je moet voor 5 voetbalploegen bepalen welke de populairste is. Dat gebeurd aan de hand van het aantal hits ze elk hebben in een zoekmachine naar keuze. De populariteit kan dus in principe met de minuut wijzigen. Aan jou om de 3 populairste van de 5 op het scherm af te drukken.

### <span class="mw-headline" id="bkmrk-mondeling-gedeelte-0">Mondeling gedeelte</span>

Je verdedigt je geprogrammeerde oefening van Perl en Python én je trekt 2 kaartjes, elk in verband met een regex:

- Leg de regex op kaart 1 uit
- Schrijf de gevraagde regex van kaart 2 uit (je krijgt hiervoor geen voorbereidingstijd vooraf, wel wat assistentie van de prof)

# 2012 juni examen

Lector: Frans Sanen

Hulpmiddelen: Oefeningen, Internet, je eigen laptop

Tijdens het jaar moet je oefeningen maken, dit staat op 8 van de 20 punten.

### <span id="bkmrk--4"></span><span class="mw-headline" id="bkmrk-oefening-perl-%286%2F20%29-0">Oefening perl (6/20)</span>

<dl id="bkmrk-2-input-files%3A-1-met"><dd>2 input files: 1 met rekeninguitreksels en 1 met verschillende categorien aankopen. Je moest dan een financieel rapport generaten die per categorie de kosten weergeeft.</dd></dl><dl id="bkmrk-formaat-categorie%3A"><dd>**formaat categorie:**</dd></dl>```
Categorie;Kenmerk1,Kenmerk2,…
```

<div id="bkmrk-"></div><dl id="bkmrk-voorbeeld%3A"><dd>**voorbeeld:**</dd></dl>```
VASTE KOSTEN;garage,tankbeurt,DATS,Lampiris,Scarlet
```

<div id="bkmrk--0"></div><dl id="bkmrk-formaat-rekeninguitr"><dd>**formaat rekeninguitreksel:**</dd></dl>```
Rekeningnummer;Rubrieknaam;Naam;Munt;Afschriftnummer;Datum;Omschrijving;Valuta;Bedrag;Saldo;
```

<div id="bkmrk--1"></div><dl id="bkmrk-voorbeeld%3A-0"><dd>**voorbeeld:**</dd></dl>```
BE26735012963329;;Fam. Geeft-Veeluit;EUR;2012012;01/05/2012;"BETALING AANKOPEN 01-05-2012 OM 12.22 UUR, COLRUYT 4145 MET KBC-BANKKAART 6703 73XX XXXX X303 3";03/05/2012;-16,93;608,69;
```

<div id="bkmrk--2"></div><dl id="bkmrk-output%3A"><dd>**output:**</dd></dl>```
Overzicht kosten mei 2012
-------------------------
VASTE KOSTEN      135,12 euro
WINKELEN           65,50 euro
...               ...
```

<div id="bkmrk--3"></div>### <span id="bkmrk--5"></span><span class="mw-headline" id="bkmrk-oefening-python-%284%2F2-0">Oefening python (4/20)</span>

<dl id="bkmrk-je-moet-de-euromilli"><dd>je moet de Euromillions resultaten afhalen van de site en deze vergelijken met de nummers die je zelf ingeeft. Het programma moet teruggeven of je gewonnen hebt (meer dan 3 cijfers of cijfers en sterren) en welke cijfers je juist had.</dd></dl>### <span id="bkmrk--6"></span><span class="mw-headline" id="bkmrk-2-regexen-%282%2F20%29-0">2 regexen (2/20)</span>

<dl id="bkmrk-1-uitleggen%2C-1-schri"><dd>1 uitleggen, 1 schrijven zonder echte voorbereiding. (Je wordt wel op weg geholpen indien nodig :) )</dd></dl>

# 2013 juni examen

## <span class="mw-headline" id="bkmrk-2013-0">2013</span>

lector: Frans Sanen

### <span id="bkmrk-"></span><span class="mw-headline" id="bkmrk-permanente-evaluatie-0">Permanente Evaluatie (8/20)</span>

Willekeurige selectie uit de gemaakte oefeningen. Met andere woorden: geen risico lopen en alle oefeningen maken!

### <span id="bkmrk--0"></span><span class="mw-headline" id="bkmrk-oefening-perl-%286%2F20%29-0">Oefening perl (6/20)</span>

Een boodschap moet verborgen worden in een aantal mails. Deze kan via commandline worden meegeven, indien niet het geval zal het script hier om moeten vragen. Vervolgens moeten er een aantal mails worden verstuurd (afhankelijk van de lengte van de boodschap). Deze mails worden opgevuld met willekeurige karakters (20 lijnen van 50 karakters). In elke mails wordt dan vervolgens een willekeurige plaats gekozen; op die plaats worden 5 opeenvolgende lettertekens gezet (bv. abcde) gevolgd door 10 karakters van de boodschap. Het aantal mails wordt zo gekozen dat elke mail een stuk van de boodschap bevat. Merk op dat de laatste mail dus minder dan 10 karakters kan bevatten, maar dit is niet erg.

Bonusopmerking: merk op dat op elke lijn een \\n staat. Wanneer je de boodschap hier overschrijft zal er dus een newline verdwijnen. Dit kan op verschillende manieren worden opgelost, de eenvoudigste: er voor zorgen dat er altijd een index wordt gekozen zodat dit nooit gebeurt. Met andere woorden: willekeurige getal tussen 0 en 20 \* 50 (lijn) + willekeurige getal tussen 0 en 35 (- 15 voor de mogelijke lengte van de boodschap + opeenvolgende letterrij).

### <span id="bkmrk--1"></span><span class="mw-headline" id="bkmrk-oefening-python-%284%2F2-0">Oefening python (4/20)</span>

Uit een invoerbestand moet een lijst opgesteld worden van de woorden die het meest voorkomen in het bestand. Dit bestand, zowel als het aantal woorden dat moet worden getoond moet kunnen meegegeven worden via de commandline. Indien dit niet gebeurt (of deze parameters niet geldig zijn, vraagt het script de gebruiker om de juiste parameters in te geven. Denk aan inputcontrole (eventueel regex (whitelist)). Vervolgens bestand lezen en voor elk woord het aantal voorkomens registreren (pythons dictionary gebruiken). Sorteren (bv. OrderedDictionary Let wel: reversed) en ten slotte de top zoveel tonen (afhankelijk van het opgegeven aantal woorden).

(Deze opdracht is als oefening voorgekomen bij Perl tijdens het jaar)

### <span id="bkmrk--2"></span><span class="mw-headline" id="bkmrk-2-regexen-%282%2F20%29-0">2 regexen (2/20)</span>

2 kaartjes trekken: 1 regex uitleggen, 1 regex opstellen Niveau: eenvoudig

# 2018 juni examen

lector: Frederic Vogels

### <span class="mw-headline" id="bkmrk-examen-0">Examen</span>

#### <span class="mw-headline" id="bkmrk-count-courses-0">Count courses</span>

Je krijgt een JSON input in de vorm van

```
[ 
    { "studentId": "r0000001","courses": [ "MBI58x", "MBI12x", "MBI98x" ] },
    { "studentId": "r0000002","courses": [ "MBI58x", "MBI12x", "MBI98x" ] },
]
```

<div id="bkmrk-"></div>Gevraag is return een JSON in de vorm van { "r0000001": 3, "r0000002": 3 } Met 3 de lengte van courses.

#### <span class="mw-headline" id="bkmrk-download-0">Download</span>

Je krijgt een lijst van ids, en wordt gevraagd de volgende output te returnen

```
if [ ! -d {id} ]; then
    git clone https://github.com/{id}/project {id}
else
    (cd {id}; git pull)
fi
```

<div id="bkmrk--0"></div>voor {id} een id uit de lijst van id's.

#### <span class="mw-headline" id="bkmrk-hash-0">Hash</span>

Je krijgt een bestandsnaam als input, lees iedere lijn en vervang deze door de eerste 10 characters van zijn hash. Bv. als er staat a dan schrijf je 10 eerste hex-cijfers van SHA256(a).

#### <span class="mw-headline" id="bkmrk-regex-0">Regex</span>

Verander hoofdletters door \_ gevolgd door kleine letter, Bv. isLarge --&gt; is\_large

#### <span class="mw-headline" id="bkmrk-stats-0">Stats</span>

Argumentparser oefening

#### <span class="mw-headline" id="bkmrk-translate-0">Translate</span>

Vertaal een Java klasse naar een Python OO klasse

# 2020 augustus examen

de opgave en oplossingen voor het 2020 augustus examen met dank aan [ISW](https://iswleuven.be/):

# 2020 juni examen

Het examen bestond uit 5 vragen, in totaal 23 punten. Het examen staat op 20 punten als je dus 10/23 hebt, ben je dus geslaagd. (20/23 = 20/20)

In `exam.zip` staan alle vragen zonder oplossing. En in `Oplossingen_Sigfried.zip` staan mijn oplossingen. Wellicht kan je sommige korter schrijven (mario-kart bv), zie het als een challenge voor jezelf!

Als je de bestanden download ga je ermee akkoord dat je hier geen misbruikt van zal maken, dit is enkel bedoeld om voor het volgende examen te oefenen!

Bestanden met dank aan [ISW](https://iswleuven.be/) en Sigfried Seldeslachts: [20 Juni.zip](https://examenwiki-test.diana.be/attachments/27)

# 2021 januari examen

de opgave en oplossingen voor het 2021 januari examen met dank aan [ISW](https://iswleuven.be/):