Python aplicado a la Electricidad y Electrónica (11)

En este artículo vamos a ver de que manera podemos hacer repeticiones en nuestro programa y lo usaremos para resolver problemas de asociación de resistencias.

Un problema recurrente en los circuitos eléctricos es resolver la asociación de varias resistencias, tanto en serie como en paralelo. Antes de continuar, vamos a recordar como se calcula la resistencia total o resistencia equivalente, ya sea en un circuito serie o un circuito paralelo:

Resistencia equivalente de varias resistencias conectadas en serie
Resistencia equivalente de varias resistencias conectadas en paralelo

Empecemos con el circuito serie. Si tenemos, por decir, dos resistencias, podemos resolver el problema con un programa bastante sencillo:

Cálculo para dos resistencias en serie

Si tuviéramos tres resistencias deberíamos usar tres instrucciones input e ir agregando para el caso de que tengamos una cantidad mayor de resistencias. Pero es muy poco práctico modificar el programa cada vez que lo queramos usar. La mejor solución sería que el programa funcione para cualquier cantidad de resistencias ¿Cómo lo podemos hacer?

Evidentemente, la cantidad de resistencias será un dato que vamos a ingresar al principio del programa y luego necesitamos tantas instrucciones input como resistencias. Pero no vamos a escribir todos esos input sino que escribiremos un solo y lo repetiremos tantas veces como sea necesario. Para eso usaremos una instrucción nueva de Python, la instrucción for.

La instrucción for se usa para hacer repeticiones. Mas específicamente, para repetir una instrucción o conjunto de instrucciones una cantidad conocida de veces. Luego veremos que hay otra forma de hacer repeticiones sin saber de antemano la cantidad de veces. Hay varias maneras de usar la instrucción for, por ahora veremos cómo usarla en conjunción con otra instrucción, range:

La instrucción for realiza una repetición utilizando a variable como contador de repeticiones, que empieza teniendo el valor inicio hasta el valor fin, incrementándola en incremento en cada repetición. La instrucción for termina con dos puntos “:” y se repiten las instrucciones indentadas a continuación (en este caso, instrucción1 e instrucción2).

¿Complicado? Veamos algunos ejemplos:

En este caso el for hace que la variable “x” vaya tomando los valores de 1 a 10, y la instrucción print muestra su valor:

¿Pero, que paso con el 10? En realidad for no llega hasta el valor indicado como fin, sino uno anterior (sería fin-incremento), por eso en este ejemplo x varía desde 1 hasta 10-1=9. Además, si el incremento es 1, no es necesario especificarlo y alcanza con poner los valores de inicio y fin.

Volviendo a nuestro problema de las resistencias en serie, debemos pedirle al usuario primero que especifique la cantidad de resistencias (que podemos llamar n) y luego hacer una repetición con un for desde 1 hasta n+1 (o desde 0 hasta n) e ir pidiendo los valores de resistencias con un input.

En este código tenemos en la línea 3 el input para la cantidad de resistencias, valor que se guarda en la variable “n”. En la línea 4 el for prepara una repetición desde 1 hasta n+1 y lo que se repite es la instrucción de la línea 5 que pide un valor de resistencia y lo almacena en la variable R.

Probemos este programa con 4 resistencias, de 100, 200, 300 y 400 ohms:

La repetición funciona y podemos ver que el input nos pide la cantidad de resistencias que le indicamos, cuatro en este ejemplo, pero ¿y el resultado, la resistencia equivalente?

Si analizan el programa, verán que tenemos una sola variable llamada “R” para almacenar el valor ingresado de resistencia, lo cual es un problema. En cada repetición se destruye el valor anterior con el que recién se ingresa. No podemos resolver esto con varias variables porque volvemos al problema inicial: ¿cuantas variables hacen falta? ¿Cuatro? ¿Cien?

El problema se resuelve con un truco empleado con frecuencia en programación: el uso de un acumulador. Un acumulador es una variable que va acumulando valores, es decir, va juntando todos los valores que le vamos indicando. En este caso, a través de una suma. Con un acumulador, el código quedaría de la siguiente forma:

En la línea 3, “vaciamos” el acumulador “Req” haciéndolo igual a 0. En la línea 7, “acumulamos” el valor de “R” recién ingresado. La expresión Req=Req+R debe entenderse como “el valor nuevo de Req es igual al valor viejo de Req mas R”. Por ejemplo, en la primera repetición el valor viejo de Req era 0 y si R vale 100, el valor nuevo será 0+100, o sea 100. Para ir viendo cómo varía este acumulador, en la línea 8 se lo imprime. Al terminar la repetición del for, se imprime el total, que es la resistencia equivalente (esta instrucción no se repite porque no está indentada como las otras).

Como se puede ver, con los valores de 100, 200, 300 y 400 ohms, el acumulador primero vale 0+100=100, luego 100+200=300, 300+300=600 y finalmente 600+400=1000, que es el resultado esperado, la suma de los cuatro valores.

Usando las mismas ideas, el problema de n resistencias en paralelo se puede resolver con este programa:

Los animo a que lo copien en el IDLE y comprueben si es cierto.

Les dejo un pequeño desafío: Si las resistencias en paralelo se llaman R1, R2, etc, cómo debemos modificar el programa para que en el input en lugar de R? aparezca R1?, R2?, etc?

Nos vemos en la siguiente entrega de esta serie para seguir aprendiendo a resolver problemas con Python.

2 comentarios en “Python aplicado a la Electricidad y Electrónica (11)”

Responder a etolocka Cancelar la respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: