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

Se pueden utilizar dentro de cualquier expresión.ELEMENTOS DE PROGRAMACIÓN I La jerarquía de los operadores matemáticos es igual a la del álgebra. 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. CÁTEDRA: SANTILLAN RAMIREZ. Actualemente. 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. FUNCIONES Las funciones en el pseudocódigo se utilizan de forma similar a otros lenguajes. RUBEN . 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)). aunque puede alterarse mediante el uso de paréntesis.

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

. La cláusula Entonces debe aparecer siempre. 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. En ese caso. Segun <variable> Hacer <número1>: <instrucciones> <número2>.ELEMENTOS DE PROGRAMACIÓN I La instrucción Escribir permite mostrar valores al ambiente. RUBEN . <exprN> .. <expr2> . .. 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. mostrará uno o más valores. Dado que puede incluir una o más expresiones.<número3>: <instrucciones> CÁTEDRA: SANTILLAN RAMIREZ. 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. que al ser evaluada retorna Verdadero o Falso. pero la cláusla Sino puede no estar. Escribir <exprl> . 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.

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

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

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful