Sunteți pe pagina 1din 51

Recopilacin de Ejemplos de algoritmos en PSeudoCodigo con pseint Nota: estos ejemplos se encuentran desactualizados.

Si bien continan siendo vlidos, algunas operaciones pueden simplificarse gracias a nuevas caractersticas del intrprete, y hay adems aspectos del lenguaje que no estn cubiertos en ninguo de estos ejemplos (como la definicin de funciones o subprocesos). Finalmente, la sintaxis de un ejemplo puede variar segn el perfil de lenguaje con que el usuario configure al intrprete. Para obtener una lista ms completa de ejemplos, y visualizar su sintaxis adaptada a una cierta configuracin 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 mdulo (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.

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

Pgina 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

Pgina 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

Pgina 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:

Pgina 5 de 51

Escribir 'Parte Entera:',Trunc(n); Escribir 'Parte Decimal:',n-Trunc(n); 7: Si N<>Trunc(N) Entonces Escribir 'El numero debe ser entero!'; Sino Si abs(N)>50 Entonces Escribir 'Resultado muy grande!'; Sino r<-1; f<-1; Mientras f<=abs(N) Hacer Si N<0 Entonces r<-(-f)*r; Sino r<-f*r; FinSi f<-f+1; FinMientras Escribir 'Factorial:',r; FinSi FinSi 8: Si N<>Trunc(N) Entonces Escribir 'El numero debe ser entero!'; Sino Primo<-'Si'; Si N/2=trunc(N/2) Entonces Primo<-'No'; FinSi Si N<0 entonces Nu<-N*-1; sino Nu<-N; FinSi Nu<-RC(Nu); f<-3; Mientras f<=Nu Y Primo='Si' Hacer Si N/F=trunc(N/F) Entonces Primo<-'No'; FinSi f<-f+2; FinMientras Escribir 'Numero Primo:',Primo; Si f=3 Entonces F<-4; FinSi Si Primo='No' Entonces Escribir N,'=',f-2,'x',N/(f-2); FinSi FinSi 9: Escribir 'Ingrese Numero:'; Leer N; 0: Salir<-1; De Otro Modo: Escribir 'Opcion No Valida!';

Pgina 6 de 51

FinSegun Hasta que Salir=1 FinProceso

Mayores.psc
// Busca los dos mayores de una lista de N datos Proceso Mayores Dimension datos[200]; Escribir "Ingrese la cantidad de datos:"; Leer n; Para i<-1 Hasta n Hacer Escribir "Ingrese el dato ",i,":"; Leer datos[i]; FinPara

Si datos[1]>datos[2] Entonces may1<-datos[1]; may2<-datos[2]; Sino may1<-datos[2]; may2<-datos[1]; FinSi Para i<-3 Hasta n Hacer Si datos[i]>may1 Entonces may2<-may1; may1<-datos[i]; Sino Si datos[i]>may2 Entonces may2<-datos[i]; FinSi FinSi FinPara

Escribir "El mayor es: ",may1; Escribir "El segundo mayor es: ",may2; FinProceso

Modulo.psc
Proceso Modulo Escribir "Ingrese el numero: "; Leer N; Escribir "Ingrese el divisor: "; Leer M; Si N mod M = 0 Entonces Escribir M," es divisor exacto de ",N,".";

Pgina 7 de 51

Sino Escribir "El resto de dividir ",N," por ",M," es: ",N mod M; FinSi FinProceso

OrdenaLista.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]; Escribir "Ingrese los nombres (enter en blanco para terminar):"; // leer la lista cant<-0; Leer nombre; Mientras nombre<>"" Hacer cant<-cant+1; lista[cant]<-nombre; Repetir // leer un nombre y ver que no este ya en la lista Leer nombre; se_repite<-Falso; Para i<-1 Hasta cant Hacer Si nombre=lista[i] Entonces se_repite<-Verdadero; 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; Para j<-i+1 Hasta cant Hacer Si lista[j]<lista[pos_menor] Entonces pos_menor<-j; FinSi FinPara // intercambia el que estaba en i con el menor que encontro aux<-lista[i]; lista[i]<-lista[pos_menor]; lista[pos_menor]<-aux; FinPara // mostrar como queda la lista Escribir "La lista ordenada es:"; Para i<-1 Hasta cant Hacer Escribir " ",lista[i]; FinPara FinProceso

Pgina 8 de 51

Resolvente.psc
// calcula las raices de una ecuacion de segundo grado Proceso Resolvente // cargar datos Escribir "Ingrese el coeficiente A:"; Leer a; Escribir "Ingrese el coeficiente B:"; Leer b; Escribir "Ingrese el coeficiente C:"; Leer c; // determinar si son reales o imaginarias disc <- b^2-4*a*c; Si disc<0 Entonces // si son imaginarias preal<- (-b)/(2*a); pimag<- rc(-disc)/(2*a); Escribir "Raiz 1: ",preal,"+",pimag,"i"; Escribir "Raiz 2: ",preal,"-",pimag,"i"; Sino Si disc=0 Entonces // ver si son iguales o distintas r <- (-b)/(2*a); Escribir "Raiz 1 = Raiz 2: ",r; Sino r1 <- ((-b)+rc(disc))/(2*a); r2 <- ((-b)-rc(disc))/(2*a); Escribir "Raiz 1: ",r1; Escribir "Raiz 2: ",r2; FinSi FinSi FinProceso

Sucursales.psc
// Problema Ejemplo: // Se ingresan los precios de 5 articulos y las cantidades vendidas // por una empresa en sus 4 sucursales. Informar: // * Las cantidades totales de cada articulo. // * La cantidad de articulos en la sucursal 2. // * La cantidad del articulo 3 en la sucursal 1. // * La recaudacion total de cada sucursal. // * La recaudacion total de la empresa. // * La sucursal de mayor recaudacion. Proceso Sucursales // Inicializar Prec=Arreglo de precios y Cant=Arreglo para cantidades Dimension Prec[5], Cant[4,5]; // Leer Precios

Pgina 9 de 51

Para I<-1 Hasta 5 Hacer Escribir 'Ingrese Precio Articulo ',I,':'; Leer Prec[I]; FinPara // Leer Cantidades Para J<-1 Hasta 4 Hacer Para I<-1 Hasta 5 Hacer Escribir 'Ingrese Cant. de Articulo ',I,', en Sucursal ',J,':'; Leer Cant[J,I]; FinPara FinPara // Sumar cantidades por articulos Escribir 'Cantidades por articulos:'; Para I<-1 Hasta 5 Hacer Suma<-Cant[1,I]+Cant[2,I]+Cant[3,I]+Cant[4,I]; Escribir 'Total articulo ',I,':',Suma; FinPara // Informar Total de Articulos Sucursal 2 Suc2<-0; Para I<-1 Hasta 5 Hacer Suc2<-Suc2+Cant[2,I]; FinPara Escribir 'Total Sucursal 2:',Suc2; // Informar Sucursal 1, Articulo 3: Escribir 'Sucursal 1, Articulo 3:',Cant[1,3];

// Acumular total de cada sucursal (TotSuc) y // total de la empresa (TotEmp) MayorRec<-0; NumMayor<-0; TotEmp<-0; Para J<-1 Hasta 4 Hacer TotSuc<-0; Para I<-1 Hasta 5 Hacer TotSuc<-TotSuc+(Cant[J,I]*Prec[i]); FinPara Escribir 'Recaudaciones Sucursal ',J,':',TotSuc; Si TotSuc>MayorRec entonces MayorRec<-TotSuc; NumMayor<-J; FinSi TotEmp<-TotEmp+TotSuc; FinPara Escribir 'Recaudacion total de la empresa:',TotEmp; Escribir 'Sucursal de Mayor Recaudacion:',NumMayor; FinProceso

Triangulo.psc
// Lee los tres lados de un triangulo rectangulo, determina // si corresponden (por Pitargoras) y en caso afirmativo // calcula el area

Pgina 10 de 51

Proceso TrianguloRectangulo // cargar datos Escribir "Ingrese el lado 1:"; Leer l1; Escribir "Ingrese el lado 2:"; Leer l2; Escribir "Ingrese el lado 3:"; Leer l3; // encontrar la hipotenusa (mayor lado) Si l1>l2 Entonces cat1<-l2; Si l1>l3 Entonces hip<-l1; cat2<-l3; Sino hip<-l3; cat2<-l1; FinSi Sino cat1<-l1; Si l2>l3 Entonces hip<-l2; cat2<-l3; Sino hip<-l3; cat2<-l2; FinSi FinSi // ver si cumple con Pitagoras Si hip^2 = cat1^2 + cat2^2 Entonces // calcualar area area<-(cat1*cat2)/2; Escribir "El area es: ",area; Sino Escribir "No es un triangulo rectangulo."; FinSi FinProceso

Ejemplos en Pseint
Fecha de entrega 26/11/12 1. En el siguiente ejemplo se intenta caclular el promedio de 10 numeros, observa bien el codigo, 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:"; Leer n; Escribir "Ingrese un numero:"; Leer n;

Pgina 11 de 51

Escribir "Ingrese un numero:"; Leer n; Escribir "Ingrese un numero:"; Leer n; Escribir "Ingrese un numero:"; Leer n; Escribir "Ingrese un numero:"; Leer n; Escribir "Ingrese un numero:"; Leer n; Escribir "Ingrese un numero:"; Leer n; Escribir "Ingrese un numero:"; Leer n; Escribir "Ingrese un numero:"; Leer n; //Declaro una variable promedio para asignarle el promedio promedio<-n1+n2+n3+n4+n5+n6+n7+n8+n9+n10 / 10; //Muestro el promedio Escribir "El promedio es: ",promedio; FinProceso 2. En este otro ejemplo se trata de mostrar los primeros 50 numeros pares, haz lo mismo que en el ejemplo anterior, copia el codigo en pseint y fijate si es correcto. Proceso NumerosPares //Muestra los numeros pares del 0 al 50 Escribir "Ingrese un numero:"; Leer x; Repetir //la funcion MOD calcula el resto de la division por 2, si es cero entonces es par Si x MOD 2 = 0 Entonces Escribir "Numero: ",x; FinSi Hasta Que x = 50 Escribir "Ultimo Numero: ",x; Escribir "Fin de listado"; FinProceso 3. Este algoritmo intenta mostrar los numeros del 1 al 100, hace lo mismo que en los ejemplos anteriores, fijate si es correcto Proceso Repetir1al100 //Hacer un pseudocodigo que imprima los numeros del 1 al 100 c <- 0 MIENTRAS c < 100 HACER ESCRIBIR c; FINMIENTRAS ESCRIBIR "ultimo ciclo: " c; ESCRIBIR "Fin de repeticion"; FinProceso

Pgina 12 de 51

4. Este codigo es el mismo que el ejercicio anterior pero utiliza la estructura Repetir - Hasta, Funciona?, haz lo mismo que en los ejercicios anteriores, busca los errores Proceso Repetir1al100conRepetir //Hacer un pseudocodigo que imprima los numeros del 1 al 100 c <- 0 Repetir ESCRIBIR c; Hasta Que c < 100 ESCRIBIR "ultimo ciclo: " c; ESCRIBIR "Fin de repeticion"; FinProceso 5. En el siguiente codigo se quiere mostrar los numeros del 100 al 0, haz lo mismo busca los errores Proceso Repetir1al100conRepetir //Hacer un pseudocodigo que imprima los numeros del 100 al 0 en orden decreciente c <- 100 Repetir ESCRIBIR c; Hasta Que c <= 0 ESCRIBIR "ultimo ciclo: " c; ESCRIBIR "Fin de repeticion"; FinProceso 6. Realizar un algoritmo que pida 3 numeros, verifique que sean positivos, luego calcule el promedio y busque el mayor de todos. 7. Realizar un algoritmo que pida un numero y luego calcule la raiz cuadrada del mismo. 8. 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 nios, jvenes, adultos y viejos que existen en su zona habitacional. Se //determinan las categoras con base en la siguiente tabla: //CATEGORIA EDAD //Nios 0 - 10 //Adolecente 11-17 //Jvenes 18 - 29 //Adultos 30 - 59 //Viejos 60 en adelante Hola Jessica fijate el siguiente script Proceso PesoPromedio //Inicializo a 0 los contadores para edad y peso numeroNios<-0; numeroAdolescentes<-0; numeroJovenes<-0; numeroAdultos<-0; numeroViejos<-0; pesoNios<-0; pesoAdolescentes<-0;

Pgina 13 de 51

pesoJovenes<-0; pesoAdultos<-0; pesoViejos<-0; pesoPromedioNios <-0; pesoPromedioAdolescentes <-0; pesoPromedioJovenes <-0; pesoPromedioAdultos <-0; pesoPromedioViejos <-0; numeroPersonas<-0; Repetir //Pido el peso y la edad de la persona Escribir 'De el peso de la persona'; Leer peso; Escribir 'De la edad de la persona'; Leer edad; //Veo en que categoria de edad esta la persona Si (edad >= 0 y edad <=10) Entonces numeroNios<-numeroNios + 1; //aado 1 nio a esta categoria pesoNios<-pesoNios + peso; //sumo al contador de peso de los nios el nio encontrado FinSi Si (edad >= 11 y edad <=17) Entonces numeroAdolescentes<-numeroAdolescentes + 1; //aado 1 adolescente a esta categoria pesoAdolescentes<-pesoAdolescentes + peso; //sumo al contador de peso de los adolescentes el adolescente encontrado FinSi Si (edad >= 18 y edad <=29) Entonces numeroJovenes<-numeroJovenes + 1; //aado 1 Jovenes a esta categoria pesoJovenes<-pesoJovenes + peso; //sumo al contador de peso de los Jovenes el Jovenes encontrado FinSi Si (edad >= 30 y edad <=59) Entonces numeroAdultos<-numeroAdultos + 1; //aado 1 Jovenes a esta categoria pesoAdultos<-pesoAdultos + peso; //sumo al contador de peso de los Jovenes el Jovenes encontrado FinSi Si (edad >= 60) Entonces numeroViejos<-numeroViejos + 1; //aado 1 Viejos a esta categoria pesoViejos<-pesoViejos + peso; //sumo al contador de peso de los Viejos el Viejos encontrado FinSi numeroPersonas<-numeroPersonas + 1; Hasta Que numeroPersonas = 80 //Calculo el promedio de cada categoria Si numeroNios > 0 Entonces pesoPromedioNios <- pesoNios / numeroNios; FinSi Si numeroAdolescentes > 0 Entonces pesoPromedioAdolescentes <- pesoAdolescentes / numeroAdolescentes; FinSi Si numeroJovenes > 0 Entonces pesoPromedioJovenes <- pesoJovenes / numeroJovenes;

Pgina 14 de 51

FinSi Si numeroAdultos > 0 Entonces pesoPromedioAdultos <- pesoAdultos / numeroAdultos; FinSi Si numeroViejos > 0 Entonces pesoPromedioViejos <- pesoViejos / numeroViejos; FinSi Escribir 'Peso Promedio nios: ' pesoPromedioNios; Escribir 'Peso Promedio nios: ' pesoPromedioAdolescentes; Escribir 'Peso Promedio nios: ' pesoPromedioJovenes; Escribir 'Peso Promedio nios: ' pesoPromedioAdultos; Escribir 'Peso Promedio nios: ' pesoPromedioViejos; 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 nios, 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, se piden dos matrices M y N. 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, asi como los dos indices para la fila y columna Dimension M[2,2]; Dimension N[2,2]; Dimension R[2,2]; Definir N,M,I,J como Entero; // 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 ',I,', en columna ',J; Leer M[I,J]; 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 ',I,', en columna ',J; Leer N[I,J]; FinPara FinPara // Mostrar valores de cada celda Para I<-1 Hasta 2 Hacer Para J<-1 Hasta 2 Hacer Escribir 'El valor para indice ',I,', en columna ',J,'es :' M[I,J]; FinPara FinPara // Mostrar valores de cada celda Para I<-1 Hasta 2 Hacer Para J<-1 Hasta 2 Hacer Escribir 'El valor para indice ',I,', en columna ',J,'es :' N[I,J];

Pgina 15 de 51

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,J] * N[I,J]; Escribir 'El producto para indice ',I,', en columna ',J,'es :' R[I,J]; FinPara FinPara FinProceso

Pgina 16 de 51

Pgina 17 de 51

Ejemplos de Pseudocdigo
Ejemplo: Realizar el pseudocdigo de un programa que permita calcular el rea de un rectngulo. Se debe introducir la base y la altura para poder realizar el clculo .. Programa; rea Entorno: BASE, ALTURA, AREA son nmero enteros Algoritmo: escribir Introduzca la base y la altura leer BASE, ALTURA calcular AREA = BASE * ALTURA escribir El rea del rectngulo es AREA Finprograma Ejemplo: Realizar el pseudocdigo que permita al usuario introducir por teclado dos notas, calculando la suma y el producto de las notas. Programa: SumaProducto Entorno: NOTA1,NOTA2,SUMA,PRODUCTO son nmeros enteros Algoritmo: escribir Introduzca las notas leer NOTA1,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 pseudocdigo de un programa que permita saber si un nmero es mayor, menor o igual a cero. Programa: ComparaNmeros Entorno: NUMERO es un nmero entero Algoritmo: Escribir Introduzca un nmero leer NUMERO SI NUMERO>0 ENTONCES escribir El nmero introducido es positivo SI NO SI NUMERO<0 ENTONCES escribir El nmero introducido es negativo SI NO escribir El nmero 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 algn dispositivo de salida: ALGORITMO lee_tres_vertices ENTRADA: las coordenadas (x,y) de tres puntos SALIDA: las coordenadas (x,y) de los tres puntos movidos 3 puntos hacia la derecha. VARIABLES: i:entera x,y: real INICIO PARA i=1 HASTA 3 CON INCREMENTO +1 ESCRIBE "Abscisa del punto nmero ", i LEER x

Pgina 18 de 51

ESCRIBE "Ordenada del punto nmero ", i LEER Y ESCRIBE "El punto es (" x+3","y")" FIN_PARA FIN El programa equivalente a este algoritmo se muestra a continuacin. Como podemos apreciar en un programa en Pascal es importantsimo no olvidar detalles de sintaxis. Por ejemplo cada sentencia termina en punto y coma. De cualquier forma es inmediato apreciar los simples cambios existentes. program lee_tres_vertices; var x,y:real; i:integer; begin for i:=1 to 3 do begin write ('Abscisa del punto nmero ',i); readln(x); write ('Ordenada del punto nmero ',i); readln(y); writeln (' El punto es (',x+3,',',y,')'); end; end;

Problema: calcular y mostrar la suma de los diez primeros nmeros entre 1 y 1000 que sean divisibles por uno dado.
programa suma_divisibles variables natural : divisor, suma, contador, nmero inicio programa divisor leer Introduce el divisor: suma 0 contador 0 para nmero desde 1 hasta 1000 hacer si divisor divide a nmero entonces suma suma + nmero contador contador + 1 fin si si contador = 10 entonces interrumpir fin si fin para escribir La suma es, suma fin programa

Pgina 19 de 51

Ejercicios en Pseudocdigo

Aqu les dejo 52 ejercicios en Pseudo-cdigo, para reforzar los conocimientos dados en el la saga de posts Cmo aprender a programar y no morir en el intento, estos ejercicios son muy buenos para desarrollar la lgica y estn enfocados para los estudiantes en Ingeniera de Sistemas y a fines. Al final de cada consigna esta el ejercicio resuelto, trata de resolverlo sin mirar el resultado. Que es el Pseudocdigo El Pseudo-Cdigo sirve para orientar a los programadores, pero sin la sintaxis ni la estructura propia de ningn lenguaje (C#, VisaualBasic, etc.). En vez de escribir el programa directamente en un lenguaje de programacin determinado (C, Basic, etc.), crearemos un borrador entendible para todos los lenguajes, para luego de tener bien en claro lo que se debe hacer, para pasar a la programacin propiamente dicha. En pocas palabras lo que se hace es marcar la estructura de cmo sera hacer un "Programa" con cualquier lenguaje. No importa donde lo hagas en tu mano, bloc de notas, papel higinico, etc. ya que es solo para comprender la estructura o lgica de cmo se programara en un lenguaje real.

Los ejercicios estn divididos en 9 temas:


-Bucles y tomas de decision -Bucles anidados y subprogramas -Presentacin en pantalla y cabeceras -Nmeros aleatorios y menus -Arrays unidimensionales -Arrays bidimensionales -Arrays multidimensionales -Ficheros -Informes y rupturas de control -Organizacin aleatoria y secuencial

Bucles y tomas de decisin


1.-Hacer un pseudocodigo que imprima los numeros del 1 al 100.
PROGRAMA contador1 ENTORNO: c <- 0 ALGORITMO: Borrar_pantalla( ) MIENTRAS c < 101 HACER ESCRIBIR c c <- c + 1 FINMIENTRAS FINPROGRAMA

2.-Hacer un pseudocodigo que imprima los numeros del 100 al 0, en orden decreciente.

Pgina 20 de 51

PROGRAMA contador2 ENTORNO: c <- 100 ALGORITMO: Borrar_pantalla( ) MIENTRAS c <= 0 HACER ESCRIBIR c c <- c - 1 FINMIENTRAS FINPROGRAMA

3.-Hacer un pseudocodigo que imprima los numeros pares entre 0 y 100.


PROGRAMA pares ENTORNO: c <- 2 ALGORITMO: Borrar_pantalla( ) MIENTRAS c < 101 HACER ESCRIBIR c c <- c + 2 FINMIENTRAS FINPROGRAMA

4.-Hacer un programa que imprima la suma de los 100 primeros numeros.


PROGRAMA suma ENTORNO: c <- 1 suma <- 0 ALGORITMO: Borrar_pantalla( ) MIENTRAS c <= 100 HACER suma <- suma + c c <- c + 1 FINMIENTRAS ESCRIBIR "La suma de los 100 primeros nmeros es: " ESCRIBIR suma FINPROGRAMA

5.-Hacer un pseudocdigo que imprima los numeros impares hasta el 100 y que imprima cuantos impares hay.
PROGRAMA impares ENTORNO: c <- 1 son <- 0 ALGORITMO: Borrar_pantalla( ) MIENTRAS c < 100 ESCRIBIR c c <- c + 2 son <- son + 1 FINMIENTRAS ESCRIBIR "El nmero de impares: " ESCRIBIR son FINPROGRAMA

6.-Hacer un pseudocodigo que imprima todos los numeros naturales que hay desde- la unidad hasta un numero que introducimos por teclado.
PROGRAMA natural

Pgina 21 de 51

ENTORNO: i <- 0 n <- 0 ALGORITMO: Borrar_pantalla( ) ESCRIBIR "Introduce un nmero: " LEER n MIENTRAS i < n HACER i <- i + 1 ESCRIBIR i FINMIENTRAS FINPROGRAMA

7.-Introducir tantas frases como queramos y contarlas.


PROGRAMA frases ENTORNO: res <- "S" frase <- Espacios( 30 ) c <- 0 ALGORITMO: Borrar_pantalla( ) MIENTRAS res = "S" HACER ESCRIBIR "Frase: " LEER frase c <- c + 1 ESCRIBIR "Deseas introducir m s frases (S/N): " LEER res FINMIENTRAS ESCRIBIR "El nmero de frases introducidas son: " ESCRIBIR c FINPROGRAMA

8.-Hacer un pseudocodigo que solo nos permita introducir S o N.


PROGRAMA sn ENTORNO: res <- " " ALGORITMO: Borrar_pantalla( ) MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Introduce S o N" LEER res res <- Convertir_maysculas( res ) FINMIENTRAS FINPROGRAMA

9.-Introducir un numero por teclado. Que nos diga si es positivo o negativo.


PROGRAMA signo ENTORNO: num <- 0 ALGORITMO: Borrar_pantalla( ) ESCRIBIR "Introduce un nmero: " LEER num SI num >= 0 ENTONCES ESCRIBIR "es positivo" SINO ESCRIBIR "es negativo" FINSI FINPROGRAMA

Pgina 22 de 51

10.-Introducir un numero por teclado. Que nos diga si es par o impar.


PROGRAMA paridad ENTORNO: num <- 0 ALGORITMO: Borrar_pantalla( ) ESCRIBIR "Introduce un nmero: " LEER num SI num = int( num / 2 ) * 2 ENTONCES ESCRIBIR "es par" SINO ESCRIBIR "es impar" FINSI FINPROGRAMA

11.-Imprimir y contar los multiplos de 3 desde la unidad hasta un numero que introducimos por teclado.
PROGRAMA multiplo3 ENTORNO: i <- 3 n <- 0 c <- 0 ALGORITMO: Borrar_pantalla( ) ESCRIBIR "Nmero: " LEER n MIENTRAS i <= n HACER SI i = int( i / 3 ) * 3 ENTONCES ESCRIBIR i c <- c + 1 FINSI i <- i + 1 FINMIENTRAS ESCRIBIR "El nmero de mltiplos de 3 son: " ESCRIBIR c FINPROGRAMA

12.-Hacer un pseudocodigo que imprima los numeros del 1 al 100. Que calcule la suma de todos los numeros pares por un lado, y por otro, la de todos los impares.
PROGRAMA par_impar ENTORNO: i <- 1 sumapar <- 0 sumaimp <- 0 ALGORITMO: Borrar_pantalla( ) MIENTRAS i < 101 HACER SI i = int( i / 2 ) * sumapar <- sumapar SINO sumaimp <- 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: "

Pgina 23 de 51

13.-Imprimir y contar los numeros que son multiplos de 2 o de 3 que hay entre 1 y 100.
PROGRAMA multiplo_2_3 ENTORNO: i <- 1 c <- 0 ALGORITMO: Borrar_pantalla( ) MIENTRAS i < 101 HACER SI i = int( i / 2 ) * 2 O i = int( i / 3 ) * 3 ENTONCES c <- c + 1 ESCRIBIR i FINSI i <- i + 1 FINMIENTRAS ESCRIBIR "El nmero de mltiplos es de: " ESCRIBIR c FINPROGRAMA

14.-Hacer un pseudocodigo que imprima el mayor y el menor de una serie de cinco numeros que vamos introduciendo por teclado.
PROGRAMA mayor_menor ENTORNO: con <- 0 n <- 0 maximo <- 0 minimo <- 99999 ALGORITMO: Borrar_pantalla( ) MIENTRAS con <= 5 HACER ESCRIBIR "Nmero: " LEER n SI n > maximo ENTONCES maximo = n FINSI SI n < minimo ENTONCES minimo <- n FINSI con <- con + 1 FINMIENTRAS ESCRIBIR "El mayor de los nmeros es: " ESCRIBIR maximo ESCRIBIR "El menor de los nmeros es: " ESCRIBIR minimo FINPROGRAMA

15.-Introducir dos numeros por teclado. Imprimir los numeros naturales que hay entre ambos numeros empezando por el m s pequeo, contar cuantos hay y cuantos de ellos son pares. Calcular la suma de los impares.
PROGRAMA par_impar ENTORNO: num1 <- 0 num2 <- 0 aux <- 0 son <- 0 pares <- 0 sumaimpa <- 0 ALGORITMO: Borrar_pantalla( ) ESCRIBIR "Nmero: " LEER num1 ESCRIBIR "Nmero: "

Pgina 24 de 51

LEER num2 SI num1 > num2 ENTONCES aux <- num1 num1 <- num2 num2 <- aux FINSI MIENTRAS num1 >= num2 HACER ESCRIBIR num1 son <- son + 1 SI num1 = int( num1 / 2 ) * 2 ENTONCES pares <- pares + 1 SINO sumaimpa <- sumaimpa + num1 FINSI num1 <- num1 + 1 FINMIENTRAS ESCRIBIR "Nmeros visualizados: " ESCRIBIR son ESCRIBIR "Pares hay: " ESCRIBIR pares ESCRIBIR "La suma de los impares es: " ESCRIBIR sumaimpa FINPROGRAMA

Bucles anidados y subprogramas


16.-Imprimir diez veces la serie de numeros del 1 al 10.
PROGRAMA diez ENTORNO: serie <- 0 ALGORITMO: Borrar_pantalla( ) MIENTRAS serie <= 10 HACER numero <- 1 MIENTRAS numero <= 10 HACER ESCRIBIR numero numero <- numero + 1 FINMIENTRAS serie <- serie + 1 FINMIENTRAS FINPROGRAMA

17.-Imprimir, contar y sumar los multiplos de 2 que hay entre una serie de numeros, tal que el segundo sea mayor o igual que el primero.
PROGRAMA multiplo2 ENTORNO: res <- "S" ALGORITMO: Borrar_pantalla( ) MIENTRAS res = "S" HACER c <- 0 sum <- 0 num1 <- 0 num2 <- -999 ESCRIBIR "Nmero: " LEER num1 ESCRIBIR "Nmero mayor que el anterior" MIENTRAS num1 >= num2 HACER LEER num2 FINMIENTRAS num1 <- num1 + 1

Pgina 25 de 51

MIENTRAS num1 <= num2 - 1 HACER SI num1 = int( num1 / 2 ) * 2 ENTONCES ESCRIBIR num1 c <- c + 1 sum <- sum + num1 FINSI num1 <- num1 + 1 FINMIENTRAS ESCRIBIR "Nmero de mltiplos de 2: " ESCRIBIR c ESCRIBIR "Su suma es: " ESCRIBIR sum res <- Espacios( 1 ) MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Otra serie de nmeros (S/N): " LEER res res <- Convertir_maysculas( res ) FINMIENTRAS FINMIENTRAS FINPROGRAMA

18.-Hacer un pseudocodigo que cuente las veces que aparece una determinada letra en una frase que introduciremos por teclado.
PROGRAMA letra ENTORNO: frase <- Espacios( 30 ) letra <- Espacios( 1 ) longitud <- 0 a <- 0 res <- "S" ALGORITMO: MIENTRAS res = "S" HACER Borrar_pantalla( ) ESCRIBIR "Introduce una frase: " LEER frase longitud <- Hallar_longitud( frase ) i <- 1 ESCRIBIR "Letra a buscar: " LEER letra MIENTRAS i <= longitud HACER SI letra = Caracter( frase, i, 1 ) ENTONCES a <- a + 1 FINSI i <- i + 1 FINMIENTRAS Borrar_pantalla( ) ESCRIBIR "El nmero de veces que aparece la letra " ESCRIBIR letra ESCRIBIR " en la frase " ESCRIBIR frase ESCRIBIR " es de " ESCRIBIR a res <- Espacios( 1 ) MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Desea introducir m&aacute;s frases (S/N): " LEER res res <- Convertir_maysculas( res ) FINMIENTRAS FINMIENTRAS FINPROGRAMA

19.-Hacer un pseudocodigo que simule el funcionamiento de un reloj digital y que permita ponerlo en hora.

Pgina 26 de 51

PROGRAMA reloj ENTORNO: horas <- 0 minutos <- 0 segundos <- 0 res <- "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 <- segundos + 1 FINMIENTRAS minutos <- minutos + 1 segundos <- 0 FINMIENTRAS horas <- horas + 1 minutos <- 0 FINMIENTRAS horas <- 0 FINMIENTRAS FINPROGRAMA

20.-Calcular el factorial de un numero, mediante subprogramas.


PROGRAMA factorial ENTORNO: res <- "S" ALGORITMO: MIENTRAS res = "S" HACER Borrar_pantalla( ) factorial <- 1 ESCRIBIR "Nmero: " 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 <- factorial * numero numero <- numero - 1 FINMIENTRAS HACER Imprimir FINSUBPROGRAMA -----------------------------SUBPROGRAMA Mas

Pgina 27 de 51

res <- " " MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Desea calcular m&aacute;s factoriales (S/N): " LEER res res <- Convertir_maysculas( res ) FINMIENTRAS FINSUBPROGRAMA -----------------------------SUBPROGRAMA Imprimir ESCRIBIR "Su factorial es: " ESCRIBIR factorial FINSUBPROGRAMA

21.-Hacer un programa que calcule independientemente la suma de los pares y los impares de los numeros entre 1 y 1000, utilizando un switch.
PROGRAMA suma ENTORNO: par <- 0 impar <- 0 sw <- 0 i <- 1 ALGORITMO: Borrar_pantalla( ) MIENTRAS i <= 1000 HACER SI sw = 0 ENTONCES impar <- impar + i sw <- 1 SINO par <- par + i sw <- 0 FINSI i <- 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.-Introducir una frase por teclado. Imprimirla cinco veces en filas consecutivas, pero cada impresion ir desplazada cuatro columnas hacia la derecha.
PROGRAMA frase ENTORNO: frase <- Espacios( 30 ) ALGORITMO: Borrar_pantalla( ) EN 5,15 ESCRIBIR "Frase: " EN 5,22 LEER frase fi <- 8 co <- 15 veces <- 0 MIENTRAS veces <= 5 HACER EN fi,co ESCRIBIR frase veces <- veces + 1 co <- co + 4 fi <- fi + 1 FINMIENTRAS FINPROGRAMA

Pgina 28 de 51

23.-Hacer un pseudocodigo que imprima los nmeros del 0 al 100, controlando las filas y las columnas.
PROGRAMA numeros ENTORNO: c <- 0 ALGORITMO: Borrar_pantalla( ) EN 5,20 ESCRIBIR "Los nmeros del 0 al 100 son: " fi <- 7 col <- 5 MIENTRAS c < 101 HACER EN fi,col ESCRIBIR c c <- c + 1 col <- col + 4 SI col > 75 ENTONCES fi <- fi + 2 col <- 5 FINSI FINMIENTRAS FINPROGRAMA

24.-Comprobar si un numero mayor o igual que la unidad es primo.


PROGRAMA primo ENTORNO: res <- "S" ALGORITMO: MIENTRAS res = "S" HACER Borrar_pantalla( ) numero <- 0 sw <- 0 MIENTRAS numero < 1 HACER EN 8,10 ESCRIBIR "Nmero: " EN 8,18 LEER numero FINMIENTRAS i <- numero - 1 MIENTRAS i > 1 Y sw <> 1 HACER SI numero = Int( numero / i ) * i ENTONCES sw = 1 SINO i <- i - 1 FINSI FINMIENTRAS SI sw = 1 ENTONCES EN 10,10 ESCRIBIR "no es primo" SINO EN 10,10 ESCRIBIR "s es primo" FINSI HACER Mas FINMIENTRAS FINPROGRAMA -----------------------------SUBPROGRAMA Mas res <- " " MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Desea introducir m s nmeros (S/N): " LEER res res <- Convertir_mayusculas( res ) FINMIENTRAS FINSUBPROGRAMA

25.-Introducir un numero menor de 5000 y pasarlo a numero romano.

Pgina 29 de 51

PROGRAMA romano ENTORNO: res <- "S" ALGORITMO: MIENTRAS res = "S" HACER Borrar_pantalla( ) num <- 0 MIENTRAS num < 1 O num > 5000 HACER EN 8,10 ESCRIBIR "Nmero: " EN 8,18 ESCRIBIR num FINMIENTRAS col <- 15 MIENTRAS num >= 1000 HACER EN 15,col ESCRIBIR "M" num <- num - 1000 col <- col + 1 FINMIENTRAS SI num >= 900 ENTONCES EN 15,col ESCRIBIR "CM" num <- num - 900 col <- col + 2 FINSI SI num >= 500 ENTONCES EN 15,col ESCRIBIR "D" num <- num - 500 col <- col + 1 FINSI MIENTRAS num >= 100 HACER EN 15,col ESCRIBIR "C" num <- num - 100 col <- col + 1 FINMIENTRAS SI num >= 90 ENTONCES EN 15,col ESCRIBIR "XC" num <- num - 90 col <- col + 2 FINSI SI num >= 50 ENTONCES EN 15,col ESCRIBIR "L" num <- num - 50 col <- col + 1 FINSI SI num >= 40 ENTONCES EN 15,col ESCRIBIR "XL" num <- num - 40 col <- col + 2 FINSI MIENTRAS num >= 10 HACER EN 15,col ESCRIBIR "X" num <- num - 10 col <- col + 1 FINMIENTRAS SI num = 9 ENTONCES EN 15,col ESCRIBIR "IX" num <- num - 9 col <- col + 2 FINSI SI num >= 5 ENTONCES EN 15,col ESCRIBIR "V" num <- num - 5 col <- col + 1 FINSI SI num >= 4 ENTONCES

Pgina 30 de 51

EN 15,col ESCRIBIR "IV" num <- num - 4 col <- col + 2 FINSI MIENTRAS num > 0 HACER EN 15,col ESCRIBIR "I" num <- num - 1 col <- col + 1 FINMIENTRAS HACER Mas FINMIENTRAS FINPROGRAMA -----------------------------SUBPROGRAMA Mas res <- " " MIENTRAS res <> "S" Y res <> "N" HACER ESCRIBIR "Desea introducir m s nmeros (S/N): " LEER res res <- Convertir_mayusculas( res ) FINMIENTRAS FINSUBPROGRAMA

26.-Introducir una frase por teclado. Imprimirla en el centro de la pantalla.


PROGRAMA centro ENTORNO: res <- "S" frase <- Espacios( 40 ) ALGORITMO: MIENTRAS res = "S" HACER Borrar_pantalla( ) EN 5,15 ESCRIBIR "Frase: " EN 5,22 LEER frase EN 12,40 - Int( Longitud( frase ) / 2 ) ESCRIBIR frase HACER Mas FINMIENTRAS FINPROGRAMA

27.-Realizar la tabla de multiplicar de un numero entre 0 y 10.


PROGRAMA tabla ENTORNO: num <- -1 ALGORITMO: HACER Numero Borrar_pantalla( ) EN 5,10 ESCRIBIR "Tabla de multiplicar del nmero: " EN 5,40 LEER num i <- 0 fi <- 8 MIENTRAS i <= 10 HACER EN fi,15 ESCRIBIR num EN fi,19 ESCRIBIR " * " EN fi,23 ESCRIBIR i EN fi,25 ESCRIBIR " = " EN fi,29 ESCRIBIR num * i fi <- fi + 1 i <- i + 1 FINMIENTRAS FINPROGRAMA -----------------------------SUBPROGRAMA Numero MIENTRAS num < 0 HACER

Pgina 31 de 51

Borrar_pantalla( ) EN 10,25 ESCRIBIR "Nmero: " EN 10,33 LEER num FINMIENTRAS FINSUBPROGRAMA

Numeros aleatorios y menus


28.-Simular el lanzamiento de una moneda al aire e imprimir si ha salido cara o cruz.
PROGRAMA moneda ENTORNO: res <- "S" ALGORITMO: MIENTRAS res = "S" HACER Borrar_pantalla( ) SI Rnd( ) <= 0.5 ENTONCES EN 10,35 ESCRIBIR "Cara" SINO EN 10,35 ESCRIBIR "Cruz" FINSI HACER Mas FINMIENTRAS FINPROGRAMA -----------------------------SUBPROGRAMA Mas res <- Espacios( 1 ) MIENTRAS res <> "S" Y res <> "N" HACER EN 20,30 ESCRIBIR "M s lanzamientos (S/N): " EN 20,57 LEER res res <- Convertir_mayusculas( res ) FINMIENTRAS FINSUBPROGRAMA

29.-Simular cien tiradas de dos dados y contar las veces que entre los dos suman 10.
PROGRAMA dado ENTORNO: c <- 0 i <- 0 ALGORITMO: Borrar_pantalla( ) MIENTRAS i < 101 HACER SI Int( Rnd( ) * 6 ) + Int( Rnd( ) * 6 ) + 2 = 10 ENTONCES c <- c + 1 FINSI i <- i + 1 FINMIENTRAS EN 10,20 ESCRIBIR "Las veces que suman 10 son: " EN 10,48 ESCRIBIR c FINPROGRAMA

30.-Simular una carrera de dos caballos si cada uno tiene igual probabilidad de ganar.
PROGRAMA caballos ENTORNO: dibujo <- "****" col1 <- 4 col2 <- 4 ALGORITMO: Borrar_pantalla( ) EN 10,col1 ESCRIBIR dibujo

Pgina 32 de 51

EN 10,col2 ESCRIBIR dibujo MIENTRAS col1 <= 75 Y col2 <= 75 HACER SI Rnd( ) <= 0.5 ENTONCES EN 10,col1 ESCRIBIR Espacios( 4 ) col1 <- col1 + 4 EN 10,col1 ESCRIBIR dibujo SINO EN 12,col2 ESCRIBIR Espacios( 4 ) col2 <- col2 + 4 EN 12,col2 ESCRIBIR dibujo FINSI FINMIENTRAS EN 16,20 ESCRIBIR "El ganador es el caballo nmero: " SI col1 >= 75 ENTONCES EN 16,54 ESCRIBIR "1" SINO EN 16,54 ESCRIBIR "2" FINSI FINPROGRAMA

31.-Introducir dos nymeros por teclado y mediante un menu, calcule su suma, su resta, su multiplicacion o su division.
PROGRAMA menu1 ENTORNO: op <- 0 ALGORITMO: EN 10,20 ESCRIBIR "Nmero: " EN 10,29 LEER n1 EN 12,20 ESCRIBIR "Nmero: " EN 12,29 LEER n2 MIENTRAS op <> 5 HACER op <- 0 Borrar_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.- Multiplicacin" EN 16,25 ESCRIBIR "4.- Divisin" EN 18,25 ESCRIBIR "5.- Salir del programa" EN 22,25 ESCRIBIR "Elija opcin: " EN 22,39 LEER op Borrar_pantalla( ) HACER CASO CASO op = 1 EN 10,20 ESCRIBIR "Su suma es: " EN 10,33 ESCRIBIR n1 + n2 Pausa( ) CASO op = 2 EN 10,20 ESCRIBIR "Su resta es: " EN 10,33 ESCRIBIR n1 - n2 Pausa( ) CASO op = 3 EN 10,20 ESCRIBIR "Su multiplicacin es: " EN 10,33 ESCRIBIR n1 * n2 Pausa( ) CASO op = 4 EN 10,20 ESCRIBIR "Su divisin es: " EN 10,33 ESCRIBIR n1 / n2 Pausa( ) FINCASO FINMIENTRAS FINPROGRAMA

Pgina 33 de 51

32.-Hacer un programa que nos permita introducir un numero por teclado y sobre el se realicen las siguientes operaciones: comprobar si es primo, hallar su factorial o imprimir su tabla de multiplicar.
PROGRAMA menu2 ENTORNO: op <- 0 ALGORITMO: EN 10,20 ESCRIBIR "Nmero: " EN 10,29 LEER n MIENTRAS op <> 4 HACER op <- 0 Borrar_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 opcin: " EN 22,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 <- 0 i <- n - 1 MIENTRAS i > 1 Y sw <> 1 HACER SI n = Int( n / i ) * i ENTONCES sw <- 1 SINO i <- i - 1 FINSI FINMIENTRAS Borrar_pantalla( ) SI sw = 1 ENTONCES EN 10,10 ESCRIBIR "no es primo" SINO EN 10,10 ESCRIBIR "s es primo" FINSI Pausa( ) FINSUBPROGRAMA -----------------------------SUBPROGRAMA Factorial fac <- 1 Borrar_pantalla( ) SI n < 0 ENTONCES EN 10,10 ESCRIBIR "No tiene factorial" SINO MIENTRAS n > 1 HACER fac <- fac * n n <- n - 1 FINMIENTRAS EN 10,10 ESCRIBIR "Su factorial es: " EN 10,27 ESCRIBIR fac FINSI

Pgina 34 de 51

Pausa( ) FINSUBPROGRAMA -----------------------------SUBPROGRAMA Tabla i <- 0 fi <- 10 Borrar_pantalla( ) MIENTRAS i <= 10 HACER EN 8,10 ESCRIBIR "Tabla de multiplicar" EN fi,10 ESCRIBIR n EN fi,15 ESCRIBIR "*" EN fi,20 ESCRIBIR i EN fi,25 ESCRIBIR "=" EN fi,30 ESCRIBIR n * i i <- i + 1 FINMIENTRAS Pausa( ) FINSUBPROGRAMA

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 fila distinta.
PROGRAMA nombres ENTORNO: DIMENSIONA datos[ 20 ] i <- 1 ALGORITMO: Borrar_pantalla( ) fi <- 10 MIENTRAS i < 21 HACER EN fi,10 ESCRIBIR "Nombre: " EN fi, 18 LEER datos[ i ] i <- i + 1 FINMIENTRAS Borrar_pantalla( ) i <- 1 fi <- 3 EN 1,20 ESCRIBIR "Elementos de la lista" MIENTRAS i < 21 HACER EN fi,28 ESCRIBIR datos[ i ] fi <- fi + 1 i <- i + 1 FINMIENTRAS FINPROGRAMA

34.-Hacer un programa que lea las calificaciones de un alumno en 10 asignaturas, las almacene en un vector y calcule e imprima su media.
PROGRAMA notamedia ENTORNO: DIMENSIONA notas[ 10 suma <- 0 media <- 0 ALGORITMO: Borrar_pantalla( ) fi <- 7 PARA i DESDE 1 HASTA EN fi,15 ESCRIBIR EN fi,20 ESCRIBIR EN fi,21 ESCRIBIR

10 HACER "Nota " i ": "

Pgina 35 de 51

EN fi,23 LEER notas[ i ] fi <- fi + 1 FINPARA PARA i DESDE 1 HASTA 10 HACER suma <- suma + notas[ i ] FINPARA media <- suma / 10 EN 20,20 ESCRIBIR "Nota media: " EN 20,32 ESCRIBIR media FINPROGRAMA

35.-Usando el segundo ejemplo, hacer un programa que busque una nota en el vector.
PROGRAMA buscar ENTORNO: i <- 0 num <- 0 ALGORITMO: Borrar_pantalla( ) ESCRIBIR "Nota a buscar: " LEER num ITERAR i <- i + 1 SI notas[ i ] = num O i = 10 ENTONCES SALIR FINSI FINITERAR SI notas[ i ] = num ENTONCES ESCRIBIR "Encontrado en posici&oacute;n: " ESCRIBIR i SINO ESCRIBIR "No existe esa nota" FINSI FINPROGRAMA

Arrays bidimensionales
36.-Generar una matriz de 4 filas y 5 columnas con numeros aleatorios entre 1 y 100, e imprimirla.
PROGRAMA matriz ENTORNO: DIMENSIONAR A[ 4, 5 ] i <- 1 fi <- 10 co <- 15 ALGORITMO: Borrar_pantalla( ) EN 6,25 ESCRIBIR "Elementos de la matriz" MIENTRAS i <= 4 HACER j <- 1 MIENTRAS j <= 5 HACER A[ i, j ] <- Int( Rnd( ) * 100 ) + 1 EN fi,co ESCRIBIR A[ i, j ] co <- co + 5 j <- j + 1 FINMIENTRAS co <- 15 fi <- fi + 2 i <- i + 1 FINMIENTRAS FINPROGRAMA

Pgina 36 de 51

37.-Generar una matriz de 4 filas y 5 columnas con nmeros aleatorios entre 1y 100, y hacer su matriz transpuesta.
PROGRAMA transpuesta ENTORNO: DIMENSIONAR A[ 4, 5 ] DIMENSIONAR B[ 5, 4 ] fi <- 8 co <- 10 fit <- 8 cot <- 40 i <- 1 ALGORITMO: Borrar_pantalla( ) EN 6,15 ESCRIBIR "Matriz uno" EN 6,45 ESCRIBIR "Transpuesta" MIENTRAS i <= 4 HACER j <- 1 MIENTRAS j <= 5 HACER A[ i, j ] <- Int( Rnd( ) * 100 ) + 1 B[ j, i ] <- A[ i, j ] EN fi,co ESCRIBIR A[ i, j ] EN fit,cot ESCRIBIR B[ j, i ] co <- co + 4 fit <- fit + 2 j <- j + 1 FINMIENTRAS fi <- fi + 2 co <- 10 fit <- 8 cot <- cot + 4 i <- i + 1 FINMIENTRAS FINPROGRAMA

38.-Cargar en una matriz las notas de los alumnos de un colegio en funcion del numero de cursos (filas) y del nmero de alumnos por curso (columnas).
PROGRAMA notas ENTORNO: i <- 1 j <- 1 ALGORITMO: Borrar_pantalla( ) EN 10,20 ESCRIBIR "Nmero de cursos: " EN 10,39 LEER M EN 12,20 ESCRIBIR "Nmero de alumnos: " EN 12,40 LEER N DIMENSIONAR A[ M, N ] Borrar_pantalla( ) EN 2,25 ESCRIBIR "Introduccin de las notas" MIENTRAS i <= M HACER EN 10,25 ESCRIBIR "Curso: " EN 10,32 ESCRIBIR i MIENTRAS j <= N HACER EN 14,25 ESCRIBIR "Alumno: " EN 14,33 ESCRIBIR j EN 16,25 ESCRIBIR "Nota: " EN 16,32 LEER A[ i, j ] j <- j + 1 FINMIENTRAS i <- i + 1 FINMIENTRAS FINPROGRAMA

Pgina 37 de 51

39.-Ordenar una matriz de M filas y N columnas por la primera columna utilizando el mtodo SHELL (por insercion).
PROGRAMA ordenar ENTORNO: i <- 1 j <- 1 fi <- 10 co <- 15 M <- 0 N <- 0 ALGORITMO: Borrar_pantalla( ) EN 10,20 ESCRIBIR "Filas: " EN 10,27 LEER M EN 12,20 ESCRIBIR "Columnas: " EN 12,30 LEER N DIMENSIONAR A[ M, N ] Borrar_pantalla( ) MIENTRAS i <= M HACER MIENTRAS j <= N HACER A[ i, j ] = Int( Rnd( ) * 100 ) + 1 EN fi,co ESCRIBIR A[ i, j ] co <- co + 5 j <- j + 1 FINMIENTRAS co <- 15 fi <- fi + 2 i <- i + 1 FINMIENTRAS salto <- Int( M / 2 ) MIENTRAS salto >= 1 HACER sw <- 1 MIENTRAS sw <> 0 HACER sw <- 0 i <- 1 MIENTRAS i <= M - salto HACER SI A[ i, 1 ] > A[ i + salto, 1 ] ENTONCES HACER Cambios FINSI i <- i + 1 FINMIENTRAS FINMIENTRAS salto <- Int( salto / 2 ) FINMIENTRAS FINPROGRAMA -----------------------------SUBPROGRAMA Cambios j <- 1 MIENTRAS j <= N HACER aux <- A[ i + salto, j ] A[ i + salto, j ] <- A[ i, j ] A[ i, j ] <- aux j <- j + 1 FINMIENTRAS sw <- 1 FINSUBPROGRAMA

Arrays multidimensionales
40.-Crear una tabla de 3 paginas, 4 filas y 5 columnas donde el primer elemento valga 1, el segundo 2, el tercero 3 y as sucesivamente, e imprimirla.

Pgina 38 de 51

PROGRAMA tabla ENTORNO: DIMENSIONAR A[ 3, 4, 5 ] i <- 1 j <- 1 k <- 1 b <- 0 fi <- 8 co <- 12 ALGORITMO: MIENTRAS i <= 3 HACER Borrar_pantalla( ) EN fi,co ESCRIBIR "Elementos de la p gina: " EN fi,co + 24 ESCRIBIR i fi <- fi + 2 MIENTRAS j <= 4 HACER MIENTRAS k <= 5 HACER b <- b + 1 A[ i, j, k ] <- b EN fi,co ESCRIBIR A[ i, j, k ] co <- co + 4 k <- k + 1 FINMIENTRAS fi <- fi + 2 co <- 12 j <- j + 1 FINMIENTRAS EN fi + 2,20 ESCRIBIR "Pulse INTRO para continuar ..." Pausa( ) i <- i + 1 FINMIENTRAS FINPROGRAMA

41.-Se dispone de una tabla de 5 p ginas, 10 filas y 20 columnas, que se refieren al centro, al curso y al numero de alumnos de un colegio respectivamente. Imprimir la nota media por curso y la nota media maxima y su centro de pertenencia.
PROGRAMA notas ENTORNO: max <- -1 sum <- 0 centro <- 0 i <- 1 j <- 1 k <- 1 fi <- 10 ALGORITMO: Borrar_pantalla( ) EN 8,18 ESCRIBIR "Centro" EN 8,38 ESCRIBIR "Nota media" MIENTRAS i <= 5 HACER MIENTRAS j <= 10 HACER MIENTRAS k <= 20 HACER sum <- sum + A[ i, j, k ] k <- k + 1 FINMIENTRAS j <- j + 1 FINMIENTRAS EN fi,20 ESCRIBIR i EN fi,40 ESCRIBIR sum / 20 fi <- fi + 2 SI sum / 20 > max ENTONCES max <- sum / 20

Pgina 39 de 51

centro <- i FINSI i <- i + 1 FINMIENTRAS EN fi + 2,20 ESCRIBIR "Nota media m xima: " EN fi + 2,39 ESCRIBIR max EN fi + 4, 20 ESCRIBIR "pertenece al centro: " EN fi + 4,41 ESCRIBIR centro FINPROGRAMA

42.-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, VENTAS[ representante, mes, producto ]. Queremos proyectar el array tridimensional sobre uno de dos dimensiones que represente el total de ventas, TOTAL[ mes, producto ], para lo cual sumamos las ventas de cada producto de cada mes de todos los representantes. Imprimir ambos arrays.
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, 4 ] j <- 1 MIENTRAS j <= 12 HACER k <- 1 MIENTRAS k <= 4 HACER i <- 1 suma <- 0 MIENTRAS i <= 3 HACER suma <- suma + VENTAS[ i, j, k ] i <- i + 1 FINMIENTRAS TOTAL[ j, k ] <- suma k <- k + 1 FINMIENTRAS j <- j + 1 FINMIENTRAS FINSUBPROGRAMA -----------------------------SUBPROGRAMA Imp_Tres i <- 1 MIENTRAS i <= 3 HACER Borrar_pantalla( ) fi <- 8 co <- 12 EN fi,co ESCRIBIR "Ventas del representante: " EN fi,co + 26 ESCRIBIR i fi <- fi + 2 j <- 1 MIENTRAS j <= 12 HACER k <- 1 MIENTRAS k <= 4 HACER EN fi,co ESCRIBIR VENTAS[ i, j, k ] co <- co + 4 k <- k + 1 FINMIENTRAS fi <- fi + 2 co <- 12 j <- j + 1

Pgina 40 de 51

FINMIENTRAS Pausa( ) i <- i + 1 FINMIENTRAS FINSUBPROGRAMA -----------------------------SUBPROGRAMA Imp_Dos Borrar_pantalla( ) j <- 1 EN 8,20 ESCRIBIR "Ventas totales" fi <- 10 co <- 16 MIENTRAS j <= 12 HACER k <- 1 MIENTRAS k <= 4 HACER EN fi,co ESCRIBIR TOTAL[ j, k ] co <- co + 4 k <- k + 1 FINMIENTRAS fi <- fi + 2 co <- 12 j <- j + 1 FINMIENTRAS FINSUBPROGRAMA

Ficheros
43.-Hacer un programa que nos permita dar altas en el fichero secuencial DATOS.DAT, cuyos campos son: DNI, NOMBRE, APELLIDOS, DIRECCION y PROVINCIA. [code] PROGRAMA altas ENTORNO: res <- "S" ALGORITMO: MIENTRAS res = "S" HACER ABRIR "DATOS.DAT" sw <- 0 num <- 0 Borrar_pantalla( ) EN 5,10 ESCRIBIR "D.N.I.: " EN 5,18 LEER num MIENTRAS NO Eof( ) Y sw = 0 HACER SI dni = num ENTONCES EN 10,10 ESCRIBIR "Alta duplicada" EN 15,10 ESCRIBIR "Pulse INTRO para continuar" Pausa( ) sw <- 1 SINO Siguiente_registro( ) FINSI FINMIENTRAS SI sw = 0 ENTONCES EN 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 nombre EN 9,16 LEER apellidos EN 11,16 LEER direccion

Pgina 41 de 51

EN 13,16 LEER provincia dni <- num Final_fichero( ) Escribir_registro( ) FINSI CERRAR "DATOS.DAT" res <- 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 <- Convertir_mayusculas( res )

LISTA DE ALGORITMOS
1. Este algoritmo nos pide dos nmeros cualesquiera y nos muestra por pantalla si el cuadrado del primero es mayor que el cubo del segundo.

2.Este algoritmo nos pide ingresar diez nmeros cualesquiera y nos muestra por pantalla la cantidad de nmeros positivos, negativos y nulos que se hayan digitado, ademas tambin nos muestra la suma de positivos y negativos.

3.Este algoritmo nos pide ingresar tres nmeros y nos muestra por pantalla el orden ascendente de estos nmeros.

4.Este algoritmo nos pide ingresar la cantidad de nmeros que se quieran evaluar, luego nos pide digitar los nmeros elegidos y nos muestra por pantalla la cantidad y el producto de los nmeros pares e impares que se hayan introducido. Pgina 42 de 51

Pgina 43 de 51

Ac adjunto el cdigo ya que la imagen no se ve bien 1 Proceso Numeros_Pares_Impares 2cont<-c Pgina 44 de 51

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: ", numpar 22 Si numpar=0 Entonces 23Escribir "el producto de los numeros pares es: ", prodpar-1 24 Sino 25Escribir "el producto de los numeros pares es: ", prodpar 26 FinSi 27Escribir "la cantidad de numeros impares es: ", numimpar 28 Si numimpar=0 Entonces 29Escribir "el producto de los numeros impares es: ", prodimpar-1 30 Sino 31Escribir "el producto de los numeros impares es: ", prodimpar 32 FinSi 33 FinProceso

5.Este algoritmo nos pide ingresar un numero y nos muestra por pantalla si es primo o no.

6.Este algoritmo nos muestra por pantalla los nmeros pares menores que cien.

7.Este algoritmo nos muestra por pantalla los nmeros mltiplos de cinco menores que mil. Pgina 45 de 51

8.Este algoritmo nos muestra los nmeros menores que "n" nmeros.

9.Este algoritmo nos pide ingresar "n" nmeros cualesquiera y nos muestra por pantalla la cantidad de nmeros positivos, negativos y nulos ingresados.

10. Este algoritmo nos pide ingresar el numero de trabajadores de una plantilla, la tarifa por hora, el numero de horas trabajadas y nos muestra por pantalla el salario para cada empleado y el de la nomina en total.

11.Este algoritmo nos pide el numero de horas trabajadas y la tarifa por hora y no muestra el sueldo del trabajador, teniendo en cuenta que si el numero de horas trabajadas es mayor de cuarenta, entonces le descuentan el cinco porciento.

12.Este algoritmo nos permite hallar el volumen y el rea de un cilindro.

13. Este algoritmo nos muestra todos los nmeros impares del uno hasta el cien, y tambin la cantidad que hay.

Pgina 46 de 51

14. Con este algoritmo podemos multiplicar cinco nmeros cualesquiera.

15.Este algoritmo nos muestra por pantalla los nmeros del uno hasta el cien.

16.Este algoritmo es el contrario del programa anterior, nos muestra por pantalla los nmeros del cien al uno.

Pgina 47 de 51

17.Este algoritmo nos muestra los nmeros pares positivos menores que cien, utiliza el ciclo Para.

18. Este algoritmo nos pide ingresar una cantidad cualquiera de trabajadores, luego un sueldo que no necesariamente tiene que ser el mismo para todos, si el sueldo es menor igual a mil, le descuentan el diez porciento; si el sueldo esta entre mil y dos mil, le descuentan el cinco porciento; y si es mayor que dos mil, le descuentan el tres porciento, luego nos muestra por pantalla un sueldo neto para cada intervalo de descuento (si los hay) y la nomina total de la empresa.

Pgina 48 de 51

19. Este algoritmo seria parecido al anterior, solo que en este solo es para un trabajador.

Pgina 49 de 51

20. Con este algoritmo podemos sumar diez nmeros cualesquiera.

Pgina 50 de 51

21.Este es parecido a uno descrito anteriormente, solo que utiliza el ciclo para, nos muestra por pantalla los nmeros del uno al cien, nos dice la cantidad de pares e impares, y ademas la suma entre pares y luego la suma entre impares.

Pgina 51 de 51