Practica Computerlinguistiek Tekst en uitleg:
Inhoud " Inleiding tot Perl: scalaire data in- en uitvoer array- en lijstdata controlestructuren oefeningen
Inhoud (2) " Reguliere expressies reguliere expressies in Linux: grep reguliere expressies in Perl " Morfologische analyse m.b.v. Perl conversie van regels in tekstvorm naar formele regels implementatie in Perl
Inleiding tot Perl " Scalaire Data variabelen strings getallen operatoren " In- en Uitvoer invoer van de gebruiker een file als invoer uitvoer naar het scherm uitvoer naar een file
Inleiding tot Perl (2) " Array- en lijstdata toekenning elementtoegang push, pop, shift en unshift " Controlestructuren If, else, elsif en unless While en until For en foreach
Scalaire Data " Een scalaire waarde is ofwel een getal ofwel een reeks karakters (string) " VARIABLEN: een naam voor een object dat 1 of meer waarden bevat. De naam blijft constant over het programma. De waarde kan veranderen. In Perl krijgen scalaire variabelen een naam beginnend met '$' gevolgd door een letter. Daarna kunnen nog letters, cijfers of underscores volgen (_). Vb: $xyz123, $lijn_lengte " STRINGS: opeenvolgingen van karakters. De kortste string bevat geen karakters. De langste string is afhankelijk van het geheugen van de computer.
Perl opstarten " tik het programma in eender welke editor (in de practica gebruiken we emacs) " save het als programmanaam.pl " start het programma aan de commandline met: perl programmanaam.pl
Scalaire Data (2) " Strings met enkele aanhalingstekens: elk karakter tussen de aanhalingstekens behoort letterlijk tot deze string. " Strings met dubbele aanhalingstekens: naast gewone letters zijn er ook een aantal controlekarakters (\n, \t). Deze kunnen tussen de dubbele aanhalingstekens opgenomen worden. Een ander kenmerk: variabele interpolatie: als variabelenamen gebruikt worden in de string, dan worden deze vervangen door de waarde van die variabelen. " GETALLEN: Perl maakt geen onderscheid tussen natuurlijke getallen, reële getallen en getallen in exponentiële notatie. " OPERATOREN: produceert een nieuwe waarde ahv een of meer andere waarden. Vb: =, +, -, *, /, **, concatenatie
In- en Uitvoer " Invoer van de gebruiker: $a= Gebruikersinvoer eindigt op \n. Aangezien we meestal niet geinteresseerd zijn in deze \n: chop($a) verwijdert laatste karakter van string " Een File als invoer: toekennnen van FILEHANDLE: open(FILEHANDLE,$inputfile); lezen van de invoer: $a= sluiten van de invoerfile: close(FILEHANDLE)
In- en Uitvoer (2) " Uitvoer naar het scherm: print $a, print "hallo", print "$a\n"; " Uitvoer naar een file: filehandle toekennen: open(OUTPUT,">$filenaam"); print OUTPUT $a, print OUTPUT "hallo" sluiten van file: close (OUTPUT);
Array- en Lijstdata " Een array is een geordende lijst van scalaire data. Elk element van de array is een aparte scalaire waarde. Deze elementen hebben een specifieke volgorde. " De kleinste array bevat geen elementen. De grootste array is afhankelijk van het computergeheugen " Een array-naam lijkt op de naam van een scalaire variabele, met dit verschil: het initiële karakter is ipv een $ " ELEMENTTOEGANG: elk arrayelement heeft een index. Het eerste element heeft index=0, het tweede index=1 enz. $lijst[0] is het eerste element van de ($ wordt gebruikt omdat het om een scalaire waarde gaat)
Array- en Lijstdata (2) " PUSH: als we een element aan de rechterkant van de lijst willen toevoegen: " POP: als we het laatste element uit de array willen verwijderen: " UNSHIFT: als we een element aan de linkerkant van de lijst willen toevoegen: " SHIFT: als we het eerste element uit de array willen verwijderen:
Controlestructuren " If, else, elsif en unless bij het gebruik van if wordt een voorwaarde geëvalueerd als deze voorwaarde waar is wordt uitgevoerd wat in het volgende blok staat if ($a == 1) {doe dit als $a = 1;} else {doe dit als vwde niet waar is;} elsif wordt gebruikt om meer vwden achter elkaar te schakelen unless is omgekeerde van if.
Controlestructuren (2) " Vergelijkende operatoren bij het stellen van de vwden worden operatoren gebruikt gelijk aan : == bij getallen, eq bij strings niet gelijk aan: != bij getallen, ne bij strings kleiner dan: < bij getallen, lt bij strings groter dan: > bij getallen, gt bij strings kleiner of gelijk aan: <= bij getallen, le bij strings groter of gelijk aan: >= bij getallen, ge bij strings
Controlestructuren (3) " Logische operatoren vwden kunnen gecombineerd worden dmv 'en' en 'of' 'en' : && 'of' : || if (($a == 1) && ($naam eq 'Jan')) { blok1;} else { blok2;}
Controlestructuren (4) " While en until herhalingsmechanisme zolang of totdat aan de vwden voldaan is. while ($a < 10) { doe_dit; $a++; } until herhaalt het blok totdat aan de vwden voldaan is (cf. unless vs. if)
Controlestructuren (5) " for for voert een lus uit met behulp van een teller deze teller wordt eerst geinitialiseerd, lus wordt uitgevoerd totdat aan een vwde voldaan is, en er wordt iets met de teller gedaan for ($i=0;$i<10;$i++) { doe_dit; }
Controlestructuren (6) " foreach doet iets met elk element van een array foreach $element { doe_dit; }