Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Nacional
Escuela Superior de Cómputo
Paradigmas de Programación
Ejercicio 1
Planteamiento del problema: Se deberá realizar un programa
para conocer la cantidad de elementos mayores a 10, para ello
se utiliza la librería java.util.List (ubicada en la línea 8 del
programa).
Solución imperativa
Entrada: Una lista de enteros con números aleatorias
Proceso: el ciclo (for), pasa por los valores de la lista verificando si cada
uno de los valores son mayores al número 10, y si es el caso, aumenta en
uno al contador.
Salida: se imprime el número de cantidades superiores a 10 en la lista
Implementación de la solución:
Solución declarativa
Entrada: Una lista de enteros con números aleatorias
Proceso: Se declarará una variable de tipo Long llamada result que
almacenará el resultado de pasar a la lista numeros por .stream().filter(num
-> num>10).count(); que devolverá la cantidad de números superiores a 10
Salida: se imprime la variable result que contiene los números mayores a
10 de la lista.
Implementación de la solución:
Ejercicio 2
Planteamiento del problema: Encontrar una lista de colores si
tenemos el color red, para ello nuevamente se utilizará la
librería java.util.List (ubicada en la línea 8 del programa).
Solución imperativa
Entrada: se recibe una lista de cadenas que contiene diferentes colores.
Proceso: el ciclo (for) nos ayuda a recorrer las posiciones de la lista, un
condicional (if) nos ayuda a buscar si alguna posición de la lista contiene la
palabra “red”, si es verdad, cambia a la declaración de booleana a true, si
no, la mantiene en false.
Salida: Imprime al usuario la expresión booleana resultado del proceso.
Implementación de la solución:
Solución declarativa
Entrada: se recibe una lista de cadenas que contiene diferentes colores.
Proceso: Verifica si el color red está en la lista a través de la función
colores.contains(“red”);
Salida: Imprime al usuario la expresión booleana resultado del proceso.
Implementación de la solución:
Ejercicio 3
Planteamiento del problema: Programar el cálculo del módulo
en base 2
Solución declarativa
Entrada: se recibe un valor entero definido por el usuario
Proceso: Se envía a la función Math.floorMod el valor previamente
introducido por el usuario.
Salida: Se imprime el módulo del valor proporcionado por el usuario
utilizando la función Math.floorMod.
Implementación de la solución:
Solución imperativa
Entrada: se recibe un valor entero definido por el usuario
Proceso: Se calcula el módulo base 2 con el operador, quedando como
número del usuario%2.
Salida: Se imprime el módulo del valor proporcionado por el usuario
Implementación de la solución:
5 1
4 1
14 2
13 3
16 4
12 return 5
Resultados de salida:
Ejercicio 2
Prueba de escritorio de la solución imperativa:
List<String>colores=List.of (“Green”, ”Red”, “Orange”, “Violet”, ”Pink”, ”Gray”)
String Color Boolean i
Green False
Red True
Orange True
Violet True
Pink True
Gray True
Green False
Ejercicio 3
Pruebas de escritorio de la solución imperativa:
Cuando a = 5
Solución Imperativa
a Operación Salida
- a%2 *Introduzca un número*
5 5%2 -
5 1 El modulo base 2 es 1
Resultados de salida:
Cuando a = 16
Solución Imperativa
a Operación Salida
- a%2 *Introduzca un número*
16 16%2 -
16 0 El modulo base 2 es 0
Resultados de salida:
Pruebas de escritorio de la solución declarativa:
Cuando a=5
Solución Declarativa
a Operación Salida
Math.floorMod(x,2)
- Math.floorMod(x,2) *Introduzca un número*
5 Math.floorMod(5,2) -
5 1 El modulo base 2 es 1
Resultados de salida:
Cuando a=16
Solución Declarativa
a Operación Salida
Math.floorMod(x,2)
- Math.floorMod(x,2) *Introduzca un número*
16 Math.floorMod(16,2) -
16 0 El modulo base 2 es 0
Resultados de salida:
Conclusiones:
Para los ejercicios realizados en esta práctica, se han utilizado los
conceptos de programación imperativa y declarativa, los cuáles
son paradigmas de la programación que ya hemos visto en clase.
Programación imperativa:
Es un paradigma de programación que describe la programación
en términos del estado del programa y sentencias que cambian
dicho estado. Los programas imperativos son un conjunto de
instrucciones que le indican al computador cómo realizar una
tarea.
Programación declarativa:
Radica en la descripción del resultado final que se busca. Por lo
tanto, en primera línea se encuentra el “qué” del resultado y no el
“cómo” de los pasos que llevan a la solución, como es el caso en
la programación imperativa. Esto provoca que el código de la
programación declarativa sea más difícil de comprender debido
al alto grado de abstracción, aunque resulta muy corto y preciso.
Identificando los conceptos de los criterios utilizados, se
presentaron complicaciones al momento de programar cada
ejercicio para su programación imperativa, o declarativa. Un
ejemplo es que el operador que se desarrolló en el programa era
considerado por nosotros como “declarativo”.
Se debe seguir practicando y programando en este nuevo lenguaje
para nosotros, ya que no habíamos tenido la oportunidad de
realizar algún tipo de programación y este lenguaje es
desconocido para nosotros. Como solución hemos recurrido a
algunos cursos de Java, videos y/o páginas web en donde se
explica alguna función o fundamento en Java, así como consultar
dudas o reforzar conocimiento de este lenguaje con ayuda de
compañeros de la clase.
Para el ejercicio 3, tuvimos que investigar a detalle para encontrar
la solución de este. Aplicamos el concepto de paradigma
funcional para relacionar la solución del ejercicio con las
alternativas presentes, por lo que se describe a continuación
brevemente que el concepto.
Programación funcional:
La programación funcional es un paradigma declarativo. Nos
enfocaremos en "qué" estamos haciendo y no en "cómo" se está haciendo
que fuera el enfoque imperativo. Esto quiere decir que nosotros
expresaremos nuestra lógica sin describir controles de flujo; no usaremos
ciclos o condicionales.
Aún se deben seguir mejorando aspectos para comenzar a
dominar las herramientas, funciones, librerías y operaciones que
este lenguaje, desconocido para nosotros, nos pueda ofrecer. Nos
hemos quedado satisfechos con el trabajo que hemos realizado
en el desarrollo de esta práctica, sabiendo nuestros errores y el
cómo solucionarlos, así como en mejorar o reforzar los aspectos
o cualidades que hemos adquirido hasta el momento.
Bibliografía
1.- 1&1 IONOS España S.L.U. (2021, 18 febrero). Paradigmas de
programación. IONOS Digitalguide.
https://www.ionos.es/digitalguide/paginas-web/desarrollo-
web/paradigmas-de-programacion/
2.- Corvo, H. S. (2020b, marzo 19). Programación funcional:
características, ejemplos, ventajas, desventajas. Lifeder.
https://www.lifeder.com/programacion-funcional/
3.- Picand, Y. D. D. (2013). Programación imperativa : definición
de Programación imperativa y sinónimos de Programación
imperativa (español). sensagent - 2005-2015.
http://diccionario.sensagent.com/Programaci%C3%B3n%20imper
ativa/es-
es/#:%7E:text=La%20programaci%C3%B3n%20imperativa,%20en%
20contraposici%C3%B3n%20a%20la%20programaci%C3%B3n,le%2
0indican%20al%20computador%20c%C3%B3mo%20realizar%20un
a%20tarea.