You are on page 1of 20

Fundamentos de Programación I.E.

S San Sebastián - Huelva

Presentación 2 - Diagramas de flujo u Ordinogramas
La resolución de estos ejercicios ha sido fruto de las prisas, es por ello que el alumno debe
tener en cuenta los posibles errores que la soluciones pudiesen contener. Todos los ejercicios
aquí resueltos han sido explicados y resueltos en clase.

La solución propuesta no es la única, ni la mejor, ni la más bella, si es que se puede entender
de forma absoluta en alguna situación los términos anteriores. El objetivo es que el alumno
entienda la solución propuesta, sabiendo verificar si su solución es correcta.

Puede que algunas notaciones sintácticas no se respeten al 100%, fundamentalmente debido a
que el procesador de textos trabaja por su cuenta y a veces hace modificaciones que no
proceden:
• Pone mayúsculas donde no se lo piden.
• En las comillas “, que deben ser el mismo carácter para cerrar y abrir, cambia los
caracteres de forma que la comilla de apertura “ y cierre ” son diferentes.

El alumno debe saber estos errores en el pseudocódigo no conllevan ningún problema, pero
cuando escriba en el lenguaje de programación el algoritmo debe respetar las normas léxicas y
sintácticas del lenguaje o tendrá errores de compilación

Los ejercicios están numerados referenciado en primer lugar a la diapositiva en la que se
encuentran, y en segundo lugar el número de ejercicio dentro de la diapositiva en cuestión. De
todas formas se incluye el enunciado del ejercicio para que no haya lugar a dudas acerca de lo
que se está resolviendo.

8.1 Algoritmo que lea un número por el teclado e indique si el número leído es mayor
que 10 y si el número leído es menor que 20.
Programa CompararNumero;
Entorno
Entero numero;
Inicio
Escribe “Introduce un número:”;
Lee numero;
Si numero > 10 entonces
Escribe “El número es mayor que 10”;
Fin si;
Si numero < 20 entonces
Escribe “El número es menor que 20”;
Fin si;
Fin;

8.2 Algoritmo que lea dos números por teclado y muestre un mensaje por pantalla
indicando si el cuadrado el primero es mayor que el cubo del segundo.
Programa CoparaConOperaciones;
Entorno
Entero num1, num2; // Nºs leidos por teclado
Entero cuadrado, cubo; // Vars. Temporales
Inicio
Escribe “Introduce el primer número”;
Lee num1;
Escribe “Introduce el segundo número”;
Lee num2;

© Santiago D. Página 1 de 20

Fundamentos de Programación I.E.S San Sebastián - Huelva

cuadrado = n1 * n1;
cubo = n2 * n2 * n2;
Si cuadrado > cubo entonces
Escribe “El cuadrado del 1º es mayor que el cubo del 2º”;
Fin si;
Fin;

8.3 Algoritmo que lean un número entero entre 1 y 10, y nos muestre por pantalla el
número en letra (el literal). Si el número leído no esta comprendido entre 1 y 10
mostrar dicha incidencia.
Programa NumeroALiteral;
Entorno
Entero n;
Inicio
Escribe “Introduce un número: “;
Lee n;
/* Aunque se cumpla una condición el ordenador debe evaluarlas
todas, con el coste de rendimiento que esto representa */
Si n = 1 entonces
Escribe “Uno”;
Fin si;
Si n = 2 entonces
Escribe “Dos”;
Fin si;
Si n = 3 entonces
Escribe “Tres”;
Fin si;
Si n = 4 entonces
Escribe “Cuatro”;
Fin si;
Si n = 5 entonces
Escribe “Cinco”;
Fin si;
Si n = 6 entonces
Escribe “Seis”;
Fin si;
Si n = 7 entonces
Escribe “Siete”;
Fin si;
Si n = 8 entonces
Escribe “Ocho”;
Fin si;
Si n = 9 entonces
Escribe “Nueve”;
Fin si;
Si n = 10 entonces
Escribe “Diez”;
Fin si;
/* Comprobamos si el número no está entre 1 y 10 para mostrar
mensaje */
Si n < 1 o n> 10 entonces
Escribe “El número no está entre 1 y 10”;
Fin si;
Fin;

10.1 Realizar un algoritmo que lea tres números por teclado y nos indique cual de ellos
es el mayor.
Programa NumerosOrdenados;
Entorno
Entero n1, n2, n3; // Nºs leidos por teclado

