Está en la página 1de 63

CIENCIA

 DE  LA  COMPUTACION  


CUERPO  DOCENTE  
Jefe  de  Trabajos  Prác:cos:  Andrea  L.  Riera  
Ayudante  Diplomado:  Marcelo  Marchioni  
Ayudante  Diplomado:  Fabio  Buchiarelli  
Ayudante  Diplomado:  Sebas?án  Villar  
Profesor:  Alejandro  Rozenfeld  
 
www.fio.unicen.edu.ar  à  planes  de  estudio  à  
Ciencia  de  la  Computacion…  
CIENCIA  DE  LA  COMPUTACION  

¿  Qué  es  un  Ordenador  ?  


 
!  Maquina  electrónica  diseñada  para  manipular  y  procesar  datos,  capaz  de  
desarrollar   complejas   operaciones   a   gran   velocidad   siguiendo   un  
programa  de  instrucciones.  
!   Todo   aparato   des:nado   a   procesar   información,   entendiendo   por  
proceso,  las  sucesivas  fases,  manipulaciones  o  transformaciones  que  sufre  
la   información   para   resolver   un   problema   determinado,   siguiendo   las  
instrucciones  de  un  programa.  
 
Entre  sus  caracterís?cas  podemos  citar:  
•  Son  programables.  
•  Versa:lidad.  Permiten  realizar  diversos  trabajos  
•  Interac:vidad.  Man:enen  diálogos  con  los  usuarios  y  actúan  en  función  de  sus  
ordenes  
•  Alta  Capacidad  de  almacenamiento.  
•  Rapidez.  
CIENCIA  DE  LA  COMPUTACION  

Elementos  de  un  Sistema  


de  Computación  
Elementos  de  un  Sistema  de  
Computación  
•  Hardware: Dispositivos físicos que
componen el ordenador: teclado,
pantalla, ratón, discos, memoria, CD-
ROM, unidades de procesamiento, etc.
•  Software: Conjunto de programas que
el ordenador puede ejecutar
•  Personas: Entretenimiento, medicina,
educación, empresas, etc.
•  Datos e información  
Tipos  de  Ordenadores  
•  Superordenadores
–  Son escasos debido a su elevado precio
–  Altas prestaciones para cálculos complejos
–  Los usan grandes organizaciones
–  Se aplican al estudio del espacio y la meterología
•  Macroordenadores (Mainframes)
–  Soportan cientos e incluso miles de usuarios
–  Los usan grandes organizaciones donde se necesita
acceder a datos y programas compartidos
–  Servidores de e-comercio para manejar
transacciones en Internet  
Tipos  de  Ordenadores  
•  Miniordenadores
–  Más pequeños con un mainframe aunque
más grandes que un ordenador personal
–  Con múltiples terminales
–  Servidores de redes de ordenadores e
Internet
•  Ordenadores Personales (PCs)
–  Ordenadores de sobremesa
–  Ordenadores portátiles
–  Ordenadores de bolsillo  
Hardware  del  Ordenador  
Hardware:  Disposi:vos  de  
Entrada  
Hardware:  Disposi:vos  
de  Salida  
Hardware:  Disposi:vos  de  
Almacenamiento  Externo  
•  Tienen más capacidad que la
memoria principal, aunque son más
lentos
•  La información permanece
indefinidamente hasta su borrado
•  Discos, cintas, discos ópticos (CD y
DVD), etc.  
Hardware:  Memoria  Principal  
•  Gran velocidad para escribir y leer de
ella
•  Un programa ejecutable debe estar
almacenado en ella
•  Está dividida en "palabras de
memoria". Cada palabra tiene asociada
una dirección
•  Esta compuesta de
–  ROM – sólo lectura y permanente
–  RAM – lectura/escritura y volátil  
Hardware:  La  "CPU"  
•  Unidad aritmético-lógica (ALU) :
–  Realiza operaciones de tipo aritmético y de tipo lógico
(+, -, /,*, <, >, >=, etc.). En esta unidad es donde se
hace todo el trabajo computacional
–  Contiene un reloj interno que marca el ritmo con el que
se ejecutan las instrucciones de los programas. Cuanto
más alta sea su frecuencia (que se mide en Megahertz,
Mhz), mayor será la velocidad de proceso del ordenador.
•  Unidad de control
–  controla le ejecución de los programas y el
funcionamiento general de todo el sistema:
•  Detecta señales de estado de las distintas unidades
•  Recupera y almacena datos de la memoria principal para que sean
procesados por la ALU
•  Genera señales de control dirigidas a todas las unidades.
SoYware  del  Ordenador  
Definición Informal: Es la parte lógica del
ordenador, el conjunto de instrucciones (programas)
que puede ejecutar el hardware para la realización
de las tareas de computación a las que se destina.

Definición Formal: la suma total de los programas


de cómputo, procedimientos, reglas [,]
documentación y datos asociados que forman parte
de las operaciones de un sistema de cómputo.
(Ver: IEEE Std 729-1993, IEEE Software Engineering Standard
729-1993: Glossary of Soft. Engineering Terminology. IEEE
Comp. Society Press, 1993)  
SoYware  del  Ordenador  
El  soYware  del  ordenador  se  puede  clasificar  
esencialmente  en  dos  :pos:  
El  Sistema  Opera:vo  
•  Gestiona los recursos del ordenador
•  Facilita el uso del ordenador:
–  Hace transparente al usuario las características de
los dispositivos
–  Proporciona una interface de usuario
•  Servicios importantes de un SO:
–  Sistema de ficheros
–  Entrada/salida con distintos dispositivos
–  Ejecución de programas
–  Medidas de seguridad
•  Durante el arranque se carga en memoria,
y permanece residente todo el tiempo  
SoYware  de  Aplicación  
Redes  de  Ordenadores  
Red de ordenadores: mecanismo físico que permite la
comunicación de dos o más ordenadores para
intercambiar datos y compartir recursos
Ventajas: Compartir recursos software y hardware, Alta
tolerancia a fallos, Ahorro económico, Medio de
comunicación
 
Redes  de  Ordenadores  
Redes de Ordenadores
Servicios de Internet  
•  Correo electrónico
(enviar/recibir mensajes de correo)
•  Acceso remoto
(Telnet – conectarse a otros ordenadores)
•  Transferencia de ficheros
(FTP - acceso a ficheros de datos)
•  Grupos de noticias (News - Usenet)
•  Internet Relay Chat
(IRC - discusiones entre usuarios en línea)
•  Videoconferencia
(Escucharse y verse en en tiempo real)
•  World Wide Web
(colección de documentos multimedia)  
Los ordenadores son "tontos"  
•  ! Ejecutan rápida y precisamente
operaciones lógicas y matemáticas
•  ! Cumplen obedientemente lo que

les decimos
(no siempre igual a lo que queremos!)
•  ! Errores pequeños pueden provocar
fallos graves  
Lenguajes  de  Programación  
Un lenguaje de programación es una
herramienta para producir software.
Se compone de un conjunto de
reglas, símbolos y signos que
permiten la comunicación con el
ordenador.  
Lenguajes  de  programación    
 
 Tipos:  
–  Lenguajes  de  bajo  nivel  
 Lenguaje  máquina    
 Lenguaje  ensamblador  
–  Lenguajes  de  alto  nivel  
 Lenguajes  impera:vos  o  procedurales  
 Lenguajes  declara:vos  
 Lenguajes  funcionales  o  de  programación  lógica.  
Lenguajes  de  programación    
 
 Evolución  histórica:  
–         -­‐52:  L.  Máquina  
– 49-­‐56:  Ensambladores  
– 54-­‐...:  Fortran  (56),  Algol  (58),  Cobol  (59),  Lisp  
(62),  Basic  (64),  C  (72),  Pascal  (73),  Modula-­‐2  
(79),  Ada  (80)...    
– 61-­‐...:  Entornos  de  programación,  Prolog(72),  
Smalltalk  (72),  C++  (85),  Haskell  (88),  Java...  
Lenguajes  de  programación    
 LENGUAJE  MÁQUINA:  
 Es  el  único  que  en:ende  directamente  la  
computadora.  
 Las  instrucciones  se  expresan  en  sistema  binario  
(cadenas  de  0’s  y  1’s)  u  octal  o  hexadecimal.  
 Los  datos  se  referencian  por  medio  de  las  
direcciones  de  memoria  donde  están.  
 Tiene  una  sintaxis  rígida.  
 Depende  de  la  CPU  del  ordenador.  
Lenguajes  de  programación    
 LENGUAJE  MÁQUINA:  
 Repertorio  de  instrucciones  reducido.  
 La  programación  en  este  lenguaje  es  tediosa  y  
complicada  
 No  admite  poner  comentarios  =>  Diqcil  
legibilidad.  
 Permite  u:lizar  la  totalidad  de  los  recursos.  
 Programas  muy  eficientes  en  :empo  de  
ejecución  y  en  ocupación  de  memoria.  
Lenguajes  de  programación    
 LENGUAJE  MÁQUINA:  
 Ejemplo:  
 0000  0  101  1101  :  Carga  el  acumulador  (0000)  
con  el  contenido  de  la  dirección  de  memoria  (101  
11012  =  9310)  
 1100  1  011  1011  :  Suma  (1100)  indirecta  (1)  del  
contenido  de  la  dirección  (011  10112  =  5910)  con  
el  acumulador.  
 
Lenguajes  de  programación    
 LENGUAJE  ENSAMBLADOR:  
 Es  más  cercano  al  lenguaje  humano.  
 Usa  notación  simbólica  o  nemotécnica  para  
representar  los  códigos  de  operación.  
 También  u:liza  nombres  para  referenciar  datos  
guardados  en  memoria.  
 Permite  el  uso  de  comentarios.    
 Cada  instrucción  en  ensamblador  se  
corresponde  con  una  en  lenguaje  máquina.  
5.2  Lenguajes  
Lenguajes  dde  e  pprogramación  
rogramación      
 LENGUAJE  ENSAMBLADOR:  
 La  traducción  es  realizada  por  un  programa  
traductor  llamado  ensamblador.  
 Posee  la  mayoría  de  los  inconvenientes  del  
lenguaje  maquina:  
 Baja  portabilidad.  
 Formato  de  instrucciones  rígido.  
 Repertorio  reducido.  
5.2  Lenguajes  
Lenguajes  dde  e  pprogramación  
rogramación    
 LENGUAJE  ENSAMBLADOR:  
 Ejemplo:  
 CAR  Numero  :  Carga  el  acumulador  (CAR)  con  el  
contenido  de  la  dirección  de  memoria  (Numero)  
 SUM  Coste  :  Suma  (SUM)  del  contenido  de  la  
dirección  de  memoria  (Coste)  con  el  acumulador.    
 
5.2  Lenguajes  
Lenguajes  dde  e  pprogramación  
rogramación      
 LENGUAJES  DE  ALTO  NIVEL:  
 CARACTERÍSTICAS:  
 Son  independientes  de  la  arquitectura  qsica  del  
computador  (transportables).  
 Una  instrucción  se  traduce  en  varias  
instrucciones  en  lenguaje  máquina  (potentes).    
 U:lizan  una  nomenclatura  cercana  a  la  usada  
por  las  personas  (fácil  de  aprender).    
 Facilita  la  escritura  y  lectura  de  programas  
(claros  y    legibles).  
5.2  Lenguajes  
Lenguajes  dde  e  pprogramación  
rogramación      
 LENGUAJES  DE  ALTO  NIVEL:  
 CARACTERÍSTICAS:  
 Las  instrucciones  se  expresan  por  medio  de  texto  
(inglés)  con  caracteres  alfanuméricos  y  
caracteres  especiales  (+,  -­‐,  *  ,  /  ,  =  ...).  
 Dispone  de  instrucciones  complejas,  para  todo  
:po  de  operaciones  aritmé:cas,  para  entrada/
salida  de  datos...  
 Hay  una  gran  can:dad  y  variedad  de  lenguajes  
de  alto  nivel.    
Java,  FORTRAN,  C,  C++,  PASCAL,  Matlab.  
5.2  Lenguajes  
Lenguajes  dde  e  pprogramación  
rogramación      
 LENGUAJES  DE  ALTO  NIVEL:  
 Ejemplo  (Matlab):  
 
func:on  cuadrado  
%  Este  programa  calcula  cuadrados  de  1  a  10:  
   for  i=1:10  
           disp([i  i^2])  
   end  
Lenguajes  de  Programación  
1. Tanto los lenguajes de alto nivel como los de bajo nivel, no
son entendibles directamente por la máquina.
2. Necesitan ser traducidos a instrucciones en lenguaje de
máquina
3. Es necesario disponer de un "traductor" o interfase con el
lenguaje de máquina para que el programa sea ejecutable.

Existen dos tipos fundamentales de traductores:


!Compiladores

!Interpretes  
Compiladores  
Software que traduce el programa
inicial (programa fuente) escrito en
un lenguaje de alto nivel, a un
programa (programa objeto) en
lenguaje de máquina factible de ser
ejecutado  
Intérpretes  
Analizan, traducen y ejecutan una a una las
instrucciones del programa fuente; no se
analiza una instrucción hasta que la
anterior se haya ejecutado.
Los intérpretes no generan programa objeto.  
Entornos  Integrados  de  Desarrollo  
Un "IDE" es un software que incorpora
todas las herramientas necesarias para
el desarrollo de nuestros programas

Por herramientas entendemos:


! Editor
! Compilador
! "Linker"
! Depuración
! Ejecución
En prácticas usaremos el Matlab  
Metodología  de  la  Programación  
La utilización de conceptos y técnicas adecuadas de
programación, es fundamental para obtener
programas que cumplan los siguientes requisitos:
•  ! Legibles: comprensibles por cualquier programador

•  ! Modificables: su estructura debe permitir


modificaciones
•  ! Depurables: debe ser fácil la localización y corrección
de errores

Y como elementos adicionales, se obtiene:


•  !Reducción de los costos de mantenimiento.
•  !Aumento de la productividad del programador.
•  !Los programas quedan mejor documentados
internamente.  
Metodología  de  la  Programación  
Si no seguimos un método de
programación riguroso:
•  ! Los programas son rígidos y difíciles de
adaptar a nuevos requerimientos
•  ! Los programadores gastan mucho tiempo
corrigiendo sus errores
•  ! La comunicación entre programadores es
muy difícil
•  ! Los programas y módulos son poco
reusables
•  ! Existen deficiencias en la documentación  
Resolución  de  un  problema  
mediante  una  computadora  
1.  Definición del problema
2.  Análisis del problema
3.  Diseño del algoritmo
4.  Prueba del algoritmo
5.  Codificación del algoritmo en un lenguaje
6.  Prueba y puesta a punto del programa
7.  Documentación del programa  
Resolución  de  problemas  
con  el  Ordenador  
Análisis  de  Requerimientos  
Esta fase consta de dos partes orientadas a
responder QUE es lo que hay que hacer:
1. Definición del Problema: identificar
claramente que es lo que se quiere
resolver
2. Análisis del problema: se basa en
identificar
! La fuente y los tipo de datos para las entradas
! Interacción de los datos y su transformación
! Destino y formato de salida
El análisis se realiza empleando el lenguaje
"natural"  
Etapa  de  Diseño  
En esta fase resolvemos el COMO se hace lo
especificado en el análisis de
requerimientos:
! "ideamos" un algoritmo
! utilizamos "pseudocódigo" para su descripción

! Aplicamos la técnica divide y vencerás: la

resolución de un problema complejo se realiza


diviendo el problema en subproblemas
! Aplicamos diseño descendente o modular

! El diseño del algoritmo es independiente del

lenguaje de programación en el que se vaya a


codificar posteriormente  
Implementación  y  Validación  

Implementación: se pasa del diseño obtenido en la etapa


anterior, a una descripción escrita en un lenguaje de
programación (un "dialecto" que pueda comprender el
ordenador). Esta descripción (programa) debe "compilarse"
y "ejecutarse" para pasar a la fase de validación.

Validación: es el proceso de identificar y eliminar errores


para poder responder a dos preguntas:
!Construimos el software correcto ? (contra el usuario)
!Lo construimos correctamente? (contra la especificación)  
Organización  de  los  programas    

 ALGORITMOS:  
 Conjunto  ordenado  de  pasos  a  seguir  para  
resolver  un  problema  concreto,  en  un  :empo  
finito  y  sin  ambigüedad.  
–  Acciones  bien  definidas  
–  Secuencia  finita  y  ordenada  
–  Tiempo  finito  
Analogía  con  el  arte  de  la  cocina  
Mi  Primer  Algoritmo  
•  Diseñar algoritmos para
•  ! Preparar una tortilla de patatas
•  ! Hacer una llamada telefónica

•  ! Preparar un cubata

•  ! Ordenar una lista de números

•  ! Buscar el alumno con nota más

alta  
Ejemplo  de  ALGORITMO  
 
  Determinar  si  un  número  es  par:  
 
1.  Leer  N  
2.  Si  N=2      Escribe:  “es  par”  
3.  Si  N=1      Escribe:  “es  impar”  
4.  Si  N=1  o  N=2  ir  a  7  
5.  N=N-­‐2  
6.  Ir  a  2  
7.  Fin  del  procedimiento  
Organización  
5.3   dde  e  los  
Organización   los  pprogramas  
rogramas      
  ALGORITMOS:  
 Caracterís:cas:  
–  Precisión  (no  debe  permi:r  dobles  interpretaciones)  
–  Repe::vidad    
 
(si  el  algoritmo  se  prueba  dos  veces,  en  estas  dos  pruebas,  se  debe  
obtener  el  mismo  resultado)
–  Finito  en  tamaño  y  :empo  de  ejecución  
–  Debe  ser  general,  es  decir,  soportar  la  mayoría  de  las  variantes  
de  entrada).
 Propiedad:  
 
que  se  puedan  presentar  en  la  definición  del  problema  (datos  

•  Es  independiente  del  lenguaje  de  programación  en  el  que  se  


implemente  y  de  la  computadora  en  la  que  se  ejecute.  
•  Cero  o  más  entradas  y  una  o  más  salidas.  
 
5.3   Organización  
Organización   dde  e  los  
los  pprogramas  
rogramas      
 ALGORITMOS:  
   
 Para  resolver  un  mismo  problema  se  pueden  
definir  varios  algoritmos.  
 Factores  para  decidir  que  algoritmo  usar:  
–  Tiempo  que  tarda  en  hallar  la  solución  
–  Recursos  u:lizados  para  implantar  el  algoritmo.  
Instrucciones  
•  Operaciones que ejecutara la computadora
al implementar el algoritmo. Estas
instrucciones utilizan datos en forma de
constantes y variables.

•  En todos los lenguajes hay un conjunto


mínimo de instrucciones que permite
especificar el control propio del algoritmo.  
5.3   Organización  
Organización   dde  e  los  
los  pprogramas  
rogramas      

  REPRESENTACIÓN  DE  ALGORITMOS:  


Tanto  en  la  fase  de  análisis  del  problema  como  en  el  diseño  del  
algoritmo,  se  plantea  la  necesidad  de  representar  
claramente  el  flujo  ordenado  de  operaciones  que  se  han  de  
ejecutar  para  su  resolución.  
  Existen  diferentes  métodos:  
–  Organigramas  o  diagramas  de  flujo  
–  Pseudocódigo  o  lenguaje  de  descripción  de  algoritmos  
 
representación  mas  u:lizada  por  su  sencillez  y  
parecido  al  lenguaje  humano  
 
5.3   Organización  
Organización   dde  e  los  
los  pprogramas  
rogramas      
 REPRESENTACIÓN  DE  ALGORITMOS:  
–  Organigramas  o  diagramas  de  flujo  
 Herramienta  gráfica  de  descripción  de  algoritmos  
fácil  y  extendida.  
 Los  símbolos  representan  acciones  
 Las  flechas  representan  el  orden  de  ejecución.  
5.3   Organización  
Organización   dde  e  los  
los  pprogramas  
rogramas      
 REPRESENTACIÓN  DE  ALGORITMOS:  
–  Organigramas  o  diagramas  de  flujo  
 Símbolos:  
 Asignación:  
 
M  =  3  
 
 Terminal:  
Inicio   Fin  
Diagrama  de  flujo  
Un diagrama de flujo siempre tiene un único
punto de inicio y un único punto de
término.
Además, todo camino de ejecución debe
permitir llegar desde el inicio hasta el
término.  
5.3   Organización  
Organización   dde  e  los  
los  pprogramas  
rogramas      
 REPRESENTACIÓN  DE  ALGORITMOS:  
–  Organigramas  o  diagramas  de  flujo  
 Símbolos:  
 Selección:  
          Si  
N<>0  
         
No  
 Entrada/Salida:  

Leer  Dato  
5.3   Organización  
Organización   dde  e  los  
los  pprogramas  
rogramas      
 Ejemplo:  Suma  de  un  numero  variable  de  datos:  
Inicio        
     
Suma = 0
 
 
Leer Dato  
 
 
Si  
Dato<>0         Suma = Suma + Dato
No                  
Escribir Suma

Fin  
5.3   Organización  
Organización   dde  e  los  
los  pprogramas  
rogramas      
 REPRESENTACIÓN  DE  ALGORITMOS:  
–  Pseudocódigo  o  lenguaje  de  descripción  de  
algoritmos:  
 Es  un  conjunto  pequeño  y  completo  de  
sentencias  mediante  las  cuales  podemos  expresar  
todas  las  instrucciones  básicas.  
 Reglas:  
 Cada  iden:ficador  (variable,  constante...)  debe  tener  
un  nombre  significa:vo  
 Cada  sentencia  debe  ir  en  una  línea  
 Los  nombres  de  las  sentencias  son  únicos.    
5.3   Organización  
Organización   dde  e  los  
los  pprogramas  
rogramas      
 REPRESENTACIÓN  DE  ALGORITMOS:  
–  Pseudocódigo    
 Ejemplo:  Suma  de  un  numero  variable  de  datos:  
     Suma  =  0  
     lee  (dato)  
     mientras  (dato  <>  0)  
               suma  =  suma  +  dato  
               lee  (dato)  
 fin  mientras  
     escribe  (‘La  suma  total  es  =  ‘,  Suma)  
5.3   Organización  
Organización   dde  e  los  
los  pprogramas  
rogramas      
 REPRESENTACIÓN  DE  ALGORITMOS:  
–  Pseudocódigo    
–  Ventajas  sobre  las  representaciones  gráficas  
•  Es  más  compacto  

•  Más  fácil  de  escribir    

•  Más  fácil  de  traducir  a  un  lenguaje  de  


programación  concreto.  

También podría gustarte