Algoritmos en Pseudolenguaje

Anuncio
Introducción a la Programación
Algoritmos en Pseudolenguaje
Pseudolenguaje
Forma de escribir un algoritmo, siguiendo las reglas de un lenguaje de programación real. Un peseudolenguaje
está compuesto de definiciones (de variables y estructuras) e instrucciones.
Definición (declaración) de variables: Indican el tipo de dato que almacenarán las variables en el proceso.
Declaración de datos: tendremos dos tipos de datos numéricos y alfanuméricos.
Dato numérico
Dato alfanumérico
: num nombre de la variable (Ejemplo: num Edad)
: char nombre de la variable[tamaño] (ejemplo: char Apellido[15])
En este ejemplo, la variable Apellido podrá almacenar un valor de
máximo 15 caracteres.
Estructura de un algoritmo
Inicial : Se declaran e inicializan las variables que se utilizarán en el programa.
Cuerpo : conformado por las instrucciones del programa.
Final : Impresión de resultados y otras operaciones de término de proceso.
Instrucciones
De entrada
De asignación
De salida
De control
: Representa el ingreso de datos al computador.
: Representa el almacenamiento de un valor o expresión en una variable.
: Representa la obtención de datos por pantalla o impresora.
: Representan las decisiones (bifurcación) y ciclos (bucles) en el proceso.
Nomenclatura para las instrucciones
Entrada de datos: la instrucción será read mensaje,variable
Ejemplo: Read “Ingrese el nombre:”,nom
Salida de resultados: la instrucción será print mensajes y/o variables.
Ejemplo: Print “el resultado es:”,suma
Observación: Ud. Puede colocar comentarios en el programa. Estos comienzan con el carácter #.
Ejemplo: # este es un ejemplo de programa
Asignación de variable: la instrucción será variable := valor o expresión
Ejemplos:
Cuenta := Cuenta+1
Nomsuc:=”Maipu”
1
Introducción a la Programación
Operadores
+,*,/
^
Div
mod
+
<,>,=
<= , >= , <>
OR, AND, NOT
Aritméticos
Alfanumérico
De relación
Lógicos
Suma y resta
Multiplicación y división
Elevación
Cuociente entero de la división
Resto de la división
concatenación
Menor , mayor , igual
Menor o igual , mayor o igual , distinto
o , y , negación
Ejemplos de uso de los operadores
Ejemplo 1: Suponga las siguientes variables numéricas en memoria:
A
4
B
15
C
R
P
Si ejecutamos la siguiente instrucción:
P:=A2
C:=B div A
R:=B mod A
El computador calculará 42 y el resultado quedará en la variable P.
El computador dividirá 15 por 4 y el cuociente (3 en este caso) quedará almacenado en la
variable C
El computador dividirá 15 por 4 y el resto de la división (3 en este caso) quedará almacenado en
la variable R
Observación: Las operaciones DIV y MOD implican división, pero sin decimales
Ejemplo:
17 : 3 = 5  cuociente
2/  resto
Ejemplo2: suponga las siguientes variables alfanuméricas:
PAL1
hola
PAL2
Como estás
FRASE
Al ejecutar la sentencia FRASE:=PAL1+PAL2 el computador concatenará los valores almacenados, por lo tanto
en la variable FRASE quedará almacenado el valor holaComoestas.
Sentencias condicionales
Instrucción condicional simple
If (condición) then
..........
..........
else
.........
.........
End_if
2
Introducción a la Programación
A continuación se muestran ejemplos de equivalencia entre fragmentos de diagrama de flujo y pseudolenguaje.
Ejemplo 1: en Diagrama de flujo
Equivalencia en Pseudolenguaje
.
.
.
no
B < 1000
If (B<1000) Then
A:=A*3
B:=B+100
Else
A:=A+2
B:=B+50
End_if
print A,B
.
.
.
si
AA+2
BB+50
AA*3
BB+100
A,B
Ejemplo2: en diagrama de flujo
En pseudolenguaje
.
.
.
MONTOCANT*PRECIO
MONTO:=CANT*PRECIO
If (SUC =1) Then
no
no
SUC
=1
PRECIO:=2000
FACTOR:=2
SUC
=2
Else
If (SUC =2) then
si
si
PRECIO2000
FACTOR 2
PRECIO2500
FACTOR 3
no
CANT
>1000
si
DESCMONTO*FACTOR/100
MONTOMONTO-DESC
DESC0
PRECIO3000
FACTOR 4
PRECIO:=2500
FACTOR:=3
Else
PRECIO:=3000
FACTOR:=4
End_if
End_if
If (CANT >1000) Then
DESC:=MONTO*FACTOR/100
Else
DESC:=0
End_if
MONTO:=MONTO-DESC
Print “el monto es:”,MONTO
.
.
.
MONTO
3
Introducción a la Programación
Instrucción condicional múltiple
Conviene utilizara cuando existe mas de dos caminos (bifurcaciones) y además estos están determinados por el
valor especifico (=) de una variable.
Select variable in
Case Valor1: instrucciones
Break
Case Valor2: instrucciones
Break
.
.
Valorotro:Instrucciones
End_case
Ejemplo: Supongamos el mismo ejemplo anterior:
Ejemplo3: en diagrama de flujo
Con la sentencia if
.
.
MONTOCANT*PRECIO
MONTO:=CANT*PRECIO
If (SUC =1) Then
no
PRECIO:=2000
FACTOR:=2
no
SUC
=1
SUC
=2
Else
If (SUC =2) Then
PRECIO2000
FACTOR 2
PRECIO2500
FACTOR 3
no
si
DESCMONTO*FACTOR/100
MONTOMONTO-DESC
MONTO
PRECIO:=2500
FACTOR:=3
si
si
CANT
>1000
En pseudolenguaje
DESC0
PRECIO3000
FACTOR 4
Else
PRECIO:=3000
FACTOR:=4
End_if
End_if
If (CANT>1000) Then
DESC:=MONTO*FACTOR/100
Else
DESC:=0
End_if
MONTO:=MONTO-DESC
Print “el monto es:”,MONTO
.
.
Con la sentencia Case
MONTO:=CANT*PRECIO
Select SUC in
case 1
: PRECIO:=2000
FACTOR:=2
break
case 2
: PRECIO:=2500
FACTOR:=3
break
valorotro : PRECIO:=3000
FACTOR:=4
End_case
If (CANT>1000) Then
DESC:=MONTO*FACTOR/100
Else
DESC:=0
End_if
MONTO:=MONTO-DESC
Print “el monto es:”,MONTO
4
Introducción a la Programación
Ciclos o bucles
Un ciclo o bucle es un conjunto de sentencias que se ejecuta repetidamente, mientras se cumple una condición
(sea verdadera).
Existen varias instrucciones de ciclo. Revisaremos las más conocidas y presentes en casi todos los lenguajes.
Sentencia While (Mientras): Ejecuta la o las instrucciones que están comprendidas entre While y End_while,
mientras se cumpla la condición establecida.
While (condición)
Instrucciones
End_While
Sentencia For: Ejecuta la o las instrucciones una cantidad de veces.
For(valor inicial,valor final,incremento)
instrucciones
End_for
Sentencia Do: Es similar a la instrucción While, solo que el primer chequeo de la condición es al final del ciclo.
Por lo tanto, el ciclo se ejecuta al menos una vez.
Do
instrucciones
Do_While (condición)
Ejemplo: Se requiere procesar el nombre y la edad de N personas. Al final entregar el promedio de las edades.
Ejemplo 4: con diagrama de flujo
En pseudolenguaje
Con la sentencia While
Start
Num N,Edad,Cuenta, Suma
Char Nombre
N
Cuenta0
Suma0
Cuenta<N
no
SumaSuma/N
si
Nombre, Edad
SumaSuma+Edad
Cuenta Cuenta+1
Start
Num N,Edad,Cuenta,Suma
Char Nombre[20]
read "cuantas personas ingresará:",N
Cuenta:=0
Suma:=0
While (Cuenta<N)
read "ingrese nombre:",Nombre
read "ingrese edad:",edad
Suma:=Suma+Edad
Cuenta:=Cuenta+1
End_while
Suma:=Suma/N
Print "el promedio es:",Suma
End
Suma
End
5
Introducción a la Programación
Con la sentencia For
Start
Num N,Edad,Cuenta,Suma
Char Nombre[20]
Read “cuantas personas ingresará:”;N
Suma:=0
For (Cuenta:=0,Cuenta<N, Cuenta:=Cuenta+1)
Read “ingrese el nombre”;Nombre
Read “ingrese la edad:”;Edad
Suma:=Suma+Edad
End_for
Suma:=Suma/N
Print “El promedio de las edades es:”;Suma
End
Con la sentencia DO...While
Start
Num N,Edad,Cuenta,Suma
Char Nombre
Read “cuantas personas ingresará:”;N
Cuenta:0
Suma:=0
Do()
Read “ingrese el nombre”;Nombre
Read “ingrese la edad:”;Edad
Suma:=Suma+Edad
Cuenta:=Cuenta+1
While (Cuenta<N)
If (N=0) then
Print “no se puede calcular promedio”
Else
Suma:=Suma/N
Print “El promedio de las edades es:”;Suma
End_if
End
6
Descargar