Semana 2: Abordando problemas

Camilo Meza Gaete

Created: 2022-04-21 Thu 17:41

Identificando el problema

Tomemos de ejemplo nuestro cerebro

Funciona de manera automática frente a estímulos:

  • Pelar 10 manzanas para el postre.
  • Caminaré a la casa de mi amiga.
  • Las personas pueden respirar sin tener que pensar en ello.

Instrucciones de programación

Diseñemos las instrucciones que nuestro cerebro debería pensar para realizar los tres trabajos de la diapositiva anterior. En el caso de subir una escalera, sería:

(define pie-derecho 1)
(define pie-izquierdo 0)
(define (subir-escalera pie)
  (cond (= pie pie-derecho) (+ pie-derecho 1))
  (cond (= pie pie-izquierdo) (+ pie-izquierdo 1))
  (else 0))

Construyamos unas instrucciones para pelar 10 manzanas.

Construyamos unas instrucciones para caminar a la casa de una amiga o un amigo.

Construyamos unas instrucciones para respirar.

Diseñando un algoritmo

Diagramas de flujo

La primera etapa de un diseño bien pensado es considerar las entradas y las salidas.

  • ¿Qué datos inician?
  • ¿Qué datos me entrega el PC?
  • ¿Cómo debo procesarlos?

Para esto, utilizaremos una herramienta llamada diagrama de flujo.

Algoritmo1.png

Concepto matemático

Números primos y compuestos

Realicen en sus cuadernos un algoritmo que nos permita conocer los factores de un número, para ello apóyense en las siguientes preguntas:

  • ¿Qué otras relaciones pueden hacer entre el problema actual y otro que conozcan?
  • ¿Cómo sería el programa? ¿Necesita datos de entrada? ¿Cuál es la salida?
  • Prueben el programa con los siguientes números: 24 y 13
  • Encuentren los valores que faltan en la siguiente tabla:

factores1.png

  • ¿Qué tienen en común los números cuyo resto es cero?, ¿y los que tienen resto distinto de cero?
  • ¿Cuándo un número es factor de otro?

Laboratorio

Formulando el programa en Racket

A partir de nuestro estudio, podemos formular las expresiones en notación prefija.

  • ¿Qué instrucciones necesitamos?
  • ¿Debemos definir nuevas variables?
  • ¿Debemos definir procesos (funciones)?