Diseño de Algoritmos - Pseudocódigo
Diseño de Algoritmos - Pseudocódigo
Indice
Unidad 1: Algoritmos y programas
1. Introducción
2. Concepto de Algoritmo y programa
3. Lenguajes de programación
4. Diseño de Algoritmos
5. Diagramas de Flujo
Página 1
Bloque1: Pseudocódigo
Crea una carpeta llamada Programación, dentro de ella una carpeta llamada
Pseudocódigo y dentro de ella una carpeta llamada Actividades.
1. Introducción
• Entrada
• Proceso
• Salida
Ejemplo 2:
1. Inicio
2. Leer el pedido
3. Examinar la ficha del cliente
4. Si el cliente es solvente aceptar el pedido, en caso contrario rechazar el
pedido
5. Fin
3. Lenguajes de programación
Está claro que para que el ordenador (el procesador) realice un proceso, es
necesario que se le suministre un algoritmo adecuado expresado en forma de
programa. Y este programa ha de ser, ESCRITO en un lenguaje (idioma) asequible
para el humano y TRADUCIDO al lenguaje que entienda el ordenador, el lenguaje
o código máquina (constituido por 0 y 1). Esta actividad se denomina
programación.
Como el lenguaje máquina es un código “ bajo nivel” que depende del hardware de
la máquina, la tarea de programar se hace compleja y tediosa; por esta razón,
surgen otros lenguajes llamados de “alto nivel” que ya son cercanos al lenguaje
humano.
Página 3
Bloque1: Pseudocódigo
4. Diseño de algoritmos
Diseño de un
Algoritmo
Página 4
Bloque1: Pseudocódigo
5. Diagramas de flujo
Solución:
Página 5
Bloque1: Pseudocódigo
Sus características:
• Sintaxis sencilla
• Manejo de estructuras de datos básicas de control
• Cuatro tipos de datos básicos: numéricos, lógicos, carácter y cadenas
• Estructuras de datos: arreglos o arrays
Inicio
Fin
Página 6
Bloque1: Pseudocódigo
Algoritmo Suma
C <- A+B
FinAlgoritmo
Página 7
Bloque1: Pseudocódigo
Los tipos de datos numéricos enteros puedes ser positivos o negativos. Ejemplos
de números enteros: -5, 8, -18, 1028, etc.
Los numéricos reales son valores numéricos con componente decimal (se utiliza
el punto para indicar los decimales) y pueden ser también positivos o negativos.
Por ejemplo: -0.8, 3.45, 7.8 etc.
Son de tipo lógico los valores que pueden ser: verdadero (1) y falso (0). Se utilizan
en la determinación de las condiciones. Por ejemplo, cuando se indica una
condición como: “8 es mayor que 4”, la respuesta es el valor verdadero (1).
Ejemplos de valores de tipo carácter: 'a ' , 'C', '8' , '#' etc. (van entre comillas
simples).
Página 8
Bloque1: Pseudocódigo
3. Constantes y Variables
Hay dos formas de crear una variable y asignarle un valor. Son: la Lectura y la
asignación.
Lectura
Desde el teclado, el usuario introduce un valor para esta variable.
Si la variable existe, ésta toma el valor introducido por el teclado
Si no existe la variable, se crea con ese valor.
Leer Nombre
Asignación
La operación o instrucción de asignación permite almacenar un valor en una
variable.
Cuando se ejecuta la operación de asignación se evalúa el valor o expresión de la
derecha y luego se asigna el resultado a la izquierda.
Nombre < - “Andrés” ACTIVIDADES
Página 9
Bloque1: Pseudocódigo
Son los elementos que permiten indicar la realización de una operación entre
determinados valores. La sintaxis de estas expresiones con operadores será
siempre de la siguiente forma:
Debemos tener en cuenta que cada expresión puede ser un solo valor, constante
o variable, o una expresión como conjunto de valores relacionados mediante
operadores, por lo que es necesario que existan unas reglas que indiquen en que
orden deben efectuarse las operaciones. La relación de los operadores más
usuales es la siguiente:
• Operadores Aritméticos
• Operadores Lógicos
• Operadores Relacionales
Página 10
Bloque1: Pseudocódigo
ACTIVIDADES
1. Obtener los resultados de las siguientes expresiones:
a) 7*(8-4)/2*5+4
b) 7*8-4/2*(5+4)
c) (“abc” + “de”) > “abcde”
d) 7>6 AND 5=5 OR 4<0
e) 2^3+6/3-4^2
f) (2^(3+6/3)-4)^2
g) NOT (5<6 OR 7=0) AND Falso
h) 5.25 + 8.5 / 5 - 3.2 * 7.25
Una variable debe definirse antes de ser utilizada por primera vez.
Declarar o definir una variable significa indicar el tipo de datos que almacenará
la variable durante la ejecución del programa.
Página 11
Bloque1: Pseudocódigo
Su sintaxis:
Ejemplos:
Nombre es cadena;
contador, suma son entero;
6. Asignación de Variables
Ya hemos visto que una variable está relacionada con posiciones de memoria que
van a contener valores que cambiarán durante la ejecución del proceso, por tanto
es necesario tener una acción que nos permita dar los valores adecuados a cada
variable para obtener al final del proceso los resultados correctos. Esa acción u
operación es la Asignación.
Por lo tanto, una Asignación es una operación que nos permite dar valor a una
variable.
Debemos tener en cuenta el tipo de variable, para asignarle un valor. Así, una
variable de tipo numerico, no podrá contener un valor de 'abc' que es de carácter.
La asignación es una operación destructiva, es decir, que si almacenamos un
valor en una variable, el valor que tuviera anteriormente se perdería.
Su sintaxis:
variable <- valor o expresión;
Página 12
Bloque1: Pseudocódigo
ACTIVIDADES
1. Indicar cuales serán los valores finales que contendrán las distintas variables después
de los procesos siguientes:
a) A <- 8.5
B <- 0
A <- A*5
B <- B-A
A <- B
b) A <- 0
B <- 7+ A
C <-A/B
B <-7 MOD 3
A <-A+2
C <-A\B
c) L <- Verdadero
F <-L OR NOT (5<7)
A <- (4 MOD 3) \2 +5
B <- A+7
F <- F AND A < B AND L
* B toma el valor de A
* C toma el valor de B
* A toma el valor de C
También se usará una sola variable auxiliar AUX
5)Inicio
A <- 5
B <- 7
C <- 2
A <- A + B + C
B <- C / 2
A <- A / B + A ^ C
C <- A+(B-C)-B
Fin
Su sintaxis:
leer <variable>
Ejemplo:
leer dato
Su sintaxis:
escribir <variable>
Ejemplo:
escribir dato
También podemos poner un texto tras la operación escribir. Este texto, deberá ir
entre comillas. Ayuda al usuario para saber qué tipo de datos deberá introducir.
Ejemplo:
nombre es cadena;
escribir “Introduzca su nombre: “;
leer nombre;
8. Variables Especiales
Página 14
Bloque1: Pseudocódigo
CONTADOR < - 0
SUMA <- 0
PRODUCTO <- 1
Ejercicio 1:
Realiza el pseudocódigo de un programa que permita escribir el resultado de la
suma 2 números. Nombre del Algoritmo suma_2 y guárdalo en la carpeta
Pseudocódigo.
Objetos:
num1, num2 Variables que almacenan los datos del usuario
SUMA Acumulador para calcular la suma
Solución:
Algoritmo suma_2
//Ejercicio1. Calcula la suma de dos números
//Declaración e inicialización de la variable suma
suma <- 0;
//se piden los datos al usuario y se almacenan en las variables
num1, num2
escribir "Introduzca el valor de dos números enteros:"
leer num1, num2;
suma <- num1 + num2;
escribir "La suma de los números es:";
Página 15
Bloque1: Pseudocódigo
escribir suma;
FinAlgoritmo
Ejercicio 2:
Algoritmo que calcule y escriba la suma y el producto de los 10 primeros
números naturales. Nombre contador_acumulador y guárdalo en la carpeta
Pseudocódigo.
Objetos:
I Contador de 1 a 10
SUMA Acumulador para calcular la suma
PRODUCTO Acumulador para calcular el producto
Solución:
Algoritmo contador_acumulador
//Uso de variables como contador y acumulador para sumar los 10
primeros números //naturales
//Declaración de las variables
i,suma,producto son Entero;
//Inicialización de las variables
i <- 0;
suma <- 0;
producto <- 0;
mientras i <= 10 hacer
suma <- suma + i;
i <- i +1;
FinMientras
escribir "La suma de los 10 números naturales es:";
escribir suma;
FinAlgoritmo
Ejercicio1:
Algoritmo que lea una secuencia de notas (con valores de 0 a 10) que termina con
el valor -1 y nos dice si hubo o no alguna nota con valor 10.
Página 16
Bloque1: Pseudocódigo
Objetos:
NOTA Variable para leer la secuencia.
SW Interruptor para controlar la aparición de una nota con los
siguientes significados:
FALSO: No hay nota 10
VERDADERO: Si hay nota 10
Solución
Guarda el siguiente algoritmo en la carpeta Pseudocódigo.
Algoritmo variable_interruptor
//Uso de una variable como Interruptor para leer notas. Ejercicio 1.
//Declaración de las variables
nota es entero;
sw es logico;
//Inicializar el interruptor sw
sw <- falso
Ejercicio 1:
Algoritmo que sume independientemente los pares y los impares de los números comprendidos
entre 1 y 10. Nombre del algoritmo par_impares. Guárdalo en la carpeta Activiades.
Objetos:
I Contador de 1 a 10 que genera la serie
PAR, IMP Acumuladores para calcular la suma de pares e impares respectivamente.
SW Interruptor o Conmutador significando:
FALSO: Par
VERDADERO: Impar
9. Estructuras de Control
Página 17
Bloque1: Pseudocódigo
• Estructuras secuenciales
• Estructuras condicionales
• Estructuras repetitivas
Ejemplo:
Pseudocódigo que calcula la suma y el producto de dos números. Guarda el
algoritmo en la carpeta Pseudocódigo.
Solución:
Algoritmo suma_prod
//Algoritmo que calcula la suma y el producto de dos números
introducidos por teclado
//Declaración de las variables
n1,n2,suma,producto son entero;
suma <- 0; producto <- 0;
escribir "Introduce dos números enteros: ";
leer n1,n2;
suma <- n1+n2;
producto <- n1*n2;
escribir "La suma y producto de los dos números enteros es: ";
escribir "Suma:" suma "," "Producto:" producto;
FinAlgoritmo
Página 18
Bloque1: Pseudocódigo
a) Ordinograma:
b) Sintaxis en Speudocódigo:
si <condición> entonces
acción 1 (o acciones)
fin_si
Ejemplo:
Algoritmo que comprueba si un número es distinto de positivo. Nombre Algoritmo
positivos. Guárdalo en la carpeta Pseudocódigo.
Solución:
Algoritmo positivos
//Algorimo que comprueba que un número, introducido por teclado, es
positivo.
//Declaración de variables
Página 19
Bloque1: Pseudocódigo
numero es entero;
escribir "Introduce un número entero positivo:";
leer numero;
si numero > 0 Entonces
escribir numero ", es un número positivo";
FinSi
FinAlgoritmo
a) Organigrama:
b) Sintaxis en Pseudocódigo:
si <condición> entonces
acción 1 (o acciones)
si-no
acción 2 (o acciones)
fin-si
Ejemplo:
Algoritmo que resuelva una ecuación de primer grado. Nombre Algoritmo
Ecuación. Guárdalo en la carpeta Pseudocódigo.
Página 20
Bloque1: Pseudocódigo
son:
• Si a <> 0 x = -b/a Tiene solución
• Si a = 0 y b<>0 No tiene solución
• Si a = 0 y b = 0 Infinitas soluciones
Solución:
Algoritmo ecuación
// Algoritmo que resuelve una ecuación de primer grado de la forma
ax+b=0
//Soluciones:
//a<>0 Tiene solución x = -b/a
//a=0,b<>0 No tiene solución x = -b/0
//a=0, b=0 Tiene infinitas soluciones. Solución Indeterminada
//Declaración de las variables
a,b,x son reales;
escribir "Se le pedirá los datos a,b para resolver la ecuación ax+b=0";
escribir "Introduzca un valor para a:"
leer a;
escribir "Introduzca un valor para b:"
leer b;
si a <> 0 Entonces
x <- -b/a
escribir "La solución de la ecuación ax+b=0 es:";
escribir "x=-b/a, x=" x;
SiNo
si b <> 0 Entonces
escribir "No tiene solución. x=-b/0, x=" x;
SiNo
escribir "Tiene soluciones infinitas."
escribir "Solución indeterminada. 0x=0";
FinSi
FinSi
FinAlgoritmo
Página 21
Bloque1: Pseudocódigo
a) Ordinograma:
b) Sintaxis en Pseudocódigo:
Ejemplo:
Se desea diseñar un algoritmo que escriba los nombres de los días de la
semana en función del valor de una variable DIA introducida por teclado,
que representa su posición dentro de la semana. Guarda el algoritmo en la
carpeta Pseudocódigo.
Solución:
Algoritmo nombre_días
//Algoritmo que muestra el nombre del día de la semana según su posición
//introducida por teclado
//Declaración de variables
dia es numerico;
Escribir "MOSTRAR EL NOMBRE DEL DÍA DE LA SEMANA";
escribir "Introduce, con un número, la posición de un día de la semana:";
leer dia;
segun dia hacer
1: escribir "El día de la semana es Lunes";
2: escribir "El día de la semana es Martes";
3: escribir "El día de la semana es Miércoles";
4: escribir "El día de la semana es Jueves";
5: escribir "El día de la semana es Viernes";
6: escribir "El día de la semana es Sábado";
7: escribir "El día de la semana es Domingo";
Página 22
Bloque1: Pseudocódigo
Ejemplo:
Algoritmo que sume una lista de números introducidos desde el teclado, por
ejemplo las notas de los alumnos de una clase. Guarda el algoritmo en la carpeta
Pseudocódigo.
Solución:
Algoritmo sumar
//Algoritmo que suma las notas de los alumnos introducidas desde el
teclado
//Declaración de variables
nota, suma es enteros;
//Inicializar la variable suma (acumulador)
suma <- 0;
escribir "Introduzca el valor de una nota:";
leer nota;
suma <- suma + nota;
leer nota;
suma <- suma + nota;
leer nota;
suma <- suma + nota;
FinAlgoritmo
Vemos que por cada uno de los valores de la lista. El algoritmo repite muchas
veces las mismas acciones:
leer nota;
suma < - suma + nota;
Cuando se utiliza un bucle para sumar una lista de números, se necesita saber
cuantos números se han de sumar. Para ello necesitaremos conocer algún medio
para detener el bucle.
Ejemplo 1:
Algoritmo suma-numeros que calcula la suma de N números que se introducen
Página 23
Bloque1: Pseudocódigo
• Estructura mientras
• Estructura repetir
• Para – Hasta
a) Ordinograma:
b) Sintaxis en Pseudocódigo:
acción 1
acción 2
..........
acción N
fin_mientras
Algoritmo suma_numeros
//Calcula la suma de los N números introducidos por teclado
//Declaración de variables
N, TOTAL son entero;
NUMERO, SUMA son real;
escribir "Introduzca el número iteraciones que desea:";
leer N;
TOTAL <- N; //Inicializamos la variable Total (contador) con el número
de iteraciones que se van a llevar a cabo
SUMA <- 0; //Inicializamos la variable SUMA (acumulador) que
almacenará la suma de esos números
mientras TOTAL > 0 hacer
leer NUMERO;
SUMA <- SUMA + NUMERO;
TOTAL <- TOTAL - 1;
finmientras
escribir "La suma de los ", N, " Números es " SUMA;
FinAlgoritmo
Ejemplo 2:
Algoritmo cuenta-enteros que cuente los números enteros positivos introducidos
por teclado. Se consideran dos variables enteras NUMERO y CONTADOR (contará
el número de enteros positivos). Se supone que se leen números positivos y se
detiene el bucle cuando se lee un número negativo o cero. Guarda el algoritmo en
la carpeta Pseudocódigo.
ACTIVIDADES
Ejercicio 1:
Modificar el anterior programa para que salga del bucle sólo cuando se le introduzca un cero. O
sea, se podrán introducir números enteros positivos y negativos, pero sólo se contaran los
positivos. Guarda el algoritmo con el nombre de Algoritmo cuenta-enteros_2 en la carpeta
Actividades.
En algunas ocasiones el problema a resolver requiere que el bucle se ejecute una vez antes de
Página 25
Bloque1: Pseudocódigo
b) Sintaxis de Pseudocódigo
Repetir
acción 1;
acción 2;
…..
acción N
hasta que condición
Este tipo de estructuras es típica para resolver situaciones en las que se solicitan
datos de entrada al usuario y éstos han de filtrase. Es decir, deben comprobarse
si se encuentran en un rango de valores establecidos.
También, esta estructura se utiliza para preguntar al usuario algo una vez y
luego al final, preguntamos si desea continuar otra vez.
Ejemplo:
Algoritmo que pide al usuario que introduzca un número comprendido entre 2 y 8
En otro caso, no hace nada. Guarda el algoritmo con el nombre Algoritmo
uso_repetir en la carpeta Pseudocódigo.
Solución
Página 26
Bloque1: Pseudocódigo
Algoritmo uso_repetir
//Algoritmo que solicita al usuario que introduzca un número
//comprendido entre 2 y 8
//Declaración de variables.
num es entero;
escribir "Introduce un número comprendido entre 2 y 8.";
escribir "El bucle se ejecutará una vez, aunque introduzcas otro
número distinto al rango.";
escribir "En la segunda iteracción, ya no haría nada.";
leer num;
Repetir
escribir "Para continuar. Introduce otro número comprendido
entre 2 y 8";
leer num;
Hasta Que (num >= 2) o (num <=8)
FinAlgoritmo
ACTIVIDADES
Ejercicio1:
Diseña el ordinograma correspondiente a la estructura repetitiva o bucle repetir-hasta que.
Guárdalo con el nombre Ordinograma en la carpeta Actividades.
Ejercicio 2:
Se deberá realizar un Algoritmo que detecte cualquier entrada comprendida entre 1 y 12,
rechazando las restantes, ya que se trata de leer los números correspondientes a los meses del
año. Deberá imprimir el nombre del mes correspondiente al número introducido por el usuario.
Guarda el algoritmo con el nombre de Algoritmo muestra_mes en la carpeta Actividades.
a) Ordinograma:
Página 27
Bloque1: Pseudocódigo
b) Sintaxis en Pseudocódigo:
El uso de una u otra depende del enunciado del problema. Así, cuando se conoce
el valor del número de iteraciones, se usa para-hasta. Cuando no se conoce ese
valor, entonces es mejor utilizar el bucle mientras. Por ejemplo, la suma de los
números que introduzca el usuario, sabemos cuándo empieza pero no cuando
acaba.
Página 28
Bloque1: Pseudocódigo
FUNCIÓN SIGNIFICADO
RAIZ(X) Raíz cuadrada de X
ABS(X) Valor absoluto de X
LN(X) Logaritmo natural de X
EXP(X) Función exponencial de X
SEN(X) Seno de X
COS(X) Coseno de X
TAN(X) Tangente de X
TRUNC(X) Parte entera de X
REDOND(X) Entero más cercano a X
AZAR (X) Entero aleatorio entre 0 y 1
LONGITUD(S) Cantidad de caracteres de la cadena S
MAYUSCULAS(S) Retorna una copia de la cadena S con
todos sus caracteres en mayúsculas
MINUSCULAS(S) Retorna una copia de la cadena S con
todos sus caracteres en minúsculas
SUBCADENA(S,X,Y) Retorna una nueva cadena que consiste
en la parte de la cadena S que va desde
la posición X hasta la posición Y.
Empieza desde 0 y no desde 1.
CONCATENAR(S1,S2) Retorna una nueva cadena resulta de
unir las cadenas S1 y S2.
Página 29
Bloque1: Pseudocódigo
• Ejemplos:
Página 30
Bloque1: Pseudocódigo
Inicio
contador<-1
suma<-0
Mientras contador<=2 Hacer
suma<-suma+contador
Página 31
Bloque1: Pseudocódigo
contador<-contador+1
FinMientras
Escribir suma
Fin
• Anotamos todas las variables que hay, en este caso, solo están las variables
contador y suma, contador esta inicializado en 1 y suma en 0.
Lo más aconsejable es comprobar los valores limites (en este caso 2) para ver que
todo está bien. Si pedimos datos por teclado al usuario, debemos probar con
varios números para ver que cumple lo que necesitamos.
Página 32
Bloque1: Pseudocódigo
Página 33