ELEMENTOS DE PROGRAMACIÓN I

MANUAL DE PSEINT

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). Forma General de un Algoritmo en PSeudoCodigo Todo algoritmo en pseudocógido tiene la siguiente estructura general: Proceso SinTitulo accion 1; accion 1; . . . 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. TIPOS DE DATOS • Tipos Simples: Numérico, Lógico, Caracter. • Estructuras de Datos: Arreglos. Los tipos de datos simples se determinan automáticamente cuando se crean las variables. Las dos acciones que pueden crear una variable son la lectura(LEER) y la asignacion(<-). Por ejemplo, la asignación "A<-0;" está indicando implícitamente que la variable A será una variable numérica. Una vez determinado el tipo de dato, deberá permanecer constante durante toda la ejecución del proceso; en caso contrario el proceso será interrumpido. Existen tres tipos de datos básicos:

CÁTEDRA: SANTILLAN RAMIREZ, RUBEN

Las siguientes tablas exhiben la totalidad de los operadores de este lenguaje reducido: • CÁTEDRA: SANTILLAN RAMIREZ...). Esta instrucción define un arreglo con el nombre indicado en <indentificador> y N dimensiones. en caso contrario el proceso será interrumpido. El tipo de sus elementos se determina cuando se utiliza alguno de ellos de igual forma que para las variables de tipos simples. • Caracter: caracteres o cadenas de caracteres encerrados entre comillas (pueden ser dobles o simples).14 • Lógico: solo puede tomar dos valores: VERDADERO o FALSO. es decir.<max1N>).. para luego referirse a los mismo utilizando uno o más subíndices. deberá permanecer constante durante toda la ejecución del proceso. matrices. Los arreglos pueden pensarse como vectores." está indicando implícitamente que la variable A será una variable numérica.<maxN>).. deben constar sólo de letras. Ejemplos: 12 23 0 -2. ARREGLOS Los arreglos son estructuras de datos homogéneas (todos sus datos son del mismo tipo) que permiten almacenar un determinado número de datos bajo un mismo identificador. números y/o guin_bajo (_). Una vez determinado el tipo de dato. definirlo declarando los rangos de sus subíndices.")... EXPRESIONES Operadores Este pseudolenguaje dispone de un conjunto básico de operadores que pueden ser utilizados para la construcción de expresiones más o menos complejas.. etc. separándolos con una coma (. la asignación "A<-0. Las dos acciones que pueden crear una variable son la lectura(LEER) y la asignacion(<-). primero es obligatorio su dimensionamiento.. Para poder utilizar un arreglo. indicando sus dimensiones.. pero deben ser dimensionados antes de ser utilizados por primera vez mediante la directiva DIMENSION (ejemplo: "DIMENSION A[10. que todos sus elementos son del mismo tipo simple de dato).. Los N parámetros indican la cantidad de dimensiones y el valor máximo de cada una de ellas. comenzando siempre con una letra. lo cual determina cuantos elementos se almacenarán y como se accederá a los mismos. La cantidad de dimensiones puede ser una o más.. Pueden ser mono o multidimensionales. <identM> (<maxM1>. Se pueden definir más de un arreglo en una misma instrucción. Dimension <ident1> (<max11>. DIMENSIONAMIENTO La instrucción Dimension permite definir un arreglo..3 3. RUBEN . Ejemplos 'hola' "hola mundo" '123' 'FALSO' 'etc' Los tipos de datos simples se determinan automáticamente cuando se crean las variables. y la máxima cantidad de elementos debe ser una expresión numérica positiva... Dimesion <identificador> (<maxl>. o nombres de variables..ELEMENTOS DE PROGRAMACIÓN I Numérico: numeros. Para separar decimales se utiliza el punto. Por ejemplo.<maxMN>) Los arreglos son estructuras homegéneas (es decir.20]. tanto enteros como decimales. Los identificadores..

ELEMENTOS DE PROGRAMACIÓN I La jerarquía de los operadores matemáticos es igual a la del álgebra. todas la funciones disponibles son matemáticas (es decir que devolverán un resultado de tipo numérico) y reciben un sólo parametro de tipo numérico. aunque puede alterarse mediante el uso de paréntesis. RUBEN . se reemplazará por el resultado correspondiente. Se pueden utilizar dentro de cualquier expresión. Actualemente. y cuando se evalúe la misma. Se coloca su nombre seguido de los argumentos para la misma encerrados entre paréntesis (por ejemplo trunc(x)). FUNCIONES Las funciones en el pseudocódigo se utilizan de forma similar a otros lenguajes. A continuación se listan las funciones integradas disponibles: PRIMITIVAS SECUENCIALES ASIGNACIÓN La instrucción de asignación permite almacenar una valor en una variable. CÁTEDRA: SANTILLAN RAMIREZ.

<expresión> . El tipo de la variable y el de la expresión deben coincidir. primero se evalúa la expresión de la derecha y luego se asigna el resultado a la variable de la izquierda.. Al ejecutarse la asignación. <variableN> . Leer <variablel> . <variable2> .. Pueden incluirse una o más variables.ELEMENTOS DE PROGRAMACIÓN I <variable> <. Esta instrucción lee N valores desde el ambiente (en este caso el teclado) y los asigna a las N variables mencionadas. . por lo tanto el comando leerá uno o más valores. . ESCRITURA CÁTEDRA: SANTILLAN RAMIREZ. RUBEN . LECTURA La instrucción Leer permite ingresar información desde el ambiente.

pero la cláusla Sino puede no estar. mostrará uno o más valores. Dado que puede incluir una o más expresiones. Escribir <exprl> .. La cláusula Entonces debe aparecer siempre. Segun <variable> Hacer <número1>: <instrucciones> <número2>.<número3>: <instrucciones> CÁTEDRA: SANTILLAN RAMIREZ.ELEMENTOS DE PROGRAMACIÓN I La instrucción Escribir permite mostrar valores al ambiente. <exprN> . . ESTRUCTURAS DE CONTROL CONDICIONALES Si-Entonces Selección Múltiple REPETITIVAS Mientras Repetir Para CONDICIONAL SI-ENTONCES La secuencia de instrucciones ejecutadas por la instrucción Si-EntoncesSino depende del valor de una condición lógica. <expr2> . que al ser evaluada retorna Verdadero o Falso. o las instrucciones que le siguen al Sino si la condición es falsa.. 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. Si <condición> Entonces <instrucciones> Sino <instrucciones> FinSi Al ejecutarse esta instrucción. La condición debe ser una expresión lógica. 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. En ese caso. Esta instrucción imprime al ambiente (en este caso en la pantalla) los valores obtenidos de evaluar N expresiones. SELECCIÓN MULTIPLE La secuencia de instrucciones ejecutada por una instrucción Segun depende del valor de una variable numérica. RUBEN . .

Si una opción incluye varios números. se ejecuta una vez la secuencia de instrucciones que forman el cuerpo del ciclo. la condición es evaluada. Al finalizar la ejecución del cuerpo del ciclo se vuelve a evaluar la condición y. A fin de evitarlo. Si la condición siempre es verdadera.ELEMENTOS DE PROGRAMACIÓN I <. Note que las instrucciones del cuerpo del ciclo pueden no ejecutarse nunca. se puede agregar una opción final. si al evaluar por primera vez la condición resulta ser falsa.> De Otro Modo: <instrucciones> FinSegun Esta instrucción permite ejecutar opcionalmente varias acciones posibles. Mientras <condición> Hacer <instrucciones> FinMientras vAl ejecutarse esta instrucción. Opcionalmente. al ejecutar esta instrucción se produce un ciclo infinito. ESTRUCTURAS DE CONTROL REPETITIVAS LAZOS MIENTRAS La instrucción Mientras ejecuta una secuencia de instrucciones mientras una condición sea verdadera. la secuencia de instrucciones asociada se debe ejecutar cuando el valor de la variable es uno de esos números. de modo que ésta sea falsificada en algún momento y así finalice la ejecución del ciclo. Al ejecutarse. dependiendo del valor almacenado en una variable de tipo numérico. la ejecución se repite. se evalúa el contenido de la variable y se ejecuta la secuencia de instrucciones asociada con dicho valor. LAZOS REPETIR CÁTEDRA: SANTILLAN RAMIREZ.. denominada De Otro Modo. dos puntos y una secuencia de instrucciones. si es verdadera. cuya secuencia de instrucciones asociada se ejecutará sólo si el valor almacenado en la variable no coincide con ninguna de las opciones anteriores. las instrucciones del cuerpo del ciclo deben contener alguna instrucción que modifique la o las variables involucradas en la condición. RUBEN . Estos pasos se repiten mientras la condición sea verdadera. Si la condición resulta verdadera. Cada opción está formada por uno o más números separados por comas..

no será tomado en cuenta al interpretar el algoritmo. Luego se incrementa la variable <variable> en <paso> unidades y se evalúa si el valor almacenado en <variable> superó al valor <final>. hasta el fin de la línea. a fin de evitar ciclos infinitos. las instrucciones del cuerpo del ciclo serán ejecutadas al menos una vez. RUBEN . o en líneas separadas. la variable <variable> recibe el valor <inicial> y se ejecuta la secuencia de instrucciones que forma el cuerpo del ciclo. Para <variable> <. la variable <variable> se incrementará en 1. la secuencia de instrucciones que forma el cuerpo del ciclo se ejecuta una vez y luego se evalúa la condición. el cuerpo del ciclo se ejecuta nuevamente y se vuelve a evaluar la condición. aunque si comentarios.<inicial> Hasta <final> ( Con Paso <paso> ) Hacer <instrucciones> FinPara Al ingresar al bloque. Además. Si esto es falso se repite hasta que <variable> supere a <final>. CÁTEDRA: SANTILLAN RAMIREZ. Repetir <instrucciones> Hasta Que <condición> Al ejecutarse esta instrucción. mediante el uso de la doble barra ( // ). Si se omite la cláusula Con Paso <paso>. Si la condición es falsa. • No puede haber instrucciones fuera del proceso (antes de PROCESO. o despues de FINPROCESO). LAZOS PARA La instrucción Para ejecuta una secuencia de instrucciones un número determinado de veces. Note que. 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. No es válido introducir comentario con /* y */. Esto se repite hasta que la condición sea verdadera. dado que la condición se evalúa al final. ALGUNAS OBSERVACIONES • Se pueden introducir comentarios luego de una instrucción. Todo lo que precede a //.ELEMENTOS DE PROGRAMACIÓN I La instrucción Repetir-Hasta Que ejecuta una secuencia de instrucciones hasta que la condición sea verdadera.

el punto ( . Las constantes de tipo carácter se escriben entre comillas ( " ). pero la estructura contenida debe comenzar y finalizar dentro de la contenedora. comenzando siempre con una letra.ELEMENTOS DE PROGRAMACIÓN I • • • • • • • Las estructuras no secuenciales pueden anidarse. CÁTEDRA: SANTILLAN RAMIREZ. o nombres de variables. Actualmente este pseudolenguaje no contempla la creación de nuevas funciones o subprocesos. sino que se infieren a partir de su utilización. deben constar sólo de letras. números y/o guin_bajo (_). RUBEN . Los identificadores. En las constantes numéricas. Los tipos de datos de las variables no se declaran explicitamente. Es decir. pueden contener otras adentro. ) es el separador decimal. Las constantes lógicas son Verdadero y Falso.

FinSi FinSi FinMientras FinProceso CÁTEDRA: SANTILLAN RAMIREZ. Si num/2 = trunc(num/2) Entonces Escribir 2. num<-num/div. factor_primo<-Verdadero.ELEMENTOS DE PROGRAMACIÓN I EJEMPLOS Proceso Factorizacion Escribir "Ingrese el numero: ". Sino div<-1. num<-num/2.div+2. Escribir "Factorizacion: ". Leer num. FinSi FinMientras Si factor_primo Entonces escribir num. factorizar<-falso.Falso. Mientras factorizar Y num>1 hacer div<-0. Si num/div = trunc(num/div) Entonces factor_primo <. factor_primo<-verdadero. factorizar<-verdadero. sino escribir div. RUBEN . Mientras div<=rc(num) Y factor_primo Hacer div <.

Ingresar Otro Numero'. FinSi 3: Escribir 'Turncar:'. Escribir 'ArcTangente:'.para Salir'.Truncar. Escribir '0 .Hallar Factorial'.redon(N). operadores y funciones matematicas Proceso Matematicas Salir<-0. Repetir Escribir ' '. Escribir '2 . Escribir '7 .:'. Coseno. Escribir 'Presione Enter para continuar'. f<-1.abs(N).ln(N). Escribir '4 .Trunc(n).Lograritmo Natural.ELEMENTOS DE PROGRAMACIÓN I // Este ejemplo muestra el uso de expresiones. Funcion Exponencial'.trunc(N). Sino Si abs(N)>50 Entonces Escribir 'Resultado muy grande!'. Escribir 'Ingresar Numero:'.Seno. Escribir ' '. Escribir '8 . Escribir 'Func Expon. 7: Si N<>Trunc(N) Entonces Escribir 'El numero debe ser entero!'. Escribir '3 .Averiguar si es primo'. Leer x.rc(N). 5: Escribir 'Valor Abs.:'. ArcoTangente'.:'.Sen(N). RUBEN . Sino Escribir 'Log Nat. 6: Escribir 'Parte Entera:'.n-Trunc(n).Raiz Cuadrada'.Cos(N). Escribir 'Parte Decimal:'. Escribir '6 . Escribir ' '. Segun Opcion Hacer 1: Escribir 'Seno:'. Escribir '9 .exp(N). Leer Opcion. Sino r<-1.Valor Absoluto'.Atan(N). Escribir 'Coseno:'. CÁTEDRA: SANTILLAN RAMIREZ. Escribir '1 . 2: Si N<=0 Entonces Escribir 'El numero debe ser mayor a cero!'. Leer N.:'.Separar parte entera y decimal'. Escribir 'Redondear:'. Escribir '5 . Redondear'. 4: Escribir 'Raiz Cuad.

FinMientras Escribir 'Numero Primo:'. FinMientras Escribir 'Factorial:'. FinSegun Hasta que Salir=1 FinProceso CÁTEDRA: SANTILLAN RAMIREZ. Sino r<-f*r. 0: Salir<-1.'='. Sino Primo<-'Si'.ELEMENTOS DE PROGRAMACIÓN I Mientras f<=abs(N) Hacer Si N<0 Entonces r<-(-f)*r. Leer N. FinSi Si N<0 entonces Nu<-N*-1. Si N/2=trunc(N/2) Entonces Primo<-'No'. f<-3.Primo. FinSi f<-f+2.'x'.N/(f-2). De Otro Modo: Escribir 'Opcion No Valida!'.r. Mientras f<=Nu Y Primo='Si' Hacer Si N/F=trunc(N/F) Entonces Primo<-'No'. FinSi FinSi 9: Escribir 'Ingrese Numero:'. FinSi Nu<-RC(Nu). FinSi FinSi 8: Si N<>Trunc(N) Entonces Escribir 'El numero debe ser entero!'. FinSi f<-f+1. RUBEN . Si f=3 Entonces F<-4. FinSi Si Primo='No' Entonces Escribir N.f-2. sino Nu<-N.

may2<-datos[1]. Escribir "Ingrese la cantidad de datos:".ELEMENTOS DE PROGRAMACIÓN I // Busca los dos mayores de una lista de N datos Proceso Mayores Dimension datos[200]. FinSi FinSi FinPara Escribir "El mayor es: ". may2<-datos[2]. may1<-datos[i]. Sino Si datos[i]>may2 Entonces may2<-datos[i]. Leer datos[i].may2.i. Para i<-1 Hasta n Hacer Escribir "Ingrese el dato ". Leer n. Escribir "El segundo mayor es: ".":".may1. FinPara Si datos[1]>datos[2] Entonces may1<-datos[1]. FinSi Para i<-3 Hasta n Hacer Si datos[i]>may1 Entonces may2<-may1. Sino may1<-datos[2]. RUBEN . FinProceso CÁTEDRA: SANTILLAN RAMIREZ.

FinSi FinPara // intercambia el que estaba en i con el menor que encontro aux<-lista[i]. Para i<-1 Hasta cant Hacer Si nombre=lista[i] Entonces se_repite<-Verdadero. lista[pos_menor]<-aux.lista[i]. FinPara // mostrar como queda la lista Escribir "La lista ordenada es:". se_repite<-Falso. FinPara FinProceso CÁTEDRA: SANTILLAN RAMIREZ. Mientras nombre<>"" Hacer cant<-cant+1. Leer nombre. lista[i]<-lista[pos_menor]. Para i<-1 Hasta cant Hacer Escribir " ". 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. Repetir // leer un nombre y ver que no este ya en la lista Leer nombre. // leer la lista cant<-0. lista[cant]<-nombre. RUBEN .ELEMENTOS DE PROGRAMACIÓN I // Se ingresa una lista de nombres (la lista termina // cuando se ingresa un nombre en blanco) no permitiendo // ingresar repetidos y luego se ordena y muestra Proceso OrdenaLista Dimension lista[200]. Para j<-i+1 Hasta cant Hacer Si lista[j]<lista[pos_menor] Entonces pos_menor<-j. Escribir "Ingrese los nombres (enter en blanco para terminar):".

Para i<-1 Hasta n Hacer Escribir "Ingrese el dato ". FinPara prom<-acum/n. RUBEN . acum<-acum+dato.ELEMENTOS DE PROGRAMACIÓN I // Calcula el promedio de una lista de N datos Proceso Promedio Escribir "Ingrese la cantidad de datos:". acum<-0. FinProceso CÁTEDRA: SANTILLAN RAMIREZ.prom.i. Leer dato. Leer n.":". Escribir "El promedio es: ".

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

FinPara // Leer Cantidades Para J<-1 Hasta 4 Hacer Para I<-1 Hasta 5 Hacer Escribir 'Ingrese Cant. Leer Cant[J.NumMayor. // Acumular total de cada sucursal (TotSuc) y // total de la empresa (TotEmp) MayorRec<-0.TotSuc.I]. Articulo 3: Escribir 'Sucursal 1.Suma. // * La cantidad del articulo 3 en la sucursal 1. Para J<-1 Hasta 4 Hacer TotSuc<-0.'. Para I<-1 Hasta 5 Hacer TotSuc<-TotSuc+(Cant[J.I]. FinPara Escribir 'Total Sucursal 2:'.':'.3].I.Cant[1. FinPara Escribir 'Recaudaciones Sucursal '.':'.5]. FinPara FinPara // Sumar cantidades por articulos Escribir 'Cantidades por articulos:'.I]*Prec[i]). Cant[4. Proceso Sucursales // Inicializar Prec=Arreglo de precios y Cant=Arreglo para cantidades Dimension Prec[5].Suc2. NumMayor<-J. RUBEN . FinSi TotEmp<-TotEmp+TotSuc.I.':'. CÁTEDRA: SANTILLAN RAMIREZ.J.':'.I]+Cant[3. // * La cantidad de articulos en la sucursal 2. Articulo 3:'. de Articulo '.TotEmp. // Informar Sucursal 1.I]+Cant[4. // * La recaudacion total de la empresa. Para I<-1 Hasta 5 Hacer Suc2<-Suc2+Cant[2. NumMayor<-0. Informar: // * Las cantidades totales de cada articulo. TotEmp<-0. Para I<-1 Hasta 5 Hacer Suma<-Cant[1.I]+Cant[2. // Leer Precios Para I<-1 Hasta 5 Hacer Escribir 'Ingrese Precio Articulo '. Escribir 'Total articulo '. Escribir 'Sucursal de Mayor Recaudacion:'.I. FinPara // Informar Total de Articulos Sucursal 2 Suc2<-0.J. // * La recaudacion total de cada sucursal. // * La sucursal de mayor recaudacion. Si TotSuc>MayorRec entonces MayorRec<-TotSuc. Leer Prec[I].I]. FinPara Escribir 'Recaudacion total de la empresa:'.ELEMENTOS DE PROGRAMACIÓN I // Se ingresan los precios de 5 articulos y las cantidades vendidas // por una empresa en sus 4 sucursales. en Sucursal '.

RUBEN .ELEMENTOS DE PROGRAMACIÓN I FinProceso CÁTEDRA: SANTILLAN RAMIREZ.

Leer l2. FinSi FinProceso CÁTEDRA: SANTILLAN RAMIREZ.ELEMENTOS DE PROGRAMACIÓN I // Lee los tres lados de un triangulo rectangulo. determina // si corresponden (por Pitargoras) y en caso afirmativo // calcula el area Proceso TrianguloRectangulo // cargar datos Escribir "Ingrese el lado 1:". RUBEN . Sino hip<-l3. Si l1>l3 Entonces hip<-l1. Leer l3. Sino Escribir "No es un triangulo rectangulo.". Leer l1. FinSi Sino cat1<-l1. cat2<-l3. Escribir "Ingrese el lado 3:". Escribir "Ingrese el lado 2:". cat2<-l1. Sino hip<-l3. // encontrar la hipotenusa (mayor lado) Si l1>l2 Entonces cat1<-l2. cat2<-l2. Escribir "El area es: ". Si l2>l3 Entonces hip<-l2. cat2<-l3. FinSi FinSi // ver si cumple con Pitagoras Si hip^2 = cat1^2 + cat2^2 Entonces // calcualar area area<-(cat1*cat2)/2.area.