Programeer opdrachtenOpdracht : opdr2b_readhead.txt

Terug naar de inzendingen
Opdracht 2b,Erik Vernooi
4-Jan-2005
 Opdracht: 2B
 Taal: Perl
 Commentaar:
 Ik heb een perl cursus gepakt, en samen met google ben ik gaan pielen. Vooral het use strict zorgde voor wat kopzorgen (als je variabelen niet globaal definieerd terwijl dat wel nodig is krijg je een hoop gezever over package dit en dat. Terwijl je helemaal geen package hoeft te gebruiken.
 
 Ben ongeveer 3 uur bezig geweest met het gewoon te maken, en dan nog eens 3 uur om het met use strict werkend te krijgen.
 
 Engelbertus schreef:
 volgen mij is in dit geval de a opdracht makkelijker an de b opdracht? dat je in sommige talen ingebouwde functionaliteit hebt om woorden om te draaien of te hekennen is mooi voor die taal, maar dan moet je dat evengoed maar net weten.
 
 
 Daarom deze inzending zonder de reverse-functie die in bij Wijnand zag. Toen ik z'n inzending wat beter bekeek zag ik trouwens dat foreach ook wel handig was.
 Mja, tis m'n eerste progsel en de dingen die erin staan heb ik wel allemaal zelf uitgevogeld.
 1 
****opdracht2b.pl*****
  
 2#!/usr/bin/perl
 3# Door Erik Vernooij aka DCL Redhead
 4# Dit stukje 'software' mag verspreid worden onder GPL-licensie
 5# Officieel mijn eerste programma ooit!
 6#
 7use strict;
 8use warnings;
 9
 10
 11our $woord;
 12our @droow;
 13our @tekst_array;
 14
 15our $tekst = "In deze programmeer opdracht lepel staan naast gewone nepapen woorden ook een paar topspot palindromen meeneem droogoord";
 16
 17&splits_tekst;
 18&afdrukken;
 19
 20# Deze sub maakt van de string een array
 21sub splits_tekst {
 22 @tekst_array = split(/\s/, $tekst);
 23 return @tekst_array;
 24}
 25
 26# Deze sub splitst steeds de array in strings met elk een los woord als inhoud, laat het woord achterstevoren zetten, kijkt of het een palindroom is door te vergelijken met oude string. Daarna print hij het op de gewenste manier.
 27sub afdrukken {
 28 while (@tekst_array) {
 29  $woord = shift (@tekst_array);
 30  my $woord_reserve = $woord;
 31  &woordomdraaier ($woord);
 32  my $droow = join ("",@droow);
 33  if ($woord_reserve eq $droow) {
 34   my $laatsteletter = uc(chop $droow);
 35   print ucfirst($droow),$laatsteletter," ";
 36  } else {
 37   print $droow," ";
 38  }
 39 }
 40 print "\n";
 41}
 42
 43# Deze sub draait een woord (string) om door steeds de laatste letter eraf te halen en die in achteraan in een array te plakken.
 44sub woordomdraaier {
 45 @droow = "";
 46 while ($woord) {
 47  my $letter = chop $woord;
 48  $letter = lc($letter);
 49  push (@droow,$letter);
 50 }
 51 return (@droow);
 52}
 
 
Mijn commentaar
 
 Erik,
 Ik zit echt met stijgende verbazing naar je creatie te kijken !
 Je weet de mythe's over de leesbaarheid van PERL goed in stand te houden.
 Toch weet je de grote kracht van deze taal toe te passen waardoor het programma zeer efficient en kort
 (doch met een welhaast latijnse syntax) is geschreven.
 Ik vind het een knap stukje werk.
 een paar PERL syntax items kunnen wat verbeterd worden,
 maar als je nu al zover weet te komen, zie ik een mooie toekomst voor de verdere opdrachten !