49
Unidad 2 Estructura repetitiva Hasta el momento se han estudiado dos tipos de estructuras que sólo se ejecutan una sola vez (estructura secuencial, estructura de decisión lógica), en una gran cantidad de algoritmos, se necesita que un conjunto de instrucciones sea ejecutado un número de veces determinado o que se ejecuten hasta que cumplan una condición determinada, la estructura algorítmica que responde a este tipo de necesidades, es la estructura repetitiva (mientras). Estructura mientras (condición lógica) conjunto de instrucciones si la condición lógica es verdadera fin mientras Funcionamiento Cuando la condición lógica es verdadera se ejecutan las instrucciones que se encuentren entre mientras y fin mientras, el ciclo termina cuando la condición lógica a partir de la cual se esta controlando el ciclo se vuelve falsa. Y se continúa ejecutando las instrucciones que se encuentren después del fin mientras. Observación Cuando se emplea la estructura mientras, se crea un ciclo que se ejecuta un número determinado de veces, se debe garantizar que la variable o las variables con las que se este evaluando la condición lógica, en algún momento se vuelvan falsas. Esto asegura que el ciclo no se vuelve infinito y de esta forma se evita violar una de las condiciones necesarias, para que un determinado conjunto de instrucciones sea considerado algoritmo. Elementos empleados cuando se emplea la estructura mientras Jorge Hernán Álvarez

Modulo_Estructura Repetitiva.553.doc

Embed Size (px)

Citation preview

Page 1: Modulo_Estructura Repetitiva.553.doc

Unidad 2

Estructura repetitiva

Hasta el momento se han estudiado dos tipos de estructuras que sólo se ejecutan una sola vez (estructura secuencial, estructura de decisión lógica), en una gran cantidad de algoritmos, se necesita que un conjunto de instrucciones sea ejecutado un número de veces determinado o que se ejecuten hasta que cumplan una condición determinada, la estructura algorítmica que responde a este tipo de necesidades, es la estructura repetitiva (mientras).

Estructura

mientras (condición lógica) conjunto de instrucciones si la condición lógica es verdaderafin mientras

Funcionamiento

Cuando la condición lógica es verdadera se ejecutan las instrucciones que se encuentren entre mientras y fin mientras, el ciclo termina cuando la condición lógica a partir de la cual se esta controlando el ciclo se vuelve falsa. Y se continúa ejecutando las instrucciones que se encuentren después del fin mientras.

Observación

Cuando se emplea la estructura mientras, se crea un ciclo que se ejecuta un número determinado de veces, se debe garantizar que la variable o las variables con las que se este evaluando la condición lógica, en algún momento se vuelvan falsas. Esto asegura que el ciclo no se vuelve infinito y de esta forma se evita violar una de las condiciones necesarias, para que un determinado conjunto de instrucciones sea considerado algoritmo.

Elementos empleados cuando se emplea la estructura mientras

Contador

En ocasiones es importante llevar un conteo del número de veces que un determinado suceso se presenta, el conteo se realiza con una variable que se va incrementando a medida que el ciclo se repite, el contador es una variable que aumenta o disminuye en un valor constante, cada vez que el ciclo se ejecuta.contador = contador + incremento contador = contador - incremento

El incremento es un valor constante

Jorge Hernán Álvarez

Page 2: Modulo_Estructura Repetitiva.553.doc

Observación

Es importante inicializar el contador o los contadores cada vez que se requiera utilizar variables contador, esto con el fin de borrar el valor en memoria con el que aparece el contador al iniciar el ciclo.

Ejemplo i=1

Acumulador

La función principal del acumulador, es la de almacenar valores variables en ciclos repetitivos.

acumulador = acumulador + expresión acumulador = acumulador – expresión

Ejemplo 1

Elaborar un algoritmo que sume los primeros tres números naturales

Datos de entrada : ninguno, porque los tres primeros números naturales los conoce el programador y son: 1 2 3

Datos de salida: la suma de los tres primeros números naturales.

Variable

suma: número, la suma de los números 1 + 2 +3 se almacenaran en la variables suma. Estrategia

En éste algoritmo sólo hay que sumar los números 1+2+3 y el resultado mostrarlo en pantalla

InicioDefinición de variables suma: númeroAlgoritmosuma = 1+2+3muestre: “el resultado de la suma es: “, sumafin_Inicio

Ejemplo 2

Elaborar un algoritmo que sume los primeros cinco números naturales.

Jorge Hernán Álvarez

Page 3: Modulo_Estructura Repetitiva.553.doc

InicioDefinición de variables suma: númeroAlgoritmosuma = 1+2+3+4+5muestre: “el resultado de la suma es: “, sumafin_Inicio

si se necesitara sumar los 100 primeros números naturales, se necesitaría realizar el siguiente cálculo, 1 + 2 +3 + …. +100, es evidente que realizarlo de la forma que se ha venido trabajando es muy complicado, ya que si se necesita sumar los 10000 primeros números naturales, el cálculo seria el siguiente 1 + 2 +3 + 4 + 5 + 6 +… + 10000, otra dificultad, parte del hecho que la persona que realiza el algoritmo, tiene que estar realizando las diferentes modificaciones cuando sean solicitadas. Una forma más adecuada de realizar el algoritmo, es replantearlo de la siguiente forma:

Ejemplo 3

Elaborar algoritmo que sume los primeros n números naturales, donde n es un número que se ingresa por teclado. Los números naturales son: 1 2 3 4 5 6 7 8 9 10………. n

Datos de entrada: n, el número de valores que se desean sumar

Datos de salida: la suma de los n primeros números naturales

Variables

n: número , se almacena la cantidad de números que se desean sumar.suma: número, se almacena la suma de los n primeros números naturales i: número, contador

Estrategia

Es importante tener en cuenta, que en este caso no se sabe la cantidad de números que se desean sumar, por esta razón, hay que emplear un tipo de variable que cuente los números hasta que se llegué a n, esta variable será un contador que se definirá de la siguiente forma.

Los números naturales inician en 1, se puede inicializar la variable contador en 1.

Jorge Hernán Álvarez

Page 4: Modulo_Estructura Repetitiva.553.doc

i = 1

Los números naturales se incrementan de 1 en 1 ejemplo 1 2 3 4 5 6…, luego el contador se puede definir de la siguiente manera:

i = i + 1 donde 1 es el incremento que realiza el contador en cada una de las entradas al ciclo.

Como se necesita ir acumulando la suma de 1 + 2 + 3 + 4 + 5 +….n, se debe emplear un acumulador, éste debe ser inicializado en cero, para poder borrar el valor con el que la variable suma sea definido en memoria (basura).

Se puede observar que lo que se esta sumando en cada iteración, es el valor que tiene el contador, ahora para definir el acumulador sólo hay que escribir lo siguiente.

suma = suma + i donde i es la variable tipo contador.

lea: n en esta instrucción el usuario define la cantidad de números que desea sumar.i = 1 inicialización de la variable contadorsuma = 0 inicialización del acumuladores importante definir una condición que permita sumar los n primeros números, a partir de los conteos que realiza el contadormientras (i<= n) dentro del ciclo mientras, se introducirán, los contadores y los acumuladores, ya que son las variables que van cambiando con cada iteración. El orden en el que se escriban las instrucciones siempre dependerá, del valor con el que se halla inicializado el contador, en este caso, primero se emplea la instrucción suma = suma + i y segundo se emplea la instrucción i = i + 1, dando origen al siguiente ciclo.

mientras (i<= n) suma = suma + i i = i + 1fin mientras

Al terminar el ciclo se debe imprimir la suma de los n primeros números, una instrucción que da respuesta a la necesidad es: muestre: “la suma de los “, n, “ primeros números es: “, suma

Algoritmo completoInicioDefinición de variablesi, suma: númeroAlgoritmolea: ni = 1

Jorge Hernán Álvarez

Page 5: Modulo_Estructura Repetitiva.553.doc

suma = 0mientras (i<= n) suma = suma + i i = i + 1fin mientrasmuestre : “la suma de los “, n, “ primeros números es: “, sumafin_Inicio

Prueba de escritorio

Se ingresa por teclado el número 5, quedando la variable n con el número 5, las variables i y suma con los valores 1 y 0 respectivamente, tal y como se muestra en memoria.

n i suma5 1 0

Ahora se estudiara lo que ocurre en memoria cuando se ejecuta el ciclo mientras, al evaluar la condición es i menor o igual que n, se puede verificar que es verdadera con lo que se ejecutan las instrucciones que se encuentran dentro del ciclo mientras, quedando la memoria de la siguiente forma

n i suma5 1 0

2 1

Al ejecutar la instrucción fin mientras, automáticamente se vuelve a evaluar la condición es i menor o igual que n, como el valor de i es 2 y el de n es 5, la condición es verdadera y se vuelven a ejecutar las instrucciones que se encuentran dentro del mientras. El cambio de valores que se ha realizado en las variables, se presenta a continuación.

n i suma5 1 0

2 13 3

Al ejecutar la instrucción fin mientras, automáticamente se vuelve a evaluar la condición es i menor o igual que n, como el valor de i ahora es 3 y el de n es 5, la condición es verdadera y se vuelven a ejecutar las instrucciones que se encuentran dentro del mientras. El cambio de valores que se ha realizado en las variables, se presenta a continuación.

n i suma5 1 0

Jorge Hernán Álvarez

Page 6: Modulo_Estructura Repetitiva.553.doc

2 13 34 6

Al ejecutar la instrucción fin mientras, automáticamente se vuelve a evaluar la condición es i menor o igual que n, como el valor de i ahora es 4 y el de n es 5, la condición es verdadera y se vuelven a ejecutar las instrucciones que se encuentran dentro del mientras. El cambio de valores que se ha realizado en las variables, se presenta a continuación.

n i suma5 1 0

2 13 34 65 10

Al ejecutar la instrucción fin mientras, automáticamente se vuelve a evaluar la condición es i menor o igual que n, como el valor de i ahora es 5 y el de n es 5, la condición es verdadera y se vuelven a ejecutar las instrucciones que se encuentran dentro del mientras. El cambio de valores que se ha realizado en las variables, se presenta a continuación.

n i suma5 1 0

2 13 34 65 106 15

Al ejecutar la instrucción fin mientras, automáticamente se vuelve a evaluar la condición es i menor o igual que n, como el valor de i ahora es 6 y el de n es 5, la condición es falsa, el algoritmo se sale del ciclo y se ejecuta por último la instrucciónmuestre: “la suma de los “, n, “ primeros números es: “, sumala que imprime por pantalla, la suma de los 5 primeros números es: 15.

Ejemplo 4

Elaborar un algoritmo que realice los siguientes cálculos de n números ingresados por teclado, si el número ingresado por teclado es par calcule la sumatoria, y si el número ingresado por teclado es impar calcule la productoria. La sumatoria es la suma de todos los números y la productoria es el producto de todos los números.

Jorge Hernán Álvarez

Page 7: Modulo_Estructura Repetitiva.553.doc

Ejemplo si se introducen por teclado los números 10, 12, 11, 17, 1, 2, 4, el programa debe sumar los siguientes números 10 + 12 + 2 + 4, y calcular el producto de 11*17*1.

Datos de entrada: el número de valores que se desean operar y cada uno de los valores que se van ha ingresar por teclado.

Datos de salida: la sumatoria y la productoria

Variables

n: numero, cantidad de valores que se desean operarvalor: numero, valores que se van ha ingresar por tecladosuma: numero, sumatoria de los números paresprod: número, productoria de los números imparescon: número, contador que controla la finalización del ciclo

Estrategia

Para determinar si un número es para o impar, se debe emplear el operador modulo, que devuelve el residuo de la división de 2 números.

Condición un número es par si es divisible por dos, y es impar si no es divisible por dos.

Si se desea saber si un número es par, se realiza la siguiente pregunta si (valor % 2==0) entonces, si la condición es verdadera el número es par, y si la condición es falsa el número es impar.

Para el cálculo de la sumatoria, se debe realizar la suma de los valores que cumplen la condición si (valor % 2==0) entonces, se debe ingresar la siguiente instrucción suma = suma + valor, donde valor es el número que cumple la condición de ser par.Para el cálculo de la productoria, se debe realizar el producto de los números que cumplen la condición falsa de si (valor % 2==0) entonces, se debe ingresar la siguiente instrucción prod = prod * valor, hay que tener en cuenta que la variable prod a diferencia de suma debe ser inicializada en uno, ya que si prod se inicializa con cero la productoria siempre da cero.

lea: n en esta instrucción se ingresa el número de valores que se desean ingresar por teclado. con = 1 variable que controla la cantidad de números que se van a ingresar al cicloprod = 1 variable que se inicializa en uno, para poder realizar la productoria

Jorge Hernán Álvarez

Page 8: Modulo_Estructura Repetitiva.553.doc

suma = 0 inicialización de la variable que acumula la sumatoria de los números pares.Ahora se va ha estudiar las instrucciones que serán ingresadas al ciclo. Para garantizar que se escriban n valores por teclado, se debe escribir la siguiente condición para la instrucción mientras.mientras (con<= n) luego de crear la instrucción mientras, se debe escribir la instrucción para ingresar cada uno de los valores por teclado, la instrucción es lea: valor, ahora se debe averiguar, si el valor ingresado por teclado es par o impar, se escribe la siguiente condición, si (valor % 2==0) entonces, si la condición es verdadera el número es par y sino el número es impar, el conjunto de instrucciones queda de la siguiente manera.

si (valor % 2==0) entonces éste conjunto de instrucciones, suma = suma + valor garantiza que el valor que se sume sino sea par, y el que se multiplique sea prod = prod * valor imparfin si

El ciclo completo queda así

mientras (con<= n) lea: valor si (valor % 2==0) entonces suma = suma + valor sino prod = prod * valor fin si con = con +1 el contador garantiza que el ciclo no se vuelva infinito fin mientras

Algoritmo completo

InicioDefinición de variables con, suma, prod, n: número Algoritmolea: ncon = 1prod =1 suma = 0mientras (con<= n) lea: valor si (valor % 2==0) entonces suma = suma + valor sino prod = prod * valor

Jorge Hernán Álvarez

Page 9: Modulo_Estructura Repetitiva.553.doc

fin si con = con +1 el contador garantiza que el ciclo no se vuelva infinito fin mientrasmuestre: “el resulta de la suma es: “, suma, “el resultado de la productoria es: “, prodfin_Inicio

Ejemplo 5

Encontrar el error en el siguiente algoritmo

InicioDefinición de variablesi, j, k, n: númeroAlgoritmolea: ni=1j=2k=3mientras (i<= n) j = j + k k =2*j fin mientrasmuestre: “el valor de j es: “, j, “el valor de k es: “, k fin_Inicio

Se puede observar que todas las variables que se emplean en el algoritmo, han sido definidas con anterioridad.

Prueba de escritorio

Al introducir por teclado el número 3, la variable n toma el valor de 3, quedando la memoria de la siguiente manera.

n i j k3 1 2 3

Ahora se realizara el estudio de lo que ocurre con las variables, cada vez que se ejecuta el ciclo mientras, se debe tener en cuenta que el ciclo funciona, siempre que el valor de la variable i sea menor o igual que el valor de la variable n.

n i j k3 1 2 3

5 1015 30

Jorge Hernán Álvarez

Page 10: Modulo_Estructura Repetitiva.553.doc

45 90135 270405 810

.

.

.

.

.

.

.

.Infinito infinit

o

Se puede observar, que en cada una de las iteraciones la variable i no cambia y siempre la condición (i<= n), se hace verdadera, dando origen a un ciclo infinito, como el algoritmo nunca termina, no se puede saber cual es el resultado final de la variable j y la variable k, como es importante que el algoritmo termine en algún momento, se debe adicionar una nueva instrucción, que permita ir incrementando el valor de la variable i hasta que ésta variable se haga mayor que la variable n, de esta forma, se puede garantizar que el ciclo termine en algún momento.

Los algoritmos que se han resuelto hasta el momento de estructura mientras, se ha conocido el número de datos que se desean operar, en ocasiones no se conoce el número de datos que se desean manejar. Para garantizar que el ciclo en algún momento termine, se debe emplear alguna cualidad que tengan los datos, de esta forma crear una condición que permita finalizar el ciclo, cuando se introduzca algún valor que no cumpla la cualidad.

Ejemplo 5

Elaborar un algoritmo que calcule el promedio de una serie de números mayores que cero.

Datos de entrada: la serie de números

Datos de salida: el promedio de la serie de números

Variables

valor: número, en la variable valor, se almacenaran cada uno de los números a los cuales se desea calcular el promedio.con: número, cuenta la cantidad de números que se desean sumarsuma: número, almacena la suma de la serie de númerospro: número, almacena el valor del promedio de la serie de números

Jorge Hernán Álvarez

Page 11: Modulo_Estructura Repetitiva.553.doc

Estrategia

En este algoritmo no se conoce la cantidad de datos que se deben ingresar, por tal motivo hay que definir una condición que garantice, que al ingresar un número que no sea mayor que cero, el ciclo termine, la condición es, mientras (valor > 0).

El promedio de una serie de números se define, como la suma de la serie de números dividido la cantidad de números.

pro = suma / con

InicioDefinición de variablesvalor, con, suma, proAlgoritmolea: valorcon = 0suma = 0mientras (valor > 0) con = con + 1 suma = suma + valor lea: valorfin mientraspro = suma /conmuestre: “el promedio de la serie de números es: “, pro

Prueba de escritorio

Al ejecutar el programa el usuario ingresará por teclado los siguientes valores: 1 4 6 7 8 9 -1, se realizara el seguimiento de lo que ocurre cada vez que se ingresa cada uno de los valores.

Antes de comenzar el ciclo mientras, la memoria se encuentra de la siguiente manera.

valor suma con pro1 0 0 Basur

a Al ingresar al ciclo mientras

valor suma con Pro1 0 0 Basur

a4 1 16 5 2

Jorge Hernán Álvarez

Page 12: Modulo_Estructura Repetitiva.553.doc

7 11 38 18 49 26 5-1 35 6

El valor de la variable valor es -1, cuando se evalúa la condición (valor > 0), el ciclo termina, porque -1 no es mayor que cero, al salir del ciclo se ejecuta la instrucción, pro = suma /con, como el valor de la variables suma es 35 y el valor de la variable con es 6, la variable pro queda valiendo 35 / 6, que da como resultado 5,83333, que es el promedio de la serie de números positivos.

Para terminar se ejecuta la instrucción, muestre: “el promedio de la serie de números es: “, pro, la cual muestra por pantalla, el promedio de la serie de números es: 5,83333.

Banderas o switche

Es una variable que contiene dos valores mutuamente excluyentes,

ejemplo

V o F, 1 o 2, 0 o 1 etc. La bandera permite, a partir de una condición dada por el programador, seleccionar una de dos alternativas a seguir en un algoritmo, la bandera también es empleada, para verificar si se ha ingresado un determinado valor, en una serie de valores ingresados por teclado.

Ejemplo 6

Elaborar algoritmo que genere primeros n términos de la siguiente serie 10, 12, 13, 15, 16, 18, 19, 21…

Datos de entrada: el número de términos

Datos de salida: la serie de números

variables

n: número, cantidad de términos que se desean crearbandera: número, variable que controla la generación de los términoster: númeroj: número, variable tipo contador, que controla hasta que se hallan generado los n términos.

Estrategia

Jorge Hernán Álvarez

Page 13: Modulo_Estructura Repetitiva.553.doc

Se puede observar, que la serie se genera iniciando en 10 y se suma de forma alternada 2 y 1, es evidente que es importante saber cuando se suma 2 y cuando se suma 1, una posible solución es empleando una bandera, de forma que cuando la bandera valga 0 se sume 2 al término y se cambie el valor de la bandera a uno, cuando la bandera valga 1 se sume 1 al término y se cambie el valor de la bandera a cero.

la variable bandera se inicializa en cero, para cuando se evalué la condición (bandera == 0) , se sume 2 al término, y así generar el número 12.

la variable j se inicializa en 1

ter se inicializa en 10, porque es el primer número de la serie

la estructura lógica queda de la siguiente manera:

si (bandera == 0) entonces ter = ter + 2 bandera = 1 sino ter = ter + 1 bandera = 0fin si

La estructura mientras queda de la siguiente forma

mientras (j<= n) muestre: ter al ingresar al ciclo, el primer valor que se imprime es ter, y como el primer valor de ter es 10, el resultado que se presenta en pantalla es 10, introduciendo la condición lógica, se logra que se sume 2 y 1 a la variable ter. si (bandera == 0) entonces ter = ter + 2 bandera = 1 sino ter = ter + 1 bandera = 0fin sipara terminar el ciclo, hay que introducir el contador para que en algún momento termine el ciclo.j = j + 1fin mientras

Algoritmo completo

Jorge Hernán Álvarez

Page 14: Modulo_Estructura Repetitiva.553.doc

Inicio Definición de variablesn, bandera, ter, j: númerolea: nbandera = 0j = 1ter = 10mientras (j<= n) muestre: ter si (bandera == 0) entonces ter = ter + 2 bandera = 1 sino ter = ter + 1 bandera = 0 fin si j = j + 1fin mientrasfin_Inicio

Prueba de escritorio

Se ingresa por teclado el número 5, Antes de comenzar el ciclo mientras, la memoria se encuentra de la siguiente forma.

n bandera ter j5 0 10 1

Al ingresar al ciclo mientras

n bandera ter j5 0 10 1

1 12 20 13 31 15 40 16 51 18 6

Todos los valores tachados con los que se encuentra la variable ter, son mostrados por pantalla de la siguiente forma: 10 12 13 15 16.

Otra forma de realizar el mismo algoritmo, sin emplear variable tipo bandera, es la siguiente.

Inicio Definición de variablesn, ter, j: número

Jorge Hernán Álvarez

Page 15: Modulo_Estructura Repetitiva.553.doc

lea: nj = 1ter = 10mientras (j<= n) muestre: ter si (j % 2 == 1) entonces ter = ter + 2 sino ter = ter + 1 fin si j = j + 1fin mientrasfin_Inicio La condición (j % 2 == 1), asegura que el valor de la j en la primera iteración es impar, y suma 2 a la variable ter, en la segunda iteración, como la variable j es par, suma 1 a la variable ter, con esta condición se verifica, que en una iteración se suma 2 y en la otra 1, tal como lo hace el algoritmo con bandera.

Estructura repetitiva para

La estructura para permite que un conjunto de instrucciones se repita un número determinado de veces.Cuando se emplea la estructura para, se debe saber la cantidad de elementos con los que se desea trabajar, a la estructura para, se le define la inicialización del contador interno, y éste va creciendo o decreciendo un número constante de forma automática, el ciclo termina cuando el contador interno pasa la condición que ha sido determinada por el programador.

para variable = desde valor inicial hasta valor final, incremento haga instruccionesfin para

Cuando el incremento es de uno, no es necesario escribir el incremento.

Ejemplo

para i = desde 1 hasta 6 haga muestre: ifin para

Jorge Hernán Álvarez

Page 16: Modulo_Estructura Repetitiva.553.doc

Como no se definió incremento, la estructura para, incrementa la variable i de 1 en 1, cuando se ingresa al ciclo para, la variable i entra valiendo 1, tal como lo define la palabra desde, al ingresar al ciclo la estructura verifica que 1 sea menor o igual que 6, como 1 es menor o igual que 6, entonces se ejecuta la instrucción muestre: i, con lo que el programa muestra en pantalla el número 1, automáticamente se incrementa la variable i en 1 cambiando el valor de 1 por 2, como 2 es menor o igual que 6, entonces nuevamente se ejecuta la instrucción muestre: i, la cual muestra por pantalla 2, el ciclo termina cuando el valor de la variable i sea mayor que 6.

Ejemplo

para i = desde 1 hasta 10, 2 haga muestre: ifin para

El mismo ejemplo empleando la estructura mientrasi = 1mientras (i<= 10) muestre: ii = i + 2fin mientras

Ejemplo 7

Reescribir el siguiente conjunto de instrucciones con estructura mientras.

s = 0para i = desde 1 hasta 10 haga s = s + ifin para

Para pasar la estructura para a mientras.

Se determina en que valor se inicializa la variable i, en este caso la variable i se inicializa en 1.

Se determina la condición con la que se evalúa el ciclo, en este caso como la variable i va hasta 10, la condición que permite controlar esta situación es (i<= 10).

Se determina en cuanto se esta incrementando la variable i, como no aparece en la estructura para ningún incremento, por defecto la estructura para incrementa en 1.

s = 0i = 1mientras (i<=10)

Jorge Hernán Álvarez

Page 17: Modulo_Estructura Repetitiva.553.doc

s = s + i i = i + 1fin mientras.

Ejemplo 8

Elaborar algoritmo que permita calcular el factorial de un número, el factorial de un número n se encuentra de la siguiente forma:

n! = 1*2*3*4*….*n

n! significa el factorial de n, ejemplo si n = 5, el factorial de 5 es:

5! = 1*2*3*4*5, que da como resultado 120

Datos de entrada: el número al que se le desea calcular el factorial

Datos de salida: el factorial del número

Variables

n: número , número al que se le calculará el factorialfact: número, el factorial del númeroi: número, variable tipo contador

Estrategia

Para calcular el factorial de un número, se puede emplear un ciclo para, que inicie en 1 y termine en n, con incrementos de 1.

La variable fact, debe ser inicializada en 1, porque las operaciones que se van ha realizar son productos. ¿Qué pasa si se inicializa la variable fact en cero?

El ciclo para, se puede escribir de la siguiente manera:

para i = desde 1 hasta n haga fact = fact * ifin para

Algoritmo completo

InicioDefinición de variablesn, fact, i:númerolea: nfact = 1para i = desde 1 hasta n haga

Jorge Hernán Álvarez

Page 18: Modulo_Estructura Repetitiva.553.doc

fact = fact * i fin paramuestre: “el factorial de “, n, “ es: “, factfin_Inicio Prueba de escritorio

Se ingresa por teclado el número 5, quedando almacenado en la variable n el número 5.

n fact i5 1 1

1 22 36 424 5

120 6

Cuando se termina de ejecutar el ciclo para, la variable i vale 6, como la condición 6<= 5 es falsa, el algoritmo se sale del ciclo y ejecuta la instrucción muestre: “el factorial de “, n, “ es: “, fact, instrucción que imprime por pantalla, el factorial de 5 es: 120.

Otra forma de realizar el mismo algoritmo empleando ciclo mientras

InicioDefinición de variablesn, fact, i: númerolea: nfact = 1i = 1mientras (i<= n) fact = fact * i i = i + 1 fin mientrasmuestre: “el factorial de “, n, “ es: “, factfin_Inicio

Observación

Cualquier estructura para, puede ser pasado a estructura mientras, siendo la estructura para, un caso particular de la estructura mientras.La estructura para, se emplea, porque simplifica la escritura de algunas instrucciones que siempre habría que escribir, si se empleara estructura mientras.

Jorge Hernán Álvarez

Page 19: Modulo_Estructura Repetitiva.553.doc

Procedimientos y funciones

Todos los algoritmos que se han elaborado hasta el momento en el modulo, han sido creados como un todo, una de las cosas más importantes de hacer algoritmos, es poder dividirlos, en otros más pequeños que realicen una tarea específica, bajo la dependencia de un programa, otro procedimiento o una función.

Procedimiento: es un subprograma que devuelve al programa que lo llama cero o más valores, entrega el control de ejecución a la siguiente instrucción de donde fue llamado.

Función: es un subprograma que retorna un único valor, entrega el control de ejecución en la misma instrucción de donde fue llamado, el valor que devuelve, lo hace empleando la instrucción retorne. Las ventajas que trae trabajar con procedimientos o funciones son:

Evita la programación redundante de código que se repite varias veces.

Los programas son más claros y fáciles de entender.

Cada procedimiento o función puede ser probado de manera independiente, con lo que se logra encontrar con mayor facilidad cualquier error.

Estructura de los procedimientos

Procedimiento

Subprograma a (parámetro 1, parámetro 2, …., parámetro n) Definición variables locales Instrucción 1 Instrucción 2 . . . . . Instrucción nfin subprograma

Donde a, es el nombre del procedimiento.

Estructura de las funciones

Jorge Hernán Álvarez

Page 20: Modulo_Estructura Repetitiva.553.doc

Función b (parámetro 1, parámetro 2, …., parámetro n) Definición variables locales Instrucción 1 Instrucción 2 . . . . Instrucción n retorne resultadofin Función

Donde b, es el nombre de la función

Programa principal

InicioDefinición de variablesAlgoritmoInstruccion1Instrucción 2Subprograma a (parámetro 1, parámetro 2, …., parámetro n)Instrucción 3Instrucción 4resul = Función b (parámetro 1, parámetro 2, ……, parámetro n)fin_Inicio

Cuando se inicia el proceso de ejecución, el programa principal ejecuta la instrucción 1, la instrucción 2, luego entrega el control de ejecución al programa al subprograma a, éste ejecuta las instrucciones que se han escrito en el procedimiento, al terminar la ejecución del procedimiento, entrega el control al programa principal, quien continúa con la ejecución de la instrucción siguiente al procedimiento, ósea la instrucción 3, luego se ejecuta la instrucción 4, el programa principal entrega el control a la Función b, la Función b ejecuta todas las instrucciones, al terminar entrega el control de ejecución al programa principal, el cual ejecuta la instrucción donde se esta asignando el valor retornado por la Función b, ósea resul = Función b, luego se termina el programa con la ejecución de la instrucción fin_inicio.

Observación

Los parámetros que envía o recibe el procedimiento o la función, deben ser del mismo tipo que los parámetros que envía o recibe el

Jorge Hernán Álvarez

Page 21: Modulo_Estructura Repetitiva.553.doc

programa principal, el número de parámetros que se envía o se recibe debe ser la misma cantidad, tanto para el programa principal, como para el procedimiento o la función.

Parámetros El paso de información entre el programa principal y los subprogramas, se hace empleando parámetros, estos pueden ser:

Por valor o por referencia, parámetros por valor, son parámetros que entregan al parámetro que los recibe una copia del valor con el que vienen, los cambios que se realicen dentro del procedimiento o la función, no afecta en nada al parámetro cuando es recibido por el programa principal.

Parámetros por referencia, a diferencia de los parámetros por valor los cambios que se realicen en el procedimiento o función, también se verán reflejados en el programa principal.

Variables locales, son variables que solo pueden ser accedidas dentro del subprograma.

Ejemplo 1

Elaborar un subprograma que encuentre: la suma, resta y multiplicación de 2 números.

Para resolver el problema hay que definir las variables por valor, estas variables serán enviadas desde el programa principal, al realizar los cálculos, el subprograma devolverá la suma, resta, multiplicación al programa principal.

El tipo de subprograma que se va a emplear es:

Procedimiento, porque el subprograma devuelve más de un valor. Nombre del procedimiento: operar

Parámetros por valor: los dos números con los que se desean hacer las operaciones.

Parámetros por referencia: el resultado de la suma, la resta y la multiplicación.

Variables locales al procedimiento: el procedimiento no requiere de variables locales.

Variables

Jorge Hernán Álvarez

Page 22: Modulo_Estructura Repetitiva.553.doc

num1, num2: número, parámetros por valor, los cuales son enviados por el programa principal, para que el procedimiento realice los cálculos. s, r, m: numero, parámetros por referencia, que son devueltos al programa principal después de haber realizado la suma, la resta y la multiplicación de los parámetros num1 y num2.

Estrategia

Para que el procedimiento realice los cálculos de la suma, resta y multiplicación, se deben enviar los parámetros por valor num1 y num2, para devolver los resultados de la suma se debe asignar a las variables por referencia s = num1 + num2, r = num1 – num2 y m = num1 * num2, quedando el procedimiento de la siguiente manera.

Subprograma operar (por valor num1, num2: número, por ref s, r, m: número) s = num1 + num2 r = num1 – num2 m = num1 * num2fin subprograma

Ejemplo 2

Elaborar el programa principal que permite mostrar en pantalla el resultado de la suma, la resta y la multiplicación del ejemplo anterior.

Datos de entrada: los 2 números que se desean sumar.

Datos de salida: el resultado de la suma, la resta y la multiplicación

Variables

a, b: números, los valores que se van a enviar desde el programa principal al procedimiento, para que efectúe los cálculos.

suma, resta, mul: números, los valores que recibe el programa principal, después de realizados los respectivos cálculos.Estrategia

El programa principal, lee dos valores que se ingresan por teclado, éstos valores se envían al procedimiento, para que se efectúen los cálculos, al realizarse los cálculos en el procedimiento, el programa principal recibe el resultado de la suma, la resta y la multiplicación, estos valores los imprime por pantalla.

Programa completo

Jorge Hernán Álvarez

Page 23: Modulo_Estructura Repetitiva.553.doc

Subprograma operar (por valor num1, num2: número, por ref s, r, m: número) s = num1 + num2 r = num1 – num2 m = num1 * num2fin subprograma

InicioDefinición de variablesa, b, suma, resta, mul: númeromuestre: “favor ingresar el valor de los dos números que desea operar”lea: a, boperar (a, b, suma, resta, mul)muestre: “el valor de la suma es: “, suma, “ el valor de la resta es: “, resta, “ el valor de la multiplicación es: “, mulfin_Inicio Prueba de escritorio

Cuando se elaboran subprogramas, se comienza la prueba de escritorio por el programa principal.

Al ejecutar la instrucción muestre: “favor ingresar el valor de los dos números que desea operar”, el programa solicita por pantalla al usuario que ingrese dos números.

Si se ingresan los números 15 y 10, la variable a queda valiendo 15 y la variable b queda valiendo 10, quedando la memoria de la siguiente manera:

Memoria

Jorge Hernán Álvarez

15 10

a b suma, s

basura

resta, r

basura

mul, m

basura

num1

num2basura

basura

Page 24: Modulo_Estructura Repetitiva.553.doc

Las cuadros que se encuentran punteados, indican que las direcciones de memoria son compartidas, o sea que los cambios que sufra una variable inmediatamente se refleja en la otra, a esto se le llama parámetros por referencia.

Al ejecutar la instrucción operar (a, b, suma, resta, mul), el programa principal, entrega el control de ejecución al procedimiento operar, enviando los valores 15 y 10 a las variables num1 y num2 respectivamente, quedando la memoria de la siguiente manera:

Memoria

Se puede observar que la variable a, hace una copia del valor que tiene en la variable num1, y la variable b, hace una copia del valor que tiene en la variable num2, dentro del procedimiento se ejecutan las instrucciones:

s = num1 + num2r = num1 – num2m = num1 * num2 Al terminar de ejecutar las instrucciones las variables toman los siguientes valores, s queda valiendo 25, r queda valiendo 5 y m queda valiendo 150, tal como se muestra en la siguiente figura:

Memoria

Jorge Hernán Álvarez

15 10

a b suma, s

basura

resta, r

basura

mul, m

basura

num1 num2

15 10a

15 10

a b suma, s

25

resta, r

5

mul, m

150

num1 num2

15 10a

Page 25: Modulo_Estructura Repetitiva.553.doc

Al terminar la ejecución del procedimiento, se devuelve el control de ejecución al programa principal, el cual continúa ejecutando la instrucción siguiente a operar (a, b, suma, resta, mul), que es: muestre: “el valor de la suma es: “, suma, “ el valor de la resta es: “, resta, “ el valor de la multiplicación es: “, mul, lo cual muestra por pantalla, el valor de la suma es: 25 el valor de la resta es: 5 el valor de la multiplicación es: 150.

Observación

Como las variables num1 y num2, son parámetros por valor, cualquier cambio que se realice en el subprograma, no se ve en el programa principal.

Ejemplo

Subprograma operar (por valor num1, num2: número) num1 = num1 + num2 num2 = num1 + 10fin Subprograma

InicioDefinición de variablesa, b: númeromuestre: “favor ingresar el valor de los dos números que desea operar”lea: a, boperar (a, b)muestre: a, bfin_Inicio

Prueba de escritorio

Si se introducen por teclado los valores 5, 3 la memoria queda de la siguiente manera:

Memoria

Jorge Hernán Álvarez

5 3

a bnum1 num2basura basura

Page 26: Modulo_Estructura Repetitiva.553.doc

Al ejecutar la instrucción operar (a, b), el control de ejecución, pasa al procedimiento y los valores que tienen las variables a y b, se copian en las variables num1 y num2, quedando la memoria de la siguiente manera:

Memoria

Al ejecutar las instrucciones que se encuentran dentro del procedimiento, la variable num1 y num2 quedan valiendo 8 y 18 respectivamente, quedando la memoria así

Memoria

Al terminar la ejecución del procedimiento, se devuelve el control de ejecución al programa principal, el cual continúa ejecutando la instrucción siguiente a operar (a, b), que es: muestre: a, b, lo cual muestra por pantalla, 5 y 3, cualquier estudiante puede pensar, que el valor que se imprime es: 8 y 18, lo que es un completo error, porque la variable fue definida por valor y cualquier cambio que se realice dentro del procedimiento no se refleja por fuera de él.

Ejemplo 3

Elaborar un subprograma que permita calcular el factorial de un número.

El tipo de subprograma que se va a emplear es:

Función, porque el subprograma devuelve un solo valor, que es el factorial de un número.

Nombre de la función: factorial

Jorge Hernán Álvarez

5 3

a bnum1 num25 3

5 3

a bnum1 num28 18

Page 27: Modulo_Estructura Repetitiva.553.doc

Parámetros por valor: número al que se le desea calcular el factorial

Parámetros por referencia: ninguno, porque la función retorna el valor del factorial.

Variables locales a la función: la variable i, que es un contador que controla hasta que se encuentra el factorial de n, la variable fact, que es un acumulador que almacena del factorial del número.

Variables

num: número, parámetro por valor, el cual es enviado por el programa principal, para que la función realice los cálculos. Variables locales

i, fact: número

Estrategia

Como el único parámetro que se envía, desde el programa principal es, el número al que se le desea calcular el factorial, hay que hacer un ciclo repetitivo que termine cuando i> num, y por cada iteracción realizar la operación fact = fact * i, cuando finalice el ciclo la función devuelve el valor fact.

Función factorial (por valor num: número) Variables locales i, fact: número i = 1 fact = 1 mientras (i<= num) fact = fact * i i = i + 1 fin mientras retorne factfin Función

Ejemplo 4

Elaborar el programa principal que permita mostrar por pantalla, el factorial del número del ejemplo anterior.

Datos de entrada: el número que se le desea calcular el factorial.

Datos de salida: el factorial del número.

Jorge Hernán Álvarez

Page 28: Modulo_Estructura Repetitiva.553.doc

n: número, valor que se van a enviar desde el programa principal a la función, para que le calculen el factorial.

resul: número, variable que recibe el valor que retorna la función, después de haber realizado los cálculos.

Estrategia

El programa principal debe leer el valor, al que se le desea calcular el factorial, llamar la función y mostrar el resultado por pantalla

Programa completo

Función factorial (por valor num: número) Variables locales i, fact: número i = 1 fact = 1 mientras (i<= num) fact = fact * i i = i + 1 fin mientras retorne factfin Función

Inicio Definición de variablesn, resul: númeromuestre: “favor ingresar el valor del número al que se le desea calcular el factorial”lea: nresul = factorial (n)muestre: “el factorial de “, n, “ es: “, resulfin_Inicio

Prueba de escritorio

Al ejecutar la instrucción lea: n, se ingresa por teclado 5.Al llamar la función factorial, el programa principal entrega el control de ejecución a la función y se envía el parámetro n = 5, realizando una copia del valor de n a num. A continuación se presenta los cambios que ocurren en la función.

