Programación Básica con pseint (parte 3)

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.

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


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Guille dijo

    ¿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

  2.   Guille dijo

    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

    1.    xnmm dijo

      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

      1.    Guille dijo

        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.

      2.    Guille dijo

        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

      3.    Guille dijo

        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

      4.    Guille dijo

        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.

  3.   Guille dijo

    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

    1.    Guille dijo

      Sigue comiéndose parte del código, la etiqueta code falla, debería dejar lo escrito tal cual.

      1.    xnmm dijo

        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.