viernes

Repaso Semestral

Si no pueden ver el enlace directo descarguen el archivo dando clic derecho aqui y eligiendo "Guardar destino como..."



jueves

Bienvenidos

Hola estudiantes de la materia de Lógica Computacional y Programación. Este blog ha sido diseñado para ustedes con la intensión de tener un punto de encuentro fuera del aula en el cual podrás aclarar dudas y dejar comentarios para enriquecer la clase y sacarle el mayor provecho posible a la materia.


Esperemos que durante todo el semestre lo visiten constantemente, escribiendo sus dudas y compartiendo sus comentarios acerca de la clase.


Así que, les parece si comenzamos con el primer ejercicio?


Para conservar el equilibrio de la balanza, 








Su asesor: Prof. Rolando Bros

Lógica computacional

La lógica es la capacidad de pensar en soluciones alternativas. Se remonta a la época de Aristóteles en la que desarrolló reglas para establecer un razonamiento encadenado. 
La lógica es una rama del conocimiento que nos permite determinar que algo está aprobado por la razón como bien deducido o bien pensado. En pocas palabras en la forma más obvia y más fácil de hacer algo.

La lógica es muy importante, ya que determina la manera en que se puede resolver un problema. Es un nivel de abstracción sin el cual no es posible estructurar los pasos que generen lo que esperamos obtener.

La computadora trabaja con una lógica especial, exacta y matemática. 
Aunque tal vez no te hayas dado cuenta, todas las acciones que realizas en la computadora están haciendo uso de esta lógica en la forma de procedimientos o secuencias de pasos que hay que realizar para lograr lo que se quiere.


Para poner a prueba tu agilidad mental, te recomiendo que descargues la presentación de PowerPoint "Pruebas de Lógica" dando clic en cualquier parte de este párrafo. 


Recuerda que la presentación tiene controles Active x, y es necesario que permitas su ejecución para que puedas visualizar adecuadamente el contenido.

Tarea. Semanas 1 y 2

La tarea que les había dejado la semana 1 es:
  1. Investigar las características de los algoritmos
    • Preciso
    • Definido
    • Finito
    • Presentación
  2. Investigar que es la prueba de escritorio
  3. Realizar el ejercicio que aparece en el post anterior (el de bienvenida).

La tarea de la clase de hoy Martes 23 de Agosto:
  • Realizar un algoritmo que me permita determinar si un número es primo o no,  y realizar tres pruebas de escritorio al mismo.
= )

Algoritmo

Un algoritmo es un conjunto de pasos, instrucciones o acciones que se deben seguir y ejecutar de manera ordenada para alcanzar un fin deseado, un algoritmo es una especie de receta, de instrucciones para resolver n problema.


Los algoritmos son modos de resolución de problemas; cabe aclarar que no sólo son aplicables a la actividad intelectual, sino también a todo tipo de problemas relacionados con actividades cotidianas.


Los algoritmos llevan a cabo un proceso y por lo tanto, son ejecutados por un procesador, que es cualquier ente que ejecute el algoritmo. Puede ser humano o bien una computadora.


Se pueden clasificar en dos tipos:

  • 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 cualquiera. Por ejemplo: la búsqueda de la definición de una palabra en un diccionario, encontrar un número telefónico en un directorio, escribir una receta de cocina, o el modo de usar un extintor de fuego.
  • CUANTITATIVOS. Son aquéllos en los que sí intervienen cálculos numéricos. Por ejemplo: el cálculo de la nómina en una empresa, la conversión de unidades físicas o el cálculo del volumen de un sólido.

Características de los algoritmos


Ser preciso. Las actividades o pasos del algoritmo deben desarrollarse en orden estricto, ya que el desarrollo de cada paso debe seguir un orden lógico.

Ser definido. Esto quiere decir que siempre que se ejecute con los mismos datos, el resultado será el mismo. No puede improvisar, inventar o adivinar la información que necesita para poder realizar un proceso.

Ser finito. Esto indica que el número de pasos de un algoritmo debe ser limitado, es decir, los pasos a seguir deben tener un fin.

Presentación. El algoritmo debe ser entendible para cualquier persona, no sólo para la persona que lo diseñó.

Entrada. Un algoritmo tiene 0 o más entradas. Esto es, las cantidades de los datos de inicio se generan en el mismo algoritmo o se conocen previamente.

Salida. Un algoritmo tiene una o más salidas. Es decir, hay datos o cantidades al término del algoritmo que tienen una relación específica con los datos o cantidades de entrada.

Efectividad. El algoritmo debe ser efectivo. Esto significa que toda las operaciones deben ser suficientemente sencillas para poder, en principio, ser realizadas de modo exacto y en un tiempo finito por un procesador.




Clasificación de los algoritmos

Hay dos clasificaciones para los algoritmos:
  • Algoritmos informales 
  • Algoritmos computacionales

Los algoritmos informales son aquellos que no se realizan para una computadora, sino se diseñan para ser ejecutados por el ser humano. Todos los días ejecutas algoritmos informales en todas tus actividades: al prepararte para tus clases, al vestirte, al cocinar, al regresar a casa, entre otros.

Los algoritmos computacionales son los que se crean para que una computadora sea quien ejecute los pasos y obtener el resultado esperado. Se aprovecha la velocidad de procesamiento del ordenador para darnos un resultado mucho más confiable.

Transcripción


Los algoritmos computacionales no pueden ser ejecutados directamente. La transcripción es el proceso a través del cual convertimos un algoritmo en un listado de instrucciones entendibles para la computadora. Estas instrucciones deben ajustarse a las reglas sintácticas de un lenguaje de programación. Las reglas sintácticas de un lenguaje de programación son las restricciones técnicas sobre las cuales está construido el lenguaje.
Así, un programa computacional es un algoritmo escrito con las instrucciones, restricciones y reglas de un lenguaje de programación.

Compilación y errores


Una vez que has identificado el objetivo a cumplir, has realizado un algoritmo que te permita obtener el resultado deseado y lo has transcrito en un lenguaje de programación, necesitas hacer una compilación.

La compilación es el proceso mediante el cual la computadora revisa que el programa que has escrito cumpla con las reglas sintácticas del lenguaje de programación que estés utilizando. El compilador es el encargado de hacer esta revisión y te ayuda a detectar los errores de sintaxis y de precaución.

Errores de sintaxis. Son errores representados en la omisión de alguna o algunas reglas sintácticas del lenguaje de programación. Es como un error ortográfico en el lenguaje que estés programando. Por ejemplo, si en algún lenguaje hay una instrucción “print” y por error tú escribes “prant”, el programa no funcionará, pues hay un error de sintaxis y la computadora no puede adivinar que en realidad querías escribir “print”. Algunas veces se requiere utilizar paréntesis, comas, puntos o corchetes. Si no se cumple con esas reglas de lenguaje, el programa no puede funcionar. Los errores de compilación son los más fáciles de detectar y corregir.

Errores de precaución. Algunos compiladores hacen sugerencias para el mejoramiento o aseguramiento del programa. Cada lenguaje de programación cuenta con su propio compilador que te ayudará a escribir tu programa correctamente y a detectar estos errores.

Errores lógicos. Este tipo de errores no pueden ser detectados por el compilador. Ocurren cuando el programa se compila perfectamente, no tiene errores de sintaxis, sin embargo no hace lo que se supone que debería hacer. Por ejemplo, si escribo un programa para calcular el área de un triángulo y utilizo la fórmula Área=(base*altura)/3, cometería un error lógico. El compilador no detecta ningún error en la fórmula, el programa funciona, pero el resultado está mal. Estos errores son los más difíciles de corregir y se pueden evitar si se diseña y analiza correctamente el problema antes de comenzar a programar en la computadora. Unos minutos de trabajo previo en papel, te pueden ahorrar muchas horas de trabajo en la computadora. Estos errores los tenemos que detectar nosotros mismos al hacer las pruebas de escritorio, ya que ahí es donde determinamos si el algoritmo logrará o no el objetivo esperado.

Reflexión previa. Variables


¿Qué significa la palabra variable?
Que puede cambiar (un valor, una propiedad, un atributo, entre otros).

En álgebra ¿qué es una incógnita o variable? 
Una literal de la cual se desconoce su valor o una literal que puede cambiar su valor.

En la fórmula para calcular el área de un rectángulo (Área=base x altura) ¿cuáles son las variables? ¿Cómo las puedes identificar? 
Las tres, si yo cambio los valores de la base o la altura, el área cambiará
también su valor.

¿Todas las fórmulas matemáticas tienen variables? ¿Por qué? Sí, las fórmulas son para casos generales. Así se pueden obtener los valores correctos para cualquier caso específico que exista.

¿Qué es lo opuesto de una variable? 
Una constante que no puede cambiar su valor.






Actividad Variables

Da clic derecho sobre la imagen, elige Guardar imagen como... para que posteriormente puedas imprimir y realizar el ejercicio. Rellena los espacios en blanco, como lo vimos en la clase del día Martes 30/Agosto/2011.

Variables

Una variable contiene un valor que puede modificarse a lo largo de la ejecución de la aplicación. Cada variable tiene atributos propios, como:

  • Nombre: Es el nombre que utilizamos para referirnos a la variable en la aplicación. Para el nombre de una variable no puede ser una palabra reservada*.
  • Tipo: El tipo determina qué clase de valores puede tomar la variable.
  • Ámbito: El ámbito de una variable especifica en que parte de la aplicación es conocida la variable y por lo tanto puede utilizarse.**

Antes de utilizar una variable, es aconsejable declarar su tipo. Además se recomienda de igual forma inicializar la variable con un valor, el que sea que quieras darle a tu variable.






OTRAS DEFINICIONES DE VARIABLE


-->Una variable es un contenedor de información en al memoria de la computadora. El contenedor es siempre el mismo, pero el contenido puede cambiar.


-->Es un espacio en la memoria al que se le asigna un nombre a través del cual se puede recuperar el valor almacenado.


*Una palabra reservada tiene un significado especial para el lenguaje de programación que se esté utilizando. Son palabras reservadas las sentencias predefinidas (como for), los nombres de funciones, métodos, propiedades, tipos y operadores (como and).

**Curso de programación de Visual Basic 6.
Fco. Javier Ceballos.
Ed. Alfaomega.
Págs. 58-60

Operadores (Prioridad de las operaciones)

Miércoles 31/Agosto/2011


Disculpen la demora chicos, aquÍ les dejo los ejercicios que deben resolver de tarea para mañana. 


Uso de paréntesis

Para cambiar el orden de evaluación, escriba entre paréntesis la parte de la fórmula que se calculará en primer lugar. Por ejemplo, la siguiente fórmula da un resultado de 11 porque Excel calcula la multiplicación antes que la suma. La fórmula multiplica 2 por 3 y, a continuación, suma 5 al resultado.

=5+2*3

Por el contrario, si se utilizan paréntesis para cambiar la sintaxis, Excel sumará 5 y 2 y, a continuación, multiplicará el resultado por 3, con lo que se obtiene 21.


=(5+2)*3


Otro ejemplo:


En la imagen de la derecha vemos una expresión que no podríamos introducir a la computadora sin antes escribirla adecuadamente para ser interpretada como tal y la computadora pueda resolverla.
Tenemos a + b/c estan siendo divididas entre a/b+c. Por lo tanto colocamos ambos téminos entre paréntesis y asi se pueda resolver dicha expresión:
X = (a+b/c)/(a/b+c)
Nótese que no es necesario colocar paréntesis en la expresión a+b/c pues debido a la jerarquía de operaciones primero se resuelve la división de "b/c" y lo que resulte de ésta se le sumaría a "a".




EJERCICIOSEvalúa las siguientes expresiones. Escribe en una sola línea la expresión algebraica, tal y como se debe escribir en la computadora, usando paréntesis y los operadores adecuados. Después evalúa cada expresión obteniendo el valor final de x, suponiendo en todos los casos que:
a = 3, b = 4, c = 2 y d = 1



*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  
Ejercicio 1.





X=(a+b/c)/(a/b+c)
X=(3+4/2)/(3/4+2)
X=5/(3/4+2)
X=20/11





*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  
Ejercicio 2.

*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  
Ejercicio 3.



*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  
Ejercicio 4.



*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  
Ejercicio 5.



Algoritmo para conocer si un número es primo

Jacob este ejercicio es para ti, vamos a trabajar lo que estamos viendo en clase trasladándolo a algo más tangible. Ojalá te des algo de tiempo para realizar las adaptaciones en AS3. El ejercicio contiene declaraciones de algunas variables que no utilice y olvidé quitar, te vas a dar cuanta al revisarlo.


Lis y Kevin, me gustaría mucho que intentaran también realizar este ejercicio, ya que le entienden muy bien al AS2 de flash y esto les ayudará a comprender mejor la teoría y ejercicios que vemos en clase.


*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  
En teoría el algoritmo tendría que ser algo así:


INICIO
Leer n
cont=0;


for(i=1 to n)
if(mod(n,i)=0) then
cont+=1;
end if
end for
if(p>2) then
"No es primo"
sino
"Es primo"
end if
END




*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  
Realicé una adaptación al lenguaje AS2 de Flash y quedó algo así:





Incluí dos botones para incrementar/decrementar el valor del número a evaluar y un par de líneas en el fotograma 1:



var numero=0;
caja_txt.text="Hola mundo";
var contadorclic=0;


El swf que se generó es el siguiente:



Entrando en materia

Un algoritmo  establece, de manera genérica e informal, la secuencia de pasos o acciones que resuelve un determinado problema. Los algoritmos constituyen la documentación principal que se necesita para poder iniciar la fase de codificación y, para representarlos, se utiliza, fundamentalmente, dos tipos de notación: pseudocódigo y diagramas de flujo.
El diseño de un algoritmo es independiente del lenguaje que después se vaya a utilizar para codificarlo.


Un algoritmo escrito en pseudocódigo siempre se suele organizar en tres secciones: cabeceradeclaraciones y cuerpo.


En la sección de cabecera se escribe el nombre del algoritmo.


En la sección de declaraciones se declaran algunos objetos (variablesconstantes,...) que va a utilizar el programa.


En el cuerpo están descritas todas las acciones que se tienen que llevar a cabo en el programa, y siempre se escriben entre las palabras inicio y fin.

Por ejemplo, el algoritmo de un programa que va a calcular la suma de dos números enteros cualesquiera introducidos por el usuario y, después, va a mostrar por pantalla el resultado obtenido, puede ser el siguiente:



 algoritmo Sumar

 variables
  entero
a, b, c

 inicio

  escribir( "
Introduzca el primer número (entero): ")
  leer(
a )
  escribir( "
Introduzca el segundo número (entero): ")
  leer(
b )
  c  a + b
  escribir( "La suma es: ",
c )
 
fin

Tercer ejercicio - "Switch"

Decisiones de acciones


En este código podemos observar la implementación de la estructura:


switch(variable){
case 1:
acción(es);
break;
case n:
acción(es);
break;
default: