Download informática lenguajes de programación - Informatica

Document related concepts
Transcript
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA DE BILBAO
BILBOKO INGENIARITZA GOI ESKOLA TEKNIKOA
INFORMÁTICA
LENGUAJES
DE
PROGRAMACIÓN
Antonio Fabián López Valencia
Bilbao, Mayo de 2013
Fundamentos de Informática. Lenguajes de programación
I
INDICE
1.
PROGRAMACIÓN ...................................................................................................................................... 1
2.
OBJETIVOS DE LA PROGRAMACIÓN ................................................................................................. 1
3.
LENGUAJES ................................................................................................................................................ 2
3.1. LENGUAJE MÁQUINA ............................................................................................................................... 2
3.2. LENGUAJES ENSAMBLADORES (LENGUAJES MNEMÓNICOS) ..................................................................... 3
3.3. LENGUAJES DEL ALTO Y BAJO NIVEL. ...................................................................................................... 3
3.4. PROCESADORES O TRADUCTORES DE LENGUAJES: COMPILADORES E INTERPRETES. ... 4
3.4.1.
COMPILADORES .......................................................................................................................... 4
3.4.2.
INTERPRETES ............................................................................................................................... 6
4.
HERRAMIENTAS DE PROGRAMACIÓN ............................................................................................. 7
4.1.
4.2.
4.3.
5.
DEPURADORES ................................................................................................................................... 7
ENTORNO DE PROGRAMACIÓN ...................................................................................................... 8
CREACIÓN DE UN PROGRAMA EJECUTABLE EN TURBO PASCAL .......................................... 8
DESARROLLO DE PROGRAMA QUE SUMA DOS NUMEROS ........................................................ 9
5.1. DISEÑO ................................................................................................................................................. 9
5.2. IMPLEMENTACIÓN MEDIANTE DIVERSOS LENGUAJES DE PROGRAMACIÓN .................... 9
5.2.1.
Codificado en BASIC ...................................................................................................................... 9
5.2.2.
Codificado en PASCAL o TURBO PASCAL................................................................................... 9
5.2.3.
Codificado en C .............................................................................................................................. 9
5.3. EJEMPLOS DE HERRAMIENTAS UTILIZADAS EN EL DESARROLLO DE PROGRAMAS
PARA SISTEMA OPERATIVO D.O.S................................................................................................ 10
5.3.1.
Escribir el programa fuente.......................................................................................................... 10
5.3.2.
Compilar y enlazar (montar o lincar)........................................................................................... 10
5.3.3.
Depurar ........................................................................................................................................ 10
5.3.4.
Entorno integrado (editar, compilar, enlazar, ejecutar y depurar el programa)......................... 10
5.4. RELACIÓN ENTRE LENGUAJE MÁQUINA, ENSAMBLADOR Y LENGUAJE DE ALTO NIVEL ............................. 11
6.
BIBLIOGRAFÍA ........................................................................................................................................ 12
© A. Fabián López Valencia
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería (UPV/EHU)
II
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería (UPV/EHU)
Fundamentos de Informática. Lenguajes de programación
© A. Fabián López Valencia
Fundamentos de Informática. Lenguajes de programación
1.
1
PROGRAMACIÓN
Una máquina programable, y en particular un computador, es inútil si no dispone del programa adecuado. Para
realizar un determinado tratamiento de información con ayuda de un computador habrá sido necesario:
a) Construir el computador (hardware)
b) Idear y desarrollar el programa (software)
c) Ejecutar dicho programa en el computador
Sólo la última fase es habitualmente desarrollada por el usuario. Las dos primeras corresponden a los profesionales
de la informática: la fase (a) a los fabricantes de hardware y la (b) a los de software.
La labor de desarrollar programas se denomina en general programación. En realidad este término se suele reservar
para designar las tareas de desarrollo de programas de pequeña escala, es decir, realizadas por una sola persona. El
desarrollo de programas complejos, que son la mayoría de los usados actualmente, exige un equipo más o menos
numeroso de personas que debe trabajar de manera organizada. Las técnicas para el desarrollo de software a gran
escala constituyen la ingeniería del software. No obstante, programación e ingeniería del software no son
disciplinas independientes, sino complementarias.
Aunque la programación se refiere al desarrollo de programas de pequeña escala, sigue siendo un proceso complejo,
compuesto por diversas etapas o fases:
Análisis
Problema
2.
Diseño
Enunciado
del Problema
( algorítmico )
Codificación
Algoritmo
Programa
( en lenguaje de
Programación )
OBJETIVOS DE LA PROGRAMACIÓN
Los principales objetivos de la programación, en orden de importancia decreciente son:
Corrección:
Es evidente que un programa debe realizar el tratamiento esperado, y no producir resultados
erróneos. Esto tiene una consecuencia inmediata que no siempre se considera evidente: antes de
desarrollar un programa debe especificarse con toda claridad cuál es el funcionamiento esperado.
Sin dicha especificación es inútil hablar de funcionamiento correcto.
Claridad:
Prácticamente todos los programas han de ser modificados después de haber sido desarrollados
inicialmente. Por esta razón es fundamental que sus descripciones sean claras y fácilmente
inteligibles por otras personas distintas de su autor, o incluso por el mismo autor al cabo de un
cierto tiempo, cuando ya ha olvidado los detalles del programa.
Eficiencia:
Una tarea de tratamiento de información puede ser programada de muy diferentes maneras sobre
un computador determinado, es decir, habrá muchos programas distintos que producirán los
resultados deseados. Algunos de estos programas serán más eficientes que otros. Los programas
eficientes aprovecharán mejor los recursos disponibles y, por tanto, su empleo será más económico
en algún sentido (tiempo, recursos,...).
© A. Fabián López Valencia
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería (UPV/EHU)
2
3.
Fundamentos de Informática. Lenguajes de programación
LENGUAJES
Como ya se ha explicado un computador funciona bajo el control de un programa que ha de estar almacenado en la
memoria del computador. Por tanto, el programa contiene, en forma codificada, una descripción del comportamiento
deseado del computador.
Para escribir los programas se utilizan los lenguajes de programación, que sirven para dar instrucciones al
computador. Los lenguajes de programación, como los lenguajes que utilizamos para comunicarnos, poseen un
léxico (un conjunto de palabras y símbolos, en un número reducido), una sintaxis que indica cómo realizar
construcciones del lenguaje, y una semántica, que determina el significado de cada construcción correcta.
3.1.
Lenguaje máquina
Cada modelo de computador podrá utilizar una forma particular de codificación de programas, que no coincidirá con
la de otros modelos. La forma de codificar programas de una máquina particular se dice que es su código de
máquina o lenguaje máquina. Un programa codificado en el lenguaje de un modelo de máquina no podrá ser
ejecutado, en general, en otro distinto.
Cada máquina se programa de forma diferente (tiene un juego de instrucciones diferentes), y el programador,
además de ser capaz de encontrar la solución al problemas concreto, debería ser un especialista en la máquina en la
que está programando. Programar en lenguaje máquina es hacer una trascripción a 1’s y 0’s de las instrucciones que
queremos que realice el ordenador para resolver un problema determinado.
La máquina, lo único que entiende es el código binario, 1’s y 0’s, y programar de esta manera es complicado y
aburrido, y es muy difícil encontrar los errores que se cometen.
Ejemplo:
La instrucción “Sumar el contenido del registro D con el Acumulador y almacenar el resultado en
el Acumulador” podría ser: 10000010
Ventajas.-
Programas directamente ejecutables.
Programas muy rápidos
Ejecución del programa en lenguaje máquina:
0101110111011001-----------------------------------------------------------------------------------------
Datos 1
Progra ma Objeto 1
Resultados 1
--------------------------------------------------------0111010101110001---------------------------------
Lenguaje Máquina 1
Máquina Base
1
Un programa que ante los mismos datos devolviera los mismos resultados, pero que se ejecutara en otra máquina,
debería ser diferente.
1111110001110000-----------------------------------------------------------------------------------------
Datos 1
Progra ma Objeto 2
Resultados 1
--------------------------------------------------------00000011110001110--------------------------------
Lenguaje Máquina 2
Máquina Base
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería (UPV/EHU)
2
© A. Fabián López Valencia
Fundamentos de Informática. Lenguajes de programación
NOTA:
3.2.
3
Con el término MAQUINA BASE se hace referencia a la máquina virtual compuesta del hardware y del
sistema operativo.
Lenguajes ensambladores (lenguajes mnemónicos)
El siguiente paso para facilitar la escritura de programas fue asociar a cada instrucción elemental del juego de
instrucciones del ordenador un mnemotécnico, (p. e. Sumar ⇔ ADD), se obtuvo así el lenguaje simbólico o
ensamblador.
Ejemplo: La instrucción “Sumar el contenido del registro D con el Acumulador y almacenar el resultado en el
Acumulado” podría ser: ADD D
Pero, dado que la máquina no entiende estos símbolos, es necesaria una traducción a unos y ceros. La traducción de
un programa fuente a uno objeto se hace por medio de programas llamados ensambladores.
MOV AX, -PUSH AX
------------------------ADD SP, 2
------------------------PUSH CX
------------------------END
0101110111011001-----------------------------------------------------------------------------------------
Ensambla dor
--------------------------------------------------------0111010101110001---------------------------------
Lenguaje Máquina
01011100
------------------------------------------------------------01110101
Programa Objeto
- Ejecuta ble -
Progra ma Fuente
Máquina Base
Ejecución del programa en lenguaje máquina (Programa Objeto-Ejecutable):
01011100
---------------------------------------------------------
Prg. Objeto Ejecuta ble
Datos
Resultados
---------------------------------------------------------
01110101
Lenguaje Máquina
Máquina Base
3.3.
Lenguajes del alto y bajo nivel.
Los lenguajes ensambladores siguen siendo lenguajes de bajo nivel (para programa con ellos es necesario conocer el
juego de instrucciones y la arquitectura del computador) pero son más fáciles de entender que el lenguaje máquina.
Los lenguajes de programación de alto nivel están específicamente diseñados para programar computadores. Sus
características fundamentales son:
•
Son independientes de la arquitectura física del computador. El programador no tiene que ser un especialista en
la máquina, y un mismo programa se puede utilizar en computadores con diferente lenguaje máquina, siempre y
cuando se disponga del programa de ordenador que traduzca los programas así escritos al juego de instrucciones
de la máquina correspondiente. Se dice que los programas se pueden portar de un computador a otro diferente.
•
Poseen instrucciones muy complejas. Normalmente, una instrucción en un lenguaje de alto nivel, al ser traducida
se transforma en varias instrucciones en lenguaje máquina. Su lenguaje (léxico, sintaxis y semántica) es más
parecido al lenguaje humano que al de la máquina, facilitando con ello el trabajo del programador.
© A. Fabián López Valencia
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería (UPV/EHU)
4
Fundamentos de Informática. Lenguajes de programación
•
Utilizan notaciones cercanas a las habituales en el ámbito en que se usan. Las operaciones se expresan con
sentencias o frases muy parecidas al lenguaje matemático o al lenguaje natural. Por ello es más fácil detectar los
errores cometidos y corregirlos. También es más fácil de realizar la modificación, o mantenimiento, de los
programas
3.4.
PROCESADORES o TRADUCTORES DE LENGUAJES: COMPILADORES E
INTÉRPRETES.
Los programas escritos en lenguajes de alto nivel necesitan ser traducidos a lenguaje máquina. Esta traducción se
podrá realizar de dos formas, según el lenguaje de alto nivel a que nos refiramos, mediante programas Compiladores
o programas Intérpretes.
Un mismo programa se puede traducir a diferentes lenguajes máquina, para ser ejecutado en diferentes sistemas:
0101110111011001-----------------------------------------------------------------------------------------
Tra ductor 1
--------------------------------------------------------0111010101110001---------------------------------
Lenguaje Máquina 1
/* PROGRA -#include --void main ( )
{
int Cont, Edad -----------------------printf (“El resul }
Máquina Base
1
0111101111011101-----------------------------------------------------------------------------------------
Programa Fuente
PROGRAM A.C
Tra ductor 2
--------------------------------------------------------1111010101010111---------------------------------
Lenguaje Máquina 2
N OTA: Un compila dor (tra ductor) cruzado es
ca pa z de Genera r código para una
má quina diferente de a quella en la
que se ejecuta
3.4.1.
Máquina Base
2
01111010
--------------------------------------------------------------------------------------------------------------------------------------------------------11001000
Programa Ejecuta ble
( en la má quina 1 )
01111111
--------------------------------------------------------------------------------------------------------------------------------------------------------11011011
Progra ma Ejecuta ble
( en la má quina 2 )
COMPILADORES
El proceso de ejecución de un programa escrito en un lenguaje compilado se desarrolla en dos etapas: obtención del
programa objeto y la ejecución de dicho programa.
El programa en lenguaje de alto nivel (Programa Fuente) pasará a lenguaje máquina (Programa Objeto) por medio
del un programa denominado COMPILADOR.
Obtención del programa en lenguaje máquina:
/* PROGRA -#include -void main ( )
{
int Cont, Edad -----------------------printf (“El resul }
0101110111011001-----------------------------------------------------------------------------------------
Compilador
--------------------------------------------------------0111010101110001---------------------------------
01011100
------------------------------------------------------------01110101
Lenguaje Máquina
Progra ma Objeto
- N o ejecuta ble PROGRAMA.OBJ
Progra ma Fuente
PROGRAMA.C
Máquina Base
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería (UPV/EHU)
© A. Fabián López Valencia
Fundamentos de Informática. Lenguajes de programación
5
El programa objeto no va a ser directamente utilizable, le faltarán algunos de los elementos utilizados. Por ejemplo si
se utilizan rutinas o funciones de librería, en el programa se hace referencia al uso de dichas funciones, pero no está
incluido el código máquina correspondiente a esas funciones. El programa montador o enlazador, se encargará, por
ejemplo, de resolver las llamadas a funciones cuyo código no está en el mismo programa objeto.
01011100
------------------------------------------------------------01110101
PROGRAMA.OBJ
0101110111011001-----------------------------------------------------------------------------------------
Enlazador (Linker)
--------------------------------------------------------0111010101110001---------------------------------
Lenguaje Máquina
01111000
------------------------------------------------------------11010001
RUTIN AS.LIB
Máquina Base
01111010
--------------------------------------------------------------------------------------------------------------------------------------------------------11001000
Progra ma Objeto
- Ejecuta ble PROGRAMA.EXE
Fundamentalmente el montador o enlazador (linker) incorpora al programa objeto las funciones del propio sistema.
Si, por ejemplo, un programa objeto hace referencia a funciones, procedimientos de librería, el programa montador o
enlazador se encarga de buscar esas rutinas en un fichero de librería de rutinas (otro programa objeto, escrito en
lenguaje máquina) e insertarlas en el programa objeto inicial para crear el programa ejecutable.
Existe otro tipo de librería, librerías de enlace dinámico, cuyo contenido no se incorpora al programa ejecutable, y
por tanto para poder ejecutar los programas que las utilizan es necesario disponer de los archivos que las contienen,
en algún dispositivo de almacenamiento secundario conectado al computador.
Además existen otras “rutinas” utilizadas muy frecuentemente almacenadas en dispositivos de acceso directo,
escritas en lenguaje máquina, son las llamadas servicios del sistema operativo y su código tampoco se incorpora a los
programas ejecutables.
Es posible controlar el almacenamiento y la utilización de los programas de librería, añadiendo o borrando rutinas de
ellos. Se puede crear un programa fuente que contenga una serie de definiciones, por ejemplo de funciones o de
constantes, muy utilizadas en un determinado proyecto informático, y tras traducirlas a programa objeto crear una
nueva librería, en lugar de un programa ejecutable, para su posterior uso en otros programas del proyecto (no habría
que incluir de nuevo las definiciones de constantes o funciones en cada uno de los programas que las usan).
El proceso completo de obtención del programa fuente, en el caso más general será:
/* PROGRA
#include
void main ( )
{
int A -printf (“El res}
0101110111011001-------------------------------------------------
Compila dor
------------------------------------0111010101110001
Lenguaje Máquina
01011100
------------------------------------------------------------01110101
Progra ma Objeto
PROG_1.OBJ
Progra ma Fuente
PROG_1.C
Máquina Base
.../...
11110000
------------------------------------------------------------01100111
Progra ma Objeto
PROG_2.OBJ
/* PROGRA
void InterCamb (int
{
int Temp ---------------------return ----------}
0101110111011001-------------------------------------------------
Compila dor
------------------------------------0111010101110001
Programa Fuente
PROG_N .C
Lenguaje Máquina
00010000
------------------------------------------------------------01011111
Progra ma Objeto
PROG_N .OBJ
Máquina Base
00010011
------------------------------------------------------------01100001
0101110111011001-------------------------------------------------
Enla za dor (Linker)
------------------------------------0111010101110001
Lenguaje Máquina
Máquina Base
01111010
--------------------------------------------------------------------------------------------------------------------------------------------------------11001000
Progra ma Objeto
- Ejecuta ble PROGRAMA.EXE
Progra ma Objeto
RUTIN AS.LIB
© A. Fabián López Valencia
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería (UPV/EHU)
6
Fundamentos de Informática. Lenguajes de programación
Es necesario tener un programa fuente completo antes de poder compilarlo, aunque posteriormente se pueda
modificarlo para añadirle más capacidades. La definición del lenguaje contiene la descripción de los mínimos que
debe tener un programa para poder ser compilado.
Los programas Compilador y Montador van a proporcionar la lista de errores del programa fuente: errores de sintaxis
o de falta de definición de elementos utilizados.
Para la ejecución del programa en lenguaje máquina basta con disponer del programa ejecutable (no es necesario el
programa fuente).
Progra ma Objeto
- Ejecutable PROGRAMA.EXE
01111010
--------------------------------------------------------------------------------------------------------------------------------------------------------11001000
Datos
Resultados
Lenguaje Máquina
Máquina Base
Importante:
• El programa objeto, tras la compilación, está en lenguaje máquina pero no puede ser ejecutado por el
computador.
• Los compiladores pueden generar varias líneas de código máquina (instrucciones máquina) por cada
instrucción del programa fuente.
3.4.2.
INTERPRETES
El proceso de ejecución de un programa escrito en un lenguaje interpretado se desarrolla en una única etapa.
El intérprete toma una instrucción del programa fuente, la traduce a lenguaje máquina y la ejecuta en la máquina;
seguidamente toma otra instrucción y realiza el mismo proceso,... y así sucesivamente hasta llegar al final del fichero
que contiene el programa fuente. Puede decirse que el intérprete es (o simula) una máquina virtual cuyo lenguaje
máquina coincide con el lenguaje fuente.
Ejecución del programa en lenguaje fuente:
Progra ma Fuente
PROGRAMA.BAS
REM PROGRAMA.BAS
Datos
INPUT “Introduce el valor : “, Valor
INPUT “
la cantidad : “, Cant
Total = Valor*Cant
PRINT “El precio total es: “, Total
Resultados
Lenguaje Fuente
0101110111011001-----------------------------------------------------------------------------------------
Intérprete
--------------------------------------------------------0111010101110001---------------------------------
Lenguaje Máquina
Máquina Base
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería (UPV/EHU)
© A. Fabián López Valencia
Fundamentos de Informática. Lenguajes de programación
7
Con la utilización de programas interpretados se pierde velocidad pues hay que traducir cada instrucción del
programa fuente, inmediatamente antes de ejecutarla. La pérdida de velocidad es mayor si se considera el caso de
sentencias que se repiten dentro del mismo programa fuente: habrá que traducirlas tantas veces como se ejecuten.
Una ventaja de los lenguajes interpretados es la facilidad de depuración y de localización de errores. Durante la
ejecución del programa se detectan tanto los errores de sintaxis como los errores producidos en la ejecución, por
ejemplo errores de lógica. El código se podrá probar ejecutando instrucciones sueltas, aunque no se tenga todo el
programa fuente escrito (a diferencia de los compilados en los que se necesita tener un programa completo).
Las necesidades de memoria serán menores puesto que solo se necesita memoria para el código máquina resultante
de la traducción de una instrucción, la que se está ejecutando, y no para todo el programa fuente traducido a lenguaje
máquina como ocurre con los programas compilados.
Importante:
• Es más cómodo que un compilador para depurar programas pues no se necesitan las etapas de
compilación y lincado. Elimina la necesidad de compilar después de que se haya hecho un cambio en el
programa o se hayan corregido los errores.
• Sin embargo, los programas son más lentos de ejecución al irse traduciendo instrucción a instrucción a
medida que se ejecutan.
NOTA: El desarrollo del computador exigió la creación de lenguajes de programación que se pudieran interpretar
instrucción a instrucción; esto supone un gran ahorro de memoria pues el intérprete sólo genera el código
máquina correspondiente a una instrucción, y una vez ejecutada ésta se utiliza el mismo espacio de memoria
de programa para la siguiente instrucción.
Este ahorro de memoria se produce a costa de disminuir la velocidad de proceso, puesto que en cada
ejecución del programa es preciso traducirlo, y cuando una instrucción se ejecuta varias veces en el mismo
programa, es preciso traducirla cada vez que ha de ser ejecutada.
4.
HERRAMIENTAS DE PROGRAMACIÓN
4.1.
DEPURADORES
Tras ejecutarse el programa es posible que se obtengan errores debidos a que la lógica del programa no es la
adecuada a la resolución del problema concreto (p.e. se realiza una suma en lugar de una resta).
Existen programas de utilidad denominada Depuradores, que permiten ejecutar el programa de una manera
controlada pudiéndose supervisar la ejecución del mismo paso a paso, instrucción a instrucción o bien haciendo que
se detenga su ejecución en unos puntos determinados para permitir ver cómo la evolución del programa, y los valores
que van tomando las variables. Con esta información será más fácil encontrar los errores de lógica del programa.
Depuración del programa ejecutable:
Progra ma Ejecuta ble
PROGRAMA.EXE
Datos
01111010
------------------------------------------------------------------------------------------------------------------------------------------------11001000
Resultados
Lenguaje Máquina
0101110111011001-----------------------------------------------------------------------------------------
Depura dor
--------------------------------------------------------0111010101110001---------------------------------
TRAZA DEL
PROGRAMA
Lenguaje Máquina
Máquina Base
© A. Fabián López Valencia
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería (UPV/EHU)
8
4.2.
Fundamentos de Informática. Lenguajes de programación
ENTORNO DE PROGRAMACIÓN
Un entorno de programación es una aplicación que integra las aplicaciones necesarias para la creación de programas
ejecutables: editor de texto, compilador, enlazador, depurador,... facilitando el trabajo del programador.
0101110111011001-----------------------------------------------------------------------------------------
Editor
--------------------------------------------------------0111010101110001---------------------------------
/* PROGRA
#include ---
Progra ma
Fuente
PROGRAMA.C
Progra ma
Objeto
PROGRAMA.OBJ
void main ( )
{
int A -printf (“El res}
01011100
----------------------------------------01110101
Progra ma Objeto
Libreria de rutina s
RUTIN AS.LIB
01111101
--------------------00000100
Progra ma
Ejecuta ble
PROGRAMA.EXE
01111010
----------------------------------------------------------------------------11001000
1101110111011111-----------------------------------------------------------------------------------------
Compila dor
--------------------------------------------------------0000010101110001---------------------------------
0001100110010001-----------------------------------------------------------------------------------------
Enlazador (Linker)
--------------------------------------------------------1111011101100001---------------------------------
0001110000011000-----------------------------------------------------------------------------------------
void main ( )
{
int A -printf (“El res}
Progra ma
Fuente
PROGRAMA.C
01011100
Progra ma
--------------------Objeto
--------------------PROGRAM A.OBJ
01110101
01111010
----------------------------------------------------------------------------11001000
Progra ma
Ejecuta ble
PROGRAMA.EXE
Resultados
Depura dor
--------------------------------------------------------0100000101000001---------------------------------
Datos
4.3.
/* PROGRA
#include ---
TRAZA DEL
PROGRAMA
CREACIÓN DE UN PROGRAMA EJECUTABLE EN TURBO PASCAL
En Turbo Pascal las librerías de rutinas se denominan unidades y tienen la extensión TPU.
El entorno de programación se denomina TURBO.EXE y el compilador en línea TPC.EXE
PROGRAMA.PAS
PROGRAM -USES
Rutinas ;
VAR
--------------BEGIN
-------------------------------------------------------------END.
Programa fuente
010111001---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------01110101011000011
PROGRAMA.EXE
TURBO.EXE
O
TPC.EXE
r
do
ila
p
m
y or
Co
ad
laz
n
E
010111011101-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------01110101011100011
Programa ejecutable
RUTINAS.TPU
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería (UPV/EHU)
© A. Fabián López Valencia
Fundamentos de Informática. Lenguajes de programación
5.
5.1.
9
DESARROLLO DE PROGRAMA QUE SUMA DOS NUMEROS
DISEÑO
Sumar
dos números
Obtener
Sumando 1
Pedir
Número
Obtener
Sumando 2
Leer
Número
Pedir
Número
Calcular
la suma
Mostrar valor
de la suma
Leer
Número
5.2.
IMPLEMENTACIÓN MEDIANTE DIVERSOS LENGUAJES DE PROGRAMACIÓN
5.2.1.
Codificado en BASIC
5.2.3.
Codificado en C
REM
REM Programa en BASIC: SUMA_BAS.BAS
REM
/* Programa en C: SUMA_C.C */
INPUT "Introduce un Nº entero: ", iEntero_1
INPUT "Introduce otro entero: ", iEntero_2
void main (void)
{
int iEntero_1, iEntero_2, iSuma ;
#include <stdio.h>
iSuma = iEntero_1 + iEntero_2
PRINT "La suma es: ", iSuma
printf ("Introduce un Nº entero: ") ;
scanf ("%d", &iEntero_1) ;
5.2.2.
printf ("Introduce otro entero: ") ;
scanf ("%d", &iEntero_2) ;
Codificado en PASCAL o TURBO PASCAL
iSuma = iEntero_1 + iEntero_2 ;
(* Programa en PASCAL: SUMA_PAS.PAS *)
PROGRAM suma_pas ;
VAR
iEntero_1, iEntero_2, iSuma : Integer ;
printf ("La suma es: %d", iSuma) ;
}
BEGIN
Write ('Introduce un Nº entero: ') ;
ReadLn (iEntero_1 ) ;
Write ('Introduce otro entero: ') ;
ReadLn ( iEntero_2 ) ;
iSuma := iEntero_1 + iEntero_2 ;
WriteLn ('La suma es: ', iSuma)
END.
© A. Fabián López Valencia
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería (UPV/EHU)
10
Fundamentos de Informática. Lenguajes de programación
5.3.
EJEMPLOS DE HERRAMIENTAS UTILIZADAS EN EL DESARROLLO DE PROGRAMAS
PARA SISTEMA OPERATIVO D.O.S.
5.3.1.
Escribir el programa fuente
Editor ASCII puro:
5.3.2.
CL
FPC
TPC
SUMA_C.C
SUMA_PAS.PAS
SUMA_PAS.PAS
CV
SUMA_C.EXE
Depurar
Depurador de Microsoft C:
5.3.4.
SUMA_BAS.BAS
SUMA_C.C
SUMA_PAS.PAS
Compilar y enlazar (montar o lincar)
Compilador de Microsoft C:
Compilador de FreePascal:
Compilador de Turbo Pascal:
5.3.3.
EDIT
EDIT
EDIT
Entorno integrado (editar, compilar, enlazar, ejecutar y depurar el programa)
Entorno de Microsoft QBasic:
Entorno de Microsoft C:
Entorno de Dev-Pascal:
Entorno de FreePascal:
Entorno de Turbo Pascal:
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería (UPV/EHU)
QBASIC
QC
Dev-pas
FP
TURBO
SUMA_BAS.BAS
SUMA_C.C
SUMA_PAS.PAS
SUMA_PAS.PAS
SUMA_PAS.PAS
© A. Fabián López Valencia
Relación entre lenguaje máquina, ensamblador y lenguaje de alto nivel
© A. Fabián López Valencia
;|*** /* Programa en C SUMA_C.C */
; Line 1
;|***
;|*** #include <stdio.h>
; Line 3
;|***
;|*** void main (void)
;|*** {
; Line 6
PUBLIC _main
_main PROC NEAR
*** 000000
55
push
bp
*** 000001
8b ec
mov
bp,sp
*** 000003
b8 06 00
mov
ax,6
*** 000006
e8 00 00
call
__aNchkstk
;
iEntero_1 = -2
;
iEntero_2 = -4
;
iSuma = -6
;|***
int iEntero_1, iEntero_2, iSuma ;
;|***
;|***
printf ("Introduce un Nº entero: ") ;
; Line 9
*** 000009
b8 00 00
mov
ax,OFFSET DGROUP:$SG168
*** 00000c
50
push
ax
*** 00000d
e8 00 00
call
_printf
*** 000010
83 c4 02
add
sp,2
;|***
scanf ("%d", &iEntero_1) ;
; Line 10
*** 000013
8d 46 fe
lea
ax,WORD PTR [bp-2]
; iEntero_1
*** 000016
50
push
ax
*** 000017
b9 17 00
mov
cx,OFFSET DGROUP:$SG169
*** 00001a
51
push
cx
*** 00001b
e8 00 00
call
_scanf
*** 00001e
83 c4 04
add
sp,4
;|***
printf ("Introduce otro entero: ") ;
; Line 11
*** 000021
b8 1a 00
mov
ax,OFFSET DGROUP:$SG170
*** 000024
50
push
ax
*** 000025
e8 00 00
call
_printf
*** 000028
83 c4 02
add
sp,2
;|***
scanf ("%d", &iEntero_2) ;
; Line 12
*** 00002b
8d 46 fc
lea
ax,WORD PTR [bp-4]
; iEntero_2
*** 00002e
50
push
ax
*** 00002f
b9 31 00
mov
cx,OFFSET DGROUP:$SG171
*** 000032
51
push
cx
*** 000033
e8 00 00
call
_scanf
*** 000036
83 c4 04
add
sp,4
5.4.
Fundamentos de Informática. Lenguajes de programación
ENDP
ENDS
;
iEntero_2
; + iEntero_1
;
iSuma
sp,bp
bp
Ensamblador
ax
ax,OFFSET DGROUP:$SG172
ax
_printf
ax,WORD PTR [bp-4]
ax,WORD PTR [bp-2]
WORD PTR [bp-6],ax
En C:
En Pascal:
Dpto. de Ingeniería de Sistemas y Automática
E.T.S.I.I. y de I.T. de Bilbao
iSuma = iEntero_1 + iEntero_2
iSuma := iEntero_1 + iEntero_2
Equivalencia de códigos
Dirección de memoria (relativa)
Lenguaje máquina (hexadecimal)
mov
pop
ret
8b e5
5d
c3
_main
_TEXT
END
;|***
push
mov
push
call
50
b8 34 00
50
e8 00 00
*** 000042
*** 000043
*** 000046
*** 000047
;|*** }
; Line 17
*** 00004a
*** 00004c
*** 00004d
mov
add
mov
8b 46 fc
03 46 fe
89 46 fa
*** 000039
*** 00003c
*** 00003f
;|***
;|***
iSuma = iEntero_1 + iEntero_2 ;
;|***
;|***
printf ("La suma es %d", iSuma) ;
; Line 16
11
12
6.
Fundamentos de Informática. Lenguajes de programación
BIBLIOGRAFÍA
•
Programación I; José A. Cerrrada y Manuel Collado
Ed. Universidad Nacional de Educación a Distancia, 1993
ISBN: 84-362-2922-3
•
Introducción a la informática. 2ª edición; Alberto Prieto, Antonio Lloris, Juan Carlos Torres
Ed. McGraw-Hill, 1995
ISBN: 84-481-1627-5
Dpto. de Ingeniería de Sistemas y Automática
Escuela Técnica Superior de Ingeniería (UPV/EHU)
© A. Fabián López Valencia