Esta es una continuación de el tutorial Programación básica con pseint (parte 2), esta vez voy a explicar lo necesario ya para programar.
Índice
ASIGNACIÓN
La asignación es un proceso en el cual se crea y/o modifica una variable, haciendo referencia a esta por medio de su identificador con lo cual podemos acceder a su espacio de memoria.
la sintaxis de la asignación es:
[variable]<- [expresion];
[variable]=[expresion];
En donde [variable] es la variable que recibe el valor de evaluar [expresion]. Las dos son validas así que no interesa cual se use (si configuraron bien PSeInt), pero a mi parecer creo la primera como la correcta.
Si [variable] no existía antes de la asignación se creara [variable], si existía se destruye el valor anterior y en su lugar es colocado el nuevo. Por esta razón se considera a la asignación una operación destructiva.
LECTURA
La lectura es el proceso en el cual se le solicita un dato o datos al usuario para almacenar dicho dato en una variable.
su sintaxis es:
Leer variable_1,variable_2,...,variable_n;
en donde [variable_{1,2,n}] son la o las variables que reciben el valor dado por el usuario, en caso de que se solicitara mas de una variable primero preguntara por la primera, después por la segunda y así sucesivamente hasta haber recibido todos los valores.
Esta también es una función destructiva.
ESCRITURA
La escritura es el proceso en el cual se escribe en pantalla una cadena de caracteres y/o una o mas variables
la sintaxis es:
Escribir expresion_1,expresion_2,...,expresion_n;
en donde [expersion_{1,2,n}] son las cadenas de caracteres y/o variables que serán mostrados.
Escribir además de recibir las datos a poner en pantalla también recibe la instrucción «Sin saltar» o «Sin bajar» que evitan el salto de linea.
Escribir no agrega espacios entre los argumentos es decir que si se pone:
Proceso SinTitulo
a<- "ola";
b<- "mundo";
Escribir a,b;
FinProceso
en este caso va a mostrar «olamundo» puesto que entre «a» y «b» no hay una cadena de caracteres que indique el espacio entre a y b, para que se muestre correctamente se escribe así:
Proceso SinTitulo
a<- "ola";
b<- "mundo";
Escribir a,"",b;
FinProceso
en este caso agregue » » que es una cadena de caracteres que lleva un espacio que es el espacio entre «ola» y «mundo» y entonces mostrara «ola mundo» con el espacio.
SI-ENTONCES
Esta es una sentencia que evalúa una condición dada y comprueba la veracidad y/o la falsedad de dicha condición, es decir si se cumple la condición o no.
Su sintaxis es:
Si [condición a evaluar] Entonces
[instrucciones por verdadero]
Sino
[instrucciones por falso]
FinSi
la clausula «Sino» no es obligatoria, en dado caso si la condición es falsa ignora las instrucciones y continua como si no existiera la sentencia, en este caso quedaría:
Si [condición a evaluar] Entonces
[instrucciones por verdadero]
FinSi
si se colocara la clausula «Sino» o no depende de las necesidades de dicho programa.
SEGUN
La sentencia según evalúa una variable estrictamente numérica que da como opción mas de 2 posibilidades de elección, esto la diferencia de «Si-Entonces» puesto que la anterior solo puede dar 2 opciones.
La sintaxis es:
Segun [variable numérica] Hacer
[número1]: [instrucciones]
[número2],[número3]: [instrucciones]
[...]
De Otro Modo: [instrucciones]
FinSegun
como ven después de «numero1» hay un «:» y después de eso se colocan las instrucciones a realizar en dado caso de que «variable numérica = numero1», en el segundo ejemplo esta «numero2,numero3» esto quiere decir que si «variable numérica = numero2 o numero3» entonces se ejecutara «instrucciones», esto es útil cuando 2 posibilidades deben ejecutar las mismas instrucciones.
También esta la clausula «De Otro Modo» que se ejecuta en dado caso de que no se cumpliera ninguna de las posibilidades.
MIENTRAS
es una función repetitiva que primero evalúa una condición y después si se cumple ejecuta una serie de instrucciones después vuelve a a evaluar la condición y si es verdadera vuelve a ejecutar las mismas instrucciones y continua así hasta que la condición sea falsa.
si la condición es falsa desde el principio nunca se ejecutara y si siempre es verdadera se colocara en bucle infinito, a fin de evitar lo ultimo en las instrucciones debe haber algo que en algún momento falsifique la condición para poder terminar con el bucle.
su sintaxis es:
Mientras [condición a evaluar] Hacer
[instrucciones]
FinMientras
REPETIR-HASTA QUE
Esta es una función muy parecida a la anterior pero que a diferencia de la anterior, esta revisa la condición al final o sea que el comando se va a ejecutar como mínimo 1 vez, también en vez de ejecutar la instrucción cuando es verdadera la ejecuta mientras que no se cumpla la condición pero si se quiere que se ejecute mientras se cumpla la condición se usa «mientras que» en vez de «hasta que».
su sintaxis es:
Repetir
[Instrucciones]
hasta que [condicion]
PARA
Esta sentencia ejecuta una instrucción un numero determinando de veces para una variable, a diferencia de las anteriores este ciclo cambia el valor de la variable en cuestión por si mismo además de que tiene una sintaxis muy potente.
Para [variable] Desde [valor inicial] Hasta [valor Final] Con [paso] Hacer
[instruciones]
FinPara
«variable» es la variable que recibe «valor inicial» y ejecuta las instrucciones después suma «variable» mas «paso» y ejecuta de nuevo las instrucciones hasta que «variable» sea igual a «valor final».
si se quita «con [paso]» entonces por default sabrá que «paso» es igual a 1, también si no se especifica [paso] y «valor inicial» es mayor que «valor final» lo recorrerá en orden inverso es decir que «paso» es -1
SUBPROCESO/FUNCIÓN
Un subproceso o función es un programa dentro de otro y que este subprograma recibe un o mas valores, los opera y devuelve otro. Su sintaxis es
SubProceso [variable_de_retorno]<- [nombre de la funcion] ([arg_1],[arg_2],...,[arg_n])
acción 1;
acción 2;
.
.
.
acción n;
FinSubproceso
en donde «variable de retorno» es la variable que contiene el valor devuelto por la función «nombre de la funcion» que recibió los parámetros «arg_1,arg_2,arg_n» para ejecutar esto
OTRAS
Estas son funciones que solo son como complemento de las demás y no tienen una sintaxis compleja puesto que solo son funciones complementarias.
Borrar Pantalla
Esta función limpia la pantalla de cualquier objeto en el interprete
Esperar Tecla
Esta función espera a que el usuario presione una tecla para continuar con el programa
Esperar x {Segundo,Milisegundos}
esta función espera un tiempo en segundos o milisegundos para continuar con el programa
PD.: disculpen el retraso pero estuve ocupado en otros asuntos así que no había podido escribir
10 comentarios, deja el tuyo
¿No tiene funciones para capturar teclas sin parar la ejecución? Por hacer algo con movimiento que es más atrayente para niños con 9 años, aunque un juego del ahorcado también puede ser divertido programarlo.
Proceso algo_digo
a<-1;
lateral<-30;
abajo<-5;
Mientras a=1 Hacer
Borrar Pantalla;
c<-1;
linea<-"";
Repetir
linea<-linea+" ";
c<-c+1;
Hasta Que c=lateral
linea<-linea+"X";
c<-1;
Repetir
Escribir " ";
c<-c+1;
Hasta Que c=abajo-1
Escribir linea;
Repetir
Escribir " ";
c 2 Entonces
abajo<-abajo-1;
Fin Si
"s":
Si abajo < 15 Entonces
abajo 2 Entonces
lateral<-lateral-1;
Fin Si
"d":
Si lateral < 50 Entonces
lateral<-lateral+1;
Fin Si
"0":
a<-2;
Fin Segun
Fin Mientras
FinProceso
Bueno, falla si vas arriba, mejor cambiar las líneas 23 y 28
-23 Hasta Que c=15
+23 Hasta Que c=18
y
-28 Si abajo > 2 Entonces
+28 Si abajo > 3 Entonces
gracias por el aporte pero tiene algunos problemas como que abres una sentencia dentro de otra pero debe terminar dentro de la sentencia en donde comenzó osea no se puede poner
Proceso algo
a<- 0;
leer a;
si a no es igual 25 entonces
mientras a no es igual a 0 hacer
leer a;
fin si
fin mientras
como vez el ciclo mientras empieza dentro de la sentencia "si entonces" pero termina fuera de esta, algo como esto no es posible.
aun asi agradezco el aporte
Finproceso
Gracias, pero creo que es más un problema al poner el código aquí, que no sé ponerlo en tipo código y sale sin sangría.
El programa funciona bien. La variable «a» simplemente la uso para salir del bucle cuando el usuario escriba un cero. Se podría poner un exit() o un break; en el condicional que lo mira y me ahorro la variable. Son opciones.
Saludos.
Probaré cambiando tabuladores por espacios y las etiquetas
por si funciona algo:
Proceso algo_digo
a<-1;
lateral<-30;
abajo<-5;
Mientras a=1 Hacer
Borrar Pantalla;
c<-1;
linea<-"";
Repetir
linea<-linea+" ";
c<-c+1;
Hasta Que c=lateral
linea<-linea+"X";
c<-1;
Repetir
Escribir " ";
c<-c+1;
Hasta Que c=abajo-1
Escribir linea;
Repetir
Escribir " ";
c 3 Entonces
abajo<-abajo-1;
Fin Si
"s":
Si abajo < 15 Entonces
abajo 2 Entonces
lateral<-lateral-1;
Fin Si
"d":
Si lateral < 50 Entonces
lateral<-lateral+1;
Fin Si
"0":
a<-2;
Fin Segun
Fin Mientras
FinProceso
Eso está lleno de errores de importación de mi código, probaré de nuevo con tabuladores:
Este sería el fichero algo.psc
Proceso algo_digo
a<-1;
lateral<-30;
abajo<-5;
Mientras a=1 Hacer
Borrar Pantalla;
c<-1;
linea<-"";
Repetir
linea<-linea+" ";
c<-c+1;
Hasta Que c=lateral
linea<-linea+"X";
c<-1;
Repetir
Escribir " ";
c<-c+1;
Hasta Que c=abajo-1
Escribir linea;
Repetir
Escribir " ";
c 3 Entonces
abajo<-abajo-1;
Fin Si
"s":
Si abajo < 15 Entonces
abajo 2 Entonces
lateral<-lateral-1;
Fin Si
"d":
Si lateral < 50 Entonces
lateral<-lateral+1;
Fin Si
"0":
a<-2;
Fin Segun
Fin Mientras
FinProceso
Interesante, el comentario con etiquetas de código se come, elimina, lo que vaya entre , por ejemplo entre las líneas
Repetir
Escribir » «;
c
tras la c hay un
y luego ya sigue con 3 Entonces
abajo
Total, que no es fiable esto para poner según qué códigos.
Cambio los signos de asignar por = a ver que tal.
Proceso algo_digo
a=1;
lateral=30;
abajo=5;
Mientras a=1 Hacer
Borrar Pantalla;
c=1;
linea="";
Repetir
linea=linea+" ";
c=c+1;
Hasta Que c=lateral
linea=linea+"X";
c=1;
Repetir
Escribir " ";
c=c+1;
Hasta Que c=abajo-1
Escribir linea;
Repetir
Escribir " ";
c=c+1;
Hasta Que c=18
Escribir "Dibujo una X (w,a,s,d y 0 para salir)";
Leer mueve;
Segun mueve Hacer
"w":
Si abajo > 3 Entonces
abajo=abajo-1;
Fin Si
"s":
Si abajo 2 Entonces
lateral=lateral-1;
Fin Si
"d":
Si lateral < 50 Entonces
lateral=lateral+1;
Fin Si
"0":
a=2;
Fin Segun
Fin Mientras
FinProceso
Sigue comiéndose parte del código, la etiqueta code falla, debería dejar lo escrito tal cual.
ola disculpa por no averte respondido antes pero bueno
ya que no puedes publicar bien el codigo porque no me lo mandas por correo asi no le das tants vueltas al asunto.