Está en la página 1de 27

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.juarbo.com/pseudocodigo-de-programacion/)
Ejemplos de Pseudocódigos (http://abcalgoritmos.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/search?hl=es
&q=tipo+dato+programacion&btnG=Buscar&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

Sumario
Introducción
Algoritmos y programas
¿Qué es un algoritmo?
Modelos computacionales
Programas: Algoritmos para ser ejecutados por un ordenador
¿Qué instrucciones ejecuta un ordenador?
Lenguaje de máquina
Lenguaje ensamblador
Programación para seres humanos
Lenguajes de alto nivel
Traductores e intérpretes
Lenguajes interpretados vs. lenguajes compilados
Técnicas básicas de programación
Antes de empezar un programa
Estructura de un programa
Variables y constantes
Comentarios
Estructuras de datos y de control
Estructuras de control
Estructuras de datos
Enlaces externos
Introducción a la programación estructurada
Introducción
Introducción a las estructuras de datos y tipos de datos
Aplicaciones de los tipos de datos estructurados
Archivos
Herramientas de desarrollo
Compiladores
Ensambladores
Enlazadores (Linkers)
Depuradores (Debuggers)
Editores de texto
Otras herramientas
Hola mundo
ABAP/IV
ABC
ActionScript
ADA
ASP
ASSEMBLY
AWK
Bash
Basic
C
C++
C++/CLI
C#
COBOL
ColdFusion
MS-DOS
Eiffel
Erlang
Fortran
Haskell
HTML/JavaScript
INTERCAL
Java
Programación en Lexico (POO en castellano)
LISP
Liberty BASIC
MATLAB
NATURAL
Object REXX
Pascal
NetREXX
OpenInventor
Perl
PHP
Python
QBasic
REXX
Ruby
SAPScript
Seed7
Smalltalk
SQL
Unlambda
Visual Basic
X3
xBase
La Abstracción y el Encapsulamiento
Abstracción
Ejemplos de abstracción
Procedimientos
Modulos
Tipo abstracto de dato
Encapsulamiento
Ejemplos
Reconocimiento de Objetos y Clases
Reconocimiento de Objetos y Clases en el mundo real
Objetos
Características de los Objetos
Ejemplos
Clases:

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 texto está disponible bajo la Licencia Creative Commons Atribución-CompartirIgual 4.0; pueden aplicarse términos adicionales.
Véanse los Términos de uso para más detalles.

También podría gustarte