Introducción a la Programación
Introducción a los algoritmos
Profesores:
Pedro Campos
Manuel Crisosto
Tatiana Gutiérrez
Claudio Gutiérrez
Motivación
OBJETIVO GENERAL DE LA ASIGNATURA
Resolver problemas básicos a través de la construcción de programas
basados en algoritmos y un lenguaje de programación, generando acciones
hacia la búsqueda de propuestas pertinentes.
APRENDIZAJES ESPERADOS (COMPETENCIAS)
• Descompone un problema en sub-problemas para darle una solución
más sencilla.
• Interpreta algoritmos y programas para la solución de problemas
básicos de programación relativos a la matemática.
• Construye algoritmos y programas para la solución de
problemas básicos de programación relativos a la matemática.
• Trabaja colaborativamente, cumpliendo un rol y responsabilizándose
de él.
• Comprende el entorno de las situaciones problemáticas que tienen
un componente informático.
2
Programa de Aplicación
Programa que permite resolver la ecuación de primer grado
Programa
que permite
resolver la
ecuación de
primer grado
ax+b=0
a
?
b
3
x = -b / a
Algoritmo EC 1er Grado
Variables
a,b,x de tipo entero
Inicio
Escribir(“Ingrese valores de EC”)
Leer (a,b)
Si a = 0 entonces
escribir (“Error”)
sino
Inicio
x=-b/a
Escribir (“La solución es:”,x)
Fin
Escribir(“Fin programa”)
Fin
#include <stdio.h>
int a,b,x;
main()
{
printf(“Ingrese valores de EC”);
scanf(“%d %d”,&a,&b);
if a ==0 printf (“error”);
else
{
x = -b / a;
printf(“La solución es %d:”,x);
}
printf(“Fin programa”);
}
Pasos en la resolución de un problema
• Entender el problema
– Conceptualización
– Objetivo
– Contexto
• Buscar soluciones
• Elegir solución
• Diseñar solución
– Descomposición
– Especificar tareas
– Modelar solución
• Implementar solución
• Validar solución
4
¿Qué es un problema?
• Es una situación concreta sobre la cual se quiere implementar
una solución (ejemplos)
• Solución: procedimiento que nos lleva a satisfacer ciertos
requerimientos
• Esquema básico para la resolución de un problema a través de
un programa con un enfoque sistémico
Entrada
•Datos Externos
•Datos auto generados
•Lectura de dispositivo
de almacenamiento
5
Salida
Proceso
•Informes
•Datos para otro
programa
•Datos grabados en
dispositivos externos de
almacenamiento
Datos y Variables
• Datos: objetos simbólicos que representan
objetos del mundo real.
– Ejemplos: 10 de Marzo de 2003, 3.14
• Variables: no hace referencia a un objeto
explícito
– Ejemplos: velocidad del móvil, factor de
crecimiento
6
¿Qué es un Modelo?
• Estructura para dar razón y abstraer una
realidad
• Ejemplo:
Estudiantes
Inscrita
Estudia
Plan de Estudios
Carrera
7
Asignaturas
¿Qué es un algoritmo?
• Procedimiento detallado para resolver un
problema en pasos y en un tiempo finito.
• Se especifican en base a operaciones básicas
que controlan las variables y el flujo del
algoritmo
• El algoritmo lleva desde un estado inicial a un
estado final
• El algoritmo recibe Entradas y entrega Salidas
8
¿Cómo desarrollar un algoritmo?
•
•
•
•
Imaginación
No reinventar la rueda
Dividir para conquistar
Para ser efectivo se requiere practicar
constantemente
• El diseño de algoritmos es una rama de la
Ciencia de la Computación
9
¿Cómo se describe un algoritmo?
•
•
•
•
Lenguaje natural
Pseudo código
Lenguaje de programación
La precisión es importante
– Un algoritmo no puede ser descrito de forma
ambigua:
• Todos tienen que entender lo mismo (incluido el
computador!)
10
Llamada telefónica
• Se desea conceptualizar el
problema de efectuar una
llamada telefónica en un teléfono
público que recibe monedas de
$10, $50 y $100. El costo mínimo
de la llamada es de $100 por 5
minutos. El proceso se inicia
desde que se levanta el auricular
y finaliza cuando se cuelga.
11
Árboles de decisión
• Herramienta útil
para describir
algoritmos que
involucran gran
cantidad de
decisiones
12
Conceptos Básicos de Algoritmos
• La forma en que se ejecutan las operaciones básicas
en un computador, es similar a lo que ocurre en
nuestro cerebro.
• Por ejemplo, para sumar dos valores:
– Primero debemos pedirle a alguien que nos diga el primer
valor.
– Luego de que conocemos este valor, debemos almacenarlo
(para recordarlo después) en una neurona (Suponemos
que un valor se puede almacenar en una neurona).
• Ya conocemos el primer valor y está almacenado en
nuestro cerebro.
Conceptos Básicos de Algoritmos
• Ahora debemos pedir el segundo valor.
• Una vez conocido, lo almacenamos en otra neurona distinta
de la anterior. ¿ Por qué?
• Ahora que conocemos los dos valores procedemos a
sumarlos, y dicho resultado lo almacenamos en otra neurona
distinta de las anteriores.
• Por último, le decimos el resultado a la persona que nos
entrego los números.
Conceptos Básicos de Algoritmos
– De lo anterior, al menos necesitamos 3 neuronas
para sumar dos números.
– Le pedimos explícitamente que nos dijeran dichos
valores.
– Le asignamos dichos valores a las neuronas
– La suma la realizó nuestro cerebro de forma
mecánica. Note que no existen detalles de la
operaciones básicas (*,/,+, -).
– Finalmente se da el resultado
Conceptos Básicos de Algoritmos
• Algoritmo para sumar dos números:
–
–
–
–
–
–
Definimos tres neuronas
Pedimos el primer valor
Almacenamos ese valor en la neurona 1.
Pedimos el segundo valor
Almacenamos ese valor en la neurona 2.
Almacenamos la suma de las neuronas 1 y 2 en la neurona
3
– Entregamos el resultado que se encuentra en la neurona 3.
Conceptos Básicos de Algoritmos
• Sin embargo, en los lenguajes no se pueden usar
neuronas, pero podemos definir variables
(Recuerde que las variables pueden tomar
cualquier valor)
• En lugar de usar neurona 1 y neurona 2, se utilizan
espacios de memoria que llamaremos “var 1” y
“var 2”, y así sucesivamente. También las podemos
llamar “x1” y “x2” ó “x” e “y” ….
Conceptos Básicos de Algoritmos
Ejercicio: Cree un algoritmo que multiplique tres números.
• Algoritmo para multiplicar tres números:
–
–
–
–
–
–
–
–
–
Definimos cuatro variables
Pedimos el primer valor
Almacenamos ese valor en var 1.
Pedimos el segundo valor
Almacenamos ese valor en var 2.
Pedimos el tercer valor
Almacenamos ese valor en var 3.
Almacenamos la multiplicación de las variables en var 4
Entregamos el resultado que se encuentra en var 4.
Conceptos Básicos de Algoritmos
• La manera en que hemos detallado nuestros dos
algoritmos se llama PSEUDO-CÓDIGO. Y este
pseudo-código fue escrito en lenguaje natural.
• Otra manera de poder detallar nuestros
algoritmos es a través de los diagrama de flujo.
Un diagrama de flujo es una representación
simbólica de la lógica del algoritmo.
Diagrama de Fujo
• Nomenclatura:
–
–
–
–
–
–
–
–
Inicio del algoritmo
Término del algoritmo
Impresión de mensajes
Receptor de datos
Operación de datos
Bifurcación (Decisión)
Definición de variables
Conector
Inicio
Termino
F
V
?
Diagrama de Flujo y Pseudo-Código
DIAGRAMA DE FLUJO
NOMENCLATURA
Inicio
Entero var1, x , y
Real a, b
Escribir
“Mensaje 1”
Definición de variables
Variables
Entero var1, x, y
Real a, b
Transformación de datos
Operaciones sobre los datos
V
Si a > b
Inicio
Lectura de mensajes
a=3*x+ y
b = a / var1
F
Inicio de Algoritmo
Impresión de mensajes
Leer
var1,x, y
Bifurcación en la ejecución de
instrucciones
Conector
Fin
PSEUDO-CÓDIGO
Fin de algoritmo
Escribir (“Mensaje 1”)
Leer (var1, x, y)
a=3*x+ y
b = a / var1
Si a > b Entonces
Inicio
Instrucciones
Fin
Sino
Inicio
Instrucciones
Fin
Fin
Diagrama de Fujo para el algoritmo que
suma dos valores
Inicio
var1,var,var3
Ingrese el primer valor
var 1
Ingrese el segundo valor
var 2
var3=var1+var2
El resultado es : var3
Termino
Se definen las variables var1, var2, var3
Se pide ingresar el primer valor
Se asocia el número ingresado a var1
Se pide ingresar el segundo valor
Se asocia el número ingresado a var1
Se asigna el resultado de la suma entre var1 y var2 a var3
Se muestra el resultado
Diagrama de Flujo
• Ejercicio: Cree el diagrama de flujo para el
algoritmo que multiplica tres números y
muestre el resultado
• Ejercicio: Cree el diagrama de flujo para que
divida dos números y muestre el resultado
¿Preguntas?
Algoritmos
• Ejercicio. Usando diagrama de Flujo. Cree un
algoritmos donde una persona ingrese su
edad y muestre por pantalla si es mayor de
edad.
Algoritmos
Inicio
Edad
Ingrese su
edad
Edad
si
Edad>=18
No
Usted es
menor de
edad
Fin
Usted es
mayor de
edad
Algoritmos
– Del ejemplo anterior podemos observar que la
bifurcación permite seguir el flujo adecuado dada
una condición.
– Las condiciones que se evalúan en las
bifurcaciones son siempre verdaderas o falsas.
– Por ende, hay que colocar las instrucciones
adecuadas a los valores que se evaluan en las
bifurcaciones.
Algoritmos
– También es posible que existan bifurcaciones
contiguas.
– En las bifurcaciones o estructura de control, se
evalúan proposiciones utilizando:
• Operadores lógicos
• Operadores aritméticos
• Operadores Relacionales
Algoritmos
• Operadores Aritméticos:
–
–
–
–
–
*
/
+
%
multiplicación
División
Suma
Resta
Módulo
Ejemplo de módulo (o residuo de la división):
5%2 es 1
4%2 es 0
Algoritmos
• Operadores Lógicos:
– Y, And, &&
Y
V
F
V
V
F
F
F
F
Algoritmos
• Operadores Lógicos:
– O, Or, ||
O
V
F
V
V
V
F
V
F
Algoritmos
• Operadores Lógicos:
– No, Not, !
No
V
F
F
V
Algoritmos
• Analicemos los siguientes casos
var1=2, var2=0,var3=4
var4=(var1*var1)/var3
var4=1
Si
var4>=1 && var1!=0
No
Si
Algoritmos
• Analicemos los siguientes casos
var1=2, var2=0,var3=4
var4=(var3%var1)
var4=0
Si
(var4!=0 || var2>0)
&& (var3==4)
No
No
Algoritmos
• Analicemos los siguientes casos
var1=2, var4=1,var3=4
var4=(var4+var1)
var4=3
Si
No
!(var1 && (var4>=var1))
Cualquier proposición distinta de cero
Es VERDADERO
No
Algoritmos
• Es importante notar que existen prioridades
entre los operadores. Por lo tanto deben
utilizarse paréntesis en los casos que
correspondan
Algoritmos
• Ejercicio. Crear un algoritmo que muestre en
forma ordenada tres número enteros
ingresados desde teclado.
Inicio
1
si
si
var1,var,var3
var1>var2 &&
var1>var3
El orden es
var1,var2,
var3
var2>var3
No
No
Ingrese el
primer valor
El orden es
var1,var3
var2
var1
si
si
var2>var3
Ingrese el
segundo
valor
var1>var3
No
El orden es
var2,var1,
var3
No
Fin
El orden es
var2,var3
var1
var2
si
Ingrese el
tercer valor
var2>var1
No
var3
1
El orden es
v3,var1
var2
El orden es
var3,var2
var1
Diagrama de Flujo






Ejercicio: Cree el diagrama de flujo para el algoritmo que multiplica
tres números y muestre el resultado
Ejercicio: Cree el diagrama de flujo para que divida dos números y
muestre el resultado
Ejercicio: Cree el diagrama de flujo para que resuelva la ecuación de
primer grado y muestre el resultado
Ejercicio: Cree el diagrama de flujo para que resuelva la ecuación de
segundo grado, para valores reales e imaginarios, y muestre el
resultado
Ejercicio: Cree el diagrama de flujo permita sumar tres números
ingresados por teclado y muestre el resultado
Ejercicio: Cree el diagrama de flujo que permita sumar “n” números y
muestre el resultado. El valor de “n” debe ser ingresado por teclado al
igual que los números que se sumarán.
Algoritmos
• Repaso de Bifurcaciones
• Aprendizajes Esperados
– Conceptos de Ciclos
– Cuándo se aplican los ciclos
Algoritmos
• Ejercicio. Crear un algoritmo que muestre en
forma ordenada tres número enteros
ingresados desde teclado
Inicio
1
si
si
var1,var,var3
var1>var2 &&
var1>var3
El orden es
var1,var2,
var3
var2>var3
No
No
Ingrese el
primer valor
El orden es
var1,var3
var2
var1
si
si
var2>var3
Ingrese el
segundo
valor
var1>var3
No
El orden es
var2,var1,
var3
No
Fin
El orden es
var2,var3
var1
var2
si
Ingrese el
tercer valor
var2>var1
No
var3
1
El orden es
v3,var1
var2
El orden es
var3,var2
var1
Algoritmos
• Concepto de Ciclo
– Un ciclo es la repetición de un conjunto de
instrucciones. Dicho ciclo culmina cuando se
cumple una condición de termino.
• Cuándo se aplican los Ciclos
– Se aplican cuando queremos ejecutar un conjunto
de instrucciones varias veces.
Algoritmos
Inicialización
• Estructura de un ciclo
Condición de
Termino
V
Instrucción 1
F
Instrucción 2
Instrucción N
Incremento/
Decremento
Algoritmos
• Ejemplo: Crear un algoritmo que sume N
elementos y muestre el resultado
Inicio
N,var,cont,
Suma=0
N
var
2
1
1
0
2
2
1
3
3
Ingrese
cuantos
números va
a sumar
cont
suma
N
cont=1
V
cont<=N
Ingrese el
cont valor
var
El resultado
es suma
suma=suma+var
Fin
cont=cont+1
Algoritmos
• Ejemplo: Crear un algoritmo que encuentre el
número mayor de N números enteros
positivos ingresados por teclado.
Inicio
N,var,cont,
mayor = -1
Ingrese
cuantos
números va
a sumar
N
cont=1
V
Ingrese el
cont valor
cont<=N
var
El resultado
es mayor
V
cont==1 ||
var>mayor
Fin
F
cont=cont+1
mayor=var
Algoritmos
• Ejemplo: Crear un algoritmo que calcule
n
i
1
Inicio
N,var,cont,
suma=0
Ingrese
cuantos
números va
a sumar
N
cont=1
V
cont<=N
suma=suma+cont
cont=cont+1
El resultado
es suma
Fin