Está en la página 1de 8

Universidad Autnoma del Carmen

Dependencia rea Ciencias de la Informacin


Programacin 1

Investigacin

Alumno: Porfirio Valdemar Ortega Torcuato

Profesor: Patricia Zavaleta

Cd. del Carmen, Campeche; Noviembre de 2012

Funciones Desde un punto de vista prctico, podemos decir que una funcin es una parte de un programa (subrutina) con un nombre, que puede ser invocada (llamada a ejecucin) desde otras partes tantas veces como se desee. Un bloque de cdigo que puede ser ejecutado como una unidad funcional. Opcionalmente puede recibir valores; se ejecuta y puede devolver un valor. Desde el punto de vista de la organizacin, podemos decir que una funcin es algo que permite un cierto orden en una maraa de algoritmos. Como resumen de lo anterior podemos concluir que el uso de funciones se justifica en dos palabras: organizacin y reutilizacin del cdigo. Desde este ltimo punto de vista (reutilizacin), puede decirse que son un primer paso de la programacin genrica, ya que representan un algoritmo parametrizado. Una vez expuesta la definicin, sealemos que las funciones son la parte central de la programacin C++. Algunos lenguajes, como Pascal, distinguen entre procedimientos ("Procedures") y funciones. En C++ las funciones desempean ambos papeles, aunque en cierto modo, los ficheros C++ desempean algunas funcionalidades de lo que, en otros lenguajes como Modula-2, se denominan mdulos. Otra diferencia substancial es que C++ no permite el anidamiento de funciones, es decir, definir funciones dentro de otras. En C++ todas las funciones se definen a nivel de fichero, con lo que tienen mbito global al fichero.
Nota: existe una excepcin a esta regla; se refiere a las funciones miembro de las clases, que pueden ser declaradas y definidas dentro de las propias clases. Aunque las clases no son por supuesto funciones en el sentido estricto, si representan cierta compartimentacin de datos y procedimientos (un tipo de "mdulos"). Por ejemplo, en C++ es vlido el siguiente cdigo: int i; class C { // definicin de la clase public: char* func1(void) { // declaracin-definicin de func return p; } char* func2(void); // declaracin de func2 char * p; }; // termina definicin de la clase ... C::char* func2(void) { // definicin de func2 ... }

Funciones dentro de clases En la jerga de la programacin orientada a objetos, las funciones dentro de las clases se denominan funciones-miembro o mtodos, y las variables dentro de clases, variablesmiembro o propiedades. El sentido es el mismo que en la programacin tradicional (la nomenclatura es ms una cuestin de gustos), si bien referirnos a "propiedades" y "mtodos" supone estar utilizando la programacin orientada a objetos y que nos referimos a miembros de una clase. En C++ esta aclaracin puede ser importante, porque es un lenguaje que podramos llamar "hbrido"; en ciertas partes puede utilizarse con tcnicas de programacin tradicional, y en otras con tcnicas de POO. Una funcin de inicio Cada programa C++ debe tener una sola funcin externa denominada main (), principal que desde la ptica del programador define el punto de entrada al programa. Las funciones se declaran en cabeceras (estndar o especficas de usuario) o dentro de los ficheros fuente. Estas declaraciones son denominadas prototipos. En ocasiones la declaracin y definicin se realiza en el mismo punto (como ocurre con las variables), aunque es normal colocar al principio del fuente los "prototipos" de las funciones que sern utilizadas en su interior, y las definiciones en cualquier otro sitio (generalmente al final). En el caso del ejemplo anterior, la declaracin y definicin de func1 se ha realizado en el mismo punto, mientras que la declaracin de func2 se realiza dentro del cuerpo de la clase y la definicin en el exterior de esta.

La forma general del prototipo de una funcin es:


valor-devuelto nombre-funcin (lista-de-argumentos);

La forma general de la definicin es:


valor-devuelto nombre-funcin (lista-de-argumentos) { sentencias; // "cuerpo" de la funcin }

Ejemplo:
float cuadrado (float x); // prototipo float cuadrado (float x) { return x*x; } // definicin

La comunicacin entre el programa y las funciones que lo componen se realiza mediante los argumentos de llamada, los valores devueltos y las variables globales y externas.

El operador de invocacin a funcin En ocasiones, en especial al tratar la sobrecarga de operadores, es conveniente considerar una invocacin del tipo
func(lista-de-argumentos);

como un operador binario ; el denominado operador de invocacin a funcin ( ) que se aplica entre el primer argumento func y el segundo, lista-de-argumentos. En este sentido la invocacin anterior sera equivalente a:
func()lista-de-argumentos.

Inicio.

Las funciones miembro de clases (mtodos) deben ser declaradas siempre dentro del cuerpo de la clase, aunque la definicin puede estar fuera . Las funciones han sido definidas como los verbos de los lenguajes de programacin (indican alguna accin). Algunos autores mantienen que la funcin es una unidad lgica de programacin, y que su extensin debe limitarse al cdigo que pueda incluirse en una pantalla, con objeto de que pueda tenerse una visin completa de la misma de un solo vistazo y sea ms fcil de entender el funcionamiento de cada unidad lgica del programa. Los mdulos de otros lenguajes pueden ser fcilmente mimetizados en C++ definiendo clases en las que todos sus miembros sean estticos

Arreglos Ya conocimos algunos tipos bsicos como por ejemplo los tipos char, int y float. El lenguaje C++ permite, adems, construir estructuras ms complejas a partir de estos tipos bsicos. Una de las construcciones que podemos definir son los arreglos. Arreglo: Coleccin ordenada de elementos de un mismo tipo. Ordenada significa que cada elemento tiene una ubicacin determinada dentro del arreglo y debemos conocerla para accederlo. Sintaxis: Definicin de un arreglo: <tipo> nombre_variable[longitud]; Con esto diremos que nombre_variable es un arreglo de longitud elementos del tipo <tipo>. Cabe destacar que longitud debe ser cualquier expresin entera constante mayor que cero. Asignacin de un arreglo: nombre_variable[ndice] = expresin del tipo <tipo> Esta instruccin asigna el valor asociado de la expresin a la posicin ndice del arreglo nombre_variable. El ndice debe ser una expresin del tipo entero en el rango [0, longitud-1]. Cabe destacar que C++ no chequea que el valor de la expresin sea menor a longitud, simplemente asigna el valor a esa posicin de memoria como si formara parte del arreglo, pisando, de esta manera, otros datos que no forman parte del mismo, con lo que finalmente el programa no funciona correctamente. Acceso al contenido de un arreglo: nombre_variable[ndice] es valor del tipo <tipo> que puede ser asignado a una variable, o pasado como parmetro, imprimirlo, etc. Aqu tambin vale la aclaracin de que el ndice debe estar dentro del rango de definicin del arreglo, C++ no chequear que esto sea cierto y devolver lo contenido en la posicin de memoria correspondiente a un arreglo de mayor longitud, el dato obtenido de esta manera es basura.

Ejemplo: int a[5]; // Definicin de un arreglo de 5 posiciones void main() { int i; // Pedimos el ingreso de 5 nmeros for(i=0; i<4; i++) //No olvidar que los arreglos van de 0 a longitud-1 { cout << Ingrese el elemento Nro: << i <<endl; cin >> a[i]; } // Los imprimimos imprimir(a,5); } void imprimir(int b[], int tamano) { int i; for(i=0; i<tamano; i++) { cout << Nro: << i << <<b[i]<<endl; } } Notar que el parmetro b de la funcin imprimir es un arreglo, pero no se indica la longitud del mismo. Esto no es necesario ya que solo especificamos que recibiremos un arreglo sin importar su longitud (en este caso particular sulongitud viene indicada en tamano). De esta manera la funcin imprimir funciona para arreglos de cualquier longitud.

Ejercicio 1: Digite, compile y ejecute el siguiente programa.

#include <stdio.h> #include <stdlib.h> main(){ int a,b=0; int c[10]={1,2,3,4,5,6,7,8,9,0}; for (a=0;a<10;++a) if ((c[a]%2)==0) b+=c[a]; printf("%d\n",b); system(pause); return 0; }
Qu hace el programa? Realiza la suma de los pares de los nmeros del 0 a 10. Cul es la salida? 20

Ejercicio 2: Digite, compile y ejecute el siguiente programa.

#include <stdio.h> #include <stdlib.h> main(){ int a,b=0; int c[10]={1,2,3,4,5,6,7,8,9,0}; for (a=0;a<10;++a) if ((a%2)==0)b+=c[a]; printf("%d\n",b); system(pause); return 0; } Qu hace el programa? Suma los nmeros impares

Cul es la salida? 25

En qu se diferencia del ejemplo anterior? Uno tiene un algoritmo para sumar los nmeros pares, el otro usa el mismo arreglo pero con una variante para sumar impares.