SlideShare uma empresa Scribd logo
1 de 228
Baixar para ler offline
´
        Cristobal Pareja
         ´
         Angel Andeyro
         Manuel Ojeda




Introducci´n a la Inform´tica
          o             a
     I. Aspectos generales
1a Edici´n
                o
       Febrero 1994

   c   Crist´bal Pareja
            o
       ´
       Angel Andeyro
       Manuel Ojeda

  ISBN: 84-7491-489-2
Dep´sito Legal: M-7713-94
   o
´
Indice General


   Presentaci´n
             o                                                                                     11

1 Conceptos B´sicos
                a                                                                                  17
  1.1 Inform´tica . . . . . . . . . . . . .
             a                                 .   .   .   .   .   .   .   .   .   .   .   .   .   17
  1.2 Computador . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   18
  1.3 Sistema operativo . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   19
  1.4 Aplicaciones . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
  1.5 Algoritmos y programas . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   21
      1.5.1 Algoritmos . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   22
      1.5.2 Programaci´n . . . . . . . .
                         o                     .   .   .   .   .   .   .   .   .   .   .   .   .   24
      1.5.3 Lenguajes de Programaci´n    o     .   .   .   .   .   .   .   .   .   .   .   .   .   25
  1.6 Ejercicios . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
  1.7 Comentarios bibliogr´ficos . . . . .
                            a                  .   .   .   .   .   .   .   .   .   .   .   .   .   28

2 Representaci´n de la informaci´n
               o                     o                                                             29
  2.1 Conceptos previos . . . . . . . . . . . . . . . . . . . . .                              .   29
      2.1.1 Informaci´n anal´gica y digital . . . . . . . . . .
                        o     o                                                                .   29
      2.1.2 Unidades de informaci´n en los sistemas digitales
                                    o                                                          .   30
      2.1.3 Sistemas de numeraci´n posicionales . . . . . . .
                                   o                                                           .   31
  2.2 Representaci´n digital de los datos . . . . . . . . . . . .
                   o                                                                           .   35
      2.2.1 Representaci´n de los n´meros enteros . . . . . .
                           o          u                                                        .   35
      2.2.2 Representaci´n de los n´meros reales . . . . . . .
                           o          u                                                        .   39
      2.2.3 Limitaciones de los sistemas de representaci´n di-
                                                           o
             gital de los n´meros . . . . . . . . . . . . . . . .
                           u                                                                   . 42
      2.2.4 Representaci´n de los caracteres . . . . . . . . .
                           o                                                                   . 46
      2.2.5 Organizaci´n de datos m´s complejos . . . . . .
                         o              a                                                      . 47
6                                                            ´
                                                             Indice general


          2.2.6 Representaci´n de las instrucciones .
                               o                             .   .   .   .   .   .   .   .   48
    2.3   C´digos redundantes . . . . . . . . . . . . .
            o                                                .   .   .   .   .   .   .   .   49
          2.3.1 Informaci´n y redundancia . . . . .
                           o                                 .   .   .   .   .   .   .   .   49
          2.3.2 C´digos s´lo autodetectores: p de n
                   o       o                                 .   .   .   .   .   .   .   .   51
          2.3.3 C´digos autocorrectores: Hamming .
                   o                                         .   .   .   .   .   .   .   .   51
    2.4   Ejercicios . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   55
    2.5   Comentarios bibliogr´ficos . . . . . . . . . .
                                a                            .   .   .   .   .   .   .   .   57

3 Estructura f´ ısica de un computador                                                       59
  3.1 Componentes de un computador . . . . . . . . . . . . .                             .   60
      3.1.1 Memoria principal . . . . . . . . . . . . . . . . .                          .   62
      3.1.2 Unidad central de proceso . . . . . . . . . . . . .                          .   67
      3.1.3 Perif´ricos . . . . . . . . . . . . . . . . . . . . . .
                    e                                                                    .   70
      3.1.4 Buses de comunicaci´n . . . . . . . . . . . . . . .
                                     o                                                   .   74
  3.2 Lenguajes de m´quina . . . . . . . . . . . . . . . . . . .
                        a                                                                .   77
      3.2.1 Formato de las instrucciones . . . . . . . . . . .                           .   78
      3.2.2 Tipos de Instrucciones . . . . . . . . . . . . . . .                         .   79
  3.3 Un ejemplo de recapitulaci´n . . . . . . . . . . . . . . .
                                   o                                                     .   80
      3.3.1 UCP con acumulador . . . . . . . . . . . . . . .                             .   81
      3.3.2 Un juego de instrucciones de m´quina de una di-
                                                 a
              recci´n . . . . . . . . . . . . . . . . . . . . . . . .
                    o                                                                    .   82
      3.3.3 Ejecuci´n de una instrucci´n. Detalle . . . . . .
                      o                    o                                             .   84
      3.3.4 Traducci´n y ejecuci´n de un programa sencillo .
                        o            o                                                   .   85
  3.4 Observaciones complementarias . . . . . . . . . . . . . .                          .   88
      3.4.1 Tipos de direccionamiento . . . . . . . . . . . . .                          .   89
      3.4.2 Subrutinas . . . . . . . . . . . . . . . . . . . . .                         .   91
      3.4.3 Interrupciones . . . . . . . . . . . . . . . . . . .                         .   94
  3.5 Otras arquitecturas . . . . . . . . . . . . . . . . . . . . .                      .   95
  3.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . .                     .   98
  3.7 Comentarios bibliogr´ficos . . . . . . . . . . . . . . . . .
                             a                                                           .   99

4 Sistemas Operativos                                                                     101
  4.1 Cometido de un sistema operativo . . . . . . . . . .                       .   .   . 102
       4.1.1 Funciones de los sistemas operativos . . . . .                      .   .   . 102
       4.1.2 Formas de trabajo de los sistemas operativos                        .   .   . 103
  4.2 Conceptos b´sicos de los sistemas operativos . . . . .
                 a                                                               .   .   . 105
´
Indice general                                                                                      7


         4.2.1 Procesos . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   105
         4.2.2 Archivos . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   106
         4.2.3 N´cleo . . . . . . . . . . . . . .
                  u                                   .   .   .   .   .   .   .   .   .   .   .   109
         4.2.4 Multiprogramaci´n . . . . . . .
                                  o                   .   .   .   .   .   .   .   .   .   .   .   110
         4.2.5 Interfaz de usuario . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   111
         4.2.6 Gesti´n de la memoria . . . . .
                     o                                .   .   .   .   .   .   .   .   .   .   .   112
   4.3   Clasificaci´n de los sistemas operativos
                   o                                  .   .   .   .   .   .   .   .   .   .   .   116
   4.4   Ejercicios . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   117
   4.5   Comentarios bibliogr´ficos . . . . . . .
                               a                      .   .   .   .   .   .   .   .   .   .   .   117

5 Lenguajes de programaci´n    o                                                                  119
  5.1 Lenguajes de bajo y alto nivel . . . . . . . . .                .   .   .   .   .   .   .   120
      5.1.1 Lenguajes orientados a la m´quina . .
                                            a                         .   .   .   .   .   .   .   120
      5.1.2 Lenguajes de alto nivel . . . . . . . . .                 .   .   .   .   .   .   .   122
      5.1.3 Paradigmas de programaci´n . . . . .
                                          o                           .   .   .   .   .   .   .   124
  5.2 Descripci´n de los lenguajes de programaci´n
                o                                    o                .   .   .   .   .   .   .   131
      5.2.1 Sintaxis . . . . . . . . . . . . . . . . .                .   .   .   .   .   .   .   131
      5.2.2 Sem´ntica . . . . . . . . . . . . . . . .
                  a                                                   .   .   .   .   .   .   .   137
  5.3 Procesadores de lenguajes . . . . . . . . . . .                 .   .   .   .   .   .   .   141
      5.3.1 Compiladores e int´rpretes . . . . . .
                                  e                                   .   .   .   .   .   .   .   144
      5.3.2 Entornos de programaci´n . . . . . . .
                                       o                              .   .   .   .   .   .   .   144
  5.4 Ejercicios . . . . . . . . . . . . . . . . . . . .              .   .   .   .   .   .   .   148
  5.5 Comentarios bibliogr´ficos . . . . . . . . . . .
                            a                                         .   .   .   .   .   .   .   149

6 Bases de datos                                                                               151
  6.1 Bases de datos y SGBD . . . . . . . .           .   .   .   .   .   .   .   .   .   .   . 151
      6.1.1 Archivos y SGA . . . . . . . .            .   .   .   .   .   .   .   .   .   .   . 151
      6.1.2 Bases de datos y SGBD . . . .             .   .   .   .   .   .   .   .   .   .   . 152
      6.1.3 Niveles de una base de datos .            .   .   .   .   .   .   .   .   .   .   . 154
  6.2 El modelo entidad-relaci´n . . . . . . .
                                o                     .   .   .   .   .   .   .   .   .   .   . 155
  6.3 Modelos de datos basados en registros           .   .   .   .   .   .   .   .   .   .   . 158
      6.3.1 El modelo relacional . . . . . .          .   .   .   .   .   .   .   .   .   .   . 158
  6.4 Lenguajes asociados a los SGBD . . .            .   .   .   .   .   .   .   .   .   .   . 160
      6.4.1 Lenguajes relacionales . . . . .          .   .   .   .   .   .   .   .   .   .   . 161
  6.5 Elementos de un SGBD . . . . . . . .            .   .   .   .   .   .   .   .   .   .   . 163
  6.6 Ejercicios . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   . 164
8                                                       ´
                                                        Indice general


    6.7   Comentarios bibliogr´ficos . . . . . . . . . . . . . . . . . . 165
                              a

7 Historia de los instrumentos de c´lculo
                                       a                                            167
  7.1 Precursores de los computadores digitales . . .       .   .   .   .   .   .   167
      7.1.1 La antig¨edad . . . . . . . . . . . . . .
                      u                                     .   .   .   .   .   .   167
      7.1.2 Antecedentes del c´lculo mec´nico . . .
                                a          a                .   .   .   .   .   .   168
      7.1.3 La m´quina de Pascal . . . . . . . . . .
                  a                                         .   .   .   .   .   .   168
      7.1.4 La m´quina de Babbage . . . . . . . . .
                  a                                         .   .   .   .   .   .   169
      7.1.5 La tabulaci´n mec´nica . . . . . . . . .
                         o      a                           .   .   .   .   .   .   170
  7.2 Nacimiento de los computadores . . . . . . . .        .   .   .   .   .   .   171
      7.2.1 El modelo de von Neumann . . . . . . .          .   .   .   .   .   .   172
      7.2.2 Generaciones tecnol´gicas . . . . . . . .
                                  o                         .   .   .   .   .   .   172
  7.3 Evoluci´n de los lenguajes y de la metodolog´
             o                                       ıa     .   .   .   .   .   .   175
  7.4 Tecnolog´ actual, tendencias y perspectivas . .
               ıa                                           .   .   .   .   .   .   176
      7.4.1 Inteligencia artificial . . . . . . . . . . .    .   .   .   .   .   .   178
      7.4.2 Las comunicaciones . . . . . . . . . . . .      .   .   .   .   .   .   178
  7.5 Comentarios bibliogr´ficos . . . . . . . . . . . .
                           a                                .   .   .   .   .   .   179

A Introducci´n al DOS
             o                                                                      181
  A.1 Organizaci´n de recursos . . . . . . . . . . . . .
                o                                           .   .   .   .   .   .   182
       A.1.1 Principales dispositivos . . . . . . . . .     .   .   .   .   .   .   182
       A.1.2 Archivos . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   182
       A.1.3 Directorios . . . . . . . . . . . . . . . .    .   .   .   .   .   .   184
       A.1.4 Prompt . . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   187
       ´
  A.2 Ordenes del DOS . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   187
              ´
       A.2.1 Ordenes b´sicas . . . . . . . . . . . . . .
                       a                                    .   .   .   .   .   .   190
       A.2.2 Manejo de archivos . . . . . . . . . . . .     .   .   .   .   .   .   191
       A.2.3 Manejo de directorios . . . . . . . . . .      .   .   .   .   .   .   193
       A.2.4 Indicadores del sistema . . . . . . . . .      .   .   .   .   .   .   194
       A.2.5 Procesamiento por lotes . . . . . . . . .      .   .   .   .   .   .   195
  A.3 Configuraci´n del DOS . . . . . . . . . . . . . .
                 o                                          .   .   .   .   .   .   195
  A.4 Otros aspectos de inter´s . . . . . . . . . . . . .
                             e                              .   .   .   .   .   .   198
       A.4.1 Encauzamiento: tubos y dem´s . . . . .
                                            a               .   .   .   .   .   .   198
       A.4.2 Atributos y protecci´n de archivos . . .
                                  o                         .   .   .   .   .   .   201
       A.4.3 Ampliaciones de la memoria en los PCs          .   .   .   .   .   .   201
´
Indice general                                                                       9


B Introducci´n a UNIX
              o                                                                    205
  B.1 Breve descripci´n t´cnica . . . . . . . . . . .
                     o e                                  .   .   .   .   .   .   . 205
  B.2 Una sesi´n con UNIX . . . . . . . . . . . . .
                o                                         .   .   .   .   .   .   . 207
  B.3 Gesti´n de archivos . . . . . . . . . . . . . . .
            o                                             .   .   .   .   .   .   . 208
       B.3.1 Identificadores . . . . . . . . . . . . .     .   .   .   .   .   .   . 209
       B.3.2 Tipos de archivos en UNIX . . . . . .        .   .   .   .   .   .   . 209
       B.3.3 Permisos asociados con un archivo . .        .   .   .   .   .   .   . 210
               ´
       B.3.4 Ordenes para la gesti´n de archivos . .
                                   o                      .   .   .   .   .   .   . 211
  B.4 El shell de UNIX . . . . . . . . . . . . . . . .    .   .   .   .   .   .   . 212
       B.4.1 Encauzamiento de la entrada y salida         .   .   .   .   .   .   . 213
       B.4.2 Caracteres comod´ . . . . . . . . . .
                                ın                        .   .   .   .   .   .   . 213
       B.4.3 Guiones de shell . . . . . . . . . . . .     .   .   .   .   .   .   . 214
  B.5 UNIX como sistema multitarea . . . . . . . .        .   .   .   .   .   .   . 214
  B.6 Conclusi´n . . . . . . . . . . . . . . . . . . .
                o                                         .   .   .   .   .   .   . 216
  B.7 Prontuario de comandos UNIX . . . . . . . .         .   .   .   .   .   .   . 216
  B.8 Diferencias entre DOS y UNIX . . . . . . . .        .   .   .   .   .   .   . 221

   Bibliograf´
             ıa                                                                    223

   ´
   Indice alfab´tico
               e                                                                   228
Presentaci´n
          o

     Hay muchos y excelentes libros sobre inform´tica en un nivel intro-
                                                  a
ductorio, con diversos enfoques y escritos en nuestra lengua. Muchos de
ellos est´n dirigidos a futuros inform´ticos, por lo que resultan, quiz´,
         a                             a                                a
demasiado profundos para quienes s´lo persiguen aplicar la inform´tica
                                     o                               a
en su trabajo; muchos otros, en cambio, se dirigen a no profesionales,
por lo que ofrecen una visi´n panor´mica demasiado general de diver-
                            o         a
sos aspectos de la inform´tica, sin detenerse a analizar las implicaciones
                          a
pr´cticas de esos aspectos.
   a
    Este libro se sit´a entre ambos extremos, ofreciendo un medio para
                     u
introducir en la inform´tica a profesionales de otros campos que, sin em-
                        a
bargo, necesiten aplicar adecuadamente los computadores en su trabajo,
poniendo en marcha programas de aplicaci´n o manejando bancos de
                                              o
datos e incluso, muchas veces, resolviendo por s´ mismos problemas no
                                                  ı
contemplados en los programas comercializados.
    As´ pues, el contenido del texto incluye los temas que consideramos
       ı
b´sicos para una introducci´n pr´ctica a la inform´tica. Quiz´ sea este
  a                         o     a                 a           a
enfoque pr´ctico lo que mejor distinga a este texto de otros de intro-
            a
ducci´n a la inform´tica, que adolecen muchas veces de contenidos muy
      o             a
extensos y te´ricos, casi enciclop´dicos, en los que es dif´ diferenciar
              o                   e                        ıcil
los conocimientos utiles en general de aqu´llos que s´lo encontrar´n de
                   ´                        e         o            a
utilidad inform´ticos profesionales.
                a
    Por lo tanto, este libro se dirige a quienes necesiten una formaci´no
introductoria en inform´tica, con un enfoque b´sico y pr´ctico, pero rigu-
                        a                      a         a
roso. Entre ellos se encuentran, en primer lugar, todos aquellos alumnos
12                                                                 ´
                                                         Presentacion


de los primeros cursos universitarios que cuenten con asignaturas sobre
inform´tica, tanto si se utiliza como herramienta aplicada a la resoluci´n
       a                                                                o
de problemas como si es el propio objeto de estudio.
    Este libro se dirige asimismo a aquellas personas que, de una u otra
forma, est´n relacionadas con el mundo de la inform´tica (operadores,
           a                                           a
comerciales, empresarios, etc.) y, sin embargo, ignoran lo que se esconde
tras la fachada de un computador (c´mo se almacena la informaci´n,
                                        o                             o
cu´les son los procesos que se est´n ejecutando en su interior, etc.) y
  a                                 a
que utilizan una jerga t´cnica sin entender bien de qu´ hablan.
                         e                             e
    Por ultimo, este libro se dirige tambi´n a todos los usuarios de com-
        ´                                 e
putadores que est´n interesados en conocer mejor su herramienta de
                   e
trabajo, en saber qu´ estan haciendo y por qu´ lo hacen. El desarrollo
                     e                           e
y abaratamiento de los sistemas inform´ticos hace que computadores
                                          a
de gran potencia que antes s´lo se encontraban en grandes centros de
                               o
c´lculo, atendidos por administradores de sistemas cualificados y dedi-
 a
cados por completo a dicha tarea, est´n hoy sobre nuestra mesa, y que el
                                       e
usuario se tenga que encargar de administrar los recursos de su computa-
dor, por ejemplo, gestionando la memoria, haciendo copias de seguridad,
eliminando virus, etc. Por todo ello, cualquier usuario deber´ dedicar
                                                                ıa
siquiera una peque˜a parte de su tiempo a conocer los principios b´sicos
                   n                                                a
de funcionamiento y gesti´n de su computador.
                           o
   A todos ellos, este texto les ofrece la posibilidad de adquirir esos
conocimientos, partiendo de cero, o de actualizarlos.
    Se ha seleccionado el contenido partiendo de las directrices se˜aladas
                                                                   n
en [DCG*89] y [ACM91] aunque, en un nivel introductorio, no sea po-
sible ni deseable abarcar todos los temas que s´lo interesan al futuro
                                                  o
profesional de la inform´tica. As´ por ejemplo, quedan completamente
                         a        ı
fuera del alcance de nuestro texto las areas de inteligencia artificial y
                                        ´
rob´tica (AI) o la comunicaci´n hombre-m´quina (HU ).
   o                           o            a
    Es frecuente, en cambio, que los destinatarios mencionados necesi-
ten una parte de conocimientos generales sobre inform´tica y otra sobre
                                                         a
desarrollo de algoritmos en un lenguaje de alto nivel: ambas partes se in-
cluyen en los programas de asignaturas de introducci´n a la inform´tica
                                                       o            a
´
Presentacion                                                             13


de los primeros cursos universitarios, y tambi´n interesan esas dos par-
                                               e
tes a los profesionales que usen la inform´tica como una herramienta y
                                          a
deseen sacar partido de ella.
    El presente texto comprende dos vol´menes, complementarios, dedi-
                                         u
cados respectivamente a esas dos partes, separando as´ la presentaci´n
                                                        ı            o
de los conceptos generales y el desarrollo y organizaci´n de algoritmos
                                                        o
y estructuras de datos. En la primera parte, el enfoque pr´ctico nos
                                                              a
ha llevado a relacionar los contenidos estudiados con sus repercusiones
pr´cticas o su utilizaci´n. En la segunda, se ha unificado el estudio de
  a                     o
los algoritmos con su desarrollo, haciendo uso de un lenguaje de progra-
maci´n concreto.
     o
    Este primer volumen se ha dividido en siete cap´  ıtulos, de los cua-
les el primero ofrece una visi´n panor´mica de la inform´tica, de los
                              o         a                   a
computadores y de su uso en la actualidad: bien poniendo en marcha
aplicaciones ya desarrolladas y adapt´ndolas a nuestras necesidades, o
                                      a
preparando soluciones para problemas nuevos. Se presentan asimismo
las primeras aproximaciones a los conceptos de algoritmo, programaci´n o
y lenguajes de programaci´n.
                          o
    En el cap´
             ıtulo 2 se aborda la representaci´n digital de la informaci´n.
                                              o                          o
Conociendo las distintas formas de representaci´n, el programador podr´
                                                 o                         a
elegir las m´s apropiadas a las caracter´
            a                             ısticas y naturaleza de su pro-
blema y prever sus limitaciones. Por otra parte, el usuario de aplicacio-
nes tendr´ una idea aproximada de c´mo se almacena su informaci´n, el
          a                           o                               o
espacio que ocupa y las circunstancias en que los resultados podr´ noıan
ser del todo fiables.
    El cap´ıtulo 3 est´ dedicado al aspecto f´
                      a                      ısico de los computadores y
sus perif´ricos. Se explica su funcionamiento introduciendo los lenguajes
         e
de bajo nivel, y se comentan brevemente las arquitecturas orientadas al
procesamiento en paralelo.
    En el cap´
             ıtulo 4 se estudian los conceptos b´sicos para entender lo
                                                a
que son los sistemas operativos, cu´les son sus funciones y c´mo las
                                     a                         o
llevan a cabo.
   El cap´
         ıtulo 5 se dedica a los lenguajes de programaci´n, en espe-
                                                        o
14                                                                  ´
                                                          Presentacion


cial los lenguajes evolucionados. Se tratan distintos modelos de progra-
maci´n, adem´s del imperativo, de amplia difusi´n en estos a˜os. Se
      o        a                                   o             n
introducen los metalenguajes para describir su sintaxis por su utilidad,
tanto a programadores como a simples usuarios de sistemas operativos,
incluso en el nivel de los comandos. Finalmente, se estudian los distintos
tipos de traductores y los entornos de programaci´n.
                                                   o

    El cap´
          ıtulo 6 trata sobre las bases de datos, una de las aplicaciones
de mayor aplicaci´n en el mundo empresarial. Entre los modelos des-
                   o
arrollados, destacamos el relacional y, entre los lenguajes de consulta, el
SQL, debido a la extensa difusi´n de ambos en la actualidad.
                                o

    Hemos dedicado el cap´   ıtulo 7 a los or´
                                             ıgenes, estado actual y pers-
pectivas de futuro de la inform´tica. Aunque muchos textos sit´an este
                                  a                               u
tema al principio, hemos preferido estudiarlo una vez que se conocen
los conceptos y la terminolog´ b´sicos. De esta forma mejora la com-
                                ıa a
prensi´n del cap´
       o          ıtulo y puede valorarse en su justa medida cada uno de
los logros hist´ricos que en ´l se recogen.
               o              e

    Debido al enfoque pr´ctico que perseguimos con este libro, se inclu-
                          a
yen dos ap´ndices dedicados a introducir en el manejo de dos sistemas
           e
operativos concretos de gran difusi´n en la actualidad: el DOS y el
                                       o
UNIX. El hecho de traer aqu´ estos anexos responde a dos razones: por
                               ı
un lado, conocer las caracter´
                             ısticas de cada sistema interesa al estudiante
como un ejemplo particular del cap´  ıtulo 4, permitiendo ver c´mo se lleva
                                                               o
a la pr´ctica lo estudiado en la teor´ por otro, siempre resulta de uti-
       a                               ıa;
lidad al principiante disponer de un peque˜o prontuario de las ´rdenes
                                              n                     o
o mecanismos m´s inmediatos que necesitar´ sin duda para empezar a
                  a                             a
desenvolverse en el entorno de esos sistemas operativos.

    En la mayor´ de los cap´
                ıa            ıtulos, se ha incluido una peque˜a colecci´n
                                                               n        o
de cuestiones y sencillos ejercicios de aplicaci´n, utiles para afianzar los
                                                 o ´
conceptos introducidos.

   Adem´s, en cada cap´
         a              ıtulo se han seleccionado unas pocas referencias,
para completar los contenidos presentados con otros enfoques, o bien
para profundizar en el tema.
´
Presentacion                                                           15


Agradecimientos
     En primer lugar, es inexcusable agradecer a la Editorial la confianza
que ha puesto en nosotros al aceptar una publicaci´n sobre un tema en
                                                    o
el que, ya lo hemos dicho, existen abundantes textos en nuestra lengua,
as´ como su paciencia en la recepci´n de los originales.
   ı                                o
    Tambi´n debemos dejar constancia de nuestra gratitud hacia los
          e
compa˜eros que nos han alentado, desde el principio, a redactar este
       n
                               ın       a       a           ıa ´
trabajo. En especial, a Benjam´ Hern´ndez Bl´zquez, Mar´ Angeles
Medina S´nchez, Salvador Paz Mart´
          a                         ınez, Inma P´rez de Guzm´n Mo-
                                                  e            a
lina y Marisol Timoneda Salinas, y tambi´n a todos aquellos alumnos
                                          e
que, repetidamente, nos han sugerido la compilaci´n de unos apuntes de
                                                 o
clase.
    Durante la redacci´n de este trabajo, se han recogido numerosas opi-
                      o
niones y sugerencias. En particular, debemos agraceder las minuciosas
revisiones y comentarios hechos por Manuel Enciso Garc´ ıa-Oliveros, Car-
los Rossi Jim´nez, Jos´ Luis Gal´n Garc´ Jaime Fern´ndez Mart´
              e        e          a       ıa,           a            ınez,
Ma Angeles Cano Colorado, Oscar Mart´ S´nchez y Cristina Rodr´
     ´                       ´          ın a                        ıguez
Iglesias.
   Finalmente, quisi´ramos pedir la colaboraci´n de los lectores para
                     e                          o
subsanar las posibles deficiencias que encuentren.
Cap´
   ıtulo 1

Conceptos B´sicos
           a
   1.1   Inform´tica . . . . . . . .
                a                       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
   1.2   Computador . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
   1.3   Sistema operativo . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19
   1.4   Aplicaciones . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
   1.5   Algoritmos y programas .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
   1.6   Ejercicios . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
   1.7   Comentarios bibliogr´ficos
                               a        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28



    El objetivo principal de este cap´
                                     ıtulo consiste en ofrecer una visi´n
                                                                       o
general del contenido del libro, presentando los conceptos generales y
los t´rminos m´s usados en inform´tica. Esta primera aproximaci´n
     e          a                    a                                 o
nos permite situar cada uno de los temas siguientes en relaci´n con los
                                                               o
dem´s, y dentro del contexto de la inform´tica.
     a                                     a


1.1      Inform´tica
               a
    La inform´tica es la ciencia que estudia el procesamiento autom´tico
              a                                                    a
de la informaci´n. Aunque la necesidad de razonar sobre este tipo de
                o
procesos existe desde tiempo atr´s, la consolidaci´n de la inform´tica
                                   a                 o             a
como ciencia s´lo se produce con el desarrollo de los computadores, a
                o
partir de los a˜os cuarenta. Se trata, por lo tanto, de una ciencia muy
               n
joven, pero que ha evolucionado a gran velocidad.
18                                 Cap´                   ´
                                      ıtulo 1. Conceptos Basicos


    La piedra maestra sobre la cual se ha podido desarrollar la infor-
m´tica la representa el computador, que es una herramienta de gran
  a
eficacia en muy diversos trabajos, y en particular en aqu´llos que ma-
                                                         e
nejan un gran volumen de datos o de operaciones. Esta versatilidad
tiene dos aspectos: por un lado, es posible usarlo como herramienta
para aplicaciones concretas ya desarrolladas (1.4), y por otro se pue-
den dise˜ar soluciones a la medida de problemas nuevos, mediante la
        n
programaci´n (1.5).
           o
    El desarrollo de un programa nuevo para resolver un determinado
problema requiere, por una parte, conocer alg´n procedimiento siste-
                                               u
m´tico (algoritmo) que lleve a su soluci´n, y por otra, la necesidad de
  a                                     o
expresarlo en un lenguaje de programaci´n que el computador pueda
                                          o
comprender y ejecutar.


1.2     Computador
    Un computador es una m´quina electr´nica que procesa informaci´n
                             a           o                        o
siguiendo las instrucciones de un programa registrado.
    Para comunicarse con el exterior dispone de unos medios de entrada,
a trav´s de los que recibe la informaci´n, y unos medios de salida, por
       e                               o
donde la env´ Tiene dispositivos que le permiten almacenar la infor-
             ıa.
maci´n (los datos, los resultados y el propio programa) y procesarla
     o
siguiendo las instrucciones del programa.
    La informaci´n que se procesa en el computador (programas, da-
                o
tos y resultados) est´ expresada en forma digital binaria, combinando
                     a
ceros y unos. En consecuencia, tanto los programas como los datos y
resultados deben codificarse en este formato para poder ser procesados.
Una vez obtenidos los resultados, ´stos tienen que ser decodificados para
                                  e
mostrarlos al usuario.
    Como hemos visto, un computador se compone de dos partes cla-
ramente diferenciadas: una f´  ısica, que podemos tocar, constituida por
circuitos electr´nicos, teclado, pantalla, unidades de disco, etc., llamado
                o
hardware, o en castellano soporte f´ ısico, y otra parte inmaterial, que no
1.3. Sistema operativo                                                 19



                                 usuario
                 software de aplicaciones y del sistema
                           sistema operativo
                                hardware


            Tabla 1.1. Estructura de niveles en un computador.

podemos tocar, constituida por los programas y datos, llamada software
en ingl´s y soporte l´gico en castellano. Ambas partes est´n ´
       e             o                                    a ıntimamente
relacionadas de forma que una no puede operar sin la otra y viceversa.


1.3     Sistema operativo
    Cuando se pone en marcha el computador, el primer programa que
entra en funcionamiento es el sistema operativo, que gestiona y coordina
los dos aspectos, f´
                   ısico y l´gico, del computador. Se trata de un conjunto
                            o
de programas que se interrelacionan estrechamente con el hardware, ges-
tionando los procesos en ejecuci´n, las operaciones de entrada y salida y
                                   o
la memoria. Por ello, resulta imprescindible para el funcionamiento del
computador.
    Los dem´s programas funcionan sobre el sistema operativo, y son
             a
gestionados por ´l. Entre ellos, se encuentran las herramientas para
                 e
el desarrollo de programas (tales como los editores y traductores de
lenguajes), y tambi´n los programas de aplicaciones.
                   e
    Por lo tanto, podemos decir que dentro del computador existe cierta
organizaci´n por niveles (v´ase la tabla 1.1): en el nivel m´s bajo se
           o                e                                 a
encuentra el hardware, que por s´ mismo no puede realizar ninguna tarea;
                                ı
a continuaci´n se encuentra el sistema operativo, y desde ´l se arrancan
             o                                            e
los otros programas, que a su vez se relacionan directamente con el
usuario.
    En resumen, el hardware no puede funcionar por s´ mismo: nece-
                                                        ı
sita la ayuda del software. La uni´n de ambos constituye una m´quina
                                   o                              a
virtual, tremendamente vers´til.
                             a
20                                  Cap´                   ´
                                       ıtulo 1. Conceptos Basicos


1.4      Aplicaciones
    El software de aplicaciones est´ formado por aquellos programas que
                                   a
han sido desarrollados para realizar tareas concretas. Se llama as´ por-
                                                                  ı
que el computador “se aplica” a un trabajo determinado, facilitando su
ejecuci´n y resoluci´n. Por ejemplo, un procesador de textos, una hoja
       o            o
de c´lculo, un gestor de bases de datos, un generador de gr´ficos, un
    a                                                         a
programa de contabilidad, juegos, etc.
     Entre las aplicaciones m´s utilizadas se encuentran las siguientes:
                             a

     • Los procesadores de textos son programas que facilitan la elabo-
       raci´n de textos en el computador, desde una carta hasta un li-
           o
       bro. Permiten operar con m´rgenes, tabuladores, justificaci´n,
                                      a                              o
       sangrado, tipos de letra, b´squeda y sustituci´n de palabras, pa-
                                  u                  o
       ginaci´n, separaci´n de s´
             o           o       ılabas, sin´nimos, ortograf´ etc. Son
                                            o               ıa,
       probablemente los programas m´s usados.
                                        a

     • Las hojas de c´lculo son programas utilizados en la creaci´n de
                       a                                           o
       tablas, con datos relacionados entre s´ inicialmente ideados para
                                              ı,
       el an´lisis financiero. Tienen un formato matricial, en el que se
            a
       pueden definir operaciones y funciones sobre las distintas compo-
       nentes de la matriz. Al modificar alg´n dato, todas las operaciones
                                            u
       que lo utilizan son actualizadas de forma autom´tica.
                                                       a

     • Los gestores de bases de datos permiten gestionar la informaci´n o
       referida a personas o art´
                                ıculos, realizando operaciones de edici´n,
                                                                       o
       ordenaci´n, b´squeda, etc.
                o    u

     • Los generadores de gr´ficos facilitan la creaci´n de distintos tipos
                             a                       o
       de gr´ficos, a partir de datos de hojas de c´lculo o bases de datos,
            a                                     a
       o directamente introducidos por el usuario.

Existen muchas otras aplicaciones, de uso menos general, como son
los programas matem´ticos, estad´
                       a        ısticos, de CAD (Dise˜o Asistido por
                                                      n
Computador), aplicaciones contables y de gesti´n de empresas, comuni-
                                              o
caciones, juegos, etc.
1.5. Algoritmos y programas                                            21


    El desarrollo del software de aplicaciones ha sido muy grande (se cal-
cula que para los computadores compatibles con IBM hay m´s de cien
                                                               a
mil aplicaciones diferentes). A su vez, los distintos programas van evo-
lucionando, y aparecen nuevas versiones con m´s posibilidades y mayor
                                                 a
velocidad de ejecuci´n, aunque tambi´n con mayor demanda de potencia
                     o                 e
y memoria.
    En algunos casos, varios de estos programas se unen en uno solo,
compartiendo datos e instrucciones, y constituyen un paquete integrado.
En general suele integrarse una hoja de c´lculo con un generador de
                                           a
gr´ficos y, a veces, con una base de datos y un procesador de textos.
  a
   Gran parte de los programas de aplicaci´n pueden configurarse, en
                                             o
mayor o menor medida, de acuerdo con los gustos y necesidades del
usuario; sin embargo, es posible que un programa concreto no pueda
atender esas necesidades. En este caso, resulta muy dif´ por no decir
                                                       ıcil,
imposible (e ilegal en muchos casos), modificar el programa para incluir
una nueva tarea. Conscientes de esta falta de flexibilidad del software,
muchos fabricantes est´n presentando programas de aplicaci´n que a
                        a                                     o
su vez pueden ser programados, mediante lenguajes de programaci´n   o
propios o est´ndares.
             a
     As´ pues, aunque la mayor´ de las personas que utilizan los compu-
        ı                     ıa
tadores trabajan con programas de aplicaci´n y no necesitan recurrir a
                                           o
la programaci´n, tambi´n hay un buen n´mero de usuarios que, sin ser
               o        e                u
inform´ticos profesionales, pueden obtener un mayor rendimiento de es-
         a
tos programas a trav´s de la programaci´n. Por ejemplo, muchas hojas
                      e                 o
de c´lculo, gestores de bases de datos y paquetes matem´ticos, hoy en
      a                                                   a
d´ son programables.
  ıa,


1.5     Algoritmos y programas
   El desarrollo de programas es otro de los aspectos fundamentales
de la utilizaci´n de los computadores porque continuamente aparecen
               o
nuevos problemas o tareas susceptibles de ser procesados de forma au-
tom´tica. Al mismo tiempo se van detectando las lagunas o deficiencias
    a
en las aplicaciones existentes, lo que impulsa a su renovaci´n con la
                                                            o
22                                  Cap´                   ´
                                       ıtulo 1. Conceptos Basicos


creaci´n de nuevas versiones de los programas existentes. El desarrollo
      o
del hardware posibilita tambi´n la aparici´n de nuevas aplicaciones m´s
                             e            o                          a
potentes y con mayores demandas de recursos.

    Desde el planteamiento de un problema hasta la obtenci´n de su
                                                             o
soluci´n en el computador hay que recorrer una serie de etapas:
      o

     1. En primer lugar, antes de resolver un problema en el computador
        hay que conocer los pasos y operaciones que hay que realizar para
        obtener la soluci´n del problema, es decir, su algoritmo, porque
                         o
        el computador solamente es capaz de seguir aquellas instrucciones
        que nosotros le indiquemos. Si no conocemos el proceso que nos
        conduce a la soluci´n del problema, el computador no nos la va a
                            o
        dar. Esta secuencia de pasos y operaciones constituye una soluci´n
                                                                        o
        general al problema planteado de forma que, siguiendo el proceso,
        se llega a la soluci´n del problema sean cuales fueran los datos
                            o
        proporcionados.

     2. Una vez conocida esta soluci´n general del problema, hay que ex-
                                    o
        presarla en un lenguaje especial, que pueda ser comprendido y
        ejecutado por el computador, es decir, en un lenguaje de progra-
        maci´n, creando un programa.
             o

     3. Posteriormente, hay que comprobar que el programa produce las
        soluciones esperadas (ya sea utilizando datos de prueba o mediante
        m´todos formales) y subsanar los errores detectados.
          e

     4. Por ultimo, es importante documentar el programa de forma que
             ´
        si cambiaran algunas de las circunstancias iniciales, sea posible
        modificar y adaptar convenientemente, facilitando las labores de
        mantenimiento.


1.5.1      Algoritmos
   Una de las caracter´ısticas de los seres humanos es su capacidad para
                                    ´
plantearse y resolver problemas. Estos pueden ser de naturaleza muy
1.5. Algoritmos y programas                                                    23


diversa, desde los problemas m´s inmediatos relacionados con la pro-
                                 a
pia subsistencia, hasta los problemas m´s abstractos de naturaleza ma-
                                       a
tem´tica o filos´fica.
    a           o

    Un algoritmo es la descripci´n precisa de los pasos que nos permiten
                                o
obtener la soluci´n de un problema determinado. En general, los pa-
                 o
sos son acciones u operaciones que se efect´ an sobre ciertos objetos. Al
                                            u
comienzo del algoritmo, los objetos tienen unos valores iniciales (los da-
tos) que var´ como consecuencia del proceso descrito por el algoritmo,
            ıan
obteni´ndose los valores de salida o resultados.
      e

    La inform´tica estudia el procesamiento de la informaci´n mediante
              a                                            o
algoritmos, aunque el concepto de algoritmo, que proviene de las ma-
tem´ticas, es muy anterior e independiente de la existencia de la in-
    a
form´tica y los computadores. 1
     a

    El concepto de algoritmo tiene una importancia fundamental den-
tro de la inform´tica, por ser previo a la resoluci´n del problema en el
                a                                  o
computador; si no se conoce el algoritmo para resolver un problema, no
puede plantearse su resoluci´n en el computador.
                            o

    Aunque existen algoritmos registrados para la realizaci´n de tareas
                                                           o
muy variadas, en general los algoritmos desarrollados resuelven s´lo de-
                                                                 o
terminadas partes de un problema como, por ejemplo, la ordenaci´n de
                                                                   o
una lista de valores, pero no un problema real completo. En consecuen-
cia, habr´ que dise˜ar un algoritmo para su resoluci´n.
         a          n                               o

    El dise˜o de algoritmos implica un an´lisis profundo del problema,
           n                               a
de sus datos iniciales, del proceso que se les aplica y de los resultados
esperados. A partir de este an´lisis debe establecerse cu´l es la mejor
                                a                          a
estructura de datos para resolver el problema. De hecho, Niklaus Wirth,
uno de los padres de la programaci´n estructurada, titula una de sus
                                      o
obras fundamentales Algoritmos + Estructuras de Datos = Programas,
mostrando la importancia que concede a dichas estructuras [Wir86b].
   1
    Se conoce un algoritmo para el c´lculo del m´ximo com´n divisor de dos n´meros
                                    a           a         u                 u
naturales, debido a Euclides, que data del siglo IV a.C., al que se conoce como el
“abuelo” de todos los algoritmos.
24                                  Cap´                   ´
                                       ıtulo 1. Conceptos Basicos


   Existen t´cnicas que facilitan el dise˜o de algoritmos, tales como la
             e                           n
programaci´n estructurada, la programaci´n modular, el refinamiento
           o                                o
por pasos, el dise˜o descendente y la estructuraci´n y abstracci´n de los
                  n                               o             o
datos.
    Para poder expresar algoritmos se utilizan lenguajes con la necesaria
precisi´n, llamados lenguajes algor´
       o                           ıtmicos, que son independientes de los
lenguajes de programaci´n. Los m´s utilizados son el seudoc´digo y los
                         o         a                          o
diagramas de flujo.
    Dado un problema concreto y conocido el algoritmo que lo resuelve,
para obtener la soluci´n del problema tenemos que partir de los datos
                      o
de entrada, y ejecutar las acciones descritas en el algoritmo. Al proceso
de ejecutar un algoritmo concreto para unos datos determinados se le
llama c´mputo, de donde procede el t´rmino computador. El procesador
       o                              e
es quien ejecuta materialmente el c´mputo.
                                    o

1.5.2      Programaci´n
                     o
   Como dec´ ıamos al principio, consideramos al computador como una
herramienta que nos ayuda en la resoluci´n de problemas; para ello es
                                          o
preciso conocer previamente un algoritmo que lleve a su soluci´n. A
                                                               o
continuaci´n hay que expresar el algoritmo en un lenguaje de progra-
           o
maci´n, que pueda ser comprendido y ejecutado por el computador,
     o
desarroll´ndose un programa. A este proceso se le llama programaci´n.
         a                                                        o
    Una aportaci´n sustancial para realizar este paso tan delicado con la
                o
correcci´n necesaria la constituyen:
        o

     1. El refinamiento por pasos, que permite aumentar el grado de de-
        talle en la expresi´n del algoritmo seg´n convenga, para adaptarlo
                           o                   u
        a las necesidades del lenguaje.
     2. La programaci´n estructurada, que utiliza las estructuras de pro-
                     o
        gramaci´n propias de los lenguajes evolucionados.
               o
     3. La programaci´n modular que, al permitir el uso de m´dulos o
                       o                                       o
        subprogramas, facilita el empleo de otras t´cnicas de dise˜o de
                                                   e              n
        algoritmos y la depuraci´n de los programas .
                                o
1.5. Algoritmos y programas                                             25


  4. No debe olvidarse la importancia de la estructuraci´n y abstracci´n
                                                        o             o
     de datos, presente tambi´n en los lenguajes evolucionados, que
                               e
     debe emplearse con todo su potencial en el dise˜o de algoritmos y,
                                                     n
     posteriormente, en los programas.

    El desarrollo de aplicaciones cada vez m´s complejas y el crecimiento
                                            a
del sector de producci´n de software, ha hecho que se apliquen a la pro-
                       o
gramaci´n t´cnicas de ingenier´ que garanticen la viabilidad y calidad
        o e                     ıa
de los grandes proyectos de aplicaciones, lo que se conoce como inge-
nier´ del software.
    ıa

1.5.3    Lenguajes de Programaci´n
                                o
    El computador dispone de un conjunto de instrucciones que son reco-
nocidas y ejecutadas por el procesador. Estas instrucciones se expresan,
al igual que los datos, en forma digital binaria, si bien para reconocerlas
mejor y evitar errores se les asignan unos nombres mnemot´cnicos que
                                                                e
permiten recordar sus funciones. Estas instrucciones constituyen el len-
guaje de m´quina del computador, y suelen ser diferentes en funci´n del
           a                                                         o
fabricante del procesador.
    El lenguaje de m´quina es ejecutado a gran velocidad por el procesa-
                     a
dor, en los computadores actuales esta velocidad se mide en millones de
operaciones por segundo; por otra parte, el lenguaje de m´quina permite
                                                         a
el acceso directo a todos los ´rganos del computador. Por estos motivos
                              o
el lenguaje m´quina es insustituible en aquellas aplicaciones donde sea
              a
necesaria una gran rapidez de ejecuci´n, o el acceso directo a ciertos
                                        o
o
´rganos del computador.
    Las instrucciones del lenguaje de m´quina son en general muy poco
                                         a
potentes, operan sobre datos de peque˜o tama˜o, y en muchos casos no
                                        n       n
incluyen ni multiplicaciones ni divisiones. Para poder operar sobre da-
tos mayores o realizar operaciones m´s complejas, tales como potencias
                                      a
o logaritmos, hay que fraccionar los datos y aplicar sucesivamente las
operaciones simples, siguiendo algoritmos espec´   ıficos. Por este motivo,
y por su estrecha relaci´n con el hardware, a los lenguajes de m´quina se
                        o                                        a
les llama lenguajes de bajo nivel . En consecuencia, la tarea de escribir
26                                 Cap´                   ´
                                      ıtulo 1. Conceptos Basicos


                problema
                       t
                        t      dise˜o de algoritmos
                                   n
                         ”
                         t
                       algoritmo
                             t
                              t      programaci´n
                                               o
                               ”
                               t
                         programa fuente
                                   t
                                    t      traductor
                                     ”
                                     t
                               programa objeto
                                         t
                                          t      procesador
                                           ”
                                           t
                                   programa en ejecuci´n
                                                      o

     Figura 1.1. Resoluci´n de un problema mediante la programaci´n.
                         o                                       o


programas en lenguaje de m´quina es tediosa y est´ sujeta a muchos
                          a                      a
errores.
    Ante la necesidad de escribir programas cada vez m´s complejos y
                                                           a
fiables, los inform´ticos desarrollaron lenguajes con niveles m´s elevados
                  a                                           a
de abstracci´n, que inclu´ operaciones y datos m´s complejos a los
              o            ıan                        a
que llamaron lenguajes de alto nivel. De esta forma se acorta el camino
entre el algoritmo y su expresi´n en forma de programa, porque los
                                  o
lenguajes de alto nivel pueden expresar mejor las acciones y objetos que
intervienen en los algoritmos.
    Una de las grandes ventajas de estos lenguajes radica en que la tra-
ducci´n del programa escrito en lenguaje de alto nivel (programa fuente)
      o
al lenguaje de m´quina (programa objeto) que, como recordamos, es el
                 a
unico que puede ser ejecutado por el computador, es autom´tica y se
´                                                             a
realiza por un programa traductor.
    Para ello, junto con las especificaciones del lenguaje, reglas de sinta-
xis y sem´ntica, se desarrollan los necesarios programas de traducci´n.
          a                                                             o
Durante el proceso de traducci´n se suelen detectar errores, debidos al
                                 o
1.6. Ejercicios                                                             27


incumplimiento de las reglas sint´cticas del lenguaje o a causas m´s suti-
                                  a                                   a
les, que deben corregirse antes de poder ejecutar el programa. Si durante
la ejecuci´n de un programa se realizan operaciones no permitidas (tales
          o
como divisiones por cero, accesos fuera de l´ ımites, . . . ) se producen los
llamados errores de ejecuci´n.
                            o
    Aunque un programa se haya traducido eliminando todos los errores
sint´cticos y de ejecuci´n, a´n puede no realizar correctamente la tarea
    a                   o    u
para la que fue creado, por contener errores l´gicos. Por lo tanto es
                                                o
necesario comprobar el funcionamiento del programa utilizando datos
de prueba que permitan realizar los c´lculos a mano y comprobar as´
                                       a                               ı
las partes m´s conflictivas del programa. Este proceso se conoce como
             a
depuraci´n de los programas.
         o
    En la actualidad la mayor´ de los programas se escriben en lengua-
                              ıa
jes de alto nivel, reserv´ndose los lenguajes de bajo nivel para aquellas
                         a
aplicaciones donde se necesite una elevada velocidad o un acceso directo
a los ´rganos del computador; por ejemplo, en los programas traductores
      o
o en programas de gesti´n del computador.
                         o


1.6     Ejercicios
   1. Trate de describir con precisi´n mediante frases sencillas algunas tareas
                                    o
      cotidianas, como leer un libro o realizar un trayecto en autob´s.
                                                                     u
   2. Dado el algoritmo de Euclides que se menciona en el apartado 1.5.1,

                          Sean A, B, R ∈ IN.
                          Mientras B = 0, hacer:
                               
                                R ← A modulo B
                                   A←B
                               
                                   B←R
                          Escribir A

      trate de seguirlo, utilizando l´piz y papel (por ejemplo, para A = 12 y
                                     a
      B = 8). Est´ formulado desde el punto de vista del procesador: cuando se
                  a
      dice “leer A, B”, el procesador debe pedir dos valores para las variables
      A y B al usuario; la instrucci´n “mientras b = 0 hacer ...” significa
                                       o
      que mientras la condici´n sea cierta hay que realizar las operaciones
                                o
28                                     Cap´                   ´
                                          ıtulo 1. Conceptos Basicos


        comprendidas entre dicha instrucci´n (...) que, en nuestro caso, es una
                                          o
        secuencia de tres. La operaci´n “m´dulo” expresa el resto de la divisi´n
                                     o    o                                   o
        entera, y el s´
                      ımbolo “←” indica que, tras calcular el resultado de la
        expresi´n a su derecha, se retendr´ como el valor de la variable a su
               o                          a
        izquierda.
     3. Clasifique los siguientes elementos del computador como pertenecientes al
        hardware, al software del sistema o al de aplicaciones: pantalla, teclado,
        unidad de entrada y salida, programa del sistema operativo, compilador,
        procesador de textos, etc.


1.7       Comentarios bibliogr´ficos
                              a
    Existe una gran cantidad de textos de introducci´n a la inform´tica que
                                                       o               a
se pueden recomendar con car´cter general. Aun ci˜´ndonos a los escritos en
                               a                     ne
castellano o traducidos, existen bastantes textos excelentes sobre el tema, con
diversos enfoques.
     En [GL86] encontramos un panorama general sobre inform´tica en el que se
                                                               a
utiliza como tema unificador el concepto de algoritmo, que sus autores juzgan
como el concepto central de la computaci´n. Se trata de un texto apropiado
                                           o
para el principiante y de lectura amena. El libro de Bishop ([Bis91]) es tambi´n
                                                                              e
un libro muy asequible de introducci´n en inform´tica.
                                     o             a
    [PLT89] trata con gran detalle la estructura f´
                                                  ısica de los computadores, por
lo que interesar´ a quienes deseen detenerse en este aspecto de la inform´tica.
                a                                                         a
    Recomendamos [FSV87] a quien desee dirigirse hacia los fundamentos te´ri-o
cos de la inform´tica (la teor´ de algoritmos, la l´gica y la teor´ de aut´matas
                a             ıa                   o              ıa      o
y lenguajes formales).
    Por ultimo, puesto que la inform´tica es una ciencia reciente, cuenta con
        ´                              a
muchos vocablos nuevos, en su mayor´ anglicismos, que muchas veces se em-
                                        ıa
plean de forma ileg´
                   ıtima, o que se aplican con un sentido equivocado. En [VJ85]
y [MA85] puede consultarse el significado de esos t´rminos.
                                                     e
Cap´
   ıtulo 2

Representaci´n digital de
             o
la informaci´n
            o
   2.1   Conceptos previos . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
   2.2   Representaci´n digital de los datos
                      o                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   35
   2.3   C´digos redundantes . . . . . . . .
          o                                       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   49
   2.4   Ejercicios . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   55
   2.5   Comentarios bibliogr´ficos . . . . .
                               a                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   57



    La representaci´n de la informaci´n en los computadores digitales
                   o                   o
persigue dos objetivos: en primer lugar, procesarla, permitiendo su ma-
nipulaci´n eficiente, para lo cual se han ideado diferentes convenios, de
        o
los que veremos los m´s importantes; y en segundo, asegurarla contra
                       a
errores durante su almacenamiento o durante las transmisiones, lo que
se consigue incorporando en la codificaci´n el empleo de la redundancia
                                         o
para detectar y corregir dichos errores.


2.1      Conceptos previos
2.1.1     Informaci´n anal´gica y digital
                   o      o
    Las magnitudes continuas son las que pueden adoptar los infinitos
valores de un intervalo de n´meros reales, tales como la longitud de un
                            u
segmento, velocidad, temperatura, intensidad de un sonido, etc.
30               Cap´                    ´                 ´
                    ıtulo 2. Representacion de la informacion


    Las magnitudes discretas tienen naturaleza discontinua, tales como
la longitud (n´mero de s´
              u          ılabas) de una palabra, capacidad (n´mero de
                                                             u
pasajeros) de un veh´
                    ıculo, etc.
   En la pr´ctica, es frecuente que las magnitudes continuas sean trata-
           a
das como discretas: el peso de una persona (que se redondea en kilos); la
temperatura (en grados y d´cimas de grado); la longitud de un segmento,
                           e
medida con un dispositivo de precisi´n hasta los mil´
                                     o               ımetros.
    En relaci´n con ambos tipos de magnitud se considera la informaci´n
              o                                                        o
anal´gica, que es de naturaleza continua, pudiendo tomar infinitos valo-
     o
res; y la informaci´n digital, que es de naturaleza discreta. Aunque esta
                   o
ultima puede tomar infinitos valores ( IN), en un computador digital la
´
informaci´n es discreta y, adem´s, finita.
           o                     a
    En las calculadoras, la digitalizaci´n de variables anal´gicas produce
                                        o                   o
un efecto de redondeo, que debe ser tenido en cuenta y tratado con-
venientemente para evitar errores de c´lculo (v´ase la secci´n 2.3); en
                                          a        e            o
el monitor de un ordenador, supone el ajuste de la imagen proyectada
sobre una matriz de puntos.

2.1.2     Unidades de informaci´n en los sistemas digitales
                               o
    La raz´n de ser de un computador es el procesamiento de infor-
          o
maci´n. Para poder hablar con propiedad de este procesamiento, debe-
     o
mos definir unidades de medida que nos permitan cuantificar de alg´n u
modo la acci´n del computador sobre la informaci´n suministrada. Con-
            o                                   o
sideramos las siguientes:

     • Bit (BInary digiT ) es la cantidad de informaci´n que puede alma-
                                                      o
       cenarse en una variable binaria. No hay que confundir el bit con
       la variable ni con su valor: una variable binaria es la que puede
       tomar dos valores estables: 0 ´ 1, blanco o negro, s´ o no, etc.
                                      o                    ı
       La necesidad de codificar informaciones m´s complejas ha llevado
                                                   a
       a agrupar varios bits, apareciendo as´ las siguientes unidades:
                                            ı

     • El byte u octeto es la cantidad de informaci´n que puede codificarse
                                                   o
       en 8 bits; representa por tanto 2  8 = 256 valores.
2.1. Conceptos previos                                                31


   • La palabra se define en relaci´n con la m´quina considerada, como
                                   o           a
     la cantidad de informaci´n que la m´quina puede manejar de una
                              o            a
     sola vez. Para evitar equ´ıvocos, se habla de palabras de 8 bits, 16
     bits, 32 bits, etc.

   • 1 Kbyte = 210 bytes = 1.024 bytes. Se suele llamar kilobyte, aun-
     que esto puede resultar equ´
                                ıvoco, ya que el prefijo “kilo” significa
     1.000 (y no 1.024).

   • 1 Mbyte = 1.048.576 bytes (220 = 1.0242 ). An´logamente, debe
                                                    a
     advertirse que “mega” no significa un mill´n en este contexto.
                                              o

2.1.3   Sistemas de numeraci´n posicionales
                            o
    Aunque se conocen sistemas no posicionales, tales como el de nume-
raci´n romana o el sexagesimal, que usamos para medir el tiempo y los
    o
a
´ngulos, el sistema de numeraci´n m´s difundido en la actualidad es sin
                               o    a
duda el sistema decimal posicional, o sistema ar´bigo-hind´, inventado
                                                a         u
hacia el siglo VIII.
    Por otra parte, en el contexto de la inform´tica se usan frecuente-
                                               a
mente sistemas de numeraci´n posicional en bases tales como 2 (ya que
                             o
el bit tiene dos posiciones), 16 (como compactaci´n de palabras de 4
                                                   o
bits), etc.
    Para aprender a manejarlos, se recurre frecuentemente a la analog´ ıa
con el sistema de numeraci´n m´s conocido: el de base 10. Se llama
                            o     a
decimal porque cada cifra o d´
                             ıgito puede tomar diez posibles valores: del
0 al 9; se llama posicional porque el valor real de cada d´
                                                          ıgito depende
de su posici´n.
             o

         10475 = 1 ∗ 104 + 0 ∗ 103 + 4 ∗ 102 + 7 ∗ 101 + 5 ∗ 100

A la cantidad 10 se le llama base; las potencias de 10 son los pesos
asociados a cada posici´n, y los factores o coeficientes de cada peso son
                        o
las cifras de la representaci´n. Tambi´n se podr´ haber representado
                             o          e          ıa
en forma polin´mica del siguiente modo:
                o

             10475 = 1 ∗ 104 + 0 ∗ 103 + 47 ∗ 101 + 5 ∗ 100
32                Cap´                    ´                 ´
                     ıtulo 2. Representacion de la informacion


pero la primera forma es la unica donde las cifras son todas menores
                              ´
que la base. En general, esta afirmaci´n adopta la siguiente forma, cuya
                                     o
demostraci´n se incluye al final de este cap´
           o                               ıtulo.

Teorema 2.1 En un sistema de numeraci´n en base b > 1, todo entero
                                          o
N positivo tiene una unica representaci´n de la forma
                     ´                 o

                     N = cp bp + cp−1 bp−1 + . . . + c1 b1 + c0 b0

donde 0 ≤ ci < b para todo i = 0, 1, . . . , p

Conversi´n entre sistemas
        o
    En primer lugar, la expresi´n decimal de un n´mero de cifras cp . . . c0
                                o                u
en base b se obtiene sencillamente sumando los valores reales correspon-
dientes a los diferentes d´
                          ıgitos:

                        [cp . . . c0 ](b = cp ∗ bp + . . . + c0 ∗ b0

Por ejemplo, 275(8 = 2 ∗ 82 + 7 ∗ 81 + 5 ∗ 80 = 189(10
    En segundo lugar, representar el n´mero 241(10 en el sistema de base
                                       u
5, equivale a expresarlo en forma polin´mica con las sucesivas potencias
                                        o
de esa base, siguiendo la idea de la demostraci´n del teorema:
                                               o

                 241     5               ⇒     241     =    48 * 5 + 1
                 1       48    5         ⇒      48     =      9*5+3
                          3    9    5    ⇒        9    =      1*5+4
                               4    1    ⇒        1    =      0*5+1

     Por lo tanto,

           241    =      48                            ∗5+1
                  =      (9 ∗ 5 + 3)                   ∗5+1
                  =      ((1 ∗ 5 + 4) ∗ 5 + 3)         ∗5+1
                  =      1 ∗ 53 + 4 ∗ 52 + 3 ∗ 51 + 1 ∗ 50             = 1431(5
2.1. Conceptos previos                                                              33


Sistemas de numeraci´n m´s usuales
                    o   a

   El sistema m´s empleado en electr´nica digital es el de base 2, lla-
                a                     o
mado binario (natural). En inform´tica tienen inter´s los sistemas cuya
                                  a                e
base es una potencia de dos: 2, 4, 8, 16. La siguiente tabla recoge los
primeros n´meros naturales, expresados en algunos de esos sistemas y
           u
en el decimal:


      dec.    binario   octal    hexad.       dec.   binario    octal    hexad.
         0         0        0          0        9      1001        11         9
         1         1        1          1       10      1010        12        A
         2        10        2          2       11      1011        13         B
         3        11        3          3       12      1100        14         C
         4       100        4          4       13      1101        15        D
         5       101        5          5       14      1110        16         E
         6       110        6          6       15      1111        17         F
         7       111        7          7       16     10000        20        10
         8      1000       10          8       17     10001        21        11


En el sistema hexadecimal se usan los d´       ıgitos 0, . . . , 9, A, . . . F para las
cantidades cero, . . . , nueve, diez, . . . , quince respectivamente. As´ por     ı
ejemplo, C7A(16 = 12 ∗ 162 + 7 ∗ 161 + 10 ∗ 160 = 3194(10 , ya que los
valores de A y C en el sistema de base 16 son 10 y 12, respectivamente.


   Se observa que, en una base cualquiera b, con N cifras (o menos)
es posible expresar bN cantidades distintas; inversamente, para poder
componer C combinaciones distintas se necesita disponer de un n´mero
                                                               u
de cifras igual a logb C, redondeado por exceso.


    Como consecuencia de lo anterior, cuanto mayor sea la base adoptada
se pueden expresar m´s cantidades (combinaciones) para un n´mero fijo
                      a                                        u
de cifras; inversamente, cuanto mayor sea la base, es posible usar menos
cifras para expresar una misma cantidad.
34              Cap´                    ´                 ´
                   ıtulo 2. Representacion de la informacion


Observaci´n
         o
    La conversi´n de binario en octal o en hexadecimal se puede abreviar
               o
del siguiente modo:
      11 001 111 010 101 100(2
           = 11 001 111 010 101 100
           = 3   1   7    2    5   4 = 317254(8
           = 1 1001 1110 1010 1100
           = 1   9   14   10   12    = 19EAC(16
     ¿A qu´ se debe el funcionamiento de este mecanismo?
          e

Operaciones aritm´ticas en base dos
                 e
    Para las operaciones elementales se usan las tablas correspondientes
a la base de que se trate. Por ejemplo, para el caso binario la tabla de
sumar es la siguiente:
                               + 0      1
                               0 0      1
                               1 1 10
Y entonces, son v´lidas las reglas conocidas para las operaciones en base
                 a
diez. Por ejemplo, en el sistema binario natural, tenemos:
                         1001                  100101
                    +    1011              −    11011
                        10100                   01010
    Para la resta se usa frecuentemente el m´todo del complemento: en
                                              e
lugar de la resta propuesta, se halla la suma correspondiente comple-
mentando el sustraendo (min − sus → min + comp(sus), siendo el com-
plemento (comp) el n´mero resultante de cambiar cada cero por un uno
                      u
y viceversa), suprimiendo la cifra excedente, posiblemente aparecida por
el arrastre, y sumando una unidad al resultado obtenido:
           100101                     100101
       −    11011       →        +    100100
                                     1001001      →        001010
´
2.2. Representacion digital de los datos                                35


2.2     Representaci´n digital de los datos
                    o
    En los sistemas digitales, no resulta viable dar una representaci´n
                                                                     o
v´lida para codificar todos los n´meros; por otra parte, los diversos
  a                               u
sistemas empleados dan diferentes tratamientos a n´meros tan usuales
                                                     u
como el uno (seg´n se considere como real o como entero). Estudiaremos
                u
diversos convenios para diferentes conjuntos de n´meros, as´ como sus
                                                  u         ı
limitaciones.
    En este apartado, supondremos que disponemos de un espacio de N
bits, con lo que es posible representar 2N enteros distintos.


2.2.1    Representaci´n de los n´ meros enteros
                     o          u
N´ meros enteros positivos
 u

    Si se considera unicamente n´meros enteros positivos, con N bits de
                    ´            u
espacio ser´ posible representar los n´meros de 0 a 2N −1. La forma m´s
            ıa                        u                               a
natural de lograrlo consiste en interpretar cada combinaci´n mediante
                                                             o
la cantidad que representa en binario. Por ejemplo, con 1 byte (es decir,
N = 8) se representar´ los n´meros 0, . . . , 255 en este sistema.
                       ıan     u

N´ meros enteros con signo. Convenio del signo-magnitud
 u

    Para representar los n´meros enteros (con signo), el sistema m´s
                                 u                                       a
simple es el convenio de signo-magnitud, consistente en reservar el pri-
mer d´  ıgito binario para codificar el signo (suele representarse el signo
+ con un cero y el − con un uno) y los siguientes N − 1 para el va-
lor absoluto. As´ en este sistema tienen representaci´n las cantidades
                    ı,                                    o
±0, . . . , ±(2N − 1). En el caso particular de 1 byte, esas cantidades son
−127, . . . , −0, +0, . . . , +127.
    En este sistema, la aritm´tica es bastante simple: la suma de canti-
                             e
dades del mismo signo y la resta de cantidades de distinto signo siguen
la regla b´sica en binario. Para sumar cantidades de distinto signo, o
          a
restar cantidades del mismo signo, resulta m´s pr´ctico el m´todo del
                                              a    a          e
complemento.
36                Cap´                    ´                 ´
                     ıtulo 2. Representacion de la informacion


    Se observa el inconveniente de que el cero tiene una doble represen-
taci´n, por lo que el test de la comparaci´n para la igualdad en este
    o                                       o
sistema debe tenerlo en cuenta. Por otra parte, la suma/resta de signos
y valores absolutos necesita dos algoritmos distintos, que no resultan
muy eficientes. Los siguientes sistemas surgen precisamente para tratar
de paliar estas deficiencias.

N´ meros enteros con signo. Complemento restringido
 u
     Para comprender mejor el funcionamiento de este convenio en bina-
rio, conviene introducirlo primero en base diez. Si consideramos palabras
de N = 2 d´  ıgitos (decimales), es posible representar 102 = 100 canti-
dades distintas. En este convenio se opta por considerar los n´meros      u
negativos de {−49, . . . , −0}, y los positivos de {0, . . . , 49}, del siguiente
modo: los n´meros positivos se representan en decimal natural, mientras
            u
que para cada negativo −z se toma la cantidad 99 − z (complemento de
z respecto de 102 − 1, que es la N=2 potencia de la base menos uno).
As´ por ejemplo, tenemos:
   ı
                              repr(29) =         2   9

                       repr(−29) = 99 − 29 =             7        0
     Con este convenio, las cantidades
                       −49, −48, . . . , −0, 0, 1, . . . , 48, 49
se representan respectivamente mediante
       5 0 , 5 1 , ... , 9 9 , 0 0 , 0 1 , ... , 4 8 , 4 9
   Aunque se observa el inconveniente de que el cero tiene dos repre-
sentaciones, la ventaja de este convenio consiste en que la suma de dos
n´meros, sea cual fuere su signo, se lleva a cabo con un mismo algoritmo,
 u
que s´lo se diferencia de la suma de enteros en que el posible arrastre se
     o
agrega al resultado final:
                + 23        →               2    3
           +    − 15        →        +      8    4
                                                             +1
                                     1      0    7           →        0   8
´
2.2. Representacion digital de los datos                                        37


Consideremos ahora esta representaci´n con palabras de N = 4 d´
                                      o                       ıgitos
binarios: las cantidades representables son

       −7, −6, . . . , −0, +0, . . . , +6, +7
            → −111(2 , −110(2 , . . . , −0(2 , +0(2 , . . . , +110(2 , +111(2

que, al complementar las negativas respecto de 1111, resulta:

            → 1000, 1001, . . . , 1111, 0000, . . . , 0110, 0111

N´ meros enteros con signo. Complemento aut´ntico
 u                                         e
    Empezamos nuevamente con la base decimal como punto de partida,
y consideremos tambi´n palabras de longitud N = 2. Ahora se opta por
                           e
considerar los n´meros negativos de {−50, . . . , −1}, y los positivos de
                     u
{0, . . . , 49}, del siguiente modo: los n´meros positivos se representan en
                                          u
binario natural, mientras que para cada negativo −z se toma la cantidad
100 − z (complemento de z respecto de 10, que es la base para N = 2).

                             repr(29) =         2    9

                     repr(−29) = 100 − 29 =              7   1

    Con frecuencia se emplea otra regla equivalente para complementar
los n´meros negativos, consistente en a˜adir una unidad al correspon-
     u                                  n
diente complemento restringido.
   Con este convenio, las cantidades

                      −50, −49, . . . , −1, 0, 1, . . . , 48, 49

   se representan respectivamente mediante

      5 0 , 5 1 , ... , 9 9 , 0 0 , 0 1 , ... , 4 8 , 4 9

    Este sistema tiene las mismas ventajas que el anterior, y adem´s el
                                                                  a
cero se representa de un unico modo.
                          ´
38                Cap´                    ´                 ´
                     ıtulo 2. Representacion de la informacion


   Como en el caso anterior, consideremos ahora la base dos, con pala-
bras de N = 4 d´
               ıgitos, donde tienen cabida las cantidades

       −8, −7, . . . , −1, +0, . . . , +7
            → −1000(2 , −111(2 , . . . , −1(2 , +0(2 , . . . , +110(2 , +111(2

que, al complementar las negativas respecto de 10000, resulta:

            → 1000, 1001, . . . , 1111, 0000, . . . , 0110, 0111.

    En este sistema, la suma tambi´n se lleva a cabo con un mismo algo-
                                  e
ritmo, igual al usado para el complemento restringido, pero ignorando
la posible cifra de arrastre:

                + 23        →               2   3
           +    − 15        →        +      8   5
                                     1      0   8       →         0    8

Funcionamiento de las operaciones aritm´ticas
                                       e
    Debe subrayarse que las operaciones anteriores no coinciden con las
aritm´ticas, debido a la posibilidad de que se produzca un desborda-
      e
miento; los diferentes sistemas responden ante esta circunstancia de di-
ferentes modos: por ejemplo, ignorando la ultima cifra de arrastre, o
                                             ´
interrumpiendo su trabajo para delatar una condici´n de error. Por lo
                                                    o
tanto, es necesario prever esta posibilidad y conocer de qu´ modo re-
                                                             e
acciona nuestro sistema. Sobre este asunto volveremos m´s adelante,
                                                            a
dentro de este mismo cap´  ıtulo.

Formatos de los n´ meros enteros en las computadoras
                 u
    Entre los convenios presentados, el m´s frecuente es el del comple-
                                            a
mento aut´ntico en base dos, llamado simplemente complemento a dos.
           e
Ahora bien, depender´ de la longitud de palabra la cantidad de com-
                        a
binaciones posibles y, por tanto, el rango de enteros considerado. Por
otra parte, aunque ciertos sistemas trabajan con palabras de longitud
variable, lo corriente es optar por uno o varios formatos con tama˜o fijo:
                                                                   n
simple (1 byte), doble (2 bytes), cu´druple (4 bytes) u octuple (8 bytes).
                                     a                  ´
´
2.2. Representacion digital de los datos                                               39


2.2.2    Representaci´n de los n´ meros reales
                     o          u
    Debe resaltarse que, en general, s´lo resulta posible representar apro-
                                      o
ximaciones de los n´meros reales mediante n´meros decimales, con s´lo
                     u                         u                        o
unas pocas cifras significativas. En el siguiente apartado estudiaremos
los efectos de este redondeo.
    En este apartado, supondremos que disponemos de un espacio de N
bits, con lo que es posible representar 2N enteros distintos.

Convenio con coma fija
    Si disponemos de un espacio de N bits para representar un n´mero
                                                                   u
real, la caracter´
                 ıstica principal de este convenio es la reserva impl´
                                                                     ıcita
de algunos bits fijos para la parte decimal, asumi´ndose la coma en una
                                                   e
posici´n fija. A su vez, existen los siguientes modos de representaci´n
       o                                                               o
en coma fija:

   • Sistema signo y valor absoluto
      En este convenio se reserva un bit para codificar el signo, y del resto
      se destina una cantidad fija para representar el valor absoluto de
      la parte entera, y los dem´s para la decimal:
                                 a


          1     0   1   0   0   1     0   0     1   0   1   1   1       1    0     1
                                                                    .
          ±                         p. entera                               dec.

      Si consideramos por ejemplo N = 16, siendo el primer bit el que
      codifica el signo, los siguientes 12 los de la parte entera, y los
      3 restantes los de la parte decimal, resulta que la representaci´n
                                                                      o
      anterior significar´
                        ıa

              −010010010111.101
                    = −(210 + 27 + 24 + 22 + 21 + 20 + 2−1 + 2−3 )
                    = −1175 625.
40               Cap´                    ´                 ´
                    ıtulo 2. Representacion de la informacion


     • Complemento restringido y complemento aut´ntico
                                                e
       Sea D = 3 el n´mero (fijo) de decimales asumidos. La represen-
                       u
       taci´n de un n´mero x, en cualquiera de estos convenios, consiste
           o          u
       en codificar en su lugar la parte entera de x ∗ 23 en el convenio
       elegido. La cantidad despreciada al truncar los decimales de x ∗ 23
       es menor que 0 125(10 (= 2−3 ).

     Por ejemplo, para representar −2 8 en palabras de N = 8 y D = 3,
debemos conformarnos con una aproximaci´n: al ser D = 3, s´lo po-
                                            o                   o
demos representar cantidades decimales m´ ltiplos enteros de 0 001(2 =
                                           u
2−3 = 0 125(10 . Como trunc(−2 8 ∗ 8) = trunc(−22 4) = −22, repre-
 (10
sentamos −22/8 = −2 75. Comprobamos que esta cantidad es efectiva-
mente m´ltiplo de 0 125, y que el siguiente m´ltiplo (−2 875) excede la
          u                                   u
cantidad inicial (−2 8).

     • Signo y valor absoluto:
                        1 1            1    0     0   1     0       1    1     0
           2.75 = 2 +    +       =
                        2 4                                     .
                                       ±        p. entera               dec.

     • Complemento restringido (8 d´
                                   ıgitos):

                     11111111
          −22 = −                    → 11101001 = 1 1 1 0 1 0 0 1
                        10110(2

     • Complemento aut´ntico (8 d´
                      e          ıgitos):

                     100000000
         −22 = −                      → 11101010 = 1 1 1 0 1 0 1 0
                         10110(2

Convenios con coma flotante
    El principal inconveniente de la coma fija consiste en condicionar
el orden de magnitud de las cantidades codificadas. Un sistema m´s    a
general deber´ adaptarse a ordenes tan distantes como los de la masa de
              a            ´
´
2.2. Representacion digital de los datos                                     41


la tierra y la del atomo. El sistema m´s conocido con esta caracter´
                   ´                  a                            ıstica
es la llamada notaci´n exponencial (o cient´
                      o                     ıfica):

                 140 = +0.14 ∗ 103 = +0.14E3
                 6.02215 ∗ 1023    = +0.602215E24
                 0.00000015        = +0.15E − 6

    Los convenios con coma flotante funcionan del mismo modo, divi-
diendo la informaci´n sobre una cantidad en tres partes: su signo, su
                     o
mantisa (es decir, las cifras significativas de mayor orden), y el exponente
(que expresa el orden de magnitud). As´ por ejemplo, consideremos la
                                            ı
siguiente representaci´n en palabras de N bits:
                       o

   • El signo, adscrito al primer bit, donde el uno representa al signo
     menos.

   • El exponente (z), situado en los siguientes e bits, puede tomar los
     valores de {−2e−1 , . . . , 2e−1 − 1}. Frecuentemente se representa
     desplazado en +2e−1 unidades:

            z ∈ {−2e−1 , . . . , 2e−1 − 1} ⇒ repr(z) ∈ {0, . . . , 2e − 1}

   • Para la mantisa quedan M = N − e − 1 bits con lo que, para su
     representaci´n, se toman los primeros M d´
                 o                            ıgitos de su escritura en
     binario natural.

Como ejemplo concreto, consideremos el convenio est´ndar IEEE 754
                                                         a
(real con precisi´n simple, o real corto), que es una de las codificaciones
                 o
de reales m´s utilizadas. Su representaci´n requiere un total de 32 bits,
            a                              o
de los cuales un bit se utiliza para el signo, 8 bits para el exponente
y 23 bits para la mantisa. Este convenio en concreto, utiliza un truco
llamado bit oculto: como el bit m´s significativo de la mantisa es un 1,
                                    a
ahorramos un bit simplemente asumi´ndolo. Se logra as´ espacio para
                                        e                   ı
una mantisa de 24 d´ ıgitos significativos. El inconveniente de emplear un
bit oculto consiste en que se requiere una representaci´n especial para
                                                          o
el cero.
42              Cap´                    ´                 ´
                   ıtulo 2. Representacion de la informacion


2.2.3    Limitaciones de los sistemas de representaci´n
                                                     o
         digital de los n´ meros
                         u
    Debido a que los sistemas de codificaci´n considerados est´n inmer-
                                            o                  a
sos en sistemas finitos, s´lo pueden representar una cantidad finita de
                          o
elementos distintos. Esta limitaci´n resulta cr´
                                     o          ıtica a la hora de repre-
sentar elementos pertenecientes a conjuntos infinitos, como son los de
los n´meros enteros o reales. Como consecuencia, pueden producirse
      u
situaciones de error no deseables, por lo cual se hace necesario estudiar
el alcance de esas limitaciones, as´ como la manera de afrontarlas.
                                   ı

Limitaciones en los enteros
    En los enteros, las representaciones se limitan a un intervalo reducido
[m´ m´x ], de cardinal no superior a 2n , siendo n el tama˜o (en bits)
  ın, a                                                        n
de la representaci´n. As´ cuando surge la codificaci´n de n´meros fuera
                  o       ı,                           o      u
del rango considerado, se produce el llamado desbordamiento (overflow
en ingl´s).
       e
    Por ejemplo, en una representaci´n con 4 bits ser´n posibles 16 con-
                                      o              a
figuraciones. Si optamos por el convenio de complementaci´n aut´ntica,
                                                           o      e
el intervalo considerado ser´ [−8, 7]. Veamos qu´ ocurre al sumar 5 y 6.
                            a                   e
                5          →            0101
            +   6          →        +   0110
                                        1011        →         −5
    El comportamiento de las operaciones de suma y resta en el sistema
de complementaci´n aut´ntica para una representaci´n de n bits se puede
                  o    e                            o
describir as´ llamemos x e y a la representaci´n de x e y, y + y − a las
            ı:                                o
operaciones de suma y resta en este sistema, ∀x, y ∈ [−2n−1 , 2n−1 − 1],
tenemos:
                    
                     (x ± y + 2n ) ,
                                       si x ± y < −2n−1
        x ± y =        (x ± y) ,        si x ± y ∈ [−2n−1 , 2n−1 − 1]
                    
                     (x ± y − 2n ) ,   si x ± y > 2n−1 − 1
    Para paliar en cierta medida esta limitaci´n, es frecuente incorpo-
                                              o
rar tipos de datos correspondientes a rangos de enteros m´s amplios
                                                            a
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto
Librocompleto

Mais conteúdo relacionado

Mais procurados (10)

Guia de matematicas
Guia de matematicasGuia de matematicas
Guia de matematicas
 
Modulo fisica-i1
Modulo fisica-i1Modulo fisica-i1
Modulo fisica-i1
 
Aa
AaAa
Aa
 
Diseño canónico control automatico
Diseño canónico control automaticoDiseño canónico control automatico
Diseño canónico control automatico
 
Fundamentos de-calculo
Fundamentos de-calculoFundamentos de-calculo
Fundamentos de-calculo
 
Librotmed
LibrotmedLibrotmed
Librotmed
 
Metodologia Hefesto - Business Intelligence
Metodologia Hefesto - Business IntelligenceMetodologia Hefesto - Business Intelligence
Metodologia Hefesto - Business Intelligence
 
Datawarehouse hefesto
Datawarehouse hefestoDatawarehouse hefesto
Datawarehouse hefesto
 
Hefesto v2.1
Hefesto v2.1Hefesto v2.1
Hefesto v2.1
 
Arduino Manual de Usuario
Arduino Manual de UsuarioArduino Manual de Usuario
Arduino Manual de Usuario
 

Destaque

Yoga cat pause
Yoga cat pauseYoga cat pause
Yoga cat pauseryannoel
 
Tig
Tig Tig
Tig NOE
 
Woodall Chevrolet Aaa Traffic Safety Index
Woodall Chevrolet Aaa Traffic Safety IndexWoodall Chevrolet Aaa Traffic Safety Index
Woodall Chevrolet Aaa Traffic Safety IndexWoodallChevrolet
 
Procesos productivos
Procesos productivosProcesos productivos
Procesos productivosVicenteeee
 
SAN Internet - Missão, Visão e Valores
SAN Internet - Missão, Visão e ValoresSAN Internet - Missão, Visão e Valores
SAN Internet - Missão, Visão e ValoresSAN Internet Brasil
 
Document test
Document testDocument test
Document testsc4rpia
 
Last man standing
Last man standingLast man standing
Last man standinglargehat
 
SuntrupAutomotiveFamily_AAA Traffic Safety Index
SuntrupAutomotiveFamily_AAA Traffic Safety IndexSuntrupAutomotiveFamily_AAA Traffic Safety Index
SuntrupAutomotiveFamily_AAA Traffic Safety IndexSuntrup BuickGMC
 
RobertsAutoCenter.org_2009 AAA Traffic Safety Index
RobertsAutoCenter.org_2009 AAA Traffic Safety IndexRobertsAutoCenter.org_2009 AAA Traffic Safety Index
RobertsAutoCenter.org_2009 AAA Traffic Safety IndexRoberts Auto Center
 
Giza ugalketa 6 c 1.taldea
Giza ugalketa 6 c 1.taldeaGiza ugalketa 6 c 1.taldea
Giza ugalketa 6 c 1.taldeamendigoiti
 
Salarios profesores ocde
Salarios profesores ocdeSalarios profesores ocde
Salarios profesores ocdePaco Alvarez
 
Webdagene2007 Ove Dalen Effektivt Innhold
Webdagene2007 Ove Dalen Effektivt InnholdWebdagene2007 Ove Dalen Effektivt Innhold
Webdagene2007 Ove Dalen Effektivt InnholdAnette Urhamar
 

Destaque (20)

Yoga cat pause
Yoga cat pauseYoga cat pause
Yoga cat pause
 
Practica 11
Practica 11Practica 11
Practica 11
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Tig
Tig Tig
Tig
 
Laparejaperfecta
LaparejaperfectaLaparejaperfecta
Laparejaperfecta
 
Woodall Chevrolet Aaa Traffic Safety Index
Woodall Chevrolet Aaa Traffic Safety IndexWoodall Chevrolet Aaa Traffic Safety Index
Woodall Chevrolet Aaa Traffic Safety Index
 
Procesos productivos
Procesos productivosProcesos productivos
Procesos productivos
 
Revolucion
RevolucionRevolucion
Revolucion
 
SAN Internet - Missão, Visão e Valores
SAN Internet - Missão, Visão e ValoresSAN Internet - Missão, Visão e Valores
SAN Internet - Missão, Visão e Valores
 
Sesion 3
Sesion 3Sesion 3
Sesion 3
 
Document test
Document testDocument test
Document test
 
Last man standing
Last man standingLast man standing
Last man standing
 
SuntrupAutomotiveFamily_AAA Traffic Safety Index
SuntrupAutomotiveFamily_AAA Traffic Safety IndexSuntrupAutomotiveFamily_AAA Traffic Safety Index
SuntrupAutomotiveFamily_AAA Traffic Safety Index
 
RobertsAutoCenter.org_2009 AAA Traffic Safety Index
RobertsAutoCenter.org_2009 AAA Traffic Safety IndexRobertsAutoCenter.org_2009 AAA Traffic Safety Index
RobertsAutoCenter.org_2009 AAA Traffic Safety Index
 
A03510108
A03510108A03510108
A03510108
 
Giza ugalketa 6 c 1.taldea
Giza ugalketa 6 c 1.taldeaGiza ugalketa 6 c 1.taldea
Giza ugalketa 6 c 1.taldea
 
Salarios profesores ocde
Salarios profesores ocdeSalarios profesores ocde
Salarios profesores ocde
 
Professionalism
ProfessionalismProfessionalism
Professionalism
 
02-03-12 Un Modelo Alternativo para armar 2012 - 2020
02-03-12 Un Modelo Alternativo para armar 2012 - 202002-03-12 Un Modelo Alternativo para armar 2012 - 2020
02-03-12 Un Modelo Alternativo para armar 2012 - 2020
 
Webdagene2007 Ove Dalen Effektivt Innhold
Webdagene2007 Ove Dalen Effektivt InnholdWebdagene2007 Ove Dalen Effektivt Innhold
Webdagene2007 Ove Dalen Effektivt Innhold
 

Semelhante a Librocompleto (20)

Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Manual dr geo
Manual dr geoManual dr geo
Manual dr geo
 
Teoriapto
TeoriaptoTeoriapto
Teoriapto
 
Rarepaso
RarepasoRarepaso
Rarepaso
 
Rarepaso
RarepasoRarepaso
Rarepaso
 
Ec.pdf
Ec.pdfEc.pdf
Ec.pdf
 
Vba excel mnumericos1
Vba excel mnumericos1Vba excel mnumericos1
Vba excel mnumericos1
 
Vba excel mnumericos
Vba excel mnumericosVba excel mnumericos
Vba excel mnumericos
 
Vba excel numericos
Vba excel numericosVba excel numericos
Vba excel numericos
 
Gulp 0.11
Gulp 0.11Gulp 0.11
Gulp 0.11
 
Redestelecomunicacion
RedestelecomunicacionRedestelecomunicacion
Redestelecomunicacion
 
Diseño Robusto y Multiobjetivos de Sistemas
Diseño Robusto y Multiobjetivos de SistemasDiseño Robusto y Multiobjetivos de Sistemas
Diseño Robusto y Multiobjetivos de Sistemas
 
Intro2
Intro2Intro2
Intro2
 
Intro progvb
Intro progvbIntro progvb
Intro progvb
 
Linux benchmarking como
Linux benchmarking comoLinux benchmarking como
Linux benchmarking como
 
Introduccion a la programacion en c prev
Introduccion a la programacion en c prevIntroduccion a la programacion en c prev
Introduccion a la programacion en c prev
 
Manual cpp
Manual cppManual cpp
Manual cpp
 
Guia rapida
Guia rapidaGuia rapida
Guia rapida
 
Java a tope
Java a topeJava a tope
Java a tope
 
Curso de html y phpnuke
Curso de html y phpnukeCurso de html y phpnuke
Curso de html y phpnuke
 

Librocompleto

  • 1. ´ Cristobal Pareja ´ Angel Andeyro Manuel Ojeda Introducci´n a la Inform´tica o a I. Aspectos generales
  • 2. 1a Edici´n o Febrero 1994 c Crist´bal Pareja o ´ Angel Andeyro Manuel Ojeda ISBN: 84-7491-489-2 Dep´sito Legal: M-7713-94 o
  • 3. ´ Indice General Presentaci´n o 11 1 Conceptos B´sicos a 17 1.1 Inform´tica . . . . . . . . . . . . . a . . . . . . . . . . . . . 17 1.2 Computador . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.3 Sistema operativo . . . . . . . . . . . . . . . . . . . . . . . 19 1.4 Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.5 Algoritmos y programas . . . . . . . . . . . . . . . . . . . 21 1.5.1 Algoritmos . . . . . . . . . . . . . . . . . . . . . . 22 1.5.2 Programaci´n . . . . . . . . o . . . . . . . . . . . . . 24 1.5.3 Lenguajes de Programaci´n o . . . . . . . . . . . . . 25 1.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.7 Comentarios bibliogr´ficos . . . . . a . . . . . . . . . . . . . 28 2 Representaci´n de la informaci´n o o 29 2.1 Conceptos previos . . . . . . . . . . . . . . . . . . . . . . 29 2.1.1 Informaci´n anal´gica y digital . . . . . . . . . . o o . 29 2.1.2 Unidades de informaci´n en los sistemas digitales o . 30 2.1.3 Sistemas de numeraci´n posicionales . . . . . . . o . 31 2.2 Representaci´n digital de los datos . . . . . . . . . . . . o . 35 2.2.1 Representaci´n de los n´meros enteros . . . . . . o u . 35 2.2.2 Representaci´n de los n´meros reales . . . . . . . o u . 39 2.2.3 Limitaciones de los sistemas de representaci´n di- o gital de los n´meros . . . . . . . . . . . . . . . . u . 42 2.2.4 Representaci´n de los caracteres . . . . . . . . . o . 46 2.2.5 Organizaci´n de datos m´s complejos . . . . . . o a . 47
  • 4. 6 ´ Indice general 2.2.6 Representaci´n de las instrucciones . o . . . . . . . . 48 2.3 C´digos redundantes . . . . . . . . . . . . . o . . . . . . . . 49 2.3.1 Informaci´n y redundancia . . . . . o . . . . . . . . 49 2.3.2 C´digos s´lo autodetectores: p de n o o . . . . . . . . 51 2.3.3 C´digos autocorrectores: Hamming . o . . . . . . . . 51 2.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.5 Comentarios bibliogr´ficos . . . . . . . . . . a . . . . . . . . 57 3 Estructura f´ ısica de un computador 59 3.1 Componentes de un computador . . . . . . . . . . . . . . 60 3.1.1 Memoria principal . . . . . . . . . . . . . . . . . . 62 3.1.2 Unidad central de proceso . . . . . . . . . . . . . . 67 3.1.3 Perif´ricos . . . . . . . . . . . . . . . . . . . . . . e . 70 3.1.4 Buses de comunicaci´n . . . . . . . . . . . . . . . o . 74 3.2 Lenguajes de m´quina . . . . . . . . . . . . . . . . . . . a . 77 3.2.1 Formato de las instrucciones . . . . . . . . . . . . 78 3.2.2 Tipos de Instrucciones . . . . . . . . . . . . . . . . 79 3.3 Un ejemplo de recapitulaci´n . . . . . . . . . . . . . . . o . 80 3.3.1 UCP con acumulador . . . . . . . . . . . . . . . . 81 3.3.2 Un juego de instrucciones de m´quina de una di- a recci´n . . . . . . . . . . . . . . . . . . . . . . . . o . 82 3.3.3 Ejecuci´n de una instrucci´n. Detalle . . . . . . o o . 84 3.3.4 Traducci´n y ejecuci´n de un programa sencillo . o o . 85 3.4 Observaciones complementarias . . . . . . . . . . . . . . . 88 3.4.1 Tipos de direccionamiento . . . . . . . . . . . . . . 89 3.4.2 Subrutinas . . . . . . . . . . . . . . . . . . . . . . 91 3.4.3 Interrupciones . . . . . . . . . . . . . . . . . . . . 94 3.5 Otras arquitecturas . . . . . . . . . . . . . . . . . . . . . . 95 3.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 3.7 Comentarios bibliogr´ficos . . . . . . . . . . . . . . . . . a . 99 4 Sistemas Operativos 101 4.1 Cometido de un sistema operativo . . . . . . . . . . . . . 102 4.1.1 Funciones de los sistemas operativos . . . . . . . . 102 4.1.2 Formas de trabajo de los sistemas operativos . . . 103 4.2 Conceptos b´sicos de los sistemas operativos . . . . . a . . . 105
  • 5. ´ Indice general 7 4.2.1 Procesos . . . . . . . . . . . . . . . . . . . . . . . . 105 4.2.2 Archivos . . . . . . . . . . . . . . . . . . . . . . . . 106 4.2.3 N´cleo . . . . . . . . . . . . . . u . . . . . . . . . . . 109 4.2.4 Multiprogramaci´n . . . . . . . o . . . . . . . . . . . 110 4.2.5 Interfaz de usuario . . . . . . . . . . . . . . . . . . 111 4.2.6 Gesti´n de la memoria . . . . . o . . . . . . . . . . . 112 4.3 Clasificaci´n de los sistemas operativos o . . . . . . . . . . . 116 4.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 4.5 Comentarios bibliogr´ficos . . . . . . . a . . . . . . . . . . . 117 5 Lenguajes de programaci´n o 119 5.1 Lenguajes de bajo y alto nivel . . . . . . . . . . . . . . . . 120 5.1.1 Lenguajes orientados a la m´quina . . a . . . . . . . 120 5.1.2 Lenguajes de alto nivel . . . . . . . . . . . . . . . . 122 5.1.3 Paradigmas de programaci´n . . . . . o . . . . . . . 124 5.2 Descripci´n de los lenguajes de programaci´n o o . . . . . . . 131 5.2.1 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . 131 5.2.2 Sem´ntica . . . . . . . . . . . . . . . . a . . . . . . . 137 5.3 Procesadores de lenguajes . . . . . . . . . . . . . . . . . . 141 5.3.1 Compiladores e int´rpretes . . . . . . e . . . . . . . 144 5.3.2 Entornos de programaci´n . . . . . . . o . . . . . . . 144 5.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 5.5 Comentarios bibliogr´ficos . . . . . . . . . . . a . . . . . . . 149 6 Bases de datos 151 6.1 Bases de datos y SGBD . . . . . . . . . . . . . . . . . . . 151 6.1.1 Archivos y SGA . . . . . . . . . . . . . . . . . . . 151 6.1.2 Bases de datos y SGBD . . . . . . . . . . . . . . . 152 6.1.3 Niveles de una base de datos . . . . . . . . . . . . 154 6.2 El modelo entidad-relaci´n . . . . . . . o . . . . . . . . . . . 155 6.3 Modelos de datos basados en registros . . . . . . . . . . . 158 6.3.1 El modelo relacional . . . . . . . . . . . . . . . . . 158 6.4 Lenguajes asociados a los SGBD . . . . . . . . . . . . . . 160 6.4.1 Lenguajes relacionales . . . . . . . . . . . . . . . . 161 6.5 Elementos de un SGBD . . . . . . . . . . . . . . . . . . . 163 6.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
  • 6. 8 ´ Indice general 6.7 Comentarios bibliogr´ficos . . . . . . . . . . . . . . . . . . 165 a 7 Historia de los instrumentos de c´lculo a 167 7.1 Precursores de los computadores digitales . . . . . . . . . 167 7.1.1 La antig¨edad . . . . . . . . . . . . . . u . . . . . . 167 7.1.2 Antecedentes del c´lculo mec´nico . . . a a . . . . . . 168 7.1.3 La m´quina de Pascal . . . . . . . . . . a . . . . . . 168 7.1.4 La m´quina de Babbage . . . . . . . . . a . . . . . . 169 7.1.5 La tabulaci´n mec´nica . . . . . . . . . o a . . . . . . 170 7.2 Nacimiento de los computadores . . . . . . . . . . . . . . 171 7.2.1 El modelo de von Neumann . . . . . . . . . . . . . 172 7.2.2 Generaciones tecnol´gicas . . . . . . . . o . . . . . . 172 7.3 Evoluci´n de los lenguajes y de la metodolog´ o ıa . . . . . . 175 7.4 Tecnolog´ actual, tendencias y perspectivas . . ıa . . . . . . 176 7.4.1 Inteligencia artificial . . . . . . . . . . . . . . . . . 178 7.4.2 Las comunicaciones . . . . . . . . . . . . . . . . . . 178 7.5 Comentarios bibliogr´ficos . . . . . . . . . . . . a . . . . . . 179 A Introducci´n al DOS o 181 A.1 Organizaci´n de recursos . . . . . . . . . . . . . o . . . . . . 182 A.1.1 Principales dispositivos . . . . . . . . . . . . . . . 182 A.1.2 Archivos . . . . . . . . . . . . . . . . . . . . . . . . 182 A.1.3 Directorios . . . . . . . . . . . . . . . . . . . . . . 184 A.1.4 Prompt . . . . . . . . . . . . . . . . . . . . . . . . 187 ´ A.2 Ordenes del DOS . . . . . . . . . . . . . . . . . . . . . . . 187 ´ A.2.1 Ordenes b´sicas . . . . . . . . . . . . . . a . . . . . . 190 A.2.2 Manejo de archivos . . . . . . . . . . . . . . . . . . 191 A.2.3 Manejo de directorios . . . . . . . . . . . . . . . . 193 A.2.4 Indicadores del sistema . . . . . . . . . . . . . . . 194 A.2.5 Procesamiento por lotes . . . . . . . . . . . . . . . 195 A.3 Configuraci´n del DOS . . . . . . . . . . . . . . o . . . . . . 195 A.4 Otros aspectos de inter´s . . . . . . . . . . . . . e . . . . . . 198 A.4.1 Encauzamiento: tubos y dem´s . . . . . a . . . . . . 198 A.4.2 Atributos y protecci´n de archivos . . . o . . . . . . 201 A.4.3 Ampliaciones de la memoria en los PCs . . . . . . 201
  • 7. ´ Indice general 9 B Introducci´n a UNIX o 205 B.1 Breve descripci´n t´cnica . . . . . . . . . . . o e . . . . . . . 205 B.2 Una sesi´n con UNIX . . . . . . . . . . . . . o . . . . . . . 207 B.3 Gesti´n de archivos . . . . . . . . . . . . . . . o . . . . . . . 208 B.3.1 Identificadores . . . . . . . . . . . . . . . . . . . . 209 B.3.2 Tipos de archivos en UNIX . . . . . . . . . . . . . 209 B.3.3 Permisos asociados con un archivo . . . . . . . . . 210 ´ B.3.4 Ordenes para la gesti´n de archivos . . o . . . . . . . 211 B.4 El shell de UNIX . . . . . . . . . . . . . . . . . . . . . . . 212 B.4.1 Encauzamiento de la entrada y salida . . . . . . . 213 B.4.2 Caracteres comod´ . . . . . . . . . . ın . . . . . . . 213 B.4.3 Guiones de shell . . . . . . . . . . . . . . . . . . . 214 B.5 UNIX como sistema multitarea . . . . . . . . . . . . . . . 214 B.6 Conclusi´n . . . . . . . . . . . . . . . . . . . o . . . . . . . 216 B.7 Prontuario de comandos UNIX . . . . . . . . . . . . . . . 216 B.8 Diferencias entre DOS y UNIX . . . . . . . . . . . . . . . 221 Bibliograf´ ıa 223 ´ Indice alfab´tico e 228
  • 8. Presentaci´n o Hay muchos y excelentes libros sobre inform´tica en un nivel intro- a ductorio, con diversos enfoques y escritos en nuestra lengua. Muchos de ellos est´n dirigidos a futuros inform´ticos, por lo que resultan, quiz´, a a a demasiado profundos para quienes s´lo persiguen aplicar la inform´tica o a en su trabajo; muchos otros, en cambio, se dirigen a no profesionales, por lo que ofrecen una visi´n panor´mica demasiado general de diver- o a sos aspectos de la inform´tica, sin detenerse a analizar las implicaciones a pr´cticas de esos aspectos. a Este libro se sit´a entre ambos extremos, ofreciendo un medio para u introducir en la inform´tica a profesionales de otros campos que, sin em- a bargo, necesiten aplicar adecuadamente los computadores en su trabajo, poniendo en marcha programas de aplicaci´n o manejando bancos de o datos e incluso, muchas veces, resolviendo por s´ mismos problemas no ı contemplados en los programas comercializados. As´ pues, el contenido del texto incluye los temas que consideramos ı b´sicos para una introducci´n pr´ctica a la inform´tica. Quiz´ sea este a o a a a enfoque pr´ctico lo que mejor distinga a este texto de otros de intro- a ducci´n a la inform´tica, que adolecen muchas veces de contenidos muy o a extensos y te´ricos, casi enciclop´dicos, en los que es dif´ diferenciar o e ıcil los conocimientos utiles en general de aqu´llos que s´lo encontrar´n de ´ e o a utilidad inform´ticos profesionales. a Por lo tanto, este libro se dirige a quienes necesiten una formaci´no introductoria en inform´tica, con un enfoque b´sico y pr´ctico, pero rigu- a a a roso. Entre ellos se encuentran, en primer lugar, todos aquellos alumnos
  • 9. 12 ´ Presentacion de los primeros cursos universitarios que cuenten con asignaturas sobre inform´tica, tanto si se utiliza como herramienta aplicada a la resoluci´n a o de problemas como si es el propio objeto de estudio. Este libro se dirige asimismo a aquellas personas que, de una u otra forma, est´n relacionadas con el mundo de la inform´tica (operadores, a a comerciales, empresarios, etc.) y, sin embargo, ignoran lo que se esconde tras la fachada de un computador (c´mo se almacena la informaci´n, o o cu´les son los procesos que se est´n ejecutando en su interior, etc.) y a a que utilizan una jerga t´cnica sin entender bien de qu´ hablan. e e Por ultimo, este libro se dirige tambi´n a todos los usuarios de com- ´ e putadores que est´n interesados en conocer mejor su herramienta de e trabajo, en saber qu´ estan haciendo y por qu´ lo hacen. El desarrollo e e y abaratamiento de los sistemas inform´ticos hace que computadores a de gran potencia que antes s´lo se encontraban en grandes centros de o c´lculo, atendidos por administradores de sistemas cualificados y dedi- a cados por completo a dicha tarea, est´n hoy sobre nuestra mesa, y que el e usuario se tenga que encargar de administrar los recursos de su computa- dor, por ejemplo, gestionando la memoria, haciendo copias de seguridad, eliminando virus, etc. Por todo ello, cualquier usuario deber´ dedicar ıa siquiera una peque˜a parte de su tiempo a conocer los principios b´sicos n a de funcionamiento y gesti´n de su computador. o A todos ellos, este texto les ofrece la posibilidad de adquirir esos conocimientos, partiendo de cero, o de actualizarlos. Se ha seleccionado el contenido partiendo de las directrices se˜aladas n en [DCG*89] y [ACM91] aunque, en un nivel introductorio, no sea po- sible ni deseable abarcar todos los temas que s´lo interesan al futuro o profesional de la inform´tica. As´ por ejemplo, quedan completamente a ı fuera del alcance de nuestro texto las areas de inteligencia artificial y ´ rob´tica (AI) o la comunicaci´n hombre-m´quina (HU ). o o a Es frecuente, en cambio, que los destinatarios mencionados necesi- ten una parte de conocimientos generales sobre inform´tica y otra sobre a desarrollo de algoritmos en un lenguaje de alto nivel: ambas partes se in- cluyen en los programas de asignaturas de introducci´n a la inform´tica o a
  • 10. ´ Presentacion 13 de los primeros cursos universitarios, y tambi´n interesan esas dos par- e tes a los profesionales que usen la inform´tica como una herramienta y a deseen sacar partido de ella. El presente texto comprende dos vol´menes, complementarios, dedi- u cados respectivamente a esas dos partes, separando as´ la presentaci´n ı o de los conceptos generales y el desarrollo y organizaci´n de algoritmos o y estructuras de datos. En la primera parte, el enfoque pr´ctico nos a ha llevado a relacionar los contenidos estudiados con sus repercusiones pr´cticas o su utilizaci´n. En la segunda, se ha unificado el estudio de a o los algoritmos con su desarrollo, haciendo uso de un lenguaje de progra- maci´n concreto. o Este primer volumen se ha dividido en siete cap´ ıtulos, de los cua- les el primero ofrece una visi´n panor´mica de la inform´tica, de los o a a computadores y de su uso en la actualidad: bien poniendo en marcha aplicaciones ya desarrolladas y adapt´ndolas a nuestras necesidades, o a preparando soluciones para problemas nuevos. Se presentan asimismo las primeras aproximaciones a los conceptos de algoritmo, programaci´n o y lenguajes de programaci´n. o En el cap´ ıtulo 2 se aborda la representaci´n digital de la informaci´n. o o Conociendo las distintas formas de representaci´n, el programador podr´ o a elegir las m´s apropiadas a las caracter´ a ısticas y naturaleza de su pro- blema y prever sus limitaciones. Por otra parte, el usuario de aplicacio- nes tendr´ una idea aproximada de c´mo se almacena su informaci´n, el a o o espacio que ocupa y las circunstancias en que los resultados podr´ noıan ser del todo fiables. El cap´ıtulo 3 est´ dedicado al aspecto f´ a ısico de los computadores y sus perif´ricos. Se explica su funcionamiento introduciendo los lenguajes e de bajo nivel, y se comentan brevemente las arquitecturas orientadas al procesamiento en paralelo. En el cap´ ıtulo 4 se estudian los conceptos b´sicos para entender lo a que son los sistemas operativos, cu´les son sus funciones y c´mo las a o llevan a cabo. El cap´ ıtulo 5 se dedica a los lenguajes de programaci´n, en espe- o
  • 11. 14 ´ Presentacion cial los lenguajes evolucionados. Se tratan distintos modelos de progra- maci´n, adem´s del imperativo, de amplia difusi´n en estos a˜os. Se o a o n introducen los metalenguajes para describir su sintaxis por su utilidad, tanto a programadores como a simples usuarios de sistemas operativos, incluso en el nivel de los comandos. Finalmente, se estudian los distintos tipos de traductores y los entornos de programaci´n. o El cap´ ıtulo 6 trata sobre las bases de datos, una de las aplicaciones de mayor aplicaci´n en el mundo empresarial. Entre los modelos des- o arrollados, destacamos el relacional y, entre los lenguajes de consulta, el SQL, debido a la extensa difusi´n de ambos en la actualidad. o Hemos dedicado el cap´ ıtulo 7 a los or´ ıgenes, estado actual y pers- pectivas de futuro de la inform´tica. Aunque muchos textos sit´an este a u tema al principio, hemos preferido estudiarlo una vez que se conocen los conceptos y la terminolog´ b´sicos. De esta forma mejora la com- ıa a prensi´n del cap´ o ıtulo y puede valorarse en su justa medida cada uno de los logros hist´ricos que en ´l se recogen. o e Debido al enfoque pr´ctico que perseguimos con este libro, se inclu- a yen dos ap´ndices dedicados a introducir en el manejo de dos sistemas e operativos concretos de gran difusi´n en la actualidad: el DOS y el o UNIX. El hecho de traer aqu´ estos anexos responde a dos razones: por ı un lado, conocer las caracter´ ısticas de cada sistema interesa al estudiante como un ejemplo particular del cap´ ıtulo 4, permitiendo ver c´mo se lleva o a la pr´ctica lo estudiado en la teor´ por otro, siempre resulta de uti- a ıa; lidad al principiante disponer de un peque˜o prontuario de las ´rdenes n o o mecanismos m´s inmediatos que necesitar´ sin duda para empezar a a a desenvolverse en el entorno de esos sistemas operativos. En la mayor´ de los cap´ ıa ıtulos, se ha incluido una peque˜a colecci´n n o de cuestiones y sencillos ejercicios de aplicaci´n, utiles para afianzar los o ´ conceptos introducidos. Adem´s, en cada cap´ a ıtulo se han seleccionado unas pocas referencias, para completar los contenidos presentados con otros enfoques, o bien para profundizar en el tema.
  • 12. ´ Presentacion 15 Agradecimientos En primer lugar, es inexcusable agradecer a la Editorial la confianza que ha puesto en nosotros al aceptar una publicaci´n sobre un tema en o el que, ya lo hemos dicho, existen abundantes textos en nuestra lengua, as´ como su paciencia en la recepci´n de los originales. ı o Tambi´n debemos dejar constancia de nuestra gratitud hacia los e compa˜eros que nos han alentado, desde el principio, a redactar este n ın a a ıa ´ trabajo. En especial, a Benjam´ Hern´ndez Bl´zquez, Mar´ Angeles Medina S´nchez, Salvador Paz Mart´ a ınez, Inma P´rez de Guzm´n Mo- e a lina y Marisol Timoneda Salinas, y tambi´n a todos aquellos alumnos e que, repetidamente, nos han sugerido la compilaci´n de unos apuntes de o clase. Durante la redacci´n de este trabajo, se han recogido numerosas opi- o niones y sugerencias. En particular, debemos agraceder las minuciosas revisiones y comentarios hechos por Manuel Enciso Garc´ ıa-Oliveros, Car- los Rossi Jim´nez, Jos´ Luis Gal´n Garc´ Jaime Fern´ndez Mart´ e e a ıa, a ınez, Ma Angeles Cano Colorado, Oscar Mart´ S´nchez y Cristina Rodr´ ´ ´ ın a ıguez Iglesias. Finalmente, quisi´ramos pedir la colaboraci´n de los lectores para e o subsanar las posibles deficiencias que encuentren.
  • 13. Cap´ ıtulo 1 Conceptos B´sicos a 1.1 Inform´tica . . . . . . . . a . . . . . . . . . . . . . . . . . . . . . 17 1.2 Computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.3 Sistema operativo . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.4 Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.5 Algoritmos y programas . . . . . . . . . . . . . . . . . . . . . . 21 1.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.7 Comentarios bibliogr´ficos a . . . . . . . . . . . . . . . . . . . . . 28 El objetivo principal de este cap´ ıtulo consiste en ofrecer una visi´n o general del contenido del libro, presentando los conceptos generales y los t´rminos m´s usados en inform´tica. Esta primera aproximaci´n e a a o nos permite situar cada uno de los temas siguientes en relaci´n con los o dem´s, y dentro del contexto de la inform´tica. a a 1.1 Inform´tica a La inform´tica es la ciencia que estudia el procesamiento autom´tico a a de la informaci´n. Aunque la necesidad de razonar sobre este tipo de o procesos existe desde tiempo atr´s, la consolidaci´n de la inform´tica a o a como ciencia s´lo se produce con el desarrollo de los computadores, a o partir de los a˜os cuarenta. Se trata, por lo tanto, de una ciencia muy n joven, pero que ha evolucionado a gran velocidad.
  • 14. 18 Cap´ ´ ıtulo 1. Conceptos Basicos La piedra maestra sobre la cual se ha podido desarrollar la infor- m´tica la representa el computador, que es una herramienta de gran a eficacia en muy diversos trabajos, y en particular en aqu´llos que ma- e nejan un gran volumen de datos o de operaciones. Esta versatilidad tiene dos aspectos: por un lado, es posible usarlo como herramienta para aplicaciones concretas ya desarrolladas (1.4), y por otro se pue- den dise˜ar soluciones a la medida de problemas nuevos, mediante la n programaci´n (1.5). o El desarrollo de un programa nuevo para resolver un determinado problema requiere, por una parte, conocer alg´n procedimiento siste- u m´tico (algoritmo) que lleve a su soluci´n, y por otra, la necesidad de a o expresarlo en un lenguaje de programaci´n que el computador pueda o comprender y ejecutar. 1.2 Computador Un computador es una m´quina electr´nica que procesa informaci´n a o o siguiendo las instrucciones de un programa registrado. Para comunicarse con el exterior dispone de unos medios de entrada, a trav´s de los que recibe la informaci´n, y unos medios de salida, por e o donde la env´ Tiene dispositivos que le permiten almacenar la infor- ıa. maci´n (los datos, los resultados y el propio programa) y procesarla o siguiendo las instrucciones del programa. La informaci´n que se procesa en el computador (programas, da- o tos y resultados) est´ expresada en forma digital binaria, combinando a ceros y unos. En consecuencia, tanto los programas como los datos y resultados deben codificarse en este formato para poder ser procesados. Una vez obtenidos los resultados, ´stos tienen que ser decodificados para e mostrarlos al usuario. Como hemos visto, un computador se compone de dos partes cla- ramente diferenciadas: una f´ ısica, que podemos tocar, constituida por circuitos electr´nicos, teclado, pantalla, unidades de disco, etc., llamado o hardware, o en castellano soporte f´ ısico, y otra parte inmaterial, que no
  • 15. 1.3. Sistema operativo 19 usuario software de aplicaciones y del sistema sistema operativo hardware Tabla 1.1. Estructura de niveles en un computador. podemos tocar, constituida por los programas y datos, llamada software en ingl´s y soporte l´gico en castellano. Ambas partes est´n ´ e o a ıntimamente relacionadas de forma que una no puede operar sin la otra y viceversa. 1.3 Sistema operativo Cuando se pone en marcha el computador, el primer programa que entra en funcionamiento es el sistema operativo, que gestiona y coordina los dos aspectos, f´ ısico y l´gico, del computador. Se trata de un conjunto o de programas que se interrelacionan estrechamente con el hardware, ges- tionando los procesos en ejecuci´n, las operaciones de entrada y salida y o la memoria. Por ello, resulta imprescindible para el funcionamiento del computador. Los dem´s programas funcionan sobre el sistema operativo, y son a gestionados por ´l. Entre ellos, se encuentran las herramientas para e el desarrollo de programas (tales como los editores y traductores de lenguajes), y tambi´n los programas de aplicaciones. e Por lo tanto, podemos decir que dentro del computador existe cierta organizaci´n por niveles (v´ase la tabla 1.1): en el nivel m´s bajo se o e a encuentra el hardware, que por s´ mismo no puede realizar ninguna tarea; ı a continuaci´n se encuentra el sistema operativo, y desde ´l se arrancan o e los otros programas, que a su vez se relacionan directamente con el usuario. En resumen, el hardware no puede funcionar por s´ mismo: nece- ı sita la ayuda del software. La uni´n de ambos constituye una m´quina o a virtual, tremendamente vers´til. a
  • 16. 20 Cap´ ´ ıtulo 1. Conceptos Basicos 1.4 Aplicaciones El software de aplicaciones est´ formado por aquellos programas que a han sido desarrollados para realizar tareas concretas. Se llama as´ por- ı que el computador “se aplica” a un trabajo determinado, facilitando su ejecuci´n y resoluci´n. Por ejemplo, un procesador de textos, una hoja o o de c´lculo, un gestor de bases de datos, un generador de gr´ficos, un a a programa de contabilidad, juegos, etc. Entre las aplicaciones m´s utilizadas se encuentran las siguientes: a • Los procesadores de textos son programas que facilitan la elabo- raci´n de textos en el computador, desde una carta hasta un li- o bro. Permiten operar con m´rgenes, tabuladores, justificaci´n, a o sangrado, tipos de letra, b´squeda y sustituci´n de palabras, pa- u o ginaci´n, separaci´n de s´ o o ılabas, sin´nimos, ortograf´ etc. Son o ıa, probablemente los programas m´s usados. a • Las hojas de c´lculo son programas utilizados en la creaci´n de a o tablas, con datos relacionados entre s´ inicialmente ideados para ı, el an´lisis financiero. Tienen un formato matricial, en el que se a pueden definir operaciones y funciones sobre las distintas compo- nentes de la matriz. Al modificar alg´n dato, todas las operaciones u que lo utilizan son actualizadas de forma autom´tica. a • Los gestores de bases de datos permiten gestionar la informaci´n o referida a personas o art´ ıculos, realizando operaciones de edici´n, o ordenaci´n, b´squeda, etc. o u • Los generadores de gr´ficos facilitan la creaci´n de distintos tipos a o de gr´ficos, a partir de datos de hojas de c´lculo o bases de datos, a a o directamente introducidos por el usuario. Existen muchas otras aplicaciones, de uso menos general, como son los programas matem´ticos, estad´ a ısticos, de CAD (Dise˜o Asistido por n Computador), aplicaciones contables y de gesti´n de empresas, comuni- o caciones, juegos, etc.
  • 17. 1.5. Algoritmos y programas 21 El desarrollo del software de aplicaciones ha sido muy grande (se cal- cula que para los computadores compatibles con IBM hay m´s de cien a mil aplicaciones diferentes). A su vez, los distintos programas van evo- lucionando, y aparecen nuevas versiones con m´s posibilidades y mayor a velocidad de ejecuci´n, aunque tambi´n con mayor demanda de potencia o e y memoria. En algunos casos, varios de estos programas se unen en uno solo, compartiendo datos e instrucciones, y constituyen un paquete integrado. En general suele integrarse una hoja de c´lculo con un generador de a gr´ficos y, a veces, con una base de datos y un procesador de textos. a Gran parte de los programas de aplicaci´n pueden configurarse, en o mayor o menor medida, de acuerdo con los gustos y necesidades del usuario; sin embargo, es posible que un programa concreto no pueda atender esas necesidades. En este caso, resulta muy dif´ por no decir ıcil, imposible (e ilegal en muchos casos), modificar el programa para incluir una nueva tarea. Conscientes de esta falta de flexibilidad del software, muchos fabricantes est´n presentando programas de aplicaci´n que a a o su vez pueden ser programados, mediante lenguajes de programaci´n o propios o est´ndares. a As´ pues, aunque la mayor´ de las personas que utilizan los compu- ı ıa tadores trabajan con programas de aplicaci´n y no necesitan recurrir a o la programaci´n, tambi´n hay un buen n´mero de usuarios que, sin ser o e u inform´ticos profesionales, pueden obtener un mayor rendimiento de es- a tos programas a trav´s de la programaci´n. Por ejemplo, muchas hojas e o de c´lculo, gestores de bases de datos y paquetes matem´ticos, hoy en a a d´ son programables. ıa, 1.5 Algoritmos y programas El desarrollo de programas es otro de los aspectos fundamentales de la utilizaci´n de los computadores porque continuamente aparecen o nuevos problemas o tareas susceptibles de ser procesados de forma au- tom´tica. Al mismo tiempo se van detectando las lagunas o deficiencias a en las aplicaciones existentes, lo que impulsa a su renovaci´n con la o
  • 18. 22 Cap´ ´ ıtulo 1. Conceptos Basicos creaci´n de nuevas versiones de los programas existentes. El desarrollo o del hardware posibilita tambi´n la aparici´n de nuevas aplicaciones m´s e o a potentes y con mayores demandas de recursos. Desde el planteamiento de un problema hasta la obtenci´n de su o soluci´n en el computador hay que recorrer una serie de etapas: o 1. En primer lugar, antes de resolver un problema en el computador hay que conocer los pasos y operaciones que hay que realizar para obtener la soluci´n del problema, es decir, su algoritmo, porque o el computador solamente es capaz de seguir aquellas instrucciones que nosotros le indiquemos. Si no conocemos el proceso que nos conduce a la soluci´n del problema, el computador no nos la va a o dar. Esta secuencia de pasos y operaciones constituye una soluci´n o general al problema planteado de forma que, siguiendo el proceso, se llega a la soluci´n del problema sean cuales fueran los datos o proporcionados. 2. Una vez conocida esta soluci´n general del problema, hay que ex- o presarla en un lenguaje especial, que pueda ser comprendido y ejecutado por el computador, es decir, en un lenguaje de progra- maci´n, creando un programa. o 3. Posteriormente, hay que comprobar que el programa produce las soluciones esperadas (ya sea utilizando datos de prueba o mediante m´todos formales) y subsanar los errores detectados. e 4. Por ultimo, es importante documentar el programa de forma que ´ si cambiaran algunas de las circunstancias iniciales, sea posible modificar y adaptar convenientemente, facilitando las labores de mantenimiento. 1.5.1 Algoritmos Una de las caracter´ısticas de los seres humanos es su capacidad para ´ plantearse y resolver problemas. Estos pueden ser de naturaleza muy
  • 19. 1.5. Algoritmos y programas 23 diversa, desde los problemas m´s inmediatos relacionados con la pro- a pia subsistencia, hasta los problemas m´s abstractos de naturaleza ma- a tem´tica o filos´fica. a o Un algoritmo es la descripci´n precisa de los pasos que nos permiten o obtener la soluci´n de un problema determinado. En general, los pa- o sos son acciones u operaciones que se efect´ an sobre ciertos objetos. Al u comienzo del algoritmo, los objetos tienen unos valores iniciales (los da- tos) que var´ como consecuencia del proceso descrito por el algoritmo, ıan obteni´ndose los valores de salida o resultados. e La inform´tica estudia el procesamiento de la informaci´n mediante a o algoritmos, aunque el concepto de algoritmo, que proviene de las ma- tem´ticas, es muy anterior e independiente de la existencia de la in- a form´tica y los computadores. 1 a El concepto de algoritmo tiene una importancia fundamental den- tro de la inform´tica, por ser previo a la resoluci´n del problema en el a o computador; si no se conoce el algoritmo para resolver un problema, no puede plantearse su resoluci´n en el computador. o Aunque existen algoritmos registrados para la realizaci´n de tareas o muy variadas, en general los algoritmos desarrollados resuelven s´lo de- o terminadas partes de un problema como, por ejemplo, la ordenaci´n de o una lista de valores, pero no un problema real completo. En consecuen- cia, habr´ que dise˜ar un algoritmo para su resoluci´n. a n o El dise˜o de algoritmos implica un an´lisis profundo del problema, n a de sus datos iniciales, del proceso que se les aplica y de los resultados esperados. A partir de este an´lisis debe establecerse cu´l es la mejor a a estructura de datos para resolver el problema. De hecho, Niklaus Wirth, uno de los padres de la programaci´n estructurada, titula una de sus o obras fundamentales Algoritmos + Estructuras de Datos = Programas, mostrando la importancia que concede a dichas estructuras [Wir86b]. 1 Se conoce un algoritmo para el c´lculo del m´ximo com´n divisor de dos n´meros a a u u naturales, debido a Euclides, que data del siglo IV a.C., al que se conoce como el “abuelo” de todos los algoritmos.
  • 20. 24 Cap´ ´ ıtulo 1. Conceptos Basicos Existen t´cnicas que facilitan el dise˜o de algoritmos, tales como la e n programaci´n estructurada, la programaci´n modular, el refinamiento o o por pasos, el dise˜o descendente y la estructuraci´n y abstracci´n de los n o o datos. Para poder expresar algoritmos se utilizan lenguajes con la necesaria precisi´n, llamados lenguajes algor´ o ıtmicos, que son independientes de los lenguajes de programaci´n. Los m´s utilizados son el seudoc´digo y los o a o diagramas de flujo. Dado un problema concreto y conocido el algoritmo que lo resuelve, para obtener la soluci´n del problema tenemos que partir de los datos o de entrada, y ejecutar las acciones descritas en el algoritmo. Al proceso de ejecutar un algoritmo concreto para unos datos determinados se le llama c´mputo, de donde procede el t´rmino computador. El procesador o e es quien ejecuta materialmente el c´mputo. o 1.5.2 Programaci´n o Como dec´ ıamos al principio, consideramos al computador como una herramienta que nos ayuda en la resoluci´n de problemas; para ello es o preciso conocer previamente un algoritmo que lleve a su soluci´n. A o continuaci´n hay que expresar el algoritmo en un lenguaje de progra- o maci´n, que pueda ser comprendido y ejecutado por el computador, o desarroll´ndose un programa. A este proceso se le llama programaci´n. a o Una aportaci´n sustancial para realizar este paso tan delicado con la o correcci´n necesaria la constituyen: o 1. El refinamiento por pasos, que permite aumentar el grado de de- talle en la expresi´n del algoritmo seg´n convenga, para adaptarlo o u a las necesidades del lenguaje. 2. La programaci´n estructurada, que utiliza las estructuras de pro- o gramaci´n propias de los lenguajes evolucionados. o 3. La programaci´n modular que, al permitir el uso de m´dulos o o o subprogramas, facilita el empleo de otras t´cnicas de dise˜o de e n algoritmos y la depuraci´n de los programas . o
  • 21. 1.5. Algoritmos y programas 25 4. No debe olvidarse la importancia de la estructuraci´n y abstracci´n o o de datos, presente tambi´n en los lenguajes evolucionados, que e debe emplearse con todo su potencial en el dise˜o de algoritmos y, n posteriormente, en los programas. El desarrollo de aplicaciones cada vez m´s complejas y el crecimiento a del sector de producci´n de software, ha hecho que se apliquen a la pro- o gramaci´n t´cnicas de ingenier´ que garanticen la viabilidad y calidad o e ıa de los grandes proyectos de aplicaciones, lo que se conoce como inge- nier´ del software. ıa 1.5.3 Lenguajes de Programaci´n o El computador dispone de un conjunto de instrucciones que son reco- nocidas y ejecutadas por el procesador. Estas instrucciones se expresan, al igual que los datos, en forma digital binaria, si bien para reconocerlas mejor y evitar errores se les asignan unos nombres mnemot´cnicos que e permiten recordar sus funciones. Estas instrucciones constituyen el len- guaje de m´quina del computador, y suelen ser diferentes en funci´n del a o fabricante del procesador. El lenguaje de m´quina es ejecutado a gran velocidad por el procesa- a dor, en los computadores actuales esta velocidad se mide en millones de operaciones por segundo; por otra parte, el lenguaje de m´quina permite a el acceso directo a todos los ´rganos del computador. Por estos motivos o el lenguaje m´quina es insustituible en aquellas aplicaciones donde sea a necesaria una gran rapidez de ejecuci´n, o el acceso directo a ciertos o o ´rganos del computador. Las instrucciones del lenguaje de m´quina son en general muy poco a potentes, operan sobre datos de peque˜o tama˜o, y en muchos casos no n n incluyen ni multiplicaciones ni divisiones. Para poder operar sobre da- tos mayores o realizar operaciones m´s complejas, tales como potencias a o logaritmos, hay que fraccionar los datos y aplicar sucesivamente las operaciones simples, siguiendo algoritmos espec´ ıficos. Por este motivo, y por su estrecha relaci´n con el hardware, a los lenguajes de m´quina se o a les llama lenguajes de bajo nivel . En consecuencia, la tarea de escribir
  • 22. 26 Cap´ ´ ıtulo 1. Conceptos Basicos problema t t dise˜o de algoritmos n ” t algoritmo t t programaci´n o ” t programa fuente t t traductor ” t programa objeto t t procesador ” t programa en ejecuci´n o Figura 1.1. Resoluci´n de un problema mediante la programaci´n. o o programas en lenguaje de m´quina es tediosa y est´ sujeta a muchos a a errores. Ante la necesidad de escribir programas cada vez m´s complejos y a fiables, los inform´ticos desarrollaron lenguajes con niveles m´s elevados a a de abstracci´n, que inclu´ operaciones y datos m´s complejos a los o ıan a que llamaron lenguajes de alto nivel. De esta forma se acorta el camino entre el algoritmo y su expresi´n en forma de programa, porque los o lenguajes de alto nivel pueden expresar mejor las acciones y objetos que intervienen en los algoritmos. Una de las grandes ventajas de estos lenguajes radica en que la tra- ducci´n del programa escrito en lenguaje de alto nivel (programa fuente) o al lenguaje de m´quina (programa objeto) que, como recordamos, es el a unico que puede ser ejecutado por el computador, es autom´tica y se ´ a realiza por un programa traductor. Para ello, junto con las especificaciones del lenguaje, reglas de sinta- xis y sem´ntica, se desarrollan los necesarios programas de traducci´n. a o Durante el proceso de traducci´n se suelen detectar errores, debidos al o
  • 23. 1.6. Ejercicios 27 incumplimiento de las reglas sint´cticas del lenguaje o a causas m´s suti- a a les, que deben corregirse antes de poder ejecutar el programa. Si durante la ejecuci´n de un programa se realizan operaciones no permitidas (tales o como divisiones por cero, accesos fuera de l´ ımites, . . . ) se producen los llamados errores de ejecuci´n. o Aunque un programa se haya traducido eliminando todos los errores sint´cticos y de ejecuci´n, a´n puede no realizar correctamente la tarea a o u para la que fue creado, por contener errores l´gicos. Por lo tanto es o necesario comprobar el funcionamiento del programa utilizando datos de prueba que permitan realizar los c´lculos a mano y comprobar as´ a ı las partes m´s conflictivas del programa. Este proceso se conoce como a depuraci´n de los programas. o En la actualidad la mayor´ de los programas se escriben en lengua- ıa jes de alto nivel, reserv´ndose los lenguajes de bajo nivel para aquellas a aplicaciones donde se necesite una elevada velocidad o un acceso directo a los ´rganos del computador; por ejemplo, en los programas traductores o o en programas de gesti´n del computador. o 1.6 Ejercicios 1. Trate de describir con precisi´n mediante frases sencillas algunas tareas o cotidianas, como leer un libro o realizar un trayecto en autob´s. u 2. Dado el algoritmo de Euclides que se menciona en el apartado 1.5.1, Sean A, B, R ∈ IN. Mientras B = 0, hacer:   R ← A modulo B A←B  B←R Escribir A trate de seguirlo, utilizando l´piz y papel (por ejemplo, para A = 12 y a B = 8). Est´ formulado desde el punto de vista del procesador: cuando se a dice “leer A, B”, el procesador debe pedir dos valores para las variables A y B al usuario; la instrucci´n “mientras b = 0 hacer ...” significa o que mientras la condici´n sea cierta hay que realizar las operaciones o
  • 24. 28 Cap´ ´ ıtulo 1. Conceptos Basicos comprendidas entre dicha instrucci´n (...) que, en nuestro caso, es una o secuencia de tres. La operaci´n “m´dulo” expresa el resto de la divisi´n o o o entera, y el s´ ımbolo “←” indica que, tras calcular el resultado de la expresi´n a su derecha, se retendr´ como el valor de la variable a su o a izquierda. 3. Clasifique los siguientes elementos del computador como pertenecientes al hardware, al software del sistema o al de aplicaciones: pantalla, teclado, unidad de entrada y salida, programa del sistema operativo, compilador, procesador de textos, etc. 1.7 Comentarios bibliogr´ficos a Existe una gran cantidad de textos de introducci´n a la inform´tica que o a se pueden recomendar con car´cter general. Aun ci˜´ndonos a los escritos en a ne castellano o traducidos, existen bastantes textos excelentes sobre el tema, con diversos enfoques. En [GL86] encontramos un panorama general sobre inform´tica en el que se a utiliza como tema unificador el concepto de algoritmo, que sus autores juzgan como el concepto central de la computaci´n. Se trata de un texto apropiado o para el principiante y de lectura amena. El libro de Bishop ([Bis91]) es tambi´n e un libro muy asequible de introducci´n en inform´tica. o a [PLT89] trata con gran detalle la estructura f´ ısica de los computadores, por lo que interesar´ a quienes deseen detenerse en este aspecto de la inform´tica. a a Recomendamos [FSV87] a quien desee dirigirse hacia los fundamentos te´ri-o cos de la inform´tica (la teor´ de algoritmos, la l´gica y la teor´ de aut´matas a ıa o ıa o y lenguajes formales). Por ultimo, puesto que la inform´tica es una ciencia reciente, cuenta con ´ a muchos vocablos nuevos, en su mayor´ anglicismos, que muchas veces se em- ıa plean de forma ileg´ ıtima, o que se aplican con un sentido equivocado. En [VJ85] y [MA85] puede consultarse el significado de esos t´rminos. e
  • 25. Cap´ ıtulo 2 Representaci´n digital de o la informaci´n o 2.1 Conceptos previos . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2 Representaci´n digital de los datos o . . . . . . . . . . . . . . . . 35 2.3 C´digos redundantes . . . . . . . . o . . . . . . . . . . . . . . . . 49 2.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.5 Comentarios bibliogr´ficos . . . . . a . . . . . . . . . . . . . . . . 57 La representaci´n de la informaci´n en los computadores digitales o o persigue dos objetivos: en primer lugar, procesarla, permitiendo su ma- nipulaci´n eficiente, para lo cual se han ideado diferentes convenios, de o los que veremos los m´s importantes; y en segundo, asegurarla contra a errores durante su almacenamiento o durante las transmisiones, lo que se consigue incorporando en la codificaci´n el empleo de la redundancia o para detectar y corregir dichos errores. 2.1 Conceptos previos 2.1.1 Informaci´n anal´gica y digital o o Las magnitudes continuas son las que pueden adoptar los infinitos valores de un intervalo de n´meros reales, tales como la longitud de un u segmento, velocidad, temperatura, intensidad de un sonido, etc.
  • 26. 30 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Las magnitudes discretas tienen naturaleza discontinua, tales como la longitud (n´mero de s´ u ılabas) de una palabra, capacidad (n´mero de u pasajeros) de un veh´ ıculo, etc. En la pr´ctica, es frecuente que las magnitudes continuas sean trata- a das como discretas: el peso de una persona (que se redondea en kilos); la temperatura (en grados y d´cimas de grado); la longitud de un segmento, e medida con un dispositivo de precisi´n hasta los mil´ o ımetros. En relaci´n con ambos tipos de magnitud se considera la informaci´n o o anal´gica, que es de naturaleza continua, pudiendo tomar infinitos valo- o res; y la informaci´n digital, que es de naturaleza discreta. Aunque esta o ultima puede tomar infinitos valores ( IN), en un computador digital la ´ informaci´n es discreta y, adem´s, finita. o a En las calculadoras, la digitalizaci´n de variables anal´gicas produce o o un efecto de redondeo, que debe ser tenido en cuenta y tratado con- venientemente para evitar errores de c´lculo (v´ase la secci´n 2.3); en a e o el monitor de un ordenador, supone el ajuste de la imagen proyectada sobre una matriz de puntos. 2.1.2 Unidades de informaci´n en los sistemas digitales o La raz´n de ser de un computador es el procesamiento de infor- o maci´n. Para poder hablar con propiedad de este procesamiento, debe- o mos definir unidades de medida que nos permitan cuantificar de alg´n u modo la acci´n del computador sobre la informaci´n suministrada. Con- o o sideramos las siguientes: • Bit (BInary digiT ) es la cantidad de informaci´n que puede alma- o cenarse en una variable binaria. No hay que confundir el bit con la variable ni con su valor: una variable binaria es la que puede tomar dos valores estables: 0 ´ 1, blanco o negro, s´ o no, etc. o ı La necesidad de codificar informaciones m´s complejas ha llevado a a agrupar varios bits, apareciendo as´ las siguientes unidades: ı • El byte u octeto es la cantidad de informaci´n que puede codificarse o en 8 bits; representa por tanto 2 8 = 256 valores.
  • 27. 2.1. Conceptos previos 31 • La palabra se define en relaci´n con la m´quina considerada, como o a la cantidad de informaci´n que la m´quina puede manejar de una o a sola vez. Para evitar equ´ıvocos, se habla de palabras de 8 bits, 16 bits, 32 bits, etc. • 1 Kbyte = 210 bytes = 1.024 bytes. Se suele llamar kilobyte, aun- que esto puede resultar equ´ ıvoco, ya que el prefijo “kilo” significa 1.000 (y no 1.024). • 1 Mbyte = 1.048.576 bytes (220 = 1.0242 ). An´logamente, debe a advertirse que “mega” no significa un mill´n en este contexto. o 2.1.3 Sistemas de numeraci´n posicionales o Aunque se conocen sistemas no posicionales, tales como el de nume- raci´n romana o el sexagesimal, que usamos para medir el tiempo y los o a ´ngulos, el sistema de numeraci´n m´s difundido en la actualidad es sin o a duda el sistema decimal posicional, o sistema ar´bigo-hind´, inventado a u hacia el siglo VIII. Por otra parte, en el contexto de la inform´tica se usan frecuente- a mente sistemas de numeraci´n posicional en bases tales como 2 (ya que o el bit tiene dos posiciones), 16 (como compactaci´n de palabras de 4 o bits), etc. Para aprender a manejarlos, se recurre frecuentemente a la analog´ ıa con el sistema de numeraci´n m´s conocido: el de base 10. Se llama o a decimal porque cada cifra o d´ ıgito puede tomar diez posibles valores: del 0 al 9; se llama posicional porque el valor real de cada d´ ıgito depende de su posici´n. o 10475 = 1 ∗ 104 + 0 ∗ 103 + 4 ∗ 102 + 7 ∗ 101 + 5 ∗ 100 A la cantidad 10 se le llama base; las potencias de 10 son los pesos asociados a cada posici´n, y los factores o coeficientes de cada peso son o las cifras de la representaci´n. Tambi´n se podr´ haber representado o e ıa en forma polin´mica del siguiente modo: o 10475 = 1 ∗ 104 + 0 ∗ 103 + 47 ∗ 101 + 5 ∗ 100
  • 28. 32 Cap´ ´ ´ ıtulo 2. Representacion de la informacion pero la primera forma es la unica donde las cifras son todas menores ´ que la base. En general, esta afirmaci´n adopta la siguiente forma, cuya o demostraci´n se incluye al final de este cap´ o ıtulo. Teorema 2.1 En un sistema de numeraci´n en base b > 1, todo entero o N positivo tiene una unica representaci´n de la forma ´ o N = cp bp + cp−1 bp−1 + . . . + c1 b1 + c0 b0 donde 0 ≤ ci < b para todo i = 0, 1, . . . , p Conversi´n entre sistemas o En primer lugar, la expresi´n decimal de un n´mero de cifras cp . . . c0 o u en base b se obtiene sencillamente sumando los valores reales correspon- dientes a los diferentes d´ ıgitos: [cp . . . c0 ](b = cp ∗ bp + . . . + c0 ∗ b0 Por ejemplo, 275(8 = 2 ∗ 82 + 7 ∗ 81 + 5 ∗ 80 = 189(10 En segundo lugar, representar el n´mero 241(10 en el sistema de base u 5, equivale a expresarlo en forma polin´mica con las sucesivas potencias o de esa base, siguiendo la idea de la demostraci´n del teorema: o 241 5 ⇒ 241 = 48 * 5 + 1 1 48 5 ⇒ 48 = 9*5+3 3 9 5 ⇒ 9 = 1*5+4 4 1 ⇒ 1 = 0*5+1 Por lo tanto, 241 = 48 ∗5+1 = (9 ∗ 5 + 3) ∗5+1 = ((1 ∗ 5 + 4) ∗ 5 + 3) ∗5+1 = 1 ∗ 53 + 4 ∗ 52 + 3 ∗ 51 + 1 ∗ 50 = 1431(5
  • 29. 2.1. Conceptos previos 33 Sistemas de numeraci´n m´s usuales o a El sistema m´s empleado en electr´nica digital es el de base 2, lla- a o mado binario (natural). En inform´tica tienen inter´s los sistemas cuya a e base es una potencia de dos: 2, 4, 8, 16. La siguiente tabla recoge los primeros n´meros naturales, expresados en algunos de esos sistemas y u en el decimal: dec. binario octal hexad. dec. binario octal hexad. 0 0 0 0 9 1001 11 9 1 1 1 1 10 1010 12 A 2 10 2 2 11 1011 13 B 3 11 3 3 12 1100 14 C 4 100 4 4 13 1101 15 D 5 101 5 5 14 1110 16 E 6 110 6 6 15 1111 17 F 7 111 7 7 16 10000 20 10 8 1000 10 8 17 10001 21 11 En el sistema hexadecimal se usan los d´ ıgitos 0, . . . , 9, A, . . . F para las cantidades cero, . . . , nueve, diez, . . . , quince respectivamente. As´ por ı ejemplo, C7A(16 = 12 ∗ 162 + 7 ∗ 161 + 10 ∗ 160 = 3194(10 , ya que los valores de A y C en el sistema de base 16 son 10 y 12, respectivamente. Se observa que, en una base cualquiera b, con N cifras (o menos) es posible expresar bN cantidades distintas; inversamente, para poder componer C combinaciones distintas se necesita disponer de un n´mero u de cifras igual a logb C, redondeado por exceso. Como consecuencia de lo anterior, cuanto mayor sea la base adoptada se pueden expresar m´s cantidades (combinaciones) para un n´mero fijo a u de cifras; inversamente, cuanto mayor sea la base, es posible usar menos cifras para expresar una misma cantidad.
  • 30. 34 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Observaci´n o La conversi´n de binario en octal o en hexadecimal se puede abreviar o del siguiente modo: 11 001 111 010 101 100(2 = 11 001 111 010 101 100 = 3 1 7 2 5 4 = 317254(8 = 1 1001 1110 1010 1100 = 1 9 14 10 12 = 19EAC(16 ¿A qu´ se debe el funcionamiento de este mecanismo? e Operaciones aritm´ticas en base dos e Para las operaciones elementales se usan las tablas correspondientes a la base de que se trate. Por ejemplo, para el caso binario la tabla de sumar es la siguiente: + 0 1 0 0 1 1 1 10 Y entonces, son v´lidas las reglas conocidas para las operaciones en base a diez. Por ejemplo, en el sistema binario natural, tenemos: 1001 100101 + 1011 − 11011 10100 01010 Para la resta se usa frecuentemente el m´todo del complemento: en e lugar de la resta propuesta, se halla la suma correspondiente comple- mentando el sustraendo (min − sus → min + comp(sus), siendo el com- plemento (comp) el n´mero resultante de cambiar cada cero por un uno u y viceversa), suprimiendo la cifra excedente, posiblemente aparecida por el arrastre, y sumando una unidad al resultado obtenido: 100101 100101 − 11011 → + 100100 1001001 → 001010
  • 31. ´ 2.2. Representacion digital de los datos 35 2.2 Representaci´n digital de los datos o En los sistemas digitales, no resulta viable dar una representaci´n o v´lida para codificar todos los n´meros; por otra parte, los diversos a u sistemas empleados dan diferentes tratamientos a n´meros tan usuales u como el uno (seg´n se considere como real o como entero). Estudiaremos u diversos convenios para diferentes conjuntos de n´meros, as´ como sus u ı limitaciones. En este apartado, supondremos que disponemos de un espacio de N bits, con lo que es posible representar 2N enteros distintos. 2.2.1 Representaci´n de los n´ meros enteros o u N´ meros enteros positivos u Si se considera unicamente n´meros enteros positivos, con N bits de ´ u espacio ser´ posible representar los n´meros de 0 a 2N −1. La forma m´s ıa u a natural de lograrlo consiste en interpretar cada combinaci´n mediante o la cantidad que representa en binario. Por ejemplo, con 1 byte (es decir, N = 8) se representar´ los n´meros 0, . . . , 255 en este sistema. ıan u N´ meros enteros con signo. Convenio del signo-magnitud u Para representar los n´meros enteros (con signo), el sistema m´s u a simple es el convenio de signo-magnitud, consistente en reservar el pri- mer d´ ıgito binario para codificar el signo (suele representarse el signo + con un cero y el − con un uno) y los siguientes N − 1 para el va- lor absoluto. As´ en este sistema tienen representaci´n las cantidades ı, o ±0, . . . , ±(2N − 1). En el caso particular de 1 byte, esas cantidades son −127, . . . , −0, +0, . . . , +127. En este sistema, la aritm´tica es bastante simple: la suma de canti- e dades del mismo signo y la resta de cantidades de distinto signo siguen la regla b´sica en binario. Para sumar cantidades de distinto signo, o a restar cantidades del mismo signo, resulta m´s pr´ctico el m´todo del a a e complemento.
  • 32. 36 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Se observa el inconveniente de que el cero tiene una doble represen- taci´n, por lo que el test de la comparaci´n para la igualdad en este o o sistema debe tenerlo en cuenta. Por otra parte, la suma/resta de signos y valores absolutos necesita dos algoritmos distintos, que no resultan muy eficientes. Los siguientes sistemas surgen precisamente para tratar de paliar estas deficiencias. N´ meros enteros con signo. Complemento restringido u Para comprender mejor el funcionamiento de este convenio en bina- rio, conviene introducirlo primero en base diez. Si consideramos palabras de N = 2 d´ ıgitos (decimales), es posible representar 102 = 100 canti- dades distintas. En este convenio se opta por considerar los n´meros u negativos de {−49, . . . , −0}, y los positivos de {0, . . . , 49}, del siguiente modo: los n´meros positivos se representan en decimal natural, mientras u que para cada negativo −z se toma la cantidad 99 − z (complemento de z respecto de 102 − 1, que es la N=2 potencia de la base menos uno). As´ por ejemplo, tenemos: ı repr(29) = 2 9 repr(−29) = 99 − 29 = 7 0 Con este convenio, las cantidades −49, −48, . . . , −0, 0, 1, . . . , 48, 49 se representan respectivamente mediante 5 0 , 5 1 , ... , 9 9 , 0 0 , 0 1 , ... , 4 8 , 4 9 Aunque se observa el inconveniente de que el cero tiene dos repre- sentaciones, la ventaja de este convenio consiste en que la suma de dos n´meros, sea cual fuere su signo, se lleva a cabo con un mismo algoritmo, u que s´lo se diferencia de la suma de enteros en que el posible arrastre se o agrega al resultado final: + 23 → 2 3 + − 15 → + 8 4 +1 1 0 7 → 0 8
  • 33. ´ 2.2. Representacion digital de los datos 37 Consideremos ahora esta representaci´n con palabras de N = 4 d´ o ıgitos binarios: las cantidades representables son −7, −6, . . . , −0, +0, . . . , +6, +7 → −111(2 , −110(2 , . . . , −0(2 , +0(2 , . . . , +110(2 , +111(2 que, al complementar las negativas respecto de 1111, resulta: → 1000, 1001, . . . , 1111, 0000, . . . , 0110, 0111 N´ meros enteros con signo. Complemento aut´ntico u e Empezamos nuevamente con la base decimal como punto de partida, y consideremos tambi´n palabras de longitud N = 2. Ahora se opta por e considerar los n´meros negativos de {−50, . . . , −1}, y los positivos de u {0, . . . , 49}, del siguiente modo: los n´meros positivos se representan en u binario natural, mientras que para cada negativo −z se toma la cantidad 100 − z (complemento de z respecto de 10, que es la base para N = 2). repr(29) = 2 9 repr(−29) = 100 − 29 = 7 1 Con frecuencia se emplea otra regla equivalente para complementar los n´meros negativos, consistente en a˜adir una unidad al correspon- u n diente complemento restringido. Con este convenio, las cantidades −50, −49, . . . , −1, 0, 1, . . . , 48, 49 se representan respectivamente mediante 5 0 , 5 1 , ... , 9 9 , 0 0 , 0 1 , ... , 4 8 , 4 9 Este sistema tiene las mismas ventajas que el anterior, y adem´s el a cero se representa de un unico modo. ´
  • 34. 38 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Como en el caso anterior, consideremos ahora la base dos, con pala- bras de N = 4 d´ ıgitos, donde tienen cabida las cantidades −8, −7, . . . , −1, +0, . . . , +7 → −1000(2 , −111(2 , . . . , −1(2 , +0(2 , . . . , +110(2 , +111(2 que, al complementar las negativas respecto de 10000, resulta: → 1000, 1001, . . . , 1111, 0000, . . . , 0110, 0111. En este sistema, la suma tambi´n se lleva a cabo con un mismo algo- e ritmo, igual al usado para el complemento restringido, pero ignorando la posible cifra de arrastre: + 23 → 2 3 + − 15 → + 8 5 1 0 8 → 0 8 Funcionamiento de las operaciones aritm´ticas e Debe subrayarse que las operaciones anteriores no coinciden con las aritm´ticas, debido a la posibilidad de que se produzca un desborda- e miento; los diferentes sistemas responden ante esta circunstancia de di- ferentes modos: por ejemplo, ignorando la ultima cifra de arrastre, o ´ interrumpiendo su trabajo para delatar una condici´n de error. Por lo o tanto, es necesario prever esta posibilidad y conocer de qu´ modo re- e acciona nuestro sistema. Sobre este asunto volveremos m´s adelante, a dentro de este mismo cap´ ıtulo. Formatos de los n´ meros enteros en las computadoras u Entre los convenios presentados, el m´s frecuente es el del comple- a mento aut´ntico en base dos, llamado simplemente complemento a dos. e Ahora bien, depender´ de la longitud de palabra la cantidad de com- a binaciones posibles y, por tanto, el rango de enteros considerado. Por otra parte, aunque ciertos sistemas trabajan con palabras de longitud variable, lo corriente es optar por uno o varios formatos con tama˜o fijo: n simple (1 byte), doble (2 bytes), cu´druple (4 bytes) u octuple (8 bytes). a ´
  • 35. ´ 2.2. Representacion digital de los datos 39 2.2.2 Representaci´n de los n´ meros reales o u Debe resaltarse que, en general, s´lo resulta posible representar apro- o ximaciones de los n´meros reales mediante n´meros decimales, con s´lo u u o unas pocas cifras significativas. En el siguiente apartado estudiaremos los efectos de este redondeo. En este apartado, supondremos que disponemos de un espacio de N bits, con lo que es posible representar 2N enteros distintos. Convenio con coma fija Si disponemos de un espacio de N bits para representar un n´mero u real, la caracter´ ıstica principal de este convenio es la reserva impl´ ıcita de algunos bits fijos para la parte decimal, asumi´ndose la coma en una e posici´n fija. A su vez, existen los siguientes modos de representaci´n o o en coma fija: • Sistema signo y valor absoluto En este convenio se reserva un bit para codificar el signo, y del resto se destina una cantidad fija para representar el valor absoluto de la parte entera, y los dem´s para la decimal: a 1 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 . ± p. entera dec. Si consideramos por ejemplo N = 16, siendo el primer bit el que codifica el signo, los siguientes 12 los de la parte entera, y los 3 restantes los de la parte decimal, resulta que la representaci´n o anterior significar´ ıa −010010010111.101 = −(210 + 27 + 24 + 22 + 21 + 20 + 2−1 + 2−3 ) = −1175 625.
  • 36. 40 Cap´ ´ ´ ıtulo 2. Representacion de la informacion • Complemento restringido y complemento aut´ntico e Sea D = 3 el n´mero (fijo) de decimales asumidos. La represen- u taci´n de un n´mero x, en cualquiera de estos convenios, consiste o u en codificar en su lugar la parte entera de x ∗ 23 en el convenio elegido. La cantidad despreciada al truncar los decimales de x ∗ 23 es menor que 0 125(10 (= 2−3 ). Por ejemplo, para representar −2 8 en palabras de N = 8 y D = 3, debemos conformarnos con una aproximaci´n: al ser D = 3, s´lo po- o o demos representar cantidades decimales m´ ltiplos enteros de 0 001(2 = u 2−3 = 0 125(10 . Como trunc(−2 8 ∗ 8) = trunc(−22 4) = −22, repre- (10 sentamos −22/8 = −2 75. Comprobamos que esta cantidad es efectiva- mente m´ltiplo de 0 125, y que el siguiente m´ltiplo (−2 875) excede la u u cantidad inicial (−2 8). • Signo y valor absoluto: 1 1 1 0 0 1 0 1 1 0 2.75 = 2 + + = 2 4 . ± p. entera dec. • Complemento restringido (8 d´ ıgitos): 11111111 −22 = − → 11101001 = 1 1 1 0 1 0 0 1 10110(2 • Complemento aut´ntico (8 d´ e ıgitos): 100000000 −22 = − → 11101010 = 1 1 1 0 1 0 1 0 10110(2 Convenios con coma flotante El principal inconveniente de la coma fija consiste en condicionar el orden de magnitud de las cantidades codificadas. Un sistema m´s a general deber´ adaptarse a ordenes tan distantes como los de la masa de a ´
  • 37. ´ 2.2. Representacion digital de los datos 41 la tierra y la del atomo. El sistema m´s conocido con esta caracter´ ´ a ıstica es la llamada notaci´n exponencial (o cient´ o ıfica): 140 = +0.14 ∗ 103 = +0.14E3 6.02215 ∗ 1023 = +0.602215E24 0.00000015 = +0.15E − 6 Los convenios con coma flotante funcionan del mismo modo, divi- diendo la informaci´n sobre una cantidad en tres partes: su signo, su o mantisa (es decir, las cifras significativas de mayor orden), y el exponente (que expresa el orden de magnitud). As´ por ejemplo, consideremos la ı siguiente representaci´n en palabras de N bits: o • El signo, adscrito al primer bit, donde el uno representa al signo menos. • El exponente (z), situado en los siguientes e bits, puede tomar los valores de {−2e−1 , . . . , 2e−1 − 1}. Frecuentemente se representa desplazado en +2e−1 unidades: z ∈ {−2e−1 , . . . , 2e−1 − 1} ⇒ repr(z) ∈ {0, . . . , 2e − 1} • Para la mantisa quedan M = N − e − 1 bits con lo que, para su representaci´n, se toman los primeros M d´ o ıgitos de su escritura en binario natural. Como ejemplo concreto, consideremos el convenio est´ndar IEEE 754 a (real con precisi´n simple, o real corto), que es una de las codificaciones o de reales m´s utilizadas. Su representaci´n requiere un total de 32 bits, a o de los cuales un bit se utiliza para el signo, 8 bits para el exponente y 23 bits para la mantisa. Este convenio en concreto, utiliza un truco llamado bit oculto: como el bit m´s significativo de la mantisa es un 1, a ahorramos un bit simplemente asumi´ndolo. Se logra as´ espacio para e ı una mantisa de 24 d´ ıgitos significativos. El inconveniente de emplear un bit oculto consiste en que se requiere una representaci´n especial para o el cero.
  • 38. 42 Cap´ ´ ´ ıtulo 2. Representacion de la informacion 2.2.3 Limitaciones de los sistemas de representaci´n o digital de los n´ meros u Debido a que los sistemas de codificaci´n considerados est´n inmer- o a sos en sistemas finitos, s´lo pueden representar una cantidad finita de o elementos distintos. Esta limitaci´n resulta cr´ o ıtica a la hora de repre- sentar elementos pertenecientes a conjuntos infinitos, como son los de los n´meros enteros o reales. Como consecuencia, pueden producirse u situaciones de error no deseables, por lo cual se hace necesario estudiar el alcance de esas limitaciones, as´ como la manera de afrontarlas. ı Limitaciones en los enteros En los enteros, las representaciones se limitan a un intervalo reducido [m´ m´x ], de cardinal no superior a 2n , siendo n el tama˜o (en bits) ın, a n de la representaci´n. As´ cuando surge la codificaci´n de n´meros fuera o ı, o u del rango considerado, se produce el llamado desbordamiento (overflow en ingl´s). e Por ejemplo, en una representaci´n con 4 bits ser´n posibles 16 con- o a figuraciones. Si optamos por el convenio de complementaci´n aut´ntica, o e el intervalo considerado ser´ [−8, 7]. Veamos qu´ ocurre al sumar 5 y 6. a e 5 → 0101 + 6 → + 0110 1011 → −5 El comportamiento de las operaciones de suma y resta en el sistema de complementaci´n aut´ntica para una representaci´n de n bits se puede o e o describir as´ llamemos x e y a la representaci´n de x e y, y + y − a las ı: o operaciones de suma y resta en este sistema, ∀x, y ∈ [−2n−1 , 2n−1 − 1], tenemos:   (x ± y + 2n ) ,  si x ± y < −2n−1 x ± y = (x ± y) , si x ± y ∈ [−2n−1 , 2n−1 − 1]   (x ± y − 2n ) , si x ± y > 2n−1 − 1 Para paliar en cierta medida esta limitaci´n, es frecuente incorpo- o rar tipos de datos correspondientes a rangos de enteros m´s amplios a