45. kasu praktikoa: atzizkidun definizioak aztertzen

     Atzizkiak hiztegian nola dauden definituak aztertzen gabiltza. Zehazki, atzizkiak definitzerakoan gehien erabiltzen diren hitzak zein diren jakin nahi dugu. Horretarako, honako programa garatzea otu zaigu: erabiltzaileari atzizki bat idazteko eskatu, eta zehaztutako atzizkia duten hiztegiko sarrera guztien defini-
zioak itzultzen dituena. Baina definizioan erabilitako hitzak maiztasunaren arabera ordenatuta bistaratuko ditu programak. Hau da, atzizki bat eman eta atzizki hori duten sarreren definizioetan erabili diren hitzak itzuliko ditu programak maiztasunaren arabera ordenaturik.
     Honako honetan, exekuzio-aldi bakoitzean bilaketa bakarra egingo du programak. Horretaz gain, programaren irteera pantailan osorik ikusteko baino handiagoa izango denez kasu askotan, atzizkia komando-lerroaren bitartez pasatuko diogu programari. Modu honetan programaren irteera fitxategi batera birbidera dezakegu eta ondoren bistaratu.
     Adibidez:
  >perl EhAtzizkiMaiz.pl tasun > tasun.txt

     Programaren exekuzioak, “tasun” atzizkia daukaten sarrerak topatuko ditu, eta beren definizioetan erabilitako hitzak maiztasunaren arabera ordenatuta itzuliko tasun.txt fitxategian. Hona exekuzioaren osteko edukia:

tasun.txt fitxategia

 nolakotasuna          491
 denaren                  406
 edo                        110
 egoera                     87
 dagoenaren              44
 eza                           31
 …
 ditzakeena                  1
 baitara                        1

EhAtzizkiMaiz.pl Perl programaren kodea:

 #!/usr/bin/perl
 use strict;
 use warnings;
 my (@eremuak, $lerro, $atzizki, $kategoria, $hitz, %maiz);
 open(FI, “EH_hiztek.txt”) ||
        die (“Ezin fitxategia zabaldu!n”);
 # irakurri atzizkia
 $atzizki = $ARGV[0];
while ($lerro = <FI>) {
     chomp($lerro);
     # Sarrerari dagozkion eremuak gorde array-an
     @eremuak = split(/t/, $lerro);
     # $atzizki atzizkia eta $kategoria kategoriako
     # sarrerak hautatu
     if ($eremuak[0] =~ /$atzizki$/) {
           # definizio eremua hitzetan banatu
           foreach $hitz (split(/W+/, $eremuak[3])) {
                # hitz bakoitzaren maiztasuna gorde
                $maiz{$hitz}++;
           }
     }
}
close (FI);
# %maiz egiturako hitzak ordenatu
# maiztasunaren arabera, handienetik txikienera
# ondoren hitz bakoitza eta bere agerpen kop. bistaratu
foreach $hitz (sort({$maiz{$b} <=> $maiz{$a}} (keys
%maiz))) {
     print (“$hitzt$maiz{$hitz}n”);

Utzi erantzuna

Zure e-posta helbidea ez da argitaratuko. Beharrezko eremuak * markatuta daude