Uploaded by Nahuel Rivero

RESUMEN ALGORITMO

advertisement
¿Qué es un Problema?
Planteamiento de una situación cuya respuesta desconocida debe obtenerse a través de métodos científicos.
En general se habla de un problema, cuando se plantea una situación cuya solución no es evidente, representa un
obstáculo.
¿Cuáles son los componentes de un Problema?
 Meta: lo que se desea lograr.
 Datos: información disponible para comenzar a analizar la situación problemática. Esto es, el conjunto de
elementos que representa el conocimiento relacionado con el problema.
 Restricciones: factores que limitan la vía para llegar a la solución.
 Métodos: se refieren a los procedimientos utilizados para resolver el problema.
Etapas para resolución de problemas usando como herramienta la computadora.
- Elemento humano: llamado programador.
- Elemento lógico: Elemento lógico: llamado Software.
- Elemento físico: llamado Hardware.
Acciones básicas de una computadora.
1. Reconocer distintos tipos de datos
2. Almacenar los datos en memoria.
3. Realizar operaciones aritméticas, relacionales y lógicas, mediante un subsistema conocido como Unidad AritméticoLógica (UAL).
4. Reconocer y ejecutar acciones simples y estructuras lógicas de control.
Resolución de Problemas:
Etapas resolución de problemas utilizando computadoras:
- Análisis del problema: Su objetivo ayudar a la comprensión del problema, a comprender ¿qué se debe hacer?
- Diseño del Algoritmo: Su objetivo es determinar ¿cómo se debe hacer? Permite indicar cómo el algoritmo realizará la
tarea.
- Codificación. Construcción del programa: Se traduce el algoritmo a un lenguaje de programación para que pueda ser
interpretado y ejecutado por una computadora.
- Compilación y ejecución: Se traduce el algoritmo a un lenguaje de programación para que pueda ser interpretado y
ejecutado por una computadora.
- Validación: Permite comprobar la solución obtenida.
- Documentación: Se registra lo que se realiza durante todo el proceso, y en cada una de las distintas etapas.
 Etapa 1: (Análisis del Problema)
Se determina ¿qué se debe hacer?. Para poder definir bien un problema es conveniente identificar las especificaciones
de entrada y salida del problema.
 Etapa 2: (Diseño del Algoritmo)
Se determina ¿qué hacer?, en la etapa de diseño se debe determinar ¿cómo se debe hacer? El procedimiento elegido
para la solución se debe expresar como una secuencia ordenada de acciones, que el procesador deberá ejecutar para
obtener los resultados pretendidos. Esta secuencia de acciones expresadas en un lenguaje simbólico se conoce con el
nombre de Algoritmo.
 Etapa 3: (Codificación. Construcción del Programa)
Debe traducirse a un lenguaje de programación para que pueda ser interpretado por la computadora, que se conoce
como programa fuente. El proceso de traducción del algoritmo a un lenguaje de programación se conoce como
codificación.
 Etapa 4: (Compilación y ejecución)
Si el editor de lenguaje detecta errores en el código, ya que el programador no respeto la sintaxis del lenguaje, el
compilador los detecta y los muestra mediante un mensaje, una vez solucionados los errores se creara el programa
ejecutable.
 Etapa 5: (Validación)
Permite comprobar que un programa resuelve correctamente el problema para el que fue diseñado.
Métodos de validación se pueden clasificar en:
-Validación mediante pruebas: consiste en ejecutar el programa con lotes de prueba para comprobar si los resultados
obtenidos coinciden con los esperados.
-Validación por verificación: consiste en demostrar formalmente que el programa es correcto. Se realiza el análisis sin
ejecutar el programa, con lo cual se asegura que el programa es válido para cualquier valor de los datos.
 Etapa 6: (Documentación)
Consiste en ir registrando todo el proceso desde el análisis hasta la validación, fundamental mente agregando al
algoritmo y al programa construido, los comentarios que faciliten comprensión de lo que hace cada acción.
Concepto de Algoritmo
Es un conjunto ordenado y finito de pasos orientados a la resolución de un problema de un modo entendible para el ser
humano pero que no puede ser ejecutado por la computadora.
Utiliza 2 tipos de notación:


