Sie sind auf Seite 1von 18

ALGORITMOS y

PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

INTRODUCCIÓN - DEFINICIONES

DATO, PROCESO E INFORMACIÓN


Dato e información son dos términos que suelen confundirse. Se consideran datos a toda
entrada de información a una computadora. Estos datos pueden ser administrativos, científicos,
comerciales, etc. son elementos primitivos, de los cuales a través del procesamiento se obtiene la
información.
La computadora se utiliza para procesar en forma automática y a gran velocidad esos datos.
Como resultado del procesamiento de esos datos se obtiene la información deseada, la cual será
útil en la toma de decisiones.

DATO PROCESO INFORMACIÓN

SISTEMA
Un sistema es un conjunto de componentes relacionados que interactúan para realizar
una tarea. Un sistema de informática está compuesto por el Hardware (CPU, dispositivos
periféricos) y el Software (sistema operativo y los programas). El software de un sistema de
información está formado por los datos, los programas de ingreso, actualización e informe de
resultados y los procedimientos manuales y por máquina.

ESTRUCTURA DE UNA COMPUTADORA


Una PC es una computadora personal, originalmente diseñada para servir a un sólo
usuario. Sale al mercado en 1981 y va evolucionando en capacidad y velocidad, además su costo
se va reduciendo. Existen diferentes configuraciones para adecuarse a la múltiples necesidades de
los usuarios.
La informática es la ciencia que estudia el tratamiento, elaboración , transmisión y utilización
de la información. Es una ciencia porque constituye un conjunto de conocimientos de validez
universal y porque utiliza el método científico para el logro de sus objetivos.
Se denomina HARDWARE (ferretería) a todos los componentes electrónicos y mecánicos, es
decir físicos de una computadora.
Se denomina SOFTWARE al conjunto de programas o procedimientos que determinan las
acciones de la máquina, es todo lo concerniente a la programación.
Las computadoras están estructuradas según un modelo básico de funcionamiento que
describe la interacción que se realiza entre los elementos que la componen. Este modelo es:

Página 1 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

MONITOR

MOUSE CPU IMPRESORA

SCANNER TECLADO MÓDEM

UNIDADES
Las unidades son las partes físicas que componen nuestro ordenador, y se clasifican en
unidades de entrada–salida (E/S) denominadas periféricos, y la unidad de proceso (UCP o
CPU). Además de las unidades encontramos los soportes, que son elementos externos al
ordenador, no imprescindibles para su funcionamiento, pero necesarios para el almacenamiento de
la información.

Unidades E/S
Las unidades de entrada–salida son aquellos elementos del hardware que fueron diseñados
para el ingreso y egreso de los datos. Existen unidades cuya tarea específica es el ingreso de
datos, otras que solo sirven para el egreso de la información, y hay un tercer grupo que puede
cumplir con ambas funciones.
Teclado
Mouse o Ratón, TrackBall, Cat
Scanner
Entrada Lectora de barras
Lápiz óptico
Lectora de CD-ROM (DVD)
Micrófono
Monitor
Sistema de vídeo
Unidades de Placa de vídeo
Impresora
Entrada–Salida Salida Plotter
Parlante
Placa de audio
Sistema de audio
Parlantes
Modem
Disqueteras
E/S Grabadora/Reproductora de CD
Integer
Pantallas táctiles

Página 2 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

Soportes de la información
Los soportes de la información son medios físicos de almacenamiento de información. Ellos
pueden ser clasificados como:
Papel: es el soporte más antiguo de información que aún sigue en uso. Listados
Magnéticos: son aquellos medios que están basados en las propiedades magnéticas para el
registro de la información. La mayoría de los mismos son usados como elemento de
almacenamiento masivo.
♦ Cintas de carrete abierto de 1/2" de ancho.
♦ Cintas de vídeo (casete denominado super 8)
♦ Disquetes
♦ Cintas en tarjetas plásticas
Medios Ópticos: están basados en la capacidad de poder o no reflejar la luz emitida por un
determinado elemento (emisor)
♦ CD-ROM.
♦ DVD (Digital Vídeo Disk o Digital Versatil Disk
El Disco Rígido es difícil de catalogar ya que es un sistema en sí mismo, y posee una unidad
de entrada/salida que son las cabezas lectoras-grabadoras y un soporte que son los
discos propiamente dicho. Alguno de ellos vienen con una pequeña pero completa
unidad de proceso.

LA UNIDAD CENTRAL DE PROCESO Y EL PROCESADOR


La unidad central de proceso UCP es el verdadero cerebro de la computadora; su misión
consiste en coordinar y controlar o realizar todas Las operaciones del sistema. Se compone de
elementos cuya naturaleza es exclusivamente electrónica (circuitos).
Sus partes principales son Las siguientes:
♦ El Procesador (P). Que a su vez se compone de:
• La unidad de control (UC).
• La unidad aritmético–lógica (UAL).
♦ La Memoria Central (MC).
La unidad central de proceso también incorpora un cierto número de registros rápidos
(pequeñas unidades de memoria) de propósito especial, que son utilizados internamente por la
misma.
Una aproximación a diseño interno de un microprocesador es el siguiente

Página 3 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

Figura 1

Como vemos en el esquema 1, la unidad de control y la unidad aritmético–lógica constituyen


lo que se ha venido a denominar el procesador central del sistema; este elemento es parte de la
unidad central de proceso encargada del control y ejecución de las operaciones del sistema. Estos
elementos en un ordenador personal se encuentran integrados en un único chip llamado
microprocesador. Las funciones principales de la UCP de un ordenador son:
• Ejecutar las instrucciones de los programas almacenados en la memoria del
sistema.
• Controlar la transferencia entre la UCP y la memoria o las unidades de E/S
• Responder a las peticiones de servicio procedente de los periféricos.
Todo programa tiene como objetivo realizar diferentes funciones o aplicaciones, solo limitadas
por la capacidad e imaginación del programador.
Para que un programa sea ejecutado el mismo se debe hallar en determinadas posiciones de
memoria y escrito en un lenguaje que la UCP pueda entender. La UCP lo único que comprende es
lenguaje binario.
La UCP lee en forma ordenada la lista de instrucciones, luego las interpreta, y posteriormente
controla su ejecución de cada una de ellas. Las ejecuciones se realizan en forma consecutiva una
tras otra.

Página 4 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

Para ejecutar cada instrucción la UCP realiza la siguiente serie de pasos:


• Lee de la memoria la instrucción que hay que ejecutar y la guarda en un
registro interior de la UCP.
• Identifica la instrucción que acaba de leer
• Comprueba si la instrucción necesita utilizar nuevos de memoria, si fuera así,
determina donde debe ir a buscarlos.
• Busca los datos en la memoria y los trae en UCP.
• Ejecuta la instrucción propiamente dicha.
• El resultado de la misma puede ser que se almacene o invoque la necesidad
de tener que comunicarse con la memoria o con otro elemento externo a la
propia UCP.
• Vuelve al primer paso para empezar una nueva instrucción.
La anterior es una lista simplificada de los pasos que ejecuta el microprocesador.
La ejecución de cada instrucción implica el movimiento de datos, como estos pasos deben ser
se deben realizar en forma secuencial y ordenada, para lo cual la UCP siguen las señales dadas
por un reloj. El reloj es un elemento simple pero de gran importancia como se verá luego. Para una
mejor compresión del funcionamiento de la UCP, la misma se puede dividir en dos unidades la
unidad de control y la unidad aritmético-lógica.
.
Unidad de control (UC)
La unidad de control (UC) es el centro nervioso de la computadora; desde ella se controla y
gobiernan todas las operaciones (búsqueda, decodificación, y ejecución de la instrucción). Para
realizar su función, consta de los siguientes elementos:
 Registro de contador de programas (CP)
 Registro de Instrucciones (RI)
 Decodificador (D)
 Reloj (R)
 Generador de Señales o Secuenciador (S)
Registro de contador de programas (CP). También denominado registro de control de
Secuencia (RCS), contiene permanentemente la dirección de memoria de la próxima instrucción a
ejecutar. Si la instrucción que se está ejecutando en un instante determinado es de salto o de
ruptura de secuencia, el RCS tomará la dirección de la instrucción que se tenga que ejecutar a
continuación; esta dirección la extraerá de la propia instrucción en curso.
Como ya se dijo el primer paso para la ejecución de una instrucción, consiste en ir a buscarla
en memoria, el CP indica cual es la dirección de memoria donde se halla esa instrucción. Una vez
obtenida y antes de continuar con los siguientes pasos una señal de control incrementa el CP en
una unidad, por lo cual los programas deben estar escritos (cargados) en posiciones consecutivas
de memoria. El CP pasa la dirección al Registro de Direcciones
Registro de Direcciones (RD). Contiene la dirección de memoria donde se encuentra la
próxima instrucción y esta comunicado con el Bus de Direcciones. El tamaño de este registro
determina el tamaño de la memoria que puede direccionar.( Si es de 32 bits se puede direccionar
232=4.294.967296 (4 GB posiciones de memoria).
Con la dirección de memoria, se transfiere a través el Bus de Datos desde la memoria central
al Registro de Datos en la UC la instrucción correspondiente. Esta transferencia se realiza mediante

Página 5 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

señales de control. Una vez que la instrucción se encuentra en la UCP, el código de la instrucción
pasa al registro de instrucciones.
Registro de Instrucciones (RI). Contiene la instrucción que se está ejecutando en cada
momento. Esta instrucción llevará consigo el código de operación (CO), acción de que se trata, y en
su caso los operandos o las direcciones de memoria de los mismos. Pasa el CO al decodificador.
Decodificador (D). Se encarga de extraer y analizar el código de operación de la instrucción
en curso (que está en el RI) y dar las señales necesarias al resto de los elementos para su
ejecución por medio del Generador de Señales.
Generador de Señales(GS). En este dispositivo se generan órdenes muy elementales
(microórdenes) que, sincronizadas por los impulsos del reloj, hacen que se vaya ejecutando poco a
poco la instrucción que está cargada en el RI.
Reloj (R). Proporcionar una sucesión de impulsos eléctricos a intervalos constantes
(frecuencia constante), que marcan los instantes en que han de comenzar los distintos pasos de
que consta cada instrucción.

Figura 2

Unidad aritmético–lógica (UAL)


Esta unidad es la encargada de realizar las operaciones elementales de tipo aritmético
(generalmente sumas o restas) y de tipo lógico (generalmente comparaciones). Para realizar su
función, consta de los siguientes elementos:
 Banco de registros (BR).
 Circuitos operadores (CIROP).
 Registro de resultado (RR).
 Señalizadores de estado (SE).

Página 6 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

Banco de registros (BR). Está constituido por 8, 16 ó 32 registros de tipo general que sirven
para situar dates antes de cada operación, para almacenar datos intermedios en las operaciones y
para operaciones internas del procesador.
Circuitos operadores (CIROP). Compuesto de uno o varios circuitos electrónicos que
realizan operaciones elementales aritméticas y lógicas (sumador, complementador, desplazador,
etc).
Registro de resultado (RR). Se trata de un registro especial, en el que se depositan los
resultados que producen los circuitos operadores.
Señalizadores de estado (SE). Registro con un conjunto de biestables en los que se deja
constancia de algunas condiciones que se dieron en la última operación realizada.

LA MEMORIA CENTRAL (MC)


Es la parte de la unidad central de proceso de una computadora donde están almacenadas
las instrucciones y los datos necesarios para que un determinado proceso pueda ser realizado.
La memoria central está constituida por una multitud de celdas o posiciones de memoria,
numeradas de forma consecutiva, capaces de retener, mientras la computadora esté conectada, la
información necesaria.
Por otra parte, es una memoria de acceso directo, es decir, puede accederse a una de sus
celdas conociendo su posición. Para esta memoria el tiempo de acceso es más corto que para Las
memorias auxiliares, por tanto, los datos que manejan los procesos deben residir en ella en el
momento de su ejecución.
Es importante no confundir los términos celda o posición de memoria con el de palabra de
computadora, ya que esta última es el conjunto de posiciones de memoria que pueden introducirse
o extraerse de la memoria de una solo vez (simultáneamente).

Página 7 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

La memoria central tiene asociados dos registros para la realización de operaciones de lectura
o escritura, y un dispositivo encargado de seleccionar una celda de memoria en coda operación de
acceso sobre la misma:

 Registro de dirección de memoria (RDM)).


 Registro de intercambio de memoria (RIM).
 Selector de memoria (SM).
· Registro de dirección de memoria (RDM). Contiene la dirección de memoria donde se
encuentran o va a ser almacenada la información (instrucción o dato), tanto si se trata de una
lectura como de una escritura de o en memoria central, respectivamente.
· Registro de intercambio de memoria (RIM). Si se trata de una operación de lectura, el RIM es
quien recibe el dato de la memoria señalado por el RDM, para su posterior envío a uno de Los
registros de la UAL. Si se trata de una operación de escritura, la información a grabar tiene que
ester en el RIM, para que desde él se transfiera a la posición de memoria indicada por el RDM.
· Selector de memoria (SM). Es el dispositivo que, tras una orden de lectura o escritura,
conecta la celda de memoria cuya dirección figure en el RDM con el RIM, posibilitando la
transferencia de Los dates en un sentido o en otro.
La memoria central suele ser direccionable por octeto o byte; por tanto, una celda o posición de
memoria contiene 8 bits. Una de Las características fundamentales de una computadora es su
capacidad de memoria interna (memoria central), la cual se mide en un múltiplo del byte
denominado Kilobyte, Kbyte, Kb o simplemente K, y que equivale a 1 024 bytes (1 024 = 2'°). Otro
múltiplo utilizado ampliamente en Los últimos tiempos es el Megabyte o simplemente Mega, que
equivale a 1 024 * 1 024 Bytes; es decir, a 1 048 576 bytes.

Bus de Bus de
Direcciones Datos

Registro de dirección Registro de intercambio


de memoria de memoria
Bus de
Control
Selector
Memoria Central
0001
0010

0110

1011

TIPOS DE INSTRUCCIONES

Página 8 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

Nos referiremos en este apartado a instrucciones del lenguaje máquina. Son aquellas que
puede ejecutar directamente el hardware de la computadora.
Las instrucciones máquina se pueden clasificar por la función que desempeñan en:
♦ Instrucciones de transferencia de datos.
♦ Instrucciones de ruptura de secuencia.
♦ Instrucciones aritméticas y lógicas.
♦ Instrucciones declarativas.
♦ Etcétera.
O por su contenido, teniendo en cuenta que todas ellas tienen en primer lugar lo que se
llama código de operación (CO), que indica qué operación se debe realizar por el procesador, y
aquellas en Las que su misión sea hacer alguna operación con determinados dates; llevarán,
además, implícita o explícitamente dichos dates, que denominaremos operandos.

Instrucciones de tres operandos


También se denominan instrucción es de tres direcciones. En primer lugar constan de un
código de operación al que siguen tres operandos, de Los cuales, Los dos primeros son Los
operandos y el tercero es la dirección donde se depositará el resultado. Este formato de instrucción
es el más cómodo de trabajar, pero es el que precise mayor número de bits.
Esquema siguiente.
Código de operación Operando1 Operando2 Operando3

Instrucciones de dos operandos


Constan de un código de operación, seguido de dos operandos, de Los cuales uno de ellos
actúa además como receptor del resultado. También se denominan instrucciones de dos
direcciones.
En el siguiente esquema se ve la Instrucción de dos operandos.
Código de operación Operando 1 Operando2

Instrucciones de un operando
También denominadas instrucciones de una dirección. Son Las que se utilizan generalmente
en máquinas cuya arquitectura funciona con filosofía de acumulador.
El acumulador es un registro especial, en el que se encuentra uno de Los operandos para
este tipo de instrucciones y donde además se guarda el resultado.
En la instrucción se encuentra el código de operación seguido del segundo operando
Código de operación Operando 1

Instrucciones sin operandos


También denominadas instrucciones sin ninguna dirección. Este tipo de instrucciones se
utilizan generalmente en computadoras cuya arquitectura tiene filosofía de pila.
Una pila está formada por dates almacenados en orden consecutivo en la memoria, existiendo
un registro especial denominado puntero de pila que nos indica la dirección del último dato
introducido en ella. Cuando un dato es sacado de ella, el puntero de pila decrece, apuntando al

Página 9 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

dato que está a continuación en la pila hacia el fondo de la misma y que será aquel dato que se
introdujo en primer lugar. Cuando se trata de introducir un dato en ella el puntero toma la dirección
de memoria siguiente en orden ascendente y se introduce en dicha dirección.
Estas instrucciones sólo llevan código de operación, de tal forma que cuando se trata de una
operación, se sacan Los operandos de la pila (previamente introducidos) y el resultado se introduce
en la misma.
código de operación
Una computadora en su lenguaje máquina puede tener instrucciones de las anteriores, según
sea su arquitectura.

METODOS DE DIRECCIONAMIENTO
Se habla de direccionamiento en una instrucción al modo de indicar en la misma el lugar
donde está situado el dato que va a intervenir en ella. Los direccionamientos utilizados en Las
instrucciones son Los siguientes:
♦ Direccionamiento inmediato: en él, el dato a utilizar se halla en la
propia instrucción, en el acumulador o en la pila.
♦ Direccionamiento directo: en este caso la instrucción contiene la
dirección de memoria central donde se encuentra el dato.
♦ Direccionamiento indirecto: la instrucción contiene la dirección
de memoria central donde se encuentra la dirección de memoria
que contiene el dato.
♦ Direccionamiento indexado: en el la dirección de memoria central
donde se encuentra el dato, se obtiene sumándole a la dirección
que lleva la instrucción una cantidad, que se encuentra en un
registro especial llamado índice.

LENGUAJES DE PROGRAMACIÓN
Para poder desarrollar las capacidades del hardware, se ha necesitado la creación de códigos
por medio d los cuales hacer que el ordenado ejecute una serie de órdenes a este conjunto de
códigos se denomina lenguaje.
Un lenguaje de programación es una notación para escribir programas, a través de los cuales
podemos comunicarnos con el hardware y dar así las órdenes adecuadas para la realización de un
determinado proceso. Un lenguaje viene definido por una gramática o conjunto de reglas que se
aplican a un alfabeto constituido por el conjunto de símbolos utilizados.
Los distintos niveles en que se clasifican los lenguajes, no son índice de la capacidad del
lenguaje. Cuando se habla de lenguajes de bajo nivel implica indicar que el lenguaje es fácil de ser
procesado por el microprocesador, ocupa poca lugar en memoria y de muy difícil programación para
el hombre, cuando hablamos de alto nivel nos indica que el mismo programa es de fácil programar
por un programador pero ocupa mucho lugar de memoria y es de difícil acceso al hardware, de tal
forma que según utilicemos un nivel u otro así tendremos que utilizar un determinado lenguaje
ligado a sus correspondientes traductores.

Página 10 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

El siguiente esquema representan la evolución de los distintos lenguajes.

Periodo Influencias Lenguajes


1950 - 1955 Ordenadores primitivos Lenguajes ensamblador.
Lenguajes experimentales de alto nivel
1956 - 1960 Ordenadores pequeños, caros y lentos FORTRAN
Cintas magnéticas. ALGOL 58 y 60
Compiladores e intérpretes COBOL
Optimización del código. LISP
1961 - 1965 Ordenadores grandes y caros FORTRAN IV
Discos magnéticos COBOL 61 Extendido
Sistemas operativos ALGOL 60 Revisado
Lenguajes de propósito general. APL (como notación sólo)
1966 - 1970 Ordenadores de diferentes tamaños, PL/I
velocidades, y costes. FORTRAN 66 (estándar)
Sistemas caros de almacenamiento COBOL 65 (estándar)
masivo de datos. ALGOL 68
Sistemas operativos multitarea e SIMULA 67
interactivos. BASI
Compiladores con optimización. C
Lenguajes estándar, flexibles y APL/360
generales.
1971 - 1975 Micro ordenadores. PASCAL
Sistemas pequeños y baratos de COBOL 74
almacenamiento masivo de datos. PL/I
Programación estructurada.
Ingeniería del software.
Lenguajes sencillos.
1976 - 1980 Ordenadores baratos y potentes. ADA
Sistemas distribuidos. FORTRAN 77
Programación interactiva. PROLOG
Abstracción de datos. C
Programación con fiabifidad y fácil
mantenimiento.
1980 Ordenadores más baratos y potentes. SmallTalk
Mayor abstracción de datos. OOCOBOL
Menor costo de memorias C++
Programación Orientada o Objetos Ojective C
Object Pascal (Delphi)
Visual Basic

Lenguajes de programación se clasifican:


♦ Bajo nivel (Lenguaje máquina)
♦ Intermedios (Lenguaje ensamblador), C
♦ Alto nivel Gestión Científicos Propósito general y específicos

Página 11 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

Lenguaje máquina
El lenguaje máquina es el único que entiende directamente la computadora, utiliza el alfabeto
binario que consta de los dos únicos símbolos 0 y 1, denominados bits (abreviatura inglesa de
dígitos binarios). Fue el primer lenguaje utilizado en la programación de computadoras, pero dejó de
utilizarse por su dificultad y complicación, siendo sustituido por otros lenguajes más fáciles de
aprender y utilizar, que además reducen la posibilidad de cometer errores.
EJEMPLO
0000 0001 1010 0001 01 A1
1000 1001 1001 1010 89 9A
0011 1010 1001 1100 3A 9C
0111 0100 0111 0000 74 70
1110 1001 0010 0000 E9 20

Lenguaje ensamblador
El lenguaje ensamblador es el primer intento de sustituir el lenguaje máquina por otro más
similar a los utilizados por las personas. En este lenguaje cada instrucción equivale a una
instrucción en lenguaje máquina, utilizando para su escritura palabras nemotécnicas en lugar de
cadenas de bits.
EJEMPLO
INICIO: ADD B, 1
MOV A, E
CMP A, B
JE FIN
JMP INICIO
FIN : END
Este lenguaje presenta la mayoría de los inconvenientes del lenguaje máquina:
♦ Cada modelo de computadora tiene un lenguaje ensamblador propio diferente del de
los demás, por lo cual un programa sólo puede utilizarse en la máquina para la cual
se programó.
♦ El programador ha de conocer perfectamente el hardware del equipo, ya que maneja
directamente las posiciones de memoria, registros del procesador y demás elementos
físicos.
♦ Todas las instrucciones son elementales, es decir, en el programa se deben describir
con el máximo detalle todas las operaciones que se han de llevar a cabo en la
máquina para la realización de cualquier proceso.
Por otro lado, tanto el lenguaje máquina como el ensamblador gozan de la ventaja de mínima
ocupación de memoria y mínimo tiempo de ejecución en comparación con el resultado de la
compilación del programa equivalente escrito en otros lenguajes.

Lenguajes de alto nivel

Página 12 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con
posterioridad a los anteriores, con los siguientes objetivos, entre otros:
♦ Lograr independencia de la máquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor o
compilador, que lo suministra el fabricante, para obtener el programa ejecutable en
lenguaje binario de la máquina que se trate. Además, no se necesita conocer el
hardware específico de dicha máquina.
♦ Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer de una
forma más sencilla, eliminando muchas de las posibilidades de cometer errores que
se daban en el lenguaje máquina, ya que se utilizan palabras (en inglés) en lugar de
cadenas de símbolos sin ningún significado aparente.
♦ Incluir rutinas de uso frecuente como son las de entrada/salida, funciones
matemáticas, manejo de tablas, etc, que figuran en una especie de librería del
lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin necesidad
de programarlas cada vez.
Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la gran
cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL, COBOL, APL,
SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67, ADA, C++, LIS, EUCLID,
BASIC), además de las diferentes versiones o dialectos que se han desarrollado de algunos de
ellos.

FORTRAN
Abreviatura de Fórmula Translator (traductor de fórmulas), fue definido alrededor del año
1955 en los Estados Unidos por la compañía IBM. Es el más antiguo de los lenguajes de alto nivel,
pues antes de su aparición todos los programas se escribían en lenguaje ensamblador o en
lenguaje máquina.
Es un lenguaje especializado en aplicaciones técnicas y científicas, caracterizándose por su
potencia en los cálculos matemáticos, pero estando limitado en las aplicaciones de gestión, manejo
de archivos, tratamiento de cadenas de caracteres y edición de informes.
A lo largo de su existencia han aparecido diferentes versiones, entre las que destaca la
realizada en 1966 por ANSI (American National Standard Institute) en la que se definieron nuevas
reglas del lenguaje y se efectuó la independencia del mismo con respecto a la máquina, es decir,
comenzó la transportabilidad del lenguaje. Esta versión se denominó FORTRAN IV o FORTRAN 66.
En 1977, apareció una nueva versión más evolucionada que se llamó FORTRAN V o FORTRAN 77,
esta versión está reflejada en el documento «ANSI X3.9-1978: Programming Language FORTRAN»
y define dos niveles del lenguaje denominados FORTRAN 77 completo y FORTRAN 77 básico,
siendo el segundo un subconjunto del primero. Esta última versión incluye además instrucciones
para el manejo de cadenas de caracteres y de archivos, así como otras para la utilización de
técnicas de programación estructurada. Estas características hacen que el lenguaje también sea
válido para determinadas aplicaciones de gestión.

COBOL
Es el lenguaje más usado en las aplicaciones de gestión, creado en 1960 por un comité
denominado CODASYL, patrocinado por el Departamento de Defensa de los Estados Unidos, a fin
de disponer de un lenguaje universal para aplicaciones comerciales como expresa su nombre
(COmmon Business Oriented Language).

Página 13 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

Entre sus características se pueden citar su parecido al lenguaje natural (inglés), es auto-
documentado y tiene gran capacidad en el manejo de archivos, así como en la edición de informes
escritos. Entre sus inconvenientes están sus rígidas reglas de formatos de escritura, la necesidad
de describir todos los elementos al máximo detalle, la extensión excesiva en sus sentencias e
incluso duplicación en algunos casos, la inexistencia de funciones matemáticas y, por último, su no
adecuación a las técnicas de programación estructurada. a

PL/1
Fue creado a comienzos de los años 60 por IBM para ser usado en sus equipos del sistema
360. El PL/I (Programming Language 1) se desarrolló inspirándose en los lenguajes ALGOL,
COBOL y FORTRAN, tomando las mejores características de los anteriores y añadiendo algunas
nuevas, con el objetivo de obtener un lenguaje lo más general posible, útil para aplicaciones
técnico-científicas, comerciales, de proceso de textos, de bases de datos y de programación de
sistemas.
Entre sus novedades está su gran libertad en el formato de escritura de los programas,
soportar la programación estructurada y el diseño modular. No obstante, no ha superado a sus
progenitores en sus aplicaciones específicas debido en parte a su amplitud y por ello, al tamaño de
su compilador, que hasta ahora sólo se podía instalar en grandes equipos.

BASIC
Fue diseñado por los profesores John G. Kemeny y Thomas E. Kurtz del Dartmouth College
en 1965 con el objetivo principal de conseguir un lenguaje fácil de aprender para los principiantes,
como se indica en su nombre Benginner’s All-purpose Symbolic Instruction Code (Código de
instrucción simbólico de propósito general para principiantes).
Entre sus principales novedades están las de ser un lenguaje interpretado y de uso
conversacional, útil para aplicaciones técnicas y de gestión. Estas características, unidas a la
popularización de las microcomputadoras y computadoras personales, ha hecho que su utilización
se haya extendido enormemente, a la vez que ha propiciado el surgimiento de una gran diversidad
de versiones que extienden y adaptan a necesidades particulares el lenguaje original. Existen
multitud de intérpretes y compiladores del lenguaje.

PASCAL
Fue creado por el matemático suizo Niklaus Wirth en 1970, basándose en el lenguaje AL-
GOL, en cuyo diseño había participado en los años 60. Su nombre proviene del filósofo y
matemático francés del siglo xvii Blaise Pascal, que inventó la primera máquina de tipo mecánico
para sumar.
Aunque en principio la idea del diseñador era proporcionar un lenguaje adecuado para la
enseñanza de los conceptos y técnicas de programación, con el tiempo ha llegado a ser un
lenguaje ampliamente utilizado en todo tipo de aplicaciones, poseyendo grandes facilidades para la
programación de sistemas y diseño de gráficos.
Aporta los conceptos de tipo de datos, programación estructurada y diseño descendente,
entre otros, además de haberse convertido en predecesor de otros lenguajes más modernos, como
MODULA-2 y ADA.

Página 14 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

Fue creado en 1972 por Dennis Ritchie a partir del trabajo elaborado por su colega de los
laboratorios Bell Telephone, Ken Thompson. Estos habían diseñado con anterioridad el sistema
operativo UNIX, y su intención al desarrollar el lenguaje C fue la de conseguir un lenguaje idóneo
para la programación de sistemas que fuese independiente de la máquina con el cual escribir su
sistema UNIX.
Aunque fue diseñado inicialmente para la programación de sistemas, posteriormente su uso
se ha extendido a aplicaciones técnico-científicas, de bases de datos, de proceso de textos, etc.
La utilización óptima de este lenguaje se consigue dentro de su entorno natural, que es el
sistema operativo UNIX. Entre sus características destaca el uso de programación estructurada
para resolver tareas de bajo nivel, así como la amplia librería de rutinas de que dispone.

ADA
Es el último intento de obtener un único lenguaje para todo tipo de aplicaciones e incluye los
últimos avances en técnicas de programación. Su diseño fue encargado por el Departamento de
Defensa de los Estados Unidos a la empresa Honeywell-Bull después de una selección rigurosa
entre varias propuestas realizadas sobre una serie de requerimientos del lenguaje y de haber
evaluado negativamente veintitrés lenguajes existentes. De éstos se seleccionaron como base para
la creación del nuevo lenguaje el PASCAL, el ALGOL y el PL/I. La estandarización del lenguaje se
publicó en 1983 con el nombre de ADA en honor de la considerada primera programadora de la
historia Augusta Ada Byron, condesa de Lovelace.
Entre las características del lenguaje se encuentran la compilación separada, los tipos
abstractos de datos, programación concurrente, programación estructurada, libertad de formatos de
escritura, etc., presentando como principal inconveniente su gran extensión.

Interpretes y Compiladores
Existen dos tipos principales de traductores de los lenguajes de programación de alto nivel:
♦ Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito
en otro lenguaje (por ejemplo, en el lenguaje de la máquina). Su acción equivale a la
de un traductor humano, que toma un libro y produce otro equivalente escrito en otra
lengua.
♦ Intérprete, que analiza el programa fuente y lo ejecuta directamente, sin generar
ningún código equivalente. Su acción equivale a la de un intérprete humano, que
traduce las frases que oye sobre la marcha, sin producir ningún escrito permanente.
Intérpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen
complementarios:
♦ Un intérprete facilita la búsqueda de errores, pues la ejecución de un programa
puede interrumpirse en cualquier momento para estudiar el entorno (valores de las
variables, etc.). Además, el programa puede modificarse sobre la marcha, sin
necesidad de volver a comenzar la ejecución.
♦ Un compilador suele generar programas más rápidos y eficientes, ya que el análisis
del lenguaje fuente se hace una sola vez, durante la generación del programa
equivalente. En cambio, un intérprete se ve obligado generalmente a analizar cada
instrucción tantas veces como se ejecute (incluso miles o millones de veces).
♦ Un intérprete permite utilizar funciones y operadores más potentes, como por ejemplo
ejecutar código contenido en una variable en forma de cadenas de caracteres.
Usualmente, este tipo de instrucciones es imposible de tratar por medio de

Página 15 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto,
exigen un intérprete, se llaman interpretativos. Los lenguajes compilativos, que
permiten el uso de un compilador, prescinden de este tipo de operadores.

EVOLUCIÓN HISTÓRICA DE LA PROGRAMACIÓN


En el comienzo de la informática, sólo había una forma de programar (en binario), que
consistía en la ejecución secuencial (una tras otra) de instrucciones de la máquina, con posibles
cambios de secuencia basados en dos tipos especiales de instrucciones de control
Las instrucciones de control se dividieron en dos tipos:
• instrucciones de transferencia
• instrucciones de llamada de subrutina.
Las instrucciones de transferencia dan lugar a un salto sin retorno en la ejecución, y a su
vez pueden ser condicionales (si el salto se produce únicamente cuando se cumple una condición
determinada) o incondicionales.
La instrucción de llamada de subrutina guarda la dirección de retorno para que la
secuencia de ejecución original se reanude cuando termina la ejecución de la subrutina (momento
en el que se ejecutará una instrucción de retorno).
En la década de los años cincuenta surgió un nuevo tipo da lenguajes (llamados simbólicos, o
de segunda generación: assembler), que trataban de simplificar la programación: ya que, a medida
que los programas eran cada vez más complejos, se hacía impracticable utilizar directamente el
lenguaje de la máquina, en el que las instrucciones estaban formadas por secuencias de ceros y
unos.
Un lenguaje simbólico no es más que una representación codificada del lenguaje de la
máquina, donde cada instrucción simbólica se traduce (en principio) por una sola instrucción de la
máquina equivalente, y el código de operación y la dirección de memoria asociados a cada
instrucción de la máquina se representan mediante símbolos alfanuméricos. En particular,
dependiendo del lenguaje simbólico utilizado, las instrucciones de cambio de secuencia se suelen
representar mediante los siguientes símbolos:
• La instrucción de transferencia incondicional: JMP (jump, es decir, salto); B
(branch, ramificación); GOTO (go to, ir a); etc.
• Las instrucciones de transferencia condicional: JZ (jump on zero, salto si el
resultado anterior es cero); BC (branch on condition, ramificación condicional); etc.
• La instrucción de llamada de subrutina: CALL (llamar, en inglés); BAL (branch and
link, es decir, ramificación con enlace); etc.
• La instrucción de retorno de subrutina: RET (return, retorno); etcétera.
A finales de los años cincuenta, y a medida que las aplicaciones iban creciendo en tamaño y
en complicación, la programación en los lenguajes simbólicos resultaba aún demasiado compleja,
por lo que se inventaron los lenguajes de alto nivel o de tercera generación, tales como FORTRAN,
LISP, COBOL, ALGOL, APL, PL/I, BASIC, Pascal, C, etc., que hacían más legibles los programas
mediante expresiones de aspecto matemático, como X + Y * Z (que significa, en muchos de los
lenguajes citados, sumar el valor de la variable X al resultado de multiplicar el valor de la variable Y
por el de la variable Z).

Página 16 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

Todos estos lenguajes, y muchos más que no voy a mencionar por el momento, no son
totalmente independientes entre sí, sino que unos influyeron en el diseño de los otros, por lo que
forman una jerarquía histórica. Además de simplificar la sintaxis de las expresiones, los lenguajes
de alto nivel introdujeron una serie de instrucciones de control para hacer más simple la definición
de la estructura de los programas. Estas instrucciones pueden agruparse en las siguientes clases:
• Una instrucción de transferencia incondicional (siempre se produce un salto sin
retorno en la ejecución), generalmente representada mediante el símbolo GOTO,
GO TO, u otro equivalente.
• Instrucciones de transferencia condicional, como las sentencias GO TO calculada
y asignada de FORTRAN, o la sentencia IF del mismo lenguaje, en su forma original.
• Instrucciones de ejecución condicional, como el conjunto IF- THEN-ELSE de
ALGOL y Pascal, la instrucción CASE de Pascal o el conjunto if-else y la instrucción
switch de C.
• Instrucciones de ejecución en bucle, en sus formas DO-UNTIL, DO-WHILE y FOR.
• La instrucción de llamada de subrutina, representada mediante el símbolo CALL, o
implícitamente, especificando sólo el nombre de la subrutina que se invoca, junto con
un conjunto de argumentos entre paréntesis.
• La instrucción de retorno de subrutina: RETURN o equivalente.

PROGRAMACIÓN ESTRUCTURADA
En ciertos lenguajes clásicos (como APL o las formas primitivas de FORTRAN y BASIC) se
emplea con frecuencia la instrucción GOTO de transferencia incondicional, que permite pasar la
ejecución del programa a otra parte del mismo, señalada por una etiqueta. En otros (como C o
Pascal) se utiliza un estilo diferente de programar (la programación estructurada) en la que la
instrucción GOTO está prohibida o, al menos, desaconsejada. Por ello, la programación
estructurada se llama a veces programación sin GOTO. En la programación estructurada se utilizan
sólo cuatro estructuras de control básicas:
• El bloque de instrucciones consecutivas. En C se representa con los símbolos { y
).
• La instrucción condicional. En C y en PASCAL existen dos tipos principales:
1. La instrucción if-else: Si la condición se cumple, se ejecuta la instrucción 1. En
caso contrario, se ejecuta la instrucción 2.
2. La instrucción switch (o case of):
- Si la variable tiene el valor1, se ejecuta el bloque de instrucciones 1.
- Si tiene el valor2, se ejecuta el bloque de instrucciones 2. Y así
sucesivamente.
- Si no tiene ninguno de los valores indicados, se ejecuta el bloque de
instrucciones n.
• El bucle: En C (o en PASCAL) existen tres tipos principales:
1. La instrucción for: Se ejecuta primero la instrucción iniciadora. A continuación, mientras la
condición se cumpla, se ejecutan repetidamente las instrucciones, seguidas por la instrucción
terminadora.
2. La instrucción while: Mientras la condición se cumpla, se ejecutan repetidamente las
instrucciones. Si la condición no se cumple cuando la ejecución llega a la instrucción while, las
instrucciones no se ejecutan ninguna vez.

Página 17 de 18
ALGORITMOS y
PROGRAMACIÓN 75.40

Algoritmos y Programación I Martes 14 a 17 Hs


Jueves 14 a 17 Hs.
Clase Teórica Nº 1
Prof. Ing. F. J. LAGE
Introducción a la Computación J.T.P. Ing. Z. CATALDI
A.T.P. Srita. A Pauluzzi
Autores : Ings. Cataldi - Lage Sr P. Corradino
Sr. F. Gómez

3. La instrucción do: Mientras la condición se cumpla, se ejecutan repetidamente las instrucciones.


Si la condición no se cumple cuando la ejecución llega a la instrucción do, las instrucciones se
ejecutan al menos una vez.
• La cuarta instrucción de control es la llamada de subrutina, a la que dedicaremos el
apartado siguiente.

PROGRAMACIÓN PROCEDIMENTAL
La llamada de subrutina (conocida, en general, como instrucción CALL) sirve para relacionar
unos programas con otros y permite modular las aplicaciones, descomponiéndolas en dos o más
secciones llamadas procedimientos, subrutinas, o funciones, según los casos. Por esta razón los
lenguajes de programación clásica se llaman también procedimentales. Gracias a la capacidad de
invocar la ejecución de procedimientos, los distintos programas que constituyen una aplicación
suelen formar una estructura jerárquica, con un programa principal (main en C) que llama a otros
subprogramas, y éstos a otros, hasta llegar a los niveles más bajos de la jerarquía, donde suelen
situarse los programas que prestan servicios especiales a casi todos los demás. La jerarquía en
cuestión no forma siempre, un árbol invertido, sino un esquema algo más complejo. Es cierto que
siempre suele haber un nodo principal o raíz (el programa principal), pero un mismo nodo puede
tener más de un antecesor (puesto que una subrutina puede ser invocada por varios módulos).
Además, es posible que haya ciclos, simples o compuestos, pues los módulos pueden ser
recursivos, directamente o indirectamente. En cambio, en esta forma de programar, los datos no
tienen ninguna organización preestablecida: cada programador decide cómo se relacionan unos
con otros y cómo se distribuyen entre los subprogramas. En principio, existen dos clases de datos:
• Datos globales: son accesibles por todos los subprogramas.
• Datos locales: son accesibles por un solo subprograma, módulo o función.
A veces, dependiendo del lenguaje de programación, los datos locales son automáticamente
heredables por los subprogramas o funciones situados, en la jerarquía de llamadas, por debajo del
subprograma en que dichos datos han sido definidos.

Página 18 de 18

Das könnte Ihnen auch gefallen