Download Tema 1: Fundamentos de la programación

Document related concepts

Registro de arranque principal wikipedia , lookup

Partición de disco wikipedia , lookup

Fdisk wikipedia , lookup

Formato de disco wikipedia , lookup

PartitionMagic wikipedia , lookup

Transcript
Tema 1:
Introducción a los
sistemas informáticos
SOLP
1





1. Organización de un ordenador
2. Hardware de un ordenador
3. Software (programas)
4. Lenguajes de programación
5. Fases en la resolución de problemas
con un programa
 6. Breve historia de los lenguajes de
programación de alto nivel
2
1. Organización de un
ordenador
 Los primeros son de la década de los 40.
3
 Los primeros PC aparecen en los 80.
 Los ordenadores transforman datos para
obtener a la salida una información.
 Los datos de entrada y de salida pueden
estar en formatos muy diversos.
 Es necesario hardware y software.
4
2. Hardware de un ordenador
Los componentes más importantes son:
Procesador
(CPU)
ALU
Entrada
Unidad de
Control (UC)
Memoria
Interna
Salida
Memoria
Externa
5
2.1 El procesador (CPU)




Ejecuta las instrucciones del programa.
Se encuentra integrado en un chip  microprocesador
Instrucciones sencillas a muy alta velocidad (~µs)
Consta de dos partes :
 Unidad Aritmético Lógica (ALU)
 Unidad de Control (UC)
 Ejemplo de un programa que suma dos números:
leer (a)
leer (b)
r=a+b
Imprimir (r)
6
2.2 Memoria
 Se clasifica en:
 Memoria
principal, interna,
central o
memoria RAM
 Memoria
de
almacenamiento
secundario,
externa o auxiliar
datos
Entrada
Memoria de datos
Instrucciones
Memoria de
Instrucciones
CPU
órdenes
Salida
órdenes
Disco duro
7
Memoria pincipal
 Se conoce como memoria RAM, aunque está
formada por dos tipos de memorias:
 Memoria RAM (Random Access Memory o
Memoria de Acceso Aleatorio).
 Memoria ROM (Read Only Memory o
Memoria de sólo lectura).
8
Memoria RAM de la memoria principal
 Es una memoria volátil.
 Se puede leer y escribir en cualquier
dirección.
 La memoria RAM tiene dos partes:
 Memoria de programa
 Memoria de datos
 Tipos: SDR SDRAM, DDR SDRAM, DDR 2
SDRAM, DDR 3 SDRAM Y RDRAM.
 Valores típicos son 1 GB, 2GB o 4GB.
 Tiempo de acceso: del orden de ns.
9
Memoria ROM de la memoria principal
 No es volátil.
 Es sólo de lectura; ya viene de fábrica
grabada.
 Se encuentra en un chip llamado BIOS.
 Es una pequeña parte de la memoria
principal.
 Almacena las instrucciones necesarias
para arrancar el ordenador.
10
 La memoria caché es una memoria que
sirve de almacenamiento intermedio
entre el procesador y la memoria
principal. La memoria caché es memoria
SRAM; más rápida pero también mucho
más cara que la memoria principal. Se
utiliza para almacenar temporalmente la
información que se utiliza con más
frecuencia.
11
Memorias de almacenamiento
secundario
 Almacenan datos o programas de forma
permanente.
 Para su uso deben pasar a la memoria
principal.
 Esta operación se realiza mediante órdenes
al sistema operativo.
 Es más lenta que la memoria principal ya
que está formada por componentes
electrónicos y mecánicos.
 Por ejemplo: discos duros, DVD, disquetes
12
…
2.3 Dispositivos de E/S
 Permiten la comunicación entre el usuario y el
ordenador
 Dispositivos de entrada: teclado, ratón, lápiz
óptico, joystick, lector de códigos de barras,
escáner, micrófono…
 Dispositivos de salida: Pantalla, impresora,
trazador gráfico o plotter, reconocedores de voz,
altavoces…
 Dispositivos de entrada/salida: monitor táctil,
tarjeta de red, impresora multifunción…
 Los dispositivos de E/S y los dispositivos de
almacenamiento
secundario
se
llaman
dispositivos
periféricos
o
simplemente
periféricos.
13
/* MEMORIAS*/




Bit: 0 o 1, es la unidad elemental de memoria (b).
Byte: son 8 bits (B).
Una dirección es un número que nos indica una &.
Una palabra es el contenido de una dirección de
memoria. Valores típicos son 8, 16, 32 o 64 bits.
 Cuando escribimos en una dirección de memoria se
borra lo que había antes.
 En la ejecución de un programa, en una misma
dirección de memoria, se pueden almacenar distintos
valores:
14
/* Programa que calcula an*/
leer(a)
leer(n)
r=1
mientras(n>0)
{r=r*a
n=n-1}
imprimir(r)
15
 El tamaño de una memoria se calcula
multiplicando el nº de palabras por el
tamaño de las palabras.
 En las memorias
siguientes unidades:
 1 K (Ka)= 210
 1M (Mega)= 220
 1G (Giga)=230
 1T (Tera) =240
se
utilizan
las
16
2.4 Memorias de almacenamiento
secundario
 La memoria RAM es volátil y limitada.
 E tiempo de acceso a la información es mayor
que en la memoria principal.
 Tiene mayor capacidad de almacenamiento
que la memoria principal.
 También se conocen como memorias
auxiliares o externas.
 Las más conocidas son:





Cintas magnéticas
Discos magnéticos: discos duros y disquetes
Discos ópticos: CD y DVD
Discos duros virtuales
Discos flash
17
Cintas magnéticas
 Son
los
primeros
dispositivos
de
almacenamiento secundario que se usaron.
 Se siguen utilizando para hacer copias de
seguridad o para bases de datos en grandes
ordenadores.
 Ventaja: gran capacidad de almacenamiento
a bajo coste.
 Desventaja: acceso secuencial
 Cuanto mayor es la capacidad, mayor es la
longitud y mayor el tiempo de acceso.
18
Discos magnéticos
 Tipos:
 Discos duros
 Discos flexibles o disquetes
 Ventaja: acceso aleatorio
19
Disquetes
 Material flexible
 Ventajas: transportabilidad, precio y compatibilidad
con otros ordenadores
 Desventajas: baja capacidad (1.44MB) y baja
fiabilidad
 Los primeros disquetes eran de 8’’ (pulgadas)
 Luego aparecieron los de 5 1/4 (5.25’’) de 360KB a 1,2
MB
 Hoy en día son de 3,5’’ y 1.44MB
 Cada vez su uso es menor
20
Discos duros
 Aparecen en la década de los 80 con una
capacidad de 10MB.
 Están constituidos por material rígido sobre el que
se deposita una capa de material magnetizable.
 Ventajas frente a los disquetes: capacidad de
almacenamiento y tiempos de acceso a los
datos.
 Cada vez son más pequeños y de mayor
capacidad.
 Valores típicos son 120GB, 500 GB, 1 TB…
 Tipos:
 Fijos: dentro de una carcasa sellada y no se pueden
extraer del ordenador.
 Extraíbles: internos y externos.
21
 Las partes de un disco duro son:
 La unidad es un conjunto de componentes
electrónicos y mecánicos que hacen posible el
almacenamiento y recuperación de los datos en el
disco.
 El disco es, en realidad, una pila de discos, llamados
platos, que almacenan información magnéticamente.
Cada uno de los platos tiene dos superficies
magnéticas, caras: la superior y la inferior. Estas
superficies magnéticas están formadas por millones
de
pequeños
elementos
capaces
de
ser
magnetizados positiva o negativamente. De esta
manera, se representan los dos posibles valores que
forman un bit de información (un cero o un uno).
22
23
 Cada cara tiene asignado uno de los cabezales de
lectura/escritura de la unidad. Los cabezales no pueden
tocar la superficie del discos; se sitúan a μm.
 El conjunto de cabezales se puede desplazar linealmente
desde el exterior hasta el interior de la pila de platos
mediante un brazo mecánico que los transporta.
 Para que los cabezales tengan acceso a la totalidad de los
datos, es necesario que la pila de discos gire. Este giro se
realiza a velocidad constante y no cesa mientras esté
encendido el ordenador. En cambio, en los discos flexibles
sólo se produce el giro mientras se está efectuando alguna
operación de lectura o escritura. El resto del tiempo, la
disquetera permanece en reposo. Con las unidades de CDROM ocurre algo similar, sin embargo en este caso la
velocidad de giro no es constante y depende de la
distancia al centro del dato que se esté leyendo.
24
 Operación de lectura en el disco duro:
 Desplazar los cabezales de lectura/escritura hasta el
lugar donde empiezan los datos.
 Esperar a que el primer dato, que gira con los
platos, llegue al lugar donde están los cabezales.
 Leer el dato con el cabezal correspondiente.
 La operación de escritura es similar. En lugar de leer
la información los cabezales de lectura/escritura
magnetizan positiva o negativamente.
25
 Cada una de las caras se divide en anillos concéntricos
llamados pista. Un cilindro es la misma pista de todos
los discos.
 Además, cada pista se divide en sectores. Los
sectores son las unidades mínimas de información que
puede leer o escribir un disco duro. Generalmente,
cada sector almacena 512 bytes de información.
26
 El número total de sectores de un disco duro se
puede calcular: nº sectores = nº caras * nº pistas/cara *
nº sectores/pista. Por tanto, cada sector queda
unívocamente determinado si conocemos los
siguientes valores: cabezas, cilindros y sectores. Por
ejemplo, el disco duro ST33221A de Seagate tiene las
siguientes especificaciones: cilindros = 6.253, cabezas
= 16 y sectores = 63. El número total de sectores
direccionables es, por tanto, 6.253*16*63 = 6.303.024
sectores. Si cada sector almacena 512 bytes de
información, la capacidad máxima de este disco duro
será de 6.303.024 sectores * 512 bytes/sector =
3.227.148.228 bytes ~ 3 GB.
 Las cabezas y cilindros comienzan a numerarse
desde el cero y los sectores desde el uno. En
consecuencia, el primer sector de un disco duro será el
correspondiente a la cabeza 0, cilindro 0 y sector 1.
27
 La estructura lógica de un disco duro está formada
por:
 El sector de arranque (Master Boot Record)
 Espacio particionado
 Espacio sin particionar
28
 El sector de arranque es el primer sector de todo disco
duro (cabeza 0, cilindro 0, sector 1). En él se almacena la
tabla de particiones y un pequeño programa master de
inicialización, llamado también Master Boot. Este
programa es el encargado de leer la tabla de particiones y
ceder el control al sector de arranque de la partición
activa. Si no existiese partición activa, mostraría un
mensaje de error.
 El espacio particionado es el espacio del disco que ha
sido asignado a alguna partición.
 El espacio no particionado, es espacio no accesible del
disco ya que todavía no ha sido asignado a ninguna
partición.
29
 Ejemplo: un disco duro con espacio particionado (2
particiones primarias y 2 lógicas) y espacio todavía
sin particionar.
30
 El caso más sencillo consiste en un sector de arranque
que contenga una tabla de particiones con una sola
partición, y que esta partición ocupe la totalidad del
espacio restante del disco. En este caso, no existiría
espacio sin particionar.
Como mínimo, es necesario crear una partición para cada
disco duro. Esta partición puede contener la totalidad del
espacio del disco duro o sólo una parte.
31
 Particiones y directorios permiten organizar
datos en un mismo disco duro.
 Diferencias entre particiones y directorios:
 1ª) Las particiones son divisiones de tamaño fijo del
disco duro; los directorios son divisiones de tamaño
variable de la partición.
 2ª) Las particiones ocupan un grupo de cilindros
contiguos del disco duro (mayor seguridad); los
directorios
suelen
tener
su
información
desperdigada por toda la partición.
 3ª) Cada partición del disco duro puede tener un
sistema de archivos (sistema operativo) distinto;
todos los directorios de la partición tienen el sistema
de archivos de la partición.
32
 Las razones que nos pueden llevar a crear más de una
partición por disco se suelen reducir a tres:
 Razones organizativas: Un ordenador que es
compartido por más de un usuario y, con objeto de
lograr una mejor organización y seguridad de sus
datos deciden utilizar particiones separadas.
 Instalación de más de un sistema operativo. Debido
a que cada sistema operativo requiere (como norma
general) una partición propia para trabajar, si
queremos instalar dos sistemas operativos a la vez en
el mismo disco duro (por ejemplo, Windows 98 y
Linux), será necesario particionar el disco.
 Razones de eficiencia. Por ejemplo, suele ser
preferible tener varias particiones FAT pequeñas antes
que una gran partición FAT. Esto es debido a que
cuanto mayor es el tamaño de una partición, mayor es
el tamaño del grupo (cluster) y, por consiguiente, se
desaprovecha más espacio de la partición.
33
 Las particiones pueden ser de dos tipos: primarias o
lógicas. Las particiones lógicas se definen dentro de una
partición primaria especial denominada partición
extendida.
 En un disco duro sólo pueden existir 4 particiones
primarias (incluida la partición extendida, si existe). Las
particiones existentes deben inscribirse en una tabla de
particiones de 4 entradas situada en el primer sector de
todo disco duro. De estas 4 entradas de la tabla puede
que no esté utilizada ninguna (disco duro sin particionar,
tal y como viene de fábrica) o que estén utilizadas una,
dos, tres o las cuatro entradas. En cualquiera de estos
últimos casos (incluso cuando sólo hay una partición), es
necesario que en la tabla de particiones figure una de
ellas como partición activa. La partición activa es aquella
a la que el programa de inicialización (Master Boot) cede
el control al arrancar. El sistema operativo de la partición
activa será el que se cargue al arrancar desde el disco
duro.
34
 Conclusiones:
 Para que un disco duro sea utilizable debe tener al
