Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Fundamentos de Programación - Texto Completo - Wikilibros

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 101

Fundamentos de

programación/Texto
completo
< Fundamentos de programación

Fundamentos de
programación
por es.wikibooks.org

Introducción
¡Bienvenido a este libro!. Nuestro objetivo
fundamental es proveer a los lectores de un manual
que cubra los aspectos esenciales del maravilloso
mundo de la programación de ordenadores. En este
libro se estudiarán los fundamentos de la algoritmia:
la ciencia y arte de diseñar algoritmos para la
resolución sistemática de problemas de cualquier
índole.
Aun cuando el lector no tenga una experiencia
previa en la programación de ordenadores, es
seguro que a lo largo de su vida ha ejecutado
muchos algoritmos. Un algoritmo es la
especificación detallada de los pasos necesarios
para llevar a cabo una tarea específica. En la
escuela, por ejemplo, aprendimos una serie de
pasos para realizar sumas, restas, multiplicaciones
y divisiones, estos son algoritmos (de hecho
debemos la palabra 'algoritmo' al matemático
musulmán Muhammad ibn Musa al-Jwarizmi). Una
receta de cocina es uno de los ejemplos más claros
de algoritmo. El conjunto de trámites que debe
realizar en cualquier institución pública para la
expedición de un documento, como por ejemplo, la
licencia de conducir, también es un algoritmo. En
este libro, vamos a enseñar los fundamentos
básicos para crear programas. Un programa es un
algoritmo hecho para ser ejecutado por un
ordenador.

La algoritmia es una ciencia: está sustentada en un


conjunto de modelos matemáticos. Existen una
cantidad de técnicas que han sido ampliamente
estudiadas por los científicos de la computación
para resolver problemas que aparecen en diversas
áreas de la ciencia. Por ejemplo, la traducción de
lenguajes, la clasificación y ordenación de datos, los
algoritmos para cifrado y el cálculo numérico, son
algunas de las áreas donde aún en la actualidad, se
mantiene muy activa la investigación de nuevas
técnicas y el desarrollo de algoritmos y programas
más eficientes.

La algoritmia también es un arte, pues la creación


de un algoritmo requiere de grandes dosis de
heurística y creatividad. La creación de un programa
va a estar muy influida por factores externos al
modelo matemático, como por ejemplo, el lenguaje
de programación que se va a usar, las limitaciones
físicas que imponen los ordenadores o incluso los
plazos para la finalización de un proyecto. Por otro
lado, muchos programadores buscan un aspecto
estético en la realización de sus programas; para
esas personas, escribir programas es un ejercicio
semejante a hacer literatura.

Por los motivos expuestos anteriormente,


pretendemos en este libro mostrar ambos aspectos
de la algoritmia: por un lado, se presentarán
técnicas que ya son clásicas en la programación, y
por otro lado, se intentará mostrar los problemas
que pueden surgir al convertir la especificación del
algoritmo en un programa que se ejecute
satisfactoriamente. Una analogía muy ilustrativa es
la de comparar un algoritmo con una receta de
cocina, mientras que el programa sería análogo al
plato preparado siguiendo dicha receta. Si usted es
un cocinero novato, aun cuando tenga la receta de
cocina en su mano y siga metódicamente todos sus
pasos, puede encontrar que al final el plato no es
todo lo apetitoso que usted desea, es ahí donde
entra en juego el arte, la capacidad de innovar y
refinar la receta con un toque personal. Así como
esa capacidad de integrar la parte científica y
técnica con la parte artística hace la diferencia
entre el cocinero novel y el chef más avezado;
también la hace entre un programador principiante y
un experto. Esperamos que las recetas que usted
consiga en este libro le sean muy útiles como base
para crear las suyas propias.

Hay que hacer una advertencia inicial al lector: este


libro por sí solo no pretende, ni puede ser una obra
completa para la enseñanza de la programación. El
lector debe complementar el estudio de la
algoritmia, con el estudio de uno o varios lenguajes
de programación. Le recomendamos
encarecidamente que realice todos los algoritmos
presentados en este libro, usando su lenguaje de
programación favorito. Para el aprendizaje de los
lenguajes de programación más populares, le
sugerimos consultar (y por qué no, también
colaborar con) los otros wikilibros de programación.

Finalmente, invitamos al lector a practicar: la única


forma de aprender a nadar, es lanzarse al agua y
nadar. Se tratará de incluir, en medida de lo posible,
ejercicios al final de cada sección. Al final de cada
capítulo se sugerirán algunos proyectos de
programación que puede realizar. La realización de
estos proyectos es beneficiosa por varios motivos:
primero, ayudará a afianzar los conocimientos
adquiridos en cada sección; segundo permitirá
aplicar las técnicas estudiadas en problemas
prácticos, y tercero: la programación puede
convertirse en un hobbie que brinda muchas
satisfacciones.

En sus inicios, la programación de computadoras se


basó exclusivamente en el modelo imperativo
(también denominado procedimental), que semeja
más la forma en que la máquina maneja las
instrucciones u órdenes.

Conforme la programación de computadoras fue


utilizándose para resolver nuevos tipos de
problemas, se requirió la creación de nuevos
modelos o paradigmas para el desarrollo de las
aplicaciones.

La programación orientada a objetos es una forma


de concebir un programa de computadora. Se
puede pensar en un programa como una lista de
instrucciones que le indica a la computadora qué
hacer, o un paquete de pequeños programas que
responden a eventos específicos indicados por la
entrada del usuario.

La programación orientada a objetos ve a un


programa como un conjunto de objetos que
cooperan entre sí para resolver un problema.

El modelo orientado a objetos sirve para desarrollar


sistemas de software con un alto grado de
complejidad. Este modelo es tan importante que se
creó el OMG (Object Management Group, Grupo de
Administración de Objetos, una agrupación no
lucrativa) para establecer las normas que rigen el
desarrollo de software orientado a objetos.

En el resto de este libro se estudiarán los conceptos


en que se basa el modelo orientado a objetos, así
como las principales razones para utilizarlo en el
desarrollo de software.

Algoritmos y programas
¿Qué es un algoritmo?

Por algoritmo, se entiende a un conjunto finito de


instrucciones que se deben seguir para resolver un
problema. No obstante, desde el punto de vista de
la programación de ordenadores, la definición del
algoritmo como la especificación de una serie de
pasos, es incompleta. Debe observarse que los
ordenadores son equipos que tienen limitaciones
físicas en cuanto a capacidad de almacenamiento y
procesamiento. Por consiguiente debemos refinar
un poco más nuestra definición de algoritmo para
hacerla aplicable de manera efectiva en el ámbito
de la informática.
El algoritmo es un conjunto de pasos, instrucciones
o acciones que se deben seguir para resolver un
problema. Existen una gran cantidad de algoritmos,
hay que escoger el más efectivo. Hay dos tipos de
algoritmos que son los cualitativos y cuantitativos,
cualitativos son todos aquellos pasos o
instrucciones descritos por medio de palabras que
sirven para llegar a la obtención de una respuesta o
solución de un problema, y cuantitativos son todos
aquellos pasos o instrucciones que involucran
cálculos numéricos para llegar a un resultado
satisfactorio.

Características:

Tiene que ser preciso.


Tiene que estar bien definido.
Tiene que ser finito.
La programación es adaptar el algoritmo al
ordenador.
El algoritmo es independiente según donde lo
implemente.

Definición: Un algoritmo se entiende como una


sucesión finita de pasos que debe cumplir las
siguientes especificaciones:

Cada paso del algoritmo debe estar bien definido:


Esto significa que la definición de un paso debe
ser suficientemente clara, para que una persona
pueda entenderla y realizarla. Si bien no se puede
dar un criterio determinístico para decidir si un
paso está bien definido, debemos apelar al
sentido común para decidir que un paso está
especificado sin ambigüedades.
Un algoritmo debe tener un principio y un fin: Un
programa es un algoritmo escrito con un objetivo:
conseguir un resultado. No tiene sentido crear un
programa que espere ~ segundos (infinitos
segundos) y luego escriba en pantalla "Hola
Mundo!", del mismo modo que un algoritmo debe
tener un principio bien definido (tampoco tiene
sentido el algoritmo "haz nada, y luego escribe
Hola Mundo!")

Modelos computacionales

Un modelo computacional es un modelo


matemático en las ciencias de la computación que
requiere extensos recursos computacionales para
estudiar el comportamiento de un sistema
complejo por medio de la simulación por
computadora. El sistema bajo estudio es a menudo
un sistema complejo no lineal para el cual las
soluciones analíticas simples e intuitivas no están
fácilmente disponibles. En lugar de derivar una
solución analítica matemática para el problema, la
experimentación es hecha con el modelo
cambiando los parámetros del sistema en la
computadora, y se estudian las diferencias en el
resultado de los experimentos. Las teorías de la
operación del modelo se pueden derivar/deducir de
estos experimentos de computacionales.

Ejemplos de modelos de computacionales


comunes son modelos del pronóstico del tiempo,
modelos del Earth Simulator, modelos de simulador
de vuelo, modelos de plegamiento molecular de
proteínas, y modelos de red neuronal.
Se considera a los algoritmos al conjunto de pasos
ordenados, que permiten resolver un problema bajo
una secuencia lógica, es decir, que tenga inicio y fin
(sentido concreto).

Programas: Algoritmos para ser


ejecutados por un ordenador

Un ordenador o computadora está, desde que se


enciende hasta que se apaga totalmente,
ejecutando un algoritmo. Por lo general, estos
algoritmos, escritos para que los entienda una
máquina, terminan siendo vagos y confusos para la
mayoría de quienes no han estudiado
programación. Una máquina no puede entender
"escribe Hola Mundo!" porque no sabe lo que es
"escribe" ni lo que es una letra o un espacio, ni lo
que es una pantalla. En cambio, puede entender
"mov eax, 0x23afb31" (escribir en el registro eax el
número 0x23afb31), aunque nosotros no. Un
ordenador es solo un circuito electrónico, no
funciona a base de magia ni nada por el estilo.

Debido a lo difícil que es escribir en lenguaje


máquina, e incluso en ensamblador, se crearon
diferentes lenguajes de programación, más o
menos parecidos al inglés actual y a cómo se
redacta un algoritmo. Estos lenguajes proveen de
cosas tan complejas para una máquina como los
bucles for. Los compiladores se encargan de
traducir esos ficheros al lenguaje ensamblador que
corresponda, el ensamblador de traducirlos a
lenguaje máquina y el enlazador de juntar todo ese
código máquina en un solo archivo, el programa. Y
el microprocesador, se encarga de ir encendiendo o
apagando transistores según lo que le diga el
código máquina.
Es fácil entender el lenguaje de alto nivel en
comparación al lenguaje máquina pero de la
evolución surgieron.

¿Qué instrucciones ejecuta un


ordenador?

Lenguaje de máquina

Cada tipo de microprocesador contiene un conjunto


de instrucciones que realizan ciertas operaciones
sobre una o más palabras de bits; las instrucciones
van también codificadas en bits. No queremos
hacer aquí una discusión sobre arquitectura de
ordenadores, por lo que con esto debe valer por
ahora.

Se entiende que escribir sólo con dos teclas, el 0 y


el 1, es incómodo. Históricamente, a la hora de
diseñar un algoritmo para que el ordenador
ejecutara, se escribía mediante unas etiquetas
mnemotécnicas; éste fue el origen del lenguaje
ensamblador.

Por ejemplo quizás en una cierta arquitectura la


instrucción de borrado de memoria (Memory Clear,
en inglés) corresponda al código 010. Pronto
surgieron programas que leían, siguiendo el
ejemplo, MC, y lo sustituían por 010.

Lenguaje ensamblador

El código máquina tenía dos grandes


inconvenientes para los programadores:

las instrucciones eran difíciles de recordar, ya que


no guardaban relación con la operación que se
está realizando.
puede haber, y de hecho hay, diferencias entre las
instrucciones de un procesador a otro.

Todo esto ha llevado a "poner nombre" a las


instrucciones de código máquina de manera que a
una secuencia concreta de bits que realiza una
operación se le pone un nombre sencillo que
identifique la operación. Esta traducción a un
lenguaje más sencillo para las personas resulta en
una mayor comodidad para el programador,
además el proceso de traducción inverso de
lenguaje ensamblador a código máquina puede ser
realizado por un sencillo programa.

Programación para seres humanos

Lenguajes de alto nivel

Sobre este lenguaje ensamblador inicial se fueron


construyendo otros lenguajes de programación de
más alto nivel; esto significa que ocultan ciertos
aspectos de manera que el programador no se ha
de preocupar sobre si en la máquina que quiere que
se ejecute el algoritmo el MC corresponde a la
instrucción 101 o 010. Se produce, por tanto, una
abstracción de datos, muy deseable para poder
utilizar el trabajo de otros para avanzar un paso
más en vez de tener que "reinventar la rueda", como
se suele decir. Estos textos en los que se codifican
los algoritmos son los códigos fuente; siguen las
reglas sintácticas de un determinado lenguaje de
programación. Existen numerosos lenguajes de
programación, y se utiliza uno u otro según sus
características se adecúen más o menos a la
resolución de nuestro problema.
Traductores e intérpretes

Tras la escritura del algoritmo, un compilador o un


intérprete (otros programas) transformarán el texto
en código máquina que el procesador es capaz de
ejecutar.

Toda esta abstracción permite resolver problemas


alejados de sumar números binarios, como pueden
ser la consulta de esta misma enciclopedia o jugar
a un videojuego en 3D.

Lenguajes interpretados vs. lenguajes


compilados

Los lenguajes interpretados son como respuesta a


la dificultad de manejo de los compilados. Un
lenguaje compilado es sólo apto para un sistema
operativo o formato de ejecutable (en GNU/Linux y
Unix System V es ELF, en Windows o incluso en BSD
es muy diferente), y es tedioso de manejar: para
comprobar bugs o errores el computador debe:

Compilar cada uno de los ficheros de código.


Ensamblarlos en ficheros objeto.
Enlazar los ficheros objeto.
Volverlos a ensamblar.

Todo eso no es gran derroche de recursos para un


ordenador medio actualmente, pero dura sus 10 o
15 segundos. En cambio, con un lenguaje
interpretado, el programa intérprete analiza el
fichero de código y lo va ejecutando en tiempo real,
sin compilarlo ni ensamblarlo. Otra de las ventajas
de los lenguajes interpretados es que son
multiplataforma: un programa en Perl, por ejemplo,
no debe ser compilado dos veces (una para Unix y
otra para Windows). Con que haya diferentes
versiones del intérprete en cada uno de esos
ordenadores, específicamente compilados para
ellos, basta.

Sus desventajas:

Consume muchos recursos de memoria, sobre


todo RAM.
Se depende del intérprete: si no tienes instalado
el intérprete que corresponda, no podrás ejecutar
el programa.

Ejemplos de lenguajes interpretados son PHP, Perl,


Python, Tcl/Tk, BASIC, LISP (en algunas de sus
versiones)...

Técnicas básicas de
programación
La programación estructurada sigue tres reglas: la
secuencia, la iteración y la decisión. La primera de
ellas indica que las instrucciones del código se
leerán de principio a fin; la segunda indica que,
según cierta condición, un número de instrucciones
podrían repetirse un numero determinado de veces,
y la tercera indica que según unas ciertas
condiciones se ejecutarán o no un conjunto de
instrucciones. En el siguiente algoritmo para limpiar
platos se aprecian estas tres características. La
indentación de las instrucciones indican cuáles son
englobadas y cuáles no por sus predecesoras.

mientras haya platos

coger plato
mientras haya suciedad
echar jabon
pasar el estropajo por el
plato
si plato es azulado

ponerlo con los azules

En código no estructurado, quedaría algo más


complejo.

1 coger plato
2 echar jabon
3 pasar el estropajo por el
plato
4 si hay suciedad ir a la
instrucción 2
5 si el plato no es azul ir a la
instrucción 7
6 ponerlo con los azules
7 si hay más platos ir a la
instrucción 1

En programas más grandes, esto es muchísimo


más complicado.

Ahora conocemos la ejecución de los algoritmos.


Sin embargo, un programa se compone tanto de
algoritmos como de una estructura de datos sobre
los que operar.

Antes de empezar un programa

Estructura de un programa

En la programación estructurada hay un inicio y un


fin perfectamente bien definido de acuerdo al
diagrama de flujo que se planteó al concebir la idea
del programa.
Un programa bien estructurado debería tener algún
subprograma que capture cualquier error dentro del
programa principal o de cualquier subprograma
dentro de la aplicación de tal modo que el
subprograma que captura los errores genere un
registro de datos que describa el error generado y/o
en qué subprograma se generó el error para
posteriormente corregirlo. Para facilitar la
corrección de estos errores se hace uso de los
comentarios agregados en el código fuente.

Variables y constantes

Como hemos visto, el ordenador sigue una serie de


instrucciones. Pero esas instrucciones tienen que
operar sobre una serie de datos. El ordenador típico
sólo procesa una instrucción a la vez, por lo que
necesita 'espacios de memoria' donde guardar o
depositar, a modo de cajones, por usar un símil
conocido, los diversos datos con los que trabaja.
Aquí es donde entran en juego las variables y
constantes.

En los inicios, con el ensamblador, se podía decir al


ordenador, por ejemplo: 'Ejecuta la instrucción de
esa posición de memoria' o también 'En esa
posición de memoria está guardada mi edad,
imprímela por pantalla'. Todo esto se deriva del
hecho de que los programas también son datos.
Esta ambigüedad presenta numerosos
inconvenientes cuando se producen errores, como
el lector se imaginará fácilmente: de ahí que, a
medida que los lenguajes evolucionan hacia niveles
superiores, se impida el tratamiento indistinto de
los datos. A partir de entonces, un programa tiene
que decirle al sistema operativo los cajones que
necesita y éste se los proporciona
independientemente de cuáles sean.
Quizás suene más complicado de lo que es. Un
ejemplo: Queremos sumar dos números. Nuestro
programa tendrá que tener tres cajones: Uno para
cada número y otro para el resultado. Cada cajón
tiene un nombre en vez de una posición de
memoria, de manera que sólo hay que nombrarlo:

Necesito cajones A, B y
Resultado

Lee un número y guárdalo en A


Lee un número y guárdalo en B
Suma A y B y guárdalo en
Resultado
Imprime el contenido de
Resultado
He aquí nuestro programa. Como cabe pensar, un
procesador no tiene la instrucción "Imprime por
pantalla"; esto es una llamada a otra porción de
código que, gracias a la abstracción, nosotros no
hemos escrito, o hemos escrito una sola vez; a
partir de lo cual podemos imprimir todo el texto que
queramos en la pantalla.

Las posiciones de memoria A y B son Variables. Si


queremos leerlas o escribirlas, podemos hacerlo.
Típicamente, existirán datos que no pensamos
modificar; no querremos que el usuario tenga que
introducirlos cada vez, pues son de naturaleza más
constante que otros (como puede ser el valor Pi
para calcular el perímetro o área de un círculo). Para
evitar modificarlos por error, podemos pedir al
sistema variables especiales, que no puedan ser
reescritas. Son las Constantes. Un ejemplo:
Comentario: Este programa
calcula el área de un círculo

Constante PI = 3'14159265
Variable R
Variable Resultado;

Leer número y guardar en R


Calcular PI * (R * R) y guardar
en Resultado
Imprimir Resultado;

El uso de variables y constantes se asemeja al uso


que se les da en el álgebra o en otras ramas
matemáticas.
Nótese también la clara separación entre
estructuras de datos y algoritmos. Según los
lenguajes, esto puede ser o no obligatorio, pero es
recomendable en aras de una mayor claridad del
trabajo.

Comentarios

El útil concepto del comentario: son líneas de texto


que el compilador o el intérprete no consideran
como parte del código, con lo cual no están sujetas
a restricciones de sintaxis y sirven para aclarar
partes de código en posteriores lecturas y, en
general, para anotar cualquier cosa que el
programador considere oportuno.

Uno como programador debe tener como prioridad


documentar nuestro código fuente ya que al
momento de depurar nos ahorrará mucho tiempo
de analisis para su corrección o estudio.

Los programadores profesionales tienen la buena


costumbre de documentar sus programas con
encabezados de texto (encabezados de
comentarios) en donde describen la función que va
a realizar dicho programa, la fecha de creación, el
nombre del autor y en algunos casos las fechas de
revisión y el nombre del revisor.

Por lo general algunos programas requieren hacer


uso de llamadas a subprogramas dentro de una
misma aplicación por lo que cada subprograma
debería estar documentado, describiendo la función
que realizan cada uno de estos subprogramas
dentro de la aplicación.
Estructuras de datos y de control

Estructuras de control

Las estructuras de control pueden dividirse en dos:


Estructuras de control Condicional y Estructuras de
control Repetitivo.

Las estructuras de control condicional son las que


incluyen alternativas de seleccion con base al
resultado de una operación booleana, como por
ejemplo, una comparación (A==B). Según la
expresión sea cierta o falsa, se ejecutará una
sección de código u otro. Es el caso de la sentencia
IF THEN ELSE de Pascal o Basic:

IF A==0 THEN
PRINT "A vale 0"
ELSE
PRINT "A no vale 0"

Otra sentencia de control son las de tipo SWITCH


CASE. En este tipo de sentencias se especifica la
variable a comparar y una lista de valores con los
que comparar. Aquel que sea el verdadero, se
ejecutará:

SWITCH A
CASE 0:
PRINT "A vale 0"
CASE 1:
PRINT "A vale 1"

Otras herramientas imprescindibles del control de la


ejecución de nuestro código son los BUCLES o
CICLOS. Consisten en un método que permite
repetir un trozo de código varias veces.

Hay básicamente dos tipos:

- Bucle FOR:

El bucle FOR consiste en una sentencia que engloba


un grupo de instrucciones y tiene una variable cuyo
valor se va modificando en cada vuelta. En general
se utiliza cuando sabemos cuántas veces tenemos
que repetir el código.

FOR A=0 TO 9 Especificamos


en este caso que A variará desde 0
hasta 9, con lo que repetiremos el
bucle 10 veces.
PRINT "Estamos en el
bucle"
NEXT A Con esto
cerramos el bucle e indicamos el
final del bloque de instrucciones
que se repiten

- Bucle WHILE:

El bucle WHILE consiste en un bucle en el que el


código se repite mientras se cumpla alguna
condición booleana (es decir, una expresión que dé
como resultado verdadero o falso). Hay variaciones,
como el REPEAT...UNTIL, que se diferencia en el
momento de comprobar si se hace verdadera o no
la condición.

WHILE A<>(B*2) DO
Aquí especificamos la expresión
que evaluamos y aquí se comprueba
A=A+1
Incrementamos el valor de A
mientras sea distinto a B*2
DONE
Como en el FOR, necesitamos
especificar donde acaba el bucle y
el código.

Estructuras de datos

creo a como entero

creo b como entero

creo suma como entero

a=2

b=1

suma = a + b
imprimir suma

Estructura de una aplicación. Cualquier programa


que se realice debe llevar una estructura para
disminuir la tarea de depuración ya que esta labor
lleva más tiempo del estimado.

Si eres principiante en el área de programación


debes definir el programa a realizar, documentar
cada uno de los pasos que realizas en tu programa,
debes de considerar algún metodo de captura de
errores, etc.

En este subcapítulo abarcaremos el cómo


estructurar una aplicación para mejorar o disminuir
el tiempo en depuración, así como localizar más
rápidamente los errores.
Puedes buscar en Internet el concepto
"pseudocódigo", que no es más que la escritura de
un algoritmo en un lenguaje más cercano al natural.
Es decir, la orden en lenguaje Javascript que
repetiría el proceso de quitar suciedad añadiendo
agua y jabón mientras se frota sería la siguiente:

function frotar(cuanto){
var veces = 0;
for (veces = 0; suciedad < 0 ||
veces < cuanto ; veces++){
suciedad = suciedad - (agua +
jabón);
}
}

Mientras que el algoritmo o pseudocódigo quedaría


así:
función frotar (cuantas veces lo
hago)
variable veces que llevo = 0
repetir (desde que vecesquellevo
= 0 mientras la suciedad < 0 ó
vecesquellevo <
cuantasveceslohago; aumentar
vecesquellevo de una en una)
suciedad = suciedad - (agua +
jabón)
fin repetir
fin función

En primer lugar, es muy recomendable hacer un


esquema sobre el papel con toda clase de datos
que se vayan a utilizar. Por ejemplo, si queremos
hacer un programa para controlar una empresa
dedicada al alquiler de coches, podríamos
necesitar:

Matrícula del coche


Marca del coche
Modelo del coche
Color del coche
Estado del coche (si está alquilado, en reparación
o disponible)
Situación del coche (en qué lugar del garaje o en
qué localidad está)
Kilometraje del coche
Precio por hora del coche

por un lado, y:

Nombre del cliente


Apellidos del cliente
Dirección del cliente
DNI del cliente
Permiso de conducir del cliente
Número de cuenta del cliente

... etc. por otro.

Enlaces externos
Pseudocódigo De Programación (http://www.juar
bo.com/pseudocodigo-de-programacion/)
Ejemplos de Pseudocódigos (http://abcalgoritmo
s.com/)

Introducción a la
programación estructurada
Introducción

La programación estructurada nació como solución


a los problemas que presentaba la programación no
estructurada, la cual se empleó durante mucho
tiempo antes de la invención de la programación
estructurada.

Un programa no estructurado es un programa


procedimental: las instrucciones se ejecutan en el
mismo orden en que han sido escritas. Sin
embargo, este tipo de programación emplea la
instrucción "goto". Una instrucción "goto" permite
pasar el control a cualquier otra parte del programa.
Cuando se ejecuta una instrucción "goto" la
secuencia de ejecución del programa continúa a
partir de la instrucción indicada por "goto". De esta
forma, para comprender como funciona un
programa es necesario simular su ejecución. Esto
quiere decir que en la mayoría de los casos es muy
difícil comprender la lógica de un programa de este
tipo. Algunos compiladores crean referencias
cruzadas a las instrucciones apuntadas por los
"goto", posibilitando una navegación rápida a través
del código fuente. Sin embargo, es algo común en
muchos lenguajes de programación el empleo de
una variable en asociación con el destino del "goto",
no permitiendo la creación automática de tablas de
referencias cruzadas. Existen problemas similares
en algunos lenguajes de programación
estructurada, por ejemplo cómo implementar las
vistas en diferentes idiomas, de forma que varias
personas puedan visualizar la misma información,
pero cada una en su idioma.

Esto se opone a la idea de utilizar algún tipo de


abstracción que permita comprender cómo
funciona realmente un programa, que es lo que
hace la programación estructurada.

Por este motivo, Dijkstra propuso la eliminación de


la sentencia "goto".
Introducción a las
estructuras de datos y tipos
de datos
La estructura y tipos de datos varia con cada
lenguaje de programacion. Estos se pueden definir
como la forma y modo de programar que
corresponde a una acción y le define una funcion
especifica.

La estructura no es mas que la forma que sigue ese


lenguaje, por ejemplo:

abrir
ejecutar acción 1.
ejecutar acción 2.
cerrar.

(esta puede ser una estructura simple, pero cada


lenguaje dice cuales y como se usaran esas
estructuras).

Por ejemplo:

En C, para poder crear una variable se necesita


especificar el tipo de ella. (la estructura quedaria
mas o menos asi)

<abrir>

variable tipo carácter a = hola mundo.


variable tipo numero entero b = 123
variable tipo numero decimal c = 1.25
imprimir a,b,c

<cerrar> Esta claro que cada lenguaje usa sus


propios terminos para definir sus tipos de datos.
(En C quedaria así)

#include <stdio.h> //cabezera


estandar de entrada y salida (aqui
estan los ficheros necesarios).

void main() //parte de la


estructura de C, en dependencia
del compilador se debe usar int
main()
{
Char a[12] = Hola Mundo.;
int b = 123;
float c = 1.25;

printf ("%s %d %f",a,b,c);


} // define el fin del programa.
(fin de la estructura)

Pueden ver estas secciones para observar la


estructura y tipo de datos en C: puedes consultar en
el Wikibook de C enlace a Wikipedia: Tipos de datos
enlace a busqueda de google
"tipo+dato+programacion" (http://www.google.es/s
earch?hl=es&q=tipo+dato+programacion&btnG=Bus
car&meta=)

Aplicaciones de los tipos de


datos estructurados
Los tipos de datos se utilizan para asignar una
variable o una constante con un nombre fijo que
tome una porción de memoria y que almacene una
información en memoria, si el tipo de dato es
numérico solo almacenará datos numéricos y si el
tipo de dato es una cadena de caracteres
almacenará texto.

Y dependiendo el tipo de datos numérico se podrá


almacenar una cantidad de dato dependiendo la
precisión que tenga la variable.
En programacion los tipos de datos son (o pueden
ser) distintos entre si, cada tipo corresponde a
como se va a jugar con la memoria, es decir un dato
numerico puede usar entre 2 y 4 byte (depende del
compilador), mientras que un dato carácter usara
un byte por cada carácter, es por eso que se
especifica que es lo que se necesita.

En C, algunos tipos de datos son:

INT : Para numero enteros.

Ej:
Int a=5;

CHAR : Para caracteres. Se usa [] con un valor para


hacer una cadena de caracteres, por ejemplo una
palabra.

Ej:
Char [4] a=Hola;
FLOAT : Para numeros decimales.

Ej:
Float a=1.25;

En Visual Basic / Visual.Net, algunos tipos de datos


son (cabe resaltar que en este lenguaje de
programación se anticipa la instrucción "DIM" que
declara y asigna espacio para almacenar una o más
variables).

Integer : Para números enteros

Ej:
Dim a as integer
a= 4

String: Para cadena de caracteres

Ej:
Dim cadena as string
cadena="Visual Basic"
Double: Para número decimales.

Ej:
Dim b as doublé
b=4.12

Hay muchos mas, pero estos son mas comunes y


son usados en otros lenguajes (son como un
estandar, pero no son regla).

Archivos
Un archivo es un fichero (dato) almacenado en
algún recurso de memoria, generalmente en Disco
Duro, pero dependiendo del uso (en ciertos casos)
son almacenados en RAM.

Un Fichero tiene muchas funciones, en


programación, estos almacenan códigos o parte de
ellos (en ocasiones se divide el código en varios
archivos). También es posible que se necesita
almacenar datos que el usuario introduce ("Como
sus datos, nombre de usuario y contraseña, etc.),
estos se empaquetan en un archivo y podrán ser
usados luego por el programa por ejemplo, cuando
el usuario desee loguearse de nuevo.

En el lenguaje C++ y otros lenguajes orientados a


objetos, se suele decir, "Todo es un archivo", debido
a como trabajan estos.

Archivos, en ocasiones puede referirse a las


librerías, pero creo prudente hacer diferencias, una
librería es una utilidad para el lenguaje en que
programamos, mientras que un archivo es una
utilidad mas cercana a nosotros (en lo posible,
desarrollado por nosotros).
Herramientas de desarrollo
Las herramientas de desarrollo son aquellos
programas o aplicaciones que tengan cierta
importancia en el desarrollo de un programa
(programación). Pueden ser de importancia vital
(como un ensamblador, un compilador o un editor)
o de importancia secundaria, como una IDE
(Integrated Development Environment - Entorno de
Desarrollo Integrado).

Compiladores

Los compiladores son programas que «traducen»


un fichero de código fuente de cualquier lenguaje al
lenguaje ensamblador y lo llama, cuando sea
necesario, igual que al enlazador (o linker). Los más
importantes son GCC (GNU Compiler Colector) para
C, G++ para C++, G77 para Fortran 77 y Microsoft
Visual C++, entre otros

Ensambladores

Los ensambladores son aquellos programas que se


encargan de desestructurar el código en lenguaje
ensamblador y traducirlo a lenguaje binario. Los
archivos en lenguaje binario se enlazan
posteriormente en un único fichero, el ejecutable.

Los más importantes son tas, gas, nasm...

Enlazadores (Linkers)

Son los programas que enlazan varios ficheros


objeto en lenguaje binario para crear un único
fichero, el ejecutable del programa.
El más importante es ld. y también es una de las
más usadas.

Depuradores (Debuggers)

Como su nombre lo indica, sirven para corregir los


errores o fallas de la programación (bugs). Se
encargan de ejecutar, paso a paso un programa,
alertando sobre los errores presentados y los
valores de las variables, entre otros. Son
particularmente útiles cuando el programa parece
estar bien, pero no se obtiene el resultado esperado
(se cuelga, da resultados erróneos...).

El más importante es GDB. Actualmente casi todas


las IDEs incluyen uno, o deberían.
Editores de texto

Son tan importantes como un compilador pues es


el editor de la programación; actualmente incluyen
funciones específicamente dedicadas a la
programación, como resaltado de sintaxis, y
autoindentación, entre otras

Grandes editores de texto son GNU Emacs, Vim,


Scite, Notepad++...

Otras herramientas

No son tan importantes como las anteriores, pero


también tienen su importancia:

IDEs (Interfaz de Desarrollo Estructurada): juntan


en un sólo programa editor de texto, compilador,
enlazador, ensamblador, depurador... Ejemplos de
ellas son Anjuta, Dev-Cpp, Codeblocks...
Programas de indentación: sirven para aclarar el
código escrito confusamente. El único que
conozco es indent. De todas formas, un editor de
texto medianamente decente suele incluir sus
propias funciones de indentado.

Hola mundo
ABAP/IV

REPORT HOLAMUNDO.
WRITE '¡Hola, mundo!'.

ABC

WRITE "¡Hola mundo!"


ActionScript

trace("¡Hola, mundo!");

ADA

with Ada.Text_IO;

procedure Hola_Mundo is
begin
Ada.Text_IO.Put_Line("¡Hola,
mundo!");
end Hola_Mundo;
ASP

<%

Response.Write("Hola Mundo")

%>

ASSEMBLY

.model small
.stack
.data
saludo db "Hola mundo!!!", "$"
.code
main proc ;Init
process
mov ax,seg saludo
mov ds,ax ;ds = ax =
saludo
mov ah,09
;Function(print string)
lea dx,saludo ;DX =
String terminated by "$"
int 21h
;Interruptions DOS Functions
mov ax,4c00h ;Function
(Quit with exit code (EXIT))
int 21h
;Interruption DOS Functions
main endp ;End
process
end main
AWK

#!/bin/awk -f
BEGIN{
print "¡Hola, mundo!";
}

Bash

#!/bin/bash
echo "Hola mundo"

Basic

PRINT "Hola Mundo"


C

#include <stdio.h>

int main(void)
{
printf("Hola, mundo!\n");
return 0;
}

C++

#include <iostream>

using namespace std;

int main() {
cout << "¡Hola, mundo!" <<
endl;
}

C++/CLI

int main()
{

System::Console::WriteLine("Hola,
mundo!");
return 0;
}
C#

using System;
 
class MainClass
{
public static void Main()
{
Console.WriteLine("¡Hola
Mundo!");
}
}

COBOL

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
MAIN SECTION.
DISPLAY "Hola mundo"
STOP RUN.

ColdFusion

<cfset variable="Hola Mundo">


<cfoutput>#variable#</cfoutput>

MS-DOS

En sistemas operativos de la familia DOS como MS-


DOS o PC-DOS que usan el Intérprete de comandos
COMMAND.COM o sistemas que usan como
intérprete de comandos CMD.EXE (OS/2 y Windows
de la rama NT) se pueden crear archivos de proceso
por lotes con extensiones BAT y CMD
respectivamente con el siguiente contenido:

@echo ¡Hola, Mundo!

Eiffel

class HOLA_MUNDO
create
make
feature
make is
do
io.put_string("%nHola
mundo%N")
end
end -- HOLA_MUNDO
Erlang

-module(hola).
-export([hola_mundo/0]).

hola_mundo() -> io:fwrite("Hola


mundo!\n").

Fortran

PROGRAM HOLA
PRINT *, '¡Hola, mundo!'
END

Haskell

holaMundo :: IO ()
holaMundo = do putStrLn ("Hola
mundo!")

HTML/JavaScript

<html>
<head>
<title>Hola Mundo</title>
<script type="text/javascript">
alert("¡Hola mundo!");
</script>
</head>
<body>
</body>
</html>
INTERCAL

PLEASE DO ,1 <- #13


DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #112
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #238
DO ,1 SUB #7 <- #26
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #8 <- #248
DO ,1 SUB #9 <- #168
DO ,1 SUB #10 <- #24
DO ,1 SUB #11 <- #16
DO ,1 SUB #12 <- #158
DO ,1 SUB #13 <- #52
PLEASE READ OUT ,1
PLEASE GIVE UP

Java

public class HolaMundo


{
public static void
main(String[] args)
{

System.out.println("¡Hola,
mundo!");
}
}
Programación en Lexico (POO en
castellano)

Aplicación con un solo algoritmo:

tarea muestre "Hola mundo"

Aplicación con solo clases:

clase tarea
publicos:
mensajes:
Principal muestre "Hola Mundo"

Aplicación con interfaz gráfica:

clase ventana derivada_de


"System.Windows.Forms.Form"
publicos
métodos
ventana copie "Hola mundo" en
ventana.Text

LISP

(format t "¡Hola, mundo!")

Liberty BASIC

print "¡Hola, mundo!"

MATLAB

close all;  %
cierra todas las ventanas que
pueda haber
clear all;  % borra
todas las variables
clc;  %
limpia la pantalla

disp('hola mundo');  %
muestra el mensaje

NATURAL

WRITE '¡Hola, mundo!'.

Object REXX

Utilizando los métodos de REXX clásico:


say "Hola Mundo"
call lineout , 'Hola, mundo.'
call charout , 'Hola, mundo.'||eol
/* eol definido previamente */

Utilizando objetos:

.output~say('Hola, mundo.')
.output~lineout('Hola, mundo.')
.output~charout('Hola,
mundo.'||eol) -- eol definido
previamente

Pascal

Program HolaMundo;
begin
Writeln('¡Hola, mundo!');
end.

NetREXX

Utilizando la instrucción say que proviene de REXX


clásico:

say "Hola Mundo"

o directamente utilizando clases y métodos Java:

System.out.println("¡Hola
mundo!");
OpenInventor

#Inventor V2.1 ascii


Text3 {
string "Hola mundo"
}

Perl

#!/usr/bin/perl
print "Hola, mundo.\n";

PHP

<?php
echo "Hola Mundo";
?>
Python

print "Hola mundo"

QBasic

PRINT "Hola mundo"

REXX

say "Hola Mundo"

Ruby

puts "Hola Mundo"


SAPScript

MAIN
P1 Hola Mundo
/

Seed7

$ include "seed7_05.s7i";

const proc: main is func


begin
writeln("Hola Mundo");
end func;
Smalltalk

Transcript show: '¡Hola, mundo!'

SQL

Variante de Oracle:

SELECT 'HOLA MUNDO'


FROM DUAL;

Unlambda

```s``sii`ki
``s``s`ks
``s``s`ks``s`k`s`kr
``s`k`si``s`k`s`k
`d````````````.H.o.l.a. .m.u.n.d.o
k
k
`k``s``s`ksk`k.*

Visual Basic

Sub Main()
MsgBox "¡Hola, mundo!"
End Sub

X3

SubProg HOLAMUNDO()
Infbox "Hola Mundo"
End
xBase

? "Hola Mundo"

La Abstracción y el
Encapsulamiento
Abstracción

La abstracción, un principio por el cual se aísla toda


aquella información que no resulta relevante a un
determinado nivel de conocimiento.

Abstracción: Es una descripción de especificación


que enfatiza algunos de los detalles o propiedades
de algo. La abstracción consiste en captar las
características esenciales de un objeto, así como su
comportamiento. Es un método por el cual
abstraemos valga la redundancia, una determinada
entidad de la realidad de sus características y
funciones que desempeñan, estos son
representados en clases por medio de atributos y
métodos de dicha clase.

Ejemplos de abstracción

Ejemplo 1: ¿Qué características podemos abstraer


de los automóviles? o ¿Qué características
semejantes tienen todos los automóviles?

Características: Marca, Modelo, Número de chasis,


Peso llantas o cauchos, Puertas, Ventanas...
Comportamiento: Acelerar, Frenar, Retroceder...

Ejemplo 2: La gerencia de un taller mecánico


necesita un sistema para controlar los vehículos
que ingresan a sus instalaciones. En este caso, las
características esenciales de la clase vehículo son:
Marca, Modelo, Color, Falla detectada, Nombre del
Propietario, Dirección del Propietario, Teléfono del
Propietario...

A esto se le llama abstracción. En general un


programa no es más que una descripción abstracta
de un procedimiento o fenómeno que existe o
sucede en el mundo real.

La abstracción es crucial para comprender este


complejo mundo.
La abstracción es esencial para el
funcionamiento de una mente humana normal y
es una herramienta muy potente para tratar la
complejidad.
La abstracción es clave para diseñar un buen
software.
Procedimientos

Modulos

Es una técnica que proporciona la posibilidad de


dividir sus datos y procedimientos en una parte
privada y una parte pública. Proporcionan un
método efectivo de ocultación de la información,
pero no permiten realizar instanciación, que es la
capacidad de hacer múltiples copias de las zonas
de datos.

Tipo abstracto de dato

Un tipo abstracto de dato (TAD) es un tipo de dato


definido por el programador que se puede
manipular similarmente a los tipos de datos
definidos por el sistema. Un tipo abstracto de dato
corresponde a un conjunto (puede ser de tamaño
indefinido) de valores legales de datos y un número
de operaciones primitivas que se pueden realizar
sobre esos valores. Para construir un tipo abstracto
de dato se debe:

1. Exponer una definición del tipo.

2. Hacer disponible un conjunto de operaciones.

3. Proteger los datos asociados con el tipo.

4. Permitir instancias múltiples del tipo.

Encapsulamiento

Consiste en unir en la Clase las características y


comportamientos, esto es, las variables y métodos.
Es tener todo esto en una sola entidad.

En los lenguajes estructurados esto era imposible.


Es evidente que el encapsulamiento se logra
gracias a la abstracción. La utilidad del
encapsulamiento va por la facilidad para manejar la
complejidad, ya que tendremos a las Clases como
cajas rojas donde sólo se conoce el
comportamiento pero no los detalles internos, y
esto es conveniente porque nos interesará conocer
que hace la Clase pero no será necesario saber
cómo lo hace.

Ejemplos

Ejemplo 1: De un televisor, el usuario conoce su


apariencia y parte de su funcionamiento. Sólo le
importa que funcionen el selector de canales, el
video y el audio; no le interesa saber cómo funciona
cada una de las partes internas del aparato, ese
detalle sólo le interesan al fabricante y al técnico de
servicio.
Ejemplo 2: De un animal no sólo es necesario
conocer su apariencia; también se requiere conocer
qué sabe hacer y cómo reacciona ante
determinadas situaciones.

Caja Negra: Un objeto en el que su comportamiento


y atributos son conocidos pero no así su trabajo
interno, el cual continua siendo un misterio.

Reconocimiento de Objetos
y Clases
Reconocimiento de Objetos y Clases

Objetos: Los principios de la definición de objetos


ayudan a los programadores a hacer un código más
robusto, mantenible y seguro; porque se pueden
aislar a cada uno de esos objetos y tratarlos como
un ente único, con su propia personalidad, sin que
haya cientos de características que tengamos que
tener presentes, tal como se hacía en la
programación orientada a procedimiento. Lo cual,
desde el punto de vista económico, que nunca hay
que dejar de tener presente, si resulta viable, ya que
los objetos bien diseñados pueden ser utilizados en
diversas aplicaciones, con lo cual el tiempo de
desarrollo total se reduce.

En Java, un objeto se define como una estructura


que encapsula atributos (datos de configuración,
propiedades) y comportamientos (procedimientos)
de una entidad con un papel bien definido en una
aplicación. Cada objeto tiene:
- Estado: Se compone de atributos (propiedades
estáticas) y valor actual (valores dinámicos)

- Comportamiento: Representa cómo un objeto


actúa y reacciona.

- Identidad: Cada objeto es único, ningún objeto es


igual a otro.

A continuación se muestran algunas de las


propiedades que se pueden aplicar a los objetos, tal
como se han definido:

- Los objetos son cosas.

- Los objetos pueden ser simples o complejos.

- Los objetos pueden ser reales o imaginarios.


Casi todo puede ser considerado un objeto. El
dinero, el helicóptero, una bicicleta, los perros, el
coche. Los objetos representan cosas, simples o
complejas, reales o imaginarias. Algunas cosas no
son objetos, sino atributos, valores o características
de un objeto. Es decir, no todas las cosas son
objetos, ni son consideradas normalmente como
objetos. Algunas de ellas son simplemente
atributos de los objetos como el color, el tamaño y
la velocidad. Los atributos reflejan el estado de un
objeto, la velocidad del objeto “avión”, o el tamaño
de un objeto edificio.

Entender que es un objeto es la clave para entender


cualquier lenguaje orientado a objetos.

Los objetos pueden tener partes públicas y


privadas, a menudo llamadas miembros.

1.- Miembros Públicos: Los miembros públicos


(interfaz o métodos) de una clase describen qué es
lo que pueden hacer los objetos de esa clase.

2.- Miembros Privados: Describen la


implementación, el cómo lo hace.

- Interacciones entre Objetos: Los objetos


contribuyen al comportamiento del sistema
colaborando con otros objetos. El modelado de
objetos no sólo modela los objetos en un sistema,
sino también sus interrelaciones. Para realizar su
tarea, un objeto puede delegar trabajos en otro. Este
otro puede ser parte integrante de él o ser cualquier
objeto del sistema.
- Intercambio de Mensajes: Los objetos
interaccionan enviándose mensajes unos a otros. El
método de envío de mensajes depende de la
naturaleza de los objetos modelados.

1.- Los objetos interaccionan por paso de


mensajes.

2.- Un objeto envía un mensaje a otro.

3.- El otro puede contestar, cambiar su estado, o


reaccionar de la manera apropiada.

4.- Los objetos sólo pueden interaccionar a través


de su interfaz público.

Los Objetos de Software, al igual que los objetos del


mundo real, también tienen características y
comportamientos. Un objeto de Software mantiene
sus características en una o más “variables”, e
implementa su comportamiento con “métodos”. Un
método es una función o subrutina asociada a un
objeto.

Clases: En el mundo real, normalmente se tiene


muchos objetos del mismo tipo. Por ejemplo: Un
teléfono celular es sólo uno de los miles que hay en
el mundo. Si se habla en términos de la
programación orientada a objetos, se puede decir
que el objeto celular de cualquier tipo es una
instancia de una clase conocida como “celular”. Los
celulares tienen características (marca, modelo,
sistema operativo, pantalla, teclado, etc.) y
comportamientos (hacer y recibir llamadas, enviar
mensajes multimedia, transmisión de datos, etc.).
Cuando se fabrican los celulares, los fabricantes
aprovechan el hecho de que los celulares
comparten características comunes y construyen
modelos o plantillas comunes, para que a partir de
esas se puedan crear muchos equipos celulares del
mismo modelo. A ese modelo o plantilla se le llama
Clase, y a los equipos que se sacan a partir de esta
se le llaman objetos.

Esto mismo se aplica a los objetos de Software, se


puede tener muchos objetos del mismo tipo y
mismas características. Por otro lado, una instancia
de una clase es otra forma de llamar a un objeto.
No existe diferencia entre un objeto y una instancia.
Sólo que el objeto es un término más general, pero
los objetos y las instancias son ambas
representación de una clase.

Instancia: Es un objeto de una clase en particular.


Reconocimiento de Objetos
y Clases en el mundo real
Objetos

En Java, un objeto se define como una estructura


que encapsula atributos (características) y
comportamientos (procedimientos) de una entidad
con un papel bien definido en una aplicación.

Características de los Objetos

- Estado: Conjunto de valores de los atributos en un


instante de tiempo dado. El comportamiento de un
objeto puede modificar el estado de este.
- Comportamiento: Relacionado con su
funcionalidad y determina las operaciones que este
puede realizar o a las que puede responder ante
mensajes enviados por otros objetos.

- Identidad: Es la propiedad que permite a un objeto


diferenciarse de otros. Generalmente esta
propiedad es tal, que da nombre al objeto.

Los objetos, concretos y abstractos, están a nuestro


alrededor, forman nuestro entorno. Podemos
distinguir cada objeto en base a sus características
y comportamientos.
Ejemplos

En un aula de clases observamos los siguientes


objetos:

• Alumno

• Profesor

• Mesa

• Silla

• Mesa banco

• Pizarrón

Interacción entre objetos: Los objetos no sólo


tienen atributos relacionados con su forma física
sino que, además, exhiben comportamientos
específicos de su clase.

• Alumno: Estudia, aprende.

• Profesor: Enseña, evalúa.

• Mesa: Ordenada, desordenada.

• Silla: Ocupada, desocupada.

• Mesa banco: Ocupado, desocupado.

• Pizarrón: Pintado, borrado

Observamos que en el aula hay varios objetos


alumno, por lo que pensamos en el grupo de
alumnos, al que denominaremos como la clase
alumno. De igual manera, cada materia es impartida
por un profesor; el conjunto de profesores forman la
clase Profesor. Pudiéramos extender nuestro
análisis al pizarrón, la mesa, la silla,, al conjunto de
mesa bancos, etc.

Clases:

Es la definición de un objeto. Cuando se programa


un objeto y se definen sus características y
funcionalidades, realmente se programa una clase.
Una clase es la descripción de un conjunto de
objetos; consta de datos que resumen
características comunes de un conjunto de objetos.
Se pueden definir muchos objetos de la misma
clase. Dicho de otro modo, una clase es la
declaración de un tipo objeto. Las clases son
similares a los tipos de datos y equivalen a
métodos y plantillas que describen como se
construyen ciertos tipos de objetos. Cada vez que
se construye un objeto a partir de una clase
estamos creando lo que se llama una instancia de
esa clase. Por consiguiente, los objetos no son más
que instancias de una clase, una instancia es una
variable de tipo objeto. En general instancia de una
clase y objeto son términos intercambiables.

Obtenido de «https://es.wikibooks.org/w/index.php?
title=Fundamentos_de_programación/Texto_completo&oldid=
246504»

Esta página se editó por última vez el 9 mar 2015 a las


19:01. •
El contenido está disponible bajo la licencia CC BY-SA 3.0 ,
salvo que se indique lo contrario.

También podría gustarte