Professional Documents
Culture Documents
2011/1 - CLASE 13
Chiste del da
AGENDA
1
RESUMEN
Diagrama de Flujo
Vble1 <- vble Vble2 <- valor Vble3 <- constante
Pseudocdigo
Vble1 Vble2 Vble3 . vbleN <- vble <- valor <- constante . . <- expresin Vble1 Vble2 Vble3 . vbleN
Lenguaje C
= = = . = vble; valor; constante; . expresin;
. . .
VbleN <- expresin
NO (falsa)
CONDICION
SI (verdadera)
secuencias 1
secuencias 2
VBLE_CONTROL
Valor 1
secuencias 1
Valor 2
secuencias 1
OtrosValores
. . .
Otras secuencias
RESUMEN
Diagrama de Flujo
Falso
MQ(CONDICIN)
Pseudocdigo
Lenguaje C
verdadero
Cuerpo del bucle
while(condicin){ secuencia; }
Falso
PARA VC=LI, LF,INC
verdadero
Cuerpo del bucle
for(expre1;expre2;expre3){ secuencia; }
verdadero
MQ(CONDICIN)
Falso
AGENDA
1
printf(" Ingrese el vector: "); 1 for(i=0;i<3;i++) { scanf("%d",&a[i]); } printf(" vec1 = [%d %d %d]\n\n",a[0],a[1],a[2]); printf(" Ingrese el vector: "); 1 for(i=0;i<3;i++) { scanf("%d",&b[i]); } printf(" vec2 = [%d %d %d]\n\n",b[0],b[1],b[2]); for(i=0;i<3;i++) { c[i]=a[i]+b[i]; } printf(" vec3 = [%d %d %d]\n\n",c[0],c[1],c[2]); return 0; }
2
Cdigo Repetitivo y engorroso
1
2 3
Al dividir el problema en mdulos o partes se comprende ms fcilmente Al hacer modificaciones es ms fcil sobre un mdulo en particular que en todo el algoritmo.
En cuanto a los resultados, se probarn mucho mejor comprobando si cada mdulo da el resultado correcto que si se intenta probar de un golpe todo el programa
=
=
P R O C E S O
MOD 1
=
MOD 1.2.1
MOD 1.2.2
MOD 1.2
=
MOD 2.1
= =
MOD 2
=
MOD 2.2.1 MOD 2.2.2
MOD 2.2
AGENDA
1
Funciones
Conjunto de instrucciones que realizan una accin especifica y que tienen un nombre que las representa.
printf printf(la vble es: %d, vble); potencia = pow pow(base,exp); raiz = sqrt sqrt(vble);
Una funcin sirve para facilitar la programacin, ahorrar espacio, tiempo y para facilitar la portabilidad de los programas.
Funciones
La forma ms razonable de encarar el desarrollo de un programa complicado es aplicar lo que se ha dado en llamar "Programacin Top - Down" .
Funciones
Esto implica que, luego de conocer cual es la meta a alcanzar, se subdivide esta en varias tareas. Luego a estas se las vuelve a dividir en otras menores. Y as se contina hasta llegar a tener un gran conjunto de pequeas y simples tareas. Luego slo queda resolver cada una de ellas por separado.
DIVIDE Y VENCERAS
Funciones
Tal es el criterio con que est estructurado el lenguaje C, que una de sus herramientas fundamentales son las funciones.
Funciones
Todo programa tiene al menos una funcin:
int main (void){
...
}
Desde la funcion main se puede estructurar todo el programa por medio de llamados a las Funciones
PROGRAMA main() PROGRAMA main()
f1 f4
f2
f3 fn
Funciones
main()
f1()
f2()
f3()
f4()
Llamados a Funciones
Programa
INTRODUCCIN FUNCIONES
Func1 __ __ __ return
Func2
---Func3() ---return
Func3 __ __ __ return
20
Funciones
El uso de funciones permite dividir grandes tareas. Se ahorra programacin repetida. Se evita reinventar la rueda gracias a la reutilizacin de cdigo. Hace que los programas sean ms modulares, mas fciles de leer y mas fciles de editar .
Funciones
Las funciones permiten agrupar una serie de operaciones de tal manera que se puedan utilizar ms tarde sin tener que preocuparnos por cmo estn implementadas, simplemente sabiendo lo que harn.
El uso de funciones es una prctica comn y recomendable ya que permite modularizar nuestro cdigo, simplificando as el desarrollo y la depuracin del mismo.
Ejemplo
Programa que recibe el radio de una esfera y calcula el volumen y el area de la superficie de la esfera y los muestra.
#include <stdio.h>
int main (void) { float r,v,a; r = leaRadio (); v= calVolumen (r); a= calArea (r); muestreArVol (a,v); return 0; }
AGENDA
1
2
3
tipo_retorno
Es un tipo de dato de los que maneja C (int, float, char,..). Si la funcin no retorna nada, en ese lugar se utiliza la palabra void.
nombre
Es el nombre de la funcin es el nombre que le damos al conjunto de instrucciones que ella representa.
tipo_dato_parametros
Son todos aquellos tipos de los parmetros que la funcin necesita para su funcionamiento. Si la funcin no necesita parmetros se escribe la palabra void.
float mi_funcion(int i, int j) ; int otra_funcion(void) ; void otra_mas(float p) ; char la_ultima_funcion(float z, char y, int x) ;
Nota: En el prototipo no es necesario indicar variables. Slo el tipo de dato. Si se indican variables el compilador no las toma en cuenta
Definicin de la funcin
La definicin de la funcin consiste en expresar COMO la funcion va a realizar su tarea. Se comienza poniendo el prototipo de la funcin y entre { } se expresan las instrucciones de la funcion Tipo de dato retornado
por la funcin Nombre de la funcin
Cuerpo de la funcin
float suma(float num1, float num2){ float res; Argumentos a la res = num1 + num2; funcin. return res; } Variable retornada por la funcin
En el campo de los parametros, se estan declarando variables. En el cuerpo de la funcion: *Se pueden declarar todas las variables necesarias y pueden operarse. *Se utiliza la palabra return para expresar cual va a ser el valor que la funcion va a devolver!!! Compare esta funcion con la funcion main() !!!!
Definicin de la funcin
La definicin de una funcin puede ubicarse en cualquier lugar del programa, con slo dos restricciones: 1. Debe hallarse luego de su prototipo. 2. No puede estar dentro de la definicin de otra funcin ( incluida main() ).
La definicin debe comenzar con un encabezamiento, que debe coincidir totalmente con el prototipo declarado para la misma, y a continuacin del mismo, encerradas por llaves se escribirn las sentencias que la componen
Definicin de funcin
Una funcin debe ser declarada antes de ser usado, por ello suele ser comn colocar las declaraciones antes de la funcin main.
#include <archivo_cabecera> protipo_funciones; declaracion_variables_globales; int main(void) { declaracion_variables_locales; funcion_1(); funcion_2(); . . . funcion_N(); return 0; } funcion_1() { codigo_funcion_1; } . . . funcion_N() { codigo_funcion_N; } #include <archivo_cabecera> float suma(float,float); int main() { . . . return 0; } float suma(float num1, float num2) { float res; res = num1 + num2; return res; }
Definicin de funcin
void saludar(void) { printf(Hola parce!!\n); } void re_saludar(int N){ int i; for(i=0;i<N;i++) { printf(Hola !!\n); } }
Para indicar no retorno de datos se usa la palabra clave void, hay tres casos bsicamente: 1. Cuando una funcin no tiene argumentos de entrada ni retorna nada. 2. Cuando una funcin tiene argumentos de entrada pero no devuelve nada.
Llamado a la funcin
Una vez se ha declarado y definido la funcin, podemos pasar a la fase en el que la funcion ya se puede utilizar.
34
Llamado a la funcin
Convencionalmente en C los nombres de las funciones se escriben en minscula y siguen las reglas de las variables, se distinguen de las variables porque van seguidas de parentesis.
35
Llamado a la funcin
varRetorno = nomb_funcion(TipoDatosParametros);
#include <stdio.h> float suma(float,float); int main() { f1(); f2(); return 0; } 0 main() 1 f1() 2 7 FIN 3
6
f2() 5 f3() 4
f1(){ . . . }
f2() { f3(); . . . }
Llamado a Funciones
Para hacer que las instrucciones contenidas en una funcin, se ejecuten en determinado momento, no es necesario ms que escribir su nombre como una lnea de sentencia en el programa. Dentro de esos parntesis est ubicados los datos que se les pasan a las funciones. Est permitido pasarles ninguno una lista de ellos separados por comas, por ejemplo: raiz=sqrt(a), printf(el valor es: %d, val ) . El valor de retorno puede ser cargado a una variable o no (Depende del programador).
Llamado a la funcin
#include <stdio.h>
float suma(float,float);
int main() { int a = 3, b = 2, c = 0, d = 3; int e, f, g, h, i, k; d = suma(2,-4); c = suma(a,b); f = suma(2,c++); g = suma(++c,d++); h = suma(suma(1,a),d); return 0; } float suma(float num1, float num2) { float res; res = num1 + num2; return res; }
EJEMPLOS
Realice el prototipo y la definicin de la funcion invocada en el main()
Creacion Func.
int doble(int);
#include <stdio.h>
Prototipo
void main(){ int x,resul; scanf(%d,&x); resul=doble(x); printf(El doble de %d es %d,x,resul); } int doble(int n){ return 2*n; }
Llamado
Definicin
39
Ejemplo
Realice programa que sume dos numeros. Hagalo utlizando una funcion que se llame suma() Prototipo
Invocacin
Definicin
Ejemplo 2
Realizar programa que pida dos nmeros y que encuentre el mayor, realice una funcin mayor() que sea la que encuentre el mayor entre dos #s.
Prototipo llamado
Definicin
Bibliografa
Joyanes Aguilar, Luis. PROGRAMACIN EN C. Metodologa, algoritmos y estructura de datos Capitulo3. H.M. Deitel, P.J. Deitel. Como programar en C y C++ Google