Functions are named blocks of code that perform a specific task and return a result. They can take arguments and have a return data type. Procedures perform tasks but do not return results. There are two types of procedures: general procedures for specific purposes and event procedures associated with object events. Functions and procedures are called with or without the CALL keyword and can pass arguments by reference or by value.