Clases particulares de Fundamentos de Programación
¿Estás con Programación I, Fundamentos de Programación o Introducción a la Programación, en Python, Java o C++? Dime qué asignaturas cursas y te diré si puedo ayudarte. Sin permanencia, y con una clase de prueba gratuita.
Si tu asignatura de programación es en R, como pasa a menudo en ADE, Economía o Estadística, mira R y RStudio.
Qué asignaturas son
Esta página es para las asignaturas que se llaman así, o parecido:
- Programación
- Programación I
- Programación II
- Fundamentos de Programación
- Fundamentos de Programación y Algoritmia
- Introducción a la Programación
- Iniciación a la Programación
- Programación Orientada a Objetos
La tienen en primero de Ingeniería Informática y del Software, Ciencia de Datos, Estadística, Matemáticas, Ingeniería Matemática, Telecomunicación, Geomática y Ciberseguridad, entre otros.
Cómo trabajamos
Trabajamos sobre tu material: los ejercicios, los apuntes y los exámenes de otros años de tu asignatura. El material puede estar en cualquier idioma; la clase es en castellano.
Escribimos el código juntos y lo ejecutamos en el entorno que use tu asignatura: muchas veces Jupyter, y en Java, IntelliJ o NetBeans. Cuando algo no se entiende en la pantalla, como una recursión o el recorrido de una matriz, lo dibujo en la pizarra.
Puedes venir a clases sueltas para un tema concreto o seguir todo el curso, y llevar varias asignaturas a la vez. Si no has programado nunca, partimos de cero. Y si se acerca el examen y me lo pides, hacemos una preparación intensiva con exámenes anteriores.
En qué trabajamos más
- Primeros pasos: variables y tipos, entrada y salida, condicionales (
if,elif,else) y buclesforywhile. - Funciones: parámetros y
return, y la diferencia entre una función que devuelve una lista nueva y un procedimiento que modifica la que recibe. - Listas, cadenas y matrices como listas de listas: traspuesta, suma, producto y posiciones vecinas.
- Recursividad: factorial, potencias, suma y máximo de una lista, y el determinante por adjuntos.
- Búsqueda y ordenación, y lectura y escritura de ficheros.
- Programación II y orientación a objetos: clases, objetos y constructores, herencia (
extends,super,@Override), excepciones, y pilas, colas y listas enlazadas. - Lenguajes: Python, en scripts y en Jupyter, y Java. También C++ en primero.
Si tu asignatura de informática es de una ingeniería o de un grado de ciencias, con MATLAB o C, mira Informática para ingenierías y ciencias.
Errores típicos
- Olvidar el `return` en una función recursiva. En Python la función devuelve
None, y el error salta una llamada más arriba, lejos de donde está. - Un caso base que no cubre todos los casos: la lista vacía, o un exponente negativo en una potencia que solo para en n = 1. El resultado es una recursión infinita o un
IndexError. - Modificar la lista que se recibe cuando había que devolver una nueva, o al revés: dos nombres para la misma lista, y un cambio que aparece donde no se esperaba.
- Confundir filas y columnas (
M[i][j]frente aM[j][i]) o salirse de rango conrange(len(...)). - En Jupyter, ejecutar las celdas en desorden. Una variable de una celda borrada sigue existiendo hasta que se reinicia el núcleo, y el cuaderno funciona en tu ordenador pero no al ejecutarlo de arriba abajo.
- En Java, comparar cadenas con `==` en vez de con
equals, o redefinir un método en la subclase con otra firma y sin@Override, de modo que en realidad no se redefine nada.
Un ejemplo: recursividad en Python
Sumar los elementos de una lista sin bucles: la función se llama a sí misma con una lista cada vez más corta. Es un ejemplo en Python.
def suma(lista):
"""Suma los elementos de una lista sin usar bucles.
suma([4, 1, 7]) = 4 + suma([1, 7])
= 4 + 1 + suma([7])
= 4 + 1 + 7 + suma([])
= 4 + 1 + 7 + 0
"""
if not lista: # caso base: la lista vacía suma 0
return 0
return lista[0] + suma(lista[1:]) # el primero más la suma del resto
print(suma([4, 1, 7])) # 12
print(suma([])) # 0El caso base es la lista vacía, que suma 0. En cualquier otro caso, la suma es el primer elemento más la suma del resto, lista[1:]. El comentario de la función muestra cómo se encadenan las llamadas hasta llegar al caso base.
Otro ejemplo: herencia en Java
Una cuenta con descubierto es una cuenta que puede quedar en negativo hasta un límite: hereda de la cuenta y redefine cómo se retira el dinero. Es un ejemplo en Java, con cada clase en su fichero.
public class Cuenta {
protected double saldo;
public Cuenta(double saldoInicial) {
saldo = saldoInicial;
}
public boolean retirar(double cantidad) {
if (cantidad > saldo) {
return false; // no hay dinero suficiente
}
saldo -= cantidad;
return true;
}
}
public class CuentaConDescubierto extends Cuenta {
private double limite; // cuánto puede quedar en negativo
public CuentaConDescubierto(double saldoInicial, double limite) {
super(saldoInicial); // la parte de Cuenta la construye Cuenta
this.limite = limite;
}
@Override
public boolean retirar(double cantidad) {
if (cantidad > saldo + limite) {
return false;
}
saldo -= cantidad;
return true;
}
}CuentaConDescubierto hereda saldo y el resto de Cuenta, y solo cambia lo que es distinto: la condición para retirar. El constructor llama primero a super(...) para que Cuenta inicialice su parte, y @Override hace que el compilador compruebe que de verdad se está redefiniendo retirar. Con 100 € de saldo y 50 € de límite, retirar 120 € deja la cuenta en −20 €.
Opiniones de alumnos de programación
Son reseñas de mi perfil de ClassGap, una plataforma de clases particulares: las ponen allí, sin que yo las controle, y las he clasificado por área según la asignatura de cada una.
Cargando opiniones…
Preguntas frecuentes
- ¿En qué lenguaje son las clases de programación?
- En el de tu asignatura: sobre todo Python y Java, y también C++. Si tu asignatura es en R, mira R y RStudio.
- ¿Qué programas necesito para las clases?
- Los que use tu asignatura. Con Python suele ser Jupyter o un editor como VS Code; con Java, IntelliJ o NetBeans. Si aún no los tienes instalados, lo hacemos juntos en la primera clase.
- No he programado nunca. ¿Puedo empezar contigo?
- Sí. Mucha gente llega a Programación I sin haber escrito una línea de código. Empezamos por lo básico, con ejemplos pequeños, y vamos subiendo hasta los ejercicios de tu asignatura.
- Tengo Programación II, con clases, herencia y listas enlazadas. ¿También?
- Sí: clases y objetos, herencia y redefinición de métodos, excepciones, y pilas, colas y listas enlazadas, en Java o en Python.
- ¿Me ayudas con mis prácticas y entregas?
- Sí. Vemos juntos qué te piden, cómo plantearlo y dónde te atascas, y reviso lo que vayas haciendo.