n resul num fact I5 basura 5 1 1

1 22 3

Jorge Hernán Álvarez

Page 29: Modulo_Estructura Repetitiva.553.doc

6 424 5

120 6

Cuando la función termina, entrega el control de ejecución al programa principal, retornando el valor de fact, asignándoselo a la variable resul, quedando la variable resul valiendo 120. Al ejecutar la instrucción muestre: “el factorial de “, n, “ es: “, resul, lo cual muestra por pantalla, el factorial de 5 es: 120.

Arreglos Un arreglo es un conjunto de datos del mismo tipo, los cuales se relacionan a través de un subíndice.

Un subíndice es una expresión de tipo entero que relaciona un determinado elemento en el vector.

Ejemplos de subíndices

5 i i + 2 n – i + 1

Clasificación de los arreglos

Vectores

Un vector es un arreglo donde sus datos pueden estar dispuestos en fila o en columna, para hacer referencia a un dato del vector hay que emplear el subíndice.

Ejemplo

Jorge Hernán Álvarez

Page 30: Modulo_Estructura Repetitiva.553.doc

Vector en forma de fila

A 1 2 3 4 5

10 20 30 40 15

Donde A, es el nombre del vector, 1 2 3 4 5, son los subíndices.Para hacer referencia a un elemento, solo hay que emplear el nombre del vector y el subíndice, de la siguiente manera:

A[subíndice]

Ejemplo

A[5] hace referencia al número 15 A[1] hace referencia al número 10

Ejemplo

B123

101224

Donde B[1] hace referencia al número 10, B[2] hace referencia al número 12 y B[3] hace referencia la número 24.

Ejemplo 1

Elaborar un algoritmo que construya un vector de n posiciones, cuyos valores sean números y muestre por pantalla cada uno de los números.

Datos de entrada: el número de elementos del vector, cada uno de los datos que se le van ha ingresar al vector.

Datos de salida: cada uno de los elemento del vector.

Variables

vec[100]: número, vec, es el nombre del vector y 100 es la cantidad máxima de elementos que se le pueden ingresar al vector.i: número, el subíndice que hace referencia a cada uno de los elementos en el vector.n: número, cantidad de elementos que se le va a ingresar al vector.

Estrategia

Jorge Hernán Álvarez

Page 31: Modulo_Estructura Repetitiva.553.doc

Para realizar el algoritmo se va a emplear un ciclo para, porque se conoce el número de datos que se desea ingresar, además simplifica la escritura de ciertas instrucciones que deben escribirse si se empleara ciclo mientras, para introducir elementos al vector, se utilizara la instrucción lea: vec[i], dentro del ciclo para.

Para mostrar cada uno de los elementos del vector por pantalla, se empleará la instrucción muestre: vec[i], dentro del ciclo para.

Inicio Definición de variablesvec[100], i, n: númerolea: n para i = desde 1 hasta n haga lea: vec[i]fin parapara i = desde 1 hasta n haga muestre: vec[i]fin parafin_inicio

Prueba de escritorio

Al compilar, la memoria se encuentra de la siguiente manera:

vec 1 2 3 . ………………. 100 i n

Basura

Basura

Cada una de las posiciones del vector se encuentra con basura.

Ejecución

Al ejecutar la instrucción lea: n, se ingresa por teclado el número 5, la memoria queda de la siguiente manera:

vec 1 2 3 . ………………. 100 i n

Basura

5

Al entrar al ciclo para, se ejecuta la instrucción lea: vec[i], con la cual se ingresan los números 6 8 10 12 y 14, al terminar de ingresar el número 14, la variable i queda valiendo 6, como 6 es mayor que 5

Jorge Hernán Álvarez

Page 32: Modulo_Estructura Repetitiva.553.doc

automáticamente el ciclo se termina, dejando la memoria de esta forma: vec 1 2 3 4 5 ..………100 i n

6 8 10 12 14 6 5

Las posiciones en el vector 6 7 8….100, se encuentran almacenadas con basura, en caso de hacer referencia al elemento vec[8] el sistema mostraría basura, debido a que en esa posición no se ha ingresado ningún valor.

Al ejecutar el segundo ciclo para, se muestra en pantalla los datos del vector que se encuentran en las posiciones 1 2 3 4 5, que son 6 8 10 12 y 14 respectivamente.

Observación

Si se intentara hacer referencia a la posición vec[101], el programa cancela, porque se esta intentando acceder a una posición que no se ha creado en memoria.

Ejemplo 2

Elaborar un subprograma que encuentre el menor elemento de un vector de n elementos.

El tipo de subprograma que se va a emplear es:

Función, porque el subprograma devuelve un solo valor, que es el menor valor de un vector.

Nombre de la función: menor

Parámetros por valor: el número de elementos

Parámetros por referencia: el vector, los arreglos siempre se definirán como parámetros por referencia.

Variables locales en la función: la variable i, que es el subíndice del vector, la variable men, que almacena el menor valor en el vector.

Variables

num: número, parámetro por valor, el cual es enviado por el programa principal, para que la función construya el vector.

Jorge Hernán Álvarez

Page 33: Modulo_Estructura Repetitiva.553.doc

vec[100]: número, parámetro por referencia, vector de máximo 100 elementos.

Variables localesi, men: número

Estrategia

Para determinar el menor elemento en un vector, hay que definir una variable donde se este almacenando el menor valor, antes de entrar al ciclo para, a la variable men, se le asigna el valor de vec[1], con esta asignación se supone que el menor valor es vec[1], al entrar al ciclo para se realiza la siguiente comparación:

si (vec[i] < men) entonces men = vec[i]fin si

Esta comparación permite verificar, cual es el valor menor dentro del vector.

La función completa es:

Función menor (por valor num: número, por referencia vec[]: número) Variables locales i, men: número men = vec[1] para i = desde 2 hasta num haga si (vec[i] < men) entonces men = vec[i] fin si fin para retorne menfin Función Ejemplo 3

Elaborar el programa principal que permita mostrar por pantalla, el elemento menor ingresado al vector del ejemplo anterior.

Datos de entrada: el número de elementos del vector

Datos de salida: el menor valor del vector

n: número, valor que se va a enviar desde el programa principal a la función, para que construya el vector.

Jorge Hernán Álvarez

Page 34: Modulo_Estructura Repetitiva.553.doc

a[100]: número, vector que se envía desde el programa principal, a la función

resul: número, variable que recibe el valor que retorna la función, después de haber encontrado el menor valor.i: número, subíndice que permite crear el vector.

Estrategia

Se construye el vector y se llama la función

Programa principalInicioDefinición de variablesn, i, resul, a[100]: número lea: npara i = desde 1 hasta n haga lea: a[i]fin pararesul = menor(n,a)muestre: “el menor valor es: “, resulfin_Inicio

Matrices

las matrices organizan la información en tablas, dispuestas en forma de filas (horizontales) y columnas (verticales), para referenciar a un elemento de la matriz, se debe especificar, el nombre de la matriz y dos subíndices, el subíndice de fila y el subíndice de columna.

Ejemplo

A 1 2

123

10 2515 3020 35

A[fila,columna]A[2,1] hace referencia al número 15, que se encuentra en la fila 2, columna 1.A[3,2] hace referencia al número 35, que se encuentra en la fila 3, columna 2.

Orden de una matriz

El orden de una matriz, se refiere al tamaño de la matriz, el número de filas * el número de columnas, si una matriz tiene 5 filas y 3

Jorge Hernán Álvarez

Page 35: Modulo_Estructura Repetitiva.553.doc

columnas, el orden de la matriz es 5*3, y la cantidad de elementos que puede tener es 15, que es el producto de 5 * 3.

Diagonal principal: son los elementos en la matriz que tienen la siguiente característica. El subíndice de la fila es igual al subíndice de la columna, una condición para determinar los elementos de la diagonal principal, es: matriz de orden n * n, matriz cuadrada (igual número de filas y de columnas).

Diagonal secundaria: son los elementos en la matriz que se encuentran en la posición, mat[fila, numero de filas – fila +1], condición la matriz debe ser cuadrada.

Ejemplo

si la matriz es de orden n * n, el subíndice que se esta empleando para la fila es i, los elementos de la diagonal secundaria de la matriz mat son:

mat[i, n- i + 1]

Ejemplo 1

Elaborar un subprograma que construya una matriz de orden n * m, cuyos valores sean números.

El tipo de subprograma que se va a emplear es:

Procedimiento, porque el subprograma no devuelve ningún valor. Nombre del procedimiento: consmat

Parámetros por valor: el número de filas y el número de columnas

Parámetros por referencia: la matriz, los arreglos siempre se definirán como parámetros por referencia.

Variables locales en el procedimiento: la variable i, que es el subíndice de las filas, la variable j, que es el subíndice de las columnas.

Variables

numf: número, parámetro por valor, el cual es enviado por el programa principal, el cual lleva el número de filas de la matriz.

numc: número, parámetro por valor, el cual es enviado por el programa principal, el cual lleva el número de columnas de la matriz.

Jorge Hernán Álvarez

Page 36: Modulo_Estructura Repetitiva.553.doc

mat[100,100]: número, parámetro por referencia, matriz de máximo 10000 elementos, el tamaño lo define el programador, dependiendo del problema que deba resolver.

Variables localesi, j: número

Estrategia

Para la elaboración del procedimiento se necesitan, realizar dos ciclos para, uno que inicie en 1 y termine en numf y otro ciclo para que se encuentre dentro del primero que inicie en 1 y termine en numc.

La instrucción de lectura de cada uno de los elementos de la matriz es: lea: mat[i,j].

Subprograma completo

Subprograma consmat (por valor numf, numc: número, por ref mat[]: número)

Variables locales i, j: número para i = desde 1 hasta numf haga para j = desde 1 hasta numc haga lea: mat[i,j] fin para fin parafin Subprograma

Observación

Para elaborar el subprograma que permita mostrar los elementos de la matriz por teclado, solo hay que cambiar la instrucción lea: mat[i,j] por muestre: mat[i,j], el ciclo que primero se ejecuta es el más interno.

Ejemplo 2 Elaborar un subprograma que permita retornar el resultado de la suma de los elementos de la diagonal principal.

El tipo de subprograma que se va a emplear es:

Función, porque el subprograma devuelve un solo valor, que es la suma de los elementos de la diagonal principal.

Jorge Hernán Álvarez

Page 37: Modulo_Estructura Repetitiva.553.doc

Nombre de la función: sumap

Parámetros por valor: el número de elementos de la fila y de la columna.

Parámetros por referencia: la matriz, los arreglos siempre se definirán como parámetros por referencia.

Variables locales en la función: la variable i, que es el subíndice con el que se van a sumar, los elementos de la diagonal principal, la variable s, que es la variable que almacena la suma de los elementos de la diagonal principal.

Variables

num: número, parámetro por valor, el cual es enviado por el programa principal, para que la función recorra la matriz.mat[100,100]: número, parámetro por referencia, matriz de máximo 10000 elementos.

Variables localesi, s: número Estrategia

Para determinar la suma de los elementos de la diagonal principal se debe tener en cuenta:

La matriz debe ser cuadrada, de orden n * n, igual número de filas y de columnas.

Los elementos que se van a sumar se encuentran en las posiciones donde la fila y la columna sean iguales, ejemplo mat[1,1] mat[2,2] mat[3,3] etc.

mat 1 2 3

123

12 13 1424 26 2836 39 42

Los elementos que debe sumar la función, son los que se encuentran en la posiciones donde la fila sea igual a la columna, mat[1,1] mat[2,2], mat[3,3], cuyos elementos son 12, 26, 42 respectivamente.

Para sumar los elementos se debe crear un ciclo para, que inicie en 1 y termine en num, dentro del ciclo para, se encuentra la instrucción que suma cada uno de los elementos que están en la diagonal principal, la instrucción es: s = s + mat[i,i].

Jorge Hernán Álvarez

Page 38: Modulo_Estructura Repetitiva.553.doc

Subprograma completo

Función sumap (por valor num, por ref mat[]: número) Variables locales i, s: número s = 0 para i = desde 1 hasta num haga s = s + mat[i,i] fin para retorne sfin Función

Ejemplo 3

Elaborar un programa que llame el procedimiento consmat y muestre por pantalla los elementos.

InicioDefinición de variablesi, j, n, m, a[100,100]muestre: “favor ingresar el número de filas y de columnas”lea: n, mconsmat (n,m,a)para i = desde 1 hasta n haga para j = desde 1 hasta m haga muestre: a[i,j] fin parafin para fin_Inicio

Ejemplo 4

Escribir el algoritmo anterior sin emplear ciclo para.

InicioDefinición de variablesi, j, n, m, a[100,100]muestre: “favor ingresar el número de filas y de columnas”lea: n, mconsmat (n,m,a)i = 1mientras (i<= n) j = 1 mientras (j<= m) muestre: a[i,j] j = j + 1 fin mientras i = i + 1

Jorge Hernán Álvarez

Page 39: Modulo_Estructura Repetitiva.553.doc

fin mientras fin_Inicio

Recomendaciones

Cuando se trabaja con subprogramas, es importante definir adecuadamente, los parámetros por valor y por referencia.

Al trabajar con arreglos, es importante realizar un gráfico del arreglo, lo cual facilita la solución de los problemas.

Jorge Hernán Álvarez