Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Conceptos básicos
- Informática: INFORmación autoMÁTICA
Tratamiento automático y racional de la información por medio de ordenadores.
- Información: conjunto de símbolos que representan hechos, objetos o ideas. Tipos:
- Datos: conjuntos de símbolos que representan una información en forma adecuada
para ser procesada.
- Instrucciones: indican al ordenador qué debe hacer y con qué datos.
- Ordenador: máquina que acepta datos de entrada, realiza operaciones aritméticas y
lógicas y obtiene datos de salida, bajo el control de un programa previamente almacenado.
Necesidad Hardware + Software (Ambos son necesarios para poder utilizar un ordenador).
- Programa: conjunto ordenado de sentencias que se dan a un ordenador indicando las
operaciones que se desea que realice.
- Tipos de sentencias:
- Instrucciones: representan una orden a ejecutar.
- Declarativas: proporcionan información sobre los datos.
Elementos de un sistema informático
- Hardware: conjunto de componentes físicos.
- Software: conjunto de programas ejecutables sobre el hardware junto con los documentos
y datos asociados a los mismos.
Hardware
- Esquema Von Neumann.
- Computadora Central:
- CPU (Procesador).
- Memoria principal.
- Periféricos.
Software
- Lenguaje de programación: lenguaje utilizado para la escritura de los programas.
- Elementos del lenguaje:
- Léxico o vocabulario: conjunto de símbolos constitutivos.
- Sintaxis o gramática: conjunto de reglas para la construcción de las sentencias
correctas.
- Semántica: conjunto de reglas que asocian significado a las construcciones
correctas del lenguaje.
- Traductor: Software que traduce programas escritos en un lenguaje de programación a
otro. Tipos:
- Compiladores: traducen globalmente un programa escrito en un determinado
lenguaje (fuente) y producen como salida el programa escrito en otro lenguaje (objeto).
- Intérpretes: traducen y ejecutan una a una las sentencias de un programa pero sin
generar un nuevo programa traducido.
Representación de la información
- Codificación en sistema binario {0, 1}
- Bit: unidad mínima de información. Representa la información correspondiente a si ha
ocurrido un suceso.
- Byte: cantidad mínima de información para representar un carácter. Se suele tomar 8 bits.
𝑛
- n bits permiten representar 2 datos diferentes.
TEMA 1: BASES DE DATOS. CONCEPTOS
Introducción
Los sistemas de bases de datos surgen a causa de los problemas que plantean los
sistemas de archivos.
Desde el punto de vista lógica (usuarios):
- Almacenan todos los datos en un solo lugar.
- Almacenan las definiciones de las relaciones entre los datos.
Desde el punto de vista físico:
- Los datos se almacenan en uno o varios discos y en uno o varios ficheros.
Acceso a datos:
- A través del sistema de gestión de bases de datos (SGBD).
- Se realiza mediante sentencias específicas.
- Una Base de Datos es un conjunto de datos almacenados entre los que existen relaciones
lógicas. Se diseña para satisfacer los requerimientos de información de una organización.
- La base de datos almacena:
- Los datos de la organización.
- Una descripción de dichos datos: metadatos.
- SGBD es una aplicación que:
- Permite a los usuarios definir, crear y mantener una BD mediante un lenguaje de
definición de datos.
- Permite insertar, actualizar, eliminar y consultar datos mediante un lenguaje de
manipulación de datos.
- Proporciona acceso controlado a la BD mediante:
- Sistema de seguridad
- Sistema de integridad
- Sistema de control de ocurrencia
- Sistemas de control de recuperación
- Diccionario de datos
Papeles en el entorno de bases de datos:
- Administrador:
- Hace el diseño físico e implementa la BD.
- Controla la seguridad y ocurrencia.
- Mantiene el sistema y las prestaciones
- Diseñadores:
- Hacen el diseño lógico de la BD.
- Programadores de Aplicaciones:
- Implementan los programas para los usuarios finales.
- Usuarios Finales:
- Clientes de la base de datos.
Ventajas de los SGBD:
- Hay menos datos redundantes.
- Se pueden evitar problemas de consistencia de datos.
- Flexibilidad en las búsquedas.
- Se puede extraer información adicional.
- Se pueden compartir.
- Se dispone de un estándar.
- Se mejora la seguridad en el acceso a la información.
- Se facilita la concurrencia.
- Hay servicios de copia de seguridad y recuperación.
Modelos de Datos: Modelo Relacional
Un modelo de datos está formado por:
- Un conjunto de conceptos para definir la estructura de la base de datos:
- Datos.
- Relaciones entre los datos.
- Restricciones sobre datos y relaciones.
- Un conjunto de operaciones y para realizar consultas y actualizaciones de datos.
- Dependiendo de los tipos de conceptos que ofrecen para describir la estructura de la BD
los modelos de datos se clasifican en:
- Conceptuales: usan conceptos de alto nivel muy cercanos al usuario.
- Lógicos: usan conceptos que pueden ser entendidos por los usuarios finales, pero
están cerca de cómo se almacenan físicamente en el ordenador.
- Físicos: conceptos de bajo nivel que describen los detalles de cómo se almacena
la información en el ordenador. Suelen usarlos el personal informático.
- Cada SGBD soporta un modelo lógico, siendo el más común el Modelo Relacional.
- El Modelo Relacional es un modelo de datos lógico, basado en conceptos matemáticos.
- Propiedades de las relaciones:
- Cada relación tiene un nombre distinto.
- Los valores de los atributos son atómicos.
- Cada atributo tiene un nombre distinto en una relación.
- Los atributos no están ordenados.
- No hay tuplas duplicadas. (Tuplas: estructura de datos ligera que tiene un número
específico y una secuencia de valores)
- Las tuplas no están ordenadas.
- Dominio: Conjunto de valores que puede tomar un atributo.
- Claves Candidatas: Atributo o atributos que identifican de modo único las tuplas de una
relación. Características:
- Irreducibilidad.
- Unicidad.
- Clave Primaria: Clave candidata que se escoge para identificar las tuplas de una relación
de modo único.
Todas las relaciones tienen una única clave primaria asociada.
- Claves Externas o Ajenas (atributo/s que se refiere a un atributo/s de otra tabla. Los
atributos de la tabla que referencia deben ser la clave primaria en la tabla referenciada):
- Sus valores deben coincidir con los de la clave primaria de otra relación.
- Es la única forma de representar la relación entre diferentes tablas de datos.
- Valores Nulos:
- Son valores que pueden tomar los atributos.
- Significa que no sabemos qué valor tiene este campo.
- Forma parte del dominio del atributo.
- Reglas de Integridad: Restricciones que siempre se deben cumplir en una base de datos.
- Tipos principales:
- De Entidades: Ninguno de los atributos que componen la clave primaria puede ser
nulo.
- Referencial: Si en una relación hay una clave externa, sus valores deben ser
valores nulos o valores que existen en la clave primaria a la que hace referencia.
Diseño Bases de Datos
1. Descripción de la BD por parte del personal de la organización.
2. Construcción del esquema de información que se usa en la organización.
3. Descripción de alto nivel de la estructura de una BD, independientemente del SGBD que
se vaya a utilizar para manipularla.
4. Conversión del esquema conceptual en un esquema lógico.
5. Descripción de la estructura de una BD en términos de las estructuras de datos que
puede procesar un tipo de SGBD.
6. Proceso de creación del esquema físico a partir del esquema lógico.
7. Descripción de la implementación de la BD en memoria secundaria, para asegurar un
acceso eficiente a los datos.
Modelo Entidad Relación
- Es un Modelo Conceptual.
- Está formado por un conjunto de conceptos que permiten describir la realidad mediante un
conjunto de representaciones gráficas y lingüísticas.
- Existe un modelo E/R extendido que permite más expresividad que el modelo E/R inicial.
- Veremos los elementos básicos del modelo E/R y algunos del modelo E/R
extendido.
- Entidad: Cualquier concepto sobre el que se recoge información.
- Relación:
- Correspondencia o asociación entre dos o más entidades.
- Su nombre describe su función.
- Relación ternaria(1-N) o reflexiva(N-N).
- Cardinalidad o Grado de una Relación: Expresa el número de entidades a las que otra
entidad puede estar asociada en una relación (1-N)(N-N).
- Tipos:
- Relaciones 1:1. A cada ocurrencia de una entidad le corresponde una y sólo una
ocurrencia de la otra, y viceversa.
- Relaciones 1:N. A cada ocurrencia de la primera entidad le pueden corresponder
varias ocurrencias de la segunda, y a cada ocurrencia de la segunda le corresponde no más
de una ocurrencia de la primera.
- Relaciones N:N. A cada ocurrencia de la primera entidad le pueden corresponder
varias ocurrencias de la segunda, y viceversa.
- Atributo:
- Característica de interés o un hecho sobre una entidad o sobre una relación.
- Si el atributo es clave primaria, se señala rellenando el círculo, subrayando el
nombre o con un doble círculo.
- Entidad Débil:
- Es una entidad cuya existencia depende de otra entidad.
- Con sus atributos no tiene suficiente para formar clave primaria.
- Su clave primaria no suele ser suficiente para identificar los datos que representa.
- Suele ser una Relación 1:N o 1:1.
- Se representa con un rectángulo doble y con una flecha hacia la entidad fuerte de
la que depende.
- Especialización o estructuras ES-UN
- Un conjunto de entidades puede incluir subgrupos de entidades que se diferencian
de alguna forma de las otras entidades del conjunto.
- El proceso de designación de subgrupos dentro de un conjunto de entidades se
denomina especialización.
- Los atributos de la entidad raíz, también los tienen los de las entidades
especializadas.
- Además, cada entidad especializada puede tener sus propios atributos.
- La clave primaria está especificada en la entidad raíz.
- A tener en cuenta…. Eliminar las relaciones redundantes.
- A tener en cuenta…. cada relación tiene su propio significado.
Paso a Tablas (Modelos Relacional)
- Un esquema conceptual a través del diseño lógico es transformado en un esquema
lógico.
- El modelo relacional proporciona un esquema lógico que permite representar BD en
diferentes SGBD.
- La realización de este diseño lógico conlleva la ejecución de una serie de reglas.
- Entidades: Todas las entidades se convierten en tablas, con sus atributos y sus claves
primarias.
- Entidades débiles: Todas las entidades débiles se convierten en tablas, con sus atributos
y sus claves primarias.
- Se añade a la clave primaria de la entidad débil los atributos de la clave primaria de la
entidad fuerte de la que depende.
- Relaciones: Todas las relaciones se convierten en tablas, con sus atributos y sus claves
primarias en caso de que las tengan.
- Se añaden como atributos de esta tabla las claves primarias de las entidades que
relacionan.
- Claves Primarias en las Relaciones:
- Relaciones 1:1, la clave primaria será una de las claves primarias de las entidades
que relaciona.
- Relaciones 1:N, la clave primaria siempre será la correspondiente a la clave
primaria de la entidad cuya cardinalidad es la del N.
- Relaciones N:N, la clave primaria siempre será la correspondiente a la clave
primaria de la entidad cuya cardinalidad es la del N, es decir, todas.
- Especialización: Existen 3 modos de realizarlo:
- Opción 1. Se crea una relación por cada entidad. Cada entidad hija tendría la clave
primaria de la entidad raíz.
- Opción 2. Sólo se crea una relación por cada entidad hijo. Cada entidad hija tendrá
todos los atributos de la entidad padre que desaparece.
- Opción 3. Sólo se crea la relación de la entidad padre. El resto desaparece. Se
añaden los atributos de las entidades que desaparecen.
- Consejos para decidir qué opción escoger:
- Si la entidad raíz tiene un gran número de atributos, elegir la opción 1.
- Si las entidades hijas no tienen ningún atributo y no forman parte de ninguna
relación, elegir la opción 3. En este caso incluso se puede añadir un atributo que se llame
tipo en la relación de la entidad raíz.
- En el resto de los casos conviene usar la opción 2, a excepción de cuando la
entidad raíz forma parte de una relación, en cuyo caso elegir la opción 1.
- Reducción de Tablas
- Último paso para la obtención del esquema relacional.
- Asegura que las tablas que se obtienen son las mínimas necesarias.
- Mejora la eficiencia del sistema.
- La reducción de tablas implica que la información de una tabla eliminada debe ser
incluida en otra tabla. NUNCA se elimina una tabla directamente.
- Reducción de Tablas. Proceso:
1. Únicamente son susceptibles de ser eliminadas aquellas relaciones que provienen
de relaciones 1:1 y 1:N.
2. Una tabla se podrá eliminar siempre que se puedan incluir los atributos de dicha
relación en otra tabla sin alterar su sentido.
- Relaciones o Claves Ajenas.
- Una vez obtenidas las tablas de una BD, se pueden definir las relaciones entre sus
atributos.
- Recordamos que las relaciones o claves ajenas son aquellos atributos de una
relación cuyos datos proceden de la clave primaria de otra relación.
- Condiciones anidadas
% Mayor de tres números diferentes
if a > b
if a > c
disp('El mayor es '), disp(a);
else
disp('El mayor es '), disp(c);
end
else
if b > c
disp('El mayor es '), disp(b);
else
disp('El mayor es '), disp(c);
end
end
- Condiciones compuestas
% Mayor de tres números diferentes
if (a>b) && (a>c)
disp('El mayor es '), disp(a);
end
if (b>a) && (b>c)
disp('El mayor es '), disp(b);
end
if (c>a) && (c>b)
disp('El mayor es '), disp(c);
end
Estructuras Condicionales o de Selección: Múltiple
- Permite decidir entre varios caminos diferentes de ejecución (EN CASO DE QUE).
switch (expresión)
case <literal 1>
<Bloque 1>
case <literal 2>
<Bloque 2>
….
case {<literal n>, <literal n>,… }
<Bloque n>
otherwise
<Bloque por defecto>
end
% La parte otherwise es opcional
Problema: Dado un número del 1 al 7 mostrar con qué día de la semana se corresponde.
%Programa DiasSemana
%Entradas: la posición de un día de la semana
%Salidas: el nombre del día de la semana asociado con la posición de entrada
%Variables: digito: ENTERO
digito=input (‘Introduce el número de día de la semana: ‘);
switch (digito)
case 1
disp (‘Lunes’);
case 2
disp (‘Martes’);
….
case 7
disp (‘Domingo’);
otherwise
disp(‘Dígito no válido’);
end
Estructuras Repetitivas
- Permiten ejecutar repetidamente un conjunto de instrucciones.
- El número de ejecuciones lo determina el valor de una variable conocida como variable
control.
- Tipos:
- Ciclos contados (PARA): el número de ejecuciones se establece al construir el
ciclo.
- Ciclos condicionales (MIENTRAS): el número de ejecuciones depende de un valor
de tipo lógico.
- Las estructuras repetitivas se pueden anidar de forma que en el cuerpo de un ciclo puede
aparecer otro.
- La estructura interna debe estar completamente dentro de la estructura externa, no
pudiendo existir solapamientos.
- En ciclos anidados no se puede utilizar la misma variable de control.
Estructuras Repetitivas: Ciclo Fijo o Contado
suma1=0;
for i=1:10
suma1=suma1+1;
end
disp(suma1); %escribe 10
suma2=0;
for i=[1, 9, 4, 6]
suma2=suma2+i;
end
disp(suma2); %escribe 20
Problema: Dado un número n de nota calcular la nota media.
%Programa NotaMedia
%Entradas: el número de notas y la secuencia de valores de dichas notas
%Salidas: la nota media
%Variables: n, i: ENTERO; nota, media: REAL
media=0.0;
n=input (‘Introduce el número de notas: ‘);
for x=1:n
nota=input (‘Introduce la nota: ‘);
media=media + nota;
end
media=media/n;
disp(‘La nota media es ‘), disp(media);
Estructuras Repetitivas: Ciclo Condicional (MIENTRAS)
suma=0;
i=1; //inicialización
while (i<=10)
suma =suma+1;
i=i+1; //modificación
end
disp(suma);
Problema: Calcular la nota media de una serie de notas, se termina al pulsar -1.
%Programa NotaMedia
%Entradas: una secuencia de notas
%Salidas: la nota media
%Variables: i:ENTERO; nota, media:REAL
i=0;
media=0.0;
nota=input (‘Introduce una nota, -1 para terminar: ‘);
while (nota ~=-1)
media=media+nota;
i=i+1;
nota=input (‘Introduce una nota, -1 para terminar: ‘);
end
media=media/i;
disp(‘La nota media es ‘), disp(media);
Utilización de Arrays
- Array unidimensional (vector):
- Inicialización/Declaración:
A=[1,9,2,8,3]
- Acceso a los elementos:
<identificador>(índice)
A(3)=2
disp(a(4)) %muestra el 8
- Array bidimensional (matriz):
- Inicialización/Declaración (separar con ; para las filas):
B=[1,13,9,15,5;11,2,14,4,6;10,12,3,7,8]
- Acceso a los elementos:
<identificador>(fila,columna)
B(2,3) es 14 disp(B1,4)) B(:,4)(devuelve la columna 4) B(1,2:3)(devuelve [B(1,2)B(1,3)])
- Acceso secuencial:
B(4) es 13
- Formas de crear arrays:
- Especificando los valores manualmente: v[1,2,3]
- Utilizando otros arrays: m=[v,v] quedaría m=[1,2,3,1,2,3]
- Especificando el incremento: x=a[:h]:b, ej. x=1:2:10 queda x=[1,3,5,7,9]
- Especificando su dimensión n:linspace(a,b[,n]), ej. y=linspace(1,36,12) crea un
vector desde 1 a 36, de 12 elementos.
- length(v): función que devuelve la dimensión de un vector.
- size(M): función que devuelve las dimensiones de una matriz.
- El uso de estructuras cíclicas nos permite el acceso a cada elemento de los arrays.
- La estructura cíclica ideal para recorrer los diferentes elementos del array es el ciclo for,
dado que en la mayoría de las situaciones las dimensiones se saben a priori.
for i=1:5
A(i)=0
end
- Si queremos escribir por pantalla todos los valores de esta matriz.
for i=1:3
for j=1:5
disp (A(i,j))
end
end
Problema: Calcular la nota media de una serie de notas almacenadas en un array.
%Programa NotaMedia
%Entradas: Array con diez números reales
%Salidas: la nota media
%Variables: Notas: ARRAY(10) de REALES, media:REAL, i:ENTERO
for i=1:10
notas(i)=input(‘Introduce nota: ‘);
end
media=0.0;
for i=1:10
media=media+notas(i);
end
media=media/10;
disp(‘La nota media es ‘), disp(media);
Arrays en Matlab
- El entorno Matlab posee una gran potencialidad en el manejo de arrays. Por tanto, no
siempre es necesario trabajar elemento a elemento. Ejemplos:
- Crear un array vacío x=[] #también elimina elementos
- Operación para inicializar un array a ceros: x=zeros(tamfilas,tamcolumnas)
- Operación para inicializar un array con números aleatorios:
y=rand(tamfilas,tamcolumnas)
- Crear una matriz identidad: z=eye(tamfilas,tamcolumnas)
- Crear una matriz traspuesta: t=z’
- Operaciones para sumar, restar, multiplicar, dividir o hacer la potencia de un array con
valores escalares: w=y*12, z/pi, y.^4 (eleva cada elemento de y a 4), 4.^v (4 elevado a
cada elemento de v)
- Los arrays también pueden operar entre ellos usando cualquiera de los operadores ya
conocidos. Ejemplos:
- Suma: sum(v), sum(M) es sum(M,1), suma(M,2)
- Producto: prod(v)
- Producto escalar: dot(v,w)
- Media:mean(v)
- Valor máximo de las componentes de un vector (y es el elemento y k indica la
posición): [y,k]=max(v)
- Igual con el valor mínimo: [y,k]=min(v)
- Diagonal de la matriz: diag(M)
- Cambio de dimensiones: reshape(v,nf,nc);
TEMA 3: PROGRAMACIÓN MODULAR
Definición
- Programación modular: consiste en dividir un algoritmo en unidades de menor tamaño→
cada una realiza una tarea explícita y única.
- Cada fragmento se denomina función, módulo, subalgoritmo, subrutina o subprograma.
- Ventajas:
- Simplicidad: permite descomponer un problema en otros más simples.
- Reutilización: cada módulo se identifica mediante un nombre, lo que permite
utilizarlo siempre que se quiera.
- Generalidad: se pueden parametrizar.
- La Programación Modular consiste en dividir un problema en subproblemas más pequeños
que se resuelven con módulos.
- Un módulo o función realiza una tarea concreta y es deseable que se diseñe, implemente
y depure de manera independiente al resto del código.
- Mediante la combinación de las soluciones parciales se debe obtener la solución global.
Parámetros
- Parámetros: permiten la comunicación entre un módulo y otro.
- Pueden ser de Entrada y/o Salida:
- Entrada: valores que son proporcionados al módulo.
- Salida: son valores que se calculan en el módulo y que se devuelven al que lo ha
invocado.
- Según el comportamiento, hay módulos que:
- Devuelven la salida asociada a su nombre.
- Devuelven las salidas en parámetros.
- Tipos de parámetros:
- Reales o actuales: valores que se pasan al módulo.
- Formales: los que aparecen en la declaración del módulo y contendrán los valores
de los parámetros actuales cuando se invoca al módulo.
- Cuando se utiliza un módulo los parámetros actuales deben coincidir en número, orden y
tipo con los parámetros formales que aparecen en la declaración o diseño del módulo.
- Tipo de paso de parámetros:
- Valor o copia: se utilizan para proporcionar información a un módulo. Los cambios
realizados no son visibles fuera.
- Variable o referencia: se utilizan tanto para recibir como para transmitir valores, de
manera que los cambios que se hagan serán visibles desde fuera. Se indican de alguna
forma, por ejemplo con una palabra reservada (var) o algún símbolo (&).
Sintaxis
function parámetros-salida=nombre(parámetros-entrada)
%Descripción: qué hace la función
%Parámetros de entrad:
% identificador y descripción
%Parámetros de salida:
% identificador y descripción
%Variables (internas):
% identificador:tipo
%Instrucciones del cuerpo de la función