POR MEDIO DE LA PRESENTES DE OEIQO EEEJ

Anuncio
Curso “Procesamiento digital de imágenes”
Enfocado a: 6to. Semestre.
Tema 1: Introducción a C#.
Objetivos:
 Dar a conocer al alumno el lenguaje de programación C# enfocado a modo visual.
Conceptos clave:
C#: Lenguaje de programación diseñado por Microsoft en 2001 como parte de su plataforma
.NET. Combina el lenguaje de bajo nivel de C y la velocidad de la programación de alto nivel de
Visual Basic.
Interfaz: El medio de comunicación entre el usuario y el sistema o dispositivo.
Modo texto: Es una interfaz que carece de objetos (botones, cajas de dialogo, barras, etc.) la
comunicación con el usuario se realiza mediante caracteres en pantalla.
Modo gráfico: Es una interfaz que utiliza ventanas y objetos para la comunicación con el
usuario, estas interfaces son llamadas comúnmente formularios.
Librería: Es un archivo el cual contiene funciones definidas para ser utilizadas por el lenguaje,
una función o estructura no puede ser utilizada si su librería no está definida.
Variables: Son estructuras de datos que, como su nombre indica, pueden cambiar de contenido a
lo largo de la ejecución de un programa.
Desarrollo:
Definición de librerías.
Definición y tipo de variables.
Utilización de formas:
 Botones.
 Cajas de texto.
 PictureBox.
 Labels, etc.
 Etc.
Función: una función es un tipo subalgoritmo, es el término para describir una secuencia de
órdenes que hacen una tarea específica de una aplicación más grande.
Práctica 1: Utilización de botones, labels y textboxes.
Desarrollar una aplicación en C# la cual se muestre como el ejemplo a continuación.
Ejercicios:
a) El botón apellido al momento de ser presionado debe de poner el texto que se encuentre
en el textbox en el label respectivo para el apellido.
b) El botón Nombre al momento de ser presionado debe de poner el texto que se encuentre
en el textbox en el label respectivo al nombre.
Tema 2: Tipos de datos.
Los tipos de datos se componen en c# en 3 tipos diferentes cada uno con subtipos según la
dimensión o espacio en memoria reservado para cada uno de ellos, estos 3 tipos son:
Variables para números enteros
Son variables que comprenden números sin punto flotante, conocidos como decimales, la
siguiente tabla muestra la definición y longitud de cada uno según el tipo, el alias o la librería
utilizada para su implementación y los valores permitidos para cada tipo.
En la explicación de la tabla anterior la definición de una variable de tipo sbyte solo permite que
esta variable contenga un valor contenido entre -128 y 127, a su vez como una variable de tipo
byte solo puede tomar valores entre 0 y 255.
La definición de estas variables es:
byte pixel, rojo, verde, azul;
int edad, num;
int resultado;
long edo_cuenta;
short[] monedero;
etc.
Variables para números decimales o flotantes
Son variables que comprenden números con coma flotante o (como es lo mismo) números
decimales, los tipos de datos especificados para coma flotante se muestran a continuación.
La tabla anterior muestra el tipo de dato, el alias o librería utilizada, el mínimo y máximo de
bytes utilizados para memoria, el exponente máximo y mínimo y por último el valor mínimo y
máximo utilizado para cada una de las variables.
Variables de tipo carácter
Son variables que almacenan caracteres y no datos utilizados como valores numéricos, es decir,
letras (a,b,c,…), símbolos(-,!,*,…) o caracteres (@,#,$,…) a su vez estas variables pueden
almacenar números, pero estos no serán tomados para realizar operaciones algebraicas,
aritméticas o trigonométricas. Dicho de otra forma, no se puede realizar operaciones como suma,
resta, multiplicación, división, exponenciación, etc. Con este tipo de variables.
La siguiente tabla muestra los tipos de datos de tipo caracter y sus dimensiones.
Variables de tipo char
Son variables que almacenan caracteres de una dimensión especificada, la dimensión es
especificada por el usuario a la hora de su definición, por ejemplo:
char nombre;
 Almacena en la variable nombre solo un carácter, esto es que si le es
ingresado el texto “Juan” a la variable solo será asignada la letra J.
char[] nombre = new char[20];
 Almacena en la variable nombre hasta 20 caracteres de una
cadena de texto, en dado caso de ingresar una cadena
con una longitud inferior los demás valores serán asignados
a nulo.
Varibales de tipo bool
Las variables de tipo bool son variables de tipo booleano, esto es, que solo pueden contener un
valor verdadero en este caso “true” o un valor falso… “false”, estas variables en general son
utilizadas como banderas o valores que nos indican el resultado de una prueba lógica.
Variables de tipo string
Las variables de tipo string almacenan (al igual que las variables de tipo char) una secuencia de
caracteres, pero estas no requieren la especificación de una longitud, por ejemplo:
String nombre;  Esta variable puede contener un nombre como “J” o “Juan Martin Romo”, la
longitud de caracteres para esta variable es indefinida.
Práctica 2: Utilización de variables.
Elaborar un programa que permita ingresar Nombre, edad, sexo, teléfono, código postal y
muestre en un textbox la información ingresada por el usuario en forma de resumen.
Es importante crear cada variable según la dimensión, en el caso de edad, lo más conveniente
sería definir la variable como sbyte.
sbyte edad;
Tema 3: Operadores matemáticos.
En programación, existen 5 tipos de operadores matemáticos simples, pero, dos de ellos pueden
ser usados para incrementación o decrementación de una misma variable, la siguiente tabla
muestra dichos operadores matemáticos simples:
La categoría binaria muestra que la operación debe ser realizada entre dos variables, en el caso
de la multiplicación esto indica que en la variable 1 se asigna el resultado de la multiplicación
entre la variable 2 y la variable 3.
Dos casos muy particulares de estos operadores matemáticos simples son la suma y la resta ya
que pertenecen a dos categorías, la primera como ya se mencionó, es binaria lo cual indica que se
realiza entre dos variables; La segunda categoría es unitaria, esto indica que la operación puede
ser realizada con una sola variable, para especificar esto daremos un ejemplo:
Para el caso var1=+var2, dicha operación indica que la variable var1 toma el valor positivo de la
variable var2, en el caso var1 = -var2, la variable var1 toma el valor de la variable var2
multiplicada por -1, esto es que si var2 originalmente tenía el valor de 5, la variable var1 tomará
el valor de -5.
Otro tipo de operadores existentes son los operadores compuestos, estos operadores se muestran
en la siguiente tabla:
Estos operadores incrementan o decrementan en valor de una variable, todos ellos son unitarios,
esto es que se efectúan únicamente en el trabajo con una variable.
El primer ejemplo var1= ++var2; suponiendo que var1=5 y var2=10, var1 toma como nuevo
valor 11; esto es que el operador ++ incrementa en uno el valor de var2 el cual vale 10, en ese
momento se realiza la asignación dándole como nuevo valor el 11 a la variable var2. Este mismo
resultado sería obtenido con el operador --, pero, en este caso decrementando en uno el valor de
la segunda variable.
En el segundo caso var1 = var2++; la variable var1 tomaría el valor de 10, pero la variable var2
se incrementaría a 11 tal como en el ejemplo anterior. Esto se debe a que cuando se realiza la
asignación la variable dos no ha sido incrementada, esto es porque el operador se encuentra a la
derecha de la variable y no a la izquierda como en el caso anterior.
Operadores de asignación
Los operadores de asignación son utilizados para asignarle un dato a una variable e incluso para
agregar un valor especificado a una variable, estos tipos de operadores son unitarios, esto es, que
pueden ser utilizados con una sola variable.
La siguiente tabla muestra los tipos de operadores de asignación:
En el primer caso, el valor de la variable var2 es tomado por la variable var1; Para el segundo
caso la instrucción es diferente. Supongamos que tenemos una variable a con un valor de 7 y una
variable b con un valor de 10, al realizar la siguiente asignación:
a+=b;
La variable a que originalmente tenía un valor de 7 ahora toma el valor de 17, esto es porque la
variable a agrega a su valor lo que tiene la variable b, dicha operación obtiene el mismo
resultado que:
a = a+b;
lo cual sería a=7+10.
Esta operación se aplica para los casos siguientes cada uno efectuando su operación pertinente.
Tema 4: Control de flujo
Todos los códigos en C# tienten algo muy particular en común. En cada caso el programa
de ejecución comienza a ejecutar las instrucciones desde el inicio del programa hasta el
fondo línea por línea sin perder ninguna.
Si todas las aplicaciones trabajaran así, entonces se estaría muy limitado en que se puede
realizar con un programa. En este tema se habla acerca de dos métodos para controlar un
control de flujo de un programa, esto es, el orden de ejecución de las líneas de código en
C#:
Branching1.- Ejecuta código condicional, dependiendo del resultado de una evaluación,
como es “solo se ejecuta este código si la variable var1 es menor que 10”.
Looping2.- Repetidamente ejecuta las mismas instrucciones hasta que una condición se
cumpla.
Ambas instrucciones incluyen la lógica booleana, como lo vimos anteriormente una
variable booleana es aquella que toma valores “true” o “false”, a su vez, una condición
devuelve un valor booleano.
Las comparaciones booleanas requieren el uso de operadores booleanos de comparación, esto,
aunque se escuche complejo, es simplemente la evaluación de similitud, diferenciación, valor
superior, valor inferior, etc. Cada uno de estos operadores se muestran en la siguiente tabla. En
todos los casos, la variable var1 es una variable de tipo booleano, y las variables var2 y var3
pueden ser cualquier tipo de variable, ya sea int, string, char, float, etc. Pero estas deben ser
ambas del mismo tipo.
Simplificando lo anterior, la variable var1 guardará verdadero o falso según lo que de cómo
resultado la evaluación.
1
Separar cierto grupo de instrucciones del código del programa para ser ejecutadas solo si es requerido.
2
Agrupar un conjunto de instrucciones que se ejecutan hasta que una condición es o no es cumplida.
El operador == sirve para verificar si una variable es igual a otra o si una variable es igual a un
valor, en el caso:
Nombre == “Juanito”
Se pregunta si el valor que tiene en ese momento la variable Nombre es en este caso Juanito. Si
vemos en ejemplo de la tabla si la variable var2 es igual a lo que tiene la variable var3 entonces
la variable var1 (que es de tipo booleana) guarda como valor “true” si no es así guarda como
valor “false”.
El operador != es llamado “diferente” el cual verifica si una variable es diferente a otra o a un
valor especificado.
En el caso de los operadores > (mayor que) o < (menor que) como ya es conocido, evalúan si una
variable es mayor o menor a otra o a un valor especificado.
Los operadores >= (mayor igual) y <= (menor igual) efectúan el mismo proceso que el mayor y
menos que, solo que estos agregan a su rango que el valor sea igual a la variable que se está
utilizando.
Tema 5: Matrices.
En programación, un vector, matriz, array, arreglo o alineación es un conjunto o agrupación de
variables del mismo tipo cuyo acceso se realiza por índices, esto es, que una variable puede
contener múltiples valores.
Una variable al ser definida como int var1; contiene un único valor, pero esto puede cambiar si
dicha variable es definida como matriz, esto es, que dicha variable como ya se mencionó tiene la
facultad de guardar múltiples valores. Podemos definir una variable como:
int [ ] var1 = new int [10];
Esto haría que la variable var1 pudiera contener múltiples valores, en este caso 10 ya que fue el
número dado. Para ayudar a la comprensión de esto, veamos la variable var uno como un
conjunto de espacios creados para guardar datos.
Como vemos en la figura anterior, nuestra variable var1 contiene 10 espacios disponibles para
almacenar sus datos, comenzando desde la posición 0 hasta la posición 9, lo que nos da los 10
valores disponibles.
Como habíamos visto ya anteriormente para asignarle un valor a una variable se utilizaban los
operadores de asignación, por ejemplo, si queremos asignarle un valor a la variable a definida
como entero hacemos lo siguiente:
a = 5;
pero para agregar un valor a una matriz es necesario especificarle la posición de donde queremos
almacenar un valor dado, por ejemplo:
var1[0] = 3;
var1[1]=10;
con esto traduciendo la instrucción a nuestro lenguaje sería “el valor de la variable var1 en la
posición 0 es 3”, “el valor de la variable var1 en la posición 1 es 10”; De esta forma asignamos
valor a una matriz en determinada posición.
Pero el trabajo con matrices no termina aquí, una matriz puede tener varias dimensiones, una
dimensión es la cantidad de ejes disponibles para ingresar datos, en el caso de la matriz que
hemos definido esta matriz es unidimensional ya que solo cuenta con 1 línea definida para datos.
Para clarificar esto, crearemos una matriz bidimensional o de dos dimensiones y asignaremos
valores los cuales representaremos con colores.
String [,] matriz = new matriz[10,10];
con esta definición hemos creado a la variable matriz con 2 dimensiones, de 10 valores cada una.
Gráficamente esto sería lo siguiente:
Ahora, agregaremos a la matriz algunos valores, los cuales serán nombres de colores, para que
con ello, sea fácil identificar en qué posición está siendo guardado cada uno de los valores.
matriz[0,0] = “negro”;
matriz[0,1] = “azul”;
matriz[0,2] = “rojo”;
como vemos, el valor derecho de la matriz hace que los campos vayan llenándose a la derecha,
por lo cual diremos que “barre” la matriz hacia la derecha.
Como puede suponerse el primer valor de la dimensión de la matriz hará que esta matriz se barra
hacia la izquierda, ahora, cambiaremos los valores de la matriz modificando únicamente los
valores de la izquierda para asignar los colores.
matriz[1,0] = “amarillo”;
matriz[2,0] = “verde”;
matriz[3,0] = “morado”;
Esto de asignación de valores a una matriz bidimensional nos puede recordar al juego de batalla
naval o conocido de otra forma como submarinos, en donde se da una coordenada en el mapa
para intentar mediante cañonazos hundir los barcos de nuestro enemigo. Existen también
matrices de 3 o más dimensiones las cuales siguen dicha dinámica, pero estas no son contenido
de esta asignatura.
Tema 6: Estructura if.
La estructura if es una forma versátil y bastamente aplicable para tomar decisiones dentro de un
programa. Esta estructura recibe un parámetro, la cual se define como la condición, de esta
condición depende la ejecución de un fragmento de código.
El uso más simple de una estructura if es el siguiente, donde <la prueba> es evaluada, está
compara valores de cualquier tipo pero regresa un valor booleano, como se vio anteriormente,
“true” o “false”.
Para comprender lo anterior, realizaremos el siguiente ejemplo:
Si en español nosotros decimos “Si hay nubes negras entonces llueve”… en este enunciado
nuestra condición es que haya nubes negras, y si hay nubes negras entonces lloverá; Esta
condición sería expresada en nuestro programa como:
If( hay nubes negras)
{
Llueve
}
En el fragmento de código anterior, nuestra condición está claramente expresada en el if ,
donde al ser leído lo traducimos como “si hay nubes negras”; Al ser una estrucutra, If
utiliza llaves, las cuales contienen el fragmento de código a realizar dependiendo si la
condición se cumple o no, en este ejemplo la condición que se cumple “si hay nubes
negras” es que llueva, por lo cual dicha acción se encuentra contenida dentro de las llaves
del if.
A su vez If contiene una contraparte para la condición, esto es, que sucede si una condición
no se cumple y es necesario especificar la acción a realizar cuando esto suceda, para esto es
necesario la utilización de else, así como el If, else también utiliza llaves, pero este no
recibe ningún argumento ya que depende de la condición especificada con el if. Tomando
el caso anterior agregaremos un caso contrario para su comprensión:
If (hay nubes negras)
{
Llueve
}
Else
{
Voy al parque a jugar
}
Según el ejemplo anterior nuestra condición es “si hay nubes negras”, si esta condición se
cumple entonces lloverá, pero si esta condición no se cumple, esto es, que no haya nubes
negras, entonces iré al parque a jugar debido a que no lloverá.
Como es claro, en ningún momento nosotros utilizaremos en nuestro programa una sintaxis
como en los ejemplos anteriores, para utilizar correctamente la estructura If, es necesario la
implementación de variables.
Para dar un ejemplo de ello, supongamos que existe una variable de tipo String la cual
guarda algún mes del año, esta variable por obvias razones la llamaremos “mes”, entonces:
If (mes == “Enero”)
{
Textbox1.Text = “Feliz Navidad!!”;
}
Else
{
Textbox1.Text = “No hay avisos el día de hoy”;
}
En el ejemplo anterior, nuestra condición se expresa como “Si el mes es enero”, si esto se
cumple, el textbox1 de nuestro programa mostrará el mensaje “Feliz Navidad!!”, si esta
condición no se cumple, esto es que el mes sea cualquiera diferente de enero, el textbox1
mostrará el mensaje “No hay avisos el día de hoy”.
Tema 7: Estructura For.
La estructura for, es una estructura que contiene un fragmento de código, el cuál va a ser
realizado un cierto número de veces, esta estructura puede ser entendida como un ciclo.
For debido a que es una estructura, utiliza llaves, las cuales contienen el fragmento de código a
realizar y este recibe 3 argumentos separados por punto y coma:
For(argumento1; argumento2; argumento3)
{
Código a realizar
}
El primer argumento recibido especifica un “contador”, en específico, el valor en el cual inicia
este, dicho contador es quien llevará el número de veces que se ha llevado a cabo el ciclo.
El segundo argumento especifica una “condición de paro”, esto es, aquella condición que va a
llevar a la ruptura del ciclo o a hacer que el ciclo termine.
El tercer argumento especifica la acción a realizar cada vez que el ciclo se realice, en la mayoría
de las veces, este argumento incrementa al contador.
Para comprender lo anterior, veamos el siguiente ejemplo:
For (int veces=1;veces<=10;veces++)
{
Textbox1.text += “ “ + Convert.ToString(veces);
}
El ejemplo anterior, realiza la acción 10 veces, ya que comienza en 1 y se realizará el ciclo
siempre y cuando, nuestro contador llamado veces, no sea mayor a 10.
Este código va agregando al Textbox1 la cuenta del contador, lo que nos daría como resultado
final:
Descargar