1 – Conceptos de Programación
Etapa Resultado
Problema
Análisis
Especificaciones
Diseño Reportes
Formatos
Bases de datos
Presentación Programas
Diseño
Aprobación
D
Programación Algoritmo/Flujograma/Seudocódigo E
Codificación–Programa fuente, Prog estructurada S
Compilación – Programa Objeto A
(Errores: Sintaxis, Lógica) R
Enlace – Código ejecutable R
(Aplicación:Interactiva/por lotes/reportes/consultas) O
L
Pruebas L
Unitarias Errores:Ejecución,Especificación O
Funcionales
De conjunto
De esfuerzo
Evaluación
Aplicación aprobada
Documentación
Manual Sistema
Manual Usuario
Manual Operación
Manual Instalación
Capacitación
Usuarios EXPLOTACION
Técnicos
Explotación y
Mantenimiento
Figura 1.2. Ciclo de vida del software
Análisis. Consiste en el estudio detallado del problema con el fin de obtener una
serie de documentos (especificaciones) en los que quede totalmente definido el
proceso de la automatización. Consta principalmente de:
- Análisis previo.
- Análisis funcional.
- Análisis orgánico.
Diseño. Consiste en concebir de modo completo la aplicación en términos de
definir el contenido de los reportes, formatos de pantalla, bases de datos y de los
programas.
Programación. Consiste en la realización de una solución o algoritmo del
problema planteado. Esta solución se diseña utilizando una notación intermedia
(seudo-código) o mediante alguna de las notaciones gráficas como los
ordinogramas; sin tener en cuenta necesariamente el lenguaje de programación
que se vaya a utilizar en la siguiente etapa.
En esta etapa es donde tiene cabida fundamentalmente la actividad del
programador y la utilización de técnicas adecuadas de diseño como la
programación estructurada y el diseño modular.
Codificación. Escritura en un lenguaje de programación de alto nivel de los
algoritmos obtenidos en la etapa anterior.
Edición. En esta fase se transcribe el programa a la computadora, grabándose el
mismo en la memoria auxiliar por medio de un editor de programas o procesador
textos. A este programa almacenado en la computadora y escrito en lenguaje de
alto nivel se le denomina programa fuente.
Compilación. Consiste en obtener el programa objeto, codificado en lenguaje de
máquina a partir del programa fuente. Esta tarea se realiza de forma automática
mediante el compilador del lenguaje, el cual, además de efectuar la traducción,
incluye un análisis sintáctico del programa, detectando posibles errores en su
escritura y posibilitando corrección de los mismos.
Enlace (linkage). En esta fase se incluyen determinadas rutinas internas de la
librería dcl lenguaje que sean necesarias en el programa, y si la aplicación consta
de varios programas o módulos se enlazan todos ellos, obteniéndose lo que
denominamos programa ejecutable.
Prueba de ejecución. El programa ejecutable obtenido en la etapa anterior se
somete a un juego de datos de prueba capaz de detectar los posibles errores en
su funcionamiento.
Errores .- La presencia de errores, surgidos en alguna de las etapas antes
descritas, suele ser inevitable. Por ello, es muy importante saber detectarlos y
corregirlos para asegurar la calidad del producto final. Un programa en
explotación puede contener errores que no han sido detectados y que pueden dar
lugar a consecuencias imprevisibles.
En el momento en que se encuentra un error hay que proceder a estudiar
sus causas y regresar a la etapa correspondiente en que puede ser corregido.
Según la etapa en que se detectan, los errores se clasifican de la siguiente
manera:
• De compilación. También denominados errores sintácticos, son los más
fáciles de encontrar y corregir. Se producen por el incumplimiento de las reglas
1.4.1 Entrada de datos. Está formada por todas las instrucciones que toman los
datos objeto del programa desde un dispositivo externo (unidad de entrada)
depositándolos en la memoria central de la computadora, incluyendo la
depuración o validación de los mismos.
1.4.3 Salida de resultados. La constituyen las instrucciones que hacen que los
datos resultantes del proceso sean proporcionados al exterior por medio de algún
dispositivo (unidad de salida).
Estos tres componentes de todo programa (Figura 1.4) no aparecen
separadamente, sino que lo normal es encontrar las instrucciones pertenecientes
a cada uno de los tres grupos mezcladas entre si, pues en multitud de ocasiones
es necesario realizar operaciones de entrada después de iniciada la fase de
proceso, y asimismo, se proporcionan algunos resultados antes de terminado el
mismo.
Datos Memoria central Resultados
EJEMPLO
Instrucciones en lenguaje ensamblador.
INICIO: ADD B, 1
MOV A, B
CMP A, E
JE FIN
JMP INICIO
FIN: END
Este lenguaje presenta la mayoría de los inconvenientes del lenguaje de
máquina:
Cada modelo de computadora tiene un lenguaje ensamblador propio
diferente del de los demás, por lo cual un programa sólo puede utilizarse en la
máquina para la que se programó.
Hoy día los códigos más utilizados son los de 8 bits, de los cuales los más
conocidos son el EBCDIC (Extended Binary Coded Decimal Interchange Code) y
el ASCII extendido. La Tabla 1.1 representa el código ASCII extendido a 8 bits y la
Tabla 1.2 representa el código EBCDIC.
bits 7654
3210 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0 1 2 3 4 5 6 7 8 9 A B C D E F
0000 0 NUL DLE DS SP & _ { } \ 0
0001 1 SOH DC1 SOS a j ~ A J 1
0010 2 STX DC2 FS SYN b k s B K S 2
0011 3 ETX DC3 c l t C L T 3
0100 4 PF RES BYP PN d m u D M U 4
0101 5 HT NL LF RS e n v E N V 5
0110 6 LC BS EOB UC f o w F O W 6
0111 7 DEL IL ESC EOT g p x G P X 7
1000 8 CAN h q y H Q Y 8
1001 9 RLF EM . \ i r z I R Z 9
1010 A SMM CC SM ¢ ! ' :
1011 B VT . $ , #
1100 C FF IFS DC4 < * % @
1101 D CR IGS ENQ NAK ( ) - '
1110 E SO IRS ACK + ; > =
1111 F SI IUS BEL SUB | ¬ ? "
1 coger plato
2 echar jabon
3 pasar el estropajo por el plato
4 si hay suciedad ir a la instrucción 2
5 si el plato no es azul ir a la instrucción 7
6 ponerlo con los azules
7 si hay más platos ir a la instrucción 1
Carácter finito. "Un algoritmo siempre debe terminar después de un número finito
de pasos".
Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas
antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre.
Estas entradas son tomadas de conjuntos específicos de objetos".
Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación
específica con las entradas".
A partir del carácter finito y de la salida se deduce que ante una misma
situación inicial (o valores de entrada) un algoritmo debe proporcionar siempre el
mismo resultado (o salida), con excepción de los algoritmos probabilistas.
1.10.4.1 Símbolos
Inicio / Fin
Entrada / Salida
Proceso
Decisión
Proceso iterativo
Proceso predefinido
Dirección de flujo
4.- Decidir según moneda. Si al lanzar cae cara ir al cine, caso contrario estudiar
5.- Encontrar el MAYOR de 3 números diferentes (Datos: A, B, C)
6.- Encontrar el MAYOR y el MENOR de 3 números diferentes (Datos: A, B, C)
7.- Hay 3 barras de diferente longitud. Comprobar si forman un triángulo. (Si la
suma de todo par de lados es mayor que el tercero, forman triángulo, caso
contrario no)
8.- Se deben digitar R, G, o B (Rojo, Verde o Azul). Imprimir color Rojo, Verde o
Azul según las letras introducidas especificadas anteriormente)
100
9.- Evaluar la función: Y , donde x es la abscisa e Y es la ordenada. (Si
9 3X
X = 3 no se puede dividir
10.- El cuadrado de un número entero N es la suma de los N primeros números
N
impares (Dato N, N ( 2i 1)
2
i 1
11.- Calcular el factorial de un número N introducido
12.- Calcular el salario e imprimir la boleta de pago de los empleados (Datos:
Nombre, horas trabajadas, salario por hora, fin de archivo)
Pago regular hasta 40 Hs semanales
Sobretiempo: 50% más que el salario normal
Imprimir: Nombre, Hs trabajadas, salario/hora, salario normal, sobretiempo
y pago total
13.- Imprimir el reporte de ventas (Vendedor, Nro de Orden, valor de la venta,
Totales por vendedor, Total compañía) leyendo la información de un archivo
N
N
1 2 3
x x x xn
15.- La función e x se puede calcular con la fórmula e x 1 ....
1! 2! 3! n!
Llamemos NUM = Numerador, DEN = Denominador, TER = término = N/D.
Detener el proceso cuando el término TER sea menor o igual a 0.00005
16.- Cargar un vector de N elementos con valores introducidos al azar, luego
buscar el valor mayor y su ubicación e imprimir la información encontrada
17.- Construir la matriz identidad de N x N
18.- Se dispone de 9 bolas de billar, todas iguales menos una que tiene peso
diferente. En 3 pesadas debemos determinar cual es la diferente además
de saber si es más pesada o más liviana que las demás
19.- Dado un número, determinar si el mismo es par o impar
20.- Dado un número, determinar si el mismo es primo o no es primo
21.- Hallar la suma de los N primeros números pares
22.- Se debe introducir la temperatura ya sea en oC o oF. Convertir los valores a
oF o oC según corresponda. (Ver cómo identificar el valor introducido)
23.- Ordenar M números introducidos al azar, en forma ascendente. Podemos
usar el método de comparaciones sucesivas con el primer número.
INICIO
Leer M
I=0
I=I+1
Leer N(I)
No
I=M
? Si
I=M
I=I-1
J=0
J=J+1
SiAUX=N(J)
N(J)>N(J+ No N(J)=N(J+1)
1) N(J+1)=AUX
Si
No J=I
?
Si
No
I=
1 Si
I=0
I=I+1
Escribir N(I)
No
I=M
? Si
Fin
Inicio
A
Fin Si Fin B
?
No
A No Ejecutar ? DIVE>2 Si
?
Si No
Leer N K=K+1
A P(K) = J
I
J Mod I = 0 ? No
Si A
DIVE = DIVE + 1
25.- Invertir los dígitos de un número N entero, positivo de dos cifras o más
Inicio
A
Fin Si Fin
?
No
A No Invertir ?
Si
Leer N
No Desplegar A
A> N1
0?
Si
DIG = A Mod 10
N1 = N1*10 + DIG
A = A \ 10
26.- Construir una matriz de N x N con N impar y mayor a 2. Calcular las sumas
de los vectores centrales (vertical y horizontal) además de la suma total de
los vectores centrales (horizontal y vertical)
Inicio
A
Fin Si Fin
? No
A Ejecutar ?
No
Si
Leer N A
J = 1, N
H = H + A(I, K)
V = V + A(K, I)
Leer C
I
A(I, J) = C
S = H + V – A(K, K)
J
I Imprimir H, V, S
S = 0, K = N \ 2 + 1
A