Escolar Documentos
Profissional Documentos
Cultura Documentos
Informtica
Algoritmos y Programas
Qu clase de problemas?
Correcta Error
Corrector ortogrfico
Calcular
ruta
Planificador de rutas
En slo 2 s
Planificador de rutas
Planificador de rutas
C o ru a O v ie d o 304
B ilb a o
45
171
32
0
V ig o 356 G e ro n a
28
Z a ra g o z a
4
0
10
395
296
V a lla d o lid 32
5 B a r c e lo n a
19
3
9
M a d rid
34
3 25
40 1
191 V a le n c ia
335
B a d a jo z 241
Jan
15
0
2
24 M u r c ia
99
G ra n a d a
12
C d iz
Planificador de rutas
Cmo calcular los caminos mnimos en el mapa?
Fuerza bruta: empezar por Cdiz y probar todos los caminos
hasta llegar.
Supongamos que limitamos a 20 ciudades, existiendo 6
caminos por ciudad.
Existen 95 billones de caminos!!
Otro problema con grafos
Problema del viajante: encontrar una ruta que pase por todas
las ciudades con el mnimo coste.
C o ru a O v ie d o 304
B ilb a o
45
171
32
0
V ig o 356 G e ro n a
28
Z a ra g o z a
4
EN ESTE CASO ES 10
0
395
296
V a lla d o lid 32
5 B a r c e lo n a
19
SENCILLO, PERO
3
9
M a d rid
34
25
Y SI TENEMOS...?
3
40 1
191 V a le n c ia
335
B a d a jo z 241
Jan
15
0
2
24 M u r c ia
99
G ra n a d a
12
C d iz
Introduccin
Entrada = Salida =
Procesador
Datos Resultados
Algoritmo
Introduccin
ANLISIS
DISEO
IMPLEMENTACIN
PRUEBAS
DOCUMENTACION
Contenidos
1. Introduccin
2. Concepto de algoritmo
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Concepto de algoritmo
En Informtica:
Un algoritmo es una secuencia de pasos a seguir
para resolver un problema usando un computador u
ordenador.
La algoritmia o ciencia de los algoritmos, es uno de los
pilares de la informtica.
Concepto de algoritmo
Definiciones bsicas:
Procesador:
Procesador cualquier entidad capaz de resolver un
problema
Entorno:
Entorno conjunto de utensilios que el procesador
puede utilizar
Estado:
Estado situacin en la que se encuentra un entorno en
un momento dado.
Concepto de algoritmo
Definiciones bsicas
Accin:
Conjunto finito de operaciones que permiten llegar de
un estado inicial bien definido a otro tambin bien
definido.
Tipos de acciones:
Accin primitiva o elemental
Puede ser realizada directamente por el procesador.
Caractersticas de un algoritmo:
Preciso (no ambiguo): la instruccin a ejecutar en
cada paso queda determinada perfectamente.
Determinista: debe comportarse del mismo modo
ante las mismas condiciones. Si se sigue dos veces en
el mismo entorno, el resultado obtenido es el mismo.
Finito: Tiene fin tras un nmero determinado de
pasos.
Contenidos
1. Introduccin
2. Definiciones bsicas
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Lenguajes
de representacin algortmica
Pseudocdigo:
Pseudocdigo
Lenguaje similar al natural, pero al que se aaden
reglas para conseguir una definicin precisa del
algoritmo
Algunas reglas:
Empieza por la palabra Inicio y termina con la palabra Fin
Se escribe una accin por lnea
Se subrayan las palabras clave
Representacin algortmica
Entrada/
Terminal Proceso
Salida
no Conectores
Decisin Subprograma
si
Representacin algortmica
1. Introduccin
2. Definiciones bsicas
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Ejemplos de algoritmo
Mtodo tradicional
981
* 1234
3924
2943
1962
981
1210554
Ejemplos de algoritmo
Multiplicacin la russe
Se escriben el multiplicando y el multiplicador iniciando
dos columnas.
Se obtienen los siguientes elementos de las columnas,
hasta que quede un 1 en la columna de la izquierda:
La columna de la izquierda se va dividiendo entre dos,
ignorando los restos.
La columna de la derecha se va multiplicando por dos.
El resultado se obtiene sumando los nmeros de la
columna de la derecha cuyo nmero correspondiente de
la columna izquierda sea impar.
Slo es necesario saber sumar, multiplicar por 2 y dividir
entre 2. Se encuentra en el hardware de las ALUs.
Ejemplos de algoritmo
Multiplicacin la russe
981 1234
490 2468
245 4936
122 9872
61 19744
30 39488
15 78976
7 157952
3 315904
1 631808
SUMA = 1210554
Contenidos
1. Introduccin
2. Definiciones bsicas
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Programas
Programa:
Programa Algoritmo codificado en un lenguaje de
programacin.
Programar:
Programar Fraccionar un problema en forma de
instrucciones adecuadamente formuladas para que
un ordenador pueda llevarlas a la prctica.
Programas
1. Introduccin
2. Definiciones bsicas
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Ejemplo de programa BASIC
10 PAPER 7: BORDER 7: INK 0: BRIGHT 0: FLASH 0
20 DIM a$(22,20): DIM f(22): DIM c(22): DIM g$(11,2): DIM z$(22,18):
DIM x$(22)
30 FOR n= 1 TO 22
40 READ f,c: LET b$=CHR$ 19+CHR$ 1: LET f(n)=f: LET c(n)=c
50 FOR m=0 TO 2: READ r$
60 LET b$=b$+CHR$ 22+CHR$ (f+m)+CHR$ c+ r$
70 NEXT m: LET a$(n)=b$: NEXT n: GO SUB 470
80 CLS : FOR N=1 TO 22: PRINT A$(N): NEXT N: IF x$(1)<>" " THEN LET
g$=x$
90 PRINT AT 0,2;"";AT 1,2;" EBEO";AT 2,2;"";AT 3,2;" OBLE";AT
4,2;" "; INK 3; AT 19,16;"Adaptacion para"; INK 1;AT
20,19;"MICRO";" HOBBY"
100 PLOT 128,0: DRAW 0,170: DRAW 10,4: DRAW 24,1: DRAW 82,0
110 PLOT 128,0: DRAW 10,4: DRAW 24,1: DRAW 88,0
120 DRAW 0,164: DRAW -2,2: DRAW 0,-164: DRAW -2,2: DRAW 0,164: DRAW
2,2: DRAW 0,-165
130 PLOT 128,0: DRAW -10,4: DRAW -24,1: DRAW -88,0
140 DRAW 0,164: DRAW 2,2: DRAW 0,-164: DRAW 2,2: DRAW 0,164: DRAW 2,2:
DRAW 0,-164
150 PLOT 128,170: DRAW -10,4: DRAW -24,1: DRAW -82,0
160 DATA 1,12," "," "," ",1,17," "," "," ",1,22," ","
"," ",1,27," "," "," "
170 PLOT 128,2: DRAW -10,4: DRAW -24,1: DRAW -85,0
180 PLOT 128,2: DRAW 10,4: DRAW 24,1: DRAW 85,0
Ejemplo de programa BASIC
290 DIM b$(22,2): FOR n=1 TO 11: FOR m=1 TO 2
300 LET s=INT (RND*22)+1
310 IF b$(s,1)=" " THEN LET b$(s,1)=g$(n,1): LET b$(s,2)=g$(n,2): NEXT m: NEXT n: GO TO
330
320 GO TO 300
330 DIM r(22): LET di=0: LET itn=0: LET u=.001
340 PRINT AT 20,2;di: IF di=275000 THEN LET di=350000: PRINT AT 20,2; FLASH
1;di'"CONSEGUIDO EL PLENO EN ";itn;" veces": PRINT #0;"Pulsa una tecla para empezar": GO
SUB 440: GO SUB 440: GO SUB 440: PAUSE 0: GO TO 80
350 INPUT n: IF n>22 OR n<1 THEN GO TO 350
360 IF r(n)=1 THEN GO TO 350
370 LET k=n: GO SUB 700
380 INPUT m: IF m>22 OR m<1 OR m=n THEN GO TO 380
390 IF r(m)=1 THEN GO TO 380
400 LET k=m: GO SUB 700
410 LET itn=itn+1: IF b$(n)=b$(m) THEN LET di=di+25000: PAPER 3: LET k=n: GO SUB 720:
PAPER 3: LET k=m: GO SUB 720: LET r(n)=1: LET r(m)=1: GO SUB 440: GO SUB 450: GO TO 340
420 BRIGHT 1: PAUSE 45: PAUSE 45: LET f=f(n): LET c=c(n): PRINT AT f,c;a$(n,8);AT
f+1,c;a$(n,14);AT f+2,c;a$(n,20): PRINT AT f,c;a$(n,7 TO 8);AT f+1,c;a$(n,13 TO 14);AT
f+2,c;a$(n,19 TO 20): BEEP .01,-10: PRINT a$(n): BEEP .02,0
430 LET f=f(m): LET c=c(m): PRINT AT f,c;a$(m,8);AT f+1,c;a$(m,14);AT f+2,c;a$(m,20):
PRINT AT f,c;a$(m,7 TO 8);AT f+1,c;a$(m,13 TO 14);AT f+2,c;a$(m,19 TO 20): BEEP .01,-10:
PRINT a$(m): BEEP .02,0: BRIGHT 0: GO TO 350
Ejemplo de programa BASIC
430 LET f=f(m): LET c=c(m): PRINT AT f,c;a$(m,8);AT f+1,c;a$(m,14);AT
f+2,c;a$(m,20): PRINT AT f,c;a$(m,7 TO 8);AT f+1,c;a$(m,13 TO 14);AT
f+2,c;a$(m,19 TO 20): BEEP .01,-10: PRINT a$(m): BEEP .02,0: BRIGHT
0: GO TO 350
440 BEEP .07,15: BEEP .06,25: BEEP .07,35: BEEP .07,35: BEEP .09,40:
RETURN
450 INK 8: LET xx=c(n)*8-2: LET yy=177-(f(n)*8): PLOT xx,yy: DRAW
27,0: DRAW 0,-27: DRAW -27,0: DRAW 0,27
460 LET xx=c(m)*8-2: LET yy=177-(f(m)*8): PLOT xx,yy: DRAW 27,0: DRAW
0,-27: DRAW -27,0: DRAW 0,27: INK 0: RETURN
470 RESTORE 260: FOR n=1 TO 22
475 IF n=17 THEN LET g$(6,2)=".": GO TO 540 ?
480 READ p$
490 FOR m=0 TO 7: READ f: POKE USR p$+m,f: NEXT m
520 IF n<12 THEN LET g$(n,1)=p$
530 IF n>11 THEN LET g$(n-11,2)=p$
540 NEXT n: RETURN
700 PAPER 5: LET y$=b$(k,1): LET t$=b$(k,2): LET f=f(k): LET c=c(k):
BEEP u,25: PRINT AT f,c+2;t$;AT f+1,c+2;" ";AT f+2,c+2;" ": BEEP
u,49: BEEP u,25
710 PRINT AT f,c+1;t$;" ";AT f+1,c+1;" ";y$;AT f+2,c+1;" v": BEEP
u,49: BEEP u,25
720 PRINT AT f(k),c(k);b$(k,2);" ";b$(k,2);AT f(k)+1,c(k);" ";b$
(k,1);" ";AT f(k)+2,c(k);" v ": BEEP u,49: PAPER 7: RETURN
Lenguajes de bajo nivel
Lenguajes Lenguajes
de bajo nivel estructurados
Inconvenientes:
Los datos y los procedimientos de
manipulacin sobre los mismos van por
separado.
Es necesario garantizar la ocultacin de la
implementacin.
Proliferacin de variables globales. Qu
papel juegan?
Los programas son cada vez ms
complejos y difciles de mantener.
Evolucin e historia de la
programacin
class Elipse {
protected:
double Fcx, Fcy; Los datos
double Frx, Fry, Fang;
son privados
void FsetXY (int x1, int y1, int x2, int y2);
public:
Elipse (int x1, int y1, int x2, int y2); Las operaciones
Elipse * Clonar (void);
son pblicas
void Pinta (IplImage *image, int color= 0, int ancho= -1);
};
Lenguajes orientados a objetos
// Implementacin Separacin
interface/
Timer::Timer (void)
{
implementacin
LARGE_INTEGER *QW= new LARGE_INTEGER;
Exists= QueryPerformanceFrequency(QW);
ClockRate= QW->LowPart;
delete QW;
}
Lenguaje mquina:
Es el que entienden los circuitos del computador (CPU)
Inconvenientes:
depende del modelo de computadora;
el repertorio de instrucciones es muy reducido
es muy laborioso
Ensamblador (lenguaje de bajo nivel)
Cdigo nemotcnico para recordar mejor las
instrucciones mquina
Se mantienen los otros inconvenientes del lenguaje
mquina
Lenguajes de alto nivel
No dependen de la computadora, y facilitan la tarea de
programacin
Lenguajes de programacin
Lenguajes de alto nivel
Traduccin:
Traduccin Proceso por el cual se convierte el
texto del programa de entrada en el de salida.
Lenguaje fuente: lenguaje en el que se escribe la
entrada
Lenguaje objeto: lenguaje en el que se escribe la
salida. En general, muy diferente del lenguaje fuente
Compilador:
Compilador Programa que acepta como
entrada un texto de programa escrito en un
cierto lenguaje de alto nivel y genera como
salida texto de programa en otro lenguaje,
generalmente lenguaje mquina.
Lenguajes de programacin
Compiladores
Compiladores:
El procesamiento del programa es considerable
El mecanismo de interpretacin previsto es la CPU (hw)
La ejecucin del programa traducido es relativamente
rpida
Intrpretes:
El procesamiento del programa es entre mnimo y
moderado
El mecanismo de interpretacin es un programa (sw)
La ejecucin del programa es, en general, ms lenta y ms
segura
Contenidos
1. Introduccin
2. Definiciones bsicas
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Proceso de programacin
A n a lis is D is e o T ra d u c c i n a c d ig o C
E rr o r e n e l tra ta m ie n to E r r o r e n tie m p o
d e lo s d a to s d e c o m p ila c i n
P ru e b a s d e e je c u c i n C o m p ila c i n a l o rd e n a d o r
A.out cc vi
E r ro r e n tie m p o
d e e je c u c i n
Contenidos
1. Introduccin
2. Definiciones bsicas
3. Lenguajes de representacin algortmica
4. Ejemplos de algoritmo
5. Programas
6. Lenguajes de programacin
7. El proceso de programacin
8. Introduccin al lenguaje C
Lenguaje C
Es un lenguaje estructurado de propsito
general, orientado a la programacin de
sistemas
Origen:
Evolucin de BSPL y B
The C programming language, B. Kernighan & D.
Ritchie. (1978)
ANSI C:
Versin estndar en 1983
Nueva revisin en 1999
Uno de los lenguajes ms utilizados en la industria
del software actual y en el mundo Unix/Linux
Lenguaje C
Caractersticas de C
Propsito general
Vlido para diversos objetivos
Portable
NOTA: Sin embargo, siempre hay que compilar y probar un
programa en el ordenador destino
Eficiente
Apropiado para la programacin de sistemas
Extendido.
Gran cantidad de bibliotecas de funciones, compiladores,
etc.
Amplia difusin y uso.
EJERCICIOS
EJERCICIOS
EJERCICIOS
EJERCICIOS
EJERCICIOS
Gracias