Documentos de Académico
Documentos de Profesional
Documentos de Cultura
(UTESA)
Esta herramienta es muy importante, puesto que sirve para preparar nuestra
cabeza como programadores y nos permite, además, enfrentarnos a
cualquier tipo de problema para plantear una solución óptima. Un algoritmo
es una secuencia ordenada y finita de pasos que permite resolver un
problema.
3. Algoritmo: Definición
OJO escribir 20 y escribir "20" son dos cosas diferentes. Lo que sea texto
siempre se pone entre comillas, los números NO. Entonces escribir 20, es
mostrar en pantalla el número 20 y escribir "20" es mostrar en pantalla 20.
Algoritmos de ordenamiento
Esta técnica es la base de los algoritmos eficientes para casi cualquier tipo
de problema como, por ejemplo, algoritmos de ordenamiento (quicksort,
mergesort, entre muchos otros), multiplicar números grandes (Karatsuba),
análisis sintácticos (análisis sintáctico top-down) y la transformada discreta
de Fourier.
Por otra parte, analizar y diseñar algoritmos de DyV son tareas que lleva
tiempo dominar. Al igual que en la inducción, a veces es necesario sustituir
el problema original por uno más complejo para conseguir realizar la
recursión, y no hay un método sistemático de generalización.
Modelos de concurrencia
Definición
Concurrencia VS Paralelismo
Este puede llegar a ser uno de los puntos que más interés puede llegar a
causar en los programadores y con justa razón, ya que son términos que
pueden llegar a confundirse fácilmente, es por ello que es necesario
aprender a diferenciarlos.
Concurrencia
Sobre la estructura
Paralelismo
Sobre la ejecución
Proceso
Hilo
Caracteristicas:
Diseño:
Un método en un objeto
Un objeto nuevo
Multiprogramación
Multiproceso
Corrutinas
Características:
La necesidad que surge para resolver problemas que requieren tiempo elevado de
cómputo origina lo que hoy se conoce como computación paralela. Mediante el
uso concurrente de varios procesadores se resuelven problemas de manera más
rápida que lo que se puede realizar con un solo procesador.
Comunicación. Las tareas generadas por una partición están propuestas para
ejecutarse concurrentemente pero no pueden, en general, ejecutarse
independientemente. Los cálculos en la ejecución de una tarea normalmente
requerirán de datos asociados con otras tareas.
Los datos deben transferirse entre las tareas y así permitir que los cálculos
procedan. Este flujo de información se especifica en esta fase.
Aglomeración.
Las tareas y las estructuras de comunicación definidas en las dos primeras etapas
del diseño son evaluadas con respecto a los requerimientos de ejecución y costos
de implementación. Si es necesario, las tareas son combinadas en tareas más
grandes para mejorar la ejecución o para reducir los costos de comunicación y
sincronización.
Mapeo. Cada tarea es asignada a un procesador de tal modo que intente satisfacer
las metas de competencia al maximizar la utilización del procesador y minimizar los
costos de comunicación.