© Santiago D. Página 2 de 20

El mayor será n2 o n3 Si n2 > n3 entonces Escribe “El mayor es “. n2. Lee n1. debemos comparar n2 y n3. n2. Fin si. Fin si. n3. n3. Sino Escribe n1.Huelva Inicio Escribe “Introduce 3 números”. n3. Fin si. n3. Lee n1.E. n2. Fin si. Programa NumerosOrdenAscendente. n1. Sino // n1 <= n3 Escribe “El mayor es “. n2. n2. n3. Fin si Fin 10. Sino Escribe n2. n2. n2. Fin si Fin. n3. n1. Inicio Escribe “Introduce tres números: “. Sino // n2 >= n3 y n2 >= n1 Si n1 > n3 entonces Escribe n3 n1. escribiendo el resultado 0<=Nota<3 MD 3<=Nota<5 INS 5<=Nota<6 SUF 6<=Nota<7 BIE © Santiago D. Sino // n1 <= n2. n3. Sino // n1 <= n2 Si n2 < n3 entonces Escribe n1. Si n1 > n2 entonces Si n2 > n3 entonces Escribe n3. Fin si. n3.S San Sebastián . Entorno Entero n1. 10. Página 3 de 20 . n1.3 Algoritmo que lee una calificación numérica entre 0 y 10 y la transforma en calificación alfabética. Sino // n2 <= n3 Si n1 > n3 entonces Escribe n2. Fin si. Sino Escribe “El mayor es “. Si n1 > n2 entonces // El mayor será n1 o n3 Si n1 > n3 entonces Escribe “El mayor es “.Fundamentos de Programación I.2 Algoritmo que lee tres números cualesquiera y los escribe ordenados de forma ascendente. n3. n2. n1.

Sino Si n = 2 entonces Escribe “Dos”. Sino Si n1 = n3 entonces Escribe “El 1º y el 2º son iguales”. Lee n.S San Sebastián . n3. Fin si. Lee n1. … Fin Si. © Santiago D.3 este algoritmo cuando una condición es cierta no evalúa el resto innecesariamente */ Fin. Inicio Escribe “Introduce un número: “. Sino Si n2 = n3 entonces Escribe “El 2º y el 3º son iguales”. Página 4 de 20 . Sino Si n = 10 entonces Escribe “Diez”. Sino /* El número no está entre 1 y 10 para mostrar mensaje */ Escribe “El número no está entre 1 y 10”. Sino Si n = 7 entonces Escribe “Siete”. n2. Sino Si n = 3 entonces Escribe “Tres”.1 Algoritmo que lee tres números cualesquiera y nos indica todas sus relaciones de igualdad Programa RelacionesIgualdad. Sino Si n = 8 entonces Escribe “Ocho”. Sino Si n = 5 entonces Escribe “Cinco”. Fin Si. Sino Si n = 6 entonces Escribe “Seis”. Si n1 = n2 y n1 = n3 entonces Escribe “Los tres números son iguales”. Sino Escribe “Todos son distintos”. /* No sangraremos todas las sentencias incluidas dentro del Sino pues no hay espacio en el papel y además está forma es más clara. Entorno Entero n. Fin Si.Fundamentos de Programación I. Inicio Escribe “Introduce tres números: “. No hay que olvidar poner tantos Fin si como Si hayamos abierto */ Si n = 1 entonces Escribe “Uno”. /* A diferencia de la implementación del ejercicio 8. Sino Si n = 4 entonces Escribe “Cuatro”. 11.E. n2. Sino Si n = 9 entonces Escribe “Nueve”. n3. Entorno Entero n1.Huelva 7<=Nota<9 NOT 9<=Nota<=10 SOB Programa NumeroALiteral.

minutos y segundos que nos calcula y escribe la hora. seg. Lee seg.1 En un determinado comercio se realiza un descuento dependiendo del precio de cada producto. Lee min. Lee hora. Programa UnSegundoDespues. Fin si. “:”. Si el precio es inferior a 6 €. Se sabe que son bisiestos todos los años múltiplos de 4. 11. si es mayor o igual a 6 € y menor que 60 € se hace un 5% de descuento. Programa EsBisiesto.2 Algoritmo que recibe como datos de entrada una hora expresada en horas. Inicio Escribe “Introduce Año: “.3 Algoritmo que lee como dato de entrada un año y nos dice si se trata de un año bisiesto o no. min. Sino Escribe “El año “. “:”. minutos y segundos que serán transcurrido un segundo. Fin. Fin si. Si min > 60 entonces hora = hora + 1. Si seg > 60 entonces min = min + 1.Fundamentos de Programación I. Fin si. “ NO es bisiesto”. min = 0. Entorno Entero hora. 11. Inicio Escribe “Introduce hora: “. Entorno Entero anyo. seg = seg +1. min.S San Sebastián .E. Fin si. y si es mayor o igual a © Santiago D. Escribe “Introduce minuto: “. 12. Si hora > 24 entonces hora = 0. Si (anyo % 4 = 0) y No ( anyo % 100 = 0 y no ( anyo % 400 =0) ) entonces Escribe “El año “. anyo . anyo . no se hace descuento. excepto los que sean múltiplos de 100 sin ser múltiplos de 400.Huelva Fin si. Fin si Fin. Escribe “Introduce segundo: “. hora. seg. Lee anyo. Fin si. seg = 0. Fin. Escribe “Un segundo después son las: “. Página 5 de 20 . “ es bisiesto”.

Fin si. Fin si. Escibe “Descuento = “.Huelva 60 € se hace un 10% de descuento. Si n1=n2 o n1=n3 o n2=n3 entonces Escribe “Los números no son distintos”. Dto. Programa Calculo_Descuento. “%”.S San Sebastián . // Nºs leidos por teclado Inicio Escribe “Introduce 3 números”. PrecioTarifa. Inicio Escribe “Introduce precio Tarifa: “. n2. Sino Si PresioInical < 60 entonces Dto = 5. Dto. Entorno Entero PrecioInicial.E. Entorno Entero PrecioFinal. Página 6 de 20 . Dto. Lee PrecioInicial. “%”. /* La dificultad de este problema es saber que fórmula matemática se debe utilizar. “Descuento = “. Programa Calculo_Precio_Final. Programa NumeroMenor. Entorno Entero n1. Apenas tiene complejidad algorítmica */ Dto = (1-PrecioFinal/PrecioTarifa)*100. Lee n1. n3. Inicio Escribe “Introduce precio Inicial: “. 12.2 Algoritmo que lee el precio final pagado por un producto y su precio de tarifa y nos calcula el porcentaje de descuento que le ha sido aplicado.Fundamentos de Programación I.3 Algoritmo que lee 3 números distintos y nos dice cual de ellos es el menor. n3. Realizar el algoritmo que lee el precio de un producto y nos calcula y escribe su precio final. Fin. PrecioInicial*(1 + Dto/100). Sino Si n1 < n2 entonces // El menor será n1 o n3 Si n1 < n3 entonces Escribe “El menor es “. Lee PrecioTarifa. n1. Si PrecioInicial < 6 entonces Dto = 0. 12. Escibe “Precio final = “. Sino // n1 >= n3 Escribe “El menor es “. n2. Lee PrecioFinal. Escribe “Introduce precio Final: “. Fin. Sino Dto = 10. © Santiago D. n3.

.12. Sino Si mes=4 o mes=6 o mes=9 o mes=11 entonces // Meses de 30 días: Abrir. Junio. Se supondrá que febrero tiene siempre 28 días. debemos comparar n2 y n3. Fin si. mes = 1. Lee dia. Entorno Entero dia. Inicio Escribe “Introduce Dia: “.31). Programa UnDiaDespues. Lee mes. n2. Inicio Escribe “Introduce Dia: “. Página 7 de 20 . Sino Escribe “El menor es “. y año y nos dice la fecha que será el día siguiente. NumDiasMes = 30. mes.5 Plantea el algoritmo anterior sin suponer que febrero tiene 28 días. Fin si.Fundamentos de Programación I. Si mes > 12 entonces anyo = anyo + 1. mes.S San Sebastián . Fin si. Entorno Entero dia. Fin si.. Sept. n3. Fin si. El menor será n2 o n3 Si n2 < n3 entonces Escribe “El menor es “. mes. Fin. Nov. © Santiago D. “/”. Escribe “Introduce Año: “. Si dia > numDiasMes entonces mes = mes + 1. Fin si.E. Escribe “Introduce Mes: “. mes (1. Escribe “Un día después es: “. Entero numDiasMes. Sino // El resto tiene 31 días NumDiasMes = 31. 12. Si mes = 2 entonces numDiasMes = 28.4 Algoritmo que lee como datos de entrada una fecha expresada en día (1. dia = 1. Escribe “Introduce Mes: “. dia. “/”. anyo. anyo. Entero numDiasMes. Lee dia. anyo. Programa UnDiaDespues. Fin si. Lee Año. Lee mes.Huelva Sino // n1 >= n2. Fin 12.

Página 8 de 20 . si el menor es divisor del mayor. Fin si. n2. Fin si. // Buscamos el mayor y el menor Si n1 > n2 entonces mayor = n1. Sino Escribe “La fecha es incorrecta”. menor. Sino // El resto tiene 31 días NumDiasMes = 31. Fin si. Si mayor % menor = 0 entonces Escribe Mayor. n2. Fin si.Fundamentos de Programación I. positivos y distintos y nos dice si el mayor es múltiplo del menor o. menor = n1. Escribe “Un día después es: “. Si mes > 12 entonces anyo = anyo + 1. NumDiasMes = 30. Sino Escribe “No existe ninguna relación entre los números”. // Filtramos si la fecha es correcta Si dia>=1 y dia<=numDiasMes y Mes >= 1 y mes <= 12 entonces Si dia > numDiasMes entonces mes = mes + 1. Fin. Sino numDiasMes = 28. 12. dia = 1. Programa EsDivisorElMenor. Fin Si. “ es múltiplo de ”. Si mes = 2 entonces Si (anyo % 4 = 0) y No ( anyo % 100 = 0 y no ( anyo % 400 =0) ) entonces // Es bisiesto numDiasMes = 29. // Variables temporales Inicio Escribe “Introduce 2 números”. Sino mayor = n2. “/”. Nov.6 Algoritmo que lee dos números enteros. Entorno Entero n1. Junio. dia. anyo. Sino Si mes=4 o mes=6 o mes=9 o mes=11 entonces // Meses de 30 días: Abrir. “/”. mes = 1.S San Sebastián . mes. Sept.Huelva Escribe “Introduce Año: “.E. Lee n1. Fin si. menor. Fin si. lo que es lo mismo. Fin © Santiago D. // Nºs leídos por teclado Entero mayor. menor = n2. Lee Año. Fin Si.

/* Comprobamos si ya ha cumplido los años o no */ Si m_a < m_n o (m_a = m_n y dia_a < d_n) entonces // Aun no ha cumplido los años este año Edad = Edad . // Fecha de actual Entero Edad. m_n. Fin Mientras.7 Algoritmo que calcula la edad de una persona recibiendo como datos de entrada la fecha de nacimiento. a_n. Programa EdadEnAnyos. Fin si. ambas en tres variables. Entorno Entero n. Inicio © Santiago D. m_m.2 Realizar un algoritmo que muestre por pantalla los números múltiplos de 5 menores que 10000.Huelva 12. m_a. Inicio n = 2. Programa MultDe5Menor1000. a_a. Si aun no ha cumplido años en el año actual habrá que restarle 1*/ Edad = a_a – a_n. Entorno Entero n. Fin si.Fundamentos de Programación I. Fin. Entorno Entero d_n. Lee d_n. Fin Otra forma Programa ParesMenoresQue100.S San Sebastián .1. Fin Mientras.E. n = n + 1. n = n + 2. a_a.1 Realizar un algoritmo que muestre por pantalla los números pares menores de 100. Escribe “Edad = “. Programa ParesMenoresQue100. // variable temporal Inicio Escribe “Introduce Fecha nacimiento: “. Mientras n<100 hacer Escribe n. // Fecha de nacimiento Entero d_a. m_a. Entorno Entero n. /* La edad de una persona será igual al año actual menos el año de nacimiento. Fin 16. a_n. Escribe “Fecha actual: “. Mientras n<100 hacer Si n % 2 = 0 entonces Escribe n. Inicio n = 1. 16. Lee d_a. Edad. Página 9 de 20 . y la fecha actual.

1. // Es negativo Sino nNulos = nNulos + 1.E. nNulos=0. Mientras n>1 hacer n = n . Fin 20. // Variable control del bucle Entero nPos. Entorno Entero n. i = i + 1. i = i + 1.Huelva n = 5.S San Sebastián . Fin Mientras. Mientras i<10 hacer Escribe “Introduce un número: “. Escribe n. nNeg. Fin Otra forma Programa ListaNumeros.3 Algoritmo que lea un número por teclado e imprima por pantalla todos los números positivos menores que N Programa ListaNumeros. Mientras n<1000 hacer Escribe n. Fin Mientras. // Contadores Inicio nPos=0. Entorno Entero n. Lee n. Si n>0 entonces nPos = nPos + 1. i = 0. nNulos. Lee n. Mientras i < n hacer Escribe i. FinSi. Programa CuentaNumeros. // Es cero FinSi. // Es positivo Sino Si n < 0 entonces nNeg = nNeg + 1. Fin Mientras. Entorno Entero n. // Contador Inicio Escribe “Introduce un número: “. © Santiago D.1 Algoritmo que lee una secuencia de 10 números y obtiene e imprime cuantos hay positivos. n = n + 5. i = 1. Lee n. Fin 16. Entero i.Fundamentos de Programación I. Entero i. Inicio Escribe “Introduce un número: “. negativos y nulos. nNeg=0. Página 10 de 20 .

nNulos. Si esPrimeraVez o n > mayor entonces © Santiago D. Entorno Entero n. visualizando un mensaje de si ha leído algún número negativo. // suponemos que no hay negativos /* El menor de los posibles. esPrimeraVez = true. Escribe “Total nulos :”. nNeg. Entero mayor.E. Lee n. Escribe “Total negativos :”.Fundamentos de Programación I.2 Algoritmo que lee una secuencia de números no nulos. Inicio hayNegativos = false. Mientras n <> 0. // switch Inicio hayNegativos = false. Si n <> 0 entonces // Procesamos el número leído Si n < 0 entonces hayNegativos = true. nPos. // switch Booleano esPrimeraVez. Entorno Entero n. Si n > mayor entonces /* Se ha encontrado un número mayor que el actual. Si n <> 0 entonces // Procesamos el número leído Si n < 0 entonces hayNegativos = true. Fin 20. // Se ha encontrado un negativo FinSi. no presuponemos ningún número como mayor Programa CuentaNumeros. lo seleccionamos como mayor */ mayor = n Fin si. hacer Escribe “Introduce un número: “. Página 11 de 20 . Fin Otra forma. Programa CuentaNumeros. Entero mayor. hacer Escribe “Introduce un número: “. Si hay Negativos entones Escribe “Se han encontrado números negativos”. Lee n. // Guarda el valor del mayor Booleano hayNegativos.S San Sebastián . Fin si. // Se ha encontrado un negativo FinSi. Escribe “El mayor es :”. Fin Si. y obtiene e imprime el mayor. mayor. terminada con la introducción de un 0.Huelva Fin Mientras. Escribe “Total positivos :”. // Guarda el valor del mayor Booleano hayNegativos. cualquier número de los leídos por teclado será mayor que este */ mayor = -9999999.

// Contador Entero resultado. Si n < 0 entonces Escribe “No se calcular potencias negativas”. Si esPrimeraVez entonces Escribe “No se ha introducido ningún número”.E. Escribe “El factorial de ”. Mientras n <> 0. Fin Mientras. Fin Mientras. Entero i. Mientras i < n hacer resultado = resultado * x. Fin 20. Fin si. Programa Potencia. Mientras i < n hacer resultado = resultado * i. esPrimeraVez = false.Fundamentos de Programación I. // Contador Entero resultado. Si n < 0 entonces Escribe “No existe factorial de un número negativo”. Lee n. mayor. Escribe “Introduce la potencia: “. “ es ”. Inicio Escribe “Introduce un número: “. Programa Factorial. Lee n.4 Algoritmo que lee un número X y otro entero positivo N y calcula la N-ésima potencia de X (sin utilizar el operador de potencia). Fin si. n. Si hay Negativos entones Escribe “Se han encontrado números negativos”. lo seleccionamos como mayor */ mayor = n. Entorno Entero x. Fin si. Inicio Escribe “Introduce un número: “. Sino resultado = 1. n. Entero i. // Inicializamos el acumulador i = 1. Fin 20. © Santiago D. Lee x. Fin si. // Inicializamos el acumulador i = 1. Sino Escribe “El mayor es :”. Entorno Entero n. Página 12 de 20 . Si lee un número negativo indica con un mensaje que no es posible la operación.3 Algoritmo que lee un número entero positivo N y calcula e imprime el factorial de N!. resultado. Fin Si.S San Sebastián .Huelva /* Se ha encontrado un número mayor que el actual o es el primer número leido. Sino resultado = 1.