menos una partición primaria.
 Además para que un disco duro sea arrancable debe
tener activada una de las particiones y un sistema
operativo instalado en ella. Esto quiere decir que el
proceso de instalación de un sistema operativo en un
ordenador consta de la creación de su partición
correspondiente, instalación del sistema operativo
(formateo de la partición y copia de archivos) y
activación de la misma.
35
 No es posible crear más de cuatro particiones primarias.
Este límite se logra subsanar mediante la creación de una
partición extendida (como máximo una). Esta partición
ocupa, una de las cuatro entradas posibles de la tabla de
particiones. Dentro de una partición extendida se pueden
definir particiones lógicas sin límite. El espacio de la
partición extendida puede estar ocupado en su totalidad
por particiones lógicas o bien, tener espacio libre sin
particionar.
 Si hay una partición extendida, en la tabla de particiones
del Master Boot Record debe existir una entrada con una
partición extendida (la cual no tiene sentido activar). Esta
entrada apunta a una nueva tabla de particiones similar a
la ya estudiada, de la que sólo se utilizan sus dos primeras
entradas. La primera entrada corresponde a la primera
partición lógica; la segunda, apuntará a una nueva tabla de
particiones. Esta nueva tabla contendrá en su primera
entrada la segunda partición lógica y en su segunda, una
nueva referencia a otra tabla. De esta manera, se va
creando una cadena de tablas de particiones hasta llegar a
la última, identificada por tener su segunda entrada en
36
blanco.
Particiones primarias y particiones lógicas:
 Hay una diferencia importante: sólo las particiones primarias
se pueden activar. Además, algunos sistemas operativos no
pueden acceder a particiones primarias distintas a la suya.
 Conclusión: los sistemas operativos deben instalarse en
particiones primarias, ya que de otra manera no podrían
arrancar. El resto de particiones que no contengan un sistema
operativo, es más conveniente crearlas como particiones
lógicas. Por dos razones: primera, no se malgastan entradas
de la tabla de particiones del disco duro y, segunda, se evitan
problemas para acceder a estos datos desde los sistemas
operativos instalados. Las particiones lógicas son los lugares
ideales para contener las unidades que deben ser visibles
desde todos los sistemas operativos.
 Algunos sistemas operativos presumen de poder ser instalados
en particiones lógicas (Windows NT), sin embargo, esto no es
del todo cierto: necesitan instalar un pequeño programa en una
partición primaria que sea capaz de cederles el control.
37
Estructura lógica de las particiones:
 Dependiendo del sistema de archivos utilizado en cada partición, su
estructura lógica será distinta. En los casos de MS-DOS y Windows
95, está formada por sector de arranque, FAT, copia de la FAT,
directorio raíz y área de datos. De todas formas, el sector de
arranque es un elemento común a todos los tipos de particiones.
 Todas las particiones tienen un sector de arranque (el primero de la
partición) con información relativa a la partición. Si la partición tiene
instalado un sistema operativo, este sector se encargará de
arrancarlo. Si no hubiese ningún sistema operativo (como es el caso
de una partición para datos) y se intentara arrancar, mostraría un
mensaje de error.
38
Secuencia de arranque de un ordenador:
 Todos los ordenadores disponen de un pequeño programa
almacenado en memoria ROM (Read Only Memory, memoria de
sólo lectura), encargado de tomar el control del ordenador en el
momento de encenderlo.
 Lo primero que hace el programa de arranque es un breve chequeo
de los componentes hardware. Si todo está en orden, intenta el
arranque desde la primera unidad física indicada en la secuencia de
arranque. Si el intento es fallido, repite la operación con la segunda
unidad de la lista y así hasta que encuentre una unidad arrancable.
Si no existiese ninguna, el programa de arranque mostraría una
advertencia. Esta secuencia de arranque se define en el programa
de configuración del ordenador (también llamado Setup, CMOS o
BIOS).
 Suponiendo que arrancamos desde el disco duro, el programa de
arranque de la ROM cederá el control a su programa de
inicialización (Master Boot). Este programa buscará en la tabla de
particiones la partición activa y le cederá el control a su sector de
arranque. El programa contenido en el sector de arranque de la
partición activa procederá al arranque del sistema operativo.
39
Sistemas de archivos:
 Un sistema de archivos es una estructura que permite
tanto el almacenamiento de información en una partición
como su modificación y recuperación. Para que sea
posible trabajar en una partición es necesario asignarle
previamente un sistema de archivos. Esta operación se
denomina dar formato a una partición.
 Generalmente cada sistema de archivos ha sido
