You are on page 1of 29

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba.

Unidad 4 INTRODUCCION A LAS FUNCIONES


(Capitulo 6 bibliografa)

Unidad 1- Unidad 2 Unidad 3 REPASO

Ventre, Luis O.

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Intro

El principal objetivo a cumplir, es entender la magnitud del problema a solucionar y poder fraccionarlo o dividirlo en problemas menores. DIVIDE Y CONQUISTARAS. Con esta idea en mente es posible establecer una analoga en el desarrollo de software con la produccin de hardware e incluso con el proceso de fabricacin de un automvil. Cada modulo es desarrollado de manera individual y se encuentra libre de defectos antes de la integracin, lo que permite optimizar el tiempo de desarrollo, y desvincular el producto final de las partes internas. Ahora si quisiera un automvil con mas potencia que tendra que hacer?

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Intro

Ahora si, todos estos mdulos forman el vehiculo, pero cuando el usuario necesita acelerar llama al motor, este acepta entradas como combustible, aire y electricidad y produce potencia, que se la enva a la transmisin y as sucesivamente. Observe que estos mdulos conocen el mundo a travs de sus entradas y salidas. Y que el conductor no necesita saber nada de cmo funciona internamente la transmisin, ni el motor De la misma manera, con este enfoque modular, que no son mas que funciones, los ingenieros disean y crean programas confiables. Hemos visto que todo programa en C++ debe tener una nica funcin main, adems de esta puede tener cualquier cantidad de funciones adicionales. Veremos como escribir, transmitirle valores procesar datos y devolver resultados a continuacin
3

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Declaracin de Funciones y Parmetros

UNA FUNCION SE INVOCA o llama dando su NOMBRE y transmitindole la lista de parmetros o valores a procesar, como argumentos, en los parntesis que siguen al nombre de funcin.

nombre-de-la-funcin (datos transmitidos a la funcin) Identifica la funcin

Transmite datos a la funcin

MAXIMO CUIDADO EN EL ENVIO DE PARAMETROS CUANDO SE INVOCA LA FUNCION Y EN LOS VALORES DEVUELTOS.
4

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Declaracin de Funciones y Parmetros

Un ejemplo utilizado con anterioridad, fue cuando necesitbamos calcular la raz cuadrada, o la potencia de dos nmeros, estas son FUNCIONES que trae incorporada la biblioteca CMATH. sqrt (25); pow (radio,2);

Identifica la funcion

Transmite datos a la funcion

La funcin INVOCADA, debe ser capaz de ACEPTAR los datos que le son transmitidos.

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Declaracin de Funciones y Parmetros

ANTES QUE UNA FUNCION PUEDA SER LLAMADA DEBE SER DECLARADA, LA DECLARACION INICIAL DE LA MISMA SE CONOCE COMO PROTOTIPO DE LA FUNCION. En el prototipo de una funcin se puede reconocer, su NOMBRE, sus datos validos como ARGUMENTOS Y EL ORDEN, y su valor DEVUELTO. Por ejemplo el siguiente prototipo: void encontrarMax(int, int); Declara una funcin llamada encontrarMax, la cual recibe dos valores enteros como parmetro y no devuelve ningun valor(void).
6

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Declaracin de Funciones y Parmetros

La forma general de escritura de un prototipo de funcin es:


tipo-de-datos-a-devolver nombre-de-funcin (lista de tipos de datos argumento)

Ejemplos de prototipos de funciones:


int fmax(int, int); double intercambio(int, char, char, double); void desplegar(double, double);

Los prototipos de funciones permiten la verificacin de errores en los tipos de datos por el compilador. Y asegura la conversin de todos los argumentos enviados al tipo de datos declarado en la funcin llamada.
7

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Declaracin de Funciones y Parmetros

Llamada a una funcin: El llamado o invocacin a una funcin es simple, basta con utilizar su nombre, y entre parntesis enviar los argumentos necesarios. Por ejemplo:
encontrarMax(primernum, segundonum);

Si una variable es uno de los argumentos en una llamada a funcin, la funcin llamada recibe una copia del valor almacenado en la variable. En el ejemplo anterior, encontrarMax recibe una copia del valor de las variables primernum y segundonum pero no tiene conocimiento del nombre de estas variables. La funcin solo recibe los valores y debe almacenarlos, este mecanismo es por seguridad. 8

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Declaracin de Funciones y Parmetros

Definicin de una funcin: Una funcin se define cuando se escribe. Cada funcin es definida solo una vez y puede ser utilizada por cualquier otra funcin que la declare correctamente. Al igual que la funcin main, toda funcin en C++ consta de dos partes: el encabezado y el cuerpo de la funcin.
lnea de encabezado de funcin { declaraciones de constante y variable; cualquier otra instruccin de C++ }

El encabezado es siempre la primer lnea, contiene tipo de valor devuelto, su nombre, y los nombres, tipos y orden de datos de argumento
9

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Declaracin de Funciones y Parmetros

El encabezado de la funcin encontrarMax seria:

void encontrarMax(int x, int y) Sin ; ojo! Debe estar el tipo de dato y separarse con ,

Los nombres de argumento en el encabezado se conocen como parmetros formales, el parmetro x se usara para almacenar el primer valor transmitido y el parmetro y para el segundo.

El primer paso en la invocacin, es buscar los valores de primernum y segundonum, y envirselos a la funcin, en este momento se almacenan en los parmetros nombrados x e y.
10

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Declaracin de Funciones y Parmetros

Una vez listo el encabezado puede escribirse el cuerpo, este debe comenzar con una llave de apertura { al igual que la funcin main, y debe finalizar con una llave de cierre }
void encontrarMax (int x, int y) { //inicio de cuerpo de la funcion int numMax; /declaracion de variable if(x >= y) numMax=x; else numMax=y; cout<<\n El maximo de los dos numeros es <<numMax<<endl; } //fin de cuerpo y de la funcion
11

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Declaracin de Funciones y Parmetros

Colocacin de instrucciones: directivas del preprocesador prototipos de funcion int main() { constantes simblicas declaraciones de variables otras instrucciones ejecutables return valor }
12

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Declaracin de Funciones y Parmetros

Generalmente en el archivo fuente, primero se enlista MAIN, ya que es la funcin principal que dar una idea al lector del programa que hace el mismo antes de ver los detalles de cada funcin.

13

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Declaracin de Funciones y Parmetros

Cabos de FUNCION: Enfoque comn de programacin, terminar la funcin main y luego las dems funciones. Problema para pruebas intermedias, compilacin. Se puede hacer una funcin que acte como si fuera la correcta y que acepte los datos e imprima un mensaje en pantalla. Esta funcin FALSA se llama CABO. Funciones con listas de parmetros vacas: En su prototipo pueden llevar void o nada en el lugar de los argumentos. Argumentos por omisin: Estos se enlistan en el prototipo de la funcin, y son transmitidos a la funcin en forma automtica cuando los argumentos correspondientes son omitidos.
14

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Declaracin de Funciones y Parmetros

Ejemplo de argumentos por omisin: Si el prototipo de nuestra funcin fuera: void ejemplo (int, int = 5, double = 6.78);

Este prototipo proporciona valores por omisin para los dos ltimos argumentos. Por lo tanto las siguientes llamadas a funcin son validas:
ejemplo ( 7, 2, 9.3) // no utiliza valores por omisin ejemplo ( 7, 2) ejemplo (7) // igual que llamado ejemplo( 7, 2, 6.78) // igual que llamado ejemplo (7, 5, 6.78)
15

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba.

Unidad 1- Unidad 2 Unidad 3 REPASO

Ventre, Luis O.

16

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Operaciones Aritmticas

Precedencia del operador y asociatividad: Existen ciertas reglas para escribir expresiones que contengan mas de un operador aritmtico. 1-Nunca deben colocarse 2 operadores binarios uno seguido del otro 2-Los parntesis priorizan el clculo de la expresin. Esto permite alterar el orden. 3-Parntesis dentro de parntesis se evalan de adentro para afuera. 4-Nunca usar parntesis para indicar multiplicacin se usa *.

17

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Operaciones Aritmticas

Niveles de precedencia y asociatividad: Existen 3 niveles de precedencia, los cuales determinan el orden de resolucin de la expresin aritmtica. P1: Primero todas las negaciones. P2: Multiplicacin, divisin y modulo. Cuando hay mas de un operador de estos se resuelve de izquierda a derecha. Cual es el resultado de: 35/7%3*4 = ? P3: Adicin y sustraccin se calculan al ultimo. Al igual que con los p2 si hay mas de una adicin o sustraccin se resuelven de izquierda a derecha. Que resultado dar 6.0*6/4 = ?

18

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Operaciones de Asignacin

Las expresiones que usan la misma variable de ambos lados pueden escribirse usando los siguientes atajos de operadores de asignacin. += -= *= /= %= De esta forma la expresin: Precio *= tasa es equivalente a Precio = Precio * tasa

1 9

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Operaciones de Asignacin

Conteo: Una instruccin muy similar a la de acumulacin es la de conteo y tiene la siguiente forma: variable = variable + numeroFijo; Ejemplos de esto seria: i = i +1; n = n + 1; j = j + 2; Para los casos especiales en donde las variables se incrementan en 1, C++ brinda operadores unitarios. Operador de incremento ++
20

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Ingreso de datos al programa CIN

Los datos en programas que solo se van a ejecutar una vez puede incluirse en forma directa y fija en el programa. Pero cuando el objetivo es realizar un programa que cumpla con diferentes propsitos y pueda modificarse sin tener que ser reescrito. As como c++ proporciona el objeto cout para la salida de datos en pantalla, tambin proporciona el objeto CIN; que permite al usuario introducir un valor en la terminal. El valor ingresado se almacena de manera directa en una variable.

21

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Criterios de Seleccin

Expresiones mas usadas: EXPRESIONES RELACIONALES edad < operandos 40

operador relacional

Adems cada operando puede ser una variable o una constante; los operadores relaciones solo pueden ser:

2 2

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Criterios de Seleccin

Operadores Lgicos: Adems de usar expresiones relacionales simples, pueden crearse condiciones mas complejas usando los operadores lgicos AND y, OR o y NOT no. Cuando el operador AND &&, se usa con dos expresiones simples, la condicin es verdadera solo si ambas expresiones individuales son verdaderas por si mismas Ej: (voltaje > 48) && (miliamperes < 10) Precedencia de operadores relacionales es mayor. Se puede sacar ().

2 3

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. La instruccin IF ELSE

Instrucciones Compuestas: En las secciones de instruccin de if o de else, solo se permite una instruccin. En caso de ser necesario realizar mas de una instruccin, es posible utilizar una instruccin compuesta. Esta es una secuencia de instrucciones individuales contenidas entre llaves.

24

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Instruccin SWITCH

Esta instruccin proporciona una alternativa a la cadena if-else, para casos donde se compara el valor de una expresin de numero entero con un valor especfico. Su sintaxis:
switch (expresion) { //inicio de instruccin compuesta case valor_1: //termina en dos puntos instruccin1; instruccin2; break; case valor_2: instruccin; break; default: instruccinaa; } // fin de switch y de la instruccin compuesta

25

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Ciclos WHILE ingreso a la instruccin while

probar la expresin paso 1 regreso y revalo de la expresin Paso 3

falsa

salir de la instruccin while

ciclo

condicin verdadera != 0
Ejecucin de instruccin-es cuerpo - Paso 2

Ejs.
while (edad<40) edad++; ///////////////////////////////////// while (dato!=0) cout<<dato; 26

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Ciclos DO WHILE ingreso a la instruccin DO WHILE Ejecucin de instruccin dsps de la palabra do regreso y ejecuto la instruccin

ciclo evaluar la expresin

falsa
salir de la instruccin DO WHILE

condicin verdadera != 0
27

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Ciclos FOR

Como hemos visto la construccin de ciclos en C++ puede realizarse de varias formas. Una de estas es utilizando una instruccin FOR, cuya traduccin puede interpretarse como para o para cada. En muchas situaciones, en particular aquellas que se necesita de una cuenta fija, o sea se conoce en un comienzo la cantidad de iteraciones a realizar es mas fcil el formato de la instruccin FOR. La sintaxis de la instruccin FOR tiene la siguiente forma: for (lista de inicializacion; expresion; lista de alteracion) instruccin;

28

Ctedra de Informtica Dpto. Computacin Universidad Nacional de Crdoba. Ciclos FOR

Como se menciono anteriormente, las expresiones dentro del parntesis son opcionales. La instruccin FOR solo asegura que: Todas las expresiones en la lista de inicializacin se ejecutaran una vez, antes de la evaluacin de la expresin. Que todas las expresiones en la lista de alteracin se ejecutan al final del ciclo antes que se vuelva a verificar la expresin probada.

29

You might also like