Redigerer
Brainfuck
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
{{infoboks programmeringsspråk}} '''Brainfuck''' er et [[programmeringsspråk]] kjent for sin ekstreme minimalisme. Det ble designet for å utfordre og underholde programmerere, og passer ikke for praktisk bruk. ==Språkdesign== [[Urban Müller]] utviklet Brainfuck rundt 1993 i den hensikt å skape et språk som kunne bli implementert med en minst mulig [[kompilator]] [http://www.muppetlabs.com/~breadbox/bf/]. Det har blitt skrevet flere Brainfuck-kompilatorer på mindre enn 200 [[byte]]s. Den klassiske distribusjonen er [https://web.archive.org/web/20070313151559/http://wuarchive.wustl.edu/pub/aminet/dev/lang/brainfuck-2.lha Müllers versjon 2], som inneholder en kompilator for [[Amiga]], en tolker, eksempelprogrammer, og et lesmeg (readme)-dokument. Språket består av åtte kommandoer, listet nedenfor. Et Brainfuck-program er en rekke av disse kommandoene, noen ganger med andre tegn imellom (som blir ignorert). Kommandoene blir kjørt sekvensielle, med unntak notert nedenfor. Brainfuck-språket bruker en enkel maskinmodell som utenom selve programmet består av en rekke med 30,000 [[byte]]-celler initialisert til null, en bevegelig peker i rekken og to strømmer av bytes for inn- og utdata (vanligvis koblet til et tastatur og en skjerm, og med [[ASCII]] tegnsettet). ===Kommandoer=== De åtte språkkommandoene, hver bestående av ett enkelt tegn, er som følger: {| class="wikitable" !Tegn !Mening |- |<code>></code> ||øk pekeren (til å peke på nærmeste celle til høyre). |- |<code><</code> ||minsk pekeren (til å peke på nærmeste celle til venstre). |- |<code>+</code> ||øk (med én) byten på pekeren. |- |<code>-</code> ||minsk (med én) byten på pekeren. |- |<code>.</code> ||skriv ut byten på pekeren. |- |<code>,</code> ||aksepter én byte med inndata og lagre den i byten på pekeren. |- |<code>[</code> ||hopp forover til kommandoen etter den tilhørende <code>]</code> hvis byten på pekeren er null. |- |<code>]</code> ||hopp tilbake til kommandoen etter den tilhørende <code>[</code> hvis byten på pekeren ikke er null. |} == Eksempler == === Hello World! === Det følgende programmet skriver «Hallo Verden!» og en newline: <code>++++++++++ <nowiki>[</nowiki> >+++++++>++++++++++>+++>+<<<<- <nowiki>]</nowiki> >++. print 'H' >---. print 'a' +++++++++++. 'l' . 'l' +++. 'o' >++. mellomrom <<++++++++++++++. 'V' >----------. 'e' +++++++++++++. 'r' --------------. 'd' +. 'e' +++++++++. 'n' >+. '!' >. newline</code> For lesbarhetens skyld har koden blitt spredt utover mange linjer og kommandoer blitt lagt til. Brainfuck behandler alle tegn utenom <code>+-<>[],.</code> som kommentarer, så ingen spesiell syntaks for kommentarer trengs. Koden kunne like gjerne blitt skrevet som: <code>++++++++++[>+++++++>++++++++++>+++>+<<<<-] >++.>---.+++++++++++..+++.>++.<<++++++++++++++.>--- -------.+++++++++++++.--------------.+.+++++++++.>+.>.</code> ===Trivielt=== ==== Enkel løkke ==== ,[.,] En løkke som mottar tekst fra tastaturet og skriver det til skjermen. ==== Pekermanipulasjon ==== >,[.>,] En versjon av det forrige som i tillegg lagrer alle inndata i rekken med bytes ved å flytte pekeren hver gang. ==== Addisjon ==== <code>[->+<]</code> Denne legger byten på den nåværende posisjonen til byten på den neste posisjonen. ==== Kopiering ==== <code>[->>+<<]>>[-<+<+>>]</code> Denne kopierer byten fra den nåværende posisjonen til neste posisjon, ved å bruke en tredje posisjon som temporær byte. == Eksterne lenker == * [https://web.archive.org/web/20051210061947/http://www.4mhz.de/ Brainfuck interpreter with integrated debugger (IDE) for Windows] {{programmeringsspråk}} {{Autoritetsdata}} [[Kategori:Programmeringsspråk]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:Autoritetsdata
(
rediger
)
Mal:Bilde fra Wikidata
(
rediger
)
Mal:Hlist/styles.css
(
rediger
)
Mal:Infoboks/styles.css
(
rediger
)
Mal:Infoboks bilde
(
rediger
)
Mal:Infoboks dobbeltrad
(
rediger
)
Mal:Infoboks overskrift
(
rediger
)
Mal:Infoboks programmeringsspråk
(
rediger
)
Mal:Infoboks rad
(
rediger
)
Mal:Infoboks slutt
(
rediger
)
Mal:Infoboks start
(
rediger
)
Mal:Navboks
(
rediger
)
Mal:Programmeringsspråk
(
rediger
)
Modul:Arguments
(
rediger
)
Modul:External links
(
rediger
)
Modul:External links/conf
(
rediger
)
Modul:External links/conf/Autoritetsdata
(
rediger
)
Modul:Genitiv
(
rediger
)
Modul:Navbar
(
rediger
)
Modul:Navbar/configuration
(
rediger
)
Modul:Navboks
(
rediger
)
Modul:Navbox/configuration
(
rediger
)
Modul:Navbox/styles.css
(
rediger
)
Modul:Reference score
(
rediger
)
Modul:Reference score/conf
(
rediger
)
Modul:Reference score/i18n
(
rediger
)
Modul:String
(
rediger
)
Modul:Wikidata2
(
rediger
)
Modul:WikidataBilde
(
rediger
)
Modul:WikidataDato
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon