02ejerciciosresueltos-1235083033316969-2

20
Fundamentos de Programación I.E.S San Sebastián - Huelva © Santiago D. Página 1 de 20 Presenta ción 2 - Diagramas de flujo u Ordinogramas  La resolución de e stos ejercic ios ha sido fruto de las prisas, es por e llo que el alumno de be 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 propues ta no es la única, ni la mejor, ni la más be lla, si es que se puede entende r 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 alguna s notaciones s intácticas no se r espeten al 100%, fundamentalmente de bido a que el procesador de textos trabaja por su cuenta y a veces hace modificaciones que no  proceden:   Pone mayúsc ulas donde no se lo piden.   En las comillas “, qu e deben ser el mismo carác ter para cer rar y abrir, ca mbia los caracteres de forma que la comilla de apertura “ y cierre ” son diferentes.  El alumno debe sab er estos er rores en e l pseudocódigo n o conllevan ningún pro blema, pero cuando escriba en el lenguaje de programación el algoritmo debe respetar las normas léxicas y  sintácticas del lengu aje o tendrá er rores de compilación  Los ejercicios están numer ados referenc iado en primer luga r 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;

Transcript of 02ejerciciosresueltos-1235083033316969-2

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    1/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 1 de 20

    Presentacin 2 - Diagramas de flujo u OrdinogramasLa resolucin de estos ejercicios ha sido fruto de las prisas, es por ello que el alumno debetener en cuenta los posibles errores que la soluciones pudiesen contener. Todos los ejerciciosaqu resueltos han sido explicados y resueltos en clase.

    La solucin propuesta no es la nica, ni la mejor, ni la ms bella, si es que se puede entender

    de forma absoluta en alguna situacin los trminos anteriores. El objetivo es que el alumnoentienda la solucin propuesta, sabiendo verificar si su solucin es correcta.

    Puede que algunas notaciones sintcticas no se respeten al 100%, fundamentalmente debido aque el procesador de textos trabaja por su cuenta y a veces hace modificaciones que noproceden:

    Pone maysculas donde no se lo piden.

    En las comillas , que deben ser el mismo carcter para cerrar y abrir, cambia loscaracteres de forma que la comilla de apertura y cierre son diferentes.

    El alumno debe saber estos errores en el pseudocdigo no conllevan ningn problema, perocuando escriba en el lenguaje de programacin el algoritmo debe respetar las normas lxicas ysintcticas del lenguaje o tendr errores de compilacin

    Los ejercicios estn numerados referenciado en primer lugar a la diapositiva en la que seencuentran, y en segundo lugar el nmero de ejercicio dentro de la diapositiva en cuestin. Detodas formas se incluye el enunciado del ejercicio para que no haya lugar a dudas acerca de loque se est resolviendo.

    8.1 Algoritmo que lea un nmero por el teclado e indique si el nmero ledo es mayorque 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 pantallaindicando 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;

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    2/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 2 de 20

    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 elnmero en letra (el literal). Si el nmero ledo no esta comprendido entre 1 y 10mostrar 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 elloses el mayor.

    Programa NumerosOrdenados;Entorno

    Entero n1, n2, n3; // Ns leidos por teclado

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    3/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 3 de 20

    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 n2 entonces

    Si n2 > n3 entonces

    Escribe n3, n2, n1;

    Sino // n2 n3 entonces

    Escribe n2, n3, n1;

    Sino

    Escribe n2, n1, n3;

    Fin si;

    Fin si;

    Sino // n1 = n3 y n2 >= n1

    Si n1 > n3 entonces

    Escribe n3 n1, n2;

    SinoEscribe n1, n3, n2;

    Fin si;

    Fin si;

    Fin si

    Fin;

    10.3 Algoritmo que lee una calificacin numrica entre 0 y 10 y la transforma encalificacin alfabtica, escribiendo el resultado

    0

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    4/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 4 de 20

    7

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    5/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 5 de 20

    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 quesern 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 aobisiesto o no. Se sabe que son bisiestos todos los aos mltiplos de 4, excepto losque sean mltiplos de 100 sin ser mltiplos de 400.

    Programa EsBisiesto;

    Entorno

    Entero anyo;

    Inicio

    Escribe Introduce Ao: ;

    Lee anyo;

    Si (anyo % 4 = 0) y

    No ( anyo % 100 = 0 y no ( anyo % 400 =0) ) entonces

    Escribe El ao , anyo , es bisiesto;

    Sino

    Escribe El ao , anyo , NO es bisiesto;

    Fin si;

    Fin;

    12.1 En un determinado comercio se realiza un descuento dependiendo del precio decada producto. Si el precio es inferior a 6 , no se hace descuento; si es mayor oigual a 6 y menor que 60 se hace un 5% de descuento, y si es mayor o igual a

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    6/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 6 de 20

    60 se hace un 10% de descuento.Realizar el algoritmo que lee el precio de un producto y nos calcula y escribe suprecio final.

    Programa Calculo_Precio_Final;

    Entorno

    Entero PrecioInicial, Dto;

    Inicio

    Escribe Introduce precio Inicial: ;

    Lee PrecioInicial;

    Si PrecioInicial < 6 entonces

    Dto = 0;

    Sino

    Si PresioInical < 60 entonces

    Dto = 5;

    Sino

    Dto = 10;

    Fin si;

    Escibe Precio final = , PrecioInicial*(1 + Dto/100),

    Descuento = , Dto, %;

    Fin;

    12.2 Algoritmo que lee el precio final pagado por un producto y su precio de tarifa ynos 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 >= n3Escribe El menor es , n3;

    Fin si;

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    7/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 7 de 20

    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 quefebrero 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;

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    8/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 8 de 20

    Escribe Introduce Ao: ;

    Lee Ao;

    Si mes = 2 entonces

    Si (anyo % 4 = 0) y

    No ( anyo % 100 = 0 y no ( anyo % 400 =0) ) entonces

    // Es bisiestonumDiasMes = 29;

    Sino

    numDiasMes = 28;

    Fin Si;

    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;// Filtramos si la fecha es correcta

    Si dia>=1 y dia= 1 y mes 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;

    Sino

    Escribe La fecha es incorrecta;

    Fin Si;

    Fin;

    12.6 Algoritmo que lee dos nmeros enteros, positivos y distintos y nos dice si elmayor 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

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    9/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 9 de 20

    12.7 Algoritmo que calcula la edad de una persona recibiendo como datos de entradala 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 de100.

    Programa ParesMenoresQue100;

    Entorno

    Entero n;

    Inicio

    n = 2;Mientras n

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    10/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 10 de 20

    n = 5;

    Mientras n1 hacer

    n = n - 1;Escribe n;

    Fin Mientras;

    Fin

    20.1 Algoritmo que lee una secuencia de 10 nmeros y obtiene e imprime cuantos haypositivos, negativos y nulos.

    Programa CuentaNumeros;

    Entorno

    Entero n;

    Entero i; // Variable control del bucle

    Entero nPos, nNeg, nNulos; // Contadores

    InicionPos=0; nNeg=0; nNulos=0;

    i = 0;

    Mientras i0 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;

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    11/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 11 de 20

    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 laintroduccin de un 0, y obtiene e imprime el mayor, visualizando un mensaje de siha 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

    Otra forma, no presuponemos ningn nmero como mayor

    Programa CuentaNumeros;

    Entorno

    Entero n;

    Entero mayor; // Guarda el valor del mayorBooleano hayNegativos; // switch

    Booleano esPrimeraVez;

    Inicio

    hayNegativos = false;

    esPrimeraVez = true;

    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 esPrimeraVez o n > mayor entonces

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    12/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 12 de 20

    /* Se ha encontrado un nmero mayor que el actual o es el

    primer nmero leido, lo seleccionamos como mayor */

    mayor = n;

    esPrimeraVez = false;

    Fin si;

    Fin si;

    Mientras n 0;Si esPrimeraVez entonces

    Escribe No se ha introducido ningn nmero;

    Sino

    Escribe El mayor es :, mayor;

    Fin si;

    Si hay Negativos entones

    Escribe Se han encontrado nmeros negativos;

    Fin Si;

    Fin

    20.3 Algoritmo que lee un nmero entero positivo N y calcula e imprime el factorial deN!. 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-simapotencia 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 hacerresultado = resultado * x;

    Fin Mientras;

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    13/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 13 de 20

    Escribe x, elevado a , n, es , resultado;

    Fin si;

    Fin

    20.5 Algoritmo que obtenga el producto de dos nmeros enteros positivos mediantesumas 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 positivosmediante 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 nmerossea negativo, lo mejor es poner los dos nmeros en positivo y

    luego considerar el signo.

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    14/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 14 de 20

    Vamos a evitar usar el operador de producto * */

    resultadoNeg = (dividendo < 0 o divisor < 0) y no (dividendo n2 entonces

    Si n2 > n3 entonces

    Escribe n3, n2, n1;

    Sino // n2 n3 entonces

    Escribe n2, n3, n1;

    Sino

    Escribe n2, n1, n3;

    Fin si;

    Fin si;

    Sino // n1 = 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;

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    15/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 15 de 20

    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; // Variable que indicar si es primo o no

    Inicio

    Escribe Introduce un nmero: ;

    Lee n;

    esPrimo = true; // suponemos que el nmero es primo

    cont = 2; // Empezamos dividiendo por 2

    /* Iremos dividiendo el nmero por sus posibles divisores hasta

    que encontremos un divisor, y por tanto el nmero 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; // Se ha encontrado un divisor

    Fin si;

    Fin mientras;Si esPrimo entonces

    Escribe El nmero , n, es primo;

    Sino

    Escribe El nmero , n, NO es primo;

    Fin si;

    Fin;

    21.2 Algoritmo que genera la lista de los N primeros nmeros primos, siendo N el datode entrada.

    /* Para resolver este algoritmo es necesario realizar una

    aproximacin descendente. Partiendo del hecho de que ya sabemoscalcular 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 primoentonces

    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 */

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    16/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 16 de 20

    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

    InicioEscribe 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 primoentonces */

    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 entoncesesPrimo = 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 menoresque 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 primoentonces

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    17/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 17 de 20

    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 primoEntero 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 primoentonces */

    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. (Unnmero es perfecto si la suma de sus divisores, excepto l mismo, es igual al propionmero.).

    /* Para resolver este algoritmo es necesario realizar una

    aproximacin descendente. Damos por supuesta la operacin es

    numero perfectoque ms adelante desarrollaremos

    La aproximacin primera sera

    Para n=1 hasta 999 hacer

    Si n es numero perfectoentoncesEscribe n;

    Fin Si;

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    18/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 18 de 20

    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;

    InicioPara n=1 hasta 999 hacer

    /* Si n es numero perfectoentonces */

    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 valorde 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

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    19/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 19 de 20

    Entero n, i;

    Inicio

    Escribe Introduce un nmero: ;

    Lee n;

    Para i=1 hasta 10

    Escribe i, x , n, = , i*n; // Siguiente trmino de laFin Para;

    Fin

    22.1 Algoritmo que lee un nmero entero y positivo N y escribe la lista de susdivisores.

    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 susdivisores.

    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 trminosde la sucesin de Fibonacci. La sucesin se caracteriza porque cada trmino esigual a la suma de sus dos anteriores, dandose por definicin el primero (0) y elsegundo (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: ;

  • 5/20/2018 02ejerciciosresueltos-1235083033316969-2

    20/20

    Fundamentos de Programacin I.E.S San Sebastin - Huelva

    Santiago D. Pgina 20 de 20

    Lee n;

    // Casos base, triviales

    Si n > 0 entonces

    Escribe 0;

    Fin si;

    Si n > 1 entoncesEscribe 0;

    Fin si;

    // 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