sábado, 12 de agosto de 2017

Curso de C#: control de flujo, saltos y rupturas

Instrucciones de salto


Las instrucciones de salto permiten modificar el flujo del programa, forzando la siguiente iteración de un bucle antes de tiempo, o la salida del mismo o bien enviando la ejecución a un punto determinado del programa.

La instrucción Break


La instrucción break fuerza la salida de un bucle antes de tiempo o bien de una estructura de control de flujo condicional en la que se encuentre. Un ejemplo sencillo: 

    class InstruccionBreak
    {
        static void Main()
        {
            int num=0;

            while (true)
            {
                Console.WriteLine(num);
                num+=5;
                if (num>100) break;
            }

            string a=Console.ReadLine();
        }
    }

Curso de C#: control de flujo, saltos y rupturas

sábado, 5 de agosto de 2017

Curso de Photoshop: Saturación parcial de una foto

Dejar una foto en blanco y negro excepto una parte

En este tutorial de Photoshop vamos a dejar toda la fotografía en blanco y negro, excepto una selección que elijamos que quedará en color. Conviene que la parte que queda en color tenga colores que resaltan, dando un mayor contraste a la fotografía final.

Photoshop. Saturación parcial de una foto
Puedes descargar fotos como esta aquí


Para comenzar vamos a tomar la herramienta  selección rápida.

Selección rápida photoshop


Con ella seleccionamos la parte que deseamos mantener en color. Para seleccionar vamos arrastrando la herramienta por el objeto. En este caso el coche rojo.  Una vez hemos hecho una selección tosca, podemos añadir o eliminar de nuestra selección las partes que nos falten o nos sobren. Para ello utilizamos de la barra de opciones de arriba (que pertenece a la herramienta Selección rápida) el pincel con el símbolo + para añadir a nuestra selección o el pincel con el símbolo resta – para eliminar de nuestra selección.

Añadir o restar de la selección

Para hacerlo bien, aumentamos la imagen con la herramienta Zoom. 

Herramienta zoom photoshop

A medida que necesitamos afinar más la selección, vamos disminuyendo el tamaño del pincel de selección.

Tamaño pincel photoshop


Una vez hecha nuestra selección, para dejar sólo en color el coche, elegimos del menú, Selección -> invertir.

Invertir selección photoshop

Hecho esto, vamos a la paleta de capas situada normalmente a la derecha.

paleta capas photoshop


Al pulsar sobre la paleta, se expande mostrando las diferentes capas (en nuestro caso sólo el fondo) y sus opciones.

paleta capas photoshop


Pulsamos el botón que representa un círculo blanco y negro (menú capas de ajuste) y despliega un menú, del cual  elegimos la opción tono/saturación.

opción tono/saturacíon del menú capas de ajuste photoshop



Ahora, tenemos un panel en el que podemos bajar la saturación al mínimo y ver que actúa sobre toda la foto, excepto sobre el coche seleccionado. Con esto ya tenemos una imagen como la de la portada.

dejar una zona en color y otra en blanco y negro con photoshop

Otra forma de hacer lo mismo con capas y máscaras

Se puede llegar a un resultado similar de forma diferente. En este caso, antes de seleccionar nada, vamos a la carpeta capas y sobre capas de ajuste, elegimos tono/saturación y lo ponemos todo en blanco y negro.


Capas de ajuste en el panel capas de Photoshop

crear capa tono/saturación con Photoshop


crear nueva capa tono/saturación con Photoshop


Ahora con la imagen en blanco y negro, vemos que en la paleta de paleta capas, se ha creado una nueva capa de ajustes encima de la capa fondo. Con la herramienta selector de color, elegimos un color negro y otro blanco (para hacer que la saturación/desaturación sea completa)

colores para máscara de capas con Photoshop

Nota. Si por algún motivo deseamos eliminar una capa. Basta con elegirla y arrastrarla y soltarla sobre el icono del cubo de la basura que hay debajo de la paleta capas en la derecha. Si en vez de eliminarla, queremos colocarla encima o debajo de otra capa, basta con arrastrarla y soltar la debajo o encima de la capa deseada).

Hecho esto, con el color negro por encima del blanco (para cambiarlos pulsar en las flechas) .

Herramienta color frente/fondo Photoshop


Elegimos la herramienta pincel y vamos pintando sobre la imagen.

Herramienta pincel Photoshop

Esto nos crea una máscara que va mostrando de nuevo el color de la capa fondo (con negro sobre blanco en la herramienta color frontal)

Pintar con una máscara de Photoshop

u ocultándolo si ponemos blanco sobre negro.

Herramienta color frontal Photoshop


Ocultar color con una máscara de Photoshop


Esto funciona porque hemos creado una máscara que permite ver u ocultar la capa fondo que es la que está en color, mientras que en la parte superior hemos colocado una capa en blanco y negro. El pincel nos permite crear o eliminar la máscara. 

Estas técnicas dan mucho juego en fotografía creativa, por ejemplo, podríamos haber elegido los muñecos en vez del coche, con este resultado:

Fotografía creativa con Photoshop




sábado, 29 de julio de 2017

Curso de C#: control de flujo, estructuras iterativas

Bucles For 


Los bucles for van asignando valores a una variable desde un valor inicial hasta un valor final, y cuando la variable contiene un valor que está fuera del intervalo el bucle termina.

for (var=inicial;condición;siguientevalor)
{
    Instrucciones
}

CURSO DE C#: control de flujo, estructuras iterativas

sábado, 15 de julio de 2017

Listas simplemente enlazadas (Linked List)

Concepto de lista enlazada


Una lista simplemente enlazada pertenece a las estructuras de datos fundamentales. Suele utilizarse para implementar otras estructuras de datos. 
Está estructurada en una secuencia de nodos, en los que se guardan los datos  y un puntero que apunta (contiene la dirección de la ubicación) al siguiente nodo. 
La principal utilidad de la lista enlazada es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento físico en memoria. De este modo se permite que el orden de lectura de la lista sea diferente al orden de almacenamiento físico. Al contrario de un array, el acceso a cada elemento no se hace a través de un índice sino mediante un puntero. Otra diferencia con los arrays es que estos pueden ser accedidos de forma aleatoria mientras que la lista se recorre de forma ordenada.
La lista también permite añadir o eliminar nodos en cualquier lugar aunque no permite un acceso aleatorio. Cuando es necesario hacer varias operaciones de inserción y eliminación de elementos en un conjunto resulta conveniente utilizar listas enlazadas. El puntero del último nodo contiene un valor vacío Null.

Listas simplemente enlazadas

sábado, 8 de julio de 2017

Acciones sobre muchos archivos en Photoshop

En Photoshop se pueden crear procesos por lotes para actuar en un sólo paso sobre muchas imágenes sin tener que hacerlo una a una. 

Se pueden automatizar muchas funciones. Para ello, primero es necesario crear una Acción (lo que se desea hacer con cada imagen) y luego procesar los archivos por lotes (para ejecutar esa misma acción con todas las imágenes de una carpeta).

Acciones sobre muchos archivos en Photoshop
Puedes descargar esta foto aquí

sábado, 1 de julio de 2017

Curso de C#: Control de flujo, estructuras condicionales


Instrucción IF...ELSE IF...ELSE


Si esta condición se evalúa a true (verdadero) se ejecutan las líneas del bloque, y si se evalúa a false (falso) no se ejecutan. en C#:

if (num==10)
{
    Console.WriteLine("El número es igual a 10");
}

En este pequeño ejemplo, se evalúa como verdadero o falso lo que está dentro de los paréntesis, es decir, num==10. Por lo tanto, el operador == retornará true siempre que num valga 10, y false si vale otra cosa. No confundir el operador de comparación == con el de asignación =. 

La instrucción if ejecuta el código de su bloque siempre que la expresión que se evalúa retorne true. Sin embargo, no es necesario abrir el bloque en el caso de que solamente haya que ejecutar una sentencia. Así, podríamos haber escrito el ejemplo de esta otra forma:

if (num==10)
    Console.WriteLine("El número es igual a 10");

O bien:

if (num==10) Console.WriteLine("El número es igual a 10");

Curso de C#: Control de flujo, estructuras condicionales