Вы находитесь на странице: 1из 24

PSEUDOCDIGO

1. Introduccin Uno de las mayores dificultades con las que se encuentran los hispanoparlantes que empiezan a programar es el idioma. Por una parte, la mayora de lenguajes de programacin se basan en el ingls, por lo que un estudiante de habla hispana tiene que aprender que "write" o "print" son las palabras equivalentes a "escribir". Adems, la mayora de lenguajes tienen rdenes que realmente son abreviaturas de una o varias palabras inglesas, de modo que el aprendiz tiene que entender o memorizar palabras como "printf" o "writeln" incluso para realizar las tareas ms sencillas. Para colmo, la mayora de entornos de programacin estn tambin en ingls (mens, mensajes de error y aviso, etc). Por eso, una herramienta habitual para ayudar a los que empiezan es el "Pseudocdigo", algo as como un falso lenguaje de programacin en espaol, que permite asimilar con ms facilidad las ideas bsicas. El pseudocdigo soluciona el primer problema: no hace falta aprender otros idiomas para entender los conceptos bsicos. Pero "histricamente" no solucionaba el problema del "entorno de programacin": no existan entornos para programar en pseudocdigo, as que tpicamente ha sido una herramienta para usar "con lapiz y papel". Algunas universidades han creado sus propios "intrpretes de pseudocdigo", para ayudar a los alumnos de primer curso a crear los programas "pensando en espaol", pero permitindoles adems probar esos programas desde un entorno "casi real". En cuanto a estos "intrpretes de pseudocdigo", que permiten teclear nuestro programa y ver cul sera el resultado, hay uno especialmente bueno: PSEINT, que adems realza con colores la sintaxis de nuestros programas para ayudar a detectar errores, tiene autocompletado para permitir ganar tiempo, est disponible para Windows y Linux, es gratuito (1), etc.

Eso s, no existe un estndar claro en cuanto a pseudocdigo, es posible que una sintaxis que empleen en una universidad o centro de estudios sea ligeramente diferente a la que veremos aqu. Aun as, la idea es obtener las nociones bsicas. PSEINT realmente es "de cdigo abierto": cualquiera puede ver cmo est creado, de forma que incluso si su autor perdiera el inters por el proyecto, otras personas podran retomarlo, lo que le garantiza una vida mucho mayor. PSEINT se puede descargar desde http://pseint.sourceforge.net/

2. Toma de contacto. Vamos a empezar por lo ms sencillo: escribir en pantalla. Si queremos crear un programa que escriba algo en pantalla, usaremos la orden ESCRIBIR. A continuacin de esta palabras, entre comillas, escribiremos el texto que queremos que aparezca en pantalla. Escribir "Hola" Crear un programa que escriba Hola en la pantalla usando PSEINT tambin es igual de simple. En el caso de PSEINT, cada programa debe encerrarse entre las palabras "Proceso" (para indicar dnde comienza) y "FinProceso" (para sealar dnde termina). Pero eso no aade ninguna dificultad, porque cuando entramos a PSEINT, ese esqueleto de programa ya aparece escrito:

Nuestro programa debera tener un nombre: se nos propone que se llame "sin_titulo", pero mejor podemos hacer clic en esa palabra y escribir otro ttulo que recuerde mejor lo que va a hacer nuestro programa. De momento, bastar con "Ejemplo001", por eso de que es nuestro primer ejemplo. Despus, bajamos a la siguiente lnea y comenzamos a teclear la palabra "Escribir". Veremos que PSEINT se da cuenta, y nos recuerda cmo era la orden exacta, incluso cuando apenas llevamos unas pocas letras:

Cuando terminamos la palabra "Escribir", se nos propone que escribamos una o ms expresiones, separadas por comas; en nuestro caso, ser la palabra "Hola", entre comillas:

Nuestro programa est completo: podemos comprobar su funcionamiento pulsando el botn que recuerda al "Play" de los equipos de msica:

Y entonces aparecer una nueva ventana que nos muestra el resultado de nuestro programa (por supuesto, se trata de la palabra Hola):

Por supuesto, no slo podemos escribir textos prefijados. Podemos usar nuestro ordenador como calculadora, que nos muestre el resultado de una operacin aritmtica: Proceso Ejemplo002 Escribir 20+30 FinProceso Vamos a hacer algo un poco ms complejo: vamos a sumar dos nmeros que no estn prefijados dentro del programa, sino que deber teclear el usuario. Para eso, usaremos la orden "Leer", que nos permite leer lo que el usuario teclee y dejarlo guardado para utilizarlo despus. Debemos dar un nombre temporal a estos datos que leemos del usuario. Parece razonable que el primer nmero que teclee el usuario se llame algo como "primerNumero", y el segundo sea algo como "segundoNumero". El resultado que queremos obtener ser la suma de ese primer nmero y ese segundo nmero, as que nuestro programa podra quedar as: Proceso Ejemplo003 Escribir "Dime un numero" Leer primerNumero Escribir "Dime otro numero" Leer segundoNumero Escribir "Su suma es ", primerNumero + segundoNumero FinProceso

Ms sobre variables Nuestro ltimo programa peda dos nmeros al usuario y mostraba su suma, as Proceso Ejemplo003 Escribir "Dime un numero" Leer primerNumero Escribir "Dime otro numero" Leer segundoNumero Escribir "Su suma es ", primerNumero + segundoNumero FinProceso Esas dos palabras, "primerNumero" y "segundoNumero" representan a nmeros que no tienen un valor prefijado. Eso es lo que llamaremos "variables". En las variantes de pseudocdigo que emplean en muchas universidades y centros de estudio (ya habamos avisado de que no existe ningn estndar totalmente asentado) debemos "declarar las variables" antes de usarlas: decir qu tipo de dato es el que querremos representar con ese nombre. En nuestro ejemplo anterior se trataba de dos nmeros enteros, as que el programa sera: Proceso Ejemplo003b Variable primerNumero: Entero Variable segundoNumero: Entero Escribir "Dime un numero" Leer primerNumero Escribir "Dime otro numero" Leer segundoNumero Escribir "Su suma es ", primerNumero + segundoNumero FinProceso Esto se debe a que en la mayora de lenguajes de programacin "reales" es necesario detallar qu tipo de datos querremos guardar en cada variable, para que la herramienta de programacin sepa exactamente qu cantidad de memoria ser necesaria para guardar ese dato. Insisto: no es el caso de PSEINT; con esta herramienta no es necesario declarar las variables, el propio entorno presupone de qu estamos hablando.

Comprobando condiciones (1) En casi cualquier secuencia de instrucciones para un ordenador, ser vital poder comprobar si se cumple alguna condicin. Una primera forma bsica de comprobar condiciones es con la orden "SI". Su uso bsico sera Si condicion Entonces pasos_a_dar_si_es_verdadero Si No pasos_a_dar_si_es_falso FinSi El bloque "Si No" es opcional: podemos optar por no indicar lo que queremos que se haga cuando no se cumpla la condicin. Para ayudarnos a planificar el comportamiento de una secuencia de instrucciones, se suele usar como ayuda los llamados "diagramas de flujo". En estos diagramas, una condicin se representa como un rombo, del que salen dos flechas: una para la secuencia de acciones a realizar si se cumple la condicin y otra para cuando no se cumple:

As, si en PSeInt hacemos clic en el icono de la parte derecha que representa la condicin SI, aparece un esqueleto de programa casi completo, para que hagamos los cambios que nos interesen:

Slo tenemos que escribir la condicin que realmente nos interesa, y la serie de pasos a dar si se cumple y si no se cumple, de modo que nuestro programa podra quedar as: Proceso Ejemplo004 Escribir "Dime un numero" Leer primerNumero Escribir "Dime otro numero" Leer segundoNumero Si primerNumero > segundoNumero Entonces Escribir "El primero es mayor" Sino Escribir "El segundo es mayor" FinSi FinProceso

Su resultado sera ste:

En ese ejemplo hemos comparado si un valor es mayor que el otro (>). Los operadores de comparacin que tenemos disponibles son: Operador relacional Significado Ejemplo > Mayor que 3>2 < Menor que 'ABC'<'abc' = Igual que 4=3 <= Menor o igual que 'a'<='b' >= Mayor o igual que 4>=5 Tambin podemos comprobar varias condiciones a la vez, para hacer construcciones como: "si a es mayor que b y b es mayor que c", o como "si a es igual a 1 o b es igual a 1". Los operadores lgicos que de los que disponemos son: Operador lgico Significado Ejemplo &Y Conjuncin . (7>4) & (2=1) //falso |O Disyuncin (o). (1=1 | 2=1) //verdadero ~ NO Negacin (no). ~(2<5) //falso

Comprobando condiciones (2) Es frecuente tener que comprobar ms de una condicin a la vez, o bien varias condiciones consecutivas. En concreto, un caso especialmente habitual es el de que una variable pueda tomar distintos. Por ejemplo, ciertas notas numricas tienen "nombres" en espaol: un 5 es un aprobado, un 9 y un 10 son sobresaliente, etc. Si queremos hacer un programa que convierta de la nota numrica a su equivalente escrito, podramos emplear varias rdenes IF, una tras la otra. Pero en muchos lenguajes de programacin (y por tanto, tambin en muchas variantes de pseudocdigo) existe una alternativa ms compacta y ms legible: la orden "SEGUN". Esta rden permite hacer unas cosas u otras segn el valor que tome una variable. Su uso sera as: Segun variable Hacer valor1: pasos_a_dar_si_es_el_valor1 valor2: pasos_a_dar_si_es_el_valor2 valor3: pasos_a_dar_si_es_el_valor3 De Otro Modo: pasos_a_dar_si_es_otro_valor FinSegun El bloque "De Otro Modo" es opcional: si detallamos todos los valores posibles, no sera necesario utilizarlo. El nmero de valores que podemos probar es indefinido: no tiene por qu ser 3, sino que pueden ser menos casos o muchos ms. Segn la variante de pseudocdigo (o el lenguaje de programacin) que empleemos, puede haber restricciones en el tipo de datos que es aceptable. Por ejemplo, en el caso de PseInt, la variable tiene que tener un valor numrico, no puede ser un texto. Al igual que ocurra con la orden SI, existe un smbolo que podemos usar en los diagramas de flujo para ayudarmos a planificar nuestro programa (aunqe este smbolo est menos extendido que el de SI):

As, si en PseInt hacemos clic en el icono de la parte derecha que representa la condicin SI, aparece un esqueleto de programa casi completo, para que hagamos los cambios que nos interesen:

Slo tenemos que escribir la condicin que realmente nos interesa, y la serie de pasos a dar si se cumple y si no se cumple, de modo que nuestro programa podra quedar as: Proceso EjemploCasos Escribir "Introduzca la nota"; Leer nota; Segun nota Hacer 10: Escribir "Ha obtenido un sobresaliente alto"; 9: Escribir "Ha obtenido un sobresaliente bajo"; 8: Escribir "Ha obtenido un notable alto";

7: Escribir "Ha obtenido un notable bajo"; 6: Escribir "Ha obtenido un aprobado alto"; 5: Escribir "Ha obtenido un aprobado"; De Otro Modo: Escribir "Ha suspendido"; FinSegun FinProceso Su resultado sera ste:

Pero no siempre habr que comprobar condiciones una nica vez. Es muy frecuente que haya que hacerlo de forma repetitiva. Por ejemplo, "pedir una contrasea al usuario hasta que sea la correcta", o an ms cercano al mundo real, "pedir una contrasea al usuario hasta que sea la correcta o agote sus intentos".

Condiciones repetitivas Habitualmente, una condicin se deber comprobar ms de una vez. Por ejemplo, una condicin de error puede repetirse: el usuario que introduce mal una contrasea por primera vez puede equivocarse en una segunda ocasin. Por eso, igual que cualquier lenguaje de programacin tiene una orden "si", la gran mayora de ellos tendr una orden "mientras", que permite que un fragmento de un programa se repita mientras una cierta condicin se siga cumpliendo (por ejemplo, mientras la contrasea que teclee el usuario sea incorrecta, el usuario deber volver a introducirla). Tambin existe un smbolo habitual en los diagramas de flujo para representar este tipo de condiciones repetitivas, en las que si se cumple la condicin, se realiza una serie de acciones y se vuelve a comprobar la condicin, y as sucesivamente hasta que la condicion no se cumpla:

Y en el caso de PseInt, ese icono generara un esqueleto de programa como ste:

Por ejemplo, un programa capaz de sumar muchos nmeros, todos los que el usuario quisiera, y en el que hubiera que escribir "0" para indicar que queremos terminar, podra ser as: Proceso Mientras01 Escribir "Dime un numero"; Leer x; suma <- 0; Mientras x <> 0 Hacer suma <- suma + x; Escribir "Hasta ahora, la suma es ", suma; Escribir "Dime otro numero"; Leer x; FinMientras Escribir "Terminado"; FinProceso Y su ejecucin mostrara algo como:

Hay ms formas de comprobar condiciones repetitivas. Pronto las veremos...

Condiciones repetitivas Es tambin muy frecuente que un bloque de programa que quiz se repita, deba ejecutarse al menos una vez. Por ejemplo, si queremos pedir un dato al usuario, quiz exista algn error y haya que insistir, pero al menos deberemos pedrselo una primera vez. En estos casos, la estructura "mientras" no es la ms adecuada: no podemos comprobar la condicin al principio, sino despus de haber pedir el valor. En estos casos (que son muy frecuentes), sera ms razonable usar otra estructura de programacin en la que la condicin se compruebe despus de dar ciertos pasos. Esa estructura es "repetir... hasta": Su representacin en un diagrama de flujo sera:

Y en el caso de PseInt, ese icono generara un esqueleto de programa como ste:

Por ejemplo, un programa que pida al usuario una clave de acceso, y que no le permita seguir hasta que la introduzca correctamente, se podra hacer as: Proceso Repetir01 Repetir Escribir "Dime tu clave de acceso"; Leer clave; Si clave <> 1234 Entonces Escribir "Clave incorrecta"; FinSi Hasta Que clave=1234 Escribir "Bienvenido!"; FinProceso Cuyo resultado sera:

Repetir un cierto nmero de veces En muchas ocasiones, no querremos que algo se repita mientras se cumpla una condicin, sino un cierto nmero de veces. Por ejemplo, para escribir "Hola" 3 veces en pantalla existe una orden ms cmoda que la orden "mientras" o la orden "repetir... hasta". Es la orden "para", que hace que una variable tome una serie de valores que se van incrementando. Por ejemplo, una estructura como "para x con valores desde 2 hasta 4" hara que un bloque de programa se repitiera 3 veces. En la primera repeticin, la variable "x" tendra el valor 2, en la segunda tendra el valor 3 y en la tercera tendra el valor 4. La sintaxis exacta en PseInt es: "Para variable <valorInicial Hasta valorFinal Hacer" Su representacin en un diagrama de flujo sera:

Y en el caso de PseInt, ese icono generara un esqueleto de programa como ste:

Por ejemplo, un programa que mostrara los nmeros del 1 al 10, podra ser: Proceso Para01 Para x <- 1 Hasta 10 Hacer Escribir x; FinPara FinProceso Cuyo resultado sera:

Si no queremos avanzar de uno en uno, podemos indicar otro tamao de "paso": Proceso Para02 Para x <- 10 Hasta 20 Con Paso 2 Hacer Escribir x; FinPara FinProceso Y obtendramos:

Hemos visto casi todas las construcciones que podremos encontrar en los lenguajes de programacin convencionales (y, por tanto, al planificarlos usando pseudocdigo).

Matrices. Cuando necesitamos manejar muchos datos, generalmente hay soluciones ms efectivas que tener muchas variables. Por ejemplo, si hay que guardar 100 nmeros, suele ser ms eficiente almacenar esos 100 datos "juntos", formando una "matriz", en vez de usar 100 variables distintas. La palabra "matriz" es una traduccin del ingls "array". Algunos autores lo traducen alternativamente como tabla, vector o incluso "arreglo". Normalmente, en una matriz podremos acceder individualmente a cada uno de sus elementos usando corchetes: el primer dato sera algo como "dato[1]". Vamos a ver un ejemplo que nos pida 6 datos y luego los muestre en orden contrario al que se han introducido: Proceso MostrarAlReves Dimension datos[6] Para i <- 1 Hasta 6 Hacer Escribir "Dime el dato numero ", i Leer datos[i] FinPara Escribir "Los datos al reves son: " Para i <- 6 Hasta 1 Con Paso -1 Hacer Escribir datos[i] FinPara FinProceso Que mostrara algo como:

(Haremos ejemplos ms avanzados como parte de los ejercicios)

Funciones matemticas Casi cualquier lenguaje de programacin tiene incorporadas ciertas funciones matemticas, de modo que nos permita calcular races cuadradas, logaritmos, senos y cosenos, etc. Lo mismo ocurre en muchas variantes de pseudocdigo. Por ejemplo, PseInt incluye las siguientes funciones matemticas: Funcin Significado RC(X) Raz Cuadrada de X ABS(X) Valor Absoluto de X LN(X) Logaritmo Natural de X EXP(X) Funcin Exponencial de X SEN(X) Seno de X COS(X) Coseno de X TAN(X) Tangente de X ASEN(X) Arco seno de X ACOS(X) Arco coseno de X ATAN(X) Arco tangente de X TRUNC(X) Parte entera de X REDON(X) Entero ms cercano a X AZAR(X) Entero aleatorio entre 0 y x-1 (Si no sabes qu hace alguna de estas funciones, no te preocupes mucho, es seal de que hasta ahora no la has necesitado... Las ms importantes de ellas las probaremos directamente como parte de los ejercicios)

Вам также может понравиться