|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
13-07-2004, 16.54.12 | #1 |
Senior Member
Registrato: 05-08-2003
Loc.: Carugo
Messaggi: 357
|
Implementazione T9 su PC
Il T9… questo sconosciuto Una grande invenzione, certo, ma come funziona? Quanti di voi si sono mai chiesti come funziona il T9, quel “magico” softwarino che, presente ormai in ogni telefonino nelle varianti più disparate, ci permette di scrivere le parole utilizzando un minor numero di ripetizioni per tasto. A me la voglia di capirne il funzionamento è nata quando l’ennesima batteria del mio vecchio cellulare ha tirato le cuoia e, fatti due conti, mi conveniva di più comprarne uno nuovo che cambiarla nuovamente. Così, presa confidenza con il nuovo, a confronto col vecchio, mostro supertecnologico, mi sono lasciato ammaliare dall’uso del T9 iniziando a chiedermi come potesse, un semplice cellulare, capire quale parola, in diverse lingue, l’utente intendesse digitare. Scartata l’ovvia deduzione che nei nostri cellulari non si annida un software d’intelligenza artificiale, considerata la bassa velocità dei microprocessori che sovrintendono alle funzioni del telefonino, la soluzione doveva risiedere in un algoritmo semplice e veloce. Ci ho perso alcuni giorni, nei momenti liberi, ma proprio non riuscivo a raccapezzarmi; poi, una notte l’illuminazione (dormire no, eh! direte voi…) e così il mattino dopo, di buona lena, mi metto al lavoro. Creo un file di prova e lo chiamo T9.txt (che fantasia) buttandoci dentro una decina di nomi di parenti, amici, colleghi (in ordine sparso, non importa), poi con qbasic (si, proprio lui, quel linguaggio che ha accompagnato la storia dei vari MS-DOS e windows vari ) scrivo il seguente programmino. 'numero massimo di termini del dizionario x = 50 'vocaboli caricati DIM dizio(x) AS STRING 'codice numerico per ogni vocabolo DIM diziot9(x) AS STRING 'cancello lo schermo CLS PRINT "Attendi: caricamento vocaboli... " 'indice per i vocaboli del dizionario x = 1 OPEN "c:\t9.txt" FOR INPUT AS #1 'per ogni singola riga del file (= un vocabolo)... WHILE NOT EOF(1) INPUT #1, a$ 'per ogni singolo carattere... FOR i = 1 TO LEN(a$) x$ = UCASE$(MID$(a$, i, 1)) 'assegno il corrispondente codice numerico SELECT CASE x$ CASE "A" TO "C" t9 = 8 CASE "D" TO "F" t9 = 9 CASE "G" TO "I" t9 = 4 CASE "J" TO "L" t9 = 5 CASE "M" TO "O" t9 = 6 CASE "P" TO "S" t9 = 1 CASE "T" TO "V" t9 = 2 CASE "W" TO "Z" t9 = 3 END SELECT t9$ = t9$ + LTRIM$(STR$(t9)) NEXT 'e memorizzo il codice diziot9(x) = t9$ 'ed il vocabolo stesso dizio(x) = a$ t9$ = "" x = x + 1 WEND CLOSE x = x - 1 PRINT "Caricati "; x; " vocaboli" Cosa fa in pratica, soprattutto per i non addetti ai lavori che, però, vogliono comprendere un po’ di più la tecnologia che hanno tra le mani: legge dal file di testo precedentemente creato tutti i vocaboli (max 50, poi il programma va in errore), uno per riga, e li trasforma in una serie numerica che dipende dal vocabolo stesso in funzione di dove compare la lettera sulla tastiera del telefonino, ad esempio: CIAO = 8486 (rispetto al T9, dovendo utilizzare il tastierino numerico del PC, i numeri cambiano; 7=1, 8=2, 9=3, d'altronde non è mica colpa mia se i telefoni hanno la tastiera in un modo e i PC in un altro… ) Quindi ho proseguito con la parte che riordina il dizionario risultante in ordine crescente per codice, NON per vocabolo, così il software deve confrontare solamente i primi “n” caratteri inseriti per verificare se esiste un vocabolo nel dizionario. PRINT "Riordino vocabolario" 'riordino il vocabolario FOR i = 1 TO x - 1 FOR j = i + 1 TO x IF diziot9(i) > diziot9(j) THEN SWAP dizio(i), dizio(j) SWAP diziot9(i), diziot9(j) END IF NEXT NEXT Un po’ di aiuto per l’utente… CLS PRINT "Digita la stringa sul tastierino numerico usando il T9" PRINT " 7 8 9" PRINT " ABC DEF" PRINT " 4 5 6" PRINT " GHI JKL MNO" PRINT " 1 2 3" PRINT " PQRS TUV WXYZ" PRINT " 0 <-- ESC" PRINT " spazio cancella Esce" E, finalmente, il cuore del programma vero e proprio… 1 DO a$ = INKEY$ LOOP WHILE a$ = "" 'Tasto ESC = fine programma IF a$ = CHR$(27) THEN END END IF 'Tasto 0 = SPAZIO IF a$ = "0" THEN t9$ = "" p = p + l + 1 l = 0 GOTO 1 END IF 'codice ASCII 8 = BACKSPACE IF a$ = CHR$(8) THEN IF l > 0 THEN t9$ = LEFT$(t9$, l - 1) l = l - 1 'posiziono il cursore e cancello l'ultimo carattere LOCATE 15, 1 + p + l: PRINT " " LOCATE 20, 1 + p + l: PRINT " " GOTO 1 END IF END IF IF a$ < "1" OR a$ > "9" THEN 1 t9$ = t9$ + LTRIM$(a$) 'numero di caratteri della stringa in esame l = l + 1 'posiziono il cursore LOCATE 15, 1 + p: PRINT t9$ LOCATE 20, 1 + p: FOR i = 1 TO x IF LEFT$(diziot9$(i), l) = t9$ THEN PRINT LEFT$(dizio$(i), LEN(t9$)) EXIT FOR END IF NEXT GOTO 1 Cosa fa questa parte: attende che l’utente prema un tasto, se è 0 (zero) allora considera terminato il vocabolo e vi permette di inserirne uno nuovo, se corrisponde a Backspace allora cancella un carattere a sinistra, se è ESC, termina il programma. Se invece è compreso tra 1 e 9 cerca nel dizionario il corrispondente codice memorizzandolo nella stringa t9$. Successivamente controlla nel dizionario dei vocaboli (diziot9$) se esiste una corrispondenza basandosi sul numero delle lettere inserite finora (se si toglie questa limitazione si può fargli anche scrivere una parola completa qualora la combinazione sia soddisfatta una sola volta, ma questa è tutta un’altra storia…), in tal caso la scrive, dinamicamente, man mano che una corrispondenza viene trovata nel dizionario. Certo, è lo scheletro di base, non permette la selezione di vocaboli alternativi (però se nel dizionario i nomi propri sono inseriti in maiuscolo lui li scrive automaticamente in modo corretto, e questo il T9, almeno nella versione in mio possesso, non lo fa), non è nemmeno velocissimo, se non trova un vocabolo non scrive niente, però funziona… Potete provare il programma utilizzando l’allegato ed il dizionario che, lo ribadisco, deve trovarsi nel direttorio principale del disco C:. Spero di essere stato chiaro, aspetto i vostri commenti in merito; il programma è libero da copyright vari e può essere distribuito ed adattato senza problemi. Qualcuno di voi si chiederà: ma cosa me ne faccio di un programma così sul pc? Risposta: provate a pensare ad un utente “diversamente abile”, con problemi di manualità, che magari può inserire le lettere una sola per volta sulla tastiera; poter utilizzare solo 9 tasti per farlo è sicuramente un grande vantaggio per la velocità d’inserimento. Ciao c1p8 |
13-07-2004, 17.09.59 | #2 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
Ciao,
interessante l'articolo (Y) .. complimenti. Spero lo ritengano interessante anche i moderatori della sezione e valutino se pubblicarlo magari nella sezione FAQ .. o simile Bye |
16-07-2004, 23.50.22 | #3 |
Gold Member
Top Poster
Registrato: 18-07-2002
Messaggi: 6.399
|
Me l'ero perso..
Complimenti, veramente. E' molto interessante, sia dal punto di vista algoritmico (molti diranno: ma va, guarda come è semplice! Ma da soli non riuscirebbero mai ad immaginarsi una cosa del genere) che dal punto di vista dell'utilità (Y) Guarda, è veramente bella come cosa. Se fra tutti i mille e poi mille lavori che mi prendono mi rimane qualche oretta/giorno libera, provo a buttar giù qualcosa. Non nel linguaggio che hai usato tu - che non conosco - ma in java, che è quello che conosco meglio, per la gioia di Deep73! Adios! |
17-07-2004, 02.05.44 | #4 |
Newbie
Registrato: 08-07-2004
Messaggi: 47
|
Mi associo nel farti i complimenti,e nel dire che se mi rimane un po di tempo dopo gli esami mi tento una riscrittura ed eventualmente un potenziamento in C o C++.nel caso ti farò avere il risultato del mio lavoro postandolo quì sul forum.Per ora rimane solo un proposito.Ciao ciao
___________________________________
Sai che la fortuna è una religione:tu ci credi oppure no. |
14-11-2010, 12.49.46 | #5 |
Newbie
Registrato: 13-11-2010
Messaggi: 2
|
Implementazione T9 su PC
Ciao, mi chiamo Vittorio e ho letto il tuo post sull' Implementazione T9 su PC: non conosco linguaggi di programmazione ma sono molto interessato ad un programmino che simuli la tastiera del telefonino per poter scrivere sul pc col T9.
Ti chiedo troppo di farmi tu il programmino? :-) oppure sai indicarmi qalche programmino già fatto da qualcuno? Grazie mille in anticipo e aspetto tua risposta! |
15-11-2010, 13.14.23 | #6 |
Gold Member
Top Poster
Registrato: 07-04-2000
Loc.: Padova-Vicenza
Messaggi: 4.814
|
E' un thread del 2004... non so se avrà risposta.
___________________________________
Con il PC risolvo molti problemi che prima non avevo. - Coltiva Linux che Windows si pianta da solo! |
15-11-2010, 14.11.38 | #7 | |
Senior Member
Registrato: 05-08-2003
Loc.: Carugo
Messaggi: 357
|
Quota:
Sinceramente non ho il tempo di dedicarmi ad un ottimizzazione dello stesso (altrimenti l'avrei già fatto e messo in commercio ) Mi spiace, però puoi sempre provare a rivolgerti a qualche tuo amico/conoscente che conosce qualche linguaggio di programmazione per implementarlo... anche perchè il listato è ampiamente commentato... Ciao!
___________________________________
c1p8 "prima di pretendere qualcosa, prova a pensare a quello che dai tu" |
|
15-11-2010, 16.36.26 | #8 |
Newbie
Registrato: 13-11-2010
Messaggi: 2
|
grazie lo stesso! ;-) non conosco nessuno che sappia implementare il codice....ho trovato FastWrite in trial version e sembra sia proprio quello che fa al caso mio ma com erial non funziona bene e cmq è un software vecchio e lo stesso autore non è piu' interessato a venderlo! :-)
|
21-07-2012, 17.56.27 | #9 |
Newbie
Registrato: 21-07-2012
Messaggi: 2
|
Rif: Implementazione T9 su PC
Ciao ci1p8 leggo che un'implementazione del programma è stata incorporata in un software per semplificare la scrittura da parte dei disabili.
Sono il padre di una ragazza disabile e penso che una funzionalità del genere sarebbe utile per mia figlia. Mi puoi dare qualche ragguaglio e a chi rivolgermi? |
21-07-2012, 23.23.14 | #10 |
Senior Member
Registrato: 05-08-2003
Loc.: Carugo
Messaggi: 357
|
Rif: Implementazione T9 su PC
Ciao afibi, potresti dare un'occhiata a questo sito: http://koti.mbnet.fi/korsu/ft.html
Ma che esigenze hai in particolare?
___________________________________
c1p8 "prima di pretendere qualcosa, prova a pensare a quello che dai tu" |
23-07-2012, 14.07.27 | #11 |
Newbie
Registrato: 21-07-2012
Messaggi: 2
|
Rif: Implementazione T9 su PC
Attualmente uso per la comunicazione facilitata un comunicatore manuale
di cui ti allego la foto. Le dimensioni sono quelle di un foglio A4 disposto in orizzontale. E' impostato, come vedi, come la tastiera del telefonino. Ma devo fare tutto manualmente. Ho bisogno che diventi una specie di tablet (dimensioni formato A4) del tipo touch screen. Man mano che si digitano i vari tasti, compone la parola, applicando il software T9 o simili. Il testo composto compare in un apposito spazio, da individuare. Non sono un programmatore, ma se serve posso cercare del personale esperto. Ti aggiungo che un amico programmatore ha modificato l'app it9sms per Ipad che applica la tastiera T9 su Ipad e ha ingrandito la dimensione della tastiera. Ma l'Ipad è un po' piccolo ed ho bisogno di una tastiera sulla quale digitare delle dimensioni, per l'appunto, di un formato A4 (20 - 30 cm. circa). In pratica quindi dovrei comprare un tablet o simili delle dimensioni appropriate, che consenta il touch screen. Applicare quindi una settorizzazione degli spazi come da fotografia ed applicare la funzione T9. Grazie per tutti i consigli che mi potrai dare. afibi |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
Meglio Excel 2003 o 2007? | fadefa | Office suite | 19 | 02-09-2008 20.53.19 |
[LINUX] implementazione script di shell | teodore | Linux e altri Sistemi Operativi | 4 | 31-01-2008 00.05.11 |
[ALTRO] programmare ad oggetti | sergioz | Programmazione | 8 | 15-08-2005 08.28.09 |
Heap sort | sambac | Programmazione | 2 | 24-03-2004 10.03.06 |
Chi me lo ottimizza ? | LoryOne | Programmazione | 10 | 08-11-2003 18.40.31 |