Professional Documents
Culture Documents
Algoritmos
Conceptos bsicos.
Programacin:
2. Fases:
Resolucin del problema propuesto => determinacin de
un algoritmo.
Adaptacin del algoritmo al computador => codificar el
algoritmo en un lenguaje que el computador pueda
comprender.
Conceptos bsicos.
Pseudolenguaje
Es un lenguaje especfico de descripcin de algoritmos
La traduccin de un algoritmo escrito en pseudolenguaje a un programa en un
lenguaje de programacin determinado es relativamente simple
Programacin estructurada
Conjunto de tcnicas que aumentan la productividad de un programa,
reduciendo el tiempo para:
Escribir Depurar
Verificar Mantener
Actividad 1
Actividad 2
Actividad n
Seleccin Doble:
Simple:
s
Condicin s no
condicin
actividad Actividad 1
no Actividad 2
Mltiple:
sino sino
Condicin Condicin Condicin
s s s
Actividad 1 Actividad 2 Actividad n-1 Avtividad n
Repeticin
Test false
condition
true
activity
Estratgia: Dividir para conquistar
Entrada:
secuencia de n nmeros <a1, a2,..,an>
Salida:
Una permutacin <a'1, a'2,..,a'n>
reordenamiento de la secuencia, tal que:
a'1 < a'2 < ... < a'n
Ejemplo instancia:
Entrada: <5,3,1,6,0>
Salida: <0,1,3,5,6>
Ordenando una lista en forma alfabtica
Ordenando una lista en forma alfabtica (cont.)
Ordenando una lista en forma alfabtica (cont.)
Algoritmo de sort por insercin en pseudocdigo
Bsqueda
Entrada:
secuencia de n nmeros <a1, a2,..,an>
Un nmero b
Salida:
un entero i, tal que b == ai (igual)
0 si b != ai, para i = 1,...,n
Ejemplo instancia:
Entrada: <5, 6, 9, 12> y 9
Salida: 3
Bsqueda binaria en pseudocdigo
Buscando en una lista
29
Recursividad cdigo C
30
Recursividad (ejemplo)
31
Recursividad (Ejemplo cont.)
#include <stdio.h>
int main(){
int x,fac;
printf("Ingrese un nmero para calcularle el factorial = );
scanf("%d",&x);
fac=factorial(x);
printf("%d!=%d\n",x,fac);
return 0;
}
32
Simulacin: ciclo activo
main(){
int x = 3;
factorial(3){
fac = factorial(3);
factorial(x);
if (3==0) return 1;
else if (3==1) return 1;
else return 3*factorial(3-1);
factorial(2){
3*factorial(2);
if (2==0) return 1;
else if (2==1) return 1;
factorial(1){
else return 2*factorial(1);
2*factorial(2-1);
if (1==0) return 1;
else if (1==1) return 1
1;
33
Simulacin: ciclo pasivo
main(){
int x = 3;factoria
factorial(3){
l(3);
fac =
if (3==0) return 1;
factorial(x);
else if (3==1) return 1;
3*factorial(2
factorial(2){
else return 3*factorial(3-1);
);
if (2==0) return 1;
else if (2==1) return 1;
2*1
else return 2*factorial(2-1);
34
Simulacin: ciclo pasivo
main(){
int x = 3;factoria
factorial(3){
l(3);
fac =
if (3==0) return 1;
factorial(x);
else if (3==1) return 1;
3*factorial(2
factorial(2){
else return 3*factorial(3-1);
);
if (2==0) return 1;
else if (2==1) return 1;
else return 2;
35
Simulacin: ciclo pasivo
main(){
int x = 3;factoria
factorial(3){
l(3);
fac =
if (3==0) return 1;
factorial(x);
else if (3==1) return 1;
3*2
else return 3*factorial(3-1);
36
Simulacin: ciclo pasivo
main(){
int x = 3;factoria
factorial(3){
l(3);
fac =
if (3==0) return 1;
factorial(x);
else if (3==1) return 1;
else return 6;
37
Simulacin: ciclo pasivo
main(){
int x = 3;
6;
fac =
factorial(x);
38