Sugerencias de programacin Anlisis Numrico Diagramas de Flujo

  • Slides: 43
Download presentation
Sugerencias de programación Análisis Numérico

Sugerencias de programación Análisis Numérico

Diagramas de Flujo • Un diagrama de flujo es un diagrama que describe un

Diagramas de Flujo • Un diagrama de flujo es un diagrama que describe un proceso, sistema o algoritmo informático. Se usan ampliamente en numerosos campos para documentar, estudiar, planificar, mejorar y comunicar procesos que suelen ser complejos en diagramas claros y fáciles de comprender.

Diagramas de Flujo • • Símbolo de inicio y fin Símbolo de proceso Salida

Diagramas de Flujo • • Símbolo de inicio y fin Símbolo de proceso Salida de datos Símbolo de decisión Símbolo de conector Enlace fuera de página Símbolo de entrada y salida Símbolo de almacenamiento

Diagramas de Flujo • Utiliza los símbolos de manera consistente para que tus lectores

Diagramas de Flujo • Utiliza los símbolos de manera consistente para que tus lectores comprendan el significado de ese símbolo cada vez que lo vean.

Partes de un programa • • • Inicio Entrada de Datos Proceso o Cálculo

Partes de un programa • • • Inicio Entrada de Datos Proceso o Cálculo Salida de resultados Fin.

Inicio en C • • /* Comentario */ #Include<librerias. h> Declaración de función void

Inicio en C • • /* Comentario */ #Include<librerias. h> Declaración de función void main(){ • Los comentarios pueden utilizarse a lo largo de todo el programa para facilitar la lectura del programa.

Inicio en Fortran • • • c program nombre real a, b, c Este

Inicio en Fortran • • • c program nombre real a, b, c Este es un comentario • Se dejan 6 espacios libres al inicio de cada renglón, sirven para indicar comentarios o etiquetas.

Entrada de datos en C • Declaración de variables. • scanf(. . . );

Entrada de datos en C • Declaración de variables. • scanf(. . . ); • fscanf(. . . );

Entrada de datos en Fortran • read (*, *) a, b

Entrada de datos en Fortran • read (*, *) a, b

Proceso en C • • • Ausencia de comando A=B+C; A=B*C; A=B/C; A=A+1; A

Proceso en C • • • Ausencia de comando A=B+C; A=B*C; A=B/C; A=A+1; A =sin(A);

Proceso en C • for(j=a; j<=20; j=j+2) { Instrucciones. . . } • while(num<=5)

Proceso en C • for(j=a; j<=20; j=j+2) { Instrucciones. . . } • while(num<=5) {Instrucciones. . . } • If(d>0) {Instrucciones. . . } else {Instrucciones. . . }

Proceso en Fortran • do while (a <= 20) • Instrucciones. . . •

Proceso en Fortran • do while (a <= 20) • Instrucciones. . . • enddo

Salida de resultados en C • printf • fprintf

Salida de resultados en C • printf • fprintf

Salida de resultados en fortran • write (*, *) ‘salida =', c • write

Salida de resultados en fortran • write (*, *) ‘salida =', c • write (*, *) c

Fin de bloques o programa en C • }

Fin de bloques o programa en C • }

Fin de bloques o programa en Fortran • enddo • stop • end

Fin de bloques o programa en Fortran • enddo • stop • end

Diagrama de flujo, realiza la suma de dos números

Diagrama de flujo, realiza la suma de dos números

Programa en C, realiza la suma de dos números. /*Programa 1*/ #include<stdio. h> #include<conio.

Programa en C, realiza la suma de dos números. /*Programa 1*/ #include<stdio. h> #include<conio. h> void main (){ float a, b, c; printf("n. Dame los sumandos a y b : "); scanf("%f, %f", &a, &b); c=a+b; printf("n. La suma es c= %fn", c); }

Programa en Fortran, realiza una suma. • • • c • b' • •

Programa en Fortran, realiza una suma. • • • c • b' • • program uno real a, b, c Este programa calcula la suma de a+b write (*, *) 'Dame dame los sumandos a y read (*, *) a, b c = a+b write (*, *) 'suma =', c end

Diagrama de flujo, realiza la tabla de números de dos en dos.

Diagrama de flujo, realiza la tabla de números de dos en dos.

Programa en C, realiza una tabla. /*Programa 2*/ #include<stdio. h> #include<conio. h> void main

