Why do contracts have an account? I mean, their code is entered to the blockchain and their balance can be computed by previous transactions, so why is there an account of it?
As you pointed yourself, ethereum contracts have balance, just as regular user accounts (Externally Owned Accounts), so they can store, receive and transfer ether. That fact alone indicates that they need to be an account and not a transaction. Accounts are for storing ether and in case of contract accounts data and logic too, whereas transactions are about sending value or data from one account to another.
You can read more about Ethereum network architecture here: http://ethdocs.org/en/latest/contracts-and-transactions/account-types-gas-and-transactions.html