• No se han encontrado resultados

Algorítmica y Lenguajes de Programación. Lenguajes de programación

N/A
N/A
Protected

Academic year: 2021

Share "Algorítmica y Lenguajes de Programación. Lenguajes de programación"

Copied!
16
0
0

Texto completo

(1)

Algorítmica y Lenguajes de Programación

Lenguajes de programación

Lenguajes

.

Introducción

n

Un lenguaje de programación permite

expresar un algoritmo de forma

comprensible para un ordenador.

n

FORTRAN

será el lenguaje de programación

a utilizar durante el curso.

n

Antes de

comprender

cómo

funciona

un

lenguaje

de

programación

es necesario

entender

cómo

trabaja

un

ordenador

(2)

3

Lenguajes

.

Máquinas algorítmicas

n Ordenadores actuales aproximadamente medio siglo. n Antecedentes históricos:

n 3000 AC: Ábaco.

n 1274: Ramón Llull, dispositivos demostraciones lógicas. n 1500: Leonardo DaVinci, máquinas de calcular mecánicas. n 1624: Schickard desarrolló una calculadora con 4

operaciones básicas.

n 1671: Leibniz construyó una calculadora con las 4 operaciones más la raíz cuadrada.

n 1830: Babbage diseño una computadora programable impulsada a vapor. Su colaboradora, Ada Lovelace, escribió programas para la máquina.

n Posteriormente: tarjetas perforadas, electricidad, lámparas, transistores y chips...

4

Lenguajes

.

Arquitectura Von Neumann (i)

n En 1944 John von Neumann, Proyecto

Manhattan, escribió un artículo en el que describía una arquitectura, inspirada por las ideas de

Babbage, que aún perdura.

n La arquitectura Von Neumann divide el

ordenador en 4 partes:

1. Unidad Aritmética (UA). 2. Unidad de Control (UC). 3. Memoria (M).

(3)

5

Lenguajes

.

Arquitectura Von Neumann (ii)

n

La

Unidad Aritmética

realiza operaciones

aritméticas básicas y funciones más

complejas (raíces, logaritmos, funciones

trigonométricas, etc.)

n

La

Unidad de Control

controla la ejecución

de las operaciones y dirige el funcionamiento

del resto de unidades de tal forma que el

trabajo conjunto de todas conduzca a la

consecución de las tareas específicas

programadas en el sistema.

Lenguajes

.

Arquitectura Von Neumann (iii)

n

La

Unidad de Control

realiza las siguientes

operaciones:

1. Recupera de memoria la siguiente instrucción a

ejecutar.

2. Decodifica la instrucción y determina las acciones

que debe llevar a cabo.

3. Envía órdenes a la memoria para recuperar o

almacenar datos, a la UA para llevar a cabo operaciones y a los dispositivos de E/S para recibir o envíar datos al usuario.

(4)

7

Lenguajes

.

Arquitectura Von Neumann (iv)

n

La

Memoria

almacena tanto datos

numéricos como instrucciones; está

dividida en celdas, cada una con una

dirección única que permite el acceso a

su contenido.

n

Los

dispositivos de entrada/salida

con la máquina.

8

Lenguajes

.

Arquitectura Von Neumann (v)

n La arquitectura Von Neumann no hace

referencia a cuestiones de índole tecnológica; una máquina electrónica puede implementar esta arquitectura de la misma forma que un dispositivo mecánico. Memoria Unidad de Control Unidad Aritmética Dispositivos E/S Usuario

(5)

9

Lenguajes

.

El código binario (i)

n Los ordenadores utilizan internamente el código

binario.

n La mínima información que puede manipular un ordenador electrónico es un dígito binario, también llamado bit: 0 y 1. Los bits pueden agruparse formando unidades superiores:

n 23=8 bitsforman un byte, octeto o carácter. n 210= 1024 bytesforman un kilobyteo K.

n 1024 kilobytesforman un megabyteo mega. Un megabyte es aproximadamente el tamaño de un disquete.

n 1024 megabytesforman un gigabyteo giga. El código genético de un ser humano ocupa apenas 3 gigabytes. n 1024 gigabytesforman un terabyteo tera. Un terabyte

