Capítulo 1

Metodología de la programación

Contenido

1. Introducción

2. Lógica de programación

3. Ordinogramas

4. Pseudocódigos

5. Objetos

6. Ejemplo de códigos en diferentes lenguajes

7. Resumen

1. Introducción

Entendemos por programación el proceso de diseño, codificación, depuración y mantenimiento del código fuente. Dicho código fuente o algoritmo está relacionado con un determinado problema a resolver y es escrito (codificado o implementado) bajo un lenguaje de programación.

Para desarrollar programas y que puedan ser reconocidos por un ordenador usamos los lenguajes de programación (el ordenador se limitará a ejecutar las instrucciones de las que se compone el programa). Normalmente los lenguajes de programación trabajan a alto nivel, mientras que el ordenador lo hace a bajo nivel (en lenguaje ensamblador, el cual es mucho más complicado de entender para nosotros que uno de alto nivel).

Definimos algoritmo como una secuencia finita y ordenada de instrucciones que se ejecutan para dar solución a un problema de partida. Un algoritmo puede ser representado mediante forma gráfica, diagramas de flujo, pseudocódigo, código fuente, etc. Este algoritmo será codificado bajo un determinado lenguaje de programación mediante el cual obtendremos el programa ejecutable.

El proceso que nosotros vamos a seguir será el de enfrentarnos a un problema y resolverlo siguiendo este orden:

  1. Representación mediante diagrama de flujo.
  2. Transcripción del diagrama de flujo a pseudocódigo.
  3. Codificación del pseudocódigo al lenguaje de programación.

Es decir, nos darán unos datos de partida (enunciado del problema a resolver) y crearemos un diagrama de flujo. Con este pasaremos a implementar su correspondiente pseudocódigo para, a continuación, con ayuda de este último, crear el código fuente asociado a un lenguaje de programación determinado.

image

2. Lógica de programación

Siempre que queramos crear un programa para resolver un determinado problema debemos cuestionarnos:

  1. Recopilar la máxima información del problema a resolver. Así, analizando el problema, tenemos claro lo que hay que resolver.
  2. Una vez recopilada la información, se procede a crear las instrucciones necesarias para poder resolver el problema.

La lógica de programación va a permitir dar solución a problemas mediante el uso de ordenadores.

image

Importante

La programación es, pues, las técnicas e instrucciones de un lenguaje de programación para poder obtener unos resultados mediante el uso del ordenador.

2.1. Descripción y utilización de operaciones lógicas

La lógica es el razonamiento para poder distinguir lo verdadero y lo falso. Una operación lógica asigna un valor (verdadero o falso) para cada una de las variables que intervienen en dicha operación. Además, dicha operación lógica tiene como resultado o verdadero o falso. Se asocia a verdadero 1 y a falso 0.

Las operaciones lógicas básicas son:

  1. Suma lógica (OR).
  2. Producto lógico (AND).
  3. Negación (NOT).
  4. XOR o OR Exclusiva.
  5. NAND.
  6. NOR.
  7. XNOR.

Para ver cómo funcionan las operaciones lógicas, implementaremos una tabla de verdad con dos variables (las cuales tomarán el valor cierto, 1, o falso, 0) e iremos viendo su resultado (que también tomará únicamente el valor de cierto o falso).

Suma lógica (OR)

Su salida será verdadera (1) cuando cualquiera de sus variables de entrada sea verdadera (1); y falsa (0), cuando todas sus variables sean falsas. Veamos su tabla de verdad:

A B Salida (A + B)
0 0 0
0 1 1
1 0 1
1 1 1

Producto lógico (AND)

Su salida será verdadera (1) cuando todas sus variables de entrada sean verdaderas (1) y falso (0) cuando cualquiera de sus variables de entrada sea falsa. Veamos la tabla de verdad asociada a esta lógica:

A B Salida (A • B)
0 0 0
0 1 0
1 0 0
1 1 1

Negación (NOT)

También es conocida como inversión lógica. Su salida será justamente la contraria de la entrada, es decir, si en la entrada tenemos verdadero (1) la salida será falso (0). Veamos su tabla de verdad asociada:

A image
0 1
1 0

XOR o OR Exclusiva

Esta operación lógica consiste en un negador de la variable principal cuando la variable secundaria es verdadera; en otro caso, el valor de la variable principal es el mismo. Veamos su tabla de verdad:

A B Salida (A ⊕ B)
0 0 0
0 1 1
1 0 1
1 1 0

NAND

Esta operación lógica consiste en aplicar una AND entre las variables y de entrada y a continuación una NOT sobre el resultado de la AND. Veamos su tabla de verdad:

A B image
0 0 1
0 1 1
1 0 1
1 1 0

NOR

Esta operación lógica consiste en aplicar una OR entre las variables y de entrada y a continuación una NOT sobre el resultado de la OR. Veamos su tabla de verdad:

A B image
0 0 1
0 1 0
1 0 0
1 1 0

XNOR

Esta operación lógica consiste en aplicar una XOR entre las variables y de entrada y a continuación una NOT sobre el resultado de la XOR. Veamos su tabla de verdad:

A B image
0 0 1
0 1 0
1 0 0
1 1 1

Todas estas operaciones lógicas pueden combinarse entre sí para obtener expresiones más complejas. Nosotros las usaremos en la parte dedicada a la programación.

Otra operación lógica bastante frecuente en la programación es la comparación de dos valores, que podemos realizar mediante el operador “==”. Por ejemplo, si queremos saber si el contenido de a es igual al de b usaríamos la sintaxis: “a = = b”; la cual nos dará o verdadero o falso (dependiendo de sí son iguales o no son iguales).

En la siguiente tabla, se pueden ver los operadores relacionales:

Operador Descripción
= Igual
< >/ ! = Distinto
< Menor que
> Mayor que
< = Menor o igual que
> = Mayor o igual que

image

Aplicación práctica

Realice la tabla de verdad de la siguiente expresión: (A •B) + A

SOLUCIÓN

image

image

Sabía que...

En el mundo de la electrónica se usan puertas digitales (que simulan el funcionamiento de las operaciones lógicas vistas) en los dispositivos electrónicos más comunes.

image

Actividades

1. Realice la tabla de verdad de la siguiente expresión: image

2. Realice la tabla de verdad de la siguiente expresión: image

2.2. Secuencias y partes de un programa

Consideramos a un programa como un conjunto de secuencias de instrucciones que actúan sobre unos datos de entrada, procesándolos para obtener unos datos de salida. Con esto podemos decir que un programa se divide en dos partes fundamentales:

  1. Parte de declaraciones. En esta parte definiremos o declararemos las constantes, variables, tablas, registros, estructuras, archivos, etc., que vayamos a usar en nuestro programa.
  2. Parte de instrucciones. En esta parte estarán las operaciones (instrucciones) que se han de realizar en nuestro programa para obtener los resultados de salida que queremos. En esta parte podemos diferenciar tres puntos:
    1. Entrada de datos. Vienen de fuera y son almacenados en la memoria del ordenador para poder trabajar con ellos.
    2. Proceso de datos. Instrucciones que modifican los datos de entrada para convertirlos en datos de salida.
    3. Salida de datos. Se toman los datos ya procesados de la memoria del ordenador y se envían a los dispositivos externos al programa.

Los tipos de instrucciones (operaciones) se pueden clasificar como vemos a continuación:

  1. De declaración: el objetivo de estas instrucciones es el de indicar al procesador que reserve memoria para las variables que nos declaramos.
  2. Primitivas: con estas instrucciones, el procesador funciona de modo inmediato. Por ejemplo, en la asignación, lecturas o escrituras de variables.
  3. De asignación: calculan el valor de una expresión y la asignan a una variable.
  4. De entrada: cogen datos de los dispositivos de entrada del ordenador y los almacena en su memoria interna para poder trabajar con ellos.
  5. De salida: justamente al contrario que las anteriores, cogen un dato de memoria interna del ordenador y lo llevan hacia dispositivos externos.
  6. Compuestas: son aquellas instrucciones complejas que el procesador no es capaz de resolver de una sola vez, las subdivide en varios procesos y luego unifica resultados para dar por completada la instrucción.
  7. De control: son aquellas que permiten controlar la ejecución de otras instrucciones o del flujo del programa.
  8. Alternativas: ejecutan una instrucción u otra dependiendo de una deter-minada condición.
  9. Salto condicional: se rompe la secuencia normal de ejecución del programa y se salta a una zona de memoria (previamente definida) si se cumple una determinada condición.
  10. Salto incondicional: se rompe la secuencia normal de ejecución del programa y se salta a una zona de memoria (previamente definida), se cumpla o no una determinada condición.
  11. Repetitiva: permite repetir (iterar) una o varias instrucciones un número finito o infinito de veces.

3. Ordinogramas

En el proceso de creación de un programa, partiremos de un posible diseño del mismo mediante ordinogramas (la forma más fácil de representar los problemas). Una vez obtenido el ordinograma, pasaremos a construir el pseudocódigo asociado a dicho ordinograma. A este pseudocódigo es al que vamos a llevar a un determinado lenguaje de programación para obtener el ejecutable que resuelve nuestro problema.

3.1. Descripción de un ordinograma

Por ordinograma entendemos la representación gráfica de la secuencia de instrucciones que componen un programa (algoritmo). Es muy importante una buena codificación mediante ordinogramas del problema a resolver, dado que, si en esta parte planificamos algo mal, lo arrastraremos en sucesivos pasos. Los ordinogramas también son conocidos como diagramas de flujo.

Al ser un ordinograma una representación gráfica, vamos a usar elementos gráficos para poder representarlos. En la siguiente figura vemos un ejemplo de ordinograma:

image

3.2. Elementos de un ordinograma

Una vez conocido el concepto de ordinograma, tenemos que tener una serie de reglas para poder operar con ellos:

  1. Todo ordinograma debe tener un INICIO y un FIN.
  2. Todo ordinograma debe diseñarse de arriba abajo y de izquierda a derecha.
  3. Las palabras reservadas las escribimos en mayúscula, tales como LEER, MOSTRAR, IMPRIMIR, etc.
  4. Debemos usar en su diseño expresiones independientes del pseudocódigo y del lenguaje de programación a usar.
  5. Debemos evitar diseños con cruces de líneas (deben ser los más claros posible, dado que es el objetivo principal).
  6. Debemos utilizar el menor número posible de instrucciones para dar solución al problema.

Conocidas las reglas de creación de un ordinograma, veamos los elementos que pueden componerlo:

Símbolo Descripción
image INICIO / FIN del programa
image Operación en general
image Operación de entrada/salida
image Subprograma
image Toma de decisiones (1, 2 o 3 salidas)
image Conector

3.3. Operaciones en un programa

Las operaciones son las instrucciones que podemos hacer en nuestro ordinograma. Por ejemplo, imagine que nos piden realizar un programa que compruebe si un número leído desde teclado es 0, positivo o bien negativo. Vamos a desarrollar paso a paso las operaciones que van apareciendo:

  1. INICIO de nuestro ordinograma.
  2. LEER un número desde teclado introducido por el usuario.
  3. SI el número es cero IMPRIMIR “Es cero”.
  4. SINO SI el número es mayor que cero IMPRIMIR “Positivo”.
  5. SINO SI el número es menor que cero IMPRIMIR “Negativo”.
  6. FIN de nuestro ordinograma.

Luego podemos observar cómo las operaciones que componen nuestro ordinograma al fin y al cabo son las instrucciones que van a componer nuestro programa (algoritmo).

3.4. Implementación de elementos y operaciones en un ordinograma

Una vez que tenemos claro lo que tiene que resolver nuestro ordinograma, procederemos a irlo creando gráficamente mediante las reglas que anteriormente establecimos y con los elementos que vayamos necesitando para ello. Basándonos en el ejemplo del punto anterior (programa que lee un número por teclado e imprime si es cero, positivo o negativo), su correspondiente ordinograma sería:

image

Nota

Recuerde que para el diseño y codificación de ordinogramas hay que ser muy pulcro y seguir un correcto procedimiento en su elaboración para no diseñarlo incorrectamente.

image

Podemos observar que los pasos que hemos dado han sido:

  1. Colocar los elementos de inicio / fin respectivamente.
  2. Solicitar al usuario que introduzca un número (dato de entrada) y los almacenados en la variable número.
  3. Comprobamos el valor del número introducido por el teclado (procesamiento de los datos).
  4. En función del procesado de datos (si el número es cero, mayor o menor) se producen unos datos de salida (si el número introducido por el usuario es cero, mayor o menor).

Imagine que nos piden que realicemos un programa que pida dos números al usuario y que calcule su suma, resta, multiplicación y división. Su correspondiente ordinograma quedaría de la siguiente manera:

image

image

Aplicación práctica

Realice un ordinograma que nos diga si un carácter introducido por teclado por el usuario es vocal o carácter.

SOLUCIÓN

image

Partimos colocando el símbolo de inicio de nuestro ordinograma. A continuación, pedimos al usuario que introduzca un carácter (símbolo entre a-z) y lo almacenamos en la variable car. Una vez almacenado, procedemos a comprobar mediante comparaciones si lo que hay en la variable car es ‘a’ o ‘e’ o ‘i’ o ‘o’ o ‘u’ y, si es así, sacamos por pantalla “Es vocal” y, en caso contrario, sacamos “No es vocal”.

Datos de entrada: carácter introducido por usuario.

Proceso de datos: mirar si es “a,e,i,o,u”.

Datos de salida: decir si es vocal o no el carácter introducido por el usuario.

image

Actividades

3. Realice el ordinograma correspondiente a un programa que pide dos números por pantalla y los saque por la misma ordenadamente, primero el mayor de ellos y después el menor.

4. Realice el ordinograma correspondiente a un programa que pida al usuario que introduzca un número. Si dicho número está entre 1 y 12, sacaremos por pantalla el mes correspondiente; si no está entre ese rango, sacaremos por pantalla: Error. Ejemplo: 7 → Julio 16 → Error.

4. Pseudocódigos

El pseudocódigo, también conocido como falso código, es la forma de representar mediante texto un algoritmo. El pseudocódigo utiliza elementos del lenguaje natural y elementos que corresponden con los lenguajes de programación, con lo cual está muy próximo a estos últimos. Todo pseudocódigo se va a componer de:

  1. Cabecera. Indicaremos el nombre del algoritmo que vamos a implementar mediante pseudocódigo.
  2. Declaraciones. Indicaremos los tipos de variables y demás elementos que vamos a usar en nuestro pseudocódigo.
  3. Cuerpo. Indicamos las operaciones (instrucciones) de las que consta nuestro pseudocódigo para dar solución al problema planteado.

Luego la estructura general de un pseudocódigo sería:

image

image

Ejemplo

Veamos un ejemplo de un pseudocódigo que pide dos números al usuario y calcula su suma:

image

Observe cómo hemos declarado dos variables para almacenar los valores que el usuario da (dos números) y, a continuación, una variable para almacenar la suma de esos números. En el cuerpo lo que hacemos es pedir al usuario por pantalla que nos introduzca dos números y calcular su suma almacenando el resultado en la variable suma. A continuación, imprimimos por pantalla el contenido de la variable suma.

4.1. Descripción de pseudocódigo

El ordenador trabaja con datos almacenados en su memoria sobre los cuales realiza operaciones para obtener unos resultados. Veamos a continuación cuáles son esos tipos de datos:

  1. Numéricos, los cuales a su vez se dividen en:
    1. Enteros (1, 5, -5, 0, -1).
    2. Reales (1.1, 2.5x10^3, -0.5).
  2. Caracteres. Cualquier letra de la A-Z y de la a-z.
  3. Lógicos. Verdadero (1) o falso (0).

Debemos destacar que cualquier lenguaje de programación ofrecerá más tipos de datos de los que aquí se han explicado.

Una vez que conocemos los tipos de datos con los que trabaja el ordenador, vamos a ver una serie de conceptos necesarios para programar:

  1. Constante: es aquel dato que nunca varía su valor durante la ejecución del programa. Por ejemplo, el valor de PI=3,1416...
  2. Variable: es aquel dato que varía de valor durante la ejecución del programa.
  3. Identificadores: nombre que reciben las variables y constantes para poder referenciarlas en nuestros programas.

Para poder formar identificadores válidos para constantes y variables tenemos que seguir una serie de reglas, que son las siguientes:

  1. Siempre deben comenzar con letra.
  2. El resto de caracteres pueden ser letras o números.
  3. No se permiten caracteres especiales a excepción de ‘_’.
  4. No podemos dejar espacios en blanco (los unimos con ‘_’).
  5. Deben ser significativos y tener relación con el dato que representan.
  6. No podemos utilizar palabras ya reservadas (si, para, mientras, etc.).

Para comenzar el proceso de creación de un pseudocódigo debemos tener claros tres conceptos más:

  1. Datos de entrada: especificamos los datos que necesitamos para resolver el problema que nos dan.
  2. Proceso: operaciones o instrucciones a realizar con los datos de entrada para obtener los datos de salida.
  3. Datos de salida: una vez operados los datos de entrada se producen los datos de salida que necesitamos como solución al problema.

Por ejemplo, imagine que queremos calcular el área de un triángulo. Para ello:

  1. Datos de entrada: base, altura
  2. Proceso: área = (base * altura) / 2
  3. Datos de salida: área.

¿Cómo leemos e imprimimos variables con pseudocódigo? Para ello utilizaremos las palabras reservadas ESCRIBIR y LEER con la siguiente sintaxis:

image

¿Cómo realizamos la asignación de valores a una variable? Para ello utilizamos la sintaxis: variable = <valor_expresion>.

4.2. Creación del pseudocódigo

Para ver cómo vamos creando el pseudocódigo vamos a ir viendo una serie de ejemplos y explicando cómo resolverlos.

Ejemplo 1

Imagine que nos piden calcular el promedio de 3 calificaciones de alumnos.

Solución

Para poder realizar este ejercicio vamos a necesitar tres variables de tipo real (dado que la calificación puede ser 5.4) y otra variable también real para sumar la cal1 + cal2 + cal3 y dividirlas entre el total de calificaciones. Datos de entrada: tres variables de tipo real. Proceso de datos: calcular el promedio de estas tres variables reales. Datos de salida: el promedio de las 3 calificaciones introducidas. Observe:

image

Ejemplo 2

Nos piden calcular el cuadrado de un número.

Solución

Para realizar este ejercicio vamos a necesitar leer un número. Como no nos especifican nada, vamos a suponer un número entero, con lo cual vamos a necesitar una variable para almacenar este entero y otra para mostrar el resultado de su cuadrado. Datos de entrada: un número. Proceso de datos: calcular el cuadrado del número. Datos de salida: el cuadrado del número introducido. Observe:

image

Ejemplo 3

Tenemos que evaluar la expresión Y=-25x^3-3x^2+14.

Solución

En este caso, se trata de pedir al usuario el valor de X, entero, y calcular su correspondiente valor Y. Para ello, necesitamos 2 variables de tipo entero. Datos de entrada: un valor numérico ‘x’ introducido por el usuario. Proceso de datos: sustituir el valor de ‘x’ en la expresión para obtener el de ‘y’. Datos de salida: el valor de ‘y’ en función del valor de ‘x’ introducido. Observe:

image

Ejemplo 4

Realizar un pseudocódigo capaz de resolver ecuaciones de segundo grado.

Solución

Para poder resolver ecuaciones de segundo grado tenemos que usar la fórmula:

image

Con lo cual, necesitamos pedir al usuario los valores de a, b y c, que vamos a suponer de tipo entero. Vamos a usar dos variables (x1 y x2) dado que tendríamos dos posibles soluciones a la ecuación. Aparte, puede observar que usamos la función sqrt, su sintaxis es sqrt (numero) y nos devuelve la raíz cuadrada del número que le pasamos entre paréntesis. Este número tiene que ser de tipo entero obligatoriamente. Observe el código:

image

image

Actividades

5. Realice el pseudocódigo correspondiente a un programa que pida al usuario tres números enteros y los muestre por pantalla ordenados.

6. Realice el pseudocódigo correspondiente a un programa que pida al usuario una cantidad correspondiente al precio neto de un artículo, le añada un 10 % de beneficio junto con un 21 % de IVA y muestre por pantalla el precio de venta al público del mismo.

image

Recuerde

Los pasos que vamos a dar a la hora de dar solución a un problema son los de analizar el problema para obtener todos los datos de entrada, codificarlos mediante el uso de ordinogramas, codificar dicho ordinograma a pseudocódigo y pasar este último a un lenguaje de programación concreto para obtener el ejecutable al problema a solucionar.

5. Objetos

Los objetos son usados en la Programación Orientada a Objetos y soportada por casi la mayoría de lenguajes de programación actuales. Un objeto es una entidad de nuestro mundo real. Por ejemplo, pensemos en la entidad “Vehículo”, “Producto”, “Alumnos”, “Asignaturas”, etc. La idea fundamental de la P.O.O. (Programación Orientada a Objetos) es la de agrupar en el objeto datos y funciones asociadas al mismo.

En el caso del objeto “Vehículo”, los datos podrían ser: fabricante, modelo, color, número de plazas, bastidor, tara, año de fabricación, etc. Y podemos pensar en las siguientes funciones: arranque, subir ventanas, bajar ventanas, activar aire acondicionado, desactivar aire acondicionado, subir volumen, bajar volumen, etc.

image

5.1. Descripción de objetos

Como hemos dicho anteriormente, los objetos se van a componer de datos y de funciones. Estos datos los vamos a conocer como atributos y nos van a permitir identificar al objeto entre otros objetos del mismo tipo (dado que podemos tener varias instancias del mismo objeto).

Cuando estamos diseñando el objeto, a este tenemos que verlo como una plantilla o molde. Cuando estemos programando es cuando llamaremos a instancias de este objeto (el objeto en sí no se encuentra en memoria del ordenador, mientras que la instancia sí y podemos trabajar con ella). No es raro, en un mismo programa, tener varias instancias, por ejemplo, de la clase “Vehículo” o varias instancias de la clase “Alumno”, que hacen referencia a personas en sí.

Por ejemplo, en la clase “Alumno”, atributos propios serían: DNI, nombre, apellidos, dirección, población, provincia, teléfono, nombre y apellidos de los tutores, etc.

Obviamente, cada instancia tendrá unos atributos distintos, y estos atributos son los que identifican a una instancia de otra cualquiera.

image

Importante

No debe confundir objeto o clase con instancia. El objeto o la clase es una definición o esbozo de lo que estamos representando, mientras que la instancia es la definición o esbozo cargada en memoria del ordenador.

5.2. Funciones de los objetos

El objeto está compuesto de datos y funciones. Las funciones son las que van a permitir realizar operaciones con los datos del objeto. Estos datos o atributos solamente son accesibles por las propias funciones del objeto, de tal forma que otro objeto no puede tocar los atributos que no sean suyos.

Las funciones asociadas a un objeto permiten modificar los atributos del objeto. Por ejemplo, en la clase “Vehículo”, la función arrancar tendría que comprobar que no está ya arrancado el coche. En nuestro objeto “Vehículo” tendremos una variable lógica arrancado que, por ejemplo, pondremos a 1 si el vehículo está arrancado, y a 0, si no lo está.

Lo mismo ocurriría con la función subir_volumen, deberíamos comprobar que se puede subir más el volumen de la radio, porque lo mismo ya está al máximo y no podemos subirlo más.

5.3. Comportamientos de los objetos

El comportamiento de un objeto se refiere a las operaciones (funciones) que puede realizar este o bien a la respuesta que puede dar ante un mensaje de otro objeto.

Los objetos pueden comunicarse unos con otros a través del diseño de funciones adecuadas para ello.

En un instante concreto de tiempo, un objeto puede comportarse de una forma o de otra en función del entorno en que se encuentre. Por ejemplo, imagine la clase “VideoCamara” y la clase “Alarma”, que están implementadas en un entorno de seguridad. Está claro que cuando la videocámara detecte movimiento de noche, tiene que hacer sonar la alarma, con lo cual una instancia de la clase “VideoCamara” tendrá que comunicarse con la instancia de la clase “Alarma”.

5.4. Atributos de los objetos

Los atributos de los objetos van a permitir conocer las características del objeto en sí. Normalmente, los atributos solo pueden ser accedidos por las funciones del mismo objeto; con esto garantizamos la seguridad de los mismos. Un atributo que no esté declarado en un objeto o clase no puede ser usado.

Los atributos podemos definirlos de cualquier tipo de datos con los que trabaja el ordenador.

Si recuerdas la clase “VideoCamara” y “Alarma”, esta última deberá tener una función que le permita a la clase “VideoCamara” comunicarse con ella y, dentro de esta función, llamará a una función privada de la clase “Alarma” para poner su correspondiente alarma en el estado sonoro. Pero observe cómo no es la clase “VideoCamara” la que modifica directamente a la clase “Alarma”, sino que lo hace esta última a través de una función propia suya definida para tal fin.

En la siguiente imagen puede observar cómo se define la clase coche y se crean dos instancias de este objeto “coche” (una correspondiente a la marca Peugeot y otra para Renault).

image

5.5. Creación de objetos

Partimos de la creación de un objeto mediante una clase, que viene a ser una plantilla o molde. Una vez que tenemos creado el molde, vamos creando instancias de este molde. Las instancias podemos verlas como variables que están asignadas en memoria del ordenador y con las cuales podemos trabajar.

Por ejemplo, de la clase “VideoCamara” podemos tener las instancias “VC1”, “VC2”,”VC3”, etc., así tantas como cámaras de seguridad tengamos implementadas en nuestro entorno de seguridad. Con estas instancias es con las que trabajamos en nuestro programa principal, pero con el objeto o con la clase nunca.

La clase o plantilla no ocupa espacio en memoria, mientras que la instancia sí (dado que almacena datos).

Siempre que trabajemos con POO esta se sustenta en cuatro pilares fundamentales, que son:

  1. Encapsulamiento: no necesitamos saber el mecanismo de funcionamiento interno de un objeto; simplemente usamos al objeto (separación de la interfaz de una clase de su implementación).
  2. Herencia: podemos crear nuevos objetos a partir de objetos existentes, de forma que heredan las propiedades de sus “padres”.
  3. Sobrecarga: es la posibilidad de crear funciones o métodos que compartan el mismo nombre, no teniendo nada que ver la tarea de unos con la de los otros. Por ejemplo, imagine un vehículo híbrido, a la hora de usar la función arrancar. ¿Lo hacemos de forma normal o usamos la batería? Sin entrar en detalles, tendremos 2 funciones arrancar y, dependiendo del estado del vehículo, usaremos una u otra.
  4. Polimorfismo: su definición es “cualidad de lo que tiene o puede tener distintas formas”. Sobre todo de cara a la herencia, hemos dicho que heredamos los objetos hijos del padre. También podemos hacer que las funciones o métodos que heredan se sobrecarguen para hacer lo mismo pero de otra forma distinta.

En la siguiente imagen, puede ver de forma más clara y concisa cómo quedaría una herencia entre clases:

image

Ahora vamos a ponernos en un ejemplo real. Nosotros implementamos la clase u objeto “Vehículo” y, por necesidades, nos creamos dos nuevos objetos que heredan de esta clase: “Taxi” y “Autobús”.

image

image

Actividades

7. Intentar encontrar una serie de atributos y funciones o métodos para trabajar con el objeto Números Complejos.

8. Hacer lo mismo, localizar atributos y funciones, para el objeto Vagón de Tren.

6. Ejemplo de códigos en diferentes lenguajes

A continuación, vamos a ver códigos correspondientes a lenguajes de programación estructurado, a lenguaje de script y orientado a objetos. No se trata de que los comprendamos de primera hora, dado que sería imposible; pero sí de que nos vayamos familiarizando con códigos y programación.

6.1. Códigos en lenguajes estructurales

En la siguiente imagen puede observar un código implementado en Visual Basic.

En este ejemplo, podemos ver cómo se declaran las variables ‘d,e,g,h,i,j,k’, de tipo real, y la variable offm, de tipo entero. A continuación, se pasa a mirar el valor de una determinada celda y, en función a su valor, se hace un pivote de filas sobre la matriz que se está tratando.

Además, podemos ver cómo se usan estructuras típicas del mundo de la programación, como son:

  1. Estructuras IF (si): con estas podemos tomar bifurcaciones en nuestros programas para coger un camino u otro en función de ciertos datos.
  2. Estructuras For (para): con estas vamos a poder iterar (repetir) un conjunto de instrucciones un número determinado de veces.

image

Ejemplo de código estructurado

6.2. Códigos en lenguajes de scripts

En la siguiente imagen podemos observar un código correspondiente a una página web.

Podemos observar cómo la primera parte es un lenguaje de marcas hasta encontrar las etiquetas <scritp> y </script>, que nos indican precisamente que hay un script y que está codificado en JavaScript. Dicho script implementa dos funciones llamadas “OpenComments” y “OpenTrackBack”. Estas dos funciones lo que hacen es abrir una nueva ventana del navegador.

Normalmente, todo este código es proporcionado cuando estamos navegando con el navegador de Internet (código que es una mezcla del lenguaje de marcas o HTML y del lenguaje de guion o script), por ejemplo con el navegador de Internet Explorer escribimos una dirección web y esperamos a que se cargue por completo. Pasamos por el Menú Ver y, dentro de este menú, seleccionamos la opción Ver Origen (la abreviación de teclas [Ctr] + [U] nos lleva de una forma más rápida). Esta opción está disponible en todos los navegadores.

image

Ejemplo de código en script

6.3. Códigos en lenguajes orientados a objetos

En la imagen de la página siguiente podemos observar un código implementado en Java.

En él, podemos observar cómo se crea el objeto o la clase Persona. Esta clase consta de los atributos: nombre, apellidos, año de nacimiento, que son de tipo privado para que precisamente sea solo la clase Persona la que pueda acceder y operar con ellos.

A continuación, se define una función (también denominadas métodos) llamada imprime, que lo que hace es sacar por pantalla el nombre, apellidos y año de nacimiento de la persona. Además, la función imprime está definida como pública para poder llamarla, por ejemplo, desde otra clase distinta.

image

Ejemplo de código orientado a objetos

7. Resumen

Entendemos por programación el proceso de diseño, codificación, depuración y mantenimiento del código fuente. Dicho código lo pasaremos a un lenguaje de programación para obtener el fichero ejecutable. Entre ambos procesos utilizamos dos herramientas fundamentales para el diseño de nuestro código fuente, que son:

  1. Ordinograma: representación gráfica de la secuencia de instrucciones que componen un programa (algoritmo).
  2. Pseudocódigo: también conocido como falso código, es la forma de representar mediante texto un algoritmo. El pseudocódigo utiliza elementos del lenguaje natural y elementos que corresponden con los lenguajes de programación.

Junto con los ordinogramas y pseudocódigos, usamos la lógica de programación (que nos va a permitir dar solución a problemas mediante el uso de ordenadores). Dentro de esta lógica de programación, contamos con las siguientes operaciones:

  1. AND.
  2. OR.
  3. NOT.
  4. NAND.
  5. XOR.
  6. XNOR.
  7. XNAND.

Además de operaciones lógicas, disponemos también de los objetos (entidades de nuestro mundo real que codificamos en nuestros ordenadores para poder trabajar mejor con los datos). Los objetos implican un uso de P.O.O. (Programación Orientada a Objetos) y esta a su vez lleva asociados 4 pilares básicos, que son:

  1. Encapsulamiento.
  2. Herencia.
  3. Sobrecarga.
  4. Polimorfismo.

Image

Ejercicios de repaso y autoevaluación

1. De las siguientes frases, indique cuál es verdadera o falsa.

  1. Entendemos por programación el proceso de diseño, codificación, depuración y mantenimiento del código fuente.
    1. Verdadero
    2. Falso
  2. Para desarrollar programas y que puedan ser reconocidos por un ordenador, usamos la lógica de programación.
    1. Verdadero
    2. Falso
  3. Algoritmo es una secuencia infinita y no ordenada de instrucciones.
    1. Verdadero
    2. Falso

2. Busque en la siguiente sopa de letras las operaciones lógicas.

image

3. La lógica de programación...

  1. ... nos permite representar gráficamente diagramas de flujo.
  2. ... nos permite codificar los pseudocódigos en un lenguaje de programación.
  3. ... nos permite dar solución a problemas mediante el uso de ordenadores.
  4. ... nos permite distinguir lo verdadero de lo falso.

4. ¿Cuál es el proceso que seguimos a la hora de resolver un problema?

5. Entendemos por ordinograma...

  1. ... un conjunto de secuencias de instrucciones no ordenadas que actúan sobre unos datos de entrada procesándolos para obtener unos datos de salida.
  2. ... la representación gráfica de la secuencia de instrucciones que componen un programa.
  3. ... una secuencia finita y ordenada de instrucciones codificadas en un lenguaje de programación.
  4. ... la codificación del pseudocódigo en lenguaje de bajo nivel.

6. Un programa se divide en...

  1. ... una parte fundamental: su código.
  2. ... dos partes fundamentales: declaraciones e instrucciones.
  3. ... tres partes fundamentales: declaraciones, instrucciones y memoria.
  4. ... cuatro partes fundamentales: declaraciones, instrucciones, memoria y estado del ordenador.

7. El pseudocódigo se compone de...

  1. ... cabecera, declaraciones y cuerpo.
  2. ... cabecera y cuerpo.
  3. ... cabecera y declaraciones.
  4. ... declaraciones y cuerpo.

8. ¿Cuáles son las reglas para operar con ordinogramas? Cítelas.

9. Los tipos de datos numéricos se subdividen en...

  1. ... enteros y caracteres.
  2. ... reales y lógicos.
  3. ... lógicos y caracteres.
  4. ... enteros y reales.

10. Por variable entendemos...

  1. ... aquel dato que varía de valor durante la ejecución del programa.
  2. ... el nombre que reciben las variables y constantes para poder referenciarlas en nuestros programas.
  3. ... aquel dato que nunca varía su valor durante la ejecución del programa.
  4. ... el comportamiento que lleva asociado un objeto.

11. Un objeto es:

  1. Una entidad de un mundo no real.
  2. Una entidad de la memoria del ordenador.
  3. Una entidad gráfica.
  4. Una entidad de nuestro mundo real.

12. ¿Cuáles son los cuatro pilares fundamentales de la Programación Orientada a Objetos?

13. Los objetos se componen de...

  1. ... código fuente.
  2. ... datos y funciones.
  3. ... código fuente y ordinogramas.
  4. ... datos y pseudocódigo.

14. Imagine el objeto Libro e intente citar cuatro atributos que considere importantes en él.

  1. ____________________
  2. ____________________
  3. ____________________
  4. ____________________

15. Realice la tabla de verdad para image