Mostrando entradas con la etiqueta Numero Secreto. Mostrar todas las entradas
Mostrando entradas con la etiqueta Numero Secreto. Mostrar todas las entradas

lunes, 1 de abril de 2013

Pseudocódigo Sub Procesos


Las Sub Procesos son bloques de código utilizados para dividir un programa en partes más pequeñas, cada una de las cuáles tendrá una tarea determinada, estos son la base de la programación estructurada.


Permiten dar nombre a un grupo de instrucciones y que estas se ejecuten cuando las nombremos.

En PSeInt los sub-procesos se crean con la instrucción SubProceso.

Podemos clasificar lo subprocesos en tres tipos:
  • Acciones
    • No aceptan entradas y no retornan valores.
    • Solo realizan acciones.
  • Acciones con parámetros
    • Aceptar valores de entrada que influyen en su ejecución.
  • Funciones
    • Realizan cálculos y retornan valores.

SubProceso Saludar
Escribir "Hola mundo!";
FinSubProceso
Proceso Ejemplo
Saludar; //1 vez
Saludar; //2 vez
FinProceso

Por claridad los sub procesos los escribiremos delante del proceso.


El nombre de un sub proceso sigue las mismas normas que una variable.
El nombre de ser claro y concreto.


Los sub procesos evitan tener procesos tan grandes, facilitan el diseño divide y vencerás y dan claridad a los algoritmos.





Los sub procesos pueden aceptar parámetros de entrada.

  • Los parámetros son declaraciones de variables que serán entradas para los sub procesos.
  • Para añadir un parámetro a un sub proceso pondremos el nombre del parámetro entre paréntesis al derecha del nombre del sub proceso.
  • Por defecto los parámetros se pasan por valor (excepto arrays), los cambios en el parámetro no afectan al proceso.

SubProceso Saludar( Nombre Por Valor  )
Escribir "Hola mundo! " , Nombre;
Nombre <- "Pedroooo!!!!";
FinSubProceso 
Proceso Ejemplo
Definir N Como Caracter;
Leer N;
Saludar(N);
Saludar(N);
FinProceso

Los sub procesos también aceptan parámetros de salida o por referencia.
  • Para declarar un parámetro de salida se escribe Por Referencia detrás del nombre del parámetro.
  • Los cambios en el parámetro afectaran al proceso principal.
  • Un proceso puede tener parámetros por valor y por referencia.
SubProceso Saludar( Nombre Por Referencia  )
Escribir "Hola mundo! " , Nombre;
Nombre <- "Pedroooo!!!!";
FinSubProceso
Proceso Ejemplo
Definir N Como Caracter;
Leer N;
Saludar(N);
Saludar(N); //Muestra pedro!!!!!
FinProceso

Ejemplo paso por valor y referencia:


1 SubProceso PasoValorRef(A Por Valor, B Por Referencia)
2      A <- A + 1;
3      B <- B + 1;
4 FinSubProceso
5
6 Proceso ValorReferencia
7      Definir V , R Como Entero;
8      V <- 10;
9      R <- 10;
10     Escribir "V ", V , " R ", R;
11     //Muestra V 10 R 10
12     PasoValorRef(V , R);
13     Escribir "V ", V , " R ", R;
14     //Muestra V 10 R 11
15 FinProceso

Ejemplo practico de re escritura de un algoritmo para usar sub procesos:


1 Proceso AdivinaNumero
2      Definir Secreto, Numero Como Entero;
3      Secreto <- 22;
4      Repetir
5            Repetir
6                   Escribir "Dime un Numero > 0";
7                   Leer Numero;
8                   si Numero <= 0 Entonces
9                          Escribir "No es valido";
10                  FinSi
11           Hasta Que Numero > 0
12           si Numero > Secreto entonces
13                  Escribir "Muy Alto";
14           Sino
15                  Escribir "Muy Bajo";
16           FinSi
17     Hasta Que Numero = Secreto;
18     Escribir "Acertastes";
19 FinProceso

Algoritmo modificado usando un sub proceso:


1 SubProceso LeerNumero(Num por referencia)
2      Repetir
3             Escribir "Dime un Numero > 0";
4             Leer Num;
5            si Num <= 0 Entonces
6                   Escribir "No es valido";
7            FinSi
8      Hasta Que Num > 0
9 FinSubProceso
10
11 Proceso AdivinaNumero
12     Definir Secreto, Numero Como Entero;
13     Secreto <- 22;
14     Repetir
15           LeerNumero(Numero);
16           si Numero > Secreto entonces
17                  Escribir "Muy Alto";
18           Sino
19                  Escribir "Muy Bajo";
20           FinSi
21     Hasta Que Numero = Secreto;
22     Escribir "Acertastes";
23 FinProceso



Los sub procesos también pueden retornar valores por su nombre como hacen las funciones.

En este caso los sub procesos se escriben como una expresión en una asignación o en otra instrucción.

Para definir el parámetro de retorno se pone su nombre a la izquierda del nombre del proceso y se usa el símbolo de asignación entre los dos nombres.


SubProceso res <- SumaNumeros(A , B)  Definir res como real; res <- A + B; FinSubProceso
Proceso Ejemplo Definir NumA, NumB  Como Real; Leer NumA; Leer NumB; Definir Suma Como Real; Suma <- SumaNumeros(NumA, NumB); Escribir "La Suma es ", Suma; Escribir " 23 + 44 ", SumaNumeros(23, 44);FinProceso

Algoritmo modificado usando un sub procesos y funciones:



1 SubProceso LeerNumero(Num por referencia)
2      Repetir
3            Escribir "Dime un Numero > 0";
4                   Leer Num;
5                   si Num <= 0 Entonces
6                          Escribir "No es valido";
7                   FinSi
8      Hasta Que Num > 0
9 FinSubProceso
10 SubProceso Pista <- ObtenerPista(Num por valor , Secreto)
11           Definir Pista Como Caracter;
12           si Num > Secreto entonces
13                  Pista <- "Muy Alto";
14           Sino
15                  Pista <- "Muy Bajo";
16           FinSi
17 FinSubProceso
18 Proceso AdivinaNumero
19           Definir Secreto, Numero Como Entero;
20           Secreto <- 22;
21           Repetir
22                  LeerNumero(Numero);
23                  Escribir ObtenerPista(Numero, Secreto);
24           Hasta Que Numero = Secreto;
25           Escribir "Acertastes";
26 FinProceso


domingo, 24 de marzo de 2013

Pseudocódigo VIII


Estructuras Repetitivas.


Las estructuras repetitivas se utilizan cuando se quiere que un conjunto de instrucciones se ejecuten un cierto número de veces. 

Llamamos bucle a todo proceso que se repite un cierto número de veces dentro de un pseudocódigo o un programa.

Existen tres tipos de estructuras repetitivas:

  • La primera es aquella en donde se tiene perfectamente establecido el número de veces que un grupo de acciones se van a ejecutar (20, 5, 2 veces).
  • La segunda en la que el número de repeticiones es desconocido y se hará hasta que se cumpla o no cierta condición.
Un ejemplo de la primera sería imprimir los datos de los alumnos de una clase (se conoce cuantos alumnos hay) y un ejemplo de la segunda puede ser el mostrar un mensaje de error cada vez que el usuario pulse una determinada tecla (no sabemos cuantas veces pulsará esa tecla).

Las acciones que forman parte del cuerpo del bucle son ejecutadas de forma repetitiva mediante la ocurrencia o no de una condición.


Estructura Para.


Se utiliza cuando conocemos de antemano el número de veces en que se desea ejecutar una acción o grupo de acciones, se utiliza la estructura repetitivita Para.

Esta estructura ejecuta las acciones del cuerpo del bucle un número especificado de veces y de modo automático controla el número de iteraciones o pasos.

Sintaxis:

Para <var> <- <ini> Hasta <fin> Con Paso <paso> Hacer
              <instrucciones>       
FinPara
  • Si no ponemos Con Paso <paso>  el incremento es 1.
  • Si ini es mayor que fin y paso > 1 no procesa
  • Si ini es mayor que fin y paso < 1 procesa.


Ejemplo:


Definir i como entero;

//Escribir los numeros del 0 al 10
Para i<-0 hasta 10 hacer
Escribir i;
FinPara
//Escribir los numeros del 0 al 10 de 2 en 2
Para i<-0 hasta 10 Con Paso 2 hacer
Escribir i;
FinPara
//Escribir los numeros del 0 al 10 en descendente
Para i<-10 hasta 0 Con Paso -1 hacer
Escribir i;
FinPara

1 Proceso EjemploPara
2      Definir i Como Entero;
3      Definir inc, ini, final Como Entero;
4      inc <- 3;
5      ini <- 0;
6      final<- 23;
7
8      Para i<-0 hasta 10 hacer
9            Escribir i;
10     FinPara
11
12     Para i<-ini hasta final Con Paso inc hacer
13           Escribir i;
14     FinPara
15
16     Para i<-36 hasta final Con Paso -inc Hacer
17           Escribir i;
18     FinPara
19
20 FinProceso

Estructura Mientras.


Como su nombre lo indica, esta estructura repite el cuerpo del bucle mientras se cumpla una determinada condición.

Mientras <condición> Hacer   
          <instrucciones> 
FinMientras

Al ejecutarse esta instrucción, la condición es evaluada.
  • Si la condición resulta verdadera, se ejecuta una vez la secuencia de instrucciones que forman el cuerpo del ciclo. 
  • Al finalizar la ejecución del cuerpo del ciclo se vuelve a evaluar la condición y, si es verdadera, la ejecución se repite.
  • Estos pasos se repiten mientras la condición sea verdadera.
Note que las instrucciones del cuerpo del ciclo pueden no ejecutarse nunca, si al evaluar por primera vez la condición resulta ser falsa.

Si la condición siempre es verdadera, al ejecutar esta instrucción se produce un ciclo infinito.
A fin de evitarlo, las instrucciones del cuerpo del ciclo deben contener alguna instrucción que modifique la o las variables involucradas en la condición, de modo que ésta sea falsificada en algún momento y así finalice la ejecución del ciclo.

Ejemplo:


1 Proceso EjemploMientras
2      //Un mientras que muestra los numeros del 0 al 10
3      //Un Mientras que muestra los num del 0 al 10 de 2en2
4      // Otro que muestra del 10 al 0
5      Definir i Como Entero;
6      i<-0;
7      Mientras i <= 10 hacer
8            Escribir i;
9            i<-i+1;
10     FinMientras
11
12     Escribir "Otro";
13     i<-0;
14     Mientras i <= 10 hacer
15           Escribir i;
16           i<-i+2;
17     FinMientras
18
19     Escribir "Otro Mas";
20     i<-10;
21     Mientras i >= 0 hacer
22           Escribir i;
23           i<-i-1;
24     FinMientras
25 FinProceso

1 Proceso NumSecretoMientras
2      Definir Secreto , Numero Como Entero;
3      Secreto <- 22;
4      Escribir "Dime un Numero";
5      Leer Numero;
6      Mientras Numero <> Secreto Hacer
7             si Numero > Secreto Entonces
8                    Escribir "Muy Alto";
9             Sino
10                   Si Numero < Secreto Entonces
11                         Escribir "Muy Bajo";
12                   FinSi
13            FinSi
14            Leer Numero; //leo otro numero
15 FinMientras
16     Escribir "Acertastes";
17 FinProceso


Estructura Repetir.


La estructura repetir cumple la misma función que la estructura mientras.

La diferencia está en que la estructura mientras comprueba la condición al inicio y repetir lo hace al final, por eso la estructura repetir se ejecuta por lo menos una vez.
  • Mientras 0 o N veces.
  • Repetir 1 o N veces.

Repetir
<instrucciones>
Hasta Que <condición>    


Al ejecutarse esta instrucción, la secuencia de instrucciones que forma el cuerpo del ciclo se ejecuta una vez y luego se evalúa la condición.

Si la condición es falsa, el cuerpo del ciclo se ejecuta nuevamente y se vuelve a evaluar la condición. 
Esto se repite hasta que la condición sea verdadera.

Note que, dado que la condición se evalúa al final, las instrucciones del cuerpo del ciclo serán ejecutadas al menos una vez.

Además, a fin de evitar ciclos infinitos, 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.

Ejemplo:


1 Proceso EjemploRepetir
2      //Un Repetir que muestra los numeros del 0 al 10
3      //Un Repetir que muestra los num del 0 al 10 de 2en2
4      // Otro que muestra del 10 al 0
5      Definir i Como Entero;
6      i<-0;
7      Repetir
8            Escribir i;
9            i<-i+1;
10     Hasta Que i>10
11
12     i<-0;
13     Escribir "....";
14     Repetir
15           Escribir i;
16           i<-i+2;
17     Hasta Que i>10;
18
19     escribir ".....";
20     i<-10;
21     Repetir
22           Escribir i;
23           i<-i-1;
24     Hasta Que i<0
25
26 FinProceso

1 Proceso NumeroSecretoRepetir
2      Definir Numero, Secreto Como Real;
3      Secreto <- 21;
4      Repetir
5            Escribir "Dame el Numero";
6            Leer Numero;
7            Si Numero > Secreto Entonces
8                   Escribir "Muy Alto";
9            Sino
10                  Si Numero < Secreto Entonces
11                         Escribir "Muy Bajo";
12                  FinSi
13           FinSi
14     Hasta Que Numero = Secreto
15     Escribir "Acetastes";
16 FinProceso