RISOLTO programma semplice per "codificare" un alfabeto

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

_salva.tore

Nuovo Utente
Messaggi
6
Reazioni
0
Punteggio
22
salve, io e un mio amico abbiamo "inventato" un alfabeto numerico:
ABC DEF GHI JKL MNO PQR STU VWX YZ//
lo abbiamo diviso in questi gruppi ad esempio se voglio scrivere ciao devo fare 13331153 ; il primo numero indica il gruppo e il secondo indica la lettera, per fare lo spazio si usa lo 0, volevo fare un programmino semplice semplice per codificarlo solo che non so programmare (ho 15 anni), mi serviva un aiutino, un piccolo incipit per cominciare. poi magari vorrei convertirlo anche in un app per android ma per questo mi posso anche arrangiare da solo
grazie a chi mi aiuterà
 
Ultima modifica:
Allora, se non sai programmare quello che ti consiglio è di cominciare a capire come funziona un linguaggio di programmazione. Per il linguaggio, ti posso dare alcuni consigli. Se sei interessato ad imparare bene a programmare, ti consiglio di cominciare con il C. Questo perché è un linguaggio che ti fa entrare, a mio parere, nel mindset corretto. Con il C devi stare attento a come gestisci la memoria, inoltre imparare cosa sono e come funzionano i puntatori è necessario se vuoi imparare a fare un buon codice (java ad esempio non ha puntatori, o meglio, li utilizza ma "di nascosto" dal programmatore). Quando hai una buona base di C puoi passare al C++ e capire come funziona il programmare ad oggetti.

Se invece sei più interessato a smanettare, per far piccoli programmi che fanno quello che vuoi e vuoi un linguaggio semplice e veloce da imparare ti consiglio Python. Solitamente lo sconsiglio come primo linguaggio, dato che nasconde moltissime cose e ti "abitua male" (alcuni direbbero bene), ma se vuoi smanettare è più che sufficiente. Non sto screditando python, è comodissimo e lo uso anche io moltissimo, semplicemente non è il migliore se vuoi imparare a programmare per davvero.

Alcuni potrebbero consigliarti java, ma non è il massimo come primo linguaggio. E' simile al C++, senza però la gestione della memoria e senza i puntatori. Ha inoltre uno stile diverso (ad esempio per quanto riguarda il chiamare una funzione) e sinceramente non mi fa impazzire. E' molto richiesto nel mondo del lavoro, dato che puoi fare programmi multipiattaforma, ma se vuoi impararlo fallo dopo che sai come funziona il C++. Sono simili, se passi da C++ non devi davvero impararlo, ti basta vedere com'è la sintassi (e scoprire cosa non puoi fare con Java che con C++ potevi fare).

Dopo questo discorso sui linguaggi di programmazione, passiamo al programma che vuoi fare.
Il mio consiglio è quello di fare altri programmi prima, e fare questo quando senti che sei in grado di farlo senza aiuto.
Comunque ti do un po' di soluzioni.

La prima soluzione è più facile da implementare per qualcuno alle prime armi (devi comunque sapere come funzionano le stringhe)
Semplicemente ti salvi una stringa del tipo "ABC DEF ...". Poi dall'input dell'utente "331251" leggi il primo carattere "3", lo converti in numero (l'input è il carattere 3, non il valore 3), poi conti 3-1 (tre meno uno) spazi bianchi (ovvero due). Quindi scorri la stringa "ABC DEF ..." fino a trovare due spazi bianchi. A quel punto fai la stessa cosa con il secondo numero per spostarti di tre posizioni e raggiungere la lettera I. La salvi in una nuova stringa, che pian piano vai a creare concatenando nuovi pezzi.

Una seconda soluzione potrebbe essere quella di utilizzare un'array (decisamente macchinosa per quello che stiamo facendo, ma un buon esercizio) (devi sapere cosa sia un'array)
Se noti ad ogni lettera corrisponde un valore: 13 -> C , 32 -> H, etc.. Puoi quindi creare un array bidimensionale, in cui salvi nella prima dimensione i valori delle lettere e nella seconda appunto la lettera corrispondente. Una volta che sai cosa sia un'array e come utilizzarli questa soluzione ti apparirà ovvia.

Una terza soluzione (ed un buon esercizio soprattutto), potrebbe essere creare delle liste, con delle sottoliste. La lista principale contiene i gruppi, le sottoliste contengono le singole lettere. Anche questa una volta che sai cosa sia una lista è abbastanza banale.

Non spaventarti se non capisci quello che ho scritto in queste tre soluzioni, comincia semplicemente a studiare un linguaggio di programmazione (C o Python) e quello che ho scritto diventerà una banalità assurda.
 
Allora, se non sai programmare quello che ti consiglio è di cominciare a capire come funziona un linguaggio di programmazione. Per il linguaggio, ti posso dare alcuni consigli. Se sei interessato ad imparare bene a programmare, ti consiglio di cominciare con il C. Questo perché è un linguaggio che ti fa entrare, a mio parere, nel mindset corretto. Con il C devi stare attento a come gestisci la memoria, inoltre imparare cosa sono e come funzionano i puntatori è necessario se vuoi imparare a fare un buon codice (java ad esempio non ha puntatori, o meglio, li utilizza ma "di nascosto" dal programmatore). Quando hai una buona base di C puoi passare al C++ e capire come funziona il programmare ad oggetti.

Se invece sei più interessato a smanettare, per far piccoli programmi che fanno quello che vuoi e vuoi un linguaggio semplice e veloce da imparare ti consiglio Python. Solitamente lo sconsiglio come primo linguaggio, dato che nasconde moltissime cose e ti "abitua male" (alcuni direbbero bene), ma se vuoi smanettare è più che sufficiente. Non sto screditando python, è comodissimo e lo uso anche io moltissimo, semplicemente non è il migliore se vuoi imparare a programmare per davvero.

Alcuni potrebbero consigliarti java, ma non è il massimo come primo linguaggio. E' simile al C++, senza però la gestione della memoria e senza i puntatori. Ha inoltre uno stile diverso (ad esempio per quanto riguarda il chiamare una funzione) e sinceramente non mi fa impazzire. E' molto richiesto nel mondo del lavoro, dato che puoi fare programmi multipiattaforma, ma se vuoi impararlo fallo dopo che sai come funziona il C++. Sono simili, se passi da C++ non devi davvero impararlo, ti basta vedere com'è la sintassi (e scoprire cosa non puoi fare con Java che con C++ potevi fare).

Dopo questo discorso sui linguaggi di programmazione, passiamo al programma che vuoi fare.
Il mio consiglio è quello di fare altri programmi prima, e fare questo quando senti che sei in grado di farlo senza aiuto.
Comunque ti do un po' di soluzioni.

La prima soluzione è più facile da implementare per qualcuno alle prime armi (devi comunque sapere come funzionano le stringhe)
Semplicemente ti salvi una stringa del tipo "ABC DEF ...". Poi dall'input dell'utente "331251" leggi il primo carattere "3", lo converti in numero (l'input è il carattere 3, non il valore 3), poi conti 3-1 (tre meno uno) spazi bianchi (ovvero due). Quindi scorri la stringa "ABC DEF ..." fino a trovare due spazi bianchi. A quel punto fai la stessa cosa con il secondo numero per spostarti di tre posizioni e raggiungere la lettera I. La salvi in una nuova stringa, che pian piano vai a creare concatenando nuovi pezzi.

Una seconda soluzione potrebbe essere quella di utilizzare un'array (decisamente macchinosa per quello che stiamo facendo, ma un buon esercizio) (devi sapere cosa sia un'array)
Se noti ad ogni lettera corrisponde un valore: 13 -> C , 32 -> H, etc.. Puoi quindi creare un array bidimensionale, in cui salvi nella prima dimensione i valori delle lettere e nella seconda appunto la lettera corrispondente. Una volta che sai cosa sia un'array e come utilizzarli questa soluzione ti apparirà ovvia.

Una terza soluzione (ed un buon esercizio soprattutto), potrebbe essere creare delle liste, con delle sottoliste. La lista principale contiene i gruppi, le sottoliste contengono le singole lettere. Anche questa una volta che sai cosa sia una lista è abbastanza banale.

Non spaventarti se non capisci quello che ho scritto in queste tre soluzioni, comincia semplicemente a studiare un linguaggio di programmazione (C o Python) e quello che ho scritto diventerà una banalità assurda.
grazie mille, ho provato a cercare qualcosa su google ma non ho capito molto ahah, magari tra qualche giorno provo cercare qualcosa su C e darmi una prima infarinatura tanto dovrei farli a scuola non mi ricordo che anno. Grazie di nuovo
 
grazie mille, ho provato a cercare qualcosa su google ma non ho capito molto ahah, magari tra qualche giorno provo cercare qualcosa su C e darmi una prima infarinatura tanto dovrei farli a scuola non mi ricordo che anno. Grazie di nuovo
Se vuoi cominciare a guardare qualcosa le risorse migliori (senza comprare testi) sono in inglese.

In italiano ho trovato questo (http://www.html.it/guide/guida-c/). Ho dato un'occhiata veloce agli argomenti e sembra ben strutturato.
 
salve, io e un mio amico abbiamo "inventato" un alfabeto numerico:
ABC DEF GHI JKL MNO PQR STU VWX YZ//
lo abbiamo diviso in questi gruppi ad esempio se voglio scrivere ciao devo fare 13331153 ; il primo numero indica il gruppo e il secondo indica la lettera, per fare lo spazio si usa lo 0, volevo fare un programmino semplice semplice per codificarlo solo che non so programmare (ho 15 anni), mi serviva un aiutino, un piccolo incipit per cominciare. poi magari vorrei convertirlo anche in un app per android ma per questo mi posso anche arrangiare da solo
grazie a chi mi aiuterà

Sarebbe stato più semplice se avessi associato a ciascun carattere alfabetico il suo codice ASCII ah ah ah ... :D
Scherzi a parte, la soluzione più semplice è quella indicata da @Nemesys94, basata sull'utilizzo di matrici :asd:
In termini molto semplici, si tratta di organizzare i dati all'interno di una "struttura" :sisi:
Se i dati sono "omogenei", ossia tutti dello stesso tipo, si può prevedere l'uso di una struttura denominata "vettore" (array).
Le variabili che costituiscono il vettore hanno un solo "identificatore" (per semplificare farò riferimento al linguaggio Pascal, di cui in fondo troverai un link) mentre per distinguere un elemento dall'altro, all'interno del vettore stesso, si utilizza un "indice".
Ti propongo un esempio (tutti gli elementi sono di tipo integer):

V = identificatore del vettore
INDICE = 1, 2, 3, 4, 5
V[1] = 11
V[2] = 49
V[3] = 85
V[4] = 66
V[5] = 32

E' una struttura "statica", a dimensione definita a priori, e "sequenziale" (i due concetti, sequenzialità e staticità, sono ovviamente legati tra loro in modo "stretto") :sisi:
Ora, io ho considerato elementi "semplici" del vettore ma tali elementi possono essere anche complessi: ad esempio, se un vettore ha per elementi altri vettori (componenti), allora il vettore è "multidimensionale" :shock:
In particolare, se gli elementi dei vettori componenti sono di tipo semplice, il vettore viene detto "MATRICE" ;)
La forma equivalente più utilizzata di matrice viene rappresentata come una "griglia", quadrata o rettangolare, formata da un certo numero di righe e di colonne.
Se hai seguito finora, avrai intuito che per poter individuare un elemento all'interno della matrice occorrono due indici, uno per le righe e uno per le colonne.
Sul meccanismo di memorizzazione e di "accesso diretto" agli elementi non mi soffermerò in questa sede in quanto di scarso interesse ma per quanto riguarda la notazione che di solito si utilizza, essa è simile a quella su indicata per i vettori:

V[I,J] - V è l'identificatore della matrice, I è l'indice di riga e J è l'indice di colonna.

La dimensione della matrice è data dal prodotto della "cardinalità" dei due indici.
Convenzionalmente la dimensione della matrice viene indicata tra parentesi tonde (ad es. A (M x N) indica una matrice A con M righe e N colonne).
A presto ;)

P.S. http://www.pierotofy.it/pages/guide/Guida_Pascal/ :sisi:
 
Sarebbe stato più semplice se avessi associato a ciascun carattere alfabetico il suo codice ASCII ah ah ah ... :D
Scherzi a parte, la soluzione più semplice è quella indicata da @Nemesys94, basata sull'utilizzo di matrici :asd:
In termini molto semplici, si tratta di organizzare i dati all'interno di una "struttura" :sisi:
Se i dati sono "omogenei", ossia tutti dello stesso tipo, si può prevedere l'uso di una struttura denominata "vettore" (array).
Le variabili che costituiscono il vettore hanno un solo "identificatore" (per semplificare farò riferimento al linguaggio Pascal, di cui in fondo troverai un link) mentre per distinguere un elemento dall'altro, all'interno del vettore stesso, si utilizza un "indice".
Ti propongo un esempio (tutti gli elementi sono di tipo integer):

V = identificatore del vettore
INDICE = 1, 2, 3, 4, 5
V[1] = 11
V[2] = 49
V[3] = 85
V[4] = 66
V[5] = 32

E' una struttura "statica", a dimensione definita a priori, e "sequenziale" (i due concetti, sequenzialità e staticità, sono ovviamente legati tra loro in modo "stretto") :sisi:
Ora, io ho considerato elementi "semplici" del vettore ma tali elementi possono essere anche complessi: ad esempio, se un vettore ha per elementi altri vettori (componenti), allora il vettore è "multidimensionale" :shock:
In particolare, se gli elementi dei vettori componenti sono di tipo semplice, il vettore viene detto "MATRICE" ;)
La forma equivalente più utilizzata di matrice viene rappresentata come una "griglia", quadrata o rettangolare, formata da un certo numero di righe e di colonne.
Se hai seguito finora, avrai intuito che per poter individuare un elemento all'interno della matrice occorrono due indici, uno per le righe e uno per le colonne.
Sul meccanismo di memorizzazione e di "accesso diretto" agli elementi non mi soffermerò in questa sede in quanto di scarso interesse ma per quanto riguarda la notazione che di solito si utilizza, essa è simile a quella su indicata per i vettori:

V[I,J] - V è l'identificatore della matrice, I è l'indice di riga e J è l'indice di colonna.

La dimensione della matrice è data dal prodotto della "cardinalità" dei due indici.
Convenzionalmente la dimensione della matrice viene indicata tra parentesi tonde (ad es. A (M x N) indica una matrice A con M righe e N colonne).
A presto ;)

P.S. http://www.pierotofy.it/pages/guide/Guida_Pascal/:sisi:
Non avevo considerato pascal in effetti. Ottima idea per cominciare!
 
Mi piace:

"abbiamo INVENTATO un alfabeto"

"non so cosa sia un linguaggio di programmazione"

"scrivetemi un programma: poi fare una app per Android non sarà un problema"

... come va il mondo!

Inviato dal mio Nexus 5 utilizzando Tapatalk
scusami se non sono nato che sapevo già i linguagi di programmazione, ho 15 anni e vado in prima superiore e proprio in qesti giorni a scuola ci stanno facendo fare html per farci affacciare ai linguaggi di programmazione (anche se solo di siti web), se lo sapevo fare non chiedevo qui sul forum
 
Mi piace:

"abbiamo INVENTATO un alfabeto"

"non so cosa sia un linguaggio di programmazione"

"scrivetemi un programma: poi fare una app per Android non sarà un problema"

... come va il mondo!

Inviato dal mio Nexus 5 utilizzando Tapatalk
scusami se non sono nato che sapevo già i linguagi di programmazione, ho 15 anni e vado in prima superiore e proprio in qesti giorni a scuola ci stanno facendo fare html per farci affacciare ai linguaggi di programmazione (anche se solo di siti web), se lo sapevo fare non chiedevo qui sul forum
Guarda, il mio commento non riguarda la tua comprensibile "ignoranza", ma piuttosto la poco condivisibile presunzione:
La domanda posta in quei termini dimostra, più che l'ignoranza, la superficialità e la leggerezza di uno che vuole mettersi in mostra e non ha volontà di affrontare con necessario impegno argomenti complessi.

Non c'entra niente con la programmazione e i 15 anni (a parte che a quell'età c'è già chi programma): quello che avete pensato non è l' "invenzione di un alfabeto" ma una codifica dei caratteri ordinati dell'alfabeto (italiano).. e se devi scrivere numeri o altre lettere? E non potrebbero avere un altro ordine e funzionare lo stesso?? ... esiste una letteratura sconfinata su questi argomenti: impara a cercare questo su internet prima di chiedere in un forum, magari pensando che qualcuno ti dia la pappa pronta!

Poi il fatto che ammetti l'incapacità di sviluppare un algoritmo (ed è comprensibile) ma tratti con normalità il fatto di riuscirlo a trasformare in una cosa ben più complessa come l'app per Android.. e questo mi dà da pensare a quanto ormai sia pervasivo, assurdo e deforme questa "mito" delle app!

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
Io, al ragazzo di 15 anni direi: non avere fretta di bruciare le tappe, studiare con profitto per la scuola a quella età e fino al conseguimento del diploma è la cosa più saggia da fare; pensa a diplomarti prima, poi deciderai la tua strada; non bruciare questa unica occasione.
Consiglio disinteressato e senza secondi fini.
 
Il mio primo programma è stato sul Commodore 64 a 16 anni, l'età non conta più di tanto.
E importante invece avere la consapevolezza di cosa vuol dire scrivere codice e quanto costa imparare.
 
Guarda, il mio commento non riguarda la tua comprensibile "ignoranza", ma piuttosto la poco condivisibile presunzione:
La domanda posta in quei termini dimostra, più che l'ignoranza, la superficialità e la leggerezza di uno che vuole mettersi in mostra e non ha volontà di affrontare con necessario impegno argomenti complessi.

Non c'entra niente con la programmazione e i 15 anni (a parte che a quell'età c'è già chi programma): quello che avete pensato non è l' "invenzione di un alfabeto" ma una codifica dei caratteri ordinati dell'alfabeto (italiano).. e se devi scrivere numeri o altre lettere? E non potrebbero avere un altro ordine e funzionare lo stesso?? ... esiste una letteratura sconfinata su questi argomenti: impara a cercare questo su internet prima di chiedere in un forum, magari pensando che qualcuno ti dia la pappa pronta!

Poi il fatto che ammetti l'incapacità di sviluppare un algoritmo (ed è comprensibile) ma tratti con normalità il fatto di riuscirlo a trasformare in una cosa ben più complessa come l'app per Android.. e questo mi dà da pensare a quanto ormai sia pervasivo, assurdo e deforme questa "mito" delle app!

Inviato dal mio Nexus 5 utilizzando Tapatalk
non ho detto che lo so "convertire" in un app android ho detto che mi posso arrangiare da solo. ho chiesto su questo forum un consiglio non che qualcuno me lo facesse, guarda la risposta di @Nemesys94 è stato gentile e mi ha fornito una soluzione ma non il programma già fatto, te non sei d'aiuto.
 
Io, al ragazzo di 15 anni direi: non avere fretta di bruciare le tappe, studiare con profitto per la scuola a quella età e fino al conseguimento del diploma è la cosa più saggia da fare; pensa a diplomarti prima, poi deciderai la tua strada; non bruciare questa unica occasione.
Consiglio disinteressato e senza secondi fini.
Sinceramente? Non sono d'accordo. Sia chiaro che non voglio fare il bacchettone! E poi i 15 anni non significano niente, il problema è atteggiamento e metodo.

(Personalmente, a me hanno mostrato un computer in seconda media e a 15 anni scrivevo programmi anche in assembler -z80- oltre che in basic.. il C, a quel tempo, non rientrava ancora nelle possibilità dei bambini)

Ciò che voglio dire, ma nel primo commento non era riferito direttamente all'OP, più che altro è stato lo spunto: con tutte le opportunità che ci sono oggi per documentarsi e imparare, molto spesso manca del tutto il metodo per cercare le informazioni che servono, il rispetto delle regole e spesso la capacità di valutazione.. è una cosa diffusa in vari ambiti e nel rapporto con le tecnologie questo è la normalità!

Solo perché uno è giovane è dato per scontato che sappia usare un computer, uno smartphone per fare cose strabilianti o scrivere in un forum o in un social network... la conseguenza è che Facebook, Google e Apple fanno i miliardi!!!
Lo spunto era appunto, considerare la possibilità di fare una app come la cosa più banale!

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
con tutte le opportunità che ci sono oggi per documentarsi e imparare, molto spesso manca del tutto il metodo per cercare le informazioni che servono, il rispetto delle regole e spesso la capacità di valutazione..
Condivido.
Vero che manca il metodo, ancor di più manca una guida qualificata che indirizzi un ragazzo molto giovane;
uno dei problemi è che in Internet trovi di tutto di più, trovi talmente troppo che se non hai esperienza non sei in grado di valutare cosa sia "meglio" fare (sottintendendo che non esiste un'unica via per fare le cose per bene).

Con buona pace di chi la pensa diversamente, esiste un metodo infallibile: studiare sui libri.
E magari smetterla di dar retta all'amico "furbo" di turno che ti viene a dire che per imparare il C++ c'è un'app per smartphone.
 
Susu, quante storie. Il ragazzo ha mostrato interesse per qualcosa che non conosce. "Poi a fare una app per android ci penso io" può sembrare un'affermazione arrogante per chi è del mestiere, ma per qualcuno che non si è ancora affacciato alla programmazione come può sembrare così difficile: "Imparo a programmare qualcosa di semplice? Bhom! Lo faccio sia su pc che su android! Che differenza c'è?". A me non sembra abbia peccato di arroganza, semplicemente non è conscio di come funzioni la cosa. Ed è comprensbile.

Invece di gridargli contro che sta dicendo cavolate, diamogli qualche input su cosa voglia dire programmare.

Può essere fastidioso per qualcuno che ha studiato per anni sentirsi dire: "sarà una cavolata", ma se ci saltiamo addosso per ogni punzecchiatura... Soprattutto se non intenzionale...
 
ringrazio @Nemesys94, aspetterò di fare C con la scuola per non incasinarmi troppo la testa. @rctimelines fai poco il "maestrino" ho chiesto una mano su una cosa che non sapevo e mi interessava se era possibile farla, non ho chiesto pappa pronta, non sapevo neanche quale linguaggio di programmazione usare e come usarlo se lo sapevo fare non chiedevo su un forum un incipit. Chiudiamo qui.
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top