Resumen Capitulo 2 Luis JOYANES AGUILAR
Resumen Capitulo 2 Luis JOYANES AGUILAR
Resumen Capitulo 2 Luis JOYANES AGUILAR
Las dos primer fases conducen a un diseño detallado escrito en forma de algoritmo.
Durante la tercera etapa (codificación) se implementa el algoritmo en un código escrito en
un lenguaje de programación, reflejando las ideas desarrollada en las fases de análisis y
diseño.
Antes de conocer las tareas a realizar en cada fase vamos a considerar el concepto
y significado de la palabra algoritmo, la palabra algoritmo, la palabra algoritmo se
deriva de la traducción al latín Alkhowarizmi, nombre de un matemático árabe
que escribió un tratado sobre manipulación de números y ecuaciones en el siglo
IX, un algoritmo es un método para resolver un problema mediante una serie de
pasos precisos, definidos y finitos.
Un algoritmo debe ser preciso (indicar el orden de realización en cada paso)
Definido (si se sigue dos veces, obtiene el mismo resultado cada vez)
Finito (tiene fin: un número determinado de pasos)
Requisitos:
Resolución de un
problema
Programar un modulo
Comprobar el modulo
Si es necesario, depurar el módulo.
Combinar el módulo con los modulo anteriores.
El proceso que convierte los resultados del análisis del problema en un diseño modular con
refinamiento sucesivos que permitan una posterior traducción a un lenguaje se denomina
diseño de algoritmo.
Diagrama de flujo: es una presentación grafica de un algoritmo, los símbolos utilizados han
sido normalizados por el Instituto Norteamericano de Normalización (ANSI)
Ejemplo;
Terminal Subprograma Entrada/
salida
Decisión Proceso
NO
Conectores
SI
Las palabras reservadas básicas se representarán en letras negritas minúsculas. Estas palabras
son traducción libre de palabras reservadas de lenguajes como C, pascal, etc.
Ejemplo: calcular la paga neta de un trabajador conociendo el numero de horas trabajadas, l
tarifa horaria y la tasa de impuestos.
Algoritmo.
1. Leer horas, tarifa, tasa
2. Calcular pagabruta = horas * tarifa
3. Calcular impuestos =pagabruta * tasa
4. Calcular paganeta = pagabruta – impuestos
5. Visualizar pagabruta, impuestos, paganeta
Algoritmo: se utiliza una variable contadora como un contador genere los sucesivos números
enteros, y suma para almacenar las sumas parciales 1,1+2,1+2+2…
1. Establecer contador a 1
2. Establecer la suma a 0
3. Mientras que contador < = 100 hacer
Sumar contador a suma
Incrementar contador en 1
Fin-mientras
4. Visualizar suma
Para realizar la conversión del algoritmo en programa se deben sustituir las palabras
reservadas en español por sus homónimos en inglés, y las operaciones/instrucciones indicadas
en lenguaje natural expresarlas en el lenguaje de programación correspondiente.
1. /*
2. Este programa escrito en “C” obtiene una tabla de depreciaciones acumuladas y valores reales de cada
año de un determinado producto
3. */
4. #include <stdio.h> void main ()
5. (
6. double coste , depreciacion,
7. Valor_Recueperacion,
8. Valor_actual;
9. Valor_anual;
10. Int Anio, vida_util;
11. Puts (“introduzca coste, valor recuperación y vida útil”);
12. Scanf (“%lf % lf”, % coste, &valor_recuperacion,&vida_util);
13. Puts (“introduzca a;o actual”);
14. Scanf (“%d”, Anio) ;
15. Valor_actual =0;
16. Acumulado = 0;
17. Puts (“ano depreciacion dep. Acumulada “);
18. While (anio <vida útil)
19. (
20. Acumulado = acumulado + depreciación;
21. Valor_actual = alor_actual – depreciación;
22. Prinf (‘’año: %d, depreciacion: %.21f acumulada”.
23. Anio, depreciación,acumulado);
24. Anio = Anio + 1;
25. )
26. )
Documentación; esta puede ser interna y externa. La documentación interna es la que incluye
dentro del código del programa fuente mediante comentarios que ayuda a la compresión del
código. Toda la línea que empiezan con un símbolo /* son comentarios. El programa no lo
necesita y la computadora lo ignora. Esta línea de comentario solo sirve para ayudar a
comprender el programa. El objetivo del programador debe ser escribir códigos sencillos y
limpios.
El lenguaje fuente debe ser traducido a lenguaje máquina, este proceso se realiza con el
compilador y el sistema operativo que se encarga prácticamente de la compilación. Si tras la
compilación se presentan errores (errores de compilación) en el programa fuente, es necesario
volver a editar el programa, corregir los errores y volver a compilarlo, este proceso se realiza
hasta que no se producen errores. Suponiendo que no existe errores en el programa fuente, se
debe instruir al sistema operativo para que realice la fase de montaje o enlace (link), carga, del
programa objeto con la librería del programa compilador. El proceso del montaje produce un
programa ejecutable.
Memoria
EIDCIDE externa
UCP
Editor
de texto
A) Prog: Objeto
Memoria
externa
UCP
Compilador
Prog. editor
Prog. objeto
B)
UCP
Enlace de
programa Prog. objeto
Prog. De carga
C)
Proceso de completo de compilación/ejecución de un programa
Errores e compilación: se producen por un uso incorrectos de las reglas del lenguaje
de programación y suelen ser errores de sintaxis, la computadora no puede
comprender las instrucciones, no se obtendrá el programa objeto y el compilador
imprimirá una lista de todos los errores encontrados durante la compilación
Errores de ejecución. Estos errores se producen por instrucciones que la computadora
puede comprender, pero no ejecutar. Ejemplo típico son: división por cero y raíces
cuadradas de números negativos. En esto caso de detiene la ejecución del programa y
se imprime un mensaje de error.
Errores lógicos. Se produce en la lógica del programa y la fuente del error suele ser el
diseño del algoritmo. Estos errores son lo más difíciles de detectar, ya que el programa
puede funcionar y no producir errores de compilación ni de ejecución, y solo puede
advertir el error por la obtención de resultados incorrectos. En este caso se devolver a
la fase de diseño de algoritmo, cambiar el programa fuente y compilar ejecutar una
vez más.
Cada programa contiene un módulo denominado programa principal, que controla todo lo
que sucede; se transfiere el control a submódulos (posteriormente se denominaran
subprogramas), de modos de que ellos puedan ejecutar sus funciones; sin embargos cada
submódulo devuelve el control al modulo principal cuando se haya completado su tarea. Si
la tarea asignada a cada submódulo es demasiado compleja, este deberá romperse en
otros módulos mas pequeños. El proceso de sucesivo de subdivisión de módulos continua
hasta que cada módulo tenga solamente una tarea específica que ejecutar. Esta tarea
puede ser entrada, salida, manipulación de datos, control de otros módulos o alguna
combinación de estos. Un modulo puede transferir temporalmente (bifurcar) el control de
otro modulo; sin embargo, cada modulo debe eventualmente devolver el control al
modulo del cual se escribe originalmente el control.
Los módulos son independientes en el sentido de que ningún modulo puede tener acceso
directo a cualquier otro modulo excepto el módulo al que llama y sus propios submódulos.
Sin embargo, el resultado producido por un módulo puede ser utilizados por cualquier otro
modulo cuando se transfiera a ellos el control.
Programación modular
Raíz
Modulo 21 Modulo 22