The Confusion about Smart Contracts

Dear guys.

Can I only manually increase the value of a “ApplicationArgs” parameter each time when I write a value to a smart contract? For example
txn ApplicationArgs 1 —— txn ApplicationArgs 2

Is there a more automatic and convenient way to do this?

Smart contract state can only change by making a transaction that calls the smart contract/application.

The smart contract can increment the state every time it is called, if that is what you want (instead of specifying the new value as argument).
But an application call transaction must be made.

Thanks for your help, fabrice.