2.2 Lenguajes ensambladores. 2
3.1 Lenguajes de 4º generación. 3
3.2 Leguajes procedimentales. 3
3.5 Lenguajes orientados a objetos. 3
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.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.
Necesitamos 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.
Difí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.
5. 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. |