Académique Documents
Professionnel Documents
Culture Documents
Programacin
Introduccin a los
algoritmos
Profesores:
Jazna Meza Hidalgo
Grisell Osses Daz
Luis ngulo Mura
Manuel Crisosto Muoz
Motivacin
OBJETIVO GENERAL DE LA ASIGNATURA
2
Pasos en la resolucin de un
problema
Entender el problema
Conceptualizacin
Objetivo
Contexto
Buscar soluciones
Elegir solucin
Disear solucin
Descomposicin
Especificar tareas
Modelar solucin
Implementar solucin
Validar solucin
3
Programa de Aplicacin
Proceso Ecuacion_primer_grado
Programa Variables
que permite a,b,x de tipo entero
resolver la Escribir 'Ingrese valores de EC'
ecuacin de Leer a,b
primer grado Si a = 0 Entonces
Escribir 'Error' #include <stdio.h>
Sino int main()
x<- -1*b/a; {
Escribir 'La solucin es: ',x; int a,b,x;
FinSi printf(Ingrese valores de EC);
Escribir 'Fin programa'; scanf(%d %d,&a,&b);
ax+b=0 FinProceso if (a ==0) printf (error);
else
{
x = -b / a;
a printf(La solucin es %d:,x);
? x = -b / a }
b printf(Fin programa);
return 0;
}
4
Qu es un problema?
Es una situacin concreta sobre la cual se quiere
implementar una solucin (ejemplos)
Solucin: procedimiento que nos lleva a satisfacer
ciertos requerimientos
Esquema bsico para la resolucin de un problema
a travs de un programa con un enfoque sistmico
Entrada Salida
Proceso
Datos Externos Informes
Datos auto generados Datos para otro programa
Lectura de dispositivo de Datos grabados en
almacenamiento dispositivos externos de
almacenamiento
5
Datos y Variables
Datos: objetos simblicos que
representan objetos del mundo real.
Ejemplos: 10 de Marzo de 2003, 3.14
Variables: En programacin corresponde
a un espacio de memoria reservado para
almacenar un dato, al cual se le asigna
un nombre y un tipo de dato.
Ejemplos: velocidad del mvil, factor de
crecimiento
6
Qu es un algoritmo?
Procedimiento detallado para resolver
un problema en pasos y en un tiempo
finito.
Se especifican en base a operaciones
bsicas 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
7
Cmo desarrollar un
algoritmo?
Imaginacin
No reinventar la rueda
Dividir para conquistar
Para ser efectivo se requiere
practicar constantemente
El diseo de algoritmos es una rama
de la Ciencia de la Computacin
8
Cmo se describe un
algoritmo?
Lenguaje natural
Pseudo cdigo
Lenguaje de programacin
La precisin es importante
Un algoritmo no puede ser descrito de
forma ambigua:
Todos tienen que entender lo mismo
(incluido el computador!)
9
Llamada telefnica
Se desea conceptualizar el
problema de efectuar una
llamada telefnica en un
telfono pblico que recibe
monedas de $10, $50 y
$100. El costo mnimo de
la llamada es de $100 por
5 minutos. El proceso se
inicia desde que se levanta
el auricular y finaliza
cuando se cuelga.
10
Conceptos Bsicos de
Algoritmos
La forma en que se ejecutan las
operaciones bsicas en un computador, es
similar a lo que ocurre en nuestro cerebro.
Algoritmos
Primero debemos pedirle a la persona (usuario) que nos
diga el primer valor.
Luego de que conocemos este valor, debemos almacenarlo
(para recordarlo despus) en una neurona (Suponemos que
un valor se puede almacenar en una neurona).
Ya conocemos el primer valor y est almacenado en
nuestro cerebro!!!.
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 nmeros.
Conceptos Bsicos de
Algoritmos
De lo anterior, al menos necesitamos 3
neuronas para sumar dos nmeros.
Le pedimos explcitamente que nos dijeran
dichos valores.
Le asignamos dichos valores a las neuronas
La suma la realiz nuestro cerebro de forma
mecnica. Note que no existen detalles de
la operaciones bsicas (*,/,+, -).
Finalmente se da el resultado
Conceptos Bsicos de
Algoritmos
Algoritmo para sumar dos nmeros:
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 Bsicos 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.
Tambin las podemos llamar x1 y x2
x e y .
Conceptos Bsicos de
Algoritmos
Ejercicio: Cree un algoritmo que multiplique tres nmeros.
ASIGNACIN
a 5;
b a+z;
c (a*a+b*b)/(a*b);
Instrucciones
Proceso <Nombre_Proceso>
Variables
Lista de variables Tipo_Dato; Las instrucciones o acciones presentes en un programa o
Accin_1
algoritmo se pueden clasificar de la siguiente manera:
Accin_2
Accin_3
:
: Instrucciones o acciones aritmticos / lgicos:
Accin_n
FinProceso Suma (+), Resta(-), Multiplicacin(*), Divisin (/), Mdulo (%),
Raz cuadrada (RC)
(el mdulo como la raz cuadrada pueden ser
implementados con las operaciones bsicas, pero por
comodidad los utilizaremos en forma explicita)
Si expresion_logica Entonces
acciones_por_verdadero;
Sino
acciones_por_falso;
FinSi
Accin_1 a
Accin_2 ? x = -b / a
Si expresion_logica Entonces b
acciones_por_verdadero;
Sino a0
acciones_por_falso; Proceso Ecuacion_primer_grado
FinSi Variables
: a,b Entero;
Accin_n x Flotante;
FinProceso Leer a,b;
Si a = 0 Entonces
Escribir 'La ecuacion no es de primer grado';
Sino
x<- -b/a; //probar la solucin con PSeInt
Escribir x;
FinSi
Escribir 'Fin de Programa';
FinProceso
Instrucciones de transferencia de
control
Del ejemplo anterior podemos observar
que la bifurcacin permite seguir el flujo
adecuado dada una condicin.
Las condiciones lgicas que se evalan
en las bifurcaciones son siempre
verdaderas o falsas.
Tambin es posible que existan
bifurcaciones contiguas.
No necesariamente deben existir los dos
cursos de accin.
Instrucciones de transferencia de
control
En las bifurcaciones, se evalan proposiciones
utilizando:
Operadores lgicos
y (and o &), o (or 0 |), no (not o ~)
Operadores aritmticos
(*) multiplicacin, (/) divisin, (+) suma, (-) resta,
(%) mdulo
Operadores Relacionales
> (mayor que), < (menor que), = (igual), <= (menor
o igual), >= (mayor o igual), != (distinto)*
* No presente en PSeint
Tablas de verdad asociadas a los
operadores lgicos and, or, not
y, And, & O, Or, || No, ~
Y
V F
&
V V F
F F F
var1 2; var1 2;
var2 0; var2 0;
var3 4; var3 4;
var4 (var1*var1)/var3; var4 (var3%var1)
Si (var4>=1) y (var1 !=0) Entonces Si ((var4!=0) o (var2 >0)) y (var3 =4) Entonces
acciones_por_verdadero; acciones_por_verdadero;
Sino Sino
acciones_por_falso; acciones_por_falso;
FinSi FinSi
: :
Accin_n Accin_n
FinProceso FinProceso
Es importante notar que existen prioridades entre los operadores. Por lo tanto,
deben utilizarse parntesis en los casos que correspondan
Ejercicios: Construir, utilizando pseudocdigo, un algoritmo para cada uno de
los siguientes enunciados
Cree un algoritmo que divida dos nmeros y muestre el resultado
Condici Bloque de
Falso Instruccin
n
lgica 2
Verdadero
Bloque de Condici
Instruccin Falso n
2 lgica
Verdadero
Bloque de
Bloque de Instruccin
Instruccin 3
3
VC VI , VF,
Salto
Bloque de
Otra estructura iterativa es la siguiente: Instruccin
2
Bloque de
Instruccin
3
Bloque de Instrucin1;
Para Variable_Numerica<-valor_inicial Hasta valor_final Con
Paso paso Hacer
Bloque de Instrucin2;
FinPara
Bloque de Instrucin3;
Construir un algoritmo que permita calcular el
promedio de n nmeros ingresados por teclado
Proceso Promedio
Variables
n
X1 n,i,x,suma, prom Entero;
X2 Repetir
X3 Programa Promedio Escribir 'Cuantos numeros sumara?'
Leer n;
:
Hasta Que (n > 0)
Xn n>0 suma<-0;
Para i<-1 Hasta n Con Paso 1 Hacer
Promedio= (x1+ x2+ x3+. +xn)/n Leer x;
suma<-suma+x;
n FinPara
prom<-suma/n
( xi = x1+ x2+ x3+. +xn ) / n Escribir 'Resultado: ',prom;
i=1 FinProceso
Preguntas?
Ejercicios
Crear un algoritmo que encuentre e imprima el nmero mayor de N
nmeros enteros positivos ingresados por teclado.
Crear un algoritmo que calcule e imprima el resultado de la siguiente
sumatoria
n
i
i=1
Cree un algoritmo que permita evaluar la siguiente funcin, para n
valores de x:
(3x2-5x)/ (x-10) si x > 0
f(x)= (5x)/x si 0 < x <=10
x2 si x <=0