SlideShare una empresa de Scribd logo
1 de 27
http://pseint.sourceforge.net/index.php?page=pseudocodigo.php
Advertencia: Las sintaxis que aquí se presenta corresponde a la sintaxis en la cual se
basó originalmente el proyecto. Desde hace varias versiones estoy buscando que en la
palabra pseudocódigo pese más la parte pseudo que la de código. Para ello se han
agregado posibles sinónimos, sintaxis alternativas o versiones incompletas de algunas
construcciones en pos de desrigidizar el pseudolenguaje utilizado, siempre y cuando no
se caiga en ninguna ambigüedad respecto a su interpretación. Actualmente, el intérprete
puede configurarse para obligar al alumno a respetar completamente la sintaxis original,
aceptar las variaciones, o algunos grados intermedios (ver perfiles para una comparación
entre dos versiones de un mismo algoritmo).
El Pseudo-código
Las características de este pseudolenguaje fueron propuestas en 2001 por el responsable
de la asignatura Fundamentos de Programación de la carrera de Ingeniería Informática
de la FICH-UNL. Las premisas son:
Sintaxis sencilla
Manejo de las estructuras básicas de control
Solo 3 tipos de datos básicos: numérico, caracter /cadenas de caracteres y lógico (verdadero-
falso).
Estructuras de datos: arreglos
Todo algoritmo en pseudocógido tiene la siguiente estructura general:
Proceso SinTitulo
accion 1;
accion1;
.
.
.
accion n;
FinProceso
Comienza con la palabra clave Proceso seguida del nombre del programa, luego le sigue una
secuencia de instrucciones y finaliza con la palabra FinProceso. Una secuencia de instrucciones es
una lista de una o más instrucciones, cada una terminada en punto y coma.
Las acciones incluyen operaciones de entrada y salida, asignaciones de variables, condicionales si-
entonces o de selección múltiple y/o lazos mientras, repetir o para.
Asignación
La instrucción de asignación permite almacenar una valor en una variable.
<variable><- <expresión> ;
Al ejecutarse la asignación, primero se evalúa la expresión de la derecha y luego se asigna el
resultado a la variable de la izquierda. El tipo de la variable y el de la expresión deben coincidir.
Entradas
La instrucción Leer permite ingresar información desde el ambiente.
Leer <variablel> ,<variable2> , ... ,
<variableN> ;
Esta instrucción lee N valores desde el ambiente (en este caso el teclado) y los asigna a las N
variables mencionadas. Pueden incluirse una o más variables, por lo tanto el comando leerá uno o
más valores.
Salidas
La instrucción Escribir permite mostrar valores al ambiente.
Escribir <exprl> ,<expr2> , ... , <exprN> ;
Esta instrucción imprime al ambiente (en este caso en la pantalla) los valores obtenidos de evaluar
N expresiones. Dado que puede incluir una o más expresiones, mostrará uno o más valores.
Dimensionamiento
La instrucción Dimension permite definir un arreglo, indicando sus dimensiones.
Dimesion<identificador> (<maxl>,...,<maxN>);
Esta instrucción define un arreglo con el nombre indicado en <indentificador> y N dimensiones.
Los N parámetros indican la cantidad de dimensiones y el valor máximo de cada una de ellas. La
cantidad de dimensiones puede ser una o más, y la máxima cantidad de elementos debe ser una
expresión numérica positiva.
Se pueden definir más de un arreglo en una misma instrucción, separándolos con una coma (,).
Dimension<ident1> (<max11>,...,<max1N>),..., <identM>
(<maxM1>,...,<maxMN>)
Es importante notar que es necesario definir un arreglo antes de utilizarlo.
Condicional Si-Entonces
La secuencia de instrucciones ejecutadas por la instrucción Si-Entonces-Sino depende del valor de
una condición lógica.
Si <condición>
Entonces
<instrucciones>
Sino
<instrucciones>
FinSi
Al ejecutarse esta instrucción, se evalúa la condición y se ejecutan las instrucciones que
correspondan: las instrucciones que le siguen al Entonces si la condición es verdadera, o las
instrucciones que le siguen al Sino si la condición es falsa. La condición debe ser una expresión
lógica, que al ser evaluada retorna Verdadero o Falso.
La cláusula Entonces debe aparecer siempre, pero la cláusla Sino puede no estar. En ese caso, si la
condición es falsa no se ejecuta ninguna instrucción y la ejecución del programa continúa con la
instrucción siguiente.
Selección Multiple
La secuencia de instrucciones ejecutada por una instrucción Segun depende del valor de una
variable numérica.
Segun<variable> Hacer
<número1>: <instrucciones>
<número2>,<número3>: <instrucciones>
<...>
De Otro Modo: <instrucciones>
FinSegun
Esta instrucción permite ejecutar opcionalmente varias acciones posibles, dependiendo del valor
almacenado en una variable de tipo numérico. Al ejecutarse, se evalúa el contenido de la variable y
se ejecuta la secuencia de instrucciones asociada con dicho valor.
Cada opción está formada por uno o más números separados por comas, dos puntos y una secuencia
de instrucciones. Si una opción incluye varios números, la secuencia de instrucciones asociada se
debe ejecutar cuando el valor de la variable es uno de esos números.
Opcionalmente, se puede agregar una opción final, denominada De Otro Modo, cuya secuencia de
instrucciones asociada se ejecutará sólo si el valor almacenado en la variable no coincide con
ninguna de las opciones anteriores.
Lazos Mientras
La instrucción Mientras ejecuta una secuencia de instrucciones mientras una condición sea
verdadera.
Mientras <condición> Hacer
<instrucciones>
FinMientras
Al ejecutarse esta instrucción, la condición es evaluada. Si la condición resulta verdadera, se ejecuta
una vez la secuencia de instrucciones que forman el cuerpo del ciclo. Al finalizar la ejecución del
cuerpo del ciclo se vuelve a evaluar la condición y, si es verdadera, la ejecución se repite. Estos
pasos se repiten mientras la condición sea verdadera.
Note que las instrucciones del cuerpo del ciclo pueden no ejecutarse nunca, si al evaluar por
primera vez la condición resulta ser falsa.
Si la condición siempre es verdadera, al ejecutar esta instrucción se produce un ciclo infinito. A fin
de evitarlo, las instrucciones del cuerpo del ciclo deben contener alguna instrucción que modifique
la o las variables involucradas en la condición, de modo que ésta sea falsificada en algún momento
y así finalice la ejecución del ciclo.
Lazos Repetir
La instrucción Repetir-Hasta Que ejecuta una secuencia de instrucciones hasta que la condición sea
verdadera.
Repetir
<instrucciones>
Hasta Que <condición>
Al ejecutarse esta instrucción, la secuencia de instrucciones que forma el cuerpo del ciclo se ejecuta
una vez y luego se evalúa la condición. Si la condición es falsa, el cuerpo del ciclo se ejecuta
nuevamente y se vuelve a evaluar la condición. Esto se repite hasta que la condición sea verdadera.
Note que, dado que la condición se evalúa al final, las instrucciones del cuerpo del ciclo serán
ejecutadas al menos una vez.
Además, a fin de evitar ciclos infinitos, el cuerpo del ciclo debe contener alguna instrucción que
modifique la o las variables involucradas en la condición de modo que en algún momento la
condición sea verdadera y se finalice la ejecución del ciclo.
Lazos Para
La instrucción Para ejecuta una secuencia de instrucciones un número determinado de veces.
Para <variable><- <inicial> Hasta <final>( Con Paso <paso> ) Hacer
<instrucciones>
FinPara
Al ingresar al bloque, la variable <variable> recibe el valor <inicial> y se ejecuta la secuencia de
instrucciones que forma el cuerpo del ciclo. Luego se incrementa la variable <variable> en <paso>
unidades y se evalúa si el valor almacenado en <variable> superó al valor <final>. Si esto es falso
se repite hasta que <variable> supere a <final>. Si se omite la cláusula Con Paso<paso>, la variable
<variable> se incrementará en 1.
Operadores y Funciones
Este pseudolenguaje dispone de un conjunto básico de operadores y funciones que pueden ser
utilizados para la construcción de expresiones más o menos complejas.
Las siguientes tablas exhiben la totalidad de los operadores de este lenguaje reducido:
Operador Significado Ejemplo
Relacionales
> Mayor que 3>2
< Menor que 'ABC'<'abc'
= Igual que 4=3
<= Menor o igual que 'a'<='b'
>= Mayor o igual que 4>=5
Logicos
& ó Y Conjunción (y). (7>4) & (2=1) //falso
| ó O Disyunción (o). (1=1 | 2=1) //verdadero
~ ó NO Negación (no). ~(2<5) //falso
Algebraicos
+ Suma total <- cant1 + cant2
- Resta stock <- disp - venta
* Multiplicación area<- base * altura
/ División porc<- 100 * parte / total
^ Potenciación sup<- 3.41 * radio ^ 2
% ó MOD Módulo (resto de la división entera) resto <- num MOD div
La jerarquía de los operadores matemáticos es igual a la del álgebra, aunque puede alterarse
mediante el uso de paréntesis.
A continuación se listan las funciones integradas disponibles:
Función Significado
RC(X) Raíz Cuadrada de X
ABS(X) Valor Absoluto de X
LN(X) Logaritmo Natural de X
EXP(X) Función Exponencial de X
SEN(X) Seno de X
COS(X) Coseno de X
ATAN(X) Arcotangente de X
TRUNC(X) Parte entera de X
REDON(X) Entero más cercano a X
AZAR(X) Entero aleatorio entre 0 y X-1
Algunas Observaciones
Se pueden introducir comentarios luego de una instrucción, o en líneas separadas, mediante el
uso de la doble barra ( // ). Todo lo que precede a //, hasta el fin de la línea, no será tomado en
cuenta al interpretar el algoritmo.
Notese que no puede haber instrucciones fuera del programa, aunque si comentarios.
Las estructuras no secuenciales pueden anidarse. Es decir, pueden contener otras adentro, pero la
estructura contenida debe comenzar y finalizar dentro de la contenedora.
Los identificadores, o nombres de variables, deben constar sólo de letras y números, comenzando
siempre con una letra, y no pueden ser palabras reservadas (como para, mientras, y, no, etc...)
Las constantes de tipo carácter se escriben entre comillas ( " ).
En las constantes numéricas, el punto( . ) es el separador decimal.
Las constantes lógicas son Verdadero y Falso.
Ejemplos
Ver sección ejemplos...
Ejemplos de algoritmos en PSeudoCodigo
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.
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
Factorizacion: descompone un numero en sus factores primos.
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;
sino
escribir div;
num<-num/div;
factor_primo<-verdadero;
FinSi
FinSi
FinMientras
FinProceso
Http estructa
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.
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 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
FinSi
finsi
finmientras
// mostrar resultado
escribir "";
escribir "";
escribir "Juego finalizado en ",cant_movs," movimientos!";
escribir "";
FinProces
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.).
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;
SegunOpcion 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 'FuncExpon.:',exp(N);
FinSi
3:
Escribir 'Turncar:',trunc(N);
Escribir 'Redondear:',redon(N);
4: Escribir 'RaizCuad.:',rc(N);
5: Escribir 'Valor Abs.:',abs(N);
6:
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!';
FinSegun
Hasta que Salir=1
FinProceso
Mayores: Busca los dos mayores de una lista de N datos
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
Http estructa
Modulo: Ejemplo trivial del uso del operador de módulo (MOD o %).
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,".";
Sino
Escribir "El resto de dividir ",N," por ",M," es: ",N mod M;
FinSi
FinProceso
OrdenaLista: ordena una lista de nombres alfabeticamente.
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
Http estructa
Promedio: calcula el promedio de una lista de datos.
Promedio.psc
// Calcula el promedio de una lista de N datos
Proceso Promedio
Escribir "Ingrese la cantidad de datos:";
Leer n;
acum<-0;
Para i<-1 Hasta n Hacer
Escribir "Ingrese el dato ",i,":";
Leer dato;
acum<-acum+dato;
FinPara
prom<-acum/n;
Escribir "El promedio es: ",prom;
FinProceso
Resolvente: calcula e informa las raices de una ecuacion de cuadratica,
considerando los tres casos (reales iguales, reales distintas, o complejas
conjugadas).
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: se obtienen datos acerca de las ventas de una empresa ingresando
las cantidades vendidas por articulo y sucursal, junto con el listado de precios.
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
DimensionPrec[5], Cant[4,5];
// Leer Precios
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
Http estructa
Triangulo: calcula el area de un triangulorectangulo, verificando primero que lo
sea mediante el teorema de pitagoras.
Triangulo.psc
// Lee los tres lados de un triangulorectangulo, determina
// si corresponden (por Pitargoras) y en caso afirmativo
// calcula el area
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
// calcualararea
area<-(cat1*cat2)/2;
Escribir "El area es: ",area;
Sino
Escribir "No es un triangulorectangulo.";
FinSi
FinProceso
Http estructa

Más contenido relacionado

La actualidad más candente

Presentacion ciclos-1
Presentacion ciclos-1Presentacion ciclos-1
Presentacion ciclos-1sena
 
Certificación java 6 cap 5
Certificación java 6 cap 5Certificación java 6 cap 5
Certificación java 6 cap 5srBichoRaro
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosmarigelcontreras
 
Complemento Ciclos
Complemento CiclosComplemento Ciclos
Complemento CiclosJairo Marin
 
Estructuras repetitivas for y while
Estructuras repetitivas for y whileEstructuras repetitivas for y while
Estructuras repetitivas for y whilechristianlopezth
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de controlLic_Vera
 
Estructuras repetitivas
Estructuras repetitivasEstructuras repetitivas
Estructuras repetitivassena
 
Estructuras de control de flujo
Estructuras de control de flujoEstructuras de control de flujo
Estructuras de control de flujoAliandroMejias
 
Sintaxis Básica del lenguaje Java
Sintaxis Básica del lenguaje JavaSintaxis Básica del lenguaje Java
Sintaxis Básica del lenguaje JavaRay
 
Estructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoEstructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoRosbelia Balza
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de controlralhum
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Javaquesada_diego
 
Toma de decisiones If Else
Toma de decisiones If ElseToma de decisiones If Else
Toma de decisiones If Elsecompumet sac
 

La actualidad más candente (20)

Presentacion ciclos-1
Presentacion ciclos-1Presentacion ciclos-1
Presentacion ciclos-1
 
Certificación java 6 cap 5
Certificación java 6 cap 5Certificación java 6 cap 5
Certificación java 6 cap 5
 
Estructura repetitiva for y while
Estructura repetitiva for y whileEstructura repetitiva for y while
Estructura repetitiva for y while
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestos
 
Complemento Ciclos
Complemento CiclosComplemento Ciclos
Complemento Ciclos
 
Estructuras repetitivas for y while
Estructuras repetitivas for y whileEstructuras repetitivas for y while
Estructuras repetitivas for y while
 
Ciclos
CiclosCiclos
Ciclos
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Estructuras repetitivas
Estructuras repetitivasEstructuras repetitivas
Estructuras repetitivas
 
15 Curso de POO en java - estructuras repetitivas
15 Curso de POO en java - estructuras repetitivas15 Curso de POO en java - estructuras repetitivas
15 Curso de POO en java - estructuras repetitivas
 
Estructuras de control de flujo
Estructuras de control de flujoEstructuras de control de flujo
Estructuras de control de flujo
 
Sintaxis Básica del lenguaje Java
Sintaxis Básica del lenguaje JavaSintaxis Básica del lenguaje Java
Sintaxis Básica del lenguaje Java
 
Juan camilo leon 10 1
Juan camilo leon 10 1Juan camilo leon 10 1
Juan camilo leon 10 1
 
Estructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoEstructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigo
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Contadores y Acumuladores
Contadores y AcumuladoresContadores y Acumuladores
Contadores y Acumuladores
 
Toma de decisiones If Else
Toma de decisiones If ElseToma de decisiones If Else
Toma de decisiones If Else
 
Estructura selectiva
Estructura selectivaEstructura selectiva
Estructura selectiva
 

Destacado

Destacado (9)

Elaboração de slides_sabrina
Elaboração de slides_sabrina Elaboração de slides_sabrina
Elaboração de slides_sabrina
 
Trabajo final grupo441 2-con audio
Trabajo final  grupo441 2-con audioTrabajo final  grupo441 2-con audio
Trabajo final grupo441 2-con audio
 
Change.org Session Bundesjugendring 2013
Change.org Session Bundesjugendring 2013Change.org Session Bundesjugendring 2013
Change.org Session Bundesjugendring 2013
 
wey aquii esta mi trabajo no mames
wey aquii esta mi trabajo no mameswey aquii esta mi trabajo no mames
wey aquii esta mi trabajo no mames
 
English trivial
English trivialEnglish trivial
English trivial
 
Trabajo autonomos
Trabajo autonomosTrabajo autonomos
Trabajo autonomos
 
Cv detailed
Cv detailedCv detailed
Cv detailed
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo
 

Similar a Http estructa (20)

fTópicos 2.0
fTópicos 2.0fTópicos 2.0
fTópicos 2.0
 
Estructuras PseInt
Estructuras PseIntEstructuras PseInt
Estructuras PseInt
 
2ª unidad de algoritmo
2ª unidad de algoritmo2ª unidad de algoritmo
2ª unidad de algoritmo
 
Parcial
ParcialParcial
Parcial
 
Presentación
Presentación Presentación
Presentación
 
Estructuras básicas.docx
Estructuras básicas.docxEstructuras básicas.docx
Estructuras básicas.docx
 
Tecnologia
Tecnologia Tecnologia
Tecnologia
 
Algoritmosenpseudocdigo
AlgoritmosenpseudocdigoAlgoritmosenpseudocdigo
Algoritmosenpseudocdigo
 
Algoritmos en pseudocódigo
Algoritmos en pseudocódigoAlgoritmos en pseudocódigo
Algoritmos en pseudocódigo
 
Exposicion de programacion merlin
Exposicion de programacion merlinExposicion de programacion merlin
Exposicion de programacion merlin
 
Ciclos
CiclosCiclos
Ciclos
 
métodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control javamétodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control java
 
Manual de Uso PseInt
Manual de Uso PseIntManual de Uso PseInt
Manual de Uso PseInt
 
Documento sin título (1).docx
Documento sin título (1).docxDocumento sin título (1).docx
Documento sin título (1).docx
 
Estructuras basicas de un algoritmo
Estructuras basicas de un algoritmoEstructuras basicas de un algoritmo
Estructuras basicas de un algoritmo
 
Algortimos jury
Algortimos juryAlgortimos jury
Algortimos jury
 
Guia 4
Guia 4Guia 4
Guia 4
 
Metodología de la programación
Metodología de la programaciónMetodología de la programación
Metodología de la programación
 
Estructuras condicionales
Estructuras condicionalesEstructuras condicionales
Estructuras condicionales
 
Diapositiva
DiapositivaDiapositiva
Diapositiva
 

Último

TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfJoseAlejandroPerezBa
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxPaolaCarolinaCarvaja
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfodalistar77
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfangelinebocanegra1
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.marianarodriguezc797
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....Aaron Betancourt
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosLCristinaForchue
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidaddanik1023m
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETGermán Küber
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSLincangoKevin
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...OLGAMILENAMONTAEZNIO
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx Emialexsolar
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2montoyagabriela340
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfalejandrogomezescoto
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfcastrodanna185
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfOBr.global
 

Último (20)

TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
 
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura SilvaBEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docx
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdf
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdf
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
 
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier FolchBEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidad
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx E
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdf
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
 

Http estructa

  • 1. http://pseint.sourceforge.net/index.php?page=pseudocodigo.php Advertencia: Las sintaxis que aquí se presenta corresponde a la sintaxis en la cual se basó originalmente el proyecto. Desde hace varias versiones estoy buscando que en la palabra pseudocódigo pese más la parte pseudo que la de código. Para ello se han agregado posibles sinónimos, sintaxis alternativas o versiones incompletas de algunas construcciones en pos de desrigidizar el pseudolenguaje utilizado, siempre y cuando no se caiga en ninguna ambigüedad respecto a su interpretación. Actualmente, el intérprete puede configurarse para obligar al alumno a respetar completamente la sintaxis original, aceptar las variaciones, o algunos grados intermedios (ver perfiles para una comparación entre dos versiones de un mismo algoritmo). El Pseudo-código Las características de este pseudolenguaje fueron propuestas en 2001 por el responsable de la asignatura Fundamentos de Programación de la carrera de Ingeniería Informática de la FICH-UNL. Las premisas son: Sintaxis sencilla Manejo de las estructuras básicas de control Solo 3 tipos de datos básicos: numérico, caracter /cadenas de caracteres y lógico (verdadero- falso). Estructuras de datos: arreglos Todo algoritmo en pseudocógido tiene la siguiente estructura general: Proceso SinTitulo accion 1; accion1; . . . accion n; FinProceso Comienza con la palabra clave Proceso seguida del nombre del programa, luego le sigue una secuencia de instrucciones y finaliza con la palabra FinProceso. Una secuencia de instrucciones es una lista de una o más instrucciones, cada una terminada en punto y coma. Las acciones incluyen operaciones de entrada y salida, asignaciones de variables, condicionales si- entonces o de selección múltiple y/o lazos mientras, repetir o para.
  • 2. Asignación La instrucción de asignación permite almacenar una valor en una variable. <variable><- <expresión> ; Al ejecutarse la asignación, primero se evalúa la expresión de la derecha y luego se asigna el resultado a la variable de la izquierda. El tipo de la variable y el de la expresión deben coincidir. Entradas La instrucción Leer permite ingresar información desde el ambiente. Leer <variablel> ,<variable2> , ... , <variableN> ; Esta instrucción lee N valores desde el ambiente (en este caso el teclado) y los asigna a las N variables mencionadas. Pueden incluirse una o más variables, por lo tanto el comando leerá uno o más valores. Salidas La instrucción Escribir permite mostrar valores al ambiente. Escribir <exprl> ,<expr2> , ... , <exprN> ; Esta instrucción imprime al ambiente (en este caso en la pantalla) los valores obtenidos de evaluar N expresiones. Dado que puede incluir una o más expresiones, mostrará uno o más valores. Dimensionamiento La instrucción Dimension permite definir un arreglo, indicando sus dimensiones. Dimesion<identificador> (<maxl>,...,<maxN>); Esta instrucción define un arreglo con el nombre indicado en <indentificador> y N dimensiones. Los N parámetros indican la cantidad de dimensiones y el valor máximo de cada una de ellas. La cantidad de dimensiones puede ser una o más, y la máxima cantidad de elementos debe ser una expresión numérica positiva. Se pueden definir más de un arreglo en una misma instrucción, separándolos con una coma (,). Dimension<ident1> (<max11>,...,<max1N>),..., <identM> (<maxM1>,...,<maxMN>) Es importante notar que es necesario definir un arreglo antes de utilizarlo.
  • 3. Condicional Si-Entonces La secuencia de instrucciones ejecutadas por la instrucción Si-Entonces-Sino depende del valor de una condición lógica. Si <condición> Entonces <instrucciones> Sino <instrucciones> FinSi Al ejecutarse esta instrucción, se evalúa la condición y se ejecutan las instrucciones que correspondan: las instrucciones que le siguen al Entonces si la condición es verdadera, o las instrucciones que le siguen al Sino si la condición es falsa. La condición debe ser una expresión lógica, que al ser evaluada retorna Verdadero o Falso. La cláusula Entonces debe aparecer siempre, pero la cláusla Sino puede no estar. En ese caso, si la condición es falsa no se ejecuta ninguna instrucción y la ejecución del programa continúa con la instrucción siguiente. Selección Multiple La secuencia de instrucciones ejecutada por una instrucción Segun depende del valor de una variable numérica. Segun<variable> Hacer <número1>: <instrucciones> <número2>,<número3>: <instrucciones> <...> De Otro Modo: <instrucciones> FinSegun Esta instrucción permite ejecutar opcionalmente varias acciones posibles, dependiendo del valor almacenado en una variable de tipo numérico. Al ejecutarse, se evalúa el contenido de la variable y se ejecuta la secuencia de instrucciones asociada con dicho valor. Cada opción está formada por uno o más números separados por comas, dos puntos y una secuencia de instrucciones. Si una opción incluye varios números, la secuencia de instrucciones asociada se debe ejecutar cuando el valor de la variable es uno de esos números. Opcionalmente, se puede agregar una opción final, denominada De Otro Modo, cuya secuencia de instrucciones asociada se ejecutará sólo si el valor almacenado en la variable no coincide con ninguna de las opciones anteriores.
  • 4. Lazos Mientras La instrucción Mientras ejecuta una secuencia de instrucciones mientras una condición sea verdadera. Mientras <condición> Hacer <instrucciones> FinMientras Al ejecutarse esta instrucción, la condición es evaluada. Si la condición resulta verdadera, se ejecuta una vez la secuencia de instrucciones que forman el cuerpo del ciclo. Al finalizar la ejecución del cuerpo del ciclo se vuelve a evaluar la condición y, si es verdadera, la ejecución se repite. Estos pasos se repiten mientras la condición sea verdadera. Note que las instrucciones del cuerpo del ciclo pueden no ejecutarse nunca, si al evaluar por primera vez la condición resulta ser falsa. Si la condición siempre es verdadera, al ejecutar esta instrucción se produce un ciclo infinito. A fin de evitarlo, las instrucciones del cuerpo del ciclo deben contener alguna instrucción que modifique la o las variables involucradas en la condición, de modo que ésta sea falsificada en algún momento y así finalice la ejecución del ciclo. Lazos Repetir La instrucción Repetir-Hasta Que ejecuta una secuencia de instrucciones hasta que la condición sea verdadera. Repetir <instrucciones> Hasta Que <condición> Al ejecutarse esta instrucción, la secuencia de instrucciones que forma el cuerpo del ciclo se ejecuta una vez y luego se evalúa la condición. Si la condición es falsa, el cuerpo del ciclo se ejecuta nuevamente y se vuelve a evaluar la condición. Esto se repite hasta que la condición sea verdadera. Note que, dado que la condición se evalúa al final, las instrucciones del cuerpo del ciclo serán ejecutadas al menos una vez. Además, a fin de evitar ciclos infinitos, el cuerpo del ciclo debe contener alguna instrucción que modifique la o las variables involucradas en la condición de modo que en algún momento la condición sea verdadera y se finalice la ejecución del ciclo.
  • 5. Lazos Para La instrucción Para ejecuta una secuencia de instrucciones un número determinado de veces. Para <variable><- <inicial> Hasta <final>( Con Paso <paso> ) Hacer <instrucciones> FinPara Al ingresar al bloque, la variable <variable> recibe el valor <inicial> y se ejecuta la secuencia de instrucciones que forma el cuerpo del ciclo. Luego se incrementa la variable <variable> en <paso> unidades y se evalúa si el valor almacenado en <variable> superó al valor <final>. Si esto es falso se repite hasta que <variable> supere a <final>. Si se omite la cláusula Con Paso<paso>, la variable <variable> se incrementará en 1. Operadores y Funciones Este pseudolenguaje dispone de un conjunto básico de operadores y funciones que pueden ser utilizados para la construcción de expresiones más o menos complejas. Las siguientes tablas exhiben la totalidad de los operadores de este lenguaje reducido: Operador Significado Ejemplo Relacionales > Mayor que 3>2 < Menor que 'ABC'<'abc' = Igual que 4=3 <= Menor o igual que 'a'<='b' >= Mayor o igual que 4>=5 Logicos & ó Y Conjunción (y). (7>4) & (2=1) //falso | ó O Disyunción (o). (1=1 | 2=1) //verdadero ~ ó NO Negación (no). ~(2<5) //falso Algebraicos + Suma total <- cant1 + cant2 - Resta stock <- disp - venta * Multiplicación area<- base * altura / División porc<- 100 * parte / total ^ Potenciación sup<- 3.41 * radio ^ 2 % ó MOD Módulo (resto de la división entera) resto <- num MOD div La jerarquía de los operadores matemáticos es igual a la del álgebra, aunque puede alterarse mediante el uso de paréntesis.
  • 6. A continuación se listan las funciones integradas disponibles: Función Significado RC(X) Raíz Cuadrada de X ABS(X) Valor Absoluto de X LN(X) Logaritmo Natural de X EXP(X) Función Exponencial de X SEN(X) Seno de X COS(X) Coseno de X ATAN(X) Arcotangente de X TRUNC(X) Parte entera de X REDON(X) Entero más cercano a X AZAR(X) Entero aleatorio entre 0 y X-1 Algunas Observaciones Se pueden introducir comentarios luego de una instrucción, o en líneas separadas, mediante el uso de la doble barra ( // ). Todo lo que precede a //, hasta el fin de la línea, no será tomado en cuenta al interpretar el algoritmo. Notese que no puede haber instrucciones fuera del programa, aunque si comentarios. Las estructuras no secuenciales pueden anidarse. Es decir, pueden contener otras adentro, pero la estructura contenida debe comenzar y finalizar dentro de la contenedora. Los identificadores, o nombres de variables, deben constar sólo de letras y números, comenzando siempre con una letra, y no pueden ser palabras reservadas (como para, mientras, y, no, etc...) Las constantes de tipo carácter se escriben entre comillas ( " ). En las constantes numéricas, el punto( . ) es el separador decimal. Las constantes lógicas son Verdadero y Falso. Ejemplos Ver sección ejemplos... Ejemplos de algoritmos en PSeudoCodigo 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.
  • 7. AdivinaNumero: simple juego en el que hay que adivinar un nro aleatorio entre 1 y 100 en menos de 10 intentos. 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
  • 8. Factorizacion: descompone un numero en sus factores primos. Proceso Factorizacion Escribir "Ingrese el numero: "; Leer num; Escribir "Factorizacion: "; factorizar<-verdadero; Mientras factorizar Y num>1 hacer div<-0;
  • 9. 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; sino escribir div; num<-num/div; factor_primo<-verdadero; FinSi FinSi FinMientras FinProceso
  • 11. 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. 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 "";
  • 12. 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 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
  • 13. 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 FinSi finsi finmientras // mostrar resultado escribir ""; escribir ""; escribir "Juego finalizado en ",cant_movs," movimientos!"; escribir ""; FinProces 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.). 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 ' ';
  • 14. Leer Opcion; SegunOpcion 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 'FuncExpon.:',exp(N); FinSi 3: Escribir 'Turncar:',trunc(N); Escribir 'Redondear:',redon(N); 4: Escribir 'RaizCuad.:',rc(N); 5: Escribir 'Valor Abs.:',abs(N); 6: 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;
  • 15. 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!'; FinSegun Hasta que Salir=1 FinProceso Mayores: Busca los dos mayores de una lista de N datos 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
  • 16. Escribir "El mayor es: ",may1; Escribir "El segundo mayor es: ",may2; FinProceso
  • 18. Modulo: Ejemplo trivial del uso del operador de módulo (MOD o %). 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,"."; Sino Escribir "El resto de dividir ",N," por ",M," es: ",N mod M; FinSi FinProceso OrdenaLista: ordena una lista de nombres alfabeticamente. 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
  • 19. 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
  • 21. Promedio: calcula el promedio de una lista de datos. Promedio.psc // Calcula el promedio de una lista de N datos Proceso Promedio Escribir "Ingrese la cantidad de datos:"; Leer n; acum<-0; Para i<-1 Hasta n Hacer Escribir "Ingrese el dato ",i,":"; Leer dato; acum<-acum+dato; FinPara prom<-acum/n; Escribir "El promedio es: ",prom; FinProceso
  • 22. Resolvente: calcula e informa las raices de una ecuacion de cuadratica, considerando los tres casos (reales iguales, reales distintas, o complejas conjugadas). 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
  • 23. 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. 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
  • 24. DimensionPrec[5], Cant[4,5]; // Leer Precios 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
  • 26. Triangulo: calcula el area de un triangulorectangulo, verificando primero que lo sea mediante el teorema de pitagoras. Triangulo.psc // Lee los tres lados de un triangulorectangulo, determina // si corresponden (por Pitargoras) y en caso afirmativo // calcula el area 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 // calcualararea area<-(cat1*cat2)/2; Escribir "El area es: ",area; Sino Escribir "No es un triangulorectangulo."; FinSi FinProceso