2. 2
1.1.- Algoritmo
Concepto de algoritmo:
Sucesión explícita de reglas para resolver correctamente un problema
genérico bien definido en un número finito de pasos.
Aspectos básicos a tener presentes a la hora de redactar un algoritmo:
• Explícito: Formal y sin ambigüedades.
• Genérico: Problema cuyos datos son generales.
• Bien definido: Problema perfectamente caracterizado.
• Correcto: Que funcione en todos los casos.
• Número finito de pasos: Debe terminar.
3. 3
Estructura de un algoritmo:
algoritmo nombre
constantes (→ valores fijos)
datos tipos (→ nuevos dominios de datos)
variables (→ datos)
cuerpo (→ instrucciones)
falgoritmo
acciones y funciones auxiliares
4. 4
• Es una notación gráfica para implementar algoritmos.
• Se basa en la utilización de unos símbolos gráficos
denominados bloques, en los que escribimos las acciones
que tiene que realizar el algoritmo.
• Estos bloques están conectados entre sí por líneas y eso
nos indica el orden en el que tenemos que ejecutar las
acciones.
• En todo algoritmo siempre habrá un bloque de inicio y
otro de fin, para el principio y final del algoritmo.
Introducción.
DIAGRAMAS DE FLUJO
5. 5
Líneas de flujo: Es una línea con una flecha (y solo una flecha) que permite conectar los
bloques del diagrama. La flecha indica la secuencia en la que se van a ejecutar las
acciones.
Símbolos Utilizados.
Principio y Fin: Todo algoritmo y por lo tanto, todo diagrama de flujo tiene un principio
y un fin (y son únicos). Dentro de este bloque se coloca la palabra “INICIO” o “FIN”
según corresponda.
"INICIO” o
“FIN”
Proceso: Aquí dentro se escribe la acción que debe realizar el programa. Si son varias,
se escriben una debajo de la otra, sin olvidarse que se ejecutan una a una en forma
secuencial según en qué orden fueron escritas.
Acciones
6. 6
Condición: Dentro de este bloque se escribe una condición. Si ésta es verdadera,
entonces el algoritmo tomará una de sus salidas, de lo contrario, tomará la siguiente.
Permite representar estructuras del tipo selectivas y repetitivas.
Símbolos Utilizados.
Entrada y Salida: Representa acciones de entrada salida desde un teclado o hacia una
pantalla respectivamente. Es decir, si debemos ejecutar una acción que consiste en leer
un dato que se ingresa mediante el teclado de una PC y almacenarlo en la variable de
nombre “a”, entonces dicha acción se describe dentro de este bloque como “leer a”.
Condició
n
Verdader
a?
Leer o Escribir
Si No
7. 7
Conectores: Permiten “unir” diagramas de flujo cuando éstos no caben en una misma
columna de la hoja por completo. Es decir, cuando debemos, por cuestiones de espacio
en la hoja, fragmentar el programa entonces utilizamos estos bloques para indicar los
puntos de unión. Cada par de puntos que se deben unir llevarán dentro de este bloque
el mismo número.
En la misma hoja: En otra hoja:
Símbolos Utilizados.
Comentarios: Es una aclaración para comprender mejor el código del programa, pero
no forma parte del código, es decir, no se ejecuta.
8. 8
RECORDAR: CONCEPTO DE
ALGORITMO: Un algoritmo
es un conjunto de pasos o
secuencia de instrucciones
que, ejecutadas en un
determinado orden,
permiten resolver un
problema determinado.
Diagrama de Flujo Elemental.
INICIO
Declaración e
Inicialización de
Variables
Entrada de
Datos
Presentación
de Resultados
en Pantalla
Procesamiento de
Datos
FIN
Esto es un comentario.
11. 11
• El pseudocódigo es una manera de escribir algoritmos de forma poco
estricta (con una sintaxis relajada) o estructuras de datos poco
detalladas, pero intentando acercar las ideas del algoritmos a estructuras
y sintaxis parecidas a las de los lenguajes de alto nivel en los que vamos
a programar el algoritmo.
• Es para ser leído por personas, por tanto no se preocupa en detalles
sintácticos.
• Es un lenguaje de especificación de algoritmos, pero muy parecido a
cualquier lenguaje de programación, por lo que luego su traducción al
lenguaje de programación es muy sencillo, pero con la ventaja de que no
se rige por las normas de un lenguaje en particular. Nos centramos más
en la lógica del problema.
• El pseudocódigo también va a utilizar una serie de palabras claves o
palabras especiales que va indicando lo que significa el algoritmo.
Pseudocódigo.
12. 12
1. INICIO y FIN: Por donde empieza y acaba el algoritmo.
2. DATOS: Aquí se declaran e inicializan las variables que utilizará el algoritmo.
3. ALGORITMO: En esta sección se escribe el algoritmo.
Pseudocódigo - Sintaxis Utilizada.
Pseudocódigo de un algoritmo genérico:
INICIO.
DATOS: ** esto es un comentario **
entero a ; ** declaración de una variable entera **
real b = 0 ; ** declaración e inicialización de una
variable **
ALGORITMO:
leer a ;
b = a + 5 ;
escribir b ;
FIN.
13. 13
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 el 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.
Programa lineal Programa no lineal
15. 15
ELEMENTOS BASICOS DE UN PROGRAMA
Los lenguajes de programación —como los restantes lenguajes— tienen
elementos básicos que se utilizan como bloques constructivos, así como reglas
para las que esos elementos se combinan. Estas reglas se denominan sintaxis del
lenguaje
16. 16
Datos Tienen un nombre (identificador)
Los datos se deben declarar con todos estos atributos (excepto los literales).
Un dato contiene siempre un valor de su tipo.
Son de un tipo
• Simple:
entero, real, booleano, carácter
[dominio + operaciones]
• Compuesto:
tabla
[constructores + funciones de
acceso]
Pueden ser
• Constantes: valor fijo
[Literales: constantes predefinidas]
• Variables
17. 17
Lectura de datos
Algoritmo leervariable
definir x como entero
definir n como real
leer x, n
FinAlgoritmo
CARACTERES:
Algoritmo mi_nombre
Definir nombre como Cadena;
Escribir "Ingresar el nombre ..:"
leer nombre
Imprimir "Mi nombre es:" nombre
FinAlgoritmo
18. 18
1.2.- Variables
Definición: una variable es un dato cuyo valor puede cambiar durante la
ejecución
de un algoritmo.
Para asignar un valor a una variable se utiliza el operador de asignación “:=”.
Ejemplos: x := 3.0; y := x + 2.1; y := 3*x + 2; ... [x, y son variables]
Tipos básicos de datos son:
real 3.0, -2.1, ...
entero -3, +10, …
carácter ’a’, ’b’, ’F’, ’4’, ’.’, ...
booleano VERDADERO, FALSO
19. 19
Definición de una variable en un algoritmo:
Algoritmo nombre_algoritmo
definir n como entero;
definir x como real;
definir c como carácter;
definir b como logico;
n=3;
x=2.3;
c='w';
b=VERDADERO;
imprimir n
imprimir x
imprimir c
imprimir b
FinAlgoritmo
20. 20
1.3.- Constantes
Definición: una constante es un dato que representa un valor fijo de un tipo deter-
minado que no se puede modificar.
Ejemplo:
Proceso constante
definir r como real
Escribir "ingrese el valor del radio"
leer r
L=2*PI*r
Imprimir "la longitud de circunferencia es :" L
FinProceso
21. 21
1.4.- Tipos y operaciones
Definición: conjunto de valores (dominio) y operaciones aplicables.
Tipos básicos: booleano, entero, real y carácter.
• Tipo de datos booleano: Valores: {V, F}. Operadores: y, o, no, =,
• Tipo de datos entero:
Valores: los enteros, {-MaxEnt, ..., -3, -2, -1, 0, 1, 2, 3, ..., MaxEnt }
Operadores (binarios): +: entero + entero → entero
-: entero - entero → entero
*: entero * entero → entero
(división entera) div: entero div entero → entero
(resto) mod: entero mod entero → entero
=: entero = entero → booleano
entero entero → booleano
<: entero < entero → booleano
>: entero > entero → booleano
entero entero → booleano
entero entero → booleano
x div y = q y * q + r = x
x mod y = r 0 r < |y|
x y
r q
22. 22
• Tipo de datos real.
Valores: los reales, {-MaxReal, ... , -MinReal, 0, MinReal ,…, MaxReal}
Operadores (binarios): +: real + real → real
-: real - real → real
*: real * real → real
/: real / real → real
=: real = real → booleano
real real → booleano
<: real < real → booleano
>: real > real → booleano
real real → booleano
real real → booleano
• Tipo de datos carácter. Valores: los caracteres,
{’?’, ’^’, ’#’, ’&’, ..., ’A’, ’B’, …, ’Z’, …,
’a’, ’b’, …, ’z’, …, ’0’, ’1’, ’2’, …, ’9’, …, ’+’, ’-’, ... }
Operadores (binarios): =, : carácter = carácter → booleano
. . .
• Más adelante veremos algunos tipos compuestos: tablas y tuplas.
24. 24
1.5.- Expresiones
Definición:
Una variable es una expresión.
Una constante es una expresión.
Si E es una expresión, (E) es una expresión.
Si E1, E2, ..., En son expresiones y f una función, f(E1, E2, ..., En) es una expresión
Los tipos de las expresiones tienen que ser coherentes.
Las prioridades de los operadores se utilizan para evaluar correctamente las
expresiones: se aplica la regla asociativa de izquierda a derecha y, en caso de duda, se
ponen paréntesis.
Operadores utilizados más frecuentemente ordenados de mayor a menor prioridad:
., [ ] (acceso a tuplas y tablas)
-, no (cambio de signo y negación lógica) [unarios]
*, /, div, mod (operadores multiplicativos)
+, - (operadores aditivos)
<, >, = (operadores relacionales)
y, o (y, o lógicos)
25. 25
1.6.- Instrucciones
Lectura y Escritura
• Lectura: establece el valor de una variable a través de un dispositivo de entrada.
• Escritura: permite comunicar el valor de una expresión a través de un dispositivo
de salida.
Proceso leervariables
definir x como entero; definir n como real;
leer x, n
FinProceso
La notación anterior se puede simplificar utilizando las instrucciones leer(variable),
escribir(variable), así como instrucciones de lectura y escritura múltiple. También
se pueden escribir mensajes de texto, siempre que éstos se escriban entre comillas.
Proceso leervariables
definir x como entero; definir n como real;
escribir “Introduzca un entero, un real y un carácter:”;
leer x, n;
FinProceso
26. 26
Asignación
variable := expresión [la variable toma el valor de la expresión]
Ejemplos. n := 1 (entero); x := 9.8 (real);
c := ’e’ (carácter); b := VERDADERO (booleano);
Notas: El tipo de la variable y el de la expresión deben de ser iguales.
El valor que tenía la variable antes de la asignación se pierde.
Las variables cuando se declaran no tienen ningún valor concreto.
Siempre que trabajemos con una variable debemos darle un valor
inicial. Este proceso se denomina “inicialización de las variables”.
Secuenciación
Cuando tengamos más de una instrucción, utilizaremos la instrucción de
secuenciación. Las distintas instrucciones se separan con el signo “ ; “.
instrucción_1; instrucción_2; ... ; instrucción_k; ... ; instrucción_n
En este caso la instrucción_k no se ejecuta hasta que termina la ejecución
de las k-1 instrucciones anteriores.
27. ejemplos
• Un vendedor recibe un sueldo base mas un 10% extra
por comisión de sus ventas, el vendedor desea saber
cuánto dinero obtendrá por concepto de comisiones
por las tres ventas que realiza en el mes y el total que
recibirá en el mes tomando en cuenta su sueldo base
y comisiones.
• Una tienda ofrece un descuento del 15% sobre el
total de la compra y un cliente desea saber cuánto
deberá pagar finalmente por su compra.
• Determinar el área de un triangulo cuyas
dimensiones de base y altura se ingresan por teclado
27
28. 28
Proceso BONO
definir sueldo, venta1, venta2, venta3, total;
escribir "introduce tu sueldo"; leer sueldo;
escribir "venta N° 01";leer venta1;
escribir "venta N° 02";leer venta2;
escribir "venta N° 03";leer venta3;
total = sueldo + (venta1+venta2+venta3)*0.1;
escribir "el sueldo total es ", total;
FinProceso
EJEMPLO:
30. 30
Instrucción condicional o alternativa (si … entonces … si no … fsi)
si expresión_booleana entonces
instrucciones_V [instrucciones que se ejecutan si la
expresión booleana es verdadera]
si no
instrucciones_F [instrucciones que se ejecutan si la
expresión booleana es falsa (opcional)]
fin si
Cuando hay varias condiciones se puede utilizar el siguiente esquema:
si
expresión_booleana_1 → instrucciones_1
expresión_booleana_2 → instrucciones_2
...
expresión_booleana_n → instrucciones_n
fin si
ESTRUCTURAS SELECTIVAS
31. 31
Ejemplo. Calcular el máximo de dos números dados.
Algoritmo máximo
definir a, b como real;
leer a;
leer b;
Si a>=b Entonces
escribir "Numero Real máximo es:" a
Sino
escribir "Numero Real máximo es:" b
Fin Si
FinAlgoritmo
32. 32
Ejemplo. Calcular el máximo de dos números teniendo en cuenta si son iguales.
Proceso maximo
Definir a,b Como Real
Leer a
Leer b
Si a>b entonces
escribir "maximo es:" a
sino
si a<b entonces
escribir "maximo es:" b
sino
escribir "son iguales"
FinSi
FinSi
FinProceso
33. 33
Ejercicio 3. Determinar las raíces de una ecuación de segundo grado
• Las raíces de la ecuación de segundo grado ax2+bx+c=0 se obtienen mediante la fórmula x=(-b (b2-
4ac)1/2) 2ª SOLUCION
Algoritmo cuadratica
definir a,b,c,x,x1,x2 Como Real;
escribir "Sea la ecuacion cuadratica ax2 + bx + c = 0";
escribir "ingrese valor de a"; leer a;
escribir "ingrese valor de b"; leer b;
escribir "ingrese valor de c"; leer c;
d=b^2-4*a*c;
si d<0 Entonces
escribir "error";
Sino
si d=0 Entonces
x=-b/2*a;
escribir "la raices son: x1=" x," y x2=" x;
Sino
x1=(-b+d^(0.5))/2*a;
x2=(-b-d^(0.5))/2*a;
escribir "Las raices son: x1=" x1, " y x2=" x2;
FinSi
FinSi
FinAlgoritmo
34. 34
EJERCICIOS
1. Un hombre desea saber cuánto dinero se genera por concepto de interés sobre la
cantidad que tiene en inversión en el banco si el banco paga el 5% al mes. El decidirá
reinvertir LOS INTERÉS siempre y cuando estos excedan a S/, 600 y desea saber la
cantidad de dinero que tendrá finalmente en su cuenta.
2. Encontrar el mayor de 3 números diferentes proporcionados como datos de
entrada.
3. Intercambiar el valor de dos números enteros.
4. Realizar un programa que calcule el total a pagar según la cantidad comprada. Si la
cantidad comprada es menor a 5 se realiza un descuento del 10%, si la cantidad es
menor a 10 se realiza un descuento del 15% caso contrario no se realizara ningún
descuento.
5. Determinar un numero si es par impar entre 1 y 10 ingresado por teclado.
6. Realizar un programa que calcule el área del triángulo, cuadrado, rectángulo y
circulo
7. Realizar un programa que calcule la conversión de temperaturas de para grados
Celsius, Fahrenheit, ranking y kelvin
8. Calcular las raíces de una ecuación de segundo grado para cualquier numero Real.
9. Convertir una nota vigesimal (0-20) a una evaluación cualitativa (A,B,C,D)
36. 36
CONTADORES, ACUMULADORES E INTERRUPTORES
CONTADORES
Un contador es una variable cuyo valor se incrementa o decrementa en una
cantidad constante cada vez que se produce un determinado suceso o acción. Los
contadores se utilizan en las estructuras repetitivas con la finalidad de contar
sucesos o acciones internas del bucle
37. 37
EJEMPLO
Proceso producto
definir m, n, contador, p como enteros
leer m
leer n
p=0; contador=n
Mientras contador>0 Hacer
p=p+m
contador=contador-1
Fin Mientras
escribir "el producto es:" p
FinProceso
CONTADORES, ACUMULADORES E INTERRUPTORES
38. 38
ACUMULADORES
Son variables cuyo valor se incrementa o decrementa en una cantidad variable.
Necesitan operaciones de:
CONTADORES, ACUMULADORES E INTERRUPTORES
INTERRUPTORES
Es una variable que puede tomar los valores VERDAD o FALSO a lo largo de la
ejecución de un programa comunicando así la información de una parte a otra
40. 40
Instrucción iterativa (mientras … hacer … fmientras)
mientras expresión_booleana hacer
instrucciones
fmientras
Notas:
• Mientras la expresión_booleana sea cierta, las instrucciones se ejecutan.
• Cuando la expresión_booleana deja de ser cierta entonces la instrucción
iterativa se acaba.
• Si la expresión_booleana es inicialmente falsa la instrucción iterativa no
hace nada.
• Hay que asegurarse de que las instrucciones modifiquen los valores de las
variables que forman parte de la expresión_booleana de manera que la
instrucción iterativa termine en un número finito de pasos.
ESTRUCTURAS REPETITIVAS
41. 41
Algoritmo promedio
definir n,suma,promd Como real;
n=1;
suma=0;
mientras n<=50 hacer
suma=suma+n;
n=n+1;
FinMientras
promd=suma/50;
imprimir "El promedio de los 50 primeros nuemros es: " promd;
FinAlgoritmo
Ejemplo:
Calcular la media de 50 números e imprima su resultado
43. 44
Instrucción iterativa (REPETIR … HASTA QUE)
Algoritmo sin_titulo
definir num,suma Como Entero
num=1
suma=0
Repetir
suma=suma+num
num=num+1
Hasta Que num>50
imprimir "la suma es" suma
FinAlgoritmo
44. 45
Proceso sin_titulo
escribir "numero de notas para promedio :";
leer n;
c=0;
s=0
Repetir
escribir "ingresar nota :";
leer nota;
c=c+1;
s=s+nota;
Hasta Que c=n
promedio<-s/c;
escribir "el promedio es :", promedio;
FinProceso
45. 46
Algoritmo contador
definir num Como Entero
c=1
Repetir
escribir “ingrese diez numeros cualesquiera”
leer num
c=c+1
Hasta Que c>10
FinAlgoritmo
46. 47
Instrucción iterativa (para … hasta … hacer ... fpara)
para variable := valor_inicial hasta valor_final hacer
instrucciones
fpara
En la definición anterior el valor asignado inicialmente a la variable se incrementa
en una unidad en cada iteración. También se puede incluir un valor con la opción
paso que permite especificar la cantidad en la que se quiere incrementar el valor
de la variable en cada interacción.
para variable := valor_inicial hasta valor_final paso incremento hacer
instrucciones
fpara
Ejemplo. Escribir los números pares del 1 al 100.
Proceso sin_titulo
definir n Como Entero
Para n=2 hasta 100 con paso 2 Hacer
imprimir n
FinPara
FinProceso
47. 48
Algoritmo reprobados
definir cant, nota, i, porcentaje, repro Como Real
escribir "Ingrese la cantidad de estudiantes del grado"
leer cant
Para i=1 Hasta cant Hacer
escribir " ingrese la nota del estudiantes"
leer nota
si nota<14 Entonces
repro=repro+1
FinSi
Fin Para
porcentaje= (repro/cant)*100
imprimir "El porcentaje de reprobados es: " porcentaje,"%"
FinAlgoritmo
EJEMPLO 2
48. Proceso producto_lista
leer n
producto=1
Para i=1 hasta n Hacer
escribir "introduzca un numero"
leer numero
producto=producto*numero
FinPara
imprimir "El producto de nuemros introducidos es " producto
FinProceso
EJEMPLO 3
49. Proceso factorial
Definir fact, n, i Como Entero;
Escribir "hallar el factorial de: ";
leer n;
fact<-1
Para i<-1 Hasta n Hacer
fact<-fact*i;
Fin Para
imprimir "el factorial es: ",fact
FinProceso
EJEMPLO 4
50. Proceso sin_titulo
cont=0
escribir "ingrese"
leer num
Para i=1 Hasta num Con Paso 1 Hacer
Si num mod i=0 Entonces
cont=cont+1
finsi
Fin Para
si cont=2 Entonces
escribir num, " si es primo"
Sino
escribir num, " no es primo"
FinSi
FinProceso
EJEMPLO 5
52. 53
EJEMPLO 1
SubProceso mensaje( text )
escribir text;
Fin SubProceso
Proceso texto
mensaje("¡HOLA MUNDO!")
FinProceso
SubProceso res=suma(num1,num2)
res=num1+num2;
Fin SubProceso
Proceso sumandos
escribir "el resultado es: " suma(5,3)
FinProceso
EJEMPLO 2
53. 54
SubProceso fact = factorial( n )
leer n;
fact=1
Para i=1 Hasta n Hacer
fact=fact*i;
Fin Para
Fin SubProceso
Proceso factor
imprimir "El factorial de: " factorial(n)
FinProceso
EJEMPLO 3
63. Ejercicio 5. Escribir los n primeros números de la sucesión de Fibonacci.
La sucesión de Fibonacci viene definida por las siguientes reglas:
• fib[0]=0
• fib[1]=1
• fib[i]=fib[i-1]+fib[i-2], para i>1.