When writing a program you can encounter a wide range of errors.
Syntax – you could simply forget a bracket or a colon in a line of code
Semantic – you could declare the wrong variable type (eg integer instead of string)
Logic – your program may output the wrong thing because the logic is incorrect. You may have multiplied instead of divided or used > instead of <.
Linking
Your program may want to use a function from a subprogram in the library (like random numbers or square root), but if it is not linked properly then it will not work.
Runtime/ Execution – these are errors that are only detected when the program is executed. It could be that data is deleted even though it is required later in the program.
Rounding – If 7.4 is rounded down to 7, any calculations using this will be significantly out.
Truncations – similarly if 4.873 is truncated to 4, any calculations using this value will be significantly incorrect.