programming: principles and practice using c++