Professional Documents
Culture Documents
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
1.1.2.
Paradigma lgico
1.1.3.
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.
1.1.4.
Grady Booch
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
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.
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.
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.
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.
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.
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.
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.
JAVAPATH Es una ruta completa del directorio donde est instalado JDK.
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.
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.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
[]
Corchetes
Declaracin de vectores.
Referencias a los elementos de los vectores.
Punto y coma
Separador de instrucciones
Coma
Punto
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
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
and
as
assert
break
class
continue
def
del
elif
else
except
exec
finally
for
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.
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.
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.
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).
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:
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++
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
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.
10
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.
Operacin
suma
resta
multiplicacin
divisin (cociente)
mdulo (resto)
Operador
normal
+
*
/
%
Operador
reducido
+=
-=
*=
/=
%=
Operador
auto
++
--
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
&
&=
|
|=
=
<<
<<=
>>
>>=
>>>
>>>=
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
&=
|=
=
a
false
true
a ? b : c;
c
b
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).
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 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 ).
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 [ ]:
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.
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.
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).
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).
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.
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.