diseñado para obtener el mejor rendimiento con un
sistema operativo concreto (FAT para DOS, FAT32 para
Windows 98, NTFS para Windows NT, HPFS para
OS/2…). Sin embargo, es usual que el mismo sistema
operativo sea capaz de reconocer múltiples sistemas de
archivos.
40
FAT (File Allocate Table, tabla de asignación de archivos):
 Se basa, como su nombre indica, en una tabla de asignación
de archivos o FAT. Esta tabla es el índice del disco. Almacena
los grupos utilizados por cada archivo, los grupos libres y los
defectuosos. Como consecuencia de la fragmentación de
archivos, es corriente que los distintos grupos que contienen
un archivo se hallen desperdigados por toda la partición. La
FAT es la encargada de seguir el rastro de cada uno de los
archivos por la partición.
 Grupo, cluster o unidad de asignación: es la unidad mínima
de almacenamiento de un archivo en una partición y está
formada por uno o varios sectores contiguos del disco. Esto
quiere decir que el espacio real ocupado por un archivo en
disco será siempre múltiplo del tamaño del grupo. Además,
cada grupo puede almacenar información de un solo archivo.
Si no cabe en un solo grupo, se utilizarán varios (no
necesariamente contiguos). Para hacernos una idea del
nefasto resultado de un tamaño de grupo incorrecto,
consideremos dos archivos de 1 byte cada uno. Si el tamaño
del grupo es de 32 KB, se utilizarán dos grupos y el espacio
real ocupado en disco habrá sido de 64 KB = ¡65.536 bytes! en
vez de 2 bytes, como sería de esperar.
41
 Limitaciones:
 Nombres de archivos cortos: 8 caracteres de nombre y 3 de
extensión
 Tamaño máximo de particiones de 2 GB
 Grupos (clusters) demasiados grades, con el consiguiente
desaprovechamiento de espacio en disco.
 Elevada fragmentación, que ralentiza el acceso a los
archivos.
 A su favor:
 Su sencillez
 Compatibilidad con la mayoría de sistemas operativos.
 Debido a que la FAT de este sistema de archivos tiene
entradas de 16 bits (por eso, a veces se llama FAT16), sólo se
pueden utilizar 216 = 65.536 grupos distintos. Esto implica que,
con el fin de aprovechar la totalidad del espacio de una
partición, los grupos tengan tamaños distintos en función del
tamaño de la partición. Por ejemplo, con un grupo de 16 KB se
puede almacenar hasta 216 grupos * 16 KB/grupo = 220 KB = 1
GB de información. El límite de la partición (2 GB) se obtiene al
considerar un grupo máximo de 32 KB (formado por 64
sectores consecutivos de 512 bytes).
42
VFAT (Virtual FAT):
 Ventajas con FAT:
 Con VFAT los nombres de los archivos pueden tener
255 caracteres entre nombre y extensión.
 Plena compatibilidad con FAT. Por ejemplo, es factible
utilizar la misma partición para dos sistemas operativos
que utilicen uno FAT y otro VFAT (MS-DOS y Windows
95). Cuando entremos desde MS-DOS, los nombres
largos de archivos se transforman en nombres cortos
según unas reglas establecidas, y pueden ser utilizados
de la manera habitual.
 Limitaciones: tanto las particiones FAT como las VFAT
están limitadas a un tamaño máximo de 2 GB. Esta es la
razón por la que los discos duros mayores de este tamaño
que vayan a trabajar con alguno de los dos sistemas,
necesiten ser particionados en varias particiones más
pequeñas.
 El sistema de arhivos FAT32 ha sido diseñado para
aumentar este límite a 2 TB (1 terabyte = 1024 GB).
43
FAT32 (FAT de 32 bits):
 Ventajas:
 El sistema FAT32 permite trabajar con particiones
mayores de 2 GB.
 El tamaño del grupo (cluster) es mucho menor y no se
desperdicia tanto espacio como ocurría en las
particiones FAT.
 En la siguiente tabla, se comparan los tamaños de grupo
utilizados según el tamaño de la partición y el sistema de
archivos empleado:
44
Tamaño del cluster
Tamaño de la
partición
FAT
FAT32
<128 MB
2 KB
128 - 256 MB
4 KB
256 - 512 MB
8 KB
512 MB - 1GB
16 KB
1 - 2 GB
32 KB
4 KB
No
permitido
8 KB
No
permitido
2 - 8 GB
8 - 16 GB
16 - 32 GB
32 GB – 2 TB
16 KB
32 KB
45
NTFS (New Technology File System, sistema de
archivos de nueva tecnología):
 NTFS sólo es recomendable para particiones superiores
