An elementary approach to tight worst case complexity analysis of gradient based methods