puede almacenar más de 100 días de audio.

Lenguajes

.

El código binario (ii)

n

El

sistema binario

permite representar

cualquier número natural

(con tal de

disponer de suficientes dígitos); por ejemplo

el número binario

10010110

se corresponde

al número

150

decimal:

10010110 = 1·27 + 0·26 + 0·25 + 1·24 + 0·23

+ 1·22 + 1·21 + 0·20 = 128 + 0 + 0 + 16

+ 0 + 4 + 2 +0 = 150

n

Para convertir un número decimal a binario

basta con realizar una serie de divisiones en

cascada.

(6)

11

Lenguajes

.

El código binario (iii)

n

Conversión de un número decimal a

binario:

150 2 0 75 2 ∪ 1 37 2 ∪ 1 18 2 ∪ 0 9 2 ∪ 1 4 2 ∪ 0 2 2 ∪ 0 1 2 ∪ 1 00 1 1 0 1 0 0 1 20 21 22 23 24 25 26 27 1 0 0 1 0 1 1 0 12

Lenguajes

.

Representación de caracteres

n Para representar caracteres en un sistema binario debe

desarrollarse un códigoconocido por todos los usuarios que establezca:

n Los caracteres de los que dispondrá el código.

n El número asociado a cada carácter (dicho número se podrá representar,

obviamente, en binario).

n Los códigos de caracterescodifican cada elemento

utilizando un byte; por tanto, es posible representar 256 caracteres. Los caracteres a representar se agrupan en cinco categorías:

1. Caracteres alfabéticos: A-Z, a-z

2. Caracteres numéricos: 0-9

3. Caracteres especiales: ?, !, {, (, etc.

4. Caracteres de control: no son imprimibles. 5. Caracteres expandidos: á, Ç, Ñ, etc.

n El código de caracteres más comunmente usado es el ASCII

(7)

13

Lenguajes

.

Representación de valores lógicos

n Los valores lógicos son dos: verdaderoy falso;

para codificarlos bastaría con emplear un solo bit asignando de manera arbitraria el 1 y el 0 a cada uno de esos valores.

n Por cuestiones de eficiencia, los ordenadores no

manipulan bits individuales sino bytes por lo que la

representación de los valores lógicos emplea

siempre un byte. Dependiendo de la máquina, dicho byte puede tener todos los bits a 1 o a 0, o emplear un bit determinado para la representación del valor lógico.

Lenguajes

.

Representación de enteros

n Los números enteros pueden tener signo o no; en caso de enteros sin

signola representación se hace codificando el número directamente en base 2. Sin embargo, no se puede utilizar un número arbitrario de bits para representar un valor, sino que es necesario especificar la

longitudde los mismos.

n Los ordenadores utilizan enteros sin signo de 2 bytes(enteros

cortos) y enteros sin signo de 4 bytes (enteros largos). Con 16 bits es posible representar 65.536 valores con lo cual el rango de los enteros cortos sin signo es el [0 , 65.535]; en los enteros largos sin signo es [0 , 4.294.967.296].

n Por tanto, un ordenador no puede representar cualquier valor

sino un valor perteneciente al rango determinado.

n Para los enteros con signose utiliza un bit para representar el signo.

El rango de enteros cortos con signoes [-32.768 , 32.767], y los

(8)

15

Lenguajes

.

Representación de reales

n Para codificar los números reales se utiliza el formato exponencial, es decir de la forma:

mantisa x 2exponente

n Para codificar un número en este formato se utiliza una parte de los

bits para la representación de la mantisa y otra parte para la representación del exponente.

n Como en el caso de los enteros habrá un rango de valores y, además,

una limitación en la precisión debido a que el exponente también se deberá limitar a un rango específico.

n Por tanto, existe un error de representaciónpuesto que habrá

infinitos números que no se pueden representar de forma exacta en un ordenador:

n Números con infinitas cifras decimales (como los irracionales). n Números con más cifras decimales que las representables.

n Números con demasiadas cifras significativas (números excesivamente

grandes o excesivamente pequeños).

16

Lenguajes

.

Representación de datos

n Aunque un ordenadorelectrónico sólo puede manipular

números en base 2 es posible representar cualquier tipo de dato:

n Los caracteresse representan mediante la definición de un conjunto de símbolos para cada uno de los cuales se asocia un número natural (representable en binario).

n Los valores lógicos se representan de forma inmediata asociando a

los valores verdaderoy falsoun valor binario arbitrario.

n Los enteros sin signose representan de forma directa y para los

enteros con signose emplea un bit para indicar el signo del entero.

n Los realesse dividen en mantisay exponenterepresentando ambas partes como enteros con signo.

n Esta forma de representar la información supone la

(9)

17

Lenguajes

.

Lenguaje máquina

n Las instruccionesque maneja la Unidad de Controltambién deben

representarse en forma binariapara poder ser almacenadas en la memoria.

n Este conjunto de instrucciones codificadas en binario se conoce con el

nombre de lenguaje máquina; es el lenguaje de programación más básico y el único que entiende un ordenador.

n Resulta muy tediosoprogramar en código máquina:

0000 0000 0010 0000 0000 0000 0010 0000 1110 0010 0010 0001 0000 0000 0010 0000

n La primera instrucciónpermite sumar dos números enteros y almacenar el resultado en una tercera posiciónmientras que la segundapermite restar dos números realesy almacenar el resultado en una tercera posición. Está claro, ¿¡verdad!?

n Antiguamentelos ordenadores se programaban asípero eran máquinas

rudimentarias con pocas instrucciones.

n En la actualidadhay que utilizar lenguajes más avanzados que se deben

traducir a código máquina.

Lenguajes

.

Lenguaje ensamblador

n Los lenguajes ensambladoresson una versión simbólica de los

lenguajes máquina; por cada instrucción de la máquina se crea un símbolo que puede utilizar el programador; así, las instrucciones anteriores se escribirían como:

add.i c a b sub.f c a b

n Aunque aún es críptico resulta más sencillo programaren un lenguaje

de este tipo que en código máquina.

n Reciben este nombre porque las instrucciones básicas del lenguaje

ensamblador eran en realidad pequeños programas escritos directamente en código máquina; cuando un programador debía escribir un nuevo programa con ese lenguaje en realidad estaba ensamblando código máquina.

n Tanto los lenguajes ensambladorescomo el código máquina son

totalmente dependientes del ordenador: un programa en código máquina (o en ensamblador) sólo funciona en un tipo de ordenador y no

(10)

19

Lenguajes

.

Lenguajes de alto nivel

n Los lenguajes ensambladoresseguían siendo engorrososy específicos de cada

tipo de ordenador. Así era muy difícil transportar un algoritmo de un ordenador a otro.

n Los lenguajes de alto nivel solucionan estos problemas. Sonindependientes

de la máquina y, por tanto, portables: un algoritmo escrito en un lenguaje de alto nivel puede utilizarse en ordenadores diferentes.

n Los lenguajes de alto nivelson traducidos a lenguaje máquina porun

programa especial denominado compilador.

n Un compilador toma como entrada un algoritmo escrito en un lenguaje de alto nivel y

lo convierte a instrucciones inteligibles por cada ordenador.

n Las anteriores instrucciones podrían representarse en un lenguaje de alto nivel (como

FORTRAN) de la forma siguiente:

c = a + b c = a - b

n FORTRAN, Pascal, C, C++ o Java son ejemplos de lenguajes de alto nivel. n Todos los lenguajes de alto nivel son muy similares; una vez aprendido un

lenguaje de programación de alto nivel es bastante sencillo aprender otros nuevos.

20

(11)

21

Lenguajes

.

Historia de

FORTRAN

n FORTRAN es un acrónimo de FORmula

TRANslator (Traductor de Fórmulas).

n Es el lenguaje de programación más antiguo; fue desarrollado por John Backus para IBM a finales de los años 50.

n FORTRAN fue diseñado para su uso por

matemáticos, ingenierosy científicos en general y sigue siendo de gran importancia en estos campos. n A lo largo de estos 40 años han surgido varias

versiones de FORTRAN; las más comúnmente utilizadas son FORTRAN 77 y 90, nosotros emplearemos la última.

Lenguajes

.

Variables en

FORTRAN

n

Nombres formados por caracteres

alfanuméricos.

n

Excluyendo (á...ú, Á...Ú, ñ, Ñ y espacio en

blanco).

n

No empiezan por número ni subrayado.

n

No sensibles a mayúsculas.

n

Ejemplos válidos:

v

,

aceleracion

,

K

,

v1

,

b_n

,

Pot

, ...

n

Ejemplos

no

válidos:

1n

,

_v2

,

año

,

p v

,

(12)

23

Lenguajes

.

Tipos de datos en

FORTRAN

n

En la

notación algorítmica

existían

cuatro tipos de datos:

entero

,

real

,

logico

y

caracter

.

n

En

FORTRAN

existen

tipos

equivalentes

denominados:

integer

,

real

,

logical

y

character

.

24

Lenguajes

.

Enteros en

FORTRAN

n Los tipos enteroe integerson totalmente equivalentes; la única

diferencia radica en la forma de realizar las operaciones división entera

(div) y módulo/resto(mod).

n En el caso de la notación algorítmica se aplicarían como sigue: division ßß dividendo div divisor

modulo ßß dividendo mod divisor n Mientras que en FORTRANse haría de esta forma:

division = dividendo / divisor modulo = mod (dividendo, divisor)

n FORTRAN no dispone de un operador específico para la división

entera, emplea el operador /.

n Este hecho es fuente de múltiples confusiones puesto que el operador/ realiza divisiones enteras siel divisores de tipo integery reales si

el divisores de tipo real; así pues, ¡atención!

n El módulo no se trata de un operador sino de una función que recibe

(13)

25

Lenguajes

.

Reales en

FORTRAN

n Los tipos real(de la notación) y real (de

FORTRAN) son también equivalentes. n Las operaciones cambian de notación:

n La raíz cuadradase corresponde con la función sqrt

(square root).

n La potenciaciónse corresponde con el operador **.

n El logaritmocon la función log.

n Las funciones trigonométricasmás habituales son:

n sin(seno),

n cos(coseno),

n tan(tangente),

n asin(arco seno),

n acos(arco coseno) y

n atan(arco tangente).

Lenguajes

.

Lógicos en

FORTRAN

n Los tipos logico y logical son equivalentes.

n Los valoresadmisibles son .true. y .false.

(atención al punto inicial y final). n Las operacionesadmitidas son:

n .and.(y-lógico),

n .or.(o-lógico) y

n .not.(no-lógico).

n Al igual que en la notación algorítmica, los

operadoresde comparación de FORTRAN dan como resultado valores de tipo logical.

(14)

27

Lenguajes

.

Caracteres en

FORTRAN

n

Los tipos

caracter

y

character

son

muy

similares

aunque presentan un par de

diferencias importantes:

n El operador de concatenación no es +sino //.

n En FORTRAN hay que indicar la longitud de

una variable de tipo character; es decir, el

número de caracteres máximo que admite.

n Por ejemplo, supongamos una variable de tipo

characterdenominada uno y otra variable character*7denominada siete, si se intenta

introducir el literal ‘dificil’en ambas variables

veremos que unoalmacena únicamente ‘d’ mientras

que sietealmacena la cadena completa.

28

Lenguajes

.

Comparación y asignación en FORTRAN

n Todos los tipos admiten las operaciones de

comparación: n mayor (>), n menor (<), n mayor o igual (>=), n menor o igual (<=), n igual (==) y n distinto (!=).

n Como ya se dijo, el resultado de una

comparación es un valor de tipo logical.

n Obsérvese que la igualdades == y no =, eso es así

porque el operador de asignaciónen FORTRANes

(15)

29

Lenguajes

.

Literales y expresiones en FORTRAN

n En FORTRAN también existen los literales y se

pueden definir constantes(denominadas parámetros).

n Para definir una constante se emplea la notación:

tipo, parameter :: constante = literal

n Por ejemplo,

real, parameter :: pi = 3.141592 real, parameter :: g = 9.796376

n En FORTRAN también se dispone de expresiones,

análogas a las de la notación algorítmica.

Lenguajes

.

E/S y estructura programa en FORTRAN

n

En

FORTRAN

también existen

operaciones

de entrada/salida

; las acciones se

denominan

read

(

leer

) y

print

(

escribir

).

Se verán en profundidad más adelante.

n

La estructura de un algoritmo descrito en

FORTRAN

también se dejará para una

lección posterior puesto que, aunque similar a

nuestra notación algorítmica, presenta

(16)

31

Lenguajes

.

Resumen

n Ordenadores actuales tienen una historia de 50 años pero hay precedentes durante los

siglos XVI, XVII y XVIII.

n Todos los ordenadores electrónicosse basan en la arquitectura Von Neumann

(1944 ) que divide el ordenador en 4 partes:

1. Unidad Aritmética(UA). 2. Unidad de Control(UC). 3. Memoria(M).

4. Dispositivos de entrada/salida(E/S).

n Ordenadores utilizan el código binario(base 2); la mínima unidadde informaciónen este código es el bit, las agrupaciones de bits reciben los nombres:

byte, kilobyte, megabyte, gigabytey terabyte.

n Es posible representaren binariocualquier tipo de dato: n Enteros sin signo.

n Enteros con signo. n Reales. n Lógicos. n Caracteres.

n Un ordenador representalas instruccionesen forma binaria, ese lenguaje se

denomina código máquina.

n El código máquinaes el lenguajemás básicoy resulta muy arduoprogramar en él.

Además, noes portablepues es específicode cada tipo de ordenador.

32

Lenguajes

.

Resumen

n El ensambladores un lenguaje más avanzadoque el código máquina.

n Cada instrucción ensamblador es una representación simbólica de u . n Resulta más sencilloprogramar en ensamblador que en código máquina.

n El ensambladortambién es específicode cada ordenador y, por tanto, tampoco es

portable.

n Los lenguajesde alto nivelestán más cercanos a la forma de resolver problemas los

humanos; son independientesdel ordenador y, por tanto, portables.

n Los lenguajesde alto nivelson traducidosa código máquinaespecífico para cada

ordenador por programas llamados compiladores.

n Ejemplos de lenguajesde programación del alto nivelson FORTRAN, Pascal, C, C++ o

Java.

n FORTRANes un acrónimo de FORmula TRANslator. Es el lenguaje de alto nivel más

antiguo (finalesde los 50).

n FORTRAN, al igual que la notación algorítmica aunque con ciertas difere ncias, soporta: n Variables.

n Tipos de datos: character, integer, real y logical. n Literales y constantes.

n Expresiones.

n Operación de asignación: operador =. n Operaciones de entrada/salida: read y print.

Referencias

Documento similar

Mientras más parecido sea el lenguaje al lenguaje máquina o binario su nivel será menor y contrapuesto se tendrá los lenguajes de alto nivel que se asemejan

Un compilador es un programa que traduce los programas fuente escritos en lenguajes de alto nivel a lenguaje máquina.... Los programas escritos en lenguajes de alto nivel (en el

Los compiladores son programas que hacen conversiones similares a los ensambladores pero sirven para lenguajes de programación de alto nivel, un

INTÉRPRETES Y COMPILADORES Antes de pasar a ver los principales lenguajes de programación, debemos hacer un alto para comentar una característica común a todos ellos: las órdenes dadas

• Compilador: programa que traduce los programas fuentes escritos en lenguajes de alto nivel a lenguaje de máquina, produciendo un programa objeto. Departamento de Teoría de la

programas, lenguajes de programación, lenguaje ensamblador, lenguaje de máquina, ensambladores, intérpretes, compiladores, sistema operativo.. UNIDAD II:

Esto es posible porque los lenguajes de alto nivel son traducidos a lenguaje máquina por un tipo de programa especial denominado “compilador”, un compilador toma como entrada

En la mayoría de los lenguajes con tipos, el sistema de tipos es usado solamente para checar los tipos de los programas, pero varios lenguajes, generalmente funcionales, llevan a