Programa en C, realiza una tabla. /*Programa 2*/ #include<stdio. h> #include<conio. h> void main (){ int a, j; printf("n. Dame el valor inicial: "); scanf("%i", &a); for(j=a; j<=20; j=j+2){ printf("%in", j); } }

Programa en Fortran, realiza una tabla. • • c • • program dos real

Programa en Fortran, realiza una tabla. • • c • • program dos real a a=0 Este programa hace una lista de números, empieza en a write (*, *) 'Dame el valor inicial (<20) y el paso' read (*, *) a do while (a <= 20) write (*, *) 'valor=', a a=a+2 enddo stop end

Diagrama de flujo, realiza una tabla de multiplicar.

Diagrama de flujo, realiza una tabla de multiplicar.

Programa en C, realiza una tabla de multiplicar. /*Programa 3*/ #include<stdio. h> #include<conio. h>

Programa en C, realiza una tabla de multiplicar. /*Programa 3*/ #include<stdio. h> #include<conio. h> void main (){ int a, b, j; printf("Dame el valor entre 1 Y 10 "); scanf("%i", &a); printf("ntabla de multiplicar del %in", a); for(j=1; j<=10; j=j+1){ b=a*j; printf("%i X %i = %in", a, j, b); } }

Programa en Fortran, realiza una tabla de multiplicar. • • • c • •

Programa en Fortran, realiza una tabla de multiplicar. • • • c • • • program tres real a Este programa escribe la tabla de multiplicar de un número. write (*, *) 'Dame el valor de a'; read (*, *) a i=1 do while (i <= 10) write (*, *) a, ' x', i , '=', a*i i=i+1 enddo stop end

Diagrama de flujo, resuelve una ecuación cuadrática.

Diagrama de flujo, resuelve una ecuación cuadrática.

Programa en C, resuelve una ecuación cuadrática. /*programa 4 Programa que resuelve una ecuación

Programa en C, resuelve una ecuación cuadrática. /*programa 4 Programa que resuelve una ecuación de segundo grado */ #include<stdio. h> #include<conio. h> #include<math. h> void main(){ float A, B, C, D, S, T, R, S 1, S 2; printf(" Dame los coeficientes A, B, y C de la ecuación "); scanf("%f, %f", &A, &B, &C); if(A==0){ /*Verifica si la ecuación es lineal*/ S=-C/B; /*Calcula la raíz de la ecuación lineal*/ printf("nn. La ecuación es lineal y su solución es: "x= %fnn“, S); }else

