Master en Artes Digitales (IUA-UPF)
Módulo de Programación

Introducción a la Programación

¿Qué es un algoritmo? ¿Y un programa? | Fases de Analisis y Solución de un Problema | Variables | Tipos de Datos | Operadores de los Tipos de Datos | Lógica Booleana | Tipos de Datos Compuestos | Ejercicios


¿Qué es...?

¿Qué es un algoritmo? ¿Y un programa?

    Algoritmo:
    Secuencia de pasos ordenados a realizar para poder solucionar un problema concreto.

    Procesador:
    Repertorio de acciones o comandos.

    Programa (ligado al procesador):
    Secuencia de instrucciones ordenadas, tomadas del repertorio de un procesador, para poder solucionar un problema concreto.

Fases de Analisis y Solución de un Problema:

Problema
Especificación
Enunciado
Programación
Algoritmo
Codificación
Programa

Ejemplo:
    Problema: ¿Cómo es nuestra clase?

    (Concretar que se quiere saber y como se quiere saber)

    Especificación:
    • Se desea saber si la clase es numerosa o normal. Numerosa se considera a partir de 50 alumnos.
    • Se desea saber el tanto porciento de hombres y de mujeres.

    (Concretar pasos principales)

    Algoritmo:
    1. Conseguir dato cantidad de mujeres.
    2. Conseguir dato cantidad de hombres.
    3. Calcular el total.
    4. Según cantidad supere o no a 50, informar el tipo de clase.
    5. Calcular % de mujeres.
    6. Calcular % de hombres.

    Analizar cosas que el procesador debe saber hacer:
    • Debe saber conseguir datos (por ejemplo: entrados por teclado).
    • Debe saber operar aritméticamente.
    • Debe poder guardar valores intermedios y temporales.
    • Debe poder comparar valores.
    • Debe poder tomar diferentes cursos de acción según una condición.
    • Debe poder informar de resultados (valores en general) (por ejemplo: mostrados por pantalla).

    Programa:

    CantidadMujeres = read();
    CantidadHombres = read();

    Total = CantidadMujeres + CantidadHombres;

    if(Total > 50) write("Clase Numerosa");
    else write("Clase Normal");

    PorcentageMujeres = CantidadMujeres * 100 / Total;
    PorcentageHombres = CantidadHombres * 100 / Total;

    write
    (PorcentageMujeres);
    write(PorcentageHombres);

 

Análisis de un Problema:
Ejemplo:
    Problema: Hacer un pastel con mermelada en medio y cobertura de chocolate.

    (Concretar que se quiere saber y como se quiere saber)

    Especificación:
    • El pastel deberá ser de bizcocho.
    • La mermelada será de naranja pero sin piel para no encontrar trocitos.
    • La cobertura deberá ser de chocolate amargo.

    (Identificar sub-partes independientes)

    Descomposición en sub-problemas:
    • Hacer un bizcocho.
    • Hacer una mermelada de naranja.
    • Hacer un chocolate para cobertura.
    • Unir partes.

    (Concretar pasos principales)

    Algoritmo del Bizcocho:

    1. Pesar las cantidades de cada ingrediente.
    2. Cernir la harina.
    3. Separar las claras de las yemas.
    4. Batir las claras hasta punto de nieve.
    5. ...
    6. ...

    Analizar cosas que el procesador debe saber hacer:
    • Debe saber conseguir ingredientes.
    • Debe saber batir.
    • ...
    • ...
     

 

Variables:

Tipos de Datos:

Operadores de los Tipos de Datos:

Lógica Booleana

no
FALSO CIERTO
CIERTO FALSO
y
FALSO FALSO FALSO
FALSO CIERTO FALSO
CIERTO FALSO FALSO
CIERTO CIERTO CIERTO
o
FALSO FALSO FALSO
FALSO CIERTO CIERTO
CIERTO FALSO CIERTO
CIERTO CIERTO CIERTO
xo
FALSO FALSO FALSO
FALSO CIERTO CIERTO
CIERTO FALSO CIERTO
CIERTO CIERTO FALSO

Tipos de Datos Compuestos



Ejercicios:
Problemas de lógica booleana:
  1. Dar el valor de resultado (CIERTO O FALSO) en las siguientes condiciones dados los valores iniciales:
    grande = FALSO;
    redondo = CIERTO;
    puntiagudo = FALSO;
    1. resultado = grande y redondo y puntiagudo;
    2. resultado = grande o redondo o puntiagudo;
    3. resultado = grande y redondo o puntiagudo;
    4. resultado = grande o redondo y puntiagudo;
    5. resultado = grande xo redondo xo puntiagudo;
    6. resultado = (grande o redondo) y puntiagudo;
  2. Determinar las tablas completas de todas las posibilidades de las siguientes condiciones:
    1. A y B y C
    2. A o B o C
    3. A xo B xo C
    4. A y B o C
    5. (A o B) y (C o D)
    6. (A y B) o (C y D)
  3. Encontrar las condiciones lógicas para poder discernir los siguientes problemas:
    1. Tengo un perro y un gato. Quiero saber cuando uno de los dos sea mayor de 3 años.
    2. A partir del anterior, ahora quiero saber cuando los dos sean mayores de 3 años.
    3. Tengo sacos de almendras y sacos de avellanas y necessito tener al menos 10 de almendras y al menos 15 de avellanas.
    4. A partir del anterior, ahora me he dado cuenta de que también me vale si tengo al menos 8 de almendras pero entonce también al menos 20 de avellanas.
    5. Tengo un sensor en una olla que me dice si el contenido hierve y otro en un congelador que me dice si una botella de agua está congelada. Necesito saber cuando la olla aún NO hierve pero en cambio el agua SI está congelada.
    6. Tengo una camisa lisa, una a cuadros y una a rayas. También tengo unos pantalones lisos y unos a rayas. Loas cuadros sólo pueden combinar con liso; las rayas con liso y rayas; el liso puede combinar con todo.
    7. Tengoun marcador de horas y uno de minutos. Necesito saber cuando son "y media" entre las 8:00 y las 14:00, y cuando son "y cuarto" entre las 14:00 y las 21:00, porqué a estas horas pasan los trenes que me llevan a casa.
    8. Mis tomates sólo crecerán si entre Febrero y Marzo la temperatura no baja por debajo de 3ºC y además, si entre Abril y Mayo, la temperatura se mantiene entre 8ºC y 20ºC, y además llueve más de 15 litros pero menos de 30 litros.
  4. Dos condiciones de tres: Se dice que Dios, teniendo tres características para dar a los hombres:
    • ser Guapo
    • ser Inteligente
    • ser Buena Persona
      decidió que cada hombre concreto tan sólo podria tener dos de estas tres.
      Dar la expresión Booleana que define esto y establecer qué consecuencias tiene a partir de las posibilidades que aparecen
      .
  5. Dar un algoritmo (no un programa) para los siguientes enunciados:
    1. Se quiere encontrar la media de tres números que se entren por teclado.
    2. Se quiere encontrar el area de un trapecio del cual se dará por teclado sus dos bases (maenor y mayor) y su altura.
    3. Se quiere determinar si una tabla de nombres contiene el nombre "Ricard". (Pista: inventar algún modo de recorrer todas las posiciones de la tabla.
    4. Se quiere definir una base de datos de perros para un veterinario. Definir cómo deberian de ser los registros de cada ficha.


Índice | Siguiente Sesión >