Diagrama de flujo.
Pseudocódigo.
Sus propiedades son:



Precisión: Cada acción debe tener un significado preciso.
Finitud: Debe ejecutarse con una cantidad finita de pasos.
Efectividad: Un algoritmo es efectivo si sus acciones conducen al resultado buscado.
Estructura de un Algoritmo:
 Cabecera: se escribe el nombre del algoritmo.
 Cuerpo: consta de las declaraciones de variables (se
especifican los objetos que va a utilizar el algoritmo) y las
acciones (se describen las instrucciones necesarias para resolver
el problema planteado).
Datos
Un dato es la representación de un elemento u objeto de la realidad, de tal manera que pueda ser procesado por la
computadora. Tiene asociado un Nombre, un Valor, un Tipo y una dirección de memoria de la computadora.
Tipos de datos
Simples: contiene un valor que siempre se trabaja como una unidad, es indivisible. Pueden ser:



Numéricos: representan cantidades y con ellos se pueden realizar todas las operaciones aritméticas y relaciones
aplicables a los números. Pueden ser de tipo entero (valores enteros, ej edad) y real (punto decimal, ej notas).
Lógico o Booleano: representan valores Falso o Verdadero
Carácter: es aquella que puede almacenar un carácter del conjunto de caracteres que maneja el sistema
operativo de la computadora. La mayoría de las computadoras utiliza el código ASCII.
Estructurados: cuando el dato está formado por una colección de otros datos.

Cadena: puede tomar como valor una cadena de caracteres, esto es, una secuencia finita de caracteres
encerrada entre comillas “ ”.
Variables y Constantes
Una variable es una posición de memoria que se referencia con un nombre y donde se almacena el valor que puede
cambiar durante la ejecución del programa.
Una constante es el nombre simbólico de una posición de memoria donde se almacena el valor de un dato que no puede
cambiar durante la ejecución del programa.
Cálculos
Expresiones
Es la descripción formal de un cálculo, que al ser evaluado tiene un único resultado. Se construyen con la combinación
de operandos (son constantes, variables u otras expresiones que se calculan) y operadores (indican el tipo de cálculo a
realizar). Pueden ser:

Aritméticas: descripción de un cálculo matemático donde los operandos son variables o constantes numéricas,
los operadores son aritméticos y el resultado es un número (+ - * /).

Relacionales: describen formalmente predicados lógicos que al asignar valores a las variables, se convierten en
proposiciones verdaderas o falsas.

Lógicas: es la descripción formal de un predicado lógico compuesto con conectores lógicos, que tiene como
resultado un valor lógico, verdadero o falso.
*Los operadores son los conectores lógicos: conjunción (y), disyunción (o) y negación (no). *Los operandos son
predicados lógicos, estos predicados pueden ser: expresiones relacionales, variables o constantes de tipo lógico.
*El resultado es un valor de tipo lógico (verdadero o falso).
Acciones
Son cada uno de los pasos que la computadora ejecuta para resolver el problema. La acción tiene la característica de
modificar los datos que intervienen en el algoritmo.
Acciones simples: es un paso que es entendido en forma inmediata por el procesador y no puede ser descompuesto en
otros pasos más sencillos.



Lectura: permite almacenar en una variable, un valor especificado desde un dispositivo externo, como el
teclado, etc. Es decir, que la lectura permite introducir valores.
Los pasos que realiza una computadora para ejecutar la acción Leer son:
1. Obtener un valor a través de un dispositivo de entrada.
2. Una vez que la UCP tiene el valor, lo almacena en la dirección de memoria referenciada por el <nombre de
variable> que corresponda.
Asignación: permite almacenar en una variable un valor que proviene de una constante, de otra variable o del
resultado de una expresión.
Los pasos que realiza una computadora para ejecutar la acción Asignación son:
1. Obtener el <valor> especificado, en caso de ser el contenido de otra variable, la UCP va a su dirección de
memoria y lo copia.
2. Una vez que la UCP tiene el <valor> va a la dirección de memoria vinculado al <nombredevariable> y lo guarda
en esa variable.
Escritura: permite comunicar al exterior valores almacenados en la memoria de la computadora, a través de un
dispositivo periférico como pantalla o impresora.
Los pasos que realiza una computadora para ejecutar la acción Escribir son:
1. Obtener el argumento, en caso de ser el contenido de otra variable, la UCP va a su dirección de memoria y lo
copia, si es una expresión obtiene su resultado.
2. Muestra el argumento en el dispositivo externo, por ejemplo una pantalla.
Acciones estructuradas: compuesto por otras acciones simples.
Estructura de algoritmos con subprogramas
Se debe comenzar construyendo el algoritmo principal donde se invocan los subprogramas con sus respectivas entradas
y salidas. La estructura de un algoritmo contiene primero la definición de los subprogramas y luego el algoritmo
principal.
En la etapa de compilación y ejecución, al invocar un subprograma en el algoritmo principal, se ejecutan las acciones que
forman parte de él. Una vez que finaliza la ejecución del subprograma, el control se devuelve al algoritmo principal o al
subprograma que lo llamó.
Invocación de subprogramas
- Definir el subprograma: El subprograma debe ser definido antes de ser invocado. Debe incluir el ambiente, donde se
declaran las variables, y las acciones que necesita para realizar la tarea. Consta de 2 partes.
 Encabezado: es la primera línea del subprograma, se especifica el tipo de retorno, seguido del nombre del
subprograma, y un conjunto de parámetros, separados por comas y encerrados entre paréntesis. Cada
argumento debe ir precedido por su declaración de tipo. Si el subprograma no devuelve resultado, se coloca la
palabra void (carente de resultado). Formato: <tipo de retorno><identificador>(tipo1 arg1, tipo2 arg2).
Arg1 y arg2 son los parámetros formales, identifica los datos que recibe el subprograma. Al momento de invocar
el subprograma, los datos que se envían al subprograma se llaman parámetros actuales.
 Cuerpo del subprograma: está delimitado por las palabras Comienzo y Fin y constituido por el Ambiente
(declaración de variables) y las Acciones.
- Llamar el subprograma: produce la ejecución de las acciones del cuerpo del mismo, hasta que encuentra la acción
retorna.
 Si NO devuelve resultado: la invocación se realiza colocando el nombre seguido de la lista de parámetros
encerrados entre paréntesis y separados por coma. Si no necesita parámetros se colocan parentesis vacios.
 Si devuelve resultado:
o Como parte de la acción escribir: Escribir <identificador del subprograma> (<arg1,arg2>).
o En una asignación: <identificadorVariable> = <identificador del subprograma> (<arg1,arg2>).
o Como parte de una expresión: f = superficie (largoancho) + 5
Seguimiento de Algoritmos
Se realiza utilizando una tabla en la que se muestra los valores que toman las distintas variables declaradas.
La tabla de seguimiento muestra el valor que cada variable tiene en memoria, este valor va cambiando a medida que se
ejecutan acciones. La columna Salida muestra lo que indican las acciones de escritura.
Seguimiento de Algoritmos con Subprogramas.
Se debe representar las variables y los parámetros en cuadros diferentes según sean del algoritmo principal o de los
subprogramas.
Estructuras de Control
 Secuencia: representada por un conjunto de acciones que se ejecutan en forma consecutiva, una sola vez. El
orden de ejecución coincide con el orden físico en que se representan las acciones.
 Selección o alternativa: provoca la ejecución de una acción entre acciones alternativas.
o Simple: No es necesario realizar acciones cuando la condición es falsa.
El seudocódigo para esta estructura es:
Si (<condición>)
Entonces <acción simple o estructurada>
Finsi
o
Doble: El seudocódigo para esta estructura es:
Si (<condición>)
Entonces
<acción simple o estructurada>
Sino
<acción simple o estructurada>
Finsi
o
Condición es una variable lógica, expresión
lógica o relacional, cuyo valor puede ser
verdadero o falso. Las palabras Si, Entonces,
Sino y FinSi, se llaman delimitadores.
Múltiple: e es el nombre de expresión de control y puede ser una variable o expresión. Valor 1, valor 2 son
los valores (etiquetas) que puede tomar e. De otro modo, valor distinto a la secuencia de posibles valores
previstos que puede tomar la variable e.
 Iteración: se utilizan cuando se debe repetir la ejecución de una o más acciones.
