SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
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
Fundamentos de Programación                                I.E.S San Sebastián - Huelva

  Inicio
    Escribe “Introduce 3 números”;
    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 números cualesquiera y los escribe ordenados de forma
   ascendente.
  Programa NumerosOrdenAscendente;
  Entorno
    Entero n1, n2, n3;
  Inicio
    Escribe “Introduce tres números: “;
    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;

10.3 Algoritmo que lee una calificación numérica entre 0 y 10 y la transforma en
   calificación alfabética, escribiendo el resultado
           0<=Nota<3                  MD
           3<=Nota<5                  INS
           5<=Nota<6                  SUF
           6<=Nota<7                  BIE

© Santiago D.                                                           Página 3 de 20
Fundamentos de Programación                               I.E.S San Sebastián - Huelva

           7<=Nota<9                 NOT
           9<=Nota<=10               SOB
  Programa NumeroALiteral;
  Entorno
    Entero n;
  Inicio
    Escribe “Introduce un número: “;
    Lee n;
    /* 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. 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 número no está entre 1 y 10 para mostrar mensaje */
      Escribe “El número no está entre 1 y 10”;
    Fin si; Fin Si; Fin Si; … Fin Si;
    /* A diferencia de la implementación del ejercicio 8.3 este
    algoritmo cuando una condición es cierta no evalúa el resto
    innecesariamente */
  Fin;

11.1 Algoritmo que lee tres números cualesquiera y nos indica todas sus relaciones
   de igualdad
  Programa RelacionesIgualdad;
  Entorno
    Entero n1, n2, n3;
  Inicio
    Escribe “Introduce tres números: “;
    Lee n1, n2, n3;
    Si n1 = n2 y n1 = n3 entonces
      Escribe “Los tres números 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.                                                          Página 4 de 20
Fundamentos de Programación                                 I.E.S San Sebastián - Huelva

        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
   serán 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 después son las: “, hora, “:”, min, “:”,
    seg;
  Fin;


11.3 Algoritmo que lee como dato de entrada un año y nos dice si se trata de un año
   bisiesto o no. Se sabe que son bisiestos todos los años múltiplos de 4, excepto los
   que sean múltiplos de 100 sin ser múltiplos de 400.
  Programa EsBisiesto;
  Entorno
    Entero anyo;
  Inicio
    Escribe “Introduce Año: “;
    Lee anyo;

    Si (anyo % 4     = 0) y
        No ( anyo    % 100 = 0 y no ( anyo % 400 =0) ) entonces
      Escribe “El    año “, anyo , “ es bisiesto”;
    Sino
      Escribe “El     año “, anyo , “ NO es bisiesto”;
    Fin si;
  Fin;


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

© Santiago D.                                                            Página 5 de 20
Fundamentos de Programación                                  I.E.S San Sebastián - Huelva

  60 € se hace un 10% de descuento.
  Realizar el algoritmo que lee el precio de un producto y nos calcula y escribe su
  precio 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 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 fórmula
     matemática se debe utilizar. Apenas tiene complejidad
     algorítmica */
     Dto = (1-PrecioFinal/PrecioTarifa)*100;

    Escibe “Descuento = “, Dto, “%”;
  Fin;

12.3 Algoritmo que lee 3 números distintos y nos dice cual de ellos es el menor.
  Programa NumeroMenor;
  Entorno
    Entero n1, n2, n3; // Nºs leidos por teclado
  Inicio
    Escribe “Introduce 3 números”;
    Lee n1, n2, n3;
    Si n1=n2 o n1=n3 o n2=n3 entonces
      Escribe “Los números 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.                                                             Página 6 de 20
Fundamentos de Programación                                  I.E.S San Sebastián - Huelva

      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 día (1..31),
   mes (1..12, y año y nos dice la fecha que será el día siguiente. Se supondrá que
   febrero tiene siempre 28 días.
  Programa UnDiaDespues;
  Entorno
    Entero dia, mes, anyo;
    Entero numDiasMes;
  Inicio
    Escribe “Introduce Dia: “;
    Lee dia;
    Escribe “Introduce Mes: “;
    Lee mes;
    Escribe “Introduce Año: “;
    Lee Año;

    Si mes = 2 entonces
      numDiasMes = 28;
    Sino
      Si mes=4 o mes=6 o mes=9 o mes=11 entonces
        // Meses de 30 días: Abrir, Junio, Sept. Nov.
        NumDiasMes = 30;
      Sino
        // El resto tiene 31 días
        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 día después es: “, dia, “/”, mes, “/”, anyo;
  Fin;

12.5 Plantea el algoritmo anterior sin suponer que febrero tiene 28 días.
  Programa UnDiaDespues;
  Entorno
    Entero dia, mes, anyo;
    Entero numDiasMes;
  Inicio
    Escribe “Introduce Dia: “;
    Lee dia;
    Escribe “Introduce Mes: “;
    Lee mes;


© Santiago D.                                                               Página 7 de 20
Fundamentos de Programación                                 I.E.S San Sebastián - Huelva

     Escribe “Introduce Año: “;
     Lee Año;

    Si mes = 2 entonces
      Si (anyo % 4 = 0) y
              No ( anyo % 100 = 0 y no ( anyo % 400 =0) ) entonces
        // Es bisiesto
        numDiasMes = 29;
      Sino
        numDiasMes = 28;
      Fin Si;
    Sino
      Si mes=4 o mes=6 o mes=9 o mes=11 entonces
        // Meses de 30 días: Abrir, Junio, Sept. Nov.
        NumDiasMes = 30;
      Sino
        // El resto tiene 31 días
        NumDiasMes = 31;
      Fin si;
    Fin si;
    // 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;
       dia = 1;
       Si mes > 12 entonces
         anyo = anyo + 1;
         mes = 1;
       Fin si;
      Fin si;
      Escribe “Un día después es: “, dia, “/”, mes, “/”, anyo;
    Sino
      Escribe “La fecha es incorrecta”;
    Fin Si;
  Fin;


12.6 Algoritmo que lee dos números enteros, positivos y distintos y nos dice si el
   mayor es múltiplo del menor o, lo que es lo mismo, si el menor es divisor del mayor.
  Programa EsDivisorElMenor;
  Entorno
    Entero n1, n2; // Nºs leídos por teclado
    Entero mayor, menor; // Variables temporales
  Inicio
    Escribe “Introduce 2 números”;
    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 múltiplo de ”, menor;
    Sino
      Escribe “No existe ninguna relación entre los números”;
    Fin si;
  Fin


© Santiago D.                                                            Página 8 de 20
Fundamentos de Programación                                I.E.S San Sebastián - Huelva

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 año actual menos el año
    de nacimiento. Si aun no ha cumplido años en el año actual
    habrá que restarle 1*/
    Edad = a_a – a_n;
    /* 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 - 1;
    Fin si;
    Escribe “Edad = “, Edad;
  Fin;

16.1 Realizar un algoritmo que muestre por pantalla los números 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 números múltiplos de 5
   menores que 10000.
  Programa MultDe5Menor1000;
  Entorno
    Entero n;
  Inicio

© Santiago D.                                                           Página 9 de 20
Fundamentos de Programación                                I.E.S San Sebastián - Huelva

    n = 5;
    Mientras n<1000 hacer
      Escribe n;
      n = n + 5;
    Fin Mientras;
  Fin

16.3 Algoritmo que lea un número por teclado e imprima por pantalla todos los
   números positivos menores que N
  Programa ListaNumeros;
  Entorno
    Entero n;
    Entero i; // Contador
  Inicio
    Escribe “Introduce un número: “;
    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 número: “;
    Lee n;
    Mientras n>1 hacer
      n = n - 1;
      Escribe n;
    Fin Mientras;
  Fin

20.1 Algoritmo que lee una secuencia de 10 números 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 número: “;
      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.                                                          Página 10 de 20
Fundamentos de Programación                                I.E.S San Sebastián - Huelva

    Fin Mientras;
    Escribe “Total positivos :”, nPos;
    Escribe “Total negativos :”, nNeg;
    Escribe “Total nulos     :”, nNulos;
  Fin

20.2 Algoritmo que lee una secuencia de números no nulos, terminada con la
   introducción de un 0, y obtiene e imprime el mayor, visualizando un mensaje de si
   ha leído algún número 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 número de los leídos por
    teclado será mayor que este */
    mayor = -9999999;
    hacer
      Escribe “Introduce un número: “;
      Lee n;
      Si n <> 0 entonces
       // Procesamos el número leído
       Si n < 0 entonces
         hayNegativos = true; // Se ha encontrado un negativo
        FinSi;
        Si n > mayor entonces
         /* Se ha encontrado un número 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 números negativos”;
    Fin Si;
  Fin

Otra forma, no presuponemos ningún número como mayor
  Programa CuentaNumeros;
  Entorno
    Entero n;
    Entero mayor; // Guarda el valor del mayor
    Booleano hayNegativos; // switch
    Booleano esPrimeraVez;
  Inicio
    hayNegativos = false;
    esPrimeraVez = true;
    hacer
      Escribe “Introduce un número: “;
      Lee n;
      Si n <> 0 entonces
       // Procesamos el número leído
       Si n < 0 entonces
         hayNegativos = true; // Se ha encontrado un negativo
        FinSi;
        Si esPrimeraVez o n > mayor entonces


© Santiago D.                                                          Página 11 de 20
Fundamentos de Programación                                 I.E.S San Sebastián - Huelva

         /* Se ha encontrado un número mayor que el actual o es el
         primer número leido, lo seleccionamos como mayor */
         mayor = n;
         esPrimeraVez = false;
        Fin si;
      Fin si;
    Mientras n <> 0;
    Si esPrimeraVez entonces
      Escribe “No se ha introducido ningún número”;
    Sino
      Escribe “El mayor es :”, mayor;
    Fin si;
    Si hay Negativos entones
      Escribe “Se han encontrado números negativos”;
    Fin Si;
  Fin

20.3 Algoritmo que lee un número entero positivo N y calcula e imprime el factorial de
   N!. Si lee un número negativo indica con un mensaje que no es posible la
   operación.
  Programa Factorial;
  Entorno
    Entero n;
    Entero i; // Contador
    Entero resultado;
  Inicio
    Escribe “Introduce un número: “;
    Lee n;
    Si n < 0 entonces
      Escribe “No existe factorial de un número 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 número 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 número: “;
    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.                                                           Página 12 de 20
Fundamentos de Programación                                I.E.S San Sebastián - Huelva

      Escribe x, “elevado a ”, n, “ es ”, resultado;
    Fin si;
  Fin

20.5 Algoritmo que obtenga el producto de dos números enteros positivos mediante
   sumas sucesivas.
  /* Ampliamos el problema para permitir números negativos */
  Programa Producto;
  Entorno
    Entero n1, n2;
    Entero i; // Contador
    Entero resultado;
    Booleano resultadoNeg;
  Inicio
    Escribe “Introduce un número 1º: “;
    Lee n1;
    Escribe “Introduce un número 2º: “;
    Lee n2;
    /* Debemos considerar el caso de que alguno de los números
    sea negativo, lo mejor es poner los dos números 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 números 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 números enteros positivos
   mediante restas.
  /* Ampliamos el problema para permitir números 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 números
    sea negativo, lo mejor es poner los dos números en positivo y
    luego considerar el signo.

© Santiago D.                                                          Página 13 de 20
Fundamentos de Programación                                I.E.S San Sebastián - Huelva

     Vamos a evitar usar el operador de producto * */
     resultadoNeg = (dividendo < 0 o divisor < 0) y no (dividendo <
     0 y divisor < 0);

     // Convertimos los números a positivo
     Si dividendo < 0 entonces
      dividendo = - dividendo;
     Finsi
     Si divisor < 0 entonces
      divisor = - divisor;
     Finsi

    cociente = 0; // Inicializamos el acumulador
    resto = dividendo;
    Mientras divisor < resto hacer
      resto = resto = divisor;
      cociente = cociente + 1;
    Fin Mientras;
    Si resultadoNeg entonces
      cociente = -cociente; // Cambiamos de signo
    Fin si;
    Escribe dividendo, “ entre ”, divisor, “ da ”, cociente , “ con
    resto “, resto;
  Fin

20.7 Algoritmo que lee tres números A, B, C, y los imprime en orden creciente e indica
   si fueron introducidos en ese orden.
  /* Este problema es casi idéntico a uno resulto con anterioridad
  */
  Programa NumerosOrdenAscendente;
  Entorno
     Entero n1, n2, n3;
  Inicio
     Escribe “Introduce tres números: “;
     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 números se introdujeron ordenados”;
        Fin si;
      Fin si;
     Fin si
  Fin;




© Santiago D.                                                          Página 14 de 20
Fundamentos de Programación                                I.E.S San Sebastián - Huelva

21.1 Algoritmo que lea un número por teclado y nos diga si es primo.
  /* Un número es primo cuando solo es divisible por si mismo y por
  el 1.

  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, es caso contrario
  será un número primo.

  */
  Programa NumeroPrimo;
  Entorno
     Entero n, cont;
     Booleano esPrimo; //       Variable que indicará si es primo o no
  Inicio
     Escribe “Introduce un      número: “;
     Lee n;
     esPrimo = true;    //      suponemos que el número es primo
     cont = 2;          //      Empezamos dividiendo por 2

     /* Iremos dividiendo el número por sus posibles divisores hasta
     que encontremos un divisor, 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; // Se ha encontrado un divisor
      Fin si;
    Fin mientras;
    Si esPrimo entonces
      Escribe “El número “, n, “ es primo”;
    Sino
      Escribe “El número “, n, “ NO es primo”;
    Fin si;
  Fin;


21.2 Algoritmo que genera la lista de los N primeros números primos, siendo N el dato
   de entrada.
  /* Para resolver este algoritmo es necesario realizar una
  aproximación descendente. Partiendo del hecho de que ya sabemos
  calcular si un número es o no primo, damos por supuesta esta
  operación e intentamos resolver el problema.

  La aproximación primera sería

       Lee n;
       i = 1;            // Contador que avanza por los números
       nPrimos = 0;      // Nº de primos que hemos visualizado
       mientras i < n hacer
         Si i es un número primo entonces
          Escribe i;
          nPrimos = nPrimos + 1;
         Fin Si;
         /* Fijarse que está fuera del si, se incrementa siempre
         independiente de que el número i sea primo o no */

© Santiago D.                                                          Página 15 de 20
Fundamentos de Programación                              I.E.S San Sebastián - Huelva

         i = i + 1;
       Fin Mientras;

  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.

  Cuando veamos funciones, veremos que está tarea es trivial.
  */

  Programa NPrimerosPrimos;
  Entorno
    // Variables utilizadas para ver si el número i es primo
    Entero i, cont;
    Booleano esPrimo; // Variable que indicará si es primo o no
    // Variables utilizadas para ir probando los números
    Entero nPrimos;
    Entero n;
    // Enterio i;         Declarada previamente
  Inicio
    Escribe “Introduce un número: “;
    Lee n;

     i = 1;        // Contador que avanza por los números
     nPrimos = 0; // Nº de primos que hemos visualizado
     mientras i < n hacer
       /* Si i es un numero primo entonces */
      esPrimo = true;    // suponemos que el número 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 número i sea primo o no */
      i = i + 1;
    Fin Mientras;
  Fin;


21.3 Algoritmo lea un número N y muestre por pantalla los números primos menores
   que N.
  /* Para resolver este algoritmo es necesario realizar una
  aproximación descendente. Partiendo del hecho de que ya sabemos
  calcular si un número es o no primo, damos por supuesta esta
  operación e intentamos resolver el problema.

  La aproximación primera sería

       Lee n;
       Para i=1 hasta n-1 hacer
         Si i es un número primo entonces

© Santiago D.                                                        Página 16 de 20
Fundamentos de Programación                                 I.E.S San Sebastián - Huelva

          Escribe i;
         Fin Si;
       Fin Para;

  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.

  Cuando veamos funciones, veremos que está tarea es trivial.

  Este algoritmo a diferencia del anterior saca los números 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 número i es primo
    Entero i, cont;
    Booleano esPrimo; // Variable que indicará si es primo o no
    // Variables utilizadas para ir probando los números
    Entero n;
    // Enterio i;         Declarada previamente
  Inicio
    Escribe “Introduce un número: “;
    Lee n;

     Para i=1 hasta n-1
       /* Si i es un numero primo entonces */
      esPrimo = true;    // suponemos que el número 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 números perfectos menores que 1000. (Un
   número es perfecto si la suma de sus divisores, excepto él mismo, es igual al propio
   número.).
  /* 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;
         Fin Si;

© Santiago D.                                                           Página 17 de 20
Fundamentos de Programación                                 I.E.S San Sebastián - Huelva

       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 número 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 número perfecto
         Escribe n;
      Fin Si;
    Fin Para;
  Fin;


21.5 Algoritmo que evalúa 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 número entero positivo N e imprime su tabla de multiplicar.
  Programa TablaMultiplicar;
  Entorno

© Santiago D.                                                           Página 18 de 20
Fundamentos de Programación                                   I.E.S San Sebastián - Huelva

    Entero n, i;
  Inicio
    Escribe “Introduce un número: “;
    Lee n;

    Para i=1 hasta 10
      Escribe i, “ x “, n, “ = “, i*n;                 // Siguiente término de la
    Fin Para;
  Fin

22.1 Algoritmo que lee un número entero y positivo N y escribe la lista de sus
   divisores.
  Programa ListaDivisores;
  Entorno
    Entero n, i;
  Inicio
    Escribe “Introduce un número: “;
    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 número entero y positivo y calcula y escribe la suma de sus
   divisores.
  Programa SumaDivisores;
  Entorno
    Entero n, i;
    Entero suma;
  Inicio
    Escribe “Introduce un número: “;
    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 número entero y positivo N y escribe los N primeros términos
   de la sucesión de Fibonacci. La sucesión se caracteriza porque cada término es
   igual a la suma de sus dos anteriores, dandose por definición 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 número: “;

© Santiago D.                                                             Página 19 de 20
Fundamentos de Programación                      I.E.S San Sebastián - Huelva

     Lee n;

     // Casos   base, triviales
     Si n > 0   entonces
      Escribe   “0”;
     Fin si;
     Si n > 1   entonces
      Escribe   “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 término siguiente
      Escribe suma;
      // Los dos últimos términos avanzan una posición
      an_1 = an;
      an = suma;
    Fin Para;
  Fin




© Santiago D.                                                Página 20 de 20

Mais conteúdo relacionado

Mais procurados

Ejercicios (Algoritmo: Pseudocódigo-Diagrama de Flujo)
Ejercicios (Algoritmo: Pseudocódigo-Diagrama de Flujo)Ejercicios (Algoritmo: Pseudocódigo-Diagrama de Flujo)
Ejercicios (Algoritmo: Pseudocódigo-Diagrama de Flujo)Natalia Alejandra
 
Ejercicio de estructuras_condicionales
Ejercicio de estructuras_condicionalesEjercicio de estructuras_condicionales
Ejercicio de estructuras_condicionalesRenzo Bernabe Aguilar
 
Ejercicios de algoritmos
Ejercicios de algoritmosEjercicios de algoritmos
Ejercicios de algoritmosjhonshebax
 
52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigo52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigoBrivé Soluciones
 
Ejercicios de estructura selectiva anidadas
Ejercicios de estructura selectiva anidadasEjercicios de estructura selectiva anidadas
Ejercicios de estructura selectiva anidadasAlejandro Pacheco
 
Ejercicios resueltos de c++
Ejercicios resueltos de c++Ejercicios resueltos de c++
Ejercicios resueltos de c++Jhon TRUJILLO
 
EJERCICIOS RESUELTOS SOBRE EL MÉTODO DE NEWTON Y EL MÉTODO DE LA SECANTE
EJERCICIOS RESUELTOS SOBRE EL MÉTODO DE NEWTON Y EL MÉTODO DE LA SECANTEEJERCICIOS RESUELTOS SOBRE EL MÉTODO DE NEWTON Y EL MÉTODO DE LA SECANTE
EJERCICIOS RESUELTOS SOBRE EL MÉTODO DE NEWTON Y EL MÉTODO DE LA SECANTEEdgar Flores
 
Ejercicio 1 diagrama de flujo
Ejercicio 1 diagrama de flujoEjercicio 1 diagrama de flujo
Ejercicio 1 diagrama de flujolisvancelis
 
Arreglos vectores pseint
Arreglos vectores pseintArreglos vectores pseint
Arreglos vectores pseintHEIVER CUESTA
 
Ejercicios Resueltos de Diagrama de flujo
Ejercicios Resueltos de Diagrama de flujo Ejercicios Resueltos de Diagrama de flujo
Ejercicios Resueltos de Diagrama de flujo jorgeluisrivillas
 
Lógica y Algoritmos 4. estructuras secuenciales y selectivas
Lógica y Algoritmos 4. estructuras secuenciales y selectivasLógica y Algoritmos 4. estructuras secuenciales y selectivas
Lógica y Algoritmos 4. estructuras secuenciales y selectivasEdward Ropero
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigoepetekaun
 
¿Como hacer un pseudocodigo y diagrama de flujo?
¿Como hacer un pseudocodigo y diagrama de flujo?¿Como hacer un pseudocodigo y diagrama de flujo?
¿Como hacer un pseudocodigo y diagrama de flujo?grachika
 
Cuadro comparativo - algoritmos de busqueda
Cuadro comparativo - algoritmos de busquedaCuadro comparativo - algoritmos de busqueda
Cuadro comparativo - algoritmos de busquedaWalter Navarrete Pino
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacionJaime amambal
 
Arreglos o dimensiones en pseint
Arreglos o dimensiones en pseintArreglos o dimensiones en pseint
Arreglos o dimensiones en pseintDon Augusto
 

Mais procurados (20)

Ejercicios (Algoritmo: Pseudocódigo-Diagrama de Flujo)
Ejercicios (Algoritmo: Pseudocódigo-Diagrama de Flujo)Ejercicios (Algoritmo: Pseudocódigo-Diagrama de Flujo)
Ejercicios (Algoritmo: Pseudocódigo-Diagrama de Flujo)
 
Ejercicio de estructuras_condicionales
Ejercicio de estructuras_condicionalesEjercicio de estructuras_condicionales
Ejercicio de estructuras_condicionales
 
Ejercicios de algoritmos
Ejercicios de algoritmosEjercicios de algoritmos
Ejercicios de algoritmos
 
52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigo52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigo
 
Ejercicios de estructura selectiva anidadas
Ejercicios de estructura selectiva anidadasEjercicios de estructura selectiva anidadas
Ejercicios de estructura selectiva anidadas
 
Ejercicios resueltos de c++
Ejercicios resueltos de c++Ejercicios resueltos de c++
Ejercicios resueltos de c++
 
Algoritmos con PSeInt
Algoritmos con PSeIntAlgoritmos con PSeInt
Algoritmos con PSeInt
 
EJERCICIOS RESUELTOS SOBRE EL MÉTODO DE NEWTON Y EL MÉTODO DE LA SECANTE
EJERCICIOS RESUELTOS SOBRE EL MÉTODO DE NEWTON Y EL MÉTODO DE LA SECANTEEJERCICIOS RESUELTOS SOBRE EL MÉTODO DE NEWTON Y EL MÉTODO DE LA SECANTE
EJERCICIOS RESUELTOS SOBRE EL MÉTODO DE NEWTON Y EL MÉTODO DE LA SECANTE
 
Ejercicio 1 diagrama de flujo
Ejercicio 1 diagrama de flujoEjercicio 1 diagrama de flujo
Ejercicio 1 diagrama de flujo
 
Aloritmos ejercicios
Aloritmos   ejerciciosAloritmos   ejercicios
Aloritmos ejercicios
 
Arreglos vectores pseint
Arreglos vectores pseintArreglos vectores pseint
Arreglos vectores pseint
 
Ejercicios Resueltos de Diagrama de flujo
Ejercicios Resueltos de Diagrama de flujo Ejercicios Resueltos de Diagrama de flujo
Ejercicios Resueltos de Diagrama de flujo
 
Algoritmos 50 ejemplos
Algoritmos 50 ejemplosAlgoritmos 50 ejemplos
Algoritmos 50 ejemplos
 
Estructura Repetitiva MIENTRAS (While) con PSeInt
Estructura Repetitiva MIENTRAS (While) con PSeIntEstructura Repetitiva MIENTRAS (While) con PSeInt
Estructura Repetitiva MIENTRAS (While) con PSeInt
 
Lógica y Algoritmos 4. estructuras secuenciales y selectivas
Lógica y Algoritmos 4. estructuras secuenciales y selectivasLógica y Algoritmos 4. estructuras secuenciales y selectivas
Lógica y Algoritmos 4. estructuras secuenciales y selectivas
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo
 
¿Como hacer un pseudocodigo y diagrama de flujo?
¿Como hacer un pseudocodigo y diagrama de flujo?¿Como hacer un pseudocodigo y diagrama de flujo?
¿Como hacer un pseudocodigo y diagrama de flujo?
 
Cuadro comparativo - algoritmos de busqueda
Cuadro comparativo - algoritmos de busquedaCuadro comparativo - algoritmos de busqueda
Cuadro comparativo - algoritmos de busqueda
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacion
 
Arreglos o dimensiones en pseint
Arreglos o dimensiones en pseintArreglos o dimensiones en pseint
Arreglos o dimensiones en pseint
 

Destaque

Destaque (20)

Ejemplos de Algoritmos
Ejemplos de AlgoritmosEjemplos de Algoritmos
Ejemplos de Algoritmos
 
Diagramas de Flujo y Algoritmos (Informática ll)
Diagramas de Flujo y Algoritmos (Informática ll)Diagramas de Flujo y Algoritmos (Informática ll)
Diagramas de Flujo y Algoritmos (Informática ll)
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Algoritmos programacion
Algoritmos programacionAlgoritmos programacion
Algoritmos programacion
 
21 problemas de algoritmo resueltos
21 problemas de algoritmo resueltos21 problemas de algoritmo resueltos
21 problemas de algoritmo resueltos
 
Determinación del pH
Determinación del pHDeterminación del pH
Determinación del pH
 
Ejecicios
EjeciciosEjecicios
Ejecicios
 
Macros visualbasicparaexcel
Macros visualbasicparaexcelMacros visualbasicparaexcel
Macros visualbasicparaexcel
 
Ejercicios resueltos con estructuras secuenciales y pseudolenguaje
Ejercicios resueltos con estructuras secuenciales y pseudolenguajeEjercicios resueltos con estructuras secuenciales y pseudolenguaje
Ejercicios resueltos con estructuras secuenciales y pseudolenguaje
 
Pseint
PseintPseint
Pseint
 
Reglas para el uso de la b
Reglas para el uso de la bReglas para el uso de la b
Reglas para el uso de la b
 
Ejemplos sobre diagramas de flujo
Ejemplos sobre  diagramas de flujoEjemplos sobre  diagramas de flujo
Ejemplos sobre diagramas de flujo
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
El ozono como eliminador de moho
El ozono como eliminador de mohoEl ozono como eliminador de moho
El ozono como eliminador de moho
 
ResolucióN De Problemas
ResolucióN De ProblemasResolucióN De Problemas
ResolucióN De Problemas
 
Presentacion mafe
Presentacion mafePresentacion mafe
Presentacion mafe
 
Solución de problemas con algoritmos
Solución de problemas con algoritmosSolución de problemas con algoritmos
Solución de problemas con algoritmos
 
Algoritmos+y+flujogramas
Algoritmos+y+flujogramasAlgoritmos+y+flujogramas
Algoritmos+y+flujogramas
 
Complemento Ciclos
Complemento CiclosComplemento Ciclos
Complemento Ciclos
 
Algoritmos y diagramas de flujo
Algoritmos y diagramas de flujoAlgoritmos y diagramas de flujo
Algoritmos y diagramas de flujo
 

Semelhante a Fundamentos programación algoritmos

Mormorejera
MormorejeraMormorejera
MormorejeraCCCCC
 
02ejerciciosresueltos 1235083033316969-2
02ejerciciosresueltos 1235083033316969-202ejerciciosresueltos 1235083033316969-2
02ejerciciosresueltos 1235083033316969-2florvictoria123
 
Ejercicios propuestos ejemplos de diagrama de flujo y algoritmos
Ejercicios propuestos ejemplos de diagrama de flujo y algoritmosEjercicios propuestos ejemplos de diagrama de flujo y algoritmos
Ejercicios propuestos ejemplos de diagrama de flujo y algoritmosfabiocelis
 
Trabajo de Algoritmos
Trabajo de AlgoritmosTrabajo de Algoritmos
Trabajo de Algoritmos1002pc14
 
Trabajo de cristian fernando romero
Trabajo de cristian fernando romeroTrabajo de cristian fernando romero
Trabajo de cristian fernando romero1002pc14
 
Pseintejemploscmds 2016
Pseintejemploscmds 2016Pseintejemploscmds 2016
Pseintejemploscmds 2016Don Augusto
 
trabajo de algoritmos
trabajo de algoritmostrabajo de algoritmos
trabajo de algoritmos1002pc8
 
trabajo de algoritmos
trabajo de algoritmostrabajo de algoritmos
trabajo de algoritmos1002pc8
 
Jhonatan
JhonatanJhonatan
Jhonatan1002pc8
 
Jhonatan
JhonatanJhonatan
Jhonatan1002pc1
 
Jhonatan
JhonatanJhonatan
Jhonatan1002pc8
 
Jhonatan
JhonatanJhonatan
Jhonatan1002pc8
 
Jhonatan
JhonatanJhonatan
Jhonatan1002pc8
 
trabajo de algoritmos
trabajo de algoritmos trabajo de algoritmos
trabajo de algoritmos 1002pc8
 

Semelhante a Fundamentos programación algoritmos (20)

Mormorejera
MormorejeraMormorejera
Mormorejera
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
02ejerciciosresueltos 1235083033316969-2
02ejerciciosresueltos 1235083033316969-202ejerciciosresueltos 1235083033316969-2
02ejerciciosresueltos 1235083033316969-2
 
Ejercicios propuestos ejemplos de diagrama de flujo y algoritmos
Ejercicios propuestos ejemplos de diagrama de flujo y algoritmosEjercicios propuestos ejemplos de diagrama de flujo y algoritmos
Ejercicios propuestos ejemplos de diagrama de flujo y algoritmos
 
No jodan
No jodanNo jodan
No jodan
 
No jodan
No jodanNo jodan
No jodan
 
Trabajo de Algoritmos
Trabajo de AlgoritmosTrabajo de Algoritmos
Trabajo de Algoritmos
 
Trabajo de cristian fernando romero
Trabajo de cristian fernando romeroTrabajo de cristian fernando romero
Trabajo de cristian fernando romero
 
Pseintejemploscmds 2016
Pseintejemploscmds 2016Pseintejemploscmds 2016
Pseintejemploscmds 2016
 
trabajo de algoritmos
trabajo de algoritmostrabajo de algoritmos
trabajo de algoritmos
 
trabajo de algoritmos
trabajo de algoritmostrabajo de algoritmos
trabajo de algoritmos
 
Jhonatan
JhonatanJhonatan
Jhonatan
 
Jhonatan
JhonatanJhonatan
Jhonatan
 
Jhonatan
JhonatanJhonatan
Jhonatan
 
Jhonatan
JhonatanJhonatan
Jhonatan
 
Jhonatan
JhonatanJhonatan
Jhonatan
 
Jhonatan
JhonatanJhonatan
Jhonatan
 
Jhonatan
JhonatanJhonatan
Jhonatan
 
trabajo de algoritmos
trabajo de algoritmos trabajo de algoritmos
trabajo de algoritmos
 
Jhonatan
JhonatanJhonatan
Jhonatan
 

Fundamentos programación algoritmos

  • 1. 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
  • 2. 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
  • 3. Fundamentos de Programación I.E.S San Sebastián - Huelva Inicio Escribe “Introduce 3 números”; 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 números cualesquiera y los escribe ordenados de forma ascendente. Programa NumerosOrdenAscendente; Entorno Entero n1, n2, n3; Inicio Escribe “Introduce tres números: “; 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; 10.3 Algoritmo que lee una calificación numérica entre 0 y 10 y la transforma en calificación alfabética, escribiendo el resultado 0<=Nota<3 MD 3<=Nota<5 INS 5<=Nota<6 SUF 6<=Nota<7 BIE © Santiago D. Página 3 de 20
  • 4. Fundamentos de Programación I.E.S San Sebastián - Huelva 7<=Nota<9 NOT 9<=Nota<=10 SOB Programa NumeroALiteral; Entorno Entero n; Inicio Escribe “Introduce un número: “; Lee n; /* 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. 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 número no está entre 1 y 10 para mostrar mensaje */ Escribe “El número no está entre 1 y 10”; Fin si; Fin Si; Fin Si; … Fin Si; /* A diferencia de la implementación del ejercicio 8.3 este algoritmo cuando una condición es cierta no evalúa el resto innecesariamente */ Fin; 11.1 Algoritmo que lee tres números cualesquiera y nos indica todas sus relaciones de igualdad Programa RelacionesIgualdad; Entorno Entero n1, n2, n3; Inicio Escribe “Introduce tres números: “; Lee n1, n2, n3; Si n1 = n2 y n1 = n3 entonces Escribe “Los tres números 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. Página 4 de 20
  • 5. Fundamentos de Programación I.E.S San Sebastián - Huelva 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 serán 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 después son las: “, hora, “:”, min, “:”, seg; Fin; 11.3 Algoritmo que lee como dato de entrada un año y nos dice si se trata de un año bisiesto o no. Se sabe que son bisiestos todos los años múltiplos de 4, excepto los que sean múltiplos de 100 sin ser múltiplos de 400. Programa EsBisiesto; Entorno Entero anyo; Inicio Escribe “Introduce Año: “; Lee anyo; Si (anyo % 4 = 0) y No ( anyo % 100 = 0 y no ( anyo % 400 =0) ) entonces Escribe “El año “, anyo , “ es bisiesto”; Sino Escribe “El año “, anyo , “ NO es bisiesto”; Fin si; Fin; 12.1 En un determinado comercio se realiza un descuento dependiendo del precio de cada producto. Si el precio es inferior a 6 €, no se hace descuento; si es mayor o igual a 6 € y menor que 60 € se hace un 5% de descuento, y si es mayor o igual a © Santiago D. Página 5 de 20
  • 6. Fundamentos de Programación I.E.S San Sebastián - Huelva 60 € se hace un 10% de descuento. Realizar el algoritmo que lee el precio de un producto y nos calcula y escribe su precio 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 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 fórmula matemática se debe utilizar. Apenas tiene complejidad algorítmica */ Dto = (1-PrecioFinal/PrecioTarifa)*100; Escibe “Descuento = “, Dto, “%”; Fin; 12.3 Algoritmo que lee 3 números distintos y nos dice cual de ellos es el menor. Programa NumeroMenor; Entorno Entero n1, n2, n3; // Nºs leidos por teclado Inicio Escribe “Introduce 3 números”; Lee n1, n2, n3; Si n1=n2 o n1=n3 o n2=n3 entonces Escribe “Los números 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. Página 6 de 20
  • 7. Fundamentos de Programación I.E.S San Sebastián - Huelva 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 día (1..31), mes (1..12, y año y nos dice la fecha que será el día siguiente. Se supondrá que febrero tiene siempre 28 días. Programa UnDiaDespues; Entorno Entero dia, mes, anyo; Entero numDiasMes; Inicio Escribe “Introduce Dia: “; Lee dia; Escribe “Introduce Mes: “; Lee mes; Escribe “Introduce Año: “; Lee Año; Si mes = 2 entonces numDiasMes = 28; Sino Si mes=4 o mes=6 o mes=9 o mes=11 entonces // Meses de 30 días: Abrir, Junio, Sept. Nov. NumDiasMes = 30; Sino // El resto tiene 31 días 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 día después es: “, dia, “/”, mes, “/”, anyo; Fin; 12.5 Plantea el algoritmo anterior sin suponer que febrero tiene 28 días. Programa UnDiaDespues; Entorno Entero dia, mes, anyo; Entero numDiasMes; Inicio Escribe “Introduce Dia: “; Lee dia; Escribe “Introduce Mes: “; Lee mes; © Santiago D. Página 7 de 20
  • 8. Fundamentos de Programación I.E.S San Sebastián - Huelva Escribe “Introduce Año: “; Lee Año; Si mes = 2 entonces Si (anyo % 4 = 0) y No ( anyo % 100 = 0 y no ( anyo % 400 =0) ) entonces // Es bisiesto numDiasMes = 29; Sino numDiasMes = 28; Fin Si; Sino Si mes=4 o mes=6 o mes=9 o mes=11 entonces // Meses de 30 días: Abrir, Junio, Sept. Nov. NumDiasMes = 30; Sino // El resto tiene 31 días NumDiasMes = 31; Fin si; Fin si; // 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; dia = 1; Si mes > 12 entonces anyo = anyo + 1; mes = 1; Fin si; Fin si; Escribe “Un día después es: “, dia, “/”, mes, “/”, anyo; Sino Escribe “La fecha es incorrecta”; Fin Si; Fin; 12.6 Algoritmo que lee dos números enteros, positivos y distintos y nos dice si el mayor es múltiplo del menor o, lo que es lo mismo, si el menor es divisor del mayor. Programa EsDivisorElMenor; Entorno Entero n1, n2; // Nºs leídos por teclado Entero mayor, menor; // Variables temporales Inicio Escribe “Introduce 2 números”; 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 múltiplo de ”, menor; Sino Escribe “No existe ninguna relación entre los números”; Fin si; Fin © Santiago D. Página 8 de 20
  • 9. Fundamentos de Programación I.E.S San Sebastián - Huelva 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 año actual menos el año de nacimiento. Si aun no ha cumplido años en el año actual habrá que restarle 1*/ Edad = a_a – a_n; /* 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 - 1; Fin si; Escribe “Edad = “, Edad; Fin; 16.1 Realizar un algoritmo que muestre por pantalla los números 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 números múltiplos de 5 menores que 10000. Programa MultDe5Menor1000; Entorno Entero n; Inicio © Santiago D. Página 9 de 20
  • 10. Fundamentos de Programación I.E.S San Sebastián - Huelva n = 5; Mientras n<1000 hacer Escribe n; n = n + 5; Fin Mientras; Fin 16.3 Algoritmo que lea un número por teclado e imprima por pantalla todos los números positivos menores que N Programa ListaNumeros; Entorno Entero n; Entero i; // Contador Inicio Escribe “Introduce un número: “; 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 número: “; Lee n; Mientras n>1 hacer n = n - 1; Escribe n; Fin Mientras; Fin 20.1 Algoritmo que lee una secuencia de 10 números 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 número: “; 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. Página 10 de 20
  • 11. Fundamentos de Programación I.E.S San Sebastián - Huelva Fin Mientras; Escribe “Total positivos :”, nPos; Escribe “Total negativos :”, nNeg; Escribe “Total nulos :”, nNulos; Fin 20.2 Algoritmo que lee una secuencia de números no nulos, terminada con la introducción de un 0, y obtiene e imprime el mayor, visualizando un mensaje de si ha leído algún número 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 número de los leídos por teclado será mayor que este */ mayor = -9999999; hacer Escribe “Introduce un número: “; Lee n; Si n <> 0 entonces // Procesamos el número leído Si n < 0 entonces hayNegativos = true; // Se ha encontrado un negativo FinSi; Si n > mayor entonces /* Se ha encontrado un número 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 números negativos”; Fin Si; Fin Otra forma, no presuponemos ningún número como mayor Programa CuentaNumeros; Entorno Entero n; Entero mayor; // Guarda el valor del mayor Booleano hayNegativos; // switch Booleano esPrimeraVez; Inicio hayNegativos = false; esPrimeraVez = true; hacer Escribe “Introduce un número: “; Lee n; Si n <> 0 entonces // Procesamos el número leído Si n < 0 entonces hayNegativos = true; // Se ha encontrado un negativo FinSi; Si esPrimeraVez o n > mayor entonces © Santiago D. Página 11 de 20
  • 12. Fundamentos de Programación I.E.S San Sebastián - Huelva /* Se ha encontrado un número mayor que el actual o es el primer número leido, lo seleccionamos como mayor */ mayor = n; esPrimeraVez = false; Fin si; Fin si; Mientras n <> 0; Si esPrimeraVez entonces Escribe “No se ha introducido ningún número”; Sino Escribe “El mayor es :”, mayor; Fin si; Si hay Negativos entones Escribe “Se han encontrado números negativos”; Fin Si; Fin 20.3 Algoritmo que lee un número entero positivo N y calcula e imprime el factorial de N!. Si lee un número negativo indica con un mensaje que no es posible la operación. Programa Factorial; Entorno Entero n; Entero i; // Contador Entero resultado; Inicio Escribe “Introduce un número: “; Lee n; Si n < 0 entonces Escribe “No existe factorial de un número 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 número 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 número: “; 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. Página 12 de 20
  • 13. Fundamentos de Programación I.E.S San Sebastián - Huelva Escribe x, “elevado a ”, n, “ es ”, resultado; Fin si; Fin 20.5 Algoritmo que obtenga el producto de dos números enteros positivos mediante sumas sucesivas. /* Ampliamos el problema para permitir números negativos */ Programa Producto; Entorno Entero n1, n2; Entero i; // Contador Entero resultado; Booleano resultadoNeg; Inicio Escribe “Introduce un número 1º: “; Lee n1; Escribe “Introduce un número 2º: “; Lee n2; /* Debemos considerar el caso de que alguno de los números sea negativo, lo mejor es poner los dos números 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 números 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 números enteros positivos mediante restas. /* Ampliamos el problema para permitir números 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 números sea negativo, lo mejor es poner los dos números en positivo y luego considerar el signo. © Santiago D. Página 13 de 20
  • 14. Fundamentos de Programación I.E.S San Sebastián - Huelva Vamos a evitar usar el operador de producto * */ resultadoNeg = (dividendo < 0 o divisor < 0) y no (dividendo < 0 y divisor < 0); // Convertimos los números a positivo Si dividendo < 0 entonces dividendo = - dividendo; Finsi Si divisor < 0 entonces divisor = - divisor; Finsi cociente = 0; // Inicializamos el acumulador resto = dividendo; Mientras divisor < resto hacer resto = resto = divisor; cociente = cociente + 1; Fin Mientras; Si resultadoNeg entonces cociente = -cociente; // Cambiamos de signo Fin si; Escribe dividendo, “ entre ”, divisor, “ da ”, cociente , “ con resto “, resto; Fin 20.7 Algoritmo que lee tres números A, B, C, y los imprime en orden creciente e indica si fueron introducidos en ese orden. /* Este problema es casi idéntico a uno resulto con anterioridad */ Programa NumerosOrdenAscendente; Entorno Entero n1, n2, n3; Inicio Escribe “Introduce tres números: “; 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 números se introdujeron ordenados”; Fin si; Fin si; Fin si Fin; © Santiago D. Página 14 de 20
  • 15. Fundamentos de Programación I.E.S San Sebastián - Huelva 21.1 Algoritmo que lea un número por teclado y nos diga si es primo. /* Un número es primo cuando solo es divisible por si mismo y por el 1. 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, es caso contrario será un número primo. */ Programa NumeroPrimo; Entorno Entero n, cont; Booleano esPrimo; // Variable que indicará si es primo o no Inicio Escribe “Introduce un número: “; Lee n; esPrimo = true; // suponemos que el número es primo cont = 2; // Empezamos dividiendo por 2 /* Iremos dividiendo el número por sus posibles divisores hasta que encontremos un divisor, 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; // Se ha encontrado un divisor Fin si; Fin mientras; Si esPrimo entonces Escribe “El número “, n, “ es primo”; Sino Escribe “El número “, n, “ NO es primo”; Fin si; Fin; 21.2 Algoritmo que genera la lista de los N primeros números primos, siendo N el dato de entrada. /* Para resolver este algoritmo es necesario realizar una aproximación descendente. Partiendo del hecho de que ya sabemos calcular si un número es o no primo, damos por supuesta esta operación e intentamos resolver el problema. La aproximación primera sería Lee n; i = 1; // Contador que avanza por los números nPrimos = 0; // Nº de primos que hemos visualizado mientras i < n hacer Si i es un número primo entonces Escribe i; nPrimos = nPrimos + 1; Fin Si; /* Fijarse que está fuera del si, se incrementa siempre independiente de que el número i sea primo o no */ © Santiago D. Página 15 de 20
  • 16. Fundamentos de Programación I.E.S San Sebastián - Huelva i = i + 1; Fin Mientras; 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. Cuando veamos funciones, veremos que está tarea es trivial. */ Programa NPrimerosPrimos; Entorno // Variables utilizadas para ver si el número i es primo Entero i, cont; Booleano esPrimo; // Variable que indicará si es primo o no // Variables utilizadas para ir probando los números Entero nPrimos; Entero n; // Enterio i; Declarada previamente Inicio Escribe “Introduce un número: “; Lee n; i = 1; // Contador que avanza por los números nPrimos = 0; // Nº de primos que hemos visualizado mientras i < n hacer /* Si i es un numero primo entonces */ esPrimo = true; // suponemos que el número 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 número i sea primo o no */ i = i + 1; Fin Mientras; Fin; 21.3 Algoritmo lea un número N y muestre por pantalla los números primos menores que N. /* Para resolver este algoritmo es necesario realizar una aproximación descendente. Partiendo del hecho de que ya sabemos calcular si un número es o no primo, damos por supuesta esta operación e intentamos resolver el problema. La aproximación primera sería Lee n; Para i=1 hasta n-1 hacer Si i es un número primo entonces © Santiago D. Página 16 de 20
  • 17. Fundamentos de Programación I.E.S San Sebastián - Huelva Escribe i; Fin Si; Fin Para; 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. Cuando veamos funciones, veremos que está tarea es trivial. Este algoritmo a diferencia del anterior saca los números 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 número i es primo Entero i, cont; Booleano esPrimo; // Variable que indicará si es primo o no // Variables utilizadas para ir probando los números Entero n; // Enterio i; Declarada previamente Inicio Escribe “Introduce un número: “; Lee n; Para i=1 hasta n-1 /* Si i es un numero primo entonces */ esPrimo = true; // suponemos que el número 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 números perfectos menores que 1000. (Un número es perfecto si la suma de sus divisores, excepto él mismo, es igual al propio número.). /* 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; Fin Si; © Santiago D. Página 17 de 20
  • 18. Fundamentos de Programación I.E.S San Sebastián - Huelva 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 número 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 número perfecto Escribe n; Fin Si; Fin Para; Fin; 21.5 Algoritmo que evalúa 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 número entero positivo N e imprime su tabla de multiplicar. Programa TablaMultiplicar; Entorno © Santiago D. Página 18 de 20
  • 19. Fundamentos de Programación I.E.S San Sebastián - Huelva Entero n, i; Inicio Escribe “Introduce un número: “; Lee n; Para i=1 hasta 10 Escribe i, “ x “, n, “ = “, i*n; // Siguiente término de la Fin Para; Fin 22.1 Algoritmo que lee un número entero y positivo N y escribe la lista de sus divisores. Programa ListaDivisores; Entorno Entero n, i; Inicio Escribe “Introduce un número: “; 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 número entero y positivo y calcula y escribe la suma de sus divisores. Programa SumaDivisores; Entorno Entero n, i; Entero suma; Inicio Escribe “Introduce un número: “; 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 número entero y positivo N y escribe los N primeros términos de la sucesión de Fibonacci. La sucesión se caracteriza porque cada término es igual a la suma de sus dos anteriores, dandose por definición 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 número: “; © Santiago D. Página 19 de 20
  • 20. Fundamentos de Programación I.E.S San Sebastián - Huelva Lee n; // Casos base, triviales Si n > 0 entonces Escribe “0”; Fin si; Si n > 1 entonces Escribe “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 término siguiente Escribe suma; // Los dos últimos términos avanzan una posición an_1 = an; an = suma; Fin Para; Fin © Santiago D. Página 20 de 20