Sie sind auf Seite 1von 116

Grado en Ingeniera Mecnica

Fundamentos de Informtica

Tema 1. Visin General de un Ordenador: Estructura y Funcionamiento

TEMA 1. VISIN GENERAL DE UN ORDENADOR:


ESTRUCTURA Y FUNCIONAMIENTO
1.1.

INTRODUCCIN

ORDENADOR (P.C.)  Dispositivo electrnico capaz de procesar la


informacin recibida, a travs de unos dispositivos de entrada, y obtener
resultados que sern mostrados haciendo uso de unos dispositivos de
salida, gracias a la direccin de un programa escrito en el lenguaje de
programacin adecuado.

Datos de
Entrada

ORDENADOR
Dispositivos de
Entrada

PROGRAMA
Datos de
Salida

Dispositivos de
Salida

Hardware  Componentes fsicos que constituyen el ordenador, junto


con los dispositivos que realizan las tareas de entrada y salida.
Software  Conjunto de programas escritos para un ordenador.
Programa  Conjunto de instrucciones, escritas en un determinado
lenguaje de programacin, que controlan el funcionamiento de un
ordenador.

1/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 1. Visin General de un Ordenador: Estructura y Funcionamiento

1.2.

COMPONENTES DE UN ORDENADOR

(La mquina de Von

Neumann. Concepto de Ordenador)

Unidad Central de Proceso (C.P.U.)


Registros

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

Arquitectura Von Neumann

Principio de la Arq. Von Neumann  Programa almacenado  Las


instrucciones y los datos deben almacenarse juntos, en el mismo medio
(memoria).
Los componentes bsicos de un ordenador son:
Unidades de Almacenamiento (Memoria)
Unidad Aritmtico-Lgica (ALU)
Unidad Central de Proceso (C.P.U.)
Unidad de Control (UC)
Dispositivos de Entrada/Salida (E/S).
Buses
2/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 1. Visin General de un Ordenador: Estructura y Funcionamiento

1.2.1.

Unidades de Almacenamiento

 ALMACENAMIENTO
Central o Interna):

INTERNO

(Memoria

Principal,

Memoria RAM (Random Access Memory):


Zona de memoria de lectura/escritura.
Es voltil.
Almacena el Sistema Operativo y los programas que
estn en ejecucin junto con sus datos.
Memoria ROM (Read Only Memory):
Zona de la memoria de slo lectura.
Es permanente.
Almacena la BIOS (Basic Input-Output System): Cjto.
de programas que se ejecutan al encender el ordenador
(chequean el sistema y cargan el S.O. en RAM)
Caractersticas de la Memoria Principal:
 El acceso a la memoria principal es muy rpido, sin embargo al
ser costosa, es un recurso escaso.
 Est ligada a las unidades ms rpidas del ordenador (UC y ALU).
 Est dividida en una serie de celdas (posiciones de memoria o
palabras), numeradas con una direccin unvoca a travs de la
cual se accede a cada una de ellas.
 La longitud de las palabras se mide en nmero de bits (unidad
mnima de informacin que se puede almacenar: 0 1).
 Byte = 8 bits  La capacidad de la memoria se mide en bytes.
3/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 1. Visin General de un Ordenador: Estructura y Funcionamiento

1 KByte (o KB)
= 210 bytes
1 Megabyte (o MB) = 210 KBytes
1 Gigabyte (o GB) = 210 MByte
1 Terabyte (o TB) = 210 GByte

= 1024 bytes 103 bytes.


= 220 bytes 106 bytes
= 230 bytes 109 bytes
= 240 bytes 1012 bytes

 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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 1. Visin General de un Ordenador: Estructura y Funcionamiento

 UNIDAD ARITMTICO-LGICA (A.L.U.)


 Realiza las operaciones aritmticas y lgicas que un
programa necesite.
 Sus operandos residirn en los registros y en el
acumulador.
 UNIDAD DE CONTROL (U.C.)
 Dispositivo ms importante del pc, es su cerebro  Dirige y
Controla el funcionamiento del resto de los componentes,
coordinando sus actividades para el correcto desarrollo del
programa que se est ejecutando.
 La velocidad a la que se realizan las operaciones la controla el
reloj (generador de pulsos)  Megahercios (MHz)  Determina
la velocidad del ordenador.
Funcionamiento:
Obtiene la instruccin a ejecutar.
En funcin de la interpretacin de dicha instruccin, la U.C.:

Introduce en la Memoria Principal algn dato.


Transmite informacin al usuario.
Da rdenes a la A.L.U.
Dependiendo del resultado, determina cul es la siguiente
instruccin a ejecutar.
Detiene el proceso de clculo.
Repite todo el proceso, en caso de no haber finalizado.

5/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 1. Visin General de un Ordenador: Estructura y Funcionamiento

1.2.3.

Dispositivos de E/S (PERIFRICOS)

 Permiten la comunicacin usuario  ordenador.


 La comunicacin entre los perifricos y el procesador central se
realiza a travs de un controlador  Componente hardware que
regula el comportamiento de un determinado perifrico (cada
perifrico tiene el suyo propio). Un ejemplo de controlador
hardware es la tarjeta de video.
 Los Dispositivos de Entrada transforman la informacin en
seales binarias. Algunos ejemplos son: teclado, ratn, webcam,
escner,...
 Los Dispositivos de Salida transforman las seales binarias en
caracteres. Algunos ejemplos son: monitor, impresora, plotter,
 Cada fabricante tiene unas especificaciones diferentes para cada
dispositivo  La forma de comunicarse nuestros programas con
ellos es distinta  Para facilitar esta labor estn los drivers o
controladores  Transforman nuestras rdenes al dispositivo, en
comandos que dicho perifrico puede entender.
1.2.4.

Buses

BUS  Autopista que permite el paso de informacin entre las


principales unidades del ordenador, y entre estas y los perifricos.
Estn compuestos por una serie de hilos.
 Su velocidad est en funcin del nmero de hilos (ancho del
canal) que transmiten en paralelo  Podemos encontrarnos
con buses en paralelo (transmiten tantos bits simultneamente
como hilos tenga el bus) y buses en serie (los bits se
transmiten uno a uno).
6/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 1. Visin General de un Ordenador: Estructura y Funcionamiento

 Existen tres tipos de buses:


Bus de Datos: comunican CPU, Memoria Principal y
dispositivos E/S.
Bus de Direcciones: Identifica el dispositivo que
recibir la informacin que lleva el bus de datos.
Bus de Control o del Sistema: Transmite el conjunto de
seales enviadas por la C.P.U.

1.3.

SISTEMAS OPERATIVOS

Sistema Operativo  Software ms cercano al hardware  Trabaja


directamente con el hardware, siendo la interfaz entre el ordenador y el
resto del software que se ejecuta en l. Se encarga de gestionar de
manera eficiente los recursos hardware del sistema.
Clasificacin:
En funcin del nmero de usuarios:
Monousuario.
Multiusuario.
En funcin del nmero de tareas:
Monotarea.
Multitarea.
En funcin del nmero de procesadores:
Uniproceso.
Multiproceso.

7/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 1. Visin General de un Ordenador: Estructura y Funcionamiento

1.4.

El ordenador en imgenes

Procesador AMD 486 a 100MHz

Dos procesadores Intel Pentium II a 450 MHz

Bajo el ventilador se encuentra el procesador. El ventilador evita el


calentamiento del procesador, EVITANDO FALLOS

Procesador Intel Pentium II a 450MHz

Tarjeta de Red

Para la insercin en un slot

Placa Madre Slots de expansin

Bus

Tarjeta de video pinchada en un bus

8/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 1. Visin General de un Ordenador: Estructura y Funcionamiento

Diferentes tipos de buses (ranuras o slots de expansin)


Diferentes tipos de buses
Conexin para Teclado y Ratn
PS/2

Conectores USB (Universal Serial


Bus)

Conectores Serie DB9


Buses

Conector Paralelo

Distintos tipos de conectores

Conectores de red RJ45

BNC

AWI
Conectores de las tarjetas de juegos y video

9/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 2. Conceptos Bsicos de Algortmica

TEMA 2. CONCEPTOS BSICOS DE ALGORTMICA


2.1.

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

PROGRAMA  Algoritmo capaz de ser procesado por un ordenador.


2.1.1.

PROPIEDADES DE UN ALGORITMO

Siempre debe terminarse.


Cada instruccin debe aplicarse sin ambigedad.
Todos sus pasos han de ser simples.
Para un determinado problema, debe funcionar sean cuales sean
los datos de entrada.
Debe ser rpido y eficiente  Hay que Optimizar  Para un
problema existen mltiples soluciones, y debemos escoger aquella
que consuma menos tiempo y recursos.
Es independiente de la mquina y del lenguaje de
programacin que se vaya a utilizar. Un algoritmo puede
implementarse (escribirse) en cualquier lenguaje de
programacin.

1/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 2. Conceptos Bsicos de Algortmica

2.1.2.

HERRAMIENTAS PARA DISEAR ALGORITMOS

Diagramas de Flujo: Representacin grfica de un algoritmo,


mediante una serie de smbolos, que contienen en su interior
los pasos del algoritmo que le correspondan, y unas flechas
(lneas de flujo) que los unen indicando la secuencia (orden) en
la que se deben ejecutar.

Smbolos
Principales

Funcin

Representa el comienzo y el final de un algoritmo.


Representa una introduccin de datos en la
memoria desde los perifricos.
Indica cualquier tipo de operacin.
NO

Decisin.

SI

Decisin mltiple.

Conector en la misma pgina.

Indicador de la direccin o lnea de flujo.


Conector para pginas diferentes.
Llamada subrutina (una subrutina es un mdulo independiente del
programa principal, que recibe una entrada procedente de dicho programa,
realiza una tarea determinada y regresa, al terminar, al programa
principal).
2/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 2. Conceptos Bsicos de Algortmica

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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 2. Conceptos Bsicos de Algortmica

 Pseudocdigo: Es la representacin narrativa de un algoritmo,


utilizando el lenguaje natural, algunas estructuras de control y
algunos smbolos algebraicos.
o Las estructuras de control, deciden qu camino hay que
seguir en funcin de una condicin.
o No hay reglas sintcticas.
o Es ms fcil de implementar en un lenguaje de programacin
que un diagrama de flujo.
Leer (n1), Leer (n2), Leer (n3)
suma = n1 + n2 + n3
media = suma / 3
si (media >= 0)
raiz = RaizCuadrada (media)
escribir (raiz)
si no
escribir ("No se puede hallar la raiz cuadrada")
escribir("La media es ", media)
fin si

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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 2. Conceptos Bsicos de Algortmica

2.2.

QU ES UN PROGRAMA?

PROGRAMA  Es la expresin de un algoritmo en un lenguaje de


programacin, es decir conjunto de instrucciones expresadas de modo
que puedan ser comprendidas (directamente o tras una traduccin) por
el procesador, y que controlan el funcionamiento de un ordenador a la
hora de resolver un problema.
2.2.1.

CMO SE CONSTRUYE UN PROGRAMA

Anlisis
Diseo
Codificacin
Pruebas
Documentacin y
Mantenimiento

Fase de Anlisis  QU hay que hacer.


Fase de Diseo  CMO hay que hacerlo  Obtencin del
Algoritmo.  Se utilizar el Diseo Descendente o TOPDOWN.
Fase de Codificacin  Implementacin del Algoritmo en el
lenguaje de programacin ms adecuado  Obtencin del
Programa.
Fase de Pruebas  Hay que comprobar que el programa NO
falla, sobre todo en las situaciones ms extremas.
Fase de Documentacin y Mantenimiento  Se elabora la
documentacin del programa, y se realizan las actualizaciones
oportunas.
5/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 2. Conceptos Bsicos de Algortmica

TODAS ESTAS FASES HAY QUE REALIZARLAS CON SUMO


CUIDADO, PUESTO QUE UN ERROR EN UNA DE ELLAS,
PUEDE CONLLEVAR LA VUELTA ATRS EN TODO EL
PROCESO.

2.3.

LA IMPLEMENTACIN

(Concrecin del problema en un leng. de progr.)

Para que un ordenador pueda interpretar el algoritmo que hemos


creado, ste debe estar expresado en forma de programa, es decir, debe
estar implementado en un lenguaje de programacin.

ACCIONES:
o Asignaciones
o E/S
o Operaciones Aritmtico-Lgicas

ESTRUCTURAS DE CONTROL:
o Decisiones
o Ciclos (Bucles)

PROCEDIMIENTOS: Un procedimiento es un fragmento de un


programa que realiza una tarea concreta y que tiene un nombre por
el que puede ser llamado desde cualquier parte del programa. Se
comunican con el programa que los llama a travs de unas variables
denominadas Argumentos.

6/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 2. Conceptos Bsicos de Algortmica

2.4.

LENGUAJES DE PROGRAMACIN

2.4.1.

CONCEPTO DE LENGUAJE DE PROGRAMACIN

LENGUAJE DE PROGRAMACIN  herramienta que nos


permite transformar un algoritmo en un programa. Consta de:
Un lxico.
Una gramtica.
Una semntica.
2.4.2.

CLASIFICACIN

DE

LOS

LENGUAJES

DE

PROGRAMACIN.

LENGUAJE MQUINA  Sus instrucciones son cadenas


binarias, y sus caractersticas:
o Sus instrucciones son directamente inteligibles por el ordenador
o Ejecucin eficiente, ya que el programa est redactado
especficamente para los circuitos que los han de interpretar y
ejecutar.
o Desde el cdigo mquina se puede utilizar la totalidad de los
recursos del equipo.
o El conjunto de instrucciones del lenguaje mquina depende
directamente de la C.P.U. que las vaya a ejecutar.
o El conjunto de instrucciones es muy reducido.
o La codificacin es difcil y muy lenta.

7/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 2. Conceptos Bsicos de Algortmica

LENGUAJE ENSAMBLADOR 
mnemotcnicos y sus caractersticas:

Sus

instrucciones

son

o Los programas en lenguaje ensamblador son ms fciles de


codificar que en lenguaje mquina.
o No es necesario que el programador conozca la arquitectura
fsica del ordenador.
o Un programa escrito en lenguaje ensamblador no puede ser
ejecutado directamente por la computadora, sino que requiere
de una fase previa de traduccin al lenguaje mquina, realizada
por un software denominado tambin ensamblador.
o Cada procesador tiene su propio lenguaje ensamblador.
o El conjunto de instrucciones es muy reducido.
LENGUAJES DE ALTO NIVEL: Sus caractersticas son:
o Son totalmente independientes de la mquina.
o Los programas escritos en lenguajes de alto nivel son muy
portables, como consecuencia de su independencia del
diseo del hardware.
o La escritura de instrucciones se basa en reglas sintcticas
similares a las utilizadas por el lenguaje matemtico y el
lenguaje natural.
o Son los ms utilizados por los programadores.
o Las modificaciones y actualizaciones de los programas
son mucho ms fciles.
o El repertorio de instrucciones es muy amplio.

8/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 2. Conceptos Bsicos de Algortmica

o Los programas necesitarn ser traducidos posteriormente a


lenguaje mquina, para que el procesador pueda
ejecutarlos. Para esta tarea existen unos programas
denominados traductores (COMPILADORES e
INTRPRETES).
o No se aprovechan los recursos internos de la mquina.
o El tiempo de ejecucin de los programas es mucho mayor,
debido al proceso de traduccin previo que necesitan.

2.4.3.

EL LENGUAJE C Y C++

El lenguaje de programacin C, es un lenguaje de Nivel


Medio Combina caractersticas de los lenguajes de alto nivel, con
caractersticas del lenguaje mquina  Permite hacer cosas que
otros lenguajes de alto nivel no pueden hacer, como puede ser la
manipulacin del ordenador a bajo nivel, es decir manipulacin
directa de bits, de direcciones de memoria, etc.
El lenguaje C++ es una evolucin del lenguaje C al que se le
aade la potencialidad de la Programacin Dirigida a Objetos sin
perder la capacidad, estilo y flexibilidad de C. Se puede ver como
un C mejorado. Tanto si se desea realizar un programa orientado
a objetos como si slo se desea construir de forma sencilla
programas estructurados C++ simplifica la labor de programacin.
Puesto que C++ est basado en C, casi todos los
conocimientos en C son aplicables en C++, de modo que
conociendo el lenguaje C slo es necesario aprender algunas pocas
caractersticas aadidas por C++ para realizar programas ms
potentes. Adems cualquier programa en C es un programa en C++
(pero no a la inversa).
9/9

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 3. El proceso de Compilacin, del Cdigo Fuente al Cdigo Mquina

TEMA 3. EL PROCESO DE COMPILACIN, DEL


CDIGO FUENTE AL CDIGO MQUINA
3.1.

CONCEPTOS BSICOS DE PROGRAMACIN

Programa  Algoritmo (secuencia no ambigua, finita y ordenada


de instrucciones para la resolucin de un determinado problema)
traducido a un lenguaje de programacin adecuado, de modo que
un ordenador es capaz de ejecutarlo.
Programacin  Elaboracin de un programa de manera que ste
sea:
Correcto  Un programa ser correcto si hace lo que debe
hacer, de modo que se deben especificar de manera muy
clara cules son los datos sobre los que se trabajarn y lo que
se debe hacer con ellos. Todo debe ser documentado y
probado antes de desarrollarlo.
Eficiente  Debe consumir la menor cantidad de recursos
(tiempo y/o memoria) posible.
Claro  Es muy importante la claridad y legibilidad de todo
programa, ya que facilitar al mximo la tarea de
mantenimiento posterior del software.
Modular

Los

programas

suelen

subdividirse

en

subprogramas (mdulos), para reducir la complejidad de


aquella parte que se est implementando y facilitar la
reutilizacin de cdigo.

1/7

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 3. El proceso de Compilacin, del Cdigo Fuente al Cdigo Mquina

Lenguaje de programacin  Permite a un programador


especificar de manera precisa sobre qu datos debe trabajar el
ordenador, cmo deben ser almacenados y transmitidos y qu
acciones se deben realizar en funcin de una serie de
circunstancias que se sucedan a lo largo de la ejecucin del
programa.

3.2.

FASES DE DESARROLLO DE UN PROGRAMA

3.2.1.

FASE DE COMPILACIN Y ENLACE

Programa Fuente Programa escrito en un lenguaje de alto


nivel  Necesita ser traducido a cdigo mquina para poder ser
ejecutado.

Programa Objeto  Traduccin a cdigo mquina, por parte


del compilador, del programa fuente y que an no es
directamente ejecutable por el ordenador.

Programa Ejecutable  Traduccin completa a cdigo


mquina, realizada por el enlazador, del programa fuente y que
ya es directamente ejecutable por el ordenador.

2/7

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 3. El proceso de Compilacin, del Cdigo Fuente al Cdigo Mquina

(nombre.c)

Con
errores

Sin errores

COMPILADOR

Libreras

Programa Objeto
(nombre.o)

Sin errores

ENLAZADOR

DEPURACIN del programa si se producen errores en ejecucin

Programa Fuente

Programa ejecutable
(nombre.exe)

Transformaciones previas a la ejecucin de un programa

Si el programa fuente es sintcticamente correcto, el


compilador obtendr el cdigo objeto, y en caso contrario
mostrar una lista con los errores encontrados, no generndose
ningn programa objeto.

3/7

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 3. El proceso de Compilacin, del Cdigo Fuente al Cdigo Mquina

Los errores que se pueden producir en la fase de compilacin


son:
Errores fatales. Indican errores internos del compilador.
Detienen el proceso de compilacin.
Errores de sintaxis: Son errores tpicos de sintaxis. No
detienen la compilacin sino que al finalizar sta se
mostrar la lista con todos los errores encontrados. Algunos
errores suelen ser consecuencia de otros cometidos con
anterioridad. Con este tipo de errores no se puede obtener
un programa objeto y por lo tanto tampoco el
ejecutable.
Advertencias o Avisos (warnings): Indican que hay
algunas lneas de cdigo que a pesar de no infringir
ninguna regla sintctica, el compilador las encuentra
susceptibles de provocar un error. Cuando se detecta un
warning la compilacin no se detiene. Si en un programa
fuente slo se detectan warnings s que se podr obtener
un programa objeto, que tras el linkado dar lugar a un
programa ejecutable.

Librera  Coleccin de cdigo (conjunto de funciones) que


est listo para ser ejecutado, y que facilita la labor del
programador.
Cuando se compila, slo se comprueba que se han utilizado
(llamado) bien las funciones pertenecientes a las libreras que
nos ofrezca el compilador, sin embargo el cdigo de las mismas
an no se ha insertado (de ah que el cdigo objeto no sea cdigo
mquina ejecutable) en nuestro programa  Ser el Enlazador
(Linkador) el encargado de realizar dicha insercin y por lo
tanto el encargado de completar el cdigo mquina para obtener
el programa ejecutable.

4/7

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 3. El proceso de Compilacin, del Cdigo Fuente al Cdigo Mquina

Tras la obtencin del cdigo fuente hay que comprobar que


no se producen errores en tiempo de ejecucin. Si estos
ocurrieran habr que depurar el programa  Encontrar la causa
que provoca un error en tiempo de ejecucin es una labor que en
ocasiones resulta complicada, razn por la cual los EID
(Entornos Integrados de Desarrollo, p.ej. DevC++) nos
proporcionan una herramienta llamada Depurador que nos
facilita dicha tarea.

Pasos para elaborar y ejecutar un programa:


1. Escribir programa fuente, por ejemplo con el editor del
EID.
2. Compilar el fichero fuente.
3. Si se han producido errores de sintaxis, o warnings que
pudieran resultar peligrosos volveremos al editor para
corregirlos.
4. Si no hay errores se obtendr el cdigo objeto y el
enlazador construir el archivo ejecutable.
5. El sistema operativo colocar el programa en la memora
principal.
6. Comprobar el funcionamiento del programa.
7. Si se detectan errores/problemas se har uso del depurador,
para ejecutar paso a paso el programa detectar las causas.
8. Tras localizar los problemas volveremos al editor para
corregirlos.

5/7

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 3. El proceso de Compilacin, del Cdigo Fuente al Cdigo Mquina

3.2.2.

FASE DE EJECUCIN

1. En primer lugar una utilidad del S.O. llamada cargador colocar


el programa, y sus datos de entrada, en memoria principal,
preparndolo para su ejecucin.
2. El S.O. le pasa el control a la C.P.U. para que comience la
ejecucin del programa, realizando la Unidad de Control los
siguientes pasos (fases):
 Captacin de la instruccin: Lee de la Memoria
Principal la instruccin a ejecutar.
 Ejecucin de la instruccin: Interpreta la instruccin
leda y enva seales de control a las unidades que deban
intervenir en su ejecucin. Tras dicha ejecucin se
establece cul ser la siguiente instruccin a ejecutar.

3.3.

El COMPILADOR DE C

Algunas caractersticas del lenguaje C son las siguientes:


Es muy portable.
Es un lenguaje muy potente y eficiente.
Es un lenguaje de propsito general (puede utilizarse para
desarrollar sistemas operativos, gestores de bases de datos,
etc).
Es uno de los lenguajes ms utilizados por los programadores
profesionales, al ser un lenguaje de nivel medio.

6/7

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 3. El proceso de Compilacin, del Cdigo Fuente al Cdigo Mquina

Contiene un reducido nmero de palabras clave (32 fueron


definidas por el estndar ANSI).
Todos los compiladores suelen incluir potentes libreras de
funciones que aumentan su potencia.
Es un lenguaje compilado.

7/7

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

TEMA 4: ELEMENTOS BSICOS DE PROGRAMACIN


4.1.

DEFINICIONES. PALABRAS RESERVADAS

El lenguaje C est compuesto por:


32 palabras clave (estndar ANSI), comunes a todos los
compiladores de C.
palabras clave aadidas por cada compilador de C.
Sintaxis formal del lenguaje.
Indica cmo se organiza (estructura) un programa; cmo se
terminan las sentencias; cmo se escriben cada una de las
instrucciones, es decir, son las reglas para escribir
correctamente un programa en C.
Algunas caractersticas del lenguaje C:
Distingue entre MAYSCULAS y minsculas.
Todas las palabras clave se escriben en minscula.
Los nombres de las palabras clave no pueden usarse para identificar
a variables o funciones.
Las 32 palabras claves definidas por el estndar ANSI son:
auto
break
case
char
const
continue
default
do

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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

4.1.1.

ESTRUCTURA GRAL. DE UN PROGRAMA EN C

Seccin de includes (para la inclusin de libreras/bibliotecas)


#include <librera> o bien
#include librera
using namespace std;

Seccin de defines
#define constante valor

Seccin para la declaracin de constantes


const <tipo> <identificador> = <valor>;

Prototipos de funciones y procedimientos


Tipo_devuelto Nombre(lista de parmetros);

Funcin main (Programa principal)


int main()
{ Declaracin de variables locales;
Sentencia;
. . .
return 0;
}

Implementacin de funciones y procedimientos


Tipo_devuelto Nombre(lista de parmetros)
{ Declaracin de variables locales;
sentencia;
. . .
return resultado;
}

Cuando haga falta devolver un resultado.

Obligatorio

2/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

Todos los programas en C constan de una o ms funciones.


La funcin main( ) SIEMPRE est presente. (main aunque no es una
palabra reservada, debe tratarse como si lo fuera).
main( ) es la primera funcin llamada cuando se ejecuta un
programa, y controla toda la actividad desarrollada por el programa
(es la encargada de hacer las llamadas la resto de funciones), es decir
es la funcin principal.
Se pueden poner Comentarios  Lneas que no sern compiladas y
que por tanto no afectan a la ejecucin del programa.
/* texto del comentario, que puede ocupar
varias lneas */
// texto del comentario ocupando una sola lnea
(PERMITIDO EN C++)

4.2.

TIPOS DE DATOS

El tipo de una variable (contenedor de informacin) se refiere a la


naturaleza de la informacin que puede contener y a las
operaciones que se pueden realizar con ella.
Los tipos de datos bsicos en C son:

Carcter (char)
Entero (int)
Real (float)
Sin valor (void)

3/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

 CARCTER (char)  Sus valores posibles son el juego de


caracteres ASCII. Cada carcter se codificar utilizando 8 bits
(1 byte)  28bits = 256 caracteres diferentes
Tabla de Cdigos ASCII (del 0 al 127 son los estndar):

El valor de una variable de tipo carcter siempre ir entre comillas


simples.

4/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

 ENTERO (int)  Sus valores son nmeros enteros, que por


defecto pueden ser positivos o negativos, aunque podemos
obligar a que slo puedan ser positivos (unsigned).
Posibilidades:
Pueden ocupar 2bytes:
 unsigned int  216bits = [0, 65535]
 216bits = [-32768, 32767]
 int
Pueden ocupar 4bytes:
32bits os
 unsigned long int  2
n positivos
32bits os
2
n entre + y
 long int
Si en tiempo de ejecucin se asigna un valor mayor del
permitido a una variable  Overflow (valor excesivo).
 REAL (float, double)  Sus valores son nmero reales,
con un componente entero y uno fraccionario. Posibilidades:
Pueden ocupar 4bytes:
 float
Pueden ocupar 8bytes:
 Double  Mayor precisin que los float.
 SIN VALOR (void), se utilizan para:
Declarar funciones que no devuelven ningn valor a
travs de return.
Declarar una funcin sin parmetros.

5/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

MODIFICADORES DE TIPO  Preceden al tipo de dato


(excepto a void), para modificar el valor del tipo base  Nos
permiten ajustar los valores de las variables a nuestras
necesidades. Son los siguientes:
signed (por defecto)
unsigned
short (por defecto)
long
4.2.1.

VARIABLES

Una variable es un contenedor de informacin (datos), y su valor


se encuentra almacenado en memoria.
Para referirnos a los datos contenidos en la memoria utilizamos su
direccin  no es prctico, porque una direccin no es significativa
de su contenido  Se hacen necesarios los identificadores 
Nombre simblico para referirse a variables, funciones y cualquier
otro objeto definido por el usuario en un programa.
Todos los identificadores deben ser declarados es decir al
comienzo de nuestro programa se deben indicar los nombres de las
variables y el tipo de los datos que son capaces de almacenar.

Porque se debe hacer reserva de memoria para cada variable, y
establecer la correspondencia entre nombre de variable y posicin de
memoria asignada.
Las caractersticas de los identificadores son:
Su longitud no debe superar los 32 caracteres.
El primer carcter debe ser una letra o el smbolo de
subrayado.

6/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

DECLARACIN DE VARIABLES  Una variable de declara


para ser reconocida y poder ser utilizada. En la declaracin hay
que indicar:
el tipo de los valores que podr contener. Lo que
determinar qu cantidad de memoria habr que reservar.
el nombre de la variable.
Por ejemplo: int x;
int z=2;  Podemos inicializar la vble en su declaracin.

TODAS LAS VARIBLES DEBEN SER DECLARADAS


ANTES DE PODER SER UTILIZADAS.

Sintaxis formal de la declaracin de una variable:


[modificador_de_tipo]<tipo>{<identificador>[=valor],}<;>

donde:
[ ] indican el carcter opcional de su contenido.
< > indican obligatoriedad.
{ } indican posibilidad de repeticin, separando con una coma,
de su contenido.

7/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

4.2.2.

CONSTANTES

Una constante es un valor que no puede cambiar durante la


ejecucin de un programa  No pueden aparecer en la parte
izquierda de una asignacin. Pueden ser:
De cualquiera de los tipos vistos para las variables
(excepto void).
Una cadena de caracteres (conjunto de caracteres encerrado
entre dobles comillas)

Sintaxis formal de la declaracin de una constante:


const <identificador> <= valor> <;>

tambin podemos crear una constante utilizando la directiva #define:


#define <identificador> <valor>

8/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

4.3.

OPERADORES Y EXPRESIONES

4.3.1.

Operadores

 Operadores aritmticos

+
*
/
%
-++

Resta, Cambio de signo


Suma
Multiplicacin
Divisin
Mdulo  Resto de una divisin
Decremento en 1 unidad
Incremento en 1 unidad

Ejemplo
de
utilizacin
incremento/decremento:

de

los

operadores

Operacin
int i=2, m;
m = i++;

Resultado tras la operacin


Primero se asigna y despus de incrementa:
m=2, i=3

int j=2, n;
n = ++j;

Primero se incrementa y despus de asigna:


n=3, i=3

de

Precedencia de los operadores:


mayor

menor

++ -- (cambio de signo)
*
/
%
+
-

9/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

 Operadores relacionales  Devuelven true (0) o false


(=0).
>

>=

<

<=

==

!=

 Operadores lgicos  Permiten combinar los resultados de


los operadores relacionales, y as ver si se cumplen varias
condiciones simultneamente.
Operador

&&
||
!

Semntica

Operador y
Operador o
Operador no

Tipo

Binario
Binario
Monario

Tablas de verdad (utilizaremos 1 para indicar verdadero, y 0


para indicar falso):
p
0
0
1
1

q
0
1
0
1

p && q
0
0
0
1

p||q
0
1
1
1

!p
1
1
0
0

Precedencia de los operadores:


mayor

!
> >=

menor

==
&&
||

<

<=

!=

10/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

 Operador de asignacin  Son operadores que en ltima


instancia asignan un valor a una variable. Todos son
operadores binarios y su sintaxis es la siguiente:

<identificador> <operadorAsignacin> <expresin>;

En la siguiente tabla se recogen algunos de los distintos tipos


de operadores de asignacin:

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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

4.3.2.

Expresiones

 Expresiones Aritmticas  Constituidas por variables,


constantes, operadores aritmticos e incrementales.
Por ejemplo, la siguiente expresin matemtica:
b + b 2 4ac
x=
2a
Se escribira del siguiente modo en C:
X = (-b + sqrt(b*b 4*a*c))/(2*a);

 Expresiones Lgicas  Formadas por variables,


constantes, operadores aritmticos, valores lgicos (true,
false), operadores lgicos y operadores relacionales.
Un ejemplo sera:
a = (b<(c+5)) && (c==x);

La precedencia de los operadores en C es la siguiente:


mayor

menor

()
! ++ - - - (monario)
*
/
%
+
< <= > >=
= = !=
&&
||

12/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

4.3.2.1. Conversin de Tipo en las Expresiones

Existen dos formas de realizar una conversin de tipo:


Implcita:
Si mezclamos variables de distinto tipo en un misma
expresin, se convierten operacin a operacin al tipo ms
fuerte, es decir al de mayor precisin (el que mayor nmero
de bits necesita para su representacin).
Ejemplo:
char ch;
int i, rdo;
float f;
double d;
rdo = (ch / i) + (f * d) (f + i)

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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

4.4.

OPERACIONES BSICAS DE E/S

El lenguaje C no dispone de sentencias de E/S para recibir/enviar


datos del/al exterior  Utiliza las funciones de las libreras estndar
para realizar dichas actividades  Para utilizar dichas funciones
hay que incluir al principio del programa el archivo stdio.h
(Standard Input-Output), que nos permitir utilizar las funciones de
entrada/salida, y se har del siguiente modo:
#include <stdio.h>

4.4.1.

E/S sin formato

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();

int putchar(int c);

Muestra por pantalla el carcter c


indicado entre parntesis.
P.ej.: char v=a;
putchar(v);
putchar(b);

char *gets(char *cadena);

Lee una cadena de caracteres


desde teclado, hasta que se pulsa
enter.
P.ej.: char *cadena;
gets(cadena);

char *puts(const char *cad);

Muestra en pantalla la cadena de


caracteres indicada.
P.ej.: char *cadena=hola;
puts(cadena);
puts(aqu estamos);

14/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

4.4.2.

E/S con formato


Funcin

Accin

int printf(const char *cadformato, );

Escribe por pantalla los datos contenidos en


cadformato con el formato indicado en
dicho parmetro. As pues cadformato
contiene los caracteres que se mostrarn por
pantalla, junto con rdenes de formato
%Cdigo
Lee desde teclado todo tipo de datos. El
parmetro cadformato indica el tipo de los
datos que se van a leer, y al igual que para
el printf( ) se escriben del siguiente
modo %Cdigo

int scanf(const char *cadformato, );

4.4.2.1.

Especificadotes de formato para el printf( )

Ejemplo:
. . .
x=18;
c=a;
printf( Su edad es %d, y su letra del nif es %c, x, c );
. . .

rdenes de formato

argumentos

Las rdenes de formato deben coincidir en nmero y tipo con los


argumentos.
El resultado sera: Su edad es 18 y su letra del nif es a
15/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

4.4.2.2.

Especificadotes de formato para el scanf( )

Ejemplo:
. . .
int x;
char t;
scanf(%d, %c, &x, &t);
. . .

rdenes de formato

argumentos

De esta forma se le permite al usuario introducir dos datos, separados


por una coma y un espacio en blanco, de modo que si el usuario
introduce por teclado:
10, z

la variable x tomar el valor 10, y la variable t tomar el valor z


Sin embargo las siguientes entradas seran todas errneas:
z, 15
10 z

Error en los tipos de datos esperados


Error en los formato de la cadena

16/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

 Constantes de carcter con barra invertida (secuencia de


escape)

Son necesarias para poder imprimir caracteres especiales, como


un retorno de carro, caracteres con un significado especial para C
(como las comillas dobles, las comillas simples, ) , etc.
Algunas de estas constantes son las siguientes:
Cdigo

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);

el texto mostrado por pantalla sera el siguiente:


Mis datos son:
Nombre:
Apellido1

Apellido2

17/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

4.5.

NUESTRO PRIMER PROGRAMA

Vamos a escribir un pequeo programa que calcular la edad del


usuario, pidindole previamente el ao en el que ha nacido.

// Indicamos qu libreras vamos a utilizar

#include <stdio.h>
#include <stdlib.h>
int main()
{ // Declaramos las variables que sean necesarias
int anio, edad, actual;
system(cls);

/* Pedimos al sistema que borre la pantalla. Esta


funcin est implementada en la librera
stdlib.h */

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;

/* Pedimos al sistema que espere hasta que el


usuario pulse una tecla */
/* Informamos al sistema operativo de que el programa ha
finalizado correctamente */

18/19

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 4. Elementos Bsicos de Programacin

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>

Algunas de las libreras ms utilizadas de la Biblioteca estndar de C


son las siguientes:
Archivo de
cabecera
alloc.h
ctype.h
math.h
stdio.h
stdlib.h
string.h
time.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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 5. Control de Flujo del Programa

TEMA 5: CONTROL DE FLUJO DEL PROGRAMA


5.1.

SECUENCIA DE SETENCIAS

Sentencia Instruccin Expresin


 Operadores + Operandos
Sintaxis:
Sentencia ;
El ; es obligatorio

Las sentencias se ejecutan una tras otra, en EL MISMO ORDEN


en que han sido escritas  Para cambiar ese orden estn las
SENTENCIAS DE CONTROL DE FLUJO  En funcin de una
condicin deciden qu sentencia, o bloque de sentencias, es la
siguiente en ejecutarse, y las hay de los siguientes tipos:

Estructuras de SELECCIN

Estructuras de REPETICIN

5.1.1.

Estructura Secuencial

La representacin grfica de una estructura secuencial podra


ser la siguiente:

Inicio del
Programa

Instruccin
1

Instruccin
n

ltima
Instruccin

Fin del
Programa

1/11

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 5. Control de Flujo del Programa

5.1.2.

Bloque de Sentencias

(Sentencias compuestas)

Conjunto de sentencias agrupadas entre { }


Sintaxis:
{
sentencia1;
. . .
sentencia2;

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

if, if anidados y cadena if-else-if

 Sintaxis if (con sentencias simples)


if (condicin)
sentencia1;
else
sentencia2;

Opcional

condicin == true  sentencia1


condicin == false  sentencia2

2/11

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 5. Control de Flujo del Programa

 Sintaxis if (con bloques de sentencias)


if (condicin)
{ sentencia_1;
. . .
sentencia_n;
}
else
{ sentencia_n+1;
. . .
sentencia_t;
}

Opcional

condicin == true  Se ejecutan desde la sentencia_1

hasta la sentencia_n
condicin == false  Se ejecutan desde la sentencia_n+1

hasta la sentencia_t

Qu sentencias se ejecutarn en el siguiente trozo de cdigo?:


. . .
c=15;
if (c <= 10)
sentencia1;
sentencia2;
sentencia3;
. . .

3/11

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 5. Control de Flujo del Programa

Cuando tenemos sentencias if else insertadas dentro de


otro if o else.
 Se trata de una DECISIN MLTIPLE o if
ANIDADOS
 Cada else acompaa al if ms cercano que no tenga
else.
Ejemplo:
if (c<=10)
{ sentencia1;
if (t>=10)
sentencia2;
else
sentencia3;
}

Otra variante son los else if


if (c<=10)
Sentencia1;
else if (c<=5)
Sentencia2;

 Funcionamiento if
int main()
{ . . .
. . .
if (condicin)
sentencia1;
else
sentencia2;
. . .
. . .
}

verdadera
falsa

4/11

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 5. Control de Flujo del Programa

int main()
{ . . .
. . .
verdadera
if (condicin)
falsa
{ sentencia_1;
. . .
sentencia_n;
}
else
{ sentencia_n+1;
. . .
sentencia_t;
}
. . .
. . .
}
5.2.2.

switch

Todos los valores deben ser


DIFERENTES

 Sintaxis switch (con sentencias simples)


switch (vble/expresin)
{
case valor1: sentencia_1;
break;
case valor2: sentencia_2;
break;
. . .
case valorn: sentencia_n;
break;

Opcional

default: sentencia_t;
}

5/11

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 5. Control de Flujo del Programa

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).

Todos los valores deben ser


DIFERENTES

 Sintaxis switch (con bloques)

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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 5. Control de Flujo del Programa

 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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 5. Control de Flujo del Programa

5.3.

ESTRUCTURAS DE REPETICIN

(Sentencias Iterativas)

while
do while
for
Conocemos cuntas veces hay que repetir un conjunto de
instrucciones (o una sola)?:

 S  Usamos un bucle for.


 No  Ese conjunto de instrucciones (o instruccin) debe
ejecutarse al menos una vez ?:

 S  Usamos un bucle do while.


 No Usamos un bucle while.
5.3.1.

while

 Sintaxis while
while (condicin para repetir)
sentencia;

while (condicin para repetir)


{
sentencia1;
...
sentenciaN;
}

8/11

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 5. Control de Flujo del Programa

 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

switch + do while  Se utilizan para realizar MENS.


9/11

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 5. Control de Flujo del Programa

5.3.3.

for

for (contador=V_Inicial; Condicin; modificacin V_Inicial)


sentencia;

Condicin para seguir en funcin de la variable contador.

for (contador=V_Inicial; Condicin; modificacin V_Inicial)


{ sentencia1;
...
sentenciaN;
}

 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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 5. Control de Flujo del Programa

Algunos bucles especiales son:




Bucles infinitos  Son bucles cuya condicin SIEMPRE


se cumple  No terminan nunca.

Bucles vacos  Una sentencia vaca consiste en un ; sin


ms. Estos bucles no se suelen utilizar, aunque un posible
uso sera para producir retardos.

11/11

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 6. Punteros

TEMA 6: PUNTEROS
6.1.

CONCEPTO DE PUNTERO

PUNTERO  Variable que contiene la DIRECCIN de memoria


en la que se encuentra almacenada otra variable.

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

Direccin en Memoria de la variable


entera y (variable apuntada por x)

DECLARACIN DE UNA VARIABLE PUNTERO

<tipo_base> *<identificador>;

tipo_base  Tipo de la variable a la que apunta.


identificador  Nombre de la variable puntero.

1/4

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 6. Punteros

6.3.

OPERADORES PARA TRABAJAR CON PUNTEROS

&  Devuelve la DIRECCIN DE MEMORIA de su operando


*  Devuelve el VALOR (CONTENIDO) de la variable que est
en la posicin de memoria que se le pasa como operando.
Sintaxis:

&<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

int cuenta = 125;


int *p;
int x;

2/4

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 6. Punteros

6.4.

INICIALIZACIN DE PUNTEROS

TODO PUNTERO DEBE INICIALIZARSE, ya que en caso


contrario tras ser declarado apuntara a cualquier sitio (PELIGROSO).
Si an no sabemos dnde debe apuntar, se le asignar el valor NULL
(nulo)  No apunta a ningn sitio en especial.
Ejemplo:
int

6.5.

*p

= NULL;

ASIGNACIN DE PUNTEROS

A un puntero se le puede asignar:




El valor de otro puntero, del mismo tipo.


La direccin de memoria de una variable cuyo tipo coincida
en el tipo_base del puntero.

Ejemplo:
int x=15,

*p1=NULL, *p2=NULL;

p1 = &x; // Se le asigna la direccin de memoria de x


p2 = p1; // Se le asigna el valor de p1

Los dos apuntan a la misma variable

3/4

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 6. Punteros

6.6.

PROBLEMAS CON PUNTEROS

Un puntero con un valor errneo es MUY PELIGROSO, y el


ERROR ms DIFCIL DE DEPURAR, porque en compilacin NO
SE DETECTA, y los errores tras ejecutar pueden DESPISTAR.

Hay que hacer caso a los AVISOS (WARNINGS) ya que una


sospecha sobre un PUNTERO puede provocar un gravsimo error en
ejecucin.
 PROBLEMA 1: Puntero que no apunta al tipo correcto
...
float x=55.4;
int *p;
p = &x;
...

Error: cannot convert float* to int* in assignment

 PROBLEMA 2: Puntero no inicializado


...
int i, *p;
i = 50;
*p = i;
...

Estamos usando un puntero sin inicializar  Dnde se almacenar


el valor de la vble i ?. Lo peor en este caso es que el compilador no
no muestra ningn mensaje de error o de aviso.

 PROBLEMA 3: El valor asignado a un puntero no es una


direccin
...
int i, *p;
i = 50;
p = i;
...

Error: invalid conversion from int to int*

4/4

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

TEMA 7: DISEO DESCENDENTE: SUBPROGRAMAS


7.1.

NIVELES DE ABSTRACCIN

Mtodo de trabajo para la resolucin del problema que se nos plantea:


+ Detalle
- Abstraccin

SUBPROBLEMA_1

SUBPROBL_1.1

...

PROBLEMA
INICIAL

...

SUBPROBL_N.1

Complejo
Muy Abstracto

SUBPROBLEMA_N

...
Menos Complejo

SUBPROGRAMAS

Menos Abstracto

Descomponemos el problema, en subproblemas cada vez ms


sencillos y concretos  DISMINUIMOS EL NIVEL DE
ABSTRACCIN con el que trabajamos.

1/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

7.2.

DISEO DESCENDENTE

Para solucionar un problema vamos a dividirlo en problemas ms


pequeos. La solucin a dichos problemas sern los
SUBPROGRAMAS  Estructura bsica de un programa en C.
PROGRAMA  Secuencia corta de sentencias, la mayora de las
cuales son llamadas a subprogramas.
Cada subprograma puede ser utilizado tantas veces como queramos
dentro del programa principal  REUTILIZACIN DEL CDIGO
 Evita escribir repetidamente las mismas lneas de cdigo
Por lo tanto:
Un programa en C, es un conjunto de subprogramas, siendo la
funcin main el subprograma principal.
Es la primera funcin que se ejecuta Es la
encargada de llamar al resto de los subprogramas.

2/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

7.3.

ESTILO EN LA CREACIN DE UN PROGRAMA

7.3.1.

Programacin Estructurada

Consiste en la utilizacin del DISEO DESCENDENTE para


resolver un problema  Utilizacin de Subprogramas.
7.3.2.

Programacin Modular

El conjunto de subprogramas utilizados para la elaboracin de


un programa, pueden agruparse en uno o varios ficheros  Un
programa puede estar formado por varios archivos fuente  A
estos archivos fuente se les llama MDULO.
Pueden compilarse por separado, y
cargarse (en el programa principal)
junto con las libreras de C,
usndose de forma similar.

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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

7.4.

SUBPROG.: PROCEDIMIENTOS Y FUNCIONES

Sintaxis general:
CABECERA o PROTOTIPO
Tipo_devuelto Nombre (declaracin_de_parmetros)
{
EN EL CDIGO DE LA FUNCIN
[declaraciones;]
sentencias;

SLO SE USAN LAS VARIABLES


DECLARADAS DENTRO DEL MISMO,
Y LOS PARMETROS !!

[return valor_devuelto;]

Va de comunicacin
entre subprogramas.

tipo_devuelto  Indica el tipo del valor devuelto por un subpro-grama, a

travs de la sentencia return.

 Si es un PROCEDIMIENTO  el

tipo_devuelto ser void  NO

SE PONE return.
 Si es una FUNCIN  el tipo_devuelto ser igual al tipo del valor
devuelto por return.
Nombre 

Es obligatorio. Identifica al subprograma y tiene las mismas


restricciones que los nombres de las variables.

Declaracin_de_parmetros  Lista de variables utilizadas para:

 Pasarle valores al subprograma, por parte de otros, para que pueda


trabajar.
 Comunicar resultados a otros subprogramas.
Si el subprograma no necesita parmetros los () siguen siendo
obligatorios

{...}  Delimitan el cuerpo del subprograma.


4/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

return  Palabra reservada que se utiliza en las FUNCIONES para:

 Devolver el resultado de las operaciones realizadas.


 Devolver el control a subprograma que la llam  FINALIZA LA
FUNCIN.
valor_devuelto  Es el resultado que produce una funcin y su tipo debe

coincidir con el indicado en tipo_devuelto.


7.4.1.

Caractersticas de las FUNCIONES

Una funcin es un SUBPROGRAMA que devuelve un solo


resultado.
El resultado devuelto se indica mediante la palabra reservada
return, y TODOS LOS PARMETROS son de ENTRADA, es
decir slo sirven para que el subprograma que llama a la funcin le
pase a sta los datos necesarios para que pueda trabajar.
Los parmetros que son SLO DE ENTRADA reciben el
nombre de parmetros por VALOR.
La Declaracin_de_parmetros ser una LISTA de
declaraciones separada por ,, es decir la sintaxis es la siguiente:
Tipo_devuelto Nombre ( tipo Param1, ..., tipo ParamN)

Ejemplos:
int FUNC1 (float x)
float FUNC2 (int x, int y, char c)
float FUNC3 (int a, b, float c)
INCORRECTO
5/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

Algunas caractersticas de las funciones son las siguientes:


1. Dentro de una funcin NO PODEMOS DEFINIR otro
subprograma, SLO PODEMOS LLAMARLOS.
2. Una funcin puede formar parte de la EXPRESIN que se le
asigne a una variable, es decir puede aparecer a la DERECHA
de una ASIGNACIN.
Ejemplos:
int a, b, c;
char d;
float x, y;
. . .
a = FUNC1(x);
y = a+(b/2)- FUNC2(b, c, d);
. . .

3. Una funcin NO PUEDE SER el DESTINO de una


asignacin.
Ejemplo:
FUNC1(x) = a+b;

7.4.2.

Caractersticas de los PROCEDIMIENTOS

Un procedimiento es un SUBPROGRAMA que devuelve ms de


un resultado.

Debido a que devuelven ms de un resultado, NO UTILIZAN la


palabra reservada return, y los parmetros pueden ser:
a) Parmetros de ENTRADA
b) Parmetros de ENTRADA/SALIDA
6/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

a) Parmetros de Entrada, por VALOR o COPIA  Slo se


utilizan para que los subprogramas que llaman al procedimiento le
pasen datos al mismo.
b) Parmetros de E/S, o por REFERENCIA  Se utilizan por parte
de los subprogramas que llaman, para pasarle datos al procedimiento,
y por parte del procedimiento para pasar los resultados obtenidos al
subprograma que lo ha llamado.
La declaracin de parmetros tendr:
- 1  lista de Parmetros de Entrada.
- 2  lista de Parmetros de E/S.
y la sintaxis ser la siguiente:
void Nombre (tipo E1, , tipo En, tipo *ES1, , tipo *Esn)

Parmetros por VALOR


Debido a que
NO USAN return

Parmetros por REFERENCIA

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)

Coeficientes que determinan la ecuacin:


Raices solucin  Param.
ax 2 + bx = c
de Salida:
Son los parmetros de Entrada.
b + b 2 + 4ac
R1 =
2a
b b 2 + 4ac
R2 =
2a

7/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

Algunas caractersticas de los procedimientos son las sig. :


1. Dentro de un proced. NO PODEMOS DEFINIR otro subprograma, SLO PODEMOS LLAMARLOS.
2. Un procedimiento NO PUEDE:
Ser el destino de una operacin de asignacin.
Formar parte de una expresin (dcha. asignacin).
7.5.

PARMETROS Y VBLES LOCALES. VBLES GLOBALES.

El mbito de las variables indica:


- desde dnde es VISIBLE una variable, y
- dnde se puede UTILIZAR una variable.
Existen dos tipos de variables (segn su mbito)
Vbles. de MBITO GLOBAL, es decir
Variables Globales  Visibles y utilizables en
CUALQUIER parte del programa.

Vbles. de MBITO LOCAL, es


decir Variables Locales  Visibles y
utilizables SLO dentro del bloque o
funcin donde estn definidas.

NO EST PERMITIDO EL USO DE VARIABLES GLOBALES !!

7.5.1.

Variables Locales

Tiempo de Vida
de las Variables
LOCALES

Se definen DENTRO del subprograma  SLO pueden


usarse en dicho subprograma, debido a que:
1. Se crean al comenzar la ejecucin del subprograma en
el que se han declarado.
2. Se destruyen al finalizar dicho subprograma.
Slo ocupan espacio en memoria durante el periodo de tiempo en el
que se est ejecutando el subprograma que las cre, y no durante
toda la ejecucin del programa..
8/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

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
...
}

Cmo estar la situacin en memoria en cada momento de la


ejecucin?
7.5.2.

Parmetros

Comunican a los subprogramas con el resto del programa.


Significa que: Reciben los valores con los que trabajarn
los subprogramas.
Dentro de un subprograma, funcionan y se tratan igual que las
variables locales  Se crean al comenzar la ejecucin del
subprograma y desaparecen al finalizar el mismo.
9/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

Ejemplo:
Prototipo de la funcin
MAYOR

#include <stdio.h>
int MAYOR (int a, int b);

Valores con los que


se realiza la llamada
a un subprograma.

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;
}

Qu ocurre en memoria mientras se ejecuta el programa?

En la llamada a un subprograma, los ARGUMENTOS deben


coincidir en NMERO y TIPO con los PARMETROS, ya que
cada parmetro es sustituido por el argumento que en la
llamada al subprograma ocupa su misma posicin.

10/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

7.5.2.1.

Parmetros por Valor y por Referencia

PARMETROS POR VALOR.


Son parmetros slo de ENTRADA. A la funcin/procedimiento, se le pasa una COPIA del valor del ARGUMENTO.

Cualquier modificacin sufrida por el PARMETRO, dentro


de la funcin/procedimiento, NO afectar al ARGUMENTO,
permaneciendo su valor inalterado cuando el subprograma
finaliza.

La funcin/procedimiento trabaja con una copia del argumento.

PARMETROS POR REFERENCIA.


Son parmetros de E/S. Al subprograma se le pasa LA
DIRECCIN DE MEMORIA DEL ARGUMENTO 
Cualquier modificacin en el PARMETRO, afecta al
ARGUMENTO.

El subprograma trabaja con EL PROPIO ARGUMENTO,


ya que accede a su valor a travs de su DIRECCIN (y no a
partir de una copia del mismo).

Un parmetro por referencia es un PUNTERO !

11/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

Ej.: Subprograma (y llamada) que devuelva la suma y la resta de dos nmeros


#include <stdio.h>

Prototipo del procedimiento SumaResta

...
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.

SumaResta(dato1, dato2, &suma, &resta);


...
}
void SumaResta (int a, int b, int *S, int *R)
{
*S = a+b;
*R = a-b;
Cabecera del procedi}
miento SumaResta

Qu ocurre en memoria mientras se ejecuta el programa que llama a este


procedimiento?
7.6.

PROTOTIPOS DE FUNCIONES

Los PROTOTIPOS informan al compilador de:


1. TIPO de dato devuelto por una funcin.
2. TIPO y NMERO de los parmetros de un subprograma.
De manera que el compilador efecta una comprobacin de tipos y
nmero de argumentos, detectando ERRORES en las LLAMADAS
a subprogramas.

1. La variable a la que se le asigna el resultado de una funcin es de


un tipo distinto a la funcin.
2. El nmero o tipo de argumentos es errneo.
12/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

La sintaxis de un prototipo es:


tipo_dev NombreFunc1(tipo P1, ..., tipo Pn);
tipo_dev NombreFunc2(void);
void NombreProced (tipo P1, ..., tipo

*Pn);

La llamada a una funcin sin parmetros se hace del siguiente modo:


x= NombreFunc2();

Los PROTOTIPOS se colocan ANTES de la funcin main(), y su


objetivo es EVITAR ERRORES en el nmero y tipo de los
argumentos.

7.7.

MDULOS

Un Mdulo es una coleccin de constantes, tipos, subprogramas, etc


agrupados en un mismo fichero.

En C, no slo podemos dividir un programa en distintos


subprogramas, sino que dichos subprogramas se pueden a su vez
agrupar en mltiples ficheros (siendo cada uno de ellos un Mdulo).
Se agruparn los subprogramas que estn relacionados entre s.

Un programa estar compuesto por varios MDULOS.


13/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

Cuando un mdulo utiliza subprogramas que estn definidos en otro,


slo debe conocer de dichos subprogramas:
1. Cul es su prototipo.
2. Para qu sirve cada subprograma.
y nunca har falta saber cmo estn implementados.

Algunas ventajas de utilizar mdulos:


1. Facilitan la edicin, al trabajar con ficheros ms pequeos.
2. Compilacin ms rpida, al compilarse slo los ficheros que
han cambiado, y no todo el cdigo.
3. Programacin ms estructurada, al tener los subprogramas
relacionados en un mismo fichero, y no todo mezclado.
4. Aumenta la reutilizacin del software, al poder utilizar los
mdulos en otros programas.

7.7.1.

mbito de los Subprogramas

 MBITO GLOBAL  Son los subprogramas exportados por un


mdulo, y que pueden ser utilizados por todos los programas que
incluyan el mdulo en el que se encuentran, dentro de su cdigo.
Sintaxis:
#include modulo.h  Para importar un mdulo.

 MBITO DE MDULO  Son subprogramas privados, es decir,


que no se exportan y que por lo tanto slo pueden ser utilizados dentro
del mdulo en el que han sido creados.
14/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

7.7.2.

Proyectos

Proyecto  Aplicacin Informtica constituida por mltiples archivos o


mdulos, y que tiene la extensin (.dev)
Este fichero (.dev) contendr los nombres de los ficheros (.cpp .c), o
mdulos, que intervienen en la aplicacin, de los cuales slo uno podr contener
a la funcin main().
Para cada mdulo se define un fichero cabecera (.h), el cual contiene
los prototipos de los subprogramas que se quieren exportar, junto con las
declaraciones de aquellas variables que tambin queramos que puedan ser
utilizadas por otros mdulos, y un fichero de implementacin (.cpp .c) con la
codificacin de los subprogramas tanto pblicos como privados.
El programa principal (aquel que contiene a la funcin main) es
implementado en un fichero .cpp independiente, que incluir (#include) todos los
ficheros cabeceras de los mdulos que necesite para su funcionamiento. Si algn
mdulo requiere de otro.
Para crear el programa ejecutable, ser necesario compilar todos los
mdulos y el programa principal. La compilacin de mdulos genera los
ficheros objetos (.o) de stos, que para generar el programa ejecutable definitivo
tendrn que enlazarse con el programa.

Para llevar a cabo el proceso de compilacin y enlazado de forma


automtica se utilizan los PROYECTOS  permiten relacionar varios ficheros
fuente para generar un programa ejecutable, mediante la compilacin separada
de mdulos y el enlazado con el programa principal.

15/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

A continuacin, se mostrarn los detalles bsicos para la utilizacin de


proyectos en DEV C++.

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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

Aadir ficheros fuentes a un proyecto:


Para incluir un fichero:
Proyecto Nuevo Archivo Fuente  Si el fichero fuente an no existe.
Proyecto Aadir Fichero Fuente  Si el fichero existe.
En el primer caso, se crear un nuevo fichero para implementar el mdulo
deseado. Una vez realizado se guardar con el nombre .h .cpp.
En el segundo caso, aparecer una ventana de navegacin para seleccionar
el fichero fuente, que se asignar al proyecto en la ventana de navegacin de
proyectos. Si deseamos abrir el fichero bastar hacer clic sobre l.
Si utilizamos Archivo Nuevo Fuente, aparecer un mensaje por si
deseamos incluirlo al proyecto.

Despus de aadir varios ficheros, aparecera en el entorno DEV C++ una


pestaa abierta por cada fichero que intervenga en el proyecto.

17/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 7. Diseo Descendente: Subprogramas

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.

SECCIN DE includes: FICHEROS CABECERA

Los prototipos de los subprogramas de la Biblioteca Estndar de


C, estn en los Ficheros Cabecera, suministrados por el compilador.
Son los ficheros con la extensin (.h)
Los ficheros cabecera se incluyen dentro del programa fuente
con la directiva #include ,seguida del nombre del fichero (.h) 
estamos IMPORTANDO.
Adems, los programadores pueden crearse sus propios
mdulos, y por tanto sus propios ficheros cabecera.
La directiva #include tiene 2 sintaxis posibles:

#include

<fichero.h>

#include

fichero.h

El compilador busca el fichero, entre


las libreras ofrecidas por el entorno
Dev C++.
El compilador busca el fichero, en el
directorio de trabajo.

18/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS

Con las variables que conocemos hasta ahora, ES POSIBLE


almacenar la nota de todos los alumnos en UNA SOLA VARIABLE?

NO
Necesitamos algo as:
Vble
5 7

...

Esta variable es un VECTOR o ARRAY  Conjunto de valores del


mismo tipo, que estn almacenados en posiciones contiguas de memoria, y
que se referencian usando un nombre (que es comn para todos los datos)
y un ndice (que indica la posicin del dato dentro de todo el conjunto).

Ejemplo:
Notas
5 7
ndice 

...

6
Max-1

de modo que la nota del 3er alumno es: Notas[2]

1/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

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];

 Suponiendo que el vector ya est con datos, mostrar por


pantalla las notas de todos los alumnos:
Podra ser i<=50
for (i=0; i<50; i++)
printf(La nota del alumno %i, es %f,
i+1, NOTAS[i]);

Por qu?

 Cul es la nota media de la clase?


TOTAL = 0;
for (i=0; i<50; i++)
TOTAL += NOTAS[i];
MEDIA=TOTAL/50.0;
printf(La media es %.2f, MEDIA);

2/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

8.1.2.

Vectores Bidimensional (Tabla)

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

for (agno = 0; agno < 5; agno++)


{
printf(En %i, las temp. fueron : , agno);
for (mes = 0; mes < 12; mes++)
printf(En el mes %i, %f grados,
mes, TEMP_MEDIA[agno][mes]);
}

3/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

8.1.3.

Vector Tridimensional (Cubo)

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];

aos meses das

4/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

 Suponiendo que la tabla contiene datos, calcular la temperatura


media en estos 10 aos:
DIAS = 10*12*30;
TOTAL = 0;

Fijamos el ao
Fijamos el mes
Recorremos los
30 das de ese
mes y ese ao

8.1.4.

for (agno = 0; agno < 10; agno++)


for (mes = 0; mes < 12; mes++)
for (dia = 0; dia < 30; dia++)
TOTAL += TEMP [agno][mes][dia];
MEDIA = TOTAL / (float)DAS;
printf(La Temp. media es %f grados., MEDIA);

Inicializacin de Vectores

Tipo_elemento NOMBRE[dimensin1][dimensinN]={valor, ...};

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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

8.1.5.

CADENAS (Vect. de Caracteres o String)

Cadena  Vector que slo contiene caracteres. TODAS las cadenas


finalizan con el carcter \0  Hay que contar con l, a la hora de
pensar en el tamao del vector.

Posibles declaraciones:
char NOMBRE [tamao];

char

*NOMBRE;

Ejemplos:

 Declarar una variable cadena, capaz de almacenar 10


caracteres:
char CADENA[11];

 Dar a la variable anterior el valor inicial PILAR:


char CADENA[11] = {P,I,L,A,R,\0};

o bien, char CADENA[11] = PILAR;


de esta forma el carcter \0 se inserta automticamente

6/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

Para trabajar con cadenas, C dispone de la librera string.h

Algunas de las funciones


ofrecidas por la librera cstring

Accin

strcpy(c1,c2)

Copia la cadena c2 sobre la cadena c1.

strcat(c1,c2)

Concatena la cadena c1 con la cadena c2.

strchr(c1,ch1)

Busca la primera ocurrencia del carcter ch1 en la


cadena c1.

strcmp(c1,c2)

Compara la cadena c1 con la cadena c2. Devuelve un


valor que es < 0 si c1 es menor que c2; > 0 si c1 es
mayor que c2 y == 0 si c1 es igual a c2.

strlen(c1)

Devuelve la longitud de la cadena c1 sin contar el


terminador nulo (\0).

strupr(c1)

Convierte la cadena c1 a maysculas.

strlwr(c1)

Convierte la cadena c1 a minsculas

strset(c1,ch1)

Rellena toda la cadena c1 con el carcter ch1

strstr(c1,c2)

Encuentra la primera coincidencia de la subcadena c2


dentro de c1.

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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

El siguiente programa hace uso de algunas de estas funciones de cadenas:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char nombre[30], frase[80];
printf(Dime tu nombre:);
scanf(%s,nombre); /* al ser un array no lleva & */
strcpy(frase,nombre);
if (!strcmp(nombre,frase))
printf(Las cadenas son iguales);
printf(mi nombre es %s\n,nombre);
strcat(frase, es listo);
/* concatena es listo a la cadena frase */
printf(%s,frase);
printf(La cadena frase tiene %d caracteres n,strlen(frase));
strcpy(nombre,);

/* borrar la cadena */

8/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

8.1.6.

PASO DE ARRAYS A FUNCIONES

Los arrays se pasan siempre automticamente por referencia.


Cuando pasamos un array completo como argumento a una funcin, slo
se pone el nombre del array.
Si queremos pasar un nico elemento, como argumento a una funcin, se
pondr su nombre, es decir nombre_array[ndice_elemento]

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;

Procedimiento que trasforme un nmero en su cuadrado.


Realizar un programa que utilice el primer procedimiento para
rellenar una tabla de 5x10 elementos y el segundo procedimiento
para elevar al cuadrado dichos elementos.

9/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

8.2.

ESTRUCTURAS

Podemos almacenar en una sola variable, de los tipos conocidos hasta


ahora, el nombre de un alumno, y su nota media en un curso, p.ej. ?

NO

Necesitamos algo as:

Vble
Campos de la
estructura

Nombre

 Esta variable es una


ESTRUCTURA

Nota_Media

Conjunto de valores que pueden ser de distinto tipo, y que se


referencian usando un nombre (que es comn) y un identificador de
campo.
Definicin del tipo estructura:
struct nombre
{
tipo campo1;

tipo campoN;
};

 Antes del main( )


Ojo! Hemos creado un nuevo tipo
de dato llamado struct nombre
(o slo nombre), pero an no
hemos declarado ninguna variable
de dicho tipo.

Declaracin de una variable del tipo anterior:

struct nombre

Nombre_Vble;

10/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

IMPORTANTE

Dos variables de tipo estructura NO SE PUEDEN COMPARAR


directamente, sino que habr que hacerlo campo a campo.

Un campo de una variable estructura, puede ser otra estructura (que


por supuesto haya sido definida antes).

EJEMPLOS:

Crear una variable que contenga el nombre de un alumno, su


direccin completa y su nota media:
struct Direccion
{ char
Calle [30];
int
Numero;
int
CP;
char
Poblacion [30];
};
struct Datos
{ char
Nombre[30];
float
NotaMedia;
struct Direccion Direc;
};
int main( )
{ struct Datos alumno;
}

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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

Grficamente podemos ver el array de estructuras del siguiente


modo:
clase

249

Nombre

. . .

NotaMedia
C/

CP

Pob

O bien as:
clase

249
. . .

Nombre

NotaMedia

Direc

29
Calle

Numero

CP

8.2.1.

Poblacion

29

29

Acceso a los campos de una Estructura

Nombre_Vble

Nombre_campo;

Identificador de campo
Ejemplos:

Nota media del alumno:


NM = alumno.NotaMedia;

// float NM;

Cdigo Postal del alumno:


Cod = alumno.Direc.CP;

// int Cod;

12/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

Nota media del 5 alumno:


NM = clase[4].NotaMedia;

// float NM;

Cdigo Postal del 240 alumno:


Cod = clase[239].Direc.CP;

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 */

En este caso para acceder a los campos no se usa  sino  .

13/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

8.2.3.

Paso de Estructuras a Funciones

C permite pasar Estructuras a Funciones, bien por valor o bien


por referencia (utilizando &).
Si la estructura es grande el paso por valor (copia) del
parmetro struct puede llevar mucho tiempo En esos casos lo
mejor es pasar la direccin de la estructura (referencia).
Ejemplo:
...
struct
{ char
char
char
char
int
};

InfoPersona
nombre[20];
calle[30];
ciudad[25];
provincia[25];
CP;

void Rellenar(struct InfoPersona *P);


void Leer(struct InfoPersona P);
int main( )
{ struct InfoPersona Datos;
. . .
//Paso por referencia
Rellenar(&Datos);
Leer(Datos);
//Paso por valor
. . .
}
void Rellenar (struct InfoPersona *P)
{
printf( \n Introducir datos \n);
printf(Nombre: );
gets(Pnombre); //Debemos utilizar  para acceder a los campos
. . .
printf(Cdigo Postal: );
scanf(%i, &PCP); // tiene mayor precedencia que &
}

14/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

void Leer (struct InfoPersona P)


{
printf(\n Informacin de una persona);
printf(Nombre: %s\n,P.nombre);
. . .

//utilizamos . para acceder a los campos

printf(Cdigo Postal: %i,P.CP);


}

8.2.4.

Paso de elementos de Estruct. a Funciones

Un elemento (campo) de una estructura se trata igual que


cualquier otra variable de su mismo tipo, a la hora de pasarlo a una
funcin. Slo hay que seleccionar el campo a pasar.
Ejemplo:

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);
. . .
}
. . .

Estas funciones trabajan con los argumentos


como si fuesen valores float sin ms, es decir
sin tener en cuenta que son campos a
estructuras, ya que ese hecho no afecta.

15/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

8.2.5.

Ejercicio Prctico

Realizar un programa que almacene la siguiente informacin para cada


uno de los 53 alumnos de una clase:
 Nombre.
 Calificacin (Letra y nmero) de 5 parciales.
 Media numrica de las calificaciones.
El programa solicitar para cada uno:
 Nombre.
 Las 5 calificaciones numricas.
Y deber calcular:
 Calificaciones en Letra de cada parcial (y guardarlas).
 Nota Media numrica de la clase.
 Nombre/s del alumno/s con mayor nta media, mostrando
por pantalla y en ambos formatos, las notas de los 5
parciales.

16/18

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

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

Grado en Ingeniera Mecnica


Fundamentos de Informtica

Tema 8. Estructuras de Datos Complejas

//Calculamos la media de cada alumno


for(i=0; i<53; i++)
{ media=0;
for(j=0; j<5; j++)
media = media + Clase[i].parciales[j].califNum;
Clase[i].media = media/5;
}
//Calculamos la media de la clase
media=0;
for(i=0; i<53; i++)
media = media + Clase[i].media;
media = media/53;
printf(La media de la clase es %f., media);
//Calculamos la Nota mayor
mayor=0;
for (i=0; i<53; i++)
if (mayor < Clase[i].media)
mayor = Clase[i].media;
//Mostramos los mejores alumnos
for(i=0; i<53; i++)
if (Clase[i].media > mayor)
{ printf(Nombre: %s\n, Clase[i].nombre);
for (j=0; j<5; j++)
printf(Parcial %i, %f, %s, j+1,
Clase[i].parciales[j].califNum,
Clase[i].parciales[j].califLet);
}
return 0;
}

PROPUESTA  Mejorar esta solucin haciendo uso de los


subprogramas que el alumno considere necesarios.

18/18

Tema 9

Fases de creacin de una base de


datos (I)

9.7 Fases en el diseo de una base de datos


 Estudio previo y plan de trabajo (estudio de viabilidad)
 lo realizan los directivos de la entidad
 evaluacin aproximada de los medios y de los costes
 se deben plantear objetivos a corto plazo

 Recoleccin y anlisis de requisitos


 identificar las partes que interactan con el sistema (usuarios
y aplicaciones)
 analizar los requisitos de dichos usuarios y aplicaciones
 recoger cuales son las transacciones ms importantes
 entrevistas con los usuarios para conocer sus prioridades
 fase costosa pero de gran importancia

 Diseo conceptual de la base de datos


 se utiliza un modelo de datos conceptual independiente del SGBD
se modela la informacin recogida en la fase anterior
 los modelos estn formados por diagramas que recogen toda la
semntica
 modelo entidad - relacin extendido

2010-11

Fundamentos de Informtica Grado en Ingeniera Qumica Industrial


Universidad de Huelva

Tema 9

Fases de creacin de una base de


datos (II)

 Eleccin del SGBD y diseo lgico de la base de datos


 en la eleccin intervienen factores tcnicos y econmicos
 el diseo lgico depende del modelo de datos que soporte el SGBD
 el resultado es un conjunto de sentencias escritas en el LDD
soportado por el SGBD
 muchos SGBD proporcionan interfaces amigables que traducen
automticamente a LDD

 Diseo fsico e implementacin del sistema de base de datos

 se eligen las estructuras de almacenamiento


 los SGBD ofrecen diferentes alternativas de organizacin de archivos
 a medida que se cargan los datos se deben ir haciendo pruebas para
optimizar el sistema

2010-11

BDI - BD
Fundamentos
I.T. Informtica
de Informtica
de Gestin
Grado
/ Sistemas
en Ingeniera Qumica
Universidad
Industrial
de Huelva
Universidad de Huelva

Metodologa para el diseo de


bases de datos

Tema 9

9.8 Metodologa para el diseo de una base de datos


Recoleccin y
anlisis de
requisitos

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
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

Introduccin a las Bases de Datos

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

Grado en Ingeniera Mecnica

Universidad de Huelva

Introduccin
9.1 Introduccin. Conceptos: BD / SGBD

Base de datos (BD)


coleccin de datos relacionados con un significado implcito
Propiedades implcitas de una BD:
 Representa algunos aspectos del mundo real, tambin
llamado minimundo o universo del discurso
 Se disea, construye y carga con datos, para un propsito
especfico. Est destinada a un grupo de usuarios concreto
y suelen existir aplicaciones preconcebidas en las que estn
interesados estos usuarios
 Es una coleccin coherente de datos. Un conjunto
aleatorio de datos no puede considerarse como una BD
En resumen, una BD tiene alguna fuente de la que provienen los datos, algn grado de interaccin
con sucesos del universo de discurso y una serie de usuarios interesados en su contenido
Fundamentos de Informtica

Grado en Ingeniera Mecnica

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

Grado en Ingeniera Mecnica

Universidad de Huelva

Introduccin
SGBD ms utilizados
actualmente

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

Ventajas de utilizar un SGBD


9.2 Ventajas de utilizar un SGDB
 Control de la redundancia
 Restriccin de los accesos no autorizados
 Posibilidad de ofrecer diferentes interfaces de usuario
Lenguajes de consulta
Interfaces de lenguaje de programacin
Formularios

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

Ventajas de utilizar un SGBD


 Mayor integridad en los datos
 Facilidad para realizar copias de seguridad y recuperacin
 Mejor accesibilidad a los datos y mayor capacidad de respuesta
 Mayor productividad

Fundamentos de Informtica

Grado en Ingeniera Mecnica

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

Grado en Ingeniera Mecnica

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

Director ( nombreDirector, nacionalidad, fechaNacimiento, numPeliculas )


Pelcula ( ttuloPelicula, director, gnero, guin, aoRodaje, nacionalidad, duracin )

Instancia o ejemplar de una BD


 Informacin que se encuentra almacenada en una base de datos en un momento
determinado
 Es la parte cambiante del sistema

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

Lenguajes de los SGBD


9.4 Lenguajes de los SGBD
 Cmo interactuar con una BD desde un lenguaje de propsito general?
SQL embebido (incrustado) en el lenguaje
se intercalan sentencias SQL en un lenguaje de alto nivel
se necesita un precompilador que traduce las sentencias SQL, insertando llamadas a unas
libreras especficas y generando el programa fuente modificado para que se pueda compilar,
enlazar y ejecutar
Oracle dispone de precompiladores para Cobol, C y C++

Fundamentos de Informtica

Grado en Ingeniera Mecnica

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

Grado en Ingeniera Mecnica

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 Base de Datos

Gestor de
Archivos

Estructuras
especiales de
acceso

Fundamentos de Informtica

Disco
Datos
Almacenados

Catlogo

Grado en Ingeniera Mecnica

Universidad de Huelva

11

Clasificacin de los SGBD


9.6 Clasificacin de los SGBD
Relacional: coleccin de tablas

Orientado a objetos: conjunto de objetos con sus propiedades y operaciones

Modelo de datos

Objeto-relacional: incorporan conceptos de las BD orientadas a objetos

Jerrquico: representa los datos como estructuras jerrquicas de rbol

Red: representa los datos como tipos de registro y los vnculos entre ellos
mediante el tipo conjunto

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

12

Clasificacin de los SGBD


Monousuario: slo un usuario a la vez (ordenadores personales)
N de usuarios
Multiusuario: varios usuarios al mismo tiempo

Centralizado: datos almacenados en un solo sitio

Homogneo: mismo software de SGBD en mltiples sitios


N de sitios
Distribuido

Heterogneo: ms de un SGBD distinto

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

13

Fases de creacin de una base de datos


9.7 Fases en el diseo de una base de datos
 Estudio previo y plan de trabajo (estudio de viabilidad)
 lo realizan los directivos de la entidad
 evaluacin aproximada de los medios y de los costes
 se deben plantear objetivos a corto plazo

 Recoleccin y anlisis de requisitos


 identificar las partes que interactan con el sistema (usuarios
y aplicaciones)
 analizar los requisitos de dichos usuarios y aplicaciones
 recoger cuales son las transacciones ms importantes
 entrevistas con los usuarios para conocer sus prioridades
 fase costosa pero de gran importancia

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

14

Fases de creacin de una base de datos


 Diseo conceptual de la base de datos
 se utiliza un modelo de datos conceptual independiente del SGBD
se modela la informacin recogida en la fase anterior
 los modelos estn formados por diagramas que recogen toda la
semntica
 modelo entidad - relacin extendido

 Eleccin del SGBD y diseo lgico de la base de datos


 en la eleccin intervienen factores tcnicos y econmicos
 el diseo lgico depende del modelo de datos que soporte el SGBD
 el resultado es un conjunto de sentencias escritas en el LDD
soportado por el SGBD
 muchos SGBD proporcionan interfaces amigables que traducen
automticamente a LDD

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

15

Fases de creacin de una base de datos


 Diseo fsico e implementacin del sistema de base de datos
 se eligen las estructuras de almacenamiento
 los SGBD ofrecen diferentes alternativas de organizacin de archivos
 a medida que se cargan los datos se deben ir haciendo pruebas para
optimizar el sistema

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

16

Fases de creacin de una base de datos


Recoleccin y
anlisis de
requisitos

9.8 Metodologa para


el diseo
de una base de datos

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

Grado en Ingeniera Mecnica

Esquema
interno

Universidad de Huelva

17

El modelo de datos relacional

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

Grado en Ingeniera Mecnica

Universidad de Huelva

18

El modelo de datos relacional: introduccin


9.1 Introduccin
 Presentado por Edgar F. Codd de IBM Research en 1970
 El objetivo fundamental del modelo propuesto por Codd es mantener la independencia
de la estructura lgica de la BD respecto al modo de almacenamiento y a otras
caractersticas de tipo fsico.
 Los trabajos ms relevantes de Codd relacionados con el modelo relacional son:
http://www.informatik.uni-trier.de/~Eley/db/about/codd.html

 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

Grado en Ingeniera Mecnica

Universidad de Huelva

19

El modelo de datos relacional: introduccin


 Con idea de trabajar con un esquema relacional a lo largo del tema, supongamos que
deseamos disear una base de datos a partir del siguiente anlisis de requisitos:
Se desea disear una base de datos para gestionar la informacin de una Escuela Tcnica de
Ingeniera Informtica. En dicha BD se almacenar informacin sobre los alumnos, los profesores y
las asignaturas que se imparten en el centro. Adems se mantendr toda la informacin relativa a las
calificaciones de los alumnos en cada asignatura de la que se matricula. Puesto que una asignatura
la pueden impartir varios profesores, se desea almacenar la informacin del profesor que imparte una
asignatura a un determinado alumno.

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

Grado en Ingeniera Mecnica

Universidad de Huelva

20

El modelo de datos relacional: estructura


9.2 Estructura del modelo relacional
nombre de la relacin

atributos

cardinalidad

ALUMNO

nAl

dni

145

29.254.123

Manuel Lpez Gonzlez

nombre

15/03/75

fechaNac

Huelva

lugar

214

29.147.158

Mercedes Gmez Martn

20/06/76

Huelva

112

44.125.325

Francisco Gallego Macas

01/01/75

Cdiz

220

29.555.247

Beatriz Rico Vzquez

12/11/74

Cdiz

tuplas

grado
dominio
3 dgitos

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

21

El modelo de datos relacional: estructura

Las tablas o relaciones (con algunos de sus atributos) que, tras el correspondiente
anlisis, surgen del enunciado propuesto, son las siguientes:

ALUMNO (nAl, dni, nombre, fechaNac, ...)


PROFESOR (nPr, dni, nombre, despacho, ...)
ASIGNATURA (idAsig, nombre, crditos, ...)
ORDENADOR (idOrd, tipo, ubicacin, ...)
MATRICULA (alum, idAsig, prof, ao, feb_jun, sep, dic, ...)
RECOMENDACIONES (idAsig1, idAsig2, ...)

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

22

El modelo de datos relacional: estructura


9.2.2 Tupla y relacin
 Una tupla es una lista ordenada de valores t = <v1, v2, ..., vn>, donde cada valor vi es un
elemento del dominio dom(Ai), o bien es un valor nulo.
 Existen bsicamente dos formas de definir una relacin:


Intensin, esquema o cabecera de relacin.


 R(A1:D1, A2:D2, ..., An:Dn)
 Conjunto de n pares atributo-dominio (Ai:Di)
 Se utiliza para describir una relacin y no suele cambiar en el transcurso del tiempo

Extensin o estado de relacin.


 Se denota como: r(R)
 Conjunto de m tuplas {t1, t2, ..., tm}
 Cada tupla es un conjunto de n pares atributo-valor { (Ai:Vij) } donde Vij es el valor j del
dominio Di asociado al atributo Ai
 Vara con el transcurso del tiempo
Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

23

El modelo de datos relacional: estructura


Relaciones definidas por intensin o esquemas de relaciones
ALUMNO (nAl: D_cdigos, dni: D_dni, nombre: D_cadenas, fechaNac: D_fecha, ...)
PROFESOR (nPr: D_cdigos, dni: D_dni, nombre: D_cadenas, despacho: D_nmeros, ...)
ASIGNATURA (idAsig: D_idAsig, nombre: D_cadenas, crditos: D_nmeros, ...)
ORDENADOR (idOrd: D_idOrd, tipo: D_tipos, lugar: D_lugares, ...)
MATRICULA (alum: D_dni, idAsig: D_idAsig, prof: D_dni, ao: D_ao, ...)
NECESITA (idAsig1: D_idAsig, idAsig2: D_idAsig, ...)

Relacin definida por extensin o estado de relacin


ORDENADOR
idOrd

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

Grado en Ingeniera Mecnica

...

Universidad de Huelva

24

El modelo de datos relacional: estructura


9.2.3 Caractersticas de las relaciones
 Cada relacin tiene un nombre distinto al del resto de las relaciones
 No puede haber tuplas repetidas y adems, entre stas no existe orden establecido
 No puede haber dos atributos con igual nombre en una relacin. Adems, el orden de los
atributos no es relevante.
 Los valores de los atributos son atmicos: en cada tupla, cada atributo toma un solo valor
 Puede haber tuplas con un valor desconocido en algunos de sus atributos (valor nulo)
 Una relacin (tabla) puede representar hechos sobre entidades o puede representar la
relacin (interrelacin) existente entre varias entidades

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

25

El modelo de datos relacional: restricciones


9.3 Restricciones del modelo relacional
 Las restricciones del modelo relacional se refieren, principalmente, a estructuras o
estados no permitidos.
 Los datos almacenados en la BD han de adaptarse a las estructuras impuestas por el
modelo relacional, y han de cumplir las restricciones de usuario.

9.3.1 Restricciones de dominio

 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

Grado en Ingeniera Mecnica

Universidad de Huelva

26

El modelo de datos relacional: restricciones


9.3.2 Restricciones de clave
 Todas las tuplas deben ser distintas. No puede haber dos tuplas que tengan la misma
combinacin de valores para todos sus atributos
 En general existen diferentes subconjuntos de atributos (formados por uno o ms
atributos) que hacen cumplir la propiedad de que dos tuplas no pueden tener los
mismos valores para dicho subconjunto
 Sea SC dicho subconjunto. Para dos tuplas distintas cualesquiera t1 y t2, se cumple
que t1[SC] t2[SC]
 Todo conjunto de atributos SC se denomina superclave del esquema de relacin R, el
cual especifica la restriccin de unicidad

Fundamentos de Informtica

nAl

dni

145

29.254.123

Manuel Lpez Gonzlez

nombre

15/03/75

Huelva

214

29.147.158

Mercedes Gmez Martn

20/06/76

Huelva

112

44.125.325

Francisco Gallego Macas

01/01/75

Cdiz

214

29.147.158

Mercedes Gmez Martn

20/06/76

Huelva

Grado en Ingeniera Mecnica

fechaNac

lugar

Universidad de Huelva

27

El modelo de datos relacional: restricciones


 Una clave de una relacin es un conjunto no vaco de atributos que identifica
unvocamente cada tupla, y que adems es mnimo
 Ejemplo: en la relacin ALUMNO podemos elegir como superclave el conjunto de
atributos {nAi, dni}, ya que identifican a una nica tupla, pero no es mnima, ya que si
eliminamos el atributo dni", todava podemos identificar unvocamente las distintas tuplas.
 Una clave puede ser:


simple (formada por un atributo)

compuesta (formada por varios atributos)

 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

Grado en Ingeniera Mecnica

Universidad de Huelva

28

El modelo de datos relacional: restricciones


 Una relacin puede tener ms de una clave
 Cada una de ellas se denomina clave candidata
 Se denomina clave primaria aquella que elige el diseador como clave
 Al resto de las claves candidatas no elegidas, se denominan claves alternativas
 Toda relacin tiene, al
menos una superclave (el conjunto de todos los atributos), pero una
ALUMNO (nAl, dni, nombre, fechaNac, ...)
Esquemas
de puede tenerCP:
superclave
atributos
redundantes
nAl
relaciones del
nico: dni
ejemplo con sus
PROFESOR (nPr, dni, nombre, despacho, ...)
CP: nPr
claves primarias y
nico: dni
claves alternativas
ASIGNATURA (idAsig, nombre, crditos, ...)
CP: idAsig
nico: nombre
ORDENADOR (idOrd, tipo, lugar, ...)
CP: idOrd
MATRICULA (alum, idAsig, prof, ao, feb_jun, sep, dic, ...)
CP: (alum, idAsig, ao)
RECOMENDACIONES (idAsig1, idAsig2, ...)
CP: (idAsig1, idAsig2)

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

29

El modelo de datos relacional: restricciones


9.3.3 Restricciones de integridad
 Una base de datos relacional suele contener muchas relaciones o tablas, algunas de
las cuales se encuentran relacionadas.
 Se define esquema de base de datos relacional a un conjunto de esquemas de
relaciones, los cuales deben cumplir ciertas restricciones, que llamaremos
restricciones de integridad.
 Se define ejemplar de base de datos relacional a un conjunto de ejemplares de
relaciones que satisfacen las restricciones de integridad. Tambin se conoce como
instancia de la base de datos o estado de la base de datos.

En el fichero ejemplar.pdf* se muestra un ejemplar de la base de datos


que estamos utilizando como ejemplo
* visitar pgina web de la asignatura

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

30

El modelo de datos relacional: restricciones

 Restriccin de integridad de entidades: ningn atributo que forme parte de la clave


primaria de una relacin puede tomar un valor nulo.
 Restriccin de integridad referencial: se especifica entre dos relaciones y sirve para
mantener la consistencia entre las tuplas de ambas relaciones. Si en una relacin hay
una referencia a una tupla de otra relacin, sta deber referenciar a una tupla
existente en la relacin referenciada. Se apoya en el concepto de clave ajena o
externa (foreign key).

ALUMNO

ORDENADOR

nAl

dni

nombre

nH

ordenador

145

29.254.123

Manuel Lpez Gonzlez

15/03/75

Huelva

Ord009

Ord025

Servidor NT

Control

214

29.147.158

Mercedes Gmez Martn

112

44.125.325

Francisco Gallego Macas

20/06/76

Huelva

Ord010

Ord008

PC Prcticas

Aula 7

01/01/75

Cdiz

Ord009

Ord009

PC Prcticas

088

29.214.856

Aula 7

Teresa Daz Camacho

25/10/71

Madrid

Ord010

Ord010

PC Prcticas

220

29.555.247

Aula 8

Beatriz Rico Vzquez

12/11/74

Cdiz

Ord025

Ord040

Servidor Multimedia

Aula 10

Fundamentos de Informtica

fechaNac

lugar

Grado en Ingeniera Mecnica

idOrd

tipo

lugar

Universidad de Huelva

31

El modelo de datos relacional: restricciones




Un conjunto de atributos de una relacin R2 es una clave ajena de la relacin R1 si


satisface las dos reglas siguientes:
1.

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.

Un valor de la clave ajena en una tupla t2 de la relacin R2 debe


corresponderse con un valor de la clave primaria en alguna tupla t1 de la
relacin R1, o bien es nulo si se desconoce. En el caso de no ser nulo, tenemos
que t2[clave ajena] = t1[clave primaria], y se dice que la tupla t2 hace referencia
a la tupla t1

R1 y R2 pueden ser la misma relacin

La integridad referencial es una restriccin de comportamiento y es el usuario quin


la define al describir el esquema relacional.
Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

32

El modelo de datos relacional: restricciones


Representacin de las claves ajenas
ALUMNO (nAl, dni, nombre, fechaNac, lugar, nH, ordenador)
CP: nAl
nico: dni
CAj: ordenador  ORDENADOR (idOrd)
PROFESOR (nPr, dni, nombre, despacho, ant)
CP: nPr
nico: dni

RECOMENDACIONES (idAsig1, idAsig2)


CP: (idAsig1, idAsig2)
CAj: idAsig1  ASIGNATURA (idAsig)
CAj: idAsig2  ASIGNATURA (idAsig)
MATRICULA (alum, idAsig, prof, ao, feb_jun, sep, dic)

ASIGNATURA (idAsig, nombre, crditos, curso, cuat, esp, prof)


CP: idAsig
nico: nombre
CAj: prof  PROFESOR (nPr)

CP: (alum, idAsig, ao)


CAj: alum  ALUMNO (nAl)
CAj: idAsig  ASIGNATURA (idAsig)
CAj: prof  PROFESOR (nPr)

ORDENADOR (idOrd, tipo, lugar)


CP: idOrd

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

El modelo de datos relacional: restricciones




Definicin formal de restriccin de integridad referencial:


Si una relacin R2 (relacin que referencia) tiene un conjunto de atributos que se
corresponde con la clave primaria de la relacin R1 (relacin referenciada), todo
valor de dicho conjunto debe concordar con un valor de la clave primaria de R1 o
ser nulo
Ese conjunto es, por tanto, una clave ajena de la relacin R2

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

Grado en Ingeniera Mecnica

Universidad de Huelva

34

El modelo de datos relacional: restricciones


Otro tipo de restricciones

 Restriccin de obligatoriedad: se utiliza para no permitir valores nulos en ciertos


atributos.
 Restriccin de unicidad: se utiliza para indicar que el valor de un atributo o un
conjunto de atributos no se puede repetir. La clave primaria posee las restricciones de
unicidad y obligatoriedad.
ALUMNO (nAl, dni, nombre, fechaNac, lugar, nH, ordenador)
CP: nAl
nico: dni
VNN: dni, nombre
CAj: ordenador  ORDENADOR (idOrd)

 Restricciones de integridad semntica: dependen del contexto que estemos


modelando.
- Ejemplos:
nota <= 10
salario1 > salario2
si la nota en feb_jun es >= 5, la nota en septiembre y diciembre debe ser un valor nulo
Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

El modelo de datos relacional: restricciones


Conservacin de la integridad referencial


EL SGBD debe proporcionar un mecanismo para garantizar la integridad referencial


cuando se realizan operaciones de insercin, actualizacin o eliminacin de tuplas

Existen dos posibilidades para manejar la integridad referencial:


1. impedir que se introduzca informacin que no garantiza la integridad
referencial.
Operacin restringida. (RESTRICTED)
2. permitir la introduccin de dicha informacin y realizar acciones consecuentes
para que se mantenga la integridad referencial.
Operacin con transmisin en cascada. (CASCADE)
Operacin con puesta a nulos. (SET NULL)
Operacin con puesta a valor por defecto. (SET DEFAULT)

Fundamentos de Informtica

Grado en Ingeniera Mecnica

Universidad de Huelva

35

Das könnte Ihnen auch gefallen