• No se han encontrado resultados

La receta infalible para diseñar programas

N/A
N/A
Protected

Academic year: 2021

Share "La receta infalible para diseñar programas"

Copied!
15
0
0

Texto completo

(1)

La receta infalible para dise˜

nar programas

Dante Zanarini

LCC

(2)

Qu´

e necesitamos para programar (1)

Para programar necesitamos un lenguaje. Debemos conocer: Su vocabulario,

su gram´atica,

y el significado de sus frases.

Nosotros elegimosracket, y estamos aprendiendo todo lo anterior.

¿Escribir programas me convierte en un buen programador? Algunas preguntas relacionadas:

¿Patear una pelota me convierte en Marco Ruben?

S´e c´omo se mueven las piezas, ¿soy un jugador de ajedrez? ¿Usar un cuchillo me convierte en cirujano?

Ayer hice un huevo frito, ¿soy un chef?

(3)

Qu´

e necesitamos para programar (2)

Adem´as de un lenguaje, ¿qu´e necesitamos para programar?

Necesitamos la habilidad para transformar el enunciado de un problema en un programa.

Algunas preguntas:

¿Qu´e partes del enunciado son relevantes y cu´ales no?

¿Q´ue informaci´on recibe en programa? ¿Qu´e produce? ¿C´omo se relacionan la entrada y la salida?

¿Qu´e herramientas me provee mi lenguaje y sus librer´ıas para resolver el problema?

Ya tengo el programa, ¿resuelve realmente el problema? Si no, ¿C´omo lo arreglo?

(4)

LA receta

La idea es dar una herramienta para atacar cualquier problema de programaci´on.

Al tener definida una serie de pasos concretos, es menos probable que nos quedemos en blanco.

Como toda receta, no s´olo indica qu´e pasos hay que seguir, sino

tambi´en en qu´e orden hay que hacerlo!

(5)

Los pasos para dise˜

nar programas

1 Dise˜no de datos;

2 signatura y declaraci´on de prop´osito;

3 ejemplos;

4 definici´on de la funci´on;

5 evaluar el c´odigo en los ejemplos;

(6)

Un problema simple

Para ilustrar los pasos, trabajemos con el siguiente problema:

Escribir un programa que convierta una temperatura medida en un

term´ometro Fahrenheit a una temperatura en Celsius.

(7)

1. Dise˜

no de datos

La informaci´on vive en el mundo real, y es parte del dominio del problema

Para que un programa pueda procesar informaci´on, esta debe

representarse a trav´es de datos.

Asimismo, los datos producidos por un problema, deben poder

(8)

1. Dise˜

no de datos

En este paso, definimos la forma de representar la informaci´on como

datos:

;Representamos temperaturas mediante n´umeros

A medida que necesitemos representar informaci´on m´as estructurada,

esta parte se volver´a m´as interesante.

(9)

2. Signatura y declaraci´

on de prop´

osito

La signatura de una funci´on indica qu´e datos consume (cu´antos y de

qu´e clase), y qu´e datos produce. Ejemplos:

;Number->Number

Signatura para una funci´on que consume un n´umero y produce un n´umero.

;Number String String-> Image

Signatura para una funci´on que consume un n´umero y dos strings, y devuelve una imagen

(10)

2. Signatura y declaraci´

on de prop´

osito

Breve descripci´on del comportamiento de la funci´on.

¿Qu´e calcula esta funci´on?

Cualquier persona que lea un programa, deber´ıa entender qu´e calcula

la funci´on sin necesidad de inspeccionar c´odigo. Para nuestro ejemplo:

; recibe una temperatura en Fahrenheit, devuelve su equivalente en Celsius.

(11)

3. Ejemplos

A partir de los dos primeros pasos, debemos estar en condiciones de

predecir el comportamiento de la funci´on para algunas entradas:

; entrada: 32, salida: 0 ; entrada: 212, salida: 100 ; entrada: -40, salida: -40

(12)

4. Definici´

on de la funci´

on (c´

odigo al fin!)

Ya podemos escribir la definici´on de nuestra funci´on: (define (far->cel f) (* 5/9 (- f 32)))

(13)

5. Evaluar el c´

odigo en los ejemplos

> (far->cel 32) 0 > (far->cel 212) 100 > (far->cel (- 40)) -40

(14)

6. Realizar modificaciones en caso de errores

¿Y si no me da?

Podr´ıan estar mal formulados los ejemplos, podr´ıa haber un error en el programa,

o ambas cosas a la vez (muy raro que suceda).

En general, conviene revisar primero que los ejemplos est´en bien.

(15)

Juntando todo...

Escribir un programa que convierta una temperatura medida en un

term´ometro Fahrenheit a una temperatura en Celsius.

;Representamos temperaturas mediante n´umeros

; far->cel : Number->Number

; recibe una temperatura en Fahrenheit, devuelve su equivalente en Celsius.

; entrada: 32, salida: 0 ; entrada: 212, salida: 100 ; entrada: -40, salida: -40

Referencias

Documento similar

If certification of devices under the MDR has not been finalised before expiry of the Directive’s certificate, and where the device does not present an unacceptable risk to health

In addition to the requirements set out in Chapter VII MDR, also other MDR requirements should apply to ‘legacy devices’, provided that those requirements

The notified body that issued the AIMDD or MDD certificate may confirm in writing (after having reviewed manufacturer’s description of the (proposed) change) that the

La primera parte, se quiere obtener la representaci´on en coordenadas dq de nuestra se˜nal de referencia; para ello, se dise˜na un estimador de fase y frecuencia a partir de

diabetes, chronic respiratory disease and cancer) targeted in the Global Action Plan on NCDs as well as other noncommunicable conditions of particular concern in the European

El objetivo general de esta tesis es dise˜ nar un algoritmo para generar cajas de sus- tituci´ on ´ utiles en cifrado por bloques por medio de sistemas din´ amicos con comporta-

El problema de la congestión de las cortes en materia civil y comercial es un asunto de larga data con una reiterada historia de fracasos en los intentos de reforma. Esta

En este sentido, puede defenderse que, si la Administración está habilitada normativamente para actuar en una determinada materia mediante actuaciones formales, ejerciendo