Você está na página 1de 190

Teora Algoritmos y Estructuras de Datos I - 2012

Tema 1

Tema 1: Conceptos fundamentales


Informtica
Por Informtica se entiende al Conjunto de conocimientos cientficos y
tcnicas que hacen posible el tratamiento automtico y racional de la
informacin por medio de computadoras.
Justamente la palabra informtica, de origen francs, est formada por la
contraccin de los vocablos: INFORmacin y autoMTICA.
En esta definicin se destacan dos trminos relevantes:
-

Tratamiento automtico: Se refiere a que son las propias mquinas (las computadoras) las que
realizan las tareas de captura, proceso y presentacin de la informacin.

Tratamiento racional: Se refiere a que todo el proceso est regulado a travs de una secuencia
de instrucciones (programa) que siguen el razonamiento humano.
El objetivo marcado es el tratamiento automtico de la informacin y el medio utilizado para lograrlo es
la computadora.
Por lo tanto, para entender en qu consiste la Informtica, es imprescindible conocer:
-

Todas las caractersticas tcnicas de las computadoras y sus componentes asociados


(perifricos).

Los distintos tipos de informacin y datos que se manejarn (sistemas de representacin,


archivos y bases de datos).

Los procesos y mtodos aplicados a la informacin o datos (programas).

Los sistemas de comunicacin que permitirn tratar la informacin a distancia y compartirla de


forma confiable (redes de comunicacin de datos).
Conocer con detalle estos aspectos y la relacin que existe entre ellos, permitir entender cmo se
realiza el tratamiento automtico de la informacin utilizando computadoras.
En la definicin se hace mencin a la utilizacin de computadoras. En realidad, el trmino es ms
amplio y debe entenderse como sistema informtico, siendo este un conjunto de recursos destinados al
tratamiento de la informacin.

La Informtica como disciplina


La Association for Computing Machinery (ACM) y la IEEE-Computer Society elaboraron una serie de
recomendaciones sobre la Currcula de Computacin, y en este documento especifican la siguiente
definicin (se aclara que en este contexto, las palabras Computacin e Informtica se utilizan como
sinnimos):
La Computacin como disciplina comprende el estudio de procesos algortmicos que describen y
transforman a la informacin; estudian su teora, anlisis, diseo, eficiencia, implementacin y aplicacin.
La pregunta fundamental subyacente en toda la computacin es: qu puede ser automatizado (en
forma eficiente)?
Computacin? Informtica?
Generalmente en pases de lengua inglesa se utiliza Computing, en otros pases (Europa) se utiliza
Informtica.
Si se diferencian los trminos se entiende que Computacin se relaciona con la formacin de
profesionales y al desarrollo cientfico y tecnolgico de la computacin. Mientras que Informtica, est
ms relacionada con la aplicacin de las tecnologas de la computacin. En esta asignatura ambos
trminos se consideran equivalentes.
La ACM Computing Curricula define los perfiles profesionales de la disciplina diferenciando aquellas ms
orientadas al Hardware, otras al Software y finalmente las orientadas a las necesidades
organizacionales. Un esquema de estos perfiles se muestra en la figura 1.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 1

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Figura 1: Perfiles de formacin en las Ciencias de la Computacin o Informtica


Esta disciplina naci en la primera parte de la dcada de 1940 con la conjuncin de la teora de los
algoritmos, lgica matemtica y la invencin de la computadora electrnica con programa almacenado.
La computacin extiende sus races en la matemtica y en la ingeniera. La matemtica aporta anlisis al
rea, mientras que la ingeniera aporta diseo. La disciplina posee su propia teora, su mtodo
experimental y su ingeniera.
A su vez, dentro de la disciplina se identifican 9 subreas de conocimiento (cabe aclarar que estas
subareas evolucionan, se a

Estructuras de Datos y Algoritmos

Lenguajes de Programacin

Arquitectura

Computacin Numrica y Simblica

Sistemas Operativos

Ingeniera de Software

Bases de Datos y Bsqueda de Informacin

Inteligencia Artificial y Robtica

Comunicacin Humano-Computadora

Cada una posee una temtica subyacente, una componente terica, abstracciones significativas y temas
sustanciales de implementacin y diseo.
La teora trata con el desarrollo matemtico subyacente e incluye teora de apoyo tal como teora de
grafos, combinatoria o lenguajes formales.
La abstraccin (o modelamiento) trata con modelos de potenciales implementaciones; los modelos
suprimen detalles mientras que retienen caractersticas esenciales, y proveen medios por los cuales se
puede predecir comportamiento futuro.
El diseo trata con el proceso de especificar un problema, derivar requerimientos y especificaciones,
iterar y probar (testear) prototipos, e implementar un sistema. El diseo incluye el mtodo experimental,
el cual en computacin viene en distintos estilos: medicin de programas y sistemas, validacin de
hiptesis y realizacin de prototipos para extender las abstracciones a la prctica.
La Informtica como Ciencia
Por sus caractersticas, la Informtica puede concebirse como ciencia terica y como ciencia de carcter
emprico sobre los fenmenos relacionados con la informacin y la computacin.
Como ciencia terica se centra en la teora de la computabilidad y como ciencia emprica, sus hiptesis
pueden ser refutadas por la realidad.
La estructura disciplinar de la Informtica est formada por varias teoras y disciplinas presupuestas
(Teora General de los Sistemas, Ciberntica, Teora de la Informacin y la Comunicacin, Teora de

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 2

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Lenguajes Formales y Autmatas, teoras matemticas y lgicas) y su teora central es la Teora de la


Computabilidad. Esta estructura conforma, en gran parte, su corpus terico.
La teora de la computabilidad, est ntimamente relacionada con las matemticas y su concepto clave
es el concepto de algoritmo. Explora la naturaleza de los problemas que son accesibles a la mente
humana y los clasifica en clases: los demostrablemente irresolubles y los resolubles que admiten un
algoritmo para su solucin.
La Informtica como Tecnologa
Un determinado cuerpo de conocimientos es una tecnologa si y slo si:
1

Es compatible con la ciencia coetnea y es controlable por el mtodo cientfico.


Se emplea para controlar, transformar o crear cosas o procesos, naturales o sociales.
Es decir, la tecnologa es una actividad social centrada en el saber hacer que, mediante el uso racional,
organizado, planificado y creativo de los recursos materiales y la informacin propios de un grupo
humano, en una cierta poca, brinda respuestas a las demandas sociales en lo que respecta a la
produccin, distribucin y uso de bienes, procesos y servicios.
La Informtica, como disciplina tecnolgica, abarca tanto la actividad (investigacin, desarrollo,
ejecucin, etc.) como el producto resultante (conocimientos, bienes, servicios, etc.) que son
consecuencia de respuestas a inquietudes y necesidades de la sociedad. Es as como, analiza
determinados problemas relacionados generalmente con la adquisicin, almacenamiento, procesamiento
y transferencia de datos-informacin-conocimientos que plantea la sociedad y trata de buscar su solucin
relacionando la tcnica (conocimientos, herramientas, capacidad inventiva) con la ciencia y con la
estructura econmica y socio-cultural del medio. Internet y los sistemas son un ejemplo de tecnologa.
Esta concepcin de la Informtica como disciplina tecnolgica est vinculada a la caracterizacin de la
Informtica como disciplina emprica y como disciplina ingenieril, esto abarca a los Sistemas de
Informacin y a la Ingeniera del Software, en donde se abordan el diseo y desarrollo de sistemas
software para satisfacer necesidades del mundo real. Las herramientas tecnolgicas surgen como
producto de la aplicacin del conocimiento cientfico de la disciplina en la construccin de artefactos que
se incorporan al mundo real o virtual en forma de productos o servicios (Barchini et al., 2004).

Informacin
Como se ha notado, la Informtica tiene como objetivo principal proporcionar informacin en forma
automatizada, por lo tanto es necesario tener claro qu se entiende por informacin.
Por una parte, se puede denominar informacin a la comunicacin o adquisicin de conocimientos que
permiten ampliar o precisar los que se poseen sobre una materia determinada. Por ejemplo, porcentaje
de alumnos que aprobaron la materia Redes.
Por otra parte, algunos autores denominan informacin al conjunto de smbolos con los que se
representan convencionalmente hechos, objetos e ideas. Este enfoque es ms material y podra llevar a
pensar que cualquier conjunto de smbolos es informacin aunque no tenga sentido. Por ejemplo, un
archivo de datos de alumnos almacenado en el disco rgido.
En general, la naturaleza de la informacin se comprende mejor en un
escenario de comunicacin, donde se da por supuesto un contexto cognitivo
compartido por un emisor y un receptor, y se transmiten mensajes
(informaciones) a travs de un canal que propaga smbolos, de manera tal
que se presenta:
-

Una peticin de conocimiento.

La satisfaccin de la peticin de conocimiento (respuesta).

La respuesta proporcionada es la informacin, esta deber aportar un conocimiento desconocido al


receptor y serle til.
Por ejemplo: Dos individuos se encuentran en el pasillo de un edificio y uno le pregunta a otro: Quin
fue?, y el otro responde: Juan.

Que coincide en edad, plazo o tiempo con otro.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 3

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

En este ejemplo se supone que ambas personas comparten el mismo idioma, condicin necesaria para
la comunicacin. Saber si el mensaje aporta conocimiento al receptor estar relacionado con el contexto
y la forma de la pregunta, pero lo que no queda del todo claro es: cul es la informacin asociada al
mensaje? Algunas alternativas:
-

El conocimiento de que fue Juan y no Mara.

Que no fue un fenmeno natural el que rompi la ventana.

En evidente que la informacin asociada a la respuesta puede ser muy diversa y se precisa de un
contexto de comunicacin donde emplear el lenguaje como medio de la comunicacin. La condicin de
utilidad de la respuesta permite eliminar mensajes que no son del todo satisfactorios, por ejemplo, si la
respuesta del segundo individuo es un hombre, posiblemente no satisfaga las expectativas del primer
individuo.
Atendiendo a estas dos formas de concebir la informacin, desde la Informtica, resulta ms pertinente
considerar a la informacin como una realizacin del conocimiento, conocimiento como objeto, aunque
unido a los smbolos del mensaje que soporta la informacin.
De esta manera, se puede entender que las computadoras tratan solo con la parte fsica de los smbolos:
la representacin de la informacin. Por ello, cuando se dice que una computadora procesa informacin
se debe entender que manipula las cadenas de smbolos que portan la informacin. Es decir, la
computadora recibe como entrada una representacin simblica de ciertos datos de un problema y
proporcionar como producto cierta secuencia de smbolos, que, convenientemente interpretada, dar la
solucin (informacin) del problema. A continuacin se ilustra la idea con el grfico que se muestra en la
Figura 1.
Datos del
problema

Solucin

Smbolos de
entrada

Smbolos de
salida

Proceso
informtico

Figura 1. Proceso informtico


En el contexto genrico de procesamiento de informacin, se denomina dato a la informacin de entrada
e informacin a la salida o resultado del procesamiento.
Un dato es una representacin de un objeto del mundo real mediante la cual se puede modelar aspectos
de un problema que se desea resolver con un programa en una computadora.
A su vez, un dato est formado por uno o varios caracteres. Un carcter es cualquier smbolo numrico,
alfabtico o especial que se emplea en la escritura y en el clculo, tale como:
-

Numricos: 0,1,2, 9

Alfabticos: a, b, c,, z, A, B, C, Z

Especiales: *, /, +, #,

De control: salto de lnea, fin de archivo (EOF)...

Por qu se automatiza el tratamiento de la informacin?


Las razones que han llevado a la automatizacin del tratamiento de
la informacin son fundamentalmente cuatro:
-

La realizacin de funciones que el hombre por s solo no


puede llevar a cabo: comunicaciones a larga distancia, etc.

La ejecucin de funciones que, aunque el hombre pueda


llevarlas a cabo por s mismo, su ejecucin tardara mucho
tiempo. Por ejemplo, los clculos complejos para el
seguimiento y control de un proyectil dirigido o de una nave
espacial.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 4

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

La obtencin de seguridad en algunas tareas, como las que implican la repeticin de una serie
de pasos, en las que el hombre es ms propenso a cometer errores.

La sustitucin del hombre para tareas montonas. Ejemplo: control automtico de parmetros de
calidad en la fabricacin de productos industriales.

Por qu la necesidad de informacin?


El conocimiento o informacin obtenida en el procesamiento se utiliza para
tomar decisiones con vistas a un accionar concreto. Esta es la importancia
que tiene la Informtica en la actualidad: permite obtener informacin
confiable, precisa y oportuna que permitir tomar mejores decisiones.
Esto posibilita a las empresas y organizaciones el logro eficiente de sus
objetivos.

La computadora
La Informtica trata exclusivamente el procesamiento realizado por una
computadora.
Computador, computadora u ordenador (se consideran trminos equivalentes),
se define como una mquina capaz de aceptar unos datos de entrada, efectuar
con ellos operaciones lgicas y aritmticas, y proporcionar la informacin
resultante a travs de un medio de salida; todo ello sin intervencin de un
operador humano y bajo el control de un programa de instrucciones previamente
almacenado en el propio computador.
Las operaciones lgicas permiten comparar valores o determinar condiciones de
verdad o falsedad, y las aritmticas son anlogas a las usuales en matemtica
(suma, multiplicacin, etc.).

Programas e instrucciones
Una instruccin es un conjunto de smbolos que representa una orden de operacin o tratamiento para
la computadora. En general, estas operaciones se realizan con datos. Por ejemplo: Sumar A + B.
Un programa es un conjunto ordenado de instrucciones que se dan a la computadora indicndole las
operaciones o tareas que se desea que realice.
Las instrucciones se forman con elementos o smbolos tomados de un determinado repertorio, el juego
de instrucciones de una CPU particular, y se construyen siguiendo unas reglas precisas.
Los programas son formulaciones concretas de algoritmos abstractos (soluciones expresadas en
trminos generales), que utilizan representaciones de datos e instrucciones especficas de la plataforma
en la que van a ser implementados.
Ejemplos de programas son aquellos que permiten emitir un cheque de pago para los empleados de una
empresa, operar las funciones de un cajero automtico, emitir resmenes de tarjetas de crdito, realizar
el clculo de la trayectoria de un misil, obtener un pronstico del tiempo, gestionar correo electrnico,
software de redes sociales (Facebook), editor de imgenes, etc.
Todo lo relativo a los smbolos y reglas para escribir programas se denomina lenguaje de programacin.
Por ejemplo: Pascal, C, Java, Python, etc.

Hardware y software
En general, en una computadora o en un sistema informtico, se
encuentran dos partes fundamentales que interactan entre s:
El elemento fsico o hardware: Es el conjunto de elementos materiales:
computadoras, impresoras, perifricos, redes de comunicacin, etc.

El elemento lgico o software: Se refiere a los programas, datos o


conjunto de elementos lgicos: sistema operativo, lenguajes de
programacin, programas de aplicacin especficos, archivos de
datos, pginas web, etc.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 5

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Concepto de BIT y BYTE


En el mundo de las computadoras la informacin es digital, es decir que est constituida por unidades
contables (dgitos) de modo que pueden subdividirse. En muchos casos, es preciso reducir la
informacin a unidades ms simples para ser usadas con eficacia. Una computadora opera de esta
forma, no entiende palabras, cifras numricas, imgenes, notas musicales o letras del alfabeto. No
puede procesar informacin sin dividirla en unidades ms pequeas, slo es capaz de digerir la
informacin que se ha dividido en bits.
Un bit o dgito binario, es la unidad ms pequea de informacin que puede procesar una computadora.
Puede tener uno de dos valores: 0 1. Representa la informacin correspondiente a la ocurrencia de un
suceso de entre dos posibilidades distintas: prendido o apagado, abierto o cerrado, blanco o negro.
Si podemos imaginar el interior de una computadora como una coleccin de microscpicos
conmutadores on/of, como si fueran lmparas elctricas, podremos entender porqu la informacin se
procesa bit a bit. Cada conmutador o lmpara, puede estar prendido o apagado, indicando dos posibles
estados: 0 o 1, como se muestra en la Figura 2.

Figura 2. Concepto de bit


Se utiliza la codificacin para asignar valores a los estados: el valor numrico "0" si la lmpara est
apagada y "1" cuando est encendida. Este cdigo sencillo permite transmitir informacin. Por ejemplo,
si establecemos que una lmpara prendida en la puerta de una habitacin significa "no se puede entrar"
estaremos recibiendo un mensaje perfectamente definido. Una sola lmpara permite codificar dos
informaciones distintas (por ejemplo: "se puede entrar" y "no se puede entrar").
2

Pero si tenemos dos lmparas podramos codificar cuatro (4=2 ) informaciones distintas, considerando
las posibles combinaciones de prendido y apagado:
a) las dos lmparas estn apagadas (0,0)
b) la primera est encendida y la segunda apagada (1,0)
c) la primera est apagada y la segunda encendida (0,1)
d) la dos estn encendidas (1,1)
De esta forma una computadora puede procesar fragmentos ms grandes de informacin tratando
grupos de bits como unidades lgicas. Por ejemplo, una coleccin de 8 bits, llamada byte, puede
8
representar 256 mensajes diferentes (256=2 ). Esta codificacin permite representar, por ejemplo, las
letras del alfabeto, los dgitos decimales y smbolos especiales.
La Figura 3 muestra la codificacin de la letra A que corresponde al decimal 65 y que internamente se
representa con 8 bits, el primero y el ltimo prendido y los restantes apagados.

Figura 3. Representacin digital de la letra A


Qu representan los bits
En la Figura 4 se ilustra como el texto, los nmeros y los smbolos (caracteres especiales) se
representan en el interior de la computadora como unos y ceros y se muestran fuera de la computadora
en el formato entendible por las personas.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 6

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Figura 4. Representacin interna de la informacin

Unidades de medida para el almacenamiento de informacin


Para medir longitudes se utilizan los metros, para medir capacidad se usan los litros, para medir el peso
se utilizan los gramos y el tiempo se mide en horas, minutos y segundos. Para medir la capacidad de
almacenamiento de informacin, se utilizan los bytes.
Dentro de la computadora la informacin se almacena y se transmite en base a un cdigo que slo usa
dos smbolos, el 0 y el 1, y a este cdigo se le denomina cdigo binario.
Las computadoras reducen toda la informacin a ceros y unos, es decir que representan todos los datos,
procesos e informacin con el cdigo binario, un sistema que denota todos los nmeros con
combinaciones de 2 dgitos, el 0 y el 1. Es decir que el potencial de la computadora se basa en slo dos
estados electrnicos: encendido y apagado. Las caractersticas fsicas de la computadora permiten que
se combinen estos dos estados electrnicos para representar letras, nmeros y colores.
Entonces, la unidad ms elemental de informacin es un valor binario conocido como bit, es una
posicin o variable que toma el valor 0 1. Representa la informacin correspondiente a la ocurrencia de
un suceso de entre dos posibilidades distintas: prendido o apagado, abierto o cerrado.
En informtica, cada letra, nmero o signo de puntuacin ocupa un byte (8 bits). Por ejemplo, cuando se
dice que un archivo de texto ocupa 5.000 bytes estamos afirmando que ste equivale a 5.000 letras o
caracteres. Entonces, un byte es el nmero de bits necesarios para almacenar un carcter.
La capacidad de almacenamiento de una computadora o de un soporte de informacin, (tal como el
disco rgido, un CD o un pen drive) se mide en bytes. Como es una unidad relativamente pequea, es
usual utilizar mltiplos, que se muestran en la Tabla 1.
Las denominaciones de las unidades derivan del Sistema
(http://es.wikipedia.org/wiki/Sistema_Internacional_de_Unidades).

Internacional

de

Unidades

Tabla 1: Unidades de medida de la informacin almacenada


MEDIDA
EQUIVALENCIA
EJEMPLOS
1 Byte

8 bits

1 Kilobyte (KB)

1024 bytes = 2

1 Megabyte (MB)

1024 KB = 2
1.048.576 bytes

1 Gigabyte (GB)

1024 MB = 2 bytes =
1.073.741.824 bytes

1 Terabyte (TB)

1024 GB = 2

1 Petabyte (PB)

1024 TB = 2

1 Exabyte (EB)

1024 PB = 2

Una letra, un nmero o un smbolo


10
20

bytes
bytes =

Un archivo de texto, 20 KB
Un archivo mp3, 3 MB

30

una pelcula en DivX, 1 GB

40

bytes

800 pelculas, 1 TB

50

bytes

En diciembre de 2007, YouTube


tuvo un trfico de 27 PB

60

bytes

Licenciatura en Sistemas de Informacin FACENA - UNNE

La informacin almacenada en el
mundo
(al
2011)
es
de
aproximadamente 300 EB

Pg. 7

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
1 Zettabyte (ZB)

1024 EB = 2

70

bytes

1 YottaBytes

1024 ZB = 2

80

bytes

No existe ejemplo real

No existe ejemplo real


Se utiliza el factor multiplicador 1024 en lugar de 1000 es por ser la potencia de 2 ms prxima a 1000,
cuestin importante desde el punto de vista electrnico.

Figura
5.
Unidades
de
medida
http://vistoalreves.es/tag/megabyte/

sus

equivalencias.

Imagen

obtenida

en:

Sistemas Numricos
El estudio de las computadoras y del procesamiento de datos requiere algn
conocimiento de los sistemas numricos, ya que stos constituyen la base de
todas las transformaciones de informacin que ocurren en el interior de la
computadora. Los sistemas numricos que interesa conocer son:

El sistema binario, compuesto por los smbolos 1 y 0, es el que utiliza


la computadora en su funcionamiento interno. La computadora opera en
binario debido a que sus componentes fsicos, pueden representar
solamente
dos
estados
de
condicin:
apagado/prendido,
abierto/cerrado, magnetizado/no magnetizado, etc. Estados de condicin a los que se les asigna
el valor 1 0.

El sistema decimal, compuesto por los smbolos 0 al 9, es el sistema numrico que utilizamos a
diario.

El sistema hexadecimal, con 16 smbolos, ofrece la posibilidad de comprimir los nmeros


binarios para hacerlos ms sencillos de tratar.

Los sistemas numricos difieren en cuanto a la disposicin y al tipo de los smbolos que utilizan.

Posiciones de valor relativo.


Los rabes inventaron los smbolos numricos y el sistema de posicin relativa sobre el cual se basa el
sistema decimal actual y otros sistemas numricos. Cada uno de los smbolos tiene un valor fijo superior
en uno al valor del smbolo que lo precede en la progresin ascendente: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Cuando se combinan varios smbolos (o dgitos), el valor del nmero depende de la "posicin relativa" de
cada uno de los dgitos y del "valor de los dgitos", el primero es el "valor posicional" y el segundo es el
"valor absoluto".
En cualquier sistema de posiciones de valor relativo, la posicin del dgito de la extrema derecha es la de
menor valor, o posicin de orden inferior, y el dgito que la ocupa se denomina "dgito menos
significativo". El incremento de valor de cada posicin de dgito depende de la base o raz del sistema

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 8

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

numrico. De este modo, en el sistema decimal, que utiliza la base 10, el valor de las posiciones de
dgito a la izquierda del dgito menos significativo (o posicin de unidades), aumenta en una potencia de
10 por cada posicin.
El sistema decimal tiene base (raz) 10, porque dispone de 10 smbolos (0-9) numricos discretos para
contar. Entonces, la "base" de un sistema numrico es la cantidad de smbolos que lo componen y el
valor que define al sistema.
Como ejemplo de valor relativo de los dgitos, consideremos el nmero decimal 6.954. Aunque su valor
es evidente a simple vista, la notacin 6.954 significa en realidad:
6000 + 900 + 50 + 4 = 6.954
El valor relativo de cada dgito es aun ms claro si el nmero se expresa en potencias de diez. Cualquier
entero positivo n que se representa en el sistema decimal como una cadena de dgitos decimales, puede
expresarse tambin como una suma de potencias de diez ponderada por un dgito. Ejemplo:
3

6.954 = 6 x 10 + 9 x 10 + 5 x 10 + 4 x 10 = 6 x 1000 + 9 x 100 + 5 x 10 + 4 x 1


A esto se llama notacin expandida para el entero.
0

Las potencias de diez: 10 = 1; 10 = 10; 10 = 100; 10 = 1000, corresponden, respectivamente, a los


dgitos en un entero decimal cuando se leen de derecha a izquierda.
Cualquier valor fraccionario m, representado en el sistema decimal por una cadena de dgitos decimales
junto con un punto decimal intercalado, puede expresarse tambin en notacin expandida usando
potencias negativas de 10. Especficamente, el valor posicional de los dgitos a la derecha del punto
decimal es, respectivamente:
1

10

1
10

10

1
100

10

1
1000

El sistema de posiciones de valor relativo no es posible sin el cero. Su presencia en un nmero significa
simplemente que la potencia de la base representada por la posicin del dgito 0 no se utiliza. Por lo
tanto, el nmero decimal 8.003 significa:
+

0 x 10

0 x 10

3 x 10

8 x 1000

0 x 100

0 x 10

3x1

8.000

8 x 10

8.003

Estas reglas del valor relativo se aplican en general a todos los sistemas numricos, sea cual fuere la
base o raz que se use.

Sistema decimal
El ms importante factor en el desarrollo de la ciencia y la matemtica fue
la invencin del sistema decimal de numeracin. Este sistema utiliza diez
smbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, denominados generalmente "cifras
decimales". Quizs deriva de la cantidad de dedos de las manos que se
puede utilizar como un baco primitivo.

Sistema binario
El sistema numrico binario (de base 2) usa solamente dos smbolos diferentes, 0 y 1, que
significan "ninguna unidad" y "una unidad" respectivamente. A diferencia del sistema decimal,
el valor relativo de los dgitos binarios a la izquierda del dgito menos significativo aumenta
en una potencia de dos cada vez, en lugar de hacerlo en potencias de diez.
Especficamente, los valores de posicin de la parte entera de un nmero binario son las
potencias positivas de dos:
4
3
2
1
0
2
2
2
2
2
(de derecha a izquierda)
Y los valores de posicin de la parte fraccionaria de un nmero binario son las potencias negativas de
dos:
-1
-2
-3
-4
2
2
2
2
(de izquierda a derecha).
Por ejemplo, el nmero binario 101101,11 =

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 9

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
5

1x 2

1x 32

0x
4
2
0

+
+

1x
3
2
1x8

1x 2

0x 2

1x 2

1x 2

1x4

1x1

0,5
1

-1

1
-2

1x 2

1 x 0,25

= 45,75 en el sistema decimal


Para evitar confusiones, cuando se emplean varios sistemas de notacin, se acostumbra encerrar cada
nmero entre parntesis y escribir la base como subndice, en notacin decimal o colocando la base
entre parntesis o medio parntesis. Por ejemplo, todas las siguientes notaciones son vlidas:
(101101,11)2 , 45,75(10) , 2C87(16

Sistema hexadecimal
Los nmeros binarios de gran magnitud consisten en largas series de ceros y unos, que son difciles de
interpretar y manejar. Como un medio conveniente para representar esos nmeros binarios de gran
magnitud se utiliza el sistema numrico hexadecimal (de base 16). Cada dgito hexadecimal representa
cuatro dgitos binarios.
La notacin hexadecimal requiere el uso de 16 smbolos para representar 16 valores numricos. Dado
que el sistema decimal proporciona solamente diez smbolos numricos (de 0 a
9), se necesitan seis smbolos adicionales para representar los valores
restantes. Se han adoptado para este fin las letras A, B, C, D, E, y F.
La lista completa de smbolos hexadecimales consta, por lo tanto, del 0, 1, 2, 3,
4, 5, 6, 7, 8, 9, A, B, C, D, E y F, en orden ascendente de valor. La tabla 1
muestra los nmeros decimales, hexadecimales y binarios equivalentes (hasta el
nmero 31). Ntese que al alcanzarse el nmero decimal 16, se terminan los
smbolos hexadecimales y se coloca un "1 de acarreo" delante de cada smbolo
hexadecimal en el segundo ciclo, que abarca los nmeros decimales de 16 a 31.
Tabla 2: Equivalencias entre los sistemas decimal, hexadecimal y binario
Decimal
Hexadecimal
Binario
0
0
0000
1
1
0001
2
2
0010
3
3
0011
4
4
0100
5
5
0101
6
6
0110
7
7
0111
8
8
1000
9
9
1001
10
A
1010
11
B
1011
12
C
1100
13
D
1101
14
E
1110
15
F
1111
16
10
10000
17
11
10001
18
12
10010
19
13
10011
20
14
10100
21
15
10101
22
16
10110
23
17
10111
24
18
11000
25
19
11001
26
1A
11010
27
1B
11011
28
1C
11100

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 10

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
29
30
31

1D
1E
1F

11101
11110
11111

Teorema fundamental de la Numeracin


Una determinada cantidad, que denominaremos nmero decimal (N en este caso), se puede expresar de
la siguiente manera:

N i d (dgito ) i x(base) i
n

base = 10
i = posicin respecto de la coma
d = nro. de dgitos a la derecha de la coma
n = nro. de dgitos a la izquierda de la coma, menos 1
dgito = cada uno de los que componen el nmero

Supongamos una cantidad expresada en un sistema cuya base es B y representamos por Xi, cada uno
de los dgitos que contiene dicha cantidad, donde el subndice indica la posicin del dgito con respecto a
la coma decimal, posicin que hacia la izquierda de la coma se numera desde 0 en adelante y de 1 en 1,
y hacia la derecha se enumera desde -1 y con incremento -1.
El Teorema Fundamental de la Numeracin relaciona una cantidad expresada en cualquier sistema de
numeracin, con la misma cantidad expresada en el sistema decimal:
4
3
2
1
0
N =..........+ X4 * B + X3* B + X2* B + X1* B + X0* B
-1
-2
-3
-4
+ X-1* B + X-2* B + X-3* B + X-4* B + .......
Ejemplo: 201,13 es una cantidad expresada en un sistema de numeracin en base 3. Cul ser la
representacin de la misma cantidad en el sistema decimal?
2
1
0
-1
201,1 = 2 * 3 + 0 * 3 + 1 * 3 + 1 * 3

Conversiones entre los distintos sistemas.


a) Binario a decimal: Se aplica el Teorema Fundamental, se suman los productos de todos los valores
posicionales por el nmero que ocupa la posicin.
Nmero binario:
Multiplicado por:
Valor posicional

1
x
8

Es la base elevada a la posicin

Resultado del producto:

0,25

1
x
4
2

0
x
2
1

1
x
1
0

0
x
0,5
-1

1
x
0,25
-2

La suma del resultado del producto = 8 + 4 + 0 + 1 + 0 + 0.25 = 13,25 (decimal)


Recuerde, el valor posicional es la base del sistema elevada al nmero de la posicin que ocupa el
nmero.
b) Hexadecimal a decimal: Se multiplica el nmero representado por el valor posicional que le
corresponde, y se suman los resultados:
3

Ej. AE1B = A x 16 + E x 16 + 1 x 16 + B x 16
= 10 x 4096 + 14 x 256 + 1 x 16 + 11 x 1
=
40960 +
3584 +
16 +
11 = (44571) 10
c) Decimal a binario: Para cambiar de base decimal a cualquier otra base se divide el nmero que se
quiere convertir por la base del sistema al que se quiere cambiar. Los resultados que se obtengan en
el cociente deben seguir dividindose hasta que este resultado sea menor que la base, es decir 1. El
nmero binario resultante comienza con el dgito del ltimo resultado menor a la base, que es 1, y
todos los restos obtenidos de derecha a izquierda.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Ejemplo: convertir el nmero decimal 39 a binario.

39
1

2
19
1

2
9
1

2
4
0

2
2
0

2
1
El nmero binario comienza con el dgito del ltimo
resultado menor a la base, que es 1, y todos los restos
obtenidos de derecha a izquierda, esto es, 100111(2)

Algoritmo Parte Entera: Para convertir N = (0,5821)10 en su equivalente binario multiplique N y cada
parte fraccionaria sucesiva por la base (2 en este caso), observando la parte entera del producto, como
sigue:
Multiplicaciones
Partes enteras
0,5821 x 2 = 1,1642
1
0,1642 x 2 = 0,3284
0
0,3284 x 2 = 0,6568
0
0,6568 x 2 = 1,3136
1
0,3136 x 2 = 0,6272
0
Observe que la parte entera de cualquier producto puede ser solo cero o uno; ya que se multiplican por 2
nmeros que son menores que uno. La sucesin de dgitos partes enteras de arriba hacia abajo, da el
equivalente binario requerido. Es decir N = 0,5821 es equivalente a 0,10010(2) (aproximadamente)
d) Decimal a hexadecimal: El mecanismo de conversin es el mismo que el descripto en el tem c, pero
dividiendo el nmero por 16, que es la base del sistema hexadecimal. Para convertir una fraccin
decimal a su equivalente hexadecimal, se aplica el algoritmo parte entera, con base 16.
e) Binario a hexadecimal: Se divide el nmero binario en grupos de cuatro dgitos binarios,
comenzando desde la derecha y se reemplaza cada grupo por el correspondiente smbolo
hexadecimal. Si el grupo de la extrema izquierda no tiene cuatro dgitos, se deben agregar ceros
hasta completar 4 dgitos.
Ejemplo:

(111110011011010011)2 = 0011 / 1110 / 0110 / 1101 / 0011 = (3E6D3)16

f) Hexadecimal a binario: De la misma manera, para convertir nmeros hexadecimales en binarios, se


reemplaza cada smbolo hexadecimal por el correspondiente grupo de cuatro dgitos binarios, y
descarte los ceros innecesarios. Ejemplo:
(6C4F2E)16 = 0110/1100/0100/1111/0010/1110 = = 11011000100111100101110)2

Operaciones aritmticas
Las reglas de la aritmtica son las mismas en todos los sistemas numricos de posiciones de valor
relativo. Por ello, basta slo recordar las reglas correspondientes de la aritmtica decimal para poder
efectuar operaciones aritmticas con nmeros de cualquier otra base.
Suma binaria
En esencia, la suma abrevia la operacin de contar. Sumamos dos dgitos contando los valores de
ambos dgitos en orden correlativo, o bien, lo que es ms simple memorizando la suma de los dgitos
mediante una tabla de sumar. Cuando la suma de los dos dgitos excede los smbolos numricos
disponibles de la notacin (es decir, el lmite de cualquier posicin de dgito), se lleva un 1 a la posicin
de dgito inmediatamente superior. Por lo tanto, en el sistema decimal, 3+5 = 8, pero 9+1 =0 con acarreo
de un 1 (es decir 10).

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 12

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

En el sistema binario hay solamente dos smbolos, 0 y 1. Por lo tanto, al sumar 1+1 en la notacin
binaria se excede el lmite de la cuenta (ya que no hay otro smbolo disponible) y, en consecuencia, el
resultado es 0 con acarreo de un 1 a la posicin de dgito inmediatamente superior.
En la computadora se implementa la operacin de suma mediante circuitos lgicos digitales
combinatorios.
Las reglas completas de la suma binaria son las siguientes:
Reglas de suma binaria:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10 (0 con acarreo de 1)
La ltima suma puede escribirse como diez, pero se lee "uno, cero")
La tabla de sumar binaria que se incluye a continuacin brinda una manera conveniente de resumir estos
resultados:
+
0
1
0
0
1
1
1
10
Veremos tres ejemplos de suma binaria:
a) Suma sencilla sin acarreos:
+

1 0 1 0
1 0 1
1 1 1 1

b) Suma con acarreo: Cuando la suma excede el mximo valor del sistema numrico, en este caso
1, se produce un acarreo, es decir se traslada una unidad a la columna siguiente, tal como se
muestra en la siguiente suma:

Acarreo
+

1
0
1

1
0
0
1

1
1
0

0
0
0

1
0
1

0
1
1

c) Suma con varios acarreos: Frecuentemente es necesario sumar 1 + 1, adems de un 1 de


acarreo, proveniente de una posicin de orden inferior. El resultado es 1, con acarreo de un 1 a
la posicin inmediatamente superior.
1
1 1
0 0 1 1 1 0 1 1 =
59
+ 0 0 1 0 0 0 1 1 = + 35
0 1 0 1 1 1 1 0 =
94
En la suma anterior se han convertido los valores de los operandos para comprobar que el resultado es
correcto.
Resta binaria
Las cuatro reglas bsicas para la resta de nmeros binarios son:
0 - 0 = 0
0 - 1 = 1 (con acarreo negativo de 1, es decir, 10 1 = 1)
1 - 0 = 1
1 - 1 = 0
Por ejemplo, restemos 101 011:
-

0
1
0
0

10
0
1
1

1
1
0

En la columna derecha se realiza la resta de 1 1 = 0

En la columna central hay que tomar prestado un 1 de la siguiente columna ms significativa, la cual
queda en 0 y da lugar a 10 en la columna central, luego 10 - 1 = 1

En la columna izquierda, se resta 0 0 = 0

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 13

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Resta binaria por complemento


Este es el mtodo ms eficiente para realizar sustracciones, y consiste en sumar al minuendo el
complemento del sustraendo. Luego, la unidad que excede la longitud del minuendo, se elimina de la
izquierda y se suma a la cifra de las unidades. (Prestar atencin siempre a las posiciones decimales).
Ejemplo, realizar la siguiente resta:
1
-

0
1

0
0

0
1

1
0

1
1

(minuendo)
(sustraendo)

Los pasos a seguir son:


a) Si la cantidad de dgitos del sustraendo es menor que la del minuendo se completa el
sustraendo con ceros a la izquierda de la parte entera, y a la derecha de la parte decimal
(encolumnar por la coma).
b) Se halla el complemento del sustraendo, restando este valor del mximo valor binario con la
misma longitud que el minuendo.
1
0
1

1
1
0

1
0
1

1
1
0

1
0
1

1
1
0

,
,
,

1
0
1

1
0
1

1
0
1

(complemento)

En el sistema binario el complemento tambin puede hallarse cambiando cada dgito del sustraendo por
su opuesto, es decir, el 1 se convierte en 0, y viceversa.
c) Se suma al minuendo el complemento del sustraendo.
1 0 0 0 1 1 , 1
+
1 0 1 0 1 0 , 1
1 0 0 1 1 1 0 , 1

0
1
0

1
1
0

d) Se elimina el 1 de la izquierda y se suma encolumnado con el ltimo dgito de la cifra, sin


importar la coma decimal.
1
1
0
+
1
1 1 1 0 , 1 0 1 (resultado)
Las comprobaciones pueden realizarse convirtiendo a decimal las cifras del minuendo y del sustraendo y
realizando la resta.
Ejemplo:
1 0 0 0 1 1 , 1 0 1 = 35,625
- 1 0 1 0 1 0 , 1 1 1 = 21
1 1 1 0 , 1 0 1 = 14,625
Otro modo de controlar el resultado es sumar el mismo al sustraendo, debiendo obtenerse el minuendo.
1 1 1 0 , 1 0 1
+ 1 0 1 0 1
1 0 0 0 1 1 , 1 0 1
+

1
1
0

0
0
0

0
1
1

0
0
1

1
1
1

1
0
0

,
,
,

1
1
1

0
1
0

Suma hexadecimal
La suma en el sistema hexadecimal sigue las mismas reglas que la decimal y la binaria. Por ejemplo,
4+5 = 9 tanto en el sistema decimal como en el hexadecimal pero 7+8 = F (no 15) en la notacin
hexadecimal. Cada vez que la suma de dos dgitos sobrepasa F (el smbolo hexadecimal de mayor
valor), se genera el acarreo de un 1 hacia la posicin de dgito inmediatamente superior. De este modo,
7+9 = 10 (es decir, 0 con acarreo de un 1), 9+9 = 12 (es decir, 2 con acarreo de un 1), C+9 = 15, y as
sucesivamente. A continuacin se incluyen tres ejemplos de suma hexadecimal:
a)

9654
+ 4528
DB7C

=
=
=

38,484
17,704
56,188(10)

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 14

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Este ejemplo es sencillo y no implica ningn acarreo. Para verificar el resultado, cada uno de los
operandos fue convertido al sistema decimal, se efectu la suma, y se corrobor el resultado.
b)
+

1
6
1
8

1
A
F
A

E
A
8

En esta operacin se utiliza acarreo. La suma se realiza de la siguiente manera: A + E = 8 con acarreo
de un 1 a la posicin de dgito inmediatamente superior. Al sumar los dgitos de la posicin inmediata
superior, F + A = 9 con acarreo de un 1, pero a este resultado falta sumar el acarreo proveniente de la
posicin de orden inferior, es decir 9 + 1 = A.
Otra manera de hacerlo es sumar primero el acarreo al dgito menor: A + 1 = B, y luego sumar B + F = A
con acarreo de un 1 a la posicin de dgito inmediato superior. Al sumar los dos ltimos dgitos, 1 + 6 = 7,
y ms el 1 de acarreo equivale a 8.
1 1 1
c)
8 F 9 7
+ D 4 4 C , F 9 E
1 6 3 E 4 , E 9 E
Esta suma muestra tambin acarreos pero como son cifras con decimales se deben encolumnar los
sumandos de acuerdo a la posicin de la coma decimal.
Resta hexadecimal
La resta hexadecimal sigue las mismas reglas que la resta decimal y que la resta binaria, con la salvedad
que un acarreo o un pedido de 1 en la notacin hexadecimal representa el nmero decimal 16.
Mtodo tradicional:
7 19 18
8 A
8
minuendo
- 1 F
A
sustraendo
6 A
E
Mtodo del complemento:
Se siguen los mismos pasos que los descriptos para la resta binaria. Ejemplo:
8 E A D, 0 1
(minuendo)
3 B E 5
(sustraendo)
a) Determinacin del complemento: se resta el sustraendo del mximo valor hexadecimal que es
FFFF, FF. No olvidar completar con ceros el sustraendo, para obtener la misma cantidad de
dgitos que el minuendo, encolumnando por la coma decimal.
F F
3 B
C 4
b) Suma del complemento al minuendo:
-

+
1

8
C
5

E
4
2

F
E
1

F
5
A

,
,
,

F
0
F

F
0
F

A
1
C

D
A
8

,
,
,

0
F
0

1
F
0

c) Se elimina el 1 de la izquierda y se suma al ltimo dgito, sin importar la coma decimal.


+

8
C
5

E
4
2

A
1
C

D
A
8

,
,
,

0
F
0

1
F
0
1
1

Para realizar la comprobacin, se puede proceder de igual manera que en la resta binaria.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 15

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Tema 2: Representacin de informacin en la


computadora
Dos de los aspectos ms importantes que se presentan en Informtica, relacionados con
la informacin, es cmo representarla y cmo materializarla o registrarla fsicamente.
En la representacin al interior de las computadoras, se consideran cuatro tipos de
informacin: textos, cifras numricas, sonidos e imgenes. Cada uno de ellos presenta
caractersticas diferentes.
El objetivo de este tema es comprender los procesos que transforman la informacin externa a la
computadora en patrones de bits fcilmente almacenables y procesables por los elementos internos de la
misma.

1.

Representacin de la informacin

Cuando se pretende plasmar la informacin de una forma transmisible y ms o menos permanente, se


debe disponer de un soporte fsico adecuado, el cual contenga a la informacin. Existe una variedad de
soportes fsicos y algunos muy modernos, pero un medio que sigue en plena vigencia es la ESCRITURA.
Han evolucionado los mtodos pero el fundamento sigue siendo el mismo: poner en la secuencia
conveniente una serie de smbolos escogidos dentro de un conjunto predefinido.
La informacin se representa en base a cadenas de smbolos. En base a un alfabeto convencional
cualquiera, sobre el que se establece un acuerdo cultural de entendimiento entre el que escribe y el que
lee, podemos representar cualquier informacin compuesta de palabras y cantidades numricas.
Un alfabeto es un conjunto de smbolos elementales, fijado por acuerdo cultural,
en base a los cuales se forma la informacin. Cualquier alfabeto se fija
arbitrariamente, y esto es muy importante. Gracias a este concepto la Informtica
ha logrado el tratamiento automtico de la informacin con mquinas.
No es necesario que el alfabeto que usa una mquina en su interior sea el mismo
que utiliza el hombre que la ha construido y la maneja, basta con que la
transformacin de los smbolos internos a los externos o viceversa se efecte de
una manera sencilla, de ser posible automticamente por la propia mquina.

1.1. Codificacin de la informacin


Cuando una informacin representada en un alfabeto A se transcribe a un segundo alfabeto B, se dice que
ha sido codificada.
El caso ms sencillo es cuando ambos alfabetos tienen la misma cantidad de smbolos y a cada smbolo del
primer alfabeto le corresponde un smbolo del segundo alfabeto (correspondencia biunvoca o biyectiva).

Otro caso es cuando el segundo alfabeto dispone de un nmero de smbolos menor que el alfabeto de
origen. En este caso no se puede recurrir a una correspondencia de smbolos uno a uno y ser necesario
transcribir (codificar) cada smbolo del conjunto A1 con una combinacin de smbolos del conjunto A2.
Un ejemplo es el sistema de codificacin Morse. Este cdigo dispone tan solo de dos elementos: el punto y
la raya. Esto se debi a razones tcnicas, dado que distinguir ms de dos niveles de pulsacin (corto =

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 1

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

punto; largo = raya) hubiera sido totalmente inoperante, los mensajes hubieran estado sometidos a una
enorme cantidad de subjetivismo y malas interpretaciones.

Existen razones que determinan la necesidad de que la informacin sea codificada y ellas son:
a) Debido a la transmisin automtica de la informacin.
b) Necesidad de abreviar la escritura.
c) Hacer secreta e ininteligible la informacin que se codifica. Se trata de hacer crptico un mensaje
plasmndolo en un sistema de codificacin que el emisor y el receptor conocen pero que un posible
interceptor desconocer.
Codificar significa transformar unos datos de su representacin actual a otra
representacin predefinida y preestablecida, que podr ser tan arbitraria y
convencional como se quiera, pero que deber tener en cuenta el soporte fsico
sobre el cual se mantienen los datos, as como los procesos a los cuales se los
deber someter y, tambin, si ser necesario transmitirlos a travs de ciertos
canales fsicos de comunicacin.
Sistemas de codificacin binarios
Cuando los smbolos de un alfabeto A1 son transcritos a un alfabeto A2 que slo tiene dos smbolos, se dice
que es sistema de codificacin binario.
El motivo para utilizar este alfabeto de codificacin es de tipo tcnico. Existen dificultades al usar
dispositivos fsicos que puedan detectar, con el debido grado de precisin, ms de dos estados claramente
diferenciados, en cualquier circunstancia y frente a cualquier posible perturbacin. Se debe recurrir, por lo
tanto a dispositivos fsicos biestables (presentan dos estados fsicos diferenciados en forma clara y estable).
Por ejemplo:
Corriente elctrica: Distinguir entre diez o ms niveles de voltaje o intensidad es complicado, en cambio,
distinguir entre dos extremos de pasa / no pasa corriente, es ms sencillo y econmico.
Intensidad de la luz: Es muy difcil discernir a simple vista entre varias intensidades de luz, sin embargo, se
pueden identificar claramente dos situaciones extremas: luz apagada / luz encendida.
Sentido de la magnetizacin: De la misma manera, diferenciar entre los diferentes valores que puede
asumir un campo magntico es ms difcil que diferenciar entre una magnetizacin norte-sur y su contraria.

Ejemplo: Un anillo de ferrita es capaz de adoptar dos estados de magnetizacin distintos y estables, se puede emplear
para almacenar una informacin elemental: slo hay que asignar arbitrariamente los valores "0" y "1" a esos estados

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 2

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

1.2. Cdigos de representacin de la informacin en las computadoras


Los datos cualquier informacin que se maneja internamente en un sistema informtico esta
representada por nmeros binarios segn un mtodo preestablecido. En la Tabla 1 se muestran las
distintas categoras de informacin y los distintos mtodos de representacin en cada una de ellas.

1.2.1 Texto

EBCDIC
ASCII
UNICODE

Coma Fija
(Enteros)

1.2.2 Cifras
Numricas

Coma
Flotante
(Reales)

1.2.3 Sonidos

Representacin Binaria
sin signo

Decimal codificado
Binario (BCD)

Representacin Binaria
con signo

Mdulo y Signo
Complemento a 1
Complemento a 2
Exceso a 2 elevado a N-1

en

Normalizacin IEEE754: 1) Formato simple precisin y 2)


Formato doble precisin.

Formatos WAV, MIDI, MP3


Mapa de Bits

Formatos BMP, TIFF, JPEG, GIF, PNG

Mapa de Vectores

Formatos CDR, AI, EPS, WMF

1.2.4 Imgenes

Tabla 1: Cdigos de representacin de informacin

1.2.1. TEXTO
a) EBCDIC: Cdigo de Intercambio Decimal Codificado en Binario Extendido
Es un sistema de codificacin de 8 bits, donde cada carcter se representa como una cadena de 8 dgitos
binarios y hay un total de 28 (256) caracteres a disposicin.
Cada carcter codificado o byte, se divide normalmente en cuatro bits de zona (7, 6, 5 y 4), y cuatro bits
numricos (3, 2, 1 y 0), de pesos: 8-4-2-1. En la Tabla 2 se muestran los 256 smbolos o caracteres
codificados en EBCDIC.
7

Posicin 7 y 6
11- Letras maysculas y nmeros
10 - Letras minsculas.
01 - Caracteres especiales
00 - Ningn carcter encontrado

Posicin 5 y 4
00 - A-I
01 - J-R
10 - S-Z
11 - Nmeros

Ejemplos:
Letra A mayscula
Letra j minscula
Letra k minscula
Nmero 5

= 1100 0001
= 1001 0001
= 1001 0010
= 1111 0101

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 3

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
bits
3210
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

7654
0000
NUL
SOH
STX
ETX
PF
HT
LC
DEL

0001
DEL
DC1
DC2
DC3
RES
NL
BS
IL
CAN
RLF EM
SMM CC
VT
FF
IFS
CR
IGS
SO
IRS
SI
IUS

0010 0011 0100 0101 0110 0111 1000 1001


DS
SP
&
SOS
a
j
FS
SYN
b
k
c
l
BYP PN
d
m
LF
RS
e
n
EOB UC
f
o
ESC EOT
g
p
h
q
\
i
r
SM
!

.
$
'
#
DC4 <
*
%
@
ENQ NAK (
)
_

ACK
+
;
>
BEL SUB |

?
"
Tabla 2: Cdigo EBCDIC de 8 bits

1010 1011 1100


{
~
A
s
B
t
C
u
D
v
E
w
F
x
G
y
H
z
I

1101
}
J
K
L
M
N
O
P
Q
R

1110 1111
\
0
1
S
2
T
3
U
4
V
5
W
6
X
7
Y
8
Z
9

b) ASCII: Cdigo Estndar Americano para el Intercambio de Informacin


El cdigo ASCII bsico utiliza 7 bits para representar los caracteres. Como otros cdigos de formato de
representacin de caracteres, es un mtodo para una correspondencia entre cadenas de bits y una serie de
smbolos (alfanumricos y otros), permitiendo de esta forma la comunicacin entre dispositivos digitales as
como su procesado y almacenamiento. El cdigo de caracteres ASCII o una extensin compatible se usa
casi en todos las computadoras.

Existen otras versiones ampliadas de este cdigo que utilizan 8 bits y respetan los cdigos normalizados del
ASCII bsico, aprovechando las combinaciones no usadas para representar smbolos adicionales. Entre ellas
se encuentran los cdigos ISO 8859-n, donde n es el nmero que identifica el juego de los nuevos
caracteres introducidos dependiendo de los lenguajes. Por ejemplo, la norma, ISO 8859-1, tambin
denominada ISO-Latin1, se proyect para Amrica y Europa occidental e incluye vocales con acentos, tildes,
diresis y otras letras latinas no usadas en los pases anglosajones.
El cdigo ASCII reserva los primeros 32 cdigos (numerados del 0 al 31 en decimal) para caracteres de
control: cdigos pensados para controlar los dispositivos. Por el avance tecnolgico la mayora de ellos ya
no se utiliza, excepto LF (decimal 10) representa la funcin "nueva lnea" (line feed) que hace que una
impresora avance el papel, el CR que indica el retorno de carro (tecla Enter), y el smbolo ESC (decimal
27) representa la tecla "Escape" que se utiliza para cancelar acciones.
Los cdigos del 33 al 126 se conocen como caracteres imprimibles, y representan letras, dgitos, signos de
puntuacin y varios smbolos. El cdigo el carcter espacio, designa al espacio entre palabras, y se produce
cuando se oprime la barra espaciadora de un teclado.
En la tabla 3 podemos ver que cada carcter tiene una representacin interna dada por un conjunto
determinado de bits, que tambin pueden expresarse en decimal y hexadecimal, siguiendo las reglas de
conversin mostradas anteriormente. Por ejemplo: al carcter J le corresponde el cdigo ASCII decimal 74
que en hexadecimal se representa como 4A, y en binario como 01001010, como se puede comprobar en la
tabla.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 4

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Hex Dec

Hex

Dec

10

11

12

13

14

15

Bits

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

0000

NUL

SOH

STX

ETX

EOT

ENQ

ACK

BEL

BS

HT

LF

VT

FF

CR

SO

SI

10

16

0001

DEL

DC1

DC2

DC3

DC4

NAK

SYN

ETB

CAN

EM

SUB

ESC

FS

GS

RS

US

20

32

0010

SP

&

30

48

0011

<

>

40

64

0100

50

80

0101

60

96

0110

70

112 0111

DEL

Tabla 3: Cdigo ASCII de 7 bits


Bits de zona

Caracteres ASCII Extendido:


El cdigo ASCII de 7 bits contiene 128 caracteres y contiene todos lo necesarios para escribir en idioma
ingls. En 1986, se modifico el estndar para agregar nuevos caracteres latinos, necesarios para la
escrituras de textos en otros idiomas, como por ejemplo el espaol, as fue como se agregaron los
caracteres que van del ASCII 128 al 255, denominados ASCII Extendido.

Tabla 4: Cdigo ASCII extendido de 8 bits


En la tabla 4 se puede ver que las letras propias del espaol, como la , se codifican como decimal 164 y
165, respectivamente.
Las letras acentuadas como la minscula se representa con el decimal 160, la es 161, la es 162 y la es
163.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 5

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Ingreso de caracteres por teclado:


No todos los smbolos que necesitamos utilizar se encuentran disponibles en el teclado, o el teclado tiene
una configuracin diferente. En este caso, se puede ingresar cdigos ASCII utilizando su valor decimal, de la
siguiente manera:
-

Para ingresar el smbolo corchete [

Presionar la tecla Alt en el teclado.

Sin dejar de presionar Alt, presionar en el teclado numrico el nmero 91, que es el numero de
la letra o smbolo [ en el cdigo ASCII.

De la misma manera, para ingresar la letra , presionando la tecla ALT escribimos el nmero 165, que
es el numero de la letra o smbolo en el cdigo ASCII.

c) UNICODE
Este cdigo fue propuesto por un consorcio de empresas y entidades con el objetivo representar texto de
muy diversas culturas.
Los cdigos anteriores presentan varios inconvenientes, tales como:

Los smbolos son insuficientes para representar los caracteres especiales que requieren numerosas
aplicaciones.

Los smbolos y cdigos aadidos en las versiones ampliadas a 8 bits no estn normalizados.

Estn basados en los caracteres latinos, existiendo otras culturas que utilizan otros smbolos muy
distintos.

Los lenguajes escritos de diversas culturas orientales, como la china, japonesa y coreana se basan en la
utilizacin de ideogramas o smbolos que representan palabras, frases o ideas completas, siendo, por
tanto, inoperantes los cdigos que slo codifican letras individuales.

Unicode est reconocido como estndar ISO/IEC 10646, y presenta las siguientes propiedades:

Universalidad, trata de cubrir la mayora de lenguajes escritos: 16 bits 65.356 smbolos.

Unicidad, a cada carcter se le asigna exactamente un nico cdigo.

Uniformidad, ya que todos los smbolos se representan con un nmero fijo de bits (16).

La tabla 5 muestra un esquema de cmo se han asignado los cdigos Unicode.

Zona Cdigos

I
O
R

Smbolos codificados

0000
Cdigo ASCII Latn-1
00FF
0000
Otros alfabetos
Smbolos generales y caracteres fonticos chinos, japoneses
2000
y coreanos
4000
Ideogramas
A000
Pendiente de asignacin
E000
Caracteres locales y propios de los usuarios
FFFF
Compatibilidad con otros cdigos
Tabla 5: Esquema de asignacin de cdigos en Unicode

Licenciatura en Sistemas de Informacin FACENA - UNNE

Nmero
caracteres
256
7.936
8.192
24.576
16.384
8.192

Pg. 6

de

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

1.2.2. CIFRAS NUMERICAS


Sistemas de representacin restringidos a n bits
Las computadoras disponen de registros y buses de tamaos especficos que limitan la cantidad de bits
disponibles para la representacin de los datos. Es habitual mencionar que el sistema trabaja con datos de
8, 16, 32 bits, o en punto flotante de simple/doble precisin. Por lo tanto, las representaciones que se
utilizan tienen limitaciones, y los clculos estn siempre sujetos a aproximaciones y por ende a errores.
Para caracterizar los sistemas de representacin y compararlos se definen tres parmetros importantes:
Capacidad de representacin: Es la cantidad de combinaciones distintas que se pueden representar. Por
ejemplo, si tengo un sistema restringido a 5 bits, son 25 combinaciones de unos y ceros que permiten
representar 32 elementos diferentes.
Resolucin: Es la mnima diferencia entre un nmero representable y el siguiente.
Rango: El rango de un sistema est dado por el nmero mnimo y el nmero mximo representables. Por
ejemplo, en binario con cinco dgitos es [0, 31]
Ejemplo: Si trabajamos en sistema decimal con tres cifras, un entero y dos decimales:
Rango es: de 0,00 a 9,99
Resolucin es: 0,01

Representacin de cifras numricas


En general los nmeros utilizados por la computadora se dividen en dos grandes grupos: los enteros y los
reales. Almacenar un nmero entero requiere que no slo se almacenen los dgitos sino tambin el signo, o
por lo menos que se utilice una forma de almacenamiento que permita reconocer los enteros positivos y
los negativos. Para los nmeros reales se utiliza el mtodo de coma flotante.

a) Coma Fija (Enteros)


a.1 - Representacin Binaria sin signo
Hay muchas maneras de representar datos numricos en forma binaria. Uno puede simplemente escribir el
nmero en base 2. A esto se llama codificacin binaria directa.
Otra manera es codificar los nmeros decimales dgito por dgito. A esta codificacin que requiere por lo
menos 4 bits por cada dgito decimal, se le llama codificacin BCD (binary-coded decimal) Decimal
Codificado en Binario.
En esta representacin se utiliza la codificacin ponderada, en la cual se dan a los bits de izquierda a
derecha, los pesos 8, 4, 2 y 1, respectivamente. Como estos pesos son precisamente los valores de posicin
en el sistema binario, un dgito decimal esta codificado como su representacin binaria.
Ejemplo: La representacin BCD 8-4-2-1 de N = 469 es 0100 0110 1001
Por otra parte, la representacin binaria directa es: N = 111010101(2) que usa 3 bits menos.
a.2 - Representacin Binaria con signo
Al utilizar la computadora el sistema binario como mtodo de representacin interno de datos, es
conveniente tener en cuenta que disponemos de un nmero finito de bits n, que denominamos palabra.
Una palabra de computadora es un grupo de bits o bytes que pueden ser manipulados y almacenados
como una unidad por la Unidad Central de Proceso (CPU). Este concepto es muy importante debido a que
los circuitos internos de toda computadora estn diseados considerando el tamao de la palabra.
El nombre coma fija viene de la posicin en que se supone situado el punto o coma decimal, que es en
una posicin fija.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 7

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

a.2.1. Mdulo y signo (MS)


El bit que est situado ms a la izquierda representa el signo, y su valor ser de 0 para el positivo (+) y de 1
para el negativo (-). El resto de los bits (N-1) representan el mdulo del nmero.
Nmero 10

0 0 0 0 1 0 1 0

signo
Nmero -10

Mdulo
1 0 0 0 1 0 1 0

El rango de representacin para un tamao de palabra de N bits es:


-2 N-1+ 1 <= X <= 2 N-1 -1
Para el caso de 8 bits el rango es:
-2 8-1 + 1 <= X <= 2 8-1 - 1
-27+ 1 <= X <= 27- 1
-128 + 1 <= X <= 128 - 1
-127 <= X <= 127
Este sistema posee la ventaja de tener rango simtrico y la desventaja de tener dos representaciones del 0.
+0 = 0 0000000
0 = 1 0000000
a.2.2. Complemento a 1 (C-1)
En este mtodo, el bit de la izquierda corresponde al signo, 0 para el positivo y 1 para el negativo. Para los
nmeros positivos el resto de los bits (N-1) representan el mdulo del nmero. El negativo de un nmero
positivo se obtiene complementando todos sus dgitos (cambiando ceros por unos y viceversa) incluido el
bit de signo.
Nmero 10

0 0 0 0 1 0 1 0

signo
Nmero -10

Mdulo
1 1 1 1 0 1 0 1

El rango de representacin es de:


-2 N-1+ 1 <= X <= 2 N-1 -1
Para el caso de 8 bits el rango es:
-127 <= X <= 127
Este sistema posee la ventaja de tener rango simtrico y la desventaja de tener dos representaciones del 0.
+ 0 = 0 0000000
0 = 1 11111111
a.2.3. Complemento a 2 (C-2)
Este sistema de representacin utiliza el bit de la izquierda para el signo, correspondiendo el 0 para el
positivo y el 1 para el negativo. Para los nmeros positivos el resto de los bits (N-1) representan el mdulo
del nmero. El negativo de un nmero positivo se obtiene en dos pasos:
1) Se complementa el nmero positivo en todos sus bits (cambiando ceros por unos y viceversa) incluido
el bit de signo, es decir, se realiza el "complemento a 1".
2) Al resultado obtenido en el primer paso se le suma 1 (en binario) despreciando el ltimo acarreo si
existe. Ejemplo:

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 8

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
Nmero 10
complemento
Nmero -10

0 0 0 0 1 0 1 0
1 1 1 1 0 1 0 1
+
1
1 1 1 1 1 0 1 1 0

El rango de representacin es asimtrico, lo que constituye su mayor inconveniente y viene dado por:
-2 N-1 <= x <= 2 N-1 -1
Para el caso de palabras de 8 bits el rango es:
-128 <= X <= 127
La principal ventaja es la de tener una nica representacin del cero:
En el caso de palabras de 8 bits tendramos:
Nmero 0

00000000

Nmero -0

Primer paso

11111111

Segundo paso

11111111

1
1 00000000
El ltimo acarreo se desprecia por lo tanto, el 0 y el -0 tienen una sola representacin.
a.2.4. Exceso a 2 elevado a N-1
Este mtodo no utiliza ningn bit para el signo, con lo cual todos los bits representan un modulo o valor
que corresponde al nmero representado mas el exceso, que para N bits viene dado por 2 elevado a N-1.
Por ejemplo, para 8 bits el exceso es de 27 = 128, con lo que el nmero 10 vendr representado por 10 +
128 = 138; para el caso de -10 tendremos -10 + 128 = 118. Veamos cuales son sus representaciones:
Nmero 10

10001010

Nmero -10.....01110110
en este caso, el 0 tiene una nica representacin, que para 8 bits corresponde a:
Nmero 0 (0 + 128)

10000000

El rango de representacin es asimtrico (inconveniente) y viene dado por:


-2 N-1 <= X <= 2 N-1 -1
Para el caso de palabras de 8 bits el rango es:
-128 <= X <= 127
Conclusiones sobre los sistemas de representacin de coma fija:
El mtodo ms utilizado en la actualidad para la representacin de enteros es el Complemento a 2, ello se
debe a la facilidad de efectuar las sumas y restas con esta representacin, porque en todos los casos, las
operaciones se resuelven con sumas.
Este mtodo reduce la complejidad de los circuitos de la unidad aritmtica lgica, dado que no es necesario
circuitos especficos para restar.
En la tabla 6 se muestran los lmites aproximados de valores enteros representables con distintas
longitudes de palabras:

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 9

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
Lmite superior
N (max)

Lmite inferior N (min)


Complemento a 1
Complemento a 2

127

-127

-128

16

32.767

-32.767

-32.768

32

2.147.483.649

-2.147.483.649

-2.147.483.650

64

9,223372 * 1018

-9,223372 * 1018

-9,223372 * 1018

Longitud de palabra

Tabla 6: Lmites o rangos de representacin para distintas longitudes de palabras


Si como resultado de las operaciones, se obtiene un nmero fuera de los lmites o rango, se dice que se ha
producido un desbordamiento. La figura 1 muestra grficamente el rango de representacin de los
nmeros enteros.
Datos enteros representables

Desbordamiento

Desbordamiento

+
N (Max)

N (Min)

0
Figura 1: Rango de posibles representaciones de enteros

b) Coma Flotante (Nmeros Reales)


La representacin de coma flotante, es una forma de notacin cientfica usada en los procesadores (CPU) y
otros componentes de procesamiento, con la cual se pueden representar nmeros reales extremadamente
grandes y pequeos de una manera muy eficiente y compacta, y con la que se pueden realizar operaciones
aritmticas. El estndar para la representacin en coma flotante es el IEEE 754.
Notacin cientfica
La notacin cientfica es un recurso matemtico empleado para simplificar clculos y representar en forma
concisa nmeros muy grandes o muy pequeos. Para hacerlo se usan potencias de diez
En notacin cientfica estndar, los nmeros se expresan de la forma:

N= +- m E +-p = +- m * 10 +- p

donde 1 <= m < 10, y p es un nmero entero, cuyo signo


indica si la coma se desplaza a la derecha (+) o a
izquierda (-)

Ejemplo: -246,36 = -2,4636 E +2 = -2,4636 * 10 2


82000000000 = 8,2 E +10 = 8,2 * 10 10
0,00003 = 3,0 E-5 = 3 * 10 -5

Concepto de precisin
Como se dijo antes, la cantidad de espacios para almacenar nmeros es finita, por lo tanto no se pueden
representar infinitos nmeros.
Los nmeros reales, a diferencia de los enteros, adems de rango poseen una precisin.
La precisin es la medida de la exactitud del valor medido. Por ejemplo, si se mide un objeto de 10,12
metros, la precisin en centimtrica, si se mide 10,125 la precisin es milimtrica
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 10

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

En coma flotante, el rango de la representacin queda determinado bsicamente por la cantidad de dgitos
del exponente y la precisin queda determinado por la cantidad de dgitos de la mantisa Si se requiere un
rango mayor habr que sacrificar precisin. Si queremos mayor precisin se sacrificar el rango, utilizando
siempre la misma cantidad de dgitos de la representacin.
La posibilidad de plantear soluciones de compromiso entre rango y precisin es una de las ventajas
principales de la representacin en punto flotante.

Normalizacin IEEE 754


Existen muchas maneras de representar nmeros en formato de punto flotante. Cada uno tiene
caractersticas propias en trminos de rango, precisin y cantidad de elementos que pueden representarse.
En un esfuerzo por mejorar la portabilidad de los programas y asegurar la uniformidad en la exactitud de
las operaciones en este formato, el IEEE (Instituto de Ingeniera Elctrica y Electrnica de Estados Unidos)
ha creado un estndar que especifica cmo deben representarse los nmeros en coma flotante con simple
precisin (32 bits) o doble precisin (64 bits), y tambin cmo deben realizarse las operaciones aritmticas
con ellos.
Para representar un nmero en la forma N=M*BE, siendo E entero. La notacin establece las normas que se
indican a continuacin:
a) Elementos almacenados y orden de almacenamiento: La base del exponente es B=2, es decir est
predeterminada: N = +/- M * 2E .
un campo del signo (s) que ocupa 1 bit,
un campo del exponente (o caracterstica, e), que ocupa ne bits y
un campo de la mantisa (m), que ocupa nm bits.
Siendo n el nmero total de bits: n = 1 +ne+ nm

b) Campo del signo: El bit de signo es cero para los nmeros positivos y uno para los nmeros negativos.

c) Campo del exponente. El exponente se almacena en la forma de "entero sesgado, es decir, el


exponente almacenado e se obtiene sumando al exponente del nmero, E, un sesgo S. Donde:

S = 2ne-1 - 1
e=S+E
De esta forma en los ne bits reservados para el exponente se pueden incluir exponentes positivos o
negativos sin utilizar un bit explicito de signo.
Ejemplos:

Exponente (E) Exponente sesgado


0
+2
-126

Exponente Almacenado

127 + 0= 127
127 + 2= 129
127 126= 1

0111 1111
1000 0001
0000 0001

d) Campo de la mantisa: Por lo general, el exponente se ajusta de forma tal que el 1 ms significativo de la
mantisa se encuentre en la posicin 0 (posicin de las unidades); es decir, 2 > M 1. Cuando el nmero
se encuentra ajustado de esta forma, se dice que est normalizado, en caso contrario, se dice que esta
denormalizado.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

e) Precisiones usuales en IEEE754:

Simple Precisin (32 bits). El primer bit es el bit de signo (S), los siguientes 8 son los bits del
exponente (E) y los restantes 23 son la mantisa (M).
Signo
31

Exponente

Mantisa

30 - 23

22 - 0

Exponente: 8 bits. Se utiliza una representacin conocida como sesgada.


El sesgo toma el valor (2k-1 1), donde k es el nmero de bits disponibles para la representacin del
exponente. En este caso S=128-1 = 127. Este sesgo se suma al exponente original, y el resultado es
el que se almacena: E = EO + S
Mantisa: 23 bits. Bit implcito 24 bits efectivos. Est normalizada. La normalizacin toma la
forma 1,bb..b, donde el patrn bb..b representa los 23 bits de la mantisa que se almacenan. Ntese
que la coma en esta normalizacin est a la derecha del primer dgito significativo.

Doble precisin: exige una cadena de 64 bits. El primer bit es el bit de signo (S), los siguientes 11
son los bits del exponente (E) y los restantes 52 son la mantisa (M).
Signo

Exponente

63

62 - 52

Mantisa
51 - 0

Exponente: 11 bits. Sesgo 211-1 1 = 1023


Mantisa: 52 bits. Bit implcito 53 bits efectivos. Igual consideracin para la normalizacin.
f) Valores lmites: Con toda representacin se obtienen unos valores mximos y mnimos representables
que para precisin simple son:
Nmero Mayor (N max)

3,402823466. 1038

Nmero menor normalizado (N min, nor )

1,2. 10-38

Nmero menor denormalizado (N min, den ) 1,1401. 10-45


En la figura 2 se muestra el rango de representacin de los nmeros reales. Obsrvese que los nmeros
reales que cumplen las siguientes condiciones no pueden ser representados:

Los nmeros comprendidos entre N(min,den) y N(Min,den) con N distinto de cero. Si como
resultado de una operacin el nmero N est incluido en esa zona, se dice que se produce un
agotamiento (underflow).

Los nmeros menores que N(max) y mayores que N(Max) con N distinto de infinito positivo o
negativo. Si como resultado de una operacin el nmero N cae en esa zona, se dice que se produce
un desbordamiento (overflow).

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 12

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Figura 2: Rango de posibles representaciones de nmeros reales

Observaciones finales
En importante que el programador tenga en cuenta cmo se almacenan los nmeros en la computadora, ya
que se pueden presentar problemas inherentes a la forma en que se representan los nmeros (con un
nmero limitado de bits).

Dificultades:
a) Por la obtencin, en resultados intermedios, de nmeros excesivamente pequeos. Esto puede ocurrir
por restar dos nmeros muy iguales o por la divisin entre nmeros en los que el divisor es mucho
mayor que el dividendo. En estos casos puede perderse la precisin de los clculos o producirse un
desbordamiento a cero o agotamiento.
b) Por la obtencin de resultados numricos excesivamente altos, es decir por desbordamiento. Esto
ocurre, por ejemplo, al dividir un nmero por otro mucho menor que l o al efectuar sumas o
productos sucesivos con nmeros muy elevados.
c) En la comparacin de dos nmeros. Hay que tener en cuenta que cada dato real en la computadora
representa a infinitos nmeros reales (un intervalo de la recta real), por lo que en general una mantisa
decimal no puede representarse exactamente con nm bits, con lo que genera un error "de
representacin".
d) Esto da lugar a problemas al comparar si un nmero es igual a otro (sobre todo si estos nmeros se han
obtenido por clculos o procedimientos distintos), ya que la computadora considera que dos nmeros
son iguales nicamente si son iguales todos sus bits. Las detecciones de igualdades deben hacerse con
nmeros enteros o considerando que dos nmeros son iguales si la diferencia entre ellos es menor que
un valor dado.
e) Una consecuencia de lo dicho anteriormente es que, la suma y multiplicacin de datos de tipo real no
siempre cumplen las propiedades asociativas y distributivas, se pueden obtener resultados distintos
dependiendo del orden en que se realizan las operaciones.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 13

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

1.2.3. Representacin de imgenes y sonido


a) Sonidos
Las aplicaciones multimedia procesan tanto texto, como sonido e imgenes.
El sonido, igual que los elementos visuales, tiene que ser grabado y formateado de forma que la
computadora pueda manipularlo y usarlo en presentaciones. Los formato audio ms usuales son el de
forma de onda (WAV) y el Musical Instrument Digital Interface (MIDI).
Representacin del sonido
Las ondas de sonido se representan como una curva
continua llamada seal analgica. Los componentes
principales de una seal analgica son: La Lnea Base,
el Perodo, la Frecuencia, y la Amplitud, tal como se
ve en la siguiente figura:
-

La
Lnea
Base
corta
la
seal
aproximadamente por la mitad, y es un punto
de referencia para medir el sonido.

El Perodo es la cantidad de tiempo que


transcurre entre dos ciclos sucesivos de la
onda de sonido.

La Frecuencia es el inverso del perodo, o nmero de ciclos por segundo. Se mide en hertz (Hz) o en
kilohertz (KHz). Los sonidos audibles para los seres humanos tienen una frecuencia entre 20 Hz y 20
KHz.

La Amplitud de la seal es la distancia de la lnea base a un pico dado, determina el volumen del
sonido.

Grabacin de una seal de sonido


Para el procesamiento de seales analgicas se usan circuitos de muestreo y retencin, que permiten
tomar muestras de la amplitud de la onda de sonido a intervalos de tiempo fijo. El nmero de muestras
tomadas por segundo se conoce como Frecuencia de muestreo. En la figura siguiente se muestra una
frecuencia de muestreo de 28 Hz.

La frecuencia de muestreo debe ser como mnimo 2 veces la frecuencia mxima contenida en la seal.
Mientras ms alta sea la frecuencia de muestreo mejor ser la calidad del sonido. La siguiente tabla
presenta las frecuencias de muestreo ms usadas, el nmero de muestras por segundo, la calidad del
sonido y sus aplicaciones usuales.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 14

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
Frecuencia de muestreo
11Khz
22 KHz
44 Khz
96 Khz

Muestras por segundo


11025
22050
44100
96000

Calidad del sonido


Baja
Media
Alta
Alta

Aplicaciones
Telfono
Radio
Cd de msica
alta definicin para DVD

Digitalizacin del sonido en la computadora


Una vez convertida la seal analgica a una seal discreta por medio del circuito de muestreo y retencin
se representa cada uno de los valores de amplitud retenidos en cdigo binario (seal digital).
A cada muestra de sonido tomada corresponde un valor de amplitud, que en la computadora se representa
en 8 o en 16 bits.
Si se utiliza la representacin en 8 bits, las medidas de amplitud del muestreo se llevan a una escala (en
binario) entre 00000000 y 11111111. Se tienen, por lo tanto, 256 valores binarios diferentes para
representar una seal.
De forma similar, una representacin en 16 bits lleva los valores de amplitud del muestreo a una escala
entre 0000000000000000 y 1111111111111111. As, se tienen 65536 valores binarios diferentes para
representar una seal. Esto es, que con 16 bits se representa con mayor precisin la onda original. Sin
embargo, esta representacin consume mayor espacio de almacenamiento en disco duro.
Calidad del sonido y espacio de almacenamiento
La frecuencia de muestreo es un nmero que indica la cantidad de muestras que se toman en un segundo.
La resolucin o profundidad del sonido es un nmero que indica cuantos bits se utilizan para representar
cada muestra. La calidad del sonido depende de estos dos factores, cuanto mayor sean estos valores, ms
parecida ser la calidad del sonido digital al real.
Otra variable que afecta la calidad del sonido es el nmero de canales de entrada. Un sonido monofnico
se produce cuando la fuente de audio tiene un canal de entrada, mientras que un sonido estereofnico
resulta cuando la fuente de audio tiene dos canales de entrada.
El estndar de calidad audio CD determina una frecuencia de 44,1 Khz y 16 bits estreo. Esto quiere decir
que para esta calidad se toman 44.100 muestras que se representan con 16 bits y en dos canales
independientes (sonido estreo).
Para conocer el espacio en disco requerido para almacenar 3 minutos de msica con esta calidad se realiza
el siguiente clculo:
3 minutos x 60 segundos= 180 segundos
180 segundos x 44100 muestras por segundo = 7.938.000 de muestras
7.938.000 muestras x 16 bits = 127.008.000 bits
127.008.000 x 2 canales = 254.016.000 bits
254.016.000/8 = 31.752.000 bytes, aproximadamente 30 MB.
Es necesario entonces buscar un equilibrio entre la calidad de sonido deseado y los recursos de
almacenamiento disponibles en la computadora.
Las ventajas de la digitalizacin del sonido es que se puede guardar y copiar infinitas veces sin prdida de
calidad y puede procesarse digitalmente de manera ms flexible y potente que con procesos analgicos.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 15

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Formatos del sonido digitalizado

Audio digital en formato de onda o audio CD o .wav: Es el formato ms adecuado para almacenar el
sonido digital. Su principal ventaja es la calidad del sonido y su desventaja el tamao del archivo. Por
ejemplo, un CD contiene aproximadamente 70 minutos de audio a la mxima calidad: 44,1KHz, 16 bits y
estreo (2 canales).

El formato MIDI: Slo se almacenan las notas que debern ser tocadas en cada instante. Por tanto
permite gran flexibilidad y es ideal para compositores. Sin embargo, para obtener una calidad
aceptable, es necesario que la tarjeta de sonido disponga de tabla de ondas o, en su defecto, de un
sintetizador virtual. Otra carencia importante es que no se puede aadir voces humanas, las voces no
se pueden sintetizar tan fcilmente como el sonido de un instrumento.

El formato MP3: Es una especificacin para la compresin de ficheros wav. Reduce el tamao original
de los ficheros en unas 10 veces. La compresin normalmente es con prdida, perdiendo parte del
sonido, bien por ser datos redundantes o por tratarse de zonas donde apenas llega el odo humano.

b) Imgenes
Representacin de imgenes
Las imgenes se adquieren por medio de perifricos tales como escneres, cmaras de video o cmaras
fotogrficas. Como todo tipo de informacin, una imagen se representa por patrones de bits, generados
por el perifrico correspondiente. Si bien hay sistemas de codificacin de imgenes muy diversos, existen 2
formas bsicas de representar las imgenes:
Mapa de bits
Mapa de vectores
a)
Mapa de bits
Una imagen est compuesta por infinitos puntos, y a cada uno de ellos se le asocia un atributo que puede
ser su nivel de gris, en el caso de una imagen en blanco y negro, o su color, cuando la imagen es en color.
Entonces, para codificar y almacenar una imagen hay que tener en cuenta estos dos factores: el nmero de
puntos a considerar (resolucin) y el cdigo de atributo (profundidad de color) asociado a cada punto.
Como no es posible captar los infinitos puntos, los sistemas de captacin consideran a la imagen dividida en
una grilla de celdas o elementos de imagen o pixeles. A cada punto se le asigna un atributo de su nivel de
gris o informacin de color.
La resolucin de imagen es el nmero de puntos por lnea x el nmero de elementos por columna, tal como
se muestra en la Figura A, y determina la calidad de la imagen Por ejemplo, la imagen de una fotografa
tpica est constituida por infinitos puntos, si se la representa con una resolucin de 1280 x 1024 el ojo
humano la considera como continua (los pxeles no se notan), manera tal que, a mayor resolucin mayor
ser la calidad de imagen.

Figura A. Estructura de una imagen con resolucin


de 640 x 580 elementos

Licenciatura en Sistemas de Informacin FACENA - UNNE

Figura B. Cdigo del atributo del


punto de imagen

Pg. 16

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Algunas resoluciones usuales para digitalizacin de imgenes son:


Dispositivo

Tipo

Convencionales

Fax tamao A4
(200/400) x (300/400) pixeles por pulgadas
Foto (8 x 11 pulgadas) 400, 1200 pixeles por pulgadas

Televisin

Videoconferencia
TV
HDTV (alta definicin)

VGA
Pantalla monitor SVGA
XGA

Resolucin

176 x 144 pixeles por imagen


720 x 480
1920 x 1080
649 x 480
800 x 600
1024 x 768

Adems de la resolucin, un factor determinante de un grfico es el cdigo del atributo del punto de
imagen, est constituido por un nmero de bits determinado que define la profundidad de color. En el caso
de imgenes en blanco y negro, la cantidad de bits del cdigo del atributo determina las variantes de color.
Por ejemplo, 8 bits permiten representar hasta 256 niveles de grises.
La imagen se representa sencillamente almacenando los atributos de los puntos de la imagen sucesivos en
orden, de izquierda a derecha y de arriba abajo, tal como se muestra en la figura de B.
En el caso de imgenes en color, ste se descompone en tres colores bsicos: rojo (R), verde (G) y azul (B), y
la intensidad media de cada uno de ellos en cada celda se codifica por separado. Para conseguir una gran
calidad de colores (calidad fotogrfica), cada color bsico debe codificarse con 8 bits, es decir, se requieren
3 bytes para codificar cada elemento de imagen, lo que requiere de una gran capacidad para almacenar
una imagen.
Tamao y resolucin de imgenes
Como se dijo anteriormente, la resolucin de imagen es el nmero de pxeles mostrados por unidad de
longitud impresa en una imagen, que normalmente se mide en pxeles por pulgada (ppi, pxel per inch). Las
fotografas que se obtienen a partir de las cmaras digitales son mapas de bits, las imgenes que captura un
escner tambin. En estas imgenes la calidad mxima que tienen (nmero de pxel por unidad de medida,
pxeles/cm.; pxeles/pulgada) se determina en el momento de crearlas por lo que no se puede ampliar la
resolucin o nmero de pxeles por unidad posteriormente. Es decir, no se puede ampliar su resolucin sin
que la imagen se vea afectada, en general deformndose y perdiendo nitidez, ya que se modifican los
pxeles que las definen. Observar el efecto sobre la calidad de la imagen cuando se agranda el tamao de
una imagen en la figura C.
El tamao de los pxeles determina la cantidad de detalle de la imagen; las dimensiones de estos pxeles y el
nmero de ellos es lo que da la calidad final (Alta, media baja).

Figura C. Al ampliar la imagen se produce el efecto de imagen pixelada.


Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 17

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Compresin de imgenes
Uno de los principales inconvenientes que tienen los bitmaps de alta resolucin es el enorme espacio que
ocupan llegndose a crear archivos de mucho peso para ser manejados con facilidad; para evitar este
problema se han desarrollado diferentes tcnicas de compresin, stas tratan de reducir mediante
algoritmos matemticos el volumen del archivo.
Existen dos tcnicas o tipos de compresin: Las tcnicas sin prdidas: Comprimen el archivo sin eliminar
detalle de la imagen ni informacin de color. Las tcnicas con prdidas: Eliminan detalle de la imagen e
informacin de las mismas. Las ms habituales son las siguientes:
-

GIF - Graphical interchange format Formato de intercambio grfico. El formato GIF es uno de los
ms utilizados sobre todo para imgenes Web; esto es debido a su alto nivel de compresin.

JPEG (Join photographic expert group): JPEG guarda toda la informacin referente al color en millones
de colores y sin que por ello el archivo resultante sea demasiado grande.

PNG Portable networkgraphic format. PNG permite una compresin sin prdidas con una
profundidad de color de 24 bits y adems tiene 256 niveles de transparencias.

BMP: Es el formato de Windows para bitmaps, es un formato muy conocido aunque su compresin
comparada con GIF o JPEG es muy pobre.

TIFF Tag image file format: Es uno de los formatos ms utilizados ya que es admitido prcticamente
por todas las aplicaciones de edicin e imagen.
b)
Mapa de vectores
La imagen se descompone en un conjunto de objetos tales como lneas, polgonos y textos con sus
respectivos atributos y detalles (grosor, color, etc.), modelables por medio de vectores y ecuaciones
matemticas, que determinan tanto su forma como su posicin dentro de la imagen. Cuando la imagen se
visualiza en la pantalla o impresora, un programa evala las ecuaciones y escala los vectores generando la
imagen concreta a ver.
-

Caractersticas de este tipo de representacin:

Son adecuadas para grficos geomtricos, aplicaciones de diseo asistido por computadora (CAD).

Ocupan mucho menos espacio que los mapas de bits, y las imgenes son ms fciles de escalar a
cualquier tamao y de procesar.
Los principales elementos de un vector son las curvas Bizer (curvas representadas matemticamente).
Estas lneas o curvas bizer son muy manejables ya que permiten muchas posibilidades por su plasticidad.
Estas caractersticas las convierten en la manera ideal de trabajar cuando se trata de diseo grfico, (como
creacin de logotipos o dibujos).

Curva de Bizer. La curva queda definida por los


nodos o puntos de anclaje y por las manecillas de
control que definen y modelan su forma. Para
modificarlas simplemente hay que mover las
manecillas hasta que consigamos la curva deseada

Formatos vectoriales: CDR: Es el formato del programa Corel Draw, AI: Es el formato del programa Adobe
Ilustrador, EPS - Encapsulated Postscript: Un formato apropiado para ser importado desde la mayora de
software de diseo, WMF- Windows Metafile: Formato desarrollado por Microsoft, est especialmente
indicado para trabajar de manera compatible con los programas de Microsoft.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 18

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Tema 3: Resolucin de problemas con computadoras


1. Resolucin de problemas
La Informtica puede definirse tambin como la ciencia que estudia el anlisis y
resolucin de problemas utilizando computadoras. En esta definicin la palabra ciencia
se relaciona con una metodologa fundamentada y racional para el estudio y resolucin
de los problemas. En este sentido la Informtica se vincula especialmente con la
Matemtica y la Ingeniera.
Como se mencion anteriormente, la computadora es una mquina digital con capacidad de clculo
numrico y lgico, que opera controlada por un programa almacenado. Esto quiere decir que internamente
tiene rdenes o instrucciones que la computadora podr leer, interpretar y ejecutar ordenadamente.
En este sentido, un programa es un conjunto de instrucciones ejecutables en una computadora, que
permite cumplir una funcin especfica o requerimiento que debe satisfacer.
Normalmente los programas alcanzan su objetivo en un tiempo finito, aunque algunas aplicaciones, como
por ejemplo un sistema de monitoreo de alarma, se ejecutan indefinidamente, porque poseen un
requerimiento de tiempo infinito.
Un programa debe cumplir con los requerimientos definidos. Por ejemplo: un programa de prediccin de
clima debera estimar la temperatura mxima y mnima prevista para cada da. Si en lugar de ello devuelve
un promedio diario de temperaturas, ser un programa que devuelve un resultado en un tiempo finito pero
no es correcto pues no son los resultados que se requieren.
Para resolver problemas los programas operan con datos. Los datos representan objetos del mundo real
que permiten modelar aspectos de un problema que se desea resolver. Por ejemplo, un sistema de
administracin de alumnos de una universidad automatiza los procesos de ingreso y seguimiento de las
actividades acadmicas de los alumnos, tales como inscripcin, cursado, exmenes, etc., qu datos
representarn a las entidades que intervienen en estos procesos? el alumno, la carrera, las materias, etc.
Los datos reales son difciles de representar en una computadora, dado que es una mquina digital binaria
con capacidad de operar slo unos y ceros. Por lo tanto, la representacin de los datos, aun los ms
simples, como los nmeros, las letras, un nombre o un color, requiere una transformacin desde el mundo
real a alguna forma de representacin binaria que pueda ser interpretada por la computadora, tal como
hemos visto en el tema 2.
Datos ms complejos como una imagen, una cancin o un video, tambin son representados en forma
binaria. Sin embargo, la forma de modelarlos e interpretarlos requerir de conocimientos de algoritmos
especficos.
Por lo tanto, las dos cuestiones ms importantes que debe enfrentar quien debe escribir un programa para
resolver un problema mediante una computadora son:
-

Definir el conjunto de instrucciones cuya ejecucin ordenada conduce a la solucin.

Elegir la representacin adecuada de los datos del problema.

En sntesis, las computadoras son una poderosa herramienta para la resolucin de problemas, pero su
potencialidad est en funcin de la capacidad de programacin de soluciones adecuadas a cada problema
particular.
La funcin esencial del especialista informtico es explotar la potencialidad de las computadoras
(velocidad, exactitud, confiabilidad) para resolver problemas del mundo real.
Para lograr esto debe analizar el problema, ser capaz de sintetizar sus aspectos esenciales (abstraccin) y
poder especificar la solucin que se desea. Posteriormente, debe expresar la solucin en forma de
programa, operando los datos del mundo real mediante una representacin vlida en una computadora.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 1

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

2. Etapas en la resolucin de problemas: el ciclo de vida del software


Desde el planteo inicial de un problema hasta que se obtiene el correspondiente programa o aplicacin, su
instalacin y funcionamiento en una computadora, se sigue una serie de pasos que en conjunto constituyen
lo que en Ingeniera de Software se denomina ciclo de vida del software.
Si bien se reconoce que el proceso de disear programas es esencialmente creativo, los pasos o etapas
comunes que generalmente deben seguir los programadores son:
-

Anlisis: Estudio detallado del problema con el fin de obtener una serie de documentos
(especificaciones o requerimientos) en los que quede totalmente definido el proceso de la
automatizacin.

Diseo: Determinacin de una solucin o algoritmo para el problema planteado.

Codificacin: La solucin se escribe en la sintaxis de un lenguaje de programacin, obtenindose as


el programa o cdigo fuente.

Compilacin, ejecucin, verificacin y depuracin: El programa fuente se convierte a cdigo


binario ejecutable, se corre en la computadora, se comprueba rigurosamente y se eliminan todos
los errores que puedan detectarse.

Mantenimiento. El programa se actualiza y modifica cada vez que sea necesario en funcin de los
requerimientos de los usuarios. Esta es la etapa ms larga del ciclo de vida de desarrollo de
software y puede durar muchos aos.

Documentacin: Se documentan las distintas etapas del ciclo de vida del software,
fundamentalmente el anlisis, diseo y codificacin, a los que se agrega manuales de usuario y de
referencia, as como tambin normas para el mantenimiento.

Las dos primeras etapas conducen a un diseo detallado escrito en forma de algoritmo, que permitir
resolver el problema.
En la tercera etapa se implementa el algoritmo en un cdigo escrito en un lenguaje de programacin,
reflejando las ideas generadas en las etapas anteriores.
En la etapa de compilacin y ejecucin el cdigo se traduce a un lenguaje que la mquina pueda entender y
se ejecuta el programa, esto es, la computadora realiza una a una las instrucciones dadas en el programa.
La verificacin y depuracin consiste en la bsqueda y eliminacin de los errores. Cuanto ms detallado y
especfico sea el resultado de las etapas de anlisis y diseo, menor ser la probabilidad de encontrar en la
etapa de depuracin errores serios que requieran repetir etapas previas.
La documentacin es un elemento importante que hace a las buenas prcticas de programacin, ayuda a la
comprensin del cdigo y facilita su mantenimiento. No se trata de una etapa independiente, sino que se
desarrolla a medida que se avanza en cada una de las otras etapas vistas.
Se describen a continuacin con ms detalle las tareas involucradas en cada etapa.
2.1. Anlisis del problema
Esta etapa requiere una clara definicin donde se contemple exactamente lo que
debe hacer el programa y el resultado o solucin deseada.
Para definir correctamente un problema es conveniente responder a las siguientes
preguntas:
- Qu entradas se requieren? (tipo y cantidad)
- Cul es la salida deseada? (tipo y cantidad)
- Qu mtodo produce la salida deseada?

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 2

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

2.2. Diseo del algoritmo


En la etapa de anlisis del proceso de programacin se determina qu deber hacer el
programa y en la etapa de diseo se especifica cmo har el programa la tarea
solicitada.
Los mtodos ms eficaces para el proceso de diseo se basan en la estrategia divide y vencers. Esto
quiere decir que la resolucin de un problema complejo se realiza dividiendo el problema en subproblemas
menos complejos, hasta llegar a un nivel cuya solucin pueda ser implementada en una computadora. Este
mtodo se conoce tcnicamente como diseo descendente (top-down) o diseo modular, que se tratar
ms detalladamente en las materias posteriores de la carrera.
2.3. Codificacin de un programa
Codificacin es la escritura en un lenguaje de programacin de la representacin de un algoritmo
desarrollado en las etapas precedentes. Dado que el algoritmo es independiente del lenguaje de
programacin que ser utilizado para su implementacin, el cdigo se puede escribir con igual facilidad en
un lenguaje u otro.
Para realizar la conversin de un algoritmo en un programa, las operaciones indicadas en el algoritmo se
expresan en el lenguaje de programacin elegido, respetando sus reglas y sintaxis. Esta operacin se realiza
con un programa editor propio del lenguaje de programacin o un editor de texto de uso general. Como
resultado se obtiene un archivo que se almacena en la computadora y se conoce como programa fuente o
cdigo simplemente.
El objetivo del programador debe ser escribir programas sencillos y claros, que sean fciles de actualizar, ya
sea por quien los escribi o por otros programadores.
2.4. Compilacin y ejecucin de un programa
La compilacin consiste en la traduccin del programa fuente a lenguaje de mquina. De esta tarea se
encarga el programa compilador del lenguaje de programacin. Si luego de la compilacin se presentan
errores (errores de compilacin), es necesario editar nuevamente el programa, corregir los errores y
compilar otra vez. Este proceso se repite hasta que no se presenten ms errores, obtenindose el
programa objeto, que todava no es ejecutable directamente. A continuacin, se realiza la fase de montaje
o enlace (link), que completa el programa objeto con bibliotecas existentes (tambin conocidas como
libreras) o rutinas propias del compilador, para generar el programa ejecutable.
Cuando el programa ejecutable se ha creado (generalmente la extensin del archivo
ser .exe), se puede ejecutar el programa desde el sistema operativo con solo
teclear su nombre o hacer doble clic sobre el nombre (estas acciones dependen del
entorno operativo particular que se est manejando).
Ejemplos de programas ejecutables son: WINWORD.EXE (ejecutable del procesador
de textos Word), msnmsgr.exe (ejecutable del programa de mensajera instantnea
Windows Messenger), acroread.exe (ejecutable del visor de archivos PDF Acrobat
Reader), nod32krn.exe (programa ejecutable del antivirus NOD32).
2.5. Verificacin y depuracin de un programa
La verificacin de un programa es el proceso de comprobacin de la correccin de un
programa. Se realiza mediante la ejecucin del mismo con un conjunto de datos de
pruebas para determinar si el programa tiene errores. Este conjunto de datos de
prueba o test debe contener valores de datos de entrada normales, valores extremos
de los datos para comprobar los lmites, valores errneos y valores de entrada que
comprueben casos especiales del programa.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 3

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

La depuracin es el proceso de encontrar los errores y corregir o eliminar dichos errores. En general,
existen tres tipos de errores:
-

Errores de compilacin: Se producen normalmente por un uso incorrecto de las reglas del lenguaje
de programacin y suelen ser errores de sintaxis. Si hay errores de sintaxis, la computadora no
puede entender la instruccin, no se genera el programa objeto y el compilador emite una lista con
todos los errores encontrados durante la compilacin. Por ejemplo: uso incorrecto de palabras
reservadas, de smbolos de separacin de instrucciones, etc.

Errores de ejecucin: Se producen por instrucciones que la computadora puede comprender pero
no ejecutar. Ejemplos tpicos son operaciones en las que se pretende dividir por cero y races
cuadradas de nmeros negativos. En estos casos, se detiene la ejecucin del programa y se
imprime un mensaje de error. El programa cancela, que es el trmino usual en la jerga
informtica.

Errores lgicos: Se producen en la lgica del programa y la fuente del error suele ser el diseo del
algoritmo. Estos errores son los ms difciles de detectar porque el programa funciona sin producir
mensajes de error, el error solo se advierte por la obtencin de resultados incorrectos. En este caso
se debe volver a la etapa de diseo del algoritmo, modificar el algoritmo, cambiar el programa
fuente y compilar y ejecutar de nuevo.

2.6. Documentacin y mantenimiento


La documentacin de un programa consiste en la descripcin de los distintos pasos en el proceso de
resolucin de un problema. La importancia de la documentacin debe ser destacada por su decisiva
influencia en el producto final: programas pobremente documentados son difciles de leer, ms difciles de
depurar y casi imposibles de mantener y modificar.
La documentacin de un programa puede ser: interna o externa. La interna es la contenida en los
comentarios del programa fuente, que son explicaciones intercaladas con el cdigo para ayudar a
comprender pasos especficos. Se identifican con una sintaxis especfica para que el compilador las ignore,
es decir, para que entienda que no es una instruccin que debe ejecutar. Esta sintaxis depende del lenguaje
de programacin utilizado (generalmente es un smbolo especial al inicio del comentario).
La externa incluye anlisis, diagramas de flujo y/o pseudocdigos, y manuales del usuario con instrucciones
para ejecutar el programa y para interpretar los resultados.
La documentacin es especialmente importante cuando deben introducirse cambios en los programas.
Despus de cada cambio la documentacin debe ser actualizada.

3. Algoritmos: concepto y caractersticas


Un algoritmo es un mtodo para resolver problemas. Ms
especficamente, es un conjunto finito de reglas que dan una secuencia de
operaciones para resolver un problema especfico.
El trmino proviene del matemtico persa Muhammad ibn Musa alKhwarizmi, a quin se le reconoce por ser uno de los primeros en definir
reglas paso a paso para sumar, restar, multiplicar y dividir nmeros
decimales.
Para llegar a la realizacin de un programa es necesario el diseo previo
de un algoritmo, de modo que sin algoritmo no puede existir un programa.
Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan como de la
computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente
de programacin o ejecutarse en una computadora distinta, sin embargo el algoritmo ser siempre el
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 4

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

mismo. As, por ejemplo, en una analoga con la vida diaria, una receta de un plato de cocina se puede
expresar en espaol, ingls o francs, pero cualquiera sea el idioma, los pasos para la elaboracin del plato
se realizarn sin importar el idioma del cocinero.
En la ciencia de la computacin y en la programacin, los algoritmos son ms importantes que los
lenguajes de programacin o las computadoras. Un lenguaje de programacin es tan solo un medio para
expresar un algoritmo y una computadora es solo un procesador para ejecutarlo. Tanto el lenguaje de
programacin como la computadora son los medios para obtener un fin: conseguir que el algoritmo se
ejecute y se efecte el proceso correspondiente.
Dada la importancia del algoritmo en la ciencia de la computacin, un aspecto muy importante ser el
diseo de algoritmos. El diseo de la mayora de los algoritmos requiere creatividad y conocimientos
profundos de la tcnica de la programacin.
3.1. Caractersticas de los algoritmos
Adems de ser un conjunto finito de reglas que da la secuencia de operaciones para resolver un tipo
especfico de problema, un algoritmo tiene cinco caractersticas fundamentales:
a) Finitud. Un algoritmo siempre debe terminar luego de un nmero finito de pasos.
b) Definicin. Cada paso de un algoritmo debe estar definido con precisin, evitando ambigedades.
Puesto que el lenguaje humano es impreciso, los algoritmos se expresan mediante un lenguaje
formal, ya sea matemtico o de programacin para una computadora.
c) Entrada. Un algoritmo tiene cero o ms entradas, esto es, cantidades que le son dadas inicialmente
antes de que el algoritmo empiece. Estas entradas se toman de un conjunto especfico de objetos.
d) Salida. Un algoritmo tiene una o ms salidas, esto es, cantidades que tienen una relacin especfica
con las entradas.
e) Efectividad. Tambin se espera que un algoritmo sea efectivo. Esto significa que todas las
operaciones a realizarse en el algoritmo deben ser suficientemente bsicas para que puedan, en
principio, llevarse a cabo exactamente y en un tiempo finito por un hombre usando lpiz y papel.
Ejemplo de algoritmo
Se requiere calcular la media de tres nmeros que ingresan por teclado.
Los pasos del algoritmo son:
1. Ingresar primer nmero
2. Ingresar segundo nmero
3. Ingresar tercer nmero
4. Sumar los tres nmeros
5. Dividir el resultado obtenido en el paso anterior por 3
6. Mostrar el cociente obtenido
La definicin de un algoritmo debe describir tres partes: Entrada, Proceso y Salida. La informacin
proporcionada al algoritmo constituye su entrada y la informacin producida por el algoritmo constituye su
salida.
En el algoritmo del ejemplo citado anteriormente se tendr:
Entrada: los nmeros
Proceso: suma de todos los nmeros y divisin del resultado por tres.
Salida: media de los tres nmeros ingresados.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 5

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

4. Mtodos de representacin de algoritmos


Una computadora solo es capaz de resolver un problema si se le indica paso a paso las acciones que debe
realizar. Estos pasos sucesivos constituyen, como ya se vio, el algoritmo.
Escribir un algoritmo consiste en realizar una descripcin del mtodo o conjunto de reglas que se propone
para resolver un problema. Estas reglas tienen las siguientes propiedades:
-

Debe seguirse una secuencia definida de pasos hasta que se obtenga el resultado.

Slo puede ejecutarse una operacin a la vez.

Adems, en todo algoritmo los datos manipulados son de importancia fundamental: se busca obtener una
determinada informacin a partir de datos bsicos del problema, por lo que no es de extraar que en la
escritura de algoritmos adquieran una identidad propia. Como generalmente se querr aplicar el mismo
algoritmo a conjuntos de datos de entrada diferentes, estos datos se identifican en cada paso con un
nombre, que ser reemplazado en tiempo de ejecucin por los datos particulares que sea necesario tratar
(por ejemplo, por los datos ingresados a travs teclado u obtenidos de un archivo). En el ejemplo del
clculo de la media, visto anteriormente, los nmeros de entrada se identificarn con las variables n1, n2,
n3, o cualquier nombre que se desee.
El hecho de que un algoritmo deba especificar un conjunto finito y ordenado de pasos a seguir, no es
contradictorio con la posibilidad de realizar algunas de las operaciones solo bajo ciertas condiciones (por
ejemplo, calcular el recargo de una factura solo si est vencida), indicar la repeticin de algunas de las
instrucciones un nmero de veces conocido de antemano (por ejemplo 10 veces) o aun un nmero no
conocido de veces que se determinar a partir de los datos de entrada recibidos (por ejemplo, mientras el
operador ingrese valores mayores que 0).
Estas acciones se conocen como alteraciones en el flujo de control, es decir en el orden de ejecucin de las
instrucciones del algoritmo, y permiten expresar las soluciones de problemas complejos como la repeticin
selectiva de operaciones sencillas.
Para escribir algoritmos se utilizan diversas tcnicas que buscan eliminar la ambigedad del lenguaje
coloquial en la especificacin de sus pasos. Los mtodos usuales para representar un algoritmo son:
a) Diagrama de flujo
b) Lenguaje de especificacin de algoritmo: seudocdigo
c) Lenguaje natural: espaol, ingls,
d) Frmulas matemticas
Los mtodos c) y d) no son fciles de transformar en programas. Una descripcin en espaol narrativo no es
satisfactoria porque puede presentar ambigedades. Una frmula sin embargo es un buen sistema de
representacin. Una frmula permite obtener valores desconocidos (salida) a partir de valores conocidos
(datos) relacionados en una expresin matemtica que indica las operaciones que se deben aplicar
(algoritmo). Por ejemplo, las frmulas para la solucin de una ecuacin cuadrtica (de segundo grado) son
un medio apropiado para expresar el procedimiento algortmico que se debe ejecutar para obtener las
races de la ecuacin.
Ejemplo:
Calcular las soluciones de ecuaciones de segundo grado: ax 2 bx c 0
Las soluciones son dos y se obtienen como:
x1

b b 2 4ac
2a

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 6

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
x2

b b 2 4ac
2a

En este caso los datos de entrada son los coeficientes a, b y c, y los resultados son los valores de x1 y x2 que
se obtienen aplicando las operaciones indicadas en la frmula.
Como se puede notar, las frmulas son especialmente tiles cuando los pasos a seguir se pueden expresar
como operaciones aritmticas y funciones matemticas.
Otra manera de representar un algoritmo es con diagramas de flujo. Constituyen un recurso grfico, que
facilita especialmente la visualizacin de alteraciones en el flujo de control, pues utilizan flechas para
indicar qu instruccin se debe ejecutar a continuacin. Utiliza distintos smbolos que determinan la forma
de interpretar el contenido de los mismos: como instrucciones a ejecutar, como condiciones para
determinar el siguiente paso del algoritmo, como datos de entrada a obtener, como resultados a emitir,
etc.
Otra notacin para expresar algoritmos es el pseudocdigo. Los datos y operaciones se expresan de la
misma manera que en los diagramas de flujo, pero las alteraciones en el flujo de control y las operaciones
de entrada/salida se indican mediante palabras clave. Esta forma de escribir algoritmos guarda semejanzas
con las sentencias disponibles en cualquier lenguaje de programacin, por lo que constituye una prctica
valiosa para la futura tarea de escribir y mantener programas, pero sus reglas son ms flexibles,
permitiendo as concentrarse en la estructura lgica del algoritmo, sin preocuparse por las limitaciones que
impondra trabajar con un lenguaje de programacin en particular.
A continuacin, profundizaremos en las tcnicas ms usuales para la representacin de algoritmos.

4.1.

Diagrama de flujo

Un diagrama de flujo (flowchart) es una de las tcnicas de representacin


de algoritmos ms antiguas pero su utilizacin ha disminuido desde la
aparicin de los lenguajes de programacin estructurados. Sin embargo, se
usan para describir procesos en una amplia variedad de campos, como la
economa, la industria y la psicologa cognitiva.
Un diagrama de flujo es un mtodo de representacin grfica que utiliza un
conjunto de smbolos, de forma que cada paso del algoritmo se visualiza
dentro del smbolo adecuado y el orden en que se realizan los pasos se
representa por medio de flechas que indican el flujo lgico del algoritmo.
Los smbolos ms comunes son:
Inicio/Fin de proceso

Datos almacenados

Proceso

Salida impresa

Ingreso o salida de
datos

Entrada manual

Decisin

Conector

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 7

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Ventajas de los diagramas:


- Rpida comprensin de las relaciones.
- Comunicacin: es ms visual, "una imagen dice ms que mil palabras".
- Documentacin.
Limitaciones:
- Los diagramas complejos y detallados pueden ser muy laboriosos de realizar y de consultar.
- No existen normas que indiquen el nivel de detalles que debe incluirse en un diagrama.
Un ejemplo de diagramacin:
Problema: Obtener el promedio de notas de alumnos de Introduccin a la Informtica:

En el diagrama A, se utiliza el lenguaje natural para la especificacin de las instrucciones (Leer nota de un
alumno), la idea principal es mostrar el tipo de instruccin que se especifica en cada smbolo y el orden en
que deben realizarse las rdenes para llegar al resultado.
En el diagrama B, las especificaciones se formalizan utilizando variables. Las variables representan a los
datos que se procesan. Ms adelante veremos que estas variables representan la posicin de memoria
RAM en la que estn ubicados los datos. Esta referencia a una ubicacin obliga a que se respete el nombre
asignado cada vez que hacemos referencia a ese dato.
En el ejemplo, la variable ContAlum es una posicin de memoria que al principio del programa se pone en 0
para ir incrementando el valor que contiene por cada alumno que se procese. Si, en lugar del nombre
asignado al inicio, hacemos referencia a ella con el nombre CuentaAlum, la computadora no entender
que nos referimos al mismo dato.
El nombre de una variable debe ser nemotcnico, es decir, representativo de su contenido. Este nombre
debe respetarse en todo el diagrama.
Las constantes alfanumricas se utilizan en un diagrama como caracteres encerrados entre comillas. En el
ejercicio ejemplo, el valor del promedio calculado se mostrar en papel impreso con la leyenda Promedio
de notas.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 8

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

El sentido de las flechas indica la secuencia de ejecucin de las instrucciones. Observe en el ejercicio que la
instruccin de poner en 0 las variables se realiza una sola vez, mientras que la instruccin leer nota del
alumno se realiza tantas veces como alumnos se procesen.
En la representacin de algoritmos, se suelen utilizar los siguientes trminos para representar las
operaciones ms usuales:
Acumulador:
Un acumulador es una variable, definida por el programador, que hace referencia a una direccin de
memoria que almacenar un "total mvil" de valores individuales a medida que vayan apareciendo en el
proceso. Por ejemplo, las notas de los alumnos. Esta direccin o posicin de memoria debe ser inicializada
en cero.
Contador:
Es una variable que se incrementa en un valor constante y se utiliza para registrar el nmero de veces que
se presenta un evento. Ejemplo: para contar los alumnos procesados, se incrementa en 1 por cada lectura
de datos de alumnos.
Iteracin o bucle (loop):
Es un conjunto de instrucciones que se procesa repetidamente hasta que se cumpla la condicin de salida.
En el ejemplo, las instrucciones de contar alumnos y acumular notas se realizan tantas veces como alumnos
se procesen.
4.1.1. Seudocdigo
El pseudocdigo es un lenguaje de especificacin (descripcin) de algoritmos, que facilita el paso a la
codificacin en un lenguaje de programacin. Se utiliza pseudocdigo pues este es ms fcil de entender
para las personas que el cdigo de lenguaje de programacin.
Se considera un primer borrador del programa, dado que necesariamente tiene que ser traducido a un
lenguaje de programacin. Un pseudocdigo no puede ser ejecutado por una computadora directamente
aunque existen algunas herramientas que permiten el diseo y prueba de seudocdigo).
Ventajas:
-

El programador puede concentrarse en la lgica y en las estructuras de control del programa sin
preocuparse por las reglas de un lenguaje de programacin especfico.

Facilita la modificacin del algoritmo si se descubren errores.

Puede ser traducido fcilmente a lenguajes de programacin estructurados tales como Pascal,
Fortran, C, C#, etc.

Todo seudocdigo debe posibilitar la descripcin de:


-

Instrucciones de entrada/salida.

Instrucciones de proceso.

Sentencias de control del flujo de ejecucin.

Acciones compuestas, que se refinan posteriormente (subprogramas o rutinas).

Asimismo, tendr la posibilidad de describir datos, tipos de datos, variables, expresiones, archivos y
cualquier otro objeto que sea manipulado por el programa.
Se utilizan palabras reservadas para representar las acciones sucesivas del algoritmo. Pueden escribirse en
ingls - similares a sus homnimas en los lenguajes de programacin -, tales como start, end, stop, if-thenelse, while-end, repeat-until, etc., pero tambin pueden escribirse en castellano.
La escritura de pseudocdigo exige normalmente la indentacin (sangra en el margen izquierdo) para
describir las acciones en sus estructuras de control correspondientes.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 9

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Formato de seudocodigo
En la actualidad, por lo general, el pseudocdigo no obedece a las reglas de sintaxis de ningn idioma en
particular. En esta asignatura se utilizar el formato que se propone a continuacin:

El seudocdigo consta de dos componentes: una cabecera y un bloque de algoritmo. La cabecera es una
accin simple que comienza con la palabra ALGORITMO, seguida del nombre asignado al programa. El
bloque algoritmo es el resto del programa y consta de dos secciones: las acciones de declaraciones y las
acciones ejecutables.
Las declaraciones definen o declaran las variables o constantes que tengan nombres. Las acciones
ejecutables son las acciones que posteriormente se realizarn cuando el algoritmo convertido en programa
se ejecute.
Cabecera
Cabecera del programa
Seccin de declaracin

Bloque de algoritmo

Seccin de acciones
a) Cabecera del programa o algoritmo: Indica el nombre del algoritmo/programa
ALGORITMO Calculo_Promedio
b) Declaracin de variables: En esta seccin se declaran o describen todas las variables utilizadas en el
algoritmo, listando sus nombres y especificando sus tipos. Esta seccin comienza con la palabra
reservada VAR (se puede usar tambin la palabra reservada VARIABLES) y tiene el formato:
VAR
tipo-1: lista de variables-1
tipo-2: lista de variables-2
.
tipo-n: lista de variables-n
donde cada lista de variables es una variable simple o una lista de variables separadas por comas y cada
tipo es uno de los tipos bsicos (entero, real, char, boolean). Ejemplo:
VAR
ENTERO: Numero_Empleado
REAL: horas
REAL: impuesto
O de modo equivalente:
VAR
ENTERO: Numero_Empleado
REAL: horas, impuesto, salario
Es una buena prctica de programacin utilizar nombres de variables significativos que sugieran lo que ellas
representan, ya que eso har ms fcil y legible el programa.
Tambin es una buena prctica incluir breves comentarios que indique cmo se utiliza la variable.
ENTERO: Numero_Empleado // Nmero que identifica al empleado
REAL: horas

// horas trabajadas mensuales

REAL: salario

// cantidad a percibir por el empleado

c) Declaracin de constantes: Se declaran las constantes del programa.


CONST
PI = 3.141592, IVA = 21
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 10

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

d) Declaracin de constantes y variables de tipo carcter: Las constantes de carcter simple y cadenas de
caracteres se declaran igual que las numricas:
CONST
estrella: *

frase: `12 de octubre

Las variables de carcter se declaran de dos modos:


a) Cuando almacenan un solo carcter:

CHAR: letra, nota, digito

B) Cuando almacenan mltiples caracteres (cadenas):

STRING: nombre[20]

e) Comentarios
Como dijimos, es conveniente y til, incluir en el cdigo comentarios significativos con el objeto de facilitar
la correccin y mantenimiento. Existen diferentes notaciones de acuerdo al lenguaje de programacin. Por
ejemplo en Pascal los comentarios se encierran entre parntesis y asterisco (* y *) o entre llaves { y }.
El mtodo que seguiremos para representar algoritmos tendr este formato:
ALGORITMO identificador
//cabecera
VAR
// seccin de declaraciones
tipo de datos: lista de identificadores
CONST
lista de identificadores = valor
INICIO
sentencia_ 1
sentencia_ 2
// cuerpo del algoritmo
sentencia_ n
FIN
Notas:
- Las cadenas de caracteres pueden encerrarse entre comillas simples o dobles, indistintamente.
- Utilizar siempre indentacin en los bucles o en aquellas instrucciones que proporcionen legibilidad al
programa, por ejemplo, INICIO y FIN.
Ejemplo de seudocdigo
Algoritmo que calcula el salario de un empleado en funcin de las horas trabajadas.
ALGORITMO calcula-salario
VAR
REAL: horas, precio_hora, salario_bruto, impuesto, salario_neto
STRING: nombre[30]
INICIO
// clculo del salario neto
LEER nombre, horas, precio_hora
salario_bruto = horas * precio_hora
impuesto = 0,25 * salario_bruto
salario_neto = salario_neto impuesto
ESCRIBIR nombre, salario_bruto, impuesto, salario_neto
FIN

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Tema 3: Secuencia de conceptos

Resolucin de
problemas
CICLO DE
VIDA
ETAPAS

Caractersticas

Algoritmo

Tcnicas de
representacin
de algoritmos

Caractersticas

Diagramas
de flujo
ntacin de

Seudocodigo

Este tema introduce a la programacin de


computadoras:
1- Primero se describen las etapas en la resolucin
de problemas (ciclo de vida).
2- Luego se describe el concepto de algoritmo que se
relaciona con la etapa de diseo, en la cual se
especifica la SOLUCION al problema en cuestin.
3- Se explican luego las tcnicas de representacin
de algoritmos ms conocidas.
4- Se describe en particular
la tcnica de
seudocdigo, indicando el formato de escritura.
5- A partir de aqu comienza la ejercitacin de
resolver problemas especificando la solucin en
seudocdigo.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Formato

Ejercitacin de Resolucin
de Algoritmos mediante
Seudocodigo

Pg. 12

Teora Algoritmos y Estructuras de Datos I -2012


4
2012201220232012012201220122012201220122012201
2Tema 1
Estructura y componentes de un programa
1. Concepto de programa
Conjunto de instrucciones (rdenes) dadas a la computadora para la ejecucin de una determinada tarea.
Se debe entender el programa como un medio para conseguir un fin. La idea de fin u objetivo del programa
est relacionada con la informacin que se requiere para resolver un determinado problema.
Como ya se dijo antes, el proceso de programacin es un proceso de resolucin de problema y se ha visto
tambin que los pasos (ciclo de vida) para desarrollar un programa son:
a) Definicin o anlisis del problema
b) Diseo del algoritmo de solucin
c) Codificacin
d) Compilacin y ejecucin
e) Verificacin y depuracin
f)

Documentacin

g) Mantenimiento
Al iniciar su tarea, el programador debe tener bien claro qu tiene que hacer el programa, determinar de
acuerdo al problema: Entrada, Salida y Algoritmo de la solucin.
Conceptualmente, un programa puede ser considerado como una caja negra. Esta caja negra es el
algoritmo de solucin que permitir obtener la salida en funcin de las entradas.
Entrada

Programa
(algoritmo)

Salida

El programador debe definir de donde provienen las entradas al programa, es decir, debe indicar desde que
dispositivo de entrada (teclado, disco,...) ingresarn los datos.
El proceso de ingresar la informacin de entrada datos en la memoria de la computadora se denomina
entrada de datos, operacin de lectura o accin de leer.
Las salidas de los datos se deben presentar en dispositivos perifricos de salida: pantalla, impresora, disco,
etc. La operacin de salida se conoce tambin como escritura o accin de escribir.
2. Instrucciones y tipos de instrucciones
El proceso de diseo del algoritmo o posteriormente la codificacin consiste en definir las ACCIONES o
INSTRUCCIONES que resolvern el problema
Las acciones o instrucciones se deben escribir y posteriormente almacenar en memoria en el mismo orden
en que han de ejecutarse, es decir, en secuencia.
Un programa es lineal cuando sus instrucciones se ejecutan secuencialmente sin bifurcaciones.
Instruccin_1
Instruccin_2

Instruccin_n

Licenciatura en Sistemas de Informacin FACENA- UNNE

Pg. 1

Teora Algoritmos y Estructuras de Datos I -2012


4
2012201220232012012201220122012201220122012201
2Tema 1

Un programa es no lineal cuando se interrumpe la secuencia mediante instrucciones de bifurcacin.


Instruccin_1
Instruccin_2

Instruccin_n
Instruccin_n+1
2.1. Tipos de instrucciones

Las instrucciones disponibles en un lenguaje de programacin dependen de cada lenguaje. En este tema
veremos las instrucciones bsicas que soportan todos los lenguajes, que son:
1. Inicio/fin
2. Lectura (captura de datos)
3. Escritura (presentacin de resultados)
4. Asignacin
5. Bifurcacin (alteracin de la secuencia del flujo de instrucciones)
Tipo de instruccin
Comienzo de proceso
Fin de proceso
Entrada (lectura)
Salida (escritura)
Asignacin
Bifurcacin condicional
Bifurcacin incondicional

Seudocdigo ingls
BEGIN
END
READ
WRITE
A=5
IF
GOTO

Seudocdigo espaol
INICIO
FIN
LEER
ESCRIBIR
B=7
SI
IR

a) Instrucciones de inicio y fin


Estas instrucciones indican a la computadora el inicio del programa y la finalizacin del mismo. La
indicacin de fin de programa puede estar en cualquier lugar del programa y puede haber ms de una
instruccin de fin, sujeta a las condiciones que evala el programa. Por ejemplo, se finaliza el programa
cuando se procesaron todos los datos de un conjunto de datos o cuando se encuentra un error severo de
datos en una operacin aritmtica, etc.
b) Instrucciones de lectura de datos (entrada)
Las instrucciones de lectura dan ingreso a los datos que se procesan, esto es, indican las variables o
posiciones de memoria en las que se almacenarn los datos en el momento de la ejecucin del programa.
Ejemplo: LEER A, B, C
Cul es el significado de esta instruccin?
Si se ingresan por teclado los valores 100, 50 y 30, entonces las variables de lectura tomarn los valores:
A=100, B=50, C=30
Una instruccin de lectura deposita valores en las posiciones de memoria indicadas por los nombres de
variables.
c) Instrucciones de escritura de resultados (salida)
Esta instruccin escribe datos en un dispositivo de salida. Cul es el significado de la instruccin siguiente?
ESCRIBIR A, B, C
Tomando los valores del ejemplo anterior, se mostrarn en pantalla los datos 100, 50 y 30 (se asume
pantalla cuando no se especifica otro dispositivo).
Licenciatura en Sistemas de Informacin FACENA- UNNE

Pg. 2

Teora Algoritmos y Estructuras de Datos I -2012


4
2012201220232012012201220122012201220122012201
2Tema 1

d) Instrucciones de asignacin

Una instruccin de asignacin coloca un determinado valor en una variable o posicin de memoria.
Ejemplo 1: A = 80 la variable denominada A toma el valor 80
Otra forma usual de indicar la asignacin es mediante una flecha. El sentido de la flecha indica el sentido de
la asignacin. En este caso sera: A 80.
Ejemplo 2: Indicar el valor de A, B y AUX al ejecutarse la instruccin 5.
1. A=10
2. B=20
3. AUX=A
4. A=B
5. B=AUX
El resultado de la evaluacin despus de ejecutar la instruccin 5 ser: A=20, B=10, Aux=10.
Ejemplo 3: Cul ser el valor de N despus de la ejecucin de esta asignacin?: N = N +5 (Consideramos
que N tiene un valor previo igual a 2).
En este ejemplo, el resultado de N es 7 porque al evaluar N + 5, N toma el valor de su contenido que es 2
entonces se realiza 2 + 5. El resultado de la expresin, 7, se guarda en la variable N.
e) Instrucciones de bifurcacin
La alteracin de la secuencia lineal de las instrucciones de un programa se realiza a travs de las
instrucciones de bifurcacin.
Las bifurcaciones pueden ser condicionales, si depende del cumplimiento de una determinada condicin
(por ejemplo: IF N > 0 THEN fin); o incondicionales si la bifurcacin no depende de ninguna condicin (por
ejemplo, GOTO a la instruccin 5). En general, las bifurcaciones incondicionales (GOTO) no son una prctica
recomendada en programacin, debido a que no respetan las estructuras de control propuestas por la
programacin estructurada.
Ejemplo de la implementacin de los distintos tipos de instrucciones:
En el ejemplo siguiente podemos ver un algoritmo sencillo que lee datos de alumnos: N de libreta
universitaria (LU) y las notas obtenidas en exmenes parciales (N1, N2). Se desea obtener el promedio de
notas de cada alumno y su identificacin.
El seudocodigo muestra la secuencia de instrucciones para implementar el algoritmo de solucin. Una vez
que el programa sea codificado y ejecutado, las instrucciones irn procesando, paso a paso, los datos que
se introduzcan. A la derecha se muestran:
a) Por un lado, los datos de entrada vlidos que corresponden a 3 alumnos. Los ltimos datos se crean
intencionalmente para generar la condicin de fin de programa.
b) Por otra parte se muestra el contenido de cada variable almacenada en la memoria RAM, despus
de cada iteracin del proceso.
c) Finalmente, los datos de salida que se mostrarn en cada instruccin de salida.

Licenciatura en Sistemas de Informacin FACENA- UNNE

Pg. 3

Teora Algoritmos y Estructuras de Datos I -2012


4
2012201220232012012201220122012201220122012201
2Tema 1
Inicio

ALGORITMOPromedio_Notas
VAR
LEER
LU, N1,
N1, N2
ENTERO:LU,
N2
REAL:promedio
INICIO
N1 = 0
SI Fin
LEERLU, N1, N2
NO
MIENTRAS N1<>
0
promedio
= (N1
+ N2)/2
Promedio = (N1
+ N2)/2
ESCRIBIRpromedio
LEERLU, N1, N2
LU, Promedio
FIN-MIENTRAS
FIN

ENTRADA
LU
N1 N2
345
8
5
156
3
7
678
000

9
0

10
0

RAM Lectura alumno 1


345
LU

345
156
678

6,50
5
9,50

5
N2

6,50
Promedio
RAM - Lectura alumno 2
156
LU

SALIDA
LU Promedio

8
N1

3
N1

7
N2

5
Promedio
RAM Lectura alumno 3
678
LU

9
N1

10
N2

9,50
Promedio
RAM Lectura alumno 4
000
LU

0
N1

0
N2

9,50
Promedio

Es importante que observe y comprenda los siguientes conceptos:


1) Las variables indicadas en un programa son posiciones de memorias (celdas) que internamente
sern reconocidas con una direccin (un nmero binario, por supuesto).
2) El programa opera con las posiciones de memoria o variables, es decir, procesa el contenido de las
posiciones que representan el valor de los datos.
3) Las instrucciones de lectura asignan datos de entrada a las posiciones de memoria, en forma
destructiva, es decir, cada nueva lectura destruye el valor anterior de la variable y coloca un
nuevo valor.
4) Las instrucciones de salida muestran, en el dispositivo indicado (en este caso una impresora), el
contenido de las variables referenciadas en la instruccin.
5) La instruccin de bifurcacin condicional (N=0) posibilita cambiar la linealidad de ejecucin de las
instrucciones, en este caso, para terminar el programa.
6) La instruccin de bifurcacin incondicional (ir a leer los datos de otro alumno) altera la secuencia
forzando al programa que vuelva a ejecutar una instruccin anterior.
7) La instruccin de asignacin para el clculo del promedio evala la expresin a la derecha del signo
igual y el resultado lo coloca en la variable a la izquierda del signo.
8) El algoritmo propuesto puede ejecutarse para N alumnos con la misma eficacia. En cada iteracin
se dispone de los datos de UN ALUMNO, de aqu que los datos deben ser usados (operados)
mientras se encuentren en la memoria principal, es decir, en el ciclo de lectura.
Para consolidar estos conceptos, modifique este algoritmo para que adems de la salida indicada, calcule y
muestre la cantidad de alumnos procesados. Siga las instrucciones paso a paso registrando las
modificaciones de las variables en la memoria principal, como resultado de las instrucciones ejecutadas,
utilizando este mismo lote de datos. Esta prctica es conocida como Prueba de escritorio.

Licenciatura en Sistemas de Informacin FACENA- UNNE

Pg. 4

Teora Algoritmos y Estructuras de Datos I -2012


4
2012201220232012012201220122012201220122012201
2Tema 1

3. Elementos bsicos de un programa

En programacin se debe tener presente la diferencia entre diseo del algoritmo y su implementacin en
un lenguaje de programacin especfico. Sin embargo, una vez que se comprendan los conceptos de
programacin, la codificacin en un nuevo lenguaje de programacin ser relativamente fcil.
Los lenguajes de programacin tienen elementos bsicos que se usan como bloques constructivos, as
como reglas, que componen su sintaxis. Solamente las instrucciones sintcticamente correctas sern
reconocidas por la computadora, los programas con errores de sintaxis no sern ejecutados.
Los elementos bsicos constitutivos de un programa o algoritmo son:
- Palabras reservadas (INICIO, FIN, SI, MIENTRAS)
- Identificadores (nombres de variables, funciones, procedimientos, etc.)
- Caracteres especiales (coma, apstrofos, etc.)
- Constantes
- Variables
- Expresiones
- Instrucciones
Adems de estos elementos bsicos, existen otros cuya comprensin es esencial para el diseo correcto de
algoritmos y programas. Estos elementos son: bucles, contadores, acumuladores, estructuras de control
(secuencia, seleccin, repetitivas).
El conocimiento adecuado del funcionamiento de estos elementos y de cmo se integran en un programa,
constituyen las tcnicas de programacin que todo buen programador debe conocer.
3.1. Datos, tipos de datos y operaciones primitivas
Un dato es la expresin general que describe los objetos con los que opera la computadora. En general, las
computadoras pueden operar con varios tipos de datos. Los programas y algoritmos operan sobre esos
tipos de datos.
En el proceso de resolucin de problemas el diseo de las estructura de los datos es tan importante como
el diseo del algoritmo y del programa que se basa en el mismo.
Ejemplos de datos son: el nombre de una persona, el valor de una temperatura, una cifra de venta de
supermercado, la fecha de un cheque, etc.
Tipos de datos:
Los distintos tipos de datos se representan en diferentes formas en la computadora, tal como se ha visto en
el tema de representacin de la informacin. A nivel de mquina, un dato es un conjunto de bits (dgitos 0
o 1). Los lenguajes de alto nivel permiten basarse en abstracciones e ignorar los detalles de la
representacin interna. Aparece el concepto de tipo de dato, as como de su representacin. Los datos
pueden ser: simples o compuestos
Un tipo de dato simple es aquel cuyo contenido se trata como una unidad que no puede separarse en
partes ms elementales. Los ms usuales son:
- Numricos (integer, real)
- Lgicos (boolean)
- Carcter (char)
Un tipo de dato compuesto o estructurado, es aquel que permite almacenar un conjunto de elementos
bajo una estructura particular, darle un nico nombre, pero con la posibilidad de acceder en forma
individual a cada componente. Ejemplo de datos estructurados son los arreglos y registros, que veremos en
detalle en temas posteriores.
Licenciatura en Sistemas de Informacin FACENA- UNNE

Pg. 5

Teora Algoritmos y Estructuras de Datos I -2012


4
2012201220232012012201220122012201220122012201
2Tema 1

A continuacin, veremos las caractersticas de los principales tipos de datos simples:


a) datos numricos

El tipo numrico es el conjunto de los valores numricos. Pueden representarse en dos formas distintas:
-

Numrico entero (integer)

Numrico real (real)

Enteros: El tipo entero es un subconjunto finito de los nmeros enteros. Pueden ser positivos o negativos y
no tienen decimales. Ejemplos: 5, 15, -30, 12567.
Los enteros son denominados tambin nmeros de punto o coma fija. La mayora de los lenguajes de
programacin utilizan enteros que se almacenan en 2 bytes (entero corto), de ah que los valores mnimo y
mximo son, respectivamente, -32768 y 32767.
Real: El tipo real es un subconjunto de los nmeros reales. Pueden ser positivos o negativos y tienen punto
decimal. Un nmero real consta de una parte entera y de una parte decimal. Ejemplos: -45.78, 3.0, 0.008, 13456.89.
En aplicaciones cientficas se requiere una representacin especial para manejar nmeros muy grandes,
como la masa de la Tierra, o muy pequeos, como la masa de un electrn. Una computadora slo puede
representar un nmero fijo de dgitos que depende del tamao de la palabra, provocar problemas para
representar y almacenar nmeros muy grandes o muy pequeos, de aqu surge la coma flotante para
disminuir estas dificultades.
Tener presente los conceptos dados en el tema 2 sobre Representacin interna de la informacin, en el
caso particular de los nmeros.
b) datos lgicos (booleanos)
El tipo lgico, tambin denominado booleano, slo puede tomar 2 valores: verdadero (true) o falso (false).
La asignacin prueba = true, asigna el valor lgico verdadero a una variable de tipo lgico.
c) datos de tipo Carcter (Char) y tipo Cadena (String)
El tipo carcter (char) es el conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato
de este tipo contiene un solo smbolo. Los caracteres que reconocen las diferentes computadoras no son
estndar, pero la mayora reconoce los caracteres: Alfabticos: letras A la Z en maysculas y minsculas, los
dgitos de0 al 9, caracteres especiales: signos de puntuacin y otros smbolos. En general, estos caracteres
se almacenan en ASCII y el orden de los caracteres es el que le asigna este cdigo.
Un valor constante de tipo carcter se escribe entre apstrofos, por ejemplo, la expresin letra = X, asigna
a la variable de tipo carcter letra la constante carcter X.
Una cadena (string) de caracteres representa un conjunto de caracteres. Se puede trabajar con una
variable de este tipo como si se tratara de una unidad, sin embargo, no es un dato de tipo simple dado que
est integrado por elementos a los cuales se puede acceder en forma individual. Se trata de un tipo de
datos estructurado.
Una cadena de caracteres tiene dos caractersticas importantes: la longitud fsica y la longitud dinmica o
lgica. La longitud fsica se define en la declaracin del tipo de dato y permite al procesador reservar el
espacio mximo de memoria necesario para almacenar el valor de una variable de ese tipo. Ejemplo:
STRING nombre[10]
nombre = Ema
En este ejemplo, la longitud fsica de lavariable nombre es 10 y la longitud dinmica es 3.
Las constantes de tipo string se escriben tambin entre apstrofos.

Licenciatura en Sistemas de Informacin FACENA- UNNE

Pg. 6

Teora Algoritmos y Estructuras de Datos I -2012


4
2012201220232012012201220122012201220122012201
2Tema 1

3.2. Constantes y variables


Constantes

Los programas muchas veces requieren valores que no deben cambiar durante la ejecucin del programa.
Estos valores se denominan constantes.
Ejemplos de constantes
Constante real: 3.141592, -0.1234 (vlidas) 1,456.63 (invlida, no se permiten comas)
Observaciones: Tener en cuenta que el separador decimal (punto o coma) depende del lenguaje de
programacin o de la configuracin del sistema operativo.
Constante de tipo carcter: B, 4
Constante de tipo cadena: 9 de julio 1449, Ciencias Exactas, Juan Perez
Constantes lgicas: true, false
Variables
Los valores que cambian durante la ejecucin del programa se llaman variables, y corresponden a espacios
de la memoria principal que se identifican con un nombre y son de un tipo de dato, y pueden cambiar de
contenido si el programador as lo especifica con las instrucciones adecuadas.
Una variable se identifica con los siguientes atributos: Nombre que la identifica y Tipo que describe el tipo
de contenido de la variable.
El nombre de una variable es lo que permite utilizar el espacio de memoria reservado para la misma y el
valor que all se almacena. Los posibles nombres de las variables dependern dellenguaje de programacin
utilizado (longitud, caracteres vlidos), pero en general se buscar respetar lo siguiente:

Debe ser descriptivo de los valores que se le asignarn (esto se conoce como mnemotcnico). Los
nombres de variables Edad, Importe_venta, Precio_unitario, Cant_materias, Total_general,
resultarn descriptivos en el contexto del problema.

No utilizar palabras reservadas ni caracteres especiales (espacio, letras acentuadas, , coma,


punto). En general se recomienda limitarse a letras (a b z), dgitos (0 1 2 9) y guin bajo (_) para
separar palabras. Algunos lenguajes distinguen maysculas de minsculas en los nombres de las
variables (por ejemplo, NOTA no es lo mismo que Nota o nota).

El tipo de dato se especifica cuando se declaran las variables. Convendremos escribir antes de iniciar cada
algoritmo el conjunto de datos que utilizaremos, ya sean de entrada, de salida, o para clculos intermedios
o auxiliares. Tendremos entonces una primera seccin donde se declara el nombre y tipo de cada dato, y
respetaremos estas condiciones durante todo el desarrollo del algoritmo.
Por ejemplo:
VAR
REAL:precio_unitario, precio_final
ENTERO: cantidad
STRING:domicilio[30]
CHAR:codigo
declara tres variables numricas: dos de tipo real y una de tipo entero, una variable de tipo carcter y otra
de tipo cadena.
No todos los lenguajes de programacin requieren que se declaren las variables a utilizar: algunos permiten
usar variables que no fueron declaradas previamente, y las crean cuando se les asigna un valor. Otros
incluso permiten que el tipo de una variable cambie durante la ejecucin del programa, o realizan
Licenciatura en Sistemas de Informacin FACENA- UNNE

Pg. 7

Teora Algoritmos y Estructuras de Datos I -2012


4
2012201220232012012201220122012201220122012201
2Tema 1

conversiones automticas cuando no coinciden los tipos en una asignacin. Sin embargo no es
recomendable utilizar este tipo de operaciones con frecuencia, ya que generan soluciones difciles de
entender, de documentar y, consecuentemente, muy difciles de depurar y mantener.
3.3. Expresiones
Las expresiones son combinaciones de constantes, variables, operadores, parntesis y nombres de
funciones. Maneja las mismas ideas que la notacin matemtica convencional.
Por ejemplo: a + (b+3) + C. Los parntesis indican el orden de clculo y la representa la raz cuadrada.
El resultado de cada expresin es un valor que se determina tomando los valores de las variables y
constantes implicadas y la ejecucin de las operaciones indicadas. Una expresin consta de operandos y
operadores. Segn sea el tipo de objetos que manipulan, las expresiones se clasifican en:
- Aritmticas (Resultado de tipo Numrico)
- Lgicas (Resultado de tipo Lgico)
- Carcter (Resultado de tipo Carcter)
- Cadena de caracteres (resultado de tipo Cadena)
a) Expresiones aritmticas:
Son anlogas a las formulas matemticas. Las variables y constantes son numricas (entera o real) y las
operaciones son las aritmticas.
Operadores aritmticos:
Smbolo Operacin
+
Suma
Resta
*
Multiplicacin
/
Divisin
**, ^, Exponenciacin
div
divisin de enteros
mod
resto de la divisin de enteros
Operadores div y mod: Generalmente, el smbolo / se utiliza para la divisin real y el operador div
representa la divisin de enteros. El operador mod representa el resto de la divisin entera.
En ambos casos, esta representacin puede diferir de acuerdo al lenguaje de programacin.
Ejemplos:
A div B si A=19 y B= 6 el resultado es 3 (entero)

19

cociente

A mod B si A=19 y B=6 el resultado es 1 (entero)


Reglas de prioridad

resto

Las expresiones que tienen dos o ms operandos requieren reglas matemticas que permitan determinar el
orden de las operaciones, se denominan reglas de prioridad o precedencia y son:
1) Las operaciones encerradas entre parntesis se evalan primero. Si existen diferentes parntesis
anidados (interiores unos a otros), las expresiones ms internas se evalan primero.
2) Las operaciones aritmticas dentro de una expresin tienen el siguiente orden de prioridad:
1 - Operador de exponenciacin (**, ^, )
2 - Operadores *, /, div y mod
4 - Operadores +, -,
Licenciatura en Sistemas de Informacin FACENA- UNNE

Pg. 8

Teora Algoritmos y Estructuras de Datos I -2012


4
2012201220232012012201220122012201220122012201
2Tema 1

Cuando hay varios operadores con igual prioridad en la expresin, el orden de prioridad es de izquierda a
derecha.Ejemplo: Observar el orden de resolucin en la siguiente expresin:
3 + 6 * 14 / 2
3 +84 /2
3+

42

45
b)

Expresiones booleanas

Otro tipo de expresin, es la expresin lgica o booleana, cuyo valor es siempre verdadero o falso. Dijimos
que existen dos constantes lgicas, verdadera (true) o falsa (false) y que las variables lgicas slo pueden
tomar estos valores. En esencia, una expresin lgica es una expresin que puede tomar estos dos valores,
verdadero o falso.
Las expresiones lgicas se forman combinando constantes lgicas, variables lgicas y otras expresiones
lgicas utilizando los operadores lgicos not, and y or y los operadores relacionales (de relacin o
comparacin) que se muestran en la tabla.
Operadores de relacin:
Permiten realizar comparaciones de valores de tipo numrico o carcter. Los operadores de relacin sirven
para expresar las condiciones en los algoritmos.
Operador
Significado
=
igual
>
mayor que
<
menor que

mayor o igual que

menor o igual que


<>
distinto de
Ejemplo: Dadas las variables A y B, con los valores A=4 y B=3:

La expresin A > B es verdadera

(A-2) < (B-4) es falsa (reemplazando: (4-2) < (3-4), esto es 2 < -1, es falso)

Los operadores de relacin se pueden aplicar a cualquiera de los tipos de datos estndar: enteros, real,
lgicos y de carcter. La aplicacin a valores numricos es evidente.
Para realizar comparaciones de datos de tipo carcter, tenemos que tener en cuenta que la comparacin se
realizar con el valor numrico de su representacin interna (ASCII).
Las cadenas de caracteres se comparan comenzando por el primer carcter a la izquierda hasta encontrar la
primera diferencia. Si no se encuentra un carcter distinto se trata de cadenas iguales o es menor la que
tiene menor longitud l. Por ejemplo:
a < m es verdadero
Emma > Eva es falso
mesa < mesada es verdadero

Licenciatura en Sistemas de Informacin FACENA- UNNE

Pg. 9

Operadores lgicos:

Teora Algoritmos y Estructuras de Datos I -2012


4
2012201220232012012201220122012201220122012201
2Tema 1

Los operadores lgicos o booleanos bsicos son NO(NOT), Y (AND) y O (OR). El funcionamiento de estos
operadores se muestra en la tabla siguiente:
Operador lgico Expresin lgica
Significado
NO(NOT)

NO p (NOT p)

Negacin de p

Y (AND)

p Y q (p AND q)

Conjuncin de p y q

O (OR)

p O q (p OR q)

Disyuncin de p y q

El grfico muestra la aplicacin de las operaciones de Conjuncin (AND), Disyuncin (OR) y Negacin (NOT).

AND
OR
NOT
Las definiciones de las operaciones NO, Y, O se resumen en las llamadas tablas de verdad.
A
NOA
A
B
AYB
A
B
verdadero falso
falso
verdadero

AOB

verdadero verdadero verdadero


verdadero falso
falso

verdadero verdadero verdadero


verdadero falso
verdadero

falso

verdadero falso

falso

verdadero verdadero

falso

Falso

falso

falso

falso

falso

En las expresiones lgicas se pueden mezclar operadores de


relacin y lgicos. As, por ejemplo:
(11 < 20) Y (3 < 9) la evaluacin de la expresin es verdadera
(15 > 30) O (X < Z) la evaluacin de la expresin es verdadera
Prioridad de los operadores lgicos y relacionales:
Operador
Prioridad
NO (not)
Ms alta (primera ejecutada)
Y (AND)
O (OR)
<, >, =, , , <> Ms baja (ltima ejecutada)
c)

Expresiones de carcter y cadena

Una expresin de tipo carcter o de tipo cadena puede sumar el contenido de otras variables de tipo char o
de tipo cadena. Esta operacin se denomina concatenacin y el operador ms frecuentemente usado es el
smbolo +. Ejemplo:
Nombre = Martn
Apellido = Fierro
La expresin Nombre + + Apellido da como resultado una cadena nica Martin Fierro.
En las expresiones lgicas se pueden mezclar operadores de relacin y lgicos. As, por ejemplo:
(11 < 20) y (3 < 9) la evaluacin de la expresin es verdadera
(15 > 30) o (X < Z) ) la evaluacin de la expresin es verdadera

Licenciatura en Sistemas de Informacin FACENA- UNNE

Pg. 10

3.4. Funciones

Teora Algoritmos y Estructuras de Datos I -2012


4
2012201220232012012201220122012201220122012201
2Tema 1

Las operaciones que se requieren en los programas exigen en muchos casos, adems de las funciones
bsicas o primitivas que hemos visto, otros operadores especiales que se denominan funciones internas,
incorporadas o estndar. Por ejemplo, las funciones que calculan la raz cuadrada (Raiz2) o el logaritmo
decimal de un nmero (Log10).
Funcin

Descripcin

Tipo de
argumento

Resultado

Abs (x)

Valor absoluto de x

Entero o real

Idem argumento

Cos(x)

Coseno de x

Entero o real

real

Sen(x)

Seno de x

Entero o real

real

Exp(x)

Exponencial de x

Entero o real

real

Log10 (x)

Logaritmo decimal

Entero o real

real

Redondeo (x) Redondeo de x

Entero o real

entero

Cuadrado (x)

Cuadrado de x

Entero o real

Idem argumento

Raiz2 (x)

Raz cuadrada de x

Entero o real

real

Trunc(x)

Truncamiento de x

Real

entero

Extrae (s,i,c)

Extrae de una cadena s, a partir de la Cadena, entero


posicin i, la cantidad c de caracteres

cadena

Length (x)

Devuelve la longitud dinmica o lgica cadena


de una cadena o string

entero

Las dos ltimas funciones de datos tipo string son frecuentes en los lenguajes de programacin pero puede
cambiar el nombre con el que se designa a la funcin.
Ejemplos:
Funcin

Resultado
Raiz2 (25)

Redondeo (6.6)

Abs (-12)

12

Extrae (spiderman, 7,3)


Length (nombre)

man
5

(si nombre es Anita)

Licenciatura en Sistemas de Informacin FACENA- UNNE

Pg. 11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Programacin estructurada. Estructuras de Control


1. Programacin Estructurada
La programacin estructurada es una forma de escribir programas de computadora de forma clara,
utilizando nicamente tres estructuras: secuencia, seleccin e iteracin o repetitivas; siendo
innecesario y no permitindose el uso de la instruccin o instrucciones de transferencia incondicional
(Por ejemplo GoTo).
La programacin estructurada surge a finales de los aos 1960 con el objetivo de realizar programas
confiables y eficientes, y que adems fueran escritos de manera de facilitar su comprensin
posterior.
Hoy en da las aplicaciones informticas son mucho ms ambiciosas que las necesidades de aquellos
aos, por lo que se desarrollaron nuevas tcnicas, tales como la programacin orientada a objetos y
el desarrollo de entornos de programacin que facilitan la programacin de grandes aplicaciones.
De todas formas, el paradigma estructurado tiene vigencia en muchos mbitos de desarrollo de
programas y constituye una buena forma de iniciarse en la programacin de computadoras, por lo
que en este tema se vern las caractersticas de las estructuras que lo componen.
El teorema del programa estructurado, de Bhm-Jacopini, demuestra que todo programa puede
escribirse utilizando nicamente las tres instrucciones de control siguientes:
Secuencia
Seleccin (Instruccin condicional)
Iteracin (bucle de instrucciones) con condicin al principio
Solamente con estas tres estructuras o patrones lgicos se pueden escribir todos los programas y
aplicaciones posibles.
Si bien los lenguajes de programacin tienen un mayor repertorio de estructuras de control, stas
pueden ser construidas mediante las tres bsicas.

2. Estructuras de Control
El flujo de control de un programa
La expresin flujo de control hace referencia al orden en el que se ejecutarn las instrucciones de un
programa, desde el inicio hasta que finaliza. El flujo normal de ejecucin es el secuencial. Si no se
especifica lo contrario, la ejecucin de un programa empezara por la primera instruccin e ira
procesando una a una en el orden en que aparecen, hasta llegar a la ltima.
Algunos programas muy simples pueden escribirse slo con este flujo unidireccional. No obstante, la
mayor eficacia y utilidad de cualquier lenguaje de programacin se deriva de la posibilidad de
cambiar el orden de ejecucin segn la necesidad de elegir uno de entre varios caminos en funcin
de ciertas condiciones, o de ejecutar algo repetidas veces, sin tener que escribir el cdigo para cada
vez.
Con frecuencia, el programador necesita que el programa no se comporte slo de modo secuencial.
Por ejemplo, si no se puede abrir un archivo y la funcin del programa es modificar ese fichero, el
programa no debera realizar ninguna operacin, ms que indicar el error detectado. Otro ejemplo,
sera calcular una bonificacin slo para los empleados con ms de 10 aos de antigedad.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 1

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Tambin puede ocurrir que interese que un grupo de instrucciones se ejecute repetidamente hasta
que se le indique que se detenga. Por ejemplo, calcular el promedio de notas para cada uno de los
alumnos de un curso, o realizar algn clculo con cada uno de los elementos de un vector.
Para las dos situaciones planteadas existen dos soluciones: las sentencias de control selectivas y las
repetitivas. stas permiten que el flujo secuencial del programa sea modificado. Tambin cumplen
con este objetivo las sentencias denominadas de invocacin o salto.
Las sentencias selectivas o alternativas se denominan as porque permiten seleccionar uno de entre
varios caminos por donde seguir la ejecucin del programa. En algunos casos esta seleccin viene
determinada por la evaluacin de una expresin lgica. Este tipo de sentencias se clasifican en tres:

simples: SI (IF)

dobles: SI-SINO (IF-ELSE)

mltiples: SEGN-SEA (SWITCH, CASE)

A las sentencias iterativas se les conoce tambin como sentencias repetitivas ya que permiten
realizar algo varias veces (repetir, iterar). Dentro de ellas se distinguen:
DESDE (FOR)
MIENTRAS HACER (WHILE DO)
REPETIR-HASTA-QUE (REPEAT UNTIL)
Las sentencias de salto o invocacin permiten realizar saltos en el flujo de control de un programa,
es decir, permiten transferir el control del programa, alterando bruscamente el flujo de control del
mismo. En programacin estructurada se considera una mala prctica el uso de las condiciones de
salto, ya que, entre otras cosas, restan legibilidad al cdigo. Sin embargo, si bien se debe evitar su
uso, la mayora de los lenguajes las incluyen.
Las sentencias de salto o invocacin son:
ROMPER (BREAK)
CONTINUAR (CONTINUE)
IR-A (GO TO)
VOLVER (RETURN)
LANZAR (THROW)

2.1. Estructura secuencial


La estructura secuencial es aquella en que las acciones (instrucciones) se ejecutan sucesivamente,
una a continuacin de otra, sin posibilidad de omitir ninguna y sin bifurcaciones. Es decir que la
accin 2 no se inicia hasta haber terminado la accin 1.
Accin 1 Accin 2 Accin 3 ...

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 2

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
Seudocdigo de una estructura secuencial:
INICIO
< accin 1 >
< accin 2 >
< accin 3 >
FIN

Diagrama de flujo:

Accin 1

Accin 2

Accin 3

Ejemplo: Dado el radio de una circunferencia, se desea obtener su longitud y el rea del crculo que
determina.
ALGORITMO LongitudArea

Inicio

VAR
REAL: area

radio

REAL: longitud
INICIO

area = 3.141592 * radio**2

LEER radio
area= 3,141592 * radio **2

Longitud = 2 * 3.141592 * radio

longitud = 2 * (3,141592) * radio


ESCRIBIR radio, area, longitud
FIN

radio, area, longitud

Fin

2.2. Estructuras selectivas


Frecuentemente en el diseo de un algoritmo es necesario realizar una accin de acuerdo a si se
cumple determinada condicin. Las estructuras selectivas posibilitan, como resultado de la
evaluacin de una condicin, seleccionar la o las siguientes instrucciones a ejecutar, de entre varias
posibilidades o alternativas. Tambin pueden ser tiles para evitar la ejecucin de un conjunto de
sentencias. Por ejemplo, si un empleado no cumple con ciertos requisitos, no se le asigna una
bonificacin.
Por esta razn las estructuras selectivas reciben tambin el nombre de estructuras alternativas o de
decisin.
Las estructuras selectivas o alternativas pueden ser:

simples: SI (IF)

dobles: SI-SINO (IF-ELSE)

mltiples: SEGN-SEA (SWITCH, CASE)

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 3

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

La base de este tipo de estructuras es la condicin. Por esta razn es necesario saber cmo se le
indica a la computadora que debe evaluar una condicin. Las expresiones que lo permiten reciben
el nombre de expresiones condicionales, lgicas o booleanas. Estas expresiones slo pueden tomar
dos valores: VERDADERO (TRUE) o FALSO (FALSE).
Como hemos visto en el tema 4, en las expresiones condicionales se pueden comparar variables
entre s o variables con constantes. Tambin es posible comparar constantes entre s, sin embargo
esto no es muy til puesto que si se conocen los dos valores, ya es sabida la relacin que existe entre
ambas constantes.

2.2.1. Alternativa Simple


La estructura alternativa simple de la forma SI-ENTONCES (IF-THEN) ejecuta una accin o conjunto
de acciones cuando se cumple una determinada condicin. Como resultado de evaluar la condicin,
pueden ocurrir dos cosas:
que la condicin sea verdadera: en cuyo caso se ejecuta la accin preestablecida
que la condicin sea falsa: ante esta situacin no se hace nada
La representacin mediante diagrama de flujo es la siguiente:

Condicin

SI

Tarea a realizar s
la condicin es
verdadera

NO

Seudocdigo de una estructura selectiva simple (en espaol y en ingls):


SI <expresin_lgica> ENTONCES
< accin 1 >
< accin 2 >
< ... >
< accin n >

IF <expresin_lgica> THEN
< accin 1 >
< accin 2
< ... >
< accin n >

FIN-SI

END-IF

Cabe resaltar la alineacin en esta estructura. Ntese que las lneas correspondientes a las acciones
se encuentran indentadas o sangradas respecto a las palabras reservadas SI y FIN-SI. Es importante
tenerlo en cuenta, dado que facilita la legibilidad del cdigo.
Ejemplo: Dado el radio de una circunferencia, se desea obtener su longitud y el rea del crculo que
determina, siempre que el radio sea mayor a 3.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 4

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
ALGORITMO LongitudArea

Inicio

VAR
REAL: area

radio

REAL: longitud
INICIO
radio > 3

LEER radio

SI

SI radio > 3 ENTONCES

area = 3.141592 * radio**2

area = 3,141592 * radio * radio


longitud = 2 * (3,141592) * radio

NO
Longitud = 2 * 3.141592 * radio

ESCRIBIR radio, area, longitud


FIN-SI

radio, area, longitud

Fin

FIN

Obsrvese que los clculos correspondientes (conjunto de instrucciones), slo se ejecutan si se


cumple la condicin, representada por la expresin lgica que incluye un operador relacional (>).

2.2.2. Alternativa Doble


La estructura condicional doble permite elegir entre dos opciones o alternativas posibles en funcin
del cumplimiento o no de una determinada condicin. Se representa de la siguiente forma:
Diagrama de Flujo:

NO

Condicin

Tarea a realizar si
la condicin es
falsa

SI

Tarea a realizar si
la condicin es
verdadera

Seudocdigo:
SI <expresin_lgica> ENTONCES
< bloque_de_instrucciones_1 >
SINO
< bloque_de_instrucciones_2 >
FIN-SI

IF <expresin_lgica> THEN
< bloque_de_instrucciones_1 >
ELSE
< bloque_de_instrucciones_2 >
END-IF

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 5

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

A la <expresin_lgica> de una instruccin alternativa doble tambin se le denomina condicin.


Para que se ejecute el <bloque_de_instrucciones_1>, la condicin tiene que ser verdadera. Por el
contrario, si la condicin es falsa, se ejecutar el <bloque_de_instrucciones_2>.
En resumen, una instruccin alternativa doble (o simplemente alternativa doble) permite
seleccionar, por medio de una condicin, el siguiente bloque de instrucciones a ejecutar, de entre
dos posibles.
Ntese que, como en el caso de la estructura alternativa simple, los bloques de instrucciones se
encuentran indentados respecto a las palabras reservadas, dando mayor claridad al cdigo.
Ejemplo: Dado el radio de una circunferencia, se desea obtener su longitud y el rea del crculo que
determina, siempre que el radio sea mayor a 3. Caso contrario, muestre en pantalla el mensaje
Fuera de rango.
ALGORITMO LongitudArea
VAR

Inicio

REAL: area, longitud


INICIO
radio

LEER radio
SI radio > 3 ENTONCES
area = 3,141592 * radio * radio
longitud = 2 * (3,141592)*radio

radio > 3

SI

NO

ESCRIBIR radio, area, longitud

area = 3.141592 * radio**2

SINO
ESCRIBIR Fuera de rango

Fuera de rango

Longitud = 2 * 3.141592 * radio

FIN-SI
FIN
Fin

radio, area, longitud

2.2.3. Alternativa Mltiple


Con frecuencia al disear un algoritmo ocurre que se necesitan ms de dos alternativas. Si bien esta
situacin puede resolverse con estructuras alternativas anidadas, como se ver ms adelante, esto
resta legibilidad al cdigo cuando las alternativas son numerosas, adems de ofrecer mayor
posibilidad de cometer errores en la codificacin.
La estructura alternativa mltiple es una toma de decisin especializada que permite evaluar una
expresin con n posibles resultados, y en base al resultado seleccionar el siguiente bloque de
instrucciones a ejecutar, de entre varios posibles.
Las palabras reservadas (SWITCH, CASE, etc.) utilizadas para esta estructura, varan segn el lenguaje
de programacin. La representacin es la siguiente:

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 6

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
SEGUN-SEA <expresin>
<lista_de_valores_1> :
<bloque_de_instrucciones_1>
<lista_de_valores_2> :

expresin

<lista de valores-1>

<lista de valores-2>

SI-NO

<bloque_de_instrucciones_2>
...

bloque de
instrucciones-1

bloque de
instrucciones-2

bloque de
instrucciones-n+1

<lista_de_valores_n> :
<bloque_de_instrucciones_n>
[SINO : <bloque_de_instrucciones_n+1> ]
FIN-SEGUN-SEA
Dependiendo del valor obtenido al evaluar la expresin, se ejecutar un bloque de instrucciones u
otro. En las listas de valores se deben escribir los valores que determinan el bloque de instrucciones a
ejecutar, teniendo en cuenta que un valor slo puede aparecer en una lista de valores.
Opcionalmente, se puede escribir un <bloque_de_instrucciones_n+1> despus de SINO. Este bloque
de instrucciones se ejecutar en el caso de que el valor obtenido al evaluar la expresin, no se
encuentre en ninguna de las listas de valores especificadas.
Funciona de la siguiente manera:
Se busca el valor de la expresin (tambin conocida como selector) en alguna de las listas de
valores
Si aparece, entonces se ejecuta la sentencia correspondiente
Si no aparece y hay una clusula ELSE entonces se ejecuta la sentencia que le sigue
Si no aparece y no hay ELSE entonces no se hace nada (continua con la siguiente instruccin).
Ejemplo 1: Se quiere disear el algoritmo de un programa que pida por teclado el nmero (dato
entero) de un da de la semana, y luego muestre por pantalla el nombre (dato cadena)
correspondiente a dicho da.
Nota: Si el nmero de da introducido es menor que 1 mayor que 7, se mostrar el mensaje:
"ERROR: Da incorrecto".
En pantalla debe aparecer:
Introduzca da de la semana: 2
Martes

Introduzca da de la semana: 9
Error: Da incorrecto

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 7

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Algoritmo propuesto:
ALGORITMO DiaDeLaSemana
VAR
ENTERO: dia
INICIO
ESCRIBIR "Introduzca da de la semana: "
LEER dia
SEGUN_SEA dia
1 : ESCRIBIR "Lunes"
2 : ESCRIBIR "Martes"
3 : ESCRIBIR "Mircoles"
4 : ESCRIBIR "Jueves"
5 : ESCRIBIR "Viernes"
6 : ESCRIBIR "Sbado"
7 : ESCRIBIR "Domingo"
SINO : ESCRIBIR "ERROR: Da incorrecto"
FIN-SEGUN-SEA
FIN

2.3. Estructuras de decisin anidadas


Segn lo expresado, las estructuras de decisin simple y doble permiten seleccionar entre dos
alternativas posibles. Sin embargo, la instruccin SI-ENTONCES puede ser utilizada tambin en casos
de seleccin de ms de dos alternativas. Esto es posible anidando estas instrucciones. Es decir, una
estructura SI-ENTONCES puede contener a otra, y esta a su vez a otra. La representacin en
seudocdigo es la siguiente:
SI <condicin_1> ENTONCES
< sentencias_1 >
SINO
SI <condicin_2> ENTONCES
< sentencias_2 >
SINO
SI <condicin_3> ENTONCES
< sentencias_3 >
SINO
.
.
FIN-SI
FIN-SI
FIN-SI

IF <condicin_1> THEN
< sentencias_1 >
ELSE
IF <condicin_2> THEN
< sentencias_2 >
ELSE
IF <condicin_3> THEN
< sentencias_3 >
ELSE
.
.
END-IF
END-IF
END-IF

Como se puede observar, el anidamiento de instrucciones alternativas permite ir descartando valores


hasta llegar al bloque de instrucciones que se debe ejecutar.
En las instrucciones IF anidadas, las instrucciones ELSE y END-IF se aplican automticamente a la
instruccin IF anterior ms prxima.
A fin de que las estructuras anidadas sean ms fciles de leer, es prctica habitual aplicar sangra
(indentacin) al cuerpo de cada una.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 8

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Ejemplo: Un sensor toma (lee) la temperatura ambiente y de acuerdo al rango en que se encuentre,
debe emitir un mensaje. La escala es la siguiente:
Mayor que 100 Temperatura muy alta Mal funcionamiento
Entre 91 y 100 Rango normal
Entre 51 y 90 Bajo el rango normal
Menor que 50 Muy fro Apague el equipo
ALGORITMO Sensor
VAR
ENTERO: temperatura
INICIO
LEER temperatura
SI temperatura > 100 ENTONCES
ESCRIBIR Temperatura muy alta Mal funcionamiento
SINO
SI temperatura > 90 ENTONCES
ESCRIBIR Rango normal
SINO
SI temperatura > 50 ENTONCES
ESCRIBIR Bajo el rango normal
SINO
ESCRIBIR Muy fro Apague equipo
FIN-SI
FIN-SI
FIN-SI
FIN
La sentencia IR-A (go to)
La sentencia GO TO pertenece a un grupo de sentencias conocidas como sentencias de salto (jump).
La caracterstica de este grupo es hacer que el flujo de control salte a otra parte del programa. Otras
sentencias de este grupo son interrumpir o romper (BREAK), continuar (CONTINUE), volver
(RETURN), lanzar (THROW). Las dos primeras se utilizan generalmente con sentencias de alternativa
mltiple. Para retornar de la ejecucin de funciones o mtodos se usa RETURN. La sentencia THROW
se utiliza en los lenguajes de programacin que poseen mecanismos de manipulacin de
excepciones, como Java, C++ y C#. Una excepcin es un suceso excepcional como por ejemplo,
fallas en la apertura de un archivo, intento de divisin por cero, etc.
La sentencia GO TO se utilizaba mucho en los primeros lenguajes de programacin porque era la
nica manera de saltar de una instruccin del programa a otra. Esta instruccin consta de una
sentencia IR_A y una sentencia asociada con una etiqueta. Cuando se ejecuta esta instruccin, se
transfiere el control del programa a la etiqueta asociada. La representacin en seudocdigo es la
siguiente:

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 9

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
INICIO
.
IR_A etiqueta_1
.
FIN
etiqueta_1:
. .. // El flujo salta aqu
.

BEGIN
.
GOTO etiqueta_1
.
END
etiqueta_1:
. // El flujo salta aqu
.

El efecto de esta instruccin es transferir sin condiciones el control del programa a la etiqueta
especificada. Es una de las operaciones ms primitivas para traspasar el control de una parte del
programa a otra. Sin embargo, su uso produce cdigo inconsistente, incompleto o complicado de
mantener. Justamente por ello en los aos 60 y 70, cuando surgi la programacin estructurada, la
comunidad informtica se expres a favor de otras sentencias de control (IF bucles FOR y DOWHILE) en lugar del GOTO.
Una crtica famosa a la sentencia en cuestin es una carta redactada por Edsger Dijkstra1 llamada "Go
To Statement Considered Harmful" (Sentencia Go To Considerada Daina). En ella Dijkstra argumenta
que el uso irrestricto del GOTO debera ser prohibido en lenguajes de alto nivel ya que dificultan el
anlisis y la verificacin de la correccin de los programas.
Si bien la instruccin GOTO puede parecer til y muy flexible, es precisamente en esa flexibilidad
donde radica su peligro y los motivos de su obsolescencia. Si se piensa que cualquier programa
mnimamente complejo tendr miles y miles de lneas de cdigo fuente, con muchos flujos o caminos
de ejecucin diferentes, la alteracin de dicho flujo con la sentencia GOTO de un modo incontrolado,
har que el cdigo se vuelva catico. Por tanto muy difcil de controlar, depurar, mejorar o entender,
lo que lleva, inevitablemente, a programas de escasa calidad.

2.4. Estructuras de control repetitivas


En muchas ocasiones la forma ms apropiada de expresar un algoritmo consiste en la repeticin de
una misma instruccin de manera controlada, una cantidad finita de veces determinada de
antemano (al disear el programa) o en tiempo de ejecucin (cada vez que se corre el programa). Por
ejemplo, podra ser necesario disear un algoritmo similar al de los cajeros automticos, que solicite
una clave al usuario y bloquee el acceso en caso de no ingresar la contrasea correcta luego de tres
intentos. O bien, si se desea procesar grupos de datos ingresados por teclado o ledos desde un
archivo, hasta que no se encuentren ms datos.
Las estructuras algortmicas que permiten realizar operaciones de este tipo se conocen con el
nombre de estructuras repetitivas o iterativas.
El concepto de bucle
Las estructuras que repiten una secuencia de instrucciones un nmero determinado de veces se
denominan bucles y se denomina iteracin a la ejecucin de cada repeticin. Analicemos un caso
ejemplo:

Reconocido investigador de la Burroughs Corporation a principios de los aos 70. Entre sus contribuciones a la
informtica est el algoritmo de caminos mnimos; tambin conocido como Algoritmo de Dijkstra. Recibi el Premio Turing
en 1972. Era conocido por su baja opinin de la sentencia GOTO en programacin. Su principal inters fue la verificacin
formal de los programas.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 10

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Se desea sumar una lista de nmeros que ingresa desde teclado (por ejemplo, edades de los
alumnos de una clase). El algoritmo debera ingresar el valor y sumarlo a una variable SUMA
que contenga las sucesivas sumas parciales.
ALGORITMO suma
VARIABLES
ENTERO: suma, nmero
INICIO
Suma=0
LEER nmero
Suma = suma + nmero
LEER nmero
Suma = suma + nmero
.
FIN
Como podemos observar, de este modo el algoritmo deber realizar tantas lecturas y sumas como
alumnos se procesen: 10, 100, 1000,...
Es evidente que el mtodo no es ptimo, pero el ejemplo sirve para identificar las instrucciones que
se repiten. En este caso, el bucle (las instrucciones que se repiten) est formado por las
instrucciones:
LEER nmero
suma = suma + nmero
y la cantidad de iteraciones estar relacionada con el nmero de alumnos que se procesen durante la
ejecucin.
Entonces, las dos cuestiones importantes cuando se utilizan estructuras repetitivas son: qu
contiene el bucle? y cuntas veces se repite?
Las estructuras repetitivas se diferencian en la forma en que se produce la condicin de fin del bucle
y deber utilizarse aquella ms apropiada al problema particular de que se trate.
A continuacin, veremos las ms usuales:

2.4.1. La estructura MIENTRAS- HACER (WHILE-DO)


Esta estructura se utiliza cuando no se conoce de antemano la cantidad de veces que ser necesario
repetir un conjunto de instrucciones para solucionar el problema, o bien es conveniente que estas
instrucciones sean repetidas hasta alcanzar una determinada condicin. Por esta razn, a estos
bucles se los denomina bucles condicionales.
La estructura MIENTRAS tiene la forma:

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
MIENTRAS condicin HACER

WHILE condicin DO

INSTRUCCIN

INSTRUCCIN

*+

*+

INSTRUCCIN

INSTRUCCIN

condicin

INSTRUCCIN

FIN-MIENTRAS

END-WHILE

INSTRUCCIN

Al ejecutarse, lo primero que realiza es la evaluacin de la condicin o expresin lgica. Si el


resultado es Falso (false), no se realiza ninguna accin y el programa prosigue en la siguiente
sentencia despus del bucle. Si la expresin lgica se evala a Verdadero (true), entonces se ejecuta
el cuerpo del bucle y se evala de nuevo la expresin. Este proceso se repite mientras la expresin
lgica permanezca verdadera. Despus de cada iteracin, la expresin lgica se evala y se verifica
de nuevo, y si es verdadera, el bucle se repite. Si cambia de verdadera a falsa, la sentencia MIENTRAS
finaliza y el programa contina en la siguiente sentencia del programa.
A continuacin se muestra el formato de las sentencias Pascal para un bucle WHILE de una o varias
instrucciones:
Formato con una sentencia:
Formato con varias sentencias:
WHILE expresin lgica DO
WHILE expresin lgica DO
Sentencia;
BEGIN
Sentencia -1
Sentencia-2
.
END
Reglas de funcionamiento:
1.

La condicin o expresin lgica se evala antes de cada ejecucin del bucle. Si la condicin es
verdadera, se ejecuta el bucle, y si es falsa, el control pasa a la instruccin siguiente al bucle.

2.

Si la condicin se evala a falso cuando se ejecuta el bucle por primera vez, el cuerpo del bucle
no se ejecutar nunca. En este caso, se dice que se ha ejecutado 0 veces.

3.

Mientras la condicin sea verdadera, el bucle se ejecutar. Esto significa que el bucle se
ejecutar indefinidamente a menos que algo en el interior del bucle modifique la condicin
haciendo que la condicin pase a falso. Si la expresin nunca cambia de valor, entonces el bucle
no termina nunca. En este caso, se trata de un bucle infinito. Deben evitarse estas situaciones.
Problema: Se desea un programa que calcule e informe el precio de una llamada telefnica, a
partir del nmero de minutos ingresado por el operador, sabiendo que el precio por
minuto es de $0,23. Esta operacin debe repetirse cada vez que el operador ingrese
una cantidad de minutos mayor que 0, y detenerse en caso contrario.

Se desconoce la cantidad de veces que se repetir el clculo del precio, entonces una posible
solucin es la siguiente:

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 12

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

INICIO

INICIO
VAR
REAL: precio

minutos

LEER minutos
MIENTRAS minutos > 0 HACER
precio = minutos * 0,23

minutos
>0

ESCRIBIR precio

LEER minutos
FIN-MIENTRAS

precio =
minutos * 0,23

precio

FIN

FIN
El operador puede ingresar un nmero menor o igual a cero la primera vez que el programa le
solicita un dato, y el programa se detendr sin informar un precio errneo.
Es importante notar que las condiciones de parada son diferentes. Existen muchas posibilidades para
expresar la solucin a este problema, que se obtienen variando:
-

el momento en que se obtienen los datos del operador

el momento en que se calcula y muestra el precio

la condicin para la finalizacin de la iteracin

Uso de la indentacin:
Para aumentar la legibilidad y claridad de un bucle MIENTRAS, el cuerpo del bucle se debe sangrar
respecto de la palabra reservada MIENTRAS, tal como se muestra en el ejemplo anterior.

Consideraciones a tener en cuenta en el diseo de los bucles:


El diseo correcto de los bucles es una tarea que requiere atencin para lograr un programa
eficiente. Para evitar errores se propone tener en cuenta las siguientes reglas (los ejemplos estn
codificados en Pascal):
I. Iniciacin de variables:
Algunos lenguajes de programacin, por ejemplo FreePascal, inicializan las variables por defecto
cuando no se les ha dado valores previamente mediante instrucciones de lectura (read) o
instrucciones de asignacin (:=). Para evitar errores, se recomienda como buena prctica de
programacin inicializar las variables que sern usadas en el programa.
De igual modo, las variables que aparecen en el lado derecho de una sentencia de asignacin (X=Z+1)
o en cualquier parte donde se espera un valor (Contador < N), deben tener un valor inicial. Por
Ejemplo: Algoritmo que suma N nmeros:
Read (N)
Suma := 0;
Contador :=0;
While Contador < N do
Begin
Read (Numero);
Suma
:= Suma + Numero;
Contador
:= Contador + 1;
End;
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 13

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Las variables Suma y Contador se inicializan en 0 antes del bucle. Si no se les da un valor inicial, la
ejecucin de la instruccin de asignacin Suma := Suma + Numero podr generar un valor
impredecible o cancelar por error en el tipo de dato.
II. Bucles infinitos:
Algunos bucles no exigen terminacin, por ejemplo, un sistema de monitoreo de alarma repetir su
algoritmo de deteccin hasta que el usuario desconecte el sistema de alarma. Sin embargo, lo ms
frecuente es que un bucle se disee para realizar un nmero finito de pasos hasta lograr el objetivo
(ejemplo: calcular el promedio de notas de los alumnos). Un bucle infinito no intencionado debe ser
evitado.
Por ejemplo, observemos el siguiente bucle:
Contador := 10;
While Contador <> 20 do
Begin
Read (Numero);
Suma
:= Suma + Numero;
Contador
:= Contador + 2:
End;
Este bucle se termina cuando Contador = 20, pero si en lugar de incrementar Contador en 2 se hace
en 3, el contador nunca pasar por el valor 20, en consecuencia, el bucle no se terminar nunca.
Como regla general, conviene terminar un bucle con una condicin de mayor o menor, evitar la
verificacin de igualdad o desigualdad. Hay que tener en cuenta que los datos numricos reales se
almacenan como cantidades aproximadas.
Ejemplos de bucles infinitos:
a) While Y < 10 do
X := X + 1;

b) X := 15;
While X < 10 do
X := X + 1;

III. Terminacin de los bucles:


Si el programa est leyendo una lista de valores realizando una serie de clculos en un bucle
WHILE, se debe incluir algn mecanismo de finalizacin del bucle.
En general, existen dos mtodos para controlar o terminar un bucle: bucles controlados por
contador (bucles de conteo) y bucles condicionales.
a) Bucles controlados por contador: Es un bucle cuyas iteraciones se controlan mediante una
variable de control que representa a un contador.
Ejemplo:
Final := 50;
Cuenta := 1;
While Cuenta <= Final do
Begin

Cuenta := Cuenta + 1;
End;
Normalmente, los contadores se inicializan a 0 o 1, dependiendo del diseo del programa. Cuando se
usa contadores, hay que tener en cuenta: el valor inicial, el valor final y el operador relacional
utilizado para la condicin de fin de bucle.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 14

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
b)

Bucles controlados por condicin: Los bucles condicionales se utilizan cuando no se conoce, a
priori, el nmero exacto de iteraciones a realizar. Existen diferentes tcnicas para implementar
estos bucles:

b-1: Ingreso de valores desde el operador o usuario del programa


Este mtodo consiste en preguntar al usuario si existen ms entradas. Por ejemplo:
Suma := 0;
WriteLn (Existen ms nmeros en la lista? (S/N));
ReadLn (Respuesta);
While (Respuesta = s) or (Respuesta = S)
Begin
WriteLn (Introduzca un nmero: );
ReadLn (Numero);
Suma := Suma + Numero;
WriteLn (Existen ms nmeros en la lista? (S/N));
ReadLn (Respuesta);
End;
Este bucle se realizar mientras que el valor de la respuesta sea distinta de S o s.
b-2: Uso de un valor centinela o valor de fin de dato:
Un centinela es un valor especial utilizado para indicar el final de una lista de datos. El valor elegido
debe ser totalmente distinto de los posibles valores de la lista. Por ejemplo, si se trata de una lista de
nmeros positivos, se puede utilizar un valor negativo para indicar el valor final de la lista.
Por ejemplo:
Suma := 0;
Read (Numero);
While Numero >= 0 do
Begin
Suma := Suma + Numero;
Read (Numero)
End
La lista de nmeros ingresada sera: 7, 10, 2, 1, 6, -1. El nmero -1 se lee pero no se suma y provoca
la finalizacin del bucle.
b-3: Uso de seales (flag):
Una seal, bandera o interruptor (flag) es una variable lgica que se utiliza para conservar el estado
(verdadero o falso) de una condicin. El valor de esta variable debe inicializarse antes de comenzar el
bucle y debe cambiar su estado (valor) dentro del cuerpo del bucle para que corte la iteracin del
bucle.
Por ejemplo: Determinacin de nmero primo.
Un numero es primo si dividido sucesivamente por 2, 3, 4, numero-1, no produce ninguna divisin
entera( resto cero).
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 15

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Read (Numero);
Compuesto := falso;
C:= 2;
While not Compuesto and (C < Numero) do
Begin
Compuesto := (Numero mod C) = 0;
C := C + 1;
End;
IF Compuesto then
WriteLn (El nmero no es primo , Numero)
Else
WriteLn (El nmero es primo , Numero)
En el ejemplo el bucle se repite mientras C (contador desde 2 hasta Numero-1) sea menor que
Numero y la variable lgica Compuesto no sea verdadera (Si Compuesto es verdadero significa que
encontr un resto 0, es decir, que con algn nmero del rango 2 a Numero-1 result una divisin
exacta.
Compruebe que el algoritmo funciona ingresando dos valores: 9 y 13. El primero no es primo y el
segundo s.

2.4.2. La estructura REPETIR-HASTA (REPEAT-UNTIL)


Una variante de la sentencia WHILE es la sentencia REPEAT. En esta estructura se especifica un bucle
condicional que se repite hasta que la condicin se hace verdadera. El seudocdigo y el diagrama de
flujo que representan la estructura son:
REPETIR
INSTRUCCIN

REPEAT
INSTRUCCIN

*+

*+

INSTRUCCIN

INSTRUCCIN

HASTA condicin

UNTIL condicin

INSTRUCCIN

INSTRUCCIN

condicin

Reglas de funcionamiento:
1. La condicin (expresin lgica) se evala al final del bucle, despus de ejecutarse todas las
sentencias.
2. Si la expresin lgica es falsa, se vuelve a repetir el bucle y se ejecutan todas las sentencias.
3. Si la expresin lgica es verdadera, se sale del bucle y se ejecuta la siguiente instruccin al
final del UNTIL.
4. Si la condicin se evala a falso cuando se ejecuta el bucle por primera vez, el cuerpo del
bucle se ejecutar al menos una vez.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 16

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Ejemplo:
Suma de enteros
WriteLn (Indique cuantos nmeros desea sumar );
ReadLn (TotalNumeros);
Contador

:=0;

Suma

:=0;

Repeat
Read (Numero);

Until

Suma

:= Suma + Numero;

Contador

:= Contador + 1;

Contador = TotalNumeros;

Comparacin de los bucles WHILE y REPEAT


Si bien las estructuras MIENTRAS y HASTA son parecidas, y en la mayora de los casos puede utilizarse
cualquiera de ellas (con las precauciones pertinentes), advertimos las siguientes diferencias:
MIENTRAS

HASTA

Cantidad de veces que se


repite las instrucciones

ninguna o ms

Verificacin de la condicin
de parada

antes de ejecutar el bloque despus de ejecutar


de instrucciones
bloque de instrucciones

Cuando la condicin es
Verdadera

El bucle se ejecuta

El bucle se detiene

Para evitar un bucle infinito

El valor de la variable de la
condicin debe modificarse
en el cuerpo del bucle,
pasando a tomar el valor
Falso

El valor de la variable de la
condicin debe modificarse
en el cuerpo del bucle,
pasando a tomar el valor
Verdadero.

una o ms
el

Estas diferencias sealan que es importante analizar cuidadosamente:


-

cul es el valor conveniente para las variables que intervienen en las condiciones de parada
al iniciar el bloque repetitivo.

cmo se expresan las condiciones de parada.

cmo y en qu orden se altera el valor de las variables verificadas por las condiciones.

2.4.3. La estructura PARA (FOR):


Se utiliza para resolver problemas en los cuales se conoce de antemano la cantidad de veces que es
necesario repetir las instrucciones que componen el bucle.
El formato general de la estructura es:

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 17

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
PARA variable DESDE inicial HASTA final
[INCREMENTO incremento]

variable = inicial

INSTRUCCIN
INSTRUCCIN

*+
INSTRUCCIN

FIN-PARA
FOR variable FROM inicial TO final

INSTRUCCIN

[STEP incremento]
INSTRUCCIN
*+

variable
= final

variable =
variable + incremento

INSTRUCCIN
END-FOR
Donde:
variable es el nombre de la variable de control de tipo numrico, en particular entero, definida en el
programa, cuyos valores se irn modificando en cada repeticin. Es comn utilizar como
nombre de esta variable la letra i, que proviene de la palabra ndice (index en ingls), y si
se utilizan varias instrucciones PARA, emplear las letras siguientes del abecedario: j, k, l.
inicial
es el valor que toma la variable en la primera repeticin.
final
es el valor que toma la variable en la ltima repeticin.
incremento es el incremento que recibir la variable entre repeticiones, es decir, el valor que se le
sumar a variable cada vez que se termine una repeticin y antes de iniciar la
siguiente. Si se omite, se considera que vale 1. Tambin puede tomar valores
negativos.
Cuando se ejecuta la instruccin FOR, a la variable de control se le asigna el valor inicial, al llegar al
final del bucle se verifica si el valor de la variable de control es igual que el valor final; en caso
negativo se incrementa el valor de la variable de control en uno (o lo que indique el incremento), y se
vuelven a ejecutar todas las instrucciones del bucle, hasta que la variable de control sea igual que el
valor final.
Ejemplo: Mostrar los nmeros pares del 1 al 99
INICIO
k=1

INICIO
PARA k DESDE 1 HASTA 49

k*2

ESCRIBIR k * 2
FIN-PARA

k = 49

k=k+1

FIN
S

FIN

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 18

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Otra opcin para el mismo problema sera:


INICIO

INICIO
PARA i DESDE 2 HASTA 98 INCREMENTO 2

i=2

ESCRIBIR i
FIN-PARA

FIN
i = 98

i=i+2

FIN

Reglas de funcionamiento del FOR:


1. Las variables de control, valor inicial y valor final deben ser todas del mismo tipo, el tipo real
no est permitido (en la mayora de los casos). Los valores iniciales y finales pueden ser tanto
expresiones como constantes.
2. Antes de la primera ejecucin del bucle, se le asigna el valor inicial.
3. La ltima ejecucin del bucle ocurre cuando la variable de control es igual al valor final.
4. El valor del incremento puede ser positivo o negativo.
5. Es ilegal intentar modificar los parmetros del FOR (variable de control, y los valores inicial y
final) dentro del bucle.
Otros tipos de datos permitidos como variable de control:
Una variable de control debe ser de tipo ordinal o un subrango de tipo ordinal. Puede ser entera, tipo
char o tipo lgica.
Ejemplo en cdigo Pascal:
For caracter := A to Z do
Writeln (Caracter);
Ejemplo de incremento negativo:
For c := 5 downto 1 do
Writeln (c);

2.4.4. Sentencias de salto en bucles


INTERRUMPIR (BREAK)
Esta instruccin se utiliza cuando se desea terminar un bucle en un lugar determinado del cuerpo del
bucle sin esperar a que este termine de modo natural por su entrada o su salida. Esta instruccin
corta el ciclo de ejecucin, debe ser utilizada con precaucin.
Ejemplo:
LEER nmero
REPETIR
IF nmero <= 0 INTERRUMPIR
suma = suma + nmero
LEER nmero
FIN-SI
HASTA nmero > 100
Licenciatura en Sistemas de Informacin FACENA - UNNE
Pg. 19

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

La instruccin Interrumpir sale del bucle REPETIR y sigue con la instruccin siguiente a la instruccin
HASTA.
La sentencia INTERRUMPIR (BREAK) se utiliza frecuentemente junto con una sentencia SI (IF)
actuando como una condicin interna del bucle.
CONTINUAR (CONTINUE)
Esta instruccin hace que el flujo de ejecucin salte el resto del cuerpo del bucle para continuar con
la siguiente iteracin. Esta caracterstica suele ser til en algunas condiciones.
Ejemplo:
PARA i DESDE 0 HASTA 20
SI (i mod 4 = 0 ) ENTONCES
CONTINUAR
FIN-SI
ESCRIBIR i, ,
FIN-PARA
En este ejemplo, si el valor de i es mltiplo de 4, no escribe ese valor en la salida.
El resultado de este bucle ser: 1, 2, 3, 5, 6, 7, 9, 10, 11, 13, 14, 15, 17, 18, 19.
La sentencia CONTINUAR no afecta la cantidad de veces que se debe ejecutar el bucle.

2.4.5. Estructuras repetitivas anidadas


As como se podan anidar estructuras de seleccin, tambin es posible insertar un bucle dentro de
otro. Las reglas para construir estructuras repetitivas anidadas son iguales en ambos casos: la
estructura interna debe estar incluida totalmente dentro de la externa y no puede existir
solapamiento. Una representacin grfica se muestra a continuacin:

A)

B)

C)

Los bucles A y B representan anidaciones correctas, C es incorrecta.


Las variables ndices o de control toman valores de modo tal que por cada valor de la variable ndice
del ciclo externo se debe ejecutar totalmente el bloque interno. Se pueden anidar estructuras
repetitivas siempre que se cumplan las condiciones que se muestran en los esquemas grficos.
Ejemplo:
Se tienen datos sobre la poblacin de cada una de las 10 ciudades ms grandes de cada provincia de
la Argentina y se requiere un informe que muestre la poblacin mayor de cada provincia y la
identificacin de la provincia. En este problema, se identifican 2 instancias:
1. Encontrar e imprimir la ciudad con mayor cantidad de habitantes de una provincia.
2. Repetir el paso 1 para cada provincia
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 20

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Para detectar la ciudad con mayor poblacin, se utiliza una variable auxiliar MAYOR, inicialmente con
valor 0, que se compara sucesivamente con la poblacin de cada una de las 10 ciudades de la
provincia.
ALGORITMO ciudadesmayores
VAR
ENTERO: i, j
// contador de provincia y de ciudades
ENTERO: mayor
// mayor poblacin de provincia
ENTERO: pob_ciudad
// poblacin de la ciudad
CADENA: provincia
// nombre de la provincia
INICIO
i=1
MIENTRAS i <= 23 HACER
LEER provincia
mayor = 0
j=1
MIENTRAS j <= 10 HACER
LEER pob_ciudad
SI pob_ciudad > mayor ENTONCES
mayor = pob_ciudad
FIN-SI
J=j+1
FIN-MIENTRAS
ESCRIBIR provincia , provincia, poblacin mayor , mayor
i=i+1
FIN-MIENTRAS
FIN

Como se puede observar, las posibilidades de plantear una solucin a un problema que requiera la
repeticin de un conjunto de instrucciones son amplias, y generalmente habr varias opciones
equivalentes. Es importante identificar en cada caso la estructura ms conveniente y la forma de
expresar correctamente la solucin, analizando especialmente:
-

lo que sucede antes y durante la primera iteracin,

cundo y cmo se detiene la repeticin, y

qu valores y acciones son ejecutadas antes de detener la misma.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 21

Teora Algoritmos y Estructuras de Datos I


Tema 1

Cadenas
Concepto de cadena de caracteres (string)
La informacin de texto se almacena en constantes y en variables de tipo cadena. Las cadenas de
caracteres son elementos fundamentales para el manejo de texto en los lenguajes de programacin.
Una cadena de caracteres (string) es una serie de caracteres cuya longitud (nmero de caracteres
que contiene) puede variar de 1 a 255 caracteres.
Una variable de cadena se declara mediante la palabra string seguida de la longitud mxima de la
cadena de caracteres entre corchetes.
Declaracin de una variable tipo cadena (string).
Las variables de cadena se declaran como variable o como tipo de dato.
Como variable:
VAR
Nombre: string [40];
Si se omite el tamao mximo del string el compilador tomar por defecto el tamao mximo
posible.
Como Tipo:
TYPE
Cadena40: string [40];
VAR
Nombre: Cadena40;
Es importante recordar que si se declaran como Type inmediatamente despus dentro de las
variables, se debe declarar una variable que haga referencia al Type.
Un string puede pensarse como una cadena de caracteres concatenados o en posiciones de memoria
adyacentes. Por lo tanto, puede manipularse como si fuera un vector donde en cada posicin puede
almacenarse un carcter cualquiera de la tabla ASCII. Para acceder a los diferentes caracteres de una
cadena se debe indicar entre corchetes la posicin del carcter deseado.
Ejemplo:

Matricula:= RVR561

Matricula [5] equivale al carcter 6

Longitud de una cadena


La longitud de una cadena es el nmero de caracteres que ocupar en la memoria ms un byte
destinado a indicar el final de la cadena.
Ejemplo: Si tenemos la declaracin:
Var
nombre: string[10]
y la variable nombre toma el valor Virginia, en la memoria estarn almacenados 11 bytes, el
primero, con nmero de posicin 0, corresponde a la longitud actual de la cadena, que es 8.
8 V i
r
g i
n i
a
0 1 2 3 4 5 6 7 8 9 10
El primer byte no es el carcter 8 sino el nmero 8 (entero) y los ltimos bytes de la cadena (el 9 y
el 10 en el ejemplo), contienen datos aleatorios (es decir, basura).
Longitud de la
cadena

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 1

Teora Algoritmos y Estructuras de Datos I


Tema 1

Longitud fsica:
La longitud fsica es la cantidad de memoria que reserva para la cadena al principio del programa y se
mantiene durante la ejecucin del mismo porque es una estructura esttica.
Longitud lgica:
La longitud lgica es el nmero (cantidad) de caracteres almacenados en la cadena en un cierto
momento y puede variar a lo largo de la ejecucin del programa. La longitud lgica es que la
longitud fsica.

Operaciones con cadenas


a) Asignacin:
Es la ms simple de las operaciones con cadenas y puede realizarse de dos maneras, una tomando a
la cadena como un vector, asignando valores posicin a posicin y la otra tomando a la cadena como
variable en donde todo el valor se le asigna directamente. El contenido de una cadena de caracteres
se debe encerrar entre apstrofos.
Ejemplo:
Nombre:=Juan;
Nombre *1+:=J;

Nombre *2+:=u;

Nombre *3+:=a;

Nombre *4+:=n;

Una vez que estn declaradas las variables de cadenas se pueden realizar asignaciones o bien
operaciones de lectura/escritura en los programas.
En los procedimientos de Entrada/Salida se utilizan de la siguiente forma:
Readln (nombre);
Writeln (Su nombre es, Nombre);
La asignacin de cadenas puede describirse con la siguiente ecuacin:
Destino
Fuente
Donde destino es la cadena a la que se da un valor y fuente es la expresin de cadena que contiene el
correspondiente valor. En esta ecuacin, se evala la cadena fuente y se almacena en la variable de
cadena destino.
Dependiendo de la longitud de las cadenas fuente y destino se pueden presentar tres casos
diferentes que analizaremos a partir de la siguiente declaracin de variables de cadena:
Var
Cad1: string [8];
Cad2: string [11];
Cad3: string [15];
Cad4: string [11];
a.1) Las longitudes de la cadena destino y fuente son iguales
Supongamos que se ejecuta la sentencia: Cad2:= informtica.
Este caso no presenta problemas ya que cada posicin de Cad2 se rellena con un carcter:
Cad2

10

11

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 2

Teora Algoritmos y Estructuras de Datos I


Tema 1

Este mismo caso sucede si se ejecuta la sentencia:


Cad4:= Cad2
como ambas cadenas tienen igual longitud, cad4 contiene ahora la cadena informatica.
a.2) La longitud de la cadena destino es mayor que la cadena fuente
Supongamos que ahora se ejecuta la sentencia:
Cad3:= Cad2
En este caso como Cad3 tiene 15 caracteres y Cad2 solo 11 caracteres, Cad3 seguir teniendo una
longitud mxima de 15 caracteres, pero se almacenan 11 caracteres y su longitud actual ser 11.
Cad3

9 10 11 12 13 14 15

Longitud
actual=11
Longitud
mxima= 15

a.3) La longitud de la cadena destino es menor que la cadena fuente


Supongamos que se trata de ejecutar ahora
Cad1: = Cad2
En este caso, como Cad1 tiene una longitud de ocho caracteres, la cadena fuente Cad2 que es de 11
caracteres no se puede almacenar totalmente. En este caso se almacenan en Cad1 los ocho
caracteres ms a la izquierda de Cad2.
Cad1

Longitud
actual=8
Longitud
mxima= 8

Es posible asignar una cadena a otra cadena, incluso aunque esta ltima sea de longitud fsica menor.
En este caso no se produce ningn error en tiempo de compilacin ni en tiempo de ejecucin. Se
producir un truncamiento de los datos de la cadena mayor a la longitud fsica mxima de la cadena
ms pequea. Ejemplo:
Var
Cad1: string [20];
.
Cad1: = Importe expresado en dlares
Se asignara a Cad1 la cadena Importe expresado en.
b) Concatenacin
Concatenar dos cadenas de caracteres significa juntarlas o pegarlas una detrs de la otra. Pascal
proporciona mtodos independientes para ejecutar esta operacin: el operador concatenacin (+) y
la funcin concat.
b.1. Utilizando el operador de concatenacin:
Lenguajes de programacin + Estructurada
produce la cadena: Lenguajes de programacin Estructurada
y de modo similar:
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 3

Teora Algoritmos y Estructuras de Datos I


Tema 1

CadenaGrande:= Cadena1 + Cadena2 + Cadena3 + Cadena4;


En este caso CadenaGrande debe ser lo suficientemente grande para concatenar a las cuatro
cadenas; en caso contrario, si la longitud total de las cuatro cadenas fuente es mayor que la longitud
de la cadena destino, todos los datos que no quepan en la cadena destino se truncan y se ignoran.
b.2. Mediante la funcin Concat:
Program ejemplo
VAR
Cadena1, Cadena2, Saludo: string [20];
BEGIN
Cadena1:= Hola;
Cadena2:= gente linda!;
Saludo:= Concat (Cadena1, cadena2);
Writeln (La frase completas es , Saludo);
END.
El resultado ser Saludo igual a Hola gente linda!.
c) Comparacin
Utilizando los operadores relacionales la comparacin de dos cadenas puede devolver Verdadero o
Falso. Para la comparacin de las cadenas se toma el valor de cada posicin individual de la tabla de
cdigos ASCII. Ejemplos:
Comparacin

Resultado

A < B

Verdadero (true)

Z < a

Verdadero

a < B

Falso (false)

PASCAL = pascal Falso


Reglas de comparacin de cadenas:
Las dos cadenas se comparan de izquierda a derecha hasta que se encuentran dos caracteres
diferentes. El orden de las dos cadenas es el que corresponde al orden de los dos caracteres
diferentes.
Si las dos cadenas son las mismas pero una de ellas es ms corta que la otra, entonces la ms corta es
menor que la ms larga.
Ejemplos:
Comparacin

Resultado

byte > bite

Verdadero (y > i)

KB < KByte

Verdadero (KB tiene menos caracteres que Kbyte

Ram < RAM

Falso (a > A)

El Tigre < Elizabeth Verdadero ( el espacio en blanco < i)


d) Acceso a elementos individuales
Para acceder a los elementos individuales de una cadena de caracteres se procede como si se tratara
de un vector, accediendo a cada posicin por medio del subndice.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 4

Teora Algoritmos y Estructuras de Datos I


Tema 1

Saludo:= Hola;
Writeln (Saludo);

/* produce la salida Hola

*/

Writeln (Saludo[1]);

/* produce la salida H

*/

Writeln (Saludo[4]);

/* produce la salida a

*/

Procedimientos y funciones de cadena internos


Una funcin puede considerarse como un algoritmo separado del algoritmo principal del programa
que permite resolver una tarea especfica. La funcin se relaciona con el programa principal por
medio de los parmetros y los valores de retorno. En la figura 6.1 se muestra grficamente esta
relacin:
Programa
Subprograma
Calculo

.
..

.
..

Clculo
Figura 6.1.

Las funciones operan como las funciones matemticas, donde cada funcin y=f(x) toma un
parmetro (en este caso x) y devuelve un valor (en este caso y). De la misma manera, cuando en un
programa se invoca una funcin buscar su cdigo fuente en la seccin especfica, ejecutar las
instrucciones utilizando los valores parmetros y devolver el resultado.
Los procedimientos son mdulos de programa que realizan una tarea especfica que pueden ser
llamados por otros mdulos o por el programa principal. Existen algunos procedimientos que estn
predefinidos por el lenguaje y otros que son definidos por el usuario.
La diferencia entre ellos es que un procedimiento ejecuta una serie de acciones, puede devolver
ningn valor o mltiples valores, mientras que la funcin devuelve como mnimo 1 valor.
En esta asignatura se tratarn funciones y procedimientos internos.
Pascal1 incorpora, una serie de procedimientos y funciones que proporcionan una gran potencia a la
hora del tratamiento de cadenas. La tabla 6.1 muestra los procedimientos y funciones internos.
Tabla 6.1. Procedimientos y funciones de cadena.
Funciones
Explicacin
Concat
Concatena cadenas, equivalente al operador +
Length
Determina la longitud lgica de una cadena
Pos
Determina la posicin de la primera ocurrencia del carcter dado
Copy
Copia n caracteres a partir de una posicin indicada
Uppercase
Pasa todos los caracteres de un string a mayscula
Lowercase
Pasa todos los caracteres de un string a minscula
Delete
Elimina n caracteres de un string desde una posicin dada
Insert
Inserta un string dentro de otro desde una posicin determinada
Val
Pasa un string que contiene nmeros a una variable numrica
Str
Toma un valor numrico y lo almacena en un string
1

Los distintos lenguajes de programacin podrn tener diversas posibilidades para el manejo de cadenas. Se
mencionan las del lenguaje Pascal porque con esta herramienta se realiza la prctica en los laboratorios.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 5

Teora Algoritmos y Estructuras de Datos I


Tema 1

a) Funcin Concat
Permite concatenar una secuencia de cadenas.
Formato:
Concat (S1, S2, , Sn)
S1, S2, cadenas o variables de caracteres (expresin tipo cadena)
Si la cadena resultante es mayor que 255 caracteres, se truncan los caracteres despus del 255.
Ejemplos:
var
Cad1, Cad2, Cad: string [40];
begin
Cad1 := Programa;
Cad2 := de computadora;
Cad := Concat (Cad1, Cad2);
end
b) Funcin Length (longitud)
Proporciona la longitud lgica de una cadena de caracteres y devuelve un valor entero.
Formato:
Length (s)
s expresin tipo cadena.
Ejemplo:
Length (esto es una prueba)
devuelve el valor 18.
Length ()
devuelve 0 (longitud de la cadena vaca)
Otro mtodo para acceder a la longitud de una variable de tipo string es utilizando la funcin Ord().
Como se ha comentado anteriormente; la primera posicin de la cadena contiene la longitud actual
de la cadena. Por consiguiente, la funcin ord() devuelve la longitud de la cadena. En el caso de la
variable cad1:= Programa la variable Longitud tendr el valor 8.
Longitud:= ord(cad1[0])
c) Funcin Posicin (Pos)
Esta funcin permite determinar si una cadena est contenida en otra. En este caso, la funcin
devuelve la posicin donde comienza la cadena buscada en la cadena fuente. Si la cadena no existe,
se devuelve el resultado 0.
Formato:
Pos (cadena buscada, cadena fuente)
Ejemplo:
Ch:= uno dos tres cuatro cinco;
Writeln (Pos (tres, Ch));
Writeln (Pos (seis, Ch));
Al ejecutarse estas sentencias se visualiza.
9
posicin de t
0
no existe la cadena seis
d) La funcin Copiar (copy)
Devuelve una cadena de caracteres (subcadena) extrada de una cadena.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 6

Teora Algoritmos y Estructuras de Datos I


Tema 1

Formato:
Copy (s, posicin, nmero)
s
expresin tipo cadena (fuente)
posicin
primer carcter a extraer (tipo entero)
numero
total de caracteres a extraer (tipo entero)
Si posicin es mayor que la longitud de s, se devuelve una cadena vaca; si numero especfica ms
caracteres que los indicados desde posicin, solo se devuelve el resto de la cadena.
Ejemplos:
Ch:= Esta es una cadena muy larga;
Ch2:= Copy (Ch, 1, 18);
Write (Ch2)
Produce la cadena de caracteres Esta es una cadena
e) Funcin de conversin a maysculas (Upcase)
Permite cambiar letras minsculas a maysculas. La funcin Upcase toma un argumento de tipo char
y devuelve la correspondiente equivalencia en maysculas de la expresin. Si la expresin ya est en
maysculas o no tiene ningn carcter mayscula equivalente (nmeros, smbolos, etc), se devuelve
el carcter sin modificar.
Formato:
Upcase (s)
s
expresin de tipo char
Ejemplo: Upcase (a) devuelve

f) Funcin de conversin a minuscula (Lowercase)


Permite cambiar letras maysculas a minscula.
Formato:
lowercase (s)
s
expresin de tipo char
Ejemplo: lowercase (A)

devuelve

g) El procedimiento Delete
Borra o elimina borra uno o varios caracteres de una cadena a partir de una posicin dada.
Formato:
Delete (s, posicin, nmero)
s
cadena original o fuente.
posicin expresin entera que indica la posicin del primer carcter a suprimir.
Numero cantidad de carcter a suprimir (expresin entera)
Si posicin es mayor que la longitud de la cadena, no se borra ningn carcter. Si numero especifica
ms caracteres que los existentes desde la posicin inicial hasta el final de la cadena, solo se borran
tantos caracteres como estn en la cadena.
Ejemplo:
cad1:= computadora
Delete (cad1, 6, 6)
Delete (cad1, 1, 5)

proporciona la cadena compu.


proporciona la cadena tadora .

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 7

Teora Algoritmos y Estructuras de Datos I


Tema 1

h) El procedimiento insertar (insert)


Inserta una subcadena en una cadena.
Formato:
Insert (Cad1, s, posicin)
Cad1
cadena a insertar
S
cadena donde se inserta
Posicin
posicin a partir de la cual se inserta
Ejemplo:
NomApellido:= Juan Esteban Fernandez;
Insert (Garcia , NomApellido, 14); devuelve la cadena Juan Esteban Garcia Fernandez
Al insertar texto en una cadena y resultar ms caracteres de los que pueda contener, se trunca la
cadena a su longitud mxima.
i) Procedimientos de conversin: nmeros/cadenas
Recordemos que un nmero y su cadena equivalente no son intercambiables. En otras palabras, el
entero 65 y la cadena 65 son dos datos diferentes.
Pascal incorpora dos procedimientos (Str y Val) que permiten convertir datos numricos a datos tipo
cadena y viceversa.
Str
Este procedimiento efecta la conversin de un valor numrico en una cadena.
Formato:
str (valor, s)
valor expresin numrica
s
cadena
Ejemplos:
Numero := 486.45;
Str (Numero, Ch);
Writeln (Ch);
el resultado de estas tres instrucciones es la cadena de caracteres 486.4.
Val
Convierte una cadena de caracteres en variable numrica. Para que esta conversin sea efectiva, el
contenido de la cadena de caracteres debe corresponderse a las reglas de escritura de nmeros:
ningn blanco debe existir en primera o en ltima posicin.
Formato:
val (s, variable, cdigo)
variable
cadena equivalente numrica de tipo entero o real.
cdigo
si la conversin fue exitosa, toma el valor cero; en caso contrario
contiene la posicin del primer carcter de la cadena s que impide la
conversin y en ese caso variable no queda definida.
Ejemplos:
Ch := 23.7
Val (Ch, Nombre, Codigo);
if Codigo = 0
then writeln (Nombre, , Codigo)
else writeln (Codigo)
El resultado de la ejecucin de estas instrucciones es: 23.7
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 8

Teora Algoritmos y Estructuras de Datos I


Tema 1

Por el contrario, si se sustituye Ch por Ch:= 23x.7, la ejecucin producir la visualizacin de 3


(posicin del carcter x).
Reglas:
Para que las conversiones numricas sean validas, una cadena debe cumplir estas condiciones:
1. Debe contener un nmero entero, real o en notacin cientfica.
2. No debe contener blancos, caracteres alfabticos u otros no utilizados en representacin
numrica. E, de notacin cientfica, es una excepcin.
43
-3.42

vlido
vlido

4x3
-3.42

no vlido (incluye un carcter no numrico)


no vlido (incluye un carcter blanco)

Otras propiedades de las cadenas


Adems de las ya analizadas propiedades fundamentales de los datos tipo string (cadenas) se pueden
considerar otras caractersticas complementarias que es necesario tener presente a la hora de
realizar una buena programacin de las cadenas. Algunas caractersticas ya han sido tratadas
anteriormente, pero se vuelven a analizar para reforzar su importancia en el tratamiento de cadena.
Cadena nula o vaca.
Compatibilidad de datos tipo char y string.
Cadena nula o vaca.
Una cadena puede tener longitud cero, es decir, no contiene ningn valor. En este caso se
denominara cadena vaca o nula. La cadena nula se representa con dos comillas juntas ().
Ejemplo.
if cad =
then Writeln (la cadena cad no contiene nada)
La cadena vaca se suele utilizar para inicializar variables de tipo string y asegurarse de que no
contiene un valor no deseado. Esta operacin se realiza normalmente cuando no se le asigna un
valor inicial a dichas variables mediante la sentencia de asignacin o sentencia read.
Compatibilidad de char y string
Los caracteres (char) y cadenas (string) no son totalmente compatibles. En particular, si la asignacin
de un carcter a una cadena de caracteres es posible, la cadena tendr entonces una longitud de 1.
Var
Direccin: string [30];
Letra
: char;
.
Readln (Letra);
Direccin : = Letra;
Por el contrario, la asignacin de una cadena de caracteres, incluso de longitud 0 1, a una variable
de tipo carcter no est autorizada. La siguiente asignacin no es vlida.
Var
Direccin: string [30];
Letra
: char;
..
Direccin: = 4;
Letra : = direccin
{asignacin no vlida}
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 9

Teora Algoritmos y Estructuras de Datos I


Tema 1

Ejemplo: Escribir un algoritmo que lea una frase ingresada por teclado y cuente el nmero de
palabras que contiene. Considere que la frase termina con un punto final.
ALGORITMO Cuentapalabras
VARIABLES
STRING[60] : vs_frase
ENTERO : i, va_contador, va_longitud
INICIO
ESCRIBIR Ingrese Frase
LEER vs_frase
va_contador := 0
va_longitud := LENGTH(vs_frase)
PARA i DESDE 1 HASTA va_longitud
SI vs_frase [i] == OR vs_frase [i] == . ENTONCES
va_contador = va_contador + 1
FIN-SI
FIN-PARA
ESCRIBIR El numero de palabras que contiene la frase es , va_contador
FIN
Codifique el seudocdigo en Pascal y verifique su correcto funcionamiento ingresando una frase y
compruebe que la cantidad de palabras que se muestra como resultado sea igual a la cantidad de
palabras de la frase ingresada.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 10

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Registros y Archivos
En las secciones 1 a 3 se brinda una sntesis de los principales conceptos referidos al almacenamiento
de datos en archivos. En la seccin 4, se detallan los conceptos referidos al procesamiento de
archivos utilizando el lenguaje de programacin Pascal, en la seccin 5 los conceptos referidos a la
estructura de datos Registros, y en la ltima seccin se presentan ejemplos de programas en Pascal
que realizan el procesamiento de informacin utilizando archivos y registros.
1. Conceptos bsicos
En la actualidad, para poder cumplir con sus objetivos, cualquier empresa u organizacin necesita
almacenar y manejar grandes cantidades de datos. Por ejemplo, se necesitan los datos de los
empleados, de los clientes, de los proveedores, de los productos almacenados, etc.
La utilizacin de las computadoras en la administracin de las empresas ha cambiado el concepto de
almacenamiento y gestin de sus datos, dando lugar al uso de los denominados archivos
informticos y bases de datos.
En el contexto informtico, un archivo es cualquier informacin permanente que se almacena de
cualquier forma en algn dispositivo de almacenamiento secundario, que es tratado como una
unidad por el sistema operativo. Este incluye rdenes tales como crear, copiar y borrar archivos.
Normalmente a cada fichero o archivo se le asocia un nombre y una extensin que lo identifica y
diferencia del resto. Otros datos importantes asociados al archivo son la fecha y hora de creacin y
actualizacin, el tamao, permisos de acceso, etc. Ejemplo: en la figura siguiente se muestra distintos
tipos de archivos y los valores de sus atributos.

Los archivos pueden contener distintos tipos de informacin: datos, instrucciones de programas,
imgenes, sonido, informacin de control, etc. Nuestro inters en este tema son los archivos de
datos. Los datos no se guardan en una computadora al azar, sino que se estructuran y planifican de
forma adecuada, segn un determinado formato. Esta tarea es realizada habitualmente por analistas
y programadores.
2. Archivos de datos
Desde el punto de vista lgico, los archivos de datos suelen dividirse en unidades lgicas llamadas
registros, que a su vez se dividen en campos. Entonces, podemos decir que:
Un archivo o fichero es una estructura de datos que reside en memoria secundaria, consistente en
un conjunto de informacin del mismo tipo, agrupada en unidades de acceso denominadas registros.
Ejemplos de archivos:
Archivo de historias clnicas de pacientes de un hospital
Archivo de empleados de una empresa
Archivo de datos meteorolgicos de una localidad
Archivo de libros de una biblioteca
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 1

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Un registro lgico o simplemente registro es cada uno de las componentes del archivo, que contiene
el conjunto de informacin correspondiente a cada elemento individual, que se accede y se trata de
manera unitaria. Est constituido por uno o ms elementos denominados campos.
Ejemplos de registros:
La informacin contenida en la historia clnica de un paciente de un hospital
Los datos referentes a un empleado determinado
Los datos meteorolgicos de un da
Los datos referidos a un libro
Un campo es un conjunto de caracteres que constituye un dato del objeto o entidad cuya
informacin se almacena.
Ejemplos de campos:
El nombre del paciente, su edad, cada uno de sus sntomas, etc.
El nombre del empleado, fecha de alta en la empresa, puesto que ocupa, nmero de
legajo, etc.
Temperatura mxima, fecha, temperatura mnima, humedad, cdigo de identificacin de
la estacin meteorolgica, etc.
Autor, editorial, nmero de pginas, ao de edicin, etc., de un libro
En un campo se deben establecer tres caractersticas:

Nombre del campo: permite rotular el mismo.

Tipo de campo: indica qu tipo de dato contiene (alfabtico, numrico, alfanumrico, etc.)

Tamao del campo: cantidad de caracteres que puede almacenar.

En la figura 7.1 se muestra un ejemplo de registros y campos.

Figura 7.1. Ejemplo de registros y campos


Campo clave:
Un registro puede tener un campo clave, cuyo valor sirve para identificar de forma nica al registro,
y, por tanto, dicho valor no puede aparecer repetido en otro registro. Ejemplos: DNI cuando se trata
de personas, Libreta Universitaria en el caso de los alumnos, N de legajo para los empleados.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 2

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Puede suceder que un archivo no tenga campo clave en sus registros o, por el contrario, que tenga
varios, denominndose a la principal clave primaria y a las dems secundarias. Ejemplo: Un archivo
puede tener como clave primaria el DNI y como clave secundaria el N de Libreta Universitaria.
Tambin el apellido podra ser una clave secundaria pero en este caso no habr una identificacin
nica, si el acceso a los datos es por Apellido se mostrarn, por ejemplo, todos los alumnos de
apellido Romero.
Claves simples y claves compuestas:
Una clave simple est formada por el valor de un solo campo. Ejemplo: Nro.Empleado. Una clave
compuesta, est formada por ms de un campo, por ejemplo, Cdigo de Localidad y Nro. Empleado.
Las claves se pueden utilizar para la localizacin rpida de los registros en archivos con determinadas
organizaciones.
La figura 7.2 muestra la estructura de un archivo correspondiente a una aplicacin de control de
impuestos y multas de trfico. Se puede apreciar la jerarqua de los componentes: el archivo
comprende a los registros, los registros a los campos y los campos a los caracteres. Cada carcter se
relaciona con el byte almacenado.

Archivo de control de impuestos y multas de trfico


Clave
Matrcula
Coche

Marca

CRX007 Ford
RVR827 Renault
BKV950 Fiat

CHK110 Peugeot

0100 0011
0100 1000
0100 1011
0011 0001
0011 0001
0011 0001

Modelo

Megane
Clo
Uno

605

Propietario

Cristina
Jos
Mara

Marta

Domicilio

Pago Impuesto Cantidad de


Municipal
Multas

Junn 89
Lavalle 23
Brasil 123

Per 890

SI
NO
SI

SI

3
1
1

Total
Deuda

70
125
50

37

Campos

BYTES

Registros

Figura 7.2. Estructura de datos de un archivo


Registro fsico
Un registro fsico o bloque corresponde a la cantidad de informacin que se transfiere fsicamente
en cada operacin de acceso (lectura o escritura) sobre el exterior. Cuanto mayor sea el tamao del
bloque, menor ser el nmero de accesos al dispositivo necesarios para procesar el archivo, lo que se
traduce en una mayor velocidad de proceso.
Conviene separar claramente los conceptos de registro lgico y registro fsico, diferencindose en
que el tamao y formato del registro lgico los define el programador mientras que el tamao del
registro fsico viene dado por las caractersticas fsicas del soporte fsico utilizado (disco, unidad de
cinta, etc.).
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 3

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

En general, un bloque tendr capacidad para contener uno o ms registros, pero tambin puede
ocurrir que un registro ocupe ms de un bloque.
En el primer caso se habla de registros bloqueados, denominndose factor de bloqueo al nmero de
registros lgicos que contiene cada registro fsico, y se denominan registros expandidos a aquellos
que ocupan ms de un bloque.
La lectura de un archivo con registros bloqueados transfiere a la memoria central varios registros a la
vez, pero para leer un registro expandido ser necesario realizar ms de un acceso.
La figura 7.3 muestra como los registros fsicos contienen a los registros lgicos y estos a su vez,
contienen a los campos (C1, C2,, Cn).
En este grfico los registros fsicos estn separados por un espacio interegistro (IRG).
I
R
G1

C1

C2

Reg. 1

Cn
Reg. 2

Reg. 3

I
R
G

Reg. 1

Reg. 2

Reg. 3

Registro Fsico
Registro Fsico
Figura 7.3. Esquema lgico de un archivo (en el ejemplo el factor de bloqueo es 3)
Se denomina Factor de bloqueo a la cantidad de registros lgicos que se pueden guardar en un
registro fsico y se calcula de la siguiente manera:

Factor de bloqueo = Tamao del sector / Longitud del registro lgico


El factor de bloqueo es el resultado truncado (sin decimales) de la divisin. Por ejemplo, si el registro
fsico es de 512 y la longitud del registro es 50 bytes, del resultado 10,24 se toma solamente 10.
La importancia del factor de bloqueo se puede apreciar mejor con un ejemplo. Se tienen 2 archivos:
Archivo1: Factor de bloqueo 1 (un registro en cada bloque)
Archivo2: Factor de bloqueo 10 (10 registros en cada bloque)
Si cada archivo tiene un milln de registros, el archivo 1 requerir un milln de accesos mientras que
el archivo 2, solamente 100.000 operaciones de entrada-salida. Considerando que una PC puede
tener un tiempo medio de accesos de 90 milisegundos, el archivo 1 necesitara 24 hs ms para leer
todos los registros del archivo.

Figura 7.4: Esquema de flujo de datos entre el disco y la RAM


1

IRG: Inter Register Gap (Intervalo Entre Registros)

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 4

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Ejemplo de clculo de espacio de almacenamiento:


Un video club tiene registrada la siguiente informacin de sus pelculas, grabada en un disco de 512
bytes por sector:
Cod.Pelcula
(4 bytes)

Ttulo
(30 bytes)

Gnero
(10 bytes)

Stock
(2 bytes)

Longitud de registro (RL): 4 + 30 + 10 + 2 = 46


Factor de bloqueo (FB) = Tamao del sector / longitud registro = 512/46 = 11, 13 11
Si tuviera 1000 ttulos de pelculas, cunto espacio real se necesita para almacenar la informacin?
Cantidad de registros fsicos: Cantidad de RL / FB = 1000/11 = 90,90 91
Espacio real: Cant.RF x tamao RF = 91 x 512 bytes = 46592 bytes
Se puede comprobar que, debido a las caractersticas de los dispositivos de almacenamiento, en este
caso un disco rgido, el tamao real de almacenamiento es mayor que la cantidad de bytes que
resulta de multiplicar 1000 (cantidad de pelculas) por 46 (tamao del registro lgico).
2.1.

Caractersticas de los archivos

Las principales caractersticas que diferencian esta estructura de datos de las restantes son las
siguientes:
Residencia en soportes de informacin externos, tambin denominados memorias secundarias,
masivas o auxiliares, como son las cintas, discos, CD, DVD.
Independencia respecto de los programas. Significa que la vida del archivo no est limitada por la
vida del programa que lo cre, y tambin que el archivo puede ser utilizado por diferentes
programas.
Permanencia de la informacin almacenada. Es decir, toda la informacin almacenada en la
memoria central desaparece cuando se termina la ejecucin del programa que la maneja, pero
para hacer desaparecer un archivo ser necesario realizar explcitamente una operacin de
borrado.
Gran capacidad de almacenamiento. Tericamente esta capacidad es ilimitada, est en funcin
del soporte de almacenamiento. Por el contrario, las estructuras de datos que residen en la
memoria central tienen limitado su tamao por la capacidad de sta.
2.2.

Clasificacin de los archivos segn su uso

Los archivos se clasifican segn la utilizacin que se hace de ellos en tres grupos:
Archivos permanentes: Contienen informacin que vara poco a lo largo del tiempo:
Archivos constantes: Contiene datos fijos para la aplicacin. Su informacin permanece
prcticamente inamovible, utilizndose principalmente como archivos de consulta. Un ejemplo
puede ser el de la red del metro de una ciudad, que contiene la descripcin, nmero de
estaciones, nmero de trenes, etc., de cada lnea.
Archivos de situacin: Tambin denominados archivos maestros, contienen la informacin que
refleja el estado o situacin de una empresa o entidad, o algn aspecto de ella en un determinado
momento. Estos archivos se actualizan peridicamente para adaptarlos a cada nueva situacin.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 5

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Un ejemplo es el archivo de personal en una empresa, o tambin el archivo de existencias en


almacn.
Archivos histricos: Se obtienen de los anteriores cuando se dejan fuera de uso para futuros
estudios estadsticos o consultas .Ser un archivo histrico el que contiene la informacin de
libros adquiridos por una biblioteca en la dcada de los ochenta o un archivo con los pagos
realizados en los ltimos 5 aos el detalle de comprobantes considerados en un ejercicio
contable ya cerrado.
Archivos de movimientos. En ellos se almacena la informacin que se utilizar para actualizar los
archivos maestros. Sus registros, denominados movimientos o transacciones, pueden ser de tres
tipos: altas, bajas y modificaciones.
Una vez realizado el proceso de actualizacin de un archivo maestro por medio de un archivo de
movimientos, ste pierde su validez y no se necesita conservarlo.
Un archivo de este tipo para actualizar el antes mencionado archivo de personal, es el que refleja las
nuevas incorporaciones, finalizaciones de la relacin laboral y modificaciones de los mismos
producidas en la empresa durante el mes actual.
Archivos de trabajo. Tienen una vida limitada, normalmente igual a la duracin de la ejecucin de un
programa, y se utilizan como auxiliar de los anteriores. Por ejemplo, si se desea una lista alfabtica
del personal contratado, se har por medio de un archivo de trabajo en el que se almacene esta
informacin a partir del archivo de personal. Este archivo es temporal, desaparecer una vez que se
tenga la lista impresa.
2.3.

Organizacin de archivos

Al disear un archivo, dependiendo del uso que se va a hacer del mismo y del soporte utilizado, se
pueden elegir diferentes maneras de organizar sus registros, siendo las principales organizaciones las
siguientes:
Secuencial
Directa o aleatoria
Secuencial indexada
a) Organizacin secuencial
Es aquella en la cual los registros ocupan posiciones consecutivas y que slo se puede acceder a ellos
de uno en uno a partir del primero.
Por otro lado, para actualizarlos es preciso crear nuevos archivos donde se copien los antiguos junto
con las actualizaciones.
Este tipo de organizacin es adecuada en los casos en que cada proceso debe acceder a la mayor
parte de los registros del archivo.
Como ventaja se puede decir que aprovechan bien el espacio de almacenamiento y son sencillos de
usar.
Esquema lgico de un archivo secuencial
Registro 1

Registro 2

Registro 3
Cabeza de lectura grabacin

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 6

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

b) Organizacin directa o aleatoria.


Los datos se colocan y se acceden aleatoriamente2 mediante su posicin, es decir, indicando el lugar
relativo que ocupan dentro del conjunto de posiciones posibles.
En esta organizacin se pueden leer y escribir registros, en cualquier orden y en cualquier lugar.
Su principal ventaja es la rapidez de acceso a un registro cualquiera, dado que no es preciso pasar
por los registros anteriores ni por reas de ndices.
Esquema lgico de un archivo directo

Posiciones

Registro 2

Registro 1

Registro 3

Cabeza de lectura/grabacin

c) Organizacin secuencial indexada.


Un archivo con esta organizacin consta de tres reas:
rea de ndices
rea primaria o zona de registros
rea de excedentes (overflow)
El rea primaria contendr los registros de datos, clasificados en orden ascendente por su campo
clave. Est dividida en tramos lgicos. Cada tramo est formado por una serie de registros
consecutivos. Por cada tramo de esta zona, hay un registro en la zona de ndices.
El rea de ndices es un archivo secuencial creado por el sistema, en el que cada registro contiene
dos campos: la direccin de comienzo del segmento y la clave ms alta del mismo. De esta manera el
sistema accede de forma directa a un segmento del rea primaria a partir del rea de ndices, de
forma similar a la bsqueda de un captulo de un libro a partir de su ndice.
Por ltimo, se reserva un espacio llamado rea de excedentes, para aadir nuevos registros que no
pueden ser colocados en el rea primaria cuando se produce una actualizacin del archivo. En esta
zona los registros estn desordenados, y cada nuevo registro se escribe al final de sta.
Esta organizacin presenta la ventaja de un rpido acceso. El sistema se encarga de relacionar la
posicin de cada registro con su contenido por medio del rea de ndices. Tambin es trabajo del
sistema la gestin de las reas de ndices y excedentes.
Los inconvenientes que presenta son la necesidad de espacio adicional para el rea de ndices y la
degradacin producida por los sucesivos borrados y desbordamientos, lo que redunda en una gestin
ineficaz. Cuando se llega a este punto, es necesario reorganizar el archivo, es decir, volver a crearlo,
introduciendo los registros secuencialmente segn el valor de la clave.

El nombre aleatorio se debe a que normalmente no existe ninguna vinculacin aparente entre el orden lgico de los
registros y su orden fsico.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 7

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Esquema lgico de un archivo secuencial indexado.


rea de
ndices

rea
Primaria

BB

AA
1

rea de
Excedentes

------

CH

AB
2

------

GM

BB
3

------

CA
4

------

CH
5

------

AC

--- CMZ ------------Ejemplo: lectura del registro cuya clave es Digital


Con la clave Digital se busca primero en la zona de INDICES comparando la clave buscada con la clave de
valor ms alto en cada entrada del ndice. La primera comparacin es Digital y Commodore, como Digital no es
menor, se avanza hasta la siguiente entrada, se compara nuevamente Digital con Hewlet Packard. Como Digital
es menor, direcciona la bsqueda al rea que le corresponde a esa entrada en la zona de REGISTROS. Recorre
secuencialmente desde el primer registro de esa entrada hasta encontrar el registro cuya clave coincide con la
clave de bsqueda (Digital). Recin entonces realiza el procesamiento requerido.

2.4.

Modos de acceso

Se denomina modo de acceso a la forma en que el dispositivo que maneja el soporte se posiciona en
un determinado lugar del mismo para realizar una operacin de lectura o escritura de un registro. El
modo de acceso lo decide el programador de la aplicacin en funcin del soporte utilizado y del tipo
de organizacin.
Hay dos modos bsicos: secuencial y directo.
El acceso secuencial a un registro supone acceder inicialmente al primer registro del archivo y
despus, consecutivamente, a todos los sucesivos hasta llegar al registro deseado. Este modo de
acceso se puede utilizar con cualquier soporte y organizacin.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 8

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

El acceso directo solamente se puede realizar en los soportes direccionables, como los discos
magnticos, y consiste en el posicionamiento sobre cualquier registro sin necesidad de haber
accedido antes a los anteriores.
En los archivos de organizacin directa este acceso se consigue proporcionando al dispositivo la
posicin del registro que se desea acceder. En ocasiones es conveniente programar una funcin de
aleatorizacin o hashing3, la cual permite calcular la posicin de cualquier registro a partir del valor
de su clave.
En los archivos indexados el acceso directo lo realiza de forma automtica el sistema a partir del
valor del campo clave; para ello utiliza un conjunto auxiliar de ndices que relacionan las claves con
las posiciones de los registros.
3. Bases de Datos
La gestin de archivos ha resultado insuficiente para cubrir las necesidades de almacenamiento y
proceso de datos en la actualidad. Los sistemas de informacin de las empresas son cada vez ms
grandes y complejos, y requieren sistemas ms potentes para la gestin de los datos, que sean ms
eficientes y seguros.
Los sistemas de bases de datos pretenden dar solucin a los problemas expuestos mediante la
integracin de los archivos de datos, de su estructura y de las aplicaciones que los manejan.
Una base de datos se define como un conjunto integrado de datos interrelacionados, junto con un
paquete software para su gestin, accesibles simultneamente por diferentes usuarios y programas.
A continuacin, se muestra grficamente un esquema de la jerarqua de almacenamiento.
Base de Datos

Archivos

Registros
Campos
Subcampos
Caracteres

Una funcin hash es un algoritmo de transformacin de la clave del registro a una posicin de almacenamiento concreta
del disco, por ejemplo, si el valor de la clave es 2345 una funcin hash podra consistir en la suma de todos los dgitos de la
clave, o sea, 2+3+4+5 = 14. Este resultado indica la posicin de almacenamiento.
.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 9

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

4. Gestin de archivos
Un archivo es un conjunto de bits con una estructura definida por el programa que los crea y que se
halla almacenado en una memoria secundaria. Esta memoria puede ser disco rgido, una memoria
flash, o unidades de red etc. El encargado de manejar archivos es el sistema operativo, esta
administracin lo realiza por medio de uno de sus componentes el file system o sistema de archivo.
Un archivo es una construccin artificial, as como el concepto de variable. La variable es una
abstraccin que ve plasmado su contenido en una o ms celdas de memoria RAM y un archivo es un
agrupamiento organizado de bloques de memoria secundaria.
4.1. Definicin de Archivo
Un archivo, fichero o file, es una estructura de datos de tipo lgica, compuesta por una secuencia
finita de bytes y almacenada en un sistema de archivos o filesystem, que comnmente reside en una
memoria secundaria.
El Sistema Operativo (SO) es el encargado de interactuar con los archivos, agregando o borrando
informacin, creando nuevos o eliminando los ya existentes. Se les debe asignar:
1. Un nombre: como las variables tienen nombre, los archivos tambin lo tienen y sirven para
identificarlos.
2. Una ruta: los archivos se agrupan en estructuras y directorios (carpetas) dentro de un
sistema de archivos. Los directorios poseen una estructura de rbol, con un nodo raz y
ramificaciones que representan las diferentes carpetas.
La ruta y el nombre identifican de forma inequvoca un archivo dentro de un sistema de archivos.
4.2. Tipos de archivos
Dado que los archivos son construcciones abstractas, la informacin que contienen se debe plasmar
en algn soporte. Como se mencion anteriormente, existen diferentes tipos de archivos, con los
que se pueden realizar las operaciones que se describen.
-

Archivos de datos: es una coleccin de datos localizados en un dispositivo de entrada/salida.

Archivos de programa: es un programa codificado en un lenguaje especfico y localizado o


almacenado en un dispositivo de almacenamiento.

Archivo de texto: es una coleccin de caracteres almacenados como una unidad en un


dispositivo de almacenamiento.
Existen dos modalidades para acceder a un archivo de datos: acceso secuencial y acceso directo o
aleatorio.
- El acceso secuencial exige el tratamiento elemento a elemento y es necesario una
exploracin secuencial, comenzando desde el primer elemento.
-

El acceso directo permite procesar o acceder a un elemento determinado si se referencia


correctamente por su posicin en el soporte de almacenamiento.

4.3. Operaciones con archivos


Entre las operaciones ms usuales que se realizan con archivos se destacan: creacin, copia,
consulta, actualizacin y borrado.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 10

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Creacin: consiste en la escritura o grabacin en un soporte determinado de todos los registros que
van a conformar el archivo. Los datos pueden ser introducidos por teclado, proceder de otro archivo
o ser obtenidos como resultado de algn proceso.
Copia: es una de las operaciones ms usadas y consiste en crear un archivo nuevo como duplicacin
de otro existente. La copia se puede realizar en el mismo soporte de informacin o en otro diferente.
Un caso particular de esta operacin es la impresin (copia en impresora) de un archivo.
Consulta: se realiza para obtener el contenido de unos o varios registros. En muchos casos va
precedida de una bsqueda de los mismos. Por ejemplo, si se desean conocer todos los datos de un
alumno, almacenados en un archivo de alumnos, se har mediante un programa de entrada, que
ser utilizado para realizar la bsqueda y sacar por pantalla o por impresora el resto de campos
almacenados en el registro correspondiente a ese nmero de matrcula.
Actualizacin: es la modificacin de un archivo de situacin por medio de un archivo de
movimientos, conteniendo altas, bajas y modificaciones que hay que realizar sobre el archivo
maestro para ponerlo al da.
Borrado: es la eliminacin total del archivo cuando ya no se necesite, dejando libre el espacio de la
memoria que ocupaba en el soporte utilizado.
4.4. Los archivos y el compilador
Todos los archivos con que trabaja el compilador, con independencia de su tipo, comparten algunas
caractersticas comunes:
-

Todos los archivos se utilizan como entrada /salida.

El SO almacena y accede a archivos, genera directorios, copia, renombra y transfiere archivos


entre discos, memoria y dispositivos de E/S (modem, impresora etc.).

Los archivos se pueden almacenar en unidades de discos duros. Existen otros dispositivos de
almacenamiento, por ejemplo memoria de estado slido, discos pticos, cintas, etc. Aunque
son menos frecuentes.

Independientemente de la forma en que se almacenen en el sistema de archivos, para el compilador


los archivos se representan mediante variables y estas pueden ser de tres tipos: archivos de texto,
archivos con tipos o tipeados y archivos sin tipos o no tipeados.
En Pascal existen tres tipos de archivos con los que puede trabajar el compilador:
-

Archivos de texto (text) o secuenciales: son los archivos de acceso secuencial, que contienen
texto normalmente codificado con caracteres ASCII.

Archivos con tipos: son archivos de acceso aleatorio, que contienen datos de cualquier tipo
definido en el lenguaje, por ejemplo, integer, byte, real, datos con estructuras y contenidos
conocidos, almacenados en forma de binario.

Archivos sin tipo: Son archivos en los que no se conoce su estructura ni su contenido; estn
concebidos para el acceso de bajo nivel a los datos de un disco y las operaciones de E/S se
hacen por bytes, es decir datos binarios sin una estructura fija, que luego se pueden
transformar a enteros, reales etc., por medio de operaciones especficas.

En esta asignatura se realizar el tratamiento de los archivos de texto y los archivos con tipos,
solamente.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

A los archivos de texto estndar se los suele agregar la extensin .txt; y a los archivos tipeados la
extensin .dat que es la ms utilizada. Los que no poseen extensiones especficas para los archivos
creados por el usuario son los archivos no tipeados, de contenido binario.
Casi con independencia del trabajo que se requiera hacer con los archivos, existe una serie de pasos
que se repiten para todos los casos y son:
a) Declarar el archivo.
b) Asignar el archivo.
c) Abrir el archivo.
d) Leer o escribir datos de l, o en el (o realizar cualquier proceso).
e) Cerrar el archivo.
El orden de los pasos es importante ya que por ejemplo no se pueden leer datos del archivo si ste
no fue abierto previamente para la lectura.
a) Declaracin de archivos
Archivos de texto
Archivos tipeados
Archivos no tipeados

Declarado como Type


T_id = file of text;
T_id = file of t_dato;
T_id = file;

Declarado como Var


Var_id : file of text;
Var_id : file of t_dato;
Var_id : file;

La declaracin de los archivos es similar a la declaracin de variables enteras, booleanas o de


cualquier otro tipo, pero el paso siguiente es diferente.
La operacin de asignacin relaciona un archivo que se encuentra fsicamente ubicado en el file
system del sistema operativo con una variable del compilador. Esta relacin es importante ya que
no solo es el compilador el que necesita entender la estructura de los archivos, sino tambin el
Sistema Operativo.
b) Asignacin de archivos
La operacin de asignacin de un archivo establece una correspondencia entre una variable tipo
archivo con un archivo externo situado en un sistema de archivos. Desde otro punto de vista, esto es
asignarle un alias (otro nombre) por el cual se llamara el archivo en cuestin por el compilador.
Para realizar la asignacin, se invoca al procedimiento assing que toma dos parmetros que son: el
nombre de la variable que representara al archivo en el programa y la ruta del mismo:
Assing (variable_archivo, ruta archivo)
Ejemplo:
Assign (archivoejemplo, C:\Users\facena\Documents\ArchivoEjemplo.txt);
c) Apertura de archivos
La operacin de abrir un archivo establece los permisos con los que se quiere abrir, adems informa
al sistema operativo que dicho archivo ser utilizado por una aplicacin y por lo tanto no ser
eliminado o movido mientras est abierto. Adems, si el archivo no existe, ser el sistema operativo
quien informar al compilador cuando este intente abrir el archivo.
Pascal dispone de tres mtodos para abrir archivos:
-

Reset: abre un archivo para leerlo o escribirlo. Si el archivo no existe da un error de E/S.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 12

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Rewrite: Crea un archivo para leerlo o escribirlo. Si el archivo invocado no existe, lo crea. Si el
archivo existe lo sobreescribe, perdiendo la informacin contenida.

Append: Agrega informacin al final de un archivo existente. Si el archivo no existe, da un


error de E/S.

Los tres procedimientos toman como parmetro a la variable que representa el archivo. Ejemplo:
Reset (ArchivoEjemplo); o Rewrite(ArchivoEjemplo); o Append(ArchivoEjemplo);
d) Lectura/escritura de archivos
Una vez que el archivo este abierto se pueden realizar operaciones de lectura y escritura en el
mismo. Los procedimientos para escribir sobre un archivo son write, rewrite y writeln (para archivos
de texto).
Ejemplo
Var
Texto :
ArchiTexto:
begin

string [100];
text;

assign (ArchiTexto,c:\prueba.txt;
append (ArchiTexto);
Texto:= Informatica: Conjunto de conocimientos cientficos y tcnicas que hacen
posible el tratamiento automtico y racional de la . ;
Writeln (ArchiTexto, Texto);
Close (ArchiTexto);
end
Los procedimientos para la lectura de datos deben realizar la misma redireccin y se utilizan los
procedimientos read y readln.
Ejemplo
Var
TextoLeido
:
string [100];
ArchiTexto:
text;
Begin
assign (ArchiTexto, c:\prueba.txt;
reset (ArchiTexto);
readln (ArchiTexto, TextoLeido);
writeln (TextoLeido);
end
De esta manera quedan almacenados en la variable TextoLeido los caracteres almacenados en el
archivo ArchiTexto.
e) Cerrar archivos
Cuando un programa termina las operaciones de entrada o salida sobre el archivo hay que cerrarlo
llamando al procedimiento CLOSE(nombre_variable_tipo_archivo). No hacerlo puede implicar la
prdida de datos as como tambin la no actualizacin apropiada del directorio en el disco.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 13

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

4.5. Archivos de texto:


Los archivos de texto o texto plano, son un tipo estndar de datos en Pascal y estn constituidos
por caracteres del cdigo ASCII. El nombre texto plano es porque no poseen informacin adicional
para dar formato a esos datos, por ejemplo, tipo letra, tamao, negrita, etc.
Para declarar un archivo de texto:
Type
T_Texto = file of text;
Var
Archivo : T-texto
Un archivo de texto consta de una serie de lneas separadas por una marca de fin de lnea o eol (end
of line). Esta marca de fin de lnea se obtiene cuando se realiza la pulsacin de la tecla Enter.
Ejemplos de archivos de texto plano son el archivo que contiene un programa fuente codificado en
Pascal (extensin .pas), las pginas web (extensin .html).
Convencin de nombres para archivos de texto: Si bien no existe una extensin especfica para este
tipo de archivo, est generalizado el uso de la extensin .txt.
Los archivos de textos se crean con cualquier editor de texto, bloc de notas, WordPad. O desde Word
y Excel, indicando expresamente al guardar el archivo que ser de tipo texto.
Un ejemplo de escritura y posterior lectura en este tipo de archivo se mostr en el punto 4.4.d.
4.6. Archivos con tipos:
Los archivos con tipo o tipeados, son un tipo estndar de datos en Pascal que se caracterizan
porque el compilador almacena, en forma codificada, tipos de datos estndares o creados por el
usuario. De esta manera, se puede generar un archivo que almacene un registro creado por el
usuario que posea, por ejemplo, nombre, direccin y telfono, o un archivo que posea nmeros
reales.
Para declarar un archivo de texto:
Type
T_Archivo = file of T-Registro; {* T_registro esta definido *}
Var
Archivo : T_Archivo
A diferencia de los archivos de texto, los archivos con tipo no estn separados por lneas, sino que
rige la divisin lgica de los elementos que lo componen (los tipos de datos). Adems, el contenido
est codificado y es difcil abrirlo con otras aplicaciones que no sean el mismo compilador o las
aplicaciones que se crean con l.
Los archivos con tipo son estructuras de acceso aleatorio. Son ms rpido para la transferencia entre
la memoria y el disco y son, por tanto, el tipo ms adecuado para realizar tareas de bsqueda,
ordenamiento, modificacin de datos, etc.
Convencin de nombres para archivos de texto: No existe una convencin de nombre pero, en
general, se usa la extensin .dat para representar a los archivos que almacenan datos cuyo contenido
no puede ser utilizado por cualquier aplicacin.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 14

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

4.7. Comparacin de los tipos de archivos:


Archivo de texto (.txt)

Archivo con tipo (.dat)

Acceso

Secuencial

Aleatorio

Composicin

Compuesto por caracteres


individuales

Compuesto por distintos tipos de datos

Estructura

Esta separado por lneas (carcter


de fin de lnea generado por la
tecla Enter) y una marca de fin de
archivo

Los datos pueden ser accedidos


individualmente de acuerdo a su tipo

Lectura/escritura

Readln/Writeln

Read / Write

Compatibilidad

Puede ser utilizado por distintas


aplicaciones para intercambiar
datos

Solo el programa que genero el archivo


conoce el formato con el que se
almacenan los datos

Principales usos

Almacenar texto, listados,


pginas web, escritura de cdigo
fuente, etc.

Datos propietarios de las aplicaciones,


registros de datos propietarios,
archivos de configuracin, etc.

4.8. Funciones para realizar operaciones sobre archivos:


Nombre

Descripcin

Read (arch, vari)

Lee datos de un archivo con tipos (arch) y lo almacena en una variable (vari).

Write(arch, vari)

Escribe sobre un archivo con tipos (arch) los datos almacenados en una
variable (vari).

Readln (archi, vari)

Idem Read para archivos tipo texto.

Writeln (archi, vari)

Idem Write para archivos tipo texto.

Eof(arch)

Devuelve Verdadero cuando se encuentre posicionado en el final del archivo,


caso contrario devuelve Falso.

Eol(archi)

Devuelve Verdadero cuando se encuentre posicionado en el final de una lnea


en un archivo de texto y devuelve Falso, caso contrario.

Seek(arch,pos)

Se ubica en una posicin (pos) dentro de un archivo aleatorio (tipo .dat).

Reset (arch)

Abre el archivo para lectura/escritura de un archivo existente.

Rewrite(arch)

Abre el archivo para lectura/escritura de un archivo no existente,


sobreescribiendo, en caso contrario.

Append(archi)

Abre el archivo para escritura de un archivo secuencial existente.

Sizeof(archi)

Determina el tamao de una variable cualquiera, pudiendo ser esta un


archivo, un registro, un vector, etc.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 15

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

5. Tipo de dato REGISTRO


Tal como se mencion en el tema 4, los datos se clasifican en simples y compuestos. Dentro de estos
ltimos se encuentran los tipos de datos cadenas, registros y arreglos. Los registros estn vinculados
a los archivos con tipos, dado que permiten el procesamiento de datos estructurados.
Una estructura que permite almacenar diferentes tipos de datos bajo una misma variable se
denomina registro. Podra decirse que un registro es un contenedor de diferentes tipos de datos.
Un registro se declara con la palabra reservada registro o record y esto se hace utilizando los mismos
pasos necesarios para utilizar cualquier variable. Primero se declara el registro y a continuacin se
asignan valores a los miembros o elementos individuales del registro o estructura.
Sintaxis:
TIPO
REGISTRO: nombre_tipo
tipo_1: campo1
tipo_2: campo2
FIN_ REGISTRO
La declaracin anterior reserva almacenamiento para los elementos de datos individuales
denominados campos o componentes del registro.
Por ejemplo, un registro de un empleado de una empresa que contiene los siguientes campos:
TIPO
REGISTRO: empleado
cadena[25]: nombre
entero: legajo
real: salario
entero: antigedad
FIN_ REGISTRO
En donde Empleado se define como un dato de tipo registro cuyos elementos son los campos
nombre, legajo, salario, antigedad. El identificador de campo debe ser nico en un registro. El tipo
de dato puede ser simple o estructurado, es decir, que un campo puede ser un arreglo (array) o
registro (record). La cantidad de campos de un registro debe ser finita.
A continuacin se declara una variable del tipo empleado:
VAR
empleado: v_emp
El acceso a cada campo del registro se realiza individualmente indicando:
Identificador_variable_tipo_record.identificador_de_campo
Por ejemplo: v_emp.nombre para referenciar el campo nombre del registro empleado.
Del mismo modo se puede acceder a otros campos: v_emp.salario, v_emp.antiguedad.
Se puede decir que un REGISTRO (tambin llamado variable compuesta, registro o estructura) se
utiliza para reunir atributos (propiedades) de un ente real o abstracto. Por ejemplo: un libro, un
alumno, una cuenta, etc.
5.1. Utilizacin del tipo RECORD en Pascal:
En Pascal el tipo REGISTRO se declara de la siguiente forma:
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 16

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

TYPE
persona = RECORD
apenom :STRING [20];
DNI
: INTEGER;
domic :STRING [20];
tel
:INTEGER;
altura :REAL;
peso :REAL;
END;
A continuacin se declara una variable que pertenezca al tipo persona:
VAR
v_per: persona;
El acceso a cada elemento del registro se indica con el nombre del campo asociado a la variable de
tipo registro:
v_per . apenom; v_per.DNI
5.2. La sentencia WITH
Para facilitar el acceso a los campos de un registro, la sentencia with permite hacer referencia a los
campos de un registro indicando nicamente el identificador de campo:
Por ejemplo, se define una variable competidor de tipo persona:
VAR
competidor : persona;

donde persona es el tipo definido anteriormente

Supongamos que se quiere realizar las siguientes acciones con los datos:
READLN (competidor.apenom, competidor.DNI, competidor.tel);
competidor.peso := 70;
WRITELN(competidor.apenom, competidor.tel);
La instruccin WITH permite acceder en forma individual a los campos de la variable competidor
indicando slo el nombre de los mismos:
WITH competidor DO
BEGIN
READLN (apenom,DNI,tel);
peso := 70;
WRITELN(apenom,peso);
END
Por lo tanto, la forma de utilizacin genrica es:
WITH identificador_variable_record DO acciones
5.3. Registros anidados
Un campo de un registro puede ser a su vez otro registro. Si consideramos la definicin del tipo
persona de los ejemplos anteriores, puede mejorarse la descripcin y posterior acceso a datos
especficos:
TYPE
documento = RECORD
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 17

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

tipo: STRING[3];
nro: INTEGER;
END;
domicilio = RECORD
calle
:STRING[25];
nro
:INTEGER;
codpos :INTEGER
END;
TYPE
persona = RECORD
apenom :STRING [20];
DNI
:documento;
domic :domicilio;
tel
:INTEGER;
altura :REAL;
peso :REAL;
END;
VAR
v_per: persona;
domic: domicilio;
DNI: documento;
Si se quieren informar todos los datos almacenados en las variables v_per, domic y DNI, la sentencia
WITH puede utilizarse para facilitar la escritura, tal como se muestra a continuacin:
WITH v_per DO
BEGIN
WRITELN (apenom)
WITH DNI DO
WRITELN (tipo, nro);
WITH domic DO
WRITELN (calle, nro, codpos);
WRITELN (tel);
WRITELN (peso);
END;
Observe que dos campos de distintos registros pueden tener el mismo nombre. Esto no genera
conflicto porque refieren a distintas posiciones de memoria.
6. Ejemplos de utilizacin de archivos y registros en Pascal:
En la asignatura Algoritmos y Estructura de Datos II se profundizarn el estudio de los distintos tipos
de archivos y las operaciones que ellos permiten (recuperacin, actualizacin, borrado, insercin,
etc.). En esta asignatura se tratar solamente la escritura y lectura de archivos de textos
secuenciales y de archivos con tipos.
A continuacin se mostraran ejemplos de utilizacin de archivos con tipo (extensin .dat) y el uso de
la estructura registros en Pascal.
1- Programa para crear un archivo alumno.dat
PROGRAM CrearArchivo;
uses wincrt, crt;
usar el clrscr}

{librera crt necesaria en free pascal para

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 18

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

type
tr_alumno = record
lu
:integer;
nombre
:string[30];
edad
:integer;
estatus
:char;
end;
tf_alumno = file of tr_alumno;
var
vr_alumno: tr_alumno;
vf_alumno: tf_alumno;
begin
clrscr;
{limpia la pantalla}
assign(vf_alumno,'d:\alumnos.dat');
{relaciona archivo lgico
con archivo fsico 'alumnos.dat'}
rewrite(vf_alumno);
{borra todos los datos del archivo si
ya existiese, de lo contrario lo crea}
close(vf_alumno);
{cierra apropiadamente el archivo}
write('archivo de alumnos creado');
readln;
end.
2- Programa para cargar datos en un archivo alumno.dat
PROGRAM GrabarArchivo;
uses wincrt, crt;
TYPE
tr_alumno = RECORD
LU
: INTEGER;
nombre
: STRING[30];
edad
:INTEGER;
estatus :CHAR;
END;
tf_alumno = FILE OF tr_alumno;
VAR
vr_alumno: tr_alumno;
vf_alumno: tf_alumno;
va_opcion: CHAR;
BEGIN
CLRSCR;
ASSIGN (vf_alumno,'d:\alumnos.dat');
RESET(vf_alumno);
{permite abrir archivo para lectura/escritura}
SEEK(vf_alumno,FILESIZE(vf_alumno)); {mueve apuntador al final
del archivo existente }
WRITELN('Desea cargar los datos de un alumno? (s/n)');
READLN(va_opcion);
WHILE (va_opcion <> 'n') and (va_opcion <> 'N') DO
BEGIN
WRITELN('Ingrese LU : ');
READLN(vr_alumno.LU);
WRITELN('Ingrese nombre : ');
READLN(vr_alumno.nombre);
WRITELN('Ingrese edad : ');
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 19

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1
READLN(vr_alumno.edad);
* asigna estado Activo al campo status del registro*)
vr_alumno.estatus :='A';
WRITE(vf_alumno, vr_alumno); {graba registro vr_alumno
archivo vf_alumno}
WRITELN('NUEVO REGISTRO INSERTADO');
WRITELN;
WRITELN('Desea cargar los datos de un alumno? (s/n)');
READLN(va_opcion);
END;
(* cerrando archivo y avisando *)
CLOSE(vf_alumno);
WRITELN('ARCHIVO CERRADO');
READLN;
END.

en

3- Programa para leer un archivo alumno.dat


PROGRAM LeerArchivo;
uses wincrt, crt;
TYPE
tr_alumno = RECORD
LU
:INTEGER;
nombre
:STRING[30];
edad
:INTEGER;
estatus :CHAR;
END;
tf_alumno = FILE OF tr_alumno;
VAR
vr_alumno: tr_alumno;
vf_alumno: tf_alumno;
BEGIN
CLRSCR;
ASSIGN (vf_alumno,'d:\alumnos.dat');
RESET(vf_alumno);
(* ciclo de lectura y despliegue registro *)
WHILE NOT(EOF(vf_alumno)) DO {mientras no sea fin de archivo }
BEGIN
READ(vf_alumno,vr_alumno); {lee el registro vr_alumno
desde el archivo vf_alumno}
(* muestra los alumnos Activos *)
IF vr_alumno.estatus = 'A' THEN
BEGIN
WRITE('LU : ');
WRITELN(vr_alumno.LU);
WRITE('nombre : ');
WRITELN(vr_alumno.nombre);
WRITE('edad : ');
WRITELN(vr_alumno.edad);
WRITELN;
END;
END;
CLOSE(vf_alumno);
END.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 20

Teora Algoritmos y Estructuras de Datos I - 2012

Arreglos
1. Introduccin a las estructuras de datos
Tal como se mencion en el tema 4, los datos se clasifican en simples y compuestos.
Los tipos de datos simples o primitivos son aquellos que no estn definidos en trminos de otros
tipos de datos. Se denominan primitivos tambin porque son los tipos de datos originales que
proporcionan la mayora de los lenguajes de programacin. Tienen como caracterstica comn que
cada variable representa un valor de dato nico. Los tipos de datos simples estndar son: entero,
real, carcter, lgico.
Los tipos de datos compuestos o estructurados estn construidos en base a los tipos de datos
primitivos. Tienen como caracterstica comn que un identificador (nombre) puede representar
mltiples datos individuales, pudiendo cada uno de stos ser referenciado independientemente.
Dentro de estos se encuentran los tipos de datos cadenas, registros y arreglos, que son tratados en
esta asignatura.
Las estructuras de datos compuestas pueden clasificarse teniendo en cuenta diferentes
caractersticas.
Segn el tipo de los datos que las forman, se puede distinguir entre:
-

Estructuras homogneas: Si los datos que las componen son todos del mismo tipo.

Estructuras heterogneas: Si los datos que las componen son de distinto tipo.

Si se tiene en cuenta la cantidad de espacio de memoria utilizado por la estructura durante la


ejecucin del programa, se pueden clasificar en:
-

Estructuras estticas: cuando la cantidad de elementos que contienen es fija, es decir, el


tamao ocupado en memoria se define antes de que el programa se ejecute y no puede
modificarse dicho tamao durante la ejecucin del programa.

Estructuras dinmicas: cuando el nmero de componentes y, por lo tanto, la cantidad de


memoria, pueden variar durante la ejecucin de un programa (este tipo de estructura no se
contempla en esta asignatura).

La siguiente tabla resume los tipos de datos simples y estructurados ms frecuentes utilizados en los
diferentes lenguajes de programacin.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 1

Teora Algoritmos y Estructuras de Datos I - 2012

entero(integer)
estndar

real (real)
carcter (char)

Datos Simples o Primitivos

lgico (boolean)
definido por el programador
(no estndar)

subrango (subrange)
Enumerativo (enumerated)
Arreglos (vectores/matrices)

estticos

registro (record)
cadenas (string)
conjuntos (set)

Datos Estructurados o
Datos compuestos

listas (pilas/colas)
dinmicos

listas enlazadas
rboles y grafos
ficheros (archivos)

En este tema estudiaremos la estructura esttica de variables del mismo tipo denominada arreglo.
2. Arreglos
Un arreglo es un conjunto finito y ordenado de elementos homogneos.
-

Es finito porque se debe conocer el nmero mximo de elementos para reservar la memoria
para cada uno de ellos.

La propiedad ordenado, significa que el elemento primero, segundo,.., ensimo de un arreglo


puede ser identificado.

La propiedad homogneo, quiere decir que los elementos son del mismo tipo de datos. Por
ejemplo, un arreglo puede tener todos sus elementos de tipo entero, o todos sus elementos
de tipo char.

Un arreglo agrupa elementos similares identificando al conjunto con un solo nombre o identificador.
Para acceder al valor de una determinada posicin dentro del arreglo se utilizan los ndices. La forma
en la que se puede acceder a los elementos de un arreglo es aleatoria y no secuencial, dado que
stos son almacenados en la memoria RAM que posee la misma caracterstica.
3. Arreglos unidimensionales: los vectores
El tipo ms simple de arreglo es el unidimensional o vector.
Los vectores son arreglos unidimensionales que requieren un solo ndice para acceder a cada
elemento de los mismos.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 2

Teora Algoritmos y Estructuras de Datos I - 2012

Los elementos del vector se referencian por su subndice ndice (1,2,,i,n), es decir, por su posicin
relativa en el vector.
Algunas notaciones posibles de un vector son:
A(1), A(2),,A(i),..A(n)
A[1], A[2],,A[i],..A[n]

en programacin (C y Pascal)

Ejemplo 1: Se tiene un vector V de ocho elementos:


V[1]

V[2]

V[3]

V[4]

V[5]

V[6]

V[7]

V[8]

12

-7

14.5

20

1.5

2.5

-10

Observe que slo el vector global, el dato compuesto, tiene nombre V. Los elementos del vector se
referencian por su subndice ndice, es decir, por su posicin relativa en el vector. Los subndices de
un vector pueden ser nmeros enteros, variables o expresiones enteras.
Para i = 4
V [i+1] representa el elemento V [5] de valor 20
V [i+2] representa el elemento V [6] de valor 1.5
V [i-2] representa el elemento V [2] de valor 5
V [i+3] representa el elemento V [7] de valor 2.5
El nmero de elementos de un vector se denomina rango del vector. En este ejemplo, el rango del
vector V es 8.
Los elementos de un vector se almacenan en memoria central de la computadora en un orden
adyacente.
Ejemplo 2: Un vector de treinta nmeros denominado NUMEROS se representa fsicamente por
treinta posiciones de memoria sucesivas.
Memoria
1
Direccin x
2
Direccin x + 1
3
Direccin x + 2

.
30
Direccin
x + 29
Cada elemento de un vector se puede procesar como si fuese una variable simple al ocupar una
posicin de memoria. As:
NUMEROS [25] := 72 almacena el valor entero o real 72 en la posicin 25 del vector NUMEROS.
La instruccin de salida ESCRIBIR NUMEROS[25] visualiza el valor almacenado en la posicin 25 del
vector NUMEROS, en este caso 72.
Esta propiedad significa que cada elemento de un vector es accesible directamente, lo que
representa una de las ventajas ms importantes de usar un vector.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 3

Teora Algoritmos y Estructuras de Datos I - 2012

Por otra parte, los arreglos (tanto unidimensionales como multidimensionales) necesitan ser
dimensionados previamente a su uso dentro del programa. Dimensionar significa reservar el espacio
necesario en la memoria principal.
La declaracin de un arreglo unidimensional o vector tiene el siguiente formato:
TIPO
ARRAY [liminflimsup] DE tipo:nombre_array
liminf . . limisup: El valor mnimo del ndice permitido de un vector se denomina liminf y el valor
mximo permitido se denomina limsup.
nombre_array: nombre vlido del arreglo
tipo: tipo de datos de los elementos del array: entero, real, carcter.
Ejemplo 3:
TIPO
ARRAY [1..5] DE entero: NUMEROS
VARIABLES
NUMEROS: A
Se dimensiona un arreglo unidimensional A de cinco elementos de tipo entero.
Ejemplo 4: Dado un vector X de ocho elementos,
X[1]
14
Elemento 1

X[2]
12
Elemento 2

X[3]
8

X[4]
7

X[5]
6.41

X[6]
5.23

X[7]
6.15

X[8]
7.25
Elemento 8

Se presentan a continuacin algunas instrucciones que manipulan el vector X.


Acciones

Resultados

ESCRIBIR X[1]

Visualiza el valor X[1] que es igual a 14

X[4] := 45

Almacena el valor 45 en X[4]

SUMA:= X[1]+X[3]

Almacena la suma de X[1] y X[3] (que es igual a 22) en la variable SUMA

SUMA := SUMA+X[4]

Aade a la variable SUMA el valor de X[4], quedando la variable SUMA con


el valor 29

X[5] := X[5] + 3.5

Suma 3.5 a X [5], siendo el nuevo valor ser 9.91

X[6] := X[1] + X[2]

Almacena la suma de X[1] y X[2] (que es igual a 26) en X[6]

4. Operaciones con vectores:


Las operaciones que se pueden realizar con vectores durante el proceso de resolucin de un
problema son:
a) Asignacin directa
b) Asignacin desde dispositivos de E/S
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 4

Teora Algoritmos y Estructuras de Datos I - 2012

c) Acceso secuencial (recorrido)


d) Actualizacin (aadir, borrar, insertar)
e) Bsqueda
f)

Ordenacin

En general, las operaciones implican el procesamiento o tratamiento de los elementos individuales


del vector.
Se describen a continuacin las operaciones a) a la d), mientras que las restantes sern tratadas en
asignaturas posteriores.
4.1. Asignacin directa
La asignacin de valores a un elemento del vector se realizar con la instruccin de asignacin:
A[3] := 5 asigna el valor 5 al elemento 3 del vector A
Ejemplo 1: Introducir los valores 5, 7, 8, 14 y 12 mediante asignaciones a cada elemento del vector A.
A [1] := 5
A [2] := 7
A [3] := 8
A [4] := 14
A [5] := 12
Ejemplo 2: Para dar el mismo valor a todos los elementos, la notacin algortmica se simplifica con el
formato:
PARA i DESDE 1 HASTA 5
A [i] := 8
FIN-PARA
Donde A[i] tomar los valores numricos: A[1] := 8, A[2] := 8, . , A[5]: = 8
En este ejemplo el ndice i deber ir tomando el valor de la posicin siguiente en el vector, utilizando
estructuras repetitivas (PARA, MIENTRAS).
4.2. Asignacin desde dispositivos de E/S
La asignacin de valores a los elementos de un arreglo puede hacerse tambin mediante dispositivos
de E/S como el teclado. En este caso, la instruccin de lectura se representar como:
LEER A[5]

ingresa por teclado el elemento 5 del vector A

4.3. Acceso secuencial (recorrido)


Se puede acceder a los elementos de un vector para introducir datos en l (mediante asignacin
directa o desde el teclado) o bien para visualizar su contenido.
A la operacin de efectuar una accin general sobre todos los elementos de un vector se denomina
recorrido del vector.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 5

Teora Algoritmos y Estructuras de Datos I - 2012

Estas operaciones se realizan utilizando estructuras repetitivas, cuyas variables de control (por
ejemplo i) se utilizan como subndice del vector, por ejemplo S [i]. El incremento del contador del
bucle producir el tratamiento sucesivo de los elementos del vector.
Ejemplo 1: Asignacin de veinte valores enteros de un vector denominado F.
Procedimiento 1
ALGORITMO leer_vector
TIPO
ARRAY[1..20] DE ENTERO: Final
VAR
Final: F
ENTERO: i
INICIO
PARA i DESDE 1 HASTA 20
LEER (F [i])
FIN-PARA
FIN
El ingreso de veinte valores sucesivos desde el teclado carga los elementos del vector F, comenzando
con el elemento F [1] y terminando con el F[20].
Procedimiento 2
Los elementos del vector pueden ser introducidos tambin con bucles MIENTRAS o HACER-HASTA.
i= 1
MIENTRAS i <= 20 HACER
LEER F [i]
i = i+1

o bien

FIN-MIENTRAS

i= 1
HACER
LEER F [i]
i = i+1
HASTA i > 20

La salida o escritura de vectores se representa de un modo similar. Las estructuras iterativas


permiten visualizar todo el vector completo (un elemento en cada lnea independiente).
Ejemplo 2: Procesamiento de un vector PUNTOS, realizando las siguientes operaciones: ingreso de
los elementos del vector desde el teclado, clculo de la suma y de la media de los valores del vector.
El vector se denomina PUNTOS, el lmite superior del rango se define como constante y el lmite
inferior se considera 1.
ALGORITMO media_puntos
CONST
limite = 40
TIPOS
ARRAY [1 . . limite] DE REAL: puntuacion
VARIABLES
puntuacion: puntos
real: suma , media
entero: i
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 6

Teora Algoritmos y Estructuras de Datos I - 2012

INICIO
suma : = 0
ESCRIBIR Ingresar los elementos del vector:
PARA i DESDE 1 HASTA limite
LEER puntos [i]
suma := suma + puntos [i]
FIN-PARA
media := suma/limite
ESCRIBIR La suma de los elementos del vector es , suma
ESCRIBIR La media de los elementos del vector es , media
FIN
4.4 Actualizacin de un vector
La operacin de actualizar un vector puede constar a su vez de tres operaciones elementales: Aadir,
Insertar y Borrar elementos del mismo.
a) Operacin Aadir: Consiste en agregar un nuevo elemento al final del vector. La condicin
necesaria para poder llevar a cabo esta operacin es la comprobacin de espacio de memoria
para el nuevo elemento, es decir, que el vector no tenga valores asignados en todos los
elementos con que fue definido al principio del programa.
Ejemplo 1: Un vector VEC se ha dimensionado a seis elementos, pero slo se le han asignado
cuatro valores a los elementos VEC[1],VEC[2], VEC[3] y VEC[4]. Se desea aadir un nuevo
elemento al final del vector.
1
2
3
5
0
0
Se presenta a continuacin el algoritmo que realiza esta operacin.
ALGORITMO Aadir
TIPOS
ARRAY [1 . . 6] DE ENTERO: tipo_vector
VARIABLES
tipo_vector: VEC
ENTERO: i
INICIO
//Se asignan valores a los cuatro primeros elementos del vector
VEC[1]:=1; VEC[2]:=2; VEC[3]:=3; VEC[4]:=5
// Se muestra el vector en pantalla
PARA i DESDE 1 HASTA 6
ESCRIBIR vec[i]
FIN_PARA
//Se solicita el ingreso de un valor para cargarlo en la posicion 5 del vector
ESCRIBIR Ingrese el elemento a aadir al final del vector
LEER VEC[5] // se ingresa el valor 6
// Se muestra el vector actualizado en pantalla
PARA i DESDE1 HASTA 6
ESCRIBIR vec[i]
FIN_PARA
FIN
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 7

Teora Algoritmos y Estructuras de Datos I - 2012

El resultado ser:
1

b) Operacin Insertar: Consiste en introducir un elemento en el interior del vector. Se debern


desplazar hacia abajo los elementos necesarios para generar un espacio libre en la posicin
adecuada, suponiendo que haya suficiente espacio en el vector.
Ejemplo 2
Continuando con el vector VEC obtenido en el Ejemplo 1, se desea insertar el nmero 4, que
ocupar la posicin 4.
1
2
3
5
6
0

Se presenta a continuacin el algoritmo que realiza esta operacin.


ALGORITMO Insertar
TIPOS
ARRAY [1 . . 6] DE ENTERO: tipo_vector
VARIABLES
tipo_vector: VEC
ENTERO: i,p, valor
INICIO
//Se asignan valores a los cuatro primeros elementos del vector
VEC[1]:=1; VEC[2]:=2; VEC[3]:=3; VEC[4]:=5; VEC[5]:=6
// Se muestra el vector en pantalla
PARA i DESDE1 HASTA 6
ESCRIBIR vec[i]
FIN_PARA
//Se solicita el ingreso de la posicin donde se desea insertar el nuevo elemento
ESCRIBIR Ingrese la posicin del elemento a insertar
LEER p
//Se solicita el ingreso del valor a insertar
ESCRIBIR Ingrese el valor a insertar
LEER valor //se ingresa el valor 4
//Se inicializa la cantidad de elementos cargados del vector
n := 5
// Se transfieren los elementos hacia abajo para poder colocar el nuevo elemento
i:= n
MIENTRAS (i >= p) HACER
VEC[i+1]:=VEC[i]
i:=i-1
FIN_MIENTRAS
//Se inserta el nuevo elemento
VEC[p]:=valor
ESCRIBIR Valor insertado en el vector
//Se actualiza la cantidad de elementos cargados del vector
n := n+1
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 8

Teora Algoritmos y Estructuras de Datos I - 2012

// Se muestra el vector actualizado en pantalla


PARA i DESDE1 HASTA 6
ESCRIBIR vec[i]
FIN_PARA
FIN
El resultado ser:
1
2
3
4

c) Operacin Borrar: Esta operacin consiste en eliminar un elemento de un vector. El borrado de


un elemento al final del vector no presenta ningn problema, pero el borrado de un elemento
del interior del vector provoca el movimiento hacia arriba de los elementos inferiores a l para
reorganizar el vector.
Ejemplo 3:
Continuando con el anlisis del vector VEC obtenido en el Ejemplo 2, se desea eliminar el
elemento que ocupa la posicin 3.
1
2
3
4
5
6
Se presenta a continuacin el algoritmo que realiza esta operacin.
ALGORITMO Borrar
TIPOS
ARRAY [1 . . 6] DE ENTERO: tipo_vector
VARIABLES
tipo_vector: VEC
ENTERO: i,n,p
INICIO
//Se asignan valores a los cuatro primeros elementos del vector
VEC[1]:=1; VEC[2]:=2; VEC[3]:=3; VEC[4]:=4; VEC[5]:=5; ; VEC[6]:=6
// Se muestra el vector en pantalla
PARA i DESDE1 HASTA 6
ESCRIBIR vec[i]
FIN_PARA
//Se solicita el ingreso de la posicin del elemento que se va a eliminar
ESCRIBIR Ingrese la posicin del elemento a eliminar
LEER p
//Se inicializa la cantidad de elementos cargados del vector
n := 6
//Se mueven hacia arriba los elementos inferiores a la posicin ingresada
PARA i DESDE p HASTA n-1
VEC[i]:=VEC[i+1]
FIN_PARA
VEC[n] := 0
//Se actualiza la cantidad de elementos cargados del vector
n := n-1
// Se muestra el vector actualizado en pantalla
PARA i DESDE1 HASTA 6
ESCRIBIR vec[i]
FIN_PARA
FIN
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 9

Teora Algoritmos y Estructuras de Datos I - 2012

El resultado ser:
1

5. Arreglos de varias dimensiones


Se pueden definir arreglos n-dimensionales (con n 2), cuyos elementos se pueden referenciar por
dos, tres o ms subndices.
Los arreglos n-dimensionales se dividen en dos grandes grupos:
- Arreglos bidimensionales

(2 dimensiones)

- Arreglos multidimensionales

(3 o ms dimensiones)

En esta asignatura se tratarn arreglos de 2 dimensiones solamente.

6. Arreglos bidimensionales: las tablas o matrices


Los arreglos de tipo bidimensional se denominan tablas o matrices.
El arreglo bidimensional se puede considerar como un vector de vectores.
Es un conjunto de elementos, todos del mismo tipo, en el cual el orden de los componentes es
significativo y en el que se necesita especificar dos subndices para poder identificar cada elemento
del arreglo.
Ejemplos tpicos de tablas o matrices son:
- Tablas de distancias kilomtricas entre ciudades.
- Cuadros horarios de trenes o aviones.
En notacin estndar, B [i,j] es el elemento de B que ocupa la i (i-sima) fila y la j (j-sima)columna.
1
2 3
4
.
j
. N
1
2
.
i

B[i,j]

.
M
El elemento B [i , j ] se puede representar en notacin algortmica. El array B con elementos de tipo T
(numrico o alfanumrico), con subndice fila que vara en el rango de 1 a M y subndice columna en
el rango de 1 a N es:
B (1 : M, 1: N) = {B [i, j]}
Donde i = 1, .. , M o 1 <= i <= M
Donde j = 1, .. , N o 1 <= j <= N
Ejemplo 1: A continuacin se muestra una tabla o matriz de 30 elementos (5 x 6) con 5 filas y 6
columnas. El primer subndice se refiere a la fila y el segundo subndice se refiere a la columna.
M[2 ,3] se refiere al elemento que ocupa la segunda fila y tercer columna, que contiene el valor 18.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 10

Teora Algoritmos y Estructuras de Datos I - 2012

Fila 1
Fila 2
Fila 3
Fila 4
Fila 5

18

Col. 1

Col. 2 Col. 3 Col. 4 Col. 5 Col. 6

6.1. Declaracin de matrices


De la misma manera que los arreglos unidimensionales (vectores), los arreglos bidimensionales
(matrices) se crean con declaraciones TIPO y VAR. Se deben indicar:
1) El rango permitido (es decir, el primero y ltimo valores posibles) por cada subndice.
2) Tipo del arreglo (recuerde que todos los elementos del arreglo deben ser del mismo tipo).
3) Nombre del arreglo.
Formato:
TIPO
ARRAY [rango ndice 1, rango ndice 2] DE tipo: nombre_array
rango ndice 1: lmites inferior y superior del rango del subndice fila.
rango ndice 2: lmites inferior y superior del rango del subndice columna.
tipo: tipo de datos de los elementos del array: entero, real, carcter.
nombre_array: nombre vlido del arreglo.
Ejemplos:
TIPO
ARRAY [1..10, 1..5] DE REAL: MATRIZ
VAR
MATRIZ: tabla
Se define una matriz de 10 filas por 5 columnas con elementos de tipo real. Luego se declara una
variable tabla del tipo MATRIZ.
6.2. Recorrido y manipulacin de matrices
En general, el orden natural para procesar los vectores es el orden secuencial: del primero al ltimo
elemento. En el caso de los arreglos bidimensionales, existen diferentes ordenamientos para sus
recorridos. Los ms usuales son: recorrido por filas y recorrido por columnas.
Ejemplo 1: Leer desde el teclado y almacenar los siguientes datos en una matriz A de 3 filas por 4
columnas, con elementos de tipo entero:

25
11

35
1

12
18

20
34

12

18

24

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 11

Teora Algoritmos y Estructuras de Datos I - 2012

Recorrido por filas


Los elementos de la primera fila se procesan primero, luego los de la segunda y as sucesivamente.
Eso implica que primero se hace variar el ndice de fila y dentro de ste al ndice de columna. Al
iniciar cada nueva fila se recorre desde la primera columna nuevamente.
Los valores deben introducirse en este orden: 25, 35, 0, 0, 0, .18, 24
Pseudocdigo

Pascal

PARA Fila DESDE 1 HASTA 3

FOR Fila := 1 TO 3 DO

PARA Columna DESDE 1 HASTA 4

FOR Columna := 1 TO 4 DO

LEER A [Fila, Columna]

READLN (A [Fila, Columna]);

FIN-PARA
FIN-PARA
Recorrido por columnas
Los elementos de la primera columna se procesan primero, luego los de la segunda y as
sucesivamente. Eso implica que primero se hace variar el ndice de columna y dentro de ste al
ndice de fila. Al iniciar cada nueva columna se recorre desde la primera fila nuevamente.
Los valores deben introducirse en este orden: 25,0, 6, 35, 1, 12, 34, 24.

Pseudocdigo

Pascal

PARA Columna DESDE 1 HASTA 4

FOR Columna := 1 TO 4 DO

PARA Fila DESDE 1 HASTA 3

FOR Fila := 1 TO 3 DO

LEER A [Fila, Columna]

READLN (A [Fila, Columna]);

FIN-PARA
FIN-PARA
Ejemplo 2: A partir de una Matriz M de 5 filas por x 4 columnas con elementos de tipo entero,
generar un vector V cuyos elementos sean la suma de los elementos de cada fila de la matriz.
Imprimir la matriz y el vector de resultados.

M
1
2
3
4
5

23
32
12
59
32

40
65
156
43
45

5
86
74
11
67

7
43
34
123
89

1
2
3
4
5

Licenciatura en Sistemas de Informacin FACENA - UNNE

75
226
276
236
233

Pg. 12

Teora Algoritmos y Estructuras de Datos I - 2012

ALGORITMO Suma_filas
TIPOS
ARRAY [1 . . 5, 1 ..4] DE ENTERO: tipomatriz
ARRAY [1 . . 5] DE ENTERO: tipovector
VARIABLES
tipomatriz: M
tipovector: V
ENTERO: i,j
INICIO
//Ingresar desde teclado los elementos de la matriz
ESCRIBIR Ingrese los elementos de la matriz
PARA I DESDE 1 HASTA 5
PARA J DESDE 1 HASTA 4
ESCRIBIR Ingrese el elemento, i,,,j
LEER M[i,j]
FIN_PARA
FIN_PARA
//Asignar cero a los elementos del vector
PARA i DESDE 1 HASTA 5
V[i] := 0
FIN-PARA
//Calcular los elementos del vector
PARA i DESDE 1 HASTA 5
PARA j DESDE 1 HASTA 4
V[i] := V[i] + M[i,j]
FIN-PARA
FIN-PARA
// Mostrar en pantalla la matriz y el vector
PARA i DESDE 1 HASTA 5
PARA j DESDE 1 HASTA 4
ESCRIBIR M[i, j]
FIN-PARA
ESCRIBIR V[i]
FIN-PARA
FIN

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 13

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1
Hardware de Procesamiento de Datos (I)

Para ver los principales aspectos del hardware, el tema se tratar en cuatro partes: La primera har
hincapi en los aspectos funcionales de los componentes que intervienen activamente en el
procesamiento, tales como la CPU y la memoria principal.
La segunda parte, en forma muy simplificada, pretende ubicar esos componentes en una
computadora tipo PC.
La tercera describe brevemente las caractersticas de los distintos perifricos que se utilizan para el
ingreso de los datos y la salida de informacin de la computadora.
En la cuarta, se describen las distintas tecnologas utilizadas para el almacenamiento de los datos y la
descripcin de los principales dispositivos de almacenamiento.
Parte 1: Hardware de procesamiento de datos.
Parte 2: Composicin bsica de una computadora.
Parte 3: Dispositivos de Entrada Salida.
Parte 4: Dispositivos de almacenamiento secundario
Parte 1. Hardware de procesamiento de datos
El objetivo de este tema es entender la forma en que la computadora procesa los datos. Para ello se
realizar primero una descripcin general del hardware y de los bloques funcionales que lo
componen, para luego tratar ms especficamente los componentes fundamentales en el
procesamiento de datos: la unidad central de procesamiento (CPU) y la memoria.
1. Qu es el Hardware?
El hardware de una computadora es la totalidad fsica, conformada por todos los componentes de su
equipamiento: circuitos electrnicos (microcircuitos contenidos en chips), plaquetas que los
soportan, cables o caminos conductores (buses) que los interconectan, mecanismos, discos, motores,
cintas, gabinetes, pantallas, teclas, etc.
1.1. Bloques funcionales del hardware
En el procesamiento de datos, realizado en cualquier computadora, se realizan los siguientes
procesos:
ENTRADA

MEMORIZACION

PROCESAMIENTO

SALIDA

Cada uno de estos procesos los realizan los bloques funcionales: perifricos de entrada, memoria,
unidad central de proceso, perifricos de salida. Los bloques se comunican elctricamente entre s, a
travs de caminos formados por un conjunto de cables o lneas conductoras que constituyen un
bus.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 1

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1
ENTRADA

MEMORIZACIN

PROCESAMIENTO

bus
I

Unidad de
disco

Unidad de
disquete

Mdem

bus

Instrucciones
Instrucciones

Mouse

SALIDA

Porcin
central

Registros

Unidad
de
control

Monitor
con
pantalla

Unidad de
disco

Unidad de
disquete

Impresora

Parlante

Mdem

Plotter

Instrucciones

Scanner

Teclado

Datos

Datos

Instr.

AX

Datos

Resultados

I
Memoria
principal

CD-ROM

RI

UAL

Unidad central de
proceso (UCP)

I
Resultados
bus

Perifricos de
entrada

Perifricos de
salida

Figura 1: Bloques funcionales del hardware

En la Figura 1 se muestra como se relacionan los bloques funcionales. A los fines didcticos,
aparecen repetidos dispositivos que pueden actuar tanto para la entrada como para la salida de
datos (ej. Unidades de disco y disquete).
En lneas generales, en la figura mostrada, se supone que un disco de la unidad de disco rgido
provee un programa cuyas instrucciones pasarn a travs de buses a la memoria y los datos, llegan, tambin a travs de buses- a la memoria, provenientes del teclado. Luego las instrucciones del
programa son ejecutadas, una por vez, para lo cual primero cada una por un bus llega al registro de
instruccin (RI) de la U.C.P., donde permanece mientras se ejecuta, para que la Unidad de Control
interprete que operacin ordena.
A continuacin, a travs del mismo bus, el dato a operar por dicha instruccin llega desde la memoria
a un registro acumulador (AX) del procesador, antes de ser operado (conforme a la operacin
ordenada) en la ALU, a fin de obtener un resultado. Este puede sustituir en el registro AX al dato ya
operado, y luego, pasar a la memoria -nuevamente a travs del bus citado- si una instruccin as lo
ordena. Una vez que el resultado est en la memoria, la instruccin siguiente podra ser visualizarlo
en la pantalla, guardarlo en un disquete, etc.
Los dispositivos que se encargan de entrar desde el exterior datos e instrucciones hacia la
computadora, o dar salida de resultados de la computadora al exterior, se denominan perifricos o
unidades de entrada salida. Su funcin principal es convertir datos externos en internos en las
operaciones de entrada, o a la inversa en las operaciones de salida. De estos bloques funcionales,
trataremos en los prximos temas.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 2

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1

Un perifrico no se conecta directamente al procesador central, sino por medio de una


Interfaz circuital, indicada con la letra I en el grfico inicial, que en una PC en general, est contenida
en una tarjeta que se inserta en un zcalo apropiado de la placa madre.
La UC no gobierna directamente a los perifricos mediante lneas que llegan a ellos, sino que la CPU
ejecuta un subprograma preparado para cada perifrico (drivers o controladores), merced al cual
desde la CPU llega a la interfaz del perifrico cada comando que ordena a la electrnica de ste qu
debe hacer.
Distintos circuitos de un computador se comunican entre s mediante un conjunto de lneas, cables,
conductores, que los interconectan elctricamente, los cuales configuran una estructura de
conexin. Estas comunicaciones se denominan bus.
En general, en un bus encontramos lneas para la transmisin de datos, direcciones y seales de
control, denominados respectivamente bus de datos, bus de direcciones y bus de control. Se
describen ms adelante las caractersticas de los dos primeros.
1.2. Resumen del funcionamiento bsico de una computadora
1. Los datos y las instrucciones del programa deben llegar a la memoria principal (MP) desde
perifricos. Cada instruccin est codificada mediante una combinacin de unos y ceros, esta
codificacin consta de dos partes: una es el cdigo de instruccin que indica que har la
computadora, la otra parte contiene las direcciones de memoria donde se hallan el o los datos
que se operarn en esta instruccin.
2. La UC localiza en MP la instruccin que debe ser ejecutada, para que su cdigo llegue a la CPU,
donde la UC determinar qu ordena ese cdigo.
3. La instruccin es interpretada o decodificada por la UC, luego de lo cul la UC ordena
encaminar los datos hacia la UAL, indicando la operacin que debe realizar o a los perifricos si la
instruccin es de entrada/salida. La instruccin codificada permite localizar los datos que
operar, la operacin concreta a realizarse, donde se guardar el resultado y donde se localiza la
prxima instruccin en MP. La UC cumplimenta todo lo especificado en la instruccin.
4. Se vuelve al paso 2.
2. Unidad Central de Proceso (CPU)
Se denomina Unidad Central de Proceso al conjunto formado por:

La Unidad de Control

La Unidad Aritmtica Lgica

Los registros usados durante la ejecucin de cada instruccin.

La CPU es el cerebro de la computadora, el lugar donde se lleva a cabo la ejecucin de las


instrucciones. En los sistemas de computacin ms grandes, por ejemplo, las supercomputadoras y
los mainframes, las tareas de procesamiento pueden controlarse por mltiples chips de
procesamiento.
El microprocesador
En una microcomputadora, la CPU est contenida en el chip microprocesador (por ejemplo, el
80386/80486/Pentium, 68000, PowerPC, Pentium IV, AMD Athlon, etc.).
Los trminos CPU, microprocesador y procesador, suelen ser sinnimos.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 3

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1

Ejemplo de microprocesador: Intel Core I7


Elementos principales del microprocesador
Hay muchos tipos de microprocesadores pero una CPU tpica consta, entre otros, de los elementos
que se aprecian en la figura siguiente, donde el generador de pulsos de reloj suele alojarse en el
chipset externo de la placa base.
Generador de pulsos
de reloj (Mhz)

Coprocesador matemtico

Registros

UC
Cach
de
Nivel
2

Unidad de
Control

RI
Decodifi
cador

ALU
Secuen
ciador

Cach de nivel 1

RM

DM

Datos e instrucciones

Direcciones

MEMORIA PRINCIPAL

Tipos de microprocesadores
Todo microprocesador entiende un determinado conjunto de instrucciones que son especficas de
cada modelo. A grandes rasgos se puede hacer una clasificacin general de los procesadores
atendiendo al tipo de instrucciones que manejan:
a) Procesadores CISC (Complex Instruction Set Computer Computacin de conjunto complejo
de instrucciones): Procesador con un conjunto de instrucciones complejo. Cada procesador
contiene un gran nmero de instrucciones que realizan operaciones completas. Por este
motivo el decodificador y el secuenciador tienen un carcter complejo: manipulan multitud
de instrucciones, algunas con muchas etapas diferentes.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 4

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1

b) RISC (Reduced Instruction Set Computer Computacin de conjunto reducido de


instrucciones): Procesador con un conjunto reducido de instrucciones que, adems, son de
carcter bsico. Cuando necesita realizar tareas complejas las ejecuta mediante un conjunto
de operaciones bsicas. Como el decodificador y el secuenciador se simplifican y en realidad
las instrucciones complejas se utilizan muy poco, este tipo de procesador es ms rpido y
ms potente que el CISC.
En el grupo de procesadores CISC estn todos aquellos de carcter general, fundamentalmente los
dedicados al uso domstico (PCs y Macintosh), quedando los ms avanzados y especializados
(estaciones de trabajo, servidores y mainframes) para el grupo de ordenadores RISC.
2.1. Unidad de Control (UC)
La Unidad de Control es el centro lgico de la computadora. Puede considerarse como un polica de
trnsito dirigiendo el flujo de datos a travs de la CPU, adems del flujo hacia otros dispositivos y
desde ellos. Es un circuito especializado, cuya funcin es obtener de la memoria las instrucciones del
programa y ejecutarlas. Estas acciones forman parte de una secuencia siempre repetitiva:

Obtener de la memoria la prxima instruccin que corresponde ejecutar,

Localizar los datos a operar en la memoria, en un AX u otro registro, segn se indique.

Ordenar al circuito de la UAL que realice con dichos datos, la operacin indicada, o a los canales
correspondientes, si la instruccin es de entrada o salida de datos.

Guardar el resultado en un registro acumulador o en la memoria principal.

Por lo tanto: La UC tiene a su cargo el secuenciamiento de las acciones necesarias que deben
realizar los circuitos involucrados en la ejecucin de cada instruccin, segn el cdigo de la misma;
respetando el orden de ejecucin de las instrucciones establecido en el programa.
Se denomina conjunto de instrucciones a todas las operaciones que la CPU puede ejecutar. Este
conjunto de instrucciones est integrado en la Unidad de Control. Cada instruccin del conjunto de
instrucciones est expresada en microcdigo: instrucciones bsicas que le dicen a la CPU la forma en
que debe ejecutar las operaciones ms complejas.
La UC ordenar mediante seales elctricas transmitidas por canales o cables, las operaciones
(aritmticas o lgicas) que debe realizar la Unidad Aritmtica Lgica (UAL).
2.2. Unidad Aritmtico Lgica (UAL)
Debido a que todos los datos en la computadora estn almacenados como nmeros (tener presente
los cdigos de representacin de datos del Tema 2) gran parte del procesamiento involucra la
comparacin de nmeros la realizacin de operaciones aritmticas. Por lo tanto, la UAL sirve para
realizar las operaciones aritmticas o lgicas que le ordene la UC, siendo auxiliada por registros
acumuladores para guardar transitoriamente datos y resultados.
Estos registros, son ubicaciones de memoria de alta velocidad que estn directamente integradas en
la CPU y se utilizan para almacenar datos que se estn procesando en ese momento. Se puede
considerar a los registros como bloc de notas. Por ejemplo, la UC puede cargar 2 nmeros de la
memoria en los registros y luego decirle a la UAL que sume los 2 nmeros (operacin aritmtica)
que los compare para comprobar si son iguales (operacin lgica). La respuesta a este clculo se
almacenar en otro registro antes de ser enviado a la CPU.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 5

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1
2.2.1. Longitud de palabra

Se denomina palabra al conjunto de bits que forma un dato con los que opera la ALU y coincide, en
general, con el nmero de bits de los registros del procesador. La longitud de palabra es el nmero
de bits que la forman, las longitudes actuales son de 32 y 64 bits.
2.2.2. Ciclo de mquina
Cada vez que la CPU ejecuta una instruccin, realiza una serie de pasos. La serie completa de pasos
se denomina ciclo de mquina. Un ciclo de mquina consta de un ciclo de instruccin y un ciclo de
ejecucin. El primero recupera los datos y decodifica las instrucciones, el segundo ejecuta las
microinstrucciones.
El ciclo de instruccin comprende los siguientes pasos:
1. Recuperacin o lectura: La UC recupera de la memoria el
dato o comando a ser operado.

Ciclo de mquina

Ciclo de instruccin

2. Decodificacin: La UC separa (o decodifica) el comando en


instrucciones que corresponden a aquellas que pertenecen al
conjunto de instrucciones de la CPU.
1. Ejecutar: La Cpu ejecuta las instrucciones en orden al
convertirlas a microcdigo.

Ciclo de ejecucin
2. Almacenar: Almacena los resultados de la instruccin, si
fuera necesario.

A pesar de que el proceso es complejo, la computadora lo realiza a gran velocidad, traduciendo


millones de instrucciones por segundo. De hecho, el desempeo de la CPU se mide en millones de
instrucciones por segundo (MIPS). Los microprocesadores modernos se pueden medir en billones de
instrucciones por segundo (BIPS).
3. Memoria principal
La etapa de memorizacin en el proceso de datos, la realiza la memoria principal, central o interna.
Almacena datos, instrucciones y los resultados del proceso en circuitos electrnicos chips ubicados
en la placa madre.
La memoria principal (MP) almacena las instrucciones de programas que prximamente sern
ejecutas en la CPU, y los datos que ellas ordenan procesar (operar); as como resultados intermedios
y finales de las operaciones realizadas en la CPU.
Es decir, los datos que se procesan y el programa que se ejecuta para dicho proceso deben estar en la
memoria principal. Cada programa comparte la MP con sus datos, pero las instrucciones estn en
una zona y los datos en otra. Esta informacin queda almacenada temporalmente mientras se opera
con ella; pudiendo luego ser reemplazada por otro programa y sus datos correspondientes.
No debe confundirse la memoria principal, que es interna y est colocada en la placa madre, con la
memoria de almacenamiento masivo (discos rgidos, disquetes, CD-ROM) que son externos. Tienen
gran relacin puesto que todos los programas y datos son almacenados en los discos y pasan
despus a la memoria donde sern manipulados adecuadamente por la CPU, tal como se ve en la
siguiente figura:

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 6

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1

Disco

Datos e
instruccion

Datos e
instruccion

CPU

Memoria
Principal

Esquema de carga de un programa a partir de su ubicacin en disco


3.1. Tipos de memoria
Existen dos tipos de memoria integrada, en funcin de la permanencia de los datos: Cuando los chips
de memoria retienen los datos an cuando se apaga la computadora, decimos que es una memoria
no voltil. Otros chips pierden su contenido cuando se suspende el suministro de energa elctrica,
este tipo de memoria se denomina voltil. En la figura siguiente se muestra la disposicin de estos
chips en la placa madre:
3.1.1. Memoria no voltil (ROM)
Los chips de memoria no voltil mantienen los
datos aun cuando se desconecte la computadora.
Los datos se colocan es los chips durante el proceso
de fabricacin. Durante su uso normal, los datos de
estos chips slo se leen y utilizan (no se modifican)
por lo que esta se memoria se conoce tambin
como memoria de slo lectura ROM (read only
memory ). Especficamente, los chips que no
pueden modificarse se conocen como memoria
programable de slo lectura PROM (por sus siglas
en ingls). Los chips PROM se utilizan generalmente en las unidades de disco duro en las
impresoras. Contienen las instrucciones que hacen funcionar a los dispositivos.
Cuando una computadora se enciende necesita saber por dnde empezar. Las instrucciones de inicio
estn contenidas en una memoria ROM, denominada BIOS (Basic Input Oputput system Sistema
Bsico de Entrada Salida). Este chip contiene la informacin necesaria para realizar determinadas
tareas rutinarias de bajo nivel:
a) Arrancar el ordenador. Para hacer esto se utiliza un pequeo programa de arranque que se pasa
de la ROM a la memoria principal (RAM) y desde aqu se ejecuta.
b) Ejecutar el programa de configuracin de la placa madre y sus componentes principales. Este
programa se denomina SETUP y es accedido mediante algn mecanismo especial, normalmente
pulsando la tecla <SUPR> despus del chequeo de arranque.
c) Administrar los Cdigos de las Interrupciones BIOS que son necesarias para realizar la entrada y
salida de datos.
3.1.1.1. Memoria Flash
La memoria flash es un tipo especial de memoria no voltil. Se utiliza en dispositivos digitales
porttiles para almacenamiento de datos. Las cmaras digitales, reproductores MP3, dispositivos de
almacenamiento USB y consolas de juego, utilizan este tipo de memoria.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 7

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1
3.1.2. Memoria voltil (RAM)

La memoria voltil requiere de energa elctrica para almacenar los datos. La memoria voltil de una
computadora se conoce como memoria de acceso aleatorio RAM (Random Access Memory).
Cuando se habla de la memoria de una computadora, en relacin a una microcomputadora, se
refiere a la RAM. La RAM almacena los programas y los datos mientras se estn ejecutando.
La RAM est especialmente diseada para ser inmediatamente accesible para la CPU o para los
programas. La palabra aleatorio en la RAM implica que cualquier parte de ella puede ser accesible
en cualquier momento. Esto contribuye a que la RAM sea muy rpida.
Una computadora no necesita buscar en toda su memoria cada vez que tiene que encontrar datos,
debido a que la CPU utiliza una direccin de memoria para almacenar y recuperar cada fragmento de
datos.
Una direccin de memoria es un nmero que indica una ubicacin en los chips de memoria. Las
direcciones de memoria empiezan en cero y se incrementan hasta llegar a uno menos que la
cantidad de bytes de la memoria que tiene la computadora.
Se utiliza memoria RAM no slo asociada a la CPU. Las placas de video y de sonido modernas tienen
su propia RAM integrada.
3.1.3. Caractersticas de la memoria principal

La memoria principal almacena bits (unos y ceros) en celdas independientes entre s, que
contienen un byte (8 bits) de informacin.

Cada celda se localiza en el conjunto mediante un nmero binario identificatorio, que constituye
su direccin indicacin de su posicin en ese conjunto. Este nmero no se puede alterar
porque est establecido circuitalmente.

Por lo tanto, con relacin a cada celda se tiene dos nmeros binarios:

Un nmero fijo, la direccin, que presentado en los circuitos de la memoria permite acceder a
una celda; y

Un nmero de ocho bits, que es el contenido o informacin de esa celda, o sea la combinacin
de unos y ceros almacenada en ella. Este nmero puede cambiarse si la memoria es alterable.

Generalmente se representan las celdas de la memoria como un conjunto de casilleros verticales,


siendo sus direcciones nmeros binarios consecutivos. Para no visualizar largas cadenas de unos y
ceros, estos nmeros suelen mostrarse en su equivalente hexadecimal, para que sea de ms fcil
comprensin. Esto es cuando se realiza un vuelco de memoria en la pantalla o impresora.

Ejemplo, en la figura de la derecha se


destaca la direccin 0000 0010 0000
0111 = 0207H, en la cual est
almacenado el byte 01100001
equivalente al hexadecimal 61H.

0205H

0 0 1 1 1 1 0 1

0206H

1 1 0 1 0 1 1 1

0207H

0 1 1 0 0 0 0 1

0208H

0 0 0 1 0 1 0 1

0209H

0 1 0 1 1 0 1 0

020AH

1 0 1 1 0 0 1 1

020BH

1 1 1 0 0 1 0 0

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 8

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1

Puede ayudar a entender mejor el concepto de byte almacenado, si se piensa que en cada casillero
existen llaves del tipo si-no, como las comunes de pared para encender la luz, cada una para
representar un uno estar en la posicin de prendido (si) o para representar el cero, estar en
apagado (no). Entonces, para una celda dada, como la que contiene 01100001, la combinacin de
unos y ceros que estn formando las ocho llaves es la informacin contenida en dicha celda. La
informacin que almacena cada grupo de 8 llaves puede referirse a instrucciones o datos.

3.1.4. Palabra de memoria (word)




En cada direccin de memoria (celda) slo se pueden leer o escribir 8 bits por vez, sin posibilidad
de operar menor cantidad de bits.

Cuando los datos e instrucciones ocupen ms de un byte, se almacenan fragmentados en varios


bytes, los cuales deben estar contenidos en celdas consecutivas de memoria.

En una operacin de lectura o escritura de memoria se puede acceder a varias celdas


consecutivas. El nmero mximo de stas constituye una palabra (word) de memoria. Dicho
nmero puede ser 1, 2, 4 8 bytes, dependiendo de la cantidad de lneas de datos que salen del
procesador hacia la memoria.

3.1.5. Direccionamiento de memoria


Para acceder a los datos de la memoria o grabar datos en ellas la CPU debe direccionar la MP. La
accin de direccionar o direccionamiento consiste en colocar en las lneas de direcciones del bus
que llegan a la MP, la direccin de la celda a la que se quiere acceder, para leerla o escribirla. En la
figura se muestra cmo interactan el bus de direcciones y el bus de datos para el acceso a los datos
en la RAM.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 9

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1

Otro ejemplo de direccionamiento: El siguiente grfico muestra la relacin entre los dispositivos
hardware que intervienen en el procesamiento: el microprocesador, la memoria RAM y los buses.

Enviar los datos de la posicin


100111011000100111110110011

Ejemplo: Para solicitar un byte


de datos, la CPU enva una
direccin de memoria a la RAM
mediante
el
bus
de
direcciones.
Los datos contenidos en esa
direccin se colocan en el bus
de datos a disposicin de la
CPU.

Se entrega el contenido de la direccin:


01001100

Tiempo de acceso: es el que transcurre entre que se direcciona una celda de memoria, hasta que
aparece en el bus de datos el contenido de la celda direccionada. Este tiempo se mide en
nanosegundos, esta unidad de tiempo significa una mil millonsima de segundo. Los procesadores
internamente realizan operaciones en contados nanosegundos.
3.1.6. Tamao de memoria
La capacidad de la memoria RAM en una computadora influye sobre el rendimiento de la misma.
Ms RAM significa que la computadora puede ejecutar programas ms grandes y potentes.
Tambin ms RAM puede hacer que la computadora sea ms veloz. Para ejecutar un programa no
hace falta que el programa entero est en la RAM, sin embargo mientras ms grande sea la porcin
del programa que entre en la memoria, ms rpida ser la ejecucin del programa.
Por qu? Si el tamao de la memoria es insuficiente para almacenar el programa y los datos
necesarios, la CPU utilizar espacios del disco rgido como extensin de la memoria principal. Esto
significa que la CPU deber hacer permanentes intercambios trayendo y llevando datos de la
memoria a la unidad de disco duro. Esta tcnica de administracin de memoria se denomina
memoria virtual y, si bien es efectiva para administrar una cantidad limitada de memoria,
disminuye el desempeo del sistema porque el disco duro es mucho ms lento que la RAM, por lo
tanto, los accesos a la unidad de disco harn que el procesamiento se realice en una mayor cantidad
de tiempo.
4. El reloj interno de la computadora
Todas las computadoras tienen un reloj del sistema, controlado por un cristal de cuarzo. Cuando se
le aplica electricidad, las molculas en el cristal vibran millones de veces por segundo, con una
velocidad que nunca cambia. La computadora utiliza las vibraciones del cuarzo del reloj para marcar
el tiempo de sus operaciones de procesamiento.
Las primeras PC operaban a 4,77 megahertz. El Hertz (Hz) es una medida de ciclos por segundo.
Megahertz (MHz) significa millones de ciclos por segundo. Gigahertz (GHz) significa miles de
millones de ciclos por segundo.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 10

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1

La velocidad de operacin de la computadora est ligada a la velocidad de reloj del sistema. Un ciclo
de reloj es el tiempo en que un transistor se apaga y se vuelve a encender. Un procesador puede
ejecutar una instruccin dentro de un nmero determinado de ciclos de reloj. A medida que
aumenta la velocidad del reloj del sistema, tambin aumenta la cantidad de instrucciones que puede
realizar cada segundo.
Los procesadores modernos operan a velocidades mayores a 2 Ghz.
5. El bus
El bus es una ruta entre los componentes de una computadora. Existen dos buses principales en una
computadora: el bus interno (o del sistema) y el bus externo (o de expansin). El bus del sistema
reside en la placa madre y conecta a la CPU con los otros dispositivos conectados a la placa madre.
Un bus de expansin conecta dispositivos externos, como el teclado, el mouse, mdem, impresora y
otros, con la CPU. Los cables de las unidades de disco y otros dispositivos internos se conectan al bus.
El bus del sistema tiene dos partes: el bus de datos y el bus de direcciones.
5.1. El bus de datos
El bus de datos es una ruta elctrica que conecta a la CPU, memoria y los otros dispositivos de
hardware en la placa madre. Este bus, en realidad, es un conjunto de cables paralelos. El nmero de
cables del bus de datos afecta la velocidad con la que pueden viajar los datos entre los componentes
de hardware. Cada cable puede transportar un bit de datos por vez, un bus de 8 cables transportar
8 bits, un byte, por vez. Un bus de 16 bits, puede transferir 2 bytes, uno de 32, 4 bytes y un bus de 64
bits puede transferir 8 bytes por vez.
Al igual que el procesador, la velocidad del bus se mide en megahertz (MHz). Mientras ms rpida
sea la velocidad del bus, ms rpido podr transferir datos entre los componentes de una
computadora.
5.2. El bus de direcciones
El bus de direcciones es un conjunto de cables, similar al bus de datos que slo conecta a la CPU y la
RAM y transporta nicamente direcciones de memoria. La disposicin de los buses en la
motherboard se ve en la figura siguiente:
El bus del sistema incluye un bus de
datos y un bus de direcciones.
El bus de direcciones conecta la CPU
con la RAM. El bus de datos conecta la
CPU con la RAM y con todos los
dispositivos de almacenamiento, de
entrada/salida y de comunicaciones
que estn conectados con la placa
madre.

5.3. Estndares de buses


Entre las tecnologas de bus comunes, se incluyen:


El bus arquitectura estndar de la industria ISA), es un bus de 16 bits. Fue por mucho tiempo
el estndar industrial de facto y an se utiliza en algunas computadoras para conectar
dispositivos ms lento a la CPU (por ejemplo, un mdem).

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 11

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1


Tecnologa Bus Local, se desarroll para conectar dispositivos ms rpidos a la CPU. Un bus local
es un sistema interno que se extiende entre los componentes de la placa madre. Actualmente, la
mayora de los sistemas utiliza algn tipo de tecnologa de bus local.

El bus de interconexin de componentes perifricos PCI (Peripheral Component Interconected)


es un tipo de bus local diseado por Intel para facilitar la integracin de nuevos tipos de datos,
por ejemplo, de audio, video e imgenes.

El bus puerto de aceleracin de grficos AGP (Accelerated Graphics Port) incorpora una
arquitectura especial que le permite a la tarjeta de video tener acceso a la RAM del sistema
directamente incrementando la velocidad del desempeo grfico. El estndar AGP permiti el
desarrollo de muchos tipos de tarjetas aceleradoras de video que soportan imgenes en 3D y de
video de movimiento pleno.

El bus serial universal USB (Universal Serial Bus), es un bus relativamente nuevo que se
encuentra en todas las computadoras modernas. A diferencia del PCI y del AGP, el USB es un bus
de intercambio rpido, lo que significa que un usuario puede conectar y desconectar un
dispositivo USB sin afectar a la computadora.

Los puertos IEEE 1394 (FireWire) se utilizan para conectar dispositivos de video, por ejemplo,
cmaras y cmaras de video.

El bus PC Card se utiliza slo en las computadoras laptop. Al igual que USB, el bus PC Card es de
intercambio rpido. Se utilizan para tarjetas WiFi, tarjetas de red, mdems externo,
examinadores de huellas dactilares y otros sistemas biomtricos de seguridad.

Tradicionalmente, el desempeo de los buses se meda por la cantidad de bits que podan transferir a
la vez. Sin embargo, en la actualidad, los buses se evalan de acuerdo con sus velocidades de
transferencia de datos (la cantidad de datos que pueden transferir en un segundo), este desempeo
se mide en MHz o GHz.
Memoria cach:
Mover los datos entre la RAM y los registros de la CPU es una de las operaciones que consume ms
tiempo para la CPU, debido a que la RAM es ms lenta que la CPU. Para solucionar este problema se
incluye una cach de memoria en la CPU. Una memoria cach es similar a la RAM pero mucho ms
rpida.
Hay que distinguir entre dos tipos de cach, la de primer nivel y la de segundo nivel. La de primer
nivel es la que se encuentra integrada dentro del chip del microprocesador.
La memoria cach se usa en varias partes de la computadora. La mayora de las unidades de disco y
tarjetas de red tienen un cach para acelerar el acceso de datos.
Resumiendo, las memorias cach aceleran la adquisicin de datos en la mayora de los casos. Cuando
la CPU necesita cargar un dato hace lo siguiente:
1) Lo busca en la memoria cach de nivel 1.
2) Si all no se encuentra lo busca en la memoria cach de nivel 2.
3) Si en esta tampoco est lo sacar de la memoria principal.
Aunque este esquema resulte muy complicado (adems requiere mecanismos especializados para
decidir qu datos se cargan y descargan de las memorias cach) es muy efectivo.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 12

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1
Parte 2: Composicin bsica de una computadora
1. Introduccin

Hemos visto los distintos componentes del hardware, destacando principalmente, su funcionalidad.
Es decir, cul es el papel que cumplen en el procesamiento de datos.
El propsito de este apartado es describir la composicin bsica de una computadora, tomando
como ejemplo una PC, con el objeto de que los alumnos tengan idea de la ubicacin fsica de los
componentes anteriormente descriptos.
A simple vista lo que vemos de una computadora son tres elementos diferentes: teclado, monitor y
unidad central o "gabinete". Tanto el teclado como el monitor forman parte de los perifricos de la
computadora, siendo la unidad central la parte principal de la computadora.
2. Componentes
La eleccin del tipo de gabinete depender del nmero y tipo de componentes que se deseen
incluir. Independientemente de su formato, en el interior de la PC observaremos los siguientes
elementos:
2.1. Placa base: Contiene la circuitera bsica del ordenador: microprocesador, memoria, ranuras de
expansin, controladores de dispositivos, etc.
2.2. Dispositivos internos: Fundamentalmente son de dos tipos:
a) Dispositivos de almacenamiento masivo de datos (disco, disquetera, CD-ROM. etc.).
b) Tarjetas auxiliares (tarjeta de vdeo, tarjeta de sonido, etc.).
2.3. Fuente de alimentacin: Suministra la corriente elctrica adecuada a los componentes internos
de la computadora. Necesita de uno o varios ventiladores para disipar el calor generado. Esos
ventiladores son los que generan el ruido caracterstico de las computadoras actuales.

Fuente de
alimentaci
n
Grabadora CD
Lectora CD
Placa madre
Disquetera
Disco duro
3. Elementos de la placa madre
Como ya se ha dicho, la placa madre es centro neurlgico de la computadora. En ella se incluye el
microprocesador, que es el ncleo del sistema y el encargado de realizar la mayora de las
operaciones importantes. Adems del microprocesador se incluyen los elementos necesarios para
que ste pueda realizar su trabajo. Entre los ms importantes tenemos los siguientes:
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 13

Teora Algoritmos y Estructuras de Datos I - 2012

9-1

Tema 1


Zcalos de memoria principal (RAM)

Ranuras de expansin o ampliacin

Lneas o buses de comunicacin

Circuitos controladores de dispositivos

Chipset o conjunto de chips para el control y sincronizacin

Batera o pila

Jumpers o puentes de configuracin

ROM-BIOS, o conjunto bsico de instrucciones de entrada/salida

4. Microprocesadores de PC
Centrndonos nicamente en el entorno de PCs, partimos del primer microprocesador: el Intel 8086,
inicio de la familia se denomina x86 y se muestra a continuacin su evolucin a grandes rasgos:

Si bien la tabla no est actualizada, puede observarse la evolucin de los micros en cuanto a
velocidad y tamao del bus de datos.
Adems de Intel, empresa pionera en la fabricacin de microprocesadores para PC, hay otros
fabricantes (fundamentalmente AMD) que han sacado al mercado microprocesadores compatibles
que pueden obtener rendimientos similares a los equivalentes Intel.
En el entorno de computadoras Macintosh (Mac) los procesadores son fabricados por Motorola y en
la actualidad sus modelos de altas prestaciones son los PowerPC .
Las caractersticas mencionadas de los microprocesadores puede inducirnos a pensar que ste es el
componente que ms influye en la velocidad de una computadora, pero hay que tener presente que
el rendimiento final de una computadora no slo depende del modelo y velocidad del
microprocesador. Elementos como el tipo de placa, el chipset empleado, el tipo de memoria, etc.
pueden llegar a ser tan importantes como la CPU.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 14

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

Hardware de Procesamiento de Datos (II)


Parte 3: Perifricos de entrada y salida
1. Introduccin
Los dispositivos de ingreso de datos posibilitan que los datos estn en la memoria principal para su
proceso. Desde el teclado convencional hasta sofisticados sensores que detectan temperaturas,
formas, estados, etc., todos ellos tienen como propsito hacer que los datos estn disponibles para
la CPU. Cuando mayor automaticidad exista para la captura de datos, evitando el ingreso manual por
parte de las personas, menor posibilidad de error habr para los resultados del procesamiento. La
vigencia de la frase garbage in garbage out (basura entra basura sale), es indiscutible.
Por otra parte, devolver los resultados en el medio adecuado, ya sea para visualizarlos o imprimirlos
inmediatamente, o para transmitirlos para otro proceso, requiere de dispositivos confiables y
seguros.
A continuacin se vern, las caractersticas distintivas de los principales medios de entrada y salida
de datos.
2. Perifricos de entrada/salida
Los perifricos de entrada-salida son componentes hardware que sirven para conectar la unidad
principal de la computadora con el mundo exterior: pueden leer la informacin que genera la
computadora (perifricos de salida), introducir datos en l para ser procesados (perifricos de
entrada) o ambas cosas (perifricos de entrada-salida). Por lo tanto. Cuantos ms perifricos tenga la
computadora, mayor cantidad de prestaciones podr ofrecer.

PC con varios perifricos de E/S habituales

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 1

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

Perifricos de entrada
o Teclado
o Ratn o Mouse
o Lpiz ptico
o Pantallas sensibles al tacto
o Escner
o Micrfono
Perifricos de salida
o Monitor
o Impresora
o Parlantes
Perifricos de entrada-salida
o Mdem

3. Perifricos de entrada
3.1. Teclado
Es el principal dispositivo de entrada para introducir texto y nmeros. Un teclado estndar incluye
aproximadamente 100 teclas; cada tecla enva una seal diferente a la CPU.
Distribucin de teclas en el teclado estndar
Los teclados para computadoras personales, se presentan en distintos modelos, pudiendo variar en
tamao, forma y apariencia, pero en la mayora de los ellos, las teclas estn distribuidas en una
forma casi idntica.
La distribucin de teclas ms comn usada en la actualidad se denomina QWERTY (se pronuncia
QUER-ti) porque las seis primeras letras de la hilera superior de letras son Q, W, E, R, T y Y. Se
comercializa tambin otra distribucin que buscar mayor eficiencia al acelerar el nmero de
pulsaciones por minuto, es el teclado llamado DVORAK. No es muy utilizado debido al fuerte arraigo
del teclado QWERTY que proviene de las primeras mquinas de escribir.
Cmo acepta la computadora informacin del teclado?
Al presionar una tecla, un pequeo chip dentro de la computadora o el teclado, llamado controlador
del teclado, detecta que una tecla ha sido presionada e inicia una serie de eventos en cadena que
coloca el cdigo del carcter en la memoria temporal del teclado, denominado, memoria temporal
del teclado o buffer. El controlador de teclado enva una solicitud de interrupcin a la CPU, cuando
reconoce la presin de una tecla.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 2

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

3.2. El ratn o mouse


Es un perifrico de entrada prcticamente obligatorio cuando se trabaja en entornos grficos como,
por ejemplo, el sistema operativo Windows.
Es un dispositivo para sealar, que permite controlar la posicin del cursor en la pantalla de manera
rpida y sencilla sin necesidad de utilizar el teclado.
Un ratn, tambin permite crear elementos grficos en la pantalla, como por ejemplo, lneas, curvas
y dibujo a mano alzada, manipular iconos y acceder ms fcilmente al uso de mens y cajas de
mensajes.
Aunque hay distintos tipo de ratones, todos ellos disponen de botones para ejecutar determinadas
operaciones.
Usar el ratn involucra tres tcnicas:
hacer 1 clic (seleccin del objeto)
hacer doble clic (ejecuta el programa representado por el icono)
arrastrar (edicin de arrastrar y soltar)
Hacer clic con el botn derecho del mouse abre el men contextual que contiene comandos y
acciones apropiadas para el objeto que est sealado.
Tipo de ratones: Mecnico, ptico, TrackBall, Trackpad
3.3. Lpiz ptico
Un lpiz electrnico permite al usuario escribir directamente en la pantalla de esta computadora
basada en esta tcnica (como algunas computadoras de mano o handhelds), o utilizar el lpiz como
un dispositivo para sealar, como un ratn, y seleccionar comandos.
Las lapiceras, generalmente no son usadas para introducir grandes cantidades de texto, debido a
que la tcnica para reconocer la escritura de las personas es tan compleja que no ha sido
perfeccionada a un grado confiable, aunque se sigue avanzando mucho en este terreno.

3.4. Pantallas sensibles al tacto


Las pantallas sensibles al tacto, trabajan mediante la presentacin de un men de opciones para
escoger, el hardware detecta la posicin del dedo en la pantalla.
Las pantallas sensibles al tacto son apropiadas en ambientes donde la tierra o el clima hacen
imposible el uso de teclados y dispositivos para sealar, y donde una interfaz sencilla e intuitiva es
importante. Ej. Ambientes industriales.
No son apropiadas para ingresar gran cantidad de informacin, son mejores en aplicaciones sencillas
como cajeros automticos o centros de informacin pblica

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 3

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

3.5. Detectores de cdigo de barras


Son dispositivos que convierten un patrn de barras impresas en los
productos a un nmero de producto, mediante una emisin de un
rayo de luz, generalmente un lser, que se refleja en la imagen del
cdigo de barra.
Un detector sensible a la luz identifica la imagen del cdigo de barra
por medio de las barras especiales en los dos extremos de la imagen.
Una vez identificado el cdigo de barras, convierte los patrones de
barras individuales en nmeros digitales. Las barras especiales en
ambos extremos de la imagen son diferentes para que el lector pueda saber si el cdigo de barras se
ley al derecho o al revs.

Elementos de un lector de cdigos de marca


3.6. Escner o digitalizadores de imgenes
Los digitalizadores de imgenes (scanners), convierten cualquier imagen en formas electrnicas al
reflejar luz en la imagen y detectar la intensidad del reflejo en cada punto.
3.6.1. Tipos de escner
 Media pgina o de mano: Tienen un ancho mximo de exploracin de 10,5 cm y para explorar
una superficie hay que desplazar el scanner con la mano.
 Pgina completa: Son similares a una pequea fotocopiadora: se introduce el documento o
imagen, se cierra la tapa y la luz rastreadora se encargar de explorar totalmente la superficie.

Escner de mano

Escner de mesa

3.6.2. Aplicaciones posibles con la digitalizacin de imgenes


Existen dos grandes familias de software de aplicacin:
-

Software de procesamiento de imgenes, manipula imgenes ledas por el digitalizador, como


por ejemplo, el programa Paint de Windows, Corel Photo Paint, Photo Shop.

Software para reconocimiento ptico de caracteres, OCR, convierte la imagen de texto en


formato texto manipulable por un procesador de texto.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 4

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

OCR (Optical Character Recognition) Reconocimiento ptico de Caracteres


Cuando se digitaliza una imagen, esta es guardada en la memoria de la computadora como un
archivo tipo mapa de bits (bitmap) o una malla de puntos, cada uno representado por uno o ms
bits.
El objetivo del software de OCR es traducir esta matriz de puntos a texto que puede ser interpretado
por la computadora como letras y nmeros, e interpretarse e incluirse en cualquier procesador de
textos.
Para traducir archivos de mapas de bits a texto, el OCR es un programa que lee esas imgenes
digitales y busca conjuntos de puntos que se asemejen a letras, a caracteres. El software de OCR es
extremadamente complejo porque es muy difcil hacer que una computadora reconozca un nmero
ilimitado de caracteres tipogrficos y fuentes. An as, ofrecen una efectividad de 99,9% real, es
decir, que si el documento es rastreado correctamente y no presenta manchas de impresin, estos
programas sern capaces de transformarlo en texto como si se hubiera tipeado desde el teclado e
inclusive, manteniendo la disposicin del mismo en la hoja y los formatos aplicados a los caracteres
(negrita, cursiva, etc.).
El procedimiento de conversin es el siguiente:
Papel
Con el
texto

Perifrico
Scanner

Imagen del
texto

Programa
OCR

Fichero de
texto
(ASCII)

3.7. Tabletas Digitalizadoras


Es un dispositivo de entrada que permite digitalizar figuras y grficos
vectoriales.
Una tableta consta de una superficie que contiene cientos de lneas
de cobre que forma una rejilla. Esta rejilla est conectada a una
computadora. Cada una de las lneas de cobre recibe pulsos
elctricos.
Se utiliza un lpiz especial o trazador conectado a la tableta que es
sensible a los pulsos para trazar los dibujos.
Una de las capacidades principales de este dispositivo es que permite
colocar un dibujo encima de la tarjeta y registrar los movimientos del lpiz, posibilitando una especie
de calcado del dibujo.
3.8. Sistema de captura de informacin hablada
Se utiliza un micrfono que transforma el lenguaje humano en seales elctricas, los patrones de
seales se transmiten al procesador donde se comparan con un diccionario de patrones que se
almacenan previamente. Cuando se encuentra una correspondencia razonable la palabra se
"reconoce" y la computadora produce la salida apropiada.
La mayor parte de los sistemas son dependientes del hablante, es decir, para que una persona
pueda utilizarlo debe adiestrar a la computadora para que reconozca su patrn de voz especfico.
Ejemplo de aplicacin Via Voice de IBM.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 5

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

3.9. Otra forma de ingreso de datos: Realidad Virtual


Desde el punto de vista de la tecnologa, la realidad virtual puede definirse como la suma de los
sistemas de hardware y de software que aspiran a construir una ilusin sensorial de estar presente
en otro ambiente, en otra realidad.
Representan una forma no convencional de ingreso de datos,
ms relacionada con los juegos que con el procesamiento de
informacin. Como el objetivo de estos sistemas es simular
todo tipo de sensaciones (visuales, auditivas, tctiles, etc.),
su entrada deben ser las reacciones corporales a estos estmulos:
guantes que detectan los movimientos de las manos, cascos que
registran los movimientos cerebrales, etc.
Ejemplo: La consola de videojuegos WII incorpora elementos que permiten manejar los mandos de
control con movimientos de la mano y de la cabeza.
4. Dispositivos de salida
Actualmente los tipos de salida ms utilizados son:
Monitores
Impresoras
Tarjetas de sonidos (parlantes)
4.1. Monitores
El monitor es el perifrico de salida ms importante porque sobre l se muestran de forma clara e
instantnea todos los datos que se necesitan para trabajar. Para que el monitor funcione
correctamente se necesita tener un controlador de video o placa de video que hace de intermediario
entre la computadora y el monitor.
Entonces, existen dos elementos importantes que determinan la calidad de la imagen:
el monitor
el controlador o placa de video.
Se utilizan dos tipos bsicos de monitores:
Monitor CRT (Tubo de Rayos Catdicos)
Monitor LCD (Pantalla de Cristal Lquido Liquid Cristal Display)
4.1.1. Monitor CRT
Externamente la pantalla que vemos est formada por una serie de puntos, cada uno de ellos
denominado pxel, que en su conjunto son los que permiten formar las imgenes. En los monitores
monocromos cada punto puede tomar una intensidad de luz, sin embargo, en los monitores color
cada pxel de pantalla est formado por tres puntos ms pequeos: uno para la intensidad del color
rojo, otro para el verde y otro para el azul. De esta manera, combinando los tres colores se puede
formar cualquier color con bastante precisin, Esta tcnica de composicin de colores se denomina
RGB (Red-Green-Blue).

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 6

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

Internamente, el monitor contiene un tubo de cristal que en su parte final tiene forma abombada o
cilndrica (ver figura), esta es la parte que vemos y que
llamamos pantalla. Del lado contrario, la pantalla tiene
una cubierta de fsforo, que es lo que provocar que los
puntos brillen con una determinada intensidad. En la
parte trasera del monitor, el tubo es ms estrecho y
aloja uno o tres caones de electrones que lanzan un
haz de electrones sobre la pantalla para excitar el
fsforo y hacer que ste emita luz.
En funcin de las seales recibidas desde la CPU, los
haces de electrones realizan una exploracin o barrido
de la pantalla, de izquierda a derecha y de arriba hacia abajo, haciendo brillar el fsforo. Este brillo
perdura por muy poco tiempo por lo que el haz de electrones debe hacer rpidamente barridos de
pantallas para mantener la imagen.

4.1.2. Monitor LCD o monitor de pantalla plana


Existen varios tipos de monitores planos, pero el ms comn es el
monitor de LCD. El LCD o cristal lquido, no emite luz, por lo que no
existe contraste suficiente entre las imgenes y su fondo para que sean
legibles bajo cualquier condicin.
En algunos casos se ilumina por atrs la pantalla, de modo que se pueda
leer ms fcilmente, pero la pantalla requiere de energa adicional, lo
que puede ser un problema para los equipos porttiles.
4.2. Controlador o placa de video
De manera resumida, es lo que transmite al monitor la informacin grfica que debe presentar en la
pantalla. Realiza dos operaciones:
-

Interpreta los datos que le llegan del procesador, ordenndolos y calculando para poder
presentarlos en la pantalla en forma de un rectngulo compuesto de puntos individuales de
diferentes colores (pixels).

Toma la salida de datos digitales resultante de ese proceso y la transforma en una seal
analgica que pueda entender el monitor.

Estos dos procesos suelen ser realizados por uno o ms chips: el microprocesador grfico (el cerebro
de la tarjeta grfica) y el conversor analgico-digital o RAMDAC, aunque en ocasiones existen chips
accesorios para otras funciones o bien se realizan todas por un nico chip.
4.2.1.

Capacidad de color de las placas de video


Bits
Colores
1
2
2
4
4
16
8
256
15
32.768 (32K)
16
65.536 (64K) High Color o color de alta densidad
24
16.777.216 (16,7 millones) True Color o Color verdadero
32
4.294.967.296 (4096 millones). Trabaja con la gama completa de CMYK

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 7

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

4.3. Impresoras
De acuerdo a la tecnologa de impresin, tres tipos ms comunes de impresoras son:
Matriz de puntos
Lser
Inyeccin de tinta.
4.3.1. Impresora Matriz de puntos
Una impresora de matriz de puntos crea imgenes con una cabeza de
impresin que recorre cada lnea, imprimiendo una serie de patrones
de puntos.
Las agujas de una impresora de matriz de puntos estn acomodadas
en una columna en la cabeza de impresin.
A medida que se mueve la cabeza de impresin hacia adelante y hacia atrs sobre el papel diferentes
arreglos de agujas van saliendo rpidamente y hacen presin sobre una cinta entintada, con una
resolucin vertical mxima de nueve puntos. Hoy, muchas impresoras de matriz de puntos tienen 24
agujas, que producen una imagen de carcter de muy alta calidad.
En comparacin con las impresoras lser y de inyeccin de tinta:
Son ruidosas.
Producen generalmente una impresin de ms baja calidad
Son por mucho las ms baratas, en trminos de costo inicial y costo de operacin.
Siguen siendo tiles para determinados trabajos.
Proporcionan mltiples copias, utilizadas con formas mltiples como cheques, formas de
embarque y facturas, porque dependen del impacto para transferir los caracteres impresos de una
copia a otra.
4.3.2. Impresoras lser
Las impresoras lser, se caracterizan por contener un lser en el interior de estas mquinas.
Generalmente, tiene su propio microprocesador para realizar operaciones ms complejas.
Del mismo modo que el can de electrones puede seleccionar cualquier pixel en un motor grfico,
el lser en una impresora puede seleccionar cualquier punto en un tambor y crear una carga
elctrica.
El tner, compuesto de pequeas partculas de tinta con cargas elctricas opuestas, se adhiere al
tambor en los lugares que fueron cargados elctricamente por el lser. Luego, con presin y calor, se
transfiere el tner del tambor al papel.
Las impresoras lser, tienen una
memoria especial para guardar las
imgenes que imprime.
Son las ms caras del mercado.
Son ms rpidas y muy silenciosas.
La velocidad de impresin se mide
por nmero de pginas por minutos.
La calidad de impresin es mayor. La
resolucin de las impresoras lser se
mide en puntos por pulgada (dots per
inch DPI)

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 8

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

4.3.3. Impresoras de inyeccin de tinta


La cabeza de impresin de una impresora de inyeccin de tinta contiene hasta 64 pequeas
boquillas. A medida que la cabeza de impresin recorre horizontalmente el papel, cada boquilla
inyecta finas rfagas de tinta de secado rpido.
La calidad de impresin es bastante alta, proveen una resolucin de impresin alrededor de 300
puntos por pulgada.
Son silenciosas y convenientes, pero no son muy rpidas.
Generalmente, es ms cara que una impresora de matriz de puntos, pero cuesta slo la mitad de
lo que cuestan las impresoras lser.

4.4. Graficadores
El Graficador (o plotter) es un tipo especial de dispositivo de salida. Los
plotters estn diseados para producir grandes dibujos o imgenes,
como planos de construccin para edificios o heliogrficas de objetos
mecnicos, entre otros ejemplos.
Emplea un brazo de robot para dibujar, con plumas de colores, sobre
papel de tamao grande. En algunas impresoras grficas, el brazo
recoge cada pluma en forma individual.
4.5. Tarjetas de sonidos, parlantes y micrfonos
Son usados para ingresar o dar salida de sonido o msica de
cierta complejidad. El tratamiento digital del sonido comenz con
los Compac Disk (CD).
Para digitalizar un sonido lo que se hace es tomar una muestra de
la cancin cada cierto tiempo y almacenar ese valor, codificado en
binario. Para que el sonido sea de mejor calidad es mejor que se
muestree a mucha velocidad (gran frecuencia de muestreo) y de
cada muestra se guarde mucha informacin (muchos bits).
La tarjeta de sonido provee las entradas o salidas de los distintos
dispositivos relacionados con el sonido (micrfono, parlantes,
instrumentos MIDI, etc,), tal como se ve en la imagen.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 9

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

Parte 4: Dispositivos de almacenamiento secundario


1. Introduccin
El propsito de los dispositivos de almacenamiento es el almacenamiento y recuperacin de la
informacin de forma automtica y eficiente.
El almacenamiento se relaciona con dos procesos:
Escritura o grabacin de datos para que ms tarde se puedan recuperar y utilizar.
Lectura de datos almacenados para luego transferirlos a la memoria de la computadora.
Los materiales fsicos en donde se almacenan los datos se conocen como medios o soporte de
almacenamiento. Los componentes del hardware que escriben en los medios de almacenamiento o
leen datos de ellos se conocen como dispositivos de almacenamiento. Por ejemplo, un disquete un
CD son medios o soportes de almacenamientos, una unidad de disquete o unidad de CD son
dispositivos, que realizan la lectura o escritura en esos soportes.
Los medios de almacenamiento han evolucionado en forma notable desde las primeras
computadoras. En la actualidad existe una gran variedad tecnologas y dispositivos nuevos, pero el
disco rgido sigue siendo el almacn principal de la informacin en la computadora.
2. Tipos de Dispositivos
Las dos principales categoras de tecnologas de almacenamiento que se utilizan en la actualidad son
el almacenamiento magntico y el almacenamiento ptico. A pesar de que la mayora de los
dispositivos y medios de almacenamiento emplean una tecnologa la otra, algunos utilizan ambas.
Una tercera categora de almacenamiento (almacenamiento de estado slido) se utiliza con mayor
frecuencia en los sistemas de computacin, pero es ms comn en cmaras digitales y reproductores
de medios.
En funcin de la tecnologa utilizada para el almacenamiento se clasifican en:


Dispositivos magnticos
-

Disco magntico (discos rgidos, disquetes, Zip, Jaz)

Cinta magntica

Dispositivos pticos:
-

Disco compacto (CD)

Disco digital verstil (DVD)

Dispositivos de almacenamiento electrnico de estado slido


-

Discos duros

Tarjetas para cmaras digitales, reproductores de audio y video, pen-drive

A continuacin se muestran imgenes de los distintos soportes.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 10

Teora Algoritmos y Estructuras de Datos I - 2012

disquetes
disco rgido

Unidad zip

CD-ROM

DVD

MO-Mini disc

disco duro

Pen drive

Memoria flash

9-2

Cinta magntica
Unidad jaz

2.1. Dispositivos de almacenamiento magntico


Debido a que todos ellos utilizan el mismo medio (el material donde se almacenan los datos), las
unidades de disquete, las de disco duro, las de discos flexibles de alta capacidad y las de cinta
magntica utilizan tcnicas similares para leer y escribir datos.
Cmo funcionan los dispositivos Magnticos
Los dispositivos de almacenamiento magntico utilizan el mismo principio para almacenar
informacin. As como un transistor puede representar la informacin binaria como "apagado" o
"encendido", la orientacin del campo magntico puede ser utilizada para representar datos. El imn
tiene una ventaja importante sobre el transistor: mantiene su polaridad sin una fuente continua de
electricidad.
Para que la informacin pueda ser almacenada, las superficies de los discos y cintas magnticas estn
cubiertas con millones de diminutas partculas de hierro. Cada una de estas partculas puede actuar
como un imn, adquiriendo un campo magntico cuando se somete a un electroimn.
La informacin se escribe en el medio de la siguiente forma: las cabezas de lectura/escritura de una
unidad de disco o de cinta contienen electroimanes que cargan las partculas de hierro en el medio
de almacenamiento cuando ste pasa por la cabeza. Las cabezas de lectura/escritura graban cadenas
de 1 y 0 cuando se alterna la direccin de la corriente en los electroimanes.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 11

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

Para leer la informacin de una superficie magntica, el proceso se invierte. Las cabezas de
lectura/escritura pasan sobre el disco o la cinta sin flujo de corriente en el electroimn. Debido a que
el medio de almacenamiento tiene una carga magntica pero la cabeza no, el medio de
almacenamiento carga al imn en la cabeza, lo que causa el flujo de una pequea corriente a travs
de la bobina en una u otra direccin, dependiendo de la polaridad de las partculas. La unidad de
almacenamiento percibe la direccin del flujo cuando el medio de almacenamiento pasa por la
cabeza y los datos se envan de la cabeza de lectura/escritura a la memoria.

Si bien existen varios soportes magnticos, describiremos las caractersticas del disco rgido dado
que es el principal dispositivo de almacenamiento para todas las computadoras.
2.1.1. Discos Rgidos
Debido a que almacena mucha informacin, algunas veces se le llama dispositivo de
almacenamiento masivo, al igual que a la cinta, discos pticos y otros medios que pueden almacenar
una gran cantidad de informacin.
a) Caractersticas fsicas
Un disco duro incluye uno o ms platos montados en un eje central. Cada plato est cubierto por una
capa magntica y la unidad entera est encerrada en un compartimiento sellado.
Los discos rgidos ms pequeos que se ofrecen en la actualidad pueden almacenar ms de 80 GB,
los ms grandes almacenan 200 GB o ms. Las capacidades mnimas cambian constantemente.
Los discos rgidos de la mayora de las PC giran con una velocidad de 3.600, 7.200 10.000
revoluciones por minuto (rpm). Los discos de alto desempeo, como los de estaciones de trabajo y
servidores pueden girar a 15.000 rpm. La velocidad con la que giran los discos es un factor
importante en el desempeo general de la unidad. La alta velocidad de rotacin de los discos permite
que se graben ms datos en la superficie del disco. Esto se debe a que un disco que gira ms rpido
puede utilizar cargas magnticas ms pequeas para crear flujo de corriente elctrica en la cabeza de
lectura escritura.
Al igual que los disquetes, los discos duran generalmente 512 bytes por sector.
Los discos rgidos estn compuestos por partes mecnicas y partes electrnicas. Vamos a comenzar
analizando las caractersticas fsicas del mismo, para luego interiorizarnos en su estructura mecnica
y finalmente analizar el funcionamiento electrnico.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 12

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

b) Estructura interna
Un disco rgido es una unidad cerrada, por lo tanto, el medio en donde se graban los datos no puede
ser retirado, sino que se encuentra en forma permanente dentro de una caja cerrada
hermticamente. Los discos rgidos se componen internamente por las siguientes partes:
1. Uno o varios platos
2. El eje y el motor
3. Cabezales de lectura y escritura
4. El brazo actuador o posicionador de las cabezas.
5. Los circuitos electrnicos de control

3
1
4
5

1. Los platos
El disco rgido est compuesto por uno o varios platos en los cuales se almacena la informacin. Estos
platos metlicos estn apilados unos sobre otros, con separaciones muy pequeas entre s. Los
platos pueden ser de metal (aluminio en la mayora de los casos), plstico o vidrio y estn cubiertos a
ambos lados con un finsimo polvillo de xido de hierro, o una pelcula fina de metal, siendo ambas
sustancias magnticas.
2. El eje y el motor
Los platos estn unidos a un eje central, el cual est unido a un motor. Este motor hace girar el eje
junto con los platos a una velocidad de ms 3.600 revoluciones por minuto. Esto se conoce como
velocidad de rotacin del disco.
Los platos giran a dicha velocidad constantemente, desde que se enciende la computadora hasta que
se corte el suministro elctrico. Los platos se mantienen girando aunque no haya accesos de
informacin para evitar el tiempo que lleva situar los platos a su velocidad de rotacin antes de cada
acceso. En algunos casos, los discos rgidos dejan de girar cuando detectan que no hay
requerimientos de accesos.
3. Cabezales de lectura y escritura
La cabeza de un disco es un dispositivo electromagntico capaz de leer, escribir y borrar datos en
medios magnticos. Los cabezales de lectura y escritura se posicionan a ambos lados de cada plato y
si hay ms de un plato, se ubican en el espacio que hay entre stos, accediendo de esta manera a
ambas superficies de los mismos: la superior y la inferior. Esto significa que la cantidad de cabezales
que componen un disco rgido ser el doble que la cantidad de platos.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 13

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

4. El brazo actuador o posicionador de las cabezas


Todos los cabezales van conectados a un brazo mecnico, conocido como brazo actuador o
posicionador de las cabezas. Los cabezales de los discos no pueden posicionarse
independientemente, sino que se desplazan en conjunto en forma sincronizada, aunque slo uno de
ellos puede entrar en accin por vez. El brazo posicionador es el encargado de trasladar los brazos a
la pista deseada.
Los cabezales de lectura y escritura no se tocan con la superficie de los platos cuando stos giran,
debido a que si esto sucede a las velocidades de la rotacin de los mismos se producirn daos
irreparables en la superficie del mismo.
Debido a la alta velocidad de rotacin de los platos, las corrientes de aire generadas hacen que el
cabezal levante vuelo y se mantenga a una altura constante mientras sigan girando los platos. El
fenmeno descrito anteriormente, recibe el nombre de efecto Bernoulli, en honor al fsico suizo del
mismo nombre, por sus trabajos de investigacin de los efectos de las corrientes de aire.

Las superficies de los platos estn lubricadas para minimizar el desgaste durante el encendido y
apagado del disco rgido, siendo estas las nicas veces que los cabezales tienen el mnimo contacto
con las superficies de los platos.
La carcaza que esconde la estructura interna de los discos est cerrada hermticamente para evitar
el contacto con elementos del ambiente, como el polvo, humo, etc. Dado que si llegara a ingresar
cualquier partcula, por muy pequea que sea, podra provocar el choque del cabezal con la
superficie del disco provocando daos irreparables.
c) Organizacin de los datos en un disco magntico
Antes de que la computadora pueda utilizar un disco magntico para almacenar datos, la superficie
del disco debe estar magnticamente diseada para que la computadora pueda acceder a un punto
especfico sobre ella sin tener que buscar en todo el disco. Debido a que las cabezas de lectura y
grabacin pueden ir cualquier punto de la superficie del disco para leer o escribir datos, los discos
magnticos caen en la categora de dispositivos de almacenamiento de acceso aleatorio.
El proceso de asignar un disco se conoce como formato o inicializacin. Se necesita formatear un
disco cuando se adquiere uno nuevo cuando se desea eliminar todos los datos de un disco y
detectar partes daadas. Este proceso recibe tambin el nombre de formateo a bajo nivel y consiste
en adecuar la pelcula magntica de todas las superficies de los platos para que quede
convenientemente organizada para que sea posible grabarle informacin.
Primero se divide cada plato en pistas (crculos concntricos), tambin llamados cilindros (cuando se
trata de una pila de discos, el cilindro designa al conjunto de todas las pistas que estn en la misma
vertical del disco, es decir, las pistas que estn a la misma distancia del eje de giro). La cantidad de
pistas que concentren los platos depender de la densidad de pista determinada por los procesos de
fabricacin. Las pistas se numeran desde o desde las ms externas a las ms internas.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 14

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

La densidad de pista es el parmetro tcnico de los discos rgidos que indica la cantidad de pistas que
se concentran en un espacio determinado, lo comn son discos
con 2.950 tpi (tracks per inch) o ppp (pistas por pulgadas).
En la segunda parte del formateo, las pistas se dividen a su vez en
forma radial en sectores, como los pedazos de una torta. Los
sectores almacenan fsicamente los datos en el disco.
Normalmente, cada sector almacena 512 bytes, excepto los
discos de alto rendimiento que tienen sectores de 1024 bytes.
Todos los sectores estn numerados de manera tal que la
computadora pueda acceder a cada rea pequea del disco
utilizando un nmero nico.
Un sector es la unidad ms pequea con la que cualquier unidad
de disco magntico puede trabajar. Una unidad puede leer o
grabar solo sectores completos.
Antes las pistas podan dividirse solamente en una misma cantidad de sectores por pista. Los discos
actuales aprovechan mejor el espacio del disco, colocando ms
sectores en las pistas ms externas. Las especificaciones
tcnicas en estos casos indican valores de, por ejemplo, 58 a
118, lo que significa que la pista ms cercana al centro de los
platos estar dividida en 58 sectores y la pista ms cercana al
borde en 118 sectores. Esta arquitectura complica bastante ms
los circuitos de control de la unidad, pero aprovecha toda la
superficie.
d) Mecanismo de acceso a los datos
A travs de las cabezas (una para cada lado de los platos),
cilindros y sectores, se puede acceder a una zona concreta del
disco. Por ejemplo, Cilindro 15, cara inferior del plato 2, sector
12, servira para indicar el punto al que se quiere acceder.

Ventajas
Acceso directo
Gran velocidad de acceso
Gran capacidad de almacenamiento
Confiables

Desventajas
Generalmente NO removibles
Caros
Delicados

2.2. Dispositivos de almacenamiento ptico


La continua necesidad de mayores capacidades de almacenamiento, ha llevado a los fabricantes de
hardware a una bsqueda continua de medios de almacenamiento.
Los dispositivos de almacenamiento pticos se llaman as porque almacenan datos en una superficie
reflectora de manera que puede leerlos un rayo de luz lser. Un lser utiliza un rayo de luz angosta y
concentrada que se enfoca y dirige con lentes, prismas y espejos.
A diferencia de los medios magnticos donde cualquier punto en la superficie es fsicamente igual a
cualquier otro, aun cuando haya informacin en l, en los medios pticos, la superficie est
fsicamente perforada para reflejar o dispersar la luz del lser.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 15

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

2.2.1. CD- ROM


El dispositivo ptico ms conocido es el CD-ROM (disco compacto de memoria de slo lectura),
unidad que utiliza la misma tecnologa que un reproductor de discos compactos de audio.
Es ms, si se posee una tarjeta de sonido y parlantes conectados a la computadora, se podr
escuchar discos compactos en ella.
El CD-ROM es especialmente apropiado para muchas aplicaciones que incluyen grandes volmenes
de informacin que raramente cambia. Por ejemplo, diccionarios, enciclopedias, bibliotecas de
referencia de medicina, de leyes u otras carreras, msica, vdeo y paquetes de software comercial.
Una unidad de CD-ROM lee los datos digitales (datos audio) de un disco que gira al enfocar un lser
hacia la superficie del disco. Algunas reas del disco reflejan la luz lser en un sensor y otras reas
dispersan la luz. Un reflejo del rayo lser en el sensor se interpreta como un 1 y la ausencia del
reflejo se interpreta como 0.
Los datos se ubican en un CD ROM en una espiral larga y continua. Los datos se almacenan en forma
de zonas, es decir reas planas sobre la superficie de metal y marcas, es decir, depresiones y huecos.

Un disco compacto estndar puede almacenar 650 MB de informacin aproximadamente 70


minutos de audio. Una generacin ms nueva contiene 700 MB de datos y 80 minutos de audio.
Comparadas con las unidades de disco duro, las unidades de CD-ROM son lentas. Al igual que los
discos, en un CD-ROM la pista se divide en sectores pero estos sectores se despliegan de una forma
diferente. Un CD-ROM slo tiene una pista de forma espiral de unos 34 km de largo. En esta pista se
graban los datos en bloques del mismo tamao (sectores).
La informacin se almacena gracias a un lser de gran potencia que desgasta la superficie de un CD
virgen produciendo una serie de hendiduras que luego sern interpretadas por otro lser de menor
intensidad, mirando el reflejo de este haz de luz. El disco de aluminio est recubierto por una capa de
plstico, que evita que se raye la superficie de aluminio.
Uno de los mayores problemas es que el polvo y la suciedad afecta negativamente el funcionamiento
del lser y del resto de lentes.
Ventajas
Acceso directo

Desventajas
No reutilizables

Gran capacidad No muy rpidos


Baratos

Poco fiables (sobre todo a largo plazo)

Resistentes

El polvo/suciedad afecta a las lentes.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 16

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

2.2.2. DVD Disco de Video digital


Un DVD-ROM es un medio de alta capacidad capaz de almacenar una pelcula de larga duracin en
un solo disco del mismo tamao que un CD. Para lograr esta gran capacidad el DVD-ROM utiliza
ambos lados del disco, tecnologas especiales de compresin de datos y pistas muy pequeas para
almacenar los datos.
La ltima generacin de discos DVD-ROM utiliza capas de pistas de datos lo que duplica sus
capacidades. El rayo lser del dispositivo es capaz de leer datos de la primera capa y luego mirar a
travs de ella para leer datos de la segunda capa.
Debido a que cada lado de un disco DVD-ROM puede contener hasta 4,7 GB (7 veces ms que un CD
convencional), estos discos pueden contener hasta 9,4 GB. Los discos DVD de doble capa pueden
contener hasta 17 GB
Los pocitos del DVD ocupan la mitad del espacio que ocupan los de un CD y la distancia entre las
pistas tambin es mucho menor por lo que el DVD posee una densidad de datos de casi 35.000 TPI
(track per inch) , tal como se ve en la siguiente figura.

2.3. Dispositivos de almacenamiento de estado slido


Los dispositivos de almacenamiento de estado slido se distinguen entre los dispositivos de
almacenamiento porque no utilizan discos cintas y no tienen partes movibles. El almacenamiento
de estado slido no es ni magntico ni ptico. Depende de circuitos integrados para almacenar los
datos. En general, son no voltiles, esto quiere decir que no necesitan energa elctrica para retener
sus datos.
El almacenamiento magntico u ptico estndar es menos costoso y ms confiable que el estado
slido, sin embargo, stos tienen una gran ventaja: la velocidad. No tienen partes movibles y pueden
acceder a los datos ms rpidamente.
2.3.1. Memoria flash
La memoria flash es un tipo especial de chip de memoria que combina las ventajas de la RAM y la
ROM. Al igual que la RAM, la memoria flash permite acceder a los datos de manera aleatoria,
asimismo, permite sobrescribir cualquier parte o todo el contenido en cualquier momento. Igual que
la ROM, la memoria es flash es no voltil, por lo que puede mantener los datos sin necesidad de
provisin continua de energa elctrica.
La memoria flash tiene muchos usos. Se utiliza para el almacenamiento de las imgenes en una
cmara digital, en los reproductores multimedia como el MP3 y MP4. Los pen-drive proveen la
facilidad de transportar los datos de un equipo a otro. Se conectan a travs del puerto USB Fire
Wire de la computadora.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 17

Teora Algoritmos y Estructuras de Datos I - 2012

9-2

3. Medicin del desempeo de los dispositivos de almacenamiento


Un factor importante para medir el desempeo general de un sistema es la velocidad con la que
operan las unidades de disco de la computadora..
Cuando se evala el desempeo de los dispositivos comunes de almacenamiento se necesita conocer
dos medidas comunes: el tiempo promedio de acceso y el rango de transferencia de informacin.
3.1. Tiempo promedio de acceso
El tiempo promedio de acceso de un dispositivo, es la cantidad de tiempo que le toma posicionar las
cabezas de lectura / escritura en cualquier punto del medio de grabacin.
El tiempo promedio de acceso es una medida importante del desempeo de dispositivos de
almacenamiento y memoria. Por las caractersticas de sus componentes, en los dispositivos de
almacenamiento el tiempo de acceso se mide en milisegundos (ms), milsimas de segundos. En los
dispositivos de memoria, los tiempos de accesos se miden en nanosegundos (ns), mil millonsimas
de un segundo.
En una unidad de disco, el tiempo de acceso depende de la combinacin de dos factores: la velocidad
a la cual gira un disco (en RPM) y el tiempo que le toma mover las cabezas de una pista a la otra.
El tiempo promedio de acceso para los discos duros puede variar ampliamente, pero la mayora de
las unidades funcionan a velocidades de 6 a 12 ms. Algunas unidades de alto rendimiento tienen un
tiempo de acceso de 4 a 5 milisegundos.
Para las unidades CD-ROM el tiempo de acceso tiende a ser muy lento comparado con los estndares
de las unidades de disco duro, variando de 100 a 300 milisegundos.
Las unidades de cinta magntica tienen el tiempo de acceso ms largo que cualquier otro dispositivo,
dependiendo del tipo de la unidad y formato que se utilice, las unidades de cinta pueden ocupar
desde unos cuantos segundos hasta varios minutos para encontrar un fragmento especfico de datos
en la superficie de la cinta.
3.2. Velocidad promedio de transferencia de datos
La otra estadstica importante para medir el desempeo de la unidad es la velocidad a la cual se
transfieren los datos, esto es, cunto tarda en leer y escribir informacin.
Las velocidades se expresan como una cantidad como una cantidad por unidad de tiempo. Cuando
se mide la velocidad de transferencia de datos, la unidad de tiempo es siempre el segundo, pero las
unidades de informacin pueden ser medidas en bytes, KB o MB.
Al igual que el tiempo de acceso, las velocidades de transferencia de datos pueden variar mucho de
un dispositivo a otro. Las velocidades de los discos duros suelen ser altas, desde 15 MBps para los
sistemas hogareos hasta 80 MBps y superiores para las unidades ms rpidas, diseadas para
servidores de alto desempeo. Por ejemplo, los CD-ROM tienen un rango que va de 300 KBps hasta
900 KBps.
3.3. Interfaces para discos rgidos
Un controlador de disco conecta la unidad de disco con el bus de la computadora, actuando como
una interfaz entre los dos y permitiendo que la unidad intercambie datos con otros dispositivos
Actualmente la mayora de las computadoras personales utiliza uno de estos estndares: EIDE
(Enhanced IDE) y SCSI (Small Computer System Interface).
Otros dos tipos de interfaz, Bus Serial Universal (USB) e IEEE 1394 Fire Wire, permiten conectar
unidades de discos adicionales y otros dispositivos a la computadora.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 18

Teora Algoritmos y Estructuras de Datos I - 2012

10

Software y lenguajes de programacin


1. Introduccin.
En un sistema informtico, para que el hardware o parte material pueda realizar el trabajo para el
que ha sido construido, es necesario tener un conjunto de normas y rdenes que coordinen todos los
procesos que se realicen. Este conjunto de rdenes se denomina software del sistema. Por ello, a
travs del software (integrado por un gran nmero de programas que interactan unos con otros)
pueden ser manejados todos los recursos de un sistema informtico para resolver cualquier
problema.
El trmino software (del ingls: producto etreo, pensamiento), lo constituye un conjunto de ideas,
producto de la inteligencia de las personas para solucionar problemas de muy diversos tipos.
Todos los programas que conforman el software pueden ser divididos en dos grupos bien
diferenciados, segn su funcin:

Software de sistema. Compuesto por el conjunto de programas imprescindibles para el


funcionamiento del hardware, ms otros programas cuya misin es la de facilitar el uso del
sistema y optimizar sus recursos. Entre estos se destaca el sistema operativo como elemento
fundamental para el funcionamiento de una computadora.

Software de aplicacin. Es el conjunto de programas que se desarrollan para que una


computadora realice cualquier trabajo controlado por el usuario. Estos programas pueden ser de
uso estandarizado, como por ejemplo, los procesadores de texto, planillas de clculo, etc, o
diseados para un uso especfico como, por ejemplo, un programa de monitoreo cardaco, un
programa de gestin contable, etc.

En la figura siguiente se representa grficamente la relacin entre los dos grupos anteriores y el
hardware de un sistema.

La siguiente tabla muestra la clasificacin del software y los principales componentes de cada
categora.
Software
Software de sistema
Software de aplicacin
Sistemas operativos

Software estndar

Programas traductores
Software a medida
Programas de mantenimiento del
sistema
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 1

Teora Algoritmos y Estructuras de Datos I - 2012

2.
2.1.

10

Software de sistema
Sistemas Operativos

Un sistema operativo (SO) OS (System Operating) en un programa pero un programa diferente al


resto de los programas que pueden encontrarse en una PC.
El sistema operativo es el software que controla el hardware del sistema e interacta con el usuario y
el software de aplicaciones. El SO es el programa de control principal de la computadora. El SO
proporciona las herramientas (comandos) que permiten la interaccin del usuario con la
computadora, traduce el comando en cdigo que la computadora pueda entender y asegura que el
resultado de las acciones se muestre en la pantalla o en la impresora, por ejemplo.
Entonces, como interfaz del usuario con la computadora:
Un sistema operativo es un conjunto de programas y funciones que controlan el funcionamiento del
hardware ocultando sus detalles, ofreciendo al usuario una va sencilla y flexible de acceso a la
computadora.

Por otra parte, una computadora es una mquina que posee un conjunto de elementos,
denominados recursos, que deben ser racionalmente distribuidos y utilizados para obtener de ellos
el mejor rendimiento. Estos recursos son los siguientes:

El procesador. Es el encargado de ejecutar las instrucciones y por ello debe deben controlarse los
programas que se ejecuten y su secuenciamiento.

La memoria interna. Todo programa que se ejecute en una computadora, as como todo dato
que se desee procesar, debe residir en la memoria interna, por tanto, es necesario regular su uso
y ocupacin.

La entrada/salida. Todo programa, en general, necesita realizar operaciones de entrada/salida


sobre sus unidades perifricas para el control y direccionamiento de las mismas.

La informacin. Los datos, sus tipos, tamaos y mtodos de representacin tienen que estar
perfectamente controlados para evitar operaciones errneas o falsas interpretaciones.

Desde el punto de vista del control de los recursos de una computadora podemos establecer la
siguiente definicin:
Un sistema operativo es el administrador de los recursos ofrecidos por el hardware para alcanzar un
eficaz rendimiento de los mismos.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 2

Teora Algoritmos y Estructuras de Datos I - 2012

10

2.1.1. Funciones del sistema operativo


De acuerdo a lo descripto anteriormente, un SO realiza las siguientes funciones bsicas:

Despliega los elementos de la pantalla que conforman la interfaz de usuario.

Carga los programas (por ejemplo, un procesador de texto, una planilla de clculo, un navegador
de Internet, un juego, un reproductor de MP3) en la memoria de la computadora de manera que
se puedan utilizar.

Coordina la forma en que los programas trabajan con el hardware de la computadora y con otros
tipos de programas.

Controla la manera en que se almacena y recupera la informacin de los discos u otros soportes
de almacenamiento de datos.

2.1.2. Tipos de sistemas operativos


Los sistemas operativos se pueden organizar en cuatro tipos principales:
Sistemas operativos de tiempo real: Es un SO rpido y relativamente pequeo. Generalmente estn
integrados en los circuitos de un dispositivo. Son necesarios en aplicaciones de tiempo real, como
por ejemplo, equipos de diagnstico mdico, localizacin de vehculos GPS (Global Positioning
System), instrumentos cientficos y sistemas industriales, entre otros.
Sistemas operativos monousuario/monotarea: Permiten que un usuario realice una tarea a la vez,
esto es que slo puede realizar un proceso por vez. Ejemplos: MS-DOS, Palm OS. Se utilizan en casos
especficos porque tienen la ventaja de ocupar poco espacio en disco o en la memoria cuando se
estn ejecutando y no requieren de una computadora poderosa y costosa.
Sistemas operativos monousuario/multitareas: Permiten que un solo usuario realice dos ms
funciones a la vez. Las computadoras personales actuales utilizan este tipo de SO, entre los que se
incluyen Windows de Microsoft, el sistema operativo Macintosh y Linux.
Las caractersticas de multitarea de estos sistemas operativos incrementan la productividad de las
personas, al poder ejecutar varios programas en el mismo momento. Como desventajas, podra
mencionarse el tamao y la complejidad crecientes que necesitan para proporcionar soporte a las
mltiples tareas.
Sistemas operativos multiusuarios/multitareas: Permiten que mltiples usuarios ejecuten
programas que funcionen de manera simultnea en un solo servidor de red. El sistema operativo le
ofrece a cada usuario un entorno completo llamado sesin de usuario en el servidor. Cada aplicacin
de usuario se ejecuta dentro de su propia sesin de usuario dentro del servidor de manera separada
de las dems sesiones de usuario. La ventaja de este tipo es que pueden administrarse haciendo
cambios en el servidor en lugar de hacerlo en cada una de las computadoras de escritorio.
2.1.3. Interfaz de usuario
La interfaz de usuario est constituida por un conjunto de elementos que estn en la pantalla. Los
dos tipos ms comunes de interfaz de usuario son las grficas y las de lnea de comando.
a)

Interfaz grfica de usuario

La mayora de los sistemas operativos actuales, proporcionan una interfaz grfica de usuario GUI
(Graphic User Interface).
Una GUI tiene ese nombre porque utiliza el mouse ( algn otro tipo de dispositivo de sealamiento)
para trabajar con objetos grficos (por ejemplo, ventanas, mens, iconos, botones y otras
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 3

Teora Algoritmos y Estructuras de Datos I - 2012

10

herramientas. Estas herramientas grficas representan distintos tipos de comandos. La ventaja de las
GUI es que permiten emitir comandos a la computadora a travs de la utilizacin de objetos visuales
en lugar de escribir comandos.
Windows es una de las distintas GUI que utiliza la metfora de escritorio. El fondo de la GUI es el
escritorio, ste tiene herramientas grficas y puede almacenar su trabajo.
Las imgenes pequeas o iconos, llamados tambin accesos directos, representan vnculos a los
recursos de la PC o en una red. Por ejemplo, programas, carpetas, archivos.
b)

Interfaz de lnea de comando

Algunos sistemas operativos incluyen una interfaz de lnea de comandos, la cual utiliza comandos
escritos en lugar de lugar de objetos grficos para ejecutar tareas.
La mayora de las personas prefieren trabajar con una interfaz grfica pero la interfaz de lnea de
comandos es ms rpida para introducir comandos.
2.1.4. Ejecucin de programas
El sistema operativo, adems de oficiar de interfaz entre los programas de aplicacin y el usuario, lo
hace tambin entre esos programas y otros recursos de la computadora, por ejemplo, la memoria, la
impresora u otro programa. Los programadores escriben programas con instrucciones integradas
conocidas cono llamadas al sistema. Por ejemplo, cuando un programa necesita acceder a un
archivo hace una llamada al SO, quin cumple con el pedido y devuelve el control a la aplicacin.
Algunas de las tareas que los SO realizan como servicio a los programas son:
-

Guardar el contenido de los archivos en el disco.

Leer un archivo y disco y colocar los datos en la memoria

Enviar un documento a la impresora y activarla.

Asignar la RAM entre los programas que se ejecutan

Reconocer las teclas que se han presionado o los clic del mouse y desplegar caracteres o
imgenes en la pantalla.

2.1.5. Compartir informacin


Para que las aplicaciones compartan informacin, por ejemplo agregar un grfico Excel en un
documento Word, algunos sistemas operativos realizan esta tarea mediante el Portapapeles.
El portapapeles es un espacio de almacenamiento temporal (dentro de la memoria de la
computadora) para los datos que se copian o mueven. Con el comando Copiar Cortar los datos se
guardan en el portapapeles y con el comando Pegar, se colocan en el lugar donde est posicionado el
cursor de insercin.
2.1.6. Administracin de hardware
Cuando los programas se ejecutan, necesitan utilizar la memoria, discos, monitor, impresora, etc. El
sistema operativo acta de intermedio entre los programas y el hardware. En una red de
computadoras, el sistema operativo tambin est entre su computadora y los dems dispositivos de
red.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 4

Teora Algoritmos y Estructuras de Datos I - 2012

10

2.2. Sistemas operativos para PC


La computadora personal (PC) ha evolucionado rpidamente en un tiempo relativamente corto y
mucho de su progreso se debe a los sistemas operativos. Estos programas han permitido que las
computadoras sean cada vez ms fciles de manejar, ms flexibles y ms confiables. Los sistemas
operativos se encuentran presente en las computadoras ms poderosas como as tambin en los
dispositivos de tipo handheld (PDA) y telfonos celulares.
Los sistemas operativos de PC utilizados en la actualidad son Windows, Linux y Macintosh (o Mac OS)
2.2.1. Sistemas operativos integrados
Un sistema operativo integrado es aquel que est integrado en los circuitos de los dispositivos
electrnicos, a diferencia de un sistema operativo para PC, el cual reside en un disco magntico.
Los sistemas operativos integrados se encuentran actualmente en una amplia variedad de
dispositivos, automviles, lectores de cdigos de barras, telfonos celulares, equipos mdicos,
asistentes digitales personales (PDA).
2.3.

Programas traductores

Para facilitar el trabajo de programacin y hacer los programas ms legibles, resolviendo las
limitaciones que presentan los lenguajes mquina, se han desarrollado lenguajes de programacin
que permiten utilizar una simbologa y terminologa prximas a las tradicionalmente utilizadas en la
descripcin de problemas. Estos lenguajes se denominan genricamente lenguajes simblicos.
Como la computadora nicamente puede interpretar y ejecutar cdigo mquina, existen programas
traductores, que traducen o trasladan programas desde el lenguaje simblico al lenguaje mquina.
En general existen traductores para convertir programas escritos en un lenguaje a otro. El programa
inicial se denomina programa fuente, y el programa obtenido tras el proceso de traduccin
programa objeto.
Existen dos tipos de traductores para los lenguajes de alto nivel:
2.3.1. Compiladores:
Convierten programas fuente escritos en lenguaje simblico de alto nivel en programas objeto
escritos en lenguaje mquina. Una caracterstica fundamental de este tipo de traductores es que se
realiza la traduccin completa, y en el caso de no existir errores se pasa a la creacin del programa
objeto. La traduccin del programa fuente se efecta, adems, de forma que cada instruccin del
programa fuente se transforma en una o ms instrucciones en el programa objeto. El proceso de
compilacin se completa con un proceso intermedio de montaje o linkedicin que incluye las rutinas
propias del lenguaje, que genera un programa listo para ser ejecutado que se denomina programa
ejecutable. En la siguiente figura se pueden ver los pasos de un proceso de compilacin:

Programa fuente
Traductor

Programa objeto
Montador

`
Programa objeto

Programa ejecutable

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 5

Teora Algoritmos y Estructuras de Datos I - 2012

10

2.3.2. Programas intrpretes:


Los intrpretes traducen el cdigo fuente lnea por lnea, sin generar programa objeto, y traduciendo
las instrucciones en comandos para el hardware. Son ms lentos que los compiladores, puesto que
tienen que interpretar una lnea cada vez que pasan por ella (en los compiladores cada lnea solo se
traduce una vez). Por otra parte, un intrprete facilita la bsqueda de errores dado que el programa
se interrumpe en un momento y se puede estudiar el entorno, es decir, los valores de las variables.
En la figura se muestra el proceso de interpretacin:
Programa fuente
Interprete

`
Traduccin y ejecucin
lnea a lnea
3. Software de aplicaciones
El software de aplicacin desva el enfoque de las computadora hacia las personas, porque est
diseado para ayudar a los usuarios a ser productivos, por esto este tipo de programas se conoce
tambin como software de productividad. Existen tantos tipos distintos de software de aplicacin
como tareas diferentes que se pueden realizar en una PC.
3.1. Software Estndar y Software a Medida
En los inicios de la Informtica, y durante bastante tiempo, se diseaba de forma especfica y aislada
todo el software que necesitaba cualquier entidad o empresa para cada actividad concreta que se
deba realizar con una computadora. Solamente las grandes organizaciones tenan la capacidad, el
personal y las grandes computadoras (mainframes) necesarios para poder disear y disponer de
estas aplicaciones, entre las cuales, se encuentran aplicaciones contables, financieras, estadsticas,
control de inventarios, nminas y otras muy diversas.
Con el avance y desarrollo de las tecnologas de la informacin se han identificado algunas de estas
aplicaciones de uso comn en la mayora de las organizaciones, como son el proceso de texto, hojas
de clculo, grficos estadsticos, etc., de manera tal que los fabricantes han diseado y puesto en el
mercado aplicaciones para ser utilizadas por un gran nmero de usuarios y en diferentes sistemas.
A estas aplicaciones de uso general se denomina software estndar, es decir, a aquellos programas
que se pueden adquirir en un comercio, dispuestos para su uso inmediato en una gran variedad de
sistemas, sin necesitar la intervencin de personal informtico.
3.2. Aplicaciones estndar
Existe en el mercado una numerosa gama de aplicaciones estndar cubriendo una gran cantidad de
actividades, desde juegos hasta sistemas de contabilidad y gestin de pequeas y medianas
empresas.
En general, los programas se comercializan en CD, acompaados de un Manual de Usuario y una Gua
de Referencia, junto con un contrato de proteccin legal del copyright, de tal manera que un usuario
no especializado en Informtica puede instalarlas en su computadora.
Dentro de los programas que se compran se pueden distinguir los siguientes tipos:
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 6

Teora Algoritmos y Estructuras de Datos I - 2012

10

3.2.1. Software comercial


En esta categora caen los programas que hay que pagar de alguna manera y pueden ser:
- Programas independientes: Corresponde a las aplicaciones que hacen un slo tipo de tareas,
por ejemplo, un programa de retoque fotogrfico (Photoshop).
- Suite o paquetes de software: Programas de uso frecuente, por ejemplo, procesadores de
texto, planillas de clculo, etc. Ejemplos: Office de Microsoft.
- Programas shareware: Generalmente corresponde a herramientas especficas que se
compran por una pequea suma de dinero para que el usuario pueda probarlo. En este caso,
el software se habilita una cierta cantidad de das y luego requiere su registracin.
3.2.2. Software Freeware y software de dominio pblico
Un software freeware es cualquier programa que se pone a disposicin de los usuarios en forma
gratuita. Es decir, el usuario no lo paga para usar pero no es dueo del software. Tanto en el caso de
software shareware y freeware, el autor original mantiene un inters de propiedad sobre el
producto, por lo tanto quien lo utiliza debe aceptar los trminos de una licencia que prohbe que se
hagan cambios al programa o venderlo a otra persona.
En el caso del software de dominio pblico, el cdigo fuente es gratuito y se puede utilizar para
cualquier propsito y cualquier persona.
3.2.3. Software de cdigo abierto (open source)
Es un software de cualquier tipo cuyo cdigo fuente est disponible para los usuarios en forma
editable, as como las distintas bibliotecas de desarrollo que se utilizan. Los usuarios u otros
desarrolladores de software pueden modificar este cdigo y personalizarlo siguiendo los
lineamientos dados por el autor original. Este tipo de software se puede ofrecer en forma comercial
o gratuita. Ejemplo, OpenOffice.org es una suite de aplicaciones de cdigo abierto.
3.2.4. Software de Ofimtica:
El software estndar ms difundido est compuesto por aplicaciones del rea de la Ofimtica
(programas orientados a la gestin de datos en las oficinas), tales como:

Procesador de textos

Hoja electrnica de clculo

Programas de presentacin

Gestor de base de datos

Programas para la planificacin de proyectos

Programas para la realizacin de grficos


3.3. El software a medida
Esta categora de software queda constituido por las aplicaciones especficas que por corresponder a
actividades ms especializadas es necesario encargar a los profesionales del software, como puede
ser un sistema de control de trfico o un sistema de monitorizacin de pacientes en un hospital. Este
tipo de software es ms caro pues est dirigido a un solo cliente.
4. Desarrollo o creacin de software
Cualquiera sea la categora del software, para la creacin del mismo se requiere que un programador
codifique las instrucciones que representan la solucin o programa que automatizar el
procesamiento de los datos de un determinado problema para lograr un resultado determinado. Por
ejemplo: la gestin contable de una empresa, un monitor cardaco, un video juego.
Repasaremos el concepto de programa y algunas de las extensiones ms usuales de archivos de
programas.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 7

Teora Algoritmos y Estructuras de Datos I - 2012

10

4.1. Qu es un programa de computadora?


Un programa de cmputo es un conjunto de instrucciones o declaraciones (tambin conocidas
como cdigo) que debe realizar la CPU de una computadora.
Un programa normalmente est compuesto de un mdulo principal y submdulos. Estos
mdulos estn almacenados como un conjunto de archivos; los programas grandes pueden
contener miles de archivos individuales, cada uno para un propsito especifico. Algunos de los
archivos contienen instrucciones para la computadora mientras que otros archivos contienen
datos.
Para las PC basadas en Windows, algunas extensiones comunes para los archivos de programas
son las siguientes:

Archivos ejecutables. Un archivo ejecutable (.exe) contiene los comandos que se envan al
procesador. De hecho, cuando ejecutamos un programa, ejecutamos el archivo ejecutable.

Archivos de biblioteca dinmica de vnculos. Un archivo DLL (Dynamic Library Link) es un


mdulo componente de un programa que ejecuta alguna funcin. Los archivos DLL ejecutan
acciones o rutinas de uso frecuente, y un mismo archivo DLL puede ser usado por varios
programas al mismo tiempo. Por ejemplo el procesador de palabras, la hoja de clculo y otros
programas pueden usar un mismo archivo DLL para desplegar el cuadro dilogo Abrir, cada vez
que se usa el comando Abrir.

Archivos de inicializacin. Un archivo de inicializacin (.ini) contiene informacin sobre


configuraciones, por ejemplo, el tamao y punto de inicio de una ventana, el color del fondo, el
nombre del usuario y otros aspectos. Contienen informacin que los programas pueden utilizar
cuando se ejecutan.

Archivos de ayuda. Un archivo de ayuda (.hlp, .chm) contiene informacin en formato indexado
y con vnculos cruzados. Se utilizan para proporcionar al usuario informacin de ayuda en lnea.

4.2. Codificacin de programas


El trmino cdigo se refiere a las declaraciones escritas en cualquier lenguaje de programacin, por
ejemplo, en Java, Visual Basic Pascal. Hemos visto en el tema 2 que las computadoras operan en
binario, por lo tanto, las instrucciones de un programa tambin estarn en binario. El lenguaje de
programacin se utiliza para escribir las instrucciones a la computadora que luego sern traducidas al
cdigo de mquina.
La codificacin puede ser una tarea tediosa porque los lenguajes de programacin, al igual que los
idiomas, tienen un conjunto de reglas obligatorias. Si las personas cometen errores gramaticales
igual pueden comunicarse con las personas, sin embargo, esto no ocurre con el cdigo. Para que
pueda ejecutarse debe estar libre de errores de sintaxis.
Por otra parte, la programacin tambin puede ser muy emocionante porque es una tarea creativa e
implica siempre el desafo de resolver un problema. El problema puede ser tan simple como calcular
un valor o tan complejo como determinar la ruta de un satlite en rbita.
4.3. Metodologas de Programacin
Cuando un programador escribe un programa primero realiza un diseo de la solucin, mediante un
diagrama de flujo o un seudocdigo. Luego debe escribir las instrucciones en un lenguaje de
programacin, para ello puede seguir algunas de las metodologas ms comunes, como son la
programacin estructurada o la programacin orientada a objetos. Existen otros mtodos o
paradigmas, pero estos dos son los ms utilizados:

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 8

Teora Algoritmos y Estructuras de Datos I - 2012

10

4.3.1. Programacin estructurada


Esta metodologa de programacin surgi en los aos 70. El nombre se refiere a la prctica de crear
programas utilizando mdulos pequeos que son fciles de leer y entender. Las prcticas de la
programacin estructurada se pueden utilizar con cualquier lenguaje de programacin.
Existen tres estructuras de control:
-

La estructura secuencial define el flujo de control predeterminado de un programa. Ejecuta


lneas de cdigo en el orden en que fueron escritas.

Las estructuras de seleccin utilizan construcciones de un flujo de programa especial


llamadas declaraciones condicionales. Una declaracin condicional es una prueba que
determinar lo que har a continuacin el programa. Cuando el programa toma una decisin
utilizando una declaracin condicional, el flujo del programa frecuentemente se dirige en una
de dos direcciones distintas.

Las estructuras de repeticin ( estructuras de ciclo) estn basadas en construcciones


llamadas bucles. Un bucle es un fragmento de cdigo que se repite una y otra vez hasta que
se cumpla la condicin de salida del bucle.

4.3.2. Programacin orientada a objetos


Los conceptos de la programacin orientada a objetos (POO), como por ejemplo, objetos y clases,
ofrecen una manera intuitiva de modelar el mundo. Las ventajas se traducen en programas ms
sencillos, una programacin ms rpida y reduccin de las tareas de mantenimiento.
Concepto de Objeto
Si miramos alrededor nuestro podemos ver que estamos rodeados de objetos: libros, computadora,
plantas, etc. En general, percibimos los objetos como una unidad (por ejemplo un auto), sin tener en
cuenta los asientos, volante, etc.
En la POO, la idea de objeto es similar a la del mundo real, un objeto puede ser una silla, una mesa,
un perro, un auto.
Los objetos tienen dos caractersticas: Un estado y un comportamiento.
Un auto es un objeto. Tiene un estado: el color, tamao, forma, velocidad, cantidad de puertas y
otros aspectos, etc. y un comportamiento: acelerar, frenar, realizar cambios, girar, etc.
Entonces, un objeto en POO podemos verlos como un conjunto de datos y funciones relacionadas.
A las funciones de los objetos, tales como acelerar en el caso del auto, se llaman mtodos y los
datos son atributos.

Un ejemplo objeto ms relacionado con la programacin podra ser el siguiente:


Objeto: Cuenta bancaria
Atributos: tipo, titular, saldo
Mtodos: Depositar, Extraer.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 9

Teora Algoritmos y Estructuras de Datos I - 2012

10

Concepto de clase
Una clase es algo abstracto que define la "forma" del objeto, una especia de molde de los objetos.
En el mundo real existen objetos del mismo tipo, por ejemplo, una bicicleta es slo una ms de todas
las bicicletas del mundo. Todas las bicicletas tienen los atributos: color, marca, dueo, y mtodos:
acelerar, frenar, realiza cambios.
Entonces diramos que una bicicleta en particular (mi bicicleta, tu bicicleta) es una instancia de la
clase "Bicicleta".
De la misma forma, en la POO, los objetos son instancias de clases.
Tambin se puede definir a una clase como una plantilla que define variables y mtodos comunes
para todos los objetos de cierto tipo.
En un programa se definen las clases que comprenden a los objetos, representando los datos, y se
definen las acciones mtodos entre ellos para obtener los resultados deseados.
5. Lenguajes de programacin
Un lenguaje de programacin es una notacin para escribir programas, permiten la comunicacin
con el hardware y dar as las rdenes adecuadas para la realizacin de un determinado proceso. Un
lenguaje est definido por una gramtica o conjunto de reglas que se aplican a un alfabeto
constituido por el conjunto de smbolos utilizados.
Actualmente, los programadores pueden elegir entre muchas herramientas de desarrollo que
difieren en capacidad, flexibilidad y facilidad de uso. Sin embargo, a pesar de sus diferencias, la
mayora de los lenguajes de programacin comparten una caracterstica: cada lenguaje de
programacin requiere que el programador siga un conjunto de reglas muy estrictas. En general, los
lenguajes de programacin requieren que los desarrolladores:
-

Proporcionen informacin en un orden y estructura especficos

Utilicen smbolos especiales

Utilicen puntuaciones (en algunos casos)

Estas reglas se conocen como la sintaxis del lenguaje de programacin y pueden variar de un
lenguaje a otro.
Ejemplo de cdigo en el lenguaje C:
If (d > 15)
{
Do
{
d--;
} while (d > 1);
}
5.1.

Clasificacin de los lenguajes de programacin

Existen numerosos lenguajes de programacin. Algunos son altamente especializados y se usan


solamente en una rama de la ciencia o la industria, mientras que otros son muy conocidos y se
utilizan en muchos lugares.
Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 10

Teora Algoritmos y Estructuras de Datos I - 2012

10

Debido a esta diversidad se pueden establecer distintos criterios para clasificar los lenguajes de
programacin. Sin embargo, los lenguajes de programacin se agrupan normalmente de acuerdo a
su historia evolutiva, en tres categoras o niveles.
El nivel hace referencia a lo prxima que la forma de expresar las sentencias est al hombre (o sea, al
lenguaje natural), o a la mquina (el lenguaje de unos y ceros de los circuitos electrnicos).
Lenguajes de bajo nivel (mquina)
Lenguajes intermedios (ensambladores)
Lenguajes de alto nivel (evolucionados)
5.1.1. Lenguaje mquina
El lenguaje mquina es el nico que entiende directamente la computadora. Utiliza el alfabeto
binario, que consta de los dos nicos smbolos 0 y 1, denominados bits (abreviatura inglesa de dgitos
binarios). Fue el primer lenguaje utilizado en la programacin de computadoras, pero dej de
utilizarse por su dificultad y complicacin, siendo sustituido por otros lenguajes ms fciles de
aprender y utilizar, que adems reducen la posibilidad de cometer errores.
Generalmente, en la codificacin de los programas, se empleaba el sistema hexadecimal para
simplificar el trabajo de escritura.
Ejemplo:
Instrucciones en lenguaje mquina y sus equivalentes en sistema hexadecimal.

0000
1000
0011

0001
1001
1010

1010
1001
1001

0001
1010
1100

01 Al
89 9A
3A 9C

5.1.2. Lenguaje ensamblador


El lenguaje ensamblador es el primer intento de sustituir el lenguaje mquina por otro ms fcil de
usar por las personas. En este lenguaje cada instruccin equivale a una instruccin en lenguaje
mquina, utilizando para su escritura palabras mnemotcnicas en lugar de cadenas de bits.
Ejemplo:
Instrucciones en lenguaje ensamblador:
INICIO: ADD
MOV
CMP
JE
JMP
FIN:
END

B, 1
A, B
A, E
FIN
INICIO

Implementa una representacin simblica de los cdigos de mquina binarios y otras constantes
necesarias para programar una arquitectura dada de CPU. Esta representacin es usualmente
definida por el fabricante de hardware, y est basada en instrucciones, registros del procesador,
posiciones de memoria, y otras caractersticas del lenguaje. Un lenguaje ensamblador es por lo tanto
especfico a cierta arquitectura de computadora.
Por estas razones, decimos que presenta la mayora de los inconvenientes del lenguaje mquina:
Cada modelo de computadora tiene un lenguaje ensamblador propio diferente de los dems,
por lo cual un programa slo puede utilizarse en la mquina para la que se program.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 11

Teora Algoritmos y Estructuras de Datos I - 2012

10

El programador tiene que conocer perfectamente el hardware del equipo, ya que maneja
directamente las posiciones de memoria, registros del procesador y dems elementos fsicos.
Todas las instrucciones son elementales, es decir, en el programa se deben describir con el
mximo detalle todas las operaciones que se han de efectuar en la mquina para la realizacin
de cualquier proceso.
Por otro lado, tanto el lenguaje mquina como el ensamblador tienen la ventaja de mnima
ocupacin de memoria y mnimo tiempo de ejecucin en comparacin con el resultado de la
compilacin del programa equivalente escrito en otros lenguajes.
5.1.3. Lenguajes de alto nivel
Los lenguajes de alto nivel, tambin denominados lenguajes evolucionados, fueron diseados para
que la programacin sea ms sencilla.
Se llaman de alto nivel porque la sintaxis requerida es ms parecida al idioma humano que al de la
mquina. Adems, persiguen otros objetivos, entre otros:
1. Lograr independencia de la mquina, pudiendo utilizar un mismo programa en diferentes
equipos con la nica condicin de disponer de un programa traductor o compilador que permita
obtener el programa ejecutable en lenguaje binario de la mquina que se trate.
2. Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer de una forma ms
sencilla.
3. Incluir rutinas de uso frecuente, como las de entrada/salida, funciones matemticas, manejo de
tablas, etc., que figuran en una especie de librera del lenguaje, de manera que se puedan utilizar
siempre que se quiera sin necesidad de programarla cada vez.
5.2.

Generaciones de lenguajes de programacin

Los lenguajes de programacin son discutidos con frecuencia, en trmino de generaciones.


Las ltimas generaciones incluyen lenguajes que son ms fciles de usar y ms poderosos.
Atendiendo a esta clasificacin, los lenguajes de mquina o de bajo nivel, corresponden a la primera
generacin y los ensambladores a la segunda generacin. Los lenguajes de alto nivel comenzaron con
la tercera generacin:
5.2.1. Lenguajes de tercera generacin (3GL):
Los lenguajes de tercera generacin hacen que sea ms fcil escribir programas y permiten que los
programadores compartan el desarrollo.
Algunos lenguajes de tercera generacin y sus caractersticas son:
-

C: En un lenguaje poderoso que produce cdigo rpido y eficiente. Es de propsito general, es


decir, capaz de resolver cualquier tipo de problema. Es muy usado entre los desarrolladores
profesionales.

C++: Es la implementacin orientada a objetos de C, mantiene su caracterstica de poderoso y


eficiente. Es utilizado por las empresas desarrolladoras de software.

Java: Es un entorno de programacin orientado a objetos para crear programas que funcionen
en distintas plataformas. Naci como un entorno de programacin para Internet, con facilidades

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 12

Teora Algoritmos y Estructuras de Datos I - 2012

10

para crear programas interactivos y dinmicos para pginas Web, denominados Applets. Luego
se extendi a la programacin de aplicaciones de escritorio
-

ActiveX: Crea funciones autocontenidas similares a los applets de Java, que pueden ser accedidas
y ejecutadas por cualquier otro programa compatible con ActiveX.

5.2.2. Lenguajes de cuarta generacin (4GL):


Los lenguajes de cuarta generacin son ms fciles de usar que los de tercera generacin. Pueden
presentarse como entorno de texto o entorno visual.
En un entorno de texto, el programador utiliza palabras del idioma ingls para generar el cdigo,
normalmente una sola declaracin de un lenguaje 4GL puede realizar las mismas tareas que varias
lneas de un lenguaje 3GL.
En un entorno visual 4GL, el programador utiliza barras de herramientas para arrastrar y soltar
distintos elementos como, por ejemplo, botones, etiquetas y cuadros de texto con el fin de crear una
definicin visual de una aplicacin (por ejemplo, el diseo de la pantalla que se ofrece al usuario).
Una vez realizado este diseo, el programador puede asignar acciones a los objetos de la pantalla.
Por ejemplo, puede colocar un botn en la pantalla y asignarle la accin abrir tabla de clientes.
La mayora de los 3GL y 4GL, permiten que el programador trabaje en un entorno de desarrollo
integrado o IDE (por sus siglas en ingls). Los IDE ofrecen todas las herramientas necesarias para
desarrollar aplicaciones. Ejemplos de IDE: Visual Studio de Microsoft, Java Studio de Sun, Eclipse y
Netbeans, entre otros.
Entre los lenguajes de cuarta generacin se incluyen:
-

.NET: es un producto de la empresa Microsoft. Combina varios lenguajes de programacin en


un IDE. Los lenguajes incluidos son: Visual Basic, C++, C# y J#. Este entorno permite escribir
programas para Windows, para la Web y para Pocket PC (versin de Windows para PDAs).

Entornos de autora: Son herramientas de programacin de propsitos especiales para crear


aplicaciones multimedia, programas de capacitacin por computadora, pginas Web y otras
aplicaciones. Un ejemplo es el programa Macromedia Director que utiliza el lenguaje de
secuencia de comandos Lingo. Permite crear productos multimedia combinando clips
musicales, texto, animacin, imgenes y otros elementos.

5.2.3. Lenguajes de quinta generacin:


Los expertos no estn de acuerdo en la definicin de esta generacin, algunos consideran que los
entornos de autora ms avanzados caeran en esta categora. Otros consideran que un 5GL debera
utilizar procesamiento en paralelo mediante arquitecturas y diseos especiales y circuitos de gran
velocidad, manejo de lenguaje natural y sistemas de inteligencia artificial.
5.3.

Lenguajes de desarrollo de la WWW (Word Wide Web)

Internet ha evolucionado de pginas simples a sitios web complejos. De la misma manera, las
herramientas de desarrollo han evolucionado en poder y capacidades. Por tanto, al hablar de
programacin y desarrollo en la web, hay tener en cuenta estas herramientas:
5.3.1. Lenguaje de marcacin de hipertexto (HTML).
Se utiliza para crear documentos para la Web. La estructura de una pgina Web utiliza atributos y
etiquetas. Las etiquetas proporcionan vnculos otra parte del documento o a otro documento.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 13

Teora Algoritmos y Estructuras de Datos I - 2012

10

Permiten tambin insertar imgenes y otros elementos multimedia. En realidad por la simplicidad del
HTML no se lo considera un lenguaje de programacin.
5.3.2. Lenguajes de secuencias de comandos
HTML crea pginas web de tipo estticas. Es apropiada para documentos que no cambian casi
nunca, por ejemplo, la informacin institucional de una empresa u organizacin. Pero, si la pgina
Web tiene que mostrar, por ejemplo, la temperatura de la ciudad, no puede ser esttica. Para
visualizar estos valores cambiantes se utilizan los lenguajes de secuencia de comandos.
Existen distintos lenguajes de secuencia de comandos para la Web. Estos lenguajes tienen la
capacidad de crear pginas web dinmicas. Las pginas dinmicas pueden cambiar de acuerdo con la
informacin que proporcionan al usuario. Algunas de estas herramientas son:

5.4.

JavaScript: Diseado para trabajar dentro del HTML. Permite la verificacin de pginas,
animaciones sencillas y clculos.

Pginas de Active Server (ASP): Es el producto de Microsoft para pginas Web dinmicas.

Preprocesador de hipertexto (PHP): El compilador y el software se ofrecen como open source,


lo cual hace que su uso sea gratuito. PHP es adecuado para acceder a bases de datos MySQL.
Paradigmas de programacin

Un paradigma de programacin es una coleccin de modelos conceptuales que modelan el proceso


de diseo y determinan la estructura de un programa.
Esa estructura conceptual de modelos est pensada de forma que esos modelos determinan la forma
correcta de los programas y controlan el modo en que se formulan las soluciones. Para que este
proceso sea efectivo las caractersticas del lenguaje deben reflejar adecuadamente los modelos
conceptuales de ese paradigma. Cuando un lenguaje refleja bien un paradigma particular, se dice que
soporta el paradigma.
5.4.1. Tipos de paradigmas
Se agrupan en tres categoras de acuerdo con la solucin que aportan para resolver el problema:
a) Procedural: Utilizan instrucciones como unidad de trabajo (COBOL, PASCAL, C, ADA).
b) Funcional y lgicos: Basados en la definicin de funciones o relaciones. No utilizan instrucciones
de asignacin (sus variables no almacenan valores). Los programas estn formados por una serie
de definiciones de funciones (Lenguajes funcionales, como LISP) o de predicados expresiones
lgicas (Lenguajes de programacin lgica, como PROLOG).
c) Orientados a objetos: Tal como se explic anteriormente, los programas se descomponen en
objetos que implementan parte del sistema encapsulando los datos que almacenan su estado
junto con los mtodos que se utilizan para acceder a ellos. De este modo, las distintas partes del
programa son menos dependientes entre s, lo que facilita el mantenimiento de las aplicaciones.
(Lenguajes SMALLTALK, C++, Java).

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 14

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

11

Conceptos sobre Ingeniera de Software y Metodologas de Desarrollo


Introduccin
En la actualidad el software es la tecnologa individual ms importante en el mbito mundial. Resulta
indispensable en la ciencia, los negocios y la ingeniera, permite la creacin de nuevas tecnologas, la
expansin de las existentes y el fin de las antiguas. Es a la vez un producto y un vehculo mediante el
cual se entrega un producto. Como producto, es un transformador de informacin, realiza la
produccin, el manejo, la adquisicin, modificacin o despliegue de informacin. En su papel de
vehculo, el software es la base para el control de las computadoras (sistemas operativos), la
comunicacin de informacin (redes) y la creacin y control de otros programas (lenguajes de
programacin, ambientes de desarrollo. El software entrega el producto ms importante de nuestro
tiempo: INFORMACION1
A medida que se fue incrementando la importancia del software tambin fueron cambiando los
mtodos de su construccin, buscando tecnologas y metodologas que hagan ms fcil, ms rpida,
ms segura y menos cara la elaboracin del software.
En este contexto, la Ingeniera de Software, ofrece un conjunto de mtodos y herramientas
enfocados en la construccin de software de calidad.
La Ingeniera de Software es la aplicacin de un enfoque sistemtico, disciplinado y cuantificable al
desarrollo, operacin y mantenimiento del software; es decir, la aplicacin de la ingeniera al
software (IEEE, 1993).

Proceso de creacin del software


Se define como proceso al conjunto ordenado de pasos a seguir para llegar a la solucin de un
problema u obtencin de un producto, en este caso particular, para lograr la obtencin de un
producto software que resuelva un problema.
El proceso de creacin de software puede llegar a ser muy complejo, dependiendo de su tamao,
caractersticas y criticidad del mismo. Por ejemplo la creacin de un sistema operativo es una tarea
que requiere proyecto, gestin, numerosos recursos y todo un equipo disciplinado de trabajo. En el
otro extremo, un sencillo programa (por ejemplo, la resolucin de una ecuacin de segundo orden),
puede ser realizado por un solo programador (incluso aficionado) fcilmente.
El desarrollo de un buen sistema de software se realiza durante lo que se conoce como ciclo de
vida, este periodo abarca desde la concepcin inicial del sistema hasta su eventual retiro de la
comercializacin del mismo. Las actividades humanas relacionadas con el ciclo de vida implican
procesos tales como: anlisis de requisitos (o requerimientos), diseo, implementacin, codificacin,
pruebas, verificacin, documentacin, mantenimiento y evolucin, y obsolescencia.
Diferentes herramientas ayudan al programador y al ingeniero de software a disear una solucin
para un problema dado, una de la ms importante es la abstraccin de datos y de procedimientos. La
abstraccin durante la etapa de diseo permite hacer frente a la complejidad.
La construccin de software requiere numerosas caractersticas como: Eficiencia, Verificabilidad,
Fcil de utilizar, Robustez, etc.
A continuacin se transcriben los principales conceptos del captulo Resolucin de problemas y
desarrollo de Software del libro Fundamentos de Programacin de Luis Joyanes Aguilar. 3ra. Ed.
1

Pressman, R., Ingeniera de Software. 6ta. Edicin. Editorial Mc Graw Hill. 2005.

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 1

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

11

Pg. 2

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

11

Pg. 3

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

11

Pg. 4

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

11

Pg. 5

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

11

Pg. 6

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

11

Pg. 7

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

11

Pg. 8

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

11

Pg. 9

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 10

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 11

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 12

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 13

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 14

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 15

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 16

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 17

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 18

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 19

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 20

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 21

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 22

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 23

11

Teora Algoritmos y Estructuras de Datos I - 2012


Tema 1

Licenciatura en Sistemas de Informacin FACENA - UNNE

Pg. 24

11

Você também pode gostar