// Inicializamos el acumulador i = 1. Entorno Entero n1. Escribe “Introduce un número 2º: “. “ es ”. resultado. Booleano resultadoNeg. Entorno Entero dividendo. // Cambiamos de signo Fin si. n. lo mejor es poner los dos números en positivo y luego considerar el signo. Mientras i < n2 hacer resultado = resultado + n1.5 Algoritmo que obtenga el producto de dos números enteros positivos mediante sumas sucesivas.E. Finsi resultado = 0. Booleano resultadoNeg. Entero i. “ por ”. /* Debemos considerar el caso de que alguno de los números sea negativo. Lee n2. cociente. Lee n1. n2. Fin 20. Página 13 de 20 . /* Ampliamos el problema para permitir números negativos */ Programa Division. Inicio Escribe “Introduce dividendo: “. Si resultadoNeg entonces resultadoNeg = -resultadoNeg. © Santiago D. // Convertimos los números a positivo Si n1 < 0 entonces n1 = -n1. “elevado a ”. /* Ampliamos el problema para permitir números negativos */ Programa Producto. Escribe n1. resultado. Fin si. Lee divisor. Finsi Si n2 < 0 entonces n2 = -n2. Inicio Escribe “Introduce un número 1º: “.Fundamentos de Programación I. n2. lo mejor es poner los dos números en positivo y luego considerar el signo. // Contador Entero resultado. Fin si. Escribe “Introduce divisor: “.6 Algoritmos que obtenga el cociente y el resto de dos números enteros positivos mediante restas.Huelva Escribe x. divisor. Vamos a evitar usar el operador de producto * */ resultadoNeg = (n1 < 0 o n2 < 0) y no (n1 < 0 y n2 < 0). “ es ”. Fin 20. /* Debemos considerar el caso de que alguno de los números sea negativo. Entero resto.S San Sebastián . Lee dividendo. Fin Mientras.

Fin si Fin. // Convertimos los números a positivo Si dividendo < 0 entonces dividendo = .E. Página 14 de 20 . n3. // Cambiamos de signo Fin si. n3. resto. n3. n1.dividendo.S San Sebastián . divisor. n1. n2. Fin si. Lee n1. Sino // n1 <= n2 Si n2 < n3 entonces Escribe n1. Inicio Escribe “Introduce tres números: “. “ da ”. n2. y los imprime en orden creciente e indica si fueron introducidos en ese orden. Fin si. Si resultadoNeg entonces cociente = -cociente. Fin Mientras. “ con resto “.Huelva Vamos a evitar usar el operador de producto * */ resultadoNeg = (dividendo < 0 o divisor < 0) y no (dividendo < 0 y divisor < 0). © Santiago D. cociente = cociente + 1. cociente . B. C. “ entre ”. Finsi cociente = 0. n3. Finsi Si divisor < 0 entonces divisor = . n3. n3. Fin si. // Inicializamos el acumulador resto = dividendo.Fundamentos de Programación I. n2. n2.divisor. Si n1 > n2 entonces Si n2 > n3 entonces Escribe n3. Sino Escribe n2. Sino // n2 >= n3 y n2 >= n1 Si n1 > n3 entonces Escribe n3 n1. Sino Escribe n1. Entorno Entero n1. Sino // n2 <= n3 Si n1 > n3 entonces Escribe n2. Fin si. Mientras divisor < resto hacer resto = resto = divisor. n1.7 Algoritmo que lee tres números A. Escribe dividendo. Fin 20. n2. n2. Escribe “Los números se introdujeron ordenados”. /* Este problema es casi idéntico a uno resulto con anterioridad */ Programa NumerosOrdenAscendente.

/* Fijarse que está fuera del si. cont. Lee n. nPrimos = nPrimos + 1. // Nº de primos que hemos visualizado mientras i < n hacer Si i es un número primo entonces Escribe i. */ Programa NumeroPrimo. Fin Si. /* Para resolver este algoritmo es necesario realizar una aproximación descendente.Huelva 21. Página 15 de 20 . i = 1. Fin mientras.Fundamentos de Programación I. // Variable que indicará si es primo o no Inicio Escribe “Introduce un número: “. Entorno Entero n. damos por supuesta esta operación e intentamos resolver el problema. Para saber si un número es primo debemos dividirlo sucesivamente por sus posibles divisores (números menor que él) y si encontramos algún divisor diremos que el número NO es primo. // suponemos que el número es primo cont = 2. “ NO es primo”. n. // Contador que avanza por los números nPrimos = 0.S San Sebastián . n. es caso contrario será un número primo. se incrementa siempre independiente de que el número i sea primo o no */ © Santiago D. Booleano esPrimo. Fin. “ es primo”. esPrimo = true. La aproximación primera sería Lee n.1 Algoritmo que lea un número por teclado y nos diga si es primo. siendo N el dato de entrada. // Se ha encontrado un divisor Fin si. Si esPrimo entonces Escribe “El número “.2 Algoritmo que genera la lista de los N primeros números primos.E. Sino Escribe “El número “. Partiendo del hecho de que ya sabemos calcular si un número es o no primo. // Empezamos dividiendo por 2 /* Iremos dividiendo el número por sus posibles divisores hasta que encontremos un divisor. /* Un número es primo cuando solo es divisible por si mismo y por el 1. y por tanto el número deje de ser primo o hasta que acabemos la lista de posibles divisores (los menores que él) */ Mientras cont < n y esPrimo hacer // La linea anterior es igual a: // Mientras cont < n y esPrimo=true hacer Si n % cont == 0 entonces esPrimo = false. 21. Fin si.

Lee n.Huelva i = i + 1. Fin Si. nPrimos = nPrimos + 1. Entero n. // Enterio i. */ Programa NPrimerosPrimos.3 Algoritmo lea un número N y muestre por pantalla los números primos menores que N.  Declarada previamente Inicio Escribe “Introduce un número: “. // suponemos que el número es primo cont = 2. i = 1. Fin mientras. Página 16 de 20 . cont. // Nº de primos que hemos visualizado mientras i < n hacer /* Si i es un numero primo entonces */ esPrimo = true. se incrementa siempre independiente de que el número i sea primo o no */ i = i + 1. Una vez tenemos la 1ª aproximación tan solo tenemos que introducir el código que nos indica si un número es primo donde proceda. Entorno // Variables utilizadas para ver si el número i es primo Entero i.S San Sebastián . Booleano esPrimo. // Empezamos dividiendo por 2 Mientras cont < i y esPrimo hacer // Mientras cont < i y esPrimo=true hacer  Hace los mismo Si n % cont entonces esPrimo = false. Para i=1 hasta n-1 hacer Si i es un número primo entonces © Santiago D. La aproximación primera sería Lee n. Fin Mientras. Fin Mientras. Si esPrimo entonces Escribe i. Fin. /* Fijarse que está fuera del si. damos por supuesta esta operación e intentamos resolver el problema. /* Para resolver este algoritmo es necesario realizar una aproximación descendente. // Variable que indicará si es primo o no // Variables utilizadas para ir probando los números Entero nPrimos.Fundamentos de Programación I. Cuando veamos funciones. 21. Partiendo del hecho de que ya sabemos calcular si un número es o no primo.E. veremos que está tarea es trivial. // Contador que avanza por los números nPrimos = 0. // Se ha encontrado un divisor Fin si.

S San Sebastián . Una vez tenemos la 1ª aproximación tan solo tenemos que introducir el código que nos indica si un número es primo donde proceda. Página 17 de 20 . mientras que el otro sacaba los N primeros primos. excepto él mismo. /* Para resolver este algoritmo es necesario realizar una aproximación descendente. Damos por supuesta la operación es numero perfecto que más adelante desarrollaremos La aproximación primera sería Para n=1 hasta 999 hacer Si n es numero perfecto entonces Escribe n. © Santiago D. Fin Si. Cuando veamos funciones. veremos que está tarea es trivial.2. Si esPrimo entonces Escribe i. 21. Para i=1 hasta n-1 /* Si i es un numero primo entonces */ esPrimo = true. La diferencia es la siguiente. Fin. // Empezamos dividiendo por 2 Mientras cont < i y esPrimo hacer Si n % cont entonces esPrimo = false.  Declarada previamente Inicio Escribe “Introduce un número: “.4 Algoritmo que calcula e imprime los números perfectos menores que 1000.3. // Se ha encontrado un divisor Fin si. Fin Si. para N=5 N primeros : 1. Este algoritmo a diferencia del anterior saca los números primos menores que N. Booleano esPrimo. Fin Para. // Enterio i. Lee n. es igual al propio número.Huelva Escribe i.5.5 */ Programa NPrimerosPrimos. cont. Entorno // Variables utilizadas para ver si el número i es primo Entero i. // Variable que indicará si es primo o no // Variables utilizadas para ir probando los números Entero n.E.).Fundamentos de Programación I. Fin Si. Fin mientras. (Un número es perfecto si la suma de sus divisores. Fin Para.2. // suponemos que el número es primo cont = 2.3.7 < N : 1.

Lee grado. // Acumulador en el que guardaremos el valor del polinomio valorPol = 0. Entorno © Santiago D. Fin Para. Para i=1 hasta n-1 hacer Si n % i = 0 entonces sumaDivisores = sumaDivisores + n. De nuevo unimos las dos soluciones y ya tenemos resuelto el problema */ Programa NumerosPerfectos.E. “):”. Ahora debemos desarrollar el subproblema es numero perfecto sumaDivisores = 0. Escribe “Valor de X: “. Inicio Escribe “Grado del polinomio: “. Fin si. Fin si. Entorno Entero coef. sumaDivisores. Lee x. valorPol = valorPol + coef * x ^ i. Fin Para Si sumaDivisores = n entonces // N es un número perfecto Fin si. grado. x. Fin Si.Huelva Fin Para. Para i=x hasta 0 incremento -1 Escribe “Introduce coeficiente de grado (“. Entero valorPol. valorPol. Fin Para Si sumaDivisores = n entonces // N es un número perfecto Escribe n. Para i=1 hasta n-1 hacer Si n % i = 0 entonces sumaDivisores = sumaDivisores + n. Escribe “El valor del polinomio es: “.5 Algoritmo que evalúa un polinomio de grado N. Fin 21. Programa EvaluaPolinomio. Programa TablaMultiplicar.Fundamentos de Programación I. Los datos de entrada son el valor de la variable y los coeficientes. Inicio Para n=1 hasta 999 hacer /* Si n es numero perfecto entonces */ sumaDivisores = 0.S San Sebastián . i. Entorno Entero n i. i. Lee coef. Página 18 de 20 . 21. Fin para. Fin.6 Algoritmo que lee un número entero positivo N e imprime su tabla de multiplicar.

Fin Si. Escribe “La suma de sus divisores es: “.Huelva Entero n. Inicio Escribe “Introduce un número: “. Entero suma. Fin Para. Para i=1 hasta 10 Escribe i. “ x “. i. Entorno Entero an. Entero suma. Lee n. cont. Para i=1 hasta n Si n % i = 0 entonces Suma = suma + i. Para i=1 hasta n Si n % i = 0 entonces Escribe i. Lee n. Fin 22. Fin Si. // Siguiente término de la Fin Para. dandose por definición el primero (0) y el segundo (1).3 Algotimo que lee un número entero y positivo N y escribe los N primeros términos de la sucesión de Fibonacci. Fin 22. Fin 22.2 Algoritmo que lee un número entero y positivo y calcula y escribe la suma de sus divisores. // an + an_1 Entero n. Inicio Escribe “Introduce un número: “. Página 19 de 20 . © Santiago D. Suma=0. Entorno Entero n. Programa SumaDivisores.S San Sebastián . Lee n. Fin Para. a1 = 0 a2= 1 an = an-1 + an-2 Programa Fibonacci. Entorno Entero n. Programa ListaDivisores.Fundamentos de Programación I. i. i. “ = “.E. Inicio Escribe “Introduce un número: “. La sucesión se caracteriza porque cada término es igual a la suma de sus dos anteriores. an_1. i*n. n.1 Algoritmo que lee un número entero y positivo N y escribe la lista de sus divisores. Inicio Escribe “Introduce un número: “. suma.

Página 20 de 20 . an = suma. triviales Si n > 0 entonces Escribe “0”. // Calculamos el término siguiente Escribe suma. /* Los dos casos anteriores ya se han visualizado. por eso empezamos en 3 */ Para cont=3 hasta n Suma = an + an_1.S San Sebastián . Fin Para. // Casos base. // Los dos últimos términos avanzan una posición an_1 = an.Huelva Lee n. Fin si. an = 1. Fin si.Fundamentos de Programación I. // Comenzamos bucle an_1 = 0.E. Si n > 1 entonces Escribe “0”. Fin © Santiago D.