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

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

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. Actualemente. 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)). y cuando se evalúe la misma. RUBEN . CÁTEDRA: SANTILLAN RAMIREZ. se reemplazará por el resultado correspondiente. 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.ELEMENTOS DE PROGRAMACIÓN I La jerarquía de los operadores matemáticos es igual a la del álgebra.

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. <variable2> . RUBEN . Leer <variablel> . Al ejecutarse la asignación. .. Pueden incluirse una o más variables. LECTURA La instrucción Leer permite ingresar información desde el ambiente. primero se evalúa la expresión de la derecha y luego se asigna el resultado a la variable de la izquierda. . por lo tanto el comando leerá uno o más valores. <variableN> .<expresión> . El tipo de la variable y el de la expresión deben coincidir. ESCRITURA CÁTEDRA: SANTILLAN RAMIREZ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful