You are on page 1of 27

1.

Introduccin
1.1. Paradigmas de programacin
Un paradigma determina la forma desde el cual vemos el mundo, lo comprendemos, lo
interpretamos y actuamos sobre l. Un paradigma de programacin define un conjunto de reglas,
patrones y estilos de programacin que son usados por un grupo de lenguajes de programacin y que
est delimitado en el tiempo en cuanto a aceptacin y uso debido a que nuevos paradigmas aportan
nuevas o mejores soluciones que la sustituyen parcial o totalmente, tal es el caso de la programacin
orientada a objetos.
Con la orientacin a objetos y caractersticas como el encapsulado, polimorfismo o la herencia se
permiti un avance significativo en el desarrollo de software a cualquier escala de produccin. Los
lenguajes de programacin como Ada, BASIC, Lisp y Pascal entre otros, parecen estar ligadas en sus
inicios a la orientacin a objetos, aunque el primero que acu el ttulo de programacin orientada a
objetos fue Smalltalk.

1.1.1.

Paradigma funcional

Se basa en un concepto de definicin de funciones, el procesamiento de los datos se realiza


mediante la evaluacin de expresiones, algo diferente al que estamos acostumbrados, ms cercano al
matemtico que su contraparte en los lenguajes imperativos. Las funciones son consideradas como
datos primitivos y los valores no tienen efectos laterales, debido a que no existe la asignacin.
Cdigo Fuente 1: Factorial en Lisp

1.1.2.

Paradigma lgico

El paradigma lgico de programacin se basa en "premisas" que se dan a un universo, y basado


en esas reglas (el cual se asumen como verdaderas) el programa responde un valor de verdad,
concluido usando la lgica matemtica.

Cdigo Fuente 2: Factorial en Prolog

1.1.3.

Paradigma imperativo o procedural

Consiste en determinar qu datos son requeridos para el clculo, asocia a esos datos unas
direcciones de memoria, y efecta paso a paso una secuencia de transformaciones en los datos
almacenados, de manera que el estado final represente el resultado correcto.
A este tipo de paradigma de programacin se le llama tambin algortmico, debido a que el
significado del algoritmo es anlogo a la receta, mtodo, tcnica, procedimiento o rutina.
Los lenguajes imperativos, se clasifican en: orientados a expresiones (C, FORTRAN, Algol y Pascal)
y orientados a sentencias (COBOL y PL/1), ambos trminos son relativos y no se pueden aplicar de
forma absoluta.

Cdigo Fuente 3: Factorial en C

1.1.4.

Paradigma orientado a objetos

Metodologa de desarrollo de aplicaciones en la cual stas se organizan como colecciones


cooperativas de objetos, cada uno de los cuales representan una instancia de alguna clase, y cuyas
clases son miembros de jerarquas de clases unidas mediante relaciones de herencia.1

Cdigo Fuente 4: Factorial en Java

Grady Booch

La orientacin a objetos puede describirse como el conjunto de disciplinas que desarrollan y


modelizan software, que facilitan la construccin de sistemas complejos a partir de componentes.
El paradigma orientado a objetos se basa en la nocin de clases y herencia, objetos como abstraccin
de datos y procedimientos, el polimorfismo y chequeo de tipos en tiempo de ejecucin.

1.2. Compiladores e interpretes


1.2.1. Compiladores
Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de
programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina
ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin
puede ser un cdigo intermedio, o simplemente texto. Este proceso de traduccin se conoce
como compilacin.

Figura 1: Proceso de compilacin

1.2.2. Interpretes
En ciencias de la computacin, intrprete o interpretador es un programa informtico capaz de
analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intrpretes se diferencian
de los compiladores en que mientras estos traducen un programa desde su descripcin en un lenguaje
de programacin al cdigo de mquina del sistema, los intrpretes slo realizan la traduccin a medida
que sea necesaria, tpicamente, instruccin por instruccin y normalmente no guardan el resultado de
dicha traduccin.
Usando un intrprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas
sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un solo archivo fuente
puede producir resultados iguales solo si es compilado a distintos ejecutables especficos a cada sistema.

Programa Fuente

Interprete

Traduccin y Ejecucin
Linea a Linea

Figura 2: Proceso del interprete

1.3. Lenguajes de programacin


El lenguaje de programacin se puede definir como un idioma artificial diseado para expresar
instrucciones a la computadora. Puede usarse para crear programas que controlen el comportamiento
fsico y lgico de una mquina o, como modo de comunicacin humana. Est formado por un
conjunto de smbolos y reglas que definen la estructura y significado de sus elementos y expresiones. 2

1.3.1.

Historia

Para que la computadora entienda nuestras instrucciones debe usarse un lenguaje especfico
conocido como cdigo mquina, el cual la mquina comprende fcilmente, pero que lo hace
excesivamente complicado para las personas. De hecho slo consiste en cadenas extensas de nmeros
0 y 1. Para facilitar el trabajo, los primeros operadores de computadoras decidieron hacer un traductor
2

McLemusG

para reemplazar los 0 y 1 por palabras o abstraccin de palabras y letras provenientes del ingls; ste
se conoce como lenguaje ensamblador.
Desde 1954 hasta la actualidad se han documentado ms de 2.500 lenguajes de programacin.
Entre 1952 y 1972, la primera poca de los lenguajes de programacin, se desarrollaron alrededor de
200 lenguajes, de los que una decena fueron realmente significativos y tuvieron influencia en el
desarrollo de lenguajes posteriores.

Figura 3: Lenguajes ms importantes y sus dependencias

1.3.2. Clasificacin
Lenguaje Mquina: es el lenguaje de programacin que entiende directamente la computadora o
mquina. Este lenguaje de programacin utiliza el alfabeto binario, es decir, el 0 y el 1. Con estos dos
nicos dgitos, conocidos como bits, forma las cadenas binarias (combinaciones de ceros y unos) son
con las que se escriben las instrucciones que el microprocesador de la computadora entiende nuestra

peticiones. El lenguaje mquina fue el primer lenguaje de programacin. Dejo de usarse por su gran
dificultad y por la facilidad para cometer errores.

Lenguajes de Programacin de Bajo Nivel: Son mucho ms fciles de utilizar que el lenguaje
mquina, pero dependen mucho de la computadora como suceda con el lenguaje mquina. El
lenguaje ensamblador fue el primer lenguaje de programacin de bajo nivel que trato de sustituir al
lenguaje mquina por otro mucho ms parecido al de los seres humanos. Los lenguajes de este tipo
son agiles, difciles de usar, especficos de cada procesador, si nos llevamos el programa a otro
computador ser preciso reescribir el programa desde el comienzo.
Lenguajes de Programacin de Alto Nivel: Este lenguaje es independientes de la mquina, lo
podemos usar en cualquier computador con muy pocas modificaciones o sin ellas, son muy similares
al lenguaje humano. Necesitan un programa intrprete o compilador que lo traduzca a uno de
lenguaje de mquina para que la computadora pueda entenderlo. Este tipo de lenguaje es ms fcil
de aprender porque se usan palabras o comandos del lenguaje natural.

1.3.3. Caractersticas
Una breve lista de caractersticas comunes a todos los lenguajes de programacin:

Tienen una sintaxis: un conjunto de reglas que definen qu expresiones de texto son correctas.
Por ejemplo, en C todas las sentencias deben terminar en ';'.

Se ejecutan en un computador y tienen una determinada semntica que define cul ser el
resultado de la ejecucin de un programa.

Definen un conjunto de tipos de datos primitivos que representan los posibles valores que
pueden devolver las expresiones del lenguaje.

Tienen mecanismos de abstraccin para definir nuevos tipos de datos a partir de los datos
primitivos o nuevas funciones y procedimientos.

1.3.4. No son lenguajes de programacin


Los lenguajes como XML, uno de los estndares ms usados por las aplicaciones para compartir
datos, son lenguajes escritos con una sintaxis perfectamente definida. Por ejemplo, el siguiente texto
en un lenguaje XML para definir una lista de personas:

Cdigo Fuente 5: Definicin de un conjunto de datos en XML

Sin embargo le falta una caracterstica fundamental para poder ser considerado un lenguaje de
programacin: no define un comportamiento, no tiene una semntica asociada. El trozo de cdigo
anterior no puede ser ejecutado tal cual en un computador, sino que nicamente define un conjunto
de datos.

1.4. Entorno de desarrollo integrado (IDE)


Un entorno de desarrollo integrado, llamado tambin IDE (Integrated Development
Environment), es un programa compuesto por un conjunto de herramientas de programacin. Un IDE
es un entorno de programacin que ha sido empaquetado como un programa de aplicacin; es decir,
consiste en un editor de cdigo fuente3, un compilador4, un depurador5 y un constructor de interfaz
grfica6 (GUI).
Sitios web para descargar entornos de desarrollo integrado para C++, Java y Python.

Figura 4: Sitio de descarga de Dev-Cpp


http://sourceforge.net/projects/orwelldevcpp/files/Setup%20Releases/

Figura 5: Sitio de descarga de NetBeans IDE para Java https://netbeans.org/downloads/index.html

Editor de texto que sirve para editar el cdigo fuente de aplicaciones informticas.

Es un traductor de cdigo fuente, lo traduce a un lenguaje que sea legible para las maquinas.

Es una aplicacin que tiene como funcin probar y eliminar posibles errores en un programa en desarrollo.

Herramienta que sirve para crear y disear las interfaces con las cuales habr interaccin entre la aplicacin y el usuario.

Figura 6: Sitio de descarga del interprete IDLE (Python GUI) https://www.python.org/

1.5. Introduccin a los lenguajes C++, Java y Python


1.5.1. C++
C++ es un C mejorado, desarrollado por Bjarne Stroustrup en los laboratorios Bell. C++
proporciona un conjunto de caractersticas que afinan al lenguaje C; sin embargo, lo ms importante
es que proporciona capacidades para una programacin orientada a objetos.

Cdigo Fuente 6: Hola mundo en C++ orientado a objetos

1.5.2. Java
Java fue originalmente desarrollado por James Gosling y publicado en 1995, es un poderoso
lenguaje de programacin de propsito general, concurrente y orientado a objetos, de fcil utilizacin
para los principiantes y apropiado para los programadores experimentados que desarrollan sistemas
de informacin de tamao considerable.
Las aplicaciones de Java son generalmente compiladas a bytecode (clase Java) que puede
ejecutarse en cualquier mquina virtual Java (JVM) sin importar la arquitectura de la
computadora subyacente. Java es, a partir de 2012, uno de los lenguajes de programacin ms
populares en uso, particularmente para aplicaciones de cliente-servidor de web.

Cdigo Fuente 7: Hola mundo en Java

1.5.3. Python
Es un lenguaje de programacin interpretado, creado por Guido van Rossum, usa tipado dinmico
y es mutiplataforma, multipropsito y multiparadigma, ya que soporta orientacin a objetos,
programacin imperativa y, en menor medida programacin funcional, que sirve tanto para
programas de escritorio como para crear completas aplicaciones web.

Cdigo Fuente 8: Hola mundo en Python orientado a objetos

1.6. Mquina virtual java


Al compilar en Java, el cdigo generado es independiente del hardware y no se puede ejecutar
directamente en ninguna mquina, sino que ha de ser interpretado por una mquina virtual.
La mquina que interpreta el bytecode, generando el cdigo ejecutable para un procesador
concreto, es la mquina virtual de Java o, en ingls, JVM (Java Virtual Machine), el bytecode
compilado en una mquina puede ser llevado a otra mquina diferente y ejecutado sin problemas.

Figura 7: Plataforma Java SE

Java Development Kit o (JDK), es un software que provee herramientas de desarrollo para la
creacin de programas en Java. Puede instalarse en una computadora local o en una unidad de red.
En la unidad de red se pueden tener las herramientas distribuidas en varias computadoras y trabajar
como una sola aplicacin.

Figura 8: Sitio de descarga de JDK (Java Development Kit)


http://www.oracle.com/technetwork/es/java/javase/downloads/index.html

Las variables de entorno en el sistema operativo Windows son:

JAVAPATH Es una ruta completa del directorio donde est instalado JDK.

CLASSPATH Son las bibliotecas o clases de usuario.

PATH Variable donde se agrega la ubicacin de JDK.

Los programas ms importantes que se incluyen son:

appletviewer.exe Es un visor de applets para generar sus vistas previas, ya que un applet carece
de mtodo main y no se puede ejecutar con el programa java.

javac.exe Es el compilador de Java.

java.exe Es el intrprete de Java.

jdb.exe Es el depurador de Java.

javadoc.exe Genera la documentacin de las clases Java de un programa.

Estos programas se pueden ejecutar desde la lnea de comandos del sistema operativo. Por
ejemplo, si se ha escrito un programa en Java y el fichero que lo contiene se llama MiPrograma.java,
se puede compilar mediante:
javac MiPrograma.java
Si el cdigo fuente no contiene errores, se genera el correspondiente bytecode, y el programa se
puede ejecutar mediante el siguiente comando, que invoca al mtodo main (programa principal) de
la clase MiPrograma:
java MiPrograma
Sin embargo, normalmente se dispondr de herramientas visuales, kits de desarrollo con entorno
de ventanas, y los programas se compilarn y ejecutarn accediendo a las correspondientes opciones
de men. En este texto, usaremos el entorno de desarrollo integrado NetBeans IDE.

1.7. Consideraciones sintcticas


1.7.1.1. Indentacin
Por cuestiones de legibilidad, para separar las instrucciones del cdigo fuente se pueden usar
tabuladores, saltos de lnea y espacios en blanco. Se recomienda sangrar o indentar las lneas para
facilitar la lectura del cdigo e identificar rpidamente donde empiezan y terminan los bloques de
cdigo (las estructuras condicionales o iterativas u otros bloques de cdigo).
Para el intrprete es imprescindible que contenga estas separaciones en tanto para el compilador
no, pero es necesario para que el cdigo fuente sea comprensible.

1.7.1.2. Comentarios
Los comentarios son observaciones explicativas que se hacen dentro de un programa.
Un comentario de lnea en C++ empieza con dos diagonales (//) y continua hasta el final de la
lnea. Sin embargo, los comentarios que abarcan dos o ms lneas llamados tambin comentarios en
bloque comienzan con los smbolos /* y terminan con los smbolos */.

Los comentarios de una lnea en Java inician con //. Y los comentarios de varias lneas se escriben
dentro de los separadores /* (indica el inicio del comentario) y */ (indica el final del comentario).
Java, proporciona un tercer tipo de comentario, que se denomina comentario de documentacin
(/***/). Java dispone de una herramienta de documentacin, javadoc, que extrae este tipo de
comentarios para generar automticamente documentacin de referencia de los programas.

Los comentarios de una lnea en Python comienzan con el carcter # y se extienden hasta el final
de la lnea. Si en la primera lnea de la funcin se ingresa un comentario encerrado entre comillas """,
este comentario pasa a ser la documentacin de la funcin, que puede ser accedida mediante el
comando
.

1.7.1.3. Identificadores
Se denominan de manera colectiva identificadores a los nombres de los diferentes elementos del
programa: variables, constantes, clases, objetos y mtodos. Un identificador comienza con una letra
o con guion bajo (_) y luego sigue con una secuencia de letras, nmeros y guiones bajos. Los espacios
no estn permitidos dentro de los identificadores.
Los siguientes son todos identificadores vlidos:

hola
hola12t
_hola
Hola
Se distingue maysculas de minsculas, as que Hola es un identificador y hola es otro identificador.
Los siguientes son todos identificadores invlidos:
8hola (empieza con un nmero)
hola a12t (contiene espacio)
Hola*9 (contiene un caracter especial)
while (es una palabra clave)
Por convencin, no es recomendable usar identificadores que empiecen con mayscula a
excepcin del nombre de la clase.

1.7.1.4. Separadores
En los lenguajes de programacin existen caracteres separadores del cdigo, como los parntesis
o las llaves, con funciones bien definidas.
Caracteres
()

Nombre
Parntesis

Uso
Delimitar la lista de argumentos formales en la definicin
de los mtodos.
Delimitar la lista de argumentos actuales en las llamadas a
mtodos.
Establecer cambios de precedencia de operadores, en
expresiones que incluyan varios operadores.
Realizar conversiones de tipo (casting).
Delimitar partes en las estructuras de control (if y while).

{}

Llaves

Delimitar bloques de cdigo (en las estructuras


condicionales, en las iterativas, y en los mtodos
completos).
Dar valores iniciales a variables de tipo vector.

[]

Corchetes

Declaracin de vectores.
Referencias a los elementos de los vectores.

Punto y coma

Separador de instrucciones

Coma

Separar identificadores (por ejemplo, en una declaracin


de variables de un mismo tipo, o en una asignacin de
valores a un vector).

Separar los argumentos formales y actuales de los


mtodos.
.

Punto

Separador de paquetes, subpaquetes y clases.


Referenciar los atributos y mtodos de los objetos.

Tabla 1: Separadores en Java

1.7.1.5. Palabras reservadas


Las palabras reservadas son identificadores predefinidos reservados que tienen significados
especiales y no se pueden utilizar como identificadores en los programas.

asm
auto
bool
break
case
cast
catch
char
class
const
const_
continue
default

delete
do
double
dynamic_cast
else
enum
explicit
extern
false
float
for
friend
goto

if
inline
int
long
mutable
namespace
new
operator
private
protected
public
register
reinterpret_cast

return
short
signed
sizeof
static
static_cast
struct
switch
template
this
throw
true
try

typedef
typeid
typename
union
unsigned
using
virtual
void
volatile
wchar_t
while

Tabla 2: Palabras reservadas en C++

abstract
boolean
break
byte
case
catch
char
class
continue
const
default

do
double
else
extends
false
final
finally
float
for
goto
if

implements
import
instanceof
int
interface
long
native
new
null
package
private

protected
public
return
short
static
strictfp7
super
switch
synchronized
this
throw

throws
transient
true
try
void
volatile
while

from
global
if
import
in
is
lambda

not
or
pass
print
raise
return
try

while
with
yield

Tabla 3: Palabras reservadas en Java8

and
as
assert
break
class
continue
def

del
elif
else
except
exec
finally
for

Tabla 4: Palabras reservadas en Python

Palabra reservada aadida a Java 2

Las palabras reservadas const y goto no se utiliza actualmente en Java

1.7.2. Estructura bsica de un programa

Cdigo Fuente 9: Estructura bsica de un programa en Java

1.7.3. Programa de consola


Se llama programas de consola a los programas que funcionan en modo texto, es decir, programas
donde la entrada de datos y la salida de resultados se realizan mediante sucesivas lneas de texto.
Para configurar el uso de Python mediante consola, debemos habilitar el path C:\Python34, en
Sistema del Panel de control Configuracin avanzada del sistema Variables de entorno.
Entramos a la consola, luego escriba la direccin donde se ubica el fichero de cdigo fuente (.py)
y ejecutamos escribiendo Python HolaMundo.py

Figura 9: Proceso de ejecucin mediante consola en Python

Para configurar el uso de Java mediante consola, debemos habilitar el path C:\Program
Files\Java\jdk1.8.0_20\bin, en Sistema del Panel de control Configuracin avanzada del sistema
Variables de entorno.

Figura 10: Configuracin de nueva variable de usuario

Para compilar y ejecutar una clase se realiza el siguiente procedimiento:


Ingrese a Ejecutar (WINDOWS + R), escriba cmd y presione ENTER, luego escriba la direccin
donde se ubica el fichero de cdigo fuente (.java).
Compile escribiendo javac NombreClase.java y presione ENTER y luego ejecute con java
NombreClase.

Figura 11: Proceso de compilacin y ejecucin mediante consola en Java

1.7.3.1. Programa Grfico


Consideraremos el siguiente ejemplo:

Cdigo Fuente 10: Estructura bsica de un programa grfico en Java

El programa principal contiene cuatro instrucciones, que realizan las siguientes cuatro acciones:

Se crea un objeto (de la clase Frame), llamado ventana, con lo que se crea la ventana de la
aplicacin grfica.

Se crea un objeto (de la clase TextArea), llamado texto, y con el valor Hola mundo.

Se aade el texto a la ventana.

Se activa la visibilidad de la ventana.

En las clases de estas aplicaciones grficas se incluir todo el cdigo necesario para que las ventanas
contengan todos los elementos (mens, paneles grficos, etc.) que se desee.

1.7.4. Applet
Un applet es un caso particular de aplicacin grfica de Java, pero que se ejecuta integrada en una
pgina web (y es gestionado por el navegador web), en lugar de ejecutarse como aplicacin
independiente.

Cdigo Fuente 11: Estructura bsica de un applet en Java

Los applets disponen de una serie de mtodos (init, start, stop, destroy, paint) para regular su
interaccin con el navegador web.
En el ejemplo, el mtodo paint contiene una sola instruccin, la llamada al mtodo drawString,
que muestra la cadena de caracteres Hola mundo en la posicin de la ventana cuyas coordenadas
son (50,50).

1.7.5. Tipos de datos


Un valor de dato atmico es un valor considerado una entidad completa en s misma y que no
puede descomponerse en un tipo de dato ms pequeo.
Java, como la mayora de los lenguajes de programacin, dispone de tipos de datos para definir
la naturaleza de la informacin que manipulan los programas. Para codificar la informacin ms
sencilla (como nmeros enteros, nmeros reales, caracteres, etc.), se dispone de los llamados tipos de
datos simples.
Adems, Java es un lenguaje orientado a objetos, lo que implica que existen tipos de datos objeto.
Por tanto, los datos con los que operan los programas en Java tambin pueden almacenarse en
entidades ms complejas, llamadas objetos, y dichos objetos deben crearse como instancias de clases.
En Java se hablar de objetos de una determinada clase de forma similar a como se habla de variables
de un determinado tipo.
Los tipos de datos simples o primitivos, se declaran especificando el tipo de la variable y su nombre
(identificador elegido para la variable). Por ejemplo:

Los tipos de datos objeto, en Java se pueden usar variables que sean objetos de determinadas
clases (sea porque el mismo programador haya escrito el cdigo de esas clases, sea porque dichas clases
estn disponibles en libreras pblicas). Es decir, se pueden declarar objetos de clases definidas por el
programador o de clases estndar (ya definidas en libreras del lenguaje Java).
Los objetos declarados en nuestros programas pueden verse como variables del programa, al igual
que las variables de los tipos simples. Las principales diferencias son las siguientes:

Los objetos no suelen almacenar un solo dato simple, sino varios tems de informacin (que
llamamos atributos).

Los objetos disponen adems de una serie de funciones (que llamamos mtodos) para
manipular la informacin que almacenan.

Los objetos de cualquier clase se declaran de manera similar a las variables de tipos simples. Por
ejemplo:

Sin embargo, y a diferencia de las variables de tipo simple, los objetos han de ser instanciados (es
decir, debe reservarse explcitamente la memoria necesaria para guardar la informacin que
contienen).
Los objetos se instancian mediante el operador new y la invocacin de un mtodo especial de la
clase llamado constructor (mtodo que tiene el mismo nombre de la clase). Por ejemplo, con la
siguiente instruccin se construira un objeto llamado hoy de la clase Date:

El objeto ayer est declarado, el objeto hoy est declarado e instanciado.


En C++, un tipo de datos con signo se define como uno que permite almacenar valores negativos
adems del cero y valores positivos. Por ello, el tipo de datos int es un tipo de datos con signo. Un
tipo de datos sin signo es uno que prev solo valores no negativos (es decir, cero y positivos).
En Python los tipos bsicos se dividen en: Nmeros, como pueden ser 3 (entero), 15.57 (de coma
flotante) o 7 + 5j (complejos) y Cadenas de texto, como Hola Mundo y Valores booleanos: True
(cierto) y False (falso).

Tipo
Byte
short
int9
long
float
double
long double
complex
char/chr
wchar_t
boolean/bool
String10/str
void

valores
nmeros enteros
nmeros enteros
nmeros enteros
nmeros enteros
nmeros reales
nmeros reales
nmeros reales
nmeros complejos
caracteres
caracteres
lgicos: true/false
cadena de caracteres
nada

Codificacin/tamao
8 bits
16 bits
32 bits
64 bits
IEEE-754, de 32 bits
IEEE-754, de 64 bits
IEEE-754, de 80 bits

C++

Unicode, de 16 bits/de 8 bits


2 bytes
1 byte

Si
Si
Si
Si
Si

Si
Si
Si
Si
Si
Si

Java
Si
Si
Si
Si
Si
Si

Si
Si
Si
Si

Python

Si
Si
Si
Si
Si
Si
Si

Tabla 5: Tipos de datos bsicos en C++, Java y Python

Una variable es un identificador asociado a un elemento de datos que est situado en posiciones
contiguas de la memoria principal, y su valor puede cambiar durante la ejecucin de un programa.
Toda variable pertenece a un tipo de dato concreto.

Cdigo Fuente 12: Declaracin de variables en Java

Python despliega los enteros largos con una L mayscula


No es un tipo de datos bsico, es un objeto bsico con propiedades y mtodos.

10

Cdigo Fuente 13: Declaracin de variables en Python

Se puede definir una constante (tambin llamadas variables finales) como un nombre significativo
que contiene un valor, numrico, texto o de cualquier tipo, y que una vez definida, no cambia. Las
constantes intrnsecas, pueden ser nombres y valores preestablecidos; y las constantes definidas por el
usuario, que son aquellas que reciben el nombre y valor que el usuario decida. En java se declaran
mediante la palabra reservada final, y asignndoles valores.

Cdigo Fuente 14:Definicin de constantes en Java

En java y como en otros lenguajes de programacin se disponen operadores bsicos para


manipular datos de los tipos simples como operadores aritmticos, operadores de bits, operadores
relacionales, operadores lgicos (booleanos) y un operador ternario.

Operacin
suma
resta
multiplicacin
divisin (cociente)
mdulo (resto)

Operador
normal
+
*
/
%

Operador
reducido
+=
-=
*=
/=
%=

Operador
auto
++
--

Tabla 6: Operadores aritmticos

Operacin
negacin (NOT)
conjuncin (AND)
disyuncin (OR)
disyuncin exclusiva (XOR)
desplazamiento de bits a la izquierda
desplazamiento de bits a la derecha con signo
desplazamiento de bits a la derecha sin signo

Operador Operador
normal
reducido

&
&=
|
|=

=
<<
<<=
>>
>>=
>>>
>>>=

Tabla 7: Operadores a nivel de bit

Operacin
operandos iguales
operandos distintos
1er operando mayor que 2o operando
1er operando menor que 2o operando
1er operando mayor o igual que 2do operando
1er operando menor o igual que 2 do operando
Tabla 8: Operadores relacionales

Operador
==
!=
>
<
>=
<=

Operacin
negacin (NOT)
conjuncin (AND)
disyuncin (OR)
disyuncin exclusiva (XOR)
igualdad
desigualdad

Operador
normal
!
& &&
|
|

==
<=

Operador
reducido
&=
|=
=

Tabla 9: Operadores lgicos

a
false
true

a ? b : c;

c
b

Tabla 10: Operador ternario ?:

Figura 12: Ejemplo de operador ternario ?: en java

Existen situaciones en las que se realiza una conversin del tipo de un dato para asignarlo a otro
dato.
La conversin automtica de tipos (promocin) se hace cuando los dos tipos implicados en una
asignacin son compatibles y el tipo destino tiene mayor capacidad de almacenamiento que el tipo
origen (valor o expresin evaluada en el lado derecho de la asignacin).

Si no se da la anterior situacin, y se requiere una conversin, el programador debe indicarlo


explcitamente mediante una proyeccin o casting. La conversin se indica anteponiendo el nombre
del tipo, entre parntesis, a la expresin a convertir.

Consideremos otro ejemplo donde se usa el casting:

En el lenguaje C++ se podra haber escrito simplemente: ch2 = ch1 + 3; y la expresin se hubiera
evaluado usando el cdigo ASCII de la letra a para obtener el de la letra d. En Java, sin embargo,
el compilador rechaza esa instruccin por incompatibilidad entre los tipos, y para llevarla a cabo son
necesarias dos operaciones explcitas de conversin de tipos:

Casting de ch1 a int, para poder sumarlo con el nmero 3.

Casting del resultado de la suma a char, para poder asignarlo a la variable ch2.

1.7.6. Vectores
Los vectores o arreglos (arrays) son estructuras de datos que almacenan un nmero fijo de
elementos de informacin, siendo estos elementos del mismo tipo (o de la misma clase, si se trata de
objetos).
Un arreglo de una dimensin o vector unidimensional es una lista de variables, todas de un mismo
tipo a las que se hace referencia por medio de un nombre comn. Una variable individual del arreglo
se llama elemento del arreglo.
En Python existen diferentes tipos de arrays o vectores:
Las tuplas se escriben entre parntesis ( ) son una simple ordenacin de datos almacenados con la
que no vamos a realizar demasiadas operaciones:

Cdigo Fuente 15: Tupla con tres datos de tipos string: 'x', 'y' y 'z' en Python

Las listas son parecidas a las tuplas pero se escriben entre corchetes [ ] y tienen algunas funciones
adicionales cmo append() ( aadir al final ).

Cdigo Fuente 16: Lista utilizando la funcin append() en Python

Los diccionarios que son listas ordenadas por un campo clave. De manera que cada elemento del
diccionario est identificado con una clave igual que en un diccionario de papel cada definicin est
identificada por una palabra.
Los diccionarios se escriben entre llaves { } y podemos buscar un elemento del diccionario con su
clave entre corchetes [ ]:

Cdigo Fuente 17: Uso de diccionarios en Python

En Java, Los elementos de los vectores se numeran empezando por cero. Si el tamao de un vector
es N, los ndices para acceder a sus elementos estn en el rango [0N-1]. En los vectores de Java,
adems, se dispone de un atributo, llamado length, que almacena el tamao del vector.

Cdigo Fuente 18: Declaracin, instanciacin e inicializacin de un vector en Java

La declaracin de vectores o arrays multidimensionales (matrices) se hace de modo similar al caso


de los vectores de una dimensin. Slo hay que aadir un par de corchetes para cada dimensin que
tenga la matriz o vector multidimensional.

Cdigo Fuente 19: Ejemplo de matriz multidimensional en C++

1.7.7. Estructuras de control


1.7.7.1. Estructuras condicionales
Las sentencias de seleccin permiten establecer bifurcaciones en el cdigo, dando lugar a la
ejecucin de diferentes bloques de instrucciones en funcin de la evaluacin de alguna condicin
lgica.
Sentencia if: La sentencia if se le conoce como estructura de seleccin simple y su funcin es realizar
o no una determinada accin o sentencia, basndose en el resultado de la evaluacin de una expresin
(verdadero o falso), en caso de ser verdadero se ejecuta la sentencia. La estructura if/else lo que hace
es ejecutar una accin si el resultado de la evaluacin de la expresin es verdadera y otra accin si el
resultado de la evaluacin es falsa.

Cdigo Fuente 20: Sentencia if - elif - else en Python


Existe el caso de estructuras if, if/else anidadas, que no es ms que una estructura if o if/else dentro
de otra.

Cdigo Fuente 21: If/Else anidadas en Java

Sentencia switch: La sentencia de seleccin switch evala una expresin que devuelve un valor en
funcin del cual se selecciona un determinado bloque de instrucciones a ejecutar. La expresin
evaluada debe ser de un tipo simple enumerable (enteros, caracteres, booleanos). No se permite usar
nmeros reales.

Cada case seala un punto de entrada en el bloque de cdigo de la sentencia switch.

Cada break seala un punto de salida en el bloque de cdigo de la sentencia switch.

La clusula default es opcional en la sentencia switch.

Cdigo Fuente 22: Switch - case en C++

1.7.7.2.Estructuras de repeticin
Las sentencias de repeticin permiten la ejecucin de un bloque de instrucciones de modo
repetitivo.

La estructura debe construirse garantizando que el nmero de ejecuciones del bloque sea finito.
De lo contrario, se entrara en un bucle infinito y el programa en ejecucin no saldra nunca del mismo,
y nunca terminara.
Sentencia while: Un bucle while permite repetir la ejecucin de un grupo de instrucciones mientras
se cumpla una condicin (es decir, mientras la condicin tenga el valor True).

Cdigo Fuente 23: while en Python

Cdigo Fuente 24: while en Java (Ejemplo vector capica 11)

Sentencia do-while: La nica diferencia respecto a la estructura while radica en cuando se verifica
la condicin lgica para continuar o abandonar el bucle. En la sentencia do-while, la condicin se
verifica despus de ejecutar el bloque sentencias. Por tanto, el contenido del bucle se ejecuta por lo
menos una vez (a diferencia del while donde poda no ejecutarse ninguna vez).

Cdigo Fuente 25: do-while en Java

Sentencia for: Para cada valor de la variable de control del bucle, desde su valor inicial hasta su
valor final, se ejecuta una iteracin del bloque de sentencias. La sentencia for es la recomendada
cuando se conoce el nmero de iteraciones del bucle. Esta situacin es muy frecuente cuando se trabaja
con vectores.

11

[nmero, palabra] Que se lee igual de izquierda a derecha que de derecha a izquierda.

Cdigo Fuente 26: for en Python (Ejemplo nmeros primos)

Cdigo Fuente 27: for en Java (Ejemplo vectores)

1.7.8. Sentencias de salto


La sentencia return permite devolver el resultado obtenido al ejecutarse un mtodo (como ya se
ha visto en ejemplos anteriores).

Cdigo Fuente 28: return en Python

La sentencia break interrumpe la ejecucin de una sentencia switch. En esa situacin, la ejecucin
del break supone saltar a la primera instruccin que est justo despus del final de la estructura switch.
Adems, break puede usarse dentro de los bucles para salir de los mismos sin verificar la condicin de
finalizacin del bucle.
La sentencia continue sirve, dentro de bucles (do, for o while), para salir anticipadamente de la
iteracin del bucle y continuar con la ejecucin de la siguiente iteracin del mismo bucle.

Cdigo Fuente 29: break y continue en C (Ejemplo menu de sistema simple)

You might also like