Tema 24 – Lenguajes de programación.

Tema 24 – Lenguajes de programación.

1.INTRODUCCIÓN.. 2

2. LENGUAJES DE BAJO NIVEL. 2

2.1 Lenguaje maquina. 2

2.2 Lenguajes ensambladores. 2

3. Lenguajes de alto nivel 3

3.1 Lenguajes de 4º generación. 3

3.2 Leguajes procedimentales. 3

3.3 Lenguajes declarativos. 3

3.4 Lenguajes funcionales. 3

3.5 Lenguajes orientados a objetos. 3

4. PROCESO DE TRADUCCIÓN.. 3

4.1 Intérpretes. 4

4.2 Compiladores. 4

5. BREVE HISTORIA DE LOS LENGUAJES DE PROGRAMACIÓN.. 5

6. CARACTERÍSTICAS DE LOS LENGUAJES DE PROGRAMACIÓN.. 6

6.1 Características Fortran. 6

6.2 Características Lisp. 8

6.3 Características Cobol 10

6.4 Características Basic. 11

6.5 Características Prolog. 12

6.6 Características de C++. 13

1.INTRODUCCIÓN

2. LENGUAJES DE BAJO NIVEL

Fuerte dependencia de la maquina en la que se ejecutan. Difícil de comprender, aprender y manipular para el ser humano.

2.1 Lenguaje maquina

Primer lenguaje de programación empleado. Totalmente ligado a la máquina. La CPU como ya sabemos cuenta con una serie de instrucciones en sistema binario y todo programa debe venir expresado según este juego de instrucciones. (Manera directa de programar la CPU). Podemos crear programas compuestos de estas instrucciones básicas y con ellas resolver cualquier problema.

clip_image002Necesitamos saber la arquitectura interna de la máquina. Difícil legibilidad del código.

2.2 Lenguajes ensambladores

Se utilizan códigos mnemotécnicos en vez de números binarios. Más legibles y manipulables los programas.

Se emplean abreviaturas de palabras inglesas que denotan la operación realizada por cada instrucción, y se acompaña de los operandos que requiere dicha instrucción.

clip_image004Difícilmente portables. Difícil manipulación y legibilidad. Necesario profundo conocimiento de la máquina.

3. Lenguajes de alto nivel

Mayor independencia de la máquina. Mayor cercanía al lenguaje humano. Fácilmente manipulables.

Utilizan un programa traductor que se encarga de reservar la memoria necesaria para la ejecución del programa.

Fortran, Cobol, Lisp, Algol, C#, Java

3.1 Lenguajes de 4º generación

Aportan un nuevo nivel de abstracción en la programación, permitiendo desarrollar aplicaciones sofisticadas en un tiempo muy inferior al empleado con un lenguaje de 3º generación.

3.2 Leguajes procedimentales

La mayor parte de los lenguajes. Especifican mediante algoritmos los pasos a seguir para la solución de un problema.

3.3 Lenguajes declarativos

Se hace descripción detallada del problema. Usan IA para la resolución de problemas.

3.4 Lenguajes funcionales

son aquellos lenguajes donde las variables no tienen estado — no hay cambios en éstas a lo largo del tiempo — y son inmutables — no pueden cambiarse los valores a lo largo de la ejecución. Además, los programas se estructuran componiendo expresiones que se evalúan como funciones. Dentro de los lenguajes funcionales tenemos Lisp, Scheme, Clojure, Haskell, OCaml y Standard ML, entre otros.

3.5 Lenguajes orientados a objetos

Se estrecha la relación entre código y datos, utilizando un nuevo paradigma en el que confluyen ambos aspectos (el objeto, más genéricamente la clase)

Características:

Herencia: establece una relación jerárquica entre objetos.

Polimorfismo: una operación puede adoptar diferentes formas.

Encapsulación: da a conocer solo aquellos detalles del objeto que son pertinentes, ocultando detalles de implementación.

4. PROCESO DE TRADUCCIÓN

CPU solo entiende lenguaje máquina constituido por instrucciones en formato binario que son específicas para la máquina empleada.

Cuando empleamos un lenguaje de programación, creamos programas utilizando una sintaxis y reglas de programación que son específicas de dicho lenguaje. (programa fuente no entendible por la CPU)

Necesitamos un proceso de traducción que convierte dicho programa en algo entendible por la CPU.

2 formas: (Interpretación y compilación) à programas llamados intérpretes y compiladores.

4.1 Intérpretes

Traduce un programa escrito en un lenguaje de alto nivel instrucción a instrucción, de forma que una instrucción no se traduce hasta que se haya traducido y ejecutado la anterior instrucción.

Inmediatez en la ejecución (errores detectados y reparados al momento)

Si el programa incluye bucles o subrutinas las instrucciones se repetirán de forma innecesaria. Lentitud.

4.2 Compiladores

Se toma un programa fuente y se traduce en bloque, creando un programa objeto de lenguaje máquina.

Más tiempo que un intérprete. Se necesita traducir todo el programa antes de ejecutarlo.

Una vez traducido, ejecución más rápida, código obtenido más rápido y eficiente.

clip_image006

clip_image0085. BREVE HISTORIA DE LOS LENGUAJES DE PROGRAMACIÓN

Lisp à 1958. Creación y manipulación de listas. Programación funcional (el trabajo es efectuado por funciones que pueden llamar a otras funciones)

Algolà 1960 (por comité de expertos). Lenguaje universal multipropósito. Lenguaje más legible que Fortran.

6. CARACTERÍSTICAS DE LOS LENGUAJES DE PROGRAMACIÓN

6.1 Características Fortran

Hoja de codificación

Datos elementales

Asignación

Operadores aritméticos

Operador de concatenación

· Cada línea 80 caracteres

Zona (1-6): etiquetas

Zona (7-72): instrucciones

Zona (73-80): Caracteres identificación programa

· 1 instrucción/línea

· Líneas comentario: * o C en la 1ra columna

· Integer (enteros)

· Real (real simple precisión)

· Double Precision (reales de doble precisión)

· Complex: núm complejos

· Character: caracteres

· Logical: booleanos

X= 4.5

(variable seguida de =) y valor que damos

· Potencia: **

· Producto y division: * y /

· Suma y resta: + y –

CHARACTER A*7, B*5

A= ‘HOLA’

B= ‘ADIOS’

C=A//B

Funciones para manipular cadenas

Entrada

Salida

Instrucción formato

Estructuras de Conttol

· LEN(): devuelve longitud cadena

· ICHAR(): Código asociado a un carácter

· CHAR(): Carácter asociado a un código

· INDEX(): Posición subcadena dentro de cadena

· Read (opciones) var1,var2,…,varN

Opciones:

UNIT: indica dispositivo donde se va a leer

FMT: Indica etiqueta con instrucción de formato

REC: Núm. registro, ficheros

ERR: Etiqueta donde se desvía si hay error

· WRITE (opciones) var1,var2,…,varN

Opciones:

UNIT: indica dispositivo donde se va a escribir

FMT: Indica etiqueta con instrucción de formato

REC: Núm. registro, ficheros

ERR: Etiqueta donde se desvía si hay error

· nIx: n enteros x dígitos

· nFx.y: n reales con x dígitos e y decimales

· nAx: n cadenas x caracteres

· /: Salto línea

· SP: Especifica signo delante de número

· SS: Especificación de signo solo números negativos

1) Salto incondicional:

GOTO 200

2) Decisión:

If(condición)

Then

Endif

Condición:

.LT: meno

.LE: menor igual

.EQ: igual

.NE: Distinto

.GT: Mayor que

.GE: mayo igual

3) Bucles:

Tipo “for”

Do etiqueta,var=valorini, valorfin, incremento

Funciones

Definición funciones

Subrutinas

SQRT(): Raíz cuadrada

ABS(): Valor absoluto

SIN(): Seno

COS():Coseno

TAN(): Tangente

Para definir una función:

REAL FUNCTION DOBLE(A)

DOBLE= A * A

END

Para definir una subrutina:

SUBROUTINE NOMBRE (variables)

RETURN

Para llamar a una subrutina:

