{"id":225,"date":"2009-09-11T09:29:00","date_gmt":"2009-09-11T09:29:00","guid":{"rendered":"http:\/\/e-ware.org\/blog\/?p=225"},"modified":"2009-09-11T09:29:00","modified_gmt":"2009-09-11T09:29:00","slug":"giocare-coi-codici-alfabeto-farfallino","status":"publish","type":"post","link":"http:\/\/e-ware.org\/blog\/giocare-coi-codici-alfabeto-farfallino\/","title":{"rendered":"Giocare coi codici: alfabeto farfallino."},"content":{"rendered":"<p><span><br \/><\/span><\/p>\n<div><span>Ci sono dei giochi appartenenti al nostro periodo infantile che per un motivo o per l&#8217;altro ci restano nella mente.<\/span><br \/><span>L&#8217;altro giorno mentre camminavo per strada e sentito alcune bambine esprimersi in una maniera al quanto strana; non ci ho messo molto per capire che parlavano tra loro in un particolare alfabeto detto <a href=\"http:\/\/it.wikipedia.org\/wiki\/Farfallino\">farfallino<\/a>.<\/span><\/p>\n<p><span>Ascoltare le bambine mi ha fatto venire in mente un piccolo dubbio: \u00e8 possibile creare un <\/span><span>traduttore <\/span><span>che mi permetta di passare dall&#8217;italiano al farfallino e dal farfallino all&#8217;italiano? Diciamo che il traduttore no l&#8217;ho creato ma mi sono preso la briga di creare due funzioni per passare da una a l&#8217;altra codifica. Ovviamente ho scelto <a href=\"http:\/\/gambas.sourceforge.net\/en\/main.html\">Gambas<\/a> come linguaggio per via della rapidit\u00e0 con la quale si pu\u00f2 scrivere il codice.<\/span><\/p>\n<p><span>Dopo varie prove sono arrivato alla stesura delle due funzioni che svolgessero il lavoro che avevo il bisogno che svolgesse. Il lavoro si \u00e8 dimostrato molto pi\u00f9 semplice di quanto pensassi e ora analizziamo il codice delle funzioni.<\/span><\/p>\n<p><span>DA ITALIANO A FARFALLINO<\/span><\/p>\n<p><span><code><\/code><\/span><\/p>\n<pre><span>PUBLIC FUNCTION farfallino(parola AS String) AS String<br><br>DIM temp_st AS String<br>DIM ritorno_st AS String<br><br>temp_st = parola<br><br>ritorno_st = Replace(temp_st, \"a\", \"afa\")<br>temp_st = ritorno_st<br><br>ritorno_st = Replace(temp_st, \"e\", \"efe\")<br>temp_st = ritorno_st<br><br>ritorno_st = Replace(temp_st, \"i\", \"ifi\")<br>temp_st = ritorno_st<br><br>ritorno_st = Replace(temp_st, \"o\", \"ofo\")<br>temp_st = ritorno_st<br><br>ritorno_st = Replace(temp_st, \"u\", \"ufu\")<br><br>RETURN ritorno_st<br><br>END<br><\/span><\/pre>\n<p><span>Come si pu\u00f2 vedere il codice \u00e8 molto semplice e si basa sulla sostituzione delle vocali con l&#8217;equivalente struttura farfallina. La funzione infatti accetta una parola come argomento e restituisce una stringa. La parola viene copiata in una variabile stringa nella quale viene di volta in volta cercata e sostituita la vocale. Da notare che dopo ogni sostituzione la nuova stringa viene salvata in quella in cui si cercano le vocali&#8230;questo perch\u00e8, se ci\u00f2 non venisse fatto, verrebbe vista e sostituita solo la vocale <\/span><span>u<\/span><span>, essendo l&#8217;ultima ed essere visualizzata.<\/span><\/p>\n<p><span>DA FARFALLINO A ITALIANO<\/span><\/p>\n<p><span><code><\/code><\/span><\/p>\n<pre><span>PUBLIC FUNCTION sfarfallino(parola AS String) AS String<br><br>DIM temp_st AS String<br>DIM ritorno_st AS String<br><br>temp_st = parola<br><br>ritorno_st = Replace(temp_st, \"afa\", \"a\")<br>temp_st = ritorno_st<br><br>ritorno_st = Replace(temp_st, \"efe\", \"e\")<br>temp_st = ritorno_st<br><br>ritorno_st = Replace(temp_st, \"ifi\", \"i\")<br>temp_st = ritorno_st<br><br>ritorno_st = Replace(temp_st, \"ofo\", \"o\")<br>temp_st = ritorno_st<br><br>ritorno_st = Replace(temp_st, \"ufu\", \"u\")<br><br>RETURN ritorno_st<br><br>END<\/span><\/pre>\n<p><span>La funzione che svolge il lavoro inverso della funzione farfallino (fantasiosamente chiamata <\/span><span>sfarfallino<\/span><span> :-D) si basa sullo stesso principio della funzione precedente. Si cerca nella parola passata alla funzione la componente farfallina e la si sostituisce con la semplice vocale. Ad ogni sostituzione la parola in cui cercare viene aggiornata altrimenti si presenterebbe l&#8217;errore spiegato prima.<\/span><\/p>\n<p><span>Da notare che a differenza della prima funzione, che \u00e8 sempre corretta e non presenta mai errori, la seconda pu\u00f2 cadere in false traduzioni. Basti pensare alla parola afa ad esempio. Essa verr\u00e0 riscritta come una semplice a nonostante il suo senso sia giusto. Pertanto se si volesse rendere la funzione migliore si dovrebbero scrivere delle eccezioni, in base alla lingua in uso, sulla conversione delle parole.<\/span><\/p>\n<p><span>Come sempre ho implementato le funzioni in una classe Gambas da poter implementare nei proprio progetti. Trovare la classe nella colonna a destra tra i <\/span><span>Download<\/span><span> col nome di <\/span><span>Gambas-classe-stringa<\/span><span>.<\/span><\/p>\n<p><span>IMPORTARE LA CLASSE<\/span><\/p>\n<\/div>\n<p><span>Come fare ad importare la classe nel proprio progetto?Prima di tutto scaricare il file, una volta terminato il download scompattiamo l&#8217;archivio zip e dalla cartella copiamo il file <\/span><span>stringa.class<\/span><span> e incolliamolo nella cartella dove risiede il nostro progetto Gambas. Ora apriamo Gambas e come prima riga nel codice del form in cui utilizzeremo le funzioni della classe scriviamo quanto segue:<br \/><\/span><\/p>\n<div><span><code><\/code><\/span><br \/><span><code>PRIVATE Stringa AS NEW stringa<\/code><\/span><br \/><span><code><\/code><\/span><\/div>\n<p><span>In questo modo possiamo accedere alla funzione con la sintassi:<br \/><\/span><\/p>\n<div><span><code>Stringa.farfallino(stringa_da_convertire)<\/code><\/span><br \/><span><code><\/code><\/span><br \/><span><code>Stringa.sfarfallino(stringa_da_convertire)<\/code><\/span><\/p>\n<p><span>Ovviamente questo \u00e8 solo un gioco e non pretendo che la funzione possa essere davvero utile a qualcuno.<\/span><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ci sono dei giochi appartenenti al nostro periodo infantile che per un motivo o per l&#8217;altro ci restano nella mente.L&#8217;altro giorno mentre camminavo per strada e sentito alcune bambine esprimersi in una maniera al quanto strana; non ci ho messo molto per capire che parlavano tra loro in un particolare alfabeto detto farfallino. Ascoltare le [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63,23,2,4],"tags":[],"class_list":["post-225","post","type-post","status-publish","format-standard","hentry","category-classe","category-gambas","category-gnulinux","category-opencode"],"views":5672,"_links":{"self":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts\/225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/comments?post=225"}],"version-history":[{"count":0,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts\/225\/revisions"}],"wp:attachment":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/media?parent=225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/categories?post=225"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/tags?post=225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}