PSEUDOCÓDIGO   - ESTRUCTURAS CONDICIONALES

El pseudocódigo es un lenguaje de especificación (descripción) de algoritmos. El uso de tal lenguaje hace el paso de codificación final (esto es, la traducción a un lenguaje de programación) relativamente fácil. Los lenguajes APL Pascal y Ada se utilizan a veces como lenguajes de especificación de algoritmos.

El pseudocódigo nació como un lenguaje similar al ingles y era un medio de representar básicamente las estructuras de control de programación estructurada que se verán a continuación. Se considera un primer borrador, dado que el pseudocódigo tiene que traducirse posteriormente a un lenguaje de programación. El pseudocódigo no puede ser ejecutado por una computadora. La ventaja del pseudocódigo es que en su uso, en la planificación de un programa, el programador se puede concentrar en la lógica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especifico. Es también fácil modificar el pseudocódigo si se descubren errores o anomalías en la lógica del programa, mientras que en muchas ocasiones suele ser difícil el cambio en la lógica, una vez que esta codificado en un lenguaje de programación. Otra ventaja del pseudocódigo es que puede ser traducido fácilmente a lenguajes estructurados como Pascal, C, Fortran 77/90, Ada 83/95, C++, etc.

El pseudocódigo original utiliza para representar las acciones sucesivas palabras reservadas en ingles –similares a sus homónimas en los lenguajes de programación- tales como start, end, stop, if-then-else, will-end, repeat, until, etc. La escritura de pseudocódigo existe normalmente la indentación (sangría en el margen izquierdo) de diferentes líneas.

La representación en pseudocódigo del problema de la clase anterior es:

Start

//Calculo de ingresos y salarios

read nombre, horas, precio_hora

salario_bruto = horas * precio_hora

tasas = 0.25 * salario_bruto

salario_neto =l salario_bruto – tasas

write nombre, salario_bruto, tasas, salario_neto

End

El algoritmo comienza con la palabra start y finaliza con la palabra end, en inglés ( en español, inicio, fin ).entre estas palabras, sólo se escribe una instrucción o acción por línea. La línea precedida por // se denomina comentario. Es una información al lector del programa y no realiza ninguna instrucción ejecutable, sólo tiene efecto de documentación interna del programa.

Algunos autores suelen utilizar corchetes y llaves. No es recomendable el uso de apóstrofes o simples comillas como representan en Basic de Microsoft los comentarios, ya que este carácter es representativo de apertura o cierre de cadenas de caracteres en lenguajes como Pascal y FORTRAN, y daría lugar a confusión. Otro ejemplo aclaratorio en el uso del pseudocódigo podría ser un sencillo algoritmo del arranque matinal de un coche.

Inicio

//arranque matinal de un coche

introducir la llave de contacto

tirar del estrangulador de aire

girar la llave de contacto

pisar el acelerador

oír el ruido del motor

pisar de nuevo el acelerador

esperar unos instantes a que se caliente el motor

llevar el estrangulador de aire a su posición

fin

Por fortuna, aunque el pseudocódigo nació como un sustituto del lenguaje de programación y, por consiguiente, sus palabras reservadas se conservaron o fueron muy similares a las de dichos lenguajes, prácticamente el inglés, el uso del pseudocódigo se ha extendido en la comunidad hispana con términos en español, como inicio , fin, parada, leer, escribir, sientonces-si_no, mientras, fin_mientras, repetir, hasta_que, etc. Sin duda, el uso de terminología de pseudocódigo en español ha facilitado y facilitará considerablemente el aprendizaje y uso diario de la programación. En esta obra, al igual que en otras nuestras utilizaremos el pseudocódigo en español y daremos en su momento las estructuras equivalentes en inglés, al objeto de facilitar la traducción del pseudocódigo al lenguaje de programación seleccionado. Así pues, en los pseudocódigos citados anteriormente deberían ser sustituidas las palabras start, end, read, write por inicio, fin, leer, escribir, respectivamente.

 

Equivalencias de palabras en inglés y español

ALGORITMOS EN ESPAÑOL

start

read

write

end

Inicio

leer

escribir

Fin

Para quienes desean probar algoritmos en QuickBasic (qbasic) veamos las equivalencias

Equivalencias de palabras qbasic  

QBASIC

no tiene, aunque se usará CLS para iniciar un programa

INPUT

PRINT

END

Inicio

leer

escribir

Fin

 

Ejemplo en QBASIC

CLS  (nota: CLS se usa para limpiar la pantalla)

' Calculo de ingresos y salarios   (NOTE QUE QBASIC EL COMENTARIO SE INICIA CON APOSTROFE)

INPUT nombre, horas, precio_hora

salario_bruto = horas * precio_hora

tasas = 0.25 * salario_bruto

salario_neto =l salario_bruto – tasas

PRINT nombre, salario_bruto, tasas, salario_neto

End

RESUMEN DE PALABRAS RESERVADAS PARA EL CURSO DE ALGORITMOS

Ingles Español QBASIC
Start Inicio CLS
Read Leer INPUT
Write Escribir PRINT
If... then Si ... entonces If ... then
else sino else
end_if fin_si end if
While ..do Mientras.. Hacer Do While
Loop fin_mientras Loop
For...to Para ... hacer For... to
For...to Desde....hacer For...to
Next Fin_Para o Fin_desde Next
Repeat Repetir Do until
until hasta Loop
Do Case Segun sea Select Case
Case Caso Case
EndCase Fin_segun End Select
and y and
or o or

 

INSTRUCCIONES Y TIPOS DE INSTRUCCIONES

El proceso de diseño del algoritmo o posteriormente de codificación del programa consiste en definir las acciones o instrucciones que resolverán al problema. Las acciones o instrucciones se deben escribir y posteriormente almacenar en memoria en el mismo orden en que han de ejecutarse, es decir, en secuencia. Un programa puede ser lineal o no lineal.

Un programa es lineal si las instrucciones se ejecutan secuencialmente, sin bifurcaciones, decisión ni comparaciones.

 

En el caso del algoritmo las instrucciones se suelen conocer como acciones, y se tendría:

accion1

accion2

accion3

...

accion n

 

 

Un programa es no lineal cuando se interrumpe la secuencia mediante instrucciones de bifurcación como se vio con el caso del rombo en los diagramas de flujo

 

 

 

TIPOS DE INSTRUCCIONES

Las instrucciones disponibles en un lenguaje de programación depende del tipo de lenguaje. Por ello, en este apartado estudiaremos las instrucciones –acciones- básicas que se pueden implementar de modo general en un algoritmo y que esencialmente soportan todos los lenguajes. Dicho de otro modo, las instrucciones básicas son independientes del lenguaje.

La clasificación más usual, desde el punto de vista anterior, es:

1.       instrucciones de inicio / fin,

2.       instrucciones de asignación,

3.       instrucciones de lectura,

4.       instrucciones de escritura,

5.       instrucciones de bifurcación.

Instrucciones de asignación.

Como ya son conocidas del lector, repasaremos su funcionamiento con ejemplos:

         a)  A   =   80      la variable A toma el valor 80.

 

         b)  ¿Cuál será el valor que tomará C tras la ejecución de las siguientes instrucciones?

         A     =     12

         B     =      A

         C     =     B

            A contiene 12, B contiene 12 y C contiene 12.

            NOTA: Antes de la ejecución de las tres instrucciones, el valor de A, B y C es

            Indeterminado.

 

Si se desea darles un valor inicial, hará que hacerlo explícitamente, incluso cuando este valor sea 0. Es decir, habrá que definir e inicializar las instrucciones.

            A  =           0

            B  =           0

            C  =           0

c) ¿Cuál es el valor de la variable AUX al ejecutarse la instrucción 5?

 

1. A =10

2. B =20

3. AUX= A

4. A= B

5. B= AUX

. en la instrucción 1, A toma el valor 10

. en la instrucción 2, B toma el valor 20

. en la instrucción 3, AUX toma el valor anterior de A, o sea 10

. en la instrucción 4, A toma el valor anterior de B, o sea 20

. en la instrucción 5, B toma el valor anterior de AUX, o sea 10

. tras la instrucción 5, AUX sigue valiendo 10

 

d) ¿ Cuál es el significado de N = N + 5 si N tiene el valor actual de 2?

 

recuerde siempre se calcula primero la parte derecha o sea N+2, esto es 2 + 5

lo que da 7.

A continuación el 7 se asigna a N

 

Luego N vale 7

 

ESTRUCTURAS CONDICIONALES

 

Las estructuras condicionales permiten bifurcar la ejecución de un programa de acuerdo a una condición.

si la CONDICION resulta en valor verdadero se ejecutarán algunas acciones, recuerde se ejecutan  si y solo si la CONDICION resultase verdadera, si la CONDICION  resultase falsa se ejecutarán en el programa otras acciones o quizá el programa continua en otro lado.

 

Ya hemos estudiado esto en el caso de los diagramas de flujo cuando se usó el ROMBO, pero en pseudocódigo necesitamos aclarar ciertas formas de bifurcación:

 

 

Estructura Condicional de alternativa SIMPLE

 

Es de la forma

 

            Si CONDICION entonces

                acción 1

                acción 2

                acción 3

                ...

                acción n

            Fin_SI

 

donde CONDICION  es un TEST que se desea comprobar y las acciones de la 1 hasta la n solo se ejecutan si la CONDICION resulta verdadera.

 

Ejemplo 1

 

Cual será el valor impreso o mostrado en pantalla para la variable N

Inicio

    A = 20

    N= A -2

    Si A > 10 entonces

        N = N + 1

    fin_si

    Escribe N

Fin

 

Solución

1 paso:  A toma el Valor de 20

2 paso:  N toma el valor de 18 (o sea 20-2)

3 paso: Nos preguntamos "¿20 es mayor que 10?"

    Aquí debe salir una respuesta SI o No (Verdadero o Falso)

    obviamente 20 es mayor que 10 la respuesta es SI

    entonces todas aquellas acciones o instrucciones que dependan del bloque SI - FIN_SI se ejecutan

    la única acción es N = N+1 o sea N+1 es 18+1, entonces el valor de N es 19

4 paso se escribe en pantalla 19

 

 

Ejemplo 2

 

Cual será el valor impreso o mostrado en pantalla para la variable N


Inicio

    A = 20

    N= A -2

    Si A > 30 entonces

        N = N + 1

    fin_si

    Escribe N

Fin


Solución

1 paso:  A toma el Valor de 20

2 paso:  N toma el valor de 18 (o sea 20-2)

3 paso: Nos preguntamos "¿20 es mayor que 30?"

    Aquí debe salir una respuesta SI o No (Verdadero o Falso)

    obviamente 20 NO ES MAYOR 30, la respuesta es NO

    entonces NO SE EJECUTAN aquellas acciones o instrucciones que dependan del bloque SI - FIN_SI.

    Esto ocasiona que el programa continua en la Instrucción que sigue al fin_si

4 paso: se escribe en pantalla 18 puesto que nunca se llevo a cabo el N =N + 1

 

Ejemplo 3

 

Hacer un programa que nos diga si una persona es mayor de edad en base a la edad proporcionada al computador.

 


Inicio

    leer Edad

    Si Edad >= 18 entonces

        Escribe "La persona de ", Edad, " es mayor de Edad"

    FIN_SI

    Escribe "Gracias por usar este programa"

Fin


 

1 paso: El digitador Tipea la edad por ejemplo 25 y presiona Enter (La variable Edad adquiere el valor de 25)

2 paso: Responder si o no a la pregunta  25>=18, "¿25 es mayor o igual que 18?", la respuesta es SI

            esto ocasiona que todas aquellas instrucciones que dependen del bloque Si Fin_si se ejecutan

3 paso : se escribe

 

            La persona de 25  es mayor de Edad

4:paso se escribe

            Gracias por usar este programa

 

 

Si en el 1er paso el digitador hubiese ingresado 12 en vez de 25 la salida del programa tan solo sería:

            Gracias por usar este programa

 

 

Ejemplo 4

 

Un restaurante hace un descuento de 5 soles a las personas que consumen mas de 100 soles. haga el programa que pida el monto consumido y calcule cuanto hay que pagar.

 

Inicio

    Leer Consumo

    descuento = 0

    Si Consumo > 100 entonces

        descuento = 5

    FIN_SI

    MontoAPagar = Consumo - descuento

    Escribir MontoAPagar

Fin

 

 

paso1: EL Digitador tipea 250 y presiona Enter (consumo vale 250)

paso2: La variable descuento toma el valor de 0 (Inicializamos descuento con 0)

paso3: nos preguntamos 250 > 100?

        La respuesta es SI

        entonces Descuento toma el valor de 5

paso4:   MontoAPagar = 250 - 5  esto es   MontoAPagar será 245

paso5: Se escribe en pantalla 245

 

 

 

Suponga que

paso1: EL Digitador tipea 50 y presiona Enter (consumo vale 50)

paso2: La variable descuento toma el valor de 0 (Inicializamos descuento con 0)

paso3: nos preguntamos 50 > 100?

        La respuesta es NO

paso4:   MontoAPagar = 50 - 0  esto es   MontoAPagar será 50

paso5: Se escribe en pantalla 50

 

 

Ejemplo 5

En los cálculos de planillas y salarios normalmente se considera un descuento del 6% por servicios médicos (seguro social) y 10% por AFP (Fondo de Pensiones y Jubilación) pero para aquellos que ganan mas de 5000 soles los descuentos son de 7% de seguro social y 11% de AFP. Calcular el salario neto a pagar.


Inicio

        Leer Sueldo

        Desc = 6/100

        Afp = 10/100

        Si Sueldo > 5000 entonces

                Desc= 7/100

                Afp = 11/100

        FIN_SI

        SNeto = Sueldo - Sueldo*Desc - Sueldo*Afp

        Escribe SNeto

Fin


 

paso1: El digitador tipea 2000 y presiona Enter (la variable Sueldo toma el valor de 2000)

paso2:  Desc toma el valor de 0.06

paso3: Afp toma el valor de 0.10

paso4: Nos Preguntamos 2000 > 5000?

        La respuesta es NO

paso5:

        SNeto =  2000 - 2000*0.06 - 2000*0.10

        o sea SNeto vale  1680

 

 

 

Suponga que ahora

paso1: El digitador tipea 8000 y presiona Enter (la variable Sueldo toma el valor de 8000)

paso2:  Desc toma el valor de 0.06

paso3: Afp toma el valor de 0.10

paso4: Nos Preguntamos 8000 > 5000?

        La respuesta es SI

        Desc toma el valor de 0.07

        Afp toma el valor de 0.11

paso5:

        SNeto =  8000  -   8000*0.07  -   8000*0.11

        o sea SNeto vale  6560

 

 

Estructura Condicional de alternativa DOBLE

 

Es de la forma

 

            Si CONDICION entonces

                acción 1

                acción 2

                acción 3

                ...

                acción n

            SiNo

                acción q1

                acción q2

                acción q3

                ...

                acción qn

            Fin_SI

 

 

Donde CONDICION  es un TEST que se desea comprobar y las acciones de la 1 hasta la n solo se ejecutan si la CONDICION resulta verdadera.

En caso la CONDICION Resultase falsa se ejecutan las acciones de la q1 a la qn que corresponden al bloque SINO

 

 

Ejemplo 1

 

Cual será el valor impreso o mostrado en pantalla para la variable N

Inicio

    A = 20

    N= A -2

    Si A > 10 entonces

        N = N + 1

    SiNo

        N = N - 1

    fin_si

    Escribe N

Fin

 

Solución

1 paso:  A toma el Valor de 20

2 paso:  N toma el valor de 18 (o sea 20-2)

3 paso: Nos preguntamos "¿20 es mayor que 10?"

    Aquí debe salir una respuesta SI o No (Verdadero o Falso)

    obviamente 20 es mayor que 10 la respuesta es SI

    entonces todas aquellas acciones o instrucciones que dependan del bloque SI - FIN_SI se ejecutan

    la única acción es N = N+1 o sea N+1 es 18+1, entonces el valor de N es 19

    de aqui se salta a la instrucción que esta después del FIN_SI

4 paso se escribe en pantalla 19

 

 

 

Ejemplo 2

 

Cual será el valor impreso o mostrado en pantalla para la variable N

Inicio

    A = 20

    N= A -2

    Si A < 10 entonces

        N = N + 1

    SiNo

        N = N - 1

    fin_si

    Escribe N

Fin

 

Solución

1 paso:  A toma el Valor de 20

2 paso:  N toma el valor de 18 (o sea 20-2)

3 paso: Nos preguntamos "¿20 es menor que 10?"

    Aquí debe salir una respuesta SI o No (Verdadero o Falso)

    obviamente 20 es mayor que 10 la respuesta es NO

    entonces todas aquellas acciones o instrucciones que dependan del bloque SINO se ejecutan

    la única acción es N = N-1 o sea N-1 es 18-1, entonces el valor de N es 17

    de aquí se salta a la instrucción que esta después del FIN_SI

4 paso se escribe en pantalla 17

 

Recuerde

 

Si Condicion entonces

            ....

            Se ejecutan por ser  VERDAD la Condición

            ....

Sino

            ....

            Se ejecutan por ser FALSA la Condición

            ....

Fin_SI

 

 

 

Ejercicios resueltos y propuestos

 

 

1.- Hacer un programa que incremente en un 10% el monto de un departamento por cada dormitorio adicional, si normalmente los departamentos que que se venden en el plan mi vivienda vienen con 2 dormitorios.

Mostrar el monto a pagar.

 

Inicio

        Leer Valor_dpto

        Leer NroDormitorios

        Si NroDormitorios > 2 entonces

                Valor_dpto= Valor_dpto  + (NroDormitorios-2)* valor_dpto * 10/100

        Fin_SI

Fin

 

2.- Ingresar 3 notas de un alumno, promediarlas y decir si aprueba o no aprueba el curso

Sabiendo que la nota aprobatoria es 14 o mas, no existen redondeos a favor del alumno.

 

Inicio

    Leer N1,N2,N3

    P = (N1+ N2 +N3)/3

    Si P >= 14 entonces

            Escribe "Aprueba el Curso"

    SiNo

            Escribe "Desaprueba el Curso"

    FIN_SI

 

3.- Ingresar 3 notas de cursos de un alumno, el 1er curso tiene 2 créditos, el 2do tiene 3 créditos y el 3er tiene 2 créditos. El alumno puede llevar mas de 18 créditos  si su promedio ponderado fue 14 o mas

Inicio

    Leer N1,N2,N3

    P = (N1*2+ N2*3+ N3*2)/(2+3+2)

    Si P >= 14 entonces

            Escribe "Puede llevar mas de 18 créditos"

    SiNo

            Escribe "Solo puede llevar hasta 18 créditos"

    FIN_SI

 

4.- SAGA FALABELLA se encuentra de aniversario y ha programado una serie de ofertas con la finalidad de brindar facilidades a sus clientes y al a vez de incrementar sus ventas. Estas ofertas se basan específicamente en un porcentaje de descuento sobre el total de compra el cual varia de acuerdo al monto

* Por un monto mayor o igual a $500 se hará un descuento del 30%
* Por un monto menor de $500 pero mayor o igual a 200 se hará un descuento     del 20%
* Por un monto menor de $200 pero mayor o igual a 100 se hará un descuento     del 10%


INICIO
Leer Consumo
Si consumo >=500 entonces
     descuento = Consumo*30/100
                Sino
                    Si consumo >=200 entonces
                          descuento = Consumo*20/100
                    Sino
                           Si consumo >=100 entonces
                                descuento = Consumo*10/100
                           Sino
                                descuento=0
                           FIN_SI
                    FIN_SI
                FIN_SI
                Totalpagar= Consumo-Descuento
Escribir Totalpagar
FIN
 

 

 

5.- Dadas 3 longitudes, decir mediante un mensaje si éstas forman un triangulo: equilátero, isósceles o escaleno, o no forman triangulo (cada lado tiene que ser menos que la suma de los otros dos para que exista triángulo)

INICIO

Leer a,b,c

Si a<(b+c) y b<(a+c)  y c<(a+b) entonces

      Si a=b y  b=c entonces

            escribe "El triangulo es equilátero"

      Sino

          Si a<>b  y a<>c  y b<>c entonces

              escribe "El triangulo es escaleno"

          Sino

              escribe: "El triangulo es isósceles"

          FIN_SI

     FIN_SI

Sino

    escribe: "No forman un triangulo"

FIN_SI

FIN

 

6.-Kathy organiza una fiesta en la cual una computadora controla el ingreso mediante 5 claves. Si se ingresa al menos una clave incorrecta esta escribirá "TE EQUIVOCASTE DE FIESTA" y no permitirá el ingreso. Si las 5 claves son correctas escribirá  "BIENVENIDO A LA FIESTA"

Las Claves son:
1: "TIENES"
2: "QUE SER"
3: "INVITADO"
4: "PARA"
5: "INGRESAR"

INICIO
Leer Claves: C1$, C2$, C3$, C4$, C5$
                Si C1$<>"TIENE" entonces
                    escribir "Te Equivocaste de Fiesta"
                Sino
    Si C2$<>"QUE SER" entonces
                        escribir "Te Equivocaste de Fiesta"
                    Sino
                         Si C3$<>"INVITADO" entonces
                            escribir "Te Equivocaste de Fiesta"
                         Sino
                                Si C4$<>"PARA" entonces:
                                    escribir "Te Equivocaste de Fiesta"
                                Sino
                                        Si C5$<>"INGRESAR" entonces:
                                                escribir "Te Equivocaste de Fiesta"
                                        Sino
                                                escribir "Bienvenido a la Fiesta"
                                        FIN_SI
                                FIN_SI
                         FIN_SI
                   FIN_SI
FIN_SI
FIN  
 

         Propuestos

       

        1.- Hacer un programa que lea 2 números y diga cual fue el mayor de ellos

        2.- Hacer un programa que lea 3 números  y diga cual fue el menor de ellos

        3.- Hacer un programa que calcule el volumen de un cilindro siempre que el radio sea superior a 10

        4.- Hacer un programa que calcule la diferencia de áreas de 2 círculos de radios R1 y R2. Asegúrese que el programa

             muestre esta diferencia en numero Positivo.

        5.- Leer una hora en 3 variables HH, MM, SS mostrar cual será la hora 2 segundos después.

        6.- Leer una hora en 3 variables HH, MM, SS mostrar cual será la hora 3 segundos menos.

        7.- Leer una hora en 3 variables HH, MM, SS mostrar cual será la hora n segundos después.

        8.- Leer las 3 variables ANIO,MES,DIA y decir si es una fecha correcta.

        9. Leer la variable ANIO y decir si corresponde a un Año Bisiesto.

 

        10. A la 15.-  INVENTE EJERCICIOS Y ENVÍELOS A LBARRUETO@USAT.EDU.PE

 

        SUERTE