CALL SUB (parámetros)

6.2 Características Lisp

Átomos

Listas

Evaluación

De Expresiones

Quote

Funciones

Aritméticas

Nombre compuesto por cualquier combinación de letras y dígitos

Conjunto de elementos que pueden ser átomos o listas.

(a b c)

(a (b c))

(lista (sublista))

· Un átomo o lista sintácticamente correcta.

· Se usa bucle de evaluación (READ-EVAL-PRINT) para las expresiones.

· Lee una expresión, la evalúa y muestra su valor.

· Evaluación de átomos casi directa.

· Evaluación de lista difícil. Si el primer elemento es una función da por hecho que el resto son argumentos de la función.

· Forma especial que toma un argumento y lo devuelve sin evaluar.

· Quote= ‘

· (setq x (+ 4 2) à 6

Suma: (+ 1 2) à 3

Resta: (- 5 2)à 3

Producto: (*2 3) à 6

División: (/ 6 2) à 3

Resto: (mod 7 3)à 1

Funciones

De construcción de listas

Funciones de acceso

Predicados de igualdad

Condicionales

Funciones lógicas

· Cons: construye una lista tomando un átomo y una lista como argumento

(cons ‘a ‘(b))à (a b)

· List: construye lista a partir de términos pasados.

(list ‘a ‘b ‘c) à (a b c)

· Append: Pasa varias listas y las agrega formando una.

(append ‘(a b)`(c d) à (a b c d)

· Reverse: Devuelve lista pasada como argumento, pero al revés.

(reverse `(a b c d)à (d c b a)

· Car y first: Devuelve primer elemento de una lista.

· Rest y cdr: devuelve lista sin primer elemento.

· Nth: Devuelve el enésimo elemento.

· Eq: Considera que 2 objetos son iguales si ocupan la misma posición de memoria.

· Eql: parecido al anterior, pero en números usa el concepto de igualdad.

· Equal: 2 objetos son iguales si tienen la mismsa estructura y forma.

· Equalp: Menos restrictivo. Permite comparar caracteres sin tener en cuenta mayus, minus, enteros y reales

· If: evalúa condición, si su valor no es nil (falso) evalúa el siguiente.

· When: toma como primer término una expresión que será evaluada. Si devuelve valor diferente a nil, evalúa lo siguiente.

· Unless: complementria a when.

· And: mientras resultado no es nil evalúa todos los argumentos.

· Or: Evalúa los argumentos y cuando encuentra una que no vale termina y devuelve el valor.

· Not: Devuelve true cuando el argumento vale nil.

6.3 Características Cobol

Hoja de codificación

Nombre variables

Divisiones

Instrucciones

Se emplea una hoja dividida en zonas:

Zona 1 (1-6): Numerar líneas

Zona 2 (7): Si aparece – (continuación de la anterior) si aparece * (comentario)

Zona 3 (8-11): Área A, Se escriben los nombres de (div, secciones, párrafos, indicadores FD y niveles variables 01 y 77

– Zona 4 (12-72): Área B, todas las instrucciones del programa

– Zona 5 (73-80): Identificación del programa

Zero(S): valor 0

SPACE(S): carácter en blanco

LOW-VALUE(S): Valor más bajo

HIGH-VALUE(S): Valor más alto

QUOTE(S): comillas

ALL: repite un carácter hasta llenar la variable

Se divide en 4 divisiones:

IDENTIFICATION DIVISION

Nombre programa, autor y fechas de escritura y compilación

-ENVIRONMENTAL DIVISION

Entorno en el que se va a ejecutar

-DATA DIVISION

Aclaramos todas las variables y campos de datos empleados

-PROCEDURE DIVISION

Se ejecuta el código

IF

GOTO

PERFORM

DISPLAY

ACCEPT

MOVE

ADD

SUBTRACT

MULTIPLY

DIVIDE

COMPUTE

OPEN

CLOSE

READ

WRITE

6.4 Características Basic

Tipo de datos

Operadores aritméticos

Operadores relacionales

Operadores lógicos

Estructuras de control de flujo del programa

INTEGER (%): Entero

LONG (&): Entero largo

SINGLE (¡): Real precisión sencilla

DOUBLE (#): Real doble precisión

STRING ($): Cadena

Exponenciación: ^

Producto y div: * y /

Suma y resta: + y –

Mayor: >

Mayor o igual: >=

Menor: <

Menor o igual: <=

Igual: =

Distinto: <>

AND

OR

NOT

XOR

Bucle y saltos

DO…LOOP

FOR…NEXT

IF…THEN…ELSE

Instrucciones E/S dispositivos

Funciones de cadenas

Funciones matemáticas

· CLS: borrar pantalla

· INPUT: Lee teclado e introduce datos

· INKEYS: Lee un solo carácter desde teclado

· PRINT: Escribe datos en pantalla o en archivo

· ASC(cad$): Muestra código ASCII de un carácter

· CHR$(código%): Devuelve carácter correspondiente a un código dado.

· LEFT$(cadena$,n%): Corta cadena por izq

· RIGHT$(cadena$,n%): Corta cadena por dcha

· MID$(cadena$,ini%[,long%]): Extrae subcadena

· LEN(expresión-cadena$): Longitud cadena

· STR$(expresión): Convierte núm. a cadena

· VAL(cadena$): Convierte cadena a valor numérico

ABS(expresión): Valor absoluto

SIN(ángulo): Seno

COS(ángulo): Coseno

TAN(ángulo): Tangente

SQR(expresión): Raís cuadrada

Funciones definidas usuario

Subrutinas

Llamada a subrutina

Puede definirla así:

FUNCTION nombre [parámetros]

[instrucciones]

Nombre=expresión

[instrucciones]

END FUNCTION

SUB nombre [parámetros]

[instrucciones]

END SUB

[CALL] nombre parámetros

6.5 Características Prolog

Variables

Hechos

Reglas

Variables comienzan en Mayus

Tomarán diferentes valores

Variable anónima: “_” se usa si no estamos interesados en dicha variable

Un hecho es una afirmación, algo que el sistema toma como cierto.

– Juan es una persona

– La sardina es un pez

– La hepatitis es una enfermedad

Predicado (arg1, arg2,…,argN)

pàq

consecuente: -antecedente

Se pueden expresar ideas como:

– Toda persona es mortal

– Los peces nadan

– Mortal(X): – persona(X)

– Nada(X): -pez(X)

6.6 Características de C++

Comentario línea

Definición constantes

Argumentos por omisión

Funciones línea

Cambios en tipos enum, struc y unión

Referencias

// puede ser utilizado tras la instrucción

El valor no podrá ser modificado durante la ejecución.

Const char* nombre= “Pedro”

Const float pi=3.141592

Toman por omisión un determinado valor.

Void mifunción (int x, int y=2)

..

..

..

..

..

Mifuncion();

· Inline sirve para la definición de funciones.

· Rápidez porque no se llama a dicha función.

Inline int cuadrado (int a)

..

..

Return a**b

Struct ficha

{

Char * tlf;

Char *nombre;

};

/* ahora definimos variable*/

Ficha agenda;

En C se puede pasar un puntero(dirección) a una función y está puede modificar su valor.

En c++:

Void cambiar (int &a, int &b)

{

Int c= a;

a=b;

b=c;

}

Operadores new y delete

Declaración de una clase

Especificaciones de acceso

Constructores

Destructores

El puntero this

New= crea

Delete= borra

Se crea así:

Class <nombre_clase> [<:clase_base>]

{

<lista_miembros>

} [<lista_objetos>];

3 niveles de acceso.

Private

Muy restrictivo. Solo son accesibles los datos de la propia clase.

Public

Menos restrictivo. Es accesible desde fuera de la clase.

Protected

Mezcla de los anteriores. Solo pueden acceder a este miembro las clases derivadas no las que están fuera de la clase.

Función miembro especial.

Inicializa el objeto. Su nombre coincide con el nombre de la clase.

Se invoca cuando se instancia un objeto.

Eliminan objeto creado previamente.

Puntero especial, hace referencia al objeto.

En una función para acceder al objeto hay que usar la palabra this.