Documentos de Académico
Documentos de Profesional
Documentos de Cultura
02ejerciciosresueltos Algoritmo
02ejerciciosresueltos Algoritmo
8.1 Algoritmo que lea un nmero por el teclado e indique si el nmero ledo es mayor
que 10 y si el nmero ledo es menor que 20.
Programa CompararNumero;
Entorno
Entero numero;
Inicio
Escribe Introduce un nmero:;
Lee numero;
Si numero > 10 entonces
Escribe El nmero es mayor que 10;
Fin si;
Si numero < 20 entonces
Escribe El nmero es menor que 20;
Fin si;
Fin;
8.2 Algoritmo que lea dos nmeros 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;
// Ns leidos por teclado
Entero cuadrado, cubo;
// Vars. Temporales
Inicio
Escribe Introduce el primer nmero;
Lee num1;
Escribe Introduce el segundo nmero;
Lee num2;
Santiago D.
Pgina 1 de 20
Fundamentos de Programacin
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 nmero entero entre 1 y 10, y nos muestre por pantalla el
nmero en letra (el literal). Si el nmero ledo no esta comprendido entre 1 y 10
mostrar dicha incidencia.
Programa NumeroALiteral;
Entorno
Entero n;
Inicio
Escribe Introduce un nmero: ;
Lee n;
/* Aunque se cumpla una condicin 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 nmero no est entre 1 y 10 para mostrar
mensaje */
Si n < 1 o n> 10 entonces
Escribe El nmero no est entre 1 y 10;
Fin si;
Fin;
10.1 Realizar un algoritmo que lea tres nmeros por teclado y nos indique cual de ellos
es el mayor.
Programa NumerosOrdenados;
Entorno
Entero n1, n2, n3; // Ns leidos por teclado
Santiago D.
Pgina 2 de 20
Fundamentos de Programacin
Inicio
Escribe Introduce 3 nmeros;
Lee n1, n2, n3;
Si n1 > n2 entonces
// El mayor ser n1 o n3
Si n1 > n3 entonces
Escribe El mayor es , n1;
Sino // n1 <= n3
Escribe El mayor es , n3;
Fin si;
Sino
// n1 <= n2, debemos comparar n2 y n3. El mayor ser n2 o n3
Si n2 > n3 entonces
Escribe El mayor es , n2;
Sino
Escribe El mayor es , n3;
Fin si;
Fin si
Fin
10.2 Algoritmo que lee tres nmeros cualesquiera y los escribe ordenados de forma
ascendente.
Programa NumerosOrdenAscendente;
Entorno
Entero n1, n2, n3;
Inicio
Escribe Introduce tres nmeros: ;
Lee n1, n2, n3;
Si n1 > n2 entonces
Si n2 > n3 entonces
Escribe n3, n2, n1;
Sino // n2 <= n3
Si n1 > n3 entonces
Escribe n2, n3, n1;
Sino
Escribe n2, n1, n3;
Fin si;
Fin si;
Sino // n1 <= n2
Si n2 < n3 entonces
Escribe n1, n2, n3;
Sino // n2 >= n3 y n2 >= n1
Si n1 > n3 entonces
Escribe n3 n1, n2;
Sino
Escribe n1, n3, n2;
Fin si;
Fin si;
Fin si
Fin;
0<=Nota<3
3<=Nota<5
5<=Nota<6
6<=Nota<7
Santiago D.
MD
INS
SUF
BIE
Pgina 3 de 20
Fundamentos de Programacin
7<=Nota<9
9<=Nota<=10
Programa NumeroALiteral;
Entorno
Entero n;
Inicio
Escribe Introduce un nmero: ;
Lee n;
/* No sangraremos todas las sentencias incluidas dentro del
Sino pues no hay espacio en el papel y adems est forma es ms
clara. No hay que olvidar poner tantos Fin si como Si hayamos
abierto */
Si n = 1 entonces
Escribe Uno;
Sino Si n = 2 entonces
Escribe Dos;
Sino Si n = 3 entonces
Escribe Tres;
Sino Si n = 4 entonces
Escribe Cuatro;
Sino Si n = 5 entonces
Escribe Cinco;
Sino Si n = 6 entonces
Escribe Seis;
Sino Si n = 7 entonces
Escribe Siete;
Sino Si n = 8 entonces
Escribe Ocho;
Sino Si n = 9 entonces
Escribe Nueve;
Sino Si n = 10 entonces
Escribe Diez;
Sino
/* El nmero no est entre 1 y 10 para mostrar mensaje */
Escribe El nmero no est entre 1 y 10;
Fin si; Fin Si; Fin Si; Fin Si;
/* A diferencia de la implementacin del ejercicio 8.3 este
algoritmo cuando una condicin es cierta no evala el resto
innecesariamente */
Fin;
11.1 Algoritmo que lee tres nmeros cualesquiera y nos indica todas sus relaciones
de igualdad
Programa RelacionesIgualdad;
Entorno
Entero n1, n2, n3;
Inicio
Escribe Introduce tres nmeros: ;
Lee n1, n2, n3;
Si n1 = n2 y n1 = n3 entonces
Escribe Los tres nmeros son iguales;
Sino
Si n1 = n3 entonces
Escribe El 1 y el 2 son iguales;
Sino
Si n2 = n3 entonces
Escribe El 2 y el 3 son iguales;
Sino
Escribe Todos son distintos;
Santiago D.
Pgina 4 de 20
Fundamentos de Programacin
Fin si;
Fin si;
Fin si
Fin;
11.2 Algoritmo que recibe como datos de entrada una hora expresada en horas,
minutos y segundos que nos calcula y escribe la hora, minutos y segundos que
sern transcurrido un segundo.
Programa UnSegundoDespues;
Entorno
Entero hora, min, seg;
Inicio
Escribe Introduce hora: ;
Lee hora;
Escribe Introduce minuto: ;
Lee min;
Escribe Introduce segundo: ;
Lee seg;
seg = seg +1;
Si seg > 60 entonces
min = min + 1;
seg = 0;
Si min > 60 entonces
hora = hora + 1;
min = 0;
Si hora > 24 entonces
hora = 0;
Fin si;
Fin si;
Fin si;
Escribe Un segundo despus son las: , hora, :, min, :,
seg;
Fin;
11.3 Algoritmo que lee como dato de entrada un ao y nos dice si se trata de un ao
bisiesto o no. Se sabe que son bisiestos todos los aos mltiplos de 4, excepto los
que sean mltiplos de 100 sin ser mltiplos de 400.
Programa EsBisiesto;
Entorno
Entero anyo;
Inicio
Escribe Introduce Ao: ;
Lee anyo;
Si (anyo % 4
No ( anyo
Escribe El
Sino
Escribe El
Fin si;
Fin;
= 0) y
% 100 = 0 y no ( anyo % 400 =0) ) entonces
ao , anyo , es bisiesto;
ao , anyo , NO es bisiesto;
Santiago D.
Pgina 5 de 20
Fundamentos de Programacin
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.
Programa Calculo_Descuento;
Entorno
Entero PrecioFinal, PrecioTarifa;
Inicio
Escribe Introduce precio Tarifa: ;
Lee PrecioTarifa;
Escribe Introduce precio Final: ;
Lee PrecioFinal;
/* La dificultad de este problema es saber que frmula
matemtica se debe utilizar. Apenas tiene complejidad
algortmica */
Dto = (1-PrecioFinal/PrecioTarifa)*100;
Escibe Descuento = , Dto, %;
Fin;
12.3 Algoritmo que lee 3 nmeros distintos y nos dice cual de ellos es el menor.
Programa NumeroMenor;
Entorno
Entero n1, n2, n3; // Ns leidos por teclado
Inicio
Escribe Introduce 3 nmeros;
Lee n1, n2, n3;
Si n1=n2 o n1=n3 o n2=n3 entonces
Escribe Los nmeros no son distintos;
Sino
Si n1 < n2 entonces
// El menor ser n1 o n3
Si n1 < n3 entonces
Escribe El menor es , n1;
Sino // n1 >= n3
Escribe El menor es , n3;
Fin si;
Santiago D.
Pgina 6 de 20
Fundamentos de Programacin
Sino
// n1 >= n2, debemos comparar n2 y n3. El menor ser n2 o n3
Si n2 < n3 entonces
Escribe El menor es , n2;
Sino
Escribe El menor es , n3;
Fin si;
Fin si;
Fin si;
Fin
12.4 Algoritmo que lee como datos de entrada una fecha expresada en da (1..31),
mes (1..12, y ao y nos dice la fecha que ser el da siguiente. Se supondr que
febrero tiene siempre 28 das.
Programa UnDiaDespues;
Entorno
Entero dia, mes, anyo;
Entero numDiasMes;
Inicio
Escribe Introduce Dia: ;
Lee dia;
Escribe Introduce Mes: ;
Lee mes;
Escribe Introduce Ao: ;
Lee Ao;
Si mes = 2 entonces
numDiasMes = 28;
Sino
Si mes=4 o mes=6 o mes=9 o mes=11 entonces
// Meses de 30 das: Abrir, Junio, Sept. Nov.
NumDiasMes = 30;
Sino
// El resto tiene 31 das
NumDiasMes = 31;
Fin si;
Fin si;
Si dia > numDiasMes entonces
mes = mes + 1;
dia = 1;
Si mes > 12 entonces
anyo = anyo + 1;
mes = 1;
Fin si;
Fin si;
Escribe Un da despus es: , dia, /, mes, /, anyo;
Fin;
12.5 Plantea el algoritmo anterior sin suponer que febrero tiene 28 das.
Programa UnDiaDespues;
Entorno
Entero dia, mes, anyo;
Entero numDiasMes;
Inicio
Escribe Introduce Dia: ;
Lee dia;
Escribe Introduce Mes: ;
Lee mes;
Santiago D.
Pgina 7 de 20
Fundamentos de Programacin
12.6 Algoritmo que lee dos nmeros enteros, positivos y distintos y nos dice si el
mayor es mltiplo del menor o, lo que es lo mismo, si el menor es divisor del mayor.
Programa EsDivisorElMenor;
Entorno
Entero n1, n2; // Ns ledos por teclado
Entero mayor, menor; // Variables temporales
Inicio
Escribe Introduce 2 nmeros;
Lee n1, n2;
// Buscamos el mayor y el menor
Si n1 > n2 entonces
mayor = n1;
menor = n2;
Sino
mayor = n2;
menor = n1;
Fin si;
Si mayor % menor = 0 entonces
Escribe Mayor, es mltiplo de , menor;
Sino
Escribe No existe ninguna relacin entre los nmeros;
Fin si;
Fin
Santiago D.
Pgina 8 de 20
Fundamentos de Programacin
12.7 Algoritmo que calcula la edad de una persona recibiendo como datos de entrada
la fecha de nacimiento, y la fecha actual, ambas en tres variables.
Programa EdadEnAnyos;
Entorno
Entero d_n, m_m, a_n; // Fecha de nacimiento
Entero d_a, m_a, a_a; // Fecha de actual
Entero Edad; // variable temporal
Inicio
Escribe Introduce Fecha nacimiento: ;
Lee d_n, m_n, a_n;
Escribe Fecha actual: ;
Lee d_a, m_a, a_a;
/* La edad de una persona ser igual al ao actual menos el ao
de nacimiento. Si aun no ha cumplido aos en el ao actual
habr que restarle 1*/
Edad = a_a a_n;
/* Comprobamos si ya ha cumplido los aos o no */
Si m_a < m_n o (m_a = m_n y dia_a < d_n) entonces
// Aun no ha cumplido los aos este ao
Edad = Edad - 1;
Fin si;
Escribe Edad = , Edad;
Fin;
16.1 Realizar un algoritmo que muestre por pantalla los nmeros pares menores de
100.
Programa ParesMenoresQue100;
Entorno
Entero n;
Inicio
n = 2;
Mientras n<100 hacer
Escribe n;
n = n + 2;
Fin Mientras;
Fin
Otra forma
Programa ParesMenoresQue100;
Entorno
Entero n;
Inicio
n = 1;
Mientras n<100 hacer
Si n % 2 = 0 entonces
Escribe n;
Fin si;
n = n + 1;
Fin Mientras;
Fin
16.2 Realizar un algoritmo que muestre por pantalla los nmeros mltiplos de 5
menores que 10000.
Programa MultDe5Menor1000;
Entorno
Entero n;
Inicio
Santiago D.
Pgina 9 de 20
Fundamentos de Programacin
n = 5;
Mientras n<1000 hacer
Escribe n;
n = n + 5;
Fin Mientras;
Fin
16.3 Algoritmo que lea un nmero por teclado e imprima por pantalla todos los
nmeros positivos menores que N
Programa ListaNumeros;
Entorno
Entero n;
Entero i; // Contador
Inicio
Escribe Introduce un nmero: ;
Lee n;
i = 1;
Mientras i < n hacer
Escribe i;
i = i + 1;
Fin Mientras;
Fin
Otra forma
Programa ListaNumeros;
Entorno
Entero n;
Inicio
Escribe Introduce un nmero: ;
Lee n;
Mientras n>1 hacer
n = n - 1;
Escribe n;
Fin Mientras;
Fin
20.1 Algoritmo que lee una secuencia de 10 nmeros y obtiene e imprime cuantos hay
positivos, negativos y nulos.
Programa CuentaNumeros;
Entorno
Entero n;
Entero i; // Variable control del bucle
Entero nPos, nNeg, nNulos; // Contadores
Inicio
nPos=0; nNeg=0; nNulos=0;
i = 0;
Mientras i<10 hacer
Escribe Introduce un nmero: ;
Lee n;
Si n>0 entonces
nPos = nPos + 1; // Es positivo
Sino
Si n < 0 entonces
nNeg = nNeg + 1; // Es negativo
Sino
nNulos = nNulos + 1; // Es cero
FinSi;
FinSi;
i = i + 1;
Santiago D.
Pgina 10 de 20
Fundamentos de Programacin
Fin Mientras;
Escribe Total positivos :, nPos;
Escribe Total negativos :, nNeg;
Escribe Total nulos
:, nNulos;
Fin
20.2 Algoritmo que lee una secuencia de nmeros no nulos, terminada con la
introduccin de un 0, y obtiene e imprime el mayor, visualizando un mensaje de si
ha ledo algn nmero negativo.
Programa CuentaNumeros;
Entorno
Entero n;
Entero mayor; // Guarda el valor del mayor
Booleano hayNegativos; // switch
Inicio
hayNegativos = false; // suponemos que no hay negativos
/* El menor de los posibles, cualquier nmero de los ledos por
teclado ser mayor que este */
mayor = -9999999;
hacer
Escribe Introduce un nmero: ;
Lee n;
Si n <> 0 entonces
// Procesamos el nmero ledo
Si n < 0 entonces
hayNegativos = true; // Se ha encontrado un negativo
FinSi;
Si n > mayor entonces
/* Se ha encontrado un nmero mayor que el actual, lo
seleccionamos como mayor */
mayor = n
Fin si;
Fin si;
Mientras n <> 0;
Escribe El mayor es :, mayor;
Si hay Negativos entones
Escribe Se han encontrado nmeros negativos;
Fin Si;
Fin
Santiago D.
Pgina 11 de 20
Fundamentos de Programacin
20.3 Algoritmo que lee un nmero entero positivo N y calcula e imprime el factorial de
N!. Si lee un nmero negativo indica con un mensaje que no es posible la
operacin.
Programa Factorial;
Entorno
Entero n;
Entero i; // Contador
Entero resultado;
Inicio
Escribe Introduce un nmero: ;
Lee n;
Si n < 0 entonces
Escribe No existe factorial de un nmero negativo;
Sino
resultado = 1; // Inicializamos el acumulador
i = 1;
Mientras i < n hacer
resultado = resultado * i;
Fin Mientras;
Escribe El factorial de , n, es , resultado;
Fin si;
Fin
20.4 Algoritmo que lee un nmero X y otro entero positivo N y calcula la N-sima
potencia de X (sin utilizar el operador de potencia).
Programa Potencia;
Entorno
Entero x, n;
Entero i; // Contador
Entero resultado;
Inicio
Escribe Introduce un nmero: ;
Lee x;
Escribe Introduce la potencia: ;
Lee n;
Si n < 0 entonces
Escribe No se calcular potencias negativas;
Sino
resultado = 1; // Inicializamos el acumulador
i = 1;
Mientras i < n hacer
resultado = resultado * x;
Fin Mientras;
Santiago D.
Pgina 12 de 20
Fundamentos de Programacin
20.5 Algoritmo que obtenga el producto de dos nmeros enteros positivos mediante
sumas sucesivas.
/* Ampliamos el problema para permitir nmeros negativos */
Programa Producto;
Entorno
Entero n1, n2;
Entero i; // Contador
Entero resultado;
Booleano resultadoNeg;
Inicio
Escribe Introduce un nmero 1: ;
Lee n1;
Escribe Introduce un nmero 2: ;
Lee n2;
/* Debemos considerar el caso de que alguno de los nmeros
sea negativo, lo mejor es poner los dos nmeros en positivo y
luego considerar el signo.
Vamos a evitar usar el operador de producto * */
resultadoNeg = (n1 < 0 o n2 < 0) y no (n1 < 0 y n2 < 0);
// Convertimos los nmeros a positivo
Si n1 < 0 entonces
n1 = -n1;
Finsi
Si n2 < 0 entonces
n2 = -n2;
Finsi
resultado = 0; // Inicializamos el acumulador
i = 1;
Mientras i < n2 hacer
resultado = resultado + n1;
Fin Mientras;
Si resultadoNeg entonces
resultadoNeg = -resultadoNeg; // Cambiamos de signo
Fin si;
Escribe n1, por , n2, es , resultado;
Fin si;
Fin
20.6 Algoritmos que obtenga el cociente y el resto de dos nmeros enteros positivos
mediante restas.
/* Ampliamos el problema para permitir nmeros negativos */
Programa Division;
Entorno
Entero dividendo, divisor;
Entero resto, cociente;
Booleano resultadoNeg;
Inicio
Escribe Introduce dividendo: ;
Lee dividendo;
Escribe Introduce divisor: ;
Lee divisor;
/* Debemos considerar el caso de que alguno de los nmeros
sea negativo, lo mejor es poner los dos nmeros en positivo y
luego considerar el signo.
Santiago D.
Pgina 13 de 20
Fundamentos de Programacin
20.7 Algoritmo que lee tres nmeros A, B, C, y los imprime en orden creciente e indica
si fueron introducidos en ese orden.
/* Este problema es casi idntico a uno resulto con anterioridad
*/
Programa NumerosOrdenAscendente;
Entorno
Entero n1, n2, n3;
Inicio
Escribe Introduce tres nmeros: ;
Lee n1, n2, n3;
Si n1 > n2 entonces
Si n2 > n3 entonces
Escribe n3, n2, n1;
Sino // n2 <= n3
Si n1 > n3 entonces
Escribe n2, n3, n1;
Sino
Escribe n2, n1, n3;
Fin si;
Fin si;
Sino // n1 <= n2
Si n2 < n3 entonces
Escribe n1, n2, n3;
Sino // n2 >= n3 y n2 >= n1
Si n1 > n3 entonces
Escribe n3 n1, n2;
Sino
Escribe n1, n3, n2;
Escribe Los nmeros se introdujeron ordenados;
Fin si;
Fin si;
Fin si
Fin;
Santiago D.
Pgina 14 de 20
Fundamentos de Programacin
21.1 Algoritmo que lea un nmero por teclado y nos diga si es primo.
/* Un nmero es primo cuando solo es divisible por si mismo y por
el 1.
Para saber si un nmero es primo debemos dividirlo sucesivamente
por sus posibles divisores (nmeros menor que l) y si encontramos
algn divisor diremos que el nmero NO es primo, es caso contrario
ser un nmero primo.
*/
Programa NumeroPrimo;
Entorno
Entero n, cont;
Booleano esPrimo; //
Inicio
Escribe Introduce un
Lee n;
esPrimo = true;
//
cont = 2;
//
21.2 Algoritmo que genera la lista de los N primeros nmeros primos, siendo N el dato
de entrada.
/* Para resolver este algoritmo es necesario realizar una
aproximacin descendente. Partiendo del hecho de que ya sabemos
calcular si un nmero es o no primo, damos por supuesta esta
operacin e intentamos resolver el problema.
La aproximacin primera sera
Lee n;
i = 1;
// Contador que avanza por los nmeros
nPrimos = 0;
// N de primos que hemos visualizado
mientras i < n hacer
Si i es un nmero primo entonces
Escribe i;
nPrimos = nPrimos + 1;
Fin Si;
/* Fijarse que est fuera del si, se incrementa siempre
independiente de que el nmero i sea primo o no */
Santiago D.
Pgina 15 de 20
Fundamentos de Programacin
i = i + 1;
Fin Mientras;
Una vez tenemos la 1 aproximacin tan solo tenemos que
introducir el cdigo que nos indica si un nmero es primo donde
proceda.
Cuando veamos funciones, veremos que est tarea es trivial.
*/
Programa NPrimerosPrimos;
Entorno
// Variables utilizadas para ver si el nmero i es primo
Entero i, cont;
Booleano esPrimo; // Variable que indicar si es primo o no
// Variables utilizadas para ir probando los nmeros
Entero nPrimos;
Entero n;
// Enterio i;
Declarada previamente
Inicio
Escribe Introduce un nmero: ;
Lee n;
i = 1;
// Contador que avanza por los nmeros
nPrimos = 0; // N de primos que hemos visualizado
mientras i < n hacer
/* Si i es un numero primo entonces */
esPrimo = true;
// suponemos que el nmero es primo
cont = 2;
// 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; // Se ha encontrado un divisor
Fin si;
Fin mientras;
Si esPrimo entonces
Escribe i;
nPrimos = nPrimos + 1;
Fin Si;
/* Fijarse que est fuera del si, se incrementa siempre
independiente de que el nmero i sea primo o no */
i = i + 1;
Fin Mientras;
Fin;
21.3 Algoritmo lea un nmero N y muestre por pantalla los nmeros primos menores
que N.
/* Para resolver este algoritmo es necesario realizar una
aproximacin descendente. Partiendo del hecho de que ya sabemos
calcular si un nmero es o no primo, damos por supuesta esta
operacin e intentamos resolver el problema.
La aproximacin primera sera
Lee n;
Para i=1 hasta n-1 hacer
Si i es un nmero primo entonces
Santiago D.
Pgina 16 de 20
Fundamentos de Programacin
Escribe i;
Fin Si;
Fin Para;
Una vez tenemos la 1 aproximacin tan solo tenemos que
introducir el cdigo que nos indica si un nmero es primo donde
proceda.
Cuando veamos funciones, veremos que est tarea es trivial.
Este algoritmo a diferencia del anterior saca los nmeros primos
menores que N, mientras que el otro sacaba los N primeros primos.
La diferencia es la siguiente, para N=5
N primeros : 1,2,3,5,7
< N
: 1,2,3,5
*/
Programa NPrimerosPrimos;
Entorno
// Variables utilizadas para ver si el nmero i es primo
Entero i, cont;
Booleano esPrimo; // Variable que indicar si es primo o no
// Variables utilizadas para ir probando los nmeros
Entero n;
// Enterio i;
Declarada previamente
Inicio
Escribe Introduce un nmero: ;
Lee n;
Para i=1 hasta n-1
/* Si i es un numero primo entonces */
esPrimo = true;
// suponemos que el nmero es primo
cont = 2;
// Empezamos dividiendo por 2
Mientras cont < i y esPrimo hacer
Si n % cont entonces
esPrimo = false; // Se ha encontrado un divisor
Fin si;
Fin mientras;
Si esPrimo entonces
Escribe i;
Fin Si;
Fin Para;
Fin;
21.4 Algoritmo que calcula e imprime los nmeros perfectos menores que 1000. (Un
nmero es perfecto si la suma de sus divisores, excepto l mismo, es igual al propio
nmero.).
/* Para resolver este algoritmo es necesario realizar una
aproximacin descendente. Damos por supuesta la operacin es
numero perfecto que ms adelante desarrollaremos
La aproximacin primera sera
Para n=1 hasta 999 hacer
Si n es numero perfecto entonces
Escribe n;
Fin Si;
Santiago D.
Pgina 17 de 20
Fundamentos de Programacin
Fin Para;
Ahora debemos desarrollar el subproblema es numero perfecto
sumaDivisores = 0;
Para i=1 hasta n-1 hacer
Si n % i = 0 entonces
sumaDivisores = sumaDivisores + n;
Fin si;
Fin Para
Si sumaDivisores = n entonces
// N es un nmero perfecto
Fin si;
De nuevo unimos las dos soluciones y ya tenemos resuelto el
problema
*/
Programa NumerosPerfectos;
Entorno
Entero n i, sumaDivisores;
Inicio
Para n=1 hasta 999 hacer
/* Si n es numero perfecto entonces */
sumaDivisores = 0;
Para i=1 hasta n-1 hacer
Si n % i = 0 entonces
sumaDivisores = sumaDivisores + n;
Fin si;
Fin Para
Si sumaDivisores = n entonces
// N es un nmero perfecto
Escribe n;
Fin Si;
Fin Para;
Fin;
21.5 Algoritmo que evala un polinomio de grado N. Los datos de entrada son el valor
de la variable y los coeficientes.
Programa EvaluaPolinomio;
Entorno
Entero coef, grado, x, i;
Entero valorPol;
Inicio
Escribe Grado del polinomio: ;
Lee grado;
Escribe Valor de X: ;
Lee x;
// Acumulador en el que guardaremos el valor del polinomio
valorPol = 0;
Para i=x hasta 0 incremento -1
Escribe Introduce coeficiente de grado (, i, ):;
Lee coef;
valorPol = valorPol + coef * x ^ i;
Fin para;
Escribe El valor del polinomio es: , valorPol;
Fin
21.6 Algoritmo que lee un nmero entero positivo N e imprime su tabla de multiplicar.
Programa TablaMultiplicar;
Entorno
Santiago D.
Pgina 18 de 20
Fundamentos de Programacin
Entero n, i;
Inicio
Escribe Introduce un nmero: ;
Lee n;
Para i=1 hasta 10
Escribe i, x , n, = , i*n;
Fin Para;
Fin
// Siguiente trmino de la
22.1 Algoritmo que lee un nmero entero y positivo N y escribe la lista de sus
divisores.
Programa ListaDivisores;
Entorno
Entero n, i;
Inicio
Escribe Introduce un nmero: ;
Lee n;
Para i=1 hasta n
Si n % i = 0 entonces
Escribe i;
Fin Si;
Fin Para;
Fin
22.2 Algoritmo que lee un nmero entero y positivo y calcula y escribe la suma de sus
divisores.
Programa SumaDivisores;
Entorno
Entero n, i;
Entero suma;
Inicio
Escribe Introduce un nmero: ;
Lee n;
Suma=0;
Para i=1 hasta n
Si n % i = 0 entonces
Suma = suma + i;
Fin Si;
Fin Para;
Escribe La suma de sus divisores es: , suma;
Fin
22.3 Algotimo que lee un nmero entero y positivo N y escribe los N primeros trminos
de la sucesin de Fibonacci. La sucesin se caracteriza porque cada trmino es
igual a la suma de sus dos anteriores, dandose por definicin el primero (0) y el
segundo (1).
a1 = 0
a2= 1
an = an-1 + an-2
Programa Fibonacci;
Entorno
Entero an, an_1;
Entero suma; // an + an_1
Entero n, cont;
Inicio
Escribe Introduce un nmero: ;
Santiago D.
Pgina 19 de 20
Fundamentos de Programacin
Lee n;
// Casos
Si n > 0
Escribe
Fin si;
Si n > 1
Escribe
Fin si;
base, triviales
entonces
0;
entonces
0;
// Comenzamos bucle
an_1 = 0;
an = 1;
/* Los dos casos anteriores ya se han visualizado, por eso
empezamos en 3 */
Para cont=3 hasta n
Suma = an + an_1;
// Calculamos el trmino siguiente
Escribe suma;
// Los dos ltimos trminos avanzan una posicin
an_1 = an;
an = suma;
Fin Para;
Fin
Santiago D.
Pgina 20 de 20