Recopilación de Ejemplos de algoritmos en PSeudoCodigo con pseint Nota: estos ejemplos se encuentran desactualizados.Si bien continúan siendo válidos, algunas operaciones pueden simplificarse gracias a nuevas características del intérprete, y hay además aspectos del lenguaje que no están cubiertos en ninguo de estos ejemplos (como la definición de funciones o subprocesos). Finalmente, la sintaxis de un ejemplo puede variar según el perfil de lenguaje con que el usuario configure al intérprete. Para obtener una lista más completa de ejemplos, y visualizar su sintaxis adaptada a una cierta configuración consulte la ayuda del editor. AdivinaNumero: simple juego en el que hay que adivinar un nro aleatorio entre 1 y 100 en menos de 10 intentos. Factorizacion: descompone un numero en sus factores primos. Hanoi: juego de las torres de Hanoi, donde se deben mover discos entre tres torres cumpliendo ciertas limitaciones, hasta colocarlos todos en la ultima torre. Matematicas: presenta un menu que permite realizar diferentes operaciones matematicas sobre un numero (funciones trigonometricas, calcular valor absolto, truncar, determinar si es primo, hallar el factorial, hallar la raiz cuadrada, etc.). Mayores: Busca los dos mayores de una lista de N datos Modulo: Ejemplo trivial del uso del operador de módulo (MOD o %). OrdenaLista: ordena una lista de nombres alfabeticamente. Promedio: calcula el promedio de una lista de datos. Resolvente: calcula e informa las raices de una ecuacion de cuadratica, considerando los tres casos (reales iguales, reales distintas, o complejas conjugadas). Sucursales: se obtienen datos acerca de las ventas de una empresa ingresando las cantidades vendidas por articulo y sucursal, junto con el listado de precios. Triangulo: calcula el area de un triangulo rectangulo, verificando primero que lo sea mediante el teorema de pitagoras. Página 1 de 51 AdivinaNumero.psc // Juego simple que pide al usuario que adivine un numero en 10 intentos Proceso Adivina_Numero intentos<-9; num_secreto <- azar(100)+1; Escribir "Adivine el numero (de 1 a 100):"; Leer num_ingresado; Mientras num_secreto<>num_ingresado Y intentos>0 Hacer Si num_secreto>num_ingresado Entonces Escribir "Muy bajo"; Sino Escribir "Muy alto"; FinSi Escribir "Le quedan ",intentos," intentos:"; Leer num_ingresado; intentos <- intentos-1; FinMientras Si intentos=0 Entonces Escribir "El numero era: ",num_secreto; Sino Escribir "Exacto! Usted adivino en ",11-intentos," intentos."; FinSi FinProceso Factorizacion.psc Proceso Factorizacion Escribir "Ingrese el numero: "; Leer num; Escribir "Factorizacion: "; factorizar<-verdadero; Mientras factorizar Y num>1 hacer div<-0; Si num/2 = trunc(num/2) Entonces Escribir 2; num<-num/2; Sino div<-1; factor_primo<-Verdadero; Mientras div<=rc(num) Y factor_primo Hacer div <- div+2; Si num/div = trunc(num/div) Entonces factor_primo <- Falso; FinSi FinMientras Si factor_primo Entonces escribir num; factorizar<-falso; Página 2 de 51 sino escribir div; num<-num/div; factor_primo<-verdadero; FinSi FinSi FinMientras FinProceso Hanoi.psc // El objetivo del juego es mover los discos de la torre 1 a la 3 en la // menor cantidad de movimientos posible. No se puede colocar un disco de // un tamanio sobre otro mas chico // // // // Hay una matriz que representa las torres, cada columna contiene nros que representan los tamanios de los discos en esas torres (solo interesan los valores hasta la cantidad de discos de esa torre). Cuantos discos tiene cada torre lo dice el vector cant_discos. Proceso Hanoi Dimension torres[3,10], cant_discos[3]; // pedir y validar cuantos discos colocar en la primer torre Escribir "Ingrese el nro de discos (1-5):"; leer discos; mientras discos<1 O discos>8 Hacer Escribir "El numero de discos debe ser mayor a 0 y menor a 5:"; leer discos; finmientras // inicializar los datos cant_discos[1]<-discos; cant_discos[2]<-0; cant_discos[3]<-0; para i<-1 hasta discos hacer torres[1,i]<-discos-i+1; finpara cant_movs<-0; // jugar! mientras cant_discos[3]<>discos Hacer // mientras no esten todos los discos en la tercer torre, el juego sigue para i<-1 hasta 3 Hacer // dibujar las tres torres escribir ""; escribir "Torre ",i; si cant_discos[i]=0 Entonces Escribir ""; sino para j<-cant_discos[i] hasta 1 con paso -1 Hacer // recorrer los discos de la torre, de arriba hacia abajo segun torres[i,j] Hacer // dibujar Página 3 de 51 cada disco 1: escribir " " " " " " " " XX"; 2: escribir XXXXXX"; 3: escribir XXXXXXXXXX"; 4: escribir XXXXXXXXXXXXXX"; 5: escribir XXXXXXXXXXXXXXXXXX"; 6: escribir XXXXXXXXXXXXXXXXXXXXXX"; 7: escribir XXXXXXXXXXXXXXXXXXXXXXXXXX"; 8: escribir XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; finsegun FinPara finsi Escribir " ----------------------------------"; escribir ""; FinPara // solicitar movimiento Escribir "Mover desde la torre: "; leer t1; Escribir "hacia la torre: "; leer t2; si t1<0 O t1>3 O t2<0 O t2>3 Entonces // controlar que el nro de torre sea valido escribir "Movimiento invalido"; sino si cant_discos[t1]=0 Entonces // controlar que la torre 1 tengo al menos un disco escribir "Movimiento invalido"; Sino disco_a_mover <- torres[t1,cant_discos[t1]]; // obtener tamanio del disco que se quiere mover puede_mover<-verdadero; si cant_discos[t2]<>0 entonces // controlar que la torre dos no tenga discos o tenga discos mas grandes si torres[t2,cant_discos[t2]]<disco_a_mover Entonces puede_mover<-Falso; FinSi FinSi si puede_mover Entonces // si paso todos los controles, mover cant_movs <- cant_movs+1; cant_discos[t2]<-cant_discos[t2]+1; torres[t2,cant_discos[t2]] <disco_a_mover; cant_discos[t1]<-cant_discos[t1]-1; Sino escribir "Movimiento invalido"; finsi Página 4 de 51 FinSi finsi finmientras // mostrar resultado escribir ""; escribir ""; escribir "Juego finalizado en ",cant_movs," movimientos!"; escribir ""; FinProceso Matematicas.psc // Este ejemplo muestra el uso de expresiones, operadores y funciones matematicas Proceso Matematicas Salir<-0; Escribir 'Ingresar Numero:'; Leer N; Repetir Escribir ' '; Escribir 'Presione Enter para continuar'; Leer x; Escribir '1 - Seno, Coseno, ArcoTangente'; Escribir '2 - Lograritmo Natural, Funcion Exponencial'; Escribir '3 - Truncar, Redondear'; Escribir '4 - Raiz Cuadrada'; Escribir '5 - Valor Absoluto'; Escribir '6 - Separar parte entera y decimal'; Escribir '7 - Hallar Factorial'; Escribir '8 - Averiguar si es primo'; Escribir '9 - Ingresar Otro Numero'; Escribir ' '; Escribir '0 - para Salir'; Escribir ' '; Leer Opcion; Segun Opcion Hacer 1: Escribir 'Seno:',Sen(N); Escribir 'Coseno:',Cos(N); Escribir 'ArcTangente:',Atan(N); 2: Si N<=0 Entonces Escribir 'El numero debe ser mayor a cero!'; Sino Escribir 'Log Nat.:',ln(N); Escribir 'Func Expon.:',exp(N); FinSi 3: Escribir 'Turncar:',trunc(N); Escribir 'Redondear:',redon(N); 4: Escribir 'Raiz Cuad.:',rc(N); 5: Escribir 'Valor Abs.:',abs(N); 6: Página 5 de 51 7: Si N<>Trunc(N) Entonces Escribir 'El numero debe ser entero!'. Si N/2=trunc(N/2) Entonces Primo<-'No'.r. FinSi Nu<-RC(Nu). f<-1.'='. f<-3. FinSi FinSi 8: Si N<>Trunc(N) Entonces Escribir 'El numero debe ser entero!'. Página 6 de 51 . De Otro Modo: Escribir 'Opcion No Valida!'. FinSi FinSi 9: Escribir 'Ingrese Numero:'. FinMientras Escribir 'Factorial:'. Sino Primo<-'Si'. Sino Si abs(N)>50 Entonces Escribir 'Resultado muy grande!'. FinSi Si Primo='No' Entonces Escribir N.f-2. FinSi Si N<0 entonces Nu<-N*-1. Escribir 'Parte Decimal:'. FinSi f<-f+2. sino Nu<-N. Sino r<-f*r. Sino r<-1. Mientras f<=Nu Y Primo='Si' Hacer Si N/F=trunc(N/F) Entonces Primo<-'No'. Leer N. Si f=3 Entonces F<-4.Trunc(n).N/(f-2). FinMientras Escribir 'Numero Primo:'. Mientras f<=abs(N) Hacer Si N<0 Entonces r<-(-f)*r. FinSi f<-f+1.n-Trunc(n).'x'.Escribir 'Parte Entera:'.Primo. 0: Salir<-1. ". Leer M. may1<-datos[i]. Leer N. Para i<-1 Hasta n Hacer Escribir "Ingrese el dato ".psc Proceso Modulo Escribir "Ingrese el numero: ". may2<-datos[2]. FinPara Si datos[1]>datos[2] Entonces may1<-datos[1]. Leer n.psc // Busca los dos mayores de una lista de N datos Proceso Mayores Dimension datos[200].":". Página 7 de 51 ." es divisor exacto de ". Escribir "Ingrese el divisor: ".". Leer datos[i].FinSegun Hasta que Salir=1 FinProceso Mayores. FinProceso Modulo. Sino may1<-datos[2].may1.N. may2<-datos[1]. Escribir "El segundo mayor es: ". Sino Si datos[i]>may2 Entonces may2<-datos[i]. Escribir "Ingrese la cantidad de datos:". FinSi FinSi FinPara Escribir "El mayor es: ".may2. FinSi Para i<-3 Hasta n Hacer Si datos[i]>may1 Entonces may2<-may1. Si N mod M = 0 Entonces Escribir M.i. // leer la lista cant<-0. se_repite<-Falso. Para j<-i+1 Hasta cant Hacer Si lista[j]<lista[pos_menor] Entonces pos_menor<-j. Escribir "Ingrese los nombres (enter en blanco para terminar):".N mod M." por ". Mientras nombre<>"" Hacer cant<-cant+1. Repetir // leer un nombre y ver que no este ya en la lista Leer nombre. FinSi FinProceso OrdenaLista. FinPara // mostrar como queda la lista Escribir "La lista ordenada es:".psc // Se ingresa una lista de nombres (la lista termina // cuando se ingresa un nombre en blanco) no permitiendo // ingresar repetidos y luego se ordena y muestra Proceso OrdenaLista Dimension lista[200]. Para i<-1 Hasta cant Hacer Si nombre=lista[i] Entonces se_repite<-Verdadero.N. FinSi FinPara // intercambia el que estaba en i con el menor que encontro aux<-lista[i].Sino Escribir "El resto de dividir ".lista[i]." es: ". lista[pos_menor]<-aux.M. Leer nombre. FinSi FinPara Hasta Que NO se_repite FinMientras // ordenar Para i<-1 Hasta cant-1 Hacer // busca el menor entre i y cant pos_menor<-i. FinPara FinProceso Página 8 de 51 . Para i<-1 Hasta cant Hacer Escribir " ". lista[i]<-lista[pos_menor]. lista[cant]<-nombre. pimag. Leer a. // * La recaudacion total de la empresa. // Leer Precios Página 9 de 51 ."i".r1.psc // calcula las raices de una ecuacion de segundo grado Proceso Resolvente // cargar datos Escribir "Ingrese el coeficiente A:". // * La sucursal de mayor recaudacion. Cant[4. r2 <. // * La recaudacion total de cada sucursal.b^2-4*a*c.psc // Problema Ejemplo: // Se ingresan los precios de 5 articulos y las cantidades vendidas // por una empresa en sus 4 sucursales.(-b)/(2*a). Informar: // * Las cantidades totales de cada articulo.(-b)/(2*a). Escribir "Raiz 2: ". Escribir "Ingrese el coeficiente C:". // * La cantidad de articulos en la sucursal 2. Sino r1 <.preal. Si disc<0 Entonces // si son imaginarias preal<.5]. FinSi FinSi FinProceso Sucursales."i". Escribir "Raiz 1 = Raiz 2: ". Leer b. // * La cantidad del articulo 3 en la sucursal 1.rc(-disc)/(2*a).r."+". // determinar si son reales o imaginarias disc <. Escribir "Raiz 1: ". pimag<.preal.((-b)+rc(disc))/(2*a).pimag. Sino Si disc=0 Entonces // ver si son iguales o distintas r <. Proceso Sucursales // Inicializar Prec=Arreglo de precios y Cant=Arreglo para cantidades Dimension Prec[5]. Escribir "Raiz 1: ". Escribir "Raiz 2: "."-".Resolvente. Leer c.((-b)-rc(disc))/(2*a). Escribir "Ingrese el coeficiente B:".r2. I].':'.I]+Cant[2.I.3].Suma. FinPara Escribir 'Recaudaciones Sucursal '.NumMayor. Articulo 3:'.I]*Prec[i]). // Acumular total de cada sucursal (TotSuc) y // total de la empresa (TotEmp) MayorRec<-0. en Sucursal '.I].Para I<-1 Hasta 5 Hacer Escribir 'Ingrese Precio Articulo '.TotEmp. FinPara Escribir 'Recaudacion total de la empresa:'.Cant[1.I]+Cant[3.I. NumMayor<-J. FinProceso Triangulo. Articulo 3: Escribir 'Sucursal 1. FinSi TotEmp<-TotEmp+TotSuc. Leer Prec[I].':'. Escribir 'Total articulo '.I]+Cant[4.'. Leer Cant[J.J. // Informar Sucursal 1. FinPara FinPara // Sumar cantidades por articulos Escribir 'Cantidades por articulos:'. determina // si corresponden (por Pitargoras) y en caso afirmativo // calcula el area Página 10 de 51 . Para J<-1 Hasta 4 Hacer TotSuc<-0.':'. FinPara // Leer Cantidades Para J<-1 Hasta 4 Hacer Para I<-1 Hasta 5 Hacer Escribir 'Ingrese Cant.I.TotSuc. de Articulo '. FinPara // Informar Total de Articulos Sucursal 2 Suc2<-0. Para I<-1 Hasta 5 Hacer TotSuc<-TotSuc+(Cant[J. Si TotSuc>MayorRec entonces MayorRec<-TotSuc.':'.J.I]. FinPara Escribir 'Total Sucursal 2:'. NumMayor<-0.Suc2. Para I<-1 Hasta 5 Hacer Suma<-Cant[1. TotEmp<-0. Escribir 'Sucursal de Mayor Recaudacion:'.psc // Lee los tres lados de un triangulo rectangulo. Para I<-1 Hasta 5 Hacer Suc2<-Suc2+Cant[2. Sino hip<-l3. Escribir "El area es: ". observa bien el codigo. Sino Escribir "No es un triangulo rectangulo. Página 11 de 51 .". Sino hip<-l3. copialo a Pseint y luego fijate si es correcto sino identifica los problemas y resuelvelos: Proceso Promedio //Calcula el promedio de una lista de numeros Escribir "Ingrese un numero:". Escribir "Ingrese un numero:". cat2<-l1. FinSi Sino cat1<-l1.area. Si l1>l3 Entonces hip<-l1. Escribir "Ingrese el lado 3:". FinSi FinSi // ver si cumple con Pitagoras Si hip^2 = cat1^2 + cat2^2 Entonces // calcualar area area<-(cat1*cat2)/2. Leer n. Leer n. En el siguiente ejemplo se intenta caclular el promedio de 10 numeros. // encontrar la hipotenusa (mayor lado) Si l1>l2 Entonces cat1<-l2. FinSi FinProceso Ejemplos en Pseint Fecha de entrega 26/11/12 1. cat2<-l2. Leer l3.Proceso TrianguloRectangulo // cargar datos Escribir "Ingrese el lado 1:". Leer l2. Leer l1. Escribir "Ingrese el lado 2:". cat2<-l3. Si l2>l3 Entonces hip<-l2. cat2<-l3. Este algoritmo intenta mostrar los numeros del 1 al 100. //Declaro una variable promedio para asignarle el promedio promedio<-n1+n2+n3+n4+n5+n6+n7+n8+n9+n10 / 10. FinProceso 2. Escribir "Ingrese un numero:". FINMIENTRAS ESCRIBIR "ultimo ciclo: " c.x. Escribir "Fin de listado". En este otro ejemplo se trata de mostrar los primeros 50 numeros pares. //Muestro el promedio Escribir "El promedio es: ". Leer n. Leer x. Leer n. si es cero entonces es par Si x MOD 2 = 0 Entonces Escribir "Numero: ". FinProceso 3.x. FinSi Hasta Que x = 50 Escribir "Ultimo Numero: ". Leer n. Leer n. Escribir "Ingrese un numero:".promedio. FinProceso Página 12 de 51 . Leer n. Proceso NumerosPares //Muestra los numeros pares del 0 al 50 Escribir "Ingrese un numero:". Escribir "Ingrese un numero:". ESCRIBIR "Fin de repeticion". Escribir "Ingrese un numero:". Escribir "Ingrese un numero:". fijate si es correcto Proceso Repetir1al100 //Hacer un pseudocodigo que imprima los numeros del 1 al 100 c <. Escribir "Ingrese un numero:". copia el codigo en pseint y fijate si es correcto. haz lo mismo que en el ejemplo anterior. Escribir "Ingrese un numero:". Leer n. Repetir //la funcion MOD calcula el resto de la division por 2. hace lo mismo que en los ejemplos anteriores. Leer n.Escribir "Ingrese un numero:".0 MIENTRAS c < 100 HACER ESCRIBIR c. Leer n. ESCRIBIR "Fin de repeticion". verifique que sean positivos. pesoNiños<-0. pesoAdolescentes<-0. FinProceso 5. Realizar un algoritmo que muestre los primeros 50 numeros pares. quien me puede ayudar con este ejercicio inicio Una persona debe realizar un muestreo con 80 personas para determinar el promedio de //peso de los niños.10 //Adolecente 11-17 //Jóvenes 18 . Realizar un algoritmo que pida 3 numeros. jóvenes. haz lo mismo busca los errores Proceso Repetir1al100conRepetir //Hacer un pseudocodigo que imprima los numeros del 100 al 0 en orden decreciente c <. ¿Funciona?.0 Repetir ESCRIBIR c. 8. numeroJovenes<-0. Este codigo es el mismo que el ejercicio anterior pero utiliza la estructura Repetir . Se //determinan las categorías con base en la siguiente tabla: //CATEGORIA EDAD //Niños 0 . ESCRIBIR "Fin de repeticion".4.Hasta. haz lo mismo que en los ejercicios anteriores. numeroAdultos<-0. En el siguiente codigo se quiere mostrar los numeros del 100 al 0.29 //Adultos 30 . numeroViejos<-0. Realizar un algoritmo que pida un numero y luego calcule la raiz cuadrada del mismo. Hasta Que c < 100 ESCRIBIR "ultimo ciclo: " c. luego calcule el promedio y busque el mayor de todos.59 //Viejos 60 en adelante Hola Jessica fijate el siguiente script Proceso PesoPromedio //Inicializo a 0 los contadores para edad y peso numeroNiños<-0. busca los errores Proceso Repetir1al100conRepetir //Hacer un pseudocodigo que imprima los numeros del 1 al 100 c <. Página 13 de 51 . adultos y viejos que existen en su zona habitacional.100 Repetir ESCRIBIR c. FinProceso 6. Hasta Que c <= 0 ESCRIBIR "ultimo ciclo: " c. numeroAdolescentes<-0. 7. //sumo al contador de peso de los Jovenes el Jovenes encontrado FinSi Si (edad >= 30 y edad <=59) Entonces numeroAdultos<-numeroAdultos + 1. //añado 1 Jovenes a esta categoria pesoAdultos<-pesoAdultos + peso. FinSi Si numeroAdolescentes > 0 Entonces pesoPromedioAdolescentes <. Escribir 'De la edad de la persona'. Página 14 de 51 . //sumo al contador de peso de los adolescentes el adolescente encontrado FinSi Si (edad >= 18 y edad <=29) Entonces numeroJovenes<-numeroJovenes + 1. //añado 1 Viejos a esta categoria pesoViejos<-pesoViejos + peso. Leer peso.pesoJovenes<-0. pesoPromedioNiños <-0. //sumo al contador de peso de los niños el niño encontrado FinSi Si (edad >= 11 y edad <=17) Entonces numeroAdolescentes<-numeroAdolescentes + 1. //añado 1 Jovenes a esta categoria pesoJovenes<-pesoJovenes + peso. pesoPromedioJovenes <-0. //añado 1 adolescente a esta categoria pesoAdolescentes<-pesoAdolescentes + peso. FinSi Si numeroJovenes > 0 Entonces pesoPromedioJovenes <. //sumo al contador de peso de los Jovenes el Jovenes encontrado FinSi Si (edad >= 60) Entonces numeroViejos<-numeroViejos + 1. pesoPromedioViejos <-0. pesoPromedioAdolescentes <-0. //Veo en que categoria de edad esta la persona Si (edad >= 0 y edad <=10) Entonces numeroNiños<-numeroNiños + 1. Leer edad. Repetir //Pido el peso y la edad de la persona Escribir 'De el peso de la persona'. Hasta Que numeroPersonas = 80 //Calculo el promedio de cada categoria Si numeroNiños > 0 Entonces pesoPromedioNiños <.pesoAdolescentes / numeroAdolescentes. pesoAdultos<-0.pesoJovenes / numeroJovenes. pesoViejos<-0. pesoPromedioAdultos <-0. //sumo al contador de peso de los Viejos el Viejos encontrado FinSi numeroPersonas<-numeroPersonas + 1. numeroPersonas<-0. //añado 1 niño a esta categoria pesoNiños<-pesoNiños + peso.pesoNiños / numeroNiños. en columna '.'es :' M[I.J.J].I. En la matriz R se guarda el resultado: se multiplica toda una fila de la M con una columna de la N Proceso Matriz //Primero se crea la matriz de 2 x 2 y se define su tipo.J].'. Escribir 'Peso Promedio niños: ' pesoPromedioAdultos. Leer N[I. Dimension N[2. asi como los dos indices para la fila y columna Dimension M[2.I.pesoViejos / numeroViejos.'. Dimension R[2.2].J. FinSi Si numeroViejos > 0 Entonces pesoPromedioViejos <.I. en columna '.J].'es :' N[I. Página 15 de 51 . Escribir 'Peso Promedio niños: ' pesoPromedioJovenes. FinSi Escribir 'Peso Promedio niños: ' pesoPromedioNiños.J como Entero.'.J]. // Leer valores.J. aqui se cargan los valores en cada celda Para J<-1 Hasta 2 Hacer Para I<-1 Hasta 2 Hacer Escribir 'Ingrese valor para indice '.M. Leer M[I. Escribir 'Peso Promedio niños: ' pesoPromedioViejos.'. se piden dos matrices M y N. FinPara FinPara // Mostrar valores de cada celda Para I<-1 Hasta 2 Hacer Para J<-1 Hasta 2 Hacer Escribir 'El valor para indice '. Definir N.pesoAdultos / numeroAdultos. en columna '.2].FinSi Si numeroAdultos > 0 Entonces pesoPromedioAdultos <. FinPara FinPara // Leer valores. aqui se cargan los valores en cada celda Para J<-1 Hasta 2 Hacer Para I<-1 Hasta 2 Hacer Escribir 'Ingrese valor para indice '. en columna '. FinProceso Debido a la tabla de categorias hay que pedir por cada persona el peso y la edad luego hay que usar condiciones para saber a que categoria de edad pertenece esta persona y luego usar contadores para actualizar la cantidad de niños.J.I. FinPara FinPara // Mostrar valores de cada celda Para I<-1 Hasta 2 Hacer Para J<-1 Hasta 2 Hacer Escribir 'El valor para indice '. Escribir 'Peso Promedio niños: ' pesoPromedioAdolescentes.2].I. jovenes etc y tambien sumar el peso en otro contador para luego dividir cada peso de cada categoria por la cantidad de personas encontradas de esa categoria y encontrar el promedio dividiendo Hola fijate el script. I. FinPara FinPara FinProceso Página 16 de 51 .J] * N[I.J.FinPara FinPara // Se hace el producto y se muestra Para I<-1 Hasta 2 Hacer Para J<-1 Hasta 2 Hacer R[I.J] <.M[I. Escribir 'El producto para indice '.J].J].'es :' R[I.'. en columna '. Página 17 de 51 . Programa.NOTA2 calcular SUMA = NOTA1 + NOTA2 calcular PRODUCTO = NOTA1 * NOTA2 escribir “La suma de las dos notas es:” SUMA escribir “El producto de las dos notas es :”PRODUCTO Finprograma Ejemplo: Realizar el pseudocódigo de un programa que permita saber si un número es mayor.y: real INICIO PARA i=1 HASTA 3 CON INCREMENTO +1 ESCRIBE "Abscisa del punto número ".NOTA2. ALTURA. Programa: ComparaNúmeros Entorno: NUMERO es un número entero Algoritmo: Escribir “Introduzca un número “ leer NUMERO SI NUMERO>0 ENTONCES escribir “El número introducido es positivo” SI NO SI NUMERO<0 ENTONCES escribir “El número introducido es negativo” SI NO escribir “El número es cero” FINSI FINSI Finprograma Supongamos un algoritmo que lea las coordenadas de tres puntos y los mueva tres puntos en la coordenada x y escriba el resultado en algún dispositivo de salida: ALGORITMO lee_tres_vertices ENTRADA: las coordenadas (x. i LEER x Página 18 de 51 ..Ejemplos de Pseudocódigo Ejemplo: Realizar el pseudocódigo de un programa que permita calcular el área de un rectángulo. calculando la suma y el producto de las notas. menor o igual a cero.y) de tres puntos SALIDA: las coordenadas (x. VARIABLES: i:entera x. ALTURA calcular AREA = BASE * ALTURA escribir “El área del rectángulo es “AREA Finprograma Ejemplo: Realizar el pseudocódigo que permita al usuario introducir por teclado dos notas. AREA son número enteros Algoritmo: escribir “Introduzca la base y la altura” leer BASE.SUMA. Programa: SumaProducto Entorno: NOTA1. área Entorno: BASE.y) de los tres puntos movidos 3 puntos hacia la derecha. Se debe introducir la base y la altura para poder realizar el cálculo .PRODUCTO son números enteros Algoritmo: escribir “Introduzca las notas” leer NOTA1. writeln (' El punto es ('.i). programa suma_divisibles variables natural : divisor. Como podemos apreciar en un programa en Pascal es importantísimo no olvidar detalles de sintaxis. begin for i:=1 to 3 do begin write ('Abscisa del punto número '. suma fin programa Página 19 de 51 .')'). De cualquier forma es inmediato apreciar los simples cambios existentes. write ('Ordenada del punto número '.y:real. end. readln(x). suma.i).'.ESCRIBE "Ordenada del punto número "."y")" FIN_PARA FIN El programa equivalente a este algoritmo se muestra a continuación.x+3. contador. Por ejemplo cada sentencia termina en punto y coma. readln(y). número inicio programa divisor leer „Introduce el divisor: ‟ suma 0 contador 0 para número desde 1 hasta 1000 hacer si divisor divide a número entonces suma suma + número contador contador + 1 fin si si contador = 10 entonces interrumpir fin si fin para escribir „La suma es‟. i LEER Y ESCRIBE "El punto es (" x+3". i:integer. var x. end. program lee_tres_vertices.y. Problema: calcular y mostrar la suma de los diez primeros números entre 1 y 1000 que sean divisibles por uno dado.'. para luego de tener bien en claro lo que se debe hacer. etc.Ejercicios en Pseudocódigo Aquí les dejo 52 ejercicios en Pseudo-código.). Al final de cada consigna esta el ejercicio resuelto. Basic. En pocas palabras lo que se hace es marcar la estructura de cómo sería hacer un "Programa" con cualquier lenguaje.0 ALGORITMO: Borrar_pantalla( ) MIENTRAS c < 101 HACER ESCRIBIR c c <. VisaualBasic. pero sin la sintaxis ni la estructura propia de ningún lenguaje (C#. bloc de notas. etc. Página 20 de 51 . estos ejercicios son muy buenos para desarrollar la lógica y están enfocados para los estudiantes en Ingeniería de Sistemas y a fines. PROGRAMA contador1 ENTORNO: c <. trata de resolverlo sin mirar el resultado. ya que es solo para comprender la estructura o lógica de cómo se programaría en un lenguaje real. No importa donde lo hagas en tu mano.-Hacer un pseudocodigo que imprima los numeros del 100 al 0. en orden decreciente. crearemos un borrador entendible para todos los lenguajes.-Hacer un pseudocodigo que imprima los numeros del 1 al 100.c + 1 FINMIENTRAS FINPROGRAMA 2.). para pasar a la programación propiamente dicha. Los ejercicios están divididos en 9 temas: -Bucles y tomas de decision -Bucles anidados y subprogramas -Presentación en pantalla y cabeceras -Números aleatorios y menus -Arrays unidimensionales -Arrays bidimensionales -Arrays multidimensionales -Ficheros -Informes y rupturas de control -Organización aleatoria y secuencial Bucles y tomas de decisión 1. etc. para reforzar los conocimientos dados en el la saga de posts Cómo aprender a programar y no morir en el intento. papel higiénico. En vez de escribir el programa directamente en un lenguaje de programación determinado (C. Que es el Pseudocódigo El Pseudo-Código sirve para orientar a los programadores. la unidad hasta un numero que introducimos por teclado.son + 1 FINMIENTRAS ESCRIBIR "El n£mero de impares: " ESCRIBIR son FINPROGRAMA 6.1 suma <.PROGRAMA contador2 ENTORNO: c <.c + 1 FINMIENTRAS ESCRIBIR "La suma de los 100 primeros n£meros es: " ESCRIBIR suma FINPROGRAMA 5.c + 2 FINMIENTRAS FINPROGRAMA 4.2 ALGORITMO: Borrar_pantalla( ) MIENTRAS c < 101 HACER ESCRIBIR c c <.1 FINMIENTRAS FINPROGRAMA 3.0 ALGORITMO: Borrar_pantalla( ) MIENTRAS c <= 100 HACER suma <.100 ALGORITMO: Borrar_pantalla( ) MIENTRAS c <= 0 HACER ESCRIBIR c c <.-Hacer un pseudocodigo que imprima los numeros pares entre 0 y 100. PROGRAMA suma ENTORNO: c <.-Hacer un pseudocodigo que imprima todos los numeros naturales que hay desde. PROGRAMA pares ENTORNO: c <.-Hacer un programa que imprima la suma de los 100 primeros numeros. PROGRAMA impares ENTORNO: c <.suma + c c <. PROGRAMA natural Página 21 de 51 .c + 2 son <.0 ALGORITMO: Borrar_pantalla( ) MIENTRAS c < 100 ESCRIBIR c c <.-Hacer un pseudocódigo que imprima los numeros impares hasta el 100 y que imprima cuantos impares hay.1 son <.c . Que nos diga si es positivo o negativo." " ALGORITMO: Borrar_pantalla( ) MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Introduce S o N" LEER res res <.Convertir_may£sculas( res ) FINMIENTRAS FINPROGRAMA 9. PROGRAMA signo ENTORNO: num <.0 ALGORITMO: Borrar_pantalla( ) MIENTRAS res = "S" HACER ESCRIBIR "Frase: " LEER frase c <.i + 1 ESCRIBIR i FINMIENTRAS FINPROGRAMA 7.Espacios( 30 ) c <. PROGRAMA frases ENTORNO: res <.-Introducir tantas frases como queramos y contarlas.0 ALGORITMO: Borrar_pantalla( ) ESCRIBIR "Introduce un n£mero: " LEER n MIENTRAS i < n HACER i <.ENTORNO: i <."S" frase <.0 n <.-Hacer un pseudocodigo que solo nos permita introducir S o N. PROGRAMA sn ENTORNO: res <.0 ALGORITMO: Borrar_pantalla( ) ESCRIBIR "Introduce un n£mero: " LEER num SI num >= 0 ENTONCES ESCRIBIR "es positivo" SINO ESCRIBIR "es negativo" FINSI FINPROGRAMA Página 22 de 51 .c + 1 ESCRIBIR "Deseas introducir m s frases (S/N): " LEER res FINMIENTRAS ESCRIBIR "El n£mero de frases introducidas son: " ESCRIBIR c FINPROGRAMA 8.-Introducir un numero por teclado. -Hacer un pseudocodigo que imprima los numeros del 1 al 100.10.-Imprimir y contar los multiplos de 3 desde la unidad hasta un numero que introducimos por teclado.0 ALGORITMO: Borrar_pantalla( ) ESCRIBIR "Introduce un n£mero: " LEER num SI num = int( num / 2 ) * 2 ENTONCES ESCRIBIR "es par" SINO ESCRIBIR "es impar" FINSI FINPROGRAMA 11.c + 1 FINSI i <.3 n <.sumapar SINO sumaimp <. Que nos diga si es par o impar.0 sumaimp <. Que calcule la suma de todos los numeros pares por un lado. PROGRAMA par_impar ENTORNO: i <.1 sumapar <.-Introducir un numero por teclado. PROGRAMA multiplo3 ENTORNO: i <.0 c <.0 ALGORITMO: Borrar_pantalla( ) ESCRIBIR "N£mero: " LEER n MIENTRAS i <= n HACER SI i = int( i / 3 ) * 3 ENTONCES ESCRIBIR i c <. la de todos los impares. y por otro.i + 1 FINMIENTRAS ESCRIBIR "El n£mero de m£ltiplos de 3 son: " ESCRIBIR c FINPROGRAMA 12.0 ALGORITMO: Borrar_pantalla( ) MIENTRAS i < 101 HACER SI i = int( i / 2 ) * sumapar <. PROGRAMA paridad ENTORNO: num <.sumaimp FINSI i <.i + 1 FINMIENTRAS ESCRIBIR "La suma de los ESCRIBIR sumapar ESCRIBIR "La suma de los ESCRIBIR sumaimp FINPROGRAMA 2 ENTONCES + i + i pares es: " impares es: " Página 23 de 51 . PROGRAMA mayor_menor ENTORNO: con <.0 ALGORITMO: Borrar_pantalla( ) MIENTRAS i < 101 HACER SI i = int( i / 2 ) * 2 O i = int( i / 3 ) * 3 ENTONCES c <.0 aux <. PROGRAMA multiplo_2_3 ENTORNO: i <.0 maximo <.0 pares <.-Introducir dos numeros por teclado.i + 1 FINMIENTRAS ESCRIBIR "El n£mero de m£ltiplos es de: " ESCRIBIR c FINPROGRAMA 14.0 ALGORITMO: Borrar_pantalla( ) ESCRIBIR "N£mero: " LEER num1 ESCRIBIR "N£mero: " Página 24 de 51 . PROGRAMA par_impar ENTORNO: num1 <.0 n <.0 sumaimpa <.con + 1 FINMIENTRAS ESCRIBIR "El mayor de los n£meros es: " ESCRIBIR maximo ESCRIBIR "El menor de los n£meros es: " ESCRIBIR minimo FINPROGRAMA 15. contar cuantos hay y cuantos de ellos son pares.0 son <.99999 ALGORITMO: Borrar_pantalla( ) MIENTRAS con <= 5 HACER ESCRIBIR "N£mero: " LEER n SI n > maximo ENTONCES maximo = n FINSI SI n < minimo ENTONCES minimo <.0 minimo <.c + 1 ESCRIBIR i FINSI i <.n FINSI con <.-Hacer un pseudocodigo que imprima el mayor y el menor de una serie de cinco numeros que vamos introduciendo por teclado.13.0 num2 <.1 c <. Imprimir los numeros naturales que hay entre ambos numeros empezando por el m s pequeño.-Imprimir y contar los numeros que son multiplos de 2 o de 3 que hay entre 1 y 100. Calcular la suma de los impares. "S" ALGORITMO: Borrar_pantalla( ) MIENTRAS res = "S" HACER c <.num1 num1 <.aux FINSI MIENTRAS num1 >= num2 HACER ESCRIBIR num1 son <.0 sum <.serie + 1 FINMIENTRAS FINPROGRAMA 17.-Imprimir diez veces la serie de numeros del 1 al 10.num2 num2 <.numero + 1 FINMIENTRAS serie <. PROGRAMA multiplo2 ENTORNO: res <.LEER num2 SI num1 > num2 ENTONCES aux <.num1 + 1 FINMIENTRAS ESCRIBIR "N£meros visualizados: " ESCRIBIR son ESCRIBIR "Pares hay: " ESCRIBIR pares ESCRIBIR "La suma de los impares es: " ESCRIBIR sumaimpa FINPROGRAMA Bucles anidados y subprogramas 16.num1 + 1 Página 25 de 51 .0 ALGORITMO: Borrar_pantalla( ) MIENTRAS serie <= 10 HACER numero <.1 MIENTRAS numero <= 10 HACER ESCRIBIR numero numero <.-999 ESCRIBIR "N£mero: " LEER num1 ESCRIBIR "N£mero mayor que el anterior" MIENTRAS num1 >= num2 HACER LEER num2 FINMIENTRAS num1 <.sumaimpa + num1 FINSI num1 <. contar y sumar los multiplos de 2 que hay entre una serie de numeros.son + 1 SI num1 = int( num1 / 2 ) * 2 ENTONCES pares <.-Imprimir. tal que el segundo sea mayor o igual que el primero.0 num2 <.0 num1 <.pares + 1 SINO sumaimpa <. PROGRAMA diez ENTORNO: serie <. sum + num1 FINSI num1 <.Espacios( 30 ) letra <.0 a <.Hallar_longitud( frase ) i <.i + 1 FINMIENTRAS Borrar_pantalla( ) ESCRIBIR "El n£mero de veces que aparece la letra " ESCRIBIR letra ESCRIBIR " en la frase " ESCRIBIR frase ESCRIBIR " es de " ESCRIBIR a res <.s frases (S/N): " LEER res res <.MIENTRAS num1 <= num2 .1 HACER SI num1 = int( num1 / 2 ) * 2 ENTONCES ESCRIBIR num1 c <.Espacios( 1 ) MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Desea introducir má.a + 1 FINSI i <.num1 + 1 FINMIENTRAS ESCRIBIR "N£mero de m£ltiplos de 2: " ESCRIBIR c ESCRIBIR "Su suma es: " ESCRIBIR sum res <. PROGRAMA letra ENTORNO: frase <. Página 26 de 51 .c + 1 sum <. 1 ) ENTONCES a <.0 res <.-Hacer un pseudocodigo que cuente las veces que aparece una determinada letra en una frase que introduciremos por teclado.Convertir_may£sculas( res ) FINMIENTRAS FINMIENTRAS FINPROGRAMA 19.-Hacer un pseudocodigo que simule el funcionamiento de un reloj digital y que permita ponerlo en hora."S" ALGORITMO: MIENTRAS res = "S" HACER Borrar_pantalla( ) ESCRIBIR "Introduce una frase: " LEER frase longitud <.Espacios( 1 ) longitud <.1 ESCRIBIR "Letra a buscar: " LEER letra MIENTRAS i <= longitud HACER SI letra = Caracter( frase.Espacios( 1 ) MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Otra serie de n£meros (S/N): " LEER res res <.Convertir_may£sculas( res ) FINMIENTRAS FINMIENTRAS FINPROGRAMA 18. i. 1 FINMIENTRAS HACER Imprimir FINSUBPROGRAMA -----------------------------SUBPROGRAMA Mas Página 27 de 51 .-Calcular el factorial de un numero. mediante subprogramas.0 minutos <.minutos + 1 segundos <. PROGRAMA factorial ENTORNO: res <.1 ESCRIBIR "N£mero: " LEER numero SI numero < 0 ENTONCES ESCRIBIR "No tiene factorial" SINO HACER Calculos FINSI HACER Mas FINMIENTRAS FINPROGRAMA -----------------------------SUBPROGRAMA Calculos MIENTRAS numero > 1 HACER factorial <.0 FINMIENTRAS horas <.0 FINMIENTRAS horas <.factorial * numero numero <.0 res <.segundos + 1 FINMIENTRAS minutos <.horas + 1 minutos <.0 FINMIENTRAS FINPROGRAMA 20."S" ALGORITMO: MIENTRAS res = "S" HACER Borrar_pantalla( ) factorial <.PROGRAMA reloj ENTORNO: horas <."S" ALGORITMO: Borrar_pantalla( ) ESCRIBIR "Horas: " LEER horas ESCRIBIR "Minutos: " LEER minutos ESCRIBIR "Segundos: " LEER segundos MIENTRAS res = "S" HACER MIENTRAS horas < 24 HACER MIENTRAS minutos < 60 HACER MIENTRAS segundos < 60 HACER ESCRIBIR horas ESCRIBIR minutos ESCRIBIR segundos segundos <.0 segundos <.numero . 15 veces <.Convertir_may£sculas( res ) FINMIENTRAS FINSUBPROGRAMA -----------------------------SUBPROGRAMA Imprimir ESCRIBIR "Su factorial es: " ESCRIBIR factorial FINSUBPROGRAMA 21.0 sw <.fi + 1 FINMIENTRAS FINPROGRAMA Página 28 de 51 . utilizando un switch.15 ESCRIBIR "Frase: " EN 5.impar + i sw <.par + i sw <. PROGRAMA frase ENTORNO: frase <.22 LEER frase fi <.0 i <.0 FINSI i <.Espacios( 30 ) ALGORITMO: Borrar_pantalla( ) EN 5." " MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Desea calcular má.s factoriales (S/N): " LEER res res <.-Introducir una frase por teclado.8 co <. Imprimirla cinco veces en filas consecutivas.i + 1 FINMIENTRAS ESCRIBIR "La suma de los pares es: " ESCRIBIR par ESCRIBIR "La suma de los impares es: " ESCRIBIR impar FINPROGRAMA Presentacion en pantalla y cabeceras 22.-Hacer un programa que calcule independientemente la suma de los pares y los impares de los numeros entre 1 y 1000.1 SINO par <.0 impar <.0 MIENTRAS veces <= 5 HACER EN fi.res <. PROGRAMA suma ENTORNO: par <. pero cada impresion ir desplazada cuatro columnas hacia la derecha.co ESCRIBIR frase veces <.co + 4 fi <.1 ALGORITMO: Borrar_pantalla( ) MIENTRAS i <= 1000 HACER SI sw = 0 ENTONCES impar <.veces + 1 co <. 5 MIENTRAS c < 101 HACER EN fi.10 ESCRIBIR "no es primo" SINO EN 10.0 sw <.7 col <.23.col + 4 SI col > 75 ENTONCES fi <.0 MIENTRAS numero < 1 HACER EN 8.20 ESCRIBIR "Los n£meros del 0 al 100 son: " fi <. Página 29 de 51 .numero ." " MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Desea introducir m s n£meros (S/N): " LEER res res <.c + 1 col <.fi + 2 col <.-Comprobar si un numero mayor o igual que la unidad es primo.-Introducir un numero menor de 5000 y pasarlo a numero romano.18 LEER numero FINMIENTRAS i <.col ESCRIBIR c c <.i .0 ALGORITMO: Borrar_pantalla( ) EN 5.10 ESCRIBIR "N£mero: " EN 8. controlando las filas y las columnas.1 FINSI FINMIENTRAS SI sw = 1 ENTONCES EN 10.10 ESCRIBIR "s¡ es primo" FINSI HACER Mas FINMIENTRAS FINPROGRAMA -----------------------------SUBPROGRAMA Mas res <.-Hacer un pseudocodigo que imprima los n£meros del 0 al 100. PROGRAMA numeros ENTORNO: c <.1 MIENTRAS i > 1 Y sw <> 1 HACER SI numero = Int( numero / i ) * i ENTONCES sw = 1 SINO i <. PROGRAMA primo ENTORNO: res <.Convertir_mayusculas( res ) FINMIENTRAS FINSUBPROGRAMA 25.5 FINSI FINMIENTRAS FINPROGRAMA 24."S" ALGORITMO: MIENTRAS res = "S" HACER Borrar_pantalla( ) numero <. col ESCRIBIR "X" num <.1000 col <.40 col <.col ESCRIBIR "XC" num <.900 col <.num .col + 2 FINSI MIENTRAS num >= 10 HACER EN 15.col ESCRIBIR "M" num <.num .9 col <.num .col ESCRIBIR "L" num <.col + 1 FINMIENTRAS SI num >= 90 ENTONCES EN 15.col ESCRIBIR "C" num <.col + 2 FINSI SI num >= 500 ENTONCES EN 15.0 MIENTRAS num < 1 O num > 5000 HACER EN 8.col + 1 FINMIENTRAS SI num = 9 ENTONCES EN 15.PROGRAMA romano ENTORNO: res <.50 col <.100 col <.num .10 ESCRIBIR "N£mero: " EN 8.10 col <.col + 1 FINSI SI num >= 40 ENTONCES EN 15.18 ESCRIBIR num FINMIENTRAS col <.col ESCRIBIR "V" num <.num .col + 1 FINMIENTRAS SI num >= 900 ENTONCES EN 15.col + 2 FINSI SI num >= 50 ENTONCES EN 15.num .col + 1 FINSI SI num >= 4 ENTONCES Página 30 de 51 ."S" ALGORITMO: MIENTRAS res = "S" HACER Borrar_pantalla( ) num <.num .col + 1 FINSI MIENTRAS num >= 100 HACER EN 15.5 col <.15 MIENTRAS num >= 1000 HACER EN 15.500 col <.90 col <.col ESCRIBIR "XL" num <.num .num .num .col ESCRIBIR "CM" num <.col + 2 FINSI SI num >= 5 ENTONCES EN 15.col ESCRIBIR "IX" num <.col ESCRIBIR "D" num <. Convertir_mayusculas( res ) FINMIENTRAS FINSUBPROGRAMA 26."S" frase <.col + 1 FINMIENTRAS HACER Mas FINMIENTRAS FINPROGRAMA -----------------------------SUBPROGRAMA Mas res <.col + 2 FINSI MIENTRAS num > 0 HACER EN 15.i + 1 FINMIENTRAS FINPROGRAMA -----------------------------SUBPROGRAMA Numero MIENTRAS num < 0 HACER Página 31 de 51 .0 fi <.col ESCRIBIR "IV" num <.num .25 ESCRIBIR " = " EN fi.10 ESCRIBIR "Tabla de multiplicar del n£mero: " EN 5.Int( Longitud( frase ) / 2 ) ESCRIBIR frase HACER Mas FINMIENTRAS FINPROGRAMA 27.22 LEER frase EN 12.29 ESCRIBIR num * i fi <.15 ESCRIBIR num EN fi.4 col <.40 .1 col <.-1 ALGORITMO: HACER Numero Borrar_pantalla( ) EN 5.19 ESCRIBIR " * " EN fi.Espacios( 40 ) ALGORITMO: MIENTRAS res = "S" HACER Borrar_pantalla( ) EN 5.8 MIENTRAS i <= 10 HACER EN fi.num .EN 15." " MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Desea introducir m s n£meros (S/N): " LEER res res <. Imprimirla en el centro de la pantalla.-Realizar la tabla de multiplicar de un numero entre 0 y 10.23 ESCRIBIR i EN fi. PROGRAMA tabla ENTORNO: num <.15 ESCRIBIR "Frase: " EN 5.fi + 1 i <.40 LEER num i <.col ESCRIBIR "I" num <.-Introducir una frase por teclado. PROGRAMA centro ENTORNO: res <. PROGRAMA moneda ENTORNO: res <. PROGRAMA caballos ENTORNO: dibujo <.Convertir_mayusculas( res ) FINMIENTRAS FINSUBPROGRAMA 29.4 ALGORITMO: Borrar_pantalla( ) EN 10.57 LEER res res <.c + 1 FINSI i <.-Simular una carrera de dos caballos si cada uno tiene igual probabilidad de ganar.35 ESCRIBIR "Cara" SINO EN 10.0 ALGORITMO: Borrar_pantalla( ) MIENTRAS i < 101 HACER SI Int( Rnd( ) * 6 ) + Int( Rnd( ) * 6 ) + 2 = 10 ENTONCES c <.30 ESCRIBIR "M s lanzamientos (S/N): " EN 20.Espacios( 1 ) MIENTRAS res <> "S" Y res <> "N" HACER EN 20.i + 1 FINMIENTRAS EN 10.33 LEER num FINMIENTRAS FINSUBPROGRAMA Numeros aleatorios y menus 28.-Simular cien tiradas de dos dados y contar las veces que entre los dos suman 10.0 i <."****" col1 <.35 ESCRIBIR "Cruz" FINSI HACER Mas FINMIENTRAS FINPROGRAMA -----------------------------SUBPROGRAMA Mas res <.-Simular el lanzamiento de una moneda al aire e imprimir si ha salido cara o cruz.25 ESCRIBIR "N£mero: " EN 10.48 ESCRIBIR c FINPROGRAMA 30.5 ENTONCES EN 10.Borrar_pantalla( ) EN 10.col1 ESCRIBIR dibujo Página 32 de 51 .4 col2 <. PROGRAMA dado ENTORNO: c <."S" ALGORITMO: MIENTRAS res = "S" HACER Borrar_pantalla( ) SI Rnd( ) <= 0.20 ESCRIBIR "Las veces que suman 10 son: " EN 10. 29 LEER n2 MIENTRAS op <> 5 HACER op <.col1 ESCRIBIR Espacios( 4 ) col1 <.col2 ESCRIBIR dibujo FINSI FINMIENTRAS EN 16. su resta. su multiplicacion o su division.20 ESCRIBIR "Men£ de opciones" EN 10.0 ALGORITMO: EN 10.col2 + 4 EN 12.20 ESCRIBIR "N£mero: " EN 10.20 ESCRIBIR "Su suma es: " EN 10.29 LEER n1 EN 12.25 ESCRIBIR "1..EN 10..25 ESCRIBIR "Elija opci¢n: " EN 22.Divisi¢n" EN 18.33 ESCRIBIR n1 / n2 Pausa( ) FINCASO FINMIENTRAS FINPROGRAMA Página 33 de 51 . PROGRAMA menu1 ENTORNO: op <.Multiplicaci¢n" EN 16.33 ESCRIBIR n1 * n2 Pausa( ) CASO op = 4 EN 10.20 ESCRIBIR "Su multiplicaci¢n es: " EN 10.Salir del programa" EN 22.39 LEER op Borrar_pantalla( ) HACER CASO CASO op = 1 EN 10..0 Borrar_pantalla( ) EN 6..col1 ESCRIBIR dibujo SINO EN 12.Resta" EN 14.-Introducir dos nymeros por teclado y mediante un menu.Suma" EN 12.20 ESCRIBIR "El ganador es el caballo n£mero: " SI col1 >= 75 ENTONCES EN 16.col2 ESCRIBIR Espacios( 4 ) col2 <. calcule su suma.col2 ESCRIBIR dibujo MIENTRAS col1 <= 75 Y col2 <= 75 HACER SI Rnd( ) <= 0.25 ESCRIBIR "3..20 ESCRIBIR "N£mero: " EN 12.54 ESCRIBIR "2" FINSI FINPROGRAMA 31.n2 Pausa( ) CASO op = 3 EN 10.col1 + 4 EN 10.33 ESCRIBIR n1 .20 ESCRIBIR "Su resta es: " EN 10.5 ENTONCES EN 10.33 ESCRIBIR n1 + n2 Pausa( ) CASO op = 2 EN 10.20 ESCRIBIR "Su divisi¢n es: " EN 10.25 ESCRIBIR "4.25 ESCRIBIR "5.54 ESCRIBIR "1" SINO EN 16.25 ESCRIBIR "2. 25 ESCRIBIR "2. PROGRAMA menu2 ENTORNO: op <.1 FINSI FINMIENTRAS Borrar_pantalla( ) SI sw = 1 ENTONCES EN 10..39 LEER op HACER CASO CASO op = 1 HACER Primo CASO op = 2 HACER Factorial CASO op = 3 HACER Tabla FINCASO FINMIENTRAS FINPROGRAMA -----------------------------SUBPROGRAMA Primo sw <..i .25 ESCRIBIR "4.1 FINMIENTRAS EN 10.25 ESCRIBIR "3.30 ESCRIBIR "Men£ de opciones" EN 10.10 ESCRIBIR "Su factorial es: " EN 10.-Hacer un programa que nos permita introducir un numero por teclado y sobre el se realicen las siguientes operaciones: comprobar si es primo.0 ALGORITMO: EN 10..29 LEER n MIENTRAS op <> 4 HACER op <.20 ESCRIBIR "N£mero: " EN 10.27 ESCRIBIR fac FINSI Página 34 de 51 .Hallar su factorial" EN 14.10 ESCRIBIR "s¡ es primo" FINSI Pausa( ) FINSUBPROGRAMA -----------------------------SUBPROGRAMA Factorial fac <.Comprobar si es primo" EN 12.25 ESCRIBIR "Elija opci¢n: " EN 22.10 ESCRIBIR "no es primo" SINO EN 10.0 i <. hallar su factorial o imprimir su tabla de multiplicar.0 Borrar_pantalla( ) EN 6.25 ESCRIBIR "1.Salir del programa" EN 22.1 Borrar_pantalla( ) SI n < 0 ENTONCES EN 10..32.1 SINO i <.1 MIENTRAS i > 1 Y sw <> 1 HACER SI n = Int( n / i ) * i ENTONCES sw <.Tabla de multiplicar" EN 16.n .fac * n n <.10 ESCRIBIR "No tiene factorial" SINO MIENTRAS n > 1 HACER fac <.n . 20 ESCRIBIR EN fi.0 media <. PROGRAMA notamedia ENTORNO: DIMENSIONA notas[ 10 suma <.-Crear un array unidimensional de 20 elementos con nombres de personas.30 ESCRIBIR n * i i <.1 ALGORITMO: Borrar_pantalla( ) fi <.3 EN 1.i + 1 FINMIENTRAS FINPROGRAMA 34. PROGRAMA nombres ENTORNO: DIMENSIONA datos[ 20 ] i <. Visualizar los elementos de la lista debiendo ir cada uno en una fila distinta.fi + 1 i <.i + 1 FINMIENTRAS Pausa( ) FINSUBPROGRAMA Arrays unidimensionales 33.i + 1 FINMIENTRAS Borrar_pantalla( ) i <.10 ESCRIBIR "Tabla de multiplicar" EN fi.10 Borrar_pantalla( ) MIENTRAS i <= 10 HACER EN 8.0 ALGORITMO: Borrar_pantalla( ) fi <.20 ESCRIBIR i EN fi.7 PARA i DESDE 1 HASTA EN fi. 18 LEER datos[ i ] i <.21 ESCRIBIR ] 10 HACER "Nota " i ": " Página 35 de 51 .1 fi <.20 ESCRIBIR "Elementos de la lista" MIENTRAS i < 21 HACER EN fi.Pausa( ) FINSUBPROGRAMA -----------------------------SUBPROGRAMA Tabla i <.10 MIENTRAS i < 21 HACER EN fi.28 ESCRIBIR datos[ i ] fi <.15 ESCRIBIR "*" EN fi.0 fi <.10 ESCRIBIR "Nombre: " EN fi.15 ESCRIBIR EN fi.10 ESCRIBIR n EN fi.-Hacer un programa que lea las calificaciones de un alumno en 10 asignaturas. las almacene en un vector y calcule e imprima su media.25 ESCRIBIR "=" EN fi. suma + notas[ i ] FINPARA media <.0 num <.1 MIENTRAS j <= 5 HACER A[ i.co ESCRIBIR A[ i.15 fi <.Int( Rnd( ) * 100 ) + 1 EN fi.i + 1 SI notas[ i ] = num O i = 10 ENTONCES SALIR FINSI FINITERAR SI notas[ i ] = num ENTONCES ESCRIBIR "Encontrado en posició.-Usando el segundo ejemplo.0 ALGORITMO: Borrar_pantalla( ) ESCRIBIR "Nota a buscar: " LEER num ITERAR i <.i + 1 FINMIENTRAS FINPROGRAMA Página 36 de 51 .1 fi <.suma / 10 EN 20.20 ESCRIBIR "Nota media: " EN 20. PROGRAMA buscar ENTORNO: i <.co + 5 j <.32 ESCRIBIR media FINPROGRAMA 35.25 ESCRIBIR "Elementos de la matriz" MIENTRAS i <= 4 HACER j <.j + 1 FINMIENTRAS co <. 5 ] i <.fi + 2 i <.EN fi. j ] co <.fi + 1 FINPARA PARA i DESDE 1 HASTA 10 HACER suma <. e imprimirla. PROGRAMA matriz ENTORNO: DIMENSIONAR A[ 4. hacer un programa que busque una nota en el vector.15 ALGORITMO: Borrar_pantalla( ) EN 6.n: " ESCRIBIR i SINO ESCRIBIR "No existe esa nota" FINSI FINPROGRAMA Arrays bidimensionales 36. j ] <.10 co <.23 LEER notas[ i ] fi <.-Generar una matriz de 4 filas y 5 columnas con numeros aleatorios entre 1 y 100. y hacer su matriz transpuesta.15 ESCRIBIR "Matriz uno" EN 6.40 i <.37. PROGRAMA notas ENTORNO: i <. i ] <.i + 1 FINMIENTRAS FINPROGRAMA 38.8 co <.20 ESCRIBIR "N£mero de alumnos: " EN 12. i ] co <. PROGRAMA transpuesta ENTORNO: DIMENSIONAR A[ 4.j + 1 FINMIENTRAS i <.25 ESCRIBIR "Nota: " EN 16.co ESCRIBIR A[ i.25 ESCRIBIR "Curso: " EN 10.cot + 4 i <.25 ESCRIBIR "Introducci¢n de las notas" MIENTRAS i <= M HACER EN 10.j + 1 FINMIENTRAS fi <.Int( Rnd( ) * 100 ) + 1 B[ j.40 LEER N DIMENSIONAR A[ M. N ] Borrar_pantalla( ) EN 2.1 ALGORITMO: Borrar_pantalla( ) EN 6. j ] EN fi. j ] EN fit. 5 ] DIMENSIONAR B[ 5.A[ i.33 ESCRIBIR j EN 16.i + 1 FINMIENTRAS FINPROGRAMA Página 37 de 51 .fit + 2 j <.-Cargar en una matriz las notas de los alumnos de un colegio en funcion del numero de cursos (filas) y del n£mero de alumnos por curso (columnas).10 fit <.20 ESCRIBIR "N£mero de cursos: " EN 10.45 ESCRIBIR "Transpuesta" MIENTRAS i <= 4 HACER j <. j ] j <.39 LEER M EN 12.10 fit <.8 cot <.-Generar una matriz de 4 filas y 5 columnas con n£meros aleatorios entre 1y 100.fi + 2 co <.1 j <.co + 4 fit <.32 LEER A[ i. 4 ] fi <. j ] <.1 ALGORITMO: Borrar_pantalla( ) EN 10.8 cot <.32 ESCRIBIR i MIENTRAS j <= N HACER EN 14.25 ESCRIBIR "Alumno: " EN 14.cot ESCRIBIR B[ j.1 MIENTRAS j <= 5 HACER A[ i. co + 5 j <.1 MIENTRAS sw <> 0 HACER sw <.-Ordenar una matriz de M filas y N columnas por la primera columna utilizando el m‚todo SHELL (por insercion). el tercero 3 y as¡ sucesivamente.27 LEER M EN 12.1 j <. j ] A[ i + salto.i + 1 FINMIENTRAS FINMIENTRAS salto <.1 MIENTRAS i <= M .Int( M / 2 ) MIENTRAS salto >= 1 HACER sw <.0 ALGORITMO: Borrar_pantalla( ) EN 10.0 N <. 1 ] ENTONCES HACER Cambios FINSI i <.co ESCRIBIR A[ i.39. j ] <.fi + 2 i <.salto HACER SI A[ i. PROGRAMA ordenar ENTORNO: i <.i + 1 FINMIENTRAS salto <. e imprimirla.j + 1 FINMIENTRAS sw <.A[ i + salto.20 ESCRIBIR "Filas: " EN 10.j + 1 FINMIENTRAS co <. N ] Borrar_pantalla( ) MIENTRAS i <= M HACER MIENTRAS j <= N HACER A[ i.0 i <. 4 filas y 5 columnas donde el primer elemento valga 1. el segundo 2.20 ESCRIBIR "Columnas: " EN 12.15 M <.-Crear una tabla de 3 paginas.10 co <. j ] A[ i.1 FINSUBPROGRAMA Arrays multidimensionales 40.1 MIENTRAS j <= N HACER aux <. j ] <. j ] co <. j ] = Int( Rnd( ) * 100 ) + 1 EN fi.30 LEER N DIMENSIONAR A[ M. 1 ] > A[ i + salto.aux j <.15 fi <.A[ i.Int( salto / 2 ) FINMIENTRAS FINPROGRAMA -----------------------------SUBPROGRAMA Cambios j <. Página 38 de 51 .1 fi <. 0 fi <.fi + 2 co <.co ESCRIBIR A[ i. j.k + 1 FINMIENTRAS fi <. j.1 k <.20 ESCRIBIR "Pulse INTRO para continuar . k ] k <.PROGRAMA tabla ENTORNO: DIMENSIONAR A[ 3.co + 4 k <. PROGRAMA notas ENTORNO: max <.8 co <." Pausa( ) i <.20 ESCRIBIR i EN fi. Imprimir la nota media por curso y la nota media maxima y su centro de pertenencia. j.co ESCRIBIR "Elementos de la p gina: " EN fi. 4.b EN fi.12 j <.fi + 2 SI sum / 20 > max ENTONCES max <.1 j <. k ] <.18 ESCRIBIR "Centro" EN 8.0 centro <.co + 24 ESCRIBIR i fi <. al curso y al numero de alumnos de un colegio respectivamente.38 ESCRIBIR "Nota media" MIENTRAS i <= 5 HACER MIENTRAS j <= 10 HACER MIENTRAS k <= 20 HACER sum <.40 ESCRIBIR sum / 20 fi <..j + 1 FINMIENTRAS EN fi.k + 1 FINMIENTRAS j <.j + 1 FINMIENTRAS EN fi + 2.0 i <.12 ALGORITMO: MIENTRAS i <= 3 HACER Borrar_pantalla( ) EN fi..sum + A[ i.i + 1 FINMIENTRAS FINPROGRAMA 41.1 j <.1 fi <.fi + 2 MIENTRAS j <= 4 HACER MIENTRAS k <= 5 HACER b <.1 k <.-Se dispone de una tabla de 5 p ginas.sum / 20 Página 39 de 51 . 5 ] i <. que se refieren al centro.10 ALGORITMO: Borrar_pantalla( ) EN 8.-1 sum <. k ] co <. 10 filas y 20 columnas.b + 1 A[ i.1 b <. j.centro <. k ] <.suma k <. TOTAL[ mes.co + 4 k <.j + 1 Página 40 de 51 .1 MIENTRAS j <= 12 HACER k <.1 MIENTRAS i <= 3 HACER Borrar_pantalla( ) fi <. Imprimir ambos arrays. k ] i <.k + 1 FINMIENTRAS j <.41 ESCRIBIR centro FINPROGRAMA 42.8 co <. 20 ESCRIBIR "pertenece al centro: " EN fi + 4. producto ].12 j <.i + 1 FINMIENTRAS TOTAL[ j. Queremos proyectar el array tridimensional sobre uno de dos dimensiones que represente el total de ventas.j + 1 FINMIENTRAS FINSUBPROGRAMA -----------------------------SUBPROGRAMA Imp_Tres i <. para lo cual sumamos las ventas de cada producto de cada mes de todos los representantes. PROGRAMA ventas ENTORNO: ** Las variables est n definidas en cada subprograma ALGORITMO: HACER Volcar HACER Imp_Tres HACER Imp_Dos FINPROGRAMA -----------------------------SUBPROGRAMA Volcar DIMENSIONAR TOTAL[ 12.1 suma <. mes.1 MIENTRAS j <= 12 HACER k <.i + 1 FINMIENTRAS EN fi + 2.co + 26 ESCRIBIR i fi <.20 ESCRIBIR "Nota media m xima: " EN fi + 2.39 ESCRIBIR max EN fi + 4.suma + VENTAS[ i.k + 1 FINMIENTRAS fi <. VENTAS[ representante. producto ].fi + 2 co <.0 MIENTRAS i <= 3 HACER suma <.1 MIENTRAS k <= 4 HACER EN fi.1 MIENTRAS k <= 4 HACER i <.fi + 2 j <. j.co ESCRIBIR VENTAS[ i. k ] co <.12 EN fi.i FINSI i <.-Una empresa guarda en una tabla de 3x12x4 las ventas realizadas por sus tres representantes a lo largo de doce meses de sus cuatro productos. 4 ] j <.co ESCRIBIR "Ventas del representante: " EN fi. 10 ESCRIBIR "D. k ] co <.i + 1 FINMIENTRAS FINSUBPROGRAMA -----------------------------SUBPROGRAMA Imp_Dos Borrar_pantalla( ) j <.I.16 LEER apellidos EN 11.: " EN 5.16 MIENTRAS j <= 12 HACER k <.16 LEER direccion Página 41 de 51 .n: " EN 13.j + 1 FINMIENTRAS FINSUBPROGRAMA Ficheros 43. [code] PROGRAMA altas ENTORNO: res <.18 LEER num MIENTRAS NO Eof( ) Y sw = 0 HACER SI dni = num ENTONCES EN 10.N.16 LEER nombre EN 9.1 SINO Siguiente_registro( ) FINSI FINMIENTRAS SI sw = 0 ENTONCES EN 7. NOMBRE. DIRECCION y PROVINCIA.5 ESCRIBIR "Direcció.fi + 2 co <. cuyos campos son: DNI.-Hacer un programa que nos permita dar altas en el fichero secuencial DATOS.DAT.FINMIENTRAS Pausa( ) i <.5 ESCRIBIR "Provincia: " EN 7."S" ALGORITMO: MIENTRAS res = "S" HACER ABRIR "DATOS.10 co <.0 Borrar_pantalla( ) EN 5.co ESCRIBIR TOTAL[ j.10 ESCRIBIR "Alta duplicada" EN 15. APELLIDOS.20 ESCRIBIR "Ventas totales" fi <.12 j <.1 MIENTRAS k <= 4 HACER EN fi.0 num <.10 ESCRIBIR "Pulse INTRO para continuar" Pausa( ) sw <.1 EN 8.k + 1 FINMIENTRAS fi <.5 ESCRIBIR "Apellidos: " EN 11.DAT" sw <.5 ESCRIBIR "Nombre: " EN 9.co + 4 k <. num Final_fichero( ) Escribir_registro( ) FINSI CERRAR "DATOS. negativos y nulos que se hayan digitado. Este algoritmo nos pide dos números cualesquiera y nos muestra por pantalla si el cuadrado del primero es mayor que el cubo del segundo.EN 13.Este algoritmo nos pide ingresar tres números y nos muestra por pantalla el orden ascendente de estos números. 3.Este algoritmo nos pide ingresar diez números cualesquiera y nos muestra por pantalla la cantidad de números positivos.Convertir_mayusculas( res ) LISTA DE ALGORITMOS 1. 4. Página 42 de 51 .16 LEER provincia dni <.DAT" res <. luego nos pide digitar los números elegidos y nos muestra por pantalla la cantidad y el producto de los números pares e impares que se hayan introducido. 2.Este algoritmo nos pide ingresar la cantidad de números que se quieran evaluar. ademas también nos muestra la suma de positivos y negativos.Espacios( 1 ) HACER Mas FINMIENTRAS FINPROGRAMA -----------------------------SUBPROGRAMA Mas MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Desea m s altas (S/N): " LEER res res <. Página 43 de 51 . Acá adjunto el código ya que la imagen no se ve bien 1 Proceso Numeros_Pares_Impares 2cont<-c Página 44 de 51 : . numimpar 28 Si numimpar=0 Entonces 29Escribir "el producto de los numeros impares es: ". prodpar-1 24 Sino 25Escribir "el producto de los numeros pares es: ". prodimpar 32 FinSi 33 FinProceso 5. 6. numpar 22 Si numpar=0 Entonces 23Escribir "el producto de los numeros pares es: ".3numpar<-0 4numimpar<-0 5prodpar<-1 6prodimpar<-1 7Escribir "digite la cantidad de numeros a evaluar" 8Leer c 9Mientras cont<c Hacer 10Escribir "introduzca un numero entero" 11Leer n 12Si n mod 2=0 Entonces 13numpar<-numpar+1 14prodpar<-prodpar*n 15Sino 16numimpar<-numimpar+1 17prodimpar<-prodimpar*n 18FinSi 19cont<-cont+1 20FinMientras 21Escribir "la cantidad de numeros pares es: ".Este algoritmo nos pide ingresar un numero y nos muestra por pantalla si es primo o no.Este algoritmo nos muestra por pantalla los números pares menores que cien. 7. Página 45 de 51 . prodimpar-1 30 Sino 31Escribir "el producto de los numeros impares es: ".Este algoritmo nos muestra por pantalla los números múltiplos de cinco menores que mil. prodpar 26 FinSi 27Escribir "la cantidad de numeros impares es: ". 11. entonces le descuentan el cinco porciento.Este algoritmo nos muestra los números menores que "n" números. 13. 9.8. la tarifa por hora. Este algoritmo nos muestra todos los números impares del uno hasta el cien. negativos y nulos ingresados.Este algoritmo nos permite hallar el volumen y el área de un cilindro.Este algoritmo nos pide el numero de horas trabajadas y la tarifa por hora y no muestra el sueldo del trabajador. Este algoritmo nos pide ingresar el numero de trabajadores de una plantilla. y también la cantidad que hay. teniendo en cuenta que si el numero de horas trabajadas es mayor de cuarenta. 10.Este algoritmo nos pide ingresar "n" números cualesquiera y nos muestra por pantalla la cantidad de números positivos. 12. el numero de horas trabajadas y nos muestra por pantalla el salario para cada empleado y el de la nomina en total. Página 46 de 51 . 15.14. nos muestra por pantalla los números del cien al uno.Este algoritmo es el contrario del programa anterior. 16. Página 47 de 51 .Este algoritmo nos muestra por pantalla los números del uno hasta el cien. Con este algoritmo podemos multiplicar cinco números cualesquiera. 17. le descuentan el diez porciento. utiliza el ciclo Para. y si es mayor que dos mil. luego nos muestra por pantalla un sueldo neto para cada intervalo de descuento (si los hay) y la nomina total de la empresa.Este algoritmo nos muestra los números pares positivos menores que cien. le descuentan el cinco porciento. Este algoritmo nos pide ingresar una cantidad cualquiera de trabajadores. 18. Página 48 de 51 . le descuentan el tres porciento. si el sueldo esta entre mil y dos mil. luego un sueldo que no necesariamente tiene que ser el mismo para todos. si el sueldo es menor igual a mil. Este algoritmo seria parecido al anterior. Página 49 de 51 . solo que en este solo es para un trabajador.19. Con este algoritmo podemos sumar diez números cualesquiera. Página 50 de 51 .20. 21. nos muestra por pantalla los números del uno al cien. y ademas la suma entre pares y luego la suma entre impares. Página 51 de 51 . nos dice la cantidad de pares e impares. solo que utiliza el ciclo para.Este es parecido a uno descrito anteriormente.