






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Algoritmos y Estructuras de Control
Tipo: Apuntes
1 / 12
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!







Docente a cargo: Mgtr. Escobal Blanco Cesar JTP: Lic. López Quesada Gabriel Alejandro En las Ciencias de la Computación cuando se dice que un problema tiene solución, significa que existe un algoritmo susceptible de implantarse en una computadora, capaz de producir la respuesta correcta para cualquier instancia del problema en cuestión. Concepto de Algoritmos : Un algoritmo es una secuencia de instrucciones para resolver un problema determinado. Más precisamente se puede definir como una secuencia finita de instrucciones, cada una de las cuales tiene un significado preciso y puede ejecutarse con una cantidad finita de esfuerzo en un tiempo finito. En otras palabras, un algoritmo es un método para resolver un problema determinado mediante una serie de pasos precisos, definidos y finitos.
Docente a cargo: Mgtr. Escobal Blanco Cesar JTP: Lic. López Quesada Gabriel Alejandro Los algoritmos se pueden expresar mediante: fórmulas, diagramas de flujo o pseudocódigos. Esta última representación es la más utilizada en lenguajes estructurados, como por ejemplo: C, Pascal, etc. La confección de un algoritmo es algo personal, por lo que para resolver un problema se puede llegar a distintos algoritmos, pero siempre debemos tener en cuenta su aplicación práctica. Para el diseño del algoritmo se utiliza la técnica de diseño descendente (top-down) o modular, la cual consiste en dividir al problema en un conjunto de subproblemas más sencillos y de menor nivel, hasta implementar una solución en la computadora, denominándose “refinamiento sucesivo” al proceso de dividir el problema en cada etapa, expresando cada paso más detalladamente. Cada subproblema es resuelto mediante un módulo o subprograma que tiene un solo punto de entrada y un solo punto de salida. Los módulos pueden ser planteados, codificados, comprobados y depurados independientemente y luego combinados entre sí mediante un programa principal que convoca a los subprogramas que a su vez, pueden llamar a otros subprogramas. De todo esto surge una característica más de los algoritmos; tiene 1 sola entrada y 1 sola salida al programa y a cada estructura o módulo que lo compone. También debemos señalar que el diseño del algoritmo es independiente del lenguaje de programación en el que se va a codificar posteriormente. Un algoritmo, entonces, nace en respuesta a la aparición de un determinado problema. Un algoritmo está compuesto de una serie finita de pasos que convergen en la solución de un problema, pero además estos pasos tienen un orden específico. Entenderemos como problema a cualquier acción o evento que necesite cierto grado de análisis, desde la simpleza de cepillarse los dientes hasta la complejidad del ensamblado de un automóvil. En general, cualquier problema puede ser solucionado utilizando un algoritmo, en este sentido podemos utilizar los algoritmos para resolver problemas de cómputo.
Docente a cargo: Mgtr. Escobal Blanco Cesar JTP: Lic. López Quesada Gabriel Alejandro Algoritmo a grandes rasgos: Analizar los resultados del examen, decidir si se debe aumentar o no la carrera. Se puede refinar como sigue: ✓ Inicializar variables. ✓ Introducir las primeras 10 calificaciones y contar los aprobados y los desaprobados. ✓ Imprimir un resumen de los resultados de exámenes y decidir si se debe continuar o no la carrera.
Pseudocódigo es un lenguaje artificial e informal que ayuda a los programadores a desarrollar algoritmos. El pseudocódigo es similar al lenguaje cotidiano; es cómodo y amable con el usuario, aunque no es realmente un verdadero lenguaje de computadora. No se ejecutan en las computadoras más bien sirven para ayudar al programador a razonar un programa antes de intentar escribirlo en algún lenguaje. Un programa ejecutado en pseudocódigo puede ser fácilmente convertido en un programa en cualquier lenguaje de programación, si es que está bien elaborado. Del ejemplo propuesto, supongamos que la nota para aprobar el examen es de 7. El enunciado en pseudocódigo de esa parte sería: Llevando el ejemplo a pseudocódigo. Se puede refinar más aun el algoritmo: Si calificación >= 7 entonces Mostrar "Aprobado" Si no Mostrar "No Aprobado" Fin Si Imagen 46. Ejemplo de pseudocódigo
Docente a cargo: Mgtr. Escobal Blanco Cesar JTP: Lic. López Quesada Gabriel Alejandro
Un diagrama de flujo es una representación gráfica de un algoritmo o de una parte del mismo. Los diagramas de flujo ayudan en la comprensión de la operación de las estructuras de control ( Si, Mientras ). La ventaja de utilizar un algoritmo es que se lo puede construir independientemente de un lenguaje de programación, pues al momento de llevarlo a código se lo puede hacer en cualquier lenguaje. Dichos diagramas se construyen utilizando ciertos símbolos de uso especial como son rectángulos, diamantes, óvalos, y pequeños círculos, estos símbolos están conectados entre sí por flechas, conocidas como líneas de flujo. A continuación se detallarán estos símbolos. Terminal. Representa el inicio y terminación de un proceso o programa. Inicializar variables. Inicializar los aprobados (aprobados) en 0 Inicializar los desaprobados (desaprobados) en 0 Inicializar el número de estudiantes (estudiantes) en 0 Leer las primeras 10 calificaciones Mientras (while) el contador estudiantes es menor o igual que 10 entonces Introducir el siguiente resultado de examen Si el estudiante aprobó Sumar 1 a aprobados Si no Sumar 1 a desaprobados Fin Si Sumar 1 al contador estudiantes Fin Mientras Imprimir el número de aprobados Imprimir el número de desaprobados Si estudiantes es más 8 entonces Imprimir "Continuar con la carrera". Fin Si Fin Imagen 70. Ejemplo de pseudocódigo
Docente a cargo: Mgtr. Escobal Blanco Cesar JTP: Lic. López Quesada Gabriel Alejandro Salida. Es usado para mostrar datos o resultados. Es usado para mostrar datos o resultados. Conector. Se coloca al principio y fin de una parte de programa, enlaza dos partes cualesquiera de un programa. Línea de flujo o indicador de dirección. Indica el sentido de la ejecución de las operaciones. SI nota >= No Promociona^ Promociona NO SI Imagen 75. Ejemplo del uso del símbolo Salida 2 2 SI nota >= No Promociona^ Promociona NO SI SI nota <= NO SI Imagen 76. Ejemplo del uso del símbolo Conector 2 SI nota >= No Promociona^ Promociona NO SI Imagen 77. Ejemplo del uso del símbolo Línea de Flujo
Docente a cargo: Mgtr. Escobal Blanco Cesar JTP: Lic. López Quesada Gabriel Alejandro Representaremos el correspondiente diagrama de flujo del ejemplo propuesto.
Las estructuras de control de un lenguaje de programación son métodos para especificar el orden en que las instrucciones de un algoritmo se ejecutarán. El orden de ejecución de las sentencias o instrucciones determina el “flujo de control”. Por consiguiente, las estructuras de control son fundamentales en los lenguajes de programación y en los diseños de algoritmos. Las estructuras básicas de control son:
Docente a cargo: Mgtr. Escobal Blanco Cesar JTP: Lic. López Quesada Gabriel Alejandro cronómetro en mano), o calcularse sobre el código contando instrucciones a ejecutar y multiplicando por el tiempo requerido por cada instrucción. Así, una parte de programa como: Siendo t 1 el tiempo que lleve ejecutar la serie "S 1 " de sentencias, y t 2 el que lleve la serie "S 2 ". Prácticamente todos los programas reales incluyen alguna sentencia condicional, haciendo que las sentencias efectivamente ejecutadas dependan de los datos concretos que se le presenten. Esto hace que más que un valor T(N) debamos hablar de un rango de valores: Los extremos son habitualmente conocidos como "caso peor" y "caso mejor". Entre ambos se hallara algún "caso promedio" o más frecuente. Cualquier función T(N) incluye referencias al parámetro N y a una serie de constantes "Ti" que dependen de factores externos al algoritmo como pueden ser la calidad del código generado por el compilador y la velocidad de ejecución de instrucciones del procesador que lo ejecuta. Dado que es fácil cambiar de compilador y que la potencia de los procesadores crece a un ritmo vertiginoso, intentaremos analizar los algoritmos con algún nivel de independencia de estos factores; es decir, buscaremos estimaciones generales ampliamente válidas.
El orden o función matemática (Omega Mayúscula) es una función que muestra la tendencia de variación de la función T(N) ante una variación en el volumen de datos. Es decir, que el orden, es una función matemática que indica tendencia, sin dar un valor exacto.
Docente a cargo: Mgtr. Escobal Blanco Cesar JTP: Lic. López Quesada Gabriel Alejandro
Cuando se resuelve un problema, con frecuencia, se puede disponer de varios algoritmos para solucionarlo. Por lo tanto, debemos tener presente 2 objetivos: