Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo...

14
Lógica de programaci ón Universidad Nacional Autónoma de Nicaragua - León Facultad de Ciencias y Tecnología Departamento de Computación Lógica de programación Elaborado por: Lic. Luis Ernesto Díaz Beteta La característica fundamental de la programación estructurada consiste en que todas las instrucciones tienen un único punto de entrada y un único punto de salida. Esto permite descomponer fácilmente un problema en subproblemas, reduciendo la complejidad y facilitando la programación Bibliografía Metodología de la programación. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1

Transcript of Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo...

Page 1: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Lógica de programaci ón

Universidad Nacional Autónoma de Nicaragua - León

Facultad de Ciencias y Tecnología

Departamento de Computación

Lógica de programación

Elaborado por: Lic. Luis Ernesto Díaz Beteta

La característica fundamental de la programación estructurada consiste en que todas las instrucciones tienen un único punto de entrada y un único punto de salida. Esto permite descomponer fácilmente un problema en subproblemas, reduciendo la complejidad y facilitando la programación

Bibliografía

Metodología de la programación. Dr. Osvaldo Cairó Battistutti

Editorial Alfa-Omega

1

Page 2: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Lógica de programaci ón

Generalidades En temas anteriores hemos hablado sobre las estructuras algorítmicas de repetición MIENTRAS y PARA, estas

son las estructuras de repetición principales y la forma de implementación al momento de la construcción de los

algoritmos difiere una de la otra.

Todo ciclo debe terminar de ejecutarse en algún momento dado, por lo general se evalúa en cada iteración si el

ciclo debe o no terminar. Esto está dado por lo que se conoce condición de parada.

Las estructuras repetitivas Mientras y Para tienen su condición de parada al inicio del bucle, y la estructura

repetitiva Repetir posee la condición de parada al final de la misma.

Estructura repetitiva REPETIR La estructura repetitiva REPETIR es otra estructura repetitiva, la cual ejecuta al menos una vez su bloque

repetitivo, a diferencia de MIENTRAS y PARA que podían no ejecutar el bloque. Esta estructura repetitiva se

utiliza cuando conocemos de antemano que por lo menos una vez se ejecutará el bloque repetitivo ya que la

condición de parada de la estructura repetitiva está al final del bloque a REPETIR.

Sintaxis

Repetir secuencia_de_acciones

Hasta Que expresion_logica

La estructura repetitiva REPETIR permite la ejecución del grupo de sentencias al menos una vez. Puesto que la

condición de parada será evaluada hasta que se ejecute el grupo de sentencias, el ciclo REPETIR se ejecutara

hasta que la condición de parada resulte ser verdadera.

Representación gráfica

PseInt utiliza la siguiente manera de representar el ciclo REPETIR

2

Page 3: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Diagrama de flujo

Resultado

En la sentencia repetitiva REPETIR, la condición de parada se comprueba al final del bucle. Lo que permite que

el bucle se ejecute al menos una vez antes de comprobar la condición de parada. El bucle se repite mientras la

condición sea falsa y termina cuando sea verdadera (contrario a la sentencia mientras).

3

Lógica de programaci ón

Ejemplo:

Deseamos presentar en pantalla los primeros 10 números naturales

1.2.3.4.5.6.7.8.9.

Proceso contarNumeros Definir contador Como Entero ; contador <- 1;

Repetir Escribir "Repeticion numero ", contador; contador <- contador + 1;

Hasta Que contador > 10 FinProceso

Page 4: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Lógica de programaci ón

Ejemplos estructura repetitiva REPETIR

Ejemplo1

Realice un algoritmo que presente en pantalla la cantidad de números impares que se encuentren en el rango de 1

a 100.

Datos de entrada

� No se recibiran datos por parte del usuario

Datos de salida

� Presentar la cantidad de números impares que estan en el rango de 1 a 100

Variables a utilizar

� contador: Llevara el control de las iteraciones.

� impares: Llevara el control de la cantidad de números impares ingresados.

Procedimiento

� Colar el valor inicial de la variable ª imparesº a cero.

� Contabilizar la cantidad de números impares utilizando al ciclo REPETIR

� Dentro del grupo de sentencias del ciclo, se verificará si el valor es impar. Si la comparación resulta ser

verdadera se incrementará en uno el valor de la variable ª imparesº .

Solución

1. Proceso contarImpares 2. Definir contador, impares Como Entero ; 3. contador <- 1; 4. impares<-0; 5. 6. Repetir 7. Si contador%2 <> 0 Entonces 8. impares<-impares + 1; 9. FinSi 10. contador <- contador + 1; 11. Hasta Que contador > 100 12. 13. Escribir "Hay ", impares, " números impares en el rango de 1-100"; 14. FinProceso

4

Page 5: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Lógica de programaci ón

Diagrama de flujo

Resultado

Ejemplo2

En el siguiente ejemplo le pediremos al usuario que nos indique si desea que se continue ejecutando el ciclo,

dentro del ciclo se presentara en pantalla un número aleatorio generado por la función AZAR.

Datos de entrada

� El usuario ingresara ª Sº o ª Nº como respuesta a la pregunta de confirmación

Datos de salida

� Se presentara en pantalla el valor generado de forma aleatoria

Variables a utilizar

� continuar: captura la respuesta del usuario a la pregunta de confirmación

5

Page 6: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Lógica de programaci ón

Procedimiento

� Dentro del grupo de sentencias del ciclo se presentara en pantalla el valor generado por la función

AZAR, Luego se preguntara al usuario si desea continuar.

Solución

1. Proceso numeroAzar 2. Definir continuar Como Caracter ; 3. 4. Repetir 5. Escribir "Numero generado al azar: ", azar(100); 6. Escribir "Desea continuar S / N "; 7. Leer continuar; 8. Hasta Que continuar = "N" | continuar = "n" 9. FinProceso

Diagrama de flujo

Resultado

6

Page 7: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Lógica de programaci ón

Ejemplo3

En el siguiente ejemplo le pediremos al usuario que nos indique si desea que se continue ejecutando el ciclo,

dentro del ciclo se presentara en pantalla un número aleatorio generado por la función AZAR.

Datos de entrada

� El usuario ingresara ª Sº o ª Nº como respuesta a la pregunta de confirmación

Datos de salida

� Se presentara en pantalla el valor generado de forma aleatoria

Variables a utilizar

� continuar: captura la respuesta del usuario a la pregunta de confirmación

Procedimiento

� Dentro del grupo de sentencias del ciclo se presentara en pantalla el valor generado por la función

AZAR, Luego se preguntara al usuario si desea continuar.

Solución

1. Proceso numeroAzar 2. Definir continuar Como Caracter ; 3. 4. Repetir 5. Escribir "Numero generado al azar: ", azar(100); 6. Escribir "Desea continuar S / N "; 7. Leer continuar; 8. Hasta Que continuar = "N" | continuar = "n" 9. FinProceso

Diagrama de flujo

7

Page 8: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Lógica de programaci ón

Resultado

Ejemplo4

En este ejemplo se muestra como presentar un menú en pantalla, este menú use presentara hasta que el usuario

seleccione salir.

Datos de entrada

� Se ingresara un número (correspondiente a la opción del usuario), cuyo valor se almacenara en la

variable opcion.

Datos de salida

� Se presentara en pantalla un mensaje que indique el valor de la opción ingresada por parte del usuario.

Variables a utilizar

� opción: variable de tipo entero, almacenara el valor correspondiente al número ingresado por parte del

usuario.

Procedimiento

� Utilizando el ciclo REPETIR, se presentara un menú con 4 opciones. El usuario ingresara un número

que puede o no estar en el rango de 1-4.

� Si el valor ingresado esta fuera de rango, se vuelve a mostrar cada una de las opciones.

� El ciclo se repetirá hasta que el usuario ingrese un número en el rango de 1-4

Solución

1. Proceso ejemploMenu 2. Definir opcion Como Entero ; 3. 4. Repetir 5. Escribir "1.- Ingrese 1 para esta Opcion"; 6. Escribir "2.- Ingrese 2 para esta Opcion"; 7. Escribir "3.- Ingrese 3 para esta Opcion"; 8. Escribir "4.- Ingrese 4 para esta Opcion"; 9. Escribir "¿Que opcion desea: ?"; 10. Leer opcion; 11. Hasta Que opcion >= 1 & opcion <= 4 12. 13. Escribir "Opcion ingresada: ", opcion; 14. FinProceso

8

Page 9: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Lógica de programaci ón

Diagrama de flujo

Resultado

REPETIR vs MIENTRAS Como ya hemos mencionado anteriormente, la estructura repetitiva REPETIR evalua la condición de parada al

final, luego de haber ejecutado todas las sentencias que forman parte del ciclo. Lo que permite que el bucle se

ejecute al menos una vez antes de comprobar la condición de parada, el bucle se repite mientras la condición sea

falsa y termina cuando sea verdadera (contrario a la sentencia mientras).

9

Page 10: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Lógica de programaci ón

Las estructuras repetitivas MIENTRAS y PARA evalúan la condición de parada al inicio del bucle, por lo tanto

para que el ciclo se ejecute la expresión lógica debe ser verdadera desde el principio.

Veamos el siguiente ejemplo en el que se muestra un ciclo en el que se solicitan números enteros al usuario, el

ciclo se detendrá cuando se ingrese un valor negativo.

1. Proceso leerEnteros 2. Definir contador, num Como Entero ; 3. contador<-0; 4. 5. Escribir "Ingrese un numero entero: "; 6. Leer num; 7. 8. Mientras num >= 0 Hacer 9. contador<-contador+1; 10. 11. Escribir "Ingrese un numero entero: "; 12. Leer num; 13. FinMientras 14. 15. Escribir "Se ingresaro ", contador, " numeros"; 16. FinProceso

En este ejemplo, para poder ingresar al ciclo primero se evalua la expresión lógica (condición de parada) y

después se ejecutan las sentencias que forman parte del ciclo. ¿Qué pasa si ingresamos un número negativo

desde el principio?. Al ingresar un número negativo desde el principio las sentencias que forman parte del ciclo

no se ejecutaran. Como se muestra en la siguiente captura.

Veamos que pasa si utilizamos el ciclo REPETIR

1. Proceso leerEnteros 2. Definir contador, num Como Entero ; 3. contador<-0; 4. 5. Repetir 6. Escribir "Ingrese un numero entero: "; 7. Leer num; 8. contador<-contador+1; 9. Hasta Que num < 0 10. 11. Escribir "Se ingresaron ", contador, " numeros positivos"; 12. FinProceso

10

Page 11: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Lógica de programaci ón

Al utilizar el ciclo REPETIR, se ejecutan el grupo de sentencias pertenecientes al cliclo y posteriormente se

evalua la condición de parada. Esto puede generar resultados anómalos, como se muestra en la siguiente captura.

Debemos utilizar REPETIR

� Cuando el grupo de sentencias del ciclo se debe ejecutar al menos una vez.

� En el resto de los casos lo más recomendable es utilizar MIENTRAS o PARA.

Ciclos anidados En ciertas ocasiones se hace necesario la concatenación de estructuras algorítmicas, es decir que una estructura

algorítmica forme parte de otra estructura algorítmica. Básicamente el término anidación o concatenación se

refiere al hecho de ingresar una sentencia de control dentro de otra sentencia de control.

Analicemos el siguiente caso

Se desea desarrollar un algoritmo que presente la siguiente salida en pantalla.

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5

1 2 3 4 5 6

1 2 3 4 5 6 7

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9 10

Observemos que tenemos 10 filas y en cada fila se presentan tantos

números como lo indique la fila, por ejemplo en la fila uno se

presenta en pantalla al número 1. En la fila dos se presentan los

números 1 y el número 2 y así hasta llegar a la última fila ª 10º donde

se presentan los 10 números.

Vemos como solucionar el problema planteado y el por que debemos de utilizar ciclos anidados. El siguiente

ejemplo utiliza una variable llamada ª filaº para controlar el número de cada fila.

1. Proceso anidados 2. Definir fila Como Entero ; 3. 4. Para fila<-1 Hasta 10 Con Paso 1 Hacer 5. Escribir "fila No ", fila; 6. FinPara 7. FinProceso