o Para/FinPara: el número de veces que se ejecuta el cuerpo del ciclo es un número fijo conocido con
anticipación. El cuerpo de este ciclo puede tener acciones simples o estructuradas.
v variable de control
vi variable que contiene el valor inicial de la variable v
vf variable que contiene el valor final de la variable v
La primera vez que se ejecuta la estructura Para-FinPara, v toma el valor vi y compara que no supere el valor
de vf. Si el resultado es verdadero se ejecutan las acciones del cuerpo del ciclo que están entre Para y
FinPara. Después, incrementa en 1 el valor de v, y se vuelve a controlar que sea menor o igual a vf. Se repite
hasta que el valor de v supere el valor de vf.
o
Mientras/FinMientras: el número de veces que se ejecuta el cuerpo del ciclo depende del valor de verdad de
una condición que se evalúa al comienzo del ciclo. La condición es una expresión relacional o lógica. No se
conoce con anticipación el número de veces que se ejecutará el ciclo.
Las acciones del cuerpo del ciclo se repiten mientras la
condición es verdadera. Como en la condición
participan variables cuyos valores cambian durante la
ejecución del cuerpo del ciclo, en algún momento la
condición es falsa, sale del ciclo y se continúa con la
acción que sigue al FinMientras
o
Hacer/Mientras: el número de veces que se ejecuta el conjunto de acciones depende del valor de verdad de
una condición que es evaluada al final del ciclo.
 Bucles anidados: por cada iteración del bucle exterior, se ejecuta completamente el interno. Se continúa igual
hasta que el bucle externo completa las acciones.
Manipulación de datos

Contadores: Un contador permite calcular la frecuencia de un evento, se necesita una variable entera para
representarlo, se debe inicializar con el valor 0 (cero) para luego ir incrementando en 1 (uno) cada vez que
ocurre el evento que se desea contar.
entero conta
conta=0
conta = conta + 1

// declaración de variable contador.
// inicialización del contador.
//incrementa el valor del contador en una unidad, el resultado lo asigna nuevamente a la
variable.
Acumulador: Un acumulador es una variable numérica cuyo valor se va a ir incrementando en un valor que
puede no ser fijo. En general se lo utiliza para ir almacenando sumas sucesivas de distintas iteraciones de un
ciclo. De ahí que el acumulador se debe inicializar en 0 (cero).
entero v,acum
acum=0
acum = acum +v
// declaración de variable
// inicialización del acumulador antes del ciclo
// incrementa el valor del acumulador en el valor de la variable V dentro del ciclo

Máximos: Se requiere definir una variable del mismo tipo de los datos, la que puede identificarse con el nombre
max. Esta variable debe ser inicializada con un valor pequeño, elegido de tal manera de asegurar que cualquier
otro valor que se ingrese será superior a él. El cálculo consiste en un proceso iterativo en el que cada valor del
conjunto es comparado con el de la variable max, sustituyéndolo en caso de ser superior, de esta manera al
finalizar el bucle, en la variable max queda almacenado el mayor valor procesado.

Mínimos: El procedimiento para el cálculo del mínimo sigue el mismo criterio, solamente que el valor con que se
inicializa la variable que contendrá el mínimo, deberá ser lo suficientemente grande de manera de asegurar que
es mayor que cualquiera de los datos a procesar. El valor de esta variable se actualizará cada vez que el número
procesado sea menor, de manera que al finalizar el bucle, la variable tendrá el menor de todos los valores.

Bandera lógica: Hay situaciones en que solamente se quiere saber si un determinado evento sucedió.
El trabajo con bandera tiene tres momentos:
1. Se inicializa una variable lógica, que será utilizada como marca, previo al comenzar el proceso iterativo para
analizar la ocurrencia del evento.
2. Durante la iteración, que permite recorrer todos los datos, cada vez que sucede el evento se cambia el estado de
la marca.
3. Terminado el proceso iterativo, se debe analizar en qué estado quedó la marca, la cual señala si el evento
sucedió o no.
Download