Merge pull request #1572 from Chris54721/patch-1

[brainfuck/it] Fixed typos and syntax errors
This commit is contained in:
Adam Bard 2015-10-18 00:11:04 +08:00
commit 2f680301d5

View File

@ -1,75 +1,72 @@
--- ---
language: brainfuck language: brainfuck
contributors: contributors:
- ["Prajit Ramachandran", "http://prajitr.github.io/"] - ["Prajit Ramachandran", "http://prajitr.github.io/"]
- ["Mathias Bynens", "http://mathiasbynens.be/"] - ["Mathias Bynens", "http://mathiasbynens.be/"]
translators: translators:
- ["Ivan Sala", "http://slavni96.github.io/"] - ["Ivan Sala", "http://slavni96.github.io/"]
- ["Christian Grasso", "http://chris54721.net"]
lang: it-it lang: it-it
--- ---
Brainfuck è un linguaggio di programmazione estremamente minimale, Brainfuck è un linguaggio di programmazione
ma è ingrado di rappresentare completamente una macchina di turnig, [Turing equivalente](https://it.wikipedia.org/wiki/Turing_equivalenza)
e sfrutta solo 8 caratteri. estremamente minimale, composto da solo 8 comandi.
[Per saperne di più](http://it.wikipedia.org/wiki/Brainfuck)
Puoi provarlo nel tuo browser utilizzando
[brainfuck-visualizer](http://fatiherikli.github.io/brainfuck-visualizer/).
``` ```
Qualsiasi carattere che non sia "><+-.,[]" (escludendo gli apici) Qualsiasi carattere diverso da "><+-.,[]" (escludendo gli apici)
viene ignorato. viene ignorato.
Branfuck è caratterizzato da un array (vettore) di 30,000 celle Branfuck è caratterizzato da un array di 30,000 celle inizializzate a zero
inizializzare a zero, e un puntatore che punta alla cella corrente. e da un puntatore che punta alla cella corrente.
Vi sono solo otto comando: Vi sono otto comandi:
+ : Incrementa il valore della cella attuale di uno. + : Incrementa il valore della cella attuale di uno.
- : Decrementa il valore della cella attuale di uno. - : Decrementa il valore della cella attuale di uno.
> : Sposta il puntatore sulla cella seguente (prossima a destra). > : Sposta il puntatore sulla cella seguente (sulla destra).
< : Sposta il puntatore sulla cella precendete (precedente a sinistra). < : Sposta il puntatore sulla cella precendete (sulla sinistra).
. : Stampa il valore in ASCII della cella corrente. (es: 65 = 'A') . : Stampa il valore ASCII della cella corrente. (es. 65 = 'A')
, : Legge un singolo carattere come input per la cella corrente. , : Legge un singolo carattere come input e lo salva nella cella corrente.
[ : Se il valore della cella corrente è zero, conclude il ciclo [ : Se il valore della cella corrente è zero, prosegue fino alla ] corrispondente.
andando alla sua corrispondente ].
Altrimenti, passa alla prossima istruzione. Altrimenti, passa alla prossima istruzione.
] : Se il valore della cella corrente è zero, passa alla prossima istruzione. ] : Se il valore della cella corrente è zero, passa alla prossima istruzione.
Altrimenti torna indetro fino alla [ corrispondente. Altrimenti, torna indietro fino alla [ corrispondente.
[ e ] creano un loop (while). Ovviamente dovranno essere bilanciati. [ e ] formano un ciclo while. Ovviamente dovranno essere bilanciati.
Per ogni [ dovrà corrispondere una ] (Ad ogni [ dovrà corrispondere una ])
Alcuni semplici esempi di programmi scritti in Brainfuck: Ecco alcuni semplici esempi di programmi scritti in Brainfuck:
++++++ [ > ++++++++++ < - ] > +++++ . ++++++ [ > ++++++++++ < - ] > +++++ .
Questo programma stampa in output la lettera 'A'. Priam incrementa Questo programma stampa in output la lettera 'A'. Prima di tutto, incrementa
la cella #1 fino a 6, Quindi la cella #1 viene usata per crare un ciclo. la cella #1 fino al valore 6. La cella #1 verrà utilizzata per il ciclo.
Poi, entra in un loop ([) e si sposta alla cella #2. Poi, entra nel ciclo ([) e si sposta alla cella #2. Incrementa la cella #2 10
Incrementa la cella #2 10 volte, e torna alla cella #1, e la decrementa. volte, torna alla cella #1, e decrementa quest'ultima.
Questo avviene 6 volte (servono che la cella #1 venga decrementata 6 volte Il ciclo si ripete 6 volte (la cella #1 viene decrementata 6 volte prima di
per raggiungere lo 0. Quindi passa alla corrispondente ] e prosegue). raggiungere lo 0, quindi prosegue oltre la corrispondente ]).
A questo punto, siamo sulla cella #1, che ha valore 0, A questo punto, siamo sulla cella #1, che ha valore 0, mentre la cella #2 ha
la cella #2 ha valore 60 (6*10). Ci spostiamo sulla cella #2, incrementiamo valore 60. Ci spostiamo sulla cella #2, la incrementiamo per 5 volte, ottenendo
per 5 volte, e otteniamo il valore 65, quindi stampaimo il valore della cella il valore 65, quindi stampiamo il valore della cella #2.
#2 (.). Il valore 65 equivale ad 'A' in ASCII, per cui viene stampato 'A' nel terminale.
65 è 'A' in ASCII, quindi alla fine viene stampata 'A'.
, [ > + < - ] > . , [ > + < - ] > .
Questo programma legge un carattere come input dall'utente, Questo programma legge un carattere come input dall'utente, quindi salva il
quindi salva il carattere dentro la cella #1. carattere nella cella #1. Dopodichè entra in un ciclo. Si sposta alla cella #2,
In seguito, incominca a ciclare. incrementa quest'ultima, torna alla cella #1, e decrementa quest'ultima.
Si sposta alla cella #², e increementa il valore della cella (#2). Il ciclo continua fino a quando la cella #1 diventa 0, e quindi la cella #2
Quindi torna alla cella #1, e decrementa il valore della cella (#1). avrà il valore iniziale della cella #1. Infine, visto che ci troviamo sulla
Questo continua fino a quando la cella #²1 diventa 0, e quindi la cella #2 cella #1 alla fine del ciclo, si sposta sulla cella #2 e stampa il valore in
avrà il valore iniziale della cella #1. ASCII.
Infine, visto che ci troviamo sulla cella #1 alla fine del ciclo, si sposta
sulla cella #2 e stampa il valore in ASCII.
Gli spazi nel codice sovrastante, sono presenti solo a scopo di ottenere Gli spazi nel codice sovrastante sono presenti solo a scopo di ottenere
una maggiore leggibilità, si poteva anche scrivere senza: una maggiore leggibilità. Lo stesso programma poteva essere scritto senza spazi:
,[>+<-]>. ,[>+<-]>.
@ -77,25 +74,19 @@ Proviamo, adesso, a capire cosa fa invece questo programma:
,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >> ,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >>
Prende due numeri in input e quindi li moltiplica. Il programma legge 2 numeri come input dall'utente, e li moltiplica.
Prima prende in input i due numeri (,>,<), quindi inizia un cilclo Innanzitutto, legge in input i due numeri. Poi entra nel ciclo più esterno
basandosi sulla cella #1. basandosi sulla cella #1. Quindi si sposta sulla cella #2, e inizia il ciclo
Quindi si sposta sulla cella #2, e inizia un altro ciclo condizionato più interno basandosi sul valore della cella #2, incrementando la cella #3.
dal valore della cella #2, incrementando la cella #3.
Arrivati a questo punto abbiamo un problema: alla fine del ciclo interno Arrivati a questo punto abbiamo un problema: alla fine del ciclo interno
la cella #2 ha valore 0. In questo caso, quando il ciclo esterno rifarà la cella #2 avrà valore 0. Ciò impedirà di eseguire nuovamente il ciclo interno.
partire il ciclo interno, non funzionerà più perchè la cella #2 ha valore 0. Per ovviare a questo problema, incrementiamo anche la cella #4, e copiamo il
Per ovviare a questo problema, oltre alla cella 3, incrementiamo anche la cella valore di quest'ultima nella cella #2.
#4, e alla fine di ogni ciclo interno copiala il valore della cella #4 Il risultato sarà infine contenuto nella cella #3.
nella cella #2, in modo che il ciclo interno
possa essere eseguito una altra volta.
Alla fine la cella #3 contiene il risultato.
``` ```
E questo è brainfuck...Non è difficele, vero? E questo è brainfuck. Non è così difficile, eh? Se vuoi, ora puoi scrivere per
Per divertimento adesso puoi scrivere i tuoi programmi in brainfuck, divertimento altri programmi in brainfuck, oppure scrivere un interprete
oppure puoi scrivere un interprete brainfuck in un altro linguaggio. brainfuck in un altro linguaggio. L'interprete è abbastanza semplice da
L'interprete è abbastanza semplice da implementare, ma se sei veramente implementare, ma se sei veramente masochista, prova ad implementare un interprete brainfuck... in brainfuck.
masochista prova ad implementare un interprete brainfuck in...
brainfuck.