Beruflich Dokumente
Kultur Dokumente
Fundamentos de Informtica
INTRODUCCIN
Datos de
Entrada
ORDENADOR
Dispositivos de
Entrada
PROGRAMA
Datos de
Salida
Dispositivos de
Salida
1/9
1.2.
COMPONENTES DE UN ORDENADOR
Memoria
U.C.
M. Principal:
ROM
RAM
C.P.
A.L.U.
R.I.
reloj
BUSES
M. Secundaria
Acumulador
Control
Dispositivos de Entrada/Salida
Controladores
1.2.1.
Unidades de Almacenamiento
ALMACENAMIENTO
Central o Interna):
INTERNO
(Memoria
Principal,
1 KByte (o KB)
= 210 bytes
1 Megabyte (o MB) = 210 KBytes
1 Gigabyte (o GB) = 210 MByte
1 Terabyte (o TB) = 210 GByte
ALMACENAMIENTO EXTERNO
Auxiliar, Secundaria o Externa)
(Memoria
Masiva
Caractersticas:
Capacidad de almacenamiento muy elevada.
Acceso muy lento a los datos.
No voltil.
La informacin almacenada se organiza en archivos o ficheros,
que se pueden agrupar en carpetas o directorios.
Tipos:
Dispositivos Magnticos: cintas, discos duros, disquetes.
Dispositivos pticos: CD-ROM, DVD.
1.2.2.
Unidad
Central
de
Proceso
(C.P.U.)
microprocesador
Componentes:
Unidad de Control
Unidad Aritmtico-Lgica
Registros Almacenamiento temporal de informacin, cuyo
acceso es extremadamente rpido.
4/9
5/9
1.2.3.
Buses
1.3.
SISTEMAS OPERATIVOS
7/9
1.4.
El ordenador en imgenes
Tarjeta de Red
Bus
8/9
Conector Paralelo
BNC
AWI
Conectores de las tarjetas de juegos y video
9/9
DEFINICIN DE ALGORITMO
Solucin(problema) ALGORITMO(Solucin(problema))
ALGORITMO Secuencia precisa de operaciones (pasos) que
resuelven un problema en un tiempo finito.
ALGORITMO
+
LENGUAJE DE PROGRAMACIN
PROGRAMA
PROPIEDADES DE UN ALGORITMO
1/9
2.1.2.
Smbolos
Principales
Funcin
Decisin.
SI
Decisin mltiple.
Inicio
leer HORAS,
PRECIO_HORA,
NOMBRE
Si
No
HORAS <=40
SALARIO40 * PRECIO_HORA
+ 1,5 * PRECIO_HORA *
(HORAS-40)
SALARIO HORA *
PRECIO_HORA
escribir SALARIO
Si
mas datos?
No
Fin
3/9
suma = 0 , n = 0
escribir("Dame un n no negativo")
leer (numero)
mientras (numero >= 0)
suma = suma + numero,
n = n + 1
escribir("Dame un n no negativo")
leer (numero)
fin mientras
si (n > 0)
media = suma / n
escribir("La media es ", media);
si no
escribir ("La media es 0")
fin si
4/9
2.2.
QU ES UN PROGRAMA?
Anlisis
Diseo
Codificacin
Pruebas
Documentacin y
Mantenimiento
2.3.
LA IMPLEMENTACIN
ACCIONES:
o Asignaciones
o E/S
o Operaciones Aritmtico-Lgicas
ESTRUCTURAS DE CONTROL:
o Decisiones
o Ciclos (Bucles)
6/9
2.4.
LENGUAJES DE PROGRAMACIN
2.4.1.
CLASIFICACIN
DE
LOS
LENGUAJES
DE
PROGRAMACIN.
7/9
LENGUAJE ENSAMBLADOR
mnemotcnicos y sus caractersticas:
Sus
instrucciones
son
8/9
2.4.3.
EL LENGUAJE C Y C++
Los
programas
suelen
subdividirse
en
1/7
3.2.
3.2.1.
2/7
(nombre.c)
Con
errores
Sin errores
COMPILADOR
Libreras
Programa Objeto
(nombre.o)
Sin errores
ENLAZADOR
Programa Fuente
Programa ejecutable
(nombre.exe)
3/7
4/7
5/7
3.2.2.
FASE DE EJECUCIN
3.3.
El COMPILADOR DE C
6/7
7/7
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
1/19
4.1.1.
Seccin de defines
#define constante valor
Obligatorio
2/19
4.2.
TIPOS DE DATOS
Carcter (char)
Entero (int)
Real (float)
Sin valor (void)
3/19
4/19
5/19
VARIABLES
6/19
donde:
[ ] indican el carcter opcional de su contenido.
< > indican obligatoriedad.
{ } indican posibilidad de repeticin, separando con una coma,
de su contenido.
7/19
4.2.2.
CONSTANTES
8/19
4.3.
OPERADORES Y EXPRESIONES
4.3.1.
Operadores
Operadores aritmticos
+
*
/
%
-++
Ejemplo
de
utilizacin
incremento/decremento:
de
los
operadores
Operacin
int i=2, m;
m = i++;
int j=2, n;
n = ++j;
de
menor
++ -- (cambio de signo)
*
/
%
+
-
9/19
>=
<
<=
==
!=
&&
||
!
Semntica
Operador y
Operador o
Operador no
Tipo
Binario
Binario
Monario
q
0
1
0
1
p && q
0
0
0
1
p||q
0
1
1
1
!p
1
1
0
0
!
> >=
menor
==
&&
||
<
<=
!=
10/19
Operador
=
-=
+=
*=
/=
%=
Semntica
Asignacin bsica
Resta y asignacin
Suma y asignacin
Multiplicacin y asign.
Divisin y asignacin
Mdulo y asignacin
Tipo
Todos
Enteros y Reales
Enteros y Reales
Enteros y Reales
Enteros y Reales
Enteros
Ejemplo:
...
int x;
...
x += 2;
...
equivalente a x = x+2;
11/19
4.3.2.
Expresiones
menor
()
! ++ - - - (monario)
*
/
%
+
< <= > >=
= = !=
&&
||
12/19
int
double
float
double
double
ojo se almacena como un int se pierde la parte decimal
Explcita (cast o casting): El cambio de tipo se produce a
peticin del programador, y tiene la siguiente sintaxis:
(<tipoRequerido>)<expresin>
13/19
4.4.
4.4.1.
Funcin
int getche(void);
Accin
Espera a que se pulse una tecla. El
carcter pulsado aparecer en
pantalla, y lo devuelve para ser
recogido por una variable.
P.ej.: char v;
v = getche();
14/19
4.4.2.
Accin
4.4.2.1.
Ejemplo:
. . .
x=18;
c=a;
printf( Su edad es %d, y su letra del nif es %c, x, c );
. . .
rdenes de formato
argumentos
4.4.2.2.
Ejemplo:
. . .
int x;
char t;
scanf(%d, %c, &x, &t);
. . .
rdenes de formato
argumentos
16/19
Significado
\n
\r
\t
\
\
\\
Salto de lnea
Retorno de carro
Tabulacin horizontal
Comillas dobles
Comilla simple
Barra invertida
Por ejemplo:
printf(Mis datos son: \nNombre:\nApellido1\tApellido2);
Apellido2
17/19
4.5.
#include <stdio.h>
#include <stdlib.h>
int main()
{ // Declaramos las variables que sean necesarias
int anio, edad, actual;
system(cls);
printf(Hola, en qu ao naciste?: );
scanf(%i, &anio);
printf(\nIndica el ao actual: );
scanf(%i, &actual);
edad = actual - anio;
printf(Al haber nacido en el ao %i y estar actualmente
en el ao %i, tienes %i aos., anio, actual,
edad);
system(pause);
return 0;
18/19
4.6.
APNDICE
Debido a que el C tiene muy pocas palabras clave, tiene que suplir
esta carencia con una serie de funciones, para realizar acciones muy
frecuentes entre los programadores, agrupadas en unas Libreras
(cada librera contiene un determinado nmero de funciones que
realizan acciones de un carcter especfico), a cuyo conjunto se le
llama Biblioteca.
Para poder utilizar una determinada Librera de la Biblioteca, hay
que incluir su correspondiente archivo cabecera al principio de
nuestro programa, utilizando la directiva include, del siguiente
modo:
#include <nombre_del_archivo_cabecera.h>
Propsito
Funciones de asignacin dinmica
Funciones de manejo de caracteres
Funciones matemticas
Funciones de E/S
Funciones de propsito general
Funciones para trabajar con cadenas de caracteres
Funciones para manipular la hora y la fecha del sistema
19/19
SECUENCIA DE SETENCIAS
Estructuras de SELECCIN
Estructuras de REPETICIN
5.1.1.
Estructura Secuencial
Inicio del
Programa
Instruccin
1
Instruccin
n
ltima
Instruccin
Fin del
Programa
1/11
5.1.2.
Bloque de Sentencias
(Sentencias compuestas)
Si se ejecuta la 1 Se
ejecutan TODAS las
dems sentencias
englobadas entre las {}.
5.2.
ESTRUCTURAS DE SELECCIN
if
switch
5.2.1.
(Sentencias Condicionales)
Decisiones
Alternativas
Opcional
2/11
Opcional
hasta la sentencia_n
condicin == false Se ejecutan desde la sentencia_n+1
hasta la sentencia_t
3/11
Funcionamiento if
int main()
{ . . .
. . .
if (condicin)
sentencia1;
else
sentencia2;
. . .
. . .
}
verdadera
falsa
4/11
int main()
{ . . .
. . .
verdadera
if (condicin)
falsa
{ sentencia_1;
. . .
sentencia_n;
}
else
{ sentencia_n+1;
. . .
sentencia_t;
}
. . .
. . .
}
5.2.2.
switch
Opcional
default: sentencia_t;
}
5/11
Funcionamiento:
1. Se compara el valor de la vble, o el resultado de la
expresin, contenida entre los parntesis del switch,
con los distintos valores.
2. Se ejecutar aquella sentencia (o grupo de sentencias) que
corresponda al case cuyo valor asociado sea igual al
de la vble o expresin.
3. Las sentencias se ejecutan hasta que se encuentre una
sentencia break.
4. Si ningn valor coincide con la vble o expresin
Se ejecutarn las sentencias asociadas al apartado
default (en el caso de que exista).
switch (vble/expresin)
{
case valor1: sentencia_1.1;
. . .
sentencia_1.n;
break;
case valor2: sentencia_2.1;
. . .
sentencia_2.t;
break;
. . .
case valorn: sentencia_n.1;
. . .
sentencia_n.z;
break;
Opcional
default: sentencia_t;
. . .
sentencia_t.x;
}
6/11
Funcionamiento switch
int main()
{ ...
vble=1;
...
switch(vble)
{ case 1: sentencia1;
case 2: sentencia2;
sentencia3;
break;
default: sentencia4;
}
...
}
int main()
{ ...
vble=3;
...
switch(vble)
{ case 1: sentencia1;
case 2: sentencia2;
sentencia3;
break;
default: sentencia4;
}
...
}
int main()
{ ...
vble=2;
...
switch(vble)
{ case 1: sentencia1;
case 2: sentencia2;
sentencia3;
break;
default: sentencia4;
}
...
}
int main()
{ ...
vble=3;
...
switch(vble)
{ case 1: sentencia1;
break;
case 2: sentencia2;
sentencia3;
}
...
}
7/11
5.3.
ESTRUCTURAS DE REPETICIN
(Sentencias Iterativas)
while
do while
for
Conocemos cuntas veces hay que repetir un conjunto de
instrucciones (o una sola)?:
while
Sintaxis while
while (condicin para repetir)
sentencia;
8/11
Funcionamiento while
int main ()
{...
...
falsa
while (condicin) verdadera
sentencia;
...
...
}
5.3.2.
int main ()
{...
...
falsa
while (condicin) verdadera
{ sentencia1;
...
sentenciaN;
}
...
...
}
do - while
Sintaxis do-while
do
sentencia;
while (condicin para repetir);
Ojo!
do
{ sentencia1;
...
sentenciaN;
}while (condicin para repetir);
Ojo!
Funcionamiento do-while
int main()
{ ...
do
sentencia;
while (condicin);
...
...
}
verdadera
falsa
int main()
{ ...
do
sentencia1;
...
sentenciaN;
while (condicin);
...
...
}
verdadera
falsa
5.3.3.
for
Funcionamiento for
int main()
{ ...
1
...
for (i=10;
i>0;
i-- )
S
3
sentencia;
No
...
4
...
}
int main()
{ ...
1
2
5
...
for (i=1;
i<10;
i++ )
{
S
3
Sentencia1;
No
...
SentenciaN;
}
...
4
...
}
10/11
11/11
Tema 6. Punteros
TEMA 6: PUNTEROS
6.1.
CONCEPTO DE PUNTERO
35
Pos: D217
35
D104
Pos: D104
Contenido de la
variable puntero x
Direccin en
Memoria de la
variable puntero x.
6.2.
D104
D104
Vble entera, y
Contenido de la
variable entera y
(variable apuntada
por x)
D217
Vble puntero, x
Memoria Principal
<tipo_base> *<identificador>;
1/4
Tema 6. Punteros
6.3.
&<variable>
*<posicin_de_memoria>
Ejemplo:
125
D150
D100
D175
125
D100
D100
D100
cuenta
D150
D175
125
*p;
Memoria Principal
D150
x =
cuenta
D100
cuenta
&cuenta;
Memoria Principal
Memoria Principal
125
p =
D175
2/4
Tema 6. Punteros
6.4.
INICIALIZACIN DE PUNTEROS
6.5.
*p
= NULL;
ASIGNACIN DE PUNTEROS
Ejemplo:
int x=15,
*p1=NULL, *p2=NULL;
3/4
Tema 6. Punteros
6.6.
4/4
NIVELES DE ABSTRACCIN
SUBPROBLEMA_1
SUBPROBL_1.1
...
PROBLEMA
INICIAL
...
SUBPROBL_N.1
Complejo
Muy Abstracto
SUBPROBLEMA_N
...
Menos Complejo
SUBPROGRAMAS
Menos Abstracto
1/18
7.2.
DISEO DESCENDENTE
2/18
7.3.
7.3.1.
Programacin Estructurada
Programacin Modular
Ventajas:
Cada mdulo puede ser programado por una persona
diferente (siguiendo unas especificaciones), y quien los utiliza
no tiene por qu saber cmo trabajan internamente las
funciones que contiene.
3/18
7.4.
Sintaxis general:
CABECERA o PROTOTIPO
Tipo_devuelto Nombre (declaracin_de_parmetros)
{
EN EL CDIGO DE LA FUNCIN
[declaraciones;]
sentencias;
[return valor_devuelto;]
Va de comunicacin
entre subprogramas.
Si es un PROCEDIMIENTO el
SE PONE return.
Si es una FUNCIN el tipo_devuelto ser igual al tipo del valor
devuelto por return.
Nombre
Ejemplos:
int FUNC1 (float x)
float FUNC2 (int x, int y, char c)
float FUNC3 (int a, b, float c)
INCORRECTO
5/18
7.4.2.
Ejemplo:
Procedimiento que devuelve las dos races de una ecuacin de 2 grado:
void ECUACION (int a, int b, int c, float *R1, float *R2)
7/18
7.5.1.
Variables Locales
Tiempo de Vida
de las Variables
LOCALES
Ejemplo
...
int main()
1 { int x, y;
// Vbles. LOCALES al main()
...
2
// Llamada a la funcin F1
...
3
4
// Llamada a la funcin F2
...
}
int F1 (int x)
{ int a, b, y;
// Vbles. LOCALES a F1
...
}
int F2 (int z)
{ int b, s;
// Vbles. LOCALES a F2
...
}
Parmetros
Ejemplo:
Prototipo de la funcin
MAYOR
#include <stdio.h>
int MAYOR (int a, int b);
int main ()
{ int x, y, z;
printf("Dime 2 nmeros: ");
scanf(" %i %i", &x, &y);
LLAMADA
a la funcin
z = MAYOR(x,y);
. . .
}
int MAYOR(int a, int b)
{
int max;
ARGUMENTOS Valores
que toman los parmetros.
Cabecera de la funcin
MAYOR
if (a>b)
max = a;
else
max = b;
return max;
}
10/18
7.5.2.1.
11/18
...
void SumaResta (int a, int b, int *S, int *R);
...
int main()
Pasamos la
{ int suma, resta, dato1, dato2;
Llamada al
procedimiento
...
DIRECCIN
del argumento.
PROTOTIPOS DE FUNCIONES
*Pn);
7.7.
MDULOS
7.7.1.
7.7.2.
Proyectos
15/18
Creacin de un proyecto:
1. Archivo Nuevo Proyecto Aparece una ventana como la anterior.
2. En la pestaa Basic, seleccionar Proyecto Vaco (Empty Project),
seleccionar como lenguaje base C o C++, asignar un nombre al proyecto y
clic en Aceptar.
3. Se abrir una ventana para seleccionar la carpeta donde se almacenar el
proyecto.
4. Una vez realizado se crear un fichero nombreProyecto.dev en la carpeta
seleccionada con la informacin sobre el proyecto y aparecer el nombre
del proyecto en la ventana de Navegacin de Proyectos situada a la
izquierda del entorno.
16/18
17/18
Compilacin y Ejecucin.
o Ejecutar Compilar Para compilar todos los ficheros modificados del
proyecto desde la ltima compilacin. Antes de compilar se guarda el
contenido de todos los ficheros fuentes. Si no existen errores, se genera el
ejecutable.
o Ejecutar Compilar Archivo Actual Compila slo el fichero acual.
o Ejecutar Ejecutar Ejecuta el proyecto una vez haya sido compilado sin
errores.
o Ejecutar Compilar y Ejecutar Compila el proyecto y si no existen
errores los ejecuta.
o Ejecutar Reconstruir todo Realiza una compilacin completa del
proyecto, esto es compila los ficheros modificados y los no modificados.
7.8.
#include
<fichero.h>
#include
fichero.h
18/18
NO
Necesitamos algo as:
Vble
5 7
...
Ejemplo:
Notas
5 7
ndice
...
6
Max-1
1/18
8.1.
VECTORES
8.1.1.
Vectores Unidimensionales
Grficamente:
Vble
5 7
Indice
...
6
dimensin -1
Declaracin:
tipo_elemento NOMBRE[dimensin];
Ejemplos:
Declarar una variable capaz de almacenar las notas de 50
alumnos:
float NOTAS[50];
Por qu?
2/18
8.1.2.
Grficamente:
0
columnas -1
...
0
1
.
.
.
filas -1
.
.
.
.
...
.
.
.
.
...
Declaracin:
tipo_elemento NOMBRE[Nmero_filas][Nmero_columnas];
Ejemplos:
Crear un variable capaz de almacenar la temperatura media de
cada mes, para 5 aos:
float TEMP_MEDIA[5][12];
aos meses
Suponiendo que la tabla contiene datos, mostrar las
temperaturas medias de cada mes, para todos los aos:
Fijamos el ao
Nos movemos
por los meses
de ese ao
3/18
8.1.3.
Grficamente:
Profundidad -1
filas -1
0
0
columnas -1
Declaracin:
tipo_elem NOMBRE[filas][columnas][profundidad];
Ejemplos:
Crear una variable capaz de almacenar la temperatura media de
cada da, de cada mes, durante un perodo de 10 aos:
float TEMP[10][12][30];
4/18
Fijamos el ao
Fijamos el mes
Recorremos los
30 das de ese
mes y ese ao
8.1.4.
Inicializacin de Vectores
Ejemplos:
int VECTOR1[5] = {0, 1, 4, 9, 16};
int VECTOR2[4][3] = {1, 1, 1,
2, 4, 8,
3, 9, 27
4, 16, 64};
5/18
8.1.5.
Posibles declaraciones:
char NOMBRE [tamao];
char
*NOMBRE;
Ejemplos:
6/18
Accin
strcpy(c1,c2)
strcat(c1,c2)
strchr(c1,ch1)
strcmp(c1,c2)
strlen(c1)
strupr(c1)
strlwr(c1)
strset(c1,ch1)
strstr(c1,c2)
Notas:
1. No se pueden asignar cadenas completas con el operador =.
2. No se pueden comparar cadenas con el operador ==.
3. No se puede asignar a una cadena un valor con el operador = salvo
en la declaracin de la misma.
4. Para leer cadenas, desde teclado, que contengan espacios en blanco
utilizaremos la funcin gets( ).
7/18
/* borrar la cadena */
8/18
8.1.6.
Ejercicios propuestos. Procedimiento para rellenar de forma aleatoria (con nmero entre el
1 y el 100) una tabla de 5x10 elementos.
La funcin rand genera un nmero pseudo_aleatorio entre 0 y la constante RAND_MAX (nmero
suficientemente grande). Al ser una generacin de nmeros pseudo_aleatoria (basada en una frmula
que parte de una determinada semilla, que si no se modifica ser siempre la misma) cada vez que
ejecutemos nuestro programa, la secuencia de nmeros aleatorios ser siempre igual. Para evitar
este inconveniente existe la funcin srand que nos permite establecer una semilla distinta, para la
generacin de nmeros aleatorios, cada vez que realicemos una ejecucin del programa, para lo cual
haremos uso de otra funcin llamada time (contenida en la librera time.h). Esta funcin ser
llamada al principio del programa y una sola vez. La forma de utilizar estas funciones ser la
siguiente:
/* Al comenzar el programa pondremos la siguiente
inicializar el generador de nmeros aleatorios */
instruccin,
para
srand((unsigned) time(NULL));
/* Para obtener un nmero aleatorio entre 1 y 100, y almacenarlo en una
variable entera llamada p.ej. N haremos lo siguiente */
N = (rand()%100)+1;
9/18
8.2.
ESTRUCTURAS
NO
Vble
Campos de la
estructura
Nombre
Nota_Media
tipo campoN;
};
struct nombre
Nombre_Vble;
10/18
IMPORTANTE
EJEMPLOS:
Idem, pero una variable para guardar esa informacin de 250 alumnos:
// La definicin de las estructuras es la misma.
// Slo cambia la declaracin de la variable.
int main( )
{ struct Datos clase[250];
}
ARRAY DE ESTRUCTURAS
11/18
249
Nombre
. . .
NotaMedia
C/
CP
Pob
O bien as:
clase
249
. . .
Nombre
NotaMedia
Direc
29
Calle
Numero
CP
8.2.1.
Poblacion
29
29
Nombre_Vble
Nombre_campo;
Identificador de campo
Ejemplos:
// float NM;
// int Cod;
12/18
// float NM;
8.2.2.
// int Cod;
Punteros a Estructuras
Ejemplo:
struct Inform
{ char Nombre [30];
float Debe;
};
int main( )
{ struct Inform *cliente;
struct Inform persona;
float X;
...
cliente = &persona;
/* Antes de poder usar la variable cliente, deber apuntar a
alguna estructura vlida */
...
X = clienteDebe;
/* Esta es la forma de acceder al campo Debe de la variable
cliente */
13/18
8.2.3.
InfoPersona
nombre[20];
calle[30];
ciudad[25];
provincia[25];
CP;
14/18
8.2.4.
struct Notas
{ float N1;
float N2;
};
void Func1(float A);
void Func2(float *B);
. . .
int main( )
{ struct Notas Datos;
. . .
Func1(Datos.N1);
. . .
Func2(&Datos.N2);
. . .
}
. . .
15/18
8.2.5.
Ejercicio Prctico
16/18
Solucin.#include <stdio.h>
#include <stdlib.h>
struct nota
{ float califNum;
char califLet[6];
};
struct alumno
{ char nombre[50];
nota parciales[5];
float media;
};
int main()
{ int j, j;
struct alumno Clase[53] ;
float media, P, mayor;
//Introducimos datos
for (i=0; i<53; i++)
{ printf(Nombre alumno %i: , i+1);
fflush(stdin);
scanf(%s, Clase[i].nombre);
for(j=0; j<5; j++)
do
{ printf(Parcial %i: , j+1);
fflush(stdin);
scanf(%f, &Clase[i].parciales[j].califNum);
}while (Clase[i].parciales[j].califNum < 0 ||
Clase[i].parciales[j].califNum > 10);
}
//Calculamos calificacin en letra
for(i=0; i<53; i++)
for(j=0; j<5; j++)
{ P = Clase[i].parciales[j].califNum;
if (P<5)
strcpy(Clase[i].parciales[j].califLet,
else if (P<7)
strcpy(Clase[i].parciales[j].califLet,
else if (P<9)
strcpy(Clase[i].parciales[j].califLet,
else if (P<10)
strcpy(Clase[i].parciales[j].califLet,
else
strcpy(Clase[i].parciales[j].califLet,
SUSP);
APROB);
NOT);
SOB);
MATR);
}
17/18
18/18
Tema 9
2010-11
Tema 9
2010-11
BDI - BD
Fundamentos
I.T. Informtica
de Informtica
de Gestin
Grado
/ Sistemas
en Ingeniera Qumica
Universidad
Industrial
de Huelva
Universidad de Huelva
Tema 9
Requisitos
de la base
de datos
Diseo conceptual
Esquema
conceptual
modelo de
datos de alto
nivel
Diseo lgico
Esquema
lgico
modelo de
datos del SGBD
Diseo fsico
Esquema
interno
2010-11
BDI - BD
Fundamentos
I.T. Informtica
de Informtica
de Gestin
Grado
/ Sistemas
en Ingeniera Qumica
Universidad
Industrial
de Huelva
Universidad de Huelva
Tema 9-A
Objetivos
Conocer el concepto de base de datos y sus caractersticas principales
Conocer el concepto de Sistema de Gestin de Bases de Datos (SGBD)
Conocer las fases del proceso de creacin de una Base de Datos as como una metodologa bsica de diseo
Contenidos
9.1 Introduccin. Conceptos: BD / SGBD
9.2 Ventajas de un SGBD
9.3 Modelos de datos, esquemas e instancias
9.4 Lenguajes de los SGBD. SQL
9.5 Componentes de un SGBD
9.6 Clasificacin de los SGBD
9.7 Creacin de una BD
9.8 Metodologa para el diseo de una BD
Fundamentos de Informtica
Universidad de Huelva
Introduccin
9.1 Introduccin. Conceptos: BD / SGBD
Universidad de Huelva
Introduccin
Sistema de Gestin de Bases de Datos (SGBD)
(DBMS: Database Management System)
conjunto de programas que permiten a los usuarios crear y mantener una base de datos
Un SGBD es por tanto un sistema software que facilita los procesos de:
Definicin: Especificar los tipos de los datos, las estructuras y las restricciones para
los datos que se van a almacenar en la BD
Construccin: Proceso de almacenar los datos en algn medio de almacenamiento
controlado por el SGBD
Manipulacin: Engloba tareas tales como consultar los datos para obtener
informacin especfica, actualizar la base de datos (insertar, modificar o eliminar
datos) para reflejar los cambios ocurridos en el minimundo y generar informes a partir
de los datos
Un Sistema de Base de Datos es el conjunto formado por la Base de Datos y el SGBD
Fundamentos de Informtica
Universidad de Huelva
Introduccin
SGBD ms utilizados
actualmente
Fundamentos de Informtica
Universidad de Huelva
Fundamentos de Informtica
Universidad de Huelva
Fundamentos de Informtica
Universidad de Huelva
Modelos de datos
9.3 Modelos de datos, esquemas e instancias
Modelo Relacional
Nombr
e
MUNDO REAL
Direccin
Ciuda
d
Nmer
o
Garca
C/ Rbida
Huelva
158
Prez
C/ Rascn
Huelva
125
Modelo
Martn
C/ Arroyo
Cdiz
402
de datos
Martn
C/ Arroyo
Cdiz
179
Nmero
Saldo
158
125000
tabla CLIENTE
125
75000
402
255000
tabla CUENTA
Estructura de
los datos
Fundamentos de Informtica
Universidad de Huelva
Modelos de datos
Instancias y esquemas
Esquema de una BD
Diseo global de la base de datos a nivel conceptual (datos, relaciones, restricciones, etc.)
Una vez definido, no suele cambiar
Fundamentos de Informtica
Universidad de Huelva
Fundamentos de Informtica
Universidad de Huelva
Componentes de un SGBD
9.5 Componentes de un SGBD
Un SGBD est estructurado en diversos componentes o mdulos, cada uno de los cuales hace
una funcin especfica.
El S.O. proporciona servicios bsicos
Mdulos:
Procesador de consultas.
Se encarga de transformar las consultas en instrucciones de bajo nivel
Gestor de BD.
Acepta consultas, examina los esquemas conceptual y externo para determinar que
registros conceptuales se necesitan y llama al gestor de archivos para satisfacer esa
solicitud.
Gestor de Archivos.
Manipula los archivos almacenados y gestiona la asignacin de espacio en disco.
Fundamentos de Informtica
Universidad de Huelva
10
Componentes de un SGBD
Usuario
paramtrico
Usuario
ocasional
programas de
aplicacin
consulta
Diseador de
la BD
Usuarios
esquema de BD
SGBD
Procesador de consulta
Esquema general
de un SGBD
Gestor de
Archivos
Estructuras
especiales de
acceso
Fundamentos de Informtica
Disco
Datos
Almacenados
Catlogo
Universidad de Huelva
11
Modelo de datos
Red: representa los datos como tipos de registro y los vnculos entre ellos
mediante el tipo conjunto
Fundamentos de Informtica
Universidad de Huelva
12
Fundamentos de Informtica
Universidad de Huelva
13
Fundamentos de Informtica
Universidad de Huelva
14
Fundamentos de Informtica
Universidad de Huelva
15
Fundamentos de Informtica
Universidad de Huelva
16
Requisitos
de la base
de datos
Diseo conceptual
Esquema
conceptual
modelo de
datos de
alto nivel
Independiente del
SGBD
Especfico para cada
SGBD
Diseo lgico
Esquema
lgico
modelo de
datos del
SGBD
Diseo fsico
Fundamentos de Informtica
Esquema
interno
Universidad de Huelva
17
Tema 9-B
Objetivos
Conocer el modelo de datos relacional por ser el ms utilizado en los SGBD
Conocer los mecanismos del modelo relacional para expresar restricciones de integridad
Contenidos
9.1 Introduccin
9.2 Estructura del modelo relacional
9.2.1. Dominio y atributo
9.2.2 Tupla y relacin
9.2.3 Caractersticas de las relaciones
9.3 Restricciones del modelo relacional
9.3.1 Restricciones de dominio
9.3.2 Restricciones de clave
9.3.3 Restricciones de integridad: integridad referencial y claves ajenas
Fundamentos de Informtica
Universidad de Huelva
18
Es el modelo lgico que han adoptado, de forma estndar, los SGBD comerciales
El modelo se basa en la teora de las relaciones: utiliza la relacin matemtica
(similar al concepto de tabla) como sistema de representacin del almacenamiento
En el modelo relacional, la base de datos se representa como un conjunto de
relaciones que se denominan tablas
Fundamentos de Informtica
Universidad de Huelva
19
Por otra parte, guardaremos informacin sobre los ordenadores utilizados por los alumnos para
realizar sus prcticas, sabiendo que un alumno usar un nico ordenador durante todo el curso, pero
que un ordenador ser utilizado por varios alumnos.
Supongamos que para cursar ciertas asignaturas es recomendable haber cursado otras asignaturas,
por lo que deber almacenarse cierta informacin de recomendaciones entre asignaturas.
Por ltimo, queremos saber quin es el profesor responsable de cada asignatura, sabiendo que slo
hay uno por asignatura, pero que un profesor puede ser responsable de varias asignaturas.
Fundamentos de Informtica
Universidad de Huelva
20
atributos
cardinalidad
ALUMNO
nAl
dni
145
29.254.123
nombre
15/03/75
fechaNac
Huelva
lugar
214
29.147.158
20/06/76
Huelva
112
44.125.325
01/01/75
Cdiz
220
29.555.247
12/11/74
Cdiz
tuplas
grado
dominio
3 dgitos
Fundamentos de Informtica
Universidad de Huelva
21
Las tablas o relaciones (con algunos de sus atributos) que, tras el correspondiente
anlisis, surgen del enunciado propuesto, son las siguientes:
Fundamentos de Informtica
Universidad de Huelva
22
Universidad de Huelva
23
tipo
lugar
Ord025
Servidor NT
Control
Ord008
PC Prcticas
Aula 7
Ord009
PC Prcticas
Aula 7
Ord010
PC Prcticas
Aula 8
Ord040
Servidor Multimedia
Aula 10
Ord035
Servidor de Impresin
Control
Fundamentos de Informtica
...
Universidad de Huelva
24
Fundamentos de Informtica
Universidad de Huelva
25
Especifican que el valor de cada atributo A debe ser un valor atmico o indivisible del
dominio.
Por ejemplo, si definimos el atributo "direccin" para almacenar el lugar de residencia
de las personas, el valor de ese atributo es indivisible, es decir, no se puede separar en
calle, nmero, piso, etc.
Fundamentos de Informtica
Universidad de Huelva
26
Fundamentos de Informtica
nAl
dni
145
29.254.123
nombre
15/03/75
Huelva
214
29.147.158
20/06/76
Huelva
112
44.125.325
01/01/75
Cdiz
214
29.147.158
20/06/76
Huelva
fechaNac
lugar
Universidad de Huelva
27
Generalmente ser simple, pero hay veces en que es necesario crear una clave
compuesta.
Ejemplo: la clave de la relacin MATRICULA (alum, idAsig, prof, ao, feb_jun, sep, dic,
...) debe estar formada, al menos, por los atributos "alum" e "idAsig", para que un alumno
pueda matricularse en ms de una asignatura y una asignatura pueda tener ms de un
alumno matriculado.
Fundamentos de Informtica
Universidad de Huelva
28
Fundamentos de Informtica
Universidad de Huelva
29
Fundamentos de Informtica
Universidad de Huelva
30
ALUMNO
ORDENADOR
nAl
dni
nombre
nH
ordenador
145
29.254.123
15/03/75
Huelva
Ord009
Ord025
Servidor NT
Control
214
29.147.158
112
44.125.325
20/06/76
Huelva
Ord010
Ord008
PC Prcticas
Aula 7
01/01/75
Cdiz
Ord009
Ord009
PC Prcticas
088
29.214.856
Aula 7
25/10/71
Madrid
Ord010
Ord010
PC Prcticas
220
29.555.247
Aula 8
12/11/74
Cdiz
Ord025
Ord040
Servidor Multimedia
Aula 10
Fundamentos de Informtica
fechaNac
lugar
idOrd
tipo
lugar
Universidad de Huelva
31
Los atributos de la clave ajena en R2 tienen el mismo dominio que los atributos
de la clave primaria de R1. Se dice que los atributos de la clave ajena hacen
referencia a la relacin R1
2.
Universidad de Huelva
32
Fundamentos de Informtica
Universidad de Huelva
En nuestro ejemplo, esto quiere decir que para una determinada tupla de MATRICULA
(150, A013, 12, 2000, nulo, 5, nulo), cuyas claves ajenas son alum, idAsig y prof, que
hacen referencia a las claves primarias de las tablas ALUMNO, ASIGNATURA y
PROFESOR respectivamente, deben existir el alumno 150, la asignatura A013 y el
profesor 12 en las citadas tablas.
Fundamentos de Informtica
Universidad de Huelva
34
Universidad de Huelva
Fundamentos de Informtica
Universidad de Huelva
35