Documente Academic
Documente Profesional
Documente Cultură
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 INFORMACIÓN
PROCESO
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.
MONITOR
UNIDADE
S
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.
Unidades de Entrada–Salida
Entrada
Salida
E/S
Teclado Mouse o Ratón, TrackBall, Cat Scanner Lectora de barras Lápiz óptico Lectora de CD-ROM
(DVD) Micrófono
Sistema de vídeo
Sistema de audio
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
• 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
Algoritmos y Programación I Clase Teórica Nº 1 Introducción a
la Computación Autores : Ings. Cataldi -Lage
Martes 14 a 17 Hs Jueves 14 a 17 Hs.
Figura 1
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.
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.
Bus de Bus de
Direcciones Datos
Registro de dirección
Registro de intercambio
Algoritmos y Programación I Clase Teórica Nº 1 Introducción a
la Computación Autores : Ings. Cataldi -Lage
Martes 14 a 17 Hs Jueves 14 a 17 Hs.
TIPOS DE INSTRUCCIONES
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 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
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
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.
El siguiente esquema representan la evolución de los distintos lenguajes.
1966 -1970
Ordenadores de diferentes tamaños,
velocidades, y costes. Sistemas caros PL/I FORTRAN 66 (estándar) COBOL
de almacenamiento masivo de datos. 65 (estándar) ALGOL 68
Sistemas operativos multitarea e SIMULA 67 BASI
interactivos.
Compiladores con optimización. C APL/360
Lenguajes estándar, flexibles y
generales.
1971 -1975 Micro ordenadores. PASCAL
Sistemas pequeños y baratos de COBOL 74 PL/I
almacenamiento masivo de datos.
Programación estructurada. Ingeniería
del software. Lenguajes sencillos.
Página 11 de 18
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
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
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.
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).
Entre sus características se pueden citar su parecido al lenguaje natural (inglés), es
autodocumentado 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écnicocientí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.
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:
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).
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.
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.