Programa en C, resuelve una ecuación cuadrática. { T=B/(2*A); /*Construye los términos del discriminante*/

Programa en C, resuelve una ecuación cuadrática. { T=B/(2*A); /*Construye los términos del discriminante*/ R=C/A; D=T*T-R; /*Calcula el discriminante*/ if(D<0){ D=fabs(D); printf("nn. Las raíces son complejas X 1 = %f + %fi n", -T, D); printf(" X 2 = %f - %fi nn", -T, D); }else if(D==0){ S=-T; printf("nn. La raíz de la ecuación es %fnn", S);

Programa en C, resuelve una ecuación cuadrática. }else { S 1=-T+sqrt(D); S 2=-T-sqrt(D); printf("nn.

Programa en C, resuelve una ecuación cuadrática. }else { S 1=-T+sqrt(D); S 2=-T-sqrt(D); printf("nn. Las raíces de la ecuación son X 1=%f y X 2=%fnn", S 1, S 2); } } }

Instrucciones en C • Funciones (sub-rutinas) • –Declaración. • –Llamado. • –Definición. • Definición:

Instrucciones en C • Funciones (sub-rutinas) • –Declaración. • –Llamado. • –Definición. • Definición: • Subproceso • return

Programa en C, evalúa un función. • • • /*programa 7 Evalúa una función

Programa en C, evalúa un función. • • • /*programa 7 Evalúa una función en el intervalo [0, 10]*/ #include<stdio. h> #include<math. h> #include<conio. h> float pol(float a); /*Declara la función polinomial*/ float main(void){ • int i; /*Define variables*/ • float a, e; • clrscr(); /*Limpia pantalla*/ • for(i=0; i<=10; i++) /*Lo hace de 1 a 10*/ • { • e=pol(i); /* Llama a la función y evalúa el polinomio*/ • printf("P(%i) = %f nn", i, e); • } • return 0; • }

Función en C • float pol(float a) • { • float e; • e=a*(a*(a-9)+9)-8;

Función en C • float pol(float a) • { • float e; • e=a*(a*(a-9)+9)-8; • return e; • } /*Define la función*/ /*Define variables*/ /*Evalua el Polinomio x 3 – 9 x 2 + 9 x - 8*/

Encabezado de un programa en C /*programa 7 Método de Bisección*/ #include<stdio. h> #include<math.

Encabezado de un programa en C /*programa 7 Método de Bisección*/ #include<stdio. h> #include<math. h> #include<conio. h> float fun(float a); /*Declara la función a resolver*/ float main(void){ int i, n; /*Define variables*/ float a, b, x, fa, fx, fb, e, er, f, xn; printf("nDame los limites del intervalo de trabajo, y el error aceptado: "); • scanf("%f, %f", &a, &b, &e); • • •

Proceso de un programa en C • • • • { xn=a; er=1; while(er>e){

Proceso de un programa en C • • • • { xn=a; er=1; while(er>e){ fa=fun(a); fb=fun(b); xn = (a + b)/2; fx = fun(xn); er = fabs(x - xn); x = xn; if(fa*fx<0){ b=x; } else{ a=x; } } /*Verifica el error*/ /*Evalúa la función en los límites del intervalo*/ /*Llamado de función*/ /*Calcula el punto medio*/ /*Evalua la función en el punto medio*/ /*Calcula el error en la n-esima iteración*/ /* verifica el cambo de signo*/ /*modifica el intervalo de trabajo*/

Salida de un programa en C • • • printf("nt. La raiz es x=%f,

Salida de un programa en C • • • printf("nt. La raiz es x=%f, tiene un error de er=%fn", x, er); printf("P(%f) = %f n", x, fx); /*Imprime la raíz*/ getch(); /*Espera un carácter para terminar*/ } }

Función a resolver en un programa en C • float fun(float y) • {

Función a resolver en un programa en C • float fun(float y) • { • float f; • f=y^2+2*y-1. 337; • return f; • } /*Define la función*/ /*Define variables*/ /*Evalúa la función*/

Diagrama de flujo, Resuelve un sistema de ecuaciones.

Diagrama de flujo, Resuelve un sistema de ecuaciones.

Encabezado de un programa en C • /*Programa 8 Resuelve un sistema de ecuaciones*/

Encabezado de un programa en C • /*Programa 8 Resuelve un sistema de ecuaciones*/ • #include<stdio. h> • #include<math. h> • float det(float a, float b, float c, float d); /*dec. función*/ • float main(void){ • int i, j; • float delta, deltax, deltay, e, x, y; • float ma[2][3]; /*Declara arreglo 2 x 3*/ • clrscr(); /*Limpia pantalla*/

Proceso de un programa en C • • • for(i=0; i<=1; i++) { /*Lee

Proceso de un programa en C • • • for(i=0; i<=1; i++) { /*Lee las componentes del sistema de ecuaciones*/ for(j=0; j<=2; j++) { printf("n. Introduce el elemento %i, %i ", i+1, j+1); scanf("%f", &ma[i][j]); } } /*Resuelve los determinantes*/ e=det(ma[0][0], ma[0][1], ma[1][0], ma[1][1]); delta=e;

Proceso de un programa en C • • • if(delta==0){ printf("n. Eldeterminante es x=%f

Proceso de un programa en C • • • if(delta==0){ printf("n. Eldeterminante es x=%f ", delta); } else{ e=det(ma[0][2], ma[0][1], ma[1][2], ma[1][1]); deltax=e; e=det(ma[0][0], ma[0][2], ma[1][0], ma[1][2]); deltay=e; x=deltax/delta; y=deltay/delta;

Salida de un programa en C • printf("n. La solucion es x=%f y y=%f

Salida de un programa en C • printf("n. La solucion es x=%f y y=%f ", x, y); • return 0; • }

Función a resolver en un programa en C • float det(float a, float b,

Función a resolver en un programa en C • float det(float a, float b, float c, float d) /*Def fun*/ • { • float e; /*Define la variable de salida*/ • e=a*d-b*c; /*Calcula el determinante*/ • return e; /*Regresa el valor de e */ • }

Referencias • https: //www. lucidchart. com/pages/es/simboloscomunes-de-los-diagramas-de-flujo • http: //www. academicos. ccadet. unam. mx/mario. go

Referencias • https: //www. lucidchart. com/pages/es/simboloscomunes-de-los-diagramas-de-flujo • http: //www. academicos. ccadet. unam. mx/mario. go nzalez/cursos_archivos/mn/Kernighan. pdf • http: //force. lepsch. com/p/download. html