11

Page 12: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Lógica de programaci ón

Deseamos presentar en cada fila tantos números como lo indique la fila, de tal forma que presentamos un

número en pantalla mientras el número sea menor o igual al valor de la variable fila. Quedando el algoritmo

como se muestra a continuación.

1. Proceso anidados 2. Definir fila, num Como Entero ; 3. 4. Para fila<-1 Hasta 10 Con Paso 1 Hacer 5. num<-1; 6. Mientras num <= fila Hacer 7. Escribir sin saltar num, " "; 8. num<-num+1; 9. FinMientras 10. Escribir " "; 11. FinPara 12. FinProceso

El primer ciclo (ciclo PARA) controla en número de la fila desde el 1 hasta el 10, en la línea 5 le damos el valor

inicial de 1 a la variable ª numº que sera la encargada de presentar los números en la fila. El segundo ciclo (ciclo

MIENTRAS) tiene la responsabilidad de presentar en pantalla tantos números como lo indique la fila, esto lo

hace mediante la comprobación de la condicional num <= fila donde ª numº en un principio vale 1 e ira

incrementado su valor hasta ser mayor que ª filaº .

Analicemos el siguiente caso

Se desea desarrollar un algoritmo que presente la siguiente salida en pantalla.

*

**

***

****

***** asteriscos, etc. Además en cada fila se presenta una cantidad de ******

*******

********

*********

**********

1. Proceso anidados3 2. Definir fila, asterisco, espacios, e Como Entero ; 3. espacios<-9; 4. 5. Para fila<-1 Hasta 10 Con Paso 1 Hacer 6. Para e<-1 Hasta espacios Con Paso 1 Hacer 7. Escribir sin saltar " "; 8. FinPara 9. espacios<-espacios-1; 10. 11. Para asterisco<-1 Hasta fila Con Paso 1 Hacer 12. Escribir sin saltar "*"; 13. FinPara 14. Escribir " ";

16. FinProceso

12

15. FinPara

Observemos que tenemos 10 filas y en cada fila se presentan tantos

asteriscos como lo indique la fila, por ejemplo en la fila uno se

presenta en pantalla 1 asterisco. En la fila dos se presentan 2

espacios, de tal forma que en la fila 1 se presentan 9 espacios, en la

fila 2 se presentan 8 espacios y asi hasta llegar a la fila 9 donde se

presenta 1 espacio. La fila 10 no lleva espacios.

Page 13: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Lógica de programaci ón

Ejercicios Propuestos

Ejercicio1

Elabore un algoritmo que presente la siguiente salida.

Ejercicio2

Realice un algoritmo que muestre en pantalla un tablero de ajedrez, este tablero mostrara ª Bº en posición de las

casilas blancas y ª Nº en las posiciones en las que se encuentren las casillas negras. A continuación se muestra

una representación de un tablero en forma de matriz

Para colocar el carácter ª Bº para las casillas blancas o ª Nº para las

casillas negras, debemos sumar los valores de las filas y columnas, tal

como se muestra en la siguiente imagen.

Observe que la casilla donde la suma de la fila y columna da como resultado un valor par se muestran marcadas

en rojo. Son estas posiciones las que corresponden a las casillas blancas y las impares a las casillas negras.

El algoritmo que debe mostrar en pantalla es una salida como la que se muestra a continuación:

13

Page 14: Lógica de programación - ING.KARINA ESQUIVEL · Metodología de la programaci ón. Dr. Osvaldo Cairó Battistutti Editorial Alfa-Omega 1. Lógica de programación Generalidades

Lógica de programaci ón

Ejercicio3

Realice un algoritmo para cada una de las siguientes figuras

Ejercicio4

Realizar un programa que nos pida un número n, y nos diga cuantos números hay entre 1 y n que son primos

Ejercicio5

Hacer un algoritmo que simule el comportamiento de un cronómetro digital desde 0 segundos hasta llegar a 5

minutos en cuenta progresiva.

Ejercicio6

Hacer un algoritmo que simule el comportamiento de un cronómetro digital en cuenta regresiva desde 5 minutos

hasta 0 segundos.

14