P. 1
fundamentos de informatica para ingenieria aeronautica

fundamentos de informatica para ingenieria aeronautica

|Views: 621|Likes:
Published by Pablo Martinez

More info:

Published by: Pablo Martinez on Oct 01, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/16/2013

pdf

text

original

Sections

  • 1.1 Inform´atica y computadoras
  • 2.1.1 Conversiones
  • 2.3 Codificaci´on de caracteres
  • 3.1 Esquema funcional
  • 3.2 La memoria
  • 3.2.2 Medidas de capacidad
  • 3.3 Clases de memoria
  • 3.3.1 Estructura matricial
  • 3.3.2 La unidad de memoria central
  • 3.4 La unidad aritm´etico-l´ogica
  • 3.5 La unidad de entrada y salida
  • 3.5.1 Perif´ericos
  • 3.6 La unidad de control
  • 3.6.1 Funcionamiento
  • 3.7 Ejecuci´on de instrucciones
  • 3.7.1 Transferencias entre registros
  • 3.7.2 La instrucci´on de salto
  • Lenguajes de programaci´on
  • 4.1 C´odigo de m´aquina
  • 4.1.1 C´odigo mnemot´ecnico
  • 4.2 Ensamblador
  • 4.3 Sistema de explotaci´on
  • 4.3.1 Estructura
  • 4.3.2 Funciones de los sistemas de explotaci´on
  • 4.4 Lenguajes de alto nivel
  • 4.5 Lenguajes interpretados
  • 4.6 El entorno MATLAB
  • Resoluci´on de problemas
  • 5.1 Algoritmos y pseudoc´odigo
  • 5.2 Objetos y operaciones
  • 5.2.1 Fases del proceso de resoluci´on de problemas
  • 5.3 Diagramas de flujo
  • 5.3.1 S´ımbolos
  • 5.4 Programaci´on estructurada
  • 5.4.1 Flujo lineal
  • 5.4.2 An´alisis descendente
  • Desarrollo de algoritmos b´asicos
  • 6.1 C´alculos en secuencia
  • 6.2 Bifurcaciones
  • 6.3 Bucles simples
  • 6.4 Bucles anidados
  • 6.5 Otros procesos iterativos
  • 6.5.1 Sucesiones y series
  • 6.5.2 Ordenaciones
  • 6.5.3 C´alculos
  • Programaci´on en MATLAB
  • 7.1 El entorno
  • 7.2 Variables
  • 7.2.1 Tipos
  • 7.2.2 Creaci´on y destrucci´on
  • 7.2.3 Asignaci´on
  • 7.3 Operaciones y funciones incorporadas
  • 7.3.1 Operaciones elementales
  • 7.3.2 Funciones incorporadas
  • 7.3.3 Vectores
  • 7.3.4 Matrices
  • 7.3.5 Cadenas de caracteres
  • 7.3.6 Funciones para el manejo de datos
  • 7.4 Codificaci´on de nuevos programas
  • 7.4.1 Legibilidad
  • 7.5 Funciones para trazado de gr´aficas
  • 7.6 Sentencias de control
  • 7.6.1 La bifurcaci´on
  • 7.6.2 El bucle ”mientras”
  • 7.6.3 La sentencia for
  • 7.7 Ejemplos de programaci´on I
  • 8.1 Concepto de funci´on
  • 8.2 Datos y resultados
  • 8.3 Variables locales y globales
  • 8.3.1 Clasificaci´on de las variables
  • 8.4 Fases de la ejecuci´on de una instrucci´on
  • Algunos problemas de ingenier´ıa
  • 9.1 Interpolaci´on con segmentos
  • 9.2 Ajuste por m´ınimos cuadrados
  • 9.3 C´alculo aproximado de ´areas
  • 9.4 Integraci´on num´erica de ecuaciones diferenciales
  • 9.4.1 Introducci´on
  • 9.4.2 El m´etodo de Euler
  • 9.5 Ecuaciones trascendentes
  • 9.5.1 M´etodo de la bisecci´on
  • 9.6 Superficies
  • 9.6.1 B´usqueda de extremos
  • 9.7 Tratamiento de textos
  • 9.7.1 Palabras en orden inverso
  • 9.7.2 Pal´ındromo
  • 9.7.3 Mensaje oculto
  • 9.7.4 Mensaje oculto II
  • 9.7.5 Descifrar mensaje
  • 9.7.6 Mensaje oculto II
  • 9.7.7 Pase a may´usculas
  • 9.8 Tratamiento de archivos
  • 9.8.1 Agenda telef´onica
  • 9.8.2 Agenda telef´onica II
  • 9.8.3 Agenda telef´onica III

Fundamentos de inform´ atica para Ingenier´ıa Aerona´ utica

Manuel Ruiz Arahal
Sevilla, octubre de 2003
2
Contenido
´
Indice 3
1 Introducci´ on y fundamentos 1
1.1 Inform´atica y computadoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Programas e instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Estructura funcional de la computadora digital . . . . . . . . . . . . . . . . . . . 3
2 Codificaci´ on binaria de la informaci´ on 5
2.1 Sistema binario de numeraci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Conversiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Codificaci´on de n´ umeros enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Codificaci´on de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 Otros tipos de informaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.1 N´ umeros fraccionarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.2 Formatos gr´aficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Estructura de la computadora digital 13
3.1 Esquema funcional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 La memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2.1 Caracter´ısticas de las memorias . . . . . . . . . . . . . . . . . . . . . . . . 14
3
4 CONTENIDO
3.2.2 Medidas de capacidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 Clases de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.1 Estructura matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.2 La unidad de memoria central . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4 La unidad aritm´etico-l´ogica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.5 La unidad de entrada y salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.5.1 Perif´ericos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.6 La unidad de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.6.1 Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.7 Ejecuci´on de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.7.1 Transferencias entre registros . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.7.2 La instrucci´on de salto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Lenguajes de programaci´ on 31
4.1 C´odigo de m´aquina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 C´odigo mnemot´ecnico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2 Ensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3 Sistema de explotaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3.1 Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.3.2 Funciones de los sistemas de explotaci´on . . . . . . . . . . . . . . . . . . . 36
4.4 Lenguajes de alto nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.5 Lenguajes interpretados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.6 El entorno MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5 Resoluci´ on de problemas 45
c M.R. Arahal 2003 DISA. ESI. US. 5
5.1 Algoritmos y pseudoc´odigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.2 Objetos y operaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.2.1 Fases del proceso de resoluci´on de problemas . . . . . . . . . . . . . . . . 49
5.3 Diagramas de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.3.1 S´ımbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.4 Programaci´on estructurada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.4.1 Flujo lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.4.2 An´alisis descendente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6 Desarrollo de algoritmos b´asicos 57
6.1 C´alculos en secuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.2 Bifurcaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.3 Bucles simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.4 Bucles anidados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.5 Otros procesos iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.5.1 Sucesiones y series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.5.2 Ordenaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.5.3 C´alculos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
7 Programaci´ on en MATLAB 65
7.1 El entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
7.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.2.1 Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.2.2 Creaci´on y destrucci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.2.3 Asignaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6 CONTENIDO
7.3 Operaciones y funciones incorporadas . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.1 Operaciones elementales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.2 Funciones incorporadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.3.3 Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.3.4 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.3.5 Cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7.3.6 Funciones para el manejo de datos . . . . . . . . . . . . . . . . . . . . . . 77
7.4 Codificaci´on de nuevos programas . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7.4.1 Legibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7.5 Funciones para trazado de gr´aficas . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7.6 Sentencias de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.6.1 La bifurcaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.6.2 El bucle ”mientras” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
7.6.3 La sentencia for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.7 Ejemplos de programaci´on I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8 Programaci´ on de funciones en MATLAB 89
8.1 Concepto de funci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.2 Datos y resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8.3 Variables locales y globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
8.3.1 Clasificaci´on de las variables . . . . . . . . . . . . . . . . . . . . . . . . . . 94
8.4 Fases de la ejecuci´on de una instrucci´on . . . . . . . . . . . . . . . . . . . . . . . 97
9 Algunos problemas de ingenier´ıa 99
9.1 Interpolaci´on con segmentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
c M.R. Arahal 2003 DISA. ESI. US. 7
9.2 Ajuste por m´ınimos cuadrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
9.3 C´alculo aproximado de ´areas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
9.4 Integraci´on num´erica de ecuaciones diferenciales . . . . . . . . . . . . . . . . . . . 104
9.4.1 Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
9.4.2 El m´etodo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
9.5 Ecuaciones trascendentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
9.5.1 M´etodo de la bisecci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
9.6 Superficies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
9.6.1 B´ usqueda de extremos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.7 Tratamiento de textos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9.7.1 Palabras en orden inverso . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9.7.2 Pal´ındromo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9.7.3 Mensaje oculto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
9.7.4 Mensaje oculto II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
9.7.5 Descifrar mensaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
9.7.6 Mensaje oculto II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
9.7.7 Pase a may´ usculas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
9.8 Tratamiento de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
9.8.1 Agenda telef´onica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
9.8.2 Agenda telef´onica II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
9.8.3 Agenda telef´onica III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Bibliograf´ıa 115
8 CONTENIDO
Tema 1
Introducci´ on y fundamentos
En este primer cap´ıtulo se definen los conceptos fundamentales del c´alculo y tratamiento au-
tom´aticos de la informaci´on.
´
Estas son las tareas que realizan las m´aquinas llamadas computa-
doras u ordenadores. Hoy en d´ıa los usos de la computadora son bien conocidos por la mayor´ıa
de las personas, por lo que algunos aspectos tratados pueden parecer triviales. Sin embargo, es
conveniente definir y delimitar los t´erminos que se manejar´an en este texto para evitar confu-
siones. Junto con tales definiciones se presenta ahora el modelo de computadora que detallar´a
en el tema 3.
1.1 Inform´atica y computadoras
La inform´ atica trata de la adquisici´on, representaci´on, tratamiento y transmisi´on de la in-
formaci´on. El t´ermino procede de la uni´on de dos palabras: informaci´on y autom´atica. La
informaci´on aludida puede ser de muy diversos tipos: n´ umeros, texto, sonido, etc. por lo que el
campo de utilizaci´on de la inform´atica es muy amplio como es sabido.
Las m´aquinas que permiten realizar autom´aticamente las operaciones citadas se denominan
computadoras y tambi´en ordenadores. Se puede definir la computadora como un elemento
capaz de aceptar informaci´on, procesarla y proporcionar cierta informaci´on resultante. La infor-
maci´on ha de ser suministrada de forma adecuada para su tratamiento por parte de la m´aquina.
El tratamiento ha de realizarse de forma autom´atica; esto es, con poca o ninguna inter-
venci´on humana y bajo el control de una lista de tareas previamente definida como se representa
gr´aficamente en la figura 1.1.
Es conveniente observar que la definici´on dada no explicita la forma de los datos ni tampoco
la clase de tratamiento que han de sufrir para proporcionar los resultados. Veremos que la
computadora digital es un dispositivo que cumple con la definici´on dada, pero no es el ´ unico.
Muchos de los conceptos que se vierten aqu´ı se pueden aplicar a otros dispositivos, sin embargo
el objetivo de este libro es la computadora digital.
A fin de ilustrar las interacciones representadas en la 1.1 consid´erese una calculadora. Los
1
2 TEMA 1. INTRODUCCI
´
ON Y FUNDAMENTOS
Figura 1.1: La computadora trata la informaci´on de entrada (datos) para producir resultados.
datos proporcionados por el operador son n´ umeros y operaciones a realizar que la calculadora
recibe al ser presionadas ciertas teclas. Los resultados son n´ umeros que aparecen en el visor.
Los datos se convierten en resultados mediante procesos de c´alculo en los que el operador ha
intervenido poco (comparado con realizar los c´alculos a mano). Veremos m´as adelante que es
posible automatizar m´as a´ un la tarea del c´alculo, de forma que el operador ahorre esfuerzo.
Como es sabido, el c´alculo num´erico no es la ´ unica aplicaci´on de las computadoras. Los
programas para la redacci´on de texto, los programas de dibujo art´ıstico o lineal, los juegos de
acci´on, las bases de datos, etc. son otros ejemplos de tareas que se realizan con computadoras.
En la actualidad la tecnolog´ıa electr´onica digital domina el tratamiento autom´atico de la
informaci´on, pero esto no ha sido siempre as´ı. De hecho, las primeras m´aquinas de calcular
eran mec´anicas. Tambi´en ha habido computadoras neum´aticas y en la actualidad se investiga
en posibles usos de la luz para construir ordenadores ´opticos.
Los conceptos que se definir´an a continuaci´on son de aplicaci´on en todos los ejemplos men-
cionados anteriormente, verific´andose el diagrama de la figura 1.1, el cual tiene por tanto una
validez muy amplia.
1.1.1 Programas e instrucciones
La computadora realiza una lista de tareas llamada programa, la cual est´a formada por in-
strucciones. Una instrucci´on es un conjunto de s´ımbolos que representan una orden de op-
eraci´on o tratamiento de los datos. Por tanto, el programa es un conjunto ordenado de instruc-
ciones que se dan a la computadora de forma que se obtengan los resultados a partir de los
datos.
Es conveniente comprender que un programa es una secuencia de instrucciones en un campo
mucho m´as amplio que el que se considerar´a en este libro. Para aclarar estos conceptos con-
sid´erese el problema de realizar una serie de operaciones en una calculadora de bolsillo, por
ejemplo obtener
x
3
+2
6
. Para resolverlo basta con pulsar una cierta secuencia de teclas. Esto
puede ser bastante tedioso si se ha de aplicar la misma f´ormula una y otra vez con datos dis-
c M.R. Arahal 2003 DISA. ESI. US. 3
tintos, es decir, para distintos valores de x. Si la calculadora pudiera pulsar sus propias teclas
bastar´ıa con proporcionar ´ unicamente el valor de x. En tal caso el trabajo del operador se ve
reducido a:
1. Proporcionar una lista con las pulsaciones de teclas: x
y
, 3 , + , 2 , / , 6 , =
2. Introducir cada valor de x y activar la secuencia anterior.
N´otese que el paso 1 s´olo se ha de realizar una vez, por lo que el operador ahorra mucho
tiempo y esfuerzo. Esto es, en esencia, lo que realiza una computadora. La lista de teclas a
pulsar hace, en el ejemplo, las veces de programa. Este programa es proporcionado una vez y
puede ser usado en varias ocasiones.
En este ejemplo sencillo vemos que hay dos tipos de acciones que se realizan con la computa-
dora. El primer tipo viene ilustrado por el paso 1 y consiste en proporcionar las instrucciones que
forman el programa. Esta operaci´on recibe el nombre de programaci´on. Programar la m´aquina
es por tanto proporcionar el programa o lista ordenada de instrucciones que resuelve una tarea o
problema. Una vez programada, la computadora puede ser usada para obtener resultados a par-
tir de datos. A esta tarea se le llama simplemente uso del programa. El mismo programa puede
usarse repetidas veces con datos distintos, ahorrando tiempo al operador, pues son muchas las
instrucciones que pueden realizarse de forma autom´atica con s´olo poner en marcha el programa.
Figura 1.2: Una calculadora programable permite realizar c´alculos con menor intervenci´on hu-
mana.
Las computadoras son m´aquinas vers´atiles gracias a que es posible cambiar el programa.
Continuando con el ejemplo, si se precisa calcular otra funci´on como 5+x
2
3
para distintos valores
de x basta con cambiar la secuencia de teclas. La misma m´aquina realiza ahora operaciones
diferentes al activar el programa.
1.2 Estructura funcional de la computadora digital
El esquema de computadora presentado en la figura 1.1 no indica las partes de que consta. Una
descripci´on m´as detallada mostrar´ıa los m´odulos que realizan tareas concretas. En la historia
de las computadoras se han utilizado diversas estructuras funcionales, pero en la actualidad la
4 TEMA 1. INTRODUCCI
´
ON Y FUNDAMENTOS
UAL
principal
Unidad de control
u
n
i
d
a
d

d
e

e
n
t
r
a
d
a
/
s
a
l
i
d
a
Periféfico 1
Periférico n
Memoria
información
señales
de control
Figura 1.3: Esquema de Von Neumann para la computadora digital.
m´as usada deriva del modelo ideado en 1945 por J. Von Neumann, que consta de las siguientes
partes:
• Memoria principal. Tiene como misi´on almacenar informaci´on. Consiste en un conjunto
de c´elulas cada una de las cuales es capaz de almacenar una unidad de informaci´on binaria;
esto es, un cero o un uno. Las c´elulas se asocian en bloques para representar informaciones
diversas, como son datos con los que operar, resultados producidos y tambi´en las instruc-
ciones que forman el programa.
• Unidad aritm´etico-l´ ogica. Este m´odulo incluye un conjunto de circuitos capaces de re-
alizar operaciones aritm´eticas (suma, resta, etc.) y l´ogicas (suma l´ogica, negaci´on, etc.).
La unidad aritm´etico-l´ogica (UAL) realiza las operaciones citadas bajo el control de la
unidad de control.
• Unidad de control. Este ´organo es el responsable de ordenar a la UAL que realice opera-
ciones con datos tomados de la memoria, de acuerdo con las instrucciones del programa,
las cuales est´an tambi´en en la memoria. La armonizaci´on del trasvase de informaci´on entre
los distintos m´odulos tambi´en corre a cargo de la unidad de control (UC), por lo que ´esta
puede considerarse como el director del sistema.
• Unidad de entrada y salida. Permite obtener o mandar datos del/al exterior. Las v´ıas
de comunicaci´on con el mundo externo son los perif´ ericos, que es el nombre gen´erico
dado a dispositivos como: el teclado, el monitor, la impresora, el disco, etc.
El diagrama de la computadora digital de acuerdo con esta estructura se puede ver en la
figura 1.3. Hay que resaltar, que la comunicaci´on entre bloques es de dos tipos: datos y se˜ nales
de control. Dentro de los datos se incluye todo tipo de informaci´on adecuadamente representada
incluyendo la informaci´on proporcionada (datos en sentido habitual), la informaci´on procesada
(los resultados) y otros.
Las se˜ nales de control son ´ordenes que la UC manda a los distintos elementos para que se
realicen las operaciones. La UC y la UAL forman la unidad central de proceso (UCP), que es
el responsable de la ejecuci´on del programa. La memoria tiene un papel pasivo proporcionando
los datos e instrucciones cuando son solicitados por la UCP.
Tema 2
Codificaci´ on binaria de la
informaci´ on
Se ha indicado en el tema introductorio que las computadoras digitales s´olo manejan informaci´on
en forma de ceros y unos. Sin embargo estamos acostumbrados a ver que las computadoras
permiten utilizar informaci´on de muchos tipos: texto, gr´aficos, sonidos. Para poder representar
la informaci´on con ceros y unos es necesario usar un c´odigo.
Los dispositivos electr´onicos usados para construir las computadoras digitales se dise˜ nan
para trabajar en torno a dos valores de tensi´on uno de ellos se asocia con el estado 1 y el otro
con el 0. Estos circuitos son capaces de cobijar los valores cero y uno por lo que constituyen
celdas de memoria que almacenan estos valores binarios. En este tema se muestra en qu´e forma
es posible representar informaci´on diversa usando ´ unicamente los valores cero y uno.
2.1 Sistema binario de numeraci´ on
Los n´ umeros se pueden expresar en distintos sistemas de numeraci´on. Como es sabido, el m´as
usual es el sistema en base 10. En este sistema, llamado decimal, se interpretan las cifras como
coeficientes de un polinomio en potencias de 10:
N |
10
= d
n
· 10
n
+· · · +d
1
· 10
1
+d
0
· 10
0
donde los d´ıgitos d
n
a d
0
constituyen el n´ umero en base 10. Para aclarar ideas consid´erese el
n´ umero 1492. En base 10 se interpreta como: un millar m´as cuatro centenas m´as nueve decenas
m´as dos unidades, o lo que es lo mismo:
1492 = 1 · 10
3
+ 4 · 10
2
+ 9 · 10
1
+ 2 · 10
0
Los d´ıgitos o coeficientes del polinomio son las cifras 1, 4, 9 y 2. En el sistema decimal se
trabaja con cifras del 0 al 9. En el sistema binario la base es el 2, por lo que s´olo existen dos
5
6 TEMA 2. CODIFICACI
´
ON BINARIA DE LA INFORMACI
´
ON
posibles coeficientes: el cero y el uno. La interpretaci´on de un n´ umero escrito en base dos es la
misma que en decimal, pero cambiando la base:
N |
2
= b
n
· 2
n
+· · · +b
1
· 2
1
+b
0
· 2
0
(2.1)
as´ı el n´ umero 01001 en base dos (indicado frecuentemente como 01001 |
2)
) se interpreta como la
cantidad
0 · 2
4
+ 1 · 2
3
+ 0 · 2
2
+ 0 · 2
1
+ 1 · 2
0
= 9 |
10
Obs´ervese que se ha indicado la base utilizada mediante un sub´ındice. Habitualmente se
trabaja en base 10, por lo que se omite dicho sub´ındice. A los coeficientes d
i
de la representaci´on
digital se les llama d´ıgitos, a los de la binaria b
i
se les llama bits
1
.
Los sistemas decimal y binario son s´olo dos ejemplos de una infinidad de posibles sistemas con
base b . En general, el Teorema Fundamental de la Numeraci´on proporciona el valor decimal de
una cantidad expresada en base b por ciertas cifras. Sean los d´ıgitos g
p
g
p−1
· · · g
0
.g
−1
· · · g
−n
,
donde el punto separa la parte entera de la fraccionaria (en la base en cuesti´on), entonces el
valor decimal es
N |
b
=
i=p

i=−n
g
i
· b
i
Otros sistemas de representaci´on num´erica muy usados en inform´atica son el octal, cuya base
es 8 y por tanto usa las las cifras del 0 al 7 y el hexadecimal, de base 16. Este ´ ultimo sistema
plantea un problema a la hora de escribir n´ umeros y es que son necesarios 16 d´ıgitos distintos.
En el sistema decimal s´olo hay diez d´ıgitos: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Para obtener los restantes
seis d´ıgitos se utilizan las letras A, B, C, D, E y F para representar los valores 10, 11, 12, 13, 14
y 15 respectivamente.
2.1.1 Conversiones
Las conversiones permiten obtener las cifras correspondientes a una misma cantidad en distintas
bases. En inform´atica la conversi´on m´as usada es la de decimal a binario y viceversa, por ello
se van a describir con detalle.
Al realizar una conversi´on hay que tener en cuenta que la cantidad representada no cambia,
lo que se modifica es la forma en que se simboliza dicha cantidad.
Dado un n´ umero en base dos, es f´acil hallar su equivalente decimal sin m´as que aplicar la
relaci´on (2.1). Es decir, realizando la suma de potencias de dos. Por ejemplo el n´ umero 1 |
2)
equivale a 1 · 2
0
que es el uno en base 10, por tanto 1 |
2)
= 1 |
10)
. Del mismo modo se obtiene
que 101 |
2)
= 1 · 2
2
+ 0 · 2
1
+ 1 · 2
0
= 5 |
10)
.
El paso contrario, es decir, el paso de de decimal a binario, es m´as elaborado. Una posibilidad
es dividir sucesivamente el n´ umero por dos. Los restos de las divisiones dan el n´ umero en
binario, le´ıdos en sentido ascendente, tal como se muestra en la figura 2.1 donde se obtiene la
representaci´on en base dos del n´ umero 214 |
10)
.
1
del ingl´es binary digit
c M.R. Arahal 2003 DISA. ESI. US. 7
2
2
2
2
2
2
2
11010110
1
2
214
107
53
26
13
6
3 0
1
0
1
1
0
1 1
0
Figura 2.1: M´etodo de la divisi´on larga para la conversi´on de base 10 a base 2.
Resulta interesante conocer las potencias de dos de ciertos n´ umeros para as´ı realizar conver-
siones de forma r´apida sin usar la regla de la divisi´on.
potencia decimal binario
2
0
1 1
2
1
2 10
2
2
4 100
2
3
8 1000
2
4
16 10000
2
5
32 100000
2
6
64 1000000
2
7
128 10000000
2
8
256 100000000
2
9
512 1000000000
2
10
1024 10000000000
Ciertas conversiones resultan c´omodas de este modo. Por ejemplo, para pasar a binario el
n´ umero decimal 18 basta con observar que 18 |
10)
= 16+2 y por tanto igual a 2
4
+2
1
, por lo que
la representaci´on en base dos resulta 10000 |
2)
+10 |
2)
= 10010 |
2)
; es decir, 18 |
10)
= 10010 |
2)
.
2.2 Codificaci´ on de n´ umeros enteros
La memoria de una computadora est´a formada por muchas c´elulas elementales agrupadas en
registros. Cada celda s´olo pueden representar los n´ umeros 0 ´o 1, pero al considerar un grupo de
ellas (el registro) se pueden codificar n´ umeros mayores como veremos.
Para representar un n´ umero entero positivo mediante un conjunto de bits se puede usar la
codificaci´on del n´ umero en base 2. De este modo, si se dispone de registros de 16 celdas es
posible almacenar los n´ umeros entre el 0 y el 2
16
− 1 = 65535. Si el n´ umero de celdas es mayor,
digamos 20, es posible ampliar el rango representable desde cero hasta 2
20
− 1 = 1048575.
La computadoras digitales utilizan registros de una anchura determinada, por lo que existen
l´ımites a los n´ umeros que es posible representar. Este hecho caracter´ıstico de los sistemas
digitales no sorprender´a a quien haya utilizado una calculadora.
La representaci´on mostrada que utiliza la base dos es f´acil de entender y de usar, por lo que
es largamente utilizada. Ahora bien, ¿y los n´ umeros negativos?. El signo menos tendr´ıa que
8 TEMA 2. CODIFICACI
´
ON BINARIA DE LA INFORMACI
´
ON
poder expresarse como un cero o un uno. La idea m´as simple es usar el bit m´as a la izquierda
del registro para indicar el signo del n´ umero.
´
Esta y otras posibles representaciones se explican
a continuaci´on.
1. Modo signo-valor absoluto. Se reserva un bit de la palabra (normalmente el izquierdo)
para el signo. Los n´ umeros positivos tienen un valor 0 para este bit y los negativos un
valor 1. Este sistema queda descrito de forma gr´afica del siguiente modo:
.¸¸.
s
. . .
. ¸¸ .
va
donde s simboliza el bit de signo, y va la representaci´on en base dos del valor absoluto.
De este modo, con un registro de 16 unidades se pueden representar los n´ umeros del -
32767 hasta el 32767. En general, para un n´ umero de bits en la palabra igual a n se
pueden representar los enteros comprendidos en el rango
_
−(2
n−1
−1), 2
n−1
−1
¸
.
Como ejemplo consid´erense los n´ umeros 5 y −4 codificados en un registro de 8 bits:
5 = 00000101, −4 = 10000100
El n´ umero de celdas n del registro afecta a la representaci´on de los negativos, pues el bit
de signo debe quedar a la izquierda. A modo de ejemplo v´ease la representaci´on de los
n´ umeros 5 y −4 codificados en un registro de 6 bits
5 = 000101, −4 = 100100
Es indispensable conocer n para saber d´onde est´a el signo.
Otra caracter´ıstica de este sistema es que tiene dos ceros: el positivo (0 00 . . . 0) y el
negativo (1 00 . . . 0).
2. Complemento a 1. Nuevamente se reserva el primer bit para el signo. El resto de la
codificaci´on es: el n´ umero en base dos si el signo es positivo o el complemento bit a bit
del valor absoluto si es negativo. Es decir, los n´ umeros positivos se representan igual que
en el sistema anterior, mientras que, los negativos sufren el cambio de los unos por ceros
y los ceros por unos (excepto el bit de signo).
El ejemplo anterior en se expresa en complemento a uno con ocho bits del siguiente modo:
5 = 00000101, −4 = 11111011
Utilizando seis bits resulta:
5 = 000101, −4 = 111011
Este sistema tambi´en tiene dos ceros: el positivo (00 . . . 0) y el negativo (11 . . . 1). Para
un n´ umero de bits en la palabra igual a n se pueden representar los enteros comprendidos
en el rango
_
−(2
n−1
−1), 2
n−1
−1
¸
.
3. Complemento a 2. Los dos sistemas anteriormente vistos presentan dificultades a la
hora de realizar sumas y restas mediante circuitos l´ogicos, por lo que se ha buscado otro
m´etodo. El complemento a dos de un n´ umero es igual al complemento a uno m´as uno;
es decir, los n´ umeros positivos se representan igual que en el sistema signo-valor absoluto,
pero los n´ umeros negativos se codifican con el bit de signo igual a uno y el resto como 1
m´as el complemento bit a bit del valor absoluto en base dos. Los n´ umeros negativos se
representan pues igual que en complemento a 1 sum´andoles 1.
El ejemplo habitual con ocho bits queda:
5 = 00000101, −4 = 11111100
c M.R. Arahal 2003 DISA. ESI. US. 9
Utilizando seis bits resulta:
5 = 000101, −4 = 111100
Los n´ umeros que se pueden representar usando un registro de n c´elulas son los enteros
comprendidos en el rango:
_
−2
n−1
, 2
n−1
−1
¸
. Se observa que en el lado de los negativos
hay un n´ umero m´as. Esto es consecuencia de que s´olo existe un cero: (00 . . . 0) que usa el
espacio de un n´ umero positivo. El n´ umero −2
n−1
tiene siempre la representaci´on especial
10 · · · 0 que corresponde al cero negativo en los m´etodos anteriores.
2.3 Codificaci´ on de caracteres
Muchas veces la informaci´on que la computadora ha de procesar no son n´ umeros sino caracteres
textuales tales como:
• Letras may´ usculas y min´ usculas.
• D´ıgitos. Para escribir las cifras de un tel´efono, o la hora, o n´ umeros.
• Signos: ? ( ) , { } ♥ [ ] + $ . . .
• C´odigos sin representaci´on gr´afica, pero con funciones de control, por ejemplo el retorno
de carro de la impresora, el aviso sonoro, los c´odigos de mensaje recibido, fin de mensaje,
fin de fichero, etc. que se transmiten entre dispositivos.
Para transmitir y almacenar informaci´on de este tipo se cre´o el ASCII (American Standard
Code for Information Interchange), que es un c´odigo que asigna arbitrariamente un n´ umero
entero a cada signo. Los n´ umeros son luego representados en base dos para poder ser tratados
por la computadora.
El ASCII usa 7 bits, por lo que se pueden representar 2
7
= 128 signos distintos.
´
Estos
incluyen n´ umeros, el alfabeto ingl´es en may´ usculas y min´ usculas, signos matem´aticos y de pun-
tuaci´on y algunos caracteres de control. Una versi´on posterior de este c´odigo es el ASCII
extendido, que usa 8 bits, por lo que se pueden representar 256 signos. Esto pemite incluir la
letra ˜ n y otras de diversos alfabetos.
El conjunto de signos incluidos en el c´odigo recibe el nombre de tabla ascii. En la tabla
2.1 se muestran los c´odigos ascii correspondientes a algunos caracteres. Obs´ervese que las letras
van en orden alfab´etico a excepci´on de la letra ˜ n. Las may´ usculas est´an colocadas en la tabla
antes que las min´ usculas. Tambi´en es de inter´es observar que existen c´odigos sin representaci´on
gr´afica, que se han marcado como cc pues son c´odigos de control.
Los caracteres de control son combinaciones de ocho d´ıgitos binarios, al igual que el resto
de la tabla ASCII. Lo que los hace en cierto modo especiales es el modo en que los perif´ericos
los usan. Al contrario que las letras y signos que aparecen por la pantalla o la impresora, los
c´odigos de control realizan cierta funci´on sobre el dispositivo. La tabla 2.2 resume algunas de las
funciones m´as usadas. La primera columna indica el n´ umero dentro de la tabla ascii, la segunda
es un nombre abreviado de la funci´on que realiza, la cual se explica en la tercera columna.
10 TEMA 2. CODIFICACI
´
ON BINARIA DE LA INFORMACI
´
ON
Nro. Signo
0 cc
1 cc
2 cc
3 cc
.
.
.
.
.
.
46 .
47 /
Nro. Signo
48 0
49 1
50 2
51 3
.
.
.
.
.
.
57 9
58 :
Nro. Signo
63 ?
64 @
65 A
66 B
67 C
.
.
.
.
.
.
90 Z
Nro. Signo
.
.
.
.
.
.
97 a
98 b
99 c
100 d
101 e
102 f
Nro. Signo
.
.
.
.
.
.
161 ´ı
162 ´ o
163 ´ u
164 ˜ n
165 ˜ n
166
a
Tabla 2.1: Fragmentos de la tabla ascii.
Transmisiones Pantalla o impresora
1 SOH comienzo de cabecera 7 BEL se˜ nal audible
2 STX comienzo de texto 8 BS retroceso
3 ETX fin de texto 9 HT tabulaci´on horizontal
4 EOT fin de la transmisi´on 10 LF avance de l´ınea
5 ENQ petici´on de transmisi´on 11 VT tabulaci´on vertical
6 ACK reconicimiento de transmisi´on 13 CR retorno de carro
Tabla 2.2: Algunos c´odigos de control.
2.4 Otros tipos de informaci´ on
2.4.1 N´ umeros fraccionarios
Los n´ umeros con decimales tambi´en se pueden expresar en binario, usando para ello potencias
negativas de dos. Por ejemplo, el n´ umero 101.11 |
2
representa la cantidad 1 · 2
2
+0 · 2
1
+1 · 2
0
+
1 · 2
−1
+ 1 · 2
−2
= 4 + 1 + 0.5 + 0.25 = 5.75 |
10
.
En las computadoras digitales se plantea el problema de representar el punto decimal y de
interpretarlo. A continuaci´on se describen dos posibles soluciones
1. Punto fijo. Se reservan algunos bits del registro para la parte entera del n´ umero en
binario y otros para la fraccionaria; es decir, a partir de una posici´on predeterminada, los
coeficientes multiplican potencias negativas de dos. Este sistema queda descrito de forma
gr´afica del siguiente modo:
2
p
2
1
2
0
2
−1
2
−2
2
−q
· · · . · · ·
donde se han reservado p + 1 celdas para la parte entera y q para la fraccionaria. No se
ha tenido en cuenta el problema del signo.
Consid´erese a modo de ejemplo que se tiene un registro de ocho celdas, y el punto decimal
se fija antes de los dos ´ ultimos bits, entonces el n´ umero 000001.10 |
2
se interpreta como:
1 · 2
0
+ 1 · 2
−1
= 1.5 |
10
c M.R. Arahal 2003 DISA. ESI. US. 11
y el n´ umero 000010.01 |
2
como 2.25 |
10
.
Los circuitos de la UAL se construyen de forma que cada parte del registro es tratada
correctamente de acuerdo a la posici´on del punto decimal que es fija. Las operaciones se
realizan adecuadamente en cada parte del registro.
El problema de esta t´ecnica es que hay que fijar el punto decimal en un sitio concreto, por
lo cual no se puede trabajar con n´ umeros muy dispares (por ejemplo 25000.0 y 0.00052) a
menos que se disponga de un n´ umero de bits muy alto. Debido a esto, este sistema se usa
poco en la actualidad.
2. Punto flotante.
El n´ umero (N) a representar se transforma en dos (M, E) de forma que N = M · 2
E
. La
primera cantidad, M es llamada mantisa, la segunda E el exponente. Puesto que existen
muchas combinaciones de M y E que cumplen N = M · 2
E
se eligen adecuadamente
de acuerdo con alguna regla. Las m´as comunes exigen que 0.5 ≤| M |< 1, por lo que
representaci´on binaria de | M | comienza por 0.1. De este modo queda fijado M y por
tanto N.
Para aclarar el m´etodo es mejor pensar en la representaci´on decimal. Un n´ umero con
decimales tal y como 340.126 puede expresarse como 3.40126 · 10
2
o como 0.0340126 · 10
4
o como 0.340126 · 10
3
.
Se denomina ajuste fraccionario o normalizaci´ on al proceso de selecci´on de la man-
tisa y el exponente de forma que cumpla con las especificaciones. Despu´es de la normal-
izaci´on cada n´ umero M y N se codifica en un trozo de registro.
Queda por resolver el problema de representar el signo tanto de la mantisa como del
exponente. Para ello basta con utilizar alguno de los m´etodos vistos, como el signo-valor
absoluto o el exceso a 2
n−1
.
Existen varios formatos de punto flotante con sus reglas espec´ıficas como IEEE 754. No se
va a describir con detalle ninguno de estos formatos, baste saber que todos ellos son muy
similares al caso comentado, que puede mostrarse de forma gr´afica como:
s . . . .
. ¸¸ .
mantisa
s . . .
. ¸¸ .
exponente
Dado un n´ umero n de celdas el punto flotante permite representar la misma cantidad de
valores que el punto fijo pues las posibles combinaciones con n son las mismas. Ahora bien,
el rango de valores representables es mayor en punto flotante, pues el exponente permite
alcanzar n´ umeros muy altos si es positivo o muy cercanos a cero si es negativo. Esta es la
gran ventaja del punto flotante frente al fijo y la raz´on de su uso.
2.4.2 Formatos gr´aficos
Las im´agenes pueden representarse mediante conjunto de puntos con un color o tonalidad de gris
dado. Esta es la idea usada por formatos gr´aficos denominados matrices de puntos (llamados
en ingl´es formatos raster y bitmapped). En la figura 2.2 se representa una silueta en blanco y
negro descrita mediante una matriz de unos y ceros. El cero indica un punto luminoso y el uno
un punto oscuro. Resulta imaginable que teniendo una matriz con muchos elementos se pueden
conseguir im´agenes de gran calidad.
12 TEMA 2. CODIFICACI
´
ON BINARIA DE LA INFORMACI
´
ON
Figura 2.2: Descripci´on de una imagen (izquierda) usando una matriz de valores binarios
(derecha).
7.500 slw
% Ellipse
n 900 1050 525 300 0 360 DrawEllipse gs col-1 s gr
% Polyline
n 615 270 m 2100 1200 l gs col-1 s gr
Figura 2.3: Descripci´on de una imagen (izquierda) en forma vectorial mediante PostScript.
Las im´agenes resultantes son en blanco puro y negro puro, como siluetas. Para conseguir
grises se puede definir la misma matriz conteniendo n´ umeros del 0 al 255, de forma que a cada
nivel de gris le corresponde un n´ umero, siendo 0 el negro y 255 el blanco. Cada elemento de la
matriz ahora no es un bit, sino un car´acter (8 bits). Para obtener el color se puede realizar la
misma operaci´on 3 veces, una para cada color rojo, verde y azul.
Este formato precisa mucha memoria, por ejemplo, para almacenar una imagen en color
de 200 × 200 puntos con ocho bits para cada color se necesitan 200 × 200 × 3 × 256 bits, que
aproximadamente son 3.7 Mc.
Un m´etodo alternativo consiste en describir la imagen mediante ecuaciones correspondientes
a l´ıneas, superficies, etc, de forma que la uni´on de las partes produzca (aproximadamente) la
imagen total. Se habla entonces de gr´ aficos vectoriales. La codificaci´on de la imagen se
reduce a la de las ecuaciones de las partes. Estas ecuaciones pueden representarse de muchas
formas. Por ejemplo un segmento queda perfectamente definido por las coordenadas de sus
puntos extremos, una circunferencia por las de su centro y un punto de la misma, etc.
A modo de ejemplo consid´erese el dibujo de la figura 2.3 consistente en un segmento y una
elipse. Utilizando el formato PostScript estos elementos quedan definidos en la forma en que se
muestra a la derecha.
Los gr´aficos vectoriales son adecuados para dibujos formados por elementos geom´etricos
simples. Ambos m´etodos (matrices de puntos y gr´aficos vectoriales) se combinan en los formatos
denominados meta archivos (metafiles), usados por muchos programas para poder incluir objetos
formados por l´ıneas precisas, como planos y esquemas, junto a otros que quedan mejor descritos
mediante una matriz de puntos como fotograf´ıas.
Tema 3
Estructura de la computadora digital
3.1 Esquema funcional
Como se avanz´o en el tema 1, la computadora digital est´a formada por varias unidades con tareas
claramente diferenciadas. Recordemos ahora el diagrama de bloques que puede verse en figura
3.1. Hay que resaltar, que la comunicaci´on entre bloques es de dos tipos: informaci´on (datos) y
se˜ nales de control. Dentro de los datos se incluye todo tipo de informaci´on adecuadamente rep-
resentada incluyendo la informaci´on proporcionada (datos en sentido habitual), la informaci´on
procesada (los resultados) y otros (direcciones de memoria, estados, etc).
Las se˜ nales de control son ´ordenes que la UC manda a los distintos elementos para que se
realicen las operaciones. La UC y la UAL forman la unidad central de proceso (UCP), que es
el responsable de la ejecuci´on del programa. La memoria tiene un papel pasivo proporcionando
los datos e instrucciones cuando son solicitados por la UCP.
En este tema se va a profundizar en el estudio de las distintas partes funcionales de la com-
putadora, comenzando por la memoria y terminando con la unidad de control. Posteriormente
se explicar´a en qu´e forma funciona el conjunto.
UAL
principal
Unidad de control
u
n
i
d
a
d

d
e

e
n
t
r
a
d
a
/
s
a
l
i
d
a
Periféfico 1
Periférico n
Memoria
información
señales
de control
Figura 3.1: Modelo de Von Neumann de la computadora digital.
13
14 TEMA 3. ESTRUCTURA DE LA COMPUTADORA DIGITAL
3.2 La memoria
El tratamiento autom´atico de la informaci´on requiere el almacenamiento de la misma de forma
m´as o menos permanente. Para resolver este problema se han propuesto hist´oricamente solu-
ciones diversas muy imaginativas como l´ıneas de retraso, tubos de mercurio y n´ ucleos de ferrita.
La memoria en una computadora es un dispositivo capaz de almacenar informaci´on. Para
servir a los prop´ositos del tratamiento autom´atico de la informaci´on la memoria ha de ser capaz
de recuperar cualquier informaci´on, proporcion´andola al exterior s´olo cuando sea solicitada.
Como ya se ha dicho, las computadoras digitales trabajan con datos binarios, por lo que
la memoria debe poder guardar variables que toman dos valores: 0 ´o 1. Para ello basta con
agrupar celdas elementales formando registros. Los registros se apilan para formar bloques
mayores, como resultado las memorias actuales tienen capacidad para varios millones de bits.
En la arquitectura de Von Neumann (figura 3.1) la memoria es el bloque que almacena tanto
los datos y resultados como las instrucciones. A petici´on de la unidad de control la memoria es
capaz de realizar dos operaciones:
• Lectura. Consiste en extraer una copia de cierta informaci´on. En la mayor´ıa de los casos
tal informaci´on pueden leerse cuantas veces se desee, pues no es destruida por el proceso
de lectura.
• Escritura. La escritura permite almacenar informaci´on dentro de la memoria. Los datos
que se van a almacenar ocupar´an algunas celdas de la memoria que previamente conten´ıan
otros valores, por lo tanto el proceso de escritura siempre conlleva la desaparici´on de los
datos que ocupaban el lugar donde se introducen los nuevos.
3.2.1 Caracter´ısticas de las memorias
En la historia de las computadoras se han usado muchos dispositivos para almacenar informaci´on.
En la actualidad se usan circuitos integrados, discos magn´eticos y discos ´opticos. Cualquiera
que sea el soporte de la informaci´on la memoria queda definida por ciertas propiedades o carac-
ter´ısticas como son:
• Tiempo de acceso. Es el que transcurre entre el instante en que se ordena la lectura/escritura
de una informaci´on y el momento en que est´a disponible para su procesamiento. Interesa
que sea lo m´as bajo posible, no obstante este requerimiento entra en conflicto con el coste.
• Capacidad. Es el n´ umero de unidades de informaci´on que puede almacenar una memoria.
Como suelen ser n´ umeros muy altos se usan m´ ultiplos como kilo y mega.
• Modo de acceso. Hay varias formas en las que se puede accceder a la informaci´on, entre
las que destacan el acceso directo y el secuencial, que se definen a continuaci´on.
Acceso directo. Para llegar a una determinada informaci´on no es preciso pasar por las
anteriores. Este modo es tambi´en llamado aleatorio. El tiempo invertido en el acceso
c M.R. Arahal 2003 DISA. ESI. US. 15
es independiente de donde se encuentre la informaci´on. Las memorias que emplean
este tipo de acceso se denominan gen´ericamenete RAM, del ingl´es Random Access
Memory.
Acceso secuencial. En este tipo de acceso, para llegar a un dato hay que dejar pasar
la informaci´on que le precede. Esto es lo que sucede, por ejemplo, cuando se usa una
cinta magn´etica.
• Volatilidad. La informaci´on almacenada en una memoria es vol´atil si puede destruirse o
alterarse al cesar el suministro de energ´ıa al dispositivo que constituye la memoria. Esta
es la situaci´on normal en memorias de semiconductores, que necesitan suministro el´ectrico
para conservar los datos. Los discos y cintas son por contra no vol´atiles.
3.2.2 Medidas de capacidad
Las memorias como se ve pueden ser de muchos tipos, la m´as importante para nuestro estudio
de la computadora digital es la memoria principal. En los equipos actuales esta memoria est´a
realizada mediante circuitos semiconductores que forman puertas l´ogicas. De este modo surge la
celda que da cobijo a la unidad fundamental de informaci´on.
´
Estos y otros conceptos se definen
a continuaci´on.
• Bit. Se denomina bit a la unidad elemental de informaci´on binaria. El bit es la informaci´on
contenida en una c´elula de memoria, es decir, un cero o un uno. Cualquier informaci´on
binaria puede codificarse mediante una cadena de bits m´as o menos larga.
• Car´acter. Las c´elulas de memoria se suelen agrupar formando registros. Una agrupaci´on
muy usada es la formada por ocho c´elulas, denominada octeto. La informaci´on con-
stituida por ocho bits, y que se puede almacenar en un octeto se llama car´acter o, m´as
popularmente, byte.
• Palabra. Los registros de una computadora est´an formados por cierto n´ umero de bits, los
m´as usuales son de 16, 32 y 64 unidades. La informaci´on almacenada en un registro se
denomina palabra.
Se ha de notar la diferencia entre unidades de informaci´on: bit, car´acer y palabra, y el
soporte donde se guardan: unidad de memoria, octeto y registro, respectivamente.
Al tratar con memorias la unidad b´asica suele ser el car´acter o byte. En t´erminos inform´aticos
kilo es un prefijo que equivale a 2
10
= 1024 unidades, pues es la potencia exacta de dos m´as
pr´oxima a mil. Del mismo modo, mega equivale a 2
20
= 1048576 unidades. En la tabla siguiente
se muestran algunos tama˜ nos de memorias expresados de varios modos.
abreviatura cantidad bits caracteres
1 Kc kilocar´acter 8 · 2
10
2
10
1 Mc megacar´acter 8 · 2
20
2
20
1 Gc gigacar´acter 8 · 2
30
2
30
1 Tc teracar´acter 8 · 2
40
2
40
16 TEMA 3. ESTRUCTURA DE LA COMPUTADORA DIGITAL
3.3 Clases de memoria
Aunque el esquema de la figura 3.1 no lo muestra, el hecho es que existen dentro de la computa-
dora varias clases de memoria, atendiendo cada una a una misi´on particular. En esta secci´on se
enumeran algunos de los tipos m´as habituales de memoria.
• Memoria principal. Es la que contiene el programa en el momento de la ejecuci´on del
mismo. Suele estar constituida por circuitos integrados, que es la forma de almacenamiento
m´as r´apida. En la mayor´ıa de los casos es de tipo vol´atil y de acceso directo. Esta memoria
suele ser expansible a voluntad del operario; para ello basta con a˜ nadir m´as circuitos
integrados a las tarjetas de la computadora.
• Memoria auxiliar. La memoria auxiliar es un dispositivo externo
1
que contiene infor-
maci´on. Entre otros pueden citarse el disco duro, el disco ´optico y los discos flexibles.
Son llamadas tambi´en memorias masivas. La velocidad de acceso suele ser menor que la
de la memoria principal, pero la capacidad de almacenamiento mayor. Al ser un perif´erico,
el trasvase de datos entre la memoria auxiliar requiere un adaptador que es la unidad de
entrada y salida (v´ease figura 3.1).
3.3.1 Estructura matricial
La memoria principal en los equipos actuales est´a constituida por circuitos integrados en cuyo
interior residen las c´elulas b´asicas de memoria, organizadas en registros como ya se ha dicho.
Una forma de representar esto es usando una disposici´on rectangular a base de filas y columnas,
como se muestra en la figura 3.2. Cada fila es un registro de n bits, siendo n el ancho o longitud
de la palabra. El n´ umero de filas N suele ser muy alto como puede suponerse sabiendo la
capacidad normal de las memorias actuales que es de varios megacaracteres. Cada registro
puede ser seleccionado mediante un hilo
2
. Para acceder a los bits individuales que forman la
palabra contenida en el registro se tienen n hilos llamados de lectura/escritura (abreviadamente
l/e).
La lectura se realiza transmitiendo por los hilos de l/e la informaci´on de cada celda del
registro seleccionado. La escritura realiza el proceso inverso, destruyendo la informaci´on que
resid´ıa previamente en el registro seleccionado.
Cada registro de la memoria tiene asignado un n´ umero llamado direcci´on. Es habitual
conceder al registro superior el n´ umero 0 y al inferior en n´ umero N − 1, siendo N el n´ umero
total de registros.
Para acceder a la informaci´on de la memoria es preciso conocer la direcci´on en la que se
encuentra. Conocida dicha direcci´on se puede seleccionar el registro en cuesti´on y proceder
posteriormente a la lectura o escritura.
1
Necesita conexi´ on especial para unirse al resto de m´ odulos.
2
T´ermino heredado de los d´ıas en que las memorias eran de n´ ucleos de ferrita ensartados en los nodos de una
red de hilos conductores.
c M.R. Arahal 2003 DISA. ESI. US. 17
registro
célula de
memoria
hilos de
selección
hilos de lectura y escritura
N
n
Figura 3.2: Estructura matricial de la memoria.
Por tanto, la selecci´on de la informaci´on es un paso previo a la lectura o escritura y se hace
actuando sobre el hilo que correspondiente a la direcci´on dada. Esto lo realiza el decodificador
de direcciones.
La direcci´on que se proporciona al decodificador es el n´ umero de la palabra dentro de la
memoria, pero codificado en binario. Si la memoria tiene N = 2
m
palabras es necesario darle
al decodificador un n´ umero en binario entre 0 y 2
m
− 1. Para expresar este valor hacen falta
precisamente m d´ıgitos binarios; es decir, la direcci´on es un n´ umero binario de m bits.
Para proporcionar al decodificador la direcci´on se usa un registro llamado de selecci´on de
direcci´on que puede verse en la la figura 3.3 junto con el decodificador de direcciones.
m
m
N = 2
n
1
0
d
e

d
i
r
e
c
c
i
o
n
e
s
d
e
c
o
d
i
f
i
c
a
d
o
r
N-1
Figura 3.3: Diagrama de la memoria organizada matricialmente incluyendo el registro de se-
lecci´on de direcciones y el decodificador.
3.3.2 La unidad de memoria central
A modo de resumen, y para hacerse una idea de c´omo se enlazan los elementos vistos hasta
ahora relativos a las memorias, se analizar´a la memoria central de una computadora.
´
Esta est´a
formada por una matriz celular de elementos de memoria, un decodificador de direcciones y una
peque˜ na unidad de control que coordina las operaciones necesarias para leer o escribir; todo ello
dentro de un circuito integrado. Los bloques funcionales se pueden ver en la figura 3.4, y se
18 TEMA 3. ESTRUCTURA DE LA COMPUTADORA DIGITAL
describen a continuaci´on.
• S. Es el registro selector de direcciones de memoria. Almacena m bits que representan (en
binario, por supuesto) la direcci´on del registro a seleccionar.
• LECM, ESCM. Son dos se˜ nales de control mediante las cuales la UC ordena escribir o leer.
• T. Es un registro tamp´on o de almacenamiento temporal que realiza la funci´on de antesala
de la memoria. Durante una lectura recibe una copia de los n bits contenidos en la posici´on
seleccionada. Durante la escritura contiene la informaci´on que se va a escribir.
S
T
D
e
c
o
d
i
f
i
c
a
d
o
r
m
n
LECM
ESCM
direcciones
datos
Figura 3.4: Diagrama de bloques de la memoria central mostrando los registros y se˜ nales de
gobierno.
Para realizar una operaci´on de lectura o escritura con la estructura anteriormente descrita,
es necesario seguir un procedimiento que se detalla a continuaci´on.
• Lectura. El objetivo final es obtener una copia del contenido de una direcci´on particular de
la memoria. Los pasos a seguir son:
• Seleccionar la direcci´on que contiene la informaci´on a recuperar; para ello se ha de
introducir dicha direcci´on en el registro S.
• Dar la orden de lectura activando LECM; es decir, dando el valor l´ogico 1 a LECM.
Con esto se consigue que la palabra seleccionada transfiera una copia de sus bits al
registro T.
• Tomar el contenido del registro T, el cual contiene una copia de la palabra buscada.
• Escritura. La escritura consiste en introducir una informaci´on dada en una posici´on de
memoria concreta conocida. Los pasos a seguir son:
• Selecionar la direcci´on que contiene la informaci´on a recuperar; para ello se ha de
introducir dicha direcci´on en el registro S.
• Copiar en T la informaci´on que se quiere escribir en la memoria. Para ello se usan
los hilos de bit que conectan cada palabra de la memoria con el registro T.
• Activar la se˜ nal de escritura haciendo ESCM=1.
c M.R. Arahal 2003 DISA. ESI. US. 19
3.4 La unidad aritm´etico-l´ ogica
Utilizando circuitos electr´onicos es posible combinar el contenido de dos registros de memoria
de forma que se obtenga un tercer registro que guarde alguna relaci´on con los primeros. Por
ejemplo de forma que el registro resultado sea la suma de los registros iniciales.
La figura 3.5 ilustra esta idea. Puede verse que el registro 1 contiene los bits 010010 que
puede interpretarse como el n´ umero binario 010010 |
2)
que en decimal es 010010 |
2)
= 18 |
10)
.
Similarmente, el registro 2 contiene los bits 000011 que puede interpretarse como el n´ umero
binario 000011 |
2)
que en decimal es 000011 |
2)
= 3 |
10)
. Es f´acil comprobar que el circuito
sumador debe combinar la informaci´on de ambos registros de tal modo que el registro resultado
contenga 010101 que es la representaci´on binaria de la cantidad 18 + 3 = 21.
010010 000011
Registro 1 Registro 2
Sumador
010101
Registro resultado
Figura 3.5: Circuito sumador.
Existen circuitos capaces de realizar operaciones aritm´eticas como la suma, la resta, etc.
Tambi´en interesan operaciones llamadas l´ogicas. Como ejemplo de operaciones l´ogicas se puede
citar la comparaci´on de igualdad. Un circuito comparador produce el valor binario 1 si los dos
registros R1 y R2 son iguales y el valor 0 en caso contrario.
La construcci´on de la UAL se lleva a cabo hoy en d´ıa en una pastilla de silicio, agrupando
una serie de circuitos con puertas l´ogicas. Estos circuitos son capaces de realizar tareas concretas
como desplazamientos, sumas, comparaciones, etc. La unidad de control que tambi´en reside en
la pastilla puede seleccionar la operaci´on a efectuar gracias a las se˜ nales de control. La activaci´on
de alguna de estas se˜ nales provoca la puesta en marcha de la operaci´on correspondiente.
Los dos operandos provienen de la memoria. Para operar con ellos se saca una copia que se
guarda en registros especiales separados de la memoria central . Frecuentemente, en computa-
doras y calculadoras, el resultado de las operaciones se almacena en un registro A que recibe
el nombre de registro acumulador. Para reducir el tama˜ no de la UAL, el acumulador es a
menudo tambi´en el soporte de uno de los operandos.
La UAL recibe ´ordenes de la unidad de control que especifican la operaci´on a realizar con
los datos del acumulador y del registro de operando. El resultado de las operaciones queda en
el acumulador a la espera de ser transferido cuando lo indique la unidad de control.
La figura 3.6 muestra un diagrama de la UAL en el que se detalla el acumulador. El bloque
20 TEMA 3. ESTRUCTURA DE LA COMPUTADORA DIGITAL
Señales de
control.
A
segundo operando
MULT
SUMA
estado
···
primer operando
Figura 3.6: Esquema de la Unidad Aritm´etico L´ogica mostrando el acumulador y las se˜ nales de
gobierno.
con forma de v invertida contiene los circuitos que realizan las operaciones. Como se ha dicho,
el acumulador contiene el primer operando. El registro para el segundo operando se considera
en el interior de dicho bloque por lo que no se ha dibujado.
3.5 La unidad de entrada y salida
Para poder ser de alguna utilidad, la computadora ha de interaccionar con el exterior. La
recogida de datos y la evacuaci´on de resultados se llevan a cabo mediante dispositivos variados
como son el teclado y la pantalla y que reciben el nombre de perif´ericos.
El reto que plantea la comunicaci´on de la computadora con el exterior a trav´es de dispositivos
diferentes reside fundamentalmente en la distinta velocidad de transmisi´on de ´estos. En efecto,
consid´erese un teclado; la informaci´on que proviene del mismo no suele superar los 20 caracteres
por segundo, es decir hay 0.05 segundos de espera entre car´acter y car´acter. Durante estos 0.05
segundos la computadora puede realizar miles de operaciones. Sin embargo otros dispositivos
admiten una velocidad mayor, como por ejemplo los discos y las impresoras. La computadora
ha de adecuar sus operaciones al ritmo de transmisi´on de datos, so pena de perder informaci´on.
T´ıpicamente, los perif´ericos se conectan al enlace de la computadora mediante circuitos que
realizan las adaptaciones necesarias (niveles de tensi´on, formato de la informaci´on, etc.).
´
Esta es
la situaci´on mostrada en la figura 3.7. En el desarrollo del cap´ıtulo se van a describir brevemente
algunos perif´ericos, para pasar posteriormente al problema de la comunicaci´on entre ´estos y la
UCP.
3.5.1 Perif´ericos
Como se ha dicho, los perif´ericos son dispositivos que permiten el trasvase de informaci´on desde
el exterior a la computadora o al contrario. Los m´as comunes son descritos a continuaci´on:
Teclado Permite tanto introducir texto, n´ umeros y proporcionar se˜ nales para los programas. Se
compone de pulsadores electromec´anicos que mandan un c´odigo identificador a un espacio
de almacenamiento temporal que la computadora lee y vac´ıa peri´odicamente. Las teclas
que incluye son:
c M.R. Arahal 2003 DISA. ESI. US. 21
Teclado Monitor Impresora Disco
vídeo
Adaptador
paralelo
Adaptador
Adaptador Adaptador
Teclado
unidad de disco
UCP RAM ROM
Figura 3.7: Perif´ericos conectados a los enlaces de la computadora.
• Letras, n´ umeros y signos de puntuaci´on. Esta parte del teclado se asemeja al de una
m´aquina de escribir convencional.
• Tecla INTRO. Tiene dos funciones: en primer lugar permite pasar a la siguiente l´ınea
en la escritura. Adem´as, en programas de uso interactivo sirve para dar entrada a la
informaci´on tecleada anteriormente de forma que pueda ser procesada. Por ejemplo,
despu´es de introducir un comando hay que pulsar esta tecla, para que la computadora
ejecute la orden. En algunos teclados aparece el s´ımbolo

|
, o la palabra RETURN o
ENTER.
• Teclas de funci´on, Numeradas desde la F1 a la F12 sirven para realizar ´ordenes dentro
de ciertos programas. No tienen un significado definido, sino que cada programa les
asigna una funci´on, lo cual permite ahorrar tiempo de escritura. Por ejemplo, en
algunos editores la tecla F2 sirve para guardar una copia del texto actual en el disco.
• Teclado num´erico. Adem´as de los n´ umeros, los teclados modernos, suelen traer un
teclado num´erico compuesto por los n´ umeros, el punto decimal y otras, en la parte
derecha del teclado. De esta forma se agiliza la escritura de grandes cantidades de
datos.
• Teclas de bloqueo de may´ usculas, bloqueo de teclado num´erico, etc.
• Otras teclas especiales, como flechas, bot´on de parada, etc.
• Teclas que alteran la funci´on de otras teclas.
– Tecla MAY
3
. Pulsada simult´aneamente con otra produce la escritura de la letra
en may´ usculas o del signo superior de los dos que aparecen encima en la tecla.
Su funci´on normal es en todo igual a las may´ usculas de una m´aquina de escribir.
Aplicada a las teclas de funci´on permite activar funciones distintas.
En general cuando se ha de pulsar una tecla conjuntamente con otra se indica me-
diante el signo +. Por ejemplo, para indicar que se han de pulsar simult´aneamente
la tecla MAY y la tecla de funci´on F2 se usa: MAY+F2.
– Tecla ALT. Al igual que la tecla de may´ usculas permite cambiar la funci´on de
las teclas de funci´on. Adem´as sirve para generar los s´ımbolos de la tabla ASCII
manteniendo la tecla pulsada mientras se introduce el c´odigo correspondiente
en decimal. En muchas aplicaciones esta tecla tiene significado especial. Por
ejemplo, en los entornos de ventana, sirve para activar funciones dentro de un
men´ u tecleando ALT+inicial opci´on del men´ u.
3
En algunos teclados aparece como Shift, en otros como una flecha vertical ⇑.
22 TEMA 3. ESTRUCTURA DE LA COMPUTADORA DIGITAL
– Tecla ALT GR. Permite obtener los signos |, [, ], } y { , u otros dependiendo del
sistema.
– Tecla CONTROL. Pulsada conjuntamente con algunas letras produce caracteres
de control. Es decir, caracteres ASCII no visibles que tienen funciones de control,
como CONTROL+G, que produce el car´acter ASCII n´ umero 7 que provoca un
zumbido en el altavoz del terminal. Otros caracteres ´ utiles son CONTROL+C
y CONTROL+Z para terminar la ejecuci´on de programas. Usada en conjunci´on
con las teclas de funci´on permite activar otras funciones distintas dentro de pro-
gramas.
Una combinaci´on de teclas especialmente ´ util en sistemas PC es CONTROL+ALT+SUPR
que causa un reinicio del sistema.
Los teclados tienen una velocidad de transmisi´on baja (10 ´o 15 caracteres por segundo).
Si se teclea a una velocidad superior el espacio de almacenamiento temporal se llena y la
computadora emite un sonido de advertencia.
Rat´ on Es un dispositivo que sirve para posicionar un puntero gr´afico sobre la pantalla, de
forma r´apida. Este puntero permite realizar acciones pulsando los botones del rat´on. Los
entornos de ventana hacen un uso exhaustivo del rat´on. Existen diversos tipos, de bola,
´optico, por presi´on.
Monitor de visualizaci´ on Es el lugar donde usualmente la computadora env´ıa la salida de los
programas, suele ser del tipo TRC (tubo de rayos cat´odicos), de color o monocromo. Los
equipos port´atiles suelen llevar una pantalla de cuarzo llamada de cristal l´ıquido (LCD).
La imagen en los TRC se forma por barrido de un haz (monocromo) o de tres haces (color)
de electrones que inciden sobre el f´osforo del interior del tubo. La se˜ nal para determinar
la intensidad de luz de cada color de cada punto de la pantalla procede de un circuito
electr´onico que lee el contenido de una memoria de v´ıdeo que se puede dividir en planos.
El n´ umero de colores o de tonalidades diferentes de gris que se pueden enviar a la pantalla
depende del n´ umero de planos.
Para poder usar el monitor, la computadora ha de incorporar un circuito especial llamado
tarjeta de v´ıdeo. La imagen que se presenta en pantalla est´a contenida en la memoria de
v´ıdeo. Un circuito especial de la tarjeta se encarga del refresco de la imagen en el tubo,
consistente en redibujar la imagen un cierto n´ umero de veces por segundo de acuerdo con
el contenido de la memoria. La UCP se limita a colocar en la memoria de v´ıdeo la imagen
y el circuito de refresco la manda a la pantalla.
La cantidad de memoria de v´ıdeo disponible limita las posibilidades gr´aficas. As´ı, una
tarjeta con poca memoria compone las im´agenes mediante puntos gruesos y con pocos
colores, como se muestra en la figura 3.8 a la izquierda. Al aumentar la memoria disponible
es posible disminuir el tama˜ no del punto y aumentar la cantidad de colores que pueden
presentarse a un mismo tiempo. De este modo las im´agenes resultan mejor definidas como
en la figura 3.8 a la derecha. La capacidad de la tarjeta de v´ıdeo se indica por los puntos
horizontales y verticales y la cantidad de colores disponibles.
Impresora Es un dispositivo que permite reproducir en papel los dibujos o textos realizados
en una computadora. Hay muchos tipos distintos, dependiendo de la t´ecnica usada para
impregnar el papel. Las m´as usadas actualmente son las impresoras de chorro de tinta y
las l´aser.
La tinta en una impresora de chorro o inyecci´on es lanzada gota a gota sobre el papel
formando los caracteres o dibujos. Un mecanismo especial va soltando la tinta (o tintas
c M.R. Arahal 2003 DISA. ESI. US. 23
Figura 3.8: Im´agenes proporcionadas por dos tarjetas de v´ıdeo distintas. A la izquierda una
imagen de 201 × 129 puntos; a la derecha una imagen de 402 × 258 puntos, ambas en blanco y
negro.
de diversos colores). Las gotas son dirigidas mediante campos el´ectricos para que lleguen
al lugar indicado sobre el papel.
La impresora l´aser permite copiar p´aginas enteras de una vez. Se basan en un tambor
cargado electrost´aticamente, que al ser expuesto a un rayo l´aser se descarga en algunas
zonas. La tinta en polvo impregna luego esas zonas del tambor. Al pasar cerca del papel
cargado opuestamente al tambor la tinta se adhiere al papel. Finalmente se aplica calor
para que la tinta en polvo funda sobre el papel. Debido a que el l´aser es muy fino, la
calidad de impresi´on es muy alta.
No hay ning´ un c´odigo normalizado para la comunicaci´on ente impresoras y computadoras.
Sin embargo, normalmente no hay que preocuparse por estos detalles pues los programas
(o sistemas de explotaci´on) permiten seleccionar el tipo de impresora a usar mediante
men´ us, por lo que todo lo que uno debe saber es la marca y modelo de la impresora que
tiene conectada. Entre los muchos lenguajes se pueden destacar los siguentes: PCL 1 a
PCL 5 de Hewlett-Packard y PostScript o lenguaje de descripci´on de p´aginas a base de
instrucciones producido por Adobe Systems Inc,
Las impresoras pueden conectarse a la computadora usando diversos adaptadores de entrada-
salida entre los que destacan: Centronics, RS232, SCSI y las conexiones de red como
Ethernet u otras.
Digitalizador de im´agenes Se usan para obtener una versi´on digital de im´agenes sobre el
papel. Para ello la imagen es descompuesta en una matriz de puntos de color y posterior-
mente almacenada como un archivo en un formato gr´ afico, como los conocidos GIF y
TIFF.
En ocasiones la digitalizaci´on de im´agenes tiene por objeto conseguir un fichero conteniendo
el texto impreso en la imagen. Es decir, la imagen puede ser una p´agina de un peri´odico
y lo que se desea es el texto contenido en dicha p´agina. A partir de la imagen se pueden
usar programas de reconocimiento de caracteres (conocidos como OCR) para obtener el
texto en un fichero. Los programas de reconocimiento de caracteres suelen funcionar s´olo
con letra de imprenta.
Discos magn´eticos Los dispositivos de almacenamiento masivo como el disco duro, las cintas
magn´eticas y el disco ´optico permiten guardar grandes cantidades de datos de forma no
vol´atil.
Los discos llamados flexibles permiten ser extra´ıdos de la computadora. Hay discos de
distintos tama˜ nos, siendo los m´as usados hoy en d´ıa los de 10 cm, que pueden contener
24 TEMA 3. ESTRUCTURA DE LA COMPUTADORA DIGITAL
Pista
Cabezas
Figura 3.9: Discos magn´eticos para almacenamiento de datos.
objetivo
detector
(a) (b)
plástico
etiqueta
datos
00100010000100000100
bits modulados
Figura 3.10: (a) Esquema del disco ´optico. (b) Representaci´on de la informaci´on en el mismo.
hasta 1.44 Mc de datos.
Los discos duros est´an fijos en el interior de la computadora. Su construcci´on les confiere
mayor rapidez y capacidad. Actualmente los discos duros pueden tener capacidades entre
cientos y miles de Megacaracteres. El principio de funcionamiento es el mismo que en el
caso de los discos flexibles. En la parte derecha de la figura 3.9 se muestra un diagrama
simplificado de un disco duro, mostrando las cabezas que permiten la lectura y escritura.
Disco ´optico El CD-ROM como se le conoce popularmente permite guardar gran cantidad
de datos (aproximadamente 700 Mc). La informaci´on se guarda en binario en forma de
agujeros o huecos microsc´opicos en el metal interior del disco. Mediante un rayo l´aser
se puede obtener una se˜ nal el´ectrica con un voltaje alto o bajo dependiendo del paso de
depresiones bajo el l´aser a medida que el disco gira.
El CD-ROM es casi id´entico a los discos compactos para audio que exist´ıan previamente.
De hecho, ambos discos son compatibles. Los reproductores de discos para audio incorpo-
ran una etapa de conversi´on de digital a anal´ogico para producir el sonido, la cual no es
necesaria en el caso de reproductores para uso de la computadora.
Puesto que el metal que contiene los datos est´a protegido por una capa de pl´astico se
consigue un medio menos sensible que los discos flexibles. El disco tiene los datos grabados
en una ´ unica pista espiral. La lectura sobre la pista es a velocidad constante, por lo que
el disco gira a distintas velocidades seg´ un el tramo leido. Ver figura 3.10 (a). Los datos
se modulan siguiendo la regla ”8 en 14”, que usa 14 bits para codificar cada car´acter. Se
incluye un c´odigo de detecci´on de errores de tipo CRC. La figura 3.10 (b) muestra la forma
en que los bits quedan grabados en el disco.
Dentro de los discos ´opticos hay varias clases: hay discos que s´olo admiten lectura, discos
que se pueden grabar una sola vez desde el equipo personal y discos que admiten ser
regrabados varias veces.
c M.R. Arahal 2003 DISA. ESI. US. 25
3.6 La unidad de control
La unidad de control es el elemento que ordena a todos los dem´as. La tarea que tiene encomen-
dada consiste en enviar las se˜ nales de control que provocan operaciones de los m´odulos y tambi´en
transferencias de informaci´on entre los mismos.
En el esquema de la figura 3.11 se muestran los m´odulos ya conocidos interconectados por
enlaces. Podemos imaginar que los enlaces son autopistas de varios carriles por las cuales pueden
moverse los bits de forma que pasen de unos registros a otros.
Los elementos con que se va a trabajar y que aparecen en dicha figura son:
1. Un enlace M que une la memoria, la unidad de control y la UAL. La informaci´on que se
transmite puede ser de diversas clases: datos y resultados de operaciones, instrucciones
del programa y direcciones de memoria.
2. Otro enlace S que une la unidad de control y el selector de posiciones de memoria. Por ´el
se transmiten direcciones de memoria.
3. La memoria principal, con organizaci´on matricial.
4. La UAL con registro acumulador que almacena uno de los operandos y el resultado de las
operaciones.
5. Los siguientes registros:
• A. Registro acumulador de la UAL.
• S. Registro de selecci´on de memoria.
• T. Registro tamp´on de comunicaci´on entre la memoria y la l´ınea M.
• P. Contador de pasos de programa. Indica la posici´on dentro de la memoria de la
instrucci´on a ejecutar.
• I. Registro de instrucci´on. Guarda en cada momento la instrucci´on que se ejecuta en
ese paso.
• E. Registro de comunicaci´on con el exterior. Permite tomar datos del teclado o llevarlos
a la pantalla. Es una forma simple e idealizada de la unidad de control que se ha
descrito anteriormente.
3.6.1 Funcionamiento
El esquema presentado corresponde a una m´aquina de programa almacenado, por lo que en la
memoria se almacenan tanto datos y resultados como el programa a ejecutar. El funcionamiento
del mismo se describe a continuaci´on.
Para comenzar la explicaci´on se parte de una situaci´on en la que el programa ha sido alma-
cenado previamente en la memoria. El programa se va a ejecutar paso a paso bajo la direcci´on
de la unidad de control.
´
Esta debe obtener de la memoria la instrucci´on a ejecutar, por lo que
26 TEMA 3. ESTRUCTURA DE LA COMPUTADORA DIGITAL
SP EP
INCP
P
D CO MD
ET ST
S
MEM
LECM
ESCM
T
EE SE
EA
SA
SUMA
MULT
EO
A
M
EI
SD
ES
I
S
LEET ESCP
E
M
Figura 3.11: Esquema de una computadora digital mostrando los enlaces y las se˜ nales de gob-
ierno.
necesita disponer de alg´ un medio que le permita conocer en qu´e posici´on de memoria se encuen-
tra localizada la misma. El problema se resuelve colocando las instrucciones secuencialmente
en la memoria y dotando a la unidad de control de un registro de direcci´on de la instrucci´on
(registro P en la figura anterior). Este registro es un contador que se incrementa en una unidad
cada vez que se realiza una instrucci´on, pasando as´ı a apuntar a la siguiente.
Una vez localizada la instrucci´on se extrae de la memoria llev´andola al registro I, donde
se ejecuta activando las se˜ nales de gobierno necesarias. Esta tarea la realiza un m´odulo de la
unidad de control que a´ un no se ha mostrado. Finalmente se incrementa P para poder ejecutar
la siguiente instrucci´on.
Cada instrucci´on requiere tres componentes para quedar totalmente definida: la operaci´on,
la forma de direccionamiento y una direcci´on con la que operar. Estos elementos se codifican en
binario y se guardan en el registro I, que consta de las tres partes que se describen a continuaci´on.
1. C´odigo de operaci´on (CO), es un conjunto de ceros y unos que identifica la operaci´on que
debe realizarse. Las instrucciones como la suma, la resta, etc. tienen cada una un c´odigo
distinto.
2. El modo de direccionamiento (MD), que indica la forma en que se ha de interpretar la
direcci´on que est´a incluida en la instrucci´on. En el caso m´as sencillo (llamado direc-
cionamiento directo) la direcci´on es la del dato o resultado de la operaci´on.
3. Direcci´on de memoria (D). Esta direcci´on puede interpretarse de formas distintas, seg´ un
el modo de direccionamiento y la instrucci´on de que se trate. En un caso simple como la
suma directa, esta direcci´on es el lugar de la memoria donde reside el dato que se ha de
sumar.
Para aclarar las ideas, consid´erese la instrucci´on sumar al acumulador el contenido de la
posici´ on de memoria 8. Sup´ongase que la codificaci´on de esta instrucci´on es:
CO MD D
0101 0 00000001000
Por lo que el registro I, en el momento de ejecutarse esta instrucci´on contiene el valor
c M.R. Arahal 2003 DISA. ESI. US. 27
A
S
P
I
I
S
S
P
I
A
S
P
I
P
8
17
3
7
8
8
17
3
3
8
co | md | 8
co | md | 8
co | md | 8
co | md | 8
17
8 3
co | md | 8 17
co | md | 8
17
8
17 co | md | 8
3
co | md | 8
17
B)
A
A
A)
D) C)
4
4 17
18
8
3 4
7
Figura 3.12: Fases de la ejecuci´on de la instrucci´on suma.
0101000000001000. La primera parte (CO) identifica la operaci´on suma, la segunda parte (MD)
indica que se trata de direccionamiento directo, que ser´a explicado m´as adelante. Por ´ ultimo, la
direcci´on 00000001000 es el n´ umero 8 codificado en binario, y se interpreta como el lugar donde
reside el n´ umero que se ha de sumar al registro acumulador.
3.7 Ejecuci´ on de instrucciones
Para cualquier instrucci´on el proceso de ejecuci´on se divide en cuatro fases: b´ usqueda de la
instrucci´on, b´ usqueda del operando, ejecuci´on de la instrucci´on y preparaci´on de la instrucci´on
siguiente. Estas fases conllevan pasos distintos dependiendo de la instrucci´on de que se trate.
Los casos m´as sencillos se plantean al considerar instrucciones aritm´eticas, como la suma.
La figura 3.12 muestra de forma esquem´atica el desarrollo de las cuatro fases para una
instrucci´on como la suma directa. Como es sabido los registros contienen los n´ umeros en binario,
sin embargo, para dar mayor claridad al dibujo se han indicado aqu´ı en decimal. Las posiciones
de memoria tambi´en se han indicado con su direcci´on en decimal por id´entico motivo.
La parte A) de la figura representa la b´ usqueda de la instrucci´on. Se ha supuesto que ´esta se
halla en memoria en la direcci´on 17 por lo que el contenido de P es precisamente 17. Se observa
tambi´en el direccionamiento de la memoria logrado con el registro S. Mediante una lectura se
pasa la instrucci´on al registro I.
La parte B) corresponde a la b´ usqueda del operando; ´este es el valor contenido en la direcci´on
de memoria 8, que en este caso es el n´ umero 3. Una nueva lectura de memoria permite pasar el
operando al registro de operando de la UAL.
En la parte C) se realiza la suma del acumulador que conten´ıa el n´ umero 4 con el operando.
El resultado (7 = 4 + 3) pasa al propio acumulador.
28 TEMA 3. ESTRUCTURA DE LA COMPUTADORA DIGITAL
En la parte D) se prepara la instrucci´on siguiente. El registro P se incrementa en una unidad,
de este modo, repitiendo las fases anteriores se consigue ejecutar la instrucci´on siguiente y as´ı
sucesivamente.
Obs´ervese que el desarrollo de la instrucci´on se logra simplemente por la transferencia de
informaci´on entre registros y mediante la transformaci´on de ´esta en la UAL. La tarea de la
unidad de control es precisamente coordinar tales transferencias.
3.7.1 Transferencias entre registros
El funcionamiento de la computadora se puede describir mediante transferencias de informaci´on
entre registros. Para verificar esta afirmaci´on se va a explicar a continuaci´on de forma m´as
detallada la ejecuci´on de la instrucci´on del ejemplo anterior, sumar al acumulador un dato
almacenado en una direcci´on de memoria dada.
1. B´ usqueda de la instrucci´on: consiste en extraer la instrucci´on que se va a ejecutar de
la memoria. El registro P contiene la direcci´on de la instrucci´on a ejecutar, por lo que
habr´a de leerse la direcci´on de memoria indicada por P. Esta fase tiene tres operaciones
elementales:
(a) Direccionamiento: transferir a S el contenido del registro P. Esto se simboliza me-
diante: (P) → S. N´otese que el contenido anterior del registro S se pierde al ser
sustituido por el contenido de P.
(b) Leer de memoria , obteni´endose en T la informaci´on almacenada en la posici´on
definida por S, lo cual se puede expresar como: M(S) → T
(c) Pasar la instrucci´on a I: (T) → I, donde debe quedar para poder ser ejecutada.
2. B´ usqueda del operando: En CO se ha supuesto la existencia del c´odigo de operaci´on (que
identifica a la suma en este ejemplo). El modo de direccionamiento es directo, por lo tanto
la direcci´on que figura en D se interpreta como la del operando que hay que sumar al
acumulador. Los pasos son los siguientes:
(a) Buscar el operando a sumar. Para ello hay que permitir el paso de D al registro S:
(D) → S. De este modo se direcciona dicho operando.
(b) Leer de memoria: M(S) → T. El registro de la memoria que ha sido seleccionado es
copiado en T, con lo que se tiene el n´ umero a sumar en T.
3. Ejecuci´on de la instrucci´on. En este caso, la suma al acumulador del contenido de T. Esto
puede escribirse como: (T)+(A) → A, puesto que, como ya se ha dicho, el acumulador
guarda el primer operando y recibe adem´as el resultado de las operaciones.
4. Preparaci´on de la siguiente instrucci´on. En este caso hay que sumar uno al contador de
pasos del programa: (P)+1 → P.
La forma en que se han detallado los pasos a realizar para ejecutar la instrucci´on suma
consiste en dar las transferencias elementales entre registros. Del diagrama 3.11
resulta claro que para lograr estas transferencias es necesario activar las se˜ nales de entrada y
c M.R. Arahal 2003 DISA. ESI. US. 29
fase transferencias entre registros se˜ nales de gobierno
1a (P) → S SP, ES
1b M(S) → T LECM
1c (T) → I ST, EI
2a (D) → S SD, ES
2b M(S) → T LECM
3 (A)+(T) → A ST, EO, SUMA, EA
4 (P)+1 → P INCP
Tabla 3.1: Fases, transferencias entre registros y se˜ nales de gobierno correspondientes a la
instrucci´on suma.
salida de los registros, tales como: SP, ES, etc. En la tabla 3.1 se muestra de nuevo la secuencia
de operaciones para el mismo ejemplo de la suma, pero incluyendo las se˜ nales de gobierno
necesarias.
La activaci´on de las se˜ nales de gobierno se realiza de forma autom´atica durante la ejecuci´on
del programa. Es una tarea que corre a cargo de la unidad de control como se explicar´a m´as
adelante.
3.7.2 La instrucci´ on de salto
Se ha indicado que el contador de pasos de programa se incrementa en una unidad cada vez que
se ejecuta una instrucci´on, de forma que pase a se˜ nalar la direcci´on de la siguiente instrucci´on
en la memoria. Esta forma de proceder es adecuada para muchas situaciones, pero est´a muy
falta de versatilidad. El llamado salto incondicional permite romper el orden de ejecuci´on de
las instrucciones, de forma que, tras la instrucci´on de salto situada en la direcci´on d, se pasa
a ejecutar otra, situada en una direcci´on distinta de d + 1. Para ello es necesario y suficiente
modificar el registro contador de pasos del programa P. Los pasos necesarios son:
1. B´ usqueda de la instrucci´on: Hay que extraer la instrucci´on que se va a ejecutar de la
memoria. Esta fase tiene tres operaciones elementales:
(a) Transferir a S el contenido del registro P. Esto se simboliza mediante: (P) → S.
(b) Leer de memoria , obteni´endose en T la informaci´on almacenada en la posici´on
definida por S: M(S) → T
(c) Pasar la instrucci´on a I: (T) → I. Donde ser´a interpretada.
2. B´ usqueda del operando: en la parte D del registro I debe figurar la direcci´on del salto, que
se debe introducir en P, por lo que no es necesario buscar en memoria.
3. Ejecuci´on de la instrucci´on. En este caso, pasar el contenido de D al registro contador de
pasos: (D) → P.
4. Preparaci´on de la siguiente instrucci´on. En este caso no hay que hacer nada pues el
contador de pasos del programa contiene ya la direcci´on de la siguiente instrucci´on tras
del salto.
30 TEMA 3. ESTRUCTURA DE LA COMPUTADORA DIGITAL
Tema 4
Lenguajes de programaci´ on
4.1 C´ odigo de m´aquina
El c´odigo de m´aquina es la forma m´as b´asica y primitiva en que se puede programar una
computadora digital. En esencia consiste en colocar en la memoria (de alguna manera) los ceros
y unos que conforman las instrucciones de un programa.
Ya se ha explicado con anterioridad que la unidad de control saca de la memoria las instruc-
ciones una a una y las ejecuta enviando se˜ nales de control a las otras unidades de la m´aquina.
Se ha supuesto que el programa reside en la memoria, pero, ¿c´omo ha llegado all´ı?
En los sistemas de c´alculo autom´atico de los a˜ nos 1940 y siguientes se dispon´ıa de medios
primitivos para realizar esta tarea. Las tarjetas perforadas, las cintas agujereadas (de papel o de
celuloide) eran m´etodos habituales. Posteriormente surgieron las cintas magn´eticas y los discos.
Sea cual fuera el m´etodo, era preciso que alguna persona dise˜ nara el programa que consist´ıa
en una ristra de ceros y unos. A modo de ejemplo consid´erese la tabla 4.1 que muestra una
serie de instrucciones de una computadora simple. Cada l´ınea est´a formada por 16 celdas que
contiene una instrucci´on. A la derecha se ha indicado lo que cada instrucci´on representa.
El programa realiza una tarea muy simple: lee dos n´ umeros del teclado y los almacena en
memoria. Tras esto, los suma y guarda en la memoria el resultado. Finalmente el resultado se
presenta por pantalla. Para guardar los n´ umeros le´ıdos se van a usar las posiciones de memoria
con direcci´on 10 y 11 (que se van a suponer vac´ıas o no usadas). El resultado se almacena en la
direcci´on 12.
En este ejemplo se ha supuesto que las instrucciones del programa se almacenan codificadas
en la memoria principal comenzando en la direcci´on 20. De este modo el programa queda en
memoria tal y como muestra dicha tabla. Para ejecutarlo basta con introducir en el contador
de pasos de programa (registro P) la direcci´on de comienzo del mismo, es decir, la direcci´on 20.
Un programa escrito en la forma vista en el ejemplo anterior se dice que est´a en c´ odigo de
m´ aquina, pues utiliza ´ unicamente las instrucciones de la m´aquina codificadas con ceros y unos.
31
32 TEMA 4. LENGUAJES DE PROGRAMACI
´
ON
direcci´on CO MD D significado
.
.
.
20 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 Leer de teclado almacenando el valor
le´ıdo en la posici´on de memoria 10
21 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 Leer de teclado almacenando el valor
le´ıdo en la posici´on de memoria 11
22 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 Llevar al acumulador (registro de la
UAL) el n´ umero guardado en la
posici´on de memoria 10
23 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 Sumar al acumulador el n´ umero
guardado en la posici´on de memoria 11
24 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 Almacenar el contenido del acumulador
en la posici´on de memoria 12
25 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 Escribir en pantalla el valor de la
posici´on de memoria 12
26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Parar la m´aquina
.
.
.
Tabla 4.1: Ejemplo de programa. A la izquierda se presenta una lista de las operaciones a
efectuar, a la derecha se tiene el programa en la memoria. El contenido de los registros de la
memoria se ha separado en tres bloques (CO, MD y D) para facilitar el estudio, dicha separaci´on
no existe en realidad.
Cada UCP tiene su propio juego de instrucciones, por lo que los programas en c´odigo m´aquina
no son necesariamente portables; es decir, no pueden ser ejecutados en otras m´aquinas.
El programa de la suma que ha servido de ejemplo es muy simple y se puede programar
f´acilmente en c´odigo m´aquina. Sin embargo es f´acil adivinar la complejidad que tendr´ıa el c´odigo
de m´aquina correspondiente a la programaci´on de una tarea con muchas m´as instrucciones. Para
aliviar este problema surge el c´odigo mnemot´ecnico, que se describe en el punto siguiente.
4.1.1 C´ odigo mnemot´ecnico
Una forma de simplificar la programaci´on es reemplazar la codificaci´on binaria por una m´as
inteligible. Tal codificaci´on ha de ser equivalente al c´odigo m´aquina, por lo que en cada sentencia
debe aparecer de manera clara los componentes b´asicos de cada instrucci´on, que son la operaci´on
a realizar, el modo de direccionamiento y el operando.
Una forma sencilla de facilitar la tarea al programador consiste en escribir cada instrucci´on
por su nombre y los n´ umeros en decimal, de forma parecida a
El programa del ejemplo anterior podr´ıa codificarse del modo que se muestra en la tabla 4.2
Esta forma de codificar necesita una posterior traducci´on puesto que en la memoria no se
puede colocar otra cosa que no sea los ceros y unos de las instrucciones y datos. La tarea de
traducir es repetitiva y mecanizable, por lo que se dejaba en manos de personal poco cualificado.
c M.R. Arahal 2003 DISA. ESI. US. 33
PROGRAMA MEMORIA
instrucci´on
.
.
.
LEER 10
LEER 11
CARGAR 10
SUMAR 11
ALMACENAR 12
ESCRIBE 12
PARAR
.
.
.
direcci´on CO MD D
.
.
.
20 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0
21 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1
22 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0
23 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1
24 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0
25 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0
26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
.
.
.
Tabla 4.2: Ejemplo de programa. A la izquierda se presenta una lista de las operaciones a
efectuar, a la derecha se tiene el programa en la memoria. El contenido de los registros de la
memoria se ha separado en tres bloques (CO, MD y D) para facilitar el estudio, dicha separaci´on
no existe en realidad.
Posteriormente las propias computadoras fueron programadas para que llevaran a cabo la tarea
de traducir programas para otras m´aquinas o para s´ı mismas.
4.2 Ensamblador
Los programas traductores tomaron la dura tarea de pasar el c´odigo mnemot´ecnico a c´odigo de
m´aquina. Adem´as se les a˜ nadieron otras funciones que aliviaban a´ un m´as la tarea del progra-
mador:
1. Los programas pueden necesitar valores para los c´alculos, por ejemplo, el valor dos para
hallar la media. Este valor debe residir en memoria al iniciarse la ejecuci´on del programa,
por lo que resulta de ayuda que el traductor lo coloque en la memoria antes de dicha
ejecuci´on. Esta tarea recibe el nombre de establecimiento de valores iniciales o de datos
num´ericos constantes.
2. Tambi´en resulta preciso que existan direcciones de memoria libres para almacenar en ellas
las variables del programa. Por ejemplo, para almacenar un resultado calculado. Puesto
que en la memoria se almacenan tanto datos como instrucciones es preciso alg´ un mecan-
ismo para dejar huecos libres. Es decir, hay que indicar que una determinada posici´on
de memoria no va a contener una instrucci´on sino que ha de dejarse libre para alojar
informaci´on.
Se crearon entonces las pseudoinstrucciones.
´
Estas son anotaciones que el programador
escribe para que el programa traductor realice tareas adicionales durante la traducci´on, como
por ejemplo dejar espacios vac´ıos en medio del programa o colocar valores constantes para que
el programa los use, una vez traducido, durante su ejecuci´on.
El conjunto de instrucciones y pseudoinstrucciones forma el lenguaje ensamblador.
34 TEMA 4. LENGUAJES DE PROGRAMACI
´
ON
A pesar de ser un gran avance, el lenguaje ensamblador sigue siendo de dif´ıcil uso. Para
mejorar sus caracter´ısticas se crearon macroinstrucciones, subprogramas y otros desarrollos que
dieron lugar a los modernos lenguajes de programaci´on. Pero antes de avanzar en este punto se
va a describir el sistema de explotaci´on.
4.3 Sistema de explotaci´ on
Los sistemas de explotaci´on (SE), conocidos tambi´en como sistemas operativos proporcionan el
medio por el cual el usuario puede interaccionar con la m´aquina y aprovechar sus recursos, por
lo que es muy importante comprender como funcionan.
El SE proporciona el rostro o primera imagen que el usuario percibe al usar el ordenador.
Para comprender su importancia pi´ensese, que la mayor´ıa de las personas que usan las computa-
doras no ven otra cosa sino aplicaciones y el SE. En efecto, tareas como: poner en marcha pro-
gramas diversos, acceder a perif´ericos como discos e impresoras, comunicarse con otros equipos,
etc. caen bajo la responsabilidad del SE.
El SE no s´olo es aprovechado por el usuario normal, adem´as ofrece un conjunto de funciones
que son usadas por los programadores para acceder a la circuiter´ıa de cada m´aquina particular,
lo cual es necesario en casos como el acceso a perif´ericos desde programas. Estas funciones tienen
por objeto ocultar los detalles de cada computadora, de forma que el programador pueda escribir
programas que funcionen en m´aquinas con equipos distintos, por ejemplo discos o impresoras de
diferentes marcas.
Todo lo dicho anteriormente sit´ ua al SE como la conexi´on entre la m´aquina, que s´olo maneja
datos binarios, y el usuario, para el cual los ceros y unos son extremadamente inoperantes.
Las aplicaciones son programas que resuelven un problema concreto para el usuario. Ejem-
plos de aplicaciones son los procesadores de texto, programas para dibujo o dise˜ no gr´afico,
videojuegos, etc. El SE en cambio se dedica a gestionar el uso de la computadora en s´ı. Las
aplicaciones se apoyan a menudo en el SE para acceder a las entra˜ nas del sistema: los cirtuitos.
En la figura 4.1 se presenta un esquema en el que se hace patente la situaci´on del SE para
los distintos usuarios del sistema. En primer lugar, el usuario de aplicaciones interacciona con
´estas y no ha de preocuparse por los detalles del SE o del equipo que utiliza. A un nivel
inferior trabaja el programador de aplicaciones, que en muchos casos ha de conocer a fondo el
SE, pero que no necesita saber las particularidades de la circuiter´ıa de los distintos equipos.
Finalmente, el programador de sistemas ha de enfrentarse a un hecho importante del mundo
real: las computadoras de distintos modelos o fabricantes tienen circuitos distintos, que han de
ser tratados de forma diferenciada.
A la luz de dicha figura se puede decir que el SE es un conjunto de programas que ofrecen a
los usuarios una forma sencilla, flexible y r´apida de acceso a los recursos ocultando los detalles
del equipo. Este hecho, la ocultaci´on, es de gran importancia pues permite desarrollar programas
sin conocer los detalles llamados de bajo nivel, como por ejemplo el modo de acceder a un
disco en particular.
c M.R. Arahal 2003 DISA. ESI. US. 35
Sistema de explotación
Aplicación
Circuitos de cada máquina particular
Usuario
Programador
Programador SE
Figura 4.1: El sistema de explotaci´on visto por los distintos usuarios del sistema.
Intérprete de comandos
Nivel intermedio
Núcleo
Figura 4.2: Estructura de los sistemas operativos organizada por niveles.
4.3.1 Estructura
Las tareas de los SE son muy variadas. En principio se puede fijar la atenci´on en programas
como el ensamblador y el cargador, pero hay m´as: desde rutinas para enviar caracteres a un
dispositivo hasta programas que permiten manejar ficheros enteros. De hecho, el SE cubre el
espacio existente entre el usuario y la circuiter´ıa de la m´aquina mediante una estructura en la
que se pueden distinguir varios niveles.
Un SE se compone de m´odulos con funciones asignadas. El primero es el n´ ucleo que es un
m´odulo de servicio para los dem´as. Los otros se encargan de la memoria, las E/S, memorias
auxiliares, asignaci´on recursos. De este modo, la organizaci´on del SE queda como un conjunto
de capas, de forma que las superiores hacen uso de las inferiores como muestra la figura 4.2.
• N´ ucleo. Es el de m´as bajo nivel, pues descansa sobre la circuiter´ıa de la computadora,
proporcionando servicios a las capas m´as altas. Entre las funciones que tiene asignada
destacan la gesti´on de interrupciones, mediante las cuales es posible realizar tareas como
la asignaci´on de trabajo al procesador y la comunicaci´on entre los distintos programas
• Nivel intermedio. Aunque puede estar subdividido en varios niveles, se presenta aqu´ı como
uno solo por simplicidad. Las tareas que realiza son : tratamiento de E/S a nivel de ficheros
Memoria virtual, etc
• Int´erprete de comandos. Ya se ha indicado que es el responsable de leer las ´ordenes del
usuario y procesarlas.
El sistema de explotaci´on se divide en numerosos programas que se hacen cargo de las diversas
tareas. Entendido como un conjunto, el SE no tiene que estar en memoria completo, sino que
36 TEMA 4. LENGUAJES DE PROGRAMACI
´
ON
las distintas partes pueden estar en el disco y ser llamadas en el momento en que se las necesite.
Ahora bien, siempre debe existir una parte en memoria llamada supervisor residente que
incluye al menos las rutinas encargadas de las siguientes tareas:
• Aceptar ´ordenes del usuario a trav´es del teclado.
• Analizar las ´ordenes o comandos.
• Buscar el programa necesario para cada comando, por ejemplo, para borrar un fichero o
copiarlo o para usar una aplicaci´on.
• Cargar el programa (de borrado, de copia, aplicaci´on, etc.) y lanzar su ejecuci´on.
• Retomar el control al t´ermino de la ejecuci´on.
4.3.2 Funciones de los sistemas de explotaci´ on
El SE realiza numerosas funciones, todas encaminadas a ayudar al usuario y a mejorar el
rendimiento de la m´aquina. A continuaci´on se da una lista no exhaustiva clasificada por el
tipo de tarea.
Entradas y salidas
Los dispositivos perif´ericos usados para la E/S de datos son muy distintos entre s´ı, lo cual
implica la necesidad de desarrollar comunicaciones espec´ıficas para cada tipo. El SE debe limar
estas diferencias, de forma que el programador pueda solicitar operaciones de lectura/escritura
de forma parecida, con independencia del dispositivo usado.
La E/S de datos desde perif´ericos se realiza por medio de programas concretos. El programa
debe mandar se˜ nales de control como: puesta en marcha, posicionamiento de partes m´oviles,
petici´on de mensajes. Adem´as se ha de coordinar la comunicaci´on para asegurar que sea r´apida y
sin errores. Todo ello requiere una programaci´on cuidadosa. Los SE incluyen rutinas que realizan
estas tareas de forma que el programador pueda usarlas. Esto ahorra tiempo al programador y
aumenta la fiabilidad.
Dentro de los procesos de E/S merece ser destacado el problema de la detecci´ on de er-
rores. Las operaciones que implican trasvase de informaci´on est´an sujetas a errores provocadas
por ruidos en las l´ıneas de transmisi´on. El sistema de explotaci´on debe detectar estas situaciones
y actuar de acuerdo a la gravedad del problema: bien recuperando autom´aticamente los datos
corruptos o avisando de la existencia de errores o incluso parando el sistema. Para detectar los
errores en transmisiones existen t´ecnicas que se detallan en el cap´ıtulo dedicado a la codificaci´on
binaria de la informaci´on.
Debido a que los perif´ericos usan velocidades de transmisi´on muy diferentes a la de la UCP,
se suelen usar zonas de almacenamiento temporal. En ellas los datos son almacenados hasta que
el dispositivo de destino est´e listo para aceptarlos. Se consigue de este modo que la UCP no
c M.R. Arahal 2003 DISA. ESI. US. 37
raíz
config programas sistema
cc ens editor
conect grafic
juan mateo carlos
usuarios
dietas juegos ficha prueba listin matriz
ahorcado gusano
Figura 4.3: ´arbol de directorios en un SE particular.
tenga que espera al perif´erico. Los perif´ ericos virtuales surgen de esta idea y se explicar´an
en una secci´on posterior.
Sistema de archivos
En los dispositivos de almacenamiento masivo como discos, la informaci´on se agrupa en archivos
o ficheros. A su vez, los ficheros pueden agruparse para formar directorios o carpetas que
sirven para organizar la informaci´on, del mismo modo que en un fichero convencional se puede
clasificar los asuntos en carpetas y ´estas en cajones.
Los directorios pueden a su vez formar parte de directorios mayores, dando lugar a una
estructura arborescente. Esta organizaci´on jer´arquica es llamada ´ arbol de directorios. En
la figura 4.3 se muestra una de estas estructuras. A partir de la ra´ız, que es el directorio superior,
parten otros directorios que a su vez pueden contener archivos (indicados en letra cursiva) y otros
directorios. El objetivo de esta organizaci´on es mantener la informaci´on estructurada para poder
acceder a ella eficientemente.
Los archivos tienen un nombre que los identifica dentro del directorio, por ejemplo los ficheros
listin y matriz de la mencionada figura 4.3. Los directorios tambi´en se identifican mediante un
nombre como es el caso de usuarios y pedro.
Las operaciones que se pueden realizar con archivos son: crear, borrar, renombrar, cambiar
la ubicaci´on dentro del ´arbol, copiar, a˜ nadir informaci´on , etc. El SE provee los programas
necesarios para llevar a cabo tales tareas.
Del mismo modo los directorios pueden ser objeto de diversas acciones, como:
• Crear. El directorio nace vac´ıo, es decir, sin ficheros en ´el. Hay que especificar el nombre
con el que se va a denominar.
• Borrar. El directorio ha de ser previamente vaciado borrando los ficheros y subdirectorios
que contiene.
38 TEMA 4. LENGUAJES DE PROGRAMACI
´
ON
• Listar. Consiste en abrir el directorio y leer los ficheros y subdirectorios que contiene.
• Renombrar. El nombre del directorio se puede cambiar sin afectar a su contenido. Adem´as,
es posible recolocar el directorio dentro del ´arbol.
Dos archivos distintos pueden tener el mismo nombre si pertenecen a directorios distintos.
Por este motivo, si se quiere hacer referencia a un archivo de forma un´ıvoca no basta con dar
el nombre. Es necesario especificar el camino de directorios. En el ejemplo de la figura 4.3
mediante ra´ız-usuarios-juan-dietas
1
se designa el camino absoluto para llegar al fichero
dietas (se llama absoluto porque parte del directorio ra´ız).
La gesti´on del sistema de archivos puede realizarse por medio de comandos u ´ordenes intro-
ducidas por el teclado (como es el caso de UNIX y MS-DOS) o utilizando una pantalla gr´afica
cuyos s´ımbolos se activan y manejan con el rat´on (como es el caso de los sistemas de ventana).
En ambos casos es el SE correspondiente el que recibe la operaci´on a realizar y la lleva a cabo.
Ejecuci´ on de programas
La ejecuci´on de un programa implica que el SE debe ceder parte del control de la m´aquina al
mismo. Al acabar la ejecuci´on el SE retoma el control. Esta tarea se descompone en varias
operaciones, como son: localizar el programa en el disco, proporcionar un lugar en la memoria
para cargarlo, realizar la carga desde el disco, dar al contador de pasos del programa la direcci´on
de comienzo y retomar el control al finalizar.
El programa cargador que ha sido aludido numerosas veces tiene por misi´on colocar en la
memoria el programa que se quiere ejecutar y dar comienzo a su ejecuci´on. Durante la misma,
el control de la m´aquina pertenece total o parcialmente al programa que se ejecuta. Cuando
´este finaliza, devuelve al SE tal control. En la figura 4.4 se muestra un diagrama del programa
cargador correspondiente a la computadora CESIUS que sirve para ilustrar el proceso descrito.
Cargador
Programa
Programa en
código
máquina
COMPUTADORA
resultado
entrada
COMPUTADORA
Figura 4.4: El programa cargador.
1
En este ejemplo se ha usado el gui´ on como separador de directorios, en MS DOS el separador es la barra
invertida \ y en UNIX es la barra /.
c M.R. Arahal 2003 DISA. ESI. US. 39
En algunos sistemas la UCP reparte su tiempo entre varias tareas. En estos sistemas mul-
titarea se suele vigilar el tiempo que cada programa pasa utilizando la UCP y tambi´en las
zonas de memoria usadas por cada uno. Estas cuestiones se analizar´an m´as adelante.
Ayuda al usuario
Los usuarios necesitan a menudo acudir al manual del SE para realizar una tarea. Algunos SE
incluyen la posibilidad de consultar el manual en l´ınea; es decir, no una copia en papel sino en
la pantalla.
El manual puede ser mostrado a petici´on del usuario introduciendo una palabra clave para
identificar la parte del mismo que interesa. Por ejemplo, el nombre de un comando. Esto ahorra
mucho tiempo al usuario y dinero, pues las copias impresas de algunos manuales son gigantescas.
En los entornos gr´aficos de ventana (McIntosh Systems, Solaris, MS Windows) la ayuda se halla
en tal cantidad que es casi innecesario el manual.
Gesti´ on de recursos
Los recursos de la computadora son la UCP, la memoria principal y los perif´ericos. En algunos
sistemas se permite que exista m´as de un programa en ejecuci´on. Esto puede ocurrir porque el
sistema es multiusuario o simplemente multitarea. En tales casos es necesario arbitrar la
adjudicaci´on de los recursos entre los distintos programas y/o usuarios. El sistema de explotaci´on
se hace cargo de esta tarea, para lo cual usa reglas encaminadas a obtener un buen rendimiento
del sistema. Estas reglas deben solventar conflictos surgidos de peticiones simult´aneas de un
mismo servicio.
En los sistemas multitarea la simultaneidad de ejecuci´on se consigue dividiendo el tiempo
de trabajo en peque˜ nos intervalos y asign´andolos a cada programa. En rigor, s´olo un programa
usa la UCP cada instante de tiempo, puesto que (en sistemas monoprocesador) la UCP s´olo
ejecuta una instrucci´on cada vez, la cual pertenecer´a a un programa en particular. Ahora bien,
al dividir el tiempo en trocitos y cambiar de programa frecuentemente se consigue el efecto de
que todos avancen su tarea.
En los sistemas de tiempo compartido varios usuarios utilizan una misma computadora
usando terminales remotos. El SE asigna a cada usuario una porci´on de tiempo para atenderle.
Debido a que el tiempo de proceso de la UCP es mucho menor que el de las acciones humanas,
cada usuario tiene la sensaci´on de que toda la m´aquina es para s´ı
2
.
´
Esta es la forma de uso de
las grandes computadoras centrales a partir de los a˜ nos 70.
La gesti´on de la memoria principal se realiza en base a t´ecnicas sofisticadas destinadas a
proveer de recursos a los programas en ejecuci´on manteniendo la confidencialidad de los datos.
En muchos sistemas la memoria instalada es m´as peque˜ na que la suma de espacios que ocupan los
programas que se han de ejecutar simult´aneamente, por lo que ´estos se han de cargar por partes;
2
En teor´ıa, claro. La realidad es que cuando el n´ umero de usuarios conectados es muy alto se nota una
ralentizaci´ on desesperante.
40 TEMA 4. LENGUAJES DE PROGRAMACI
´
ON
es decir, teniendo en memoria en cada instante s´olo el trozo que interesa en cada momento. La
forma m´as com´ un de gesti´on de memoria es la memoria virtual.
Otras tareas del SE relacionadas con la gesti´on de recursos son la realizaci´on de estad´ısticas
de uso por parte de los distintos usuarios y contabilidad.
Protecci´ on
En los sistemas multiusuario es deseable que unos usuarios no puedan interferir en el trabajo de
los otros. El sistema de explotaci´on debe proporcionar mecanismos para mantener la confiden-
cialidad de los datos. Se ha de evitar que ning´ un usuario pueda leer o modificar la informaci´on
que pertenece a otro, est´e situada en la memoria principal o en el disco.
Adem´as, en sistemas con posibilidad de acceso remoto
3
es indispensable contar con medios
para asegurar que s´olo las personas autorizadas acceden al sistema. En la mayor´ıa de los casos
esto se resuelve asignando a cada usuario un nombre identificativo y una palabra secreta. Cuando
el usuario se conecta a la m´aquina el sistema pregunta ambos datos y comprueba la concordancia
usando su base de datos. En la historia de las redes inform´aticas ha habido casos c´elebres de
personas que han aprovechado m´ınimos fallos de seguridad para acceder e incluso modificar
informaci´on restringida.
Otro tipo de protecci´on concierne al funcionamiento del sistema. Por ejemplo, no es deseable
que un usuario de un sistema de tiempo compartido consiga ejecutar sus programas m´as r´apido
que los dem´as sin el conocimiento de nadie. Esto pudiera lograrse en algunos sistemas cambiando
la tabla de prioridades para la ejecuci´on de tareas.
Configurar el sistema
Consiste en fijar las opciones por omisi´on y otros valores que suelen ser constantes durante una
sesi´on de trabajo. Un ejemplo puede ser elegir el idioma del usuario, de forma que el teclado
produzca los caracteres correctos. En muchos casos el proceso de configuraci´on se produce
autom´aticamente durante el arranque de la computadora. En todo caso, el SE debe ofrecer
medios para que cada usuario cambie el aspecto del sistema o las opciones por omisi´on a voluntad.
4.4 Lenguajes de alto nivel
La programaci´on de computadoras ser´ıa una tarea harto desagradable y pesada si no existiesen
los lenguajes de programaci´on. Consid´erese por ejemplo el panorama mostrado en el cap´ıtulo
8, donde se han ilustrado las venjajas de usar un lenguaje simb´olico en lugar de programar en
c´odigo de m´aquina. Los c´odigos mnemot´ecnicos confieren mayor legibilidad al programa y por
tanto facilitan su depuraci´on.
3
A trav´es de redes de computadoras o usando la l´ınea telef´ onica y un modem.
c M.R. Arahal 2003 DISA. ESI. US. 41
Los lenguajes de programaci´on permiten realizar el paso de algoritmo a programa de com-
putadora.
Lenguajes de alto nivel. Persiguiendo una mayor facilidad de la programaci´on se lleg´o a la
observaci´on de que es ´ util disponer de un medio de indicar a la m´aquina tareas complicadas con
pocas sentencias del programa. Por ejemplo: poder realizar una ra´ız cuadrada sin necesidad de
escribir varias p´aginas de programa. Esto se logra con los lenguajes de alto nivel. La correspon-
dencia entre instrucciones de m´aquina y sentencias del lenguaje queda rota. Las sentencias del
programa en alto nivel son traducidas y dan lugar a muchas instrucciones de m´aquina.
Las ventajas de los lenguajes de alto nivel son muchas: mayor legibilidad del programa,
menor tiempo de programaci´on, mayor facilidad para el aprendizaje por parte de personas sin
grandes conocimientos de inform´atica, y sobre todo transportabilidad.
La transportabilidad se consigue gracias a la existencia de programas traductores que con-
struyen las instrucciones de m´aquina necesarias a partir del programa escrito con el lenguaje de
alto nivel. Para cada m´aquina distinta existe un programa que realiza la traducci´on adecuada.
Pero no todo son ventajas, la traducci´on implica una serie de operaciones que antes no ex-
ist´ıan. Adem´as, al utilizar lenguaje de alto nivel a menudo se produce el efecto de ”matar moscas
a ca˜ nonazos”. Ilustremos con un ejemplo esta afirmaci´on. Consideremos la tarea de sumar dos
n´ umeros que en c´odigo de m´aquina queda resuelta con muy pocas instrucciones. Al usar un
lenguaje de alto nivel se escriben sentencias que son luego traducidas. El traductor proporciona
una serie de instrucciones que realizan la suma, en general aparecen m´as instrucciones que el
n´ umero m´ınimo necesario. Esto es debido a que el traductor no tiene la fineza del programador
humano.
Programar con un lenguaje de alto nivel es equivalente a construir una casa con grandes
bloques de cemento frente a construir con ladrillos: es m´as r´apido, pero se derrocha material.
Como consecuencia, los programas en c´odigo de m´aquina se ejecutan m´as rapidamente que los
producidos con un lenguaje de alto nivel, pues ´estos contienen m´as operaciones.
Existen lenguajes de programaci´on que contienen elementos de alto y bajo nivel. Un buen
ejemplo es el lenguaje de programaci´on C. En este lenguaje se pueden escribir expresiones que,
al ser traducidas, producen pocas instrucciones, como en los lenguajes de bajo nivel, y otras de
gran potencia cuyo equivalente en c´odigo de m´aquina son muchas instrucciones.
Los lenguajes de bajo nivel quedan bien reflejados mediante el LS-2 explicado en el cap´ıtulo
8. Como ejemplo de lenguaje de alto nivel se muestra aqu´ı un programa en C.
#include < stdio.h >
void main(void)
{
int i;
for(i=0; i<10; i++)
printf(”\n %d %d”, i, i*i );
printf(”\n Fin”);
}
42 TEMA 4. LENGUAJES DE PROGRAMACI
´
ON
Puede observarse que el programa est´a escrito usando palabras del idioma ingl´es y expresiones
parecidas a las habituales en Matem´aticas.
4.5 Lenguajes interpretados
Como se ha visto son necesarios traductores para los lenguajes de bajo y alto nivel. Es conocido
del cap´ıtulo 8 el programa ensamblador de dos pasos. Recordemos que tiene como misi´on
producir las instrucciones del programa a partir del c´odigo escrito en lenguaje simb´olico en la
forma que se muestra en la figura 4.5.
Traductor
Programa en
código
máquina
en LS-2
Programa
COMPUTADORA
Figura 4.5: El programa traductor para LS-2.
Cuando se usan lenguajes de alto nivel es posible utilizar int´ erpretes o compiladores.
Los int´erpretes realizan la traducci´on y ejecuci´on del programa sentencia a sentencia. En cambio,
los compiladores producen un c´odigo intermedio que sirve para crear un fichero ejecutable que
puede ejecutarse posteriormente tantas veces como se desee.
La forma de trabajo queda reflejada en la figura 4.6. Los bloques marcados como MF
son trozos de programa escritos en el lenguaje de alto nivel y reciben el nombre de m´odulos
de c´ odigo fuente. Estos m´odulos se almacenan en ficheros llamados ficheros fuente. El
compilador acepta varios de estos m´odulos para producir los correspondientes bloques de c´ odigo
objeto. El c´odigo objeto consiste en instrucciones de m´aquina, pero no est´a preparado para
funcionar. Es preciso un proceso de montaje, donde se re´ unen todas las partes para formar el
programa ejecutable.
Obs´ervese que adem´as del c´odigo fuente escrito por el programador existen partes del pro-
grama que proceden de la biblioteca. Se incluyen ah´ı rutinas de uso frecuente para matem´aticas
o para el manejo de perif´ericos, etc. que facilitan la tarea del programador. La biblioteca se
compone de muchos m´odulos de c´odigo objeto que se venden normalmente con el compilador.
El programador no puede ver o cambiar las rutinas incluidas en la biblioteca, pero recibe infor-
maci´on del vendedor para poder usarlas.
El resultado del montaje es un programa ejecutable, consistente en instrucciones de la
m´aquina que se est´e utilizando.
El proceso de creaci´on de programas usando lenguajes de alto nivel involucra seg´ un estamos
viendo muchas operaciones. Los programadores cuentan hoy en d´ıa con aplicaciones que les
permiten escribir c´odigo fuente, compilar, montar e incluso ejecutar paso a paso los programas.
Los pasos que el programador ha de realizar son:
1. Estudio del problema a resolver.
c M.R. Arahal 2003 DISA. ESI. US. 43
Biblioteca
M F 1 M F 2 M F 3
M O 2 M O 1 M O 3
Cargador
Ejecutable en memoria principal
Montador
Fichero ejecutable
Compilador
M F = Módulo en código fuente
M O = Módulo en código objeto
Figura 4.6: Compilaci´on y montaje de m´odulos para crear un fichero ejecutable.
44 TEMA 4. LENGUAJES DE PROGRAMACI
´
ON
2. Desarrollo y verificaci´on de un algoritmo.
3. Estudio de la codificaci´on del algoritmo.
4. Escritura de los ficheros fuente.
5. Compilaci´on.
6. Si hay errores volver a 4, si no proceder al montaje.
7. Si hay errores volver a 4, si no proceder a la prueba de ejecuci´on.
8. Ejecutar programa.
9. Verificar salida proporcionada por el programa.
Se observa que, cada vez que se modifica alguna parte del c´odigo fuente es preciso volver a
compilar y montar. Esto no sucede si se utiliza un int´erprete, a pesar de ello los int´erpretes son
poco usados pues la ejecuci´on es m´as lenta.
4.6 El entorno MATLAB
MATLAB es un programa pensado para realizar c´alculo num´erico. Mediante una ventana per-
mite que el usuario escriba ´ordenes que son interpretadas y ejecutadas en ese momento. A la
vista de los resultados el usuario puede continuar con otras ´ordenes hasta que completa la tarea
que precisa realizar.
Las ´ordenes t´ıpicas son sentencias como y=cos(3)+x/z que permiten al usuario obtener los
resultados de c´alculos complejos.
Adem´as el usuario puede apilar un conjunto de ´ordenes y enviarlas a la ventana de ´ordenes
formando un lote. De este modo el usuario puede apartarse un rato de la pantalla y descansar
mientras aparece la respuesta.
EL conjunto de ´ordenes disponibles en MATLAB permite realizar tares muy diversas, por lo
que constituye un verdadero lenguaje de alto nivel para programar la computadora, aunque hay
que decir que MATLAB no fue creado con este prop´osito. Se trata de un lenguaje interpretado,
lo cual facilita su uso aunque disminuye la velocidad a la que realiza los c´alculos.
En el tema 7 se explicar´an las ´ordenes m´as comunes y el manejo de MATLAB para que sirva
de banco de pruebas con el cual realizar pr´acticas de programaci´on.
Tema 5
Resoluci´ on de problemas
Una vez que se tiene una idea de cual es la estructura y funcionamiento de la computadora digital
es posible preparar el camino para lograr su programaci´on. En primer lugar hay que dejar claro
que un programa es una realizaci´on concreta de un algoritmo que resuelve un problema, por lo
que la tarea dif´ıcil es en la mayor´ıa de los casos la de hallar el algoritmo.
En este tema se van a tratar varios aspectos relacionados con la programaci´on. En primer
lugar se mostrar´a la forma de exponer los algoritmos usando el lenguaje natural de las personas.
Estas descripciones reciben el nombre de pseudoc´odigo, y no constituyen un lenguaje de progra-
maci´on o c´odigo alguno. Posteriormente se mostrar´a c´omo crear representaciones gr´aficas de los
algoritmos llamadas diagramas de flujo. Finalmente, se tratan los problemas que aparecen al
tratar de modificar programas previamente escritos. La soluci´on a tales problemas pasa por un
conjunto de reglas que, restringiendo la libertad del programador, permiten producir programas
legibles y f´acilmente modificables.
5.1 Algoritmos y pseudoc´ odigo
Un algoritmo
1
es un ”conjunto ordenado y finito de operaciones que permite hallar la soluci´on de
un problema”. No debe confundirse algoritmo con programa, este ´ ultimo es la codificaci´on del
algoritmo en alg´ un lenguaje de programaci´on o en instrucciones de la m´aquina. La resoluci´on
de problemas mediante computadora conlleva dos pasos: hallar un algoritmo y su posterior
codificaci´on. De forma gr´afica se ha ilustrado en la figura 5.1.
Algoritmo
resolución codificación
Problema Programa
Figura 5.1: Proceso de resoluci´on de problemas mediante computadora.
El pseudoc´odigo es un modo de especificar la soluci´on de un problema, una expresi´on de
1
La palabra procede de al-Jwarizmi, sobrenombre del c´elebre matem´ atico Moh´ amed ben Musa.
45
46 TEMA 5. RESOLUCI
´
ON DE PROBLEMAS
un algoritmo dada en lenguaje natural, por ejemplo una receta de cocina. Los algoritmos con
que trataremos aqu´ı tienen un car´acter m´as matem´atico. A modo de ejemplo consid´erese el
problema consistente en hallar el resto de la divisi´on entera de un n´ umero a entre otro b. Un
ejemplo de pseudoc´odigo es el siguiente:
1 Hallar el cociente c de a/b
2 Tomar la parte entera del cociente, d = [c]
3 Obtener el resto como a −b ∗ d
4 Fin
En la tabla anterior se ha usado el operador parte entera, simbolizado como [ . ], por ejemplo
[3.742] = 3.
Las operaciones necesarias para resolver el problema han sido especificadas en lenguaje nat-
ural. De este modo el pseudoc´odigo es una receta v´alida para todo programador, cualquiera
que sea el lenguaje de programaci´on que vaya a usar. En el ejemplo anterior las operaciones
a realizar vienen dadas en secuencia; esto es, una detr´as de otra. Pero ´este no es siempre el
caso, como ocurre en el siguiente ejemplo. Consid´erese la tarea de hallar el valor absoluto de un
n´ umero x.
1 Si x es positivo, el resultado es x
2 Si no, el resultado es −x
3 Fin
Muchos algoritmos requieren la repetici´on de un conjunto de operaciones cierto n´ umero de
veces. En tales casos es conveniente disponer de un modo para indicar dicha repetici´on en lugar
de repetir las sentencias. Por ejemplo, el algoritmo para hallar la norma de un vector v de 10
componentes
2
podr´ıa ser el indicado en la tabla siguiente.
1 Iniciar suma parcial sp a cero
2 Iniciar ´ındice i a uno
3 Hacer:
3.1 Dar a sp el valor sp +v
2
i
3.2 Incrementar i
3.3 Si i > 10 ir al punto 4, si no ir a 3
4 El resultado es

sp
5 Fin
Los tres ejemplos anteriores presentan tres situaciones muy frecuentes en programaci´on y
que ser´an tratadas con detalle en este cap´ıtulo.
Los algoritmos no sirven s´olo para operaciones matem´aticas; como ha sido el caso de los
ejemplos mostrados, tambi´en pueden emplearse en otros contextos como el ejemplo de la receta
2
La norma se calcula como la ra´ız cuadrada de la suma de las componentes al cuadrado,

i=10
i=1
v
2
i
.
c M.R. Arahal 2003 DISA. ESI. US. 47
de cocina. Resulta f´acil imaginar que si la receta no est´a bien explicada es posible que no pueda
llegarse con ´exito al objetivo. Tomemos como ejemplo una receta para freir un huevo:
1 Poner aceite en sart´en
2 Colocar sart´en en fuego
3 Romper huevo haciendo caer el contenido en
sart´en
4 Tirar c´ ascaras a la basura
5 Poner sal en yema
6 Si el huevo est´ a s´ olido ir a 7, si no esperar
7 Servir huevo, fregar sart´en
8 Fin
Dejando aparte la habilidad manual necesaria, es obvio que si la persona que lee la receta
desconoce el significado de alguna acci´on ser´a incapaz de preparar el huevo frito. Esta obser-
vaci´on tambi´en se puede aplicar a los pseudoc´odigos de algoritmos matem´aticos, por lo que hay
que poner especial cuidado en utilizar s´olo aquellos elementos que se suponen conocidos por el
lector.
En la literatura especializada se denomina procesador a la entidad que realiza las operaciones
indicadas por el algoritmo. Las acciones que el procesador conoce se denominan primitivas.
En un algoritmo puede haber operaciones no primitivas siempre y cuando sean definidas usando
acciones primitivas.
5.2 Objetos y operaciones
En la descripci´on de algoritmos es preciso con frecuencia hacer referencia a objetos que es preciso
manipular. Consid´erese el ejemplo de hallar el valor absoluto expuesto anteriormente. En el
pseudoc´odigo hemos utilizado sentencias como ”Si x es positivo, el resultado es x”. En ella hay
un objeto x que, por familiaridad con la notaci´on matem´atica, hemos identificado sin problema
como un n´ umero cualquiera.
En inform´atica se manejan diversos tipos de informaciones, no s´olo num´ericas. Consid´erese
por ejemplo el problema de cifrar un mensaje para transmitirlo de forma secreta. Un modo
sencillo de cifrar mensajes es cambiar cada letra por la siguiente en el alfabeto. De este modo,
el mensaje: ”estamos bien” se convierte en ”ftubnpt cjfo”. El pseudoc´odigo siguiente permite
realizar la tarea de cifrado.
1 Iniciar ´ındice i a 1
2 Tomar l
i
letra i-´esima de la palabra
3 Reemplazar por l
i
+ 1, siguiente en el alfabeto
4 Si l
i
es la ´ ultima letra ir a 6
5 Sumar uno a i
6 Fin
48 TEMA 5. RESOLUCI
´
ON DE PROBLEMAS
En este caso se ha identificado cada letra de la palabra por un s´ımbolo l
i
. Adem´as, se ha
considerado que al sumar uno a una letra se consigue la siguiente letra del alfabeto. Ciertamente,
estos no son usos corrientes de la notaci´on matem´atica.
Para poder escribir algoritmos de forma c´omoda y precisa es conveniente nombrar a distintos
objetos (como n´ umeros o letras) usando para ello identificadores o nombres. El identificador
simboliza una cantidad que puede ser constante o que puede variar a lo largo de la tarea. Cada
identificador hace referencia a un ´ unico objeto que es de un tipo determinado (n´ umero entero,
letra, palabra, n´ umero real, n´ umero complejo, etc.)
En resumen, los objetos tienen un ´ unico nombre que lo identifica. Poseen tambi´en un tipo
que no var´ıa durante el algoritmo. El valor o cantidad representado por el nombre puede variar
durante el algoritmo, en tal caso se dice que el objeto es una variable. Por contra, existen
objetos cuyo valor no cambia, son las llamadas constantes.
Para aclarar los conceptos anteriores consid´erese el problema de obtener dos n´ umeros n´ umeros
enteros a y b y hallarles la media.
1 preguntar el valor de a y b
2 la media es m =
a+b
2
3 Fin
La tabla siguiente muestra los atributos de los objetos que aparecen en el algoritmo anterior.
objeto nombre valor tipo
primer n´ umero a variable n´ umero entero
segundo n´ umero b variable n´ umero entero
media m variable n´ umero real
dos 2 constante n´ umero entero
Obs´ervese que los valores de a y b pasan de ser indeterminados a tener un valor concreto
tras el paso 1. Por este motivo a y b son variables. La ´ unica constante es el n´ umero dos, que se
ha representado con el identificador 2.
Los objetos son manipulados mediante operaciones como la suma, la resta, etc. o mediante
otras acciones ”romper”, ”vaciar”. Los enunciados en los que se indican las manipulaciones
son llamados expresiones. Las expresiones muestran la forma en que tal manipulaci´on se
realiza, para ello se combinan los nombres de objetos con signos que simbolizan operaciones.
Por ejemplo, al escribir m =
a+b
2
se indica que la variable m ha de cambiar su valor tomando el
resultado de sumar a y b y dividir por dos. Las operaciones involucradas son la suma y divisi´on
aritm´eticas.
La descripci´on de un algoritmo no ser´a de ninguna utilidad si contiene operaciones no cono-
cidas por la persona (o mecanismo) que lo recibe. Los lenguajes de alto nivel ponen a disposici´on
del programado muchas operaciones diferentes, por lo que escribir el programa resulta f´acil. En
c M.R. Arahal 2003 DISA. ESI. US. 49
cambio, cuando se usa un lenguaje de bajo nivel es preciso describir cada tarea en funci´on de
operaciones simples, por lo que la escritura es larga y tediosa.
En esta obra, las operaciones que se consideran conocidas por el lector son las corrientes de
la aritm´etica. Hay que destacar sin embargo el uso especial del signo =. En Matem´aticas se
emplea para establecer una relaci´on de equivalencia entre dos t´erminos. Aqu´ı sin embargo se ha
usado para asignar valores a variables. De este modo x = 2 significa que la variable x toma
el valor dos en ese momento, pudiendo m´as adelante alterarse dicho valor mediante una nueva
asignaci´on. Para evitar confusiones se usar´a el signo ←, de forma que se escribir´a x ← 2.
Otra operaci´on que puede parecer poco familiar es la que permite preguntar valores para
asignarlos a variables. Esta operaci´on es llamada lectura y equivale a la entrada de datos
en la computadora. Estos datos pueden provenir de cualquier perif´erico, la caracter´ıstica que
los distingue es que no son conocidos a la hora de programar, por lo que han de ser obtenidos
durante la ejecuci´on.
Los tipos de objetos que se utilizar´an son tambi´en los habituales de las Matem´aticas: n´ umeros
enteros, reales, vectores y matrices.
Los lenguajes algor´ıtmicos tienen reglas para la escritura destinadas a obtener algoritmos
legibles. No hay espacio en este libro introductorio a la inform´atica para describir en detalle
y con rigor un lenguaje algor´ıtmico. Sin embargo podemos citar las siguientes restricciones,
algunas de las cuales han sido ya comentadas.
• El lenguaje algor´ıtmico debe tener palabras reservadas como ”iniciar”, ”asignar”, ”incre-
mentar”. Los objetos no pueden tomar como nombre ninguna de estas palabras.
• Cada objeto debe tener un identificador.
• Cada acci´on debe escribirse en una sentencia.
• El conjunto de acciones primitivas ha de ser especificado con total claridad formando un
conjunto peque˜ no pero suficiente.
5.2.1 Fases del proceso de resoluci´ on de problemas
Es dif´ıcil concretar en proceso de resoluci´on de problemas pues cada problema plantea dificul-
tades especiales. No obstante hay una serie de reglas que conviene observar a la hora de construir
algoritmos.
• Definici´on del problema, de forma que quede absolutamente claro qu´e es lo que se pretende
resolver. Adem´as hay que especificar cu´ales son los datos y cu´ales los resultados buscados.
• Esbozo de la soluci´on. El problema debe partirse en trozos para los cuales se sospecha
que puede haber soluciones conocidas. Es preciso asegurarse que al resolver los trozos se
consigue la soluci´on del problema total.
• Resoluci´on de los subproblemas y prueba de la validez de los mismos.
50 TEMA 5. RESOLUCI
´
ON DE PROBLEMAS
• Expresi´on en pseudoc´odigo de los algoritmos correspondientes a cada parte.
• Prueba de validez del algoritmo que surge de unir todas las partes.
Para seguir estas reglas se dispone de la ayuda de la programaci´on estructurada, que ser´a
tratada m´as adelante. El tipo de problemas que se resuelve para dar los primeros pasos en pro-
gramaci´on es muy simple por lo que no es f´acil ver la utilidad de las recomendaciones anteriores.
5.3 Diagramas de flujo
Un diagrama de flujo u organigrama es una representaci´on gr´afica de las distintas operaciones que
deben ser realizadas por un operador (humano o mec´anico) para la resoluci´on de un problema,
indicando el orden l´ogico de las mismas, las posibles alternativas, etc.
Existen muchos tipos de representaciones gr´aficas. En este texto se va a usar un conjunto de
s´ımbolos para representar acciones y decisiones, conectados por flechas que indican el orden en
que se realizan. Hay que hacer notar que la representaci´on gr´afica de un algoritmo no es exclusiva
de la inform´atica, sino que puede usarse en cualquier entorno que requiera planificaci´on. M´as
a´ un, la representaci´on del algoritmo es independiente de la programaci´on en un lenguaje u otro
o de la m´aquina en que vaya a ser ejecutado.
5.3.1 S´ımbolos
La figura 5.2 muestra el conjunto de s´ımbolos que se van a usar para realizar diagramas de flujo.
De izquierda a derecha y de arriba a abajo se tiene:
• Comienzo de m´ odulo. Marca el comienzo de un bloque del programa.
• Proceso. Este elemento indica la realizaci´on de operaciones diversas. Equivale a una o m´as
acciones del pseudoc´odigo.
• Bifurcaci´ on condicional. Permite elegir una de entre dos opciones en funci´on de cierta
condici´on que se ha de especificar. Permite representar operaciones de decisi´on como ”si
... , entonces ... ; si no ...”, como se ha visto en el ejemplo del pseudoc´odigo para
calcular el valor absoluto de un n´ umero.
• Operaci´ on de entrada o salida. Gracias a este bloque se pueden tomar datos del exte-
rior (entrada) o enviar resultados al exterior de la computadora (salida). Equivale a las
operaciones de lectura y escritura del pseudoc´odigo.
• Fin de m´ odulo. Marca el final de un m´odulo.
• Subprograma. Los subprogramas son bloques de c´odigo preparados para ser incluidos en
programas, de forma que se ahorre tiempo de preparaci´on de los mismos. Un subprograma
se hace cargo de una parte de la tarea que puede ser repetida en varias partes del programa
o en programas distintos. Por ejemplo, el c´alculo de la norma de un vector o el determinante
de una matriz.
c M.R. Arahal 2003 DISA. ESI. US. 51
• M´ odulo. Este s´ımbolo indica que la operaci´on es realizada por un bloque que se detalla
en otro lugar. Un m´odulo se diferencia de un subprograma en que ´este tiene siempre
entidad propia en el c´odigo, mientras que el m´odulo es el resultado de una divisi´on en la
representaci´on gr´afica y puede no afectar a la codificaci´on.
• Inicio y actualizaci´ on. Realizaci´on de operaciones iniciales de un m´odulo. Asignaci´on de
valores iniciales y modificaci´on de ´ındices y contadores, usados sobre todo en bucles.
Proceso Entrada o salida Inicio de bloque Bifurcación
Módulo Subprograma Actualización Fin de bloque
Figura 5.2: S´ımbolos para la confecci´on de diagramas de flujo.
A modo de ejemplo consid´erese el problema consistente en ”leer dos n´ umeros y escribir la
suma”. El pseudoc´odigo correspondiente a este programa se muestra en la tabla 5.1. Las opera-
ciones de lectura consisten en tomar datos provenientes de un perif´erico exterior, normalmente
el teclado; es decir, la operaci´on marcada como leer provoca que se obtenga un dato del exterior.
1 Leer primer sumando a
2 Leer segundo sumando b
3 Hallar la suma de los sumandos c = a +b
4 Escribir c
5 Fin
Tabla 5.1: Programa para sumar dos n´ umeros y escribir el resultado.
La figura 5.3 muestra el diagrama de flujo correspondiente a dicha tarea. Conviene observar
que para asignar su valor a la variable C se ha usado la notaci´on C ← A + B, que significa
introducir en C el valor A+B; esto no debe inducir a pensar que C = A + B en el sentido
matem´atico dado usualmente a tales ecuaciones. La interpretaci´on correcta es que la variable
C toma en ese instante el valor corrrespondiente a la suma A + B, pudiendo posteriormente
cambiar este valor por otro.
Un ejemplo m´as complejo es el correspondiente a un programa que tiene que averiguar si
un n´ umero entero positivo dado es primo o no. El algoritmo consiste en dividir por todos los
enteros menores que el n´ umero y ver si en alg´ un caso el resto vale cero. El pseudoc´odigo puede
expresarse en la forma indicada por la tabla 5.2
En la figura 5.4 se muestra el diagrama de flujo del programa anterior. Se ha de notar que el
c´alculo del resultado se ha detallado en un m´odulo aparte; de este modo resultan dos diagramas
52 TEMA 5. RESOLUCI
´
ON DE PROBLEMAS
leer dato A
leer dato B
calcular
C A + B
escribir C
fin
inicio
Figura 5.3: Diagrama de flujo de un programa para sumar dos n´ umeros.
1 Leer n´ umero x
2 Iniciar resultado al valor CIERTO
3 Iniciar divisor a 2
4 Hacer:
4.1 Dividir x entre divisor
4.2 Si el resto es cero, hacer resultado igual a
FALSO
4.3 Incrementar divisor una unidad
4.4 Si el divisor es igual a x ir a 5, sino ir a 4
5 Escribir resultado
6 Fin
Tabla 5.2: Programa para hallar si un n´ umero es primo.
separados. El objetivo de la separaci´on es mejorar la legibilidad del conjunto. En efecto, de un
golpe de vista se puede, a partir del diagrama de la izquierda, reconocer el problema al que se
da soluci´on, mientras que el diagrama de la derecha explica en detalle el proceso seguido.
5.4 Programaci´ on estructurada
Es dif´ıcil hacer un resumen de las ideas de la programaci´on estructurada a lectores que no tienen
cierta experiencia en programaci´on. Esto sucede porque la programaci´on estructurada pretende
evitar cierto tipo de situaciones que aparecen en programas grandes y medianos, pero que no
se advierten en los ejemplos dados a principiantes. Una de estas situaciones es la siguiente: un
programador escribe un diagrama de flujo tal y como aparece en la parte derecha de la figura 5.5.
Transcurrido cierto tiempo, el mismo programador es requerido para realizar una modificaci´on
en el mismo.
´
Este intenta modificar el diagrama, pero la tarea le resulta ardua. Analizando los
motivos por los que el trabajo no avanza con rapidez se puede observar que:
c M.R. Arahal 2003 DISA. ESI. US. 53
inicio programa
resultado = NO
SI
divisor
divisor = x ?
fin cálculo
Incrementar
NO
SI
es resto = 0 ?
NO
inicio cálculo
escribir
resultado
leer x
calcular resultado
(ser x primo)
fin programa
hallar resto de
dividir x por divisor
resultado SI
divisor 2
Figura 5.4: Diagrama de flujo de un programa que comprueba si el n´ umero dado es primo.
Figura 5.5: Diagrama de flujo estructurado (izquierda) y no estructurado (derecha).
54 TEMA 5. RESOLUCI
´
ON DE PROBLEMAS
• Es dif´ıcil hallar el punto en el cual hay que eliminar un bloque o insertar uno nuevo, pues
todo est´a enmara˜ nado.
• Incluso aunque el diagrama tuviera una mejor disposici´on gr´afica, cuesta trabajo ver si
una modificaci´on de una parte dar´a resultados indeseables en otra, debido al gran n´ umero
de interconexiones que hay.
Y los problemas no acaban ah´ı. Tras realizar los cambios, el programador deber´a probar el
nuevo programa para comprobar su correcto funcionamiento. Cada vez que se detecte un error
deber´a volver a repetir el tedioso proceso de modificaci´on. Los problemas descritos no ser´ıan
tales si el programador hubiera podido escribir el diagrama de flujo de forma parecida a la de
la figura 5.5 (izquierda), en la que se aprecia que no existen cruces de l´ıneas y que cada m´odulo
tiene una entrada y una salida. Sobre estos dos aspectos se insistir´a m´as adelante, por ahora no
es necesario comentar m´as las ventajas que para cualquier proyecto supone el tener programas
legibles y comprensibles.
5.4.1 Flujo lineal
Los diagramas se dice que tienen flujo lineal cuando no existen conexiones de vuelta atr´as o
laterales. El flujo lineal se puede conseguir restringiendo los bloques constructivos a formatos de
entrada ´ unica y salida ´ unica. Es decir, usando para la confecci´on del diagrama de flujo bloques
a los cuales llega s´olo una flecha y de los cuales parte s´olo una flecha. La secuencia, la selecci´on
entre alternativas y la iteraci´on forman un conjunto suficiente de m´odulos constructivos para
describir cualquier algoritmo. Es decir, es posible siempre realizar un diagrama de flujo que
contiene s´olo los bloques citados. En la figura 5.6 se tienen tales bloques; se puede ver que son
de entrada ´ unica y salida ´ unica.
secuencia bucle
NO SI
?
¿
condición
bifurcación
condición
¿
?
cuerpo del bucle
módulo 1
módulo 2
opción 1 opción 2
Figura 5.6: Bloques constructivos para programas estructurados.
En lo sucesivo se usar´an estos bloques para realizar los diagramas de flujo, pero antes de
pasar a los ejemplos es preciso comentar c´omo se va a producir la descomposici´on del problema
global en los m´odulos presentados.
5.4.2 An´alisis descendente
En ocasiones se presenta la programaci´on estructurada como un conjunto de reglas a seguir. En
realidad no hay una definici´on exacta de programaci´on estructurada, por lo que las reglas son
c M.R. Arahal 2003 DISA. ESI. US. 55
s´olo una aproximaci´on. Una idea importante de la programaci´on estructurada es el an´ alisis de-
scendente o jerarquizado. Consiste ´este en identificar las funciones a cumplir por el programa
a nivel global y proceder luego a descomponer estas funciones en otras menores.
´
Estas a su vez
se vuelven a descomponer en un proceso que termina cuando se alcanza el nivel del lenguaje o
c´odigo usado. De este modo, el dise˜ no del programa se realiza por niveles. Se comienza por el
nivel m´as general y se termina por lo particular o concreto. Antes de pasar al siguiente nivel se
debe comprobar la validez formal de la soluci´on actual.
fin leer
inicio leer
fin calculo
escribir
resultado
inicio
fin
leer datos
fin escribir
calcular resultado
inicio escribir
inicio calculo
Figura 5.7: El an´alisis descendente aplicado a la confecci´on de diagramas de flujo.
Al confeccionar el diagrama de flujo de un programa o m´odulo se ha de usar el an´alisis
descendente. El resultado es un conjunto de diagramas que describen el programa con un nivel
de detalle creciente. En un primer nivel el diagrama de flujo de cualquier programa puede tomar
la forma dada en la figura 5.7. En un segundo nivel, cada uno de los m´odulos se detalla en un
diagrama aparte. El proceso continua mientras existan bloques que necesiten explicaciones
adicionales.
´
Esta ha sido la t´ecnica usada en el ejemplo del programa que comprueba si un
n´ umero es primo (ver figura 5.4).
56 TEMA 5. RESOLUCI
´
ON DE PROBLEMAS
Tema 6
Desarrollo de algoritmos b´asicos
Antes de comenzar a programar es preciso saber desarrollar algoritmos. Como se ha visto en
el tema anterior, un algoritmo es una descripci´on detallada de los pasos a seguir para resolver
una tarea. Los pasos han de ser operaciones capaces de ser llevadas a cabo por el operador al
cual va dirigido el algoritmo. En este tema se va a suponer que el operador es una persona con
conocimientos matem´aticos suficientes como para saber realizar:
• Operaciones aritm´eticas (suma, multiplicaci´on, etc.)
• Operaciones l´ogicas (comparaci´on, producto l´ogico, comprobaci´on de igualdad, etc.)
• Asignaci´on de valores a variables
• Lectura y escritura de valores
• Acceso a vectores y matrices mediante sub´ındices
Por tanto los algoritmos estar´an escritos usando estas operaciones elementales, y no otras.
6.1 C´alculos en secuencia
Los c´alculos en secuencia no presentan dificultad alguna desde el punto de vista algor´ıtmico.
Los diagramas de flujo resultantes son lineales, sin bifurcaciones o bucles, y por tanto de f´acil
creaci´on.
Un programa evoluciona de modo lineal cuando realiza toda la secuencia de instrucciones de
forma continua, sin saltos en la ejecuci´on. Este es el caso presentado en el ejemplo de la suma
de dos n´ umeros (ver figura 6.1). La realizaci´on y representaci´on en diagrama de flujo de estos
programas no conlleva ninguna dificultad.
Como ejemplos se propone realizar el diagrama de flujo de algoritmos que resuelvan las tareas
siguientes:
57
58 TEMA 6. DESARROLLO DE ALGORITMOS B
´
ASICOS
leer dato A
leer dato B
calcular
C A + B
escribir C
fin
inicio
Figura 6.1: Diagrama de flujo de un programa para sumar dos n´ umeros.
• Leer dos valores del teclado y escribir media aritm´etica.
• Leer los coeficientes de una ecuaci´on de segundo grado de la forma x
2
+ bx + c = 0 y
escribir las soluciones.
• Leer los coeficientes de un polinomio de grado tres de la forma P(x) = x
3
+ax
2
+bx +c.
Leer a continuaci´on un cierto valor para la variable independiente x y escribir P(x).
6.2 Bifurcaciones
Las bifurcaciones permiten tomar un camino o su alternativa. Como es sabido, dentro de un
bloque bifurcaci´on puede situarse otro, creando de este modo bifurcaciones anidadas.
Las bifurcaciones permiten que el programa discurra por un camino o su alternativa en
funci´on de condiciones. Un ejemplo muy simple es el siguiente: leer un n´ umero por teclado y
escribir el valor absoluto del mismo. Una forma de resolver el programa es mediante el diagrama
de flujo de la figura 6.2. La idea es hacer que la secuencia de ejecuci´on pase por la escritura del
n´ umero o del n´ umero cambiado de signo en funci´on de que sea positivo o negativo.
Las bifurcaciones se pueden encadenar para dar soluci´on a situaciones m´as complejas. Por
ejemplo consid´erese la funci´on: NC(x, y), con (x, y) ∈ IR
2
→ c ∈ {1, 2, 3, 4}. Esta funci´on de-
vuelve el n´ umero de cuadrante en que se encuentra el punto (x, y) de IR
2
. El diagrama de la
figura 6.3 presenta una posible soluci´on mediante el uso de bifurcaciones en cascada.
Desarrolle los diagramas de flujo que resuelven los problemas siguientes:
• Leer un n´ umero real x y calcular y escribir su valor absoluto (sin usar vabs).
c M.R. Arahal 2003 DISA. ESI. US. 59
escribir x escribir -x
fin programa
SI NO
es x > 0
¿
?
inicio programa
leer x
Figura 6.2: Diagrama de flujo con ruptura de secuencia.
es x > 0
¿
?
SI NO
¿
?
es y > 0
SI NO
¿
?
es y > 0
SI NO
Escribir 1 Escribir 4 Escribir 2 Escribir 3
leer x e y
inicio programa
fin programa
Figura 6.3: Programa que escribe el cuadrante en el cual se sit´ ua el punto del plano dado por
(x, y).
60 TEMA 6. DESARROLLO DE ALGORITMOS B
´
ASICOS
• Leer las componentes de un vector de IR
2
(x e y). Escribir el n´ umero del cuadrante en que
se halla. Suponga que ninguna componente es nula.
• Leer un n´ umero del teclado. Si est´a en el intervalo (2, 8] escribir en la pantalla un uno, en
caso contrario escribir un cero.
• Leer un valor x del teclado y escribir el valor f(x) siendo f una funci´on definida a trozos
del siguiente modo:
x f(x)
x ∈ [−1, 3) 10 −x
x > 50 1
resto 0
6.3 Bucles simples
Muchos algoritmos requieren la repetici´on de operaciones cierto n´ umero de veces. Al conjunto
de operaciones que se repite se le llama cuerpo del bucle. El bucle queda completamente definido
por el cuerpo y la condici´on de parada o salida. Cada vez que el programa en ejecuci´on pasa
por el cuerpo del bucle se dice que ha realizado una iteraci´on.
El bloque constructivo que se ha denominado iteraci´on permite plasmar en diagramas de
flujo este tipo de procesos. La bifurcaci´on al final del bloque hace las veces de control de salida.
En ocasiones es conveniente poner el control de salida en la cabeza del bucle, como se indica en
la figura 6.4. De este modo se puede salir del bucle sin haber realizado ninguna operaci´on.
condición
¿
?
cuerpo del bucle
Figura 6.4: Bucle con control de salida en cabeza.
A modo de ejemplo consid´erese la tarea de construir un vector v de dimensi´on N de forma
que la componente i−´esima tenga el valor v
i
= i
2
−4. Una posible soluci´on viene expresada por
el pseudoc´odigo siguiente de la tabla 6.1.
Los siguientes ejercicios se pueden resolver con ayuda de bucles.
• Leer n (suponiendo que es entero y positivo) y escribir el factorial n!.
• Leer las 10 componentes de un vector de dimensi´on 10. Escribirlo luego en la pantalla.
• Leer N (suponer que es un entero mayor que uno). Leer a continuaci´on las N componentes
de un vector de dimensi´on N. Escribir luego el vector.
c M.R. Arahal 2003 DISA. ESI. US. 61
1 Leer dimensi´ on N
2 Iniciar ´ındice i ← 1
3 Si i > N, ir a 6
4 v
i
← i
2
−4
5 i ← i + 1
6 ir a 4
7 Fin
v
i
fin programa
inicio programa
leer dimensión N
i i + 1
?
¿
NO
i > N
2
- 4 i
i 1
SI
Tabla 6.1: Ejemplo de algoritmo con un bucle simple.
• Leer las 5 componentes de un vector y escribirlo luego al rev´es.
• Leer n (que se supone es entero y mayor que uno), construir un vector v ∈ IR
n×1
, tal que
el elemento k−´esimo sea v
k
= k
2
−3 para k = 1, ..., n.
• Leer N y un vector de dimensi´on N. Calcular y escribir la componente de mayor valor (no
usar la funci´on de MATLAB max).
• Leer N y un vector de dimensi´on N. Calcular y escribir la componente de mayor valor y
su ´ındice dentro del vector. (no usar max).
• Leer v ∈ IR
n×1
, hallar y escribir m = v
t
v, m ∈ IR
• Leer del teclado un n´ umero indeterminado de alturas. Dejar de leer cuando se haya
introducido una altura negativa. Escribir la media de las alturas v´alidas (las no negativas).
• Escribir en pantalla los n´ umeros del 90 al 100 y los caracteres de la tabla ASCII cuyos
c´odigos son tales n´ umeros.
• Hallar el m´aximo com´ un divisor de dos n´ umeros enteros positivos a y b dados.
6.4 Bucles anidados
Dentro de un bucle pueden aparecer operaciones diversas, en particular puede haber otro bucle.
En tal caso se dice que los bucles est´an anidados. En cada iteraci´on del bucle externo se realiza
el bucle interno un cierto n´ umero de veces hasta que se produzca la condici´on de salida del
mismo. Este es el caso cuando se trabaja con matrices. En la figura 6.5 se presenta un diagrama
de flujo que puede utilizarse para recorrer la matriz. Se ha supuesto que la matriz tiene M filas
y N columnas. Obs´ervese que cada fila (´ındice K) se recorre variando el ´ındice de columnas J
desde 1 a N en el bucle interior. El bucle exterior permite variar K de 1 a M.
62 TEMA 6. DESARROLLO DE ALGORITMOS B
´
ASICOS
¿ J > N ?

no
iniciar índice de
columnas J a 1
Incrementar J
¿ K > M ?

no
Incrementar K
iniciar índice de
filas K a 1
Operar con el
elemento a
KJ
Figura 6.5: Bucles anidados para trabajar con una matriz.
c M.R. Arahal 2003 DISA. ESI. US. 63
Los ejercicios que se proponen a continuaci´on se pueden resolver con un par de bucles anida-
dos.
• Lectura de una matriz m×n. Se han de leer del teclado las dimensiones m y n (suponga
que son n´ umeros enteros positivos). A continuaci´on se han de leer los elementos a
kj
de
una matriz A de m filas y n columnas. Finalmente se presentar´a en la pantalla la matriz
le´ıda.
• Construir una matriz A m×n cuyo elemento gen´erico a
kj
viene dado por a
kj
= k
2
−j
• Dada una matriz A de dimensiones m× n, se quiere anular (poner a cero) los elementos
de su diagonal principal y escribir la matriz resultante.
• Suma de matrices. Dadas dos matrices A ∈ IR
m×n
y B ∈ IR
m×n
se quiere calcular y
escribir la matriz C obtenida como suma de las anteriores C = A + B. (realice la suma
elemento a elemento, sin utilizar la suma matricial que ofrece MATLAB).
• Matriz traspuesta. Dada una matriz A ∈ IR
m×n
calcular su traspuesta B = A
t
(ha de
hacerse mediante bucles, sin usar la ap´ostrofe de MATLAB).
• Submatriz triangular. Dada una matriz A ∈ IR
m×n
se desea mostrar en pantalla los
elementos de su submatriz triangular inferior. Es decir, deben aparecer en la pantalla s´olo
los elementos de A que est´an por debajo de la diagonal principal. Se supone que tanto m
como n son n´ umeros mayores que uno.
• Algoritmo para obtener la multiplicaci´on de A ∈ IR
m×n
por B ∈ IR
n×p
dadas A y B.
6.5 Otros procesos iterativos
6.5.1 Sucesiones y series
• Se quiere construir y escribir un vector v de dimensi´on n cuyas componentes siguen la ley
v
k
= 3 ∗ v
k−1
−k. Tanto n como v
1
son cantidades que han de leerse del teclado.
• Dado un n´ umero x mayor que uno se ha de determinar si es primo. Para ello ha de
comprobar si x es divisible por alg´ un entero en el intervalo (1, x).
• Se desea calcular la suma

n
k=1
1/a
k
siendo los valores a
k
los elementos de la sucesi´on
dada por a
k
= a
k−1
+ a
k−2
con a
1
= 1 y a
2
= 1. El l´ımite n ha de leerse del teclado y se
supone mayor que dos.
6.5.2 Ordenaciones
• Dado un vector v de dimensi´on n cuyas componentes son todas positivas o cero se desea
reordenar sus componentes de mayor a menor. Por ejemplo, si
v = [2 3 8 5 4]
el resultado ha de ser un nuevo vector:
w = [8 5 4 3 2]
64 TEMA 6. DESARROLLO DE ALGORITMOS B
´
ASICOS
• Repetir el ejercicio anterior pero sin usar un vector auxiliar como w. El resultado que se
pretende conseguir es que el propio vector v tenga sus componentes ordenadas.
• Igual que el anterior pero suponiendo que v contiene cantidades positivas y negativas, por
ejemplo:
v = [−7 3 8 −9 5 4 0 −1]
ha de dar como resultado el propio vector reordenado as´ı:
v = [8 5 4 3 0 −1 −7 −9]
• Un fabricante de autom´oviles dispone de un modelo de veh´ıculo en cinco colores. Para
saber la aceptaci´on de cada color realiza una encuesta usando un programa en su ordenador
port´atil. El programa ha de ayudarle a contar los votos de los encuestados. El encuestador
teclear´a el n´ umero del color elegido (de uno a cinco) cada vez que pregunte a una persona
nueva. Cuando no quiera preguntar a nadie m´as introducir´a el valor -1. En ese momento
el programa le indicar´a el n´ umero de votos que cada color ha obtenido. Posteriormente se
han de ordenar los colores seg´ un los resultados de la votaci´on.
6.5.3 C´alculos
• Dada una cantidad positiva N calcular la ra´ız cuadrada entera aproximada r. Se ha de
cumplir que
r · r ≤ N ≤ (r + 1) · (r + 1)
.
Por ejemplo, si N = 24 se tiene que r = 4 pues 4 · 4 = 16 < 24 < 25 = 5 · 5
• Se han medido las longitudes de tornillos procedentes de un mismo lote de fabricaci´on. Se
han dispuesto en un vector v de dimensi´on N > 2. Dise˜ ne un algoritmo para calcular la
media y la varianza de las longitudes.
Tema 7
Programaci´ on en MATLAB
MATLAB es una aplicaci´on inform´atica que surgi´o para servir de herramienta en operaciones
matem´aticas, especialmente en operaciones con matrices.
Con los a˜ nos ha ido incorporando funciones distintas y hoy en d´ıa contiene herramientas
para gran cantidad de aplicaciones ingenieriles: visi´on artificial, an´alisis estad´ıstico, dise˜ no de
controladores, etc.
El usuario de MATLAB suele ser una persona que necesita algo m´as que una calculadora
pero que no quiere ”mancharse las manos” con un lenguaje de programaci´on. Por eso el en-
torno de trabajo es sencillo de manejar, casi tan f´acil como una calculadora. Adem´as permite
crear gr´aficos de muchos tipos y presenta grandes ventajas a la hora de trabajar con n´ umeros
complejos.
Una incorporaci´on temprana fue la programaci´on. Es posible crear nuevas funciones de
MATLAB mediante un lenguaje que es muy parecido a lenguajes de programaci´on como BASIC
o C. Esto permite que el usuario pueda agrupar sentencias que utiliza frecuentemente dentro
de un programa que puede ser invocado posteriormente. De este modo se ahorra tiempo y
esfuerzo en sucesivas sesiones pues no es necesario escribir todas las sentencias de nuevo como
se mostrar´a.
Pero no todo son ventajas. Como principal inconveniente hay que se˜ nalar el hecho de que
MATLAB no ha sido concebido como lenguaje de programaci´on por lo que carece de elementos
o caracter´ısticas necesarias para una buena pr´actica de la programaci´on.
7.1 El entorno
El programa MATLAB se maneja (en su mayor parte) escribiendo sentencias dentro de una
ventana llamada de ´ ordenes. Por ejemplo, si se escribe
sqrt(16)
65
66 TEMA 7. PROGRAMACI
´
ON EN MATLAB
el programa realiza la operaci´on indicada y responde en la pantalla con el resultad.
Desafortunadamente todo est´a en ingl´es. Se proporcionar´a una lista de ´ordenes y funciones
debidamente traducida.
7.2 Variables
7.2.1 Tipos
En MATLAB todas las variables son matrices. Un escalar no es m´as que una matriz 1 ×1.
Adem´as, cada elemento se considera que es un n´ umero complejo a + bi siendo i =

−1.
Cuando se trabaja con n´ umeros reales MATLAB considera simplemente que b = 0.
Finalmente, todos los n´ umeros son tratados en formato de punto flotante. Esto quiere decir
que son n´ umeros con parte entera, parte decimal y un exponente (v´ease tema 2).
Estas caracter´ısticas hacen que MATLAB desperdicie memoria con respecto a otros lenguajes
en los cuales las variables pueden ser de otros tipos m´as peque˜ nos.
A pesar de que MATLAB trata a todas las variables del mismo modo se va a continuar con la
sana costumbre de indicar en los diagramas de flujo y en los comentarios el tipo de las variables.
De este modo se facilita la detecci´on de errores.
7.2.2 Creaci´ on y destrucci´ on
Las variables pueden crearse en cualquier momento. Para ello basta con asignarles un valor en
la forma que veremos.
Hay que tener en cuenta que las variables ocupan un espacio en la memoria. Cada vez
que se crea una nueva variable el programa MATLAB pide al SE un trozo m´as de la memoria
disponible. A partir de ese momento el trozo en cuesti´on no puede ser usado para otros fines.
Si se quiere liberar el espacio ocupado por una variable se ha de utilizar la orden clear,
por ejemplo clear k o clear matriz a. Esto causa la destrucci´on completa de la variable y
la liberaci´on del trozo de memoria ocupado por la misma. Una vez que una variable ha sido
eliminada no es posible recuperar su valor.
7.2.3 Asignaci´ on
La asignaci´on se consigue por medio del signo igual =. No hay que olvidar que asignar es una
operaci´on consistente en copiar un cierto valor en la memoria ocupada por una variable. Por
c M.R. Arahal 2003 DISA. ESI. US. 67
tanto no es lo mismo asignar que igualar en el sentido matem´atico. Lamentablemente el uso del
signo = en ambos casos no ayuda nada a clarificar la cuesti´on.
Debido a que la asignaci´on es una operaci´on distinta de la igualdad matem´atica se ha insistido
en temas anteriores en que se utilice un signo diferente ←. En los diagramas de flujo que vendr´an
en adelante se mantendr´a el uso del s´ımbolo ← para la asignaci´on.
7.3 Operaciones y funciones incorporadas
La mejor manera de aprender a realizar operaciones con MATLAB es probar el programa con
ejemplos simples y explorar su comportamiento. En este punto se van a mostrar ejemplos en
varias categor´ıas de dificultad creciente. Es muy aconsejable no estudiar de memoria los ejemplos
sino probarlos en el entorno MATLAB.
7.3.1 Operaciones elementales
La forma m´as simple de usar MATLAB es como una calculadora. En lugar de pulsar teclas se
ha de escribir la operaci´on a realizar y pulsar Intro para que ´esta se lleve a cabo.
Por ejemplo si se escribe
6+8
y se pulsa Intro se obtiene en la pantalla:
>> 6+8
ans =
14
>>
Como ya se ha dicho, el s´ımbolo >> sirve para indicar al usuario que puede escribir ah´ı su
orden. A menudo recibe el nombre de s´ımbolo inductor pues induce al usuario a escribir.
Puede verse que el resultado viene precedido de ans=. Estas letras son la abreviatura de
answer (respuesta, resultado).
El programa MATLAB admite operaciones con par´entesis, como por ejemplo 2 · (5 + 3).
68 TEMA 7. PROGRAMACI
´
ON EN MATLAB
>> 2*(5+3)
ans =
16
>>
N´otese que la multiplicaci´on se indica por medio del asterisco *. Tambi´en es posible realizar
operaciones menos elementales, como por ejemplo logaritmos en base 10
>> log10(100)
ans =
2
>>
o ra´ıces cuadradas
>> sqrt(36)
ans =
6
Si uno desea dar nombres simb´olicos a los n´ umeros que ha de manejar debe crear variables.
Para ello basta con asignar un valor mediante una expresi´on del tipo:
nombre_de_la_variable = valor_que_se_asigna
por ejemplo:
x=22.3
el programa responde con un mensaje que indica que se ha creado la variable y que ha
tomado el valor adecuado
c M.R. Arahal 2003 DISA. ESI. US. 69
>> x=22.3
x =
22.3000
>>
Es importante saber que estas expresiones hacen dos cosas: crear la variable (tomando cierta
cantidad de memoria para almacenar su valor) y dar un valor inicial a la variable.
Esta facilidad para crear variables conlleva algunos peligros que trataremos de minimizar
mediante una programaci´on cuidadosa.
Las variables pueden usarse en otras expresiones como si se tratase de n´ umeros, por ejemplo:
>> x+10
ans =
32.3000
>>
Para saber el valor que contiene una variable basta con escribir su nombre y pulsar Intro.
>> x
x =
22.3000
>>
Si uno desea conocer cu´antas variables tiene en un momento dado puede usar la orden who.
En el ejemplo anterior se obtiene:
>> who
Your variables are:
ans x
>>
70 TEMA 7. PROGRAMACI
´
ON EN MATLAB
Observe que ans (la respuesta) es una variable. Puede comprobar que su valor coincide con
el de la ´ ultima respuesta dada por MATLAB.
Adem´as de las operaciones aritm´eticas de sobra conocidas existen operaciones l´ogicas, como
por ejemplo la comprobaci´on de igualdad. Considere el ejemplo siguiente consistente en una
expresi´on de comprobaci´on de igualdad:
>> x==7
ans =
0
>>
La expresi´on x == 7 equivale a preguntar ¿Es el valor de x igual a 7?. La respuesta obtenida
es cero, lo cual indica que x no es igual a 7. De forma equivalente la sentencia x == 22.3 produce
un valor 1 al ser evaluada.
>> x==22.3
ans =
1
>>
De estos ejemplos se desprende que las comprobaciones que el valor l´ogico verdadero es
representado en MATLAB mediante el valor num´erico ”1”, mientras que el valor l´ogico falso es
representado por ”0”.
Otras operaciones l´ogicas son ”mayor que” >, ”menor que” <, ”mayor o igual que” >= ,
”menor o igual que” <=, ”distinto a” ∼=. A modo de ejemplo considere las expresiones siguientes
y las respuestas proporcionadas por MATLAB.
>> x<10
ans =
0
>> x>=22.3
ans =
c M.R. Arahal 2003 DISA. ESI. US. 71
1
>> x ~= 8
ans =
1
>>
En la tabla siguiente se muestran las operaciones aritm´eticas y l´ogicas que MATLAB puede
realizar.
>> help elfun
Las operaciones que dan como resultado un valor l´ogico se pueden combinar utilizando la
suma l´ogica (operaci´on ”o”), el producto l´ogico (operaci´on ”y”) y la negaci´on (operaci´on ”no”).
Por ejemplo, para saber si x < 100 y al mismo tiempo x > 5; es decir, para comprobar si
5 < x < 100 se usar´a la expresi´on x<100 & x > 5
>> x<100 & x>5
ans =
1
>>
Como era de esperar el resultado es 1. Eso quiere decir que es cierto que ”x es menor que
100 y mayor que 5”.
Las operaciones que se han comentado se indican en la tabla siguiente de forma m´as resumida.
72 TEMA 7. PROGRAMACI
´
ON EN MATLAB
Expresi´on en MATLAB Operaci´on
+ suma aritm´etica
- resta aritm´etica o cambio de signo
* multiplicaci´on aritm´etica
/ divisi´on
< relaci´on "menor que"
> relaci´on "mayor que"
<= relaci´on "menor o igual que"
>= relaci´on "mayor o igual que"
== relaci´on "igual que"
= relaci´on "distinto que"
& producto l´ogico (operaci´on "y")
| suma l´ogica (operaci´on "o")
∼ negaci´on (operaci´on "no")
No es preciso aprender ahora mismo de memoria esta tabla. El uso frecuente deber´ıa bastar
para aprenderla por lo que se recomienda que se practiquen los ejemplos indicados y se exploren
las posibilidades que ofrecen.
7.3.2 Funciones incorporadas
De todas las ´ordenes de MATLAB ninguna debiera ser m´as ´ util para el usuario aprendiz que la
funci´on de ayuda. Se comentar´a m´as adelante como usar la funci´on help, de momento se va a
usar ahora para conocer la lista de funciones ”elementales”.
>> help elfun
El resultado de esta orden es una larga lista de funciones que se muestra en la tabla 7.1 (que
est´a en ingl´es como puede verse por lo que habr´a que acostumbrarse).
La forma de uso de estas funciones es simple e intuitiva, por ejemplo a = sin(1) asigna a
la variable a el valor del seno de un radi´an, o sea sen(1).
>> a = sin(1)
a =
0.8415
7.3.3 Vectores
Los vectores se introducen en MATLAB como una colecci´on de valores. Por ejemplo un vector
fila es
c M.R. Arahal 2003 DISA. ESI. US. 73
Trigonometric.
sin Sine.
sinh Hyperbolic sine.
asin Inverse sine.
asinh Inverse hyperbolic sine.
cos Cosine.
cosh Hyperbolic cosine.
acos Inverse cosine.
acosh Inverse hyperbolic cosine.
tan Tangent.
tanh Hyperbolic tangent.
atan Inverse tangent.
atan2 Four quadrant inverse
tangent.
atanh Inverse hyperbolic tan-
gent.
sec Secant.
sech Hyperbolic secant.
asec Inverse secant.
asech Inverse hyperbolic secant.
csc Cosecant.
csch Hyperbolic cosecant.
acsc Inverse cosecant.
acsch Inverse hyperbolic cose-
cant.
cot Cotangent.
coth Hyperbolic cotangent.
acot Inverse cotangent.
acoth Inverse hyperbolic cotan-
gent.
Exponential.
exp Exponential.
log Natural logarithm.
log10 Common (base 10) loga-
rithm.
log2 Base 2 logarithm and dis-
sect floating point num-
ber.
pow2 Base 2 power and scale
floating point number.
realpow Power that will error out
on complex result.
reallog Natural logarithm of real
number.
realsqrt Square root of number
greater than or equal to
zero.
sqrt Square root.
nextpow2 Next higher power of 2.
Complex.
abs Absolute value.
angle Phase angle.
complex Construct complex data
from real and imaginary
parts.
conj Complex conjugate.
imag Complex imaginary part.
real Complex real part.
unwrap Unwrap phase angle.
isreal True for real array.
cplxpair Sort numbers into com-
plex conjugate pairs.
Rounding and
remainder.
fix Round towards zero.
floor Round towards minus in-
finity.
ceil Round towards plus infin-
ity.
round Round towards nearest
integer.
mod Modulus (signed remain-
der after division).
rem Remainder after division.
sign Signum.
Tabla 7.1: Funciones elementales de MATLAB
74 TEMA 7. PROGRAMACI
´
ON EN MATLAB
>> v=[ -1 2 -3 4 -5]
v =
-1 2 -3 4 -5
>>
Para acceder a las componentes individuales del vector se usan par´entesis indicando el ´ındice
de la componente como se muestra en las dos sentencias del ejemplo siguiente.
>> v(3)
ans =
-3
>> v(1)*8
ans =
-8
Es decir que en MATLAB la expresi´on v(k) equivale a la notaci´on matem´atica v
k
.
Tambi´en se pueden construir vectores columna. Para ello se separan las filas mediante punto
y coma como se muestra a continuaci´on
>> u=[0; 1; 0; 1; 0]
u =
0
1
0
1
0
En el ejemplo siguiente se ilustra que el producto escalar de dos vectores se obtiene f´acilmente.
>> v*u
ans =
6
c M.R. Arahal 2003 DISA. ESI. US. 75
Los vectores son tratados por MATLAB como matrices con la peculiaridad de tener una sola
fila o columna. Por este motivo no merece la pena dedicar m´as espacio a los vectores y debemos
pasar ya a las matrices.
7.3.4 Matrices
En MATLAB una matriz es una variable como otra cualquiera y no precisa mecanismos compli-
cados para su creaci´on y uso. A modo de ilustraci´on considere que pretendemos sumar las dos
matrices:
A =
_
0 2 4
1 1 1
_
, B =
_
3 3 3
−1 −1 −1
_
El primer paso es introducir las matrices en variables. Comenzando con la matriz A escribi-
mos la sentencia
A = [ 0 2 4; 1 1 1]
en la pantalla se obtiene:
>> A = [ 0 2 4; 1 1 1]
A =
0 2 4
1 1 1
>>
Como puede verse, los elementos de una misma fila se separan por espacios (o comas) y una
fila se separa de la siguiente mediante el punto y coma.
Se procede del mismo modo con la matriz B, obteni´endose:
>> B = [ 3 3 3; -1 -1 -1]
B =
3 3 3
-1 -1 -1
76 TEMA 7. PROGRAMACI
´
ON EN MATLAB
Para realizar la suma se procede igual que si A y B fuesen variables escalares; es decir, se
escribe A+B
>> A+B
ans =
3 5 7
0 0 0
Con la misma facilidad se calcula el producto de matrices o funciones de matrices. Por
ejemplo, para calcular el valor absoluto de los elementos de la matriz B se escribe:
>> abs(B)
ans =
3 3 3
1 1 1
Como puede observarse el resultado es una nueva matriz cuyos elementos son el valor absoluto
de los elementos de la matriz B.
7.3.5 Cadenas de caracteres
Las cadenas de caracteres son conjuntos de s´ımbolos tomados de la tabla ASCII. Tienen gran
utilidad para trabajar en problemas donde se precisa manipulaci´on de texto.
Un ejemplo de cadena de caracteres es: clase de 3 a 5 atrasada!!. Este conjunto de
caracteres incluye letras, n´ umeros y signos como el espacio o la admiraci´on. Es posible introducir
la cadena en una variable de MATLAB:
>> texto = ’clase de 3 a 5 atrasada!!’
texto =
clase de 3 a 5 atrasada!!
Obs´ervese que el conjunto de s´ımbolos ha de ir encerrado por dos ap´ostrofes. Son las
ap´ostrofes las que diferencian una sentencia como a=barco de a=’barco’. Vea en el ejemplo el
efecto de cada una de ellas.
c M.R. Arahal 2003 DISA. ESI. US. 77
>> a=barco
??? Undefined function or variable ’barco’.
>> a=’barco’
a =
barco
En el primer caso MATLAB muestra en la pantalla un mensaje de error pues ha interpretado
a=barco como una asignaci´on en la cual el t´ermino de la derecha (la variable barco) no existe.
En cambio, en la segunda expresi´on, ’barco’ es un valor definido que se asigna a la variable a
por lo que la expresi´on es tan correcta como hubiera sido x = 8.
Las cadenas de caracteres no sirven para c´alculos matem´aticos propiamente dichos y fueron
introducidas en MATLAB para facilitar la programaci´on, el depurado y el uso de programas.
No obstante proporcionan interesantes posibilidades para desarrollar algoritmos y practicar el
arte de programar.
7.3.6 Funciones para el manejo de datos
Puesto que MATLAB est´a pensado para ser usado de forma interactiva es frecuente que el
usuario necesite saber qu´e variables ha creado, cu´ales son sus caracter´ısticas, cu´anto espacio
ocupan, etc. Para ello se dispone de ciertas funciones que se van a explicar a continuaci´on.
Informes . Se ha comentado anteriormente que la orden who proporciona una lista de variables.
Vea como ejemplo la secuencia de ´ordenes y respuestas siguiente:
>> x=8
x =
8
>> y=x+2
y =
10
>> who
Your variables are:
x y
Existe una modalidad que proporciona los tama˜ nos de las variables y que es de utilidad
cuando se trabaja con matrices. La orden es whos como puede verse en el ejemplo.
>> A=[1 2 3; 3 4 6]
78 TEMA 7. PROGRAMACI
´
ON EN MATLAB
A =
1 2 3
3 4 6
>> whos
Name Size Bytes Class
A 2x3 48 double array
x 1x1 8 double array
y 1x1 8 double array
Grand total is 8 elements using 64 bytes
Dimensiones A veces es necesario conocer el tama˜ no o dimensiones de una ´ unica variable,
por ejemplo para saber el n´ umero de filas de una matriz y disponer de este n´ umero para
posteriores c´alculos. Para estos casos se puede usar la funci´on size.
>> size(A)
ans =
2 3
En el caso de manejar vectores resulta m´as conveniente la funci´on length que proporciona
el n´ umero de elementos.
>> v=[ -1 2 -3 4 -5]
v =
-1 2 -3 4 -5
>> length(v)
ans =
5
Almacenamiento MATLAB permite almacenar en el disco variables. De este modo es posible
parar una sesi´on de trabajo y continuar en otro momento sin volver a repetir c´alculos. La
orden m´as simple para guardar es save que puede usarse de varias maneras. En la tabla
siguiente se presenta un resumen.
Orden Operaci´on realizada
save Crea el archivo de nombre matlab.mat en la carpeta
actual. Dicho archivo contiene todas las variables que
existen en ese momento en el entorno MATLAB.
save nombrearchivo Crea el archivo de nombre nombrearchivo.mat en la
carpeta actual. Dicho archivo contiene todas las vari-
ables que existen en ese momento en el entorno MAT-
LAB.
save nombrearchivo x y z Crea el archivo de nombre nombrearchivo.mat en la
carpeta actual. Dicho archivo contiene ´ unicamente las
variables x, y y z.
c M.R. Arahal 2003 DISA. ESI. US. 79
Recuperaci´ on Las variables almacenadas en el disco pueden ser usadas en una sesi´on diferente.
Para ello es preciso que MATLAB las lea del disco mediante la orden load. En la tabla
siguiente se muestran tres posibilidades.
Orden Operaci´on realizada
load Lee todas las variables del archivo de nombre mat-
lab.mat de la carpeta actual. Si alguna de las vari-
ables del disco tiene nombre coincidente con otra que
previamente existe en MATLAB se producir´a la de-
strucci´on de la variable existente para dejar su sitio a
la variable del disco.
save nombrearchivo Igual que en el caso anterior, pero leyendo del archivo
nombrearchivo de la carpeta actual.
save nombrearchivo x y z Igual que el anterior pero leyendo ´ unicamente las vari-
ables x, y y z.
Resulta ´ util la orden what pues muestra los archivos que existen en la carpeta actual y
que contienen variables o programas utilizables por MATLAB.
7.4 Codificaci´ on de nuevos programas
Una de las caracter´ısticas del entorno MATLAB es que permite que las ´ordenes puedan ser
tomadas de un archivo en lugar de ser introducidas por el teclado.
La idea es simple: si el usuario va a repetir a menudo un conjunto de ´ordenes puede escribirlas
en un archivo de texto. Posteriormente le indica a MATLAB que lea dicho archivo ejecutando
las ´ordenes una por una. El efecto es el mismo que si el usuario hubiese escrito las ´ordenes en
el entorno de MATLAB. Ahora bien, puesto que el archivo de texto se puede guardar en disco
no es preciso volver a escribir las ´ordenes nunca m´as. Cada vez que el usuario desee ejecutar
de nuevo el conjunto de ´ordenes podr´a indicar nuevamente a MATLAB que lea el archivo. Esto
supone un gran ahorro de tiempo en muchos casos.
Es costumbre dar a los archivos que contienen ´ordenes de MATLAB una extensi´on prede-
terminada que los diferencia de otros archivos de texto. Esta extensi´on es .m. Por ejemplo si un
archivo contiene las ´ordenes para dibujar un vector se le puede llamar dibuvector.m.
Los archivos que contienen ´ordenes de MATLAB ser´an llamados desde ahora archivos M.
Para escribir el archivo de texto se puede usar cualquier programa como la libreta de notas, el
editor de MS-DOS, etc. MATLAB incorpora su propio programa para redacci´on llamado M file
Editor, o sea redactor de archivos M.
A modo de ejemplo considere las siguientes ´ordenes de MATLAB que convierten una cantidad
en pesetas a euros.
pesetas=input(’Escriba la cantidad en pesetas : ’)
euros = pesetas/166.386
80 TEMA 7. PROGRAMACI
´
ON EN MATLAB
Supongamos que se introducen este texto dentro de un archivo al cual se le da el nombre de
cpe.m (el nombre viene de convertidor de pesetas a euros). La forma de indicar a MATLAB que
utilice el archivo es simple: se escribe su nombre en el entorno MATLAB. Se obtiene el resultado
que se muestra a continuaci´on.
>> cpe
Escriba la cantidad en pesetas : 1000
pesetas =
1000
euros =
6.0101
7.4.1 Legibilidad
Frecuentemente el usuario de MATLAB escribe archivo M que le resultan de utilidad. Pasado
un tiempo sin usar un archivo es posible que uno olvide qu´e tarea realiza exactamente. En tal
caso es necesario mirar el contenido del archivo y repasar su contenido. Es en este punto cuando
se agradece (o se echa en falta) una buena pr´actica de programaci´on que haga que el c´odigo sea
legible.
Los siguientes consejos ayudar´an sin duda al usuario de MATLAB a conseguir programas
legibles.
• Elegir nombres de variables indicativos de lo que representan.
• No usar una misma variable para representar m´as que una cosa.
• Incluir comentarios en el c´odigo para ayudar a seguir la secuencia del programa.
• Dividir el c´odigo en trozos, de forma tal que sea posible abarcar cada trozo de un vistazo
en una ventana mediana. La divisi´on no ha de ser arbitraria, sino que los trozos deben
tener cada uno cometidos claros. Normalmente los diagramas de flujo desarrollados con
anterioridad a la codificaci´on indican c´omo realizar esta divisi´on.
A pesar de haber dado estos consejos hemos de ser conscientes de que la buena programaci´on
s´olo se logra mediante un proceso de aprendizaje por prueba y error.
7.5 Funciones para trazado de gr´aficas
Uno de los motivos por el que MATLAB ha sido un entorno favorecido por el p´ ublico es la
facilidad con la que se pueden realizar gr´aficos de muy distintos tipos. En este punto se va a
c M.R. Arahal 2003 DISA. ESI. US. 81
indicar la forma de realizar algunas representaciones gr´aficas que pueden ser muy ´ utiles para
ilustrar posteriormente otros ejercicios.
La orden de dibujo m´as simple es plot. Esta funci´on puede ser utilizada de muchas maneras.
En primer lugar puede usarse para representar las componentes de un vector. Por ejemplo,
supongamos que el vector:
>> v=[ 15.6 16.2 18 17 16.5 15 ]
est´a formado por las temperaturas (en grados Celsius) medidas cada cuatro horas en una estaci´on
meteorol´ogica. Si se escribe lo siguiente en el entorno MATLAB
>> v=[ 15.6 16.2 18 17 16.5 15 ]
v =
15.6000 16.2000 18.0000 17.0000 16.5000 15.0000
>> plot(v)
se observa que aparece una nueva ventana conteniendo una gr´afica con el aspecto que muestra
la figura 7.1. Puede observarse que en el eje vertical MATLAB ha representado los valores v
1
,
v
2
, etc. mientras que en el horizontal aparece el sub´ındice correspondiente.
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6
14
14.5
15
15.5
16
16.5
17
17.5
18
Figura 7.1: Gr´afica obtenida con la orden plot
Continuando con el ejemplo supongamos ahora que se conoce la hora a la que se realiz´o cada
medida y que deseamos que aparezca en el eje horizontal. Sea t = [4812162024], la orden que
necesitamos es simplemente:
>> t= [ 4 8 12 16 20 24 ]
t =
4 8 12 16 20 24
>> plot(t,v)
que produce un cambio en la ventana, de forma que ahora se obtiene lo que muestra la figura
7.2. Se observa que el eje horizontal est´a ahora marcado con las componentes del vector t.
Puede ser interesante ahora a˜ nadir unos letreros indicativos de qu´e es lo que se est´a repre-
sentando. Esto se consigue de manera simple con las ´ordenes siguientes:
82 TEMA 7. PROGRAMACI
´
ON EN MATLAB
4 6 8 10 12 14 16 18 20 22 24
14
14.5
15
15.5
16
16.5
17
17.5
18
Figura 7.2: Gr´afica obtenida con la orden plot usando una variable para el eje horizontal y otra
para el vertical.
>> xlabel(’hora’)
>> ylabel(’temperatura’)
>> title(’Datos estaci´on meteorol´ogica’)
El resultado final se muestra en la figura 7.3.
4 6 8 10 12 14 16 18 20 22 24
14
14.5
15
15.5
16
16.5
17
17.5
18
hora
te
m
p
e
ra
tu
ra
Datos estación meteorológica
Figura 7.3: Gr´afica con t´ıtulo y letreros en los ejes.
7.6 Sentencias de control
7.6.1 La bifurcaci´ on
Ya se ha visto en los diagramas de flujo realizados que las bifurcaciones son imprescindibles para
llevar a cabo ciertas tareas. En MATLAB es posible realizar la bifurcaci´on b´asica mediante la
sentencia if-else. La forma de uso se muestra en el c´odigo que aparece a continuaci´on.
if condici´on
sentencias bloque S
else
sentencias bloque N
end
En esta construcci´on, La condici´on es una expresi´on que da como resultado un valor l´ogico
(por ejemplo x > 2) que puede ser verdadero o falso. En caso de que la evaluaci´on de la expresi´on
arroje un resultado verdadero se procede a ejecutar las sentencias del bloque S. En caso contrario
c M.R. Arahal 2003 DISA. ESI. US. 83
se ejecutan las sentencias del bloque N. Al terminar uno u otro bloque se pasa a las sentencias
posteriores a end.
De la explicaci´on anterior debe resultar evidente que al usar la bifurcaci´on se ejecutan las
sentencias S o las N pero no ambas.
El diagrama de flujo de la figura 7.4 a) corresponde a una bifurcaci´on gen´erica. Dentro de los
bloques S y N se puede colocar cualquier conjunto de sentencias, incluyendo nuevas bifurcaciones
como se ver´a m´as adelante.
inicio
¿ x < 0 ?
sí no
fin
a)
b)
Escribir va
Leer x
va x va -x
x Variable real Dato
va Variable real
Resultado. Valor
absoluto de x
condición
sí no
Bloque N Bloque S
Figura 7.4: a) Diagrama de flujo correspondiente a una bifurcaci´on gen´erica. b) Diagrama de
flujo correspondiente al ejemplo de bifurcaci´on
Como ejemplo sencillo considere el siguiente trozo de c´odigo:
x=input(’Introduzca valor de x’)
if x < 0,
va = -x;
else
va=x;
end
disp(El valor absoluto es)
va
Este programa ser´ıa de utilidad en caso de que no dispusi´esemos en MATLAB de otros
medios para calcular el valor absoluto.
Un ejemplo igualmente simple es:
84 TEMA 7. PROGRAMACI
´
ON EN MATLAB
a=input(’Coeficiente a?’) %coeficientes de a x^2 + b x + c = 0
b=input(’Coeficiente b?’)
c=input(’Coeficiente c?’)
if b*b-4*a*c < 0,
disp(’Las ra´ıces son complejas’)
else
disp(’Las ra´ıces son reales’)
end
Es f´acil ver que este programa toma como datos los coeficientes a, b y c de una ecuaci´on de
segundo grado ax
2
+ bx + c = 0, los analiza y escribe en la pantalla si las ra´ıces (soluciones de
la ecuaci´on) ser´an reales o complejas (con parte imaginaria).
7.6.2 El bucle ”mientras”
El bucle ”hacer mientras que la condici´on sea cierta” se construye en MATLAB mediante un
conjunto de l´ıneas de c´odigo que tienen la forma siguiente:
while condici´on
sentencias del cuerpo del bucle
end
En la figura 7.5 a) se muestra el diagrama de flujo correspondiente al bucle. La condici´on
es una expresi´on que da como resultado un valor l´ogico, por ejemplo x > 2. El cuerpo del bucle
son sentencias cualesquiera.
Examinando el diagrama de flujo de la figura 7.5 a) es f´acil deducir que mientras la condici´on
se cumpla se repetir´a el bucle una y otra vez. Es decir, si al evaluar la expresi´on l´ogica de la
condici´on se obtiene un resultado verdadero se pasa a ejecutar el cuerpo del bucle, en caso
contrario se termina el bucle.
Como ejemplo sencillo considere el siguiente trozo de c´odigo:
x=0; suma=0;
while x<10,
suma = suma + x;
x = x+2;
end
suma
Es f´acil adivinar qu´e ocurre al ejecutar este programa, sobre todo si se dibuja el diagrama
de flujo equivalente (v´ease figura 7.5 b).
c M.R. Arahal 2003 DISA. ESI. US. 85
¿ condición ?
cuerpo

no
inicio
Escribir suma
¿ x < 10 ?
Iniciar x a 0
y suma a 0
suma suma + x

no
x x + 2
fin
a)
b)
x Variable entera
suma Variable entera
Contador de 0 a 10
Suma de los valores de x
Figura 7.5: a) Diagrama de flujo correspondiente a un bucle gen´erico del tipo ”repetir mientras
la condici´on sea cierta”. b) Diagrama de flujo correspondiente al ejemplo de uso del bucle
”mientras”
Para mejorar la legibilidad de los programas es muy aconsejable incluir comentarios y ordenar
la apariencia en la pantalla de las sentencias. De este modo el ejemplo en cuesti´on resulta m´as
f´acil de interpretar.
x=0; % variable contador para el bucle
suma=0; % variable suma parcial
while x<10, % condici´on bucle
suma = suma + x; %
x = x+2; % actualizaci´on
end
suma % escritura resultado
7.6.3 La sentencia for
En muchas situaciones es preciso repetir una tarea un n´ umero conocido de veces. Para ello se
puede disponer un bucle con un contador. En cada pasada o repetici´on el contador se incrementa
y se comprueba que no se ha sobrepasado el l´ımite. Estas tareas se realizan f´acilmente en
MATLAB con el uso de la sentencia for.
Los bucles que utilizan for tienen en MATLAB el aspecto siguiente:
for contador = valorinicial:valorfinal,
86 TEMA 7. PROGRAMACI
´
ON EN MATLAB
sentencias del cuerpo del bucle
end
En la figura 7.6 a) se muestra el diagrama de flujo correspondiente al bucle anterior. En ´el
se observa que contador es una variable que sirve para controlar el bucle. Esta variable toma
inicialmente el valor especificado por valorinicial. La variable se incrementa al final de cada
pase o repetici´on en una unidad. La condici´on de salida del bucle consiste en que el contador
no sobrepase el l´ımite fijado por el valor valorfinal.
¿ contador dentro
de límites?
cuerpo

no
inicio
¿ k 6 ?
Iniciar k a 1

no
k k + 1
fin
a)
b)
k Variable entera Contador de 1 a 6
Asignar al
contador el valor
inicial
Incrementar el
contador
Escribir k
Figura 7.6: a) Diagrama de flujo correspondiente a un bucle gen´erico del tipo ”para”. b)
Diagrama de flujo correspondiente al ejemplo de uso del bucle ”para”
A fin de aclarar las ideas se muestra el siguiente ejemplo de bucle usando la sentencia for.
for k = 1:6,
k
end
En la figura 7.6 b) se presenta el diagrama de flujo correspondiente a este ejemplo. Es f´acil
ver que el bucle no realiza c´alculo alguno, simplemente escribe en la pantalla los valores sucesivos
que va adquiriendo la variable k.
Este ejemplo revela porqu´e se le llama bucle ”para”. Se observa que para cada valor de k
entre 1 y 6 se escribe k en la pantalla, que es lo que literalmente dice la sentencia for k=1:6,.
c M.R. Arahal 2003 DISA. ESI. US. 87
Los valores iniciales y finales no necesariamente son constantes, pueden ser variables como
en el programa siguiente.
% valores inicial y final para bucle
v_inicial = input(’Introduce valor inicial’)
v_final = input(’Introduce valor final’)
% bucle
for k = v_inicial:v_final,
k %escritura en pantalla
end
El incremento de la variable contador puede ser distinto de uno. Por ejemplo para realizar
una cuenta atr´as (mediante decremento del contador) o para saltar de dos en dos, etc. La forma
de indicar un incremento en la sentencia for es muy simple:
for contador = valorinicial:incremento:valorfinal,
sentencias del cuerpo del bucle
end
A modo de ejemplo considere el programa:
for k=1:2:20,
k
end
7.7 Ejemplos de programaci´ on I
• Leer las 5 componentes de un vector y escribirlo luego al derecho y al rev´es.
• Crear un vector x de dimensi´on 100, cuyas componentes son los valores x
k
= −1.001 +
0.01 ∗ k. Calcular a continuaci´on un vector y cuyas 100 componentes vienen dadas por
y
k
=
sen(x
k
)
x
k
. Representar gr´aficamente y frente a x.
• Leer una cadena de caracteres. Cifrarla para que pueda ser enviada de forma secreta. La
regla de cifrado es: sumar al c´odigo de cada car´acter la posici´on que ocupa dentro del
texto al cuadrado. El mensaje cifrado consiste en la lista de n´ umeros obtenidos separados
por espacios.
• Descifrar un mensaje codificado seg´ un la regla anterior.
• Leer del teclado un par de abcisas x
1
y x
2
. Representar gr´aficamente la funci´on y =
x −sen(x) utilizando cien puntos equiespaciados entre x
1
y x
2
.
88 TEMA 7. PROGRAMACI
´
ON EN MATLAB
• Utilizar el programa anterior para calcular gr´aficamente la soluci´on de la ecuaci´on sen(x) =
x (calculando el paso por cero de la funci´on y = x−sen(x) mediante llamadas sucesivas al
programa con valores de x
1
y x
2
que est´en a izquierda y derecha de dicho pase por cero).
Tema 8
Programaci´ on de funciones en
MATLAB
Las funciones son fundamentales para realizar programas de cierta envergadura. Por un lado
permiten desarrollar un c´odigo modular lo cual mejora la legibilidad, pero adem´as descargan el
trabajo del programador pues cada funci´on constituye un nuevo bloque constructivo en el que
apoyarse.
8.1 Concepto de funci´ on
Una funci´on es un conjunto de ´ordenes que lleva a cabo una tarea precisa. La funci´on es utilizada
dentro de un programa como si de una orden se tratara. La funci´on puede calcular resultados
utilizando los datos que se le suministran expl´ıcitamente.
Un ejemplo de funci´on es sin. Observemos que cumple las condiciones que hemos impuesto:
• Es un conjunto de ´ordenes aunque en las modernas versiones de MATLAB no podamos
verlo.
• Realiza una tarea concreta consistente en calcular el seno del n´ umero indicado.
• Calcula resultados a partir de datos suministrados.
Las funciones pueden interpretarse como m´odulos con los cuales es posible construir progra-
mas. Son similares a los m´odulos que se han utilizado en los diagramas de flujo. Adem´as poseen
una caracter´ıstica que las hace muy ´ utiles: las funciones pueden usarse una y otra vez con datos
distintos. Desde este punto de vista la funci´on es una m´aquina capaz de producir resultados a
partir de datos que se le suministran. Este aspecto es ilustrado por el diagrama de la figura 8.1.
89
90 TEMA 8. PROGRAMACI
´
ON DE FUNCIONES EN MATLAB
Función
Argumentos
Resultados
Figura 8.1:
8.2 Datos y resultados
En matem´aticas una funci´on f calcula un valor (y variable dependiente) a partir de otro dado
(x variable independiente). Tanto x como y pueden ser escalares, vectores o matrices. Con las
funciones de MATLAB ocurre otro tanto. El papel de la variable independiente es represen-
tado por los datos que se le suministran a la funci´on, llamados normalmente argumento. Se
dice habitualmente que la funci´on ”devuelve” un resultado que es el equivalente a la variable
dependiente.
Para aclarar las ideas consideremos la sentencia de MATLAB y = sin(x). Hemos de recor-
dar que la ejecuci´on de esta sentencia provoca lo siguiente:
1. El c´alculo mediante la funci´on sin del seno del dato proporcionado, que en este caso es el
valor de x.
2. La asignaci´on a la variable y del valor calculado por la funci´on sin (que es, l´ogicamente
sen(x)).
Es muy conveniente no perder de vista estos pasos en las explicaciones que se dar´an poste-
riormente.
Adem´as de las funciones existentes en MATLAB hay mecanismos para que el usuario escriba
funciones nuevas. Para ello s´olo tiene que preparar en un archivo de texto las ´ordenes de MAT-
LAB que realizan un determinado c´alculo y posteriormente a˜ nadir una cabecera que permita a
esas ´ordenes trabajar como debe hacerlo una funci´on.
Se va a ilustrar el procedimiento con un ejemplo. Supongamos que se necesita una funci´on
que calcule el factorial de un n´ umero dado n. Escribimos en un archivo las ´ordenes:
c M.R. Arahal 2003 DISA. ESI. US. 91
producto=1;
for multiplicador=2:n,
producto = producto*multiplicador;
end
factorial = producto;
y con esto tenemos resuelto parte del problema. Ahora bien, si queremos utilizar este trozo
de c´odigo debemos recordar siempre que hemos de usar la variable n para el dato. Dicho de otro
modo, este trozo de c´odigo no sirve si se pretende calcular el factorial de x o de q. Lo que se
necesita es a˜ nadir una cabecera para que el trozo de c´odigo se convierta en una funci´on.
function [factorial] = mi_fact(n)
producto=1;
for multiplicador=2:n,
producto = producto*multiplicador;
end
factorial = producto;
Se ha de guardar este texto en un archivo M cuyo nombre ha de ser mi fact. Este nombre
se ha escogido para recalcar que es una funci´on m´ıa y que calcula el factorial.
Para probar mediante ejemplos que este archivo M es una funci´on escribimos en la ventana
de ´ordenes de MATLAB lo siguiente:
>> mi_fact(5)
ans =
120
Cada vez que se utiliza una funci´on se dice que se hace ”una llamada” a la misma, o que se
la ”invoca”. N´otese que esta invocaci´on, uso o llamada produce un efecto interesante: el valor
que se le proporciona (el valor 5 en el ejemplo) es copiado en la variable n de la funci´on, de
modo que las ´ordenes que se hab´ıan escrito y que calculan el factorial de n est´an en realidad
calculando el factorial del dato escrito entre par´entesis. A este fen´omeno se le suele llamar ”pase
de argumento”.
Por otra parte, el resultado que se calcula y que almacena en la variable factorial aparece
tras la llamada en el entorno de MATLAB. Si esto no se entiende del todo considere este otro
ejemplo:
92 TEMA 8. PROGRAMACI
´
ON DE FUNCIONES EN MATLAB
>> y=0
y =
0
>> y=mi_fact(4)
y =
24
>> y
y =
24
Ahora debe ser obvio que el valor de factorial ha sido asignado a la variable y. A este
fen´omeno se le da el nombre de ”devoluci´on de resultados”.
Con esta explicaci´on ya tiene sentido una frase habitual entre programadores como ”le pas´e
a la funci´on el valor 4 y me devolvi´o en y el factorial de 4”.
La sintaxis para la escritura de funciones es simple. En primer lugar debe aparecer una l´ınea
en la que se indica:
• el nombre de la funci´on (en el ejemplo anterior es mi fact).
• el nombre de la variable resultado (en el ejemplo anterior es factorial).
• el nombre de los argumentos (en el ejemplo anterior hay un ´ unico argumento de nombre
n).
A continuaci´on se escribir´an sentencias de MATLAB incluyendo todo tipo de c´alculos. Es
obligatorio que en alg´ un punto se le de valor a la variable resultado pues de otro modo la funci´on
no sabr´a qu´e devolver al ser invocada y generar´a un error.
8.3 Variables locales y globales
Continuando con el ejemplo anterior es instructivo utilizar la orden who para ver qu´e variables
se est´an utilizando:
>> who
Your variables are:
y
c M.R. Arahal 2003 DISA. ESI. US. 93
el resultado obtenido quiz´a debiera sorprender, porque, ¿d´onde est´a la variable producto?,
¿y factorial?, ¿y multiplicador?, ¿y n?. La ´ unica variable que parece existir (seg´ un indica
el resultado de who) es y.
La respuesta es que estas variables no son visibles desde el entorno de MATLAB pues est´an
ocultas dentro de la funci´on mi fact. Esta caracter´ıstica es muy ´ util pues de este modo cada
funci´on puede usar variables con el nombre que quiera sin que haya que preocuparse porque esta
variable ya exista previamente en otra funci´on.
Este hecho se produce con las funciones, pero no con cualquier archivo M. El siguiente
ejemplo puede contribuir a aclarar esta afirmaci´on. Considere los dos archivos M que se indican
a continuaci´on.
function [y] = f_recta(x)
a = 8; % pendiente
b = 2; % ordenada en el origen
y = a*x + b; %valor de la recta en x
Archivo f recta.m
Este primer archivo M contiene una funci´on. Es f´acil ver que la funci´on calcula la ordenada
sobre la recta y = 8x + 2 correspondiente a un punto de abcisa x que es el dato proporcionado
a la funci´on.
a = 8; % pendiente
b = 2; % ordenada en el origen
y = a*x + b; %valor de la recta en x
Archivo m recta.m
Este otro archivo no es una funci´on, es simplemente un conjunto de ´ordenes de MATLAB
que se han escrito y guardado en disco.
Se va a mostrar mediante ejemplos las diferencias de uso de ambos archivos.
>> a=-2
a =
-2
94 TEMA 8. PROGRAMACI
´
ON DE FUNCIONES EN MATLAB
>> f_recta(1)
ans =
10
>> a
a =
-2
Ejemplo de uso de la funci´on f recta en el que se observa que la variable a permanece inalterada.
>> a=-2
a =
-2
>> x=1
x =
1
>> m_recta
>> y
y =
10
>> a
a =
8
Ejemplo de uso del archivo M m recta en el que se observa que la variable a cambia de valor.
8.3.1 Clasificaci´ on de las variables
Las variables pueden clasificarse de varias maneras. Atendiendo al campo donde pueden ser
vistas y utilizadas se distinguen dos grupos:
Globales Estas variables pueden ser vistas y utilizadas desde cualquier fichero M y desde el entorno
de MATLAB.
Locales Son variables que s´olo pueden ser vistas y utilizadas dentro de alguna funci´on. Fuera de
la misma no son visibles y por tanto no son utilizables.
Por otra parte, atendiendo a la durabilidad de la variables se pueden hacer dos grupos.
c M.R. Arahal 2003 DISA. ESI. US. 95
Persistentes Estas variables existen desde el momento en que son creadas hasta que se las destruye
expl´ıcitamente mediante la orden clear. Las variables globales son de este tipo. Tambi´en
se las suele llamar variables est´ aticas.
Estas variables no pierden su valor por culpa de llamadas a funciones u otros acontec-
imientos. Tan s´olo se ven afectadas por ´ordenes de asignaci´on.
Ef´ımeras Son variables que son creadas por una funci´on y desaparecen al terminar la funci´on. Las
variables locales suelen ser ef´ımeras. Debido a esto las variables que est´an dentro de una
funci´on no conservan su valor de una llamada a otra de la funci´on. Existe un procedimiento
para convertir las variables locales en persistentes mediante la orden persistent.
Las caracter´ısticas de disponibilidad (global o local) y durabilidad (persistente o ef´ımera)
pueden combinarse dando lugar a varias situaciones. El mejor modo de poner de manifiesto
todo esto es utilizando ejemplos como los que se proporcionan a continuaci´on.
Ejemplo 1. Las variables del entorno de MATLAB son locales.
Para poner de manifiesto esta afirmaci´on considere la funci´on f1 cuyas ´ordenes se guardan
en el archivo f1.m.
function [y] = f1(x)
a = 8; % pendiente
y = a*x + b; %valor de la recta en x
Archivo f1.m
Puede verse que el valor de b no es asignado dentro de la funci´on, por lo que intentaremos
hacerlo desde el entorno. Para ello creamos la variable y le damos un valor:
>> clear all
>> b=4
b =
4
y a continuaci´on utilizamos la funci´on f1
>> f1(9)
??? Undefined function or variable ’b’.
Error in ==> f1.m
On line 3 ==> y = a*x + b; %valor de la recta en x
96 TEMA 8. PROGRAMACI
´
ON DE FUNCIONES EN MATLAB
Aparece un mensaje de error que nos indica que la variable b no es conocida dentro de la
funci´on f1. La explicaci´on es simple: la variable b pertenece al entorno de MATLAB. No es una
variable global. No puede ser utilizada en el interior de funciones.
Ejemplo 2. Las variables interiores de una funci´on son locales y no pueden ser accedidas
desde otras funciones o desde el entorno de MATLAB.
Retomamos la funci´on f recta
function [y] = f_recta(x)
a = 8; % pendiente
b = 2; % ordenada en el origen
y = a*x + b; %valor de la recta en x
Archivo f recta.m
Haremos una llamada a la funci´on y luego intentaremos averiguar desde el entorno de MAT-
LAB cu´anto vale la variable a que es la pendiente de la recta.
>> clear all
>> ordenada2 = f_recta(2)
ordenada2 =
18
>> a
??? Undefined function or variable ’a’.
Obtenemos un mensaje de error que era esperable pues a es una variable local de la funci´on
f recta y no es accesible fuera de esta funci´on.
Ejemplo 3. Las variables globales son accesibles desde cualquier funci´on.
Para crear una variable global es preciso escribir global nombrevariable en las funciones
que la vayan a usar, incluyendo la ventana de ´ordenes de MATLAB en caso necesario.
En este ejemplo comenzamos por tanto escribiendo:
>> global b
que no produce respuesta alguna, pero que crea la variable b aunque sin valor asignado. Para
poner esto de manifiesto usamos la orden whos.
c M.R. Arahal 2003 DISA. ESI. US. 97
>> whos
Name Size Bytes Class
b 0x0 0 double array (global)
Grand total is 0 elements using 0 bytes
La funci´on que vaya a utilizar la variable global ha de contener tambi´en la orden global b.
Creamos la funci´on f2 que es una modificaci´on de f1 (v´ease ejemplos anteriores).
function [y] = f2(x)
global b
a = 8; % pendiente
y = a*x + b; %valor de la recta en x
Archivo f2.m
Ahora intentamos asignar un valor a b y veamos si la funci´on f2 es capaz de utilizar dicho
valor.
>> b=-5
b =
-5
>> f2(1)
ans =
3
La respuesta obtenida es la deseada, con lo que queda probado que las variables globales
pueden ser usadas dentro y fuera de funciones.
8.4 Fases de la ejecuci´ on de una instrucci´ on
De los ejemplos anteriores es posible sacar conclusiones generales acerca de c´omo utiliza MAT-
LAB las funciones. A continuaci´on se indican las fases de la ejecuci´on de una instrucci´on.
Conviene comprenderlas bien pues se trata de los pasos que MATLAB realiza cada vez que
se invoca a una funci´on. El ´exito o fracaso de las funciones que uno escriba estar´a sin duda
influenciado por el buen conocimiento de estas fases.
98 TEMA 8. PROGRAMACI
´
ON DE FUNCIONES EN MATLAB
1. Creaci´on de variables locales para argumentos formales.
2. Recogida del valor de los argumentos de la llamada por parte de las variables locales.
3. C´alculos incluidos en el cuerpo de la funci´on.
4. Env´ıo de valores de las variables resultados a las variables de la sentencia llamante.
Resulta un ejercicio interesante comprobar en los ejemplos anteriores que dichas fases tienen
lugar y que son necesarias para el desempe˜ no de las tareas encomendadas a una funci´on.
Tema 9
Algunos problemas de ingenier´ıa
9.1 Interpolaci´ on con segmentos
Suponga que se conocen los valores que una funci´on f desconocida toma sobre ciertos puntos
{x
1
, x
2
, · · · , x
n
}. Se pretende proporcionar valores aproximados de f en cualquier punto x

interpolando los valores conocidos.
Para precisar se va a llamar X = {x
k
} al conjunto de los valores de x para los cuales se
conoce el valor de f. De forma equivalente se denominar´a Y = {f(x
k
)} a las ordenadas de
dichos puntos.
Para poder obtener aproximadamente f(x

) mediante interpolaci´on es necesario que existan
dos valores x
i
y x
d
pertenecientes a X tales que x
i
≤ x

≤ x
d
.
En tal caso la interpolaci´on produce un valor aproximado
ˆ
f(x

) que se calcula utilizando la
recta que pasa por (x
i
, y
i
) y (x
d
, y
d
) como se muestra en la figura 9.1. La ecuaci´on de esta recta
es:
y −y
i
=
y
d
−y
i
x
d
−x
i
(x −x
i
)
y en el punto x

toma el valor
y

= y
i
+
y
d
−y
i
x
d
−x
i
(x

−x
i
)
En caso de que x

no caiga entre dos valores conocidos no es posible realizar la interpolaci´on.
El problema que se pretende resolver puede enunciarse como: dado un conjunto de abscisas
X = {x
k
} y sus im´ agenes mediante f denotadas por Y = {f(x
k
)}, siendo f una funci´ on
99
100 TEMA 9. ALGUNOS PROBLEMAS DE INGENIER
´
IA
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6
0
0.2
0.4
0.6
0.8
1
1.2
1.4
(xi, yi)
(xd, yd)
x*
Figura 9.1: Ilustraci´on de la interpolaci´on de funciones. La funci´on desconocida a interpolar es
la l´ınea de puntos. Los valores conocidos se indican con marcas +. Dado el valor x

, la recta
que interpola es la l´ınea continua.
desconocida, calcular mediante interpolaci´ on una aproximaci´ on
ˆ
f para nuevos valores de x pro-
porcionados por el usuario por teclado.
Es importante tener en cuenta que los valores en X no est´an ordenados, es decir no se cumple
que x
k
≤ x
k+1
para todo k.
9.2 Ajuste por m´ınimos cuadrados
Hay ocasiones en ingenier´ıa en las que se dispone de un conjunto de medidas o datos observados
de dos variables y se quiere hallar la relaci´on entre ambas. Por ejemplo, la relaci´on entre altitud
y temperatura media en la estratosfera.
Mediante un globo se puede medir la temperatura en distintas ´epocas del a˜ no y la altura
correspondiente. Suponga que el resultado de tales mediciones se ha incluido en dos vectores T
de temperaturas (en grados Celsius) y A de alturas (en Kms).
Para realizar este ejemplo se va a suponer que los vectores citados tienen como componentes:
A = [ 21 23 25 26 28 30 31 35 40 45 49]
T = [−50 −51 −45 −44 −39 −40 −39 −28 −20 −15 −8]
La gr´afica que se muestra en la figura 9.2 muestra en el eje vertical (eje y) la altura y en
el horizontal (eje x) la temperatura. Como puede verse, parece existir una relaci´on entre las
observaciones de ambas variables. M´as a´ un, esta relaci´on es lineal pues se asemeja a una recta.
Una vez hecha esta observaci´on es posible preguntarse si alguna recta del tipo y(x) = ax +b
proporciona una relaci´on v´alida a la vista de las mediciones disponibles.
c M.R. Arahal 2003 DISA. ESI. US. 101
−60 −50 −40 −30 −20 −10 0
20
25
30
35
40
45
50
temperatura (
o
C)
a
l
t
i
t
u
d


(
K
m
s
)
Datos observados
Figura 9.2: Mediciones realizadas con globo en la estratosfera.
Dada una observaci´on consistente en el par (x
k
, y
k
) se denomina error de ajuste a la diferencia
entre el valor observado y
k
y el valor dado por la recta para el valor de x observado y(x
k
) =
ax
k
+b. La desviaci´on cuadr´atica es es cuadrado de dicho error (y
k
−y(x
k
))
2
.
El m´etodo de los m´ınimos cuadrados permite obtener los valores de a y b que producen el
mejor ajuste posible en cierto sentido
1
.
Las f´ormulas para obtener los valores de a y de b son de sobra conocidas:
a =
n
n

k=1
x
k
y
k

n

k=1
x
k
n

k=1
y
k
n
n

k=1
x
2
k

_
n

k=1
x
k
_
2
b =
n

k=1
y
k
−a
n

k=1
x
k
n
Siendo n el n´ umero de observaciones. Aplicadas a los datos de altitud y temperatura se
obtienen los valores
a =
11(−10840) −(−379)(353)
11 · 15177 −143641
= 0.6242
1
La recta de m´ınimos cuadrados, como indica su nombre, es la que hace m´ınima la suma de las desviaciones
cuadr´ aticas.
102 TEMA 9. ALGUNOS PROBLEMAS DE INGENIER
´
IA
b = (353 −a ∗ (−379))/11 = 53.6
En la figura 9.3 se muestran de nuevo los datos de temperatura y altitud incluyendo adem´as
la recta de ajuste obtenida con las f´ormulas anteriores y = 0.624x + 53.6.
−60 −50 −40 −30 −20 −10 0
20
25
30
35
40
45
50
temperatura (
o
C)
a
l
t
i
t
u
d


(
K
m
s
)
Datos observados y recta de ajuste
Figura 9.3: Recta de ajuste de los datos experimentales.
El problema que se pretende resolver puede enunciarse como: dado un conjunto de medidas
consistentes en pares (x
i
, y
i
) hallar la resta de ajuste por m´ınimos cuadrados.
9.3 C´alculo aproximado de ´areas
Como es sabido, la integral definida de una funci´on equivale al ´area que queda bajo la curva de
dicha funci´on entre los l´ımites de integraci´on. Por ejemplo, la integral indefinida (o primitiva)
de y = 1 es
_
1dx = x, por tanto la integral definida entre las abscisas 1 y 5 es:
_
5
1
1dx = (5 −1) = 4
Este resultado puede comprobarse de manera inmediata sin m´as que trazar la gr´afica de
y = 1 y observar que el ´area del rect´angulo es igual al producto de la base por la altura 4· 1 = 4.
Seg´ un lo anterior, parece claro que para calcular el ´area de y =f(x) entre dos abscisas x
i
,
x
f
basta con hallar la primitiva de f(x), digamos g(x) =
_
f(x)dx y luego obtener la diferencia
g(x
f
)−g(x
i
).
Este m´etodo presenta un inconveniente, y es que existen funciones para las cuales no se
conocen primitivas. Este es el caso, por ejemplo de la funci´on f(x) = e
−x
2
.
c M.R. Arahal 2003 DISA. ESI. US. 103
El c´alculo aproximado de integrales consiste en hallar un valor num´erico h(x
i
, x
f
) que sea lo
m´as parecido posible al ´area que se desea calcular g(x
f
)−g(x
i
).
Un m´etodo muy simple consiste en dividir el ´area en rect´angulos como los que se muestran
en la figura 9.4. Obs´ervese que se ha dividido el intervalo [x
i
, x
f
] en n trozos iguales, resultando
los subintervalos: [x
1
, x
2
], [x
2
, x
3
], ... [x
n
, x
n+1
], siendo x
1
= x
i
y x
n+1
= x
f
. La altura de
cada rect´angulo se calcula mediante el valor de la funci´on. As´ı, para el primer rect´angulo la
altura es f(x
1
), para el segundo rect´angulo f(x
2
) y para el ´ ultimo rect´angulo (el n) es f(x
n
).
x
1
x
n+1
x
i
x
f
f( x )
x
2
x
n
x
k
f( x
1
)
Figura 9.4: C´alculo aproximado del ´area bajo la curva f mediante suma de rect´angulos
El ´area bajo la curva es aproximadamente igual a la suma de las ´areas de los n rect´angulos.
Se va a indicar mediante h(x
i
, x
f
, n) el valor de dicha suma. Puesto que la base de todos ellos
es igual a d = (x
f
−x
i
)/n se tiene que:
h(x
i
, x
f
, n) = d
n

k=1
f(x
k
) (9.1)
La suma anterior puede llevarse a cabo mediante un programa de computador. N´otese que la
f´ormula (9.1) s´olo contiene variables y funciones conocidas. Se supone que aunque no se conoce
la expresi´on anal´ıtica de la funci´on primitiva g(x) s´ı se conoce la de f(x) y tambi´en se supone
que los valores de f(x) se pueden calcular para cualquier x ∈ [x
i
, x
f
].
El problema que se pretende resolver puede enunciarse como: dados dos valores x
i
, x
f
(x
i
< x
f
) y una funci´ on f(x), hallar el ´ area bajo la curva f de forma aproximada.
Resulta evidente que el resultado de (9.1) depende del n´ umero de rect´angulos que se utilicen.
Si se toma un valor demasiado bajo para n es resultado ser´a poco aproximado pues la ”escalera”
de rect´angulos ser´a demasiado tosca. Por contra un valor demasiado alto de n producir´a re-
sultados finos a costa de un tiempo de c´alculo elevado. En el algoritmo que se va a realizar se
dejar´a que n sea una variable a elegir por el usuario.
104 TEMA 9. ALGUNOS PROBLEMAS DE INGENIER
´
IA
9.4 Integraci´ on num´erica de ecuaciones diferenciales
9.4.1 Introducci´ on
Un problema cl´asico en ingenier´ıa es el c´alculo de soluciones aproximadas de ecuaciones difer-
enciales usando m´etodos num´ericos.
Una ecuaci´on diferencial es aquella en la que aparecen la inc´ognita y sus derivadas. Por
ejemplo la ecuaci´on
dx
dt
+x = 0
En esta ecuaci´on x no representa un n´ umero sino una funci´on del tiempo x(t). La soluci´on
de la ecuaci´on es una funci´on tal que derivada respecto al tiempo y sumada a s´ı misma produzca
el valor cero.
En algunos casos es posible obtener la soluci´on utilizando herramientas del c´alculo. En el
ejemplo mostrado es simple pasando dt al segundo miembro y tomando integral.
dx
dt
+x = 0
dx
dt
= −x

dx
xdt
= 1

dx
x
= dt

_
dx
x
=
_
dt
La integral de la izquierda es el logaritmo neperiano de x, la integral de la derecha es t,
si suponemos que en el instante t = 0 se conoce el valor de x al cual simbolizamos mediante
x(0) = x
0
se tiene que:

_
t
0
dx
x
=
_
t
0
dt
−(ln x −ln x
0
) = (t −0)
−(ln
x
x
0
) = t
(ln
x
x
0
) = −t
c M.R. Arahal 2003 DISA. ESI. US. 105
x
x
0
= e
−t
x(t) = x
0
e
−t
Sin embargo hay ocasiones donde no se conocen maneras para calcular soluciones manipu-
lando las ecuaciones como en el ejemplo anterior. Tal es el caso de ecuaciones diferenciales en
las cuales aparecen t´erminos que no son lineales.
Como ejemplo considere el problema de un paracaidista cayendo en la atm´osfera. La ca´ıda
est´a gobernada por la acci´on de la fuerza de gravedad y la fuerza de rozamiento con el aire.
F
g
−F
r
= m
dv
dt
donde F
g
es la fuerza de la gravedad que atrae al paracaidista hacia el suelo, F
r
es la fuerza
de rozamiento que se opone a la ca´ıda, v es la velocidad vertical hacia abajo con la que viaja el
m´ovil y m es su masa.
Se sabe que F
g
= mg siendo g = 9.8m/s
2
, por otra parte la resistencia aerodin´amica depende
de muchos factores. Simplificando mucho se puede considerar que F
r
= kv
2
. Es decir, la
resistencia es proporcional al cuadrado de la velocidad.
La ecuaci´on diferencial queda entonces:
mg −kv
2
= m
dv
dt
dividiendo por m y reagrupando t´erminos se obtiene:
dv
dt
= g −Bv
2
siendo B = k/m.
9.4.2 El m´etodo de Euler
Una forma simple de resolver ecuaciones como la anterior es el m´etodo de Euler.
Sea la ecuaci´on
dx
dt
= f(t) con condici´on inicial x(0) = x
0
.Por tanto, en el instante de tiempo
t = 0 se sabe que x(t) = x
0
. Adem´as se sabe que
˙ x(0) = f(0) = lim
t−→0
x(t) −x
0
t −0

x(h) −x
0
h
tomando un valor h = ∆t suficientemente peque˜ no. Es decir, que el valor de x(t) en un instante
h pr´oximo a cero es aproximadamente x(h) ≈ x
0
+ hf(0). Del mismo modo, para el instante
106 TEMA 9. ALGUNOS PROBLEMAS DE INGENIER
´
IA
2h se puede escribir x(2h) ≈ x(h) +hf(h), como x(h) no es conocido se puede utilizar su valor
aproximado ˆ x(h) = x
0
+ hf(0). Queda claro que de este modo se puede obtener una secuencia
de valores aproximados {ˆ x(kh)}, k = 0, 1, 2, · · · . N´otese que este m´etodo equivale a hacer una
extrapolaci´on lineal con la derivada en cada punto.
Para ilustrar el m´etodo de Euler se parte de la situaci´on mostrada en la figura 9.5 (a). El eje
horizontal representa la variable t, en el eje vertical se ha colocado el valor x(0) = x
0
. A partir
de este punto se traza una recta con pendiente f(0). Sobre esta recta se halla el punto de abcisa
h y ordenada ˆ x(h) = x
0
+ hf(0). La nueva situaci´on es la mostrada en 9.5 (b): ahora se toma
ˆ x(h) como punto de partida para trazar una nueva recta de pendiente f(h) y obtener sobre ella el
punto de abcisa 2h y ordenada ˆ x(2h) = ˆ x(h)+hf(h). En la figura 9.5 (c) se muestra el resultado
obtenido al repetir los pasos anteriores 50 veces con h = 0.1, siendo f(t) = cos(t) y x(0) = 0.
Se observa que la soluci´on proporcionada por la integraci´on num´erica es un conjunto de valores
{ˆ x(kh)}, k = 0, 1, 2, · · · 50. Estos valores se han representado uniendo mediante segmentos los
puntos (kh, ˆ x(kh)), de forma que se obtiene una aproximaci´on mediante trozos rectos. En la
citada figura se muestra tambi´en con trazo punteado la soluci´on exacta obtenida resolviendo
dx
dt
= cos(t), con x(0) = 0 que da como resultado x(t) =sen(t).
0
x
^
x(h)
h
t
0
^
x(h)
^
x(2h)
t
2h
x
0 h
0
0 0.5 1 1.5 2 2.5 3
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
(a) (b) (c)
Figura 9.5: El m´etodo de Euler para integraci´on num´erica
El problema que se pretende resolver puede enunciarse como: dada una ecuaci´ on diferencial
de primer orden en la forma
dx
dt
= f(t) con condici´ on inicial x(0) = x
0
calcular de forma
aproximada mediante el m´etodo de Euler los valores de la trayectoria x(t) para t = h, 2h, · · · , Nh
siendo h el paso de integraci´ on dado y N el n´ umero de pasos (tambi´en dado).
9.5 Ecuaciones trascendentes
Existen ecuaciones cuyas soluciones no pueden hallarse con l´apiz y papel intentando despejar la
variable buscada.
´
Este es el caso de ecuaciones como cos(x) = x.
El problema se puede replantear como la b´ usqueda del punto de corte con el eje horizontal
de la funci´on y = cos(x) − x. Para calcular (de forma num´erica) el paso por cero de y(x) se
pueden aplicar diversos m´etodos. Uno de ellos se comenta a continuaci´on.
c M.R. Arahal 2003 DISA. ESI. US. 107
9.5.1 M´etodo de la bisecci´ on
Se quiere resolver el problema de hallar el paso por cero (o ra´ız) de una funci´on y = f(x) dentro de
un cierto intervalo [x
i
, x
f
]. Se sabe que f es continua y tambi´en que en los extremos del intervalo
toma valores de distinto signo. Sin p´erdida de generalidad se puede suponer que f(x
i
) > 0 y
f(x
f
) < 0 (en caso contrario basta con buscar el corte por cero de −f(x)).
La situaci´on comentada aparece descrita en la figura 9.6. De la propiedad de continuidad de
la funci´on f se obtiene que debe existir al menos un paso por cero en el intervalo citado. Interesa
calcular ese valor x

que cumple f(x

) = 0 aunque sea de modo aproximado.
x
i
x
f
f( x )
x
*
Figura 9.6: Funci´on con un pase por cero en el intervalo mostrado.
El m´etodo de la bisecci´on consiste en dividir el intervalo en otro m´as peque˜ no que siga
conteniendo el punto de corte. Este procedimiento se repite varias veces hasta que el intervalo
es lo bastante peque˜ no. Llegado este momento se puede tomar como valor aproximado del cero
el punto medio del ´ ultimo intervalo.
Para realizar la bisecci´on se toma el punto medio del intervalo actual x
m
= (x
i
+x
f
)/2. Se
eval´ ua la funci´on en dicho punto, pueden darse tres casos:
• a) la funci´on en x
m
es del mismo signo que f(x
i
). En tal caso se toma como nuevo intervalo
el [x
m
, x
f
] y se repite el proceso.
• b) la funci´on en x
m
es del mismo signo que f(x
f
). En tal caso se toma como nuevo intervalo
el [x
i
, x
m
] y se repite el proceso.
• c) f(x
m
) = 0 en tal caso no es preciso buscar m´as, se ha hallado un pase por cero de la
funci´on.
El m´etodo de la bisecci´on termina o bien cuando se halla un punto en el que la funci´on vale
cero o cuando el intervalo es lo suficientemente peque˜ no. Por ejemplo, si se necesita conocer el
pase por cero con dos decimales nada m´as el m´etodo ha de aplicarse hasta que el intervalo tenga
una longitud menor o igual a 0.01.
En la figura 9.7 se muestra c´omo actuar´ıa el m´etodo de la bisecci´on con la misma funci´on de
la figura 9.6. Se han representado tres etapas con los pasos descritos anteriormente (indicadas
mediante un n´ umero encuadrado situado en la parte superior de cada gr´afica). La longitud
108 TEMA 9. ALGUNOS PROBLEMAS DE INGENIER
´
IA
x
i
x
i
x
f
f( x )
x
m
2
x
f
f( x )
x
m
1
x
i
x
f
f( x )
x
m
3
Figura 9.7: Funcionamiento del m´etodo de la bisecci´on.
del intervalo, que se ha indicado en la parte inferior, disminuye a la mitad en cada etapa con
respecto a la anterior.
Para ilustrar el m´etodo se va a considerar la funci´on cos x−x. El intervalo en el que existe un
pase por cero se obtiene f´acilmente recordando que cos 0 = 1, por lo que f(0) = cos 0−0 = 1 > 0
y por otra parte cos π/2 = 1, por lo que f(π/2) = cos π/2 −pi/2 = 0 −π/2 < 0.
Por tanto el primer intervalo considerado es [x
i
, x
f
] = [0, π/2]. El punto medio de este
intervalo es x
m
= (x
i
+x
f
)/2 = π/4. Al evaluar la funci´on se obtiene que f(x
m
) = −0.0783 < 0,
por lo que se trata del caso b). El nuevo intervalo ha de ser [0, π/4].
Repitiendo el proceso varias veces se obtienen los valores que figuran en la tabla siguiente:
Intervalo Punto medio x
m
Valor de f(x
m
) Longitud intervalo
[0, π/2] π/4 -0.0783 1.5708
[0, π/4] π/8 0.5312 0.7854
[π/8, π/4] 3π/16 0.2424 0.3927
[3π/16, π/4] 7π/32 0.0858 0.1963
[7π/32, π/4] 15π/64 0.0046 0.0982
[15π/64, π/4] 31π/128 -0.0366 0.0491
[15π/64, 31π/128] 61π/256 -0.0159 0.0245
[15π/64, 61π/256] 121π/512 -0.0056 0.0123
[15π/64, 121π/512] 245π/1024 -0.0211 0.0061
La columna de la derecha indica la longitud del intervalo considerado; es decir x
f
− x
i
.
Puede observarse que el valor en cada etapa es la mitad que en la anterior. Esta cantidad tiene
gran importancia en el m´etodo. Obs´ervese que si se toma x
m
como valor aproximado de x

el error cometido no ser´a nunca mayor que la longitud del intervalo. Por tanto, si se desea la
soluci´on aproximada con un decimal exacto ´esta se puede tomar como 15π/64; si se precisan dos
decimales exactos entonces hay que tomar 245π/1024.
La figura 9.8 muestra la funci´on f(x) = cos x −x. Los c´ırculos y las l´ıneas verticales indican
los valores de x
m
en las cuatro primeras etapas. Los n´ umeros que figuran encima de los c´ırculos
indican la etapa en la que han sido obtenidos. Puede comprobarse que en la primera etapa se
obtiene (por casualidad) un valor muy cercano al paso por cero.
El problema que se pretende resolver puede enunciarse como: dada una funci´ on f(x) y un
c M.R. Arahal 2003 DISA. ESI. US. 109
0 0.5 1 1.5
−1.5
−1
−0.5
0
0.5
1
x
y
cos(x)−x
1
2
3
4
Figura 9.8: Ejemplo de uso del m´etodo de la bisecci´on.
intervalo inicial [x
i
, x
f
] tales que f(x
i
) · f(x
f
) < 0 aplicar el m´etodo de la bisecci´ on hasta que el
intervalo resultante tenga una longitud menor que cierto valor dado ∆. El algoritmo dar´ a como
resultado el intervalo final.
9.6 Superficies
Una superficie z = f(x, y) definida en un rect´angulo [x
i
, x
f
] ×[y
i
, y
f
] puede representarse medi-
ante un conjunto discreto de alturas medidas en algunos puntos del dominio. Por ejemplo, si se
toma una rejilla en el rect´angulo con n
x
×n
y
puntos, las alturas de los puntos (x
j
, y
i
) ser´an los
valores z
ij
= f(x
j
, y
i
) para i = 1, · · · , n
y
y j = 1, · · · , n
x
que se pueden incluir en una matriz
Z ∈ IR
n
y
×n
x
.
A modo de ejemplo considere la funci´on z = f(x, y) = x
2
+y
2
en el rect´angulo [−1, 1] ×[−2, 2].
Si se toma una rejilla de ancho 0.5 se obtienen los valores siguientes:
x = {−1, −0.5, 0, 0.5, 1}
y = {−2, −1.5, −1, −0.5, 0, 0.5, 1, 1.5, 2}
Z =
_
_
_
_
_
_
5.00 3.25 2.00 1.25 1.00 1.25 2.00 3.25 5.00
4.25 2.50 1.25 0.50 0.25 0.50 1.25 2.50 4.25
4.00 2.25 1.00 0.25 0.00 0.25 1.00 2.25 4.00
4.25 2.50 1.25 0.50 0.25 0.50 1.25 2.50 4.25
5.00 3.25 2.00 1.25 1.00 1.25 2.00 3.25 5.00
_
_
_
_
_
_
La figura 9.9 muestra la rejilla en el rect´angulo considerado y la superficie z = f(x, y) calcu-
lada en los puntos de la rejilla.
Una superficie cualquiera, como por ejemplo la formada por las monta˜ nas y valles del terreno,
puede ser representada aproximadamente por una matriz. Usando esta representaci´on es posible
110 TEMA 9. ALGUNOS PROBLEMAS DE INGENIER
´
IA
−2 −1 0 1 2
−1.5
−1
−0.5
0
0.5
1
1.5
rejilla
x
y
−2
−1
0
1
2 −1
0
1
0
1
2
3
4
5
superficie f(x,y)
x
y
Figura 9.9: Ejemplo de uso del m´etodo de la bisecci´on.
resolver algunos problemas de ingenier´ıa.
9.6.1 B´ usqueda de extremos
Dada una matriz de alturas como la descrita en 9.6 con n
y
filas y n
x
columnas se desea determinar
los m´aximos y m´ınimos. El problema es equivalente a buscar las cimas y depresiones de un
terreno.
Para concretar m´as lo expuesto consid´erese la superficie mostrada en la figura 9.10 y su
correspondiente gr´afico de curvas de nivel. Puede observarse que existe m´as de una cumbre y
m´as de una depresi´on. El objetivo no es hallar la cumbre m´as alta o la sima m´as profunda sino
indicar en qu´e lugares existe alguna de estas caracter´ısticas del terreno.
10
20
30
40
50
60
10
20
30
40
50
10
20
30
j
superficie
i
10 20 30 40 50 60
5
10
15
20
25
30
35
40
45
50
55
j
i
5
10
15
20
25
Figura 9.10: Terreno con m´ ultiples cumbres y simas (izquierda) y mapa con curvas de nivel
(derecha). La barra de la derecha indica la correspondencia entre tonos de gris y altura.
Para solucionar el problema se puede usar la idea de que una cumbre es un punto del terreno
que sobresale de los puntos vecinos. Este hecho ser´a visible en la matriz de alturas pues la
c M.R. Arahal 2003 DISA. ESI. US. 111
cumbre corresponder´a a alg´ un elemento a
i,j
con la propiedad de ser mayor que sus vecinos.
Por ejemplo, en la matriz siguiente
_
_
_
_
_
_
_
_
_
_
0 0 1 2 2 1 0 0 0
0 0 2 2 2 2 1 0 0
0 0 2 2 2 2 1 0 0
0 1 1 2 3 1 1 0 0
0 0 1 1 2 1 1 0 0
0 0 1 1 2 1 1 0 0
0 0 1 1 2 1 0 0 0
_
_
_
_
_
_
_
_
_
_
hay una sola cumbre, correspondiente al elemento a
4,5
. Puede verse que los elementos ad-
ya-centes tienen menor valor.
Ha de tenerse en cuenta que los vecinos que hay que comprobar son: el de arriba, el de
abajo, el de la izquierda, el de la derecha y tambi´en los cuatro situados en las diagonales; es
decir, arriba a la izquierda, arriba a la derecha, abajo a la izquierda y abajo a la derecha.
Los elementos que est´an situados en los bordes de la matriz (los de las filas primera y ´ ultima
y los de las columnas primera y ´ ultima) no pueden ser comprobados porque no tienen todos sus
vecinos, por ello se dejan fuera del an´alisis.
El algoritmo para detectar cumbres deber´a analizar cada uno de los elementos interiores de
la matriz y comprobar si se cumple o no la condici´on de ser mayor que los vecinos.
9.7 Tratamiento de textos
9.7.1 Palabras en orden inverso
El problema consiste en leer una frase del teclado y escribirla luego al rev´es. Por ejemplo, si se
lee la frase Hola amigo. se ha de escribir en la pantalla .ogima aloH que es la frase escrita de
derecha a izquierda.
9.7.2 Pal´ındromo
Problema Leer una palabra y decidir si es pal´ındromo. El final de la palabra es indicado con
el punto. Para ser pal´ındromo debe ocurrir que exista un eje de simetr´ıa en la palabra. La
palabra puede tener un n´ umero par o impar de caracteres; en este ´ ultimo caso el eje de simetr´ıa
contendr´a el car´acter central.
Ejemplos: abba, abcba.
112 TEMA 9. ALGUNOS PROBLEMAS DE INGENIER
´
IA
9.7.3 Mensaje oculto
Una frase puede cambiarse para que resulte irreconocible. Una forma muy simple consiste en
cambiar cada car´acter por el siguiente del alfabeto. Por ejemplo, la palabra IBM se convierte en
HAL.
El programa que se desea construir ha de codificar, mediante esta t´ecnica simple, una frase
que se leer´a del teclado. Considere que la frase le´ıda consiste ´ unicamente en una palabra formada
por letras (sin n´ umeros ni otros caracteres).
Para simplificar no tenga en cuenta el caso de letras con tilde o di´eresis.
9.7.4 Mensaje oculto II
Se puede expandir el programa anterior para que opere tambi´en con frases que contienen carac-
teres que no son letras, tales como los n´ umeros y signos de puntuaci´on. Los ´ unicos caracteres
que se han de modificar son las letras.
Por ejemplo, si la frase que se introduce es >Quedamos a las 6h? el resultado ha de ser
>Rvfebnpt b mbt 6i?
Para simplificar no tenga en cuenta el caso de letras con tilde o di´eresis.
9.7.5 Descifrar mensaje
Se trata ahora de resolver el problema inverso: dado un mensaje codificado proporcionar la frase
original.
El programa ha de leer del teclado una frase codificada, como por ejemplo >Rvfebnpt b
mbt 6i?. Como resultado el programa ha de escribir en la pantalla el mensaje sin codificar
>Quedamos a las 6h?.
Para simplificar no tenga en cuenta el caso de letras con tilde o di´eresis.
9.7.6 Mensaje oculto II
En los dos problemas anteriores se ha ignorado el caso de la letra z. Esta letra plantea un
problema para ser codificada pues no existe otra letra posterior. Una forma de resolver este
problema es ”asignar” de forma artificial la a como letra siguiente a la z. De este modo una
frase como zona 3 se codifica en apob 3.
Para simplificar no tenga en cuenta el caso de letras con tilde o di´eresis.
c M.R. Arahal 2003 DISA. ESI. US. 113
9.7.7 Pase a may´ usculas
Se desea cambiar una frase de forma que todas las letras queden en may´ usculas. El programa
leer´a una frase del teclado y escribir´a como resultado la misma frase pero con las letras cambiadas
de forma que todas est´en en may´ usculas. Por ejemplo, la frase Tengo clase a las 16h en la
planta E-2 ha de transformarse en TENGO CLASE A LAS 16H EN LA PLANTA E-2.
Obs´ervese que las letras que ya estaban en may´ usculas se quedan igual. Los caracteres que
no son letras no se ven afectados.
Para simplificar no tenga en cuenta el caso de letras con tilde o di´eresis.
9.8 Tratamiento de archivos
9.8.1 Agenda telef´ onica
Se desea crear una agenda telef´onica. Esta agenda consiste en un archivo de texto en el que
aparecen nombres, apellidos y n´ umeros de tel´efono.
Esta tarea puede realizarse con la libreta de notas, pero en lugar de eso queremos desarrollar
un programa en MATLAB que recoja los datos de la agenda y los introduzca en un archivo.
El programa ha de preguntar al usuario el nombre, apellidos y n´ umero de tel´efono de una
persona. Posteriormente preguntar´a si desea a˜ nadir otra persona a la agenda o grabar los datos.
Si escoge a˜ nadir el programa ha de volver a preguntar el nombre, apellidos y n´ umero de tel´efono,
en caso contrario el programa escribir´a los datos en un archivo de texto.
El archivo de texto ha de tener el formato siguiente: los dos primeros caracteres son un
n´ umero de orden, a continuaci´on viene un espacio. Los 15 caracteres siguientes se reservan para
el nombre. A continuaci´on debe aparecer una coma. Los 30 espacios siguientes se dejan para
los dos apellidos. Despu´es ha de aparecer la palabra Tel y un espacio en blanco. Finalmente se
escribe el tel´efono y se pasa a la l´ınea siguiente.
En el recuadro siguiente se puede observar un ejemplo de dicho archivo de texto.
01 Pedro, P´erez Repitre Tel 56 90 02
02 Ana, Regues D´ıaz Tel 11 32 45
03 Juan, Borda Ruiz Tel 34 43 78
04 Antonio, Garc´ıa Wrkczy Tel 21 32 43
114 TEMA 9. ALGUNOS PROBLEMAS DE INGENIER
´
IA
9.8.2 Agenda telef´ onica II
Para consultar la lista de tel´efonos confeccionada con el programa anterior es posible usar la
libreta de notas. En lugar de eso se quiere crear un programa en MATLAB que lea el archivo y
presente en la pantalla la informaci´on que contiene.
El programa no recibe dato alguno. Su misi´on consiste en leer el archivo que contiene la
agenda y mostrar en la pantalla la lista de nombres, apellidos y tel´efonos exactamente en la
misma forma en la que aparece en el archivo.
9.8.3 Agenda telef´ onica III
En una agenda es frecuente que haya que a˜ nadir nuevos tel´efonos o borrar alguno existente .
Se ha de realizar un programa que lea el archivo (creado con el programa de 9.8.1), presente su
contenido en pantalla y pregunte al usuario si desea a˜ nadir o eliminar algo. En caso de que se
desee a˜ nadir el programa preguntar´a al usuario los datos del mismo modo que en el programa de
9.8.1. Si se desea eliminar una entrada de la agenda (una l´ınea de datos) el programa preguntar´a
qu´e n´ umero de l´ınea se desea eliminar. El programa concluye escribiendo un nuevo archivo con
los cambios realizados.
Bibliograf´ıa
• P. Anasagasti, Fundamentos de los computadores. Paraninfo, 1990.
• M. R. Arahal, Fundamentos de inform´atica. Escuela Superior de Ingenieros, Universidad
de Sevilla, 1999.
• T. Aranda, Notas sobre MATLAB. Universidad de Oviedo, Servicio de Publicaciones,
1999.
• J. Mathews, M´etodos num´ericos con MATLAB. Prentice Hall, 2000.
• C. P´erez L´opez, Matem´atica informatizada con MATLAB, Ra-Ma, 1996.
• K. Sigmon , Introducci´on a MATLAB. University of Florida, 1992. (Traducci´on de Ce-
lestino Montes. Escuela Superior de Ingenieros, Universidad de Sevilla).
• M. J. Soto Prieto,
´
Algebra lineal con MATLAB y MAPLE. Prentice-Hall Internacional,
1995.
• G. Brassard y P. Bratley, Fundamentos de algoritmia. Prentice Hall, 1997.

2

Contenido

´ Indice

3

1 Introducci´n y fundamentos o 1.1 Inform´tica y computadoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 1.1.1 1.2 Programas e instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . .

1 1 2 3

Estructura funcional de la computadora digital . . . . . . . . . . . . . . . . . . .

2 Codificaci´n binaria de la informaci´n o o 2.1 Sistema binario de numeraci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 2.1.1 2.2 2.3 2.4 Conversiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 5 6 7 9 10 10 11

Codificaci´n de n´meros enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . o u Codificaci´n de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o Otros tipos de informaci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 2.4.1 2.4.2 N´meros fraccionarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u Formatos gr´ficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a

3 Estructura de la computadora digital 3.1 3.2 Esquema funcional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Caracter´ ısticas de las memorias . . . . . . . . . . . . . . . . . . . . . . . . 3

13 13 14 14

. . . . . . . . . . . . . . . . . . .6 La unidad de control .4 3. . 5 Resoluci´n de problemas o 45 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6. . . . . . . . . . . . . . . . . . . . . . .7 Ejecuci´n de instrucciones . . . . . . . .2 Estructura . .7. . . . . . . . . . . . . . . . . . . . . . . . . . . .7. . . .3. . . . . .5 La unidad aritm´tico-l´gica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. . . . . . . . . .2. . . . . . . . . . . o a 4. . . . . . . 3.4 3. . . . . . La instrucci´n de salto . . . . . . . . . . . . . e o La unidad de entrada y salida . . . . . . . . . . . . . . . . . . . . . . . 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 C´digo mnemot´cnico . . . . . . .1 4. . . . . . . . .3.3. . . . . .1 3. . . . . . . . . . . . . o 4 Lenguajes de programaci´n o 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 4. . . . . . . . . . . . . . . .2 3. . . . . . . . . . . . . . . . . . . Sistema de explotaci´n . . o 4. . . . . . . . . . . . . . . . . . . . . . . . . . . .2 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 Transferencias entre registros . . o e 31 31 32 33 34 35 36 40 42 44 Ensamblador . . . . . .1 Perif´ricos . . . . . .1 3. o 4. . . . .1 C´digo de m´quina . . . . . . . . . . . . . . . . . . . . .1.3 CONTENIDO Medidas de capacidad . . . . . . . . . . . . 15 16 16 17 19 20 20 25 25 27 28 29 Clases de memoria . . . . . . . . . o 3. . . . . . . . . . . . . . . . . . . Funciones de los sistemas de explotaci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Funcionamiento . . . . 3. La unidad de memoria central . . . . . . . .5. . . . . . . . . . . . .1 4. . . . . . . . . . . .6 Lenguajes de alto nivel . . Lenguajes interpretados . . . . . . . . . . . . . . El entorno MATLAB . . . . . . . . . . . . . . . . .2 Estructura matricial . . . . 3. . . . . e 3. . . . . . . . . . . . . . . .4 4. . . .3. . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .c M. . . . . . . . . . . . . . . . . . .2. . . . . . . . a 6 Desarrollo de algoritmos b´sicos a 6. . . 7. .3 Tipos . . . . . . . . . . . . a Bifurcaciones . . . . . . . . . . . . . . . . . . .4. . 5 45 47 49 50 50 52 54 54 5. . . . . . . . Ordenaciones . . . . . . . . . . .4 6. . .5. . . .1 7. . . . . . o Objetos y operaciones . . . . . . . . . . . . . . 6. . . . . . . . . . a 7 Programaci´n en MATLAB o 7. . . . . . . . . . . . . . . . . . . . . . . . . . . o 5. . . . . . . . . . . . . . . . .2. . . . .1 7. . . .2 Algoritmos y pseudoc´digo . . . . . . . . .1 5. . . . . Otros procesos iterativos . . . . . . . . . . . . . . Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . US. . . . . . .5. . . . . . . .4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 57 58 60 61 63 63 63 64 Bucles anidados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 6. . .2 Flujo lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 El entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C´lculos . . . . . . . . . . . . . . . 5. . . . . .2 7. . . .1 Fases del proceso de resoluci´n de problemas . . . . . . . . . . .5. . . . . . .1 6. . . . . . .4 Programaci´n estructurada . . . o 5. .3 6. . . . . . . . . . . . . . . . . . . . 5. . . . . . . . . . . . . . . . . . . . . . . Arahal 2003 DISA. . . . . . . . . . . 5. . . . . . . . . . . . . . . . . . . . . . . . . . . o o Asignaci´n . . . . . . . . . . . . . . . . . . . . . . . . . .3 Sucesiones y series . . . . . . . . . . . . . . . . . . . . . o 65 65 66 66 66 66 . . . . . . . . . .R. . . . . .2. . . . .1 S´ ımbolos . . Creaci´n y destrucci´n . . . .3 Diagramas de flujo . .1 5. . . . . . . . . . . . . . . . ESI.1 6. . . . . . . . . .3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 C´lculos en secuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . An´lisis descendente . . . . . . . . . . . . . .2. .2 6. . . . . . . . . . Bucles simples . . . . . .

2 8. . . . . . . .2 7. . . . . . . . . . . . . .6 7. . . . . . . . . . Funciones incorporadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6. . . . . . . o o 9 Algunos problemas de ingenier´ ıa 9. . . . . . . . .3. . . . . . . .7 Ejemplos de programaci´n I o 8 Programaci´n de funciones en MATLAB o 8. .5 7. . . . . . . . . . . Funciones para el manejo de datos . . . . . . . . . . . . . . . . . .3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 89 89 90 92 94 97 Fases de la ejecuci´n de una instrucci´n . . . . . . . . . . . . . . . .3 La bifurcaci´n . . . . . .3 7. . . . . . . . .2 7. . . o El bucle ”mientras” . . . . . . . . . . . . . . . . . . . .4. . . . . . . . . . . . . . . . . . . .1 Legibilidad . . . . . . . La sentencia for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 7. . 7. . . . . . . . . . . . . . . . . . .3 Concepto de funci´n . . . . . . . . . . . . . . . . . . . Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 CONTENIDO Operaciones y funciones incorporadas . . . . . . . .3. . . . . . . . . .6. . 7. . . . . . o Datos y resultados . . . . . . . . . . . . . . . . . .6 7. . . . . . . . . . 67 67 72 72 75 76 77 79 80 80 82 82 84 85 87 Codificaci´n de nuevos programas .4 Operaciones elementales . . . . . .4 7. . . . . . . . . . Vectores . . . . a Sentencias de control . . . . . . . . . . . . . . . 7. o 99 99 . . . . . . . . . . . . . . . . . . . . . . . .6. . 8. . . . . . . . 7. . . . . . . . . . . . . . . . . . . . Cadenas de caracteres . .3. . . . . . . . . . . . . . . . . . . . . .3. . .5 7. .1 Interpolaci´n con segmentos .4 Clasificaci´n de las variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3. . . . . .6 Funciones para trazado de gr´ficas . . . . . . . . . . . . . . . . . Variables locales y globales . . . . . .1 8. . . . . . . . . . . . . . . . . . . .3. . . .1 7. .1 7.

. . . . . . . . . . . US. . .3 Agenda telef´nica o . . . . . . . . . . . . . . . . . . . . .8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .R. . . . . . . .7.8. . . . . . . .1 9. . . . . . . . . . . . . . . . . . . . . . . . . . .1 9. . . . .6. . .2 Introducci´n . . . . . . .7. .5 9. . . . . . . . . 112 Descifrar mensaje . . . . . . . . .7. . . . . . . . . . . . . 107 e o 9.3 9. . . . . . . . . . . .4 Ajuste por m´ ınimos cuadrados . . . . .8. . . . . . . . . . . . . . . .4. . . . . . . . . . . . . . . . . . Arahal 2003 DISA. . . . . ESI. . . . . . . . . . . . . .1 M´todo de la bisecci´n . . . . . . . . . . . . . . . . . . . . . . . . .4 9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7. . . 100 C´lculo aproximado de ´reas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 u 9. . . . . . . . . . . . . . . . . . . . . . . . . 114 o Agenda telef´nica III . . . . . . . . . . . . . . . . . . . . 7 9. . . . . 112 Mensaje oculto II . . . . .7. . 112 Pase a may´sculas . . . . . . . . . . . . . . . . . . . . . . .1 9. . . . . . . . . . . . . . . . .7.7 Tratamiento de textos . . . . 105 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7. . . . . 113 Agenda telef´nica II . . . . . . 104 o e 9. . .6 9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Mensaje oculto II . . .5. . . . . . . . . . . . . . . . . .6 Superficies . . . . 104 o El m´todo de Euler e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 9. . 102 a a Integraci´n num´rica de ecuaciones diferenciales . . . . .5 Ecuaciones trascendentes 9. . . . . . . . . . . . . . . 111 9. . . . . . . . . . . .2 9. . . . . . . . .2 9. . . . . .1 B´squeda de extremos .3 9. . . 111 Mensaje oculto . . . . . . .4. .8 Tratamiento de archivos . . . . 114 o Bibliograf´ ıa 115 . . 106 9. . . .7 Palabras en orden inverso . . . . . . . . . . . .c M. . . . . . . . 111 Pal´ ındromo . . . . . 113 u 9. . . 109 9. . . . . 113 9. . . . . . . . . . .

8 CONTENIDO .

sonido.1 consid´rese una calculadora.1. por lo que algunos aspectos tratados pueden parecer triviales. tratamiento y transmisi´n de la ino o o formaci´n. La inforo o o a maci´n ha de ser suministrada de forma adecuada para su tratamiento por parte de la m´quina. Hoy en d´ los usos de la computadora son bien conocidos por la mayor´ ıa ıa de las personas. esto es. Los 1 . procesarla y proporcionar cierta informaci´n resultante. 1. por lo que el o u campo de utilizaci´n de la inform´tica es muy amplio como es sabido. o a Las m´quinas que permiten realizar autom´ticamente las operaciones citadas se denominan a a computadoras y tambi´n ordenadores. Se puede definir la computadora como un elemento e capaz de aceptar informaci´n.1 Inform´tica y computadoras a ´ La informatica trata de la adquisici´n. etc. representaci´n. con poca o ninguna intera venci´n humana y bajo el control de una lista de tareas previamente definida como se representa o gr´ficamente en la figura 1. o ´ Muchos de los conceptos que se vierten aqu´ se pueden aplicar a otros dispositivos. a o Es conveniente observar que la definici´n dada no explicita la forma de los datos ni tampoco la clase de tratamiento que han de sufrir para proporcionar los resultados. La o e o o a informaci´n aludida puede ser de muy diversos tipos: n´meros. Estas son las tareas que realizan las m´quinas llamadas computaa o a doras u ordenadores. Junto con tales definiciones se presenta ahora el modelo de computadora que detallar´ a en el tema 3. pero no es el unico. es conveniente definir y delimitar los t´rminos que se manejar´n en este texto para evitar confue a siones. El tratamiento ha de realizarse de forma autom´tica. Sin embargo. e A fin de ilustrar las interacciones representadas en la 1.Tema 1 Introducci´n y fundamentos o En este primer cap´ ıtulo se definen los conceptos fundamentales del c´lculo y tratamiento aua ´ tom´ticos de la informaci´n. Veremos que la computadora digital es un dispositivo que cumple con la definici´n dada. sin embargo ı el objetivo de este libro es la computadora digital. texto. El t´rmino procede de la uni´n de dos palabras: informaci´n y autom´tica.

el programa es un conjunto ordenado de instrucciones que se dan a la computadora de forma que se obtengan los resultados a partir de los datos.1. o datos proporcionados por el operador son n´meros y operaciones a realizar que la calculadora u recibe al ser presionadas ciertas teclas. Una instrucci´n es un conjunto de s´ o ımbolos que representan una orden de opo eraci´n o tratamiento de los datos. Es conveniente comprender que un programa es una secuencia de instrucciones en un campo a a mucho m´s amplio que el que se considerar´ en este libro. 1. Tambi´n ha habido computadoras neum´ticas y en la actualidad se investiga a e a en posibles usos de la luz para construir ordenadores ´pticos. Para aclarar estos conceptos consid´rese el problema de realizar una serie de operaciones en una calculadora de bolsillo. Por tanto. INTRODUCCION Y FUNDAMENTOS Figura 1. Esto puede ser bastante tedioso si se ha de aplicar la misma f´rmula una y otra vez con datos diso . la cual est´ formada por ina strucciones. Los a e ´ o programas para la redacci´n de texto. etc. los juegos de acci´n. u Los datos se convierten en resultados mediante procesos de c´lculo en los que el operador ha a intervenido poco (comparado con realizar los c´lculos a mano).1. o Los conceptos que se definir´n a continuaci´n son de aplicaci´n en todos los ejemplos mena o o cionados anteriormente. verific´ndose el diagrama de la figura 1. a u a Como es sabido. a eran mec´nicas. son otros ejemplos de tareas que se realizan con computadoras.1: La computadora trata la informaci´n de entrada (datos) para producir resultados. Los resultados son n´meros que aparecen en el visor. las bases de datos. pero esto no ha sido siempre as´ De hecho. el cual tiene por tanto una a validez muy amplia. de forma que el operador ahorre esfuerzo. por e 3 +2 ejemplo obtener x 6 . Para resolverlo basta con pulsar una cierta secuencia de teclas. las primeras m´quinas de calcular o ı. los programas de dibujo art´ o ıstico o lineal. Veremos m´s adelante que es a a posible automatizar m´s a´n la tarea del c´lculo.1 Programas e instrucciones La computadora realiza una lista de tareas llamada programa. el c´lculo num´rico no es la unica aplicaci´n de las computadoras.2 ´ TEMA 1. o En la actualidad la tecnolog´ electr´nica digital domina el tratamiento autom´tico de la ıa o a informaci´n.

si se precisa calcular otra funci´n como 5+x 3 para distintos valores o de x basta con cambiar la secuencia de teclas. pero en la actualidad la . 6 . A esta tarea se le llama simplemente uso del programa. 3 tintos. Una vez programada. Una descripci´n m´s detallada mostrar´ los m´dulos que realizan tareas concretas. ahorrando tiempo al operador.2: Una calculadora programable permite realizar c´lculos con menor intervenci´n hua o mana. La misma m´quina realiza ahora operaciones a diferentes al activar el programa. la computadora puede ser usada para obtener resultados a partir de datos. 3 . Esto es.c M. Esta operaci´n recibe el nombre de programaci´n. N´tese que el paso 1 s´lo se ha de realizar una vez. Proporcionar una lista con las pulsaciones de teclas: xy . Arahal 2003 DISA. Si la calculadora pudiera pulsar sus propias teclas bastar´ con proporcionar unicamente el valor de x.1 no indica las partes de que consta.2 Estructura funcional de la computadora digital El esquema de computadora presentado en la figura 1. por lo que el operador ahorra mucho o o tiempo y esfuerzo. 1. En tal caso el trabajo del operador se ve ıa ´ reducido a: 1. las veces de programa. La lista de teclas a pulsar hace. a a 2 Continuando con el ejemplo. pues son muchas las instrucciones que pueden realizarse de forma autom´tica con s´lo poner en marcha el programa. es decir. En la historia o a ıa o de las computadoras se han utilizado diversas estructuras funcionales. Introducir cada valor de x y activar la secuencia anterior. 2 . lo que realiza una computadora. US. = 2. a o Figura 1. ESI. Programar la m´quina o o a es por tanto proporcionar el programa o lista ordenada de instrucciones que resuelve una tarea o problema. / . en esencia. En este ejemplo sencillo vemos que hay dos tipos de acciones que se realizan con la computadora. Las computadoras son m´quinas vers´tiles gracias a que es posible cambiar el programa. El primer tipo viene ilustrado por el paso 1 y consiste en proporcionar las instrucciones que forman el programa. Este programa es proporcionado una vez y puede ser usado en varias ocasiones.R. + . en el ejemplo. para distintos valores de x. El mismo programa puede usarse repetidas veces con datos distintos.

Hay que resaltar. Las v´ ıas ´ de comunicaci´n con el mundo externo son los perifericos. que es el responsable de la ejecuci´n del programa. de acuerdo con las instrucciones del programa. e o esto es. • Unidad aritm´tico-l´gica.) y l´gicas (suma l´gica. Las c´lulas se asocian en bloques para representar informaciones e diversas. el disco. etc. Tiene como misi´n almacenar informaci´n. por lo que ´sta o e e puede considerarse como el director del sistema.3: Esquema de Von Neumann para la computadora digital. negaci´n. Permite obtener o mandar datos del/al exterior. Von Neumann. la informaci´n procesada o o (los resultados) y otros. INTRODUCCION Y FUNDAMENTOS unidad de entrada/salida UAL Memoria principal Periféfico 1 Unidad de control Periférico n señales de control información Figura 1. Este ´rgano es el responsable de ordenar a la UAL que realice operao ciones con datos tomados de la memoria. que consta de las siguientes a partes: • Memoria principal. que la comunicaci´n entre bloques es de dos tipos: datos y se˜ales o n de control. La memoria tiene un papel pasivo proporcionando o los datos e instrucciones cuando son solicitados por la UCP. que es el nombre gen´rico o e dado a dispositivos como: el teclado. resultados producidos y tambi´n las instruce ciones que forman el programa. • Unidad de entrada y salida. un cero o un uno. La UC y la UAL forman la unidad central de proceso (UCP). El diagrama de la computadora digital de acuerdo con esta estructura se puede ver en la figura 1. Dentro de los datos se incluye todo tipo de informaci´n adecuadamente representada o incluyendo la informaci´n proporcionada (datos en sentido habitual). como son datos con los que operar. La armonizaci´n del trasvase de informaci´n entre a e o o los distintos m´dulos tambi´n corre a cargo de la unidad de control (UC). . la impresora.4 ´ TEMA 1. • Unidad de control. e o o o La unidad aritm´tico-l´gica (UAL) realiza las operaciones citadas bajo el control de la e o unidad de control. etc. el monitor. las cuales est´n tambi´n en la memoria.3. resta.). m´s usada deriva del modelo ideado en 1945 por J. Este m´dulo incluye un conjunto de circuitos capaces de ree o o alizar operaciones aritm´ticas (suma. etc. Las se˜ales de control son ´rdenes que la UC manda a los distintos elementos para que se n o realicen las operaciones. Consiste en un conjunto o o de c´lulas cada una de las cuales es capaz de almacenar una unidad de informaci´n binaria.

Sin embargo estamos acostumbrados a ver que las computadoras permiten utilizar informaci´n de muchos tipos: texto. Para poder representar o a o o la informaci´n con ceros y unos es necesario usar un c´digo. por lo que s´lo existen dos o 5 . En el sistema decimal se trabaja con cifras del 0 al 9. sonidos. En base 10 se interpreta como: un millar m´s cuatro centenas m´s nueve decenas u a a m´s dos unidades. 4. Como es sabido. o ´ 2. En el sistema binario la base es el 2. Estos circuitos son capaces de cobijar los valores cero y uno por lo que constituyen celdas de memoria que almacenan estos valores binarios. llamado decimal. En este tema se muestra en qu´ forma e es posible representar informaci´n diversa usando unicamente los valores cero y uno.Tema 2 Codificaci´n binaria de la o informaci´n o Se ha indicado en el tema introductorio que las computadoras digitales s´lo manejan informaci´n o o en forma de ceros y unos. el m´s u o a usual es el sistema en base 10. En este sistema. 9 y 2. se interpretan las cifras como coeficientes de un polinomio en potencias de 10: N |10 = dn · 10n + · · · + d1 · 101 + d0 · 100 donde los d´ ıgitos dn a d0 constituyen el n´mero en base 10. Los dispositivos electr´nicos usados para construir las computadoras digitales se dise˜an o n para trabajar en torno a dos valores de tensi´n uno de ellos se asocia con el estado 1 y el otro o con el 0. Para aclarar ideas consid´rese el u e n´mero 1492. gr´ficos.1 Sistema binario de numeraci´n o Los n´meros se pueden expresar en distintos sistemas de numeraci´n. o lo que es lo mismo: a 1492 = 1 · 103 + 4 · 102 + 9 · 101 + 2 · 100 Los d´ ıgitos o coeficientes del polinomio son las cifras 1.

6 ´ ´ TEMA 2. 3.1 donde se obtiene la representaci´n en base dos del n´mero 214 |10) . realizando la suma de potencias de dos. o Al realizar una conversi´n hay que tener en cuenta que la cantidad representada no cambia. 11. Una posibilidad a es dividir sucesivamente el n´mero por dos. es f´cil hallar su equivalente decimal sin m´s que aplicar la u a a o u relaci´n (2. En general. Los restos de las divisiones dan el n´mero en u u binario. A los coeficientes d i de la representaci´n o 1. 2. Para obtener los restantes seis d´ ıgitos se utilizan las letras A. de base 16. Habitualmente se trabaja en base 10. D. C. o u 1 del ingl´s binary digit e . le´ ıdos en sentido ascendente. el Teorema Fundamental de la Numeraci´n proporciona el valor decimal de o una cantidad expresada en base b por ciertas cifras. 13. donde el punto separa la parte entera de la fraccionaria (en la base en cuesti´n). 12. Sean los d´ ıgitos g p gp−1 · · · g0 .g−1 · · · g−n . entonces el o valor decimal es i=p N |b = i=−n gi · bi Otros sistemas de representaci´n num´rica muy usados en inform´tica son el octal. B. 1.1) ı u as´ el n´mero 01001 en base dos (indicado frecuentemente como 01001 | 2) ) se interpreta como la cantidad 0 · 24 + 1 · 23 + 0 · 22 + 0 · 21 + 1 · 20 = 9 |10 Obs´rvese que se ha indicado la base utilizada mediante un sub´ e ındice. 2. Es decir. por lo que se omite dicho sub´ ındice. E y F para representar los valores 10.1). 14 y 15 respectivamente. Este ultimo sistema ´ plantea un problema a la hora de escribir n´meros y es que son necesarios 16 d´ u ıgitos distintos. es m´s elaborado. tal como se muestra en la figura 2. por ello a o a se van a describir con detalle. Por ejemplo el n´mero 1 | 2) equivale a 1 · 20 que es el uno en base 10. es decir. El paso contrario. 8 y 9.1.1 Conversiones Las conversiones permiten obtener las cifras correspondientes a una misma cantidad en distintas bases. CODIFICACION BINARIA DE LA INFORMACION posibles coeficientes: el cero y el uno. a los de la binaria bi se les llama bits Los sistemas decimal y binario son s´lo dos ejemplos de una infinidad de posibles sistemas con o base b . lo que se modifica es la forma en que se simboliza dicha cantidad. cuya base o e a es 8 y por tanto usa las las cifras del 0 al 7 y el hexadecimal. digital se les llama d´ ıgitos. 7. pero cambiando la base: N |2 = b n · 2 n + · · · + b 1 · 2 1 + b 0 · 2 0 (2. En inform´tica la conversi´n m´s usada es la de decimal a binario y viceversa. 6. por tanto 1 |2) = 1 |10) . Dado un n´mero en base dos. En el sistema decimal s´lo hay diez d´ o ıgitos: 0. el paso de de decimal a binario. 4. La interpretaci´n de un n´mero escrito en base dos es la o u misma que en decimal. Del mismo modo se obtiene que 101 |2) = 1 · 22 + 0 · 21 + 1 · 20 = 5 |10) . 5.

pero al considerar un grupo de o u o ellas (el registro) se pueden codificar n´meros mayores como veremos. Arahal 2003 DISA.1: M´todo de la divisi´n larga para la conversi´n de base 10 a base 2. por lo que existen l´ ımites a los n´meros que es posible representar. o 2. es decir.R. 214 0 2 107 1 7 2 53 1 2 26 0 2 13 1 2 6 0 2 3 1 11010110 2 1 1 2 0 Figura 2. u Para representar un n´mero entero positivo mediante un conjunto de bits se puede usar la u codificaci´n del n´mero en base 2. por lo que u la representaci´n en base dos resulta 10000 |2) +10 |2) = 10010 |2) . Si el n´mero de celdas es mayor. si se dispone de registros de 16 celdas es o u posible almacenar los n´meros entre el 0 y el 216 − 1 = 65535. a o potencia 20 21 22 23 24 25 26 27 28 29 210 decimal 1 2 4 8 16 32 64 128 256 512 1024 binario 1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000 Ciertas conversiones resultan c´modas de este modo. por lo que es largamente utilizada.c M. Ahora bien. e o o Resulta interesante conocer las potencias de dos de ciertos n´meros para as´ realizar converu ı siones de forma r´pida sin usar la regla de la divisi´n. Cada celda s´lo pueden representar los n´meros 0 ´ 1. ¿y los n´meros negativos?. u u digamos 20. 18 |10) = 10010 |2) . Por ejemplo. US. La computadoras digitales utilizan registros de una anchura determinada. para pasar a binario el o n´mero decimal 18 basta con observar que 18 |10) = 16 + 2 y por tanto igual a 24 + 21 .2 Codificaci´n de n´ meros enteros o u La memoria de una computadora est´ formada por muchas c´lulas elementales agrupadas en a e registros. De este modo. es posible ampliar el rango representable desde cero hasta 2 20 − 1 = 1048575. a o a La representaci´n mostrada que utiliza la base dos es f´cil de entender y de usar. El signo menos tendr´ que u ıa . ESI. Este hecho caracter´ u ıstico de los sistemas digitales no sorprender´ a quien haya utilizado una calculadora.

y va la representaci´n en base dos del valor absoluto. . . pues el bit u o de signo debe quedar a la izquierda.. A modo de ejemplo v´ase la representaci´n de los e o n´meros 5 y −4 codificados en un registro de 6 bits u 5 = 000101. 0) y el negativo (11 . Es decir. 1). a El ejemplo habitual con ocho bits queda: 5 = 00000101. o a Otra caracter´ ıstica de este sistema es que tiene dos ceros: el positivo (0 00 . o 1. El resto de la codificaci´n es: el n´mero en base dos si el signo es positivo o el complemento bit a bit o u u del valor absoluto si es negativo. por lo que se ha buscado otro o m´todo. s va donde s simboliza el bit de signo.. En general. −4 = 100100 Es indispensable conocer n para saber d´nde est´ el signo. . CODIFICACION BINARIA DE LA INFORMACION poder expresarse como un cero o un uno. El ejemplo anterior en se expresa en complemento a uno con ocho bits del siguiente modo: 5 = 00000101. La idea m´s simple es usar el bit m´s a la izquierda a a ´ del registro para indicar el signo del n´mero. El complemento a dos de un n´mero es igual al complemento a uno m´s uno. u pero los n´meros negativos se codifican con el bit de signo igual a uno y el resto como 1 u a u m´s el complemento bit a bit del valor absoluto en base dos. Los n´meros negativos se representan pues igual que en complemento a 1 sum´ndoles 1. . 0) y el negativo (1 00 . Se reserva un bit de la palabra (normalmente el izquierdo) para el signo. 2n−1 − 1 . con un registro de 16 unidades se pueden representar los n´meros del u 32767 hasta el 32767. los negativos sufren el cambio de los unos por ceros y los ceros por unos (excepto el bit de signo). 3. Como ejemplo consid´rense los n´meros 5 y −4 codificados en un registro de 8 bits: e u 5 = 00000101. los n´meros positivos se representan igual que en el sistema anterior. los n´meros positivos se representan igual que en el sistema signo-valor absoluto. . −4 = 11111011 Utilizando seis bits resulta: 5 = 000101. Este sistema queda descrito de forma gr´fica del siguiente modo: a . . Esta y otras posibles representaciones se explican u a continuaci´n. Los n´meros positivos tienen un valor 0 para este bit y los negativos un u valor 1. −4 = 11111100 . −4 = 10000100 El n´mero de celdas n del registro afecta a la representaci´n de los negativos. Nuevamente se reserva el primer bit para el signo. mientras que. −4 = 111011 Este sistema tambi´n tiene dos ceros: el positivo (00 . 2. para un n´mero de bits en la palabra igual a n se u pueden representar los enteros comprendidos en el rango −(2n−1 − 1). Los dos sistemas anteriormente vistos presentan dificultades a la hora de realizar sumas y restas mediante circuitos l´gicos. Complemento a 2. . Para e u un n´mero de bits en la palabra igual a n se pueden representar los enteros comprendidos en el rango −(2n−1 − 1). Modo signo-valor absoluto. o De este modo. . 0). 2n−1 − 1 . e u a es decir.8 ´ ´ TEMA 2. Complemento a 1.

pero con funciones de control. Arahal 2003 DISA. . • C´digos sin representaci´n gr´fica. fin de mensaje. la cual se explica en la tercera columna. la segunda a u es un nombre abreviado de la funci´n que realiza. 2n−1 − 1 .2 resume algunas de las o o funciones m´s usadas. 9 Utilizando seis bits resulta: 5 = 000101. que usa 8 bits. e u • Signos: ? ( ) . que es un c´digo que asigna arbitrariamente un n´mero o u entero a cada signo. por lo que se pueden representar 27 = 128 signos distintos. que se transmiten entre dispositivos. . o fin de fichero. Tambi´n es de inter´s observar que existen c´digos sin representaci´n u e e o o gr´fica. Al contrario que las letras y signos que aparecen por la pantalla o la impresora. por lo que se pueden representar 256 signos. 0) que usa el u a o espacio de un n´mero positivo. Lo que los hace en cierto modo especiales es el modo en que los perif´ricos e los usan. Para escribir las cifras de un tel´fono. los c´digos de control realizan cierta funci´n sobre el dispositivo.3 Codificaci´n de caracteres o Muchas veces la informaci´n que la computadora ha de procesar no son n´meros sino caracteres o u textuales tales como: • Letras may´sculas y min´sculas. que se han marcado como cc pues son c´digos de control. u u • D´ ıgitos. Se observa que en el lado de los negativos hay un n´mero m´s. La primera columna indica el n´mero dentro de la tabla ascii. Estos incluyen n´meros.R. El n´mero −2n−1 tiene siempre la representaci´n especial u u o 10 · · · 0 que corresponde al cero negativo en los m´todos anteriores. Para transmitir y almacenar informaci´n de este tipo se cre´ el ASCII (American Standard o o Code for Information Interchange). los c´digos de mensaje recibido. . −4 = 111100 Los n´meros que se pueden representar usando un registro de n c´lulas son los enteros u e comprendidos en el rango: −2n−1 . el aviso sonoro. Obs´rvese que las letras o e van en orden alfab´tico a excepci´n de la letra n. Esto es consecuencia de que s´lo existe un cero: (00 . Los n´meros son luego representados en base dos para poder ser tratados u por la computadora. La tabla 2. Esto pemite incluir la letra n y otras de diversos alfabetos. En la tabla 2. o la hora. el alfabeto ingl´s en may´sculas y min´sculas.1 se muestran los c´digos ascii correspondientes a algunos caracteres. o . Una versi´n posterior de este c´digo es el ASCII o o o extendido. signos matem´ticos y de punu e u u a tuaci´n y algunos caracteres de control. { } ♥ [ ] + $ . a o Los caracteres de control son combinaciones de ocho d´ ıgitos binarios. al igual que el resto de la tabla ASCII. e 2. o n´meros. ESI. ´ El ASCII usa 7 bits. por ejemplo el retorno o o a de carro de la impresora. . etc. US. Las may´sculas est´n colocadas en la tabla e o ˜ u a antes que las min´sculas.c M. ˜ o El conjunto de signos incluidos en el c´digo recibe el nombre de tabla ascii.

. . A continuaci´n se describen dos posibles soluciones o 1. Este sistema queda descrito de forma gr´fica del siguiente modo: a 2p ··· 21 20 . 90 Signo Nro. o 2. 1 2 3 4 5 6 SOH STX ETX EOT ENQ ACK Transmisiones comienzo de cabecera comienzo de texto fin de texto fin de la transmisi´n o petici´n de transmisi´n o o reconicimiento de transmisi´n o 7 8 9 10 11 13 BEL BS HT LF VT CR Pantalla o impresora se˜al audible n retroceso tabulaci´n horizontal o avance de l´ ınea tabulaci´n vertical o retorno de carro Tabla 2. usando para ello potencias u e negativas de dos. Se reservan algunos bits del registro para la parte entera del n´mero en u binario y otros para la fraccionaria. No se ha tenido en cuenta el problema del signo. 48 49 50 51 . Nro. 97 98 99 100 101 102 Signo . . CODIFICACION BINARIA DE LA INFORMACION Signo Nro. y el punto decimal e se fija antes de los dos ultimos bits. Consid´rese a modo de ejemplo que se tiene un registro de ocho celdas.2: Algunos c´digos de control. . es decir.10 Nro. . entonces el n´mero 000001. los o coeficientes multiplican potencias negativas de dos.4 2. . 63 64 65 66 67 . . 0 1 2 3 . a partir de una posici´n predeterminada. . 0 1 2 3 . . . .1 Otros tipos de informaci´n o N´ meros fraccionarios u Los n´meros con decimales tambi´n se pueden expresar en binario. Punto fijo. . 2−1 2−2 ··· 2−q donde se han reservado p + 1 celdas para la parte entera y q para la fraccionaria.5 |10 . . Por ejemplo. .10 |2 se interpreta como: ´ u 1 · 20 + 1 · 2−1 = 1.1: Fragmentos de la tabla ascii. .75 | . . . . / 9 : Z a b c d e f ´ ı o ´ u ´ n ˜ n ˜ a Tabla 2. 161 162 163 164 165 166 Signo . 1·2 10 En las computadoras digitales se plantea el problema de representar el punto decimal y de interpretarlo. ? @ A B C . . . . el n´mero 101.25 = 5.5 + 0. . Nro. 57 58 ´ ´ TEMA 2.11 |2 representa la cantidad 1 · 22 + 0 · 21 + 1 · 20 + u −1 + 1 · 2−2 = 4 + 1 + 0. 46 47 Signo cc cc cc cc . .4.

4. Esta es la u gran ventaja del punto flotante frente al fijo y la raz´n de su uso.01 |2 como 2. o u Queda por resolver el problema de representar el signo tanto de la mantisa como del exponente. mantisa exponente Dado un n´mero n de celdas el punto flotante permite representar la misma cantidad de u valores que el punto fijo pues las posibles combinaciones con n son las mismas. 2.R. el rango de valores representables es mayor en punto flotante. 11 y el n´mero 000010.1. pues el exponente permite alcanzar n´meros muy altos si es positivo o muy cercanos a cero si es negativo. este sistema se usa u poco en la actualidad. u Los circuitos de la UAL se construyen de forma que cada parte del registro es tratada correctamente de acuerdo a la posici´n del punto decimal que es fija.126 puede expresarse como 3. Esta es la idea usada por formatos gr´ficos denominados matrices de puntos (llamados a en ingl´s formatos raster y bitmapped). como el signo-valor e absoluto o el exceso a 2n−1 . La u primera cantidad. Despu´s de la normale izaci´n cada n´mero M y N se codifica en un trozo de registro. que puede mostrarse de forma gr´fica como: a s. E) de forma que N = M · 2 E . Puesto que existen muchas combinaciones de M y E que cumplen N = M · 2E se eligen adecuadamente de acuerdo con alguna regla.. Un n´mero con e o u decimales tal y como 340. Ahora bien. No se va a describir con detalle ninguno de estos formatos.0 y 0. Para ello basta con utilizar alguno de los m´todos vistos. Arahal 2003 DISA.0340126 · 104 o como 0. Las m´s comunes exigen que 0. Para aclarar el m´todo es mejor pensar en la representaci´n decimal.25 |10 . El cero indica un punto luminoso y el uno un punto oscuro. s . por e lo cual no se puede trabajar con n´meros muy dispares (por ejemplo 25000.5 ≤| M |< 1. a . El n´mero (N ) a representar se transforma en dos (M.340126 · 103 . M es llamada mantisa. En la figura 2. Resulta imaginable que teniendo una matriz con muchos elementos se pueden conseguir im´genes de gran calidad.00052) a u menos que se disponga de un n´mero de bits muy alto. El problema de esta t´cnica es que hay que fijar el punto decimal en un sitio concreto. . ESI.. Debido a esto. Existen varios formatos de punto flotante con sus reglas espec´ ıficas como IEEE 754. o 2.2 Formatos gr´ficos a Las im´genes pueden representarse mediante conjunto de puntos con un color o tonalidad de gris a dado. Punto flotante. De este modo queda fijado M y por tanto N . Las operaciones se o realizan adecuadamente en cada parte del registro.. por lo que a o representaci´n binaria de | M | comienza por 0. ´ Se denomina ajuste fraccionario o normalizacion al proceso de selecci´n de la mano tisa y el exponente de forma que cumpla con las especificaciones.2 se representa una silueta en blanco y e negro descrita mediante una matriz de unos y ceros..c M. baste saber que todos ellos son muy similares al caso comentado. US.40126 · 10 2 o como 0. la segunda E el exponente.

Estas ecuaciones pueden representarse de muchas formas. Para conseguir a grises se puede definir la misma matriz conteniendo n´meros del 0 al 255. Para obtener el color se puede realizar la a misma operaci´n 3 veces.7 Mc. para almacenar una imagen en color de 200 × 200 puntos con ocho bits para cada color se necesitan 200 × 200 × 3 × 256 bits. Utilizando el formato PostScript estos elementos quedan definidos en la forma en que se muestra a la derecha. Ambos m´todos (matrices de puntos y gr´ficos vectoriales) se combinan en los formatos e a denominados meta archivos (metafiles). La codificaci´n de la imagen se o reduce a la de las ecuaciones de las partes. una circunferencia por las de su centro y un punto de la misma.3: Descripci´n de una imagen (izquierda) en forma vectorial mediante PostScript. Por ejemplo un segmento queda perfectamente definido por las coordenadas de sus puntos extremos. 7. superficies.12 ´ ´ TEMA 2. Un m´todo alternativo consiste en describir la imagen mediante ecuaciones correspondientes e a l´ ıneas. siendo 0 el negro y 255 el blanco. o Las im´genes resultantes son en blanco puro y negro puro. Los gr´ficos vectoriales son adecuados para dibujos formados por elementos geom´tricos a e simples. etc. como planos y esquemas. de forma que a cada u nivel de gris le corresponde un n´mero. Se habla entonces de graficos vectoriales.2: Descripci´n de una imagen (izquierda) usando una matriz de valores binarios o (derecha). una para cada color rojo. o Este formato precisa mucha memoria. A modo de ejemplo consid´rese el dibujo de la figura 2. de forma que la uni´n de las partes produzca (aproximadamente) la o ´ imagen total.500 slw % Ellipse n 900 1050 525 300 0 360 DrawEllipse gs col-1 s gr % Polyline n 615 270 m 2100 1200 l gs col-1 s gr Figura 2. usados por muchos programas para poder incluir objetos formados por l´ ıneas precisas. que aproximadamente son 3. junto a otros que quedan mejor descritos mediante una matriz de puntos como fotograf´ ıas. . por ejemplo. CODIFICACION BINARIA DE LA INFORMACION Figura 2. Cada elemento de la u matriz ahora no es un bit. como siluetas. sino un car´cter (8 bits).3 consistente en un segmento y una e elipse. etc. verde y azul.

comenzando por la memoria y terminando con la unidad de control. La UC y la UAL forman la unidad central de proceso (UCP). la computadora digital est´ formada por varias unidades con tareas o a claramente diferenciadas.1.Tema 3 Estructura de la computadora digital 3. la informaci´n o o procesada (los resultados) y otros (direcciones de memoria. que es el responsable de la ejecuci´n del programa. Recordemos ahora el diagrama de bloques que puede verse en figura 3. Las se˜ales de control son ´rdenes que la UC manda a los distintos elementos para que se n o realicen las operaciones. Dentro de los datos se incluye todo tipo de informaci´n adecuadamente repn o resentada incluyendo la informaci´n proporcionada (datos en sentido habitual). Hay que resaltar. En este tema se va a profundizar en el estudio de las distintas partes funcionales de la computadora. Posteriormente se explicar´ en qu´ forma funciona el conjunto. que la comunicaci´n entre bloques es de dos tipos: informaci´n (datos) y o o se˜ales de control.1 Esquema funcional Como se avanz´ en el tema 1. La memoria tiene un papel pasivo proporcionando o los datos e instrucciones cuando son solicitados por la UCP. 13 . a e unidad de entrada/salida UAL Memoria principal Periféfico 1 Unidad de control Periférico n señales de control información Figura 3. estados. etc).1: Modelo de Von Neumann de la computadora digital.

ESTRUCTURA DE LA COMPUTADORA DIGITAL 3. Para resolver este problema se han propuesto hist´ricamente solua o ciones diversas muy imaginativas como l´ ıneas de retraso. En la arquitectura de Von Neumann (figura 3. Este modo es tambi´n llamado aleatorio. o En la actualidad se usan circuitos integrados. tubos de mercurio y n´cleos de ferrita. como resultado las memorias actuales tienen capacidad para varios millones de bits. pues no es destruida por el proceso o de lectura. discos magn´ticos y discos ´pticos. u La memoria en una computadora es un dispositivo capaz de almacenar informaci´n. 3. • Capacidad. Consiste en extraer una copia de cierta informaci´n. Para llegar a una determinada informaci´n no es preciso pasar por las e anteriores. Como ya se ha dicho. • Escritura.2. El tiempo invertido en el acceso . no obstante este requerimiento entra en conflicto con el coste. En la mayor´ de los casos o ıa tal informaci´n pueden leerse cuantas veces se desee. proporcion´ndola al exterior s´lo cuando sea solicitada. u o Como suelen ser n´meros muy altos se usan m´ltiplos como kilo y mega. Hay varias formas en las que se puede accceder a la informaci´n. las computadoras digitales trabajan con datos binarios. Los datos o que se van a almacenar ocupar´n algunas celdas de la memoria que previamente conten´ a ıan otros valores. A petici´n de la unidad de control la memoria es o capaz de realizar dos operaciones: • Lectura. Cualquiera e o que sea el soporte de la informaci´n la memoria queda definida por ciertas propiedades o caraco ter´ ısticas como son: • Tiempo de acceso. entre o o las que destacan el acceso directo y el secuencial.2 La memoria El tratamiento autom´tico de la informaci´n requiere el almacenamiento de la misma de forma a o m´s o menos permanente. u u • Modo de acceso. Para ello basta con o agrupar celdas elementales formando registros.1 Caracter´ ısticas de las memorias En la historia de las computadoras se han usado muchos dispositivos para almacenar informaci´n. por lo que la memoria debe poder guardar variables que toman dos valores: 0 ´ 1. que se definen a continuaci´n. Interesa a que sea lo m´s bajo posible. Los registros se apilan para formar bloques mayores.14 TEMA 3. o Acceso directo. Es el n´mero de unidades de informaci´n que puede almacenar una memoria. por lo tanto el proceso de escritura siempre conlleva la desaparici´n de los o datos que ocupaban el lugar donde se introducen los nuevos. Para o servir a los prop´sitos del tratamiento autom´tico de la informaci´n la memoria ha de ser capaz o a o o a o de recuperar cualquier informaci´n.1) la memoria es el bloque que almacena tanto los datos y resultados como las instrucciones. La escritura permite almacenar informaci´n dentro de la memoria. Es el que transcurre entre el instante en que se ordena la lectura/escritura o a de una informaci´n y el momento en que est´ disponible para su procesamiento.

Las c´lulas de memoria se suelen agrupar formando registros. es decir. pues es la potencia exacta de dos m´s kilo es un prefijo que equivale a 2 a pr´xima a mil. y que se puede almacenar en un octeto se llama car´cter o. los a u m´s usuales son de 16. Las memorias que emplean o este tipo de acceso se denominan gen´ricamenete RAM. un cero o un uno. y el o a soporte donde se guardan: unidad de memoria. La informaci´n cone o stituida por ocho bits. Esta ıa es la situaci´n normal en memorias de semiconductores. respectivamente. Los discos y cintas son por contra no vol´tiles. car´cer y palabra. por ejemplo. a • Car´cter. para llegar a un dato hay que dejar pasar la informaci´n que le precede.2 Medidas de capacidad Las memorias como se ve pueden ser de muchos tipos. mega equivale a 220 = 1048576 unidades. del ingl´s Random Access e e Memory. El bit es la informaci´n o o contenida en una c´lula de memoria. octeto y registro. En los equipos actuales esta memoria est´ a realizada mediante circuitos semiconductores que forman puertas l´gicas. Acceso secuencial. Se denomina bit a la unidad elemental de informaci´n binaria. 32 y 64 unidades. De este modo surge la o celda que da cobijo a la unidad fundamental de informaci´n. Los registros de una computadora est´n formados por cierto n´mero de bits. que necesitan suministro el´ctrico o e a para conservar los datos. • Palabra. ESI.c M. Del mismo modo. denominada octeto. Se ha de notar la diferencia entre unidades de informaci´n: bit. En t´rminos inform´ticos a a e a 10 = 1024 unidades. En la tabla siguiente o se muestran algunos tama˜os de memorias expresados de varios modos. Al tratar con memorias la unidad b´sica suele ser el car´cter o byte. cuando se usa una o cinta magn´tica. Una agrupaci´n a e o muy usada es la formada por ocho c´lulas. US. La informaci´n almacenada en una memoria es vol´til si puede destruirse o o a alterarse al cesar el suministro de energ´ al dispositivo que constituye la memoria. e • Volatilidad. Esto es lo que sucede. Arahal 2003 DISA.2. Cualquier informaci´n e o binaria puede codificarse mediante una cadena de bits m´s o menos larga. n abreviatura 1 Kc 1 Mc 1 Gc 1 Tc cantidad kilocar´cter a megacar´cter a gigacar´cter a teracar´cter a bits 8 · 210 8 · 220 8 · 230 8 · 240 caracteres 210 220 230 240 . la m´s importante para nuestro estudio a de la computadora digital es la memoria principal. La informaci´n almacenada en un registro se a o denomina palabra. 15 es independiente de donde se encuentre la informaci´n.R. m´s a a popularmente. byte. o • Bit. En este tipo de acceso. Estos y otros conceptos se definen o ´ a continuaci´n. 3.

3 Clases de memoria Aunque el esquema de la figura 3. La escritura realiza el proceso inverso.1). El n´mero de filas N suele ser muy alto como puede suponerse sabiendo la u capacidad normal de las memorias actuales que es de varios megacaracteres. e 3. organizadas en registros como ya se ha dicho. • Memoria auxiliar. La velocidad de acceso suele ser menor que la e de la memoria principal. para ello basta con a˜adir m´s circuitos n a integrados a las tarjetas de la computadora.3. o como se muestra en la figura 3. Cada registro puede ser seleccionado mediante un hilo2 . La lectura se realiza transmitiendo por los hilos de l/e la informaci´n de cada celda del o registro seleccionado.1 Estructura matricial La memoria principal en los equipos actuales est´ constituida por circuitos integrados en cuyo a interior residen las c´lulas b´sicas de memoria. La memoria auxiliar es un dispositivo externo1 que contiene informaci´n. destruyendo la informaci´n que o resid´ previamente en el registro seleccionado. el disco ´ptico y los discos flexibles. Entre otros pueden citarse el disco duro. ıa Cada registro de la memoria tiene asignado un n´mero llamado direcci´n. Es habitual u o conceder al registro superior el n´mero 0 y al inferior en n´mero N − 1. Para acceder a los bits individuales que forman la palabra contenida en el registro se tienen n hilos llamados de lectura/escritura (abreviadamente l/e). En esta secci´n se o o enumeran algunos de los tipos m´s habituales de memoria. Al ser un perif´rico. Para acceder a la informaci´n de la memoria es preciso conocer la direcci´n en la que se o o encuentra. el hecho es que existen dentro de la computadora varias clases de memoria. Es la que contiene el programa en el momento de la ejecuci´n del o mismo. Conocida dicha direcci´n se puede seleccionar el registro en cuesti´n y proceder o o posteriormente a la lectura o escritura. ESTRUCTURA DE LA COMPUTADORA DIGITAL 3. siendo n el ancho o longitud de la palabra. Esta memoria suele ser expansible a voluntad del operario. Cada fila es un registro de n bits. e el trasvase de datos entre la memoria auxiliar requiere un adaptador que es la unidad de entrada y salida (v´ase figura 3. o o Son llamadas tambi´n memorias masivas. Suele estar constituida por circuitos integrados.16 TEMA 3. atendiendo cada una a una misi´n particular. o o e ıas u T´rmino heredado de los d´ en que las memorias eran de n´cleos de ferrita ensartados en los nodos de una red de hilos conductores. En la mayor´ de los casos es de tipo vol´til y de acceso directo. pero la capacidad de almacenamiento mayor. Necesita conexi´n especial para unirse al resto de m´dulos. que es la forma de almacenamiento a a ıa a m´s r´pida. siendo N el n´mero u u u total de registros.1 no lo muestra. 2 1 .2. e a Una forma de representar esto es usando una disposici´n rectangular a base de filas y columnas. a • Memoria principal.

R. Esta est´ a a formada por una matriz celular de elementos de memoria. pero codificado en binario. Esto lo realiza el decodificador o de direcciones.3 junto con el decodificador de direcciones. un decodificador de direcciones y una peque˜a unidad de control que coordina las operaciones necesarias para leer o escribir. US.2: Estructura matricial de la memoria. Si la memoria tiene N = 2m palabras es necesario darle al decodificador un n´mero en binario entre 0 y 2m − 1. Por tanto. se analizar´ la memoria central de una computadora. y se . 17 hilos de lectura y escritura célula de memoria N registro hilos de selección n Figura 3. es decir. Arahal 2003 DISA.4. o 3.2 La unidad de memoria central A modo de resumen. o 0 1 decodificador de direcciones m N=2 m N-1 n Figura 3. y para hacerse una idea de c´mo se enlazan los elementos vistos hasta o ´ ahora relativos a las memorias.c M.3. la direcci´n es un n´mero binario de m bits. todo ello n dentro de un circuito integrado. o u Para proporcionar al decodificador la direcci´n se usa un registro llamado de selecci´n de o o direcci´n que puede verse en la la figura 3. Los bloques funcionales se pueden ver en la figura 3. Para expresar este valor hacen falta u precisamente m d´ ıgitos binarios. ESI.3: Diagrama de la memoria organizada matricialmente incluyendo el registro de selecci´n de direcciones y el decodificador. La direcci´n que se proporciona al decodificador es el n´mero de la palabra dentro de la o u memoria. la selecci´n de la informaci´n es un paso previo a la lectura o escritura y se hace o o actuando sobre el hilo que correspondiente a la direcci´n dada.

Son dos se˜ales de control mediante las cuales la UC ordena escribir o leer. n • Activar la se˜al de escritura haciendo ESCM=1. o • Dar la orden de lectura activando LECM. Los pasos a seguir son: • Seleccionar la direcci´n que contiene la informaci´n a recuperar. o Con esto se consigue que la palabra seleccionada transfiera una copia de sus bits al registro T. Para realizar una operaci´n de lectura o escritura con la estructura anteriormente descrita. Los pasos a seguir son: • Selecionar la direcci´n que contiene la informaci´n a recuperar. ESCM. ESTRUCTURA DE LA COMPUTADORA DIGITAL • S. n • T. La escritura consiste en introducir una informaci´n dada en una posici´n de o o memoria concreta conocida. Es el registro selector de direcciones de memoria. Durante la escritura contiene la informaci´n que se va a escribir. para ello se ha de o o introducir dicha direcci´n en el registro S.18 describen a continuaci´n. el cual contiene una copia de la palabra buscada. El objetivo final es obtener una copia del contenido de una direcci´n particular de o la memoria. o • Lectura. Durante una lectura recibe una copia de los n bits contenidos en la posici´n o seleccionada. . o es necesario seguir un procedimiento que se detalla a continuaci´n. o TEMA 3. para ello se ha de o o introducir dicha direcci´n en el registro S. Almacena m bits que representan (en binario. o m S Decodificador LECM ESCM direcciones n datos T Figura 3. es decir. Para ello se usan o los hilos de bit que conectan cada palabra de la memoria con el registro T.4: Diagrama de bloques de la memoria central mostrando los registros y se˜ales de n gobierno. o • LECM. Es un registro tamp´n o de almacenamiento temporal que realiza la funci´n de antesala o o de la memoria. por supuesto) la direcci´n del registro a seleccionar. dando el valor l´gico 1 a LECM. • Tomar el contenido del registro T. o • Copiar en T la informaci´n que se quiere escribir en la memoria. • Escritura.

La figura 3. Arahal 2003 DISA.4 La unidad aritm´tico-l´gica e o Utilizando circuitos electr´nicos es posible combinar el contenido de dos registros de memoria o de forma que se obtenga un tercer registro que guarde alguna relaci´n con los primeros. comparaciones. e La UAL recibe ´rdenes de la unidad de control que especifican la operaci´n a realizar con o o los datos del acumulador y del registro de operando. Para operar con ellos se saca una copia que se guarda en registros especiales separados de la memoria central .5: Circuito sumador. la resta. 19 3.c M. Estos circuitos son capaces de realizar tareas concretas o como desplazamientos. Existen circuitos capaces de realizar operaciones aritm´ticas como la suma. Para reducir el tama˜o de la UAL. n o Los dos operandos provienen de la memoria.5 ilustra esta idea. La figura 3.R. Como ejemplo de operaciones l´gicas se puede e o o citar la comparaci´n de igualdad. La unidad de control que tambi´n reside en e la pastilla puede seleccionar la operaci´n a efectuar gracias a las se˜ales de control. Frecuentemente. en computadoras y calculadoras. Es f´cil comprobar que el circuito a sumador debe combinar la informaci´n de ambos registros de tal modo que el registro resultado o contenga 010101 que es la representaci´n binaria de la cantidad 18 + 3 = 21. La construcci´n de la UAL se lleva a cabo hoy en d´ en una pastilla de silicio. La activaci´n o n o de alguna de estas se˜ales provoca la puesta en marcha de la operaci´n correspondiente. e Tambi´n interesan operaciones llamadas l´gicas. US. Puede verse que el registro 1 contiene los bits 010010 que puede interpretarse como el n´mero binario 010010 |2) que en decimal es 010010 |2) = 18 |10) . Por o ejemplo de forma que el registro resultado sea la suma de los registros iniciales. el registro 2 contiene los bits 000011 que puede interpretarse como el n´mero u binario 000011 |2) que en decimal es 000011 |2) = 3 |10) . El resultado de las operaciones queda en el acumulador a la espera de ser transferido cuando lo indique la unidad de control. el resultado de las operaciones se almacena en un registro A que recibe el nombre de registro acumulador. El bloque . Un circuito comparador produce el valor binario 1 si los dos o registros R1 y R2 son iguales y el valor 0 en caso contrario. agrupando o ıa una serie de circuitos con puertas l´gicas. u Similarmente. etc. etc. ESI.6 muestra un diagrama de la UAL en el que se detalla el acumulador. el acumulador es a n menudo tambi´n el soporte de uno de los operandos. o Registro resultado 010101 Sumador 010010 Registro 1 000011 Registro 2 Figura 3. sumas.

ESTRUCTURA DE LA COMPUTADORA DIGITAL A estado SUMA MULT Señales de control. etc. La computadora ha de adecuar sus operaciones al ritmo de transmisi´n de datos. Durante estos 0. formato de la informaci´n.6: Esquema de la Unidad Aritm´tico L´gica mostrando el acumulador y las se˜ales de e o n gobierno.05 a a segundos la computadora puede realizar miles de operaciones. e El reto que plantea la comunicaci´n de la computadora con el exterior a trav´s de dispositivos o e diferentes reside fundamentalmente en la distinta velocidad de transmisi´n de ´stos. Se u n compone de pulsadores electromec´nicos que mandan un c´digo identificador a un espacio a o ıa o de almacenamiento temporal que la computadora lee y vac´ peri´dicamente. Las teclas que incluye son: . El registro para el segundo operando se considera en el interior de dicho bloque por lo que no se ha dibujado.). ··· primer operando segundo operando Figura 3.20 TEMA 3. la computadora ha de interaccionar con el exterior. con forma de v invertida contiene los circuitos que realizan las operaciones. so pena de perder informaci´n. 3. La recogida de datos y la evacuaci´n de resultados se llevan a cabo mediante dispositivos variados o como son el teclado y la pantalla y que reciben el nombre de perif´ricos. Sin embargo otros dispositivos admiten una velocidad mayor. como por ejemplo los discos y las impresoras. 3. el acumulador contiene el primer operando. para pasar posteriormente al problema de la comunicaci´n entre ´stos y la e o e UCP. En el desarrollo del cap´ o ıtulo se van a describir brevemente algunos perif´ricos. los perif´ricos son dispositivos que permiten el trasvase de informaci´n desde e o el exterior a la computadora o al contrario. Esta es o o la situaci´n mostrada en la figura 3.5 La unidad de entrada y salida Para poder ser de alguna utilidad.7. En efecto. los perif´ricos se conectan al enlace de la computadora mediante circuitos que e ´ realizan las adaptaciones necesarias (niveles de tensi´n. Como se ha dicho.05 segundos de espera entre car´cter y car´cter. es decir hay 0. o o T´ ıpicamente. Los m´s comunes son descritos a continuaci´n: a o Teclado Permite tanto introducir texto.5. o e consid´rese un teclado. n´meros y proporcionar se˜ales para los programas. la informaci´n que proviene del mismo no suele superar los 20 caracteres e o por segundo.1 Perif´ricos e Como se ha dicho.

Por ejemplo. Tiene dos funciones: en primer lugar permite pasar a la siguiente l´ ınea en la escritura. • Teclas de funci´n. Adem´s de los n´meros. el punto decimal y otras. lo cual permite ahorrar tiempo de escritura. u e – Tecla MAY3 . Por ejemplo. o • Teclas de bloqueo de may´sculas. US. en la parte e u derecha del teclado. los teclados modernos. e • Letras. Por ejemplo. u Su funci´n normal es en todo igual a las may´sculas de una m´quina de escribir. En algunos teclados aparece el s´ ımbolo ←| . No tienen un significado definido. n´meros y signos de puntuaci´n. bloqueo de teclado num´rico.R. o • Teclas que alteran la funci´n de otras teclas. – Tecla ALT. Adem´s sirve para generar los s´ o a ımbolos de la tabla ASCII o manteniendo la tecla pulsada mientras se introduce el c´digo correspondiente en decimal. etc. . sirve para activar funciones dentro de un men´ tecleando ALT+inicial opci´n del men´. para que la computadora e ejecute la orden. como flechas. Por ejemplo. para indicar que se han de pulsar simult´neamente a o la tecla MAY y la tecla de funci´n F2 se usa: MAY+F2. De esta forma se agiliza la escritura de grandes cantidades de datos.c M. u o u 3 En algunos teclados aparece como Shift. sino que cada programa les asigna una funci´n. bot´n de parada. • Teclado num´rico. Esta parte del teclado se asemeja al de una u o m´quina de escribir convencional. Numeradas desde la F1 a la F12 sirven para realizar ´rdenes dentro o o de ciertos programas. Pulsada simult´neamente con otra produce la escritura de la letra a en may´sculas o del signo superior de los dos que aparecen encima en la tecla. etc. Arahal 2003 DISA. o En general cuando se ha de pulsar una tecla conjuntamente con otra se indica mediante el signo +. • Otras teclas especiales. ESI. Adem´s. en programas de uso interactivo sirve para dar entrada a la a informaci´n tecleada anteriormente de forma que pueda ser procesada. en o algunos editores la tecla F2 sirve para guardar una copia del texto actual en el disco. a • Tecla INTRO. o la palabra RETURN o ENTER. o u a Aplicada a las teclas de funci´n permite activar funciones distintas. Al igual que la tecla de may´sculas permite cambiar la funci´n de u o las teclas de funci´n. 21 UCP RAM ROM Adaptador Teclado Adaptador unidad de disco Adaptador vídeo Adaptador paralelo Teclado Disco Monitor Impresora Figura 3. o despu´s de introducir un comando hay que pulsar esta tecla.7: Perif´ricos conectados a los enlaces de la computadora. suelen traer un e a u teclado num´rico compuesto por los n´meros. En muchas aplicaciones esta tecla tiene significado especial. en los entornos de ventana. en otros como una flecha vertical ⇑.

Un mecanismo especial va soltando la tinta (o tintas . – Tecla CONTROL. Al aumentar la memoria disponible es posible disminuir el tama˜o del punto y aumentar la cantidad de colores que pueden n presentarse a un mismo tiempo. De este modo las im´genes resultan mejor definidas como a en la figura 3. por presi´n. Las m´s usadas actualmente son las impresoras de chorro de tinta y a las l´ser. o o Si se teclea a una velocidad superior el espacio de almacenamiento temporal se llena y la computadora emite un sonido de advertencia. La se˜al para determinar o n la intensidad de luz de cada color de cada punto de la pantalla procede de un circuito electr´nico que lee el contenido de una memoria de v´ o ıdeo que se puede dividir en planos. de o a forma r´pida. Un circuito especial de la tarjeta se encarga del refresco de la imagen en el tubo. La imagen en los TRC se forma por barrido de un haz (monocromo) o de tres haces (color) de electrones que inciden sobre el f´sforo del interior del tubo. u Para poder usar el monitor. tarjeta con poca memoria compone las im´genes mediante puntos gruesos y con pocos a colores. Una combinaci´n de teclas especialmente util en sistemas PC es CONTROL+ALT+SUPR o ´ que causa un reinicio del sistema. [. como CONTROL+G. } y { . Los teclados tienen una velocidad de transmisi´n baja (10 ´ 15 caracteres por segundo). u otros dependiendo del sistema. dependiendo de la t´cnica usada para a impregnar el papel. As´ una a ı. la computadora ha de incorporar un circuito especial llamado tarjeta de v´ ıdeo. Usada en conjunci´n o o con las teclas de funci´n permite activar otras funciones distintas dentro de proo gramas. consistente en redibujar la imagen un cierto n´mero de veces por segundo de acuerdo con u el contenido de la memoria. o La tinta en una impresora de chorro o inyecci´n es lanzada gota a gota sobre el papel formando los caracteres o dibujos. La imagen que se presenta en pantalla est´ contenida en la memoria de a v´ ıdeo. Este puntero permite realizar acciones pulsando los botones del rat´n.22 TEMA 3. Pulsada conjuntamente con algunas letras produce caracteres de control. La UCP se limita a colocar en la memoria de v´ ıdeo la imagen y el circuito de refresco la manda a la pantalla. o ´ptico. Los a o entornos de ventana hacen un uso exhaustivo del rat´n. La cantidad de memoria de v´ ıdeo disponible limita las posibilidades gr´ficas. Impresora Es un dispositivo que permite reproducir en papel los dibujos o textos realizados e en una computadora. o o Monitor de visualizaci´n Es el lugar donde usualmente la computadora env´ la salida de los o ıa programas. La capacidad de la tarjeta de v´ ıdeo se indica por los puntos horizontales y verticales y la cantidad de colores disponibles. Hay muchos tipos distintos. de bola. como se muestra en la figura 3. de color o monocromo. Otros caracteres utiles son CONTROL+C ´ y CONTROL+Z para terminar la ejecuci´n de programas. Los o equipos port´tiles suelen llevar una pantalla de cuarzo llamada de cristal l´ a ıquido (LCD). ESTRUCTURA DE LA COMPUTADORA DIGITAL – Tecla ALT GR. Permite obtener los signos |.8 a la izquierda. ]. suele ser del tipo TRC (tubo de rayos cat´dicos). caracteres ASCII no visibles que tienen funciones de control.8 a la derecha. El n´mero de colores o de tonalidades diferentes de gris que se pueden enviar a la pantalla u depende del n´mero de planos. que produce el car´cter ASCII n´mero 7 que provoca un a u zumbido en el altavoz del terminal. Existen diversos tipos. Es decir. Rat´n Es un dispositivo que sirve para posicionar un puntero gr´fico sobre la pantalla.

c M. la imagen puede ser una p´gina de un peri´dico a o y lo que se desea es el texto contenido en dicha p´gina. Los programas de reconocimiento de caracteres suelen funcionar s´lo o con letra de imprenta.8: Im´genes proporcionadas por dos tarjetas de v´ a ıdeo distintas. normalmente no hay que preocuparse por estos detalles pues los programas (o sistemas de explotaci´n) permiten seleccionar el tipo de impresora a usar mediante o men´s. de diversos colores). ESI. Las gotas son dirigidas mediante campos el´ctricos para que lleguen e al lugar indicado sobre el papel. a ıdos de la computadora. siendo los m´s usados hoy en d´ los de 10 cm. a la derecha una imagen de 402 × 258 puntos. Hay discos de Los discos llamados flexibles permiten ser extra´ n a ıa distintos tama˜os. Entre los muchos lenguajes se pueden destacar los siguentes: PCL 1 a PCL 5 de Hewlett-Packard y PostScript o lenguaje de descripci´n de p´ginas a base de o a instrucciones producido por Adobe Systems Inc. como los conocidos GIF y TIFF. SCSI y las conexiones de red como Ethernet u otras. ambas en blanco y negro. Al pasar cerca del papel cargado opuestamente al tambor la tinta se adhiere al papel. Finalmente se aplica calor para que la tinta en polvo funda sobre el papel. o No hay ning´n c´digo normalizado para la comunicaci´n ente impresoras y computadoras. Arahal 2003 DISA. que al ser expuesto a un rayo l´ser se descarga en algunas a a zonas.R. u o o Sin embargo. US. La impresora l´ser permite copiar p´ginas enteras de una vez. la a calidad de impresi´n es muy alta. Digitalizador de im´genes Se usan para obtener una versi´n digital de im´genes sobre el a o a papel. En ocasiones la digitalizaci´n de im´genes tiene por objeto conseguir un fichero conteniendo o a el texto impreso en la imagen. que pueden contener . las cintas e magn´ticas y el disco ´ptico permiten guardar grandes cantidades de datos de forma no e o vol´til. Las impresoras pueden conectarse a la computadora usando diversos adaptadores de entradasalida entre los que destacan: Centronics. A la izquierda una imagen de 201 × 129 puntos. Se basan en un tambor a a cargado electrost´ticamente. A partir de la imagen se pueden a usar programas de reconocimiento de caracteres (conocidos como OCR) para obtener el texto en un fichero. Para ello la imagen es descompuesta en una matriz de puntos de color y posterior´ mente almacenada como un archivo en un formato grafico. por lo que todo lo que uno debe saber es la marca y modelo de la impresora que u tiene conectada. Debido a que el l´ser es muy fino. Es decir. 23 Figura 3. La tinta en polvo impregna luego esas zonas del tambor. Discos magn´ticos Los dispositivos de almacenamiento masivo como el disco duro. RS232.

Ver figura 3. De hecho. discos o o que se pueden grabar una sola vez desde el equipo personal y discos que admiten ser regrabados varias veces. Mediante un rayo l´ser o a se puede obtener una se˜al el´ctrica con un voltaje alto o bajo dependiendo del paso de n e depresiones bajo el l´ser a medida que el disco gira. La informaci´n se guarda en binario en forma de o agujeros o huecos microsc´picos en el metal interior del disco. e bits modulados objetivo etiqueta 00100010000100000100 detector (a) datos plástico (b) Figura 3. Los reproductores de discos para audio incorporan una etapa de conversi´n de digital a anal´gico para producir el sonido. que usa 14 bits para codificar cada car´cter. ESTRUCTURA DE LA COMPUTADORA DIGITAL Pista Cabezas Figura 3. Dentro de los discos ´pticos hay varias clases: hay discos que s´lo admiten lectura. a e ıan El CD-ROM es casi id´ntico a los discos compactos para audio que exist´ previamente. Los datos se modulan siguiendo la regla ”8 en 14”. (b) Representaci´n de la informaci´n en el mismo. La figura 3.10: (a) Esquema del disco ´ptico.44 Mc de datos.9: Discos magn´ticos para almacenamiento de datos. La lectura sobre la pista es a velocidad constante.10 (b) muestra la forma o o en que los bits quedan grabados en el disco. Se a incluye un c´digo de detecci´n de errores de tipo CRC.24 TEMA 3. Actualmente los discos duros pueden tener capacidades entre cientos y miles de Megacaracteres.9 se muestra un diagrama simplificado de un disco duro. Puesto que el metal que contiene los datos est´ protegido por una capa de pl´stico se a a consigue un medio menos sensible que los discos flexibles. por lo que ´ u el disco gira a distintas velocidades seg´n el tramo leido. Disco ´ptico El CD-ROM como se le conoce popularmente permite guardar gran cantidad o de datos (aproximadamente 700 Mc). Los discos duros est´n fijos en el interior de la computadora. o o o hasta 1. . En la parte derecha de la figura 3. la cual no es o o necesaria en el caso de reproductores para uso de la computadora. ambos discos son compatibles.10 (a). Su construcci´n les confiere a o mayor rapidez y capacidad. El disco tiene los datos grabados en una unica pista espiral. mostrando las cabezas que permiten la lectura y escritura. El principio de funcionamiento es el mismo que en el caso de los discos flexibles.

Registro de instrucci´n. Es una forma simple e idealizada de la unidad de control que se ha descrito anteriormente. • E. 5. • T. la unidad de control y la UAL.c M. Registro acumulador de la UAL. Contador de pasos de programa. instrucciones del programa y direcciones de memoria. o • I. US. ESI. Esta debe obtener de la memoria la instrucci´n a ejecutar. La memoria principal. 2. con organizaci´n matricial. o • P. 3. • S. 25 3. La tarea que tiene encomendada consiste en enviar las se˜ales de control que provocan operaciones de los m´dulos y tambi´n n o e transferencias de informaci´n entre los mismos. o En el esquema de la figura 3. Podemos imaginar que los enlaces son autopistas de varios carriles por las cuales pueden moverse los bits de forma que pasen de unos registros a otros. Guarda en cada momento la instrucci´n que se ejecuta en o o ese paso. Registro tamp´n de comunicaci´n entre la memoria y la l´ o o ınea M. 3. El funcionamiento del mismo se describe a continuaci´n. por lo que en la a memoria se almacenan tanto datos y resultados como el programa a ejecutar. Permite tomar datos del teclado o llevarlos o a la pantalla.11 se muestran los m´dulos ya conocidos interconectados por o enlaces.6 La unidad de control a La unidad de control es el elemento que ordena a todos los dem´s. Registro de comunicaci´n con el exterior. Registro de selecci´n de memoria. Los elementos con que se va a trabajar y que aparecen en dicha figura son: o 1. Arahal 2003 DISA. o Para comenzar la explicaci´n se parte de una situaci´n en la que el programa ha sido almao o cenado previamente en la memoria. La UAL con registro acumulador que almacena uno de los operandos y el resultado de las operaciones. o 4. Indica la posici´n dentro de la memoria de la o instrucci´n a ejecutar. Otro enlace S que une la unidad de control y el selector de posiciones de memoria. El programa se va a ejecutar paso a paso bajo la direcci´n o ´ de la unidad de control. por lo que o . Un enlace M que une la memoria. La informaci´n que se transmite puede ser de diversas clases: datos y resultados de operaciones.R. Por ´l e se transmiten direcciones de memoria.1 Funcionamiento El esquema presentado corresponde a una m´quina de programa almacenado.6. Los siguientes registros: • A.

Para aclarar las ideas.26 TEMA 3. seg´n o o u el modo de direccionamiento y la instrucci´n de que se trate. en el momento de ejecutarse esta instrucci´n contiene el valor . En un caso simple como la o suma directa. Esta tarea la realiza un m´dulo de la unidad de control que a´n no se ha mostrado. ESTRUCTURA DE LA COMPUTADORA DIGITAL INCP A EA SUMA MULT EP SP SD P S LECM ESCM S ES MEM CO MD D I SA EO EI ESCP LEET T ET ST E EE SE M M Figura 3. Sup´ngase que la codificaci´n de esta instrucci´n es: o o o o CO 0101 MD 0 D 00000001000 o Por lo que el registro I. Las instrucciones como la suma. 2. Estos elementos se codifican en binario y se guardan en el registro I. es un conjunto de ceros y unos que identifica la operaci´n que o o o debe realizarse. o o 3. o o o la forma de direccionamiento y una direcci´n con la que operar. esta direcci´n es el lugar de la memoria donde reside el dato que se ha de o sumar. donde o a n o se ejecuta activando las se˜ales de gobierno necesarias. consid´rese la instrucci´n sumar al acumulador el contenido de la e o posici´n de memoria 8. o ı Una vez localizada la instrucci´n se extrae de la memoria llev´ndola al registro I. El problema se resuelve colocando las instrucciones secuencialmente en la memoria y dotando a la unidad de control de un registro de direcci´n de la instrucci´n o o (registro P en la figura anterior). Finalmente se incrementa P para poder ejecutar u la siguiente instrucci´n. necesita disponer de alg´n medio que le permita conocer en qu´ posici´n de memoria se encuenu e o tra localizada la misma. que consta de las tres partes que se describen a continuaci´n.11: Esquema de una computadora digital mostrando los enlaces y las se˜ales de gobn ierno. etc. Direcci´n de memoria (D). la resta. En el caso m´s sencillo (llamado direco a o a cionamiento directo) la direcci´n es la del dato o resultado de la operaci´n. o 1. pasando as´ a apuntar a la siguiente. Este registro es un contador que se incrementa en una unidad cada vez que se realiza una instrucci´n. El modo de direccionamiento (MD). o Cada instrucci´n requiere tres componentes para quedar totalmente definida: la operaci´n. C´digo de operaci´n (CO). tienen cada una un c´digo o distinto. Esta direcci´n puede interpretarse de formas distintas. que indica la forma en que se ha de interpretar la direcci´n que est´ incluida en la instrucci´n.

US. como la suma. ESI. ´ste es el valor contenido en la direcci´n u e o de memoria 8. Las posiciones ı de memoria tambi´n se han indicado con su direcci´n en decimal por id´ntico motivo. que en este caso es el n´mero 3. 27 4 A 17 P S 17 4 8 3 A 17 P S 8 8 3 co | md | 8 I 17 co | md | 8 co | md | 8 I 17 co | md | 8 A) 7 B) A 17 P S 8 7 8 3 A 18 P S 8 8 3 4 3 co | md | 8 I 17 co | md | 8 3 co | md | 8 I 17 co | md | 8 C) D) Figura 3. y se interpreta como el lugar donde o u reside el n´mero que se ha de sumar al registro acumulador.12 muestra de forma esquem´tica el desarrollo de las cuatro fases para una a instrucci´n como la suma directa. Se ha supuesto que ´sta se u o e o halla en memoria en la direcci´n 17 por lo que el contenido de P es precisamente 17. e o e La parte A) de la figura representa la b´squeda de la instrucci´n. u 3. b´squeda del operando. o La parte B) corresponde a la b´squeda del operando. que ser´ explicado m´s adelante. Como es sabido los registros contienen los n´meros en binario. a e La figura 3.7 Ejecuci´n de instrucciones o Para cualquier instrucci´n el proceso de ejecuci´n se divide en cuatro fases: b´squeda de la o o u instrucci´n. Los casos m´s sencillos se plantean al considerar instrucciones aritm´ticas. Una nueva lectura de memoria permite pasar el u operando al registro de operando de la UAL. En la parte C) se realiza la suma del acumulador que conten´ el n´mero 4 con el operando. Estas fases conllevan pasos distintos dependiendo de la instrucci´n de que se trate.12: Fases de la ejecuci´n de la instrucci´n suma. la a a ´ direcci´n 00000001000 es el n´mero 8 codificado en binario. Por ultimo. Mediante una lectura se e pasa la instrucci´n al registro I. Se observa tambi´n el direccionamiento de la memoria logrado con el registro S. ıa u El resultado (7 = 4 + 3) pasa al propio acumulador. La primera parte (CO) identifica la operaci´n suma. ejecuci´n de la instrucci´n y preparaci´n de la instrucci´n o u o o o o o siguiente. la segunda parte (MD) o indica que se trata de direccionamiento directo. . o u sin embargo.c M.R. Arahal 2003 DISA. o o 0101000000001000. para dar mayor claridad al dibujo se han indicado aqu´ en decimal.

1 Transferencias entre registros El funcionamiento de la computadora se puede describir mediante transferencias de informaci´n o entre registros. Para ello hay que permitir el paso de D al registro S: (D) → S. En este caso hay que sumar uno al contador de pasos del programa: (P)+1 → P. Del diagrama 3. o 2. con lo que se tiene el n´mero a sumar en T. obteni´ndose en T la informaci´n almacenada en la posici´n e o o definida por S. sumar al acumulador un dato o o almacenado en una direcci´n de memoria dada. Ejecuci´n de la instrucci´n. o 1. En este caso. a o o 4. El registro P se incrementa en una unidad. Esta fase tiene tres operaciones a o elementales: (a) Direccionamiento: transferir a S el contenido del registro P. El registro P contiene la direcci´n de la instrucci´n a ejecutar. (b) Leer de memoria: M(S) → T. Los pasos son los siguientes: (a) Buscar el operando a sumar. puesto que. por lo tanto la direcci´n que figura en D se interpreta como la del operando que hay que sumar al o acumulador. como ya se ha dicho. La tarea de la o o e unidad de control es precisamente coordinar tales transferencias. u 3. por lo que o o habr´ de leerse la direcci´n de memoria indicada por P. B´squeda del operando: En CO se ha supuesto la existencia del c´digo de operaci´n (que u o o identifica a la suma en este ejemplo). la suma al acumulador del contenido de T. lo cual se puede expresar como: M(S) → T (c) Pasar la instrucci´n a I: (T) → I. El modo de direccionamiento es directo. el acumulador guarda el primer operando y recibe adem´s el resultado de las operaciones. B´squeda de la instrucci´n: consiste en extraer la instrucci´n que se va a ejecutar de u o o la memoria. ESTRUCTURA DE LA COMPUTADORA DIGITAL En la parte D) se prepara la instrucci´n siguiente. (b) Leer de memoria .11 n resulta claro que para lograr estas transferencias es necesario activar las se˜ales de entrada y . De este modo se direcciona dicho operando. El registro de la memoria que ha sido seleccionado es copiado en T. 3. o de este modo. repitiendo las fases anteriores se consigue ejecutar la instrucci´n siguiente y as´ o ı sucesivamente. N´tese que el contenido anterior del registro S se pierde al ser o sustituido por el contenido de P. Obs´rvese que el desarrollo de la instrucci´n se logra simplemente por la transferencia de e o informaci´n entre registros y mediante la transformaci´n de ´sta en la UAL. Preparaci´n de la siguiente instrucci´n. Esto o o puede escribirse como: (T)+(A) → A.7.28 TEMA 3. La forma en que se han detallado los pasos a realizar para ejecutar la instrucci´n suma o consiste en dar las transferencias elementales entre registros. donde debe quedar para poder ser ejecutada. Para verificar esta afirmaci´n se va a explicar a continuaci´n de forma m´s o o a detallada la ejecuci´n de la instrucci´n del ejemplo anterior. Esto se simboliza mediante: (P) → S.

En la tabla 3. o a 2. pero est´ muy falta de versatilidad. US. 29 se˜ales de gobierno n SP. SU M A. Esta forma de proceder es adecuada para muchas situaciones. El llamado salto incondicional permite romper el orden de ejecuci´n de o las instrucciones. 4. Esto se simboliza mediante: (P) → S. de forma que pase a se˜alar la direcci´n de la siguiente instrucci´n o n o o a en la memoria. tales como: SP. que u o se debe introducir en P. EA IN CP fase 1a 1b 1c 2a 2b 3 4 transferencias entre registros (P) → S M(S) → T (T) → I (D) → S M(S) → T (A)+(T) → A (P)+1 → P Tabla 3. Ejecuci´n de la instrucci´n. . o salida de los registros. ESI. B´squeda del operando: en la parte D del registro I debe figurar la direcci´n del salto.R. B´squeda de la instrucci´n: Hay que extraer la instrucci´n que se va a ejecutar de la u o o memoria. Es una tarea que corre a cargo de la unidad de control como se explicar´ m´s a a adelante.1: Fases.c M. Para ello es necesario y suficiente o modificar el registro contador de pasos del programa P. ES. Donde ser´ interpretada. EO. tras la instrucci´n de salto situada en la direcci´n d. pero incluyendo las se˜ales de gobierno n necesarias. etc. transferencias entre registros y se˜ales de gobierno correspondientes a la n instrucci´n suma. se pasa o o a ejecutar otra.7. Arahal 2003 DISA. En este caso. ES LECM ST. situada en una direcci´n distinta de d + 1. Los pasos necesarios son: 1. EI SD. La activaci´n de las se˜ales de gobierno se realiza de forma autom´tica durante la ejecuci´n o n a o del programa. pasar el contenido de D al registro contador de o o pasos: (D) → P. obteni´ndose en T la informaci´n almacenada en la posici´n e o o definida por S: M(S) → T (c) Pasar la instrucci´n a I: (T) → I.2 La instrucci´n de salto o Se ha indicado que el contador de pasos de programa se incrementa en una unidad cada vez que se ejecuta una instrucci´n. En este caso no hay que hacer nada pues el o o contador de pasos del programa contiene ya la direcci´n de la siguiente instrucci´n tras o o del salto. (b) Leer de memoria . Preparaci´n de la siguiente instrucci´n. de forma que. Esta fase tiene tres operaciones elementales: (a) Transferir a S el contenido del registro P. 3.1 se muestra de nuevo la secuencia de operaciones para el mismo ejemplo de la suma. 3. por lo que no es necesario buscar en memoria. ES LECM ST.

30 TEMA 3. ESTRUCTURA DE LA COMPUTADORA DIGITAL .

Tema 4 Lenguajes de programaci´n o 4. Finalmente el resultado se presenta por pantalla. Cada l´ ınea est´ formada por 16 celdas que a contiene una instrucci´n. De este modo el programa queda en o memoria tal y como muestra dicha tabla. los suma y guarda en la memoria el resultado. En esencia consiste en colocar en la memoria (de alguna manera) los ceros y unos que conforman las instrucciones de un programa. Ya se ha explicado con anterioridad que la unidad de control saca de la memoria las instrucciones una a una y las ejecuta enviando se˜ales de control a las otras unidades de la m´quina. Las tarjetas perforadas. es decir. o En este ejemplo se ha supuesto que las instrucciones del programa se almacenan codificadas en la memoria principal comenzando en la direcci´n 20. A la derecha se ha indicado lo que cada instrucci´n representa. 31 . era preciso que alguna persona dise˜ara el programa que consist´ e n ıa en una ristra de ceros y unos. ¿c´mo ha llegado all´ o ı? En los sistemas de c´lculo autom´tico de los a˜os 1940 y siguientes se dispon´ de medios a a n ıa primitivos para realizar esta tarea. pero. la direcci´n 20. n a Se ha supuesto que el programa reside en la memoria. o o El programa realiza una tarea muy simple: lee dos n´meros del teclado y los almacena en u memoria. Tras esto. e e Sea cual fuera el m´todo. El resultado se almacena en la direcci´n 12. Para ejecutarlo basta con introducir en el contador de pasos de programa (registro P) la direcci´n de comienzo del mismo. pues utiliza unicamente las instrucciones de la m´quina codificadas con ceros y unos. las cintas agujereadas (de papel o de celuloide) eran m´todos habituales.1 que muestra una e serie de instrucciones de una computadora simple. Posteriormente surgieron las cintas magn´ticas y los discos. A modo de ejemplo consid´rese la tabla 4.1 C´digo de m´quina o a El c´digo de m´quina es la forma m´s b´sica y primitiva en que se puede programar una o a a a computadora digital. Para guardar los n´meros le´ u ıdos se van a usar las posiciones de memoria o ıas con direcci´n 10 y 11 (que se van a suponer vac´ o no usadas). o o ´ a Un programa escrito en la forma vista en el ejemplo anterior se dice que est´ en c odigo de ´ ´ a maquina.

. . es decir. 0 1 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 Tabla 4. Una forma sencilla de facilitar la tarea al programador consiste en escribir cada instrucci´n o por su nombre y los n´meros en decimal. dicha separaci´n o no existe en realidad. .1 C´digo mnemot´cnico o e Una forma de simplificar la programaci´n es reemplazar la codificaci´n binaria por una m´s o o a inteligible. El contenido de los registros de la memoria se ha separado en tres bloques (CO. MD y D) para facilitar el estudio. LENGUAJES DE PROGRAMACION significado Leer de teclado almacenando el valor le´ en la posici´n de memoria 10 ıdo o Leer de teclado almacenando el valor le´ en la posici´n de memoria 11 ıdo o Llevar al acumulador (registro de la UAL) el n´mero guardado en la u posici´n de memoria 10 o Sumar al acumulador el n´mero u guardado en la posici´n de memoria 11 o Almacenar el contenido del acumulador en la posici´n de memoria 12 o Escribir en pantalla el valor de la posici´n de memoria 12 o Parar la m´quina a 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 23 24 25 26 .2 ıa Esta forma de codificar necesita una posterior traducci´n puesto que en la memoria no se o puede colocar otra cosa que no sea los ceros y unos de las instrucciones y datos. que son la operaci´n a o o a realizar. de forma parecida a u El programa del ejemplo anterior podr´ codificarse del modo que se muestra en la tabla 4.1. Sin embargo es f´cil adivinar la complejidad que tendr´ el c´digo a o a a ıa o de m´quina correspondiente a la programaci´n de una tarea con muchas m´s instrucciones. . o e 4. a El programa de la suma que ha servido de ejemplo es muy simple y se puede programar f´cilmente en c´digo m´quina. a la derecha se tiene el programa en la memoria. por lo que se dejaba en manos de personal poco cualificado. . por lo que en cada sentencia o o a debe aparecer de manera clara los componentes b´sicos de cada instrucci´n. A la izquierda se presenta una lista de las operaciones a efectuar. que se describe en el punto siguiente. 20 21 22 CO 0 1 0 0 0 1 0 0 0 0 1 0 MD 0 0 0 D ´ TEMA 4. Para a o a aliviar este problema surge el c´digo mnemot´cnico.32 direcci´n o .1: Ejemplo de programa. el modo de direccionamiento y el operando. Tal codificaci´n ha de ser equivalente al c´digo m´quina. por lo que los programas en c´digo m´quina o a no son necesariamente portables. La tarea de traducir es repetitiva y mecanizable. Cada UCP tiene su propio juego de instrucciones. no pueden ser ejecutados en otras m´quinas.

. Tambi´n resulta preciso que existan direcciones de memoria libres para almacenar en ellas e las variables del programa. a ı 4. Los programas pueden necesitar valores para los c´lculos. Posteriormente las propias computadoras fueron programadas para que llevaran a cabo la tarea de traducir programas para otras m´quinas o para s´ mismas.2 Ensamblador Los programas traductores tomaron la dura tarea de pasar el c´digo mnemot´cnico a c´digo de o e o m´quina.R. Puesto que en la memoria se almacenan tanto datos como instrucciones es preciso alg´n mecanu ismo para dejar huecos libres. Este valor debe residir en memoria al iniciarse la ejecuci´n del programa. 10 11 10 11 12 12 . . . durante su ejecuci´n. CO 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 MEMORIA MD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 1 0 1 0 0 0 33 Tabla 4. MD y D) para facilitar el estudio. . PROGRAMA instrucci´n o LEER LEER CARGAR SUMAR ALMACENAR ESCRIBE PARAR . como por ejemplo dejar espacios vac´ en medio del programa o colocar valores constantes para que ıos el programa los use. Adem´s se les a˜adieron otras funciones que aliviaban a´n m´s la tarea del prograa a n u a mador: 1. . dicha separaci´n o no existe en realidad.2: Ejemplo de programa. Arahal 2003 DISA. para almacenar un resultado calculado.c M. ESI. Por ejemplo. direcci´n o . A la izquierda se presenta una lista de las operaciones a efectuar. Esta tarea recibe el nombre de establecimiento de valores iniciales o de datos o num´ricos constantes. una vez traducido. . e 2. . . por ejemplo. o por lo que resulta de ayuda que el traductor lo coloque en la memoria antes de dicha ejecuci´n. a la derecha se tiene el programa en la memoria. Es decir. . US. o ´ Se crearon entonces las pseudoinstrucciones. o El conjunto de instrucciones y pseudoinstrucciones forma el lenguaje ensamblador. hay que indicar que una determinada posici´n o de memoria no va a contener una instrucci´n sino que ha de dejarse libre para alojar o informaci´n. 20 21 22 23 24 25 26 . Estas son anotaciones que el programador o escribe para que el programa traductor realice tareas adicionales durante la traducci´n. El contenido de los registros de la memoria se ha separado en tres bloques (CO. el valor dos para a hallar la media.

como por ejemplo el modo de acceder a un disco en particular. para el cual los ceros y unos son extremadamente inoperantes. es de gran importancia pues permite desarrollar programas sin conocer los detalles llamados de bajo nivel. En efecto. Todo lo dicho anteriormente sit´a al SE como la conexi´n entre la m´quina. de forma que el programador pueda escribir programas que funcionen en m´quinas con equipos distintos. el lenguaje ensamblador sigue siendo de dif´ uso. y el usuario. programas para dibujo o dise˜o gr´fico. la ocultaci´n. A la luz de dicha figura se puede decir que el SE es un conjunto de programas que ofrecen a a los usuarios una forma sencilla. El SE en cambio se dedica a gestionar el uso de la computadora en s´ Las ı. ıa Finalmente. por ejemplo discos o impresoras de a diferentes marcas. El SE no s´lo es aprovechado por el usuario normal. LENGUAJES DE PROGRAMACION A pesar de ser un gran avance. flexible y r´pida de acceso a los recursos ocultando los detalles o del equipo. Para comprender su importancia pi´nsese. que en muchos casos ha de conocer a fondo el SE. Estas funciones tienen e por objeto ocultar los detalles de cada computadora. e etc. En primer lugar. o 4. por lo que es muy importante comprender como funcionan. Este hecho. El SE proporciona el rostro o primera imagen que el usuario percibe al usar el ordenador. comunicarse con otros equipos. que la mayor´ de las personas que usan las computae ıa doras no ven otra cosa sino aplicaciones y el SE. tareas como: poner en marcha programas diversos.1 se presenta un esquema en el que se hace patente la situaci´n del SE para los distintos usuarios del sistema. aplicaciones se apoyan a menudo en el SE para acceder a las entra˜as del sistema: los cirtuitos. .34 ´ TEMA 4. Las aplicaciones son programas que resuelven un problema concreto para el usuario. que s´lo maneja u o a o datos binarios. etc. subprogramas y otros desarrollos que dieron lugar a los modernos lenguajes de programaci´n. acceder a perif´ricos como discos e impresoras. conocidos tambi´n como sistemas operativos proporcionan el o e a medio por el cual el usuario puede interaccionar con la m´quina y aprovechar sus recursos. el usuario de aplicaciones interacciona con ´stas y no ha de preocuparse por los detalles del SE o del equipo que utiliza. Ejemplos de aplicaciones son los procesadores de texto. Pero antes de avanzar en este punto se o va a describir el sistema de explotaci´n. pero que no necesita saber las particularidades de la circuiter´ de los distintos equipos. Para ıcil mejorar sus caracter´ ısticas se crearon macroinstrucciones.3 Sistema de explotaci´n o Los sistemas de explotaci´n (SE). caen bajo la responsabilidad del SE. adem´s ofrece un conjunto de funciones o a que son usadas por los programadores para acceder a la circuiter´ de cada m´quina particular. n o En la figura 4. A un nivel e inferior trabaja el programador de aplicaciones. el programador de sistemas ha de enfrentarse a un hecho importante del mundo real: las computadoras de distintos modelos o fabricantes tienen circuitos distintos. ıa a lo cual es necesario en casos como el acceso a perif´ricos desde programas. que han de ser tratados de forma diferenciada. n a videojuegos.

• N´ cleo. El primero es el n´cleo que es un o u m´dulo de servicio para los dem´s. memorias o a auxiliares. pues descansa sobre la circuiter´ de la computadora.3.c M. Entendido como un conjunto. de forma que las superiores hacen uso de las inferiores como muestra la figura 4. u a ıa proporcionando servicios a las capas m´s altas. Entre las funciones que tiene asignada a destacan la gesti´n de interrupciones.2: Estructura de los sistemas operativos organizada por niveles. se presenta aqu´ como ı uno solo por simplicidad. etc • Int´rprete de comandos. Las tareas que realiza son : tratamiento de E/S a nivel de ficheros Memoria virtual. Los otros se encargan de la memoria. el SE no tiene que estar en memoria completo. De hecho. Arahal 2003 DISA. asignaci´n recursos.R. mediante las cuales es posible realizar tareas como o la asignaci´n de trabajo al procesador y la comunicaci´n entre los distintos programas o o • Nivel intermedio. pero hay m´s: desde rutinas para enviar caracteres a un a dispositivo hasta programas que permiten manejar ficheros enteros. el SE cubre el espacio existente entre el usuario y la circuiter´ de la m´quina mediante una estructura en la ıa a que se pueden distinguir varios niveles. ESI. 4. Aunque puede estar subdividido en varios niveles. Un SE se compone de m´dulos con funciones asignadas. 35 Usuario Aplicación Programador Programador SE Sistema de explotación Circuitos de cada máquina particular Figura 4. US.1 Estructura Las tareas de los SE son muy variadas. Ya se ha indicado que es el responsable de leer las ´rdenes del e o usuario y procesarlas. El sistema de explotaci´n se divide en numerosos programas que se hacen cargo de las diversas o tareas. De este modo.2. la organizaci´n del SE queda como un conjunto o o de capas.1: El sistema de explotaci´n visto por los distintos usuarios del sistema. sino que . Es el de m´s bajo nivel. o Intérprete de comandos Nivel intermedio Núcleo Figura 4. las E/S. En principio se puede fijar la atenci´n en programas o como el ensamblador y el cargador.

En ellas los datos son almacenados hasta que e el dispositivo de destino est´ listo para aceptarlos. con independencia del dispositivo usado. Ahora bien. de copia.2 Funciones de los sistemas de explotaci´n o El SE realiza numerosas funciones. posicionamiento de partes m´viles. Todo ello requiere una programaci´n cuidadosa. Adem´s se ha de coordinar la comunicaci´n para asegurar que sea r´pida y o a o a sin errores. Para detectar los e ıtulo dedicado a la codificaci´n o errores en transmisiones existen t´cnicas que se detallan en el cap´ o binaria de la informaci´n.36 ´ TEMA 4. LENGUAJES DE PROGRAMACION las distintas partes pueden estar en el disco y ser llamadas en el momento en que se las necesite. Los SE incluyen rutinas que realizan o estas tareas de forma que el programador pueda usarlas. todas encaminadas a ayudar al usuario y a mejorar el rendimiento de la m´quina. El programa e debe mandar se˜ales de control como: puesta en marcha. La E/S de datos desde perif´ricos se realiza por medio de programas concretos.) y lanzar su ejecuci´n. para borrar un fichero o copiarlo o para usar una aplicaci´n. o o e o • Retomar el control al t´rmino de la ejecuci´n. Entradas y salidas Los dispositivos perif´ricos usados para la E/S de datos son muy distintos entre s´ lo cual e ı. n o petici´n de mensajes. e o Debido a que los perif´ricos usan velocidades de transmisi´n muy diferentes a la de la UCP. o • Cargar el programa (de borrado. siempre debe existir una parte en memoria llamada supervisor residente que incluye al menos las rutinas encargadas de las siguientes tareas: • Aceptar ´rdenes del usuario a trav´s del teclado. aplicaci´n. ´ Dentro de los procesos de E/S merece ser destacado el problema de la detecci on de errores. El sistema de explotaci´n debe detectar estas situaciones o o y actuar de acuerdo a la gravedad del problema: bien recuperando autom´ticamente los datos a corruptos o avisando de la existencia de errores o incluso parando el sistema. Las operaciones que implican trasvase de informaci´n est´n sujetas a errores provocadas o a por ruidos en las l´ ıneas de transmisi´n. de forma que el programador pueda solicitar operaciones de lectura/escritura de forma parecida. 4. etc. Esto ahorra tiempo al programador y aumenta la fiabilidad. A continuaci´n se da una lista no exhaustiva clasificada por el a o tipo de tarea. o • Buscar el programa necesario para cada comando. Se consigue de este modo que la UCP no . se suelen usar zonas de almacenamiento temporal.3. El SE debe limar estas diferencias. o e • Analizar las ´rdenes o comandos. implica la necesidad de desarrollar comunicaciones espec´ ıficas para cada tipo. por ejemplo.

e con el que se va a denominar. Hay que especificar el nombre ıo. ız. Arahal 2003 DISA.3. como: • Crear. A su vez. copiar. Las operaciones que se pueden realizar con archivos son: crear. Los perifericos virtuales surgen de esta idea y se explicar´n e a en una secci´n posterior.3: ´rbol de directorios en un SE particular. Del mismo modo los directorios pueden ser objeto de diversas acciones. a˜adir informaci´n . ESI. parten otros directorios que a su vez pueden contener archivos (indicados en letra cursiva) y otros directorios.c M. del mismo modo que en un fichero convencional se puede o e clasificar los asuntos en carpetas y ´stas en cajones. El objetivo de esta organizaci´n es mantener la informaci´n estructurada para poder o o acceder a ella eficientemente. sin ficheros en ´l. a ´ tenga que espera al perif´rico. etc. la informaci´n se agrupa en archivos o o ficheros. Esta organizaci´n jer´rquica es llamada arbol de directorios. El directorio nace vac´ es decir. US. • Borrar. borrar. . A partir de la ra´ que es el directorio superior. los ficheros pueden agruparse para formar directorios o carpetas que sirven para organizar la informaci´n. Los archivos tienen un nombre que los identifica dentro del directorio. Los directorios tambi´n se identifican mediante un e nombre como es el caso de usuarios y pedro. El directorio ha de ser previamente vaciado borrando los ficheros y subdirectorios que contiene. raíz 37 config cc programas ens editor sistema usuarios juan grafic conect dietas juegos mateo carlos ficha prueba listin matriz ahorcado gusano Figura 4. En o a la figura 4. Los directorios pueden a su vez formar parte de directorios mayores. renombrar. El SE provee los programas o a n o necesarios para llevar a cabo tales tareas. cambiar la ubicaci´n dentro del ´rbol.R. o Sistema de archivos En los dispositivos de almacenamiento masivo como discos.3 se muestra una de estas estructuras. dando lugar a una ´ estructura arborescente. por ejemplo los ficheros listin y matriz de la mencionada figura 4.

COMPUTADORA Programa en código máquina Cargador COMPUTADORA entrada Programa resultado Figura 4. Al acabar la ejecuci´n el SE retoma el control. a es posible recolocar el directorio dentro del ´rbol. • Renombrar. en MS DOS el separador es la barra o invertida \ y en UNIX es la barra /. o el control de la m´quina pertenece total o parcialmente al programa que se ejecuta. realizar la carga desde el disco. Adem´s. Cuando a ´ste finaliza. Esta tarea se descompone en varias o operaciones.4: El programa cargador. En este ejemplo se ha usado el gui´n como separador de directorios.3 ı mediante ra´z-usuarios-juan-dietas1 se designa el camino absoluto para llegar al fichero dietas (se llama absoluto porque parte del directorio ra´ ız). devuelve al SE tal control. como son: localizar el programa en el disco. Durante la misma. Por este motivo.38 ´ TEMA 4.4 se muestra un diagrama del programa e cargador correspondiente a la computadora CESIUS que sirve para ilustrar el proceso descrito. LENGUAJES DE PROGRAMACION • Listar. Consiste en abrir el directorio y leer los ficheros y subdirectorios que contiene. El nombre del directorio se puede cambiar sin afectar a su contenido. En el ejemplo de la figura 4. Es necesario especificar el camino de directorios. En la figura 4. La gesti´n del sistema de archivos puede realizarse por medio de comandos u ´rdenes introo o ducidas por el teclado (como es el caso de UNIX y MS-DOS) o utilizando una pantalla gr´fica a cuyos s´ ımbolos se activan y manejan con el rat´n (como es el caso de los sistemas de ventana). proporcionar un lugar en la memoria para cargarlo. 1 . El programa cargador que ha sido aludido numerosas veces tiene por misi´n colocar en la o memoria el programa que se quiere ejecutar y dar comienzo a su ejecuci´n. a Dos archivos distintos pueden tener el mismo nombre si pertenecen a directorios distintos. o En ambos casos es el SE correspondiente el que recibe la operaci´n a realizar y la lleva a cabo. o Ejecuci´n de programas o La ejecuci´n de un programa implica que el SE debe ceder parte del control de la m´quina al o a mismo. dar al contador de pasos del programa la direcci´n o de comienzo y retomar el control al finalizar. si se quiere hacer referencia a un archivo de forma un´ ıvoca no basta con dar el nombre.

o a al dividir el tiempo en trocitos y cambiar de programa frecuentemente se consigue el efecto de que todos avancen su tarea. El SE asigna a cada usuario una porci´n de tiempo para atenderle. 39 En algunos sistemas la UCP reparte su tiempo entre varias tareas. para lo cual usa reglas encaminadas a obtener un buen rendimiento del sistema. Esto ahorra mucho tiempo al usuario y dinero. Por ejemplo. El manual puede ser mostrado a petici´n del usuario introduciendo una palabra clave para o identificar la parte del mismo que interesa.R. por lo que ´stos se han de cargar por partes. Ahora bien. puesto que (en sistemas monoprocesador) la UCP s´lo o ejecuta una instrucci´n cada vez. a a Ayuda al usuario Los usuarios necesitan a menudo acudir al manual del SE para realizar una tarea. MS Windows) la ayuda se halla a en tal cantidad que es casi innecesario el manual. La realidad es que cuando el n´mero de usuarios conectados es muy alto se nota una ıa. s´lo un programa n a o usa la UCP cada instante de tiempo. Solaris. En los entornos gr´ficos de ventana (McIntosh Systems. n La gesti´n de la memoria principal se realiza en base a t´cnicas sofisticadas destinadas a o e proveer de recursos a los programas en ejecuci´n manteniendo la confidencialidad de los datos. En rigor. El sistema de explotaci´n o o se hace cargo de esta tarea. ESI. no una copia en papel sino en la pantalla. Gesti´n de recursos o Los recursos de la computadora son la UCP. a e En teor´ claro. o 2 . En tales casos es necesario arbitrar la adjudicaci´n de los recursos entre los distintos programas y/o usuarios. o En muchos sistemas la memoria instalada es m´s peque˜a que la suma de espacios que ocupan los a n programas que se han de ejecutar simult´neamente. Esta es la forma de uso de o a ı ´ las grandes computadoras centrales a partir de los a˜os 70. la cual pertenecer´ a un programa en particular. En los sistemas multitarea la simultaneidad de ejecuci´n se consigue dividiendo el tiempo o de trabajo en peque˜os intervalos y asign´ndolos a cada programa. US. Algunos SE incluyen la posibilidad de consultar el manual en l´ ınea. En estos sistemas multitarea se suele vigilar el tiempo que cada programa pasa utilizando la UCP y tambi´n las e zonas de memoria usadas por cada uno.c M. Estas reglas deben solventar conflictos surgidos de peticiones simult´neas de un a mismo servicio. Arahal 2003 DISA. la memoria principal y los perif´ricos. cada usuario tiene la sensaci´n de que toda la m´quina es para s´2 . En los sistemas de tiempo compartido varios usuarios utilizan una misma computadora usando terminales remotos. el nombre de un comando. u ralentizaci´n desesperante. es decir. En algunos e sistemas se permite que exista m´s de un programa en ejecuci´n. Esto puede ocurrir porque el a o sistema es multiusuario o simplemente multitarea. o Debido a que el tiempo de proceso de la UCP es mucho menor que el de las acciones humanas. Estas cuestiones se analizar´n m´s adelante. pues las copias impresas de algunos manuales son gigantescas.

En muchos casos el proceso de configuraci´n se produce o autom´ticamente durante el arranque de la computadora. La o forma m´s com´n de gesti´n de memoria es la memoria virtual. Consid´rese por ejemplo el panorama mostrado en el cap´ o e ıtulo 8. no es deseable o que un usuario de un sistema de tiempo compartido consiga ejecutar sus programas m´s r´pido a a que los dem´s sin el conocimiento de nadie.4 Lenguajes de alto nivel La programaci´n de computadoras ser´ una tarea harto desagradable y pesada si no existiesen o ıa los lenguajes de programaci´n. en sistemas con posibilidad de acceso remoto3 es indispensable contar con medios a o ıa para asegurar que s´lo las personas autorizadas acceden al sistema. Protecci´n o En los sistemas multiusuario es deseable que unos usuarios no puedan interferir en el trabajo de los otros. En todo caso. de forma que el teclado o produzca los caracteres correctos. e Adem´s. o . el SE debe ofrecer a medios para que cada usuario cambie el aspecto del sistema o las opciones por omisi´n a voluntad. o Otro tipo de protecci´n concierne al funcionamiento del sistema. Esto pudiera lograrse en algunos sistemas cambiando a la tabla de prioridades para la ejecuci´n de tareas. teniendo en memoria en cada instante s´lo el trozo que interesa en cada momento. o 3 A trav´s de redes de computadoras o usando la l´ e ınea telef´nica y un modem. a u o Otras tareas del SE relacionadas con la gesti´n de recursos son la realizaci´n de estad´ o o ısticas de uso por parte de los distintos usuarios y contabilidad. En la mayor´ de los casos esto se resuelve asignando a cada usuario un nombre identificativo y una palabra secreta. donde se han ilustrado las venjajas de usar un lenguaje simb´lico en lugar de programar en o c´digo de m´quina. Un ejemplo puede ser elegir el idioma del usuario. o Configurar el sistema Consiste en fijar las opciones por omisi´n y otros valores que suelen ser constantes durante una o sesi´n de trabajo. LENGUAJES DE PROGRAMACION es decir. Se ha de evitar que ning´n usuario pueda leer o modificar la informaci´n u o que pertenece a otro. Por ejemplo. Cuando el usuario se conecta a la m´quina el sistema pregunta ambos datos y comprueba la concordancia a usando su base de datos. o 4. El sistema de explotaci´n debe proporcionar mecanismos para mantener la confideno cialidad de los datos. En la historia de las redes inform´ticas ha habido casos c´lebres de a e personas que han aprovechado m´ ınimos fallos de seguridad para acceder e incluso modificar informaci´n restringida. Los c´digos mnemot´cnicos confieren mayor legibilidad al programa y por o a o e tanto facilitan su depuraci´n.40 ´ TEMA 4. est´ situada en la memoria principal o en el disco.

Lenguajes de alto nivel. e a Existen lenguajes de programaci´n que contienen elementos de alto y bajo nivel. a o Pero no todo son ventajas. a La transportabilidad se consigue gracias a la existencia de programas traductores que construyen las instrucciones de m´quina necesarias a partir del programa escrito con el lenguaje de a alto nivel. la traducci´n implica una serie de operaciones que antes no exo ist´ ıan. Programar con un lenguaje de alto nivel es equivalente a construir una casa con grandes bloques de cemento frente a construir con ladrillos: es m´s r´pido. como en los lenguajes de bajo nivel. Como ejemplo de lenguaje de alto nivel se muestra aqu´ un programa en C.h > void main(void) { int i. Por ejemplo: poder realizar una ra´ cuadrada sin necesidad de ız escribir varias p´ginas de programa. y sobre todo transportabilidad. 41 Los lenguajes de programaci´n permiten realizar el paso de algoritmo a programa de como putadora. Esto es debido a que el traductor no tiene la fineza del programador humano. Esto se logra con los lenguajes de alto nivel. Persiguiendo una mayor facilidad de la programaci´n se lleg´ a la o o observaci´n de que es util disponer de un medio de indicar a la m´quina tareas complicadas con o ´ a pocas sentencias del programa. al utilizar lenguaje de alto nivel a menudo se produce el efecto de ”matar moscas a a ca˜onazos”. pues ´stos contienen m´s operaciones.R. o a ıtulo Los lenguajes de bajo nivel quedan bien reflejados mediante el LS-2 explicado en el cap´ ı 8. Las sentencias del a a programa en alto nivel son traducidas y dan lugar a muchas instrucciones de m´quina. El traductor proporciona una serie de instrucciones que realizan la suma. los programas en c´digo de m´quina se ejecutan m´s rapidamente que los o a a producidos con un lenguaje de alto nivel. #include < stdio. Las ventajas de los lenguajes de alto nivel son muchas: mayor legibilidad del programa. o al ser traducidas. Al usar un u o a lenguaje de alto nivel se escriben sentencias que son luego traducidas. for(i=0. ESI. Un buen o ejemplo es el lenguaje de programaci´n C. producen pocas instrucciones. mayor facilidad para el aprendizaje por parte de personas sin o grandes conocimientos de inform´tica. i*i ). Para cada m´quina distinta existe un programa que realiza la traducci´n adecuada. Adem´s. La correspona dencia entre instrucciones de m´quina y sentencias del lenguaje queda rota. Consideremos la tarea de sumar dos n o n´meros que en c´digo de m´quina queda resuelta con muy pocas instrucciones. en general aparecen m´s instrucciones que el a n´mero m´ u ınimo necesario. y otras de gran potencia cuyo equivalente en c´digo de m´quina son muchas instrucciones. US. i<10.c M. menor tiempo de programaci´n. printf(”\n Fin”). i. Ilustremos con un ejemplo esta afirmaci´n. } . pero se derrocha material. Arahal 2003 DISA. i++) printf(”\n %d %d”. a a Como consecuencia. En este lenguaje se pueden escribir expresiones que.

consistente en instrucciones de la m´quina que se est´ utilizando. Es conocido del cap´ ıtulo 8 el programa ensamblador de dos pasos.6.42 ´ TEMA 4. a 4. e o o los compiladores producen un c´digo intermedio que sirve para crear un fichero ejecutable que o puede ejecutarse posteriormente tantas veces como se desee. En cambio. Los programadores cuentan hoy en d´ con aplicaciones que les ıa permiten escribir c´digo fuente.5: El programa traductor para LS-2. Se incluyen ah´ rutinas de uso frecuente para matem´ticas o para el manejo de perif´ricos. o El resultado del montaje es un programa ejecutable. que facilitan la tarea del programador. o Los pasos que el programador ha de realizar son: 1. Obs´rvese que adem´s del c´digo fuente escrito por el programador existen partes del proe a o ı a grama que proceden de la biblioteca. o o El programador no puede ver o cambiar las rutinas incluidas en la biblioteca. LENGUAJES DE PROGRAMACION Puede observarse que el programa est´ escrito usando palabras del idioma ingl´s y expresiones a e parecidas a las habituales en Matem´ticas.5. . a e El proceso de creaci´n de programas usando lenguajes de alto nivel involucra seg´n estamos o u viendo muchas operaciones. pero no est´ preparado para o a a funcionar. montar e incluso ejecutar paso a paso los programas. compilar. Estos m´dulos se almacenan en ficheros llamados ficheros fuente. ´ Cuando se usan lenguajes de alto nivel es posible utilizar interpretes o compiladores. La biblioteca se e compone de muchos m´dulos de c´digo objeto que se venden normalmente con el compilador. donde se re´nen todas las partes para formar el u programa ejecutable. La forma de trabajo queda reflejada en la figura 4. COMPUTADORA Programa en LS-2 Traductor Programa en código máquina Figura 4. El c´digo objeto consiste en instrucciones de m´quina.5 Lenguajes interpretados Como se ha visto son necesarios traductores para los lenguajes de bajo y alto nivel. etc. Recordemos que tiene como misi´n o o o producir las instrucciones del programa a partir del c´digo escrito en lenguaje simb´lico en la forma que se muestra en la figura 4. Es preciso un proceso de montaje. pero recibe informaci´n del vendedor para poder usarlas. Estudio del problema a resolver. Los int´rpretes realizan la traducci´n y ejecuci´n del programa sentencia a sentencia. Los bloques marcados como MF son trozos de programa escritos en el lenguaje de alto nivel y reciben el nombre de m´dulos o ´ de codigo fuente. El o ´ compilador acepta varios de estos m´dulos para producir los correspondientes bloques de c odigo o objeto.

ESI. 43 MF1 MF2 MF3 M F = Módulo en código fuente Compilador M O = Módulo en código objeto MO1 MO2 MO3 Montador Biblioteca Fichero ejecutable Cargador Ejecutable en memoria principal Figura 4. Arahal 2003 DISA.c M.6: Compilaci´n y montaje de m´dulos para crear un fichero ejecutable. US.R. o o .

Si hay errores volver a 4. LENGUAJES DE PROGRAMACION 2. si no proceder a la prueba de ejecuci´n. Compilaci´n. si no proceder al montaje. aunque hay que decir que MATLAB no fue creado con este prop´sito. o a lo cual facilita su uso aunque disminuye la velocidad a la que realiza los c´lculos. A la o vista de los resultados el usuario puede continuar con otras ´rdenes hasta que completa la tarea o que precisa realizar. Se trata de un lenguaje interpretado. a o . 9. Verificar salida proporcionada por el programa. 7. Desarrollo y verificaci´n de un algoritmo. a o a En el tema 7 se explicar´n las ´rdenes m´s comunes y el manejo de MATLAB para que sirva de banco de pruebas con el cual realizar pr´cticas de programaci´n. 5. o a 4.6 El entorno MATLAB MATLAB es un programa pensado para realizar c´lculo num´rico. cada vez que se modifica alguna parte del c´digo fuente es preciso volver a o compilar y montar. o 6. Las ´rdenes t´ o ıpicas son sentencias como y=cos(3)+x/z que permiten al usuario obtener los resultados de c´lculos complejos. o 4. Si hay errores volver a 4. a Adem´s el usuario puede apilar un conjunto de ´rdenes y enviarlas a la ventana de ´rdenes a o o formando un lote. Escritura de los ficheros fuente. o 8. EL conjunto de ´rdenes disponibles en MATLAB permite realizar tares muy diversas. Se observa que. por lo o que constituye un verdadero lenguaje de alto nivel para programar la computadora. a pesar de ello los int´rpretes son e e poco usados pues la ejecuci´n es m´s lenta. Estudio de la codificaci´n del algoritmo.44 ´ TEMA 4. Esto no sucede si se utiliza un int´rprete. Mediante una ventana pera e mite que el usuario escriba ´rdenes que son interpretadas y ejecutadas en ese momento. o 3. Ejecutar programa. De este modo el usuario puede apartarse un rato de la pantalla y descansar mientras aparece la respuesta.

se tratan los problemas que aparecen al tratar de modificar programas previamente escritos. La soluci´n a tales problemas pasa por un o conjunto de reglas que.1: Proceso de resoluci´n de problemas mediante computadora. ıcil ıa En este tema se van a tratar varios aspectos relacionados con la programaci´n.Tema 5 Resoluci´n de problemas o Una vez que se tiene una idea de cual es la estructura y funcionamiento de la computadora digital es posible preparar el camino para lograr su programaci´n. En primer lugar hay que dejar claro o que un programa es una realizaci´n concreta de un algoritmo que resuelve un problema. Problema resolución Algoritmo codificación Programa Figura 5. La resoluci´n u o a o de problemas mediante computadora conlleva dos pasos: hallar un algoritmo y su posterior o a codificaci´n. Finalmente. e a a 45 . No debe confundirse algoritmo con programa. una expresi´n de o o o 1 La palabra procede de al-Jwarizmi. En primer o lugar se mostrar´ la forma de exponer los algoritmos usando el lenguaje natural de las personas. permiten producir programas legibles y f´cilmente modificables. este ultimo es la codificaci´n del ´ o algoritmo en alg´n lenguaje de programaci´n o en instrucciones de la m´quina. De forma gr´fica se ha ilustrado en la figura 5. Posteriormente se mostrar´ c´mo crear representaciones gr´ficas de los o o a o a algoritmos llamadas diagramas de flujo. por lo o que la tarea dif´ es en la mayor´ de los casos la de hallar el algoritmo. a 5. y no constituyen un lenguaje de prograo maci´n o c´digo alguno. sobrenombre del c´lebre matem´tico Moh´med ben Musa.1 Algoritmos y pseudoc´digo o Un algoritmo1 es un ”conjunto ordenado y finito de operaciones que permite hallar la soluci´n de o un problema”. a Estas descripciones reciben el nombre de pseudoc´digo. o El pseudoc´digo es un modo de especificar la soluci´n de un problema. restringiendo la libertad del programador.1.

cualquiera o a que sea el lenguaje de programaci´n que vaya a usar. una detr´s de otra.46 ´ TEMA 5. Consid´rese la tarea de hallar el valor absoluto de un e n´mero x. Las operaciones necesarias para resolver el problema han sido especificadas en lenguaje natural. el algoritmo para hallar la norma de un vector v de 10 componentes2 podr´ ser el indicado en la tabla siguiente.1 Dar a sp el valor sp + vi 3. ız i=10 i=1 2 vi . por ejemplo una receta de cocina. A modo de ejemplo consid´rese el ı a a a e problema consistente en hallar el resto de la divisi´n entera de un n´mero a entre otro b. ]. En tales casos es conveniente disponer de un modo para indicar dicha repetici´n en lugar o de repetir las sentencias. Los algoritmos con que trataremos aqu´ tienen un car´cter m´s matem´tico.2 Incrementar i 3. como ocurre en el siguiente ejemplo.3 Si i > 10 ir al punto 4. esto es. . ıa 1 2 3 4 5 Iniciar suma parcial sp a cero Iniciar ´ ındice i a uno Hacer: 2 3. u 1 2 3 Si x es positivo.742] = 3. tambi´n pueden emplearse en otros contextos como el ejemplo de la receta e 2 La norma se calcula como la ra´ cuadrada de la suma de las componentes al cuadrado. simbolizado como [ . por ejemplo [3. RESOLUCION DE PROBLEMAS un algoritmo dada en lenguaje natural. como ha sido el caso de los o a ejemplos mostrados. En el ejemplo anterior las operaciones o a realizar vienen dadas en secuencia. si no ir a 3 √ El resultado es sp Fin Los tres ejemplos anteriores presentan tres situaciones muy frecuentes en programaci´n y o que ser´n tratadas con detalle en este cap´ a ıtulo. Por ejemplo. Un o u ejemplo de pseudoc´digo es el siguiente: o 1 2 3 4 Hallar el cociente c de a/b Tomar la parte entera del cociente. el resultado es x Si no. Los algoritmos no sirven s´lo para operaciones matem´ticas. Pero ´ste no es siempre el a e caso. el resultado es −x Fin Muchos algoritmos requieren la repetici´n de un conjunto de operaciones cierto n´mero de o u veces. d = [c] Obtener el resto como a − b ∗ d Fin En la tabla anterior se ha usado el operador parte entera. De este modo el pseudoc´digo es una receta v´lida para todo programador.

el mensaje: ”estamos bien” se convierte en ”ftubnpt cjfo”. Las acciones que el procesador conoce se denominan primitivas.c M. siguiente en el alfabeto Si li es la ultima letra ir a 6 ´ Sumar uno a i Fin . En la literatura especializada se denomina procesador a la entidad que realiza las operaciones indicadas por el algoritmo. Consid´rese a o e e por ejemplo el problema de cifrar un mensaje para transmitirlo de forma secreta. 47 de cocina.R. De este modo. ESI. Resulta f´cil imaginar que si la receta no est´ bien explicada es posible que no pueda a a llegarse con ´xito al objetivo. el resultado es x”. El pseudoc´digo siguiente permite o realizar la tarea de cifrado. US. Un modo sencillo de cifrar mensajes es cambiar cada letra por la siguiente en el alfabeto. En un algoritmo puede haber operaciones no primitivas siempre y cuando sean definidas usando acciones primitivas. por lo que hay o e o a que poner especial cuidado en utilizar s´lo aquellos elementos que se suponen conocidos por el o lector. Tomemos como ejemplo una receta para freir un huevo: e 1 2 3 4 5 6 7 8 Poner aceite en sart´n e Colocar sart´n en fuego e Romper huevo haciendo caer el contenido en sart´n e Tirar c´scaras a la basura a Poner sal en yema Si el huevo est´ s´lido ir a 7. por familiaridad con la notaci´n matem´tica. En el e pseudoc´digo hemos utilizado sentencias como ”Si x es positivo. fregar sart´n e Fin Dejando aparte la habilidad manual necesaria. Arahal 2003 DISA. Esta obsero a vaci´n tambi´n se puede aplicar a los pseudoc´digos de algoritmos matem´ticos. hemos identificado sin problema o a como un n´mero cualquiera. En ella hay o un objeto x que. 1 2 3 4 5 6 Iniciar ´ ındice i a 1 Tomar li letra i-´sima de la palabra e Reemplazar por li + 1. 5. no s´lo num´ricas.2 Objetos y operaciones En la descripci´n de algoritmos es preciso con frecuencia hacer referencia a objetos que es preciso o manipular. Consid´rese el ejemplo de hallar el valor absoluto expuesto anteriormente. u En inform´tica se manejan diversos tipos de informaciones. es obvio que si la persona que lee la receta desconoce el significado de alguna acci´n ser´ incapaz de preparar el huevo frito. si no esperar a o Servir huevo.

El identificador u simboliza una cantidad que puede ser constante o que puede variar a lo largo de la tarea. al escribir m = a+b se indica que la variable m ha de cambiar su valor tomando el 2 resultado de sumar a y b y dividir por dos. ”vaciar”. Cada identificador hace referencia a un unico objeto que es de un tipo determinado (n´mero entero. Las expresiones muestran la forma en que tal manipulaci´n se o realiza. para ello se combinan los nombres de objetos con signos que simbolizan operaciones. la resta. en tal caso se dice que el objeto es una variable. o a Para poder escribir algoritmos de forma c´moda y precisa es conveniente nombrar a distintos o objetos (como n´meros o letras) usando para ello identificadores o nombres. Poseen tambi´n un tipo ´ e que no var´ durante el algoritmo. objeto primer n´mero u segundo n´mero u media dos nombre a b m 2 valor variable variable variable constante tipo n´mero u n´mero u n´mero u n´mero u entero entero real entero Obs´rvese que los valores de a y b pasan de ser indeterminados a tener un valor concreto e tras el paso 1. 1 2 3 preguntar el valor de a y b la media es m = a+b 2 Fin La tabla siguiente muestra los atributos de los objetos que aparecen en el algoritmo anterior. estos no son usos corrientes de la notaci´n matem´tica. n´mero complejo. Las operaciones involucradas son la suma y divisi´n o aritm´ticas. o mediante otras acciones ”romper”. e La descripci´n de un algoritmo no ser´ de ninguna utilidad si contiene operaciones no conoo a cidas por la persona (o mecanismo) que lo recibe. Los objetos son manipulados mediante operaciones como la suma. Por contra. Ciertamente. La unica constante es el n´mero dos. Por ejemplo. n´mero real.) u u En resumen. se ha a considerado que al sumar uno a una letra se consigue la siguiente letra del alfabeto. los objetos tienen un unico nombre que lo identifica. El valor o cantidad representado por el nombre puede variar ıa durante el algoritmo. que se ´ u ha representado con el identificador 2. Los lenguajes de alto nivel ponen a disposici´n o del programado muchas operaciones diferentes. por lo que escribir el programa resulta f´cil. existen objetos cuyo valor no cambia. Para aclarar los conceptos anteriores consid´rese el problema de obtener dos n´meros n´meros e u u enteros a y b y hallarles la media. Por este motivo a y b son variables. Adem´s. palabra. Los enunciados en los que se indican las manipulaciones son llamados expresiones.48 ´ TEMA 5. etc. son las llamadas constantes. En a . ´ u letra. etc. RESOLUCION DE PROBLEMAS En este caso se ha identificado cada letra de la palabra por un s´ ımbolo l i .

o • El conjunto de acciones primitivas ha de ser especificado con total claridad formando un conjunto peque˜o pero suficiente. • Definici´n del problema. pudiendo m´s adelante alterarse dicho valor mediante una nueva a o a a asignaci´n. Es preciso asegurarse que al resolver los trozos se consigue la soluci´n del problema total. Hay que destacar sin embargo el uso especial del signo =.R. 49 cambio. cuando se usa un lenguaje de bajo nivel es preciso describir cada tarea en funci´n de o operaciones simples. • Cada acci´n debe escribirse en una sentencia. En esta obra. o Los tipos de objetos que se utilizar´n son tambi´n los habituales de las Matem´ticas: n´meros a e a u enteros. • Cada objeto debe tener un identificador. De este modo x = 2 significa que la variable x toma el valor dos en ese momento.c M. Estos datos pueden provenir de cualquier perif´rico. • Esbozo de la soluci´n. Otra operaci´n que puede parecer poco familiar es la que permite preguntar valores para o asignarlos a variables. por lo que han de ser obtenidos durante la ejecuci´n.2. o . El problema debe partirse en trozos para los cuales se sospecha o que puede haber soluciones conocidas. reales. n 5. No hay espacio en este libro introductorio a la inform´tica para describir en detalle a y con rigor un lenguaje algor´ ıtmico. ”asignar”. Los objetos no pueden tomar como nombre ninguna de estas palabras. o • Resoluci´n de los subproblemas y prueba de la validez de los mismos. • El lenguaje algor´ ıtmico debe tener palabras reservadas como ”iniciar”. Aqu´ sin embargo se ha o e ı usado para asignar valores a variables. las operaciones que se consideran conocidas por el lector son las corrientes de la aritm´tica. por lo que la escritura es larga y tediosa. Sin embargo podemos citar las siguientes restricciones. algunas de las cuales han sido ya comentadas. de forma que quede absolutamente claro qu´ es lo que se pretende o e a a a resolver. Adem´s hay que especificar cu´les son los datos y cu´les los resultados buscados. ”incrementar”. Para evitar confusiones se usar´ el signo ←. ESI. En Matem´ticas se e a emplea para establecer una relaci´n de equivalencia entre dos t´rminos. de forma que se escribir´ x ← 2. No obstante hay una serie de reglas que conviene observar a la hora de construir algoritmos. Los lenguajes algor´ ıtmicos tienen reglas para la escritura destinadas a obtener algoritmos legibles.1 Fases del proceso de resoluci´n de problemas o Es dif´ concretar en proceso de resoluci´n de problemas pues cada problema plantea dificulıcil o tades especiales. Esta operaci´n es llamada lectura y equivale a la entrada de datos o en la computadora. US. Arahal 2003 DISA. vectores y matrices. la caracter´ e ıstica que los distingue es que no son conocidos a la hora de programar.

. El tipo de problemas que se resuelve para dar los primeros pasos en proa gramaci´n es muy simple por lo que no es f´cil ver la utilidad de las recomendaciones anteriores. Marca el final de un m´dulo. Permite elegir una de entre dos opciones en funci´n de cierta o o condici´n que se ha de especificar. a 5. Equivale a las o operaciones de lectura y escritura del pseudoc´digo. que ser´ o a tratada m´s adelante.50 ´ TEMA 5. Marca el comienzo de un bloque del programa.2 muestra el conjunto de s´ ımbolos que se van a usar para realizar diagramas de flujo. el c´lculo de la norma de un vector o el determinante de una matriz. o o • Prueba de validez del algoritmo que surge de unir todas las partes. o a 5. . o • Subprograma. o • Proceso. RESOLUCION DE PROBLEMAS • Expresi´n en pseudoc´digo de los algoritmos correspondientes a cada parte. Por ejemplo. si no . o o • Fin de m´dulo.3 Diagramas de flujo Un diagrama de flujo u organigrama es una representaci´n gr´fica de las distintas operaciones que o a deben ser realizadas por un operador (humano o mec´nico) para la resoluci´n de un problema. etc.1 S´ ımbolos La figura 5. En este texto se va a usar un conjunto de s´ ımbolos para representar acciones y decisiones. M´s a o a a´n. de forma que se ahorre tiempo de preparaci´n de los mismos. las posibles alternativas. la representaci´n del algoritmo es independiente de la programaci´n en un lenguaje u otro u o o o de la m´quina en que vaya a ser ejecutado. Este elemento indica la realizaci´n de operaciones diversas. Gracias a este bloque se pueden tomar datos del exteo rior (entrada) o enviar resultados al exterior de la computadora (salida).. . conectados por flechas que indican el orden en que se realizan. Los subprogramas son bloques de c´digo preparados para ser incluidos en o programas. entonces .”.. Hay que hacer notar que la representaci´n gr´fica de un algoritmo no es exclusiva o a de la inform´tica. Permite representar operaciones de decisi´n como ”si o o . Equivale a una o m´s o a acciones del pseudoc´digo.3. . u • Operaci´n de entrada o salida.. a o indicando el orden l´gico de las mismas. o • Bifurcaci´n condicional. como se ha visto en el ejemplo del pseudoc´digo para o calcular el valor absoluto de un n´mero. o a Existen muchos tipos de representaciones gr´ficas. sino que puede usarse en cualquier entorno que requiera planificaci´n... De izquierda a derecha y de arriba a abajo se tiene: • Comienzo de m´dulo. Para seguir estas reglas se dispone de la ayuda de la programaci´n estructurada. Un subprograma se hace cargo de una parte de la tarea que puede ser repetida en varias partes del programa a o en programas distintos.

u La figura 5. o a o • Inicio y actualizaci´n. Inicio de bloque Proceso Bifurcación Entrada o salida Fin de bloque Subprograma Módulo Actualización Figura 5. 51 • M´dulo.c M. Se ha de notar que el c´lculo del resultado se ha detallado en un m´dulo aparte. Un ejemplo m´s complejo es el correspondiente a un programa que tiene que averiguar si a un n´mero entero positivo dado es primo o no. Las operao ciones de lectura consisten en tomar datos provenientes de un perif´rico exterior. Conviene observar que para asignar su valor a la variable C se ha usado la notaci´n C ← A + B. es decir. que significa o introducir en C el valor A+B. El algoritmo consiste en dividir por todos los u enteros menores que el n´mero y ver si en alg´n caso el resto vale cero. Arahal 2003 DISA. mientras que el m´dulo es el resultado de una divisi´n en la o o o representaci´n gr´fica y puede no afectar a la codificaci´n. o 1 2 3 4 5 Leer primer sumando a Leer segundo sumando b Hallar la suma de los sumandos c = a + b Escribir c Fin Tabla 5.3 muestra el diagrama de flujo correspondiente a dicha tarea. normalmente e el teclado. usados sobre todo en bucles.2: S´ ımbolos para la confecci´n de diagramas de flujo. Un m´dulo se diferencia de un subprograma en que ´ste tiene siempre o e entidad propia en el c´digo. Asignaci´n de o o o o valores iniciales y modificaci´n de ´ o ındices y contadores. El pseudoc´digo correspondiente a este programa se muestra en la tabla 5.1.1: Programa para sumar dos n´meros y escribir el resultado.R. ESI. o A modo de ejemplo consid´rese el problema consistente en ”leer dos n´meros y escribir la e u suma”. La interpretaci´n correcta es que la variable a o C toma en ese instante el valor corrrespondiente a la suma A + B. Realizaci´n de operaciones iniciales de un m´dulo. El pseudoc´digo puede u u o expresarse en la forma indicada por la tabla 5. US. esto no debe inducir a pensar que C = A + B en el sentido matem´tico dado usualmente a tales ecuaciones.2 En la figura 5. Este s´ o ımbolo indica que la operaci´n es realizada por un bloque que se detalla o en otro lugar. la operaci´n marcada como leer provoca que se obtenga un dato del exterior.4 se muestra el diagrama de flujo del programa anterior. de este modo resultan dos diagramas a o . pudiendo posteriormente cambiar este valor por otro.

sino ir a 4 Escribir resultado Fin Tabla 5.2: Programa para hallar si un n´mero es primo.3 Incrementar divisor una unidad 4. pero la tarea le resulta ardua. El objetivo de la separaci´n es mejorar la legibilidad del conjunto. a partir del diagrama de la izquierda.52 ´ TEMA 5. de un o golpe de vista se puede. Transcurrido cierto tiempo. u 1 2 3 4 Leer n´mero x u Iniciar resultado al valor CIERTO Iniciar divisor a 2 Hacer: 4.5. RESOLUCION DE PROBLEMAS inicio leer dato A leer dato B calcular C A+B escribir C fin Figura 5. mientras que el diagrama de la derecha explica en detalle el proceso seguido.4 Si el divisor es igual a x ir a 5. hacer resultado igual a FALSO 4. Este intenta modificar el diagrama.2 Si el resto es cero. el mismo programador es requerido para realizar una modificaci´n o ´ en el mismo.4 Programaci´n estructurada o Es dif´ hacer un resumen de las ideas de la programaci´n estructurada a lectores que no tienen ıcil o cierta experiencia en programaci´n. Una de estas situaciones es la siguiente: un programador escribe un diagrama de flujo tal y como aparece en la parte derecha de la figura 5. Analizando los motivos por los que el trabajo no avanza con rapidez se puede observar que: . o 5 6 5.1 Dividir x entre divisor 4. reconocer el problema al que se da soluci´n.3: Diagrama de flujo de un programa para sumar dos n´meros. pero que no se advierten en los ejemplos dados a principiantes. En efecto. Esto sucede porque la programaci´n estructurada pretende o o evitar cierto tipo de situaciones que aparecen en programas grandes y medianos. u separados.

5: Diagrama de flujo estructurado (izquierda) y no estructurado (derecha). US. u Figura 5.4: Diagrama de flujo de un programa que comprueba si el n´mero dado es primo.c M. 53 inicio cálculo inicio programa resultado divisor SI 2 leer x calcular resultado (ser x primo) escribir resultado hallar resto de dividir x por divisor es resto = 0 ? fin programa NO SI resultado = NO Incrementar divisor NO divisor = x ? SI fin cálculo Figura 5. . ESI.R. Arahal 2003 DISA.

Cada vez que se detecte un error deber´ volver a repetir el tedioso proceso de modificaci´n. Es decir. en la que se aprecia que no existen cruces de l´ ıneas y que cada m´dulo o tiene una entrada y una salida. la selecci´n o o o entre alternativas y la iteraci´n forman un conjunto suficiente de m´dulos constructivos para o o describir cualquier algoritmo. cuesta trabajo ver si o a una modificaci´n de una parte dar´ resultados indeseables en otra. el programador deber´ probar el ı. o 5. pero antes de a pasar a los ejemplos es preciso comentar c´mo se va a producir la descomposici´n del problema o o global en los m´dulos presentados.4. En la figura 5.54 ´ TEMA 5.6 se tienen tales bloques. usando para la confecci´n del diagrama de flujo bloques ´ ´ o a los cuales llega s´lo una flecha y de los cuales parte s´lo una flecha. El flujo lineal se puede conseguir restringiendo los bloques constructivos a formatos de entrada unica y salida unica. debido al gran n´mero o a u de interconexiones que hay.4. a n • Incluso aunque el diagrama tuviera una mejor disposici´n gr´fica.5 (izquierda). se puede ver que son o de entrada unica y salida unica. RESOLUCION DE PROBLEMAS • Es dif´ hallar el punto en el cual hay que eliminar un bloque o insertar uno nuevo. Sobre estos dos aspectos se insistir´ m´s adelante. pues ıcil todo est´ enmara˜ado. por lo que las reglas son o o . La secuencia. ´ ´ módulo 1 NO ¿ condición ? SI cuerpo del bucle ¿ módulo 2 opción 1 opción 2 condición ? secuencia bifurcación bucle Figura 5. es posible siempre realizar un diagrama de flujo que contiene s´lo los bloques citados. por ahora no a a es necesario comentar m´s las ventajas que para cualquier proyecto supone el tener programas a legibles y comprensibles. Los problemas descritos no ser´ a o ıan tales si el programador hubiera podido escribir el diagrama de flujo de forma parecida a la de la figura 5. Y los problemas no acaban ah´ Tras realizar los cambios. 5.6: Bloques constructivos para programas estructurados. Es decir.1 Flujo lineal Los diagramas se dice que tienen flujo lineal cuando no existen conexiones de vuelta atr´s o a laterales.2 An´lisis descendente a En ocasiones se presenta la programaci´n estructurada como un conjunto de reglas a seguir. En o realidad no hay una definici´n exacta de programaci´n estructurada. En lo sucesivo se usar´n estos bloques para realizar los diagramas de flujo. a nuevo programa para comprobar su correcto funcionamiento.

4). Consiste ´ste en identificar las funciones a cumplir por el programa e ´ a nivel global y proceder luego a descomponer estas funciones en otras menores. US. Arahal 2003 DISA. En un segundo nivel. u . De este modo.7: El an´lisis descendente aplicado a la confecci´n de diagramas de flujo. Se comienza por el o n nivel m´s general y se termina por lo particular o concreto.R. Una idea importante de la programaci´n estructurada es el an alisis deo o o scendente o jerarquizado. a o Al confeccionar el diagrama de flujo de un programa o m´dulo se ha de usar el an´lisis o a descendente. Esta ha sido la t´cnica usada en el ejemplo del programa que comprueba si un e n´mero es primo (ver figura 5. o inicio leer inicio inicio calculo leer datos fin leer calcular resultado escribir resultado fin inicio escribir fin calculo fin escribir Figura 5. cada uno de los m´dulos se detalla en un o diagrama aparte.c M. 55 ´ s´lo una aproximaci´n. Estas a su vez se vuelven a descomponer en un proceso que termina cuando se alcanza el nivel del lenguaje o c´digo usado. El resultado es un conjunto de diagramas que describen el programa con un nivel de detalle creciente. ESI. Antes de pasar al siguiente nivel se a debe comprobar la validez formal de la soluci´n actual. El proceso continua mientras existan bloques que necesiten explicaciones ´ adicionales.7. el dise˜o del programa se realiza por niveles. En un primer nivel el diagrama de flujo de cualquier programa puede tomar la forma dada en la figura 5.

56 ´ TEMA 5. RESOLUCION DE PROBLEMAS .

o Un programa evoluciona de modo lineal cuando realiza toda la secuencia de instrucciones de forma continua. sin bifurcaciones o bucles. Este es el caso presentado en el ejemplo de la suma o de dos n´meros (ver figura 6.1 C´lculos en secuencia a Los c´lculos en secuencia no presentan dificultad alguna desde el punto de vista algor´ a ıtmico. sin saltos en la ejecuci´n.) o o o o o • Asignaci´n de valores a variables • Lectura y escritura de valores • Acceso a vectores y matrices mediante sub´ ındices Por tanto los algoritmos estar´n escritos usando estas operaciones elementales.1). a 6. y no otras. Como se ha visto en el tema anterior.) e o • Operaciones l´gicas (comparaci´n. En este tema se va a suponer que el operador es una persona con conocimientos matem´ticos suficientes como para saber realizar: a • Operaciones aritm´ticas (suma. comprobaci´n de igualdad. un algoritmo es una descripci´n detallada de los pasos a seguir para resolver o una tarea. Los pasos han de ser operaciones capaces de ser llevadas a cabo por el operador al cual va dirigido el algoritmo. Como ejemplos se propone realizar el diagrama de flujo de algoritmos que resuelvan las tareas siguientes: 57 . Los diagramas de flujo resultantes son lineales. multiplicaci´n. etc. producto l´gico. etc. y por tanto de f´cil a creaci´n. La realizaci´n y representaci´n en diagrama de flujo de estos u o o programas no conlleva ninguna dificultad.Tema 6 Desarrollo de algoritmos b´sicos a Antes de comenzar a programar es preciso saber desarrollar algoritmos.

creando de este modo bifurcaciones anidadas. u . u • Leer dos valores del teclado y escribir media aritm´tica.3 presenta una posible soluci´n mediante el uso de bifurcaciones en cascada. Un ejemplo muy simple es el siguiente: leer un n´mero por teclado y o u escribir el valor absoluto del mismo.2.2 Bifurcaciones Las bifurcaciones permiten tomar un camino o su alternativa. Leer a continuaci´n un cierto valor para la variable independiente x y escribir P (x). y) de IR2 . o Las bifurcaciones permiten que el programa discurra por un camino o su alternativa en funci´n de condiciones. e • Leer los coeficientes de una ecuaci´n de segundo grado de la forma x 2 + bx + c = 0 y o escribir las soluciones. DESARROLLO DE ALGORITMOS BASICOS inicio leer dato A leer dato B calcular C A+B escribir C fin Figura 6. o Desarrolle los diagramas de flujo que resuelven los problemas siguientes: • Leer un n´mero real x y calcular y escribir su valor absoluto (sin usar vabs). 3. o 6. u u o Las bifurcaciones se pueden encadenar para dar soluci´n a situaciones m´s complejas. dentro de un bloque bifurcaci´n puede situarse otro. La idea es hacer que la secuencia de ejecuci´n pase por la escritura del o n´mero o del n´mero cambiado de signo en funci´n de que sea positivo o negativo. Una forma de resolver el programa es mediante el diagrama de flujo de la figura 6. El diagrama de la u figura 6. y) ∈ IR2 → c ∈ {1. con (x.58 ´ TEMA 6. 2. Por o a ejemplo consid´rese la funci´n: N C(x. Como es sabido.1: Diagrama de flujo de un programa para sumar dos n´meros. 4}. y). Esta funci´n dee o o vuelve el n´mero de cuadrante en que se encuentra el punto (x. • Leer los coeficientes de un polinomio de grado tres de la forma P (x) = x 3 + ax2 + bx + c.

R.c M. . ESI. US.3: Programa que escribe el cuadrante en el cual se sit´a el punto del plano dado por u (x. 59 inicio programa leer x ¿ es x > 0 SI escribir x ? NO escribir -x fin programa Figura 6. Arahal 2003 DISA. y).2: Diagrama de flujo con ruptura de secuencia. inicio programa leer x e y ¿ SI es x > 0 ? ¿ SI es y > 0 ? NO SI es y > 0 ? ¿ NO NO Escribir 1 Escribir 4 Escribir 2 Escribir 3 fin programa Figura 6.

o Los siguientes ejercicios se pueden resolver con ayuda de bucles.4. 8] escribir en la pantalla un uno.1. Una posible soluci´n viene expresada por e o el pseudoc´digo siguiente de la tabla 6. La bifurcaci´n al final del bloque hace las veces de control de salida.3 Bucles simples Muchos algoritmos requieren la repetici´n de operaciones cierto n´mero de veces. El bucle queda completamente definido por el cuerpo y la condici´n de parada o salida. • Leer las 10 componentes de un vector de dimensi´n 10. Escribirlo luego en la pantalla. o ¿ condición ? cuerpo del bucle Figura 6. • Leer un n´mero del teclado.60 ´ TEMA 6.4: Bucle con control de salida en cabeza. Cada vez que el programa en ejecuci´n pasa o o por el cuerpo del bucle se dice que ha realizado una iteraci´n. • Leer n (suponiendo que es entero y positivo) y escribir el factorial n!. A modo de ejemplo consid´rese la tarea de construir un vector v de dimensi´n N de forma e o que la componente i−´sima tenga el valor vi = i2 − 4. Escribir luego el vector. como se indica en la figura 6. • Leer un valor x del teclado y escribir el valor f (x) siendo f una funci´n definida a trozos o del siguiente modo: x x ∈ [−1. Leer a continuaci´n las N componentes o o de un vector de dimensi´n N. Si est´ en el intervalo (2. De este modo se puede salir del bucle sin haber realizado ninguna operaci´n. en u a caso contrario escribir un cero. Al conjunto o u de operaciones que se repite se le llama cuerpo del bucle. o El bloque constructivo que se ha denominado iteraci´n permite plasmar en diagramas de o flujo este tipo de procesos. o • Leer N (suponer que es un entero mayor que uno). . DESARROLLO DE ALGORITMOS BASICOS • Leer las componentes de un vector de IR2 (x e y). 3) x > 50 resto f (x) 10 − x 1 0 6. Suponga que ninguna componente es nula. Escribir el n´mero del cuadrante en que u se halla. o En ocasiones es conveniente poner el control de salida en la cabeza del bucle.

Escribir la media de las alturas v´lidas (las no negativas). US.R.. a o En tal caso se dice que los bucles est´n anidados. tal que el elemento k−´simo sea vk = k 2 − 3 para k = 1. e • Leer n (que se supone es entero y mayor que uno). Dejar de leer cuando se haya u introducido una altura negativa. En cada iteraci´n del bucle externo se realiza el bucle interno un cierto n´mero de veces hasta que se produzca la condici´n de salida del u o mismo. . en particular puede haber otro bucle.c M. • Leer las 5 componentes de un vector y escribirlo luego al rev´s.1: Ejemplo de algoritmo con un bucle simple. inicio programa 61 leer dimensión N 1 2 3 4 5 6 7 Leer dimensi´n N o Iniciar ´ ındice i ← 1 Si i > N . ESI. Calcular y escribir la componente de mayor valor y o su ´ ındice dentro del vector. Se ha supuesto que la matriz tiene M filas e ındice K) se recorre variando el ´ ındice de columnas J y N columnas.5 se presenta un diagrama de flujo que puede utilizarse para recorrer la matriz. Calcular y escribir la componente de mayor valor (no o usar la funci´n de MATLAB max). o • Leer N y un vector de dimensi´n N.4 Bucles anidados Dentro de un bucle pueden aparecer operaciones diversas. e • Leer N y un vector de dimensi´n N. .. a • Escribir en pantalla los n´meros del 90 al 100 y los caracteres de la tabla ASCII cuyos u c´digos son tales n´meros. (no usar max). m ∈ IR • Leer del teclado un n´mero indeterminado de alturas. hallar y escribir m = v t v. construir un vector v ∈ IR n×1 . Este es el caso cuando se trabaja con matrices. n. o u • Hallar el m´ximo com´n divisor de dos n´meros enteros positivos a y b dados.. En la figura 6. • Leer v ∈ IRn×1 . Arahal 2003 DISA. a u u 6. Obs´rvese que cada fila (´ desde 1 a N en el bucle interior. ir a 6 v i ← i2 − 4 i←i+1 ir a 4 Fin NO i 1 v i i -4 2 i i+1 ¿ i>N ? SI fin programa Tabla 6. El bucle exterior permite variar K de 1 a M .

62

´ TEMA 6. DESARROLLO DE ALGORITMOS BASICOS

iniciar índice de filas K a 1

iniciar índice de columnas J a 1

Operar con el elemento a KJ

Incrementar J

no ¿ J > N ? sí Incrementar K

no ¿ K > M ?

Figura 6.5: Bucles anidados para trabajar con una matriz.

c M.R. Arahal 2003 DISA. ESI. US.

63

Los ejercicios que se proponen a continuaci´n se pueden resolver con un par de bucles anidao dos. • Lectura de una matriz m × n. Se han de leer del teclado las dimensiones m y n (suponga que son n´meros enteros positivos). A continuaci´n se han de leer los elementos a kj de u o una matriz A de m filas y n columnas. Finalmente se presentar´ en la pantalla la matriz a le´ ıda. e • Construir una matriz A m × n cuyo elemento gen´rico akj viene dado por akj = k 2 − j • Dada una matriz A de dimensiones m × n, se quiere anular (poner a cero) los elementos de su diagonal principal y escribir la matriz resultante. • Suma de matrices. Dadas dos matrices A ∈ IRm×n y B ∈ IRm×n se quiere calcular y escribir la matriz C obtenida como suma de las anteriores C = A + B. (realice la suma elemento a elemento, sin utilizar la suma matricial que ofrece MATLAB). • Matriz traspuesta. Dada una matriz A ∈ IRm×n calcular su traspuesta B = At (ha de hacerse mediante bucles, sin usar la ap´strofe de MATLAB). o • Submatriz triangular. Dada una matriz A ∈ IRm×n se desea mostrar en pantalla los elementos de su submatriz triangular inferior. Es decir, deben aparecer en la pantalla s´lo o los elementos de A que est´n por debajo de la diagonal principal. Se supone que tanto m a como n son n´meros mayores que uno. u • Algoritmo para obtener la multiplicaci´n de A ∈ IRm×n por B ∈ IRn×p dadas A y B. o

6.5
6.5.1

Otros procesos iterativos
Sucesiones y series

• Se quiere construir y escribir un vector v de dimensi´n n cuyas componentes siguen la ley o vk = 3 ∗ vk−1 − k. Tanto n como v1 son cantidades que han de leerse del teclado. • Dado un n´mero x mayor que uno se ha de determinar si es primo. Para ello ha de u comprobar si x es divisible por alg´n entero en el intervalo (1, x). u • Se desea calcular la suma n 1/ak siendo los valores ak los elementos de la sucesi´n o k=1 dada por ak = ak−1 + ak−2 con a1 = 1 y a2 = 1. El l´ ımite n ha de leerse del teclado y se supone mayor que dos.

6.5.2

Ordenaciones

o • Dado un vector v de dimensi´n n cuyas componentes son todas positivas o cero se desea reordenar sus componentes de mayor a menor. Por ejemplo, si v = [2 3 8 5 4] el resultado ha de ser un nuevo vector: w = [8 5 4 3 2]

64

´ TEMA 6. DESARROLLO DE ALGORITMOS BASICOS • Repetir el ejercicio anterior pero sin usar un vector auxiliar como w. El resultado que se pretende conseguir es que el propio vector v tenga sus componentes ordenadas. • Igual que el anterior pero suponiendo que v contiene cantidades positivas y negativas, por ejemplo: v = [−7 3 8 − 9 5 4 0 − 1] ha de dar como resultado el propio vector reordenado as´ ı: v = [8 5 4 3 0 − 1 − 7 − 9] o ıculo en cinco colores. Para • Un fabricante de autom´viles dispone de un modelo de veh´ saber la aceptaci´n de cada color realiza una encuesta usando un programa en su ordenador o port´til. El programa ha de ayudarle a contar los votos de los encuestados. El encuestador a teclear´ el n´mero del color elegido (de uno a cinco) cada vez que pregunte a una persona a u nueva. Cuando no quiera preguntar a nadie m´s introducir´ el valor -1. En ese momento a a el programa le indicar´ el n´mero de votos que cada color ha obtenido. Posteriormente se a u han de ordenar los colores seg´n los resultados de la votaci´n. u o

6.5.3

C´lculos a

• Dada una cantidad positiva N calcular la ra´ cuadrada entera aproximada r. Se ha de ız cumplir que r · r ≤ N ≤ (r + 1) · (r + 1) . Por ejemplo, si N = 24 se tiene que r = 4 pues 4 · 4 = 16 < 24 < 25 = 5 · 5 • Se han medido las longitudes de tornillos procedentes de un mismo lote de fabricaci´n. Se o han dispuesto en un vector v de dimensi´n N > 2. Dise˜e un algoritmo para calcular la o n media y la varianza de las longitudes.

El usuario de MATLAB suele ser una persona que necesita algo m´s que una calculadora a o pero que no quiere ”mancharse las manos” con un lenguaje de programaci´n. si se escribe ´ sqrt(16) 65 .1 El entorno El programa MATLAB se maneja (en su mayor parte) escribiendo sentencias dentro de una ventana llamada de ordenes. etc. an´lisis estad´ o a ıstico. a o 7. especialmente en operaciones con matrices. a Pero no todo son ventajas. Esto permite que el usuario pueda agrupar sentencias que utiliza frecuentemente dentro de un programa que puede ser invocado posteriormente. Como principal inconveniente hay que se˜alar el hecho de que n MATLAB no ha sido concebido como lenguaje de programaci´n por lo que carece de elementos o o caracter´ ısticas necesarias para una buena pr´ctica de la programaci´n. dise˜o de n controladores. Una incorporaci´n temprana fue la programaci´n. Por eso el entorno de trabajo es sencillo de manejar. a Con los a˜os ha ido incorporando funciones distintas y hoy en d´ contiene herramientas n ıa para gran cantidad de aplicaciones ingenieriles: visi´n artificial. casi tan f´cil como una calculadora. Adem´s permite a a crear gr´ficos de muchos tipos y presenta grandes ventajas a la hora de trabajar con n´meros a u complejos. Por ejemplo.Tema 7 Programaci´n en MATLAB o MATLAB es una aplicaci´n inform´tica que surgi´ para servir de herramienta en operaciones o a o matem´ticas. De este modo se ahorra tiempo y esfuerzo en sucesivas sesiones pues no es necesario escribir todas las sentencias de nuevo como se mostrar´. Es posible crear nuevas funciones de o o MATLAB mediante un lenguaje que es muy parecido a lenguajes de programaci´n como BASIC o o C.

Hay que tener en cuenta que las variables ocupan un espacio en la memoria.1 Variables Tipos En MATLAB todas las variables son matrices. o Si se quiere liberar el espacio ocupado por una variable se ha de utilizar la orden clear.2.66 ´ TEMA 7. PROGRAMACION EN MATLAB el programa realiza la operaci´n indicada y responde en la pantalla con el resultad. a Adem´s. o por ejemplo clear k o clear matriz a. Por o . a n A pesar de que MATLAB trata a todas las variables del mismo modo se va a continuar con la sana costumbre de indicar en los diagramas de flujo y en los comentarios el tipo de las variables. Para ello basta con asignarles un valor en la forma que veremos. De este modo se facilita la detecci´n de errores. o Desafortunadamente todo est´ en ingl´s. 7.2. Cada vez que se crea una nueva variable el programa MATLAB pide al SE un trozo m´s de la memoria a disponible. u e Estas caracter´ ısticas hacen que MATLAB desperdicie memoria con respecto a otros lenguajes en los cuales las variables pueden ser de otros tipos m´s peque˜os.2 Creaci´n y destrucci´n o o Las variables pueden crearse en cualquier momento. Una vez que una variable ha sido o eliminada no es posible recuperar su valor.2. Finalmente. 7. u √ −1. cada elemento se considera que es un n´mero complejo a + bi siendo i = a u Cuando se trabaja con n´meros reales MATLAB considera simplemente que b = 0. Se proporcionar´ una lista de ´rdenes y funciones a e a o debidamente traducida. o 7.2 7. Un escalar no es m´s que una matriz 1 × 1. Esto quiere decir u que son n´meros con parte entera.3 Asignaci´n o La asignaci´n se consigue por medio del signo igual =. No hay que olvidar que asignar es una o operaci´n consistente en copiar un cierto valor en la memoria ocupada por una variable. A partir de ese momento el trozo en cuesti´n no puede ser usado para otros fines. todos los n´meros son tratados en formato de punto flotante. parte decimal y un exponente (v´ase tema 2). Esto causa la destrucci´n completa de la variable y la liberaci´n del trozo de memoria ocupado por la misma.

US.R. resultado). el s´ ımbolo >> sirve para indicar al usuario que puede escribir ah´ su ı orden. 67 tanto no es lo mismo asignar que igualar en el sentido matem´tico. e .c M.3. como por ejemplo 2 · (5 + 3). Es muy aconsejable no estudiar de memoria los ejemplos ıas sino probarlos en el entorno MATLAB. o e Por ejemplo si se escribe 6+8 y se pulsa Intro se obtiene en la pantalla: >> 6+8 ans = 14 >> Como ya se ha dicho. Puede verse que el resultado viene precedido de ans=. ESI. Lamentablemente el uso del a signo = en ambos casos no ayuda nada a clarificar la cuesti´n. o Debido a que la asignaci´n es una operaci´n distinta de la igualdad matem´tica se ha insistido o o a en temas anteriores en que se utilice un signo diferente ←. Estas letras son la abreviatura de answer (respuesta.1 Operaciones elementales La forma m´s simple de usar MATLAB es como una calculadora. Arahal 2003 DISA. 7. El programa MATLAB admite operaciones con par´ntesis. En lugar de pulsar teclas se a ha de escribir la operaci´n a realizar y pulsar Intro para que ´sta se lleve a cabo.3 Operaciones y funciones incorporadas La mejor manera de aprender a realizar operaciones con MATLAB es probar el programa con ejemplos simples y explorar su comportamiento. En los diagramas de flujo que vendr´n a en adelante se mantendr´ el uso del s´ a ımbolo ← para la asignaci´n. En este punto se van a mostrar ejemplos en varias categor´ de dificultad creciente. A menudo recibe el nombre de s´ ımbolo inductor pues induce al usuario a escribir. o 7.

Tambi´n es posible realizar operaciones menos elementales.68 ´ TEMA 7.3 el programa responde con un mensaje que indica que se ha creado la variable y que ha tomado el valor adecuado . como por ejemplo logaritmos en base 10 >> log10(100) ans = 2 >> o ra´ ıces cuadradas >> sqrt(36) ans = 6 Si uno desea dar nombres simb´licos a los n´meros que ha de manejar debe crear variables. o u Para ello basta con asignar un valor mediante una expresi´n del tipo: o nombre_de_la_variable = valor_que_se_asigna por ejemplo: x=22. PROGRAMACION EN MATLAB >> 2*(5+3) ans = 16 >> o o e N´tese que la multiplicaci´n se indica por medio del asterisco *.

3000 >> Es importante saber que estas expresiones hacen dos cosas: crear la variable (tomando cierta cantidad de memoria para almacenar su valor) y dar un valor inicial a la variable. 69 >> x=22. Arahal 2003 DISA. ESI. US.3000 >> Para saber el valor que contiene una variable basta con escribir su nombre y pulsar Intro.c M. Esta facilidad para crear variables conlleva algunos peligros que trataremos de minimizar mediante una programaci´n cuidadosa. o Las variables pueden usarse en otras expresiones como si se tratase de n´meros.R.3 x = 22. a En el ejemplo anterior se obtiene: >> who Your variables are: ans >> x .3000 >> Si uno desea conocer cu´ntas variables tiene en un momento dado puede usar la orden who. >> x x = 22. por ejemplo: u >> x+10 ans = 32.

70 ´ TEMA 7.3 ans = . ´ Adem´s de las operaciones aritm´ticas de sobra conocidas existen operaciones l´gicas. La respuesta obtenida o es cero. Considere el ejemplo siguiente consistente en una o expresi´n de comprobaci´n de igualdad: o o >> x==7 ans = 0 >> La expresi´n x == 7 equivale a preguntar ¿Es el valor de x igual a 7?. o ”menor o igual que” <=. >> x==22. mientras que el valor l´gico falso es e o representado por ”0”.3 produce un valor 1 al ser evaluada. Otras operaciones l´gicas son ”mayor que” >. ”mayor o igual que” >= . >> x<10 ans = 0 >> x>=22.3 ans = 1 >> De estos ejemplos se desprende que las comprobaciones que el valor l´gico verdadero es o representado en MATLAB mediante el valor num´rico ”1”. ”distinto a” ∼=. Puede comprobar que su valor coincide con el de la ultima respuesta dada por MATLAB. lo cual indica que x no es igual a 7. PROGRAMACION EN MATLAB Observe que ans (la respuesta) es una variable. De forma equivalente la sentencia x == 22. como a e o por ejemplo la comprobaci´n de igualdad. A modo de ejemplo considere las expresiones siguientes y las respuestas proporcionadas por MATLAB. ”menor que” <.

>> help elfun Las operaciones que dan como resultado un valor l´gico se pueden combinar utilizando la o suma l´gica (operaci´n ”o”). Las operaciones que se han comentado se indican en la tabla siguiente de forma m´s resumida. para saber si x < 100 y al mismo tiempo x > 5. el producto l´gico (operaci´n ”y”) y la negaci´n (operaci´n ”no”).R. ESI. Arahal 2003 DISA. Eso quiere decir que es cierto que ”x es menor que 100 y mayor que 5”. es decir. 71 1 >> x ~= 8 ans = 1 >> En la tabla siguiente se muestran las operaciones aritm´ticas y l´gicas que MATLAB puede e o realizar.c M. o o o o o o Por ejemplo. a . para comprobar si 5 < x < 100 se usar´ la expresi´n x<100 & x > 5 a o >> x<100 & x>5 ans = 1 >> Como era de esperar el resultado es 1. US.

8415 7. Se comentar´ m´s adelante como usar la funci´n help.3.2 Funciones incorporadas De todas las ´rdenes de MATLAB ninguna debiera ser m´s util para el usuario aprendiz que la o a ´ funci´n de ayuda.1 (que est´ en ingl´s como puede verse por lo que habr´ que acostumbrarse). PROGRAMACION EN MATLAB Operaci´n o suma aritm´tica e resta aritm´tica o cambio de signo e multiplicaci´n aritm´tica o e divisi´n o relaci´n "menor que" o relaci´n "mayor que" o relaci´n "menor o igual que" o relaci´n "mayor o igual que" o relaci´n "igual que" o relaci´n "distinto que" o producto l´gico (operaci´n "y") o o suma l´gica (operaci´n "o") o o negaci´n (operaci´n "no") o o No es preciso aprender ahora mismo de memoria esta tabla.72 Expresi´n en MATLAB o + * / < > <= >= == = & | ∼ ´ TEMA 7.3. a >> a = sin(1) a = 0. El uso frecuente deber´ bastar ıa para aprenderla por lo que se recomienda que se practiquen los ejemplos indicados y se exploren las posibilidades que ofrecen. por ejemplo a = sin(1) asigna a la variable a el valor del seno de un radi´n. o sea sen(1).3 Vectores Los vectores se introducen en MATLAB como una colecci´n de valores. Por ejemplo un vector o fila es . a e a La forma de uso de estas funciones es simple e intuitiva. 7. >> help elfun El resultado de esta orden es una larga lista de funciones que se muestra en la tabla 7. de momento se va a o a a o usar ahora para conocer la lista de funciones ”elementales”.

Inverse hyperbolic cosecant. sin sinh asin asinh cos cosh acos acosh tan tanh atan atan2 atanh sec sech asec asech csc csch acsc acsch cot coth acot acoth Exponential.c M. Inverse sine. Inverse secant. Hyperbolic cosecant. exp log log10 log2 Sine. Tabla 7. Natural logarithm. Secant. Inverse cotangent. Round towards minus infinity. Square root. ESI. Round towards nearest integer. 73 Trigonometric. Absolute value. Complex real part. Arahal 2003 DISA. Hyperbolic cotangent. Hyperbolic cosine. US. Natural logarithm of real number. Four quadrant inverse tangent. Unwrap phase angle. Cosine. Construct complex data from real and imaginary parts. Modulus (signed remainder after division). Common (base 10) logarithm. Remainder after division. Hyperbolic secant. Inverse hyperbolic cotangent. Square root of number greater than or equal to zero. fix floor ceil round mod rem sign Round towards zero. Power that will error out on complex result. Hyperbolic tangent. Complex conjugate. Inverse hyperbolic cosine. Hyperbolic sine. Exponential. Cosecant. Next higher power of 2. Complex imaginary part. Round towards plus infinity.1: Funciones elementales de MATLAB . Inverse hyperbolic secant. Inverse tangent. True for real array. Tangent. Signum. Phase angle. abs angle complex Base 2 power and scale floating point number.R. Sort numbers into complex conjugate pairs. Inverse cosine. Base 2 logarithm and dissect floating point number. Inverse hyperbolic sine. Cotangent. pow2 realpow reallog realsqrt sqrt nextpow2 Complex. Inverse cosecant. Inverse hyperbolic tangent. conj imag real unwrap isreal cplxpair Rounding and remainder.

o o a Tambi´n se pueden construir vectores columna. PROGRAMACION EN MATLAB Para acceder a las componentes individuales del vector se usan par´ntesis indicando el ´ e ındice de la componente como se muestra en las dos sentencias del ejemplo siguiente. 1. 0. >> v(3) ans = -3 >> v(1)*8 ans = -8 Es decir que en MATLAB la expresi´n v(k) equivale a la notaci´n matem´tica v k .74 >> v=[ -1 2 -3 4 -5] v = -1 >> 2 -3 4 -5 ´ TEMA 7. Para ello se separan las filas mediante punto e y coma como se muestra a continuaci´n o >> u=[0. a >> v*u ans = 6 . 0] u = 0 1 0 1 0 En el ejemplo siguiente se ilustra que el producto escalar de dos vectores se obtiene f´cilmente. 1.

75 Los vectores son tratados por MATLAB como matrices con la peculiaridad de tener una sola fila o columna. Comenzando con la matriz A escribimos la sentencia A = [ 0 2 4. Se procede del mismo modo con la matriz B. obteni´ndose: e >> B = [ 3 3 3.c M. Arahal 2003 DISA.4 Matrices En MATLAB una matriz es una variable como otra cualquiera y no precisa mecanismos complicados para su creaci´n y uso.R. Por este motivo no merece la pena dedicar m´s espacio a los vectores y debemos a pasar ya a las matrices. los elementos de una misma fila se separan por espacios (o comas) y una fila se separa de la siguiente mediante el punto y coma. 7.B = 3 3 3 −1 −1 −1 El primer paso es introducir las matrices en variables. US. A modo de ilustraci´n considere que pretendemos sumar las dos o o matrices: A= 0 2 4 1 1 1 .3. -1 -1 -1] B = 3 -1 3 -1 3 -1 . 1 1 1] A = 0 1 >> 2 1 4 1 Como puede verse. 1 1 1] en la pantalla se obtiene: >> A = [ 0 2 4. ESI.

es decir. o Un ejemplo de cadena de caracteres es: clase de 3 a 5 atrasada!!. n´meros y signos como el espacio o la admiraci´n. se escribe A+B >> A+B ans = 3 0 5 0 7 0 Con la misma facilidad se calcula el producto de matrices o funciones de matrices.3. Este conjunto de caracteres incluye letras. Es posible introducir u o la cadena en una variable de MATLAB: >> texto = ’clase de 3 a 5 atrasada!!’ texto = clase de 3 a 5 atrasada!! Obs´rvese que el conjunto de s´ e ımbolos ha de ir encerrado por dos ap´strofes.5 Cadenas de caracteres Las cadenas de caracteres son conjuntos de s´ ımbolos tomados de la tabla ASCII.76 ´ TEMA 7. Son las o ap´strofes las que diferencian una sentencia como a=barco de a=’barco’. Vea en el ejemplo el o efecto de cada una de ellas. PROGRAMACION EN MATLAB Para realizar la suma se procede igual que si A y B fuesen variables escalares. Por ejemplo. Tienen gran utilidad para trabajar en problemas donde se precisa manipulaci´n de texto. 7. . para calcular el valor absoluto de los elementos de la matriz B se escribe: >> abs(B) ans = 3 1 3 1 3 1 Como puede observarse el resultado es una nueva matriz cuyos elementos son el valor absoluto de los elementos de la matriz B.

3 4 6] . Para ello se dispone de ciertas funciones que se van a explicar a continuaci´n. 77 >> a=barco ??? Undefined function or variable ’barco’. >> a=’barco’ a = barco En el primer caso MATLAB muestra en la pantalla un mensaje de error pues ha interpretado a=barco como una asignaci´n en la cual el t´rmino de la derecha (la variable barco) no existe. cu´nto espacio a ocupan. Se ha comentado anteriormente que la orden who proporciona una lista de variables.3.6 Funciones para el manejo de datos Puesto que MATLAB est´ pensado para ser usado de forma interactiva es frecuente que el a usuario necesite saber qu´ variables ha creado.R. Arahal 2003 DISA.c M. La orden es whos como puede verse en el ejemplo. Vea como ejemplo la secuencia de ´rdenes y respuestas siguiente: o >> x=8 x = 8 >> y=x+2 y = 10 >> who Your variables are: x y Existe una modalidad que proporciona los tama˜os de las variables y que es de utilidad n cuando se trabaja con matrices. o e En cambio. >> A=[1 2 3. ’barco’ es un valor definido que se asigna a la variable a o por lo que la expresi´n es tan correcta como hubiera sido x = 8. en la segunda expresi´n. o Informes . US. o No obstante proporcionan interesantes posibilidades para desarrollar algoritmos y practicar el arte de programar. etc. o Las cadenas de caracteres no sirven para c´lculos matem´ticos propiamente dichos y fueron a a introducidas en MATLAB para facilitar la programaci´n. el depurado y el uso de programas. cu´les son sus caracter´ e a ısticas. ESI. 7.

Crea el archivo de nombre nombrearchivo.mat en la carpeta actual. La o a orden m´s simple para guardar es save que puede usarse de varias maneras. En la tabla a siguiente se presenta un resumen. Dicho archivo contiene unicamente las ´ variables x.78 A = 1 3 >> whos Name A x y 2 4 3 6 ´ TEMA 7. Orden save Operaci´n realizada o Crea el archivo de nombre matlab. Dicho archivo contiene todas las variables que existen en ese momento en el entorno MATLAB.mat en la carpeta actual.mat en la carpeta actual. 4 -5 save nombrearchivo save nombrearchivo x y z . PROGRAMACION EN MATLAB Size 2x3 1x1 1x1 Bytes 48 8 8 Class double array double array double array Grand total is 8 elements using 64 bytes n ´ Dimensiones A veces es necesario conocer el tama˜o o dimensiones de una unica variable. y y z. a o >> size(A) ans = 2 3 En el caso de manejar vectores resulta m´s conveniente la funci´n length que proporciona a o el n´mero de elementos. u >> v=[ -1 2 -3 4 -5] v = -1 2 -3 >> length(v) ans = 5 Almacenamiento MATLAB permite almacenar en el disco variables. De este modo es posible parar una sesi´n de trabajo y continuar en otro momento sin volver a repetir c´lculos. Para estos casos se puede usar la funci´n size. Dicho archivo contiene todas las variables que existen en ese momento en el entorno MATLAB. Crea el archivo de nombre nombrearchivo. por ejemplo para saber el n´mero de filas de una matriz y disponer de este n´mero para u u posteriores c´lculos.

En la tabla siguiente se muestran tres posibilidades. Es costumbre dar a los archivos que contienen ´rdenes de MATLAB una extensi´n predeo o terminada que los diferencia de otros archivos de texto. La idea es simple: si el usuario va a repetir a menudo un conjunto de ´rdenes puede escribirlas o en un archivo de texto.mat de la carpeta actual. o o Para ello es preciso que MATLAB las lea del disco mediante la orden load. puesto que el archivo de texto se puede guardar en disco no es preciso volver a escribir las ´rdenes nunca m´s. Posteriormente le indica a MATLAB que lea dicho archivo ejecutando las ´rdenes una por una. Igual que el anterior pero leyendo unicamente las vari´ ables x.m. Esta extensi´n es . Igual que en el caso anterior.4 Codificaci´n de nuevos programas o Una de las caracter´ ısticas del entorno MATLAB es que permite que las ´rdenes puedan ser o tomadas de un archivo en lugar de ser introducidas por el teclado. Esto o a supone un gran ahorro de tiempo en muchos casos. MATLAB incorpora su propio programa para redacci´n llamado M file o Editor.c M. el editor de MS-DOS. Arahal 2003 DISA. 79 Recuperaci´n Las variables almacenadas en el disco pueden ser usadas en una sesi´n diferente.R. o a Los archivos que contienen ´rdenes de MATLAB ser´n llamados desde ahora archivos M. y y z. Para escribir el archivo de texto se puede usar cualquier programa como la libreta de notas. 7. Por ejemplo si un o o archivo contiene las ´rdenes para dibujar un vector se le puede llamar dibuvector. ESI. o sea redactor de archivos M. Ahora bien. o A modo de ejemplo considere las siguientes ´rdenes de MATLAB que convierten una cantidad en pesetas a euros. Si alguna de las variables del disco tiene nombre coincidente con otra que previamente existe en MATLAB se producir´ la dea o strucci´n de la variable existente para dejar su sitio a la variable del disco. save nombrearchivo save nombrearchivo x y z ´ Resulta util la orden what pues muestra los archivos que existen en la carpeta actual y que contienen variables o programas utilizables por MATLAB.m. pesetas=input(’Escriba la cantidad en pesetas : ’) euros = pesetas/166. etc.386 . El efecto es el mismo que si el usuario hubiese escrito las ´rdenes en o o el entorno de MATLAB. US. Cada vez que el usuario desee ejecutar o a de nuevo el conjunto de ´rdenes podr´ indicar nuevamente a MATLAB que lea el archivo. Orden load Operaci´n realizada o Lee todas las variables del archivo de nombre matlab. pero leyendo del archivo nombrearchivo de la carpeta actual.

sino que los trozos deben tener cada uno cometidos claros.0101 7.m (el nombre viene de convertidor de pesetas a euros). o • Dividir el c´digo en trozos.5 Funciones para trazado de gr´ficas a Uno de los motivos por el que MATLAB ha sido un entorno favorecido por el p´blico es la u a facilidad con la que se pueden realizar gr´ficos de muy distintos tipos. Los siguientes consejos ayudar´n sin duda al usuario de MATLAB a conseguir programas a legibles. Normalmente los diagramas de flujo desarrollados con anterioridad a la codificaci´n indican c´mo realizar esta divisi´n. a • Incluir comentarios en el c´digo para ayudar a seguir la secuencia del programa. o o o A pesar de haber dado estos consejos hemos de ser conscientes de que la buena programaci´n o s´lo se logra mediante un proceso de aprendizaje por prueba y error. Se obtiene el resultado que se muestra a continuaci´n.1 Legibilidad Frecuentemente el usuario de MATLAB escribe archivo M que le resultan de utilidad. En este punto se va a . de forma tal que sea posible abarcar cada trozo de un vistazo o o en una ventana mediana. • Elegir nombres de variables indicativos de lo que representan. o 7. En tal e caso es necesario mirar el contenido del archivo y repasar su contenido. Es en este punto cuando se agradece (o se echa en falta) una buena pr´ctica de programaci´n que haga que el c´digo sea a o o legible. PROGRAMACION EN MATLAB Supongamos que se introducen este texto dentro de un archivo al cual se le da el nombre de cpe. La divisi´n no ha de ser arbitraria. La forma de indicar a MATLAB que utilice el archivo es simple: se escribe su nombre en el entorno MATLAB.4. Pasado un tiempo sin usar un archivo es posible que uno olvide qu´ tarea realiza exactamente. o >> cpe Escriba la cantidad en pesetas : 1000 pesetas = 1000 euros = 6. • No usar una misma variable para representar m´s que una cosa.80 ´ TEMA 7.

2 18 17 16.c M. supongamos que el vector: >> v=[ 15.1: Gr´fica obtenida con la orden plot a Continuando con el ejemplo supongamos ahora que se conoce la hora a la que se realiz´ cada o medida y que deseamos que aparezca en el eje horizontal.5 4 4.0000 17. la orden que necesitamos es simplemente: >> t= [ 4 8 12 16 20 24 ] t = 4 8 12 16 >> plot(t. 18 17.5 6 Figura 7. Esta funci´n puede ser utilizada de muchas maneras.5 15 ] v = 15. 81 indicar la forma de realizar algunas representaciones gr´ficas que pueden ser muy utiles para a ´ ilustrar posteriormente otros ejercicios.6000 16. Esto se consigue de manera simple con las ´rdenes siguientes: 20 24 .5 16 15.0000 >> plot(v) se observa que aparece una nueva ventana conteniendo una gr´fica con el aspecto que muestra a la figura 7.5 16. a Puede ser interesante ahora a˜adir unos letreros indicativos de qu´ es lo que se est´ repren e a o sentando. Sea t = [4812162024].2000 18. Si se escribe lo siguiente en el entorno MATLAB o >> v=[ 15.2 18 17 16.5 15 ] est´ formado por las temperaturas (en grados Celsius) medidas cada cuatro horas en una estaci´n a o meteorol´gica. La orden de dibujo m´s simple es plot.0000 17 16.5 3 3.1. Puede observarse que en el eje vertical MATLAB ha representado los valores v 1 . mientras que en el horizontal aparece el sub´ ındice correspondiente. Por ejemplo. ESI.6 16. Se observa que el eje horizontal est´ ahora marcado con las componentes del vector t.5000 15.R. etc.5 2 2.5 15 14. US.5 14 1 1.6 16. Arahal 2003 DISA. a o En primer lugar puede usarse para representar las componentes de un vector.5 5 5. de forma que ahora se obtiene lo que muestra la figura 7.v) que produce un cambio en la ventana. v2 .2.

7. En MATLAB es posible realizar la bifurcaci´n b´sica mediante la o a sentencia if-else.5 14 4 6 8 10 12 14 16 18 20 22 24 Figura 7. La condici´n es una expresi´n que da como resultado un valor l´gico o o o o (por ejemplo x > 2) que puede ser verdadero o falso. En caso de que la evaluaci´n de la expresi´n o o arroje un resultado verdadero se procede a ejecutar las sentencias del bloque S.82 18 ´ TEMA 7.5 temperatura 16 15.3: Gr´fica con t´ a ıtulo y letreros en los ejes.5 14 4 6 8 10 12 14 hora 16 18 20 22 24 Figura 7. La forma de uso se muestra en el c´digo que aparece a continuaci´n.5 15 14. o o if condici´n o sentencias bloque S else sentencias bloque N end En esta construcci´n.3.5 16 15.6.5 17 16.2: Gr´fica obtenida con la orden plot usando una variable para el eje horizontal y otra a para el vertical.6 7.5 15 14. Datos estación meteorológica 18 17. En caso contrario . >> xlabel(’hora’) >> ylabel(’temperatura’) >> title(’Datos estaci´n meteorol´gica’) o o El resultado final se muestra en la figura 7. PROGRAMACION EN MATLAB 17.5 17 16.1 Sentencias de control La bifurcaci´n o Ya se ha visto en los diagramas de flujo realizados que las bifurcaciones son imprescindibles para llevar a cabo ciertas tareas.

Dentro de los o e bloques S y N se puede colocar cualquier conjunto de sentencias. b) Diagrama de o e flujo correspondiente al ejemplo de bifurcaci´n o Como ejemplo sencillo considere el siguiente trozo de c´digo: o x=input(’Introduzca valor de x’) if x < 0. US. Un ejemplo igualmente simple es: . De la explicaci´n anterior debe resultar evidente que al usar la bifurcaci´n se ejecutan las o o sentencias S o las N pero no ambas. end disp(El valor absoluto es) va Este programa ser´ de utilidad en caso de que no dispusi´semos en MATLAB de otros ıa e medios para calcular el valor absoluto.4 a) corresponde a una bifurcaci´n gen´rica.4: a) Diagrama de flujo correspondiente a una bifurcaci´n gen´rica. incluyendo nuevas bifurcaciones como se ver´ m´s adelante. va = -x.R. else va=x. a a inicio Leer x no condición sí no ¿ x < 0 ? sí Bloque N Bloque S va x va -x Escribir va fin x va Variable real Variable real Dato Resultado. Valor absoluto de x b) a) Figura 7. Al terminar uno u otro bloque se pasa a las sentencias posteriores a end. Arahal 2003 DISA. El diagrama de flujo de la figura 7.c M. ESI. 83 se ejecutan las sentencias del bloque N.

Examinando el diagrama de flujo de la figura 7.5 a) se muestra el diagrama de flujo correspondiente al bucle. . end suma a e Es f´cil adivinar qu´ ocurre al ejecutar este programa. en caso o contrario se termina el bucle. suma = suma + x.2 El bucle ”mientras” El bucle ”hacer mientras que la condici´n sea cierta” se construye en MATLAB mediante un o conjunto de l´ ıneas de c´digo que tienen la forma siguiente: o while condici´n o sentencias del cuerpo del bucle end En la figura 7. La condici´n o es una expresi´n que da como resultado un valor l´gico. o a 7. sobre todo si se dibuja el diagrama e de flujo equivalente (v´ase figura 7. x = x+2. b y c de una ecuaci´n de a o 2 + bx + c = 0. PROGRAMACION EN MATLAB a=input(’Coeficiente a?’) %coeficientes de a x^2 + b x + c = 0 b=input(’Coeficiente b?’) c=input(’Coeficiente c?’) if b*b-4*a*c < 0.5 a) es f´cil deducir que mientras la condici´n a o se cumpla se repetir´ el bucle una y otra vez.5 b). suma=0. Es decir. while x<10. si al evaluar la expresi´n l´gica de la a o o condici´n se obtiene un resultado verdadero se pasa a ejecutar el cuerpo del bucle. El cuerpo del bucle o o son sentencias cualesquiera. disp(’Las ra´ces son complejas’) ı else disp(’Las ra´ces son reales’) ı end Es f´cil ver que este programa toma como datos los coeficientes a.84 ´ TEMA 7. o Como ejemplo sencillo considere el siguiente trozo de c´digo: x=0. por ejemplo x > 2.6. los analiza y escribe en la pantalla si las ra´ ıces (soluciones de segundo grado ax la ecuaci´n) ser´n reales o complejas (con parte imaginaria).

De este modo el ejemplo en cuesti´n resulta m´s o a f´cil de interpretar. % variable contador para el bucle % variable suma parcial % condici´n bucle o % % actualizaci´n o % escritura resultado while x<10. a x=0. suma = suma + x. Estas tareas se realizan f´cilmente en a MATLAB con el uso de la sentencia for. inicio Iniciar x a 0 y suma a 0 85 no ¿ condición ? sí no ¿ x < 10 ? sí suma suma + x x + 2 cuerpo x Escribir suma fin x suma a) Variable entera Variable entera Contador de 0 a 10 Suma de los valores de x b) Figura 7. Arahal 2003 DISA.R. Para ello se u puede disponer un bucle con un contador. suma=0. ESI. x = x+2. end suma 7. b) Diagrama de flujo correspondiente al ejemplo de uso del bucle o ”mientras” Para mejorar la legibilidad de los programas es muy aconsejable incluir comentarios y ordenar la apariencia en la pantalla de las sentencias.5: a) Diagrama de flujo correspondiente a un bucle gen´rico del tipo ”repetir mientras e la condici´n sea cierta”. Los bucles que utilizan for tienen en MATLAB el aspecto siguiente: for contador = valorinicial:valorfinal.c M.3 La sentencia for En muchas situaciones es preciso repetir una tarea un n´mero conocido de veces. En cada pasada o repetici´n el contador se incrementa o y se comprueba que no se ha sobrepasado el l´ ımite. . US.6.

86 sentencias del cuerpo del bucle end ´ TEMA 7. k end En la figura 7. b) e Diagrama de flujo correspondiente al ejemplo de uso del bucle ”para” A fin de aclarar las ideas se muestra el siguiente ejemplo de bucle usando la sentencia for. Este ejemplo revela porqu´ se le llama bucle ”para”. simplemente escribe en la pantalla los valores sucesivos a que va adquiriendo la variable k. Es f´cil a ver que el bucle no realiza c´lculo alguno. En ´l e se observa que contador es una variable que sirve para controlar el bucle.. PROGRAMACION EN MATLAB En la figura 7.6 a) se muestra el diagrama de flujo correspondiente al bucle anterior. for k = 1:6. inicio Asignar al contador el valor inicial Iniciar k a 1 no no ¿ contador dentro de límites? sí cuerpo Incrementar el contador fin k k + 1 ¿ k 6 ? sí Escribir k k Variable entera Contador de 1 a 6 a) b) Figura 7. que es lo que literalmente dice la sentencia for k=1:6. La variable se incrementa al final de cada pase o repetici´n en una unidad.6: a) Diagrama de flujo correspondiente a un bucle gen´rico del tipo ”para”. . Esta variable toma inicialmente el valor especificado por valorinicial.6 b) se presenta el diagrama de flujo correspondiente a este ejemplo. Se observa que para cada valor de k e entre 1 y 6 se escribe k en la pantalla. La condici´n de salida del bucle consiste en que el contador o o no sobrepase el l´ ımite fijado por el valor valorfinal.

Calcular a continuaci´n un vector y cuyas 100 componentes vienen dadas por o yk = sen(xk ) . u • Leer del teclado un par de abcisas x1 y x2 . ESI. Por ejemplo para realizar una cuenta atr´s (mediante decremento del contador) o para saltar de dos en dos. • Descifrar un mensaje codificado seg´n la regla anterior. k end 7.7 Ejemplos de programaci´n I o • Leer las 5 componentes de un vector y escribirlo luego al derecho y al rev´s.c M. k %escritura en pantalla end El incremento de la variable contador puede ser distinto de uno.R. etc. Representar gr´ficamente y frente a x. US. Arahal 2003 DISA. El mensaje cifrado consiste en la lista de n´meros obtenidos separados u por espacios. e • Crear un vector x de dimensi´n 100. sentencias del cuerpo del bucle end A modo de ejemplo considere el programa: for k=1:2:20.01 ∗ k. 87 Los valores iniciales y finales no necesariamente son constantes. La forma a de indicar un incremento en la sentencia for es muy simple: for contador = valorinicial:incremento:valorfinal. . a xk • Leer una cadena de caracteres. Cifrarla para que pueda ser enviada de forma secreta. La regla de cifrado es: sumar al c´digo de cada car´cter la posici´n que ocupa dentro del o a o texto al cuadrado. pueden ser variables como en el programa siguiente. % valores inicial y final para bucle v_inicial = input(’Introduce valor inicial’) v_final = input(’Introduce valor final’) % bucle for k = v_inicial:v_final. cuyas componentes son los valores x k = −1.001 + o 0. Representar gr´ficamente la funci´n y = a o x − sen(x) utilizando cien puntos equiespaciados entre x1 y x2 .

88

´ TEMA 7. PROGRAMACION EN MATLAB • Utilizar el programa anterior para calcular gr´ficamente la soluci´n de la ecuaci´n sen(x) = a o o x (calculando el paso por cero de la funci´n y = x − sen(x) mediante llamadas sucesivas al o programa con valores de x1 y x2 que est´n a izquierda y derecha de dicho pase por cero). e

Tema 8

Programaci´n de funciones en o MATLAB
Las funciones son fundamentales para realizar programas de cierta envergadura. Por un lado permiten desarrollar un c´digo modular lo cual mejora la legibilidad, pero adem´s descargan el o a trabajo del programador pues cada funci´n constituye un nuevo bloque constructivo en el que o apoyarse.

8.1

Concepto de funci´n o

Una funci´n es un conjunto de ´rdenes que lleva a cabo una tarea precisa. La funci´n es utilizada o o o o dentro de un programa como si de una orden se tratara. La funci´n puede calcular resultados utilizando los datos que se le suministran expl´ ıcitamente. Un ejemplo de funci´n es sin. Observemos que cumple las condiciones que hemos impuesto: o

• Es un conjunto de ´rdenes aunque en las modernas versiones de MATLAB no podamos o verlo. • Realiza una tarea concreta consistente en calcular el seno del n´mero indicado. u • Calcula resultados a partir de datos suministrados. Las funciones pueden interpretarse como m´dulos con los cuales es posible construir prograo o a mas. Son similares a los m´dulos que se han utilizado en los diagramas de flujo. Adem´s poseen una caracter´ ıstica que las hace muy utiles: las funciones pueden usarse una y otra vez con datos ´ distintos. Desde este punto de vista la funci´n es una m´quina capaz de producir resultados a o a partir de datos que se le suministran. Este aspecto es ilustrado por el diagrama de la figura 8.1. 89

90

´ TEMA 8. PROGRAMACION DE FUNCIONES EN MATLAB

Argumentos

Función

Resultados
Figura 8.1:

8.2

Datos y resultados

En matem´ticas una funci´n f calcula un valor (y variable dependiente) a partir de otro dado a o (x variable independiente). Tanto x como y pueden ser escalares, vectores o matrices. Con las funciones de MATLAB ocurre otro tanto. El papel de la variable independiente es representado por los datos que se le suministran a la funci´n, llamados normalmente argumento. Se o dice habitualmente que la funci´n ”devuelve” un resultado que es el equivalente a la variable o dependiente. Para aclarar las ideas consideremos la sentencia de MATLAB y = sin(x). Hemos de recordar que la ejecuci´n de esta sentencia provoca lo siguiente: o

1. El c´lculo mediante la funci´n sin del seno del dato proporcionado, que en este caso es el a o valor de x. 2. La asignaci´n a la variable y del valor calculado por la funci´n sin (que es, l´gicamente o o o sen(x)).

Es muy conveniente no perder de vista estos pasos en las explicaciones que se dar´n postea riormente. a Adem´s de las funciones existentes en MATLAB hay mecanismos para que el usuario escriba funciones nuevas. Para ello s´lo tiene que preparar en un archivo de texto las ´rdenes de MATo o LAB que realizan un determinado c´lculo y posteriormente a˜adir una cabecera que permita a a n esas ´rdenes trabajar como debe hacerlo una funci´n. o o o Se va a ilustrar el procedimiento con un ejemplo. Supongamos que se necesita una funci´n que calcule el factorial de un n´mero dado n. Escribimos en un archivo las ´rdenes: u o

n o o function [factorial] = mi_fact(n) producto=1. Se ha de guardar este texto en un archivo M cuyo nombre ha de ser mi fact. Este nombre se ha escogido para recalcar que es una funci´n m´ y que calcula el factorial. end factorial = producto. producto = producto*multiplicador. ESI. for multiplicador=2:n. Por otra parte.c M. y con esto tenemos resuelto parte del problema. este trozo de c´digo no sirve si se pretende calcular el factorial de x o de q. si queremos utilizar este trozo de c´digo debemos recordar siempre que hemos de usar la variable n para el dato. N´tese que esta invocaci´n. Si esto no se entiende del todo considere este otro ejemplo: . for multiplicador=2:n. end factorial = producto. el resultado que se calcula y que almacena en la variable factorial aparece tras la llamada en el entorno de MATLAB. US. o ıa Para probar mediante ejemplos que este archivo M es una funci´n escribimos en la ventana o de ´rdenes de MATLAB lo siguiente: o >> mi_fact(5) ans = 120 Cada vez que se utiliza una funci´n se dice que se hace ”una llamada” a la misma. A este fen´meno se le suele llamar ”pase e o de argumento”. producto = producto*multiplicador. 91 producto=1. Ahora bien. de o modo que las ´rdenes que se hab´ escrito y que calculan el factorial de n est´n en realidad o ıan a calculando el factorial del dato escrito entre par´ntesis.R. Arahal 2003 DISA. Dicho de otro o modo. o que se o la ”invoca”. Lo que se o necesita es a˜adir una cabecera para que el trozo de c´digo se convierta en una funci´n. uso o llamada produce un efecto interesante: el valor o o que se le proporciona (el valor 5 en el ejemplo) es copiado en la variable n de la funci´n.

Es o a a obligatorio que en alg´n punto se le de valor a la variable resultado pues de otro modo la funci´n u o no sabr´ qu´ devolver al ser invocada y generar´ un error. a e a 8. • el nombre de los argumentos (en el ejemplo anterior hay un unico argumento de nombre ´ n). o • el nombre de la variable resultado (en el ejemplo anterior es factorial). En primer lugar debe aparecer una l´ ınea en la que se indica: • el nombre de la funci´n (en el ejemplo anterior es mi fact). o o La sintaxis para la escritura de funciones es simple. o o Con esta explicaci´n ya tiene sentido una frase habitual entre programadores como ”le pas´ o e a la funci´n el valor 4 y me devolvi´ en y el factorial de 4”. A continuaci´n se escribir´n sentencias de MATLAB incluyendo todo tipo de c´lculos. PROGRAMACION DE FUNCIONES EN MATLAB Ahora debe ser obvio que el valor de factorial ha sido asignado a la variable y. A este fen´meno se le da el nombre de ”devoluci´n de resultados”.92 >> y=0 y = 0 >> y=mi_fact(4) y = 24 >> y y = 24 ´ TEMA 8.3 Variables locales y globales Continuando con el ejemplo anterior es instructivo utilizar la orden who para ver qu´ variables e se est´n utilizando: a >> who Your variables are: y .

% ordenada en el origen y = a*x + b. o a = 8. %valor de la recta en x Archivo m recta. US. porque. % pendiente b = 2. Se va a mostrar mediante ejemplos las diferencias de uso de ambos archivos.m Este primer archivo M contiene una funci´n. a o a ¿y factorial?. Arahal 2003 DISA.m Este otro archivo no es una funci´n. o Este hecho se produce con las funciones.c M. La respuesta es que estas variables no son visibles desde el entorno de MATLAB pues est´n a ocultas dentro de la funci´n mi fact. %valor de la recta en x Archivo f recta. o function [y] = f_recta(x) a = 8. El siguiente ejemplo puede contribuir a aclarar esta afirmaci´n. La unica variable que parece existir (seg´n indica ´ u el resultado de who) es y. % pendiente b = 2. Esta caracter´ o ıstica es muy util pues de este modo cada ´ funci´n puede usar variables con el nombre que quiera sin que haya que preocuparse porque esta o variable ya exista previamente en otra funci´n. ¿d´nde est´ la variable producto?. ¿y n?.R. ESI. >> a=-2 a = -2 . pero no con cualquier archivo M. Considere los dos archivos M que se indican o a continuaci´n. es simplemente un conjunto de ´rdenes de MATLAB o o que se han escrito y guardado en disco. 93 el resultado obtenido quiz´ debiera sorprender. % ordenada en el origen y = a*x + b. ¿y multiplicador?. Es f´cil ver que la funci´n calcula la ordenada o a o sobre la recta y = 8x + 2 correspondiente a un punto de abcisa x que es el dato proporcionado a la funci´n.

1 Clasificaci´n de las variables o Las variables pueden clasificarse de varias maneras. Fuera de o o la misma no son visibles y por tanto no son utilizables. . atendiendo a la durabilidad de la variables se pueden hacer dos grupos. Locales Son variables que s´lo pueden ser vistas y utilizadas dentro de alguna funci´n.3.94 >> f_recta(1) ans = 10 >> a a = -2 ´ TEMA 8. PROGRAMACION DE FUNCIONES EN MATLAB Ejemplo de uso de la funci´n f recta en el que se observa que la variable a permanece inalterada. o >> a=-2 a = -2 >> x=1 x = 1 >> m_recta >> y y = 10 >> a a = 8 Ejemplo de uso del archivo M m recta en el que se observa que la variable a cambia de valor. 8. Por otra parte. Atendiendo al campo donde pueden ser vistas y utilizadas se distinguen dos grupos: Globales Estas variables pueden ser vistas y utilizadas desde cualquier fichero M y desde el entorno de MATLAB.

Las variables del entorno de MATLAB son locales. function [y] = f1(x) a = 8. Error in ==> f1.m On line 3 ==> y = a*x + b. o Ejemplo 1.m. Las caracter´ ısticas de disponibilidad (global o local) y durabilidad (persistente o ef´ ımera) pueden combinarse dando lugar a varias situaciones. Las o o variables locales suelen ser ef´ ımeras. US. Las variables globales son de este tipo. Arahal 2003 DISA.R. Para poner de manifiesto esta afirmaci´n considere la funci´n f1 cuyas ´rdenes se guardan o o o en el archivo f1. 95 Persistentes Estas variables existen desde el momento en que son creadas hasta que se las destruye expl´ ıcitamente mediante la orden clear. %valor de la recta en x . Existe un procedimiento o o para convertir las variables locales en persistentes mediante la orden persistent. Tan s´lo se ven afectadas por ´rdenes de asignaci´n.c M. % pendiente y = a*x + b. a Estas variables no pierden su valor por culpa de llamadas a funciones u otros acontecimientos. %valor de la recta en x Archivo f1. El mejor modo de poner de manifiesto todo esto es utilizando ejemplos como los que se proporcionan a continuaci´n. o o o Ef´ ımeras Son variables que son creadas por una funci´n y desaparecen al terminar la funci´n. por lo que intentaremos o hacerlo desde el entorno. ESI.m Puede verse que el valor de b no es asignado dentro de la funci´n. Para ello creamos la variable y le damos un valor: >> clear all >> b=4 b = 4 y a continuaci´n utilizamos la funci´n f1 o o >> f1(9) ??? Undefined function or variable ’b’. Debido a esto las variables que est´n dentro de una a funci´n no conservan su valor de una llamada a otra de la funci´n. Tambi´n e se las suele llamar variables est´ticas.

% pendiente b = 2. La explicaci´n es simple: la variable b pertenece al entorno de MATLAB. Para poner esto de manifiesto usamos la orden whos.96 ´ TEMA 8. Retomamos la funci´n f recta o function [y] = f_recta(x) a = 8. Las variables globales son accesibles desde cualquier funci´n.m Haremos una llamada a la funci´n y luego intentaremos averiguar desde el entorno de MATo LAB cu´nto vale la variable a que es la pendiente de la recta. Obtenemos un mensaje de error que era esperable pues a es una variable local de la funci´n o f recta y no es accesible fuera de esta funci´n. o Ejemplo 3. o En este ejemplo comenzamos por tanto escribiendo: >> global b que no produce respuesta alguna. o Para crear una variable global es preciso escribir global nombrevariable en las funciones que la vayan a usar. Ejemplo 2. . Las variables interiores de una funci´n son locales y no pueden ser accedidas o desde otras funciones o desde el entorno de MATLAB. No puede ser utilizada en el interior de funciones. a >> clear all >> ordenada2 = f_recta(2) ordenada2 = 18 >> a ??? Undefined function or variable ’a’. pero que crea la variable b aunque sin valor asignado. incluyendo la ventana de ´rdenes de MATLAB en caso necesario. No es una o o variable global. % ordenada en el origen y = a*x + b. %valor de la recta en x Archivo f recta. PROGRAMACION DE FUNCIONES EN MATLAB Aparece un mensaje de error que nos indica que la variable b no es conocida dentro de la funci´n f1.

con lo que queda probado que las variables globales pueden ser usadas dentro y fuera de funciones. o o e function [y] = f2(x) global b a = 8. ESI. % pendiente y = a*x + b. o e Creamos la funci´n f2 que es una modificaci´n de f1 (v´ase ejemplos anteriores).m Ahora intentamos asignar un valor a b y veamos si la funci´n f2 es capaz de utilizar dicho o valor. . %valor de la recta en x Archivo f2. El ´xito o fracaso de las funciones que uno escriba estar´ sin duda influenciado por el buen conocimiento de estas fases.R. US. o o o Conviene comprenderlas bien pues se trata de los pasos que MATLAB realiza cada vez que o e a se invoca a una funci´n.c M. Arahal 2003 DISA. 97 >> whos Name b Size 0x0 Bytes 0 Class double array (global) Grand total is 0 elements using 0 bytes La funci´n que vaya a utilizar la variable global ha de contener tambi´n la orden global b. >> b=-5 b = -5 >> f2(1) ans = 3 La respuesta obtenida es la deseada. 8. A continuaci´n se indican las fases de la ejecuci´n de una instrucci´n.4 Fases de la ejecuci´n de una instrucci´n o o De los ejemplos anteriores es posible sacar conclusiones generales acerca de c´mo utiliza MATo LAB las funciones.

Env´ de valores de las variables resultados a las variables de la sentencia llamante. Creaci´n de variables locales para argumentos formales. 3. ıo Resulta un ejercicio interesante comprobar en los ejemplos anteriores que dichas fases tienen lugar y que son necesarias para el desempe˜o de las tareas encomendadas a una funci´n. n o . o 2. a o 4. C´lculos incluidos en el cuerpo de la funci´n. PROGRAMACION DE FUNCIONES EN MATLAB 1.98 ´ TEMA 8. Recogida del valor de los argumentos de la llamada por parte de las variables locales.

dos valores xi y xd pertenecientes a X tales que xi ≤ x d ˆ En tal caso la interpolaci´n produce un valor aproximado f (x∗ ) que se calcula utilizando la o recta que pasa por (xi . xn }. La ecuaci´n de esta recta o es: y − yi = y en el punto x∗ toma el valor yd − y i (x − xi ) xd − x i y ∗ = yi + yd − y i ∗ (x − xi ) xd − x i En caso de que x∗ no caiga entre dos valores conocidos no es posible realizar la interpolaci´n. Para poder obtener aproximadamente f (x∗ ) mediante interpolaci´n es necesario que existan o ∗ ≤x . siendo f una funci´n a o 99 .1. Se pretende proporcionar valores aproximados de f en cualquier punto x ∗ interpolando los valores conocidos. yi ) y (xd . · · · .1 Interpolaci´n con segmentos o Suponga que se conocen los valores que una funci´n f desconocida toma sobre ciertos puntos o {x1 . De forma equivalente se denominar´ Y = {f (xk )} a las ordenadas de a dichos puntos. o El problema que se pretende resolver puede enunciarse como: dado un conjunto de abscisas X = {xk } y sus im´genes mediante f denotadas por Y = {f (xk )}. Para precisar se va a llamar X = {xk } al conjunto de los valores de x para los cuales se conoce el valor de f .Tema 9 Algunos problemas de ingenier´ ıa 9. yd ) como se muestra en la figura 9. x2 .

2 (xi.4 1. Dado el valor x ∗ .2 Ajuste por m´ ınimos cuadrados Hay ocasiones en ingenier´ en las que se dispone de un conjunto de medidas o datos observados ıa de dos variables y se quiere hallar la relaci´n entre ambas.2 1. la recta que interpola es la l´ ınea continua. La funci´n desconocida a interpolar es o o o la l´ ınea de puntos. Suponga que el resultado de tales mediciones se ha incluido en dos vectores T de temperaturas (en grados Celsius) y A de alturas (en Kms).4 0. Como puede verse.2 muestra en el eje vertical (eje y) la altura y en a el horizontal (eje x) la temperatura. Por ejemplo. Para realizar este ejemplo se va a suponer que los vectores citados tienen como componentes: A = [ 21 23 25 26 28 30 31 35 40 45 49] T = [−50 − 51 − 45 − 44 − 39 − 40 − 39 − 28 − 20 − 15 − 8] La gr´fica que se muestra en la figura 9.6 Figura 9. esta relaci´n es lineal pues se asemeja a una recta. Mediante un globo se puede medir la temperatura en distintas ´pocas del a˜o y la altura e n correspondiente. M´s a´n. o a .4 TEMA 9.6 0.8 1 1. calcular mediante interpolaci´n una aproximaci´n f para nuevos valores de x proo o ˆ porcionados por el usuario por teclado. yi) (xd.1: Ilustraci´n de la interpolaci´n de funciones. la relaci´n entre altitud o o y temperatura media en la estratosfera.6 0. desconocida. 9. ALGUNOS PROBLEMAS DE INGENIER´ IA 1. Es importante tener en cuenta que los valores en X no est´n ordenados. Los valores conocidos se indican con marcas +.2 x* 0 0 0. a u o Una vez hecha esta observaci´n es posible preguntarse si alguna recta del tipo y(x) = ax + b o proporciona una relaci´n v´lida a la vista de las mediciones disponibles. parece existir una relaci´n entre las o observaciones de ambas variables. yd) 1 0.8 0. es decir no se cumple a que xk ≤ xk+1 para todo k.2 0.100 1.4 0.

R. La desviaci´n cuadr´tica es es cuadrado de dicho error (yk − y(xk ))2 . Arahal 2003 DISA. yk ) se denomina error de ajuste a la diferencia o entre el valor observado yk y el valor dado por la recta para el valor de x observado y(xk ) = axk + b. a . Datos observados 50 101 45 40 altitud (Kms) 35 30 25 20 −60 −50 −40 −30 −20 o temperatura ( C) −10 0 Figura 9. o a El m´todo de los m´ e ınimos cuadrados permite obtener los valores de a y b que producen el mejor ajuste posible en cierto sentido1 . Las f´rmulas para obtener los valores de a y de b son de sobra conocidas: o n n n n a= n k=1 n x k yk − x2 − k xk k=1 n k=1 yk k=1 2 xk k=1 n n b= k=1 yk − a n xk k=1 Siendo n el n´mero de observaciones.6242 11 · 15177 − 143641 La recta de m´ ınimos cuadrados. Dada una observaci´n consistente en el par (xk .2: Mediciones realizadas con globo en la estratosfera. es la que hace m´ ınima la suma de las desviaciones cuadr´ticas. Aplicadas a los datos de altitud y temperatura se u obtienen los valores a= 1 11(−10840) − (−379)(353) = 0. US.c M. ESI. como indica su nombre.

9. por tanto la integral definida entre las abscisas 1 y 5 es: 5 1 1dx = (5 − 1) = 4 Este resultado puede comprobarse de manera inmediata sin m´s que trazar la gr´fica de a a y = 1 y observar que el ´rea del rect´ngulo es igual al producto de la base por la altura 4 · 1 = 4. parece claro que para calcular el ´rea de y =f(x) entre dos abscisas x i . digamos g(x) = f(x)dx y luego obtener la diferencia g(xf )−g(xi ). Por ejemplo. Este m´todo presenta un inconveniente.6 En la figura 9. yi ) hallar la resta de ajuste por m´ ınimos cuadrados. u a xf basta con hallar la primitiva de f(x). ALGUNOS PROBLEMAS DE INGENIER´ IA b = (353 − a ∗ (−379))/11 = 53.3 se muestran de nuevo los datos de temperatura y altitud incluyendo adem´s a la recta de ajuste obtenida con las f´rmulas anteriores y = 0. o . a a Seg´n lo anterior. y es que existen funciones para las cuales no se e 2 conocen primitivas. por ejemplo de la funci´n f(x) = e−x . la integral indefinida (o primitiva) o de y = 1 es 1dx = x.624x + 53. la integral definida de una funci´n equivale al ´rea que queda bajo la curva de o a dicha funci´n entre los l´ o ımites de integraci´n.3: Recta de ajuste de los datos experimentales. Este es el caso.3 C´lculo aproximado de ´reas a a Como es sabido. El problema que se pretende resolver puede enunciarse como: dado un conjunto de medidas consistentes en pares (xi .102 TEMA 9.6. o Datos observados y recta de ajuste 50 45 40 altitud (Kms) 35 30 25 20 −60 −50 −40 −30 −20 o temperatura ( C) −10 0 Figura 9.

xf ] en n trozos iguales. u a Si se toma un valor demasiado bajo para n es resultado ser´ poco aproximado pues la ”escalera” a de rect´ngulos ser´ demasiado tosca. a a Un m´todo muy simple consiste en dividir el ´rea en rect´ngulos como los que se muestran e a a en la figura 9. a ´ a f(x) f(x1) xi xf x1 x2 xk xn xn+1 Figura 9. a .c M. o ´ Resulta evidente que el resultado de (9.1) La suma anterior puede llevarse a cabo mediante un programa de computador. El problema que se pretende resolver puede enunciarse como: dados dos valores x i . La altura de cada rect´ngulo se calcula mediante el valor de la funci´n. En el algoritmo que se va a realizar se dejar´ que n sea una variable a elegir por el usuario.4. a a a Se va a indicar mediante h(xi . Se supone que aunque no se conoce o o la expresi´n anal´ o ıtica de la funci´n primitiva g(x) s´ se conoce la de f(x) y tambi´n se supone o ı e que los valores de f(x) se pueden calcular para cualquier x ∈ [xi . a altura es f(x1 ). xn+1 ]. hallar el area bajo la curva f de forma aproximada. Por contra un valor demasiado alto de n producir´ rea a a a sultados finos a costa de un tiempo de c´lculo elevado. n) el valor de dicha suma. xf ].1) depende del n´mero de rect´ngulos que se utilicen. [xn . xf . ESI. Puesto que la base de todos ellos es igual a d = (xf − xi )/n se tiene que: n h(xi .. N´tese que la o f´rmula (9. As´ para el primer rect´ngulo la a o ı. n) = d k=1 f(xk ) (9. xf ) que sea lo a e m´s parecido posible al ´rea que se desea calcular g(xf )−g(xi ). xf .4: C´lculo aproximado del ´rea bajo la curva f mediante suma de rect´ngulos a a a El ´rea bajo la curva es aproximadamente igual a la suma de las ´reas de los n rect´ngulos. US. . x2 ]. 103 El c´lculo aproximado de integrales consiste en hallar un valor num´rico h(x i . siendo x1 = xi y xn+1 = xf . Arahal 2003 DISA. xf (xi < xf ) y una funci´n f(x). Obs´rvese que se ha dividido el intervalo [xi .. x3 ]. [x2 . resultando e los subintervalos: [x1 . para el segundo rect´ngulo f(x2 ) y para el ultimo rect´ngulo (el n) es f(xn ).1) s´lo contiene variables y funciones conocidas.R.

1 Integraci´n num´rica de ecuaciones diferenciales o e Introducci´n o Un problema cl´sico en ingenier´ es el c´lculo de soluciones aproximadas de ecuaciones difera ıa a enciales usando m´todos num´ricos.4.104 TEMA 9. En el o a ejemplo mostrado es simple pasando dt al segundo miembro y tomando integral. la integral de la derecha es t.4 9. dx +x=0 dt dx = −x dt − − − dx =1 xdt dx = dt x dx = x dt La integral de la izquierda es el logaritmo neperiano de x. La soluci´n o u o o de la ecuaci´n es una funci´n tal que derivada respecto al tiempo y sumada a s´ misma produzca o o ı el valor cero. si suponemos que en el instante t = 0 se conoce el valor de x al cual simbolizamos mediante x(0) = x0 se tiene que: t t − 0 dx = x dt 0 −(ln x − ln x0 ) = (t − 0) −(ln (ln x )=t x0 x ) = −t x0 . e e Una ecuaci´n diferencial es aquella en la que aparecen la inc´gnita y sus derivadas. ALGUNOS PROBLEMAS DE INGENIER´ IA 9. En algunos casos es posible obtener la soluci´n utilizando herramientas del c´lculo. Por o o ejemplo la ecuaci´n o dx +x=0 dt En esta ecuaci´n x no representa un n´mero sino una funci´n del tiempo x(t).

c M.R. Arahal 2003 DISA. ESI. US.

105 x = e−t x0 x(t) = x0 e−t

Sin embargo hay ocasiones donde no se conocen maneras para calcular soluciones manipulando las ecuaciones como en el ejemplo anterior. Tal es el caso de ecuaciones diferenciales en las cuales aparecen t´rminos que no son lineales. e Como ejemplo considere el problema de un paracaidista cayendo en la atm´sfera. La ca´ o ıda est´ gobernada por la acci´n de la fuerza de gravedad y la fuerza de rozamiento con el aire. a o dv dt

Fg − F r = m

donde Fg es la fuerza de la gravedad que atrae al paracaidista hacia el suelo, F r es la fuerza de rozamiento que se opone a la ca´ ıda, v es la velocidad vertical hacia abajo con la que viaja el m´vil y m es su masa. o Se sabe que Fg = mg siendo g = 9.8m/s2 , por otra parte la resistencia aerodin´mica depende a 2 . Es decir, la de muchos factores. Simplificando mucho se puede considerar que Fr = kv resistencia es proporcional al cuadrado de la velocidad. La ecuaci´n diferencial queda entonces: o dv dt

mg − kv 2 = m dividiendo por m y reagrupando t´rminos se obtiene: e

dv = g − Bv 2 dt siendo B = k/m.

9.4.2

El m´todo de Euler e

Una forma simple de resolver ecuaciones como la anterior es el m´todo de Euler. e o Sea la ecuaci´n dx = f(t) con condici´n inicial x(0) = x0 .Por tanto, en el instante de tiempo o dt t = 0 se sabe que x(t) = x0 . Adem´s se sabe que a x(t) − x0 x(h) − x0 ≈ t−0 h

x(0) = f (0) = lim ˙

t−→0

tomando un valor h = ∆t suficientemente peque˜o. Es decir, que el valor de x(t) en un instante n h pr´ximo a cero es aproximadamente x(h) ≈ x0 + hf (0). Del mismo modo, para el instante o

106

TEMA 9. ALGUNOS PROBLEMAS DE INGENIER´ IA

2h se puede escribir x(2h) ≈ x(h) + hf (h), como x(h) no es conocido se puede utilizar su valor aproximado x(h) = x0 + hf (0). Queda claro que de este modo se puede obtener una secuencia ˆ de valores aproximados {ˆ(kh)}, k = 0, 1, 2, · · · . N´tese que este m´todo equivale a hacer una x o e extrapolaci´n lineal con la derivada en cada punto. o Para ilustrar el m´todo de Euler se parte de la situaci´n mostrada en la figura 9.5 (a). El eje e o horizontal representa la variable t, en el eje vertical se ha colocado el valor x(0) = x 0 . A partir de este punto se traza una recta con pendiente f (0). Sobre esta recta se halla el punto de abcisa h y ordenada x(h) = x0 + hf (0). La nueva situaci´n es la mostrada en 9.5 (b): ahora se toma ˆ o x(h) como punto de partida para trazar una nueva recta de pendiente f (h) y obtener sobre ella el ˆ punto de abcisa 2h y ordenada x(2h) = x(h)+hf (h). En la figura 9.5 (c) se muestra el resultado ˆ ˆ obtenido al repetir los pasos anteriores 50 veces con h = 0.1, siendo f (t) = cos(t) y x(0) = 0. Se observa que la soluci´n proporcionada por la integraci´n num´rica es un conjunto de valores o o e {ˆ(kh)}, k = 0, 1, 2, · · · 50. Estos valores se han representado uniendo mediante segmentos los x puntos (kh, x(kh)), de forma que se obtiene una aproximaci´n mediante trozos rectos. En la ˆ o citada figura se muestra tambi´n con trazo punteado la soluci´n exacta obtenida resolviendo e o dx = cos(t), con x(0) = 0 que da como resultado x(t) =sen(t). dt
1

0.9

0.8

^ x(h)
^ x(h) x0

^ x(2h)

0.7

0.6

x0

0.5

0.4

0.3

0.2

t 0 h

t 0 h 2h

0.1

0

0

0.5

1

1.5

2

2.5

3

(a)

(b)

(c)

Figura 9.5: El m´todo de Euler para integraci´n num´rica e o e El problema que se pretende resolver puede enunciarse como: dada una ecuaci´n diferencial o dx de primer orden en la forma dt = f(t) con condici´n inicial x(0) = x0 calcular de forma o aproximada mediante el m´todo de Euler los valores de la trayectoria x(t) para t = h, 2h, · · · , N h e siendo h el paso de integraci´n dado y N el n´mero de pasos (tambi´n dado). o u e

9.5

Ecuaciones trascendentes

Existen ecuaciones cuyas soluciones no pueden hallarse con l´piz y papel intentando despejar la a ´ variable buscada. Este es el caso de ecuaciones como cos(x) = x. El problema se puede replantear como la b´squeda del punto de corte con el eje horizontal u de la funci´n y = cos(x) − x. Para calcular (de forma num´rica) el paso por cero de y(x) se o e pueden aplicar diversos m´todos. Uno de ellos se comenta a continuaci´n. e o

c M.R. Arahal 2003 DISA. ESI. US.

107

9.5.1

M´todo de la bisecci´n e o

Se quiere resolver el problema de hallar el paso por cero (o ra´ de una funci´n y = f(x) dentro de ız) o un cierto intervalo [xi , xf ]. Se sabe que f es continua y tambi´n que en los extremos del intervalo e toma valores de distinto signo. Sin p´rdida de generalidad se puede suponer que f(x i ) > 0 y e f(xf ) < 0 (en caso contrario basta con buscar el corte por cero de −f(x)). La situaci´n comentada aparece descrita en la figura 9.6. De la propiedad de continuidad de o la funci´n f se obtiene que debe existir al menos un paso por cero en el intervalo citado. Interesa o calcular ese valor x∗ que cumple f(x∗ ) = 0 aunque sea de modo aproximado.

f(x)

xi

x*

xf

Figura 9.6: Funci´n con un pase por cero en el intervalo mostrado. o El m´todo de la bisecci´n consiste en dividir el intervalo en otro m´s peque˜o que siga e o a n conteniendo el punto de corte. Este procedimiento se repite varias veces hasta que el intervalo es lo bastante peque˜o. Llegado este momento se puede tomar como valor aproximado del cero n el punto medio del ultimo intervalo. ´ Para realizar la bisecci´n se toma el punto medio del intervalo actual x m = (xi + xf )/2. Se o eval´a la funci´n en dicho punto, pueden darse tres casos: u o

• a) la funci´n en xm es del mismo signo que f(xi ). En tal caso se toma como nuevo intervalo o el [xm , xf ] y se repite el proceso. • b) la funci´n en xm es del mismo signo que f(xf ). En tal caso se toma como nuevo intervalo o el [xi , xm ] y se repite el proceso. • c) f(xm ) = 0 en tal caso no es preciso buscar m´s, se ha hallado un pase por cero de la a funci´n. o

El m´todo de la bisecci´n termina o bien cuando se halla un punto en el que la funci´n vale e o o n cero o cuando el intervalo es lo suficientemente peque˜o. Por ejemplo, si se necesita conocer el pase por cero con dos decimales nada m´s el m´todo ha de aplicarse hasta que el intervalo tenga a e una longitud menor o igual a 0.01. En la figura 9.7 se muestra c´mo actuar´ el m´todo de la bisecci´n con la misma funci´n de o ıa e o o la figura 9.6. Se han representado tres etapas con los pasos descritos anteriormente (indicadas mediante un n´mero encuadrado situado en la parte superior de cada gr´fica). La longitud u a

5708 0. π/4] [π/8. 61π/256] [15π/64. Repitiendo el proceso varias veces se obtienen los valores que figuran en la tabla siguiente: Intervalo [0. Al evaluar la funci´n se obtiene que f(xm ) = −0. Por tanto. o por lo que se trata del caso b). e o del intervalo. El punto medio de este intervalo es xm = (xi + xf )/2 = π/4. π/2]. si se precisan dos o e decimales exactos entonces hay que tomar 245π/1024. π/4] [15π/64. por lo que f (0) = cos 0 − 0 = 1 > 0 a y por otra parte cos π/2 = 1. es decir x f − xi . El problema que se pretende resolver puede enunciarse como: dada una funci´n f(x) y un o . disminuye a la mitad en cada etapa con respecto a la anterior.0046 -0. Esta cantidad tiene gran importancia en el m´todo.108 1 TEMA 9. Los c´ o ırculos y las l´ ıneas verticales indican los valores de xm en las cuatro primeras etapas. xf ] = [0. La figura 9.0783 < 0. Obs´rvese que si se toma xm como valor aproximado de x∗ e e el error cometido no ser´ nunca mayor que la longitud del intervalo.0245 0. 31π/128] [15π/64. Puede comprobarse que en la primera etapa se obtiene (por casualidad) un valor muy cercano al paso por cero. π/2] [0. El nuevo intervalo ha de ser [0.0056 -0.7: Funcionamiento del m´todo de la bisecci´n.7854 0.0783 0. Puede observarse que el valor en cada etapa es la mitad que en la anterior. ALGUNOS PROBLEMAS DE INGENIER´ IA 2 3 f(x) f(x) f(x) xi xm xf xi xm xf xi xm xf Figura 9. Los n´meros que figuran encima de los c´ u ırculos indican la etapa en la que han sido obtenidos.1963 0.0211 Longitud intervalo 1.0061 La columna de la derecha indica la longitud del intervalo considerado.0123 0.0159 -0.3927 0. π/4] [3π/16. π/4] [15π/64.0491 0.8 muestra la funci´n f(x) = cos x − x. Para ilustrar el m´todo se va a considerar la funci´n cos x−x.2424 0.5312 0. El intervalo en el que existe un e o pase por cero se obtiene f´cilmente recordando que cos 0 = 1. π/4] [7π/32.0982 0.0858 0.0366 -0. que se ha indicado en la parte inferior. 121π/512] Punto medio xm π/4 π/8 3π/16 7π/32 15π/64 31π/128 61π/256 121π/512 245π/1024 Valor de f(xm ) -0. por lo que f (π/2) = cos π/2 − pi/2 = 0 − π/2 < 0. π/4]. Por tanto el primer intervalo considerado es [xi . si se desea la a soluci´n aproximada con un decimal exacto ´sta se puede tomar como 15π/64.

00  y = {−2.00 1.5. nx que se pueden incluir en una matriz Z ∈ IRny ×nx . 9.5 se obtienen los valores siguientes: x = {−1.00 1.25 5.00 1.00 4.25 2.25 1.00  4. 1} 5.00  4.50 2.25 2.5 3 4 0 1 y −0. · · · . yi ) para i = 1. Una superficie cualquiera. 0.25 2.00 1. 1] × [−2. y) definida en un rect´ngulo [xi . · · · .25 1.00 0. n puede ser representada aproximadamente por una matriz. −0.00 1. e o intervalo inicial [xi .25 2. xf ] tales que f(xi ) · f(xf ) < 0 aplicar el m´todo de la bisecci´n hasta que el e o intervalo resultante tenga una longitud menor que cierto valor dado ∆. como por ejemplo la formada por las monta˜as y valles del terreno.25  5.25 0. ESI.00 0. A modo de ejemplo considere la funci´n z = f (x.6 Superficies Una superficie z = f(x. o a Si se toma una rejilla de ancho 0.00 La figura 9.25 0. 2} 3.25 0.25 2.25 0.25 2.50 1.25  4. yf ] puede representarse media ante un conjunto discreto de alturas medidas en algunos puntos del dominio.5.8: Ejemplo de uso del m´todo de la bisecci´n.00 4. y) = x2 +y 2 en el rect´ngulo [−1.5 Figura 9. Arahal 2003 DISA.50 0.5.25 2.5.9 muestra la rejilla en el rect´ngulo considerado y la superficie z = f(x.25 5. xf ] × [yi . 0. −1.5.50 0.25 1.50 1.5 0 0.50 2. yi ) ser´n los a a valores zij = f (xj .50 3.25  Z = 4.c M.50 3. −1. 0.5 x 1 1. las alturas de los puntos (xj . cos(x)−x 1 2 109 0. ny y j = 1. 1. Por ejemplo. 1.5. 0.00 3.R. El algoritmo dar´ como a resultado el intervalo final. 2].25 2.25 0. y) calcua lada en los puntos de la rejilla.00 1.25 1. si se toma una rejilla en el rect´ngulo con nx × ny puntos. Usando esta representaci´n es posible o . US.5 −1 −1. −0.

ALGUNOS PROBLEMAS DE INGENIER´ IA superficie f(x.5 y 1 0 1 0 −2 −1 0 x 1 2 y −1 −2 −1 x 0 1 2 Figura 9.y) 5 4 rejilla 1. Para solucionar el problema se puede usar la idea de que una cumbre es un punto del terreno que sobresale de los puntos vecinos.5 1 3 2 0. La barra de la derecha indica la correspondencia entre tonos de gris y altura. e o resolver algunos problemas de ingenier´ ıa.5 −1 −1.110 TEMA 9.5 0 −0.9: Ejemplo de uso del m´todo de la bisecci´n. 55 superficie 50 45 40 25 20 30 20 10 35 i 30 15 25 20 10 15 50 40 30 20 10 i 10 j 30 20 40 50 60 10 5 5 10 20 30 j 40 50 60 Figura 9. El objetivo no es hallar la cumbre m´s alta o la sima m´s profunda sino a o a a indicar en qu´ lugares existe alguna de estas caracter´ e ısticas del terreno.10: Terreno con m´ltiples cumbres y simas (izquierda) y mapa con curvas de nivel u (derecha).10 y su a e a a correspondiente gr´fico de curvas de nivel. Para concretar m´s lo expuesto consid´rese la superficie mostrada en la figura 9.6.1 B´ squeda de extremos u Dada una matriz de alturas como la descrita en 9. Este hecho ser´ visible en la matriz de alturas pues la a . 9.6 con ny filas y nx columnas se desea determinar los m´ximos y m´ a ınimos. Puede observarse que existe m´s de una cumbre y m´s de una depresi´n. El problema es equivalente a buscar las cimas y depresiones de un terreno.

es e decir. se ha de escribir en la pantalla . abajo a la izquierda y abajo a la derecha.c M.1 Tratamiento de textos Palabras en orden inverso El problema consiste en leer una frase del teclado y escribirla luego al rev´s.5 .j con la propiedad de ser mayor que sus vecinos. La ıa palabra puede tener un n´mero par o impar de caracteres.2 Pal´ ındromo Problema Leer una palabra y decidir si es pal´ ındromo. 9. el de la derecha y tambi´n los cuatro situados en las diagonales. a a Ejemplos: abba. por ello se dejan fuera del an´lisis. a u Por ejemplo. arriba a la derecha. en este ultimo caso el eje de simetr´ u ´ ıa contendr´ el car´cter central. si se e lee la frase Hola amigo.ogima aloH que es la frase escrita de derecha a izquierda. abcba. Para ser pal´ ındromo debe ocurrir que exista un eje de simetr´ en la palabra. o 9. arriba a la izquierda.7. correspondiente al elemento a4. Puede verse que los elementos adya-centes tienen menor valor.R. Ha de tenerse en cuenta que los vecinos que hay que comprobar son: el de arriba. Arahal 2003 DISA.7. el de la izquierda. El final de la palabra es indicado con el punto. a El algoritmo para detectar cumbres deber´ analizar cada uno de los elementos interiores de a la matriz y comprobar si se cumple o no la condici´n de ser mayor que los vecinos. en la matriz siguiente  0 0  0  0  0  0 0 0 0 0 1 0 0 0 1 2 2 1 1 1 1 2 2 2 2 1 1 1 2 2 2 3 2 2 2 1 2 2 1 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0  0 0  0  0  0  0 hay una sola cumbre. ESI. Por ejemplo. Los elementos que est´n situados en los bordes de la matriz (los de las filas primera y ultima a ´ y los de las columnas primera y ultima) no pueden ser comprobados porque no tienen todos sus ´ vecinos. . 111 cumbre corresponder´ a alg´n elemento ai. el de abajo.7 9. US.

tales como los n´meros y signos de puntuaci´n.7. una frase e que se leer´ del teclado. si la frase que se introduce es >Quedamos a las 6h? el resultado ha de ser >Rvfebnpt b mbt 6i? Para simplificar no tenga en cuenta el caso de letras con tilde o di´resis. El programa ha de leer del teclado una frase codificada. .7. Los unicos caracteres u o ´ que se han de modificar son las letras.3 Mensaje oculto Una frase puede cambiarse para que resulte irreconocible. la palabra IBM se convierte en a HAL. e Para simplificar no tenga en cuenta el caso de letras con tilde o di´resis. Por ejemplo. u Para simplificar no tenga en cuenta el caso de letras con tilde o di´resis.5 Descifrar mensaje Se trata ahora de resolver el problema inverso: dado un mensaje codificado proporcionar la frase original.7.4 Mensaje oculto II Se puede expandir el programa anterior para que opere tambi´n con frases que contienen carace teres que no son letras. 9. mediante esta t´cnica simple. e 9. e Para simplificar no tenga en cuenta el caso de letras con tilde o di´resis. Por ejemplo. De este modo una frase como zona 3 se codifica en apob 3. como por ejemplo >Rvfebnpt b mbt 6i?.7. ALGUNOS PROBLEMAS DE INGENIER´ IA 9. Esta letra plantea un problema para ser codificada pues no existe otra letra posterior.6 Mensaje oculto II En los dos problemas anteriores se ha ignorado el caso de la letra z. e 9. El programa que se desea construir ha de codificar. Como resultado el programa ha de escribir en la pantalla el mensaje sin codificar >Quedamos a las 6h?. Considere que la frase le´ consiste unicamente en una palabra formada a ıda ´ por letras (sin n´meros ni otros caracteres).112 TEMA 9. Una forma de resolver este problema es ”asignar” de forma artificial la a como letra siguiente a la z. Una forma muy simple consiste en cambiar cada car´cter por el siguiente del alfabeto.

pero en lugar de eso queremos desarrollar un programa en MATLAB que recoja los datos de la agenda y los introduzca en un archivo. e 9. ESI.c M. Despu´s ha de aparecer la palabra Tel y un espacio en blanco. A continuaci´n debe aparecer una coma. P´rez Repitre e Regues D´az ı Borda Ruiz Garc´a Wrkczy ı Tel Tel Tel Tel 56 11 34 21 90 32 43 32 02 45 78 43 . Arahal 2003 DISA. En el recuadro siguiente se puede observar un ejemplo de dicho archivo de texto.7.8 9. 01 02 03 04 Pedro.1 Tratamiento de archivos Agenda telef´nica o Se desea crear una agenda telef´nica. u e Esta tarea puede realizarse con la libreta de notas. a n Si escoge a˜adir el programa ha de volver a preguntar el nombre. n u e en caso contrario el programa escribir´ los datos en un archivo de texto. El programa u leer´ una frase del teclado y escribir´ como resultado la misma frase pero con las letras cambiadas a a de forma que todas est´n en may´sculas. Para simplificar no tenga en cuenta el caso de letras con tilde o di´resis.8. El programa ha de preguntar al usuario el nombre. Los caracteres que e u no son letras no se ven afectados. Finalmente se e escribe el tel´fono y se pasa a la l´ e ınea siguiente. a El archivo de texto ha de tener el formato siguiente: los dos primeros caracteres son un n´mero de orden. Obs´rvese que las letras que ya estaban en may´sculas se quedan igual. Ana.7 Pase a may´ sculas u Se desea cambiar una frase de forma que todas las letras queden en may´sculas. apellidos y n´meros de tel´fono. apellidos y n´mero de tel´fono de una u e persona. 113 9. Por ejemplo. Los 30 espacios siguientes se dejan para o los dos apellidos. la frase Tengo clase a las 16h en la e u planta E-2 ha de transformarse en TENGO CLASE A LAS 16H EN LA PLANTA E-2. apellidos y n´mero de tel´fono. US. Los 15 caracteres siguientes se reservan para u o el nombre.R. Juan. Posteriormente preguntar´ si desea a˜adir otra persona a la agenda o grabar los datos. Esta agenda consiste en un archivo de texto en el que o aparecen nombres. a continuaci´n viene un espacio. Antonio.

presente su contenido en pantalla y pregunte al usuario si desea a˜adir o eliminar algo. Si se desea eliminar una entrada de la agenda (una l´ ınea de datos) el programa preguntar´ a qu´ n´mero de l´ e u ınea se desea eliminar.114 TEMA 9. n e Se ha de realizar un programa que lea el archivo (creado con el programa de 9.8.8. 9.1. En lugar de eso se quiere crear un programa en MATLAB que lea el archivo y presente en la pantalla la informaci´n que contiene.2 Agenda telef´nica II o Para consultar la lista de tel´fonos confeccionada con el programa anterior es posible usar la e libreta de notas. El programa concluye escribiendo un nuevo archivo con los cambios realizados. . Su misi´n consiste en leer el archivo que contiene la o agenda y mostrar en la pantalla la lista de nombres.1).3 Agenda telef´nica III o En una agenda es frecuente que haya que a˜adir nuevos tel´fonos o borrar alguno existente . En caso de que se n desee a˜adir el programa preguntar´ al usuario los datos del mismo modo que en el programa de n a 9. o El programa no recibe dato alguno. ALGUNOS PROBLEMAS DE INGENIER´ IA 9.8. apellidos y tel´fonos exactamente en la e misma forma en la que aparece en el archivo.8.

e o a • K. Introducci´n a MATLAB. Prentice Hall. P´rez L´pez. Servicio de Publicaciones.Bibliograf´ ıa • P. 2000. J. Brassard y P. • M. Universidad de Sevilla). 1996. M´todos num´ricos con MATLAB. Paraninfo. R. e e • C. 1999. University of Florida. Sigmon . 1997. Aranda. 1992. 1999. Prentice Hall. Fundamentos de inform´tica. Fundamentos de los computadores. Anasagasti. Soto Prieto. ´ • M. Prentice-Hall Internacional. Universidad de Oviedo. 1990. Ra-Ma. Bratley. (Traducci´n de Ceo o lestino Montes. • G. Escuela Superior de Ingenieros. Escuela Superior de Ingenieros. • T. Fundamentos de algoritmia. Universidad a de Sevilla. Arahal. Algebra lineal con MATLAB y MAPLE. Notas sobre MATLAB. Mathews. • J. 1995. . Matem´tica informatizada con MATLAB.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->