Ebooks, Audobooks and Classical Music from Liber Liber
a b c d e f g h i j k l m n o p q r s t u v w x y z





Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Brainfuck – Wikipedia

Brainfuck

Wikipedia

Brainfuck on Urban Müllerin noin vuonna 1993 kehittämä esoteerinen ohjelmointikieli, joka tunnetaan äärimmäisestä minimalismistaan. Müllerin tarkoituksena oli saada aikaan mahdollisimman pienikokoinen kääntäjä. Kieli tarjoaa ohjelmoijille älyllistä haastetta ja hupia, mutta käytännöllisiin tarkoituksiin se ei sovellu.

Sisällysluettelo

[muokkaa] Yleistä

Brainfuck on yksi tunnetuimmista "esoteerisistä ohjelmointikielistä". Kieli on Turing-täydellinen, eli kaikki mahdolliset algoritmit on periaatteessa mahdollista ohjelmoida sillä. Esteenä on ennen kaikkea ohjelmoijan kyky kirjoittaa nämä ohjelmat.

Brainfuck-ohjelmien tiedostopäätteenä käytetään useimmiten .b. Ohjelmaa suoritettaessa tulkin tulisi ottaa vain ja ainoastaan huomioon brainfuckin omat kahdeksan komentoa ja karsia muu data. Joissakin tulkeissa saattaa olla erityistoimintoja kuten '#', jolla tulkki näyttää osoittimen nykyisen paikan ja muutaman viereisen solun arvot, tai vastaavaa.

Brainfuck-ohjelmat on suurimmalta osin tehty käyttämään UNIXin rivinvaihtoa, ASCII #010. Jos tulkki lukee syötteen jostain tiedostosta ja päätyy tiedoston loppuun, EOF, sen tulisi jättää solu ennalleen eikä muuttaa sitä. Varsin usein tulkit palauttavat nollan (0) EOF-tilanteessa.

[muokkaa] Komennot

Brainfuckissa on kahdeksan komentoa:

Komento Selitys
> Kasvata osoittimen arvoa yhdellä.
< Vähennä osoittimen arvoa yhdellä.
+ Kasvata osoittimen kohdalla olevan tavun arvoa yhdellä.
- Vähennä osoittimen kohdalla olevan tavun arvoa yhdellä.
. Tulosta osoittimen kohdalla olevaa tavua vastaava ASCII-merkki.
, Lue syötteestä tavu osoittimen kohdalle.
[ Hyppää eteenpäin vastaavaan ]-merkkiin jos osoittimen kohdalla oleva tavu on nolla.
] Hyppää taaksepäin vastaavaan [-merkkiin jos osoittimen kohdalla oleva tavu ei ole nolla.

[muokkaa] Koodiesimerkki

Seuraava ohjelma tulostaa tekstin "Hello World!":

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

Luettavuuden parantamiseksi ohjelman voi kuitenkin jakaa useammalle riville ja siihen voi lisätä kommentteja keskelle, sillä Brainfuck ottaa huomioon vain merkit +-<>[],. eli erillistä kommentointisyntaksia ei tarvita:

++++++++++
[
   >+++++++>++++++++++>+++>+<<<<-
] Aloitussilmukka joka asettaa hyödyllisiä arvoja taulukkoon
>++. tulosta 'H'
>+. tulosta 'e'
+++++++. 'l'
. 'l'
+++. 'o'
>++. välilyönti
<<+++++++++++++++. 'W'
>. 'o'
+++. 'r'
------. 'l'
--------. 'd'
>+. '!'
>. rivinvaihto

Ensimmäinen rivi kasvattaa taulukon ensimmäisen solun arvoon 10, eli a[0] = 10. Rivien 2—4 silmukka alustaa muiden solujen arvot lähelle hyödyllisiä arvoja: a[1] = 70 (lähellä 72:ta, joka on H-kirjaimen ASCII-koodi), a[2] = 100 (lähellä 101:tä, 'e'), a[3] = 30 (lähellä 32:ta, välilyönti) ja a[4] = 10 (rivinvaihto). Silmukka toimii kertomalla solun a[0] arvoa, 10, seitsemällä, kymmenellä, kolmella ja yhdellä, tallentaen tulokset muihin soluihin. Silmukan päättyessä a[0] = 0.

Sen jälkeen >++. siirtää osoittimen kohtaan a[1] jossa nyt on tallennettuna arvo 70, lisää siihen kaksi, jolloin solun arvo on 72 eli H-kirjaimen ASCII-koodi, ja tulostaa sen.

Seuraava rivi siirtää osoittimen kohtaan a[2], lisää siihen yhden (jolloin a[2] = 101, 'e') ja tulostaa sen.

Pieni-l on seitsemäs kirjain e:n jälkeen, joten ohjelma lisää soluun a[2] seitsemän (+++++++) ja tulostaa sen kahdesti (..).

Pieni-o on kolmas kirjain l:n jälkeen, joten a[2]:ta kasvatetaan kolme kertaa ja tulostetaan se (+++.).

Ohjelman loppu toimii kuten edellä.

[muokkaa] Aiheesta muualla

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com