Brainfuck: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Removendo vírgulas que deveriam ser comentários e arrumando exemplo
rgdfgsdg
Etiqueta: Remoção considerável de conteúdo
Linha 25:
Exceto pelos seus dois comandos de [[entrada/saída|E/S]], brainfuck é uma variação da linguagem de programação [[P′′]], criada por [[Corrado Böhm]] em [[1964]]. Todos os outros seis comandos de brainfuck são idênticos ao de P′′.
 
fdgdfgdfgdf
== Características ==
O brainfuck acessa a [[memória RAM]] através de células de memória, e um ponteiro que aponta inicialmente a primeira célula. O tamanho de cada célula de memória depende do compilador ou [[interpretador]] usado. Na versão original, eram usadas 30000 células de memória, de 1 byte cada, porém é comum em implementações mais novas, terem apenas 5000 células. Existem versões com até 1 [[Dword]] (4 bytes) por célula de memória.
 
Algumas implementações possuem células de [[Alocação de memória|memória dinâmica]], que podem aumentar de tamanho durante a execução, sempre que houver necessidade. Essas versões são mais flexíveis, porém mais lentas.
 
Na versão original, cada célula pode ter um valor entre -128 e 127, porém, em implementações mais novas, cada célula pode ter um valor entre 0 e 255. Sendo os números [[Conjunto finito|finitos]], algumas implementações reportam erro quando esses valores são excedidos, mas isso é bem incomum, sendo o mais comum, os valores girarem automaticamente (se o valor da célula for igual a 255 e seu valor for aumentado novamente, esse valor passa a ser 0 e, se o valor for 0 e for diminuido novamente, esse valor passa a ser 255). A maioria das implementações reconhece a tecla Enter como [[ASCII]] 10.
 
Normalmente, a [[Extensão de nome de ficheiro|extensão]] usada pelos [[Código fonte|códigos fonte]] em brainfuck é ''.b'' ou ''.bf''.
 
=== Comandos ===
A linguagem possui apenas oito comandos, cada qual formado por apenas um [[caractere]]. Outros caracteres são considerados comentários, e são ignorados.
 
{|{{Prettytable}}
!style="text-align:center;"|Caractere
!style="text-align:center;"|Descrição
!style="text-align:center;"|Equivalente em [[C (linguagem de programação)|C]]
|----
|align="center"|<code>></code>
|Incrementa o ponteiro (acessa a célula de memória seguinte).
|align="center"|<code>ptr++;</code>
|----
|align="center"|<code><</code>
|Decrementa o ponteiro (acessa a célula de memória anterior).
|align="center"|<code>ptr--;</code>
|----
|align="center"|<code>+</code>
|Incrementa em um, o valor da célula de memória selecionada.
|align="center"|<code>array[ptr]++;</code>
|----
|align="center"|<code>-</code>
|Decrementa em um, o valor da célula de memória selecionada.
|align="center"|<code>array[ptr]--;</code>
|----
|align="center"|<code>.</code>
|Imprime na tela o caractere relativo à célula de memória selecionada.
|align="center"|<code>putchar(array[ptr]);</code>
|----
|align="center"|<code>,</code>
|Salva na célula de memória selecionada o código da próxima tecla a ser pressionada.
|align="center"|<code>array[ptr]=getchar();</code>
|----
|align="center"|<code>[</code>
|Estrutura de controle que repete os comandos, enquanto a célula selecionada for diferente de zero.
|align="center"|<code>while(array[ptr]) {</code>
|----
|align="center"|<code>]</code>
|Fim da estrutura [.
|align="center"|<code>}</code>
|----
|}
 
== Exemplos ==