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

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

ELEMENTOS DE PROGRAMACIÓN I La jerarquía de los operadores matemáticos es igual a la del álgebra. aunque puede alterarse mediante el uso de paréntesis. y cuando se evalúe la misma. FUNCIONES Las funciones en el pseudocódigo se utilizan de forma similar a otros lenguajes. Se coloca su nombre seguido de los argumentos para la misma encerrados entre paréntesis (por ejemplo trunc(x)). CÁTEDRA: SANTILLAN RAMIREZ. Se pueden utilizar dentro de cualquier expresión. 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. se reemplazará por el resultado correspondiente. RUBEN . Actualemente. 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.

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

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

Si la condición siempre 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. Al ejecutarse. Opcionalmente. la ejecución se repite. 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. Estos pasos se repiten mientras la condición sea verdadera. la condición es evaluada. se puede agregar una opción final. si es verdadera.> De Otro Modo: <instrucciones> FinSegun Esta instrucción permite ejecutar opcionalmente varias acciones posibles. Al finalizar la ejecución del cuerpo del ciclo se vuelve a evaluar la condición y.. dos puntos y una secuencia de instrucciones.. se ejecuta una vez la secuencia de instrucciones que forman el cuerpo del ciclo. denominada De Otro Modo. LAZOS REPETIR CÁTEDRA: SANTILLAN RAMIREZ. al ejecutar esta instrucción se produce un ciclo infinito. dependiendo del valor almacenado en una variable de tipo numérico. la secuencia de instrucciones asociada se debe ejecutar cuando el valor de la variable es uno de esos números. si al evaluar por primera vez la condición resulta ser falsa. 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. Note que las instrucciones del cuerpo del ciclo pueden no ejecutarse nunca. Si la condición resulta verdadera. RUBEN . ESTRUCTURAS DE CONTROL REPETITIVAS LAZOS MIENTRAS La instrucción Mientras ejecuta una secuencia de instrucciones mientras una condición sea verdadera.ELEMENTOS DE PROGRAMACIÓN I <. de modo que ésta sea falsificada en algún momento y así finalice la ejecución del ciclo. Si una opción incluye varios números. Mientras <condición> Hacer <instrucciones> FinMientras vAl ejecutarse esta instrucción.

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

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

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

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

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

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

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. lista[pos_menor]<-aux. Escribir "Ingrese los nombres (enter en blanco para terminar):". Leer nombre. Para j<-i+1 Hasta cant Hacer Si lista[j]<lista[pos_menor] Entonces pos_menor<-j. Mientras nombre<>"" Hacer cant<-cant+1. RUBEN . FinPara // mostrar como queda la lista Escribir "La lista ordenada es:". FinPara FinProceso CÁTEDRA: SANTILLAN RAMIREZ.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]. se_repite<-Falso. lista[cant]<-nombre. 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. // leer la lista cant<-0. Para i<-1 Hasta cant Hacer Escribir " ". lista[i]<-lista[pos_menor].lista[i].

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful