Escolar Documentos
Profissional Documentos
Cultura Documentos
Tema 1
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:
-
Pg. 1
Lenguajes de Programacin
Arquitectura
Sistemas Operativos
Ingeniera de Software
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
Pg. 2
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:
-
Pg. 3
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:
-
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
Numricos: 0,1,2, 9
Alfabticos: a, b, c,, z, A, B, C, Z
Especiales: *, /, +, #,
Pg. 4
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.
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.
Pg. 5
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.
Pg. 6
Internacional
de
Unidades
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
bytes
bytes =
Un archivo de texto, 20 KB
Un archivo mp3, 3 MB
30
40
bytes
800 pelculas, 1 TB
50
bytes
60
bytes
La informacin almacenada en el
mundo
(al
2011)
es
de
aproximadamente 300 EB
Pg. 7
1024 EB = 2
70
bytes
1 YottaBytes
1024 ZB = 2
80
bytes
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 decimal, compuesto por los smbolos 0 al 9, es el sistema numrico que utilizamos a
diario.
Los sistemas numricos difieren en cuanto a la disposicin y al tipo de los smbolos que utilizan.
Pg. 8
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
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 =
Pg. 9
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
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
Pg. 10
1D
1E
1F
11101
11110
11111
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
1
x
8
0,25
1
x
4
2
0
x
2
1
1
x
1
0
0
x
0,5
-1
1
x
0,25
-2
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.
Pg. 11
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:
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).
Pg. 12
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
0
1
0
0
10
0
1
1
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
Pg. 13
0
1
0
0
0
1
1
0
1
1
(minuendo)
(sustraendo)
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
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)
Pg. 14
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
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.
Pg. 15
1.
Representacin de la informacin
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 =
Pg. 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
Pg. 2
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
Mapa de Vectores
1.2.4 Imgenes
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
Pg. 3
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
.
$
'
#
DC4 <
*
%
@
ENQ NAK (
)
_
ACK
+
;
>
BEL SUB |
?
"
Tabla 2: Cdigo EBCDIC de 8 bits
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
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
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
Pg. 5
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:
Uniformidad, ya que todos los smbolos se representan con un nmero fijo de bits (16).
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
Nmero
caracteres
256
7.936
8.192
24.576
16.384
8.192
Pg. 6
de
Pg. 7
0 0 0 0 1 0 1 0
signo
Nmero -10
Mdulo
1 0 0 0 1 0 1 0
0 0 0 0 1 0 1 0
signo
Nmero -10
Mdulo
1 1 1 1 0 1 0 1
Pg. 8
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
Pg. 9
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
Desbordamiento
Desbordamiento
+
N (Max)
N (Min)
0
Figura 1: Rango de posibles representaciones de enteros
N= +- m E +-p = +- m * 10 +- p
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
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.
b) Campo del signo: El bit de signo es cero para los nmeros positivos y uno para los nmeros negativos.
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 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
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
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
3,402823466. 1038
1,2. 10-38
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).
Pg. 12
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.
Pg. 13
La
Lnea
Base
corta
la
seal
aproximadamente por la mitad, y es un punto
de referencia para medir el 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.
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.
Pg. 14
Aplicaciones
Telfono
Radio
Cd de msica
alta definicin para DVD
Pg. 15
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.
Pg. 16
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
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).
Pg. 17
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.
-
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).
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.
Pg. 18
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
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.
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?
Pg. 2
Pg. 3
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.
Pg. 4
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
Debe seguirse una secuencia definida de pasos hasta que se obtenga el resultado.
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
Pg. 6
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
Datos almacenados
Proceso
Salida impresa
Ingreso o salida de
datos
Entrada manual
Decisin
Conector
Pg. 7
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
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.
Puede ser traducido fcilmente a lenguajes de programacin estructurados tales como Pascal,
Fortran, C, C#, etc.
Instrucciones de entrada/salida.
Instrucciones de proceso.
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
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
REAL: salario
Pg. 10
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: *
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
Pg. 11
Resolucin de
problemas
CICLO DE
VIDA
ETAPAS
Caractersticas
Algoritmo
Tcnicas de
representacin
de algoritmos
Caractersticas
Diagramas
de flujo
ntacin de
Seudocodigo
Formato
Ejercitacin de Resolucin
de Algoritmos mediante
Seudocodigo
Pg. 12
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
Pg. 1
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
Pg. 2
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.
Pg. 3
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
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
Pg. 4
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
El tipo numrico es el conjunto de los valores numricos. Pueden representarse en dos formas distintas:
-
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.
Pg. 6
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.
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
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
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
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
(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
Pg. 9
Operadores lgicos:
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
falso
verdadero falso
falso
verdadero verdadero
falso
Falso
falso
falso
falso
falso
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
Pg. 10
3.4. Funciones
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
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)
cadena
Length (x)
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
man
5
Pg. 11
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.
Pg. 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)
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)
Pg. 2
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
LEER radio
area= 3,141592 * radio **2
Fin
simples: SI (IF)
Pg. 3
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.
Condicin
SI
Tarea a realizar s
la condicin es
verdadera
NO
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.
Pg. 4
Inicio
VAR
REAL: area
radio
REAL: longitud
INICIO
radio > 3
LEER radio
SI
NO
Longitud = 2 * 3.141592 * radio
Fin
FIN
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
Pg. 5
Inicio
LEER radio
SI radio > 3 ENTONCES
area = 3,141592 * radio * radio
longitud = 2 * (3,141592)*radio
radio > 3
SI
NO
SINO
ESCRIBIR Fuera de rango
Fuera de rango
FIN-SI
FIN
Fin
Pg. 6
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
Pg. 7
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
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
Pg. 8
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:
Pg. 9
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.
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.
Pg. 10
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:
Pg. 11
WHILE condicin DO
INSTRUCCIN
INSTRUCCIN
*+
*+
INSTRUCCIN
INSTRUCCIN
condicin
INSTRUCCIN
FIN-MIENTRAS
END-WHILE
INSTRUCCIN
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:
Pg. 12
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:
-
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.
Pg. 13
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;
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
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:
Pg. 15
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.
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.
Pg. 16
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;
HASTA
ninguna o ms
Verificacin de la condicin
de parada
Cuando la condicin es
Verdadera
El bucle se ejecuta
El bucle se detiene
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
cul es el valor conveniente para las variables que intervienen en las condiciones de parada
al iniciar el bloque repetitivo.
cmo y en qu orden se altera el valor de las variables verificadas por las condiciones.
Pg. 17
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
Pg. 18
INICIO
PARA i DESDE 2 HASTA 98 INCREMENTO 2
i=2
ESCRIBIR i
FIN-PARA
FIN
i = 98
i=i+2
FIN
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.
A)
B)
C)
Pg. 20
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:
-
Pg. 21
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
Pg. 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.
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
Pg. 2
9 10 11 12 13 14 15
Longitud
actual=11
Longitud
mxima= 15
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
Resultado
A < B
Verdadero (true)
Z < a
Verdadero
a < B
Falso (false)
Resultado
Verdadero (y > i)
KB < KByte
Falso (a > A)
Pg. 4
Saludo:= Hola;
Writeln (Saludo);
*/
Writeln (Saludo[1]);
/* produce la salida H
*/
Writeln (Saludo[4]);
/* produce la salida a
*/
.
..
.
..
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.
Pg. 5
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.
Pg. 6
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
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)
Pg. 7
Pg. 8
vlido
vlido
4x3
-3.42
Pg. 9
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.
Pg. 10
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
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:
Tipo de campo: indica qu tipo de dato contiene (alfabtico, numrico, alfanumrico, etc.)
Pg. 2
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.
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
Junn 89
Lavalle 23
Brasil 123
Per 890
SI
NO
SI
SI
3
1
1
Total
Deuda
70
125
50
37
Campos
BYTES
Registros
Pg. 3
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:
Pg. 4
Ttulo
(30 bytes)
Gnero
(10 bytes)
Stock
(2 bytes)
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.
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
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
Pg. 6
Posiciones
Registro 2
Registro 1
Registro 3
Cabeza de lectura/grabacin
El nombre aleatorio se debe a que normalmente no existe ninguna vinculacin aparente entre el orden lgico de los
registros y su orden fsico.
Pg. 7
rea
Primaria
BB
AA
1
rea de
Excedentes
------
CH
AB
2
------
GM
BB
3
------
CA
4
------
CH
5
------
AC
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
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.
.
Pg. 9
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.
-
Pg. 10
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:
-
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.
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
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
Reset: abre un archivo para leerlo o escribirlo. Si el archivo no existe da un error de E/S.
Pg. 12
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.
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
Pg. 14
Acceso
Secuencial
Aleatorio
Composicin
Estructura
Lectura/escritura
Readln/Writeln
Read / Write
Compatibilidad
Principales usos
Descripcin
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).
Eof(arch)
Eol(archi)
Seek(arch,pos)
Reset (arch)
Rewrite(arch)
Append(archi)
Sizeof(archi)
Pg. 15
Pg. 16
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;
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
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}
Pg. 18
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
en
Pg. 20
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.
La siguiente tabla resume los tipos de datos simples y estructurados ms frecuentes utilizados en los
diferentes lenguajes de programacin.
Pg. 1
entero(integer)
estndar
real (real)
carcter (char)
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 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.
Pg. 2
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)
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
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
Resultados
ESCRIBIR X[1]
X[4] := 45
SUMA:= X[1]+X[3]
SUMA := SUMA+X[4]
Pg. 4
Ordenacin
Pg. 5
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
Pg. 6
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
El resultado ser:
1
Pg. 8
Pg. 9
El resultado ser:
1
(2 dimensiones)
- Arreglos multidimensionales
(3 o ms dimensiones)
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.
Pg. 10
Fila 1
Fila 2
Fila 3
Fila 4
Fila 5
18
Col. 1
25
11
35
1
12
18
20
34
12
18
24
Pg. 11
Pascal
FOR Fila := 1 TO 3 DO
FOR Columna := 1 TO 4 DO
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
FOR Columna := 1 TO 4 DO
FOR Fila := 1 TO 3 DO
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
75
226
276
236
233
Pg. 12
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
Pg. 13
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.
Pg. 1
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
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.
Pg. 2
9-1
Tema 1
La Unidad de Control
Pg. 3
9-1
Tema 1
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
9-1
Tema 1
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.
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.
Pg. 5
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
Ciclo de ejecucin
2. Almacenar: Almacena los resultados de la instruccin, si
fuera necesario.
Pg. 6
9-1
Tema 1
Disco
Datos e
instruccion
Datos e
instruccion
CPU
Memoria
Principal
Pg. 7
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.
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
Pg. 8
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.
En cada direccin de memoria (celda) slo se pueden leer o escribir 8 bits por vez, sin posibilidad
de operar menor cantidad de bits.
Pg. 9
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.
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.
Pg. 10
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.
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).
Pg. 11
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 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.
Pg. 12
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
9-1
Tema 1
Batera o pila
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.
Pg. 14
9-2
Pg. 1
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.
Pg. 2
9-2
Pg. 3
9-2
Escner de mano
Escner de mesa
Pg. 4
9-2
Perifrico
Scanner
Imagen del
texto
Programa
OCR
Fichero de
texto
(ASCII)
Pg. 5
9-2
Pg. 6
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.
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.
Pg. 7
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)
Pg. 8
9-2
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.
Pg. 9
9-2
Dispositivos magnticos
-
Cinta magntica
Dispositivos pticos:
-
Discos duros
Pg. 10
disquetes
disco rgido
Unidad zip
CD-ROM
DVD
MO-Mini disc
disco duro
Pen drive
Memoria flash
9-2
Cinta magntica
Unidad jaz
Pg. 11
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.
Pg. 12
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
9-2
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
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
Pg. 15
9-2
Desventajas
No reutilizables
Resistentes
Pg. 16
9-2
Pg. 17
9-2
Pg. 18
10
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
2.
2.1.
10
Software de sistema
Sistemas Operativos
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 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.
Pg. 2
10
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.
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
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)
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:
-
Reconocer las teclas que se han presionado o los clic del mouse y desplegar caracteres o
imgenes en la pantalla.
Pg. 4
10
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
Pg. 5
10
`
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
10
Procesador de textos
Programas de presentacin
Pg. 7
10
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 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.
Pg. 8
10
Pg. 9
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:
-
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.
Pg. 10
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
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.
Pg. 11
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.
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
Pg. 12
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.
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.
Pg. 13
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.
Pg. 14
11
Pressman, R., Ingeniera de Software. 6ta. Edicin. Editorial Mc Graw Hill. 2005.
Pg. 1
11
Pg. 2
11
Pg. 3
11
Pg. 4
11
Pg. 5
11
Pg. 6
11
Pg. 7
11
Pg. 8
11
Pg. 9
Pg. 10
11
Pg. 11
11
Pg. 12
11
Pg. 13
11
Pg. 14
11
Pg. 15
11
Pg. 16
11
Pg. 17
11
Pg. 18
11
Pg. 19
11
Pg. 20
11
Pg. 21
11
Pg. 22
11
Pg. 23
11
Pg. 24
11