Funkcje są podstawowym narzędziem ułatwiającym wykonywanie skomplikowanych zadań. Dzielimy cale zadanie na prostsze czynnosci które potrafimy wykonać ręcznie, a następnie piszemy funkcje które wykonają je automatycznie.
Bardzo prosty przykład: zakładam, że potrafimy dodać trzy liczby w Mathematice, np:
  
  
podobnie dodajemy trzy symbole:
  
  
Teraz chcemy napisać funkcję która dodaje trzy składniki, np: x, y, z. Standardowa składnia wygląda następująco:
  
 Podsumowanie składni: 
dodaj3        - nazwa funkcji     
[]         - argumenty funkcji zawsze w nawiasach kwadratowych
x_         - pierwszy argument składa się z nazwy (x) i symbolu podkreślenia (_)
:=          - symbol dwukropek i ,,równa się’’ poprzedza definicję funkcji
x+y+z         - to co funkcja ma zrobić: dodać trzy symbole
Przykładowe wywołanie funkcji:
  
  
  
  
Warto zwrócić uwagę na fakt, iż funkcja która dodaje 3 (i dowolną ilość) symboli istnieje już w Mathematice : jest to Plus:
  
  
Powyższa sytuacja zdarza się często, gdyż Mathematica posiada bardzo rozbudowany język. Czasem szybciej jest napisać jednak własną funkcję, niż doszukać się jej w dokumentacji. Innym powodem pisania własnych funkcji może być chęć ich np. przyspieszenia.
Inne sposoby definiowania funkcji:
  
  
  
  
  
  
  
  
Przykład: funkcja generująca losową sekwencję DNA.
Na początek sprawdzamy czy potrafimy wygenerować jeden losowy nukleotyd. Mozna to zrobić za pomocą RandomChoice (losowy wybór z listy). Każdorazowe wywołanie może dać inny wynik:
  
  
Teraz chcemy wygenerować listę np: 10 takich losowych nukleotydów, za pomocą Table:
  
  
Listę należy ,,posklejać’’ aby utworzyć jeden łańcuch tekstowy:
  
  
Można to zrobić na raz w ten sposób:
  
  
lub w ten:
  
  
lub jeszcze inaczej:
  
  
Nazwijmy funkcję wykonującą te czynności randomDNA. Jej ,,wnętrze’’ (ang. body, ciało) najprościeś wkleić metodą Ctrl+C Ctrl+V.
  
  
  
Nieco bardziej skomplikowana funkcja rozwiązująca podpunkt (a) Zad. 1 z Zestawu 1. Funkcja sprawdza czy podano jej jako argument łańcuch tekstowy ( _?StringQ), i zawiera 5 zmiennych wewnętrznych (dlugosc, czestoscA, czestoscC, czestoscG, czestoscT), tj. niewidocznych poza ,,ciałem’’ funkcji:
  
  
  
  
  
  
  
  
  
  
  
  
Od momentu napisania i przetestowania funkcji, możemy ją uzywać podobnie jak funkcji wbudowanych. Poniższy wykres pokazuje jak zmienia się częstość występowania nukleotydów na początku chromosomu.
  
  
  
  
  
  
  
  
  
  
 