Clase del Lunes 8 de Marzo

Presentación del curso

Objetivos de la clase: presentar el curso a los alumnos.

Temas:

Esta es la clase que yo voy a hacer. Los demás profesores pueden presentar el curso de la forma que ellos estimen conveniente.


Objetivos del Curso

La idea es deducir cuáles son los objetivos del curso a través del siguiente mapa conceptual.

Cuando el alumno se convierta en un profesional, se le pedirá que resuelva problemas computacionalmente. Como profesional tendrá que elaborar soluciones para esos problemas.

Por lo tanto los objetivos del curso son:

Se finaliza con el siguiente mapa conceptual:


Temario

(No necesariamente en el orden en que se verán las materias.)

Programación en el lenguaje Java:

Algortimos:

Otras áreas:

Metodología

Durante el curso se enseñará a resolver problemas computacionales mediante la programación en el lenguaje Java. Muchos de los problemas deberán ser programados en el computador. Para ello, la escuela ofrece unos 100 PCs (Pentium 166, 32 MB, 1GB HD, Windows'NT), pero se incentivará el uso de los PCs que los alumnos tengan en casa.

Durante la próxima semana se organizarán talleres de adiestramiento en el uso del computador.

¿Por qué Java?

¿Como estudiar eficientemente? Seguir estas indicaciones no significa dedicar más tiempo al estudio, si no que aprovechar mejor el tiempo dedicado al estudio.


Reglas del juego

Evaluación:

Para aprobar el curso se requiere:

Más detalles acerca de las reglas de evaluación se encuentran en el documento Guía del Estudiante distribuido por la Escuela a todos los alumnos (capítulo 1, la docencia de pregrado). Los alumnos deben preservar esta copia hasta fines de año en donde se hace más necesaria.

Observación: el grueso de los alumnos aprueba con nota entre 4 a 5 (más cerca de 4 que de 5) y por lo tanto la mayoría debe estar preocupado de estas reglas. Esto ocurre porque la mayoría de los alumnos no respeta las indicaciones acerca de como estudiar eficientemente.


Bibliografía


Conceptos Básicos

En este punto Juan Alvarez propone que los alumnos mencionan términos computacionales y clasificarlos en distintas casillas como:

La idea es que se entregue una primera explicación para algunos términos muy empleados en Computación como:

Computación I Miércoles 10 de Marzo

Introducción a la programación

Objetivos: Mostrar a los alumnos un primer programa.

Temas:


Definiciones previas


Jalisco

El programa que nunca pierde.

Este programa realiza un diálogo muy corto con el usuario.

           Por favor ingresa un número: 123
           Lo siento, te gano con el 124
Las etapas que debe realizar el computador para realizar este diálogo son:

Las instrucciones anteriores corresponden al algoritmo de Jalisco. Pero no constituyen un programa porque el computador no es capaz de entenderlo y ejecurlo. Un algoritmo es un conjunto de instrucciones para llevar a cabo alguna actividad, pero no necesariamente escrito en un lenguaje entendible por un computador.

El siguiente es un el programa Jalisco escrito en el lenguaje Java:

Explicaciones:


Ejercicios Propuestos


Computación I Lunes 15 de Marzo

Conceptos básicos

Objetivos: Que los alumnos sean capaces de escribir expresiones aritméticas enteras o reales y que puedan declarar variables.

Temas:


Expresiones aritméticas

Una expresión aritmética se escribe realizando operaciones aritméticas entre variables y constantes numéricas. Por ejemplo:

    2*PI*radio
    (dist1+dist2)/difTiempo
    5
    3.14159
(Obs. a los profesores: PI es una constante de la clase Program).

Los operadores más usados son:

Obs. 1: Las expresiones se escriben en una sola línea.

Obs. 2: Existe una parentización implícita como en el álgebra matemática:

Parentice explícitamente cuando la parentización implícita no es la adecuada o cuando tenga dudas:

    a-(b-c);

Tipo de una expresión

Una expresión puede ser entera (int en Java) o real (double). Por ejemplo, las siguientes son expresiones enteras:

   5
   5 + 2 * 20   // expresión compuesta
   5/2
   -2
Estas otras son reales:

   3.14
   3.14 * 8.5 / 2.0
   5.                 // 5.0
   1. + 1             // 2.0
Esto se puede resumir en:

Ejemplo:

    (4 - 1) * 5. / (5 / 2)
     |   |    |     |   |
    int int double int int
      \ /    /      \  /
      int   /        int
       \   /          /
       double        /
           \        /
            \      /
             \    /
             double


Propuesto: ¿Cuanto valen 1/2*2.0 y 2.0*1/2?


Ejercicio: Cálculo de porcentajes en un plebiscito

Se requiere un programa que establezca el siguiente diálogo:

    Votos SI ? 80
    Votos NO ? 120
    Total de votos= 200
    SI= 40.0 %
    NO= 60.0 %
(8 minutos para que los alumnos traten de hacerlo.) Programa:

    println("Calculo de porcentajes de un plebiscito");
    print("Votos SI ? ");
    int si= readInt();
    print("Votos NO ? ");
    int no= readInt();
    print("Total de votos= "); println(si+no);
    print("SI= "); print(100.0*si/(si+no)); println(" %");
    print("NO= "); print(100.0*no/(si+no)); println(" %");
Observaciones:


Declaración de variables

Cuando una expresión se repite una y otra vez, su valor se puede almacenar en una variable. Por ejemplo:

    int total= si+no;
    println(100.0*si/total);
    println(100.0*no/total);
La primera instrucción es una declaración. Introduce la variable total. Una declaración tiene la sintaxis:

`tipo' `identificador' = `expresión' ;

En donde `identificador' es el nombre de la variable y `expresión' es el valor inicial que se le da a esa variable.

El `tipo' puede ser int o double. Si es int, la variable sólo puede almacenar un valor entero. Si es double, solo puede almacenar un real (Ej. 2.5, -1.2, 1.0). Ejemplo:

  double perimetro= 2*PI*radio;
(Obs. a los profesores: por simplicidad no introduzcan el tipo float. Hace que en muchos caso se necesite los horrendos casts. En todo caso, con double se puede hacer todo y mejor.)


El operador %

Calcula el residuo de la división entre enteros. Por ejemplo:

En general se tiene la siguiente igualdad:

i % j <=> i - i/j*j <=> i - (i/j)*j

Tarea: