Calling smart contracts also happen trough transactions, and only involve 2 additional parameters compared to simple QARK transfers.
One is the function's name you want to call within the function, and the second is a list of parameters that will be passed to this function as follows:
callvm e0367c4c43655c6f651a67a6fcce05548ff0affa add 40 2
Calling the calculator contract with the above address on function
add should return
42 and you are also
shown the transaction hash of this call.