Archive for January, 2007

Consejos para afrontar exámenes de programación

Friday, January 26th, 2007

A modo de recopilación de consejos para afrontar un examen de programación….

- Antes de comenzar a programar de forma concreta, es útil hacer un esbozo o esquema del planteamiento que vas a seguir, es decir, el cómo te lo vas a montar. (Las estructuras de datos que necesitarás, qué aspectos o datos has de tener en cuenta en cada momento…). Si comienzas a codificar sin este paso previo, es muy posible que te encuentres con problemas y te vuelvas loco modificando una y otra vez el programa para que funcione, haciéndote perder mucho tiempo.

- Usa funciones y procedimientos, aunque no te lo pidan de forma expresa. Si tienes una parte de código que se repite en el programa, crea un subprograma para tal fin y llámalo cuando te haga falta. Si, aunque sólo la hagas una vez, la tarea es algo concreto, también pásalo a un subprograma. Mejorarás el orden del código y lo tendrás más limpio para no liarte al repasar.

- Si alguna parte te da problemas… que no sabes por dónde abarcar, pásalo a un subprograma,dejando su contenido en blanco y suponiendo que hace lo que tiene que hacer. Si te sobra tiempo, puedes darle vueltas a eso que te falta sin haber perjudicado el resto del programa. En la vida real esta práctica no te servirá de mucho, pero igual en el examen, si tienes todo lo demás correcto, te puntuen positivamente.

- Recuerda no hacer uso de variables globales. Las que necesites en varios subprogramas, pásalas como parámetros. Muestra especial atención al tipo y al orden de parámetros, y si se han de pasar por valor o por referencia. Equivocarse en el paso de parámetros, suele bajar mucha puntuación.

- Ten en cuenta la eficiencia del algoritmo. Un problema puede resolverse de muchas formas, pero intenta resolverlo usando el menor número de recursos. Las vueltas de más que des en un bucle, por ejemplo, es una cosa importante a evitar.

- Si en el ejercicio te dicen un número concreto de datos, por ejemplo, que el máximo posible de registros va a ser 30, casi con toda seguridad tendrás que hacer uso de un array. De lo contrario, tendrás que montartelo de forma que mantengas la integridad del programa. (Por ejemplo, si en un fichero no sabes cuantos registros puede haber, no los pases a memoria (array) salvo que sea estrictamente necesario. Imagina que declaras un array de 1000 elementos y solo hay un registro en el fichero: estarías desaprovechando 999 elementos. Del mismo modo, imagina que hay 1001: no te cabrían en el array).

- Nombra las variables, funciones.. con un mismo criterio (primera letra con minúscula, o que indique de qué tipo es…) y con un nombre claro que la identifique. En programas largos o que no sólo toques tú, se agradecerá, así como será más apetitoso de leer en el examen. Procura tener el código lo más ordenado / estructurado posible, pues la impresión del profesor que evalúe el examen será muy positiva.

- Cuando revises los ejercicios del examen, pon atención en cosas como la correspondencia entre parámetros formales y parámetros actuales, que las variables que usas previamente las has declarado / inicializado, la sintaxis correcta del lenguaje usado… mucha veces se olvida y es algo que resta puntos.

- A programar, se aprende programando, no estudiando. Estudiar sirve para conocer el lenguaje concreto, algoritmos genéricos, estructuras… pero no sabrás usar todo ello si no te enfrentas a los ejercicios papel / compilador en mano.

- De vuelta a las funciones, lee con atención el enunciado. Si te piden que el subprograma ha de devolver un dato (un número, una cadena…), tendrás que hacer una función. (A una función también se le pueden pasar parámetros por referencia). Si lo haces con un procedimiento y está bien, no te lo darán por válido.

- En el típico algoritmo de búsqueda en un array, fichero… con un while, se usa dentro if, pero sin else. Es muy común al principio tender a poner un else. La idea es que el bucle while tenga dos condiciones: la primera que delimite el rango máximo de busqueda (final del array, final del fichero…) y otra que salga del bucle cuando lo haya encontrado. Dentro del bucle, se coloca un if, si en una vuelta encontramos lo que buscamos, salimos del bucle. Y fuera del bucle, preguntamos con if por qué condición se ha salido del while (si por que lo ha encontrado o por que ha llegado hasta el final del array, fichero… sin encontrarlo…)

- También en los bucles hay que poner cuidado en la variable que funciona como contador: que tenga el valor apropiado para que entre en el bucle, que al acceder al elemento de un array (tipo array[j]), j no sea mayor que el tamaño del array, que haya una condición de parada y que alguna vez entre en esa condición de parada…