Logo Studenta

Introducción a la Programación

¡Este material tiene más páginas!

Vista previa del material en texto

Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
pu
bl
is
he
r,
 e
xc
ep
t 
fa
ir
 u
se
s 
pe
rm
it
te
d 
un
de
r 
U.
S.
 o
r 
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed
on 1/27/2016 3:27 PM via UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno
Ortin, Fernando.; Introduccion a la programacion : algoritmos y
C/C++
Account: s1093037
Fernando Ortuño Ortín
INTRODUCCIÓN A LA
PROGRAMACIÓN. ALGORITMOS Y C/C++
UNIVERSIDAD DE ALICANTE
Fernando Llopis Pascual, Ernesto Pérez López
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
© Fernando Llopis Pascual, Ernesto Pérez López, Fernando Ortuño Ortín
Publicaciones de la Universidad de Alicante
I.S.B.N.: 84-7908-573-8
Depósito Legal: MU-1833-2000
Fotocomposición e impresión: Compobell, S.L. Murcia
Diseño Gráfico: Alfredo Candela
Ninguna parte de esta publicación puede ser reproducida, almacenada o transmitida
en manera alguna o por ningún medio, ya sea eléctrico, químico, mecánico,
óptico, de grabación o de fotocopia, sin permiso previo del editor.Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
ÍNDICE
PROLOGO 7
1. INTRODUCCIÓN. COMPUTADORES Y PROGRAMAS 13
2. TIPOS DE DATOS ELEMENTALES 29
3. LENGUAJE ALGORÍTMICO. CONCEPTO DE PROGRAMA . 47
4. INTRODUCCIÓN AL LENGUAJE C++ 93
5. FUNCIONES BÁSICAS DE ENTRADA-SALIDA EN C++ ... 113
6. ESTRUCTURAS DE CONTROL 125
7. PROGRAMACIÓN MODULAR 157
8. ESTRUCTURAS DE DATOS I: VECTORES Y MATRICES ... 207
9. ESTRUCTURAS DE DATOS II: CADENAS DE CARACTERES 237
10. ESTRUCTURAS DE DATOS III: REGISTROS, UNIONES Y
TIPOS ENUMERADOS 257
11. ESTRUCTURAS DE DATOS IV: FICHEROS 279
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
6 Fernando Llopís Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
12. ESTRUCTURAS DE DATOS V: ESTRUCTURAS DINÁMICAS 321
ANEXO I. ENTRADA Y SALIDAEN C 373
ANEXO H. COMPLEJIDAD DE UN ALGORITMO 381
BIBLIOGRAFÍA 397
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
PROLOGO
Es destacable la importancia que tienen, en la formación del alumno que
cursa estudios en informática, las asignaturas de primer ciclo más relaciona-
das con los temas de programación. Aunque la difusión de la informática ha
aumentado en los últimos años, en la mayoría de los casos, estas asignaturas
son la primera toma de contacto que el alumno tiene con la resolución de pro-
blemas a través de la realización de programas.
La enseñanza de la materia de las asignaturas introductorias a la progra-
mación ha sufrido una evolución a lo largo del tiempo, determinada por el
cambio que se ha producido en la tecnología informática. Es por ello, que el
enfoque docente con que se debe abordar la enseñanza de dicha materia en un
contexto universitario debe ser coherente con esta evolución. Existe un prin-
cipio básico en este enfoque: «el objetivo de las asignaturas de primer ciclo,
más relacionadas con temas de programación, es conseguir que el alumno
alcance un cierto dominio en el desarrollo de programas, sea cual sea la mag-
nitud de los mismos».
Con el fin de alcanzar este objetivo, es necesario que el alumno sea capaz
de:
• Escribir programas en un tiempo razonable, que funcionen correcta-
mente, que estén bien documentados y sean legibles.
• Abordar eficazmente la división de los programas de gran magnitud en
módulos y especificar adecuadamente los mismos.
• Razonar sobre la corrección y eficiencia de las soluciones desarrolla-
das y compararlas con distintas soluciones alternativas.
• Identificar problemas desconocidos con familias de problemas conoci-
dos y ser capaces de aplicar la solución algorítmica correspondiente.
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Fernando Llopis Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
Además, el alumno debe darse cuenta del hecho de que programar no es
sólo escribir programas que funcionen, sino conseguir que esos programas
satisfagan otras características como puedan ser su claridad, modificabilidad,
eficiencia, etc. Por ello se tratará que el alumno se de cuenta de lo erróneo de
la frase: «... pero si el programa funciona y es suficiente».
Además, es importante que la enseñanza universitaria de fundamentos de
programación forme al alumno de tal forma que le prepare para el estudio crí-
tico de cualquier lenguaje de programación, así como para la asimilación de
los cambios futuros. Este planteamiento no implica en ningún caso que deba
sacrificarse el aprendizaje y uso de lenguajes de programación concretos, sino
que por el contrario este uso debe completar la formación teórica del alumno.
El diseño de lenguajes de programación es un campo que evoluciona con-
tinuamente. Los lenguajes nacen, envejecen y mueren [Pratt98], y por ello se
debe evitar una excesiva dependencia de esta asignatura con respecto a algún
lenguaje de programación en concreto, ésta debe plantearse de forma que un
cambio del lenguaje de programación utilizado no afecte a los fundamentos
de la propuesta para la asignatura.
Evidentemente, tampoco se puede obviar el aprendizaje de lenguajes de
programación, porque esto facilita la comprensión de muchos conceptos y
además se ha de conseguir que los alumnos adquieran cierto nivel de progra-
mación para estar preparados para las asignaturas del siguiente curso.
Asíel planteamiento que se propone se basa en la introducción de una base
teórica y genérica, para después pasar a estudiar lenguajes de programación
en concreto. El primer bloque de estudio debe conseguir que el alumno apren-
da a programar en general y por ello se estudiarán diferentes herramientas y
técnicas independientes de los lenguajes de programación. El segundo bloque
se centrará en la aplicación de los conceptos vistos en el primer bloque utili-
zando lenguajes de programación.
De entre los paradigmas de programación disponibles cabe comentar cuál
podría ser el más adecuado para la iniciación a la programación. De los tres
paradigmas de programación, imperativo, declarativo y orientado a objetos,
realmente dos, ya que el tercero se puede aplicar tanto a lenguajes imperativos
como declarativos, se ha seleccionado el imperativo por varios motivos. Princi-
palmente debido a que consideramos más sencillo que el alumno comprenda los
algoritmos como una secuencia ordenada de pasos, que permiten realizar una
serie de tareas, porque es algo más natural a su conocimiento. Además los para-
digmas declarativos y orientados a objetos son estudiados en otras asignaturas.
No obstante, cabe indicar que han aparecido propuestas en las que se indi-
ca que es más recomendable introducirse a la programación a través del
modelo orientado a objetos [Arnold98]. Por otra parte hemos contrastado la
8
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Introducción a la programación. Algoritmos y C/C++
dificultad que tienen los alumnos de entender algunos de los conceptos de
dicho modelo en la asignatura Programación Orientada a Objetos, pero quizá
esto pueda ser debido a que el planteamiento es diferente, ya que en este caso
se trata de estudiar la programación orientada a objetos cuando el alumno se
ha acostumbrado a trabajar de forma procedural.
Otra de las cuestiones más debatidas y que más controversias provoca en
la enseñanza de la programación, es la elección del primer o primeros len-
guajes de programación. Ello se puede comprobar al observar los diversos
lenguajes de programación que se enseñan, o incluso a que su estudio no se
realice en clases de teoría sino únicamente en las clases prácticas.
En base a los objetivos propuestos los lenguajes de programación ideales
deberían cumplir las siguientes características:
• Ser un lenguaje de propósito general.
• Debe facilitar los hábitos de programación estructurada y programa-
ción modular.
• Debe posibilitar al usuario la definición de tipos de datos adicionales.
• Debe existir un estándar de dicho lenguaje.
• Además sería recomendable que estuviera difundido, que existieran
versiones de dicho lenguaje para los entornos más utilizados por los
alumnos (Linux/Unix, Windows) y que sus requisitos mínimos de eje-
cución no fuesen especialmente elevados. También es positivo que dis-
pusiesen de suficiente documentación y bibliografía.
La evolución y cambios que han sufrido los lenguajes de programación en
la enseñanza han sido enormes. De hecho si miramos hacia atrás, no es extraño
ver que lenguajes como el FORTRAN, COBOL y BASIC eran utilizados en
asignaturas de programación en muchas universidades. Hoy en día, quizá sólo
el FORTRAN se sigue utilizando en la Universidad en ámbitos muy concretos.
Con respecto a los lenguajes introductorios, cabe indicar que el lenguaje
Pascal ha sido el más utilizado, no obstante su uso hoy en día está empezan-
do a decaer y su sustituto natural, el Modula-2 (o Modula-3) no ha consegui-
do ni mucho menos ocupar su lugar.
Pascal se diseñó para ser una herramienta para la enseñanza de conceptos
de programación, no obstante herramientas basadas en lenguaje Pascal (más
bien en Object Pascal la versión orientada a objetos de Pascal) tienen actual-
mente una gran aceptación en la industria (Borland Delphi). Del lenguaje
Pascal cabe decir que es un lenguaje sencillo de aprender, y facilita la adqui-
sición de hábitos de programación estructurada y la comprensión de otros len-
guajes de programación no tan sencillos.
9
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Fernando Llopis Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
Quizá los mayores defectos de Pascal son:
• No disponer del concepto de módulos compilados de forma indepen-
diente, problema ya resuelto en Modula-2.
• El lugar donde se deben definir las variables del programa principal,
tan alejadas de su código y que pueden ser utilizadas como variables
globales por las funciones y procedimientos que se declaran a conti-
nuación.
• Pascal standard en cierta forma ha sido absorbido por el estándar de
hecho, el Turbo-Pascal, tanto es así que hay más libros disponibles de
Turbo-Pascal que de Pascal y algunos compiladores de Pascal han asu-
mido algunas de las especificaciones del Turbo-Pascal.
• Otro de los problemas que tiene Pascal, es que difícilmente puede
seguir siendo utilizado en otras asignaturas de cursos superiores, como
Tipos Abstractos de Datos o Programación orientada a Objetos.
En algunas Universidades se ha optado por el lenguaje C. De C cabe decir
muchas cosas, sobre todo que es un lenguaje que no deja indiferente. Sus
detractores dicen de él que es un lenguaje difícil de entender y que dificulta
la utilización de la programación estructurada. Sobre el primer aspecto cabe
indicar que estoy de acuerdo parcialmente con él, creo que es tan fácil o difí-
cil de entender como el Pascal, exceptuando un aspecto que ciertamente com-
plica mucho su comprensión, como es la gestión de los parámetros por valor
y por referencia y la utilización en algunos comandos de la variable o de la
dirección de la variable. Es este aspecto el que pienso que crea cierta frustra-
ción en los alumnos, y se desmoralizan al no saber claramente cuando deben
colocar los símbolos & y * delante de cada variable. Por otro lado, cabe des-
tacar que C tiene la ventaja de disponer una continuación o mejora del mis-
mo, C++, C orientado a objetos, que puede ser utilizada en cursos posteriores.
Cuando hablamos de futuro, cabe hablar de dos lenguajes de programa-
ción, Ada y Java. Ada es un buen lenguaje de programación, que cubre
muchos de los requisitos solicitados, pero tiene una complejidad que lo aleja
de lo recomendable en un curso de iniciación y además está poco difundido y
se dispone de poca bibliografía sobre él. Su viabilidad dependerá de la acep-
tación del nuevo estándar Ada95. Java es un lenguaje de tercera generación
con características de programación orientada a objetos, multiplataforma, y
especialmente preparado para el desarrollo de aplicaciones en Internet. Java
está basado en gran medida en el C++, pero con una gestión de memoria
menos propensa a errores de programación. No obstante, Java tiene una efi-
ciencia considerablemente menor que el C++, debido a ser un lenguaje Ínter-
10
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
from
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Introducción a la programación. Algoritmos y C/C++ 11
pretado o seudointerpretado. Su popularidad ha experimentado un gran creci-
miento en los últimos años, de hecho hay propuestas que lo tratan como un
buen lenguaje introductorio a la programación [Arnold98].
Nosotros hemos seleccionado como lenguaje de programación el C++ ya
que tiene una serie de ventajas sobre los lenguajes ya comentados, por un lado
asume las ventajas del lenguaje C y disminuye sus inconvenientes en los
aspectos más complicados tales como la gestión de parámetros, asemejándo-
se más a Pascal en este aspecto, así como ofrece una serie de mejoras que lo
hacen más sencillo de utilizar que el C, en aspectos tales como la entrada/sali-
da, definición de tipos, gestión de memoria dinámica... Por otra parte, permi-
te no trabajar obligatoriamente en programación orientado a objetos
entendida como tal. De hecho lo que se va a estudiar del lenguaje C++ va a
ser realmente un C++ -00, es decir un lenguaje C «mejorado».
La estructura del libro es la siguiente:
• Los primeros tres capítulos se dedican a ver nociones generales de los
fundamentos de la programación, empezando por explicar los concep-
tos de programación utilizando un lenguaje algorítmico, en castellano,
del cual disponemos de una versión ejecutable que permitirá al alumno
el desarrollo y posterior prueba de los algoritmos que desarrolle. Tam-
bién se estudian otras formas de representación de algoritmos.
• Los siguientes 9 capítulos se dedican a ofrecer una visión del lenguaje
de programación C++, pero sin incidir en los conceptos de programa-
ción orientada a objetos. Este estudio engloba los conceptos de progra-
mación así como las estructuras principales que permite este lenguaje,
comentando cual es la forma más adecuada de utilizarlas y los errores
más frecuentes que los programadores de C/C++ cometen.
• Por último hemos incluido dos anexos que hemos considerado de inte-
rés, el primero detalla las funciones de entrada/salida del C, ya que en
los temas propiamente dichos se comentan las de C++. El segundo ane-
xo contiene una pequeña introducción al concepto de complejidad de
un programa y a la importancia que éste tiene.
Por último destacar que el libro contiene multitud de ejercicios resueltos,
muchos de los cuales han sido extraídos de los enunciados de los exámenes
de la asignatura Fundamentos de Programación que se han realizado en los
últimos años.
Los autores
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
This page intentionally left blank 
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
1. INTRODUCCIÓN.
COMPUTADORES Y PROGRAMAS
1.1. Informática: Definición
Una de las mayores paradojas con las que se puede encontrar una perso-
na encargada de explicar una disciplina es la de tener que buscar definicio-
nes a muchos de los temas que va a tratar. En nuestro caso el problema se
complica al máximo, pues la palabra informática era desconocida hace rela-
tivamente pocos años, este nombre fue inventado para sustituir al inglés
«Computer Science», con el objeto de enfatizar la información como objeto
de esta nueva ciencia frente a la máquina que la manipula, el computador.
La Informática, término francés proveniente de la contracción de las pala-
bras «information» y «automatique», se ocupa, como ambas palabras indican,
del tratamiento automático de la información.
La información podemos definirla como el conjunto de datos necesarios
para plantear y resolver cualquier problema.
Según Charles Babbage, las tareas básicas para el tratamiento automático
de la información son:
• Entrada de datos
• Tratamiento o proceso de los mismos
• Salida de resultados
Dicho tratamiento se realiza mediante una herramienta que ha recibido
diversos apelativos: ordenador (traducción de la palabra francesa «ordina-
teun>), computador (traducción del término inglés «computer»), etc. y deberá
estar compuesta de unidades especializadas, capaces de realizar automática-
mente las tareas citadas.
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
14 
Fernando Llopis Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
1.2. Computadores u ordenadores
Un ordenador es un dispositivo capaz de ejecutar cálculos y tomar deci-
siones lógicas a velocidades mucho más elevadas que un ser humano.
Un ordenador se encarga del proceso de una serie de datos bajo el control
de un conjunto de instrucciones o programa de ordenador.
Para ello un ordenador dispone de los siguientes componentes:
Computador
Elementos Periféricos
Dispositivos de Entrada
Dispositivos de Salida
Dispositivos de Almacenamiento
f Unidad de Procesamiento
Unidad Central de Proceso i
[ Memoria Central
•Dispositivos de Entrada: permiten que la computadora reciba datos
del mundo exterior; por ejemplo, teclado, ratón, lápiz óptico, etc.
•Dispositivos de Salida: permiten a la computadora enviar datos al
mundo exterior; por ejemplo, pantallas de tubos de rayos catódicos
(CRT), impresoras, altavoces.
•Memoria Central: encargada de memorizar la información que se
introduzca en la máquina, distinguiendo entre datos (o parte de la infor-
mación que va a manipular la máquina) y el conjunto de instrucciones
(que indican a la máquina lo que debe hacer con los datos).
•Memoria Central: encargada de memorizar la información que seUnidad de Procesamiento: realiza el cómputo y la transformación de
datos.
•Memoria Central: encargada de memorizar la información que seUnidad de Procesamiento: realiza el cómputo y la transformación deDispositivos de Almacenamiento: guarda los datos para su uso posterior.
Entrada Unidad Central
de Proceso
Salida
Almacenamiento
(Memoria Externa)
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; LlopisPascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Introducción a la programación. Algoritmos y C/C++ 15
1.3. Evolución de los ordenadores
Procesamiento por lotes. Los primeros ordenadores solo podían ejecutar
un trabajo a la vez de forma secuencial.
Multiprogramación. Permite que diferentes trabajos pudieran compartir
los diferentes recursos del ordenador de forma simultánea.
Tiempo compartido. Es un caso especial de multiprogramación, a través
del cual varios usuarios tienen acceso al ordenador simultáneamente a través
de varios dispositivos de E/S (terminales).
Ordenadores personales. Los ordenadores se hicieron lo suficientemen-
te económicos para popularizar su uso en la industria.
Redes de ordenadores. Varios ordenadores enlazados entre ellos, de for-
ma que pudieran compartir sus recursos.
Cliente/Servidor. Red en la cual un ordenador principal almacena los pro-
gramas y los datos que se utilizan en una serie de ordenadores, normalmente
menos potentes.
1.4. Programación del ordenador
Los ordenadores sólo saben realizar un cierto número de operaciones ele-
mentales, pero para procesar una información necesitan tener almacenadas en
memoria unas instrucciones muy precisas y exactas que le indiquen en cada
momento que operación ha de hacer.
Este conjunto de instrucciones necesarias para resolver un problema, orde-
nadas en una secuencia adecuada, es lo que se llama programa.
Podemos pues, definir un programa como un conjunto ordenado de ins-
trucciones que guían a la computadora para que realice una tarea específica a
través de sus operaciones.
El programa, por tanto, indica a la máquina:
— lo que debe hacer,
— en qué orden debe hacerlo y
— con qué datos ha de trabajar
El programa puede encontrarse en forma directamente asimilable para la
computadora (lenguaje máquina) o puede requerir de una traducción hecha
por otros programas antes de ser utilizado (lenguaje de alto nivel).
Cuando nos referimos a los programas en general hablamos de software. Lo
que un ordenador sea capaz de hacer dependerá, no sólo, del hardware, sino
también del software. Digamos que si el primero es la máquina, la parte física,
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
16 Fernando Llopis Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
y representa la fuerza, el segundo es la inteligencia, la parte lógica, parte inma-
terial o modificable de los sistemas, de ahí su apelativo de soft (blando).
Hay que distinguir entre el Software Básico o Sistema Operativo, necesa-
rio para gestionar el ordenador, y el Software de Usuario o conjunto de pro-
gramas que realiza el usuario para resolver problemas.
El software, y más concretamente como desarrollar correctamente softwa-
re de usuario, es el objetivo de esta asignatura.
1.5. Representación de la información
En el tratamiento de la información hay un aspecto de especial importan-
cia: la forma de representar la misma en el ordenador.
Para que la información sea inteligible para el ordenador hemos de repre-
sentarla de una forma diferente a nuestra forma natural de escritura, para ello,
codificaremos la información utilizando un conjunto de reglas.
Toda la información empleada por los ordenadores está codificada, exis-
tiendo distintos códigos, pero todos ellos basados en la denominada codifica-
ción binaria o sistema binario (base 2), en el cual únicamente existen dos
símbolos: los dígitos O y 1.
La razón para emplear esta codificación binaria es que todos los dispositi-
vos del ordenador, y todos los medios de almacenamiento de datos, están
basados fundamentalmente en el empleo de componentes electrónicos biesta-
bles, es decir, que sólo poseen dos estados posibles.
Impulsos
Eléctricos
Releo
Interruptor
Válvula o
Transistor
Estado O Estado 1
Esta dualidad de estados parece recomendar un sistema binario para la
representación de la información.
Umversalmente se adopta el siguiente criterio: se representa la presencia
de una señal por el símbolo 1 y la ausencia de la misma por 0.
Un dígito binario (binary digit) se denomina bit, y es la unidad de infor-
mación mínima representable en un ordenador, pues la memoria central está
formada por millones de pequeños circuitos que sólo son capaces de memo-
rizar una cosa: si hay o no carga eléctrica.
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Introducción a la programación. Algoritmos y C/C++ 17
El bit es una unidad de datos demasiado pequeña, por lo que normalmen-
te los bits se manejan en grupo. Los bytes y las palabras son las formas más
comunes de agruparlos.
Un byte está constituido por 8 bits, con los cuales podemos hacer hasta
28=256 combinaciones o representaciones diferentes.
Una palabra es una agrupación de 8, 16, 24, 32 ó 64 bits, su tamaño
depende del modelo del ordenador. Este conjunto de bits puede ser manipu-
lado en una sola operación. En los procesadores, los registros que almacenan
los datos tienen el tamaño de una palabra.
El conjunto de caracteres codificable en un ordenador se denomina juego
de caracteres, y está compuesto por:
— letras o caracteres alfabéticos
— dígitos o caracteres numéricos
— caracteres especiales y de puntuación
— caracteres de control.
Cada carácter se podrá representar utilizando un byte, mediante alguna de
sus múltiples combinaciones de bits.
Una vez que la información está codificada diremos que está en el len-
guaje de la máquina.
Un código de caracteres muy conocido es el American Standard Codefor
Information Interchange (ASCII).
Los usuarios no necesitan conocer el código de caracteres utilizado por el
ordenador, puesto que la información se introduce en forma alfabética y
numérica decimal y se extrae de la misma forma, existiendo unos dispositivos
especiales encargados de codificarla al código binario que corresponda, a la
entrada, y decodificarla a la salida.
1.6. Evolución de los lenguajes de programación
La «historia» de los lenguajes de programación puede ser dividida en cua-
tro, o cinco según otros autores, generaciones. Las tres primeras generaciones
siguen una sucesión en el tiempo, mientras que la cuarta y la quinta han ido
evolucionado de forma paralela.
1.6.1. Lenguajes de bajo nivel. Primera generación de lenguajes
La tecnología de ordenadores más antigua se sitúa en los años previos a la
Segunda Guerra Mundial. Estas máquinas tenían como objetivo la resolución
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s109303718 
Fernando Llopis Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
de problemas numéricos, por ello básicamente se les consideraba calculado-
ras electrónicas. Los lenguajes que formaron parte de esta generación fueron
el lenguaje máquina y el lenguaje ensamblador.
Se entiende por:
— Instrucción, una cadena de unos y ceros que permiten al procesador
reconocer una operación elemental y ejecutarla.
— Lenguaje de máquina, el conjunto de instrucciones que puede ejecutar
el procesador y las reglas para su codificación.
Lenguaje máquina
Utiliza una notación binaria. Consta de un número limitado de instruccio-
nes, teniendo cada una un código de operación y una o varias direcciones de
memoria central, donde están ubicados los operandos y el resultado, codifi-
cados, por supuesto, en binario.
Veamos un ejemplo de lenguaje máquina sencillo, basado en un ordenador
imaginario:
Código
001
010
Ol1
100
101
110
111
Operación
Cargar
Sumar
Restar
Bifurcar
Comparar
Almacenar
Parar
Para realizar un programa, en lenguaje máquina, hay que hacer las siguien-
tes etapas:
1. Descomponer el tratamiento del problema en operaciones elementales
de la máquina.
2. Asignar un lugar en la memoria central para cada instrucción, cada
dato y cada resultado.
3. Codificar cada instrucción como una serie de dígitos binarios, de
acuerdo a la tabla de instrucciones de máquina del procesador, y tam-
bién codificar los datos en el sistema binario.Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Introducción a la programación. Algoritmos y C/C++ 19
Por ejemplo, el siguiente programa, en lenguaje máquina, resta un núme-
ro de otro y el resultado lo almacena en una posición de memoria.
Memoria Central
Dirección Contenido
0
1
2
3
4
5
6
7
8
00000
00001
00010
00011
00100
00101
00110
00111
01000
00100101
01100110
11000100
11100000
00000000
00000111
00000010
00000000
00000000
— _
programa
—
datos
—
memoria libre
Este modo de programación, directamente en lenguaje máquina, fue el pri-
mero que se utilizó, y presenta las siguientes características.
• Las instrucciones en lenguaje máquina están influenciadas por la arqui-
tectura del ordenador en cuestión, existiendo una instrucción en len-
guaje máquina por cada operación que realiza directamente el hardware
del ordenador. Esto significa:
— que hay que conocer detalladamente el funcionamiento del ordena-
dor, y lo que ocurre exactamente en cada operación, o sea, que es
dependiente del hardware.
— que cada tipo de procesador tiene su propio lenguaje, cambiar de
ordenador significa tener que volver a realizar los programas, es
decir, que no es portable.
• La tercera etapa de programación es mecánica y tediosa, siendo eleva-
do el riesgo de cometer errores, pues es fácil cambiar un O por un 1.
Además los programas se convierten en algo prácticamente indescifra-
ble, incluso para su propio autor, y por supuesto incomunicables para
otro programador.
• En definitiva, el hombre se convierte en esclavo de la máquina, pues
debe adaptarse a las características de la misma.
Es fácil ver lo complicado y tedioso que resulta programar en lenguaje
máquina, para evitar, en la medida de lo posible, estas dificultades se crearon
los lenguajes ensambladores.Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
20 
Fernando Llopis Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
Lenguaje ensamblador
Introdujo el direccionamiento simbólico de instrucciones y direcciones,
facilitando la programación.
La misión de un ensamblador es la de simplificar la programación de un
determinado ordenador, manteniendo un control directo del hardware del mis-
mo, por lo que cada tipo de ordenador tiene su propio ensamblador, que no
está demasiado lejos del código máquina.
Veamos sus características:
• Uso de abreviaturas o nemotécnicos para representar los códigos de
operaciones de las instrucciones. El ensamblador incluye un conjun-
to de instrucciones que guarda una relación biunívoca con las ins-
trucciones del código máquina. En otras palabras, para cada una de
las instrucciones en código máquina existe una instrucción en ensam-
blador.
Para el lenguaje máquina de nuestro ejemplo, podemos definir las siguien-
tes equivalencias:
Código
001
010
Ol1
100
101
110
111
Abreviatura
CAR
ALM
SUM
RES
BC
BNC
PAR
Operación
Cargar
Almacenar
Sumar
Restar
Bifurcar si es cero
Bifurcar si no es cero
Parar
•Uso de direccionamiento simbólico, según esto las direcciones de
memoria se representan por símbolos, y se definen al escribir el pro-
grama como un grupo de caracteres o etiquetas escritas a la izquierda
de las instrucciones. Estas etiquetas serán las direcciones simbólicas
que representan las posiciones en memoria de una instrucción o un
dato.
•Conversión automática de datos, de forma que podemos utilizar la
notación decimal, en vez de la representación binaria, para la escritura
de los mismos.Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Introducción a la programación. Algoritmos y C/C+ +
El ejemplo anterior resuelto en lenguaje ensamblador sería:
C:
A:
B:
A
B
C
Veamos que ventajas hemos conseguido:
• El uso de símbolos nemotécnicos para las instrucciones permite escri-
bir y leer con mayor facilidad los programas.
• El programador no tiene que preocuparse durante la confección del
programa de las direcciones a las que hace referencia, pues gracias al
uso de etiquetas será el ordenador el que calcule posteriormente esas
direcciones en memoria. Además, queda resuelto el problema que se
planteaba cuando se insertaba o eliminaba una instrucción en el pro-
grama, pues al estar trabajando con direcciones absolutas de memoria,
esto hacía que casi todas las direcciones resultasen incorrectas después
de insertar o eliminar una instrucción.
• Ahora bien, como la unidad de control sólo puede interpretar las ins-
trucciones almacenadas en binario en la memoria, es necesario traducir
a lenguaje máquina cualquier programa escrito en lenguaje ensambla-
dor, para que éste se pueda ejecutar.
La correspondencia directa entre los elementos del lenguaje máquina y los
del lenguaje ensamblador posibilita la traducción automática por el propio
ordenador. El proceso de traducción, llamado ensamblaje se realiza mediante
un programa llamado ensamblador.
Esta traducción automática hace algunas verificaciones sobre el programa,
detecta códigos nemotécnicos de operaciones inexistentes para la máquina y
direcciones simbólicasno definidas. Además evita errores de escritura en
binario.
Un ensamblador es un programa que lee, como datos de entrada, un pro-
grama escrito en lenguaje ensamblador y produce, como resultado, un pro-
grama en lenguaje máquina, detectando e informando de los errores
encontrados durante el proceso de traducción.
21
LOAD
SUB
STR
STOP
0
7
2
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Fernando Llopis Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
El término ensamblador hace referencia tanto al lenguaje de programación
como al programa que traduce un programa escrito en lenguaje ensamblador
a lenguaje máquina.
A pesar de estas ventajas, sigue siendo grande la adecuación del hombre a
las características de la máquina, y es necesario hacer de nuevo todos los pro-
gramas cuando se cambia de tipo de ordenador. El lenguaje máquina y el
ensamblador se denominan lenguajes de bajo nivel por lo fuertemente con-
dicionados que ambos están por la arquitectura del computador que los sopor-
ta. Es decir, son lenguajes orientados a la máquina.
Para evitar los inconvenientes que presentaban los lenguajes de bajo nivel,
se crearon otros lenguajes de programación no ligados a las características de
la máquina, y por tanto, útiles para cualquier computador.
1.6.2. Lenguajes de alto nivel
Su desarrollo comenzó a mediados de los años 50. Se había puesto de
manifiesto que la mayor limitación de los ordenadores se encontraba a nivel
software y no a nivel hardware, ya que escribir programas en lenguajes de
bajo nivel era una tarea larga, difícil y cara.
Un lenguaje de alto nivel es un lenguaje orientado hacia la resolución de
una determinada clase de problemas, mientras que un lenguaje de bajo nivel
es un lenguaje orientado a una determinada clase de máquinas.
Los lenguajes de alto nivel tienen las siguientes características:
• Son lenguajes de programación cuya estructura y vocabulario está más
cercano al lenguaje natural que los de bajo nivel, pero con una sintaxis
muy rígida que evita las ambigüedades propias de los lenguajes natu-
rales. Esto es posible debido al uso de tan sólo unas pocas palabras
tomadas del lenguaje natural, las llamadas palabras reservadas, que
junto con unas reglas sintácticas permite obtener programas dotados de
una estructura clara y que no difieren mucho de la forma de expresar-
nos que tenemos normalmente.
• Los programas escritos en lenguajes de alto nivel deben traducirse a
lenguaje máquina. La rígida sintaxis de que están dotados permite que
el proceso sea automático, realizándose las tres fases descritas en la
programación en lenguaje máquina.
• Elevado rendimiento, pues se produce más de una instrucción de
máquina por cada sentencia de alto nivel, siendo éste proporcional al
número de instrucciones máquina que puede generar una sentencia. A
mayor rendimiento se dice que el lenguaje es de mayor nivel.
22
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Introducción a la programación. Algoritmos y C/C++ 23
Nuestro anterior ejemplo en el que se restaba un número, por ejemplo
IMPUESTOS de otro, el SUELDO, y el resultado lo almacenaban en otro, el
LIQUIDO, empleando un lenguaje de alto nivel, como es el COBOL, se redu-
ce a una sola sentencia, muy próxima al lenguaje natural:
SUBTRACT IMPUESTOS FROM SUELDO GIVING LIQUIDO
o bien, otra forma de expresarlo, mediante una notación matemática presente
en casi todos los lenguajes, y por supuesto en el lenguaje C, podría ser:
LIQUIDO = SUELDO - IMPUESTOS
En consonancia con sus características, presentan las siguientes ventajas:
• La productividad del programador es mayor, puesto que:
— se requiere menos tiempo para aprenderlo por ser de gran rendi-
miento, con lo cual hay menos instrucciones que en código máquina.
— es más fácil de aprender por tener una notación orientada a los pro-
blemas.
— es más fácil detectar y corregir los errores, por ser un lenguaje pró-
ximo al natural y estructurado.
— es autodocumentado debido a la potencia expresiva del lenguaje,
esto junto con su estructuración hace que la programación deje de
ser algo artesanal, repleta de trucos, para pasar a ser algo científico,
dotado de una metodología, lo cual permite que los programas pue-
dan ser entendidos por cualquier programador.
• Es independiente de la arquitectura del ordenador que lo soporta.
• La persona que desarrolla el programa no tiene porque saber nada acer-
ca del ordenador en que se ejecutará el mismo, ni por supuesto su códi-
go máquina o ensamblador.
• Los programas son portables, es decir, el código fuente puede funcio-
nar sobre otros tipos de ordenadores, en el peor de los casos bastará con
hacer unos retoques.
Sin embargo, siempre existen ciertos inconvenientes, aunque por fortuna
éstos son menores que las ventajas:
• La orientación del lenguaje al problema es un objetivo que se logra sin
demasiadas trabas, especialmente en los lenguajes de propósito espe-
cial como el COBOL. La independencia de una máquina particular no
se logra tan fácilmente. Existe una versión estándar que deben cumplir
los lenguajes de las diferentes casas comerciales, pero además cada uno
tiene sus propias especificaciones.
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Fernando Llopis Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
• Hay un proceso adicional, que conlleva un tiempo, requerido para la
traducción del programa en lenguaje de alto nivel al código de la
máquina, pero este tiempo es infinitamente menor que el que emplea-
ríamos si tuviéramos que escribir el programa en código máquina.
• Hay una mayor ocupación de la memoria, pues el lenguaje tiene una
serie de sentencias que generan unas instrucciones máquina no opera-
tivas creando un código máquina no optimizado, con lo cual el tiempo
de ejecución es mayor que si el programa se hubiera realizado directa-
mente en código máquina. Este problema carece hoy día de importan-
cia debido a la cantidad de memoria central disponible, por su bajo
coste, y a la velocidad de los procesadores. De todas formas se ha pres-
tado mucha atención a la optimización del código que se genera.
A pesar de estos inconvenientes, hoy en día se programa todo con lengua-
jes de alto nivel, incluso programas verdaderamente complicados como pue-
den ser los sistemas operativos, pues ésta es la única forma de poder acabarlo
y probarlos en un tiempo razonable. Por ejemplo, casi todo el desarrollo del
sistema operativo UNIX ha sido escrito en el lenguaje C. La experienciaindi-
ca que sólo un pequeño porcentaje es crítico bajo el punto de vista de la velo-
cidad de ejecución. Una vez localizados los puntos críticos, son reescritos en
lenguaje ensamblador.
Los lenguajes de alto nivel se pueden encasillar dentro de las tres siguien-
tes generaciones.
Segunda generación de lenguajes
Es a principio de los años cincuenta cuando aparecen notaciones simbóli-
cas (lenguajes A-0 y Speedcoding), pero el verdadero avance se produjo con
la aparición del FORTRAN en 1957, un lenguaje orientado a entornos mate-
máticos.
Otros lenguajes dentro de esta generación son:
ALGOL, fue el lenguaje académico de computo estándar en la década de
los sesenta y principios de los setenta. Nunca tuvo éxito en EEUU, y un éxi-
to relativo en Europa, pero si influyó en lenguajes que fueron desarrollados
posteriormente.
COBOL, lenguaje desarrollado para que pudiera ser utilizado en aplica-
ciones comerciales y cuya forma de texto fuera similar al lenguaje inglés.
COBOL fue el lenguaje estándar para las aplicaciones comerciales desde
entonces hasta hoy en día. COBOL sigue siendo bastante utilizado en deter-
minados ámbitos, aunque está empezando a decaer notablemente su uso.
LISP, lenguaje desarrollado para aplicaciones de inteligencia artificial.
24
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Introducción a la programación. Algoritmos y C/C++
BASIC, en 1965 aparece BASIC un lenguaje orientado a ordenadores
pequeños, con pocas instrucciones y fácil de aprender. BASIC fue desarrolla-
do para satisfacer las necesidades del cálculo numérico no científico, no obs-
tante se ha extendido mucho más que su meta original.
Tercera generación de lenguajes
La creciente complejidad, tamaño e importancia de los sistemas y aplica-
ciones, las necesidades de fabilidad en los programas y, al mismo tiempo, la
falta de adecuación de los métodos tradicionales a dichas necesidades hizo que
la situación llegara a ser crítica. Esto lleva a la Organización del Tratado del
Atlántico Norte (OTAN) a patrocinar una conferencia en 1968 cuyo objetivo
principal es discutir lo que se había denominado como «crisis del software».
La «crisis del software» se refiere a un conjunto de problemas encontra-
dos en el desarrollo del software de ordenadores. Algunos lenguajes destaca-
dos dentro de la tercera generación son los siguientes:
PASCAL, nacido tras la crisis del software a principios de los años 70,
como resultado del esfuerzo de buscar mejores notaciones, estructuras de con-
trol claras y facilidades de definición y manejo de datos que hagan más fácil
la tarea de obtener programas correctos, claros y modificables. En definitiva,
era el primer lenguaje construido especialmente con las propuestas formula-
das por la programación estructurada.
C, empezó como un lenguaje orientado a sistemas (implementación de sis-
temas operativos), pero sus características de lenguaje de alto nivel que sopor-
ta estructuras de datos sofisticadas y la posibilidad de estructurar programas
mediante funciones (subprogramas), así como su eficiencia y las facilidades
propias de los lenguajes de bajo nivel lo han hecho muy popular y ha sido
aplicado a diferentes áreas.
PROLOG es un lenguaje para la programación lógica, separan la lógica
(lo que el programa tiene que hacer) y el control (cómo tiene que hacerlo).
A finales de los años setenta aparece un nuevo concepto de programación, la
programación orientada a objetos. Esta forma de programación tiende a plan-
tear las aplicaciones de acuerdo a las clases y objetos (datos) del dominio en
lugar de sobre las acciones a ejecutar (procesos), e introduce nuevos conceptos
como los de clase, objeto y herencia. Los lenguajes más representativos de esta
programación son el Smalltalk, el Eiffel y el más popular, el C++. El C++ fue
desarrollado como un lenguaje que conservaba la eficiencia del lenguaje C, pero
incorporando los elementos de la programación orientada a objetos.
En estos últimos años cabe hablar de la aparición de un lenguaje cuyo uso
se está extendiendo a gran velocidad de forma paralela a la popularidad de
Internet, este lenguaje es JAVA. Es un lenguaje de tercera generación con
25
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Fernando Llopis Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
características de programación orientada a objetos, multiplataforma, y espe-
cialmente preparado para el desarrollo de aplicaciones en Internet.
Cuarta Generación de lenguajes
Intentan incrementar el mayor nivel de abstracción posible. Estos lengua-
jes, sobre todo, están orientados a la gestión y en especial al tratamiento de
bases de datos. Algunos de estos lenguajes de programación tienen su propia
estructura, y otros realmente lo que hacen es el permitir al programador crear
programas en un lenguaje de tercera generación utilizando muchas menos
sentencias. En la actualidad se habla de lenguajes de quinta generación, basa-
dos en LISP y PROLOG.
1.7. Compilación e interpretación
Los programas escritos en lenguaje de alto nivel son traducidos al código
máquina por unos programas especiales llamados compiladores e intérpretes.
El compilador analiza el programa —programa fuente—, comprobando
su sintaxis e indicando los errores de escritura, si los hubiera, y luego genera
el programa en lenguaje máquina —programa objeto—.
El programa objeto puede ser ya ejecutado o necesitar, según el compila-
dor que se esté usando, de otro proceso además de la compilación, llamado
enlazado ("link"), en donde al programa objeto se le unen una serie de módu-
los de librería, tales como operaciones aritméticas o manejo de gráficos, nece-
sarios para crear el programa ejecutable.
Un intérprete es un programa que analiza y ejecuta un programa sentencia a
sentencia. Como los compiladores, los intérpretes analizan la estructura de cada
sentencia del programa fuente, sin embargo no generan código objeto y llevan a
cabo un conjunto de acciones equivalentes a las instrucciones de la sentencia.
Estudio comparativo:
— Los intérpretes son más cortos y mas simples que los compiladores, por
tanto ocupan menos memoria y son más baratos, razón por la cual hace
algunos años, estuvieron más extendidos en el entorno de los microor-
denadores, cuando estos tenían menos prestaciones.
— En los intérpretes, la optimización es prácticamente imposible y los
diagnósticos de error son limitados en comparación con los que pro-
porcionan los compiladores, mucho más sofisticados.
— Los lenguajes compilados son más eficientes que los interpretados,
entendiendo por eficiencia la rapidez de ejecución.
26
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIAAN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Introducción a la programación. Algoritmos y C/C++
La razón es la siguiente, cada vez que se vuelve a ejecutar una instrucción,
en un lenguaje interpretado, se tiene que efectuar el proceso de traducción de
la misma, mientras que en un lenguaje compilado la traducción de todo el pro-
grama fuente se efectúa una sola vez, construyendo un programa objeto.
1.8. Sistemas Operativos
Lo usual, nada más recibir un ordenador es hacerlo funcionar. Para ello es
imprescindible que introduzcamos un programa en la memoria del mismo y
lo ejecutemos. Esto puede hacerse desde el teclado de un terminal, pero,
¿cómo es capaz el ordenador de interpretar que lo que realmente queremos
hacer es poner en marcha ese determinado programa? Necesitamos, pues, la
ayuda de otro programa dentro del ordenador que esté diseñado para activar
y coordinar toda la circuitería y el conjunto de dispositivos mecánicos que lo
componen y nos facilite su utilización.
Vemos que para cargar un programa en la memoria del ordenador necesi-
tamos la ayuda de otro programa. Evidentemente, dentro del ordenador debe
haber un software que nos facilite la utilización del mismo.
Sin su software, un ordenador es básicamente un conjunto de circuitos
electrónicos y de partes mecánicas sin utilidad. Con su software, un ordena-
dor puede almacenar, procesar y recuperar información.
Veamos esa parte del software de un computador que transforma el hard-
ware en algo útil: el Sistema Operativo.
El sistema operativo es el nivel más bajo del software de un ordenador y
actúa directamente sobre el hardware. Como su nombre indica es un progra-
ma o conjunto de programas que trabajan en conjunto para realizar dos fun-
ciones: por una parte se encarga de controlar el hardware y gestionar sus
recursos, por otra parte proporciona una visión simplificada de la máquina,
ocultando a los usuarios la complejidad de las anteriores tareas.
Veamos cada una de estas funciones.
1.8.1. El Sistema Operativo como máquina virtual
La arquitectura, conjunto de instrucciones, organización de la memoria,
E/S, etc., de los ordenadores en el nivel del lenguaje máquina es primitiva y
muy difícil de programar, especialmente en la entrada/salida.
Está claro que el programador, cuando está realizando un programa para
resolver un problema de usuario, no desea verse envuelto, por ejemplo, en el
control del disco duro, lo único que desea conocer es una abstracción del dis-
co, simple y de alto nivel, con la cual trabajar. Para él, un disco es un sopor-
27
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
28 Fernando Llopis Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
te magnético que contiene un conjunto de ficheros, en donde cada fichero tie-
ne un identificativo por el cual puede referenciarse para ser leído y/o escrito.
Por ello, una de las funciones del sistema operativo es la de actuar direc-
tamente sobre el hardware, ocultando la verdad del mismo al usuario, presen-
tándole una máquina virtual, más simple y amigable, que sea más fácil de
manejar que el hardware real.
1.8.2. El Sistema Operativo como Administrador de Recursos
Podemos considerar el ordenador como un conjunto de recursos, necesarios
para la ejecución de los procesos. Los recursos pueden ser físicos —procesa-
dor, memoria, periféricos, etc.— y pueden ser lógicos —programas, ficheros
de datos, etc.—. Una de las misiones de los sistemas operativos es hacer un uso
eficiente de estos recursos entre los diversos programas que compiten por
ellos, ofreciendo una distribución ordenada y controlada de los mismos.
1.9. Esquema general de un Sistema Informático
Veamos a continuación un esquema de los diversos niveles que configuran
un sistema informático, descendiendo desde la vista que contempla el usuario
hasta los dispositivos físicos de la máquina.
SOFTWARE
Programas de Usuario
Programas del Sistema y Utilidades
Sistema Operativo
Lenguaje Máquina
FIRMWARE
Microprogramación
HARDWARE
Monitores, teclados. Impresoras, discos,
Elfírmware o microprogramación es un ente intermedio entre el hardwa-
re y el software, a un nivel más bajo que el sistema operativo. Es un softwa-
re almacenado permanentemente en memorias de sólo lectura (ROM Read
Only Memory).Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
2. TIPOS DE DATOS ELEMENTALES
2.1. Introducción
Recordemos que la función principal de un ordenador es el tratamiento
automático de la información, que consiste en la manipulación de una serie de
datos bajo el control de un conjunto de instrucciones, aplicadas en un orden
determinado, lo que se conoce como programa.
Dicha manipulación puede realizarse independientemente del lenguaje de
programación utilizado, las diferencias que habrá entre unos lenguajes y otros
radican en:
• Los tipos de datos empleados
• Las operaciones permitidas sobre esos tipos de datos
• La forma en la que se especifica el orden en el que se van a ejecutar las
operaciones.
Hemos diferenciado dos aspectos fundamentales datos y programas.
En este tema se realizará una introducción a los tipos de datos y sus ope-
raciones, y en el siguiente tema nos centraremos en los aspectos fundamenta-
les de los programas.
2.2. Dato Objeto
Un ordenador dispone de una serie de dispositivos donde se almacena
información, tanto en la memoria central y en los registros del procesador,
como en los dispositivos de almacenamiento externo, disco duro, diskette,
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
30 Fernando Llopis Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
CD, etc. La estructura en la que se almacena la información en estos disposi-
tivos suele ser muy simple, un conjunto de bits agrupados en bytes.
Es evidente que, trabajar directamente sobre esta forma de almacenamien-
to es complicado, por ello los lenguajes de programación disponen de organi-
zaciones de datos que permiten almacenar información mucho más compleja
que una serie de bits, pero mucho más sencillas de utilizar.
Para hablar de esa información procesada por un programa introducire-
mos un nuevo concepto, el término dato objeto, que utilizaremos para refe-
rirnos a la agrupación en tiempo de ejecución de uno o más datos en una
computadora.
Así un dato objeto representa un ente que contiene información, es como
un recipiente para los valores de los datos, un lugar dondelos valores de los
datos pueden ser almacenados y más tarde recuperados.
De todos los datos objeto que un programa utilizará, cabe diferenciar aque-
llos que explícitamente define el programador (constantes, variables, tablas,
registros, ficheros, etc.) y aquellos que define el sistema de forma automática
y que no son accesibles por el programador, pero son necesarios para la eje-
cución del programa (pila de llamadas a subprogramas).
En este tema vamos a hablar de los datos objeto que define el programa-
dor.
Todo dato objeto viene caracterizado por tres atributos que son nombre,
tipo y valor.
2.2.1. Nombre o identificador
Al igual que para las personas el nombre de un dato objeto sirve para iden-
tificar univocamente al dato objeto dentro del conjunto de datos objetos del
programa. Así, mediante este atributo el objeto puede ser referenciado duran-
te la ejecución del programa, distinguiéndole de los demás.
Cada lenguaje tiene una serie de normas, más o menos restrictivas, para
definir los nombres. Generalmente, el nombre o identificador, se formará
mezclando letras y números, siempre con la condición de que el primer carác-
ter sea una letra y no se utilicen signos de puntuación, a excepción del sím-
bolo de subrayado.
Indentificadores válidos:
A, SALDO, A3, b23, num, saldo_medio.
Identificadores no válidos:
23b, 454, Saldo+, * a+, Nota/Numero.
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Introducción a la programación. Algoritmos y C/C++
Es muy recomendable, a ser posible, elegir un nombre significativo que
describa la información que va a contener el dato objeto, por ejemplo, es pre-
ferible utilizar como identificadores lado, área, diámetro que l,a,d, pues ello
incrementará considerablemente la legibilidad del programa.
2.2.2. Tipo de datos
Quizá sea el atributo más importante de un dato objeto, ya que indica la
clase de datos a la que pertenece.
El tipo de datos se define como el conjunto de valores, que pueden tomar
los objetos pertenecientes a este tipo de datos, y el conjunto de operaciones
que se pueden realizar sobre estos valores.
El valor es el contenido del dato objeto en un instante dado, siendo el úni-
co atributo susceptible de ser modificado a lo largo de la ejecución del pro-
grama.
Los datos objetos se definen al principio del programa, en lo que se cono-
ce como parte declaratoria del programa, antes de ser utilizados.
Según lo que hemos comentado hasta ahora, las distintas clases de tipos de
datos tienen diferentes conjuntos de posibles valores y diferentes representa-
ciones en el ordenador, y lo que es más importante, admiten distintas opera-
ciones.
Podemos dividir los tipos de datos en dos clases:
Tipos de datos simples o elementales, sólo permiten almacenar un valor.
Tipos de datos estructurados, permiten almacenar más de un valor. Se
construyen a partir de los tipos de datos elementales.
Los datos elementales suelen estar presentes en todos los lenguajes de pro-
gramación, aunque su representación en el ordenador suele cambiar de unos
lenguajes a otros, e incluso, dentro de un mismo lenguaje, puede cambiar de
unos compiladores a otros, sin embargo, el resto de características, como son
el conjunto de valores y de operaciones, son análogas para todos los lengua-
jes. Son tipos de datos predefinidos, casi todos ellos, por lo que se les deno-
mina también tipos estándar, pero también hay otros que los define el
programador.
En cuanto a los tipos estructurados, hay que decir que siempre los tiene
que definir el programador.
31
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
32 Fernando Llopis Pascual, Ernesto Pérez López y Fernando Oríuño Ortín
Podemos considerar la siguiente clasificación:
Datos simples
Predefinidos
o estándar
Definidos por el
usuario
entero
real
carácter
lógico
puntero
enumerado
subrango
Datos
Estructurados
Vectores
Registros
Listas, Pilas.
Ficheros
2.2.2.1. Tipos de datos Predefinidos
Son los que se hallan, por defecto, en la mayoría de lenguajes de progra-
mación.
Tipo numérico entero.
Sus valores son un subconjunto de los números enteros, cuyo rango o
tamaño entre [-MAXINT, MAXINT] depende del lenguaje, de la computado-
ra utilizada y del sistema operativo, siendo MAXINT el mayor número que
puede almacenar un dato objeto de tipo entero.
Los datos de este tipo se expresan mediante una cadena de dígitos que pue-
de ir precedida de signo (+ o -) y sin punto decimal. En el caso de no indicar
nada se entiende que el número es positivo.
Se representan en el ordenador en el formato de coma fija, ya que, aunque
no se represente, está implícita a la derecha del mismo.
Ejemplo: 1998 -14 +21368
Tipo numérico real.
Los valores que puede tomar un dato de tipo real son un subconjunto de
los números reales, limitado no sólo en cuanto al tamaño, sino también en
cuanto a la precisión o cantidad de decimales que posee.Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Introducción a la programación. Algoritmos y C/C++
Se expresan de dos maneras diferentes denominadas notación en punto flo-
tante y notación exponencial o científica.
Punto flotante: Un valor consiste en una cadena de dígitos, que puede ir
precedida de signo, y un punto decimal, que puede ocupar cualquier posición,
seguido de uno o más dígitos. Es necesario escribir siempre ambas partes,
entera y fraccionaria, para distinguir estos valores de los enteros.
Ejemplo: 78.45 -321.0 +0.7 0.0
Científica o exponencial, tiene la forma: mantisa E exponente
Siendo la cantidad representada igual a la mantisa multiplicada por 10 ele-
vado al exponente, donde mantisa es un número real y exponente un número
entero.
Ejemplos: 0.7845E2 (= 0.7845 x 102 = 75.45;
-120000E-4
+0.0005E+3
Tipo carácter.
El conjunto de valores que puede tomar un dato de este tipo es el formado
por todos los caracteres o símbolos recogidos en la tabla de códigos utilizada,
a saber:
• Caracteres alfabéticos: 'A', 'B', 'C, '£>', ..., 'Z'.'a', 'b', 'c', 'd1, ..., 'z'
• Dígitos numéricos: 'O', T, ?', '3', ..., '9'
• Caracteres especiales y de puntuación:'' (espacio o carácter blanco),'+',
Se expresan, usualmente, poniendo el carácter entre apóstrofos (comillas
simples).
Tipo booleano o lógico.
Sus posibles valores son sólo dos: FALSO y CIERTO, y son el resultado de
establecer comparaciones entre valores de otros tipos de datos.
2.2.2.2. Tipos de datos definidos por el programador
Los tipos de datos enumerado y subrango son también conocidos como
datos definidospor el programador, por ser éste quien define el tipo de datos,
33
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Fernando Llopis Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
y por consiguiente el conjunto de valores posibles que puede tomar un obje-
to de estos tipos de datos.
En realidad son tipos de datos algo especiales, ya que se trata de subcon-
juntos de los tipos simples que hemos estudiado, pero agrupando los valores
siguiendo el criterio del programador.
Tipo subrango o intervalo.
Un tipo subrango se define a partir de otro tipo de datos que sea ordinal y
finito, lo que excluye a los reales, especificando dos constantes de ese tipo,
que actúan como límite inferior y superior del subconjunto de valores del nue-
vo tipo.
Ejemplo:
1.. 10 consta de los enteros 1, 2, 3, 4, 5, 6, 7, 8, 9 y 10.
'J'.. 'Nr consta de los caracteres 'J', 'K', 'L', 'M', «N1.
'a'.. 'z' consta de los caracteres comprendidos entre la V y la 'z', inclu-
sive.
'O'.. '9' consta de los caracteres comprendidos entre el 'O' y el '9', inclu-
sive.
Tipo enumerado.
Un tipo enumerado se define enumerando los posibles valores que puede
tomar un objeto de este tipo de datos, se hace mediante una lista de identifi-
cadores, entre paréntesis y separados por comas, elegidos de forma que su
significado haga que el programa sea más legible. Dichos valores no son, en
ningún caso, cadenas de caracteres.
Un tipo enumerado es un tipo ordinal, de forma que el sistema le asocia a
cada identificador, y en el orden en que están enumerados, un valor entero
empezando por O y llegando hasta el valor n-1, suponiendo definidos n iden-
tificadores para el nuevo tipo de datos.
Las variables de tipo enumerado tomarán como valor alguno de estos iden-
tificadores, pero el sistema los tratará según los valores enteros asociados, de
forma que estos identificadores no son tratados como cadenas de caracteres,
por ejemplo, si tuviéramos que visualizar por pantalla uno de estos identifi-
cadores, se visualizaría el valor entero asociado y no el identificador.
Ej.:
calificación = (suspenso, aprobado, notable, sobresaliente, matricula);
sexo = (varón, mujer);
días - (lunes, martes, miércoles, jueves, viernes, sábado, domingo);
34
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Introducción a la programación. Algoritmos y C/C++ 35
2.2.3. Valor. Operador de asignación
El valor es la información que en un instante determinado almacena el
dato objeto. Los valores que puede tomar un dato objeto están condicionados
al tipo de dato al que pertenece el objeto y suelen ser el resultado de una ope-
ración de asignación,
Para asignar valores a los objetos se utiliza el operador de asignación :=,
siendo su sintaxis:
identificador := valor
Así, por ejemplo, si declaramos el objeto nota de tipo entero y le asigna-
mos el valor 7 con la instrucción nota := 7, el objeto nota almacenará el valor
7, perdiendo cualquier información que tuviera anteriormente y manteniendo
sólo la última que se le asignó.
Otras posibles representaciones del operador de asignación son:
nota <— 7
nota = 7
2.3. Datos objeto según su comportamiento.
Los datos objeto pueden comportarse durante la ejecución de un programa
como constantes o como variables.
2.3.7. Constantes
Un dato objeto se dice que es una constante cuando su valor no cambia
durante la ejecución del programa.
Puede representarse como un valor entero o real, por ejemplo, y entonces
hablamos de constante literal: 1000, 3.1416.
Pero a veces es conveniente representar una constante mediante un identi-
ficador o nombre simbólico, ello se consigue declarando la constante.
La forma de declarar una constante, denominada simbólica, es indicando
su nombre y el valor correspondiente, siendo innecesario indicar el tipo de la
constante, pues éste viene determinado por el valor de la misma. Por ejemplo:
kilómetro = 1000;
pi = 3.1416
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
36 Fernando Llopis Pascual, Ernesto Pérez López y Fernando Ortuño Ortín
Auna constante se le asigna el valor de forma previa a la ejecución, al ini-
cio del programa, y una vez asignado éste no varía.
2.3.2. Variables
Variables son todos aquellos datos objeto cuyos valores no tienen por qué
ser los mismos a lo largo de la vida de un programa, sino que pueden cambiar
durante la ejecución del mismo.
La declaración de una variable se hace indicando su nombre o identifica-
dor y el tipo de datos al que pertenece.
Por ejemplo, podemos definir una variable de tipo entero y otra real, de la
siguiente forma:
radio: entero;
circunferencia: real;
A una variable se le pueden asignar diferentes valores en distintas par-
tes del programa, pero en un momento dado sólo tendrá uno. De esta for-
ma cambia la información que representa la variable, pero nunca cambia el
tipo de datos asociado a la misma, pues los valores que se asignan a la
variable deberán pertenecer al conjunto de valores permitidos para su tipo
de datos.
El uso de variables nos permite definir algoritmos de carácter general
para la resolución de problemas, en los cuales el valor de los objetos varia-
bles se concreta en el momento de ejecutar el programa.
Las variables se pueden entender como cajas con nombres, que se crean en
el momento de la declaración, y en las que podemos introducir valores que
pueden ser alterados a lo largo del programa.
La definición de las dos variables anteriores supondría la reserva en
memoria de esta dos cajas, con espacio suficiente para representar un valor
entero y otro real, pero en el momento de la definición no tienen asignado
ningún valor.
radio 
Asignamos un valor a la variable radio, por ejemplo 10.
radio \
circunferencia
10 circunferencia
Co
py
ri
gh
t 
©
 2
00
0.
 D
ig
it
al
ia
. 
Al
l 
ri
gh
ts
 r
es
er
ve
d.
 M
ay
 n
ot
 b
e 
re
pr
od
uc
ed
 i
n 
an
y 
fo
rm
 w
it
ho
ut
 p
er
mi
ss
io
n 
fr
om
 t
he
 p
ub
li
sh
er
, 
ex
ce
pt
 f
ai
r 
us
es
 p
er
mi
tt
ed
 u
nd
er
 U
.S
. 
or
ap
pl
ic
ab
le
 c
op
yr
ig
ht
 l
aw
.
EBSCO Publishing : eBook Academic Collection (EBSCOhost) - printed on 1/27/2016 3:27 PM via
UNIVERSIDAD ESTATAL A DISTANCIA
AN: 318031 ; Llopis Pascual, Fernando, Perez Lopez, Ernesto, Ortuno Ortin, Fernando.;
Introduccion a la programacion : algoritmos y C/C++
Account: s1093037
Introducción a la programación. Algoritmos y C/C++ 37
Calculamos el valor de la variable circunferencia, en función de la varia-
ble radio, mediante la expresión:
circunferencia = 2 *pi * radio
Esto

Continuar navegando