flujograma programacion

14
  Itinerario Formativo: Programacion  Se gund o Año  Mat e ria: Dise ño d e p rogra m as y ma nip ula c ión d e d a to s  A p un te N° 5 - -Pá g. 1 CONTADORES, ACUMULADORE S Y SWITCHES CONTADORES Una variable es un campo de memoria capaz de almacenar un valor. Este valor, dependiendo de las necesidad es del programa, puede variar a lo largo del mismo. Un contador es una variable numérica 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 instrucción del tipo C = C + 1 siendo e la variable contador, e 1 el i ncremento/dec remento 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. Además, hay lenguajes que no permiten una instrucción de este tipo si el contador está sin inicializar. Un ejemplo de inicialización podría ser: C = 0; A = l; CONT = 0; etc. Una expresión del tipo C = C + I tiene como significado: .  Añadir el valor de I al' contenido actual de C.  Dejar el nuevo valor otra vez en C.  Así, si al comienzo del programa hemos inic ializado A con el valor O:  A = 0 y repetirnos tres veces la instrucción:  A = A + l Los sucesivos valores que tornaría dicha variable serían 1, 2, Y 3. Se podría afirmar, pues, que A está contando. En general, la función más usual de un contador es la de controlar el número de iteraciones que se van realizando en un bucle y determinar cuándo salir de él. Sin embargo, también puede irse incrementando o decrementando dentro del bucle cada vez que éste se realiza, pero no intervenir en la condición 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 matemáticas obtenidas por los 40 alumnos de una clase y contar cuántos de ellos han aprobado. Variables utili zadas NOTA: Variabl e para guardar las sucesivas notas que se vayan tecleando. C_ALUM: Contador de alumnos que controlará el número de notas introducidas. C_APRO: Contador de alumnos aprobados . Proceso Inicializar los contadores a 0. Se utilizará un bucle cuya condición de salida vendrá determinada por C_ALUM=40. Dentro de cada iteración 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 c ontador C_APRO.

Transcript of flujograma programacion

Page 1: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 1/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 1

CONTADORES, ACUMULADORES Y SWITCHES 

CONTADORES

Una variable es un campo de memoria capaz de almacenar un valor. Este valor, dependiendo de lasnecesidades del programa, puede variar a lo largo del mismo.Un contador es una variable numérica cuyo valor se incrementa o decrementa con cantidades fijas, quepueden ser positivas (incremento) o negativas (decremento).La forma de incrementar/decrementar el contador es mediante una instrucción 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, quese les asigna al comienzo del mismo para limpiar la variable de posibles valores anteriores. Además, haylenguajes que no permiten una instrucción de este tipo si el contador está sin inicializar.Un ejemplo de inicialización podría ser: C = 0; A = l; CONT = 0; etc.Una expresión del tipo C = C + I tiene como significado: .

• Añadir 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 instrucción:A = A + l

Los sucesivos valores que tornaría dicha variable serían 1, 2, Y 3. Se podría afirmar, pues, que A estácontando.

En general, la función más usual de un contador es la de controlar el número de iteraciones que se vanrealizando en un bucle y determinar cuándo salir de él.Sin embargo, también puede irse incrementando o decrementando dentro del bucle cada vez que éstese realiza, pero no intervenir en la condición 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 matemáticas obtenidas por los 40 alumnos de una clase y contar cuántos de elloshan aprobado.

Variables utilizadasNOTA: Variable para guardar las sucesivas notas que se vayan tecleando.C_ALUM: Contador de alumnos que controlará el número de notas introducidas.

C_APRO: Contador de alumnos aprobados.Proceso

Inicializar los contadores a 0.Se utilizará un bucle cuya condición de salida vendrá determinada por C_ALUM=40. Dentro de cadaiteración se introducirá la nota de un alumno, se sumará por tanto 1 a C_ALUM, y si Ía nota es mayor oigual a 5 se incrementará en 1 el contador C_APRO.

Page 2: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 2/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 2

ACUMULADORES

Un acumulador es una variable (campo de memoria) cuyo valor se incrementa/decrernenta concantidades variables.

Realmente, realiza la misma función que un contador con la diferencia de que en un acumulador el valorque 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 diversascantidades.

La forma de incrementar/decrementar un acumulador es mediante una instrucción del tipo:

AC = AC + S

Siendo AC el acumulador y S un valor variable.

INICIO

C_ALUM=0

C_ALUM=0

c_apro =

c_apro + 1 

c_alum =c_alum + 1

IntroducirNota

IntroducirNota

FINAL

Nota > 5

c_alum=40

SINO

SI

NO

Page 3: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 3/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 3

Los acumuladores que se utilizan en un programa, al igual que los contadores, deben inicializarse alcomienzo del mismo. Generalmente esta inicialización se hace a cero.

Ejemplo: 

Hallar la suma de los 100 primeros números 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 repetición se sumara 1 a C_NUM y se acumulara este valor sobre T_NUM.

SWITCH

Un switch es una variable que solo puede tomar dos valores diferentes durante el desarrollo de unprograma. Por eso se le denomina tambien conmutador o interruptor. Sus dos posibles valores los eligeel 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 queuna determinada situación se haya producido, se le modifica dicho valor. Después, en otro punto delprograma, al preguntar por su estado (su valor), se puede detectar si dicha situación ha ocurrido o no.

EJEMPLO 

Sumar por un lado los números impares y por otro los números pares comprendidos entre 1 y 100.

Variables utilizadas.• Sw: Switch para alternar los procesos con numero pares e impares.

C_NUM=0

C_NUM < 100

c_num =c_num + 1 

T_num=T_num+C_num

VisualizarT_NUM FINAL

NO

SI

INICIO

T_NUN=0 

Page 4: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 4/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 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 iteración 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 acumuladorT_impar y cambiando el valor al Sw para que en la siguiente iteración pase por la otra rama. Eltratamiento que se hace cuando Sw = “Par” es similar.

ALGUNAS NORMAS UTILES DE PROGRAMACION

Vamos a empezar a diseñar algoritmos para resolver problemas orientados hacia la informática degestión. Por ello, se explicará en este apunte una serie de métodos que solucionan de forma eficazciertas cuestiones de uso muy frecuente.

CALCULO DEL MAXIMO 

C_num = 0

Sw=”Impar”

T_par = T_par + C_num 

Sw = “Impar”

VisualizarT_par, t_impar

FINAL

NO

COMIENZO

Sw = “Impar”

T_par = 0

T_impar = 0

C_num = 100

C_num = C_num + 1

T_par = T_par + C_num 

Sw = “Par”

Page 5: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 5/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 5

Cuando se pretende calcular el valor máximo de un conjunto de valores que irá tomando sucesivamenteuna cierta variable, por ejemplo VAR, se debe utilizar otra variable auxiliar, (AUX-MAX), que seinicializará a un valor muy pequeño.

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 lavariable auxiliar para poder, a partir de ahora, comparar con él.

¿Por qué se inicializa AUX-MAX con un valor pequeño? Pues bien, se hace con el fin de que ya el primervalor de VAR sea mayor que él y así tomar éste como referencia para los demás.

Si los valores que puede tomar la variable VAR son numéricos y positivos, la variable auxiliar se sueleinicializar a 0.

Si no se sabe cómo será el rango de estos valores, se inicializa con un valor ficticio (LOW-VALUE), quela mayoría de los sistemas poseen, y que representa el valor más pequeño que puede considerar elsistema. Si el sistema o el lenguaje de programación no lo admite, se inicializa con el valor más pequeñoposible en cada caso.

CALCULO DEL MÍNIMO 

Utilizando los mismos razonamientos anteriores, para calcular el valor mínimo se necesitará una variableauxiliar, (AUX-MIN), que, en esta ocasión, se inicializará a un valor superior a cualquiera de los quepueda 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 más grande considerado por el sistema. Al igual que en el casoanterior, 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 lasramas de otra condicional.

Sí un proceso requiere la utilización de varias estructuras condicionales anidadas, se nos puede plantearla duda de qué condición poner en primer lugar. Pues bien, la norma que debe seguirse siempre esponer en primer lugar la pregunta que sea más excluyente.

Por ejemplo, supongamos que sobre los datos de los alumnos de un colegio, se desea conocer elnúmero de alumnos de 7° E.G.B. que tienen más de un hermano.Para cada alumno, la primera pregunta que debe hacerse, obviamente la más excluyente, es si dichoalumno es de 7° EGB y sólo si esto se cumple preguntar si tiene más de un hermano. De esta forma, lasegunda cuestión se hará únicamente a los alumnos de 7° EGB.Sí se hubieran planteado las preguntas a la inversa, primero si tiene más de un hermano y luego, encaso afirmativo, si es de 7° EGB, lo más probable es que se hubiera tenido que realizar la segundapregunta a un mayor número de alumnos, pues, si el colegio es grande, es muy posible encontrarmuchos alumnos con más de un hermano en el resto de los cursos.

EJERCICIOS  

Page 6: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 6/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 6 

Introducir un número desde el teclado y decir si es positivo, negativo o cero.

Variables utilizadas• NUM: Variable que guardará el número tecleado.

Proceso

Una vez introducido el número se preguntará si es mayor que O. Si la condición es cierta, es que elnúmero es positivo. Si es falsa, aún no se podrá asegurar nada, ya que puede ser negativo o cero. Por lotanto, en caso de no ser positivo habrá que hacer otra pregunta para saber si es negativo o cero. Esdecir, se utilizará una estructura condicional anidada.

EJERCICIO.

Introducir 20 números por el teclado e imprimir cuantos son positivos, cuantos negativos, cuantos cero yla suma total de todos ellos.

Variables utilizadas.

• Num: Variable que guardara los sucesivos números.• C_num: Contador que variara desde 1 hasta 20 para controlar los números que se van

tecleando.• C_pos: Contador de positivos.• C_cer: Contador de ceros.• T_num: Acumulador para el total de números.• C_num: Contador de los negativos.

Nota: Se tomara como norma general de nomenclatura anteponer la letra “C” a los nombres de loscontadores, 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.

Num < 0

Visualizar“Cero”

Visualizar“Negativo”

SI

SI

NO

NO

COMIENZO

IntroducirNum

Num > 0

Visualizar“Positivo”

FINAL

Page 7: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 7/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 7 

En cada repetición se introducirá un numero, se incrementara C_num en 1 y, de forma similar al ejercicioanterior, 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 número 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

Page 8: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 8/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 8

Inicializar el contador en 0Por 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 menorque 9.

EJERCICIO.

Visualizar la tabla de multiplicar del 1 al 9 de los 10 primero número naturales.Variables utilizadas.

• C_Num: Contador que variara desde 1 hasta 10 para contar los numeros de los que se quierehallar su tabla de multiplicar.

• C_Mul: Contador que variara de 1 a 9 por cada valor del contador anterior.

ProcesoSe inicializara C_Num a cero.Este proceso requiere 2 estructuras repetitivas anidadas. La más 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 cadauno de los valores de C_num, se efectuara otra para calcular su tabla de multiplicar. Fig. 3.9

Page 9: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 9/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 9

EJERCICIO.

Hallar la suma de los múltiplos de 5 comprendidos entre 1 y 100. Calcular además cuantos hay, yvisualizar cada uno de ellos.

Variables utilizadas

C_mult: Contador que ira tomando los valores 5, 10, 15 … hasta 100.C_Cont: Contador de múltiplos de 5.T_Sum: Acumulador que ira guardando las sumas parciales de los múltiplos de 5.

Proceso

Inicializar los contadores y el acumulador.Se utilizara una estructura repetitiva cuya condición de salida vendrá determinada por el valor de C_Mult.Ver siguiente y fig. 3.11

Page 10: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 10/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 10

Las 2 soluciones anteriores son igualmente correctas, la primera ha utilizado un bucle “tipo hasta” y estaultima solución ha empleado un bucle “tipo Mientras”, sin que ello implique la menor variación en losresultados.

Nota: Es muy importante aclarar que en programación, la solución a los problemas no es generalmenteúnica. Dependerá del buen criterio del programador.

EJERCICIO 

Realizar 10 veces el proceso siguiente: Introducir un número del 1 al 50 y visualizar a qué decenapertenece.

Variables utilizadas

• NUM: Variable que guardará el número 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 estructurascondicionales anidadas para averiguar a qué decena pertenece.

Solución

Page 11: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 11/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 11

EJERCICIO 

Introducir las estaturas (en cm.) de los 40 alumnos de una clase, imprimir la mayor de ellas y la estaturamedia.

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 condición C_CONT = 40.

Page 12: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 12/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 12

En cada iteración, se compara el valor de la estatura introducida con el contenido de la variable MAX. Sies mayor, se guarda como nuevo valor de MAX. Esta variable debe inicializarse antes de entrar en larepetitiva, con un valor suficientemente pequeño como para que la primera estatura introducida seamayor que dicho valor, y así sirva como referencia para las demás. Por ejemplo, MAX = 10.

EJERCICIO 

Introducir 10 parejas de números naturales A, B Y para cada una de ellas, visualizar su producto por elmétodo 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 AT_PROD: Acumulador para las sumas parciales y que al final contendrá el producto.

Page 13: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 13/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 13

Proceso

Se inicializará el contador C_CONT a 0.Se deberán utilizar dos estructuras repetitivas. Una de, ellas, la más general, controlará que se repita 10veces el proceso completo de multiplicar dos números.

Este último proceso implica los siguientes pasos:• La inicialización de las variables utilizadas en la multiplicación (C_A y T_PROD) .• La introducción de los dos números a multiplicar.• El incremento en 1 del contador de números introducidos.• La comprobación de que ambos Son distintos de cero, pues en caso contrario el producto es

cero.• La realización 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.

Page 14: flujograma programacion

5/11/2018 flujograma programacion - slidepdf.com

http://slidepdf.com/reader/full/flujograma-programacion 14/14

  Itinerario Formativo: ProgramacionSegundo Año Materia: Diseño de programas y manipulación de datos 

 Apunte N° 5 - -Pág. 14

PROBLEMAS PROPUESTOS 

PROBLEMAIntroducir números por el teclado hasta que la suma de todos ellos sea mayor que 1000.

PROBLEMAImprimir la suma de los múltiplos de 2 desde el 10 al 700.

PROBLEMAIntroducir números por el teclado hasta que se teclee el 0, e imprimir la media aritmética de los negativosy de los positivos.

PROBLEMADada la ecuación

Y = X3 + 8 * X2 + 3 * X

Imprimir el valor de Y correspondiente a los valores de X múltiplos de 3, desde el 9 al 60.

PROBLEMA

Introducir dos números naturales e imprimir su cociente entero por el método de las restas sucesivas.

PROBLEMA Se van introduciendo alternativamente por el teclado números positivos y negativos hasta un total de100. Se pretende visualizar por pantalla la suma total de los números positivos y la suma total de losnúmeros negativos introducidos.

PROBLEMAS Introducir las edades de los 35 alumnos de una clase e imprimir la edad del mas joven y la edad mediade la clase.

PROBLEMAIntroducir tres números A, B, C y visualizar el mayor de ellos.