lunes, 20 de septiembre de 2010

Introducción a las Ciencias de La Computación 20/Septimbre/2010

Por motivos de horarios de parciales de ciencias basicas -matematicas, fisicas, etc- el parcial de introducción reprogramamos para el dia 27 de Septiembre en el horario de clases, a provechen este tiempo para asesorias.

Mi horario de asesorias es el lunes de 10 AM - 12MD y el miercoles de 4PM - 6PM, y siempre y cuando tenga disponibilidad de tiempo en cualquier otro horario, me encuentran en CICOM o en la oficina de Sistemas.

Suerte.

Introducción a las Ciencias de La Computación 20/Septimbre/2010

El parcial de introducción a las ciencias de la computación, esta programado para el dia 22 de Septiembre, en el horario de clases.

El contenido del parcial abarca lo visto hasta el momento. Para asesorias antes del parcial me encuentran regularmente en el laboratorio CICOM.

Suerte.

viernes, 17 de septiembre de 2010

Logica para Computación

Introducción a las Ciencias de la Computación 17 de septiembre del 2010

Logica Matematicas, logica prposicional

Hasta el dia de hoy, nos hemos centrado en analizar, que es la logica proposicional, por que es importante, en donde podemos aplicarla. Deciamos que la logica es quizas el mejor de los lenguajes, el mas eficiente dada la capacidad de expresividad y la claridad que maneja -es decir, no es ambigua-. Una de las cualidades de la logica es su capacidad de transcender mundos, en otras palabras, la logica plantea la existenacia de mundos paralelos en los cuales algunas prposiciones son verdaderas y otras no con respecto a otros mundos, quizas, esto sea una de las grandes fortalezas, dado que se plantea una pluraridad de mundos sobre los cuales se realizan simulaciones de distintas soluciones a un problema.

Halamos acerca de que es una proposición, y su relación con los conceptos de variable e instancia, y como se establecen estructuras o ecuaciones logicas
sobre las es posible validar distintos escenarios, los cuales son determinados por los valores de verdad de las proposiciones. Hablamos acerca de que es una proposición simple o atomica y una compuesta y como los conectivos logicos permiten la articulación entre las proposiciones. De los conevtivos hablamos de la conjunción, la disyunción, la negación, el condicional y el bicondicional, analizabamos como las estructuras relacionadas con estos operadores logicos podian redefinir una formula buscando la manera de reducirla por medio de apalicación de algunas propiedades.

En vista del uso de los operadores logicos para elaborar estructuras logicas, encontrabamos algunos conceptos interesantes que se realizan sobre las formulas, como la reciprocra, contra reciprocra de una formula.

otro concepto importante, y sobre el cual les dejo la inquietud de estudio
es la fortaleza de encontrar estructuras tautologicas y contradicciones.


Nos vemos el lunes, y exitos.

Ejercicios de Programación II

Programación II, repaso. 18 de Septiembre de 2010


A modo de repaso, les dejo los siguientes ejercicios sobre vectores para repasar antes del parcial, en el dia de mañana sabado por motivos de viaje fuera del pais no estaré con ustedes, sin embargo el monitor de la sala los va a asesorar acerca de la clase del dia de mañana.

Les recalco, la importancia que tiene dominar los conceptos y desarrollar la logica necesaria para poder abordar un problema, esto a traves de la ejercitación y practica.


1. Dados dos vectores V1, y V2, de tamaños m y n respectivamente, tal estrictamente m es mayor que n, y dada una posicion de V2, inserte los valores de V1 en V2 a partir de la posicion dada.

2. 32-Leer un vector de enteros de n datos (n dado por teclado y 1 números primos y otro con los números perfectos.
Un número es primo si solo tiene dos divisores, 1 y él mismo, ejemplos 1,2,3,5,7,11 etc.
Un número es perfecto si la suma de sus divisores propios es igual a él mismo. Ejemplo el 6,28, etc.
Por ejemplo para un vector dado por teclado como el siguiente

2 40 25 7 40 28 17 45 6 0 4 5

los datos clasificados en el vector de primos es

2 7 17 5

y el vector de perfectos es

28 6

3.Llenar un vector A de n posiciones (n dado por teclado), para posteriormente, ordenarlo de mayor a menor en otro vector. y de menor a mayor en el mismo vector A. Utilice el método de burbuja y averigüe por otros métodos de ordenación que se podría utilizar para realizar la misma tarea.


4.36-Lea dos vectores de igual tamaño y cree un nuevo vector con los datos de los dos primeros pero intercalados. Por ejemplo si los dos vectores son:
2 40 25 7 40 28 17
3 45 23 2 25 45 72
El vector resultante es:
2 3 40 45 25 23 7 2 40 25 28 45 17 72

5. Se tiene un conjunto de n parejas de datos Xi, Yi donde cada pareja representa las coordenadas del punto i de un polígono
irregular de n lados. Suponga que las coordenadas se proporcionarán en orden adyacente. Elabore una función para leer el número
de lados del polígono, leer las coordenadas de los puntos y obtener el área del polígono irregular utilizando la siguiente fórmula:
Area = [(X0+X1)*(Y0-Y1 ) + (X1+X2)*(Y1-Y2)+. . .+ (Xn-1+X0)*(Yn-1-Y0)]/2
Suponga que los Xi ,Yi son reales y n es entero con 1 menor igual n menor igual que 50.


6.La universidad de Pamplona cuenta con equipo de Tenis de N deportistas(N es un número dado por teclado) identificados con
los códigos de los estudiantes y se desea formar el equipo de Golf con la única condición que no pueden pertenecer a este nuevo
equipo los que ya pertenecen a la otra selección. Realice las siguientes funciones:
Llenado de la información del equipo de tenis.
Aceptación y llenado del vector para el equipo de golf, para un número desconocido de estudiantes.
Imprimir el vector de los aceptados en el equipo de golf
Nota: El llenado para el equipo de golf se realizará hasta que el código del estudiante sea -1 o llegue a un cupo máximo de 20
estudiantes aceptados para el equipo.


Con estos ejercicios se logra un buen repaso acerca de vectores, el lunes estoy en Villa del Rosario, me encuentran en la oficina o en el laboratorio CICOM en el espacio de Virtualteca I.

Suerte muchachos.

miércoles, 8 de septiembre de 2010

Programaciòn II

En la clase del dìa lunes -6/sept/2010-, realizamos un repaso de lo visto anteriormente el dia sabado acerca de vectores, recalcamos la importancia de este concepto y planteamos algunos problemas para los cuales realizamos el algoritmo adecuado,


Uo de los problemas planteados se baso en, dado unn vector A, de tamaño n, y dado un vector B, de tamaño m, calcular la suma de los vectores A y B en un vector resultante C, al nalaizar el problema, nos dimos cuenta de

La necesidad de definir el tamaño del vector resultante,
Que pasaba si m > n, o n < m, o n = m para donde m y n eran nùmeros pares o numeros impares, o algunos de los dos era par y el otro impar. en base a esto planteamos tentativomente un algoritmo en pseudocodigo para la soluciòn a abordar este problema, if(m>n)
k=m;
else if(m k=n;
else
k=m;

for(i=0;i if( i < k )
S[i] = A[i]+ B[i];
else
S[i] = A[i];

}//END FOR

Ustedes que opinan, el codigo anterior es suficiente para solucionar el problema?, el codigo anterior me soluciona el problema?, el codigo funciona? falta o no falta algo?

El anterior problema, tiene como objetivo aclarar algunas cosas acerca del manejo de las posiciones de los vectores, y asegurar que no se presentara un problema por indexación.


otro de los problemas planteados en clase, era el de dado un vector encontrar su inverso, usando un enfoque diferente a los metodos de ordenamiento y buscando la forma de encontrar una solución màs eficiente -menor nùmero de operaciones-, el ejmeplo era algo asi, dado un en vector A, calcule su inverso.

por ejemplo


A = 5 3 7 9 1

Ai = 1 9 7 3 5


Ai, para nosotros es el vector inverso.

Que pasa si consideramos las observaciones del ejemplo anterior?

Que pasa si la longitud del vector A es par, impar.

...
for( i=0; i <= parte_entera(m/2);i++ ){
aux := A[i];
A[i]:= A[m-i];
A[m-i] := aux;
}
...
que opinan de este codigo?, soluciona o no soluciona? cuantas son las operaciones qyue realiza el algoritmo para un vector de tamaño m? hace falta algo?,

les sugiero realizen la prueba de escritorio del algoritmo.

Les pido esten atentos a este medio, "posiblemente" -es decir a un no es oficial-, el dia sabado no tengamos clases debido a la visita de los pares academicos.

a un no recibo todos los trabajos, el lunes el otro otro trabajo que les deje aparte del de repaso de programación I.

martes, 7 de septiembre de 2010

Programación II

Recalco lo importante que es para ustedes enviar los programas -funcionando correctamente- del trabajo que les deje con el propósito de recordar y afianzar los conceptos de programación I, a la fecha, solo he recibido dos trabajos.

En a clase del día sábado y el día lunes, iniciamos el contenido de la materia, partimos estudiando el concepto de vectores, concluimos en que un vector es una estructura compuestas por "posiciones de memoria", si analizamos un poco, nos damos cuenta que cada posición puede contener o no contener un valor -es decir, no necesariamente debe tener un valor-, ademas de esto un vector se caracteriza por tener la capacidad de almacenar en cada posición un tipo de dato especifico -previamente declarado- y una longitud. Comentábamos que un vector se declara con letras mayúsculas como A, B, C,...,etc, y estudiamos algunas cosas esenciales que indican,

como declarar un vector,
como llenar un vector,
como recorrer un vector,
como acceder a una posición de memoria de un vector,
como recuperar un valor de una posición de memoria,

con este conocimiento, decíamos que prácticamente lo que queda acerca de este tema, es creatividad para poder utilizar el potencial de este concepto.

Una vez claro esto, comentamos la importancia de poder utilizar vectores y de como este concepto ns facilita la vida.

algunos de los momentos interesantes -por que ustedes han participado- se han dispuesto cuando hemos compartido algunos algoritmos a nivel de pseudocodigo, algoritmos sencillos aplicados para el ordenamiento de datos, uno de estos algoritmos fue el del método burbuja,

para( i=0 hasta i < n ; i++ ){ para( j=0 hasta j < n ; j++ ){ if( A[i] > A[j] ){
aux := A[i];
A[i] := A[j];
A[j] := aux;
}
}
}

Aclaro, lo anterior es pseudocodigo.

viernes, 3 de septiembre de 2010

Programació II

Estamos finalizando la etapa de repaso de Programación I, En la clase anterior comentamos acerca de la importancia de las estructuras de control tales como,

If
Else

If
Else If

While -WQ-
Do - While
For

Analizabamos el comportamiento de estas estructuras, y como las estructuras repetitivas disminuyen la especificación de lineas de codigo, haciendo el codigó más legible y facil de mantener, ademas de mejorar el tamaño -en lineas de codigo- del algoritmo, lo cual es importante para dispositivos que poseen limitaciones muy marcadas de almacenamiento.

tambien, hablamos acerca de la importancia de la programación funcional, y sus diferencias con la programación secuencias -programación en bloque-, la ventaja de poder reusar codigo probado y estructurar librerias propias, además de poder mantener más facilmente un algoritmo. Concluimos en que todo esto nos ayuda un poco para obtener un mejor uso de los recursos limitados de un computador, como lo son la mamoería RAM, la capacidad de procesamiento y para dispositivos como microcontroladores la capacidad de almacenamiento.


En la proxima clase ya iniciaremos con el contenido establecido en la matería.

Les dejo este tutorial de programación en lenguaje C++, revizenlo y me cuentan.

URL:: http://mat21.etsii.upm.es/ayudainf/aprendainf/Cpp/manualcpp.pdf