Eine Rechenzeile schreiben
Diese Seite erklärt die Grundlagen, auf denen jeder Rechenblock aufbaut: wie eine Zeile gelesen wird, wie du Notizen neben deine Rechnungen schreibst, wie du Werten Namen gibst und sie wiederverwendest und wie eine Zeile von einer Bedingung abhängen kann. Fang hier an, wenn Berechnungen in Varlig neu für dich sind, und schau wieder vorbei, wenn sich ein Name oder ein Kommentar anders verhält als erwartet.
Ein Ausdruck pro Zeile
Berechnungen stehen in einem Rechenblock innerhalb einer Notiz. Tippe eine Zeile mit ```calc
oder drück ⌘Y, um einen Block einzufügen. Jede Zeile im Block ist eine Berechnung, und ihr
Ergebnis erscheint neben der Zeile.
3.40 € * 5 ergibt €17.0045 min + 1 hour 20 min ergibt 2 hours 5 min1.5 litres in ml ergibt 1,500 mLLeerzeilen und Kommentarzeilen haben kein Ergebnis. So kannst du einen Block übersichtlich gliedern und nebenbei erklären.
Varlig liest die ganze Zeile zuerst als Rechnung, auch mit alltäglichen Formulierungen wie
45 € with 19% VAT. Klappt das nicht, lässt Varlig die Wörter beiseite, die es nicht kennt.
5 Äpfel + 3 Orangen ergibt also trotzdem 8. Das ist praktisch für schnelle Notizen, aber eine
Beschreibung kann mit einer Formulierung oder einem Einheitennamen kollidieren. Wenn du sagen
willst, wofür eine Zeile gedacht ist, nimm deshalb einen Kommentar oder eine Beschriftung, wie
im Folgenden beschrieben.
So liest Varlig eine Formulierung erklärt die Details.
Kommentare
Ein Kommentar ist Text, den der Rechner ignoriert. Es gibt drei Schreibweisen:
| Form | Beispiel | Was ignoriert wird |
|---|---|---|
| Rautenkommentar | Miete * 12 # pro Jahr oder # Budget |
Alles vom # bis zum Zeilenende |
| Schrägstrichkommentar | Miete * 12 // pro Jahr |
Alles vom // bis zum Zeilenende |
| Notiz in Anführungszeichen | "Cappuccino" 3.40 € * 5 |
Alles in doppelten Anführungszeichen, egal wo in der Zeile |
# WocheneinkaufMilch = 1.45 €Brot = 1.20 € // SauerteigEier = 2.30 € "Freiland"Milch + Brot + Eier # ohne Extras ergibt €4.95Eine Zeile, die mit # beginnt, ist von Anfang bis Ende ein Kommentar. Damit eignet sie sich
gut als Überschrift innerhalb eines Blocks.
Beschriftungen
Eine Beschriftung besteht aus ein paar Wörtern am Zeilenanfang, gefolgt von einem Doppelpunkt und einem Leerzeichen. Sie beschreibt das Ergebnis, ohne Teil der Rechnung zu sein:
Miete = 1,250 €Nebenkosten = 180 €Miete und Nebenkosten: Miete + Nebenkosten ergibt €1,430.00Rechnung im Café: 12.50 € + 4 € ergibt €16.50Beschriftungen können Buchstaben (auch mit Akzenten), Leerzeichen und Unterstriche enthalten, aber keine Ziffern.
Eine Beschriftung erzeugt keinen Namen. Nach Miete und Nebenkosten: Miete + Nebenkosten
gibt es keinen Wert namens Miete und Nebenkosten. Verwende =, wenn du ein Ergebnis
wiederverwenden willst. Setz außerdem keine Beschriftung vor eine Zuweisung:
Wohnen: Miete = 1,250 € zeigt zwar den Betrag an, aber Miete wird nicht gespeichert.
Zuweisung
= gibt einem Wert einen Namen. Die Zeile zeigt den Wert auch an, sodass du ihn gleich
überprüfen kannst.
Preis = 85 € ergibt €85.00Preis + 20% ergibt €102.00Um einen bereits definierten Namen zu ändern, verwende +=, -=, *= oder /=:
Urlaubskasse = 400 €Urlaubskasse += 150 € ergibt €550.00Urlaubskasse -= 85 € ergibt €465.00Portionen = 4Portionen *= 3 ergibt 12Mehl = 750 gMehl /= 3 ergibt 250 gSchlägt die rechte Seite fehl, enthält der Name den Fehler, und jede Zeile, die ihn verwendet, zeigt denselben Fehler, bis du dem Namen einen neuen Wert zuweist:
Gäste = 0pro Kopf = 120 € / Gäste ergibt Error: divide by zeropro Kopf + 5 € ergibt Error: divide by zeroNamen
Namen können aus mehreren Wörtern bestehen und Buchstaben mit Akzenten, nicht lateinische Buchstaben, Ziffern, Unterstriche und Emoji enthalten:
Latte macchiato = 3.40 €Latte macchiato * 5 ergibt €17.00Crème brûlée = 6.50 €Crème brûlée * 2 ergibt €13.00🍎 Preis = 0.45 €🍎 Preis * 6 ergibt €2.70Umsatz Q1 = 12,400 €Umsatz Q2 = 14,100 €Umsatz Q1 + Umsatz Q2 ergibt €26,500.00Breite_Schlafzimmer = 3.2 mBreite_Schlafzimmer * 2 ergibt 6.4 mEin Name darf Wörter enthalten, die Varlig auch anderweitig verwendet, etwa to, in oder
needed, und er darf den Namen einer eingebauten Funktion wie floor übernehmen. Überall,
wo du ihn als Wert verwendest, liest Varlig deinen Wert:
Fahrt in die Stadt = 25 minFahrt in die Stadt * 10 ergibt 250 minFarbe in der Küche = 12.44 LFarbe in der Küche to 1 dp ergibt 12.4 Lfloor = 12 m²floor * 2 ergibt 24 m²floor(3.7) ergibt 3Folgen Klammern, wie in floor(3.7), erledigt die Funktion weiterhin ihre übliche Aufgabe.
Ein Name darf sogar auf ein Zahlwort enden. So steht ein Preis da wie auf der Speisekarte:
Tisch für vier = 96 €Tisch für vier / 4 ergibt €24.00Bei Namen kommt es auf Groß- und Kleinschreibung an: Eier und eier sind zwei verschiedene
Werte.
Soll ein Name in jeder Notiz verfügbar sein, etwa dein Stundensatz oder ein Steuersatz, füge ihn in den Einstellungen zu den globalen Definitionen hinzu, statt ihn in jeder Notiz zu wiederholen.
Namen, die mit eingebauten Wörtern kollidieren
Ein Name, den du definierst, hat Vorrang vor allem anderen, das genauso geschrieben wird, etwa
vor einer Einheit, einem Zahlwort oder einer Konstante. Alltägliche Namen lassen deine Mengen
trotzdem in Ruhe. Eine Zahl direkt vor einem Namen im (englischen) Plural oder vor einer Einheit zählt diese
Sache, und ein Prozentsatz vor tip oder tax bezeichnet das Trinkgeld oder die Steuer. Werte
namens hours, nights oder tip ändern diese Zeilen also nicht:
Stundensatz = 14 € / hourhours = 7.5Stundensatz * 7.5 hours ergibt €105.00nights = 14118 €/night * 14 nights ergibt €1,652.00tip = 12.69 €84.60 € + 18% tip ergibt €99.83Halt den Zeiger über das Wort, um zu sehen, wie Varlig es gelesen hat. Bei
Stundensatz * 7.5 hours steht dort „Counts hours here, not the variable hours = 7.5.“ An jeder
anderen Stelle einer Zeile ist der Name dein Wert, wie in split 90 € among Personen.
In einigen Fällen ändert deine Definition aber doch, was eine Zeile bedeutet:
- Ein einzelner Buchstabe steht immer für deinen Wert: Nach
m = 3ist2 mgleich 6 statt zwei Meter. - Eine Zahl vor einem Namen im Singular multipliziert ihn: Nach
Breite = 3ist2 Breitegleich 6. Der Hinweis schlägt vor,2 * Breitezu schreiben, damit das eindeutig ist. - Auch Zahlwörter und Konstanten werden ersetzt: Nach
one = 7ergibtone times two14.
Zwei Gewohnheiten vermeiden die meisten Überraschungen:
- Verwende Einheitensymbole wie
m,s,hoderinnicht für sich allein als Namen, und verwende keine Konstanten oder Zahlwörter wiepi,oneoderierneut. - Bevorzuge aussagekräftige Namen wie
Arbeitsstunden,TagessatzoderLaufstrecke.
Reihenfolge im Dokument
Jede Zeile sieht die Namen, die darüber definiert sind. Namen gelten auch in späteren Rechenblöcken derselben Notiz. So legst du deine Eingaben einmal fest und verwendest sie weiter unten auf der Seite.
Preis = 20 €Menge = 3Kosten = Preis * Menge ergibt €60.00Preis = 25 €Preis * Menge ergibt €75.00Kosten ergibt €60.00Die Neudefinition von Preis ändert die frühere Zeile Kosten nicht: Kosten wurde mit dem
Preis berechnet, der an dieser Stelle galt. Um das Ergebnis einer früheren Berechnung zu ändern,
bearbeite die Zeile, in der ihre Eingabe definiert ist.
Das Ergebnis darüber
prev ist das Ergebnis der nächstgelegenen Zeile darüber, und ans bedeutet dasselbe, solange
du keinen Wert ans genannt hast. Beide eignen sich für eine schnelle Folgerechnung:
1,250 € * 12 ergibt €15,000.00prev / 52 ergibt €288.46ans + 20 € ergibt €308.46Um eine Gruppe von Zeilen zu addieren, schreib sum oder total in eine eigene Zeile. Siehe
Die Zeilen darüber addieren.
Neuer Gültigkeitsbereich
Eine Zeile, die nur --- enthält, beginnt einen neuen Gültigkeitsbereich. Namen, eigene
Einheiten und eigene Funktionen, die darüber definiert sind, sind darunter nicht mehr sichtbar.
Das ist praktisch, um zwei Szenarien in einer Notiz zu vergleichen, ohne dass sich ihre Werte
gegenseitig beeinflussen.
# Option A: die Wohnung in der StadtMiete = 1,250 €Fahrtkosten = 60 €Miete + Fahrtkosten ergibt €1,310.00---# Option B: die Wohnung weiter draußenMiete = 980 €Fahrtkosten = 210 €Miete + Fahrtkosten ergibt €1,190.00Unter dem --- muss Fahrtkosten neu definiert werden. Vergisst du das, hat die Zeile, die den
Namen verwendet, nichts, worauf sie sich beziehen kann.
Bedingungen
if … then … else … wählt anhand eines Vergleichs einen von zwei Werten aus. Du kannst es für
sich allein verwenden oder das Ergebnis einem Namen zuweisen:
Warenkorb = 34.50 €Versand = if Warenkorb >= 40 € then 0 € else 3.99 € ergibt €3.99Warenkorb + Versand ergibt €38.49Verkette else if für mehr als zwei Möglichkeiten:
Warenkorb = 34.50 €if Warenkorb < 20 € then 4.99 € else if Warenkorb < 40 € then 2.99 € else 0 € ergibt €2.99Nur der gewählte Zweig wird berechnet. Der andere Zweig darf also etwas enthalten, das fehlschlagen würde:
Gäste = 0if Gäste > 0 then 120 € / Gäste else 0 € ergibt €0.00Nachgestelltes if und unless
Du kannst die Bedingung auch hinter den Wert stellen. Wert if Bedingung zeigt den Wert, wenn
die Bedingung erfüllt ist, und Wert unless Bedingung zeigt ihn, wenn sie nicht erfüllt ist.
Andernfalls zeigt die Zeile in beiden Fällen nichts an.
Warenkorb = 34.50 €3.99 € if Warenkorb < 40 € ergibt €3.993.99 € unless Warenkorb >= 40 € ergibt €3.99Zuweisen innerhalb einer Bedingung
Beide Zweige können demselben Namen einen Wert zuweisen:
Warenkorb = 34.50 €if Warenkorb >= 40 € then Versandkosten = 0 € else Versandkosten = 3.99 € ergibt €3.99Versandkosten ergibt €3.99Gibt es nur einen then-Zweig, findet die Zuweisung statt, wenn die Bedingung erfüllt ist.
Andernfalls behält der Name seinen alten Wert:
Warenkorb = 34.50 €Punkte = 0if Warenkorb > 30 € then Punkte = 50 ergibt 50Punkte ergibt 50Vergleiche wie >= und die Operatoren && und || werden unter
Operatoren, Vergleiche und Bedingungen erklärt.
Alles zusammen
Hier eine kleine Rechnung für freiberufliche Arbeit, so wie du sie in einer Notiz führen könntest:
# Rechnung MärzTagessatz = 420 €Arbeitstage = 6Reisekosten = 86.40 € // BahnticketsHonorar = Tagessatz * Arbeitstage ergibt €2,520.00Zwischensumme = Honorar + Reisekosten ergibt €2,606.40umsatzsteuerpflichtig = trueMwSt = if umsatzsteuerpflichtig then Zwischensumme * 19% else 0 € ergibt €495.22Rechnungsbetrag: Zwischensumme + MwSt ergibt €3,101.62Jede Eingabe hat einen Namen. Im nächsten Monat änderst du also nur Arbeitstage und
Reisekosten, und der Rest der Rechnung passt sich an. Kommentare und Beschriftung halten den
Block lesbar, und dank der Bedingung funktioniert dieselbe Notiz, egal ob du Umsatzsteuer
berechnest oder nicht.