Sie sind auf Seite 1von 14

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg.

CONTADORES, ACUMULADORES Y SWITCHES CONTADORES


Una variable es un campo de memoria capaz de almacenar un valor. Este valor, dependiendo de las necesidades del programa, puede variar a lo largo del mismo. Un contador es una variable numrica cuyo valor se incrementa o decrementa con cantidades fijas, que pueden ser positivas (incremento) o negativas (decremento). La forma de incrementar/decrementar el contador es mediante una instruccin del tipo C=C+1 siendo e la variable contador, e 1 el incremento/decremento fijo. El valor habitual de 1 es 1, aunque no tiene por qu serlo siempre. Los contadores que se utilizan en un programa deben inicializarse con un valor, generalmente cero, que se les asigna al comienzo del mismo para limpiar la variable de posibles valores anteriores. Adems, hay lenguajes que no permiten una instruccin de este tipo si el contador est sin inicializar. Un ejemplo de inicializacin podra ser: C = 0; A = l; CONT = 0; etc. Una expresin del tipo C = C + I tiene como significado: . Aadir el valor de I al' contenido actual de C. Dejar el nuevo valor otra vez en C. As, si al comienzo del programa hemos inicializado A con el valor O: A=0 y repetirnos tres veces la instruccin: A=A+l Los sucesivos valores que tornara dicha variable seran 1, 2, Y 3. Se podra afirmar, pues, que A est contando.

En general, la funcin ms usual de un contador es la de controlar el nmero de iteraciones que se van realizando en un bucle y determinar cundo salir de l. Sin embargo, tambin puede irse incrementando o decrementando dentro del bucle cada vez que ste se realiza, pero no intervenir en la condicin para salir del mismo. Lo que s se puede afirmar es que un contador est siempre asociado a un bucle.

EJEMPLO
Introducir las notas de matemticas obtenidas por los 40 alumnos de una clase y contar cuntos de ellos han aprobado. Variables utilizadas NOTA: Variable para guardar las sucesivas notas que se vayan tecleando. C_ALUM: Contador de alumnos que controlar el nmero de notas introducidas. C_APRO: Contador de alumnos aprobados. Proceso Inicializar los contadores a 0. Se utilizar un bucle cuya condicin de salida vendr determinada por C_ALUM=40. Dentro de cada iteracin se introducir la nota de un alumno, se sumar por tanto 1 a C_ALUM, y si a nota es mayor o igual a 5 se incrementar en 1 el contador C_APRO.

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg. 2

INICIO

C_ALUM=0

C_ALUM=0

Introducir Nota

NO Nota > 5

SI

c_apro = c_apro + 1

c_alum = c_alum + 1

NO

c_alum=40 SI Introducir Nota

FINAL

ACUMULADORES
Un acumulador es una variable (campo de memoria) cuyo valor se incrementa/decrernenta con cantidades variables. Realmente, realiza la misma funcin que un contador con la diferencia de que en un acumulador el valor que se incrementa o decrementa no es fijo, mientras que en un contador s lo es. Un acumulador se utiliza para calcular totales, entendiendo como total la suma acumulada de diversas cantidades. La forma de incrementar/decrementar un acumulador es mediante una instruccin del tipo: AC = AC + S Siendo AC el acumulador y S un valor variable.

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg. 3

Los acumuladores que se utilizan en un programa, al igual que los contadores, deben inicializarse al comienzo del mismo. Generalmente esta inicializacin se hace a cero. Ejemplo: Hallar la suma de los 100 primeros nmeros naturales. Variables utilizadas: C_NUM: Contador que varie de 1 al 100. Acumulador que vaya sumando los diferentes valores de C_NUM. Proceso. Se inicializan ambas variables a cero. Se utilizara una repetitiva en la que se permanecer mientras el valor de C_NUM sea menor que 100. Por cada repeticin se sumara 1 a C_NUM y se acumulara este valor sobre T_NUM.
INICIO

T_NUN=0

C_NUM=0

C_NUM < 100 SI c_num = c_num + 1

NO

Visualizar T_NUM

FINAL

T_num= T_num+C_num

SWITCH
Un switch es una variable que solo puede tomar dos valores diferentes durante el desarrollo de un programa. Por eso se le denomina tambien conmutador o interruptor. Sus dos posibles valores los elige el programador y pueden ser, por ejemplo:0 o 1; on u off; par o impar; si o no, etc. El switch se inicializa con uno de los dos valores elegidos. A lo largo del proceso, y dependiendo de que una determinada situacin se haya producido, se le modifica dicho valor. Despus, en otro punto del programa, al preguntar por su estado (su valor), se puede detectar si dicha situacin ha ocurrido o no. EJEMPLO Sumar por un lado los nmeros impares y por otro los nmeros pares comprendidos entre 1 y 100. Variables utilizadas. Sw: Switch para alternar los procesos con numero pares e impares.

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg. 4

C_num : Contador de numeros que variara entre 1 y 100. T_par: Acumulador para la suma de los numero pares. T_impar: Acumulador para la suma de los impares.

Proceso Se inicializa el contador y los acumuladores a 0. Se da un valor inicial al Sw, por ejemplo, impar. Se realizara un bucle hasta que C_num sea igual a 100. En cada iteracin se aumentara en 1 el valor de C_NUM, y se pregunta por el valor de Sw. Si es Sw = impar, el programa bifurcara por la rama de la derecha acumulando C_num sobre el acumulador T_impar y cambiando el valor al Sw para que en la siguiente iteracin pase por la otra rama. El tratamiento que se hace cuando Sw = Par es similar.
COMIENZO Sw = Impar

C_num = 0

T_par = 0

T_impar = 0

C_num = C_num + 1

NO T_par = T_par + C_num

Sw=Impar

SI T_par = T_par + C_num

Sw = Impar

Sw = Par

C_num = 100 SI Visualizar T_par, t_impar

NO

FINAL

ALGUNAS NORMAS UTILES DE PROGRAMACION


Vamos a empezar a disear algoritmos para resolver problemas orientados hacia la informtica de gestin. Por ello, se explicar en este apunte una serie de mtodos que solucionan de forma eficaz ciertas cuestiones de uso muy frecuente.

CALCULO DEL MAXIMO

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg. 5

Cuando se pretende calcular el valor mximo de un conjunto de valores que ir tomando sucesivamente una cierta variable, por ejemplo VAR, se debe utilizar otra variable auxiliar, (AUX-MAX), que se inicializar a un valor muy pequeo. El proceso consiste en comparar cada uno de los valores que va tomando la variable VAR con el que esta guardado en AUX-MAX. Si el valor de VAR es mayor, ste se guardar como nuevo contenido de la variable auxiliar para poder, a partir de ahora, comparar con l. Por qu se inicializa AUX-MAX con un valor pequeo? Pues bien, se hace con el fin de que ya el primer valor de VAR sea mayor que l y as tomar ste como referencia para los dems. Si los valores que puede tomar la variable VAR son numricos y positivos, la variable auxiliar se suele inicializar a 0. Si no se sabe cmo ser el rango de estos valores, se inicializa con un valor ficticio (LOW-VALUE), que la mayora de los sistemas poseen, y que representa el valor ms pequeo que puede considerar el sistema. Si el sistema o el lenguaje de programacin no lo admite, se inicializa con el valor ms pequeo posible en cada caso. CALCULO DEL MNIMO Utilizando los mismos razonamientos anteriores, para calcular el valor mnimo se necesitar una variable auxiliar, (AUX-MIN), que, en esta ocasin, se inicializar a un valor superior a cualquiera de los que pueda tomar la variable a estudiar. Si de antemano no se conoce el rango de los valores de la variable, se puede utilizar el valor (ficticio, HIGH-VALUE, que representa el valor ms grande considerado por el sistema. Al igual que en el caso anterior, si el sistema o el lenguaje no lo admite, se inicializa con el valor mayor posible. ORDEN DE ANIDAMIENTO EN CONDICIONALES Una estructura condicional, se dice que esta anidada, cuando esta totalmente incluida en una de las ramas de otra condicional.

S un proceso requiere la utilizacin de varias estructuras condicionales anidadas, se nos puede plantear la duda de qu condicin poner en primer lugar. Pues bien, la norma que debe seguirse siempre es poner en primer lugar la pregunta que sea ms excluyente. Por ejemplo, supongamos que sobre los datos de los alumnos de un colegio, se desea conocer el nmero de alumnos de 7 E.G.B. que tienen ms de un hermano. Para cada alumno, la primera pregunta que debe hacerse, obviamente la ms excluyente, es si dicho alumno es de 7 EGB y slo si esto se cumple preguntar si tiene ms de un hermano. De esta forma, la segunda cuestin se har nicamente a los alumnos de 7 EGB. S se hubieran planteado las preguntas a la inversa, primero si tiene ms de un hermano y luego, en caso afirmativo, si es de 7 EGB, lo ms probable es que se hubiera tenido que realizar la segunda pregunta a un mayor nmero de alumnos, pues, si el colegio es grande, es muy posible encontrar muchos alumnos con ms de un hermano en el resto de los cursos. EJERCICIOS

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg. 6

Introducir un nmero desde el teclado y decir si es positivo, negativo o cero. Variables utilizadas NUM: Variable que guardar el nmero tecleado. Proceso Una vez introducido el nmero se preguntar si es mayor que O. Si la condicin es cierta, es que el nmero es positivo. Si es falsa, an no se podr asegurar nada, ya que puede ser negativo o cero. Por lo tanto, en caso de no ser positivo habr que hacer otra pregunta para saber si es negativo o cero. Es decir, se utilizar una estructura condicional anidada.
COMIENZO

Introducir Num NO Num > 0 SI

NO Num < 0

SI

Visualizar Positivo

Visualizar Cero

Visualizar Negativo

FINAL

EJERCICIO. Introducir 20 nmeros por el teclado e imprimir cuantos son positivos, cuantos negativos, cuantos cero y la suma total de todos ellos. Variables utilizadas. Num: Variable que guardara los sucesivos nmeros. C_num: Contador que variara desde 1 hasta 20 para controlar los nmeros que se van tecleando. C_pos: Contador de positivos. C_cer: Contador de ceros. T_num: Acumulador para el total de nmeros. C_num: Contador de los negativos.

Nota: Se tomara como norma general de nomenclatura anteponer la letra C a los nombres de los contadores, y la letra T (de total) a los nombres de lo acumuladores. Proceso. Se inicializan todos los contadores y acumuladores a cero. Se utilizara una repetitiva controlada por C_num que finalizara cuando el valor sea 20.

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg. 7

En cada repeticin se introducir un numero, se incrementara C_num en 1 y, de forma similar al ejercicio anterior, se comprobara si el numero es positivo, negativo o cero, para sumar 1 al contador respectivo. Ademas, se acumulara el numero sobre T_num.

EJERCICIO Introducir un nmero desde el teclado y visualizar por pantalla su tabla de multiplicar del 1 al 9. Variables utilizadas Num: Variable que guardara el numero tecleado. C_Num: Contador que variara desde 1 hasta 9, y que hara las veces de multiplicador. Proceso

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg. 8

Inicializar el contador en 0 Por cada valor C_Mul se visualizara por pantalla el resultado de multiplicar NUM * C_Mul. Se utilizara, por lo tanto, una estructura repetitiva en la que se permanecer mientras el valor de C_Mul sea menor que 9.

EJERCICIO. Visualizar la tabla de multiplicar del 1 al 9 de los 10 primero nmero naturales. Variables utilizadas. C_Num: Contador que variara desde 1 hasta 10 para contar los numeros de los que se quiere hallar su tabla de multiplicar. C_Mul: Contador que variara de 1 a 9 por cada valor del contador anterior.

Proceso Se inicializara C_Num a cero. Este proceso requiere 2 estructuras repetitivas anidadas. La ms general se realizara 10 veces; es decir, finalizara cuando el contador de numeros C_num sea igual a 10. Dentro de esta repetitiva y para cada uno de los valores de C_num, se efectuara otra para calcular su tabla de multiplicar. Fig. 3.9

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg. 9

EJERCICIO. Hallar la suma de los mltiplos de 5 comprendidos entre 1 y 100. Calcular adems cuantos hay, y visualizar cada uno de ellos. Variables utilizadas C_mult: Contador que ira tomando los valores 5, 10, 15 hasta 100. C_Cont: Contador de mltiplos de 5. T_Sum: Acumulador que ira guardando las sumas parciales de los mltiplos de 5. Proceso Inicializar los contadores y el acumulador. Se utilizara una estructura repetitiva cuya condicin de salida vendr determinada por el valor de C_Mult.

Ver siguiente y fig. 3.11

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg. 10

Las 2 soluciones anteriores son igualmente correctas, la primera ha utilizado un bucle tipo hasta y esta ultima solucin ha empleado un bucle tipo Mientras, sin que ello implique la menor variacin en los resultados. Nota: Es muy importante aclarar que en programacin, la solucin a los problemas no es generalmente nica. Depender del buen criterio del programador. EJERCICIO Realizar 10 veces el proceso siguiente: Introducir un nmero del 1 al 50 y visualizar a qu decena pertenece. Variables utilizadas NUM: Variable que guardar el nmero introducido. C-CONT: Contador para controlar las veces que se repite el proceso.

Proceso Se utiliza una estructura repetitiva que se realiza 10 veces, dentro de la cual hay varias estructuras condicionales anidadas para averiguar a qu decena pertenece. Solucin

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg. 11

EJERCICIO Introducir las estaturas (en cm.) de los 40 alumnos de una clase, imprimir la mayor de ellas y la estatura media. Variables utilizadas ALT: Variable que guardara las sucesivas estaturas tecleadas. C_CONT: Contador que variara de 1 a 40. T_ALT: Acumulador para la suma de las estaturas. MAX: Variable que guardara en cada momento la estatura mayor de las que se hayan introducido.

Proceso Inicializar a 0 el acumulador y el contador. Se utilizar una estructura repetitiva controlada por la condicin C_CONT = 40.

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg. 12

En cada iteracin, se compara el valor de la estatura introducida con el contenido de la variable MAX. Si es mayor, se guarda como nuevo valor de MAX. Esta variable debe inicializarse antes de entrar en la repetitiva, con un valor suficientemente pequeo como para que la primera estatura introducida sea mayor que dicho valor, y as sirva como referencia para las dems. Por ejemplo, MAX = 10.

EJERCICIO Introducir 10 parejas de nmeros naturales A, B Y para cada una de ellas, visualizar su producto por el mtodo de las sumas sucesivas, (Nota: 7*3 = 3 +3 +3 + 3+ 3 + 3 +3, es decir, se suma B, A veces). Variables utilizadas B: Variable que guardar el multiplicando. A: Variable que guardar el multiplicador. C_CONT: Contador para controlar que se repita el proceso 10 veces. C_A: Contador que tomar los valores 1, 2, etc. hasta que alcance el valor A T_PROD: Acumulador para las sumas parciales y que al final contendr el producto.

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg. 13

Proceso Se inicializar el contador C_CONT a 0. Se debern utilizar dos estructuras repetitivas. Una de, ellas, la ms general, controlar que se repita 10 veces el proceso completo de multiplicar dos nmeros. Este ltimo proceso implica los siguientes pasos: La inicializacin de las variables utilizadas en la multiplicacin (C_A y T_PROD) . La introduccin de los dos nmeros a multiplicar. El incremento en 1 del contador de nmeros introducidos. La comprobacin de que ambos Son distintos de cero, pues en caso contrario el producto es cero. La realizacin de una segunda estructura repetitiva, que ser la que realmente calcule el producto de A y B acumulando sobre T_PROD la variable B, A veces.

Itinerario Formativo: Programacion Segundo Ao Materia: Diseo de programas y manipulacin de datos Apunte N 5 - -Pg. 14

PROBLEMAS PROPUESTOS PROBLEMA Introducir nmeros por el teclado hasta que la suma de todos ellos sea mayor que 1000. PROBLEMA Imprimir la suma de los mltiplos de 2 desde el 10 al 700. PROBLEMA Introducir nmeros por el teclado hasta que se teclee el 0, e imprimir la media aritmtica de los negativos y de los positivos. PROBLEMA Dada la ecuacin

Y=X +8*X +3*X Imprimir el valor de Y correspondiente a los valores de X mltiplos de 3, desde el 9 al 60. PROBLEMA Introducir dos nmeros naturales e imprimir su cociente entero por el mtodo de las restas sucesivas. PROBLEMA Se van introduciendo alternativamente por el teclado nmeros positivos y negativos hasta un total de 100. Se pretende visualizar por pantalla la suma total de los nmeros positivos y la suma total de los nmeros negativos introducidos. PROBLEMAS Introducir las edades de los 35 alumnos de una clase e imprimir la edad del mas joven y la edad media de la clase. PROBLEMA Introducir tres nmeros A, B, C y visualizar el mayor de ellos.