Vous êtes sur la page 1sur 28

SOTO GONZALES DAPHNE – 2014

RIVERA OCAMPO JOSÉ GABRIEL – 20141071


RUDAS APAZA CARLOS ALBERTO – 20141054
VILCAPE ELACONDE CLEOFE - 20142013
Los lenguajes de programación se pueden clasificar en lenguajes de bajo y alto nivel dependiendo de
lo cercanos o lejanos que estén de la arquitectura de la máquina en la que van a funcionar.

Lenguajes de bajo Nivel:


 Están basados directamente en la máquina de Von Neumann, por lo que están a un nivel muy
cercano a la máquina.
 Las instrucciones del lenguaje son las instrucciones del microprocesador del ordenador, que
normalmente son demasiado simples.
 Es exclusivo de cada ordenador.
 Es difícil y costoso de programar
En lenguajes de bajo nivel distinguimos entre lenguaje máquina y lenguaje ensamblador.
 Lenguaje máquina:
 Instrucciones reconocidas por los circuitos del procesador.
 Se codifican en binario.
 Los datos se referencian por su posición de memoria.

 Lenguaje ensamblador:
 Codificación mnemotécnica del lenguaje máquina.
 Necesita un traductor.
 Se pueden utilizar etiquetas en vez de posiciones de memoria
Lenguajes de alto nivel:

 Están basados directamente en la máquina de Von Neumann, por lo que están a un nivel
muy cercano a la máquina.
 Las instrucciones del lenguaje son las instrucciones del microprocesador del ordenador,
que normalmente son demasiado simples.
 Es exclusivo de cada ordenador.
 Es difícil y costoso de programar.
 Al tener que traducirlo, es más lento e ineficiente que el lenguaje de bajo nivel.
a)PARADIGMAS DE PROGRAMACIÓN.
b)CLASIFICACIÓN DE LENGUAJES SEGÚN LA ADMINISTRACIÓN DE
MEMORIA
c)OTRAS CLASIFICACIONES
PARADIGMAS DE PROGRAMACIÓN.
Por paradigma de programación se entiende una “filosofía” de programar, es decir, los
lenguajes que utilizan un mismo paradigma de programación utilizarán los mismos conceptos
básicos para programar. Se pueden definir cuatro tipos fundamentales:
 Imperativos: La unidad de trabajo es la sentencia (acción). Pascal, C.
 Orientados a Objetos: La unidad de trabajo es el objeto. Agrupa las
estructuras de datos con sus algoritmos. Smalltalk.
 Funcionales: La unidad es la función. Consiste en combinar funciones para
conseguir funciones más complejas hasta llegar a la función que es el
programa. Lisp. Basado en el Cálculo Lambda.
 Lógicos: Se especifican los hechos y las propiedades que especifican el
problema. El sistema utiliza esa información para encontrar la solución.
Prolog. Basado en la Lógica de Predicados.
 Estáticos: Los requisitos de memoria del programa se pueden calcular antes
de ejecutar el programa. No permiten recursividad. Fortran, Cobol.
 Basados en pila: Se calculan los requisitos de memoria generales del
programa antes de ejecutarlo. El resto de la memoria necesaria durante la
ejecución del programa se utiliza en forma de pila. Algol 60.
 Dinámicos: No se puede saber a priori la cantidad de memoria que utilizará
el programa. El programa puede crear y destruir estructuras de datos en
cualquier lugar del programa. Prolog, Lisp.
C++ es un lenguaje principalmente basado en pila, pero que también tiene
características dinámicas.
Por la forma en que se pasa a lenguaje máquina.
 Lenguajes compilados → C, Pascal, C++,...
 Lenguajes interpretados → BASIC

Por el objetivo principal de los programas escritos en el lenguaje.


 Lenguajes de propósito general → C, Delphi...
 Lenguajes para la enseñanza → Logo, Pascal, Modula, BASIC...
 Lenguajes para cálculo científico → Fortran, Matlab, Mathematica, Maple...
 Lenguajes para gestión → Cobol...
 Lenguajes para la gestión de bases de datos → System Query Languages (SQL) Informix...
 Lenguajes de inteligencia artificial → Prolog, Lisp...
 Programación multiplataforma e internet → Java
Tipos de datos

 Se denomina dato a cualquier objeto manipulable por el ordenador. Un dato puede ser un
caracter leido de un teclado, informacion almacenada en un disco, un numero que se
encuentra en la memoria central, etc. Los distintos tipos de datos se representan en diferentes
formas en el ordenador: por ejemplo, no se almacena internamente de la misma manera un
numero entero que un caracter. Aunque los lenguajes de alto nivel permiten en alguna
medida ignorar la representaci ́on interna de los datos, es preciso conocer algunos
conceptos minimos.
 A nivel de maquina todos los datos se representan utilizando una secuencia finita de bits. De
este hecho ya se deduce que no todos los datos son representables en un ordenador. La
definicion de un tipo de dato incluye la definicion del conjunto de valores permitidos y las
operaciones que se pueden llevar a cabo sobre estos valores. Cuando se utiliza un dato en
un programa es preciso que este determinado su tipo para que el traductor sepa como debe
tratarlo y almacenarlo. Dependiendo del lenguaje puede o no ser preciso declarar
expresamente en el programa el tipo de cada dato. No todos los tipos de datos existen en
todos los lenguajes de programacion. Hay lenguajes mas ricos que otros en este sentido. Los
tipos de datos basicos mas usuales son:
TIPOS DE DATOS

Números enteros
El tipo int (del inglés integer, que significa «entero») permite representar números enteros.
Los números enteros literales se escriben con un signo opcional seguido por una secuencia de dígitos:

Números reales
El tipo float permite representar números reales.
El nombre float viene del término punto flotante, que es la manera en que el computador representa
internamente los números reales.
TIPOS DE DATOS

Números complejos
El tipo complex permite representar números complejos.
Los números complejos tienen una parte real y una imaginaria. La parte imaginaria es denotada
agregando una j inmediatamente después de su valor:

Valores lógicos
Los valores lógicos True y False (verdadero y falso) son de tipo bool, que representa valores lógicos
Texto
A los valores que representan texto se les llama strings, y tienen el tipo str.
TIPOS DE DATOS

Nulo
Existe un valor llamado None (en inglés, «ninguno») que es utilizado para representar casos en
que ningún valor es válido, o para indicar que una variable todavía no tiene un valor que tenga
sentido. El valor None tiene su propio tipo, llamado NoneType, que es diferente al de todos los
demás valores.
SINTAXIS ABSTRACTA

Dada la gramática de las expresiones del cálculo lambda:

Se puede representar cada expresión del cálculo lambda usando el tipo de dato lc-exp definido
anteriormente mediante define-datatype.
.
ESTRATEGIAS PARA REPRESENTAR DATOS

TEXTO: Una pieza de texto en cualquier idioma es una secuencia de simbolos usados para
representar una idea en ese idioma. Por ejemplo, el idioma inglés utiliza 26 símbolos (A, B, C, ..., Z)
para representar las letras mayúsculas, 26 símbolos (a, b, c,..., z) para representar las letras
minúsculas, 9 símbolos (0, 1, 2,..., 9) para los caracteres numéricos (no números; la diferencia se verá
más adelante) y simbolos (., ?, :, :..., !) para representar la puntuación. Otros símbolos como el
espacio en blanco, la línea nueva y el tabulador se usan para alineación de texto y legibilidad.
Se puede representar cada simbolo con un patrón de bits. Dicho de otra forma, texto como la
palabra "BYTE", formada por cuatro símbolos, puede representarse como 4 patrones de bits, en los
que cada pa- trón define un solo símbolo
ESTRATEGIAS PARA REPRESENTAR DATOS

IMÁGENES: Hoy día las imagenes se representan en un


ordenador mediante uno de dos métodos: gráficos de
mapa de bits o gráficos de vectores. Esta no es una
división tajante, ya que las imágenes vectoriales suelen
admitir la incrustación de imágenes de mapa de bits
en su interior y los programas especializados en dibujo
vectorial (Illustrator, Freehand y CorelDraw!) cada vez
tienen más cualidades de los programas de
tratamiento de imágenes de mapa de bits (Photoshop,
o Corel Photopaint). Lo contrario también es cierto.
ESTRATEGIAS PARA REPRESENTAR DATOS

En este método, una imagen se divide en una matriz de


pixeles (picture elements: elementos de imagen), donde
cada pixel es un pequeño punto. El tamaño del pixel
depende de lo que se conoce como resolución. Por
ejemplo, una imagen puede dividirse en 1000 pixeles o 10
000 pixeles. En el segundo caso, aunque hay una mejor
representación de la imagen (mejor resolución), se
necesita más memoria para almacenarla.
Después de dividir una imagen en pixeles, a cada pixel se
asigna un patrón de bits. El tamaño y el valor del patrón
dependen de la imagen. Para una imagen formada sólo
por puntos blancos y negros (por ejemplo, un tablero de
ajedrez), un patrón de un bit es suficiente para representar
un pixel. Un patrón de 0 representa un pixel negro y uno de
1 representa un pixel blanco. Luego los patrones se
registran uno tras otro y se almacenan en el ordenador.
ESTRATEGIAS PARA REPRESENTAR DATOS

AUDIO
El audio es una representación de sonido o
música. Aunque no hay un estándar para
almacenar el sonido o la música, la idea es
convertir el audio a datos digitales y usar patrones
de bits. El audio por naturaleza es información
análoga. Es continuo (análogo), no discreto
(digital). La figura muestra los pasos a seguir para
cambiar los datos de audio a patrones de bits.
ESTRATEGIAS PARA REPRESENTAR DATOS

Estos pasos son los siguientes:


1. La señal análoga se muestrea. El muestreo
significa medir el valor de la señal a intervalos
iguales.
2. Las muestras se cuantífican. La cuantificación
significa asignar un valor (de un conjunto) a una
muestra. Por ejemplo, si el valor de una muestra es
29.2 y el conjunto es el conjunto de enteros entre 0
y 63, se asigna un valor de 29 a la muestra.
3. Los valores cuantificados se cambian a
patrones binarios. Por ejemplo, el número 25 se
cambia al patrón binario 00011001
 Una BNF especifica una representación particular de un tipo de dato que usa los valores
generados por la gramática.
 Esta representación es llamada sintaxis concreta o representación externa.
 Para procesar dichos datos, se requiere convertirlos a una representación interna o
sintaxis abstracta, en la cual los símbolos terminales (como paréntesis) no necesiten ser
almacenados ya que no llevan información.
 Para crear una sintaxis abstracta a partir de una sintaxis concreta, se debe nombrar cada
regla de producción de la sintaxis concreta y cada ocurrencia de un símbolo no terminal.
 Para la gramática de las expresiones del cálculo λ, se puede resumir las opciones
(sintaxis concreta y abstracta) usando la siguiente notación:
 La sintaxis abstracta de una
expresión es más fácil de
comprender visualizándola
como un árbol de sintaxis
abstracta
 El siguiente ejemplo muestra
el árbol para la expresión
(lambda (x) (f (f x))):
 Los arboles de sintaxis son útiles en lenguajes de programación de procesamiento de
sistemas ya que los programas que procesan otros programas (como los interpretadores o
compiladores) son casi siempre dirigidos por sintaxis.
 Esto es que cada parte de un programa es guiado por la regla gramatical asociada con
dicha parte, y cualquier subparte correspondiente a un símbolo no terminal puede ser
accedido con facilidad.
 Cuando se procesa la expresión (lambda (x) (f (f x))), primero se debe reconocer como
una expresión del cálculo lambda, correspondiente a la regla:

 El parámetro formal es x y el cuerpo es (f (f x)). El cuerpo debe ser reconocido como una
app-exp, y así sucesivamente.
 El problema de convertir un árbol de sintaxis abstracta a una representación lista-y
símbolo (con lo cual Scheme mostraría las expresiones en su sintaxis concreta), se
resuelve con el procedimiento:
 La tarea de derivar el árbol de sintaxis abstracta a partir de una cadena de caracteres es
denominado parsing, y es llevado a cabo por un programa llamado parser (analizador
sintáctico)
 El siguiente procedimiento deriva la representación en sintaxis concreta a ´arboles de
sintaxis abstracta:
 Mostramos que un árbol de sintaxis abstracta (AST) ad-hoc es más
conveniente que un árbol de derivación ya que permite ventajas en
términos del espacio de memoria necesario para almacenarlo, tiempo
requerido para recorrerlo y facilidad de mantención.

Vous aimerez peut-être aussi