Hay un libro muy bueno con explicaciones muy claras y cortas sobre programación estructurada, modelado y programación orientada a objetos:

La verdad es que no se si pueda encontrarse el pdf, te recomendaria que lo buscaras en físico.
Y alguien que quiere aprender, lo hace practicando y los ejemplos y ejercicios de este libro son muy buenos.
Ahora el libro más completo y complejo que te enseña, sin lugar a dudas es este:

Es bestial, pero yo lo recomiendo solo como para referencias, es jodidamente extenso y pesado. No es para novatos, de hecho, va la hora que no he vuelto a chequear por tiempo. Pero es de lejos el mejor libro.
Hay otro buen libro, pero es como el de Deitel, muy complejo.

Yo creo que estos textos son los mejores, ya estoy acostumbrado a estos, y pues bueno, hay que desenpolvarlos y revisarlos de nuevo.
Te diria que lo mejor es sin lugar a dudas, tenerlos en físico.