Professional Documents
Culture Documents
1. Resolucin de problemas
La Informtica tambin puede definirse como la ciencia que estudia el anlisis y resolucin
de problemas utilizando computadoras. En esta definicin la palabra ciencia se relaciona con
una metodologa fundamentada y racional para el estudio y resolucin de los problemas. En
este sentido la Informtica se vincula especialmente con la Matemtica y la Ingeniera.
Como se mencion anteriormente, la computadora es una mquina digital con capacidad de
clculo numrico y lgico, que opera controlada por un programa almacenado. Esto quiere
decir que internamente tiene rdenes o instrucciones que la computadora podr leer,
interpretar y ejecutar ordenadamente.
En este sentido, un programa es un conjunto de instrucciones ejecutables en una
computadora, que permite cumplir una funcin especfica o requerimiento que debe
satisfacer.
Normalmente los programas alcanzan su objetivo en un tiempo finito, aunque algunas
aplicaciones, como por ejemplo un sistema de monitoreo de alarma, se ejecutan
indefinidamente, porque poseen un requerimiento de tiempo infinito.
Un programa sin errores ejecutado por una computadora, que comienza y termina
normalmente puede ser incorrecto si no cumple con los requerimientos definidos. Por
ejemplo: un programa de prediccin de clima debera estimar la temperatura mxima y
mnima prevista para cada da. Si en lugar de ello devuelve un promedio diario, o
temperaturas mxima y mnima esperadas en la semana, ser un programa que devuelve
un resultado en un tiempo finito pero no es correcto pues no son los resultados que se
requieren.
Para resolver problemas los programas operan con datos. Los datos representan objetos
del mundo real que permiten modelar aspectos de un problema que se desea resolver. Por
ejemplo, un sistema de administracin de alumnos de una universidad automatiza los
procesos de ingreso y seguimiento de las actividades acadmicas de los alumnos, tales
como inscripcin, cursado, exmenes, etc., qu datos representarn a las entidades que
intervienen en estos procesos: el alumno, la carrera, las materias, etc.?
Los datos reales son difciles de representar en una computadora, dado que es una mquina
digital binaria con capacidad de operar solo unos y ceros. Por lo tanto, la representacin de
los datos, aun los ms simples, como los nmeros, las letras, un nombre o un color,
requiere una transformacin desde el mundo real a alguna forma de representacin binaria
que pueda ser interpretada por la computadora.
Datos ms complejos como una imagen, una cancin o la trayectoria de un misil, tambin
son representados en forma binaria. Sin embargo, la forma de modelarlo e interpretarlo
requerir de un anlisis cuidadoso por parte de quien escribe el programa.
Por lo tanto, las dos cuestiones ms importantes que debe enfrentar quien debe escribir un
programa para resolver un problema mediante una computadora son:
- Definir el conjunto de instrucciones cuya ejecucin ordenada conduce a la solucin.
- Elegir la representacin adecuada de los datos del problema.
En sntesis, las computadoras son una poderosa herramienta para la resolucin de
problemas, pero su potencialidad est en funcin de la capacidad de programacin de
soluciones adecuadas a cada problema particular.
La funcin esencial del especialista informtico es explotar la potencialidad de las
computadoras (velocidad, exactitud, confiabilidad) para resolver problemas del mundo real.
Para lograr esto debe analizar el problema, ser capaz de sintetizar sus aspectos esenciales y
poder especificar la solucin que se desea. Posteriormente, debe expresar la solucin en
forma de programa, operando los datos del mundo real mediante una representacin vlida
en una computadora.
para determinar si el programa tiene errores. Este conjunto de datos de prueba o test debe
contener valores de datos de entrada normales, valores extremos de los datos para
comprobar los lmites, valores errneos y valores de entrada que comprueben casos
especiales del programa.
La depuracin es el proceso de encontrar los errores y corregir o eliminar dichos errores. En
general, existen tres tipos de errores:
- Errores de compilacin: Se producen normalmente por un uso incorrecto de las
reglas del lenguaje de programacin y suelen ser errores de sintaxis. Si hay errores
de sintaxis, la computadora no puede entender la instruccin, no se genera el
programa objeto y el compilador emite una lista con todos los errores encontrados
durante la compilacin. Por ejemplo: uso incorrecto de palabras reservadas, de
smbolos de separacin de instrucciones, etc.
- Errores de ejecucin: Se producen por instrucciones que la computadora puede
comprender pero no ejecutar. Ejemplos tpicos son operaciones en las que se
pretende dividir por cero y races cuadradas de nmeros negativos. En estos casos,
se detiene la ejecucin del programa y se imprime un mensaje de error. El programa
cancela, que es el trmino usual en la jerga informtica.
- Errores lgicos: Se producen en la lgica del programa y la fuente del error suele ser
el diseo del algoritmo. Estos errores son los ms difciles de detectar porque el
programa funciona sin producir mensajes de error, el error solo se advierte por la
obtencin de resultados incorrectos. En este caso se debe volver a la etapa de diseo
del algoritmo, modificar el algoritmo, cambiar el programa fuente y compilar y
ejecutar de nuevo.
Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan
como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar
en un lenguaje diferente de programacin o ejecutarse en una computadora distinta, sin
embargo el algoritmo ser siempre el mismo. As, por ejemplo, en una analoga con la vida
diaria, una receta de un plato de cocina se puede expresar en espaol, ingls o francs,
pero cualquiera sea el idioma, los pasos para la elaboracin del plato se realizarn sin
importar el idioma del cocinero.
En la ciencia de la computacin y en la programacin, los algoritmos son ms importantes
que los lenguajes de programacin o las computadoras. Un lenguaje de programacin es
tan solo un medio para expresar un algoritmo y una computadora es solo un procesador
para ejecutarlo. Tanto el lenguaje de programacin como la computadora son los medios
para obtener un fin: conseguir que el algoritmo se ejecute y se efecte el proceso
correspondiente.
Dada la importancia del algoritmo en la ciencia de la computacin, un aspecto muy
importante ser el diseo de algoritmos. El diseo de la mayora de los algoritmos requiere
creatividad y conocimientos profundos de la tcnica de la programacin.
Ejemplo de algoritmo
Se requiere calcular la media de tres nmeros que ingresan por teclado.
Los pasos del algoritmo son:
1. Ingresar primer nmero
2. Ingresar segundo nmero
3. Ingresar tercer nmero
4. Sumar los tres nmeros
5. Dividir el resultado obtenido en el paso anterior por 3
6. Mostrar el cociente obtenido
La definicin de un algoritmo debe describir tres partes: Entrada, Proceso y Salida. La
informacin proporcionada al algoritmo constituye su entrada y la informacin producida por
el algoritmo constituye su salida.
En el algoritmo del ejemplo citado anteriormente se tendr:
Entrada: los nmeros.
Proceso: suma de todos los nmeros y divisin del resultado por tres.
Salida: media de los tres nmeros ingresados.
Escribir un algoritmo consiste en realizar una descripcin del mtodo o conjunto de reglas
que se propone para resolver un problema. Estas reglas tienen las siguientes propiedades:
- Debe seguirse una secuencia definida de pasos hasta que se obtenga el resultado.
- Slo puede ejecutarse una operacin a la vez.
Adems, en todo algoritmo los datos manipulados son de importancia fundamental: se
busca obtener una determinada informacin a partir de datos bsicos del problema, por lo
que no es de extraar que en la escritura de algoritmos adquieran una identidad propia.
Como generalmente se querr aplicar el mismo algoritmo a conjuntos de datos de entrada
diferentes, estos datos se identifican en cada paso con un nombre, que ser reemplazado
en tiempo de ejecucin por los datos particulares que sea necesario tratar (por ejemplo, por
los datos ingresados a travs teclado u obtenidos de un archivo). En el ejemplo del clculo
de la media, visto anteriormente, los nmeros de entrada se identificarn con las variables
n1, n2, n3, o cualquier nombre que se desee.
El hecho de que un algoritmo deba especificar un conjunto finito y ordenado de pasos a
seguir, no es contradictorio con la posibilidad de realizar algunas de las operaciones solo
bajo ciertas condiciones (por ejemplo, calcular el recargo de una factura solo si est
vencida), indicar la repeticin de algunas de las instrucciones un nmero de veces conocido
de antemano (por ejemplo 10 veces) o aun un nmero no conocido de veces que se
determinar a partir de los datos de entrada recibidos (por ejemplo, mientras el operador
ingrese valores mayores que 0).
Estas acciones se conocen como alteraciones en el flujo de control, es decir en el orden de
ejecucin de las instrucciones del algoritmo, y permiten expresar las soluciones de
problemas complejos como la repeticin selectiva de operaciones sencillas.
Para escribir algoritmos se utilizan diversas tcnicas que buscan eliminar la ambigedad del
lenguaje coloquial en la especificacin de sus pasos. Los mtodos usuales para representar
un algoritmo son:
a) Diagrama de flujo
b) Lenguaje de especificacin de algoritmo: seudocdigo
c) Lenguaje natural: espaol, ingls,
d) Frmulas matemticas
Los mtodos c) y d) no son fciles de transformar en programas. Una descripcin en
espaol narrativo no es satisfactoria porque puede presentar ambigedades. Una frmula
sin embargo es un buen sistema de representacin. Una frmula permite obtener valores
desconocidos (salida) a partir de valores conocidos (datos) relacionados en una expresin
matemtica que indica las operaciones que se deben aplicar (algoritmo). Por ejemplo, las
frmulas para la solucin de una ecuacin cuadrtica (de segundo grado) son un medio
apropiado para expresar el procedimiento algortmico que se debe ejecutar para obtener las
races de la ecuacin.
Ejemplo:
En este caso los datos de entrada son los coeficientes a, b y c, y los resultados son los
valores de x1 y x2 que se obtienen aplicando las operaciones indicadas en la frmula.
Como se puede notar, las frmulas son especialmente tiles cuando los pasos a seguir se
pueden expresar como operaciones aritmticas y funciones matemticas.
Otra manera de representar un algoritmo es con diagramas de flujo. Constituyen un
recurso grfico, que facilita especialmente la visualizacin de alteraciones en el flujo de
control, pues utilizan flechas para indicar qu instruccin se debe ejecutar a continuacin.
Utiliza distintos smbolos que determinan la forma de interpretar el
INICIO
contenido de los mismos: como instrucciones a ejecutar, como
condiciones para determinar el siguiente paso del algoritmo, como
datos de entrada a obtener, como resultados a emitir, etc.
LEER
Ejemplo: n1, n2, n3
La media es: ,
media
FIN
Limitaciones:
- Los diagramas complejos y detallados pueden ser muy laboriosos de realizar y de
consultar.
- No existen normas que indiquen el nivel de detalles que debe incluirse en un
diagrama.
Un ejemplo de diagramacin:
Inicio Inicio
LEER suma = 2
nombre, nmero = 4
horas, precio
nmero = nmero + 2
impuesto = 0.25 * bruto SI
NO
nombre, bruto,
impuesto, neto suma
Fin Fin
c) Clculo de los salarios mensuales de los empleados de una empresa, sabiendo que
estos se calculan en base a las horas semanales trabajadas y de acuerdo a un
precio especificado por horas. Si se pasan de 40 hs semanales, las horas extras se
pagarn a razn de 1,5 veces la hora ordinaria.
Inicio
LEER nombre.
horas,
precio_hora
Horas <= 40
salario = 40 * precio_hora
salario = horas *
+ 1,5 * precio_hora *
precio_horas
(horas 40)
SI
nombre, salario
Hay ms
datos?
No
Fin
4.1.2. Seudocdigo
El pseudocdigo es un lenguaje de especificacin (descripcin) de algoritmos, que facilita
el paso a la codificacin o traduccin a un lenguaje de programacin.
El pseudocdigo naci como un lenguaje similar al ingls y era un medio de representar las
estructuras de control de la programacin estructurada, que veremos ms adelante.
Se considera un primer borrador del programa, dado que necesariamente tiene que ser
traducido a un lenguaje de programacin. Un pseudocdigo no puede ser ejecutado por una
computadora directamente.
Ventajas:
- El programador puede concentrarse en la lgica y en las estructuras de control del
programa sin preocuparse por las reglas de un lenguaje de programacin especfico.
- Facilita la modificacin del algoritmo si se descubren errores.
- Puede ser traducido fcilmente a lenguajes de programacin estructurados tales
como Pascal, Fortran, C, C#, etc.
Todo seudocdigo debe posibilitar la descripcin de:
- Instrucciones de entrada/salida.
- Instrucciones de proceso.
- Sentencias de control del flujo de ejecucin.
- Acciones compuestas, que se refinan posteriormente (subprogramas o rutinas).
Asimismo, tendr la posibilidad de describir datos, tipos de datos, variables, expresiones,
archivos y cualquier otro objeto que sea manipulado por el programa.
El pseudocdigo original utiliza para representar las acciones sucesivas palabras reservadas
en ingls - similares a sus homnimas en los lenguajes de programacin -, tales como
start, end, stop, if-then-else, while-end, repeat-until, etc. Sin embargo, las palabras
reservadas pueden ser escritas tambin en castellano.
La escritura de pseudocdigo exige normalmente la indentacin (sangra en el margen
izquierdo) para describir las acciones en sus estructuras de control correspondientes.
La representacin en pseudocdigo del diagrama ejemplo mostrado en a) del punto 5.1.1,
sera:
VARIABLES
REAL: horas, precio_hora, salario_bruto, impuesto, salario_neto
CHAR: nombre
// clculo del salario neto
INICIO
LEER nombre, horas, precio_hora
salario_bruto = horas * precio_hora
impuesto = 0,25 * salario_bruto
salario_neto = salario_neto impuesto
ESCRIBIR nombre, salario_bruto, impuesto, salario_neto
FIN
El algoritmo empieza con la palabra INICIO y finaliza con la FIN (START, END en ingls).
La lnea precedida por // se denomina comentario. Es informacin al lector del programa y
no realiza ninguna accin ejecutable, slo tiene efecto de documentacin interna.
En esta materia se utilizar, como convencin propia, escribir las palabras reservadas en
maysculas y los trminos en espaol, y adems en ingls, con el objeto de familiarizar a
los alumnos en las dos nomenclaturas. En los temas siguientes, se detallar el formato de
pseudocdigo de cada estructura de control en el contexto de la programacin estructurada.