Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

52 ejercicios-resueltos-en-pseudocodigo

246,159 views

Published on

Programacion por pseudocodigo

Published in: Education

52 ejercicios-resueltos-en-pseudocodigo

  1. 1. Algoritmos Resueltos Javier Crocco MendezALGORITMOS RESUELTOS--------------------------------------------------------------------------T1.GIF TEMA 1--------------------------------------------------------------------------Bucles y tomas de decision--------------------------------------------------------------------------1.-Hacer un pseudocodigo que imprima los numeros del 1 al 100.PROGRAMA contador1ENTORNO:c <- 0ALGORITMO:Borrar_pantalla( )MIENTRAS c < 101 HACERESCRIBIR cc <- c + 1FINMIENTRASFINPROGRAMA--------------------------------------------------------------------------2.-Hacer un pseudocodigo que imprima los numeros del 100 al 0, en ordendecreciente.PROGRAMA contador2ENTORNO:c <- 100ALGORITMO:Borrar_pantalla( )MIENTRAS c <= 0 HACERESCRIBIR cc <- c - 1FINMIENTRASFINPROGRAMA--------------------------------------------------------------------------3.-Hacer un pseudocodigo que imprima los numeros pares entre 0 y 100.PROGRAMA paresENTORNO:c <- 2ALGORITMO:Borrar_pantalla( )MIENTRAS c < 101 HACERESCRIBIR cc <- c + 2FINMIENTRASFINPROGRAMA--------------------------------------------------------------------------4.-Hacer un programa que imprima la suma de los 100 primeros numeros.PROGRAMA sumaENTORNO:c <- 1suma <- 0ALGORITMO:Borrar_pantalla( )MIENTRAS c <= 100 HACERsuma <- suma + cc <- c + 1FINMIENTRASESCRIBIR "La suma de los 100 primeros n£meros es: "ESCRIBIR sumaFINPROGRAMA
  2. 2. Algoritmos Resueltos Javier Crocco Mendez--------------------------------------------------------------------------5.-Hacer un pseudocódigo que imprima los numeros impares hasta el 100 y queimprima cuantos impares hay.PROGRAMA imparesENTORNO:c <- 1son <- 0ALGORITMO:Borrar_pantalla( )MIENTRAS c < 100ESCRIBIR cc <- c + 2son <- son + 1FINMIENTRASESCRIBIR "El n£mero de impares: "ESCRIBIR sonFINPROGRAMA--------------------------------------------------------------------------6.-Hacer un pseudocodigo que imprima todos los numeros naturales que haydesde la unidad hasta un numero que introducimos por teclado.PROGRAMA naturalENTORNO:i <- 0n <- 0ALGORITMO:Borrar_pantalla( )ESCRIBIR "Introduce un n£mero: "LEER nMIENTRAS i < n HACERi <- i + 1ESCRIBIR iFINMIENTRASFINPROGRAMA--------------------------------------------------------------------------7.-Introducir tantas frases como queramos y contarlas.PROGRAMA frasesENTORNO:res <- "S"frase <- Espacios( 30 )c <- 0ALGORITMO:Borrar_pantalla( )MIENTRAS res = "S" HACERESCRIBIR "Frase: "LEER frasec <- c + 1ESCRIBIR "Deseas introducir m s frases (S/N): "LEER resFINMIENTRASESCRIBIR "El n£mero de frases introducidas son: "ESCRIBIR cFINPROGRAMA
  3. 3. Algoritmos Resueltos Javier Crocco Mendez--------------------------------------------------------------------------8.-Hacer un pseudocodigo que solo nos permita introducir S o N.PROGRAMA snENTORNO:res <- " "ALGORITMO:Borrar_pantalla( )MIENTRAS res <> "S" Y res <> "N" HACERESCRIBIR "Introduce S o N"LEER resres <- Convertir_may£sculas( res )FINMIENTRASFINPROGRAMA--------------------------------------------------------------------------9.-Introducir un numero por teclado. Que nos diga si es positivo o negativo.PROGRAMA signoENTORNO:num <- 0ALGORITMO:Borrar_pantalla( )ESCRIBIR "Introduce un n£mero: "LEER numSI num >= 0 ENTONCESESCRIBIR "es positivo"SINOESCRIBIR "es negativo"FINSIFINPROGRAMA--------------------------------------------------------------------------10.-Introducir un numero por teclado. Que nos diga si es par o impar.PROGRAMA paridadENTORNO:num <- 0ALGORITMO:Borrar_pantalla( )ESCRIBIR "Introduce un n£mero: "LEER numSI num = int( num / 2 ) * 2 ENTONCESESCRIBIR "es par"SINOESCRIBIR "es impar"FINSIFINPROGRAMA--------------------------------------------------------------------------
  4. 4. Algoritmos Resueltos Javier Crocco Mendez11.-Imprimir y contar los multiplos de 3 desde la unidad hasta un numero queintroducimos por teclado.PROGRAMA multiplo3ENTORNO:i <- 3n <- 0c <- 0ALGORITMO:Borrar_pantalla( )ESCRIBIR "N£mero: "LEER nMIENTRAS i <= n HACERSI i = int( i / 3 ) * 3 ENTONCESESCRIBIR ic <- c + 1FINSIi <- i + 1FINMIENTRASESCRIBIR "El n£mero de m£ltiplos de 3 son: "ESCRIBIR cFINPROGRAMA--------------------------------------------------------------------------12.-Hacer un pseudocodigo que imprima los numeros del 1 al 100. Que calcule lasuma de todos los numeros pares por un lado, y por otro, la de todos losimpares.PROGRAMA par_imparENTORNO:i <- 1sumapar <- 0sumaimp <- 0ALGORITMO:Borrar_pantalla( )MIENTRAS i < 101 HACERSI i = int( i / 2 ) * 2 ENTONCESsumapar <- sumapar + iSINOsumaimp <- sumaimp + iFINSIi <- i + 1FINMIENTRASESCRIBIR "La suma de los pares es: "ESCRIBIR sumaparESCRIBIR "La suma de los impares es: "ESCRIBIR sumaimpFINPROGRAMA--------------------------------------------------------------------------13.-Imprimir y contar los numeros que son multiplos de 2 o de 3 que hay entre1 y 100.PROGRAMA multiplo_2_3ENTORNO:i <- 1c <- 0ALGORITMO:Borrar_pantalla( )MIENTRAS i < 101 HACERSI i = int( i / 2 ) * 2 O i = int( i / 3 ) * 3 ENTONCESc <- c + 1ESCRIBIR iFINSIi <- i + 1FINMIENTRASESCRIBIR "El n£mero de m£ltiplos es de: "ESCRIBIR cFINPROGRAMA
  5. 5. Algoritmos Resueltos Javier Crocco Mendez--------------------------------------------------------------------------14.-Hacer un pseudocodigo que imprima el mayor y el menor de una serie decinco numeros que vamos introduciendo por teclado.PROGRAMA mayor_menorENTORNO:con <- 0n <- 0maximo <- 0minimo <- 99999ALGORITMO:Borrar_pantalla( )MIENTRAS con <= 5 HACERESCRIBIR "N£mero: "LEER nSI n > maximo ENTONCESmaximo = nFINSISI n < minimo ENTONCESminimo <- nFINSIcon <- con + 1FINMIENTRASESCRIBIR "El mayor de los n£meros es: "ESCRIBIR maximoESCRIBIR "El menor de los n£meros es: "ESCRIBIR minimoFINPROGRAMA--------------------------------------------------------------------------15.-Introducir dos numeros por teclado. Imprimir los numeros naturales quehay entre ambos numeros empezando por el m s pequeño, contar cuantos hay ycuantos de ellos son pares. Calcular la suma de los impares.PROGRAMA par_imparENTORNO:num1 <- 0num2 <- 0aux <- 0son <- 0pares <- 0sumaimpa <- 0ALGORITMO:Borrar_pantalla( )ESCRIBIR "N£mero: "LEER num1ESCRIBIR "N£mero: "LEER num2SI num1 > num2 ENTONCESaux <- num1num1 <- num2num2 <- auxFINSIMIENTRAS num1 >= num2 HACERESCRIBIR num1son <- son + 1SI num1 = int( num1 / 2 ) * 2 ENTONCESpares <- pares + 1SINOsumaimpa <- sumaimpa + num1FINSInum1 <- num1 + 1FINMIENTRASESCRIBIR "N£meros visualizados: "ESCRIBIR sonESCRIBIR "Pares hay: "ESCRIBIR paresESCRIBIR "La suma de los impares es: "
  6. 6. Algoritmos Resueltos Javier Crocco MendezESCRIBIR sumaimpaFINPROGRAMA--------------------------------------------------------------------------TEMA 2--------------------------------------------------------------------------Bucles anidados y subprogramas--------------------------------------------------------------------------16.-Imprimir diez veces la serie de numeros del 1 al 10.PROGRAMA diezENTORNO:serie <- 0ALGORITMO:Borrar_pantalla( )MIENTRAS serie <= 10 HACERnumero <- 1MIENTRAS numero <= 10 HACERESCRIBIR numeronumero <- numero + 1FINMIENTRASserie <- serie + 1FINMIENTRASFINPROGRAMA--------------------------------------------------------------------------17.-Imprimir, contar y sumar los multiplos de 2 que hay entre una serie denumeros, tal que el segundo sea mayor o igual que el primero.PROGRAMA multiplo2ENTORNO:res <- "S"ALGORITMO:Borrar_pantalla( )MIENTRAS res = "S" HACERc <- 0sum <- 0num1 <- 0num2 <- -999ESCRIBIR "N£mero: "LEER num1ESCRIBIR "N£mero mayor que el anterior"MIENTRAS num1 >= num2 HACERLEER num2FINMIENTRASnum1 <- num1 + 1MIENTRAS num1 <= num2 - 1 HACERSI num1 = int( num1 / 2 ) * 2 ENTONCESESCRIBIR num1c <- c + 1sum <- sum + num1FINSInum1 <- num1 + 1FINMIENTRASESCRIBIR "N£mero de m£ltiplos de 2: "ESCRIBIR cESCRIBIR "Su suma es: "ESCRIBIR sumres <- Espacios( 1 )MIENTRAS res <> "S" Y res <> "N" HACERESCRIBIR "Otra serie de n£meros (S/N): "LEER resres <- Convertir_may£sculas( res )FINMIENTRASFINMIENTRASFINPROGRAMA--------------------------------------------------------------------------
  7. 7. Algoritmos Resueltos Javier Crocco Mendez18.-Hacer un pseudocodigo que cuente las veces que aparece una determinadaletra en una frase que introduciremos por teclado.PROGRAMA letraENTORNO:frase <- Espacios( 30 )letra <- Espacios( 1 )longitud <- 0a <- 0res <- "S"ALGORITMO:MIENTRAS res = "S" HACERBorrar_pantalla( )ESCRIBIR "Introduce una frase: "LEER fraselongitud <- Hallar_longitud( frase )i <- 1ESCRIBIR "Letra a buscar: "LEER letraMIENTRAS i <= longitud HACERSI letra = Caracter( frase, i, 1 ) ENTONCESa <- a + 1FINSIi <- i + 1FINMIENTRASBorrar_pantalla( )ESCRIBIR "El n£mero de veces que aparece la letra "ESCRIBIR letraESCRIBIR " en la frase "ESCRIBIR fraseESCRIBIR " es de "ESCRIBIR ares <- Espacios( 1 )MIENTRAS res <> "S" Y res <> "N" HACERESCRIBIR "Desea introducir m&aacute;s frases (S/N): "LEER resres <- Convertir_may£sculas( res )FINMIENTRASFINMIENTRASFINPROGRAMA--------------------------------------------------------------------------19.-Hacer un pseudocodigo que simule el funcionamiento de un reloj digital yque permita ponerlo en hora.PROGRAMA relojENTORNO:horas <- 0minutos <- 0segundos <- 0res <- "S"ALGORITMO:Borrar_pantalla( )ESCRIBIR "Horas: "LEER horasESCRIBIR "Minutos: "LEER minutosESCRIBIR "Segundos: "LEER segundosMIENTRAS res = "S" HACERMIENTRAS horas < 24 HACERMIENTRAS minutos < 60 HACERMIENTRAS segundos < 60 HACERESCRIBIR horasESCRIBIR minutosESCRIBIR segundossegundos <- segundos + 1FINMIENTRAS
  8. 8. Algoritmos Resueltos Javier Crocco Mendezminutos <- minutos + 1segundos <- 0FINMIENTRAShoras <- horas + 1minutos <- 0FINMIENTRAShoras <- 0FINMIENTRASFINPROGRAMA--------------------------------------------------------------------------20.-Calcular el factorial de un numero, mediante subprogramas.PROGRAMA factorialENTORNO:res <- "S"ALGORITMO:MIENTRAS res = "S" HACERBorrar_pantalla( )factorial <- 1ESCRIBIR "N£mero: "LEER numeroSI numero < 0 ENTONCESESCRIBIR "No tiene factorial"SINOHACER CalculosFINSIHACER MasFINMIENTRASFINPROGRAMA------------------------------SUBPROGRAMA CalculosMIENTRAS numero > 1 HACERfactorial <- factorial * numeronumero <- numero - 1FINMIENTRASHACER ImprimirFINSUBPROGRAMA------------------------------SUBPROGRAMA Masres <- " "MIENTRAS res <> "S" Y res <> "N" HACERESCRIBIR "Desea calcular m&aacute;s factoriales (S/N): "LEER resres <- Convertir_may£sculas( res )FINMIENTRASFINSUBPROGRAMA------------------------------SUBPROGRAMA ImprimirESCRIBIR "Su factorial es: "ESCRIBIR factorialFINSUBPROGRAMA--------------------------------------------------------------------------
  9. 9. Algoritmos Resueltos Javier Crocco Mendez21.-Hacer un programa que calcule independientemente la suma de los pares ylos impares de los numeros entre 1 y 1000, utilizando un switch.PROGRAMA sumaENTORNO:par <- 0impar <- 0sw <- 0i <- 1ALGORITMO:Borrar_pantalla( )MIENTRAS i <= 1000 HACERSI sw = 0 ENTONCESimpar <- impar + isw <- 1SINOpar <- par + isw <- 0FINSIi <- i + 1FINMIENTRASESCRIBIR "La suma de los pares es: "ESCRIBIR parESCRIBIR "La suma de los impares es: "ESCRIBIR imparFINPROGRAMA--------------------------------------------------------------------------TEMA 3--------------------------------------------------------------------------Presentacion en pantalla y cabeceras--------------------------------------------------------------------------22.-Introducir una frase por teclado. Imprimirla cinco veces en filasconsecutivas, pero cada impresion ir desplazada cuatro columnas hacia laderecha.PROGRAMA fraseENTORNO:frase <- Espacios( 30 )ALGORITMO:Borrar_pantalla( )EN 5,15 ESCRIBIR "Frase: "EN 5,22 LEER frasefi <- 8co <- 15veces <- 0MIENTRAS veces <= 5 HACEREN fi,co ESCRIBIR fraseveces <- veces + 1co <- co + 4fi <- fi + 1FINMIENTRASFINPROGRAMA--------------------------------------------------------------------------23.-Hacer un pseudocodigo que imprima los n£meros del 0 al 100, controlandolas filas y las columnas.PROGRAMA numerosENTORNO:c <- 0ALGORITMO:Borrar_pantalla( )EN 5,20 ESCRIBIR "Los n£meros del 0 al 100 son: "fi <- 7col <- 5MIENTRAS c < 101 HACEREN fi,col ESCRIBIR c
  10. 10. Algoritmos Resueltos Javier Crocco Mendezc <- c + 1col <- col + 4SI col > 75 ENTONCESfi <- fi + 2col <- 5FINSIFINMIENTRASFINPROGRAMA--------------------------------------------------------------------------24.-Comprobar si un numero mayor o igual que la unidad es primo.PROGRAMA primoENTORNO:res <- "S"ALGORITMO:MIENTRAS res = "S" HACERBorrar_pantalla( )numero <- 0sw <- 0MIENTRAS numero < 1 HACEREN 8,10 ESCRIBIR "N£mero: "EN 8,18 LEER numeroFINMIENTRASi <- numero - 1MIENTRAS i > 1 Y sw <> 1 HACERSI numero = Int( numero / i ) * i ENTONCESsw = 1SINOi <- i - 1FINSIFINMIENTRASSI sw = 1 ENTONCESEN 10,10 ESCRIBIR "no es primo"SINOEN 10,10 ESCRIBIR "s¡ es primo"FINSIHACER MasFINMIENTRASFINPROGRAMA------------------------------SUBPROGRAMA Masres <- " "MIENTRAS res <> "S" Y res <> "N" HACERESCRIBIR "Desea introducir m s n£meros (S/N): "LEER resres <- Convertir_mayusculas( res )FINMIENTRASFINSUBPROGRAMA--------------------------------------------------------------------------25.-Introducir un numero menor de 5000 y pasarlo a numero romano.PROGRAMA romanoENTORNO:res <- "S"ALGORITMO:MIENTRAS res = "S" HACERBorrar_pantalla( )num <- 0MIENTRAS num < 1 O num > 5000 HACEREN 8,10 ESCRIBIR "N£mero: "EN 8,18 ESCRIBIR numFINMIENTRAScol <- 15MIENTRAS num >= 1000 HACEREN 15,col ESCRIBIR "M"num <- num - 1000
  11. 11. Algoritmos Resueltos Javier Crocco Mendezcol <- col + 1FINMIENTRASSI num >= 900 ENTONCESEN 15,col ESCRIBIR "CM"num <- num - 900col <- col + 2FINSISI num >= 500 ENTONCESEN 15,col ESCRIBIR "D"num <- num - 500col <- col + 1FINSIMIENTRAS num >= 100 HACEREN 15,col ESCRIBIR "C"num <- num - 100col <- col + 1FINMIENTRASSI num >= 90 ENTONCESEN 15,col ESCRIBIR "XC"num <- num - 90col <- col + 2FINSISI num >= 50 ENTONCESEN 15,col ESCRIBIR "L"num <- num - 50col <- col + 1FINSISI num >= 40 ENTONCESEN 15,col ESCRIBIR "XL"num <- num - 40col <- col + 2FINSIMIENTRAS num >= 10 HACEREN 15,col ESCRIBIR "X"num <- num - 10col <- col + 1FINMIENTRASSI num = 9 ENTONCESEN 15,col ESCRIBIR "IX"num <- num - 9col <- col + 2FINSISI num >= 5 ENTONCESEN 15,col ESCRIBIR "V"num <- num - 5col <- col + 1FINSISI num >= 4 ENTONCESEN 15,col ESCRIBIR "IV"num <- num - 4col <- col + 2FINSIMIENTRAS num > 0 HACEREN 15,col ESCRIBIR "I"num <- num - 1col <- col + 1FINMIENTRASHACER MasFINMIENTRASFINPROGRAMA------------------------------SUBPROGRAMA Masres <- " "MIENTRAS res <> "S" Y res <> "N" HACERESCRIBIR "Desea introducir m s n£meros (S/N): "LEER resres <- Convertir_mayusculas( res )FINMIENTRASFINSUBPROGRAMA
  12. 12. Algoritmos Resueltos Javier Crocco Mendez--------------------------------------------------------------------------26.-Introducir una frase por teclado. Imprimirla en el centro de la pantalla.PROGRAMA centroENTORNO:res <- "S"frase <- Espacios( 40 )ALGORITMO:MIENTRAS res = "S" HACERBorrar_pantalla( )EN 5,15 ESCRIBIR "Frase: "EN 5,22 LEER fraseEN 12,40 - Int( Longitud( frase ) / 2 ) ESCRIBIR fraseHACER MasFINMIENTRASFINPROGRAMA--------------------------------------------------------------------------27.-Realizar la tabla de multiplicar de un numero entre 0 y 10.PROGRAMA tablaENTORNO:num <- -1ALGORITMO:HACER NumeroBorrar_pantalla( )EN 5,10 ESCRIBIR "Tabla de multiplicar del n£mero: "EN 5,40 LEER numi <- 0fi <- 8MIENTRAS i <= 10 HACEREN fi,15 ESCRIBIR numEN fi,19 ESCRIBIR " * "EN fi,23 ESCRIBIR iEN fi,25 ESCRIBIR " = "EN fi,29 ESCRIBIR num * ifi <- fi + 1i <- i + 1FINMIENTRASFINPROGRAMA------------------------------SUBPROGRAMA NumeroMIENTRAS num < 0 HACERBorrar_pantalla( )EN 10,25 ESCRIBIR "N£mero: "EN 10,33 LEER numFINMIENTRASFINSUBPROGRAMA--------------------------------------------------------------------------TEMA 4--------------------------------------------------------------------------Numeros aleatorios y menus--------------------------------------------------------------------------28.-Simular el lanzamiento de una moneda al aire e imprimir si ha salido carao cruz.PROGRAMA monedaENTORNO:res <- "S"ALGORITMO:MIENTRAS res = "S" HACERBorrar_pantalla( )SI Rnd( ) <= 0.5 ENTONCESEN 10,35 ESCRIBIR "Cara"SINOEN 10,35 ESCRIBIR "Cruz"
  13. 13. Algoritmos Resueltos Javier Crocco MendezFINSIHACER MasFINMIENTRASFINPROGRAMA------------------------------SUBPROGRAMA Masres <- Espacios( 1 )MIENTRAS res <> "S" Y res <> "N" HACEREN 20,30 ESCRIBIR "M s lanzamientos (S/N): "EN 20,57 LEER resres <- Convertir_mayusculas( res )FINMIENTRASFINSUBPROGRAMA--------------------------------------------------------------------------29.-Simular cien tiradas de dos dados y contar las veces que entre los dossuman 10.PROGRAMA dadoENTORNO:c <- 0i <- 0ALGORITMO:Borrar_pantalla( )MIENTRAS i < 101 HACERSI Int( Rnd( ) * 6 ) + Int( Rnd( ) * 6 ) + 2 = 10 ENTONCESc <- c + 1FINSIi <- i + 1FINMIENTRASEN 10,20 ESCRIBIR "Las veces que suman 10 son: "EN 10,48 ESCRIBIR cFINPROGRAMA--------------------------------------------------------------------------30.-Simular una carrera de dos caballos si cada uno tiene igual probabilidadde ganar.PROGRAMA caballosENTORNO:dibujo <- "****"col1 <- 4col2 <- 4ALGORITMO:Borrar_pantalla( )EN 10,col1 ESCRIBIR dibujoEN 10,col2 ESCRIBIR dibujoMIENTRAS col1 <= 75 Y col2 <= 75 HACERSI Rnd( ) <= 0.5 ENTONCESEN 10,col1 ESCRIBIR Espacios( 4 )col1 <- col1 + 4EN 10,col1 ESCRIBIR dibujoSINOEN 12,col2 ESCRIBIR Espacios( 4 )col2 <- col2 + 4EN 12,col2 ESCRIBIR dibujoFINSIFINMIENTRASEN 16,20 ESCRIBIR "El ganador es el caballo n£mero: "SI col1 >= 75 ENTONCESEN 16,54 ESCRIBIR "1"SINOEN 16,54 ESCRIBIR "2"FINSIFINPROGRAMA--------------------------------------------------------------------------
  14. 14. Algoritmos Resueltos Javier Crocco Mendez31.-Introducir dos nymeros por teclado y mediante un menu, calcule su suma, suresta, su multiplicacion o su division.PROGRAMA menu1ENTORNO:op <- 0ALGORITMO:EN 10,20 ESCRIBIR "N£mero: "EN 10,29 LEER n1EN 12,20 ESCRIBIR "N£mero: "EN 12,29 LEER n2MIENTRAS op <> 5 HACERop <- 0Borrar_pantalla( )EN 6,20 ESCRIBIR "Men£ de opciones"EN 10,25 ESCRIBIR "1.- Suma"EN 12,25 ESCRIBIR "2.- Resta"EN 14,25 ESCRIBIR "3.- Multiplicaci¢n"EN 16,25 ESCRIBIR "4.- Divisi¢n"EN 18,25 ESCRIBIR "5.- Salir del programa"EN 22,25 ESCRIBIR "Elija opci¢n: "EN 22,39 LEER opBorrar_pantalla( )HACER CASOCASO op = 1EN 10,20 ESCRIBIR "Su suma es: "EN 10,33 ESCRIBIR n1 + n2Pausa( )CASO op = 2EN 10,20 ESCRIBIR "Su resta es: "EN 10,33 ESCRIBIR n1 - n2Pausa( )CASO op = 3EN 10,20 ESCRIBIR "Su multiplicaci¢n es: "EN 10,33 ESCRIBIR n1 * n2Pausa( )CASO op = 4EN 10,20 ESCRIBIR "Su divisi¢n es: "EN 10,33 ESCRIBIR n1 / n2Pausa( )FINCASOFINMIENTRASFINPROGRAMA--------------------------------------------------------------------------32.-Hacer un programa que nos permita introducir un numero por teclado y sobreel se realicen las siguientes operaciones: comprobar si es primo, hallarsu factorial o imprimir su tabla de multiplicar.PROGRAMA menu2ENTORNO:op <- 0ALGORITMO:EN 10,20 ESCRIBIR "N£mero: "EN 10,29 LEER nMIENTRAS op <> 4 HACERop <- 0Borrar_pantalla( )EN 6,30 ESCRIBIR "Men£ de opciones"EN 10,25 ESCRIBIR "1.- Comprobar si es primo"EN 12,25 ESCRIBIR "2.- Hallar su factorial"EN 14,25 ESCRIBIR "3.- Tabla de multiplicar"EN 16,25 ESCRIBIR "4.- Salir del programa"EN 22,25 ESCRIBIR "Elija opci¢n: "EN 22,39 LEER opHACER CASOCASO op = 1HACER PrimoCASO op = 2
  15. 15. Algoritmos Resueltos Javier Crocco MendezHACER FactorialCASO op = 3HACER TablaFINCASOFINMIENTRASFINPROGRAMA------------------------------SUBPROGRAMA Primosw <- 0i <- n - 1MIENTRAS i > 1 Y sw <> 1 HACERSI n = Int( n / i ) * i ENTONCESsw <- 1SINOi <- i - 1FINSIFINMIENTRASBorrar_pantalla( )SI sw = 1 ENTONCESEN 10,10 ESCRIBIR "no es primo"SINOEN 10,10 ESCRIBIR "s¡ es primo"FINSIPausa( )FINSUBPROGRAMA------------------------------SUBPROGRAMA Factorialfac <- 1Borrar_pantalla( )SI n < 0 ENTONCESEN 10,10 ESCRIBIR "No tiene factorial"SINOMIENTRAS n > 1 HACERfac <- fac * nn <- n - 1FINMIENTRASEN 10,10 ESCRIBIR "Su factorial es: "EN 10,27 ESCRIBIR facFINSIPausa( )FINSUBPROGRAMA------------------------------SUBPROGRAMA Tablai <- 0fi <- 10Borrar_pantalla( )MIENTRAS i <= 10 HACEREN 8,10 ESCRIBIR "Tabla de multiplicar"EN fi,10 ESCRIBIR nEN fi,15 ESCRIBIR "*"EN fi,20 ESCRIBIR iEN fi,25 ESCRIBIR "="EN fi,30 ESCRIBIR n * ii <- i + 1FINMIENTRASPausa( )FINSUBPROGRAMA--------------------------------------------------------------------------TEMA 4--------------------------------------------------------------------------Arrays unidimensionales--------------------------------------------------------------------------33.-Crear un array unidimensional de 20 elementos con nombres de personas.Visualizar los elementos de la lista debiendo ir cada uno en una filadistinta.PROGRAMA nombresENTORNO:
  16. 16. Algoritmos Resueltos Javier Crocco MendezDIMENSIONA datos[ 20 ]i <- 1ALGORITMO:Borrar_pantalla( )fi <- 10MIENTRAS i < 21 HACEREN fi,10 ESCRIBIR "Nombre: "EN fi, 18 LEER datos[ i ]i <- i + 1FINMIENTRASBorrar_pantalla( )i <- 1fi <- 3EN 1,20 ESCRIBIR "Elementos de la lista"MIENTRAS i < 21 HACEREN fi,28 ESCRIBIR datos[ i ]fi <- fi + 1i <- i + 1FINMIENTRASFINPROGRAMA--------------------------------------------------------------------------34.-Hacer un programa que lea las calificaciones de un alumno en 10asignaturas, las almacene en un vector y calcule e imprima su media.PROGRAMA notamediaENTORNO:DIMENSIONA notas[ 10 ]suma <- 0media <- 0ALGORITMO:Borrar_pantalla( )fi <- 7PARA i DESDE 1 HASTA 10 HACEREN fi,15 ESCRIBIR "Nota "EN fi,20 ESCRIBIR iEN fi,21 ESCRIBIR ": "EN fi,23 LEER notas[ i ]fi <- fi + 1FINPARAPARA i DESDE 1 HASTA 10 HACERsuma <- suma + notas[ i ]FINPARAmedia <- suma / 10EN 20,20 ESCRIBIR "Nota media: "EN 20,32 ESCRIBIR mediaFINPROGRAMA--------------------------------------------------------------------------35.-Usando el segundo ejemplo, hacer un programa que busque una nota en elvector.PROGRAMA buscarENTORNO:i <- 0num <- 0ALGORITMO:Borrar_pantalla( )ESCRIBIR "Nota a buscar: "LEER numITERARi <- i + 1SI notas[ i ] = num O i = 10 ENTONCESSALIRFINSIFINITERARSI notas[ i ] = num ENTONCESESCRIBIR "Encontrado en posici&oacute;n: "
  17. 17. Algoritmos Resueltos Javier Crocco MendezESCRIBIR iSINOESCRIBIR "No existe esa nota"FINSIFINPROGRAMA--------------------------------------------------------------------------TEMA 5--------------------------------------------------------------------------Arrays bidimensionales--------------------------------------------------------------------------36.-Generar una matriz de 4 filas y 5 columnas con numeros aleatorios entre 1y 100, e imprimirla.PROGRAMA matrizENTORNO:DIMENSIONAR A[ 4, 5 ]i <- 1fi <- 10co <- 15ALGORITMO:Borrar_pantalla( )EN 6,25 ESCRIBIR "Elementos de la matriz"MIENTRAS i <= 4 HACERj <- 1MIENTRAS j <= 5 HACERA[ i, j ] <- Int( Rnd( ) * 100 ) + 1EN fi,co ESCRIBIR A[ i, j ]co <- co + 5j <- j + 1FINMIENTRASco <- 15fi <- fi + 2i <- i + 1FINMIENTRASFINPROGRAMA--------------------------------------------------------------------------37.-Generar una matriz de 4 filas y 5 columnas con n£meros aleatorios entre 1y 100, y hacer su matriz transpuesta.PROGRAMA transpuestaENTORNO:DIMENSIONAR A[ 4, 5 ]DIMENSIONAR B[ 5, 4 ]fi <- 8co <- 10fit <- 8cot <- 40i <- 1ALGORITMO:Borrar_pantalla( )EN 6,15 ESCRIBIR "Matriz uno"EN 6,45 ESCRIBIR "Transpuesta"MIENTRAS i <= 4 HACERj <- 1MIENTRAS j <= 5 HACERA[ i, j ] <- Int( Rnd( ) * 100 ) + 1B[ j, i ] <- A[ i, j ]EN fi,co ESCRIBIR A[ i, j ]EN fit,cot ESCRIBIR B[ j, i ]co <- co + 4fit <- fit + 2j <- j + 1FINMIENTRASfi <- fi + 2co <- 10fit <- 8
  18. 18. Algoritmos Resueltos Javier Crocco Mendezcot <- cot + 4i <- i + 1FINMIENTRASFINPROGRAMA--------------------------------------------------------------------------38.-Cargar en una matriz las notas de los alumnos de un colegio en funcion delnumero de cursos (filas) y del n£mero de alumnos por curso (columnas).PROGRAMA notasENTORNO:i <- 1j <- 1ALGORITMO:Borrar_pantalla( )EN 10,20 ESCRIBIR "N£mero de cursos: "EN 10,39 LEER MEN 12,20 ESCRIBIR "N£mero de alumnos: "EN 12,40 LEER NDIMENSIONAR A[ M, N ]Borrar_pantalla( )EN 2,25 ESCRIBIR "Introducci¢n de las notas"MIENTRAS i <= M HACEREN 10,25 ESCRIBIR "Curso: "EN 10,32 ESCRIBIR iMIENTRAS j <= N HACEREN 14,25 ESCRIBIR "Alumno: "EN 14,33 ESCRIBIR jEN 16,25 ESCRIBIR "Nota: "EN 16,32 LEER A[ i, j ]j <- j + 1FINMIENTRASi <- i + 1FINMIENTRASFINPROGRAMA--------------------------------------------------------------------------39.-Ordenar una matriz de M filas y N columnas por la primera columnautilizando el m‚todo SHELL (por insercion).PROGRAMA ordenarENTORNO:i <- 1j <- 1fi <- 10co <- 15M <- 0N <- 0ALGORITMO:Borrar_pantalla( )EN 10,20 ESCRIBIR "Filas: "EN 10,27 LEER MEN 12,20 ESCRIBIR "Columnas: "EN 12,30 LEER NDIMENSIONAR A[ M, N ]Borrar_pantalla( )MIENTRAS i <= M HACERMIENTRAS j <= N HACERA[ i, j ] = Int( Rnd( ) * 100 ) + 1EN fi,co ESCRIBIR A[ i, j ]co <- co + 5j <- j + 1FINMIENTRASco <- 15fi <- fi + 2i <- i + 1FINMIENTRASsalto <- Int( M / 2 )
  19. 19. Algoritmos Resueltos Javier Crocco MendezMIENTRAS salto >= 1 HACERsw <- 1MIENTRAS sw <> 0 HACERsw <- 0i <- 1MIENTRAS i <= M - salto HACERSI A[ i, 1 ] > A[ i + salto, 1 ] ENTONCESHACER CambiosFINSIi <- i + 1FINMIENTRASFINMIENTRASsalto <- Int( salto / 2 )FINMIENTRASFINPROGRAMA------------------------------SUBPROGRAMA Cambiosj <- 1MIENTRAS j <= N HACERaux <- A[ i + salto, j ]A[ i + salto, j ] <- A[ i, j ]A[ i, j ] <- auxj <- j + 1FINMIENTRASsw <- 1FINSUBPROGRAMA--------------------------------------------------------------------------TEMA 6--------------------------------------------------------------------------Arrays multidimensionales--------------------------------------------------------------------------40.-Crear una tabla de 3 paginas, 4 filas y 5 columnas donde el primerelemento valga 1, el segundo 2, el tercero 3 y as¡ sucesivamente, eimprimirla.PROGRAMA tablaENTORNO:DIMENSIONAR A[ 3, 4, 5 ]i <- 1j <- 1k <- 1b <- 0fi <- 8co <- 12ALGORITMO:MIENTRAS i <= 3 HACERBorrar_pantalla( )EN fi,co ESCRIBIR "Elementos de la p gina: "EN fi,co + 24 ESCRIBIR ifi <- fi + 2MIENTRAS j <= 4 HACERMIENTRAS k <= 5 HACERb <- b + 1A[ i, j, k ] <- bEN fi,co ESCRIBIR A[ i, j, k ]co <- co + 4k <- k + 1FINMIENTRASfi <- fi + 2co <- 12j <- j + 1FINMIENTRASEN fi + 2,20 ESCRIBIR "Pulse INTRO para continuar ..."Pausa( )i <- i + 1FINMIENTRASFINPROGRAMA
  20. 20. Algoritmos Resueltos Javier Crocco Mendez--------------------------------------------------------------------------41.-Se dispone de una tabla de 5 p ginas, 10 filas y 20 columnas, que serefieren al centro, al curso y al numero de alumnos de un colegiorespectivamente. Imprimir la nota media por curso y la nota media maxima ysu centro de pertenencia.PROGRAMA notasENTORNO:max <- -1sum <- 0centro <- 0i <- 1j <- 1k <- 1fi <- 10ALGORITMO:Borrar_pantalla( )EN 8,18 ESCRIBIR "Centro"EN 8,38 ESCRIBIR "Nota media"MIENTRAS i <= 5 HACERMIENTRAS j <= 10 HACERMIENTRAS k <= 20 HACERsum <- sum + A[ i, j, k ]k <- k + 1FINMIENTRASj <- j + 1FINMIENTRASEN fi,20 ESCRIBIR iEN fi,40 ESCRIBIR sum / 20fi <- fi + 2SI sum / 20 > max ENTONCESmax <- sum / 20centro <- iFINSIi <- i + 1FINMIENTRASEN fi + 2,20 ESCRIBIR "Nota media m xima: "EN fi + 2,39 ESCRIBIR maxEN fi + 4, 20 ESCRIBIR "pertenece al centro: "EN fi + 4,41 ESCRIBIR centroFINPROGRAMA--------------------------------------------------------------------------42.-Una empresa guarda en una tabla de 3x12x4 las ventas realizadas por sustres representantes a lo largo de doce meses de sus cuatro productos,VENTAS[ representante, mes, producto ]. Queremos proyectar el arraytridimensional sobre uno de dos dimensiones que represente el total deventas, TOTAL[ mes, producto ], para lo cual sumamos las ventas de cadaproducto de cada mes de todos los representantes. Imprimir ambos arrays.PROGRAMA ventasENTORNO:** Las variables est n definidas en cada subprogramaALGORITMO:HACER VolcarHACER Imp_TresHACER Imp_DosFINPROGRAMA------------------------------SUBPROGRAMA VolcarDIMENSIONAR TOTAL[ 12, 4 ]j <- 1MIENTRAS j <= 12 HACERk <- 1MIENTRAS k <= 4 HACERi <- 1suma <- 0MIENTRAS i <= 3 HACER
  21. 21. Algoritmos Resueltos Javier Crocco Mendezsuma <- suma + VENTAS[ i, j, k ]i <- i + 1FINMIENTRASTOTAL[ j, k ] <- sumak <- k + 1FINMIENTRASj <- j + 1FINMIENTRASFINSUBPROGRAMA------------------------------SUBPROGRAMA Imp_Tresi <- 1MIENTRAS i <= 3 HACERBorrar_pantalla( )fi <- 8co <- 12EN fi,co ESCRIBIR "Ventas del representante: "EN fi,co + 26 ESCRIBIR ifi <- fi + 2j <- 1MIENTRAS j <= 12 HACERk <- 1MIENTRAS k <= 4 HACEREN fi,co ESCRIBIR VENTAS[ i, j, k ]co <- co + 4k <- k + 1FINMIENTRASfi <- fi + 2co <- 12j <- j + 1FINMIENTRASPausa( )i <- i + 1FINMIENTRASFINSUBPROGRAMA------------------------------SUBPROGRAMA Imp_DosBorrar_pantalla( )j <- 1EN 8,20 ESCRIBIR "Ventas totales"fi <- 10co <- 16MIENTRAS j <= 12 HACERk <- 1MIENTRAS k <= 4 HACEREN fi,co ESCRIBIR TOTAL[ j, k ]co <- co + 4k <- k + 1FINMIENTRASfi <- fi + 2co <- 12j <- j + 1FINMIENTRASFINSUBPROGRAMA--------------------------------------------------------------------------TEMA 7--------------------------------------------------------------------------Ficheros--------------------------------------------------------------------------43.-Hacer un programa que nos permita dar altas en el fichero secuencialDATOS.DAT, cuyos campos son: DNI, NOMBRE, APELLIDOS, DIRECCION yPROVINCIA.PROGRAMA altasENTORNO:res <- "S"ALGORITMO:MIENTRAS res = "S" HACER
  22. 22. Algoritmos Resueltos Javier Crocco MendezABRIR "DATOS.DAT"sw <- 0num <- 0Borrar_pantalla( )EN 5,10 ESCRIBIR "D.N.I.: "EN 5,18 LEER numMIENTRAS NO Eof( ) Y sw = 0 HACERSI dni = num ENTONCESEN 10,10 ESCRIBIR "Alta duplicada"EN 15,10 ESCRIBIR "Pulse INTRO para continuar"Pausa( )sw <- 1SINOSiguiente_registro( )FINSIFINMIENTRASSI sw = 0 ENTONCESEN 7,5 ESCRIBIR "Nombre: "EN 9,5 ESCRIBIR "Apellidos: "EN 11,5 ESCRIBIR "Direcci&oacute;n: "EN 13,5 ESCRIBIR "Provincia: "EN 7,16 LEER nombreEN 9,16 LEER apellidosEN 11,16 LEER direccionEN 13,16 LEER provinciadni <- numFinal_fichero( )Escribir_registro( )FINSICERRAR "DATOS.DAT"res <- Espacios( 1 )HACER MasFINMIENTRASFINPROGRAMA------------------------------SUBPROGRAMA MasMIENTRAS res <> "S" Y res <> "N" HACERESCRIBIR "Desea m s altas (S/N): "LEER resres <- Convertir_mayusculas( res )FINMIENTRASFINSUBPROGRAMA--------------------------------------------------------------------------44.-Hacer un programa que nos permita dar bajas en el fichero DATOS.DAT.PROGRAMA bajasENTORNO:res <- "S"ALGORITMO:MIENTRAS res = "S" HACERABRIR "DATOS.DAT"sw <- 0Borrar_pantalla( )EN 5,10 ESCRIBIR "D.N.I.: "EN 5,18 LEER numMIENTRAS NO Eof( ) HACERSI dni = num ENTONCESsw <- 1SINOABRIR "AUX.DAT"Final_fichero( )Escribir_registro( )FINSIABRIR "DATOS.DAT"Siguiente_registro( )FINMIENTRASCERRAR "DATOS.DAT"CERRAR "AUX.DAT"
  23. 23. Algoritmos Resueltos Javier Crocco MendezSI sw = 0 ENTONCESEN 12,10 ESCRIBIR "Baja inexistente"EN 16,10 ESCRIBIR "Pulse INTRO para continuar"BORRAR "AUX.DAT"Pausa( )SINOBORRAR "DATOS.DAT"RENOMBRAR "AUX.DAT" COMO "DATOS.DAT"FINSIres = Espacios( 1 )HACER MasFINMIENTRASFINPROGRAMA------------------------------SUBPROGRAMA MasMIENTRAS res <> "S" Y res <> "N" HACERESCRIBIR "Desea m s bajas (S/N): "LEER resres <- Convertir_mayusculas( res )FINMIENTRASFINSUBPROGRAMA--------------------------------------------------------------------------45.-Dado el fichero secuencial DATOS.DAT, realizar un programa que nos permitarealizar modificaciones cuantas veces deseemos.PROGRAMA modificaENTORNO:res <- "S"ALGORITMO:MIENTRAS res = "S" HACERABRIR "DATOS.DAT"sw <- 0num <- 0nom <- Espacios( 15 )ape <- Espacios( 30 )dir <- Espacios( 20 )pro <- Espacios( 20 )Borrar_pantalla( )EN 5,10 ESCRIBIR "D.N.I.: "EN 5,18 LEER numMIENTRAS NO Eof( ) Y sw = 0 HACERSI dni = num ENTONCESHACER ImprimirHACER Cambiossw <- 1SINOSiguiente_registro( )FINSIFINMIENTRASSI sw = 0 ENTONCESHACER DetenerFINSICERRAR "DATOS.DAT"res <- Espacios( 1 )HACER MasFINMIENTRASFINPROGRAMA------------------------------SUBPROGRAMA MasMIENTRAS res <> "S" Y res <> "N" HACERESCRIBIR "Desea m s cambios (S/N): "LEER resres <- Convertir_mayusculas( res )FINMIENTRASFINSUBPROGRAMA------------------------------SUBPROGRAMA ImprimirEN 7,5 ESCRIBIR "Nombre: "
  24. 24. Algoritmos Resueltos Javier Crocco MendezEN 9,5 ESCRIBIR "Apellidos: "EN 11,5 ESCRIBIR "Direcci&oacute;n: "EN 13,5 ESCRIBIR "Provincia: "EN 7,16 LEER nombreEN 9,16 LEER apellidosEN 11,16 LEER direccionEN 13,16 LEER provinciaFINSUBPROGRAMA------------------------------SUBPROGRAMA Cambiosnom <- nombreape <- apellidosdir <- direccionpro <- provinciaEN 7,16 LEER nomEN 9,16 LEER apeEN 11,16 LEER dirEN 13,16 LEER pronombre <- nomapellidos <- apedireccion <- dirprovincia <- proEscribir_registro( )FINSUBPROGRAMA------------------------------SUBPROGRAMA DetenerEN 10,20 ESCRIBIR "Registro inexistente"EN 20,18 ESCRIBIR "Pulse INTRO para continuar"Pausa( )FINSUBPROGRAMA--------------------------------------------------------------------------TEMA 8--------------------------------------------------------------------------Informes y rupturas de control--------------------------------------------------------------------------46.-Tenemos el fichero secuencial DATOS.DAT cuyos campos son: DNI, NOMBRE,APELLIDOS, DIRECCION y PROVINCIA. Listar por impresora todos los registroscuya provincia sea una determinada que introduciremos por teclado.PROGRAMA provinciaENTORNO:fi <- 55c <- 0pag <- 1pro <- Espacios( 15 )ALGORITMO:Borrar_pantalla( )EN 10,20 ESCRIBIR "Provincia: "EN 10,32 LEER proABRIR "DATOS.DAT"Activar_impresora( )MIENTRAS NO Eof( ) HACERSI provincia = pro ENTONCESSI fi = 55 ENTONCESHACER CabeceraFINSIEN fi,5 ESCRIBIR dniEN fi,15 ESCRIBIR nombreEN fi,35 ESCRIBIR apellidosEN fi,65 ESCRIBIR direccionfi <- fi + 1c <- c + 1FINSISiguiente_registro( )FINMIENTRASSI pag <> 1 ENTONCESEN fi + 2,20 ESCRIBIR "Total de personas: "EN fi + 2,39 ESCRIBIR c
  25. 25. Algoritmos Resueltos Javier Crocco MendezFINSIActivar_pantalla( )CERRAR "DATOS.DAT"FINPROGRAMA------------------------------SUBPROGRAMA CabeceraSalto_pagina( )EN 2,65 ESCRIBIR "P g.: "EN 2,71 ESCRIBIR pagEN 4,10 ESCRIBIR "Relaci¢n de las personas que viven en la provincia: "EN 4,62 ESCRIBIR proEN 6,7 ESCRIBIR "D.N.I."EN 6,18 ESCRIBIR "Nombre"EN 6,40 ESCRIBIR "Apellidos"EN 6,68 ESCRIBIR "Direcci¢n"EN 7,4 ESCRIBIR "------------------------------------------------------------------------"fi <- 9pag <- pag + 1FINSUBPROGRAMA--------------------------------------------------------------------------47.-En el fichero secuencial VENTAS.DAT, est n almacenadas las ventas de losproductos durante el d¡a, cuyos campos son: NART y VENTAS. Se desea hacerun programa que liste por impresora todas las ventas realizadas durante eld¡a.PROGRAMA ventasENTORNO:total <- 0uno <- 0fi <- 55sw <- 0aux <- 0pag <- 1ALGORITMO:Borrar_pantalla( )Activar_impresora( )ABRIR "VENTAS.DAT"MIENTRAS NO Eof( ) HACERSI fi = 55 ENTONCESHACER CabeceraFINSISI sw = 0 ENTONCESaux <- nartsw <- 1FINSISI nart = aux ENTONCESuno <- uno + ventasSINOHACER Imprimiruno <- 0aux <- nartuno <- ventasFINSISiguiente_registro( )FINMIENTRASHACER ImprimirEN fi + 2,20 ESCRIBIR "Unidades vendidas: "EN fi + 2,39 ESCRIBIR totalActivar_pantalla( )CERRAR "VENTAS.DAT"FINPROGRAMA------------------------------SUBPROGRAMA ImprimirEN fi,32 ESCRIBIR auxEN fi,42 ESCRIBIR totalfi <- fi + 1total <- total + unoFINSUBPROGRAMA
  26. 26. Algoritmos Resueltos Javier Crocco Mendez------------------------------SUBPROGRAMA CabeceraSalto_pagina( )EN 2,65 ESCRIBIR "P g.: "EN 2,71 ESCRIBIR pagEN 4,20 ESCRIBIR "LISTADO DE LAS VENTAS DE LOS PRODUCTOS AL DIA: "EN 4,68 ESCRIBIR Fecha_sistema( )EN 6,30 ESCRIBIR "N£mero"EN 6,40 ESCRIBIR "Cantidad"EN 7,18 ESCRIBIR "-----------------------------------------------------"fi <- 9pag <- pag + 1FINSUBPROGRAMA--------------------------------------------------------------------------48.-Dado el fichero secuencial ARTICULOS.DAT, cuyos campos son: NART,ARTICULO, PVP, STOCK y MINIMO. En otro fichero VENTAS.DAT, est nalmacenadas las modificaciones de los productos durante el d¡a, cuyoscampos son: NART2, VENTAS y TIPO. El campo TIPO puede tomar los valores 0(venta) y 1 (compra). Se desea hacer un programa que realice unaactualizaci¢n del fichero de ARTICULOS y un listado por impresora de lasentradas y salidas de los art¡culos.PROGRAMA modificaENTORNO:entra <- 0sale <- 0total <- 0fi <- 55sw <- 0aux <- 0pag <- 1ALGORITMO:Borrar_pantalla( )Activar_impresora( )ABRIR "ARTICULOS.DAT"Primer_registro( )ABRIR "SALIDAS.DAT"Primer_registro( )ABRIR "VENTAS.DAT"Primer_registro( )SELECCIONAR "VENTAS.DAT"MIENTRAS NO Eof( ) HACERSI fi = 55 ENTONCESHACER CabecomprasFINSISI sw = 0 ENTONCESaux <- nart2HACER Buscarsw <- 1FINSISI nart2 = aux ENTONCESHACER CalculosSINOHACER GrabarHACER Compraentra <- 0sale <- 0aux <- nart2HACER BuscarHACER CalculosFINSISiguiente_registro( )FINMIENTRASHACER GrabarHACER CompraSELECCIONAR "SALIDAS.DAT"fi <- 55MIENTRAS NO Eof( ) HACER
  27. 27. Algoritmos Resueltos Javier Crocco MendezSI fi = 55 ENTONCESHACER CabesalFINSIMIENTRAS nart3 <> nart HACERSELECCIONAR "ARTICULOS.DAT"Siguiente_registro( )FINMIENTRASaux <- nart3HACER BuscarHACER SaleSELECCIONAR "SALIDAS.DAT"Siguiente_registro( )FINMIENTRASEN fi + 4,55 ESCRIBIR "Total: "EN fi + 4,62 ESCRIBIR totalActivar_pantalla( )Cerrar_ficheros( )BORRAR "SALIDAS.DAT"FINPROGRAMA------------------------------SUBPROGRAMA CalculosSI tipo = 0 ENTONCESentra <- entra + ventasSINOsale <- sale + ventasFINSIFINSUBPROGRAMA------------------------------SUBPROGRAMA Grabarstock <- stock + entra - saleSELECCIONAR "ARTICULOS.DAT"Escribir_registro( )nart3 <- auxventas3 <- saleSELECCIONAR "SALIDAS.DAT"Final_fichero( )Escribir_registro( )FINSUBPROGRAMA------------------------------SUBPROGRAMA CabecomprasSalto_pagina( )EN 2,65 ESCRIBIR "P g.: "EN 2,71 ESCRIBIR pagEN 4,20 ESCRIBIR "LISTADO DE LAS ENTRADAS DE ARTICULOS AL DIA: "EN 4,66 ESCRIBIR Fecha_sistema( )EN 6,18 ESCRIBIR "N£mero"EN 6,35 ESCRIBIR "Art¡culo"EN 6,65 ESCRIBIR "Cantidad"EN 7,15 ESCRIBIR "----------------------------------------------------------------"fi <- 9pag <- pag + 1FINSUBPROGRAMA------------------------------SUBPROGRAMA CompraEN fi,16 ESCRIBIR auxEN fi,30 ESCRIBIR articuloEN fi,67 ESCRIBIR entrafi <- fi + 1FINSUBPROGRAMA------------------------------SUBPROGRAMA CabesalSalto_pagina( )EN 2,65 ESCRIBIR "P g.: "EN 2,71 ESCRIBIR pagEN 4,20 ESCRIBIR "LISTADO DE SALIDAS DE ARTICULOS AL DIA: "EN 4,60 ESCRIBIR Fecha_sistema( )EN 6,8 ESCRIBIR "N£mero"EN 6,16 ESCRIBIR "Art¡culo"EN 6,40 ESCRIBIR "Cantidad"EN 6,54 ESCRIBIR "PVP"
  28. 28. Algoritmos Resueltos Javier Crocco MendezEN 6,64 ESCRIBIR "Importe"EN 7,6 ESCRIBIR "------------------------------------------------------------------------------"fi <- 9pag <- pag + 1FINSUBPROGRAMA------------------------------SUBPROGRAMA SaleSalto_pagina( )SI stock < minimo ENTONCESEN fi,4 ESCRIBIR "*"FINSIEN fi,6 ESCRIBIR nart3EN fi,14 ESCRIBIR articuloEN fi,40 ESCRIBIR ventasEN fi,54 ESCRIBIR pvpEN fi,65 ESCRIBIR ventas * pvptotal <- total + ventas * pvpfi <- fi + 1FINSUBPROGRAMA------------------------------SUBPROGRAMA BuscarMIENTRAS nart <> aux HACERSELECCIONAR "ARTICULOS.DAT"Siguiente_registro( )FINMIENTRASFINSUBPROGRAMA--------------------------------------------------------------------------TEMA 9--------------------------------------------------------------------------Organizaci¢n aleatoria y secuencial--------------------------------------------------------------------------49.-Hacer un pseudocodigo que nos permita dar altas en el fichero DATOS.DAT deorganizaci¢n directa, controlando las altas duplicadas. Los campos son:DNI, NOMBRE, APELLIDOS Y PUNTERO para ambos archivos.Algoritmo( dn ) =- Blanco: grabamos el registro en esa posici¢n y ponemos el puntero acero.- Cero: comprobamos cu l es el valor del campo puntero. Si es cero,grabamos el registro en esa posici¢n (no hay sinonimos) y si es distintode cero, comparamos el valor con el campo DNI, si son iguales, altaduplicada y dejamos de leer, y si no son iguales, introducimos el restode la informacion.- Distinto de cero: hay un registro grabado en esa posicion. Si es igualal dato introducido, alta duplicada, y si no son iguales, comprobamos elvalor del puntero, si es cero grabamos el registro, y si no es cero, sies igual al campo DNI, alta duplicada y sino se graba la informacion enel archivo SINONIMOS.DAT.------------------------------PROGRAMA altasENTORNO:res <- "S"ALGORITMO:ABRIR "DATOS.DAT"ABRIR "SINONIMOS.DAT"MIENTRAS res = "S" HACERdn <- 0nom <- Espacios( 15 )ape <- Espacios( 30 )dir <- Espacios( 35 )aux <- Espacios( 2 )hueco <- Espacios( 2 )swh <- 0sw <- 0num <- 0
  29. 29. Algoritmos Resueltos Javier Crocco Mendezdonde <- 0i <- 0Borrar_pantalla( )EN 10,20 ESCRIBIR "D.N.I.: "EN 10,29 LEER dnnum <- Algoritmo( dn )SELECCIONAR "DATOS.DAT"LEER numSI dni = Str( dn ) ENTONCESHACER Alta_duplicadaSINOSI Val( dni ) = 0 O dni = Espacios( ) ENTONCESswh <- 1FINSISI Val( puntero ) = 0 O puntero = Espacios( ) ENTONCESHACER Introducirpuntero <- Str( 0 )GRABAR numSINOHACER BuscarSI sw = 0 ENTONCESHACER IntroducirSI swh = 1 ENTONCESGRABAR numSINOHACER Encontrar_sitioSELECCIONAR "SINONIMOS.DAT"GRABAR 1puntero <- Str( donde )SI i = 0 ENTONCESSELECCIONAR "DATOS.DAT"GRABAR numSINOSELECCIONAR "SINONIMOS.DAT"GRABAR Val( aux )FINSIpuntero <- Str( 0 )SELECCIONAR "SINONIMOS.DAT"GRABAR dondeFINSISINOHACER Alta_duplicada( )FINSIFINSIFINSIHACER MasFINMIENTRASCerrar_ficheros( )FINPROGRAMA------------------------------SUBPROGRAMA IntroducirEN 12,20 ESCRIBIR "Nombre: "EN 14,20 ESCRIBIR "Apellidos: "EN 16,20 ESCRIBIR "Direcci¢n: "EN 12,29 LEER nomEN 14,32 LEER apeEN 16,32 LEER dirFINSUBPROGRAMA------------------------------SUBPROGRAMA Encontrar_sitioSELECCIONAR "SINONIMOS.DAT"LEER 1SI Val( nombre ) <> 0 Y nombre <> Espacios( ) ENTONCESdonde <- Val( nombre )LEER dondehueco <- Val( nombre )nombre <- Str( hueco )SINOdonde <- Val( dni ) + 1dni <- Str( donde )
  30. 30. Algoritmos Resueltos Javier Crocco MendezFINSIFINSUBPROGRAMA------------------------------SUBPROGRAMA Buscaraux <- punteroi <- 0MIENTRAS Val( puntero ) <> 0 Y sw = 0 HACERSELECCIONAR "SINONIMOS.DAT"LEER Val( puntero )SI dni = Str( dn ) ENTONCESEN 20,10 ESCRIBIR "Alta duplicada"Pausa( )sw <- 1SINOSI Val( puntero ) <> 0 ENTONCESi <- i + 1aux <- punteroFINSIFINSIFINMIENTRASFINSUBPROGRAMA------------------------------SUBPROGRAMA Alta_duplicadaEN 20,10 ESCRIBIR "Alta duplicada"Pausa( )FINSUBPROGRAMA--------------------------------------------------------------------------50.-Tenemos el fichero DATOS.DAT, que est indexado por el campo APELLIDOS,cuyos campos son: DNI, NOMBRE, APELLIDOS, DIRECCION y PROVINCIA. Hacer unprograma que nos permita listar por pantalla todos los registros delfichero, controlando el salto de p gina cuando llegue a la l¡nea veinte.PROGRAMA listarENTORNO:fi <- 22ALGORITMO:ABRIR "DATOS.DAT" INDICE "APELLIDO"MIENTRAS NO Eof( ) HACERSI fi = 22 ENTONCESHACER CabeceraFINSIEN fi,2 ESCRIBIR dniEN fi,12 ESCRIBIR nombreEN fi,28 ESCRIBIR apellidosEN fi,55 ESCRIBIR direccionEN fi,69 ESCRIBIR provinciafi <- fi + 1SI fi = 20 ENTONCESEN 22,20 ESCRIBIR "Pulse INTRO para continuar"Pausa( )fi <- 22FINSISiguiente_registro( )FINMIENTRASCERRAR "DATOS.DAT"Cerrar_indices( )FINPROGRAMA------------------------------SUBPROGRAMA CabeceraBorrar_pantalla( )EN 3,4 ESCRIBIR "D.N.I."EN 3,20 ESCRIBIR "NOMBRE"EN 3,35 ESCRIBIR "APELLIDOS"EN 3,60 ESCRIBIR "DIRECCION"EN 3,70 ESCRIBIR "PROVINCIA"fi <- 5FINSUBPROGRAMA
  31. 31. Algoritmos Resueltos Javier Crocco Mendez--------------------------------------------------------------------------52.-Tenemos el fichero DATOS.DAT con la misma estructura anterior, que estaindexado por el campo DNI. Crear un programa que nos permita consultar unregistro siempre que queramos.PROGRAMA consultaENTORNO:res <- "S"ALGORITMO:ABRIR "DATOS.DAT" INDICE "DNI"MIENTRAS res = "S" HACERnum <- 0Borrar_pantalla( )EN 8,20 ESCRIBIR "D.N.I. a buscar: "EN 8,38 LEER numBUSCAR numSI Encontrado( ) ENTONCESEN 10,12 ESCRIBIR "Nombre: ", nombreEN 12,28 ESCRIBIR "Apellidos: ", apellidosEN 14,55 ESCRIBIR "Direcci¢n: ", direccionEN 16,69 ESCRIBIR "Provincia: ", provinciaSINOEN 12,20 ESCRIBIR "No est "EN 16,20 ESCRIBIR "Pulse INTRO para continuar"Pausa( )FINSIres <- Espacios( 1 )HACER MasFINMIENTRASCERRAR "DATOS.DAT"Cerrar_indices( )FINPROGRAMA

×