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

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

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

<variable2> .<expresión> . primero se evalúa la expresión de la derecha y luego se asigna el resultado a la variable de la izquierda. . Leer <variablel> . Al ejecutarse la asignación. . Pueden incluirse una o más variables. El tipo de la variable y el de la expresión deben coincidir. LECTURA La instrucción Leer permite ingresar información desde el ambiente..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. <variableN> . RUBEN .

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

. Si la condición siempre es verdadera. Si la condición resulta verdadera. la ejecución se repite. Note que las instrucciones del cuerpo del ciclo pueden no ejecutarse nunca. las instrucciones del cuerpo del ciclo deben contener alguna instrucción que modifique la o las variables involucradas en la condición. al ejecutar esta instrucción se produce un ciclo infinito. dos puntos y una secuencia de instrucciones. Estos pasos se repiten mientras la condición sea 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. 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. 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..> De Otro Modo: <instrucciones> FinSegun Esta instrucción permite ejecutar opcionalmente varias acciones posibles.ELEMENTOS DE PROGRAMACIÓN I <. si es verdadera. ESTRUCTURAS DE CONTROL REPETITIVAS LAZOS MIENTRAS La instrucción Mientras ejecuta una secuencia de instrucciones mientras una condición sea verdadera. denominada De Otro Modo. 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. RUBEN . se puede agregar una opción final. LAZOS REPETIR CÁTEDRA: SANTILLAN RAMIREZ. Al ejecutarse. dependiendo del valor almacenado en una variable de tipo numérico. A fin de evitarlo. de modo que ésta sea falsificada en algún momento y así finalice la ejecución del ciclo. la condición es evaluada. Opcionalmente. Cada opción está formada por uno o más números separados por comas. Mientras <condición> Hacer <instrucciones> FinMientras vAl ejecutarse esta instrucción.

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

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

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

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

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

may1<-datos[i]. FinPara Si datos[1]>datos[2] Entonces may1<-datos[1]. Leer n. FinSi Para i<-3 Hasta n Hacer Si datos[i]>may1 Entonces may2<-may1. may2<-datos[2]. FinSi FinSi FinPara Escribir "El mayor es: ". Leer datos[i].may2. FinProceso CÁTEDRA: SANTILLAN RAMIREZ. Escribir "El segundo mayor es: ". Sino may1<-datos[2]. RUBEN . 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]. Sino Si datos[i]>may2 Entonces may2<-datos[i].":".i.may1. may2<-datos[1]. Para i<-1 Hasta n Hacer Escribir "Ingrese el dato ".

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

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

Escribir "Raiz 2: ". r2 <. // determinar si son reales o imaginarias disc <. Si disc<0 Entonces // si son imaginarias preal<."i". FinSi FinSi FinProceso CÁTEDRA: SANTILLAN RAMIREZ."-". Escribir "Raiz 2: ". Sino Si disc=0 Entonces // ver si son iguales o distintas r <."+". Sino r1 <.(-b)/(2*a).r1.(-b)/(2*a). Escribir "Ingrese el coeficiente B:". Escribir "Ingrese el coeficiente C:". Escribir "Raiz 1: ".((-b)+rc(disc))/(2*a).pimag. Escribir "Raiz 1 = 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<.preal.r2.b^2-4*a*c.preal."i".r. Leer c. Leer b. RUBEN . Escribir "Raiz 1: ". Leer a.pimag.((-b)-rc(disc))/(2*a).rc(-disc)/(2*a).

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

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

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

Sign up to vote on this title
UsefulNot useful