Zum Inhalt springen
Varlig-Handbuch
Varlig-Startseite

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.

calc
3.40 * 5 ergibt €17.00
45 min + 1 hour 20 min ergibt 2 hours 5 min
1.5 litres in ml ergibt 1,500 mL

Leerzeilen 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
calc
# Wocheneinkauf
Milch = 1.45
Brot = 1.20 // Sauerteig
Eier = 2.30 "Freiland"
Milch + Brot + Eier # ohne Extras ergibt €4.95

Eine 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:

calc
Miete = 1,250
Nebenkosten = 180
Miete und Nebenkosten: Miete + Nebenkosten ergibt €1,430.00
Rechnung im Café: 12.50 + 4 ergibt €16.50

Beschriftungen 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.

calc
Preis = 85 ergibt €85.00
Preis + 20% ergibt €102.00

Um einen bereits definierten Namen zu ändern, verwende +=, -=, *= oder /=:

calc
Urlaubskasse = 400
Urlaubskasse += 150 ergibt €550.00
Urlaubskasse -= 85 ergibt €465.00
Portionen = 4
Portionen *= 3 ergibt 12
Mehl = 750 g
Mehl /= 3 ergibt 250 g

Schlä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:

calc
Gäste = 0
pro Kopf = 120 / Gäste ergibt Error: divide by zero
pro Kopf + 5 ergibt Error: divide by zero

Namen

Namen können aus mehreren Wörtern bestehen und Buchstaben mit Akzenten, nicht lateinische Buchstaben, Ziffern, Unterstriche und Emoji enthalten:

calc
Latte macchiato = 3.40
Latte macchiato * 5 ergibt €17.00
Crème brûlée = 6.50
Crème brûlée * 2 ergibt €13.00
🍎 Preis = 0.45
🍎 Preis * 6 ergibt €2.70
Umsatz Q1 = 12,400
Umsatz Q2 = 14,100
Umsatz Q1 + Umsatz Q2 ergibt €26,500.00
Breite_Schlafzimmer = 3.2 m
Breite_Schlafzimmer * 2 ergibt 6.4 m

Ein 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:

calc
Fahrt in die Stadt = 25 min
Fahrt in die Stadt * 10 ergibt 250 min
Farbe in der Küche = 12.44 L
Farbe in der Küche to 1 dp ergibt 12.4 L
floor = 12
floor * 2 ergibt 24 m²
floor(3.7) ergibt 3

Folgen 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:

calc
Tisch für vier = 96
Tisch für vier / 4 ergibt €24.00

Bei 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:

calc
Stundensatz = 14 / hour
hours = 7.5
Stundensatz * 7.5 hours ergibt €105.00
nights = 14
118 /night * 14 nights ergibt €1,652.00
tip = 12.69
84.60 + 18% tip ergibt €99.83

Halt 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 = 3 ist 2 m gleich 6 statt zwei Meter.
  • Eine Zahl vor einem Namen im Singular multipliziert ihn: Nach Breite = 3 ist 2 Breite gleich 6. Der Hinweis schlägt vor, 2 * Breite zu schreiben, damit das eindeutig ist.
  • Auch Zahlwörter und Konstanten werden ersetzt: Nach one = 7 ergibt one times two 14.

Zwei Gewohnheiten vermeiden die meisten Überraschungen:

  • Verwende Einheitensymbole wie m, s, h oder in nicht für sich allein als Namen, und verwende keine Konstanten oder Zahlwörter wie pi, one oder i erneut.
  • Bevorzuge aussagekräftige Namen wie Arbeitsstunden, Tagessatz oder Laufstrecke.

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.

calc
Preis = 20
Menge = 3
Kosten = Preis * Menge ergibt €60.00
Preis = 25
Preis * Menge ergibt €75.00
Kosten ergibt €60.00

Die 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:

calc
1,250 * 12 ergibt €15,000.00
prev / 52 ergibt €288.46
ans + 20 ergibt €308.46

Um 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.

calc
# Option A: die Wohnung in der Stadt
Miete = 1,250
Fahrtkosten = 60
Miete + Fahrtkosten ergibt €1,310.00
---
# Option B: die Wohnung weiter draußen
Miete = 980
Fahrtkosten = 210
Miete + Fahrtkosten ergibt €1,190.00

Unter 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:

calc
Warenkorb = 34.50
Versand = if Warenkorb >= 40 then 0 else 3.99 ergibt €3.99
Warenkorb + Versand ergibt €38.49

Verkette else if für mehr als zwei Möglichkeiten:

calc
Warenkorb = 34.50
if Warenkorb < 20 then 4.99 else if Warenkorb < 40 then 2.99 else 0 ergibt €2.99

Nur der gewählte Zweig wird berechnet. Der andere Zweig darf also etwas enthalten, das fehlschlagen würde:

calc
Gäste = 0
if Gäste > 0 then 120 / Gäste else 0 ergibt €0.00

Nachgestelltes 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.

calc
Warenkorb = 34.50
3.99 if Warenkorb < 40 ergibt €3.99
3.99 unless Warenkorb >= 40 ergibt €3.99

Zuweisen innerhalb einer Bedingung

Beide Zweige können demselben Namen einen Wert zuweisen:

calc
Warenkorb = 34.50
if Warenkorb >= 40 then Versandkosten = 0 else Versandkosten = 3.99 ergibt €3.99
Versandkosten ergibt €3.99

Gibt es nur einen then-Zweig, findet die Zuweisung statt, wenn die Bedingung erfüllt ist. Andernfalls behält der Name seinen alten Wert:

calc
Warenkorb = 34.50
Punkte = 0
if Warenkorb > 30 then Punkte = 50 ergibt 50
Punkte ergibt 50

Vergleiche 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:

calc
# Rechnung März
Tagessatz = 420
Arbeitstage = 6
Reisekosten = 86.40 // Bahntickets
Honorar = Tagessatz * Arbeitstage ergibt €2,520.00
Zwischensumme = Honorar + Reisekosten ergibt €2,606.40
umsatzsteuerpflichtig = true
MwSt = if umsatzsteuerpflichtig then Zwischensumme * 19% else 0 ergibt €495.22
Rechnungsbetrag: Zwischensumme + MwSt ergibt €3,101.62

Jede 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.