a 400 MB, ya que las estructuras del sistema consumen
gran cantidad de espacio. NTFS permite definir el
tamaño del grupo (cluster), a partir de 512 bytes (tamaño
de un sector) de forma independiente al tamaño de la
partición.
 Las técnicas utilizadas para evitar la fragmentación y el
menor desaprovechamiento del disco, hacen de este
sistema de archivos el sistema ideal para las particiones
de gran tamaño.
46
HPFS (High Performance File System, sistema de
archivos de alto rendimiento):
 HPFS es el sistema de archivos propio de OS/2. Utiliza
una estructura muy eficiente para organizar los datos en
las particiones.
 HPFS no utiliza grupos sino directamente sectores del
disco (que equivalen a un grupo de 512 bytes). En vez de
utilizar una tabla FAT al principio de la partición, emplea
unas bandas distribuidas eficazmente por toda la
partición. De esta forma se consigue, suprimir el elevado
número de movimientos que los cabezales de
lectura/escritura tienen que realizar a la tabla de
asignación en una partición FAT. El resultado de este
sistema es una mayor velocidad de acceso y un menor
desaprovechamiento del espacio en disco.
47
 MS-DOS (y Windows 3.1) reconoce únicamente
particiones FAT
 Windows 95 admite tanto particiones FAT como
VFAT;
 Windows 98 y Windows 95 OSR2 soportan FAT,
VFAT y FAT32
 Windows NT 4.0 admite particiones FAT, VFAT y
NTFS
 Windows 2000 admite particiones FAT, VFAT, FAT32
y NTFS
 Linux admite su propio sistema de archivos y,
dependiendo de las versiones, la mayoría de los
anteriores.
 Windows XP, Vista y Windows 7 admiten particiones
FAT, FAT32 y NTFS
48
 Definiciones sobre discos duros:
 Densidad de grabación lineal: nº de bits
grabados por unidad de longitud.
 Velocidad de transferencia: número de bits
que pasan por debajo del cabezal por unidad
de tiempo (= para todas las pistas).
 Tiempo medio de acceso a un dato=
n T  T T

T
pistas
busqueda
T
accesoDato
 T búsqueda  T latencia  T estabilización


T latencia 
p p
2
max
min
2
1
2 T latencia
49
Discos ópticos
 Usan un haz de láser para grabar la
información
 Más fiables que los disquetes, mayor
capacidad de almacenamiento y mayor
velocidad de acceso a los datos.
 Tipos
 CD-ROM (Cederrón)
 DVD
50
 CD-ROM (Compact Disk- Read Only Memory;
Disco Compacto-Memoria de sólo lectura):
 Tipos más importantes: CD-R y CD-RW
 DVD
 Nace en 1995
 La capacidad de almacenamiento es grande (4,7 GB
para los de 1 cara y 1 capa, y 17 GB para los de dos
caras y dos capas)
 Tipos más importantes: DVD-R, DVD+R y DVD-RW
51
 Discos duros virtuales:
 Dispositivo de almacenamiento que no reside en el
ordenador
 Gratuito o de pago
 Ventaja: se puede acceder a esa información desde
el ordenador que se desee
 Desventaja: se necesita conexión a Internet
52
 Discos Flash:
 Pequeña memoria del tamaño de un mechero que
se pueden conectar al ordenador a través del puerto
USB
 Valores típicos son de 1 GB, 2 GB, 4GB…
53
3. El software
 Programas o software
 Sistema operativo:
 Monousuario
 Multiusuario
 Monotarea
 Multitarea
 Sistemas operativos: UNIX, LINUX, MS-DOS,
Windows 95, 98, NT, 2000, XP, Vista …
 Los sistemas operativos constan de:
 Kernel
 Sistema de administración de memoria
 Administrador del sistema de archivos
 Controladores de dispositivos
 Bibliotecas del sistema
54
 Definiciones:
 Programa: conjunto de instrucciones que al
ser ejecutadas en un ordenador, se obtiene
un resultado.
 Programación: es la escritura de un
programa.
 Lenguajes de programación: son los
lenguajes utilizados para escribir el programa.
 Programador: es la persona que escribe un
programa.
55
4. Lenguajes de programación
 Los ordenadores son máquinas electrónicas, que
trabajan con datos binarios
 El lenguaje máquina es muy diferente del lenguaje
humano
 Los principales lenguajes que se pueden utilizar son:
 Lenguaje máquina
 Lenguaje ensamblador
 Lenguaje de alto nivel
56
4.1 Lenguaje máquina




Sólo usan 0 y 1
Son directamente inteligibles por la máquina
Ventaja: no necesita traducción
Desventajas:
 Dificultad y lentitud en la programación
 Poca fiabilidad
 Dificultad grande de verificar y poner a punto los
programas
 Los programas sólo son ejecutables en el mismo
ordenador (mismo microprocesador)
 Las desventajas superan a las ventajas por lo que no se
recomienda su uso
57
4.2 Lenguaje ensamblador
 Es más fácil de usar que el lenguaje máquina, debido al uso de
nemotécnicos (add, sus, div…), pero también dependen del
microprocesador.
 Ejemplo:
 Lenguaje ensamblador: add M, N, P
 Lenguaje máquina: 0110 1001 1010 1011
 Un programa escrito en lenguaje ensamblador debe ser traducido al
lenguaje máquina; para ello se utiliza un programa llamado
ensamblador (assembler):
Programa en lenguaje
ensamblador
(programa fuente)
Programa
ensamblador
Programa en lenguaje
máquina
(programa objeto)
58
 El lenguaje ensamblador ≠ programa ensamblador
 Ventajas del lenguaje ensamblador:
 Más fácil de codificar que en lenguaje máquina
 Más rápida su ejecución que en lenguaje de alto
nivel
 Desventajas del lenguaje ensamblador:
 También depende de la máquina
 La programación es compleja ya que, además
de conocer las instrucciones de programación,
es necesario conocer el interior de la máquina.
59
4.3 Lenguajes de alto nivel
 Son los más utilizados por los programadores.
 Los programas en lenguaje de alto nivel son más
fáciles de escribir y de interpretar que en lenguaje de
bajo nivel o ensamblador.
 Además son portables o transportables.
 Ventajas:
 Tiempo de formación de los programadores relativamente
corto si lo comparamos con otros lenguajes.
 Instrucciones que recuerdan al lenguaje humano: while, if,
for, open …
 Las modificaciones y puesta a punto de un programa son
más sencillas.
 Reducción del coste de los programas.
 Transportabilidad.
60
 Inconvenientes:
 Para su puesta a punto necesitaremos realizar
sucesivas traducciones hasta conseguir el
programa objeto definitivo.
 No se aprovechan los recursos internos de la
máquina tan bien como en el lenguaje máquina o
en el lenguaje ensamblador.
 Aumento de la ocupación de memoria.
 El tiempo de ejecución de los programas es mucho
mayor.
 Ejemplos: C, FORTRAN, Pascal, BASIC, C++,
VisualBASIC, Java, html…
 Programas traductores: intérpretes y compiladores.
61
Intérprete:
 No genera un programa
objeto; traduce y ejecuta
instrucción a instrucción.
 Se utiliza para algunos
lenguajes de programación
como Java o BASIC.
 Ventaja: es más fácil la
puesta a punto del programa.
 Desventaja: siempre que
ejecutemos el programa hay
que traducirlo antes.
Programa fuente
Intérprete
Traducción y ejecución línea a línea
62
Compilador:
 Traduce el programa fuente obteniendo el programa
objeto.
 Esta traducción se llama compilación.
 Además de realizar la traducción realiza alguna
optimización del código.
 Tras la compilación se ejecuta automáticamente otro
programa llamado enlazador que incorpora las
funciones de la biblioteca que se utilicen en el programa.
 Los programas compiladores son distintos según el
ordenador y el sistema operativo; y el código máquina
que generan es también distinto de un ordenador a otro.
 El programa fuente, sin embargo, es el mismo para
cualquier ordenador.
63
Programa en
lenguaje de alto nivel
Compilador
+
Enlazador
Programa en
lenguaje máquina
 Si en la compilación se detecta algún error, el
programa fuente deberá ser modificado y otra vez
compilado.
 Ventajas:
 Se optimiza algo el código.
 Una vez compilado el programa, se puede
ejecutar las veces que queramos sin
necesidad de traducir otra vez el programa
fuente.
 Desventajas: el proceso de depuración de errores
puede ser más complicado que si se usa un
intérprete.
64
5. Fases en la resolución de
problemas mediante programas
 Fases de este proceso:
 1. Análisis del problema
 2. Diseño del algoritmo
 3. Codificación
 4. Compilación y ejecución
 5. Verificación y depuración
 6. Mantenimiento
 7. Documentación
65
 Ejemplo: programa que nos manda escribir una
cantidad de dinero en euros y nos da su valor en
dólares y en libras.
 1. Análisis del problema: Se analiza el problema
teniendo en cuenta las especificaciones
establecidas. En este caso una especificación
podría ser que el resultado tenga dos cifras
decimales.
66
Inicio
Leer
(euros)
 2. Diseño del algoritmo:
se diseña el algoritmo
que resuelva el problema;
por ejemplo con un
diagrama de flujo:
dolares=c1*euros
libras=c2*euros
Imprimir
(dolares,
libras)
Fin
67
 3. Codificación: se escribe el programa utilizando
la sintaxis del lenguaje de alto nivel que se vaya
a usar; por ejemplo C:
/*Programa que calcula el valor en dólares y libras
una cantidad en euros*/
#include<stdio.h>
#include<conio.h>
main()
{
float euros, dolares, libras;
printf(“Escribe el valor en euros que quieras convertir:\n”);
scanf(“%f”,&euros);
dolares= euros*c1;
libras=euros*c2;
printf(“El valor en dolares es: %.2f y en libras es: %.2f”, dolares,
libras);
getch();
}
68
 4. Compilación y ejecución: el programa se
compila y si no hay errores de sintaxis, se ejecuta.
Si hay errores de sintaxis, se modifica el
programa fuente y se vuelve a compilar.
 Existen aplicaciones como el Turbo C de Borland
o el Dev-C++ que permiten:
 Escribir el programa
 Compilarlo
 Ejecutarlo
 Ejecutarlo paso a paso
 Comprobar donde hay errores en la compilación …
 Pero también se puede escribir en el bloc de
notas de Windows y compilarlo y ejecutarlo en
MS-DOS o desde UNIX
69
 5. Verificación y depuración: Puede que no haya
ningún error de tipo sintáctico, pero que el
programa no funcione del todo bien. Por ello es
necesario ejecutar el programa varias veces y
probarlo. Por ejemplo en el caso anterior, si
hemos definido las variables euros, dolares y
libras como enteros en vez de decimales (float).
 6. Mantenimiento: Consiste en actualizar el
programa cada vez que sea necesario. En el
ejemplo anterior, las constantes c1 y c2 no son
siempre las mismas.
70
 7. Documentación: nos va a permitir la
comprensión, modificación, mantenimiento … de
un programa, en el futuro, y por una persona
distinta del programador. La programación
incluye el algoritmo del programa (pseudocódigo
o diagrama de flujo) y el programa debidamente
comentado.
71
Inicio
Editar programa
fuente
 Fases en la
ejecución de un
programa:
Compilar
programa fuente
(programa objeto)
¿Errores de
compilación?
SI
No
Programa compilado y
enlazado (programa
ejecutable)
Ejecución del
programa ejecutable
(¿errores no
sintácticos?)
¿Errores no
sintácticos?
SI
NO
Fin
72
6. Breve historia de los lenguajes de
programación de alto nivel
 Los primeros lenguajes de programación que se desarrollaron
fueron, a finales de los 50 y principios de los 60 el COBOL,
FORTRAN IV, BASIC y LOGO. Surgen como alternativa a los
lenguajes ensambladores.
 A finales de los 70 y principios de los 80 aparecen otros como el
PASCAL (1971) y C (1972). Se convierten en dominantes junto
con otros anteriores como el COBOL y el FORTRAN.
 A principios de los años 80 apareció C++, lenguaje de
programación orientada a objetos.
 En los 90 aparece el lenguaje Java, también orientado a objetos y
muy dirigido a Internet.
 En el año 2000 Microsoft presenta el lenguaje C#, evolución del
lenguaje C++.
73
 El lenguaje C nace en los laboratorio Bell de AT&T y
ha sido estrechamente asociado al sistema operativo
UNIX ya que el propio UNIX, los compiladores C y los
programas y herramientas de UNIX están escritas en
C.
 El lenguaje está inspirado en el lenguaje B escrito por
Ken Thompson en 1970 con intención de codificar el
UNIX, que en la fase de arranque estaba escrito en
ensamblador, en vistas a su transportabilidad a otras
máquinas. El lenguaje B, a su vez, es un lenguaje
inspirado en otro lenguaje, el BCPL, concebido por
Martin Richard en 1967.
 En 1972, Dennis Ritchie toma el relevo y modifica el
lenguaje B, creando el lenguaje C y reescribiendo
UNIX en dicho lenguaje.
74
 La gran cantidad de ventajas que presenta el lenguaje C
sobre otros lenguajes hace que siga siendo uno de los
lenguajes más populares y usados en empresas,
organizaciones, fabricantes de software …
 Ventajas:
 Programación estructurada (se evita la instrucción
goto)
 Economía de las expresiones
 Abundancia de operadores y tipos de datos
 Codificación en alto y bajo nivel simultáneamente
(punteros)
 Transportabilidad
 Producción de código objeto altamente optimizado
 Uso de bibliotecas de C (funciones matemáticas,
lectura y escritura de ficheros, manejo de cadenas
de caracteres …)
75