Está en la página 1de 13

LENGUAJES DE PROGRAMACIÓN

Tarea Semestral

Agosto de 2020
INTRODUCCIÓN
“Python” es el lenguaje de programación enseñado en la asignatura de ‘Lenguajes
de Programación’, es un lenguaje accesible, en el sentido de que no requiere
conocimientos previos de programación más que lo instruido en el desarrollo de las
clases. Además, Python destaca por la cantidad de ‘bibliotecas’ que contiene y las
funciones integradas que facilitan su uso para quienes estén interesados en
aprender a utilizar esta herramienta.
A continuación, se dará a conocer detalladamente lo necesario para la realización
de un programa propuesto, a fin de lograr llevar a cabo esta actividad ha sido
indispensable recurrir a algunas de estas funciones y bibliotecas (en las que más
adelante se profundizará), puesto que de este modo ha sido posible construir el
código que da solución a la problemática enunciada por el docente.
El objetivo del código desarrollado es calcular el área de una región limitada por un
conjunto de rectas únicamente ingresando las coordenadas de dos puntos de cada
una de estas y las rectas que delimitan el área a calcular.
El trabajar en este código permite que cada uno de los alumnos involucrados se
enfrente al desafío que significa programar, el cual por añadidura les beneficia dado
que para conseguir hallar una solución es de suma importancia el pensamiento
lógico y crítico, en vista de que la secuencia de comandos debe tener coherencia.
Por otro lado, más adelante se demostrará el aprendizaje de las alumnas, mediante
imágenes y también se expondrá el cumplimento de los objetivos.

Agosto de 2020
ANÁLISIS
Al leer comprensivamente el enunciado, se establece que el objetivo es realizar un
programa capaz de calcular el área de una figura delimitada por una recta mayor y
menor, formada por rectas únicamente recibiendo la cantidad de casos a evaluar,
el número de rectas en cada caso y las coordenadas de dos puntos de cada una de
las rectas.
Para esto es necesario que a partir de un archivo se extraiga el número de casos
de prueba denominados ‘T’, seguido de la cantidad de rectas a evaluar, llamado ‘N’
y a continuación dos pares de coordenadas x e y que definen cada recta.
Una vez obtenidos estos datos se considera que es necesario conocer la ecuación
de la recta de cada una de estas y por lo tanto se calcula la pendiente con la fórmula
𝑦 −𝑦
conocida 𝑚 = 𝑥2−𝑥1 , para cada recta, ésta pendiente se almacena en una lista
2 1
llamada ‘M’ además el término libre ‘b’ se obtiene de la ecuación 𝑏 = 𝑦 − 𝑚𝑥 y es
posteriormente almacenado en una lista llamada ‘B’ de tal modo que en cada
posición de las listas M y B se ubiquen los elementos correspondientes a las rectas,
es decir, el elemento B[0] y M[0] serían los correspondientes a la recta 1 y así
sucesivamente con todas las rectas.
A continuación, se debe indicar el eje en el que se encuentran los límites del área a
calcular, ya sea x o y, posteriormente el programa debe leer los valores de los límites
y proceder a utilizarlos.
En seguida, consideraremos los valores que delimitan el área se encuentran en el
eje de las abscisas.
Es de suma importancia obtener estos datos anteriormente mencionados, dado que
son necesarios para encontrar los puntos de intersección generados entre las
rectas, para esto se define un contador que aumenta en 0.001 a lo largo del eje
seleccionado, esto para una mayor precisión, es decir, el contador iniciaba en el
límite inferior y recorría el eje avanzando 0.001 hasta llegara al límite superior.
La utilidad que tiene este contador para encontrar los puntos de intersección es que
a medida que aumenta, se evalúan los punto en las rectas con su pendiente y
término independiente que corresponde y comparar con las otras rectas mediante
el uso de dos ciclos while hasta encontrar una coincidencia con alguna de ellas,
esto es, el caso en que ‘y’ es igual, y se procede a almacenar ese valor de x en una
nueva lista denominada “Puntos x” y el valor de la ordenada en una lista llamada
“Puntos y”.
A la lista “Puntos x” se le agregan los límites laterales y más tarde son ordenados,
son los puntos guardados en esta lista los que delimitan subregiones dentro de la

Agosto de 2020
región a calcular. Una vez obtenidos los puntos de intersección, es fundamental
diferenciar las pendientes mayores de las menores, teniendo en mente que luego
de cada punto de intersección cambia la pendiente.
Con el fin de cumplir con el paso siguiente, se estima conveniente calcular el área
entre la pendiente superior e inferior de cada subregión, para esto se debe realizar
el siguiente procedimiento: se escogen dos puntos de intersección, se calcula el
punto medio entre ellos y se evalúa en las rectas para obtener el que tenga la mayor
ordenada, eso se realiza con los datos de pendiente y término independiente y
guardando estos valores de “y” en una lista donde se encontrará la mayor y su m y
b correspondientes, esto se realiza en un ciclo para repetir el proceso con todos los
puntos de intersección.
Finalmente, ya teniendo la recta mayor y la recta menor por subregiones, se calcula
el área de cada una utilizando la función integrar, en la cual se integra la ecuación
resultante de la resta entre la recta mayor y la menor, evaluada en los límites de
cada subregión. Para concluir se suma cada uno de los resultados de las “subáreas”
para entregar el área total de la región formada.

ESTRUCTURA DE DATOS
Durante la elaboración de todo el programa, se utilizaron diferentes funciones, listas
y variables, las cuales se definirán y explicarán a continuación.
En primer lugar, el programa pide un valor de T, que se realiza con un input, o en
este caso leyendo el archivo de “datosTarea.dat”.
Contador p: es utilizado para llevar la cuenta de los casos T veces, cada vez que se
ingrese un valor equivocado o fuera de rango este contador indicará el fin de cada
caso y, por ende, cuantos casos han concluido.
Función Validar: Su propósito es que el programa solo permita el ingreso de un valor
N (cantidad de rectas) mayor que 2 y menor que 100000 para seguir avanzando,
por el contrario, el programa deberá responder con return False, se cierra el caso y
procede a ingresar otro N hasta que sea una cantidad correcta.
Función puntos (x1, y1, x2, y2): Análogamente a la función anterior, en este caso,
solo se permitirá ingresar coordenadas que sean menores que 1000 y mayores que
-1000, si los valores son correctos se seguirá el programa, de no ser así se arroja
return False, termina el caso y volverá a la función anterior.
Función límites (p0, p1): Solamente permite que el programa reciba limites menores
que 1000 y mayores que -1000, en el caso contrario esta función retornará False lo
que no permitirá que el programa se siga desarrollando, cerrara el caso y volverá a

Agosto de 2020
pedir el N para repetir el proceso, y en caso de que estén bien, el programa seguirá
funcionando.
Lista M: Es aquella que almacena todas las pendientes calculadas de cada recta
que se ingresa al programa.
Lista B: Es aquella que almacena todos los coeficientes de posición calculados de
las rectas ingresadas.
Procedimiento para calcular puntos de intersección: Se busca todos los x posibles
entre los limites ingresados y los reemplaza en 2 ecuaciones de la recta distintas (M
y B), hasta recorrer todas las combinaciones posibles entre las rectas ingresadas,
llamando a la función intersección, en donde se crean las listas puntosx y puntosy,
que con ayuda de ciclos while y los contadores a, o, k, e, busca las rectas que
coincidan en estos puntos. Luego, si se encuentra alguna igualdad en estos
resultados, se crea un punto de intersección entre las rectas ingresadas según la M
y B ingresados. Estos puntos son guardados en una lista puntosx y puntosy.
Lista Mmayor y Mmenor: Son aquellas listas que guardaran las pendientes de cada
una de las rectas mayores y menores respectivamente.
Lista Bmayor y Bmenor: Son aquellas listas que guardaran los coeficientes de
posición de cada una de las rectas mayores y menores respectivamente.
Procedimiento para sacar la recta mayor y menor: Primeramente esta función crea
2 listas de valor y valory, luego toma 2 puntos (el primero y segundo) de las listas
antes creadas con los puntos de intersección, calcula el punto medio de estos para
obtener un valor(x) que será reemplazado en todas las ecuaciones de la recta
teniendo ya la pendiente y coeficiente de posición, calculando así el valor de y que
se guardara en las listas valory y valory1, luego, se ordenara la lista valory, para
tomar el ultimo valor y buscar su posición en la otra lista(valory1, que no está
ordenada) y guardarla, para agregar la pendiente de esa posición en la lista de
Mmayor, y el coeficiente en Bmayor, y así mismo se repite el proceso pero se busca
el la posición del primer valor en la lista valory, para así guardar su posición en la
lista valory1 y agregar la pendiente y coeficiente según esa posición en la lista
Mmenor y Bmenor, y esto se repite para todos los segmentos, es decir, hasta el
último punto de intersección antes del límite.
Función integrar: Lo que hace esta función es primeramente tomar 2 rectas de las
ingresadas, para proceder a construir la ecuación de la recta primeramente de la
recta mayor, multiplicando el x con su pendiente(a) y sumándole el coeficiente de
posición (b), y repitiendo el mismo procedimiento con la recta menor, pero con sus
valores de pendiente(c) y coeficiente de posición (d). Luego de tener ambas
ecuaciones de la recta, calcula un y3 que es la resta de ambas, para así tener el

Agosto de 2020
argumento listo para la integral. Teniendo este, para proceder a integrar se definen
los límites, que serían los puntos de intersección (e,f) que unen ambas rectas que
previamente estaban guardados en la lista puntosx. Para finalizar esta función lo
que hace es la operación de integrar, que es sm.integrate(y3(x),(x,e,f)), donde y3
es el argumento calculado anteriormente en función de x, el x que es para definir
que se integrara respecto a x, y finalmente los limites e,f que terminarían de
completar esta integral en Python. Esta función se repetiría en cada tramo donde
se encontrará un área entre 2 rectas hasta llegar al límite, para poder sumar todos
estos cálculos y lograr calcular el área total que es lo que pide este programa.

Agosto de 2020
ALGORITMOS

1. Validación y ecuación
De la recta.

NO

SI

SI

Agosto de 2020
2. Procedimiento para
buscar puntos de
intersección.

NO

SI

SI

NO

SI
NO

Agosto de 2020
3. Procedimiento para
buscar la recta mayor.

Agosto de 2020
4. Función para INICIO
integrar.

Agosto de 2020
RESULTADOS
1) Como evidencia se adjunta esta imagen que demuestra que el código
funciona perfectamente con los datos entregados por el docente a modo de
prueba, poniendo fin a los casos en cada ocasión que se ingresa un valor
erróneo y cada vez que se calcula el área cumpliendo con su función. Estos
datos fueron obtenidos de un archivo llamado “datosTarea.dat” que el
programa cumplió con leer y dar resultado sin problemas.

2) Como segundo resultado se demuestra el cambio en el área de un polígono


formado por las mismas rectas e iguales limites, pero distintos ejes. Es
posible ver en las imágenes la comprobación de estos resultados en
Geogebra y estos coinciden con los entregados por el programa. Los datos
fueron entregados a través de un archivo “Resultado2.dat”.

Agosto de 2020
3) En último caso el programa se prueba con 4 rectas, dado que en ejemplos
entregados no hay uno con un n=4, entonces se corrobora que el programa
funciona correctamente y con exactitud, comparándolo con Geogebra, aquí
se demuestra.

Agosto de 2020
CONCLUSIÓN
Un lenguaje de la programación es un lenguaje formal en conjunto de símbolos y
códigos que sirven para llevar a cabo tareas, procesos, o programas a través de la
computadora, por lo que hay que traducir nuestros pensamientos o acciones a un
lenguaje de programación de modo que este procesador pueda entenderlo, esto es
lo que se logró aprender durante el desarrollo de la asignatura a lo largo de este
semestre y son esos conocimientos los que utilizan y se ven plasmamos en esta
tarea.
Durante todo el proceso que de realización de esta actividad fue posible aprender
que para programar un problema se necesita primeramente realizar una evaluación
de este para poder construirlo primeramente a través de un algoritmo, conociendo
cada paso a llevar a cabo para lograr la solución final, y teniendo eso, traducir estos
procedimientos al lenguaje de programación a través de funciones o con un orden
determinado, logrando que el trabajo sea más fácil al momento de construir este
programa.
Además, en esta oportunidad se valora cada contenido enseñado, incluso el más
mínimo, ya que cada uno cumple una función y rol importante dentro de la
programación.
Por otro lado, se mantiene un aprendizaje constante en lo que significa trabajar en
grupo y colaborar entre pares, compartiendo el conocimiento para en conjunto llegar
a darle solución a este problema.
Si bien se entendieron muchas cosas y se logró llevar a cabo esta tarea, en
ocasiones se dificultó representar el procedimiento pensado al lenguaje de
programación, lo que conllevó a probar diferentes métodos, cambiar funciones,
modificar o agregar un paso que impedía que el programa operara de forma óptima,
y esto fue más evidente al momento de buscar puntos de intersección, en vista de
que fue complejo encontrar una pronta solución, por lo que, requirió tiempo acertar
con una respuesta a esto y que funcionara por completo. Fuera de eso la
organización del grupo hizo más fácil el cumplimiento de esta tarea, ya que se
cumplieron todos los tiempos propuestos, logrando que no hubiese un retraso en
los avances y se compartieran todas las ideas al reunirse para que la totalidad del
equipo lograse entender y comprender, haciendo favorable el trabajo en equipo para
el aprendizaje individual.
Por consiguiente, se logró el objetivo como grupo, logramos reunir nuestros
conocimientos y desarrollar la tarea semestral de la mejor manera posible, con
esfuerzo y dedicación, se logró ver que el código funcionaba y que el programa al
ser ejecutado alcanzaba el objetivo, el cual era obtener el área de ciertas rectas
ingresadas por el usuario.
En conclusión, esta actividad tuvo como resultado demostrar todos los
conocimientos que se aprendidos en la asignatura comprobando el aprendizaje del
grupo a través de la construcción de este código para resolver el programa dado,
conocimientos que son muy importantes para el futuro profesional, en este caso,
como ingenieros industriales es beneficioso tener.

Agosto de 2020

También podría gustarte