El Software
El Software
Una PC es una computadora personal, originalmente diseñada para servir a un sólo usuario. Sale al
mercado en 1981 y va evolucionando en capacidad y velocidad, además su costo se va reduciendo. Existen
diferentes configuraciones para adecuarse a la múltiples necesidades de los usuarios.
Página 1
Unidad II: Conceptos Generales
MONITOR
UNA INSTRUCCIÓN: es cada paso de un programa, pero que lo ejecuta el ordenador o computadora.
TIPOS DE INSTRUCCIONES:
- E/S: Pasar información del exterior al interior del ordenador y al revés.
- ARITMÉTICOs: Operadores Aritméticas: +,-,*,...
- LÓGICAS: Lógicas: or, and,
- RELACIONALES: <, >, =, ...
- SELECTIVAS: Permiten la selección de una alternativa en función de una condición.
- REPETITIVAS: Repetición de un número de instrucciones un número finito de veces.
CREACIÓN DE SOFTWARE
Las computadoras internamente solo manejan el sistema binario, es decir ceros y unos; por este motivo, para
que un programa pueda ser “entendido” por una computadora, tiene que estar escrito en ese sistema de
numeración(Sistema Binario).
A lo largo de la historia de la programación de computadoras se fueron ccreando lenguajes de programación
que permiten escribir un programa utilizando instrucciones que nosotros podemos entender.
Una vez terminado el programa, se traduce al lenguaje que puede entender la maquina (ceros y unos) utilizando
un programa traductor llamado COMPILADOR. Durante la compilación, el programa fuente es revisado por el
compilador para detectar errores ortográficos, lógicos y sintácticos; si se detectan errores se genera una lista de
ellos y en aviso de error; en cambio, si no los hay, el programa fuente es traducido al lenguaje de maquina,
recibiendo el nombre de PROGRAMA OBJETO.
Para que ese programa se pueda ejecutar en una computadora, debe realizarse un ultimo paso a cargo de un
software llamado ENLAZADOR o LINKER. En el proceso de enlace, el linker o enlazador prepara el
programa objeto para que pueda ser ejecutado en una computadora, obteniéndose finalmente el PROGRAMA
EJECUTABLE.
Página 2
Unidad II: Conceptos Generales
Compilador
Error
Linkador
Programa Ejecutables
LENGUAJE MÁQUINA
El lenguaje máquina es el único que entiende directamente la computadora, utiliza el alfabeto binario que
consta de los dos únicos símbolos 0 y 1, denominados bits (abreviatura inglesa de dígitos binarios). Fue el
primer lenguaje utilizado en la programación de computadoras, pero dejó de utilizarse por su dificultad y
complicación, siendo sustituido por otros lenguajes más fáciles de aprender y utilizar, que además reducen la
posibilidad de cometer errores.
EJEMPLO
0000 0001 1010 0001 01 A1
1000 1001 1001 1010 89 9A
0011 1010 1001 1100 3A 9C
0111 0100 0111 0000 74 70
1110 1001 0010 0000 E9 20
Página 3
Unidad II: Conceptos Generales
LENGUAJE ENSAMBLADOR
El lenguaje ensamblador es el primer intento de sustituir el lenguaje máquina por otro más similar a los
utilizados por las personas. En este lenguaje cada instrucción equivale a una instrucción en lenguaje máquina,
utilizando para su escritura palabras nemotécnicas en lugar de cadenas de bits.
EJEMPLO
INICIO: ADD B, 1
MOV A, E
CMP A, B
JE FIN
JMP INICIO
FIN : END
Este lenguaje presenta la mayoría de los inconvenientes del lenguaje 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 cual se programó.
El programador ha de conocer perfectamente el hardware del equipo, ya que maneja directamente las
posiciones de memoria, registros del procesador y demás elementos físicos.
Todas las instrucciones son elementales, es decir, en el programa se deben describir con el máximo detalle
todas las operaciones que se han de llevar a cabo en la máquina para la realización de cualquier proceso.
Se necesita un proceso de traducción.
Por otro lado, tanto el lenguaje máquina como el ensamblador gozan de la ventaja de mínima ocupación de
memoria y mínimo tiempo de ejecución en comparación con el resultado de la compilación del programa
equivalente escrito en otros lenguajes.
Página 4
Unidad II: Conceptos Generales
Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la gran cantidad de
ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL, COBOL, APL, SNOBOL, PROLOG,
MODULA2, ALGOL68, PASCAL, SIMULA67, ADA, C++, LIS, EUCLID, BASIC), además de las diferentes
versiones o dialectos que se han desarrollado de algunos de ellos.
ERRORES
Una vez que se introduce el programa fuente en la computadora se inicia el proceso de compilación, el cual
informa de cualquier error que se haya cometido según el lenguaje de programación elegido. Si el programa no
posee errores se ejecuta.
Frecuentemente, a pesar de las mejores intensiones de los programadores, se cometen errores durante la
escritura de los programas que pueden ser debido al mal uso de algunas características de los lenguajes de
programación, o , quizás a una mala comprensión de lo que hacen exactamente algunas sentencias de
programas. La computadora ayuda frecuentemente a encontrar estos errores imprimiendo mensajes de error, por
ejemplo, si las sentencias no están especificadas adecuadamente o se intenta una operación ilegal. Es misión del
programador la eliminación de todos los errores del programa; este proceso tan importante recibe
frecuentemente el nombre de DEPURACIÓN.
EXISTEN TRES TIPOS DE ERRORES COMUNES EN EL PROGRAMA:
1) SINTÁCTICO O ERROR EN TIEMPO DE COMPILACIÓN: Un error sintáctico es una violación de
unas de las reglas gramaticales del propio lenguaje de programación.
2) ERROR DE EJECUCIÓN O ERROR DE TIEMPO DE FUNCIONAMIENTO (SEMÁTICO): sucede
cuando el programa lleva a la computadora a hacer una operación que por alguna causa no puede hacerse.
Cuando ocurre un error de ejecución, la computadora detiene la ejecución del programa e imprime un mensaje
de error. (ej. Una división por cero)
3) ERROR LÓGICO: es mas sutil que los otros dos y es quizás el tipo de error mas difícil de detectar porque
generalmente no genera mensajes de error. Únicamente aparece mensajes cuando genera un error de ejecución,
en ese caso hay que mirar mas arriba para ver que lo produjo. En otras ocasiones el error no causa error de
ejecución entonces el programa sigue ejecutándose pero modifica el resultado. Una forma de encontrar errores
lógicos es probando los programas.
INTERPRETES Y COMPILADORES
Existen dos tipos de traductores de los lenguajes de programación de alto nivel:
Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje(por
ejemplo, el lenguaje de la máquina). Su acción equivale a la de un traductor humano, que toma un libro y
produce otro equivalente escrito en otra lengua.
Interprete, que analiza un programa fuente y lo ejecuta directamente, sin generar ningún código
equivalente. Su acción equivale a la de un interprete humano, que traduce las frases que oye sobre la
marcha, sin producir ningún escrito permanente.
Interpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios:
Un interprete facilita la búsqueda de errores, pues la ejecución de un programa puede interrumpirse en
cualquier momento para estudiar el entorno(valores de las variables, etc.). Además, el programa puede
modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecución
Un compilador suele generar programas más rápidos y eficientes, ya que el análisis del lenguaje fuente se
hace una sola vez, durante la generación del programa equivalente.
Un interprete se ve obligado generalmente a analizar cada instrucción tantas veces como se ejecute.
Un interprete permite utilizar funciones y operadores más potentes, como por ejemplo ejecutar códigos
contenido en una variable en forma de cadena de caracteres.
Un Compilador no puede utilizar funciones y operaciones más potentes, prescinden de este tipo de
operadores
Página 5
Unidad II: Conceptos Generales
LEGIBILIDAD ( ENTENDIBLE ): Todo el programa debe estar desarrollado en forma clara y comprensible.
FIABILIDAD: Esta en función del equipo a usar, es decir, debe saber decidir cuál es el equipo apropiado para una
aplicación para lo cual se programó. La fiabilidad también se corresponde con la flexibilidad de un programa para
soportar errores triviales, no previstos por el programador pero que no alteran el funcionamiento general del
programa.
PORTABILIDAD: La resolución del problema no debe quedar atada a un lenguaje único de programación: se
debería poder codificar en muchos lenguajes. Esto se debe a que se planteo una solución particularizada a un
lenguaje especifico, en el futuro no lo podría relacionar o usar con otros lenguajes más nuevos, así como su
instalación en diferente sistemas.
MODIFICABILIDAD: Es la posibilidad en todo momento de proveer de pequeños cambios en los programas
(Actualizaciones) con el fin de adecuarlos a nuevas circunstancias: Programación abierta. Para ello se sugiere que se
utilicen las técnicas modernas de programación:
1- Modular: Significa que se aplica un análisis y posteriormente un desarrollo "DESCENDENTE(TOP-
DOWN) en los niveles de programación, empleando módulos, sub-algoritmos, procedimientos, etc.
Teniendo en cuenta que cada uno de estos módulos si bien constituyen una entidad separadas, se encuentra
interrelacionada entre sí. El análisis descendente significa que primero se considera los planteos más
generales y luego se comienza a refinar el análisis sobre cada uno de estos. cabe acotar que cada subrutina
puede ser compartida por varios programas.--
2- Estructuradas: es la idea de estandarización en el uso de secuencias que toma nombre de " ESTRUCTURAS
" (MIENTRAS, REPETIR, ETC ).
EFICACIA - EFICIENCIA: Consiste en verificar que el programa funcione correctamente cumpliendo con los
objetivos previstos ( RESOLVER LOS PROBLEMAS PLANTEADOS). También se considera que el programa sea
lo mas optimo posible y que no abarque recursos innecesarios.
TP1-U2-CUEATIONARIO
A. Leer y Analizar el archivo de la unidad II para comprender los conceptos técnicos de
programación.
B. Responder en siguiente cuestionario:
1) ¿Qué es un dato?
2) ¿Qué es una información?
3) ¿Qué es una computadora?
4) ¿Qué es un sistema?.
Página 6
Unidad II: Conceptos Generales
TP2-U2-CUESTIONARIO
1. ¿Qué es un traductor?
2. ¿Qué realiza un intérprete y un compilador?
3. Diferencia entre interprete y compilador.
4. ¿En qué consiste la prueba de un programa?
5. ¿Para qué se realiza la verificación de funcionamiento de un programa?
6. ¿Qué son los datos de prueba?
Respuestas.
Traductor: es un software que convierte un programa en otro lenguaje de programación.
Interprete: es el que analiza el programa fuente y lo ejecuta, sin generar ningún código equivalente.
Compilador: Es el que analiza el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje de
programación(Por ejemplo, en el lenguaje máquina).
Interprete compilación
Genera otro programa equivalente escrito en
No genera ningún código equivalente.
otro lenguaje.
Facilita la búsqueda de errores, pues puede No puede interrumpirse el proceso de
interrumpirse en cualquier momento y compilación, por lo tanto no se puede corregir
modificar sobre la marcha. los errores sobre la marcha.
El programa fuente se analiza una sola vez ,
Analiza cada instrucción tanta veces como se
por lo tanto genera programa más rápido y
ejecute.
eficiente.
Permite utilizar funciones y operadores más Prescinden la utilización de funciones y
potente. operadores más potentes.
La prueba de un programa consiste en ejecutar dicho programa con datos de prueba. Los resultados que dan el
programa puede comprobarse con facilidad ya que nosotros conocemos los resultados correctos de esos datos de
prueba.
La verificación de funcionamiento de un programa se realiza para asegurarnos de que el mismo haga lo que se
supone que ha de hacer.
Datos de prueba: son datos cuidadosamente seleccionados para los cuales se conoce el resultado.
Página 7