Preconditions and postconditions
Preconditions and postconditions are just ways to describe a function in more detail, and give some hints on how you can use this function or what to expect from it.

Preconditions are conditions that have to hold before (pre is Latin for before) the function gets called by a user. These are usually conditions about the parameter. E.g. a simple precondition for the function square_root(x) might be: x has to be non-negative. Because the function cannot handle negative numbers, maybe even crashes, or just return wrong values. But there are even other preconditions. Other preconditions could involve global states, or the state of objects. E.g. before you call this function you need to call another. So the user has to make sure, that all the conditions are satisfied, before he calls the method.

Postconditions are about after the call (again, Latin). That can mean the return value of the function, or the global state of the program or object after calling the function. This are conditions a user can expect from the program. It is kinda like a guarantee, if a user calls the function in a way that satisfies all preconditions, then he will get something that is described in the postconditions.