1 algoritmos y programación primavera de 2006 javier m. hernández fcfm lectura 5: diagramas de...
TRANSCRIPT
![Page 1: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/1.jpg)
11
Algoritmos y ProgramaciónAlgoritmos y Programación Primavera de 2006 Primavera de 2006
Javier M. Hernández
FCFM
Lectura 5: Lectura 5: Diagramas de Flujo - AlgoritmosDiagramas de Flujo - Algoritmos
B. Universidad Autónoma de PueblaB. Universidad Autónoma de Puebla
![Page 2: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/2.jpg)
22
Tópicos Tópicos
• El Ciclo de Desarrollo del SoftwareEl Ciclo de Desarrollo del Software
• Diagramas de FlujoDiagramas de Flujo– SelecciónSelección– SecuenciaSecuencia
– IteraciónIteración
• Cómo diagnosticar errores en sus programas?Cómo diagnosticar errores en sus programas?– Métodos para debugging Métodos para debugging – Métodos para pruebas Métodos para pruebas
![Page 3: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/3.jpg)
33
Componentes del Proceso de Desarrollo del Software
Definir el problema claramenteAnalizar el problema
Diseñar un algoritmodiseño top-down
Documentar al sistema
Codificar (Usar) el algoritmoProbar el código
![Page 4: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/4.jpg)
44
Ciclo de DesarrolloCiclo de Desarrollo
Análisis Diseño Implementar Probar
debugging y pruebas
![Page 5: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/5.jpg)
55
Debugging y PruebasDebugging y Pruebas
Debugging: el proceso de encontrar y corregir los errores (a.k.a “bugs”)Pruebas: ejecutar el programa sobre un conjunto de datos de prueba
![Page 6: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/6.jpg)
66
Tipos de ErroresTipos de Errores
• sintáctico: cómo se escriben las instrucciones
• semántico: qué representan
while (i=0; i < 5; i++){ printf(“%d\n”, i);}
Ejemplo 1:
for (i=0; i < 5; i++);{ printf(“%d\n”, i);}
Ejemplo 2:
if (choice = ‘Q’) { break;}
Ejemplo 3:
![Page 7: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/7.jpg)
77
Diagramas de FlujoDiagramas de Flujo
• Representar el Representar el flujo del controlflujo del control del algoritmo: del algoritmo:– secuenciassecuencias– selecciónselección– IteraciónIteración
• Útil para:Útil para:– Encontrar errores semánticosEncontrar errores semánticos– Determinar el conjunto de datos de pruebasDeterminar el conjunto de datos de pruebas
![Page 8: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/8.jpg)
88
Secuencia (revisión)Secuencia (revisión)
• Series de instrucciones que se realizarán en un Series de instrucciones que se realizarán en un orden secuencial fijoorden secuencial fijo
• Ejemplo 1: Ejemplo 1: Paso A:Paso A: número de entradanúmero de entradaPaso B:Paso B: añadir 1 al númeroañadir 1 al númeroPaso C: Paso C: número de salidanúmero de salida
![Page 9: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/9.jpg)
99
Diagramas de Flujo: SecuenciaDiagramas de Flujo: Secuencia
Paso A: número entrada
Paso B: número + 1
Paso C: número salida
Instrucciónen una caja rectangular
Orden de ejecuciónindicado por flechas
• Representado por instrucciones concatenadas (usualmente de forma vertical)
![Page 10: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/10.jpg)
1010
Paso A:Paso A: número de entradanúmero de entrada
Paso B:Paso B:
si número es negativo,si número es negativo,Entonces sumar -1 a Entonces sumar -1 a
númerosnúmerossino sumar 1 al númerosino sumar 1 al número
Paso C:Paso C: número de salida número de salida
Ejemplo 2:
un algoritmoinvolucra
“selección”
Paso A: número entrada
Paso C: número salida
Secuencia (cont)Secuencia (cont)
![Page 11: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/11.jpg)
1111
Diagrama de Flujo: SelecciónDiagrama de Flujo: Selección
Paso APaso A
if ( condición if ( condición C1C1 ) )
{{
<secuencia <secuencia S1S1>>
}}
elseelse
{{
<secuencia <secuencia S2S2>>
}}
Paso CPaso C
Paso A
C1 verdad?
S2
Paso C
S1
SI NO
Flecha marcada con resultado deprueba condición
Prueba deCondición enun diamante
![Page 12: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/12.jpg)
1212
entrada númeroentrada número
si número es negativo,si número es negativo,
entoncesentonces sumar -1 a sumar -1 a númeronúmeroó añadir 1 a númeroó añadir 1 a número
salida con númerosalida con número
introducir número
es númeronegativo?
sumar -1 a número
SI NO
sumar 1 a número
número de salida
Ejemplo: Algoritmo a Diag. FlujoEjemplo: Algoritmo a Diag. Flujo
![Page 13: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/13.jpg)
1313
Diagrama de Flujo: IteraciónDiagrama de Flujo: Iteración (ciclo while) (ciclo while)
while ( condición C1 )while ( condición C1 )
{{
<secuencia S1><secuencia S1>
}}
C1 verdad?
S1
SI
NO
![Page 14: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/14.jpg)
1414
Diagrama de Flujo: Iteración Diagrama de Flujo: Iteración (ciclo for)(ciclo for)
for ( inicio ; condición C1 ; incremento ) {
<secuencia S1>} C1 verdad?
S1
SI
NO
inicio
incremento
![Page 15: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/15.jpg)
1515
Cómo elegir que iteración usar?Cómo elegir que iteración usar?
• Sabes exactamente cuantas veces hay que ejecutar el Sabes exactamente cuantas veces hay que ejecutar el ciclo?ciclo?– Si la respuesta es afirmativa, use FORSi la respuesta es afirmativa, use FOR
• Es posible que la secuencia nunca sea ejecutada?Es posible que la secuencia nunca sea ejecutada?Si la respuesta es afirmativa, use WHILESi la respuesta es afirmativa, use WHILE
![Page 16: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/16.jpg)
1616
Ejemplo: Código a Diag. Flujo Ejemplo: Código a Diag. Flujo (Vea el error!)(Vea el error!)
for ( i=0; i<10; i++ ) { scanf(“%d\n”, &x); if ( x < 0 ) { break; }}
es i < 10 ?
valor inicial de x
SI
NO
poner i a 0
incremento i
es x < 0 ?NO SI
![Page 17: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/17.jpg)
1717
Ejemplo: Código a Diag. Flujo Ejemplo: Código a Diag. Flujo (versión correcta)(versión correcta)
for ( i=0; i<10; i++ ) { scanf(“%d\n”, &x); if ( x < 0 ) { break; }}
es i < 10 ?
valor inicial de x
SI
NO
poner i a 0
incremento i
es x < 0 ?
NO
SI
![Page 18: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/18.jpg)
1818
Algoritmo a Diagrama de FlujoAlgoritmo a Diagrama de FlujoEjemplo: Sumar NúmerosEjemplo: Sumar Números
input totalNumerosinput totalNumeros
poner suma to 0poner suma to 0
poner contador a 0poner contador a 0
mientras (contador < totalNumeros)mientras (contador < totalNumeros)
{{
input siguienteNuminput siguienteNum
sumar siguienteNum a sumasumar siguienteNum a suma
sumar 1 a contadorsumar 1 a contador
}}
salida “Suma es” sumasalida “Suma es” suma
salida “Media es” suma/contadorsalida “Media es” suma/contador
valor inicial de totalNumeros
poner suma a 0
poner contador a 0
![Page 19: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/19.jpg)
1919
es contador< totalNumeros?
Algoritmo a Diagrama de FlujoAlgoritmo a Diagrama de FlujoEjemplo: Sumar Números (cont)Ejemplo: Sumar Números (cont)
input totalNumerosinput totalNumeros
poner suma a 0poner suma a 0
poner contador a 0poner contador a 0
mientras (contador < totalNumeros)mientras (contador < totalNumeros)
{{
input siguienteNuminput siguienteNum
sumar siguienteNum a sumasumar siguienteNum a suma
sumar 1 to contadorsumar 1 to contador
}}
salida “Suma es” sumasalida “Suma es” suma
salida “Media es” suma/contadorsalida “Media es” suma/contador
valor inicial de siguienteNum
SI
NO
incrementar contador
sumar siguienteNum a suma
![Page 20: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/20.jpg)
2020
Algoritmo a Diag. de FlujoAlgoritmo a Diag. de FlujoEjemplo: SumarNumeros (cont)Ejemplo: SumarNumeros (cont)
input totalNumerosinput totalNumeros
poner suma a 0poner suma a 0
poner contador a 0poner contador a 0
mientras (contador < totalNumeros)mientras (contador < totalNumeros)
{{
input siguienteNuminput siguienteNum
sumar siguienteNum a sumasumar siguienteNum a suma
sumar 1 a contadorsumar 1 a contador
}}
salida “Suma es” sumasalida “Suma es” suma
salida “Media es” suma/contadorsalida “Media es” suma/contador
valor de salida para suma
valor de salida para suma/contador
![Page 21: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/21.jpg)
2121
Algoritmo a Diag. de FlujoAlgoritmo a Diag. de FlujoEjercicio: SumarNumeros (cont)Ejercicio: SumarNumeros (cont)
input totalNumerosinput totalNumeros
poner suma a 0poner suma a 0
poner contador a 0poner contador a 0
mientras (contador < totalNumeros)mientras (contador < totalNumeros)
{{
input siguienteNuminput siguienteNum
sumar siguienteNum a sumasumar siguienteNum a suma
sumar 1 a contadorsumar 1 a contador
}}
output “Suma es” sumaoutput “Suma es” suma
output “Media es” suma/contadoroutput “Media es” suma/contador
Qué tal si totalNumeros
es cero?
![Page 22: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/22.jpg)
2222
• Modificar el diagrama de flujo para añadir una Modificar el diagrama de flujo para añadir una verificación extra de modo que envie la media a verificación extra de modo que envie la media a output sólo cuando el contador es positivooutput sólo cuando el contador es positivo
Algoritmo a Diag. de FlujoAlgoritmo a Diag. de FlujoEjercicio: SumarNumeros (cont)Ejercicio: SumarNumeros (cont)
![Page 23: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/23.jpg)
2323
Uso de Diagramas de Flujo Uso de Diagramas de Flujo
• Pseudo-código Pseudo-código diagrama de flujo diagrama de flujo
• Diagrama de flujo Diagrama de flujo código código
![Page 24: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/24.jpg)
2424
Bases de DebuggingBases de Debugging
• Conocer el lenguaje (C, Fortran,…) bienConocer el lenguaje (C, Fortran,…) bien
printf(“%d\n”, &num);
Ejemplos:
scanf(“%s”, &name);
if (i < N);{ scanf(“%d\n”, &i);}
float x, y, z = 3.5;
scanf(“%f”, x);
![Page 25: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/25.jpg)
2525
• Poner atención a los errores del compilador y Poner atención a los errores del compilador y mensajes de advertenciamensajes de advertencia
Ejemplos:
if (ch = ‘Q’){ break;}
Bases de Debugging (cont)Bases de Debugging (cont)
“Possible incorrect assignment”
int N;
… scanf(“%d”, N);
“Possible use of ‘N’ before declaration”
![Page 26: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/26.jpg)
2626
TrazadoTrazado
• Ejecución trazada de un programa:Ejecución trazada de un programa:– locación en el programalocación en el programa– estatus/contenido de variablesestatus/contenido de variables
• Herramientas:Herramientas:– Ambiente de programación Ambiente de programación
» EE..gg,,. “step”, “breakpoints”, “watch”. “step”, “breakpoints”, “watch”– Declaraciones de debuggingDeclaraciones de debugging
» EE..g.g.,, valores de output de las variables, valores de output de las variables, marcadores en lugares marcadores en lugares específicos, etcespecíficos, etc
![Page 27: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/27.jpg)
2727
Ejemplo: Declaraciones de Ejemplo: Declaraciones de Debugging Debugging
...for (i=0; i<N; i++){
scanf(“%s”, name);
}
![Page 28: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/28.jpg)
2828
Ejemplo: Declaraciones de Ejemplo: Declaraciones de Debugging (cont) Debugging (cont)
TIP: hacer declaraciones de debug condicionales sobre variable booleana
const int debugging = 1;...for (i=0; i<N; i++){
scanf(“%s”, name);
if (debugging) {
printf("for: i=%d, name=%s\n", i, name);}
}
![Page 29: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/29.jpg)
2929
Ejemplo: Declaraciones debugging Ejemplo: Declaraciones debugging (alternativo) (alternativo)
#define DEBUG 1int main()...for (i=0; i<N; i++){
scanf(“%s”, name);
#if DEBUG printf("for: i=%d, name=%s\n", i, name);
#endif}
![Page 30: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/30.jpg)
3030
Técnicas de PruebaTécnicas de Prueba
• Datos de prueba deberán probar “completamente” al Datos de prueba deberán probar “completamente” al programa programa
• Todos los caminos lógicos del programa deberán ser Todos los caminos lógicos del programa deberán ser caminados (i.e., cada línea del código deberán ser caminados (i.e., cada línea del código deberán ser ejecutados una vez al menos)ejecutados una vez al menos)
• Use el diseño representado por el diagrama de flujoUse el diseño representado por el diagrama de flujo
TIP: contruya programas incrementalmente, probando componentes pequeños en serie
![Page 31: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/31.jpg)
3131
Ejemplo: mejorCal Ejemplo: mejorCal
Problema:Problema:
• Escribir un programa que lea una lista de Escribir un programa que lea una lista de calificaciones, e imprima la mejor calificaciones, e imprima la mejor
• Ejemplo:Ejemplo:– Input:Input: 18 56 65 96 24 3018 56 65 96 24 30
– Output:Output: Mejor calificacion es 96Mejor calificacion es 96
![Page 32: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/32.jpg)
3232
Ejemplo: mejorCal (cont)Ejemplo: mejorCal (cont)
poner mejorCal a 0poner mejorCal a 0looploop{{ input calificacioninput calificacion if (fin de input)if (fin de input) then salir ciclothen salir ciclo
}}output “Mejor calificacion“, mejorCaloutput “Mejor calificacion“, mejorCal
Algoritmo
![Page 33: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/33.jpg)
3333
Ejemplo: mejorCal (cont) Ejemplo: mejorCal (cont)
poner mejorCal a 0poner mejorCal a 0looploop{{ input markinput mark if (end of input)if (end of input) then exit loopthen exit loop
if (calificacion > mejorCal)if (calificacion > mejorCal) thenthen {{ poner mejorCal a calificacionponer mejorCal a calificacion }}}}output “Mejor calificacion es“, mejorCaloutput “Mejor calificacion es“, mejorCal
Algoritmo
![Page 34: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/34.jpg)
3434
Ejemplo: mejorCal (cont) Ejemplo: mejorCal (cont)
poner mejorCal a 0poner mejorCal a 0looploop{{ input calificacioninput calificacion if (end of input)if (end of input) then salir loopthen salir loop
if (calificacion > mejorCal)if (calificacion > mejorCal) thenthen {{ poner mejorCal a calificacionponer mejorCal a calificacion }}}}output “Mejor calificacion“, mejorCaloutput “Mejor calificacion“, mejorCal
Algoritmo
Cómo validola entrada?
![Page 35: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/35.jpg)
3535
Clases de Datos de Prueba Clases de Datos de Prueba
• Datos válidos Datos válidos
• Datos válidos límites Datos válidos límites
• Casos especiales o no usuales Casos especiales o no usuales
• Datos no válidos Datos no válidos
![Page 36: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/36.jpg)
3636
Datos de Prueba: Datos VálidosDatos de Prueba: Datos Válidos
• Datos razonables para el problemaDatos razonables para el problema
• Ejemplo: mejorCalEjemplo: mejorCal– Prueba de qué es?Prueba de qué es?– Si la calificación es sobre 100, datos válidos de Si la calificación es sobre 100, datos válidos de
prueba son prueba son 75, 65, 5575, 65, 55
![Page 37: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/37.jpg)
3737
D. P.: Datos Válidos LímitesD. P.: Datos Válidos Límites
• Datos con valores extremosDatos con valores extremos
• Ejemplo: mejorCalEjemplo: mejorCal– mínimo de 0mínimo de 0– máximo de 100máximo de 100
• Condiciones de selección de pruebaCondiciones de selección de prueba
• Condiciones de salida de iteraciónCondiciones de salida de iteración
• Probar primer y último elementos de arregloProbar primer y último elementos de arreglo
![Page 38: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/38.jpg)
3838
Datos de Prueba: Casos Datos de Prueba: Casos Especiales Especiales
• Ejemplo: mejorCalEjemplo: mejorCal– Qué sucede si alguien se ausentó o la calificación no es Qué sucede si alguien se ausentó o la calificación no es
correcta (consideración especial)?correcta (consideración especial)?
input calificacionif (calificacion es “Aus” o “CE”) { output “No calificacion para este
estudiante” poner calificacion a 0 } else {
poner calificacion a valor númerico de calificacion }
![Page 39: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/39.jpg)
3939
Datos de Entrada: Datos no Datos de Entrada: Datos no validosvalidos
• Un dato no valido esUn dato no valido es– de un tipo no correcto, ode un tipo no correcto, o– fuera del intervalo esperadofuera del intervalo esperado
• Use las características del lenguaje de programación Use las características del lenguaje de programación para asegurar el tipo correcto de datospara asegurar el tipo correcto de datos
– Ejemplo: mejorCalEjemplo: mejorCal» calificación se puede restringir a un entero calificación se puede restringir a un entero int mark;int mark;scanf(“%d”, &mark);scanf(“%d”, &mark);
![Page 40: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/40.jpg)
4040
Datos de Prueba: Datos No Datos de Prueba: Datos No Válidos (cont)Válidos (cont)
...if ((mark < 0) or (mark > 100)){ output “Calif debe estar entre 0 y 100”}
input calificacion...poner mark a un valor numerico de
calificacion if (no puedo tener numero de
calificacion)
{ output “entrada no valida”}
![Page 41: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/41.jpg)
4141
loop{ set mejorCal to 0 input markEntered if (end of input) break loop if ( markEntered is “Aus” or “CE” ) { output “No hay calificacion para este estudiante” } else { set mark a valor numerico de markEntered if (cannot get number from markEntered)
{ output “Invalid input” } else if ((mark < 0) or (mark > 100))
{ output “Mark tiene que estar entre 0 y 100” } else /* entrada valida! */
{ if (mark > mejorCal) poner mejorCal a mark
}}
}output “Mejor Calificacion es “, mejorCal
Algoritmo: mejorCal Algoritmo: mejorCal
mejor1
![Page 42: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/42.jpg)
4242
Ejemplo Ejemplo
int x,y; int x,y; scanf("%d %d", &x, &y);scanf("%d %d", &x, &y);if (x > 2) if (x > 2) { { while (x > y) while (x > y) { { printf("S1,"); printf("S1,"); x--; x--; } } printf("S2,"); printf("S2,"); } } else if (x < y)else if (x < y){ { printf("S3,"); printf("S3,"); }}printf("S4"); printf("S4");
SI NOx>2?
Input x,y
NO
output S2
x<y?
output S4
SI
output S3
NO
SI
x>y?
output S1
decremento x
![Page 43: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/43.jpg)
4343
Ejemplo (cont) Ejemplo (cont)
int x,y; int x,y; scanf("%d %d", &x, &y);scanf("%d %d", &x, &y);if (x > 2) if (x > 2) { { while (x > y) while (x > y) { { printf("S1,"); printf("S1,"); x--; x--; } } printf("S2,"); printf("S2,"); } } elseelse if (x < y) if (x < y){ { printf("S3,"); printf("S3,"); }}printf("S4"); printf("S4");
SI NOx>2?
Input x,y
![Page 44: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/44.jpg)
4444
int x,y; int x,y; scanf("%d %d", &x, &y);scanf("%d %d", &x, &y);if (x > 2) if (x > 2) { { while (x > y) while (x > y) { { printf("S1,"); printf("S1,"); x--; x--; } } printf("S2,");printf("S2,"); else if (x < y)else if (x < y){ { printf("S3,"); printf("S3,"); }}printf("S4"); printf("S4");
SI NOx>2?
Input x,y
SI
x>y?
output S1
decremento x
Ejemplo (cont) Ejemplo (cont)
![Page 45: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/45.jpg)
4545
int x,y; int x,y; scanf("%d %d", &x, &y);scanf("%d %d", &x, &y);if (x > 2) if (x > 2) { { while (x > y) while (x > y) { { printf("S1,"); printf("S1,"); x--; x--; } } printf("S2,");printf("S2,"); } } else else if (x < y)if (x < y){ { printf("S3,"); printf("S3,"); }}printf("S4"); printf("S4");
SI NOx>2?
Input x,y
x<y?
output S4
SI
output S3
NO
SI
x>y?
output S1
decremento x
Ejemplo (cont) Ejemplo (cont)
![Page 46: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/46.jpg)
4646
int x,y; int x,y; scanf("%d %d", &x, &y);scanf("%d %d", &x, &y);if (x > 2) if (x > 2) { { while (x > y) while (x > y) { { printf("S1,"); printf("S1,"); x--; x--; } } printf("S2,");printf("S2,"); } } else if (x < y)else if (x < y){ { printf("S3,"); printf("S3,"); }}printf("S4");printf("S4");
SI NOx>2?
Input x,y
NO
output S2
x<y?
output S4
SI
output S3
NO
SI
x>y?
output S1
decremento x
Ejemplo (cont)Ejemplo (cont)
![Page 47: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/47.jpg)
4747
Ejemplo (cont): Datos Válidos Ejemplo (cont): Datos Válidos
• Qué líneas del código indican los datos válidos?Qué líneas del código indican los datos válidos?
int x,y;
scanf("%d %d\n", &x, &y);
• Datos Válidos son cualquier entero:–positivo, –negativo, o–cero
![Page 48: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/48.jpg)
4848
Ejemplo (cont): Datos de prueba Ejemplo (cont): Datos de prueba para todos los caminos lógicospara todos los caminos lógicos
• Qúe hacemos para Qúe hacemos para cada input?cada input?
int x,y; scanf("%d %d", &x, &y);if (x > 2) { while (x > y) { printf("S1,"); x--; } printf("S2,"); } else if (x < y){ printf("S3,"); }printf("S4");
Qué decimos acerca de la salida ?
S4 debe ser la salida al final de cada vez
![Page 49: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/49.jpg)
4949
int x,y; scanf("%d %d", &x, &y); if (x > 2) { while (x > y) { printf("S1,"); x--; } printf("S2,"); } else if (x < y){ printf("S3,"); }printf("S4");
Ejemplo (cont): Datos de prueba Ejemplo (cont): Datos de prueba para todos los caminos lógicospara todos los caminos lógicos
SI
SI NOx>2?
Input x,y
NO
output S2
x<y?
output S4
output S3
NO
SI
x>y?
output S1
decremento x
HACER: Probar todos los caminos desde “Input” a “Salida S4”
![Page 50: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/50.jpg)
5050
Ejemplo (cont): Puntos elegidos Ejemplo (cont): Puntos elegidos
SI NOx>2?
Input x,y
NO
output S2
x<y?
output S4
SIoutput S3
NO
SI
x>y?
output S1
decremento x
Trayectorias se determinan por puntos elegidos
![Page 51: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/51.jpg)
5151
Ejemplo (cont): Puntos elegidos Ejemplo (cont): Puntos elegidos
• Cuáles son los puntos Cuáles son los puntos elegidos de nivel más elegidos de nivel más alto?alto?
int x,y; scanf("%d %d", &x, &y); if (x > 2){ while (x > y) { printf("S1,"); x--; } printf("S2,"); } else if (x < y){ printf("S3,"); }printf("S4");
![Page 52: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/52.jpg)
5252
Ejemplo (cont): Puntos elegidos Ejemplo (cont): Puntos elegidos
SI
SI NOx>2?
Input x,y
NO
output S2
x<y?
output S4
output S3
NO
SI
x>y?
output S1
decremento x
int x,y; int x,y; scanf("%d %d", &x, &y); scanf("%d %d", &x, &y); if (x > 2)if (x > 2){ { while (x > y) while (x > y) { { printf("S1,"); printf("S1,"); x--; x--; } } printf("S2,");printf("S2,"); } } else else if (x < y)if (x < y){ { printf("S3,"); printf("S3,"); }}printf("S4");printf("S4");
![Page 53: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/53.jpg)
5353
Ejemplo (cont): Puntos elegidos Ejemplo (cont): Puntos elegidos
Datos de Prueba Caso 1: NO (x>2), NO (x<y)
Output: S4
Valores específicos: x==2, y == 2
SI NOx>2?
Input x,y
NO
output S2
x<y?
output S4
SIoutput S3
NO
SI
x>y?
output S1
decremento x
![Page 54: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/54.jpg)
5454
Ejemplo (cont): Puntos elegidos Ejemplo (cont): Puntos elegidos
Datos Prueba Caso 2: NOT (x>2), x<y
Output: S3, S4
Valores espcíficos: x==2, y == 3
SI NOx>2?
Input x,y
NO
output S2
x<y?
output S4
SIoutput S3
NO
SI
x>y?
output S1
decremento x
![Page 55: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/55.jpg)
5555
Ejemplo (cont): Puntos elegidos Ejemplo (cont): Puntos elegidos
int x,y; scanf("%d %d", &x, &y); if (x > 2) { while (x > y) { printf("S1,"); x--; } printf("S2,"); } else if (x < y){ printf("S3,"); }printf("S4");
SI NOx>2?
Input x,y
NO
output S2
x<y?
output S4
SIoutput S3
NO
SI
x>y?
output S1
decremento x
![Page 56: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/56.jpg)
5656
Ejemplo (cont): Puntos elegidos Ejemplo (cont): Puntos elegidos
Datos de prueba Caso 3(cuerpo ciclo no ejecutado):
x > 2, NOT(x > y)
Output: S2, S4
Valores específicos: x==3, y == 4
SI NOx>2?
Input x,y
NO
output S2
x<y?
output S4
SIoutput S3
NO
SI
x>y?
output S1
decremento x
![Page 57: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/57.jpg)
5757
Ejemplo (cont): Puntos elegidos Ejemplo (cont): Puntos elegidos
Datos de prueba Caso 4(ejecución cuerpo de ciclo):
x > 2, x > y
Output: S1, S2, S4
Valores específicos: x==5, y == 4
SI NOx>2?
entrada x,y
NO
output S2
x<y?
output S4
SIoutput S3
NO
SI
x>y?
output S1
decremento x
![Page 58: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/58.jpg)
5858
Notas sobre ciclos de prueba Notas sobre ciclos de prueba
• Es posible que un ciclo nunca termine?Es posible que un ciclo nunca termine?– sólo si el algoritmo es incorrectosólo si el algoritmo es incorrecto
• Ejemplo:Ejemplo:
while (x > y) { printf("S1,"); x++; }
while (x > y) { printf("S1,"); x--; }
![Page 59: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/59.jpg)
5959
Ejercicio: Cambiando el Algoritmo Ejercicio: Cambiando el Algoritmo
/* Paso 1 */ while (x > 0){ /* Paso 2 */ if (y == 2) { /* Paso 2a */ } else { /* Paso 2b */ } /* Paso 3 */ } /* Paso 4 */
• Cómo asegurar que el ciclo Cómo asegurar que el ciclo siempresiempre termine? termine?
dado un conjunto de datos de prueba:
válidosválidos límiteno válidos
![Page 60: 1 Algoritmos y Programación Primavera de 2006 Javier M. Hernández FCFM Lectura 5: Diagramas de Flujo - Algoritmos B. Universidad Autónoma de Puebla](https://reader035.vdocumento.com/reader035/viewer/2022062809/5665b4d51a28abb57c9415f9/html5/thumbnails/60.jpg)
6060
Sumario Sumario
• Probar es una parte importante de proceso de Probar es una parte importante de proceso de desarrollo del softwaredesarrollo del software
• Considerar todos los casos de datos de prueba puede Considerar todos los casos de datos de prueba puede conducir a un cambio en el algoritmoconducir a un cambio en el algoritmo
• Los Diagramas de Flujo se pueden usar para diseñar Los Diagramas de Flujo se pueden usar para diseñar el conjunto de datos de pruebael conjunto de datos de prueba