Sie sind auf Seite 1von 8

Funciones Al realizar programas, a medida que pretendamos resolver problemas ms complejos cada vez, el tamao de nuestro cdigo empieza

a desbordarnos. Para mitigar este problema apareci la programacin modular. En ella el programa se divide en distintos mdulos, de manera que cada mdulo contiene cdigo de tamao ms manejable. Cada mdulo realiza una funcin muy concreta y se puede programar de forma independiente. En definitiva la programacin modular implementa el paradigma divide y vencers, tan importante en la programacin. El programa se descompone en esos mdulos, lo que permite concentrarse en problemas pequeos para resolver los problemas grandes. Cada mdulo tiene que ser probado y verificado para cualquier caso. De eso modo aseguramos su fiabilidad y nos concentramos en otro mdulo. As una aplicacin se puede entender (en la programacin modular) como un conjunto de mdulos que se comunican entre s. Cuando este paradigma se domina, se programan mdulos utilizables en ms de un programa, a esto se le llama reutilizar el cdigo. En C++ los mdulos se programan utilizando funciones. las funciones estn compuestas de cdigo fuente que responde a una finalidad. Este cdigo generalmente devuelve un determinado valor o bien realiza algn tipo de accin aunque no devuelva ningn valor concreto (a las funciones que no devuelven ningn valor se las suele llamar procedimientos). Las funciones son invocadas desde el cdigo utilizando su nombre despus del cual se colocan parntesis y dentro de los parntesis los datos que la funcin necesita para su realizacin. Por ejemplo: printf(factorial(8)); Este cdigo invoca a una funcin llamada factorial enviando a la misma el valor 8, por lo que se supone que aparecer en la pantalla el factorial de 8. Una instruccin que contiene el nombre de la funcin hace que el flujo del programa cambie a la funcin y ejecute su contenido. C++ incorpora una serie de funciones estndar agrupadas en libreras. Por ejemplo la funcin system que sirve para ejecutar comandos del sistema operativo est contenida en la librera (procedente en realidad del lenguaje C stdlib.h) Uso de las funciones Todo programa C/C++ se basa en una funcin llamada main que contiene el cdigo que se ejecuta en primer lugar en el programa. Dentro de ese main habr llamadas (invocaciones) a funciones ya creadas, bien por el propio programador o bien que forman parte de las libreras estndar de C++ o de C (una biblioteca o librera no es ms que una coleccin de funciones). As por ejemplo:

int main(){ printf(pow(3,4)); } Ese cdigo utiliza la funcin pow que permite elevar un nmero a un exponente (en el ejemplo 3 elevado 4). Para poder utilizarlas las funciones tienen que estar definidas en el cdigo del programa o en un archivo externo que uniremos a nuestro cdigo durante la fase de enlazado (link) del ejecutable. Si estn en un archivo externo (como ocurre en el ejemplo) habr que incluir la cabecera de ese archivo para que al crear el ejecutable de nuestro programa se enlacen los archivos compilados de las funciones externas que utilice el programa. Es decir hay que indicar en qu archivos se definen esas funciones. En el ejemplo, habra que incluir al principio estas lneas: #include<stdio.h>// la funcin printf esta contenida en la librera stdio.h #include <math.h>// la funcin pow pertenece a la librera math.h Crear funciones Si creamos funciones, stas deben definirse en el cdigo. Los pasos para definir una funcin son: 1. Crear una lnea en la que se indica el nombre de la funcin, el tipo de datos que devuelve dicha funcin y los parmetros que acepta. A esto se le llama la cabecera de la funcin. Tras la cabecera se abre la llave que permite ver el cdigo propio de la funcin. 2. Indicar las variables locales a la funcin. Aqu se declaran las variables que la funcin utiliza. Estas variables slo podrn ser utilizadas desde la propia funcin. 3. Indicar las instrucciones de la funcin. 4. Si es preciso indicar el valor que devuelve mediante la sentencia return. Si la funcin no devuelve nada, no habr return y obligatoriamente en la cabecera el tipo de datos de la funcin ser void. Sintaxis: tipo NombreDeLaFuncin(parmetros){ declaracin de variables de la funcin instrucciones o sentencias } 1. tipo. Sirve para elegir el tipo de datos que devuelve la funcin. Toda funcin puede obtener un resultado. Eso se realiza mediante la instruccin return. El tipo puede ser: int, char, long, float, double,.... y tambin void. ste ltimo se utiliza si la funcin no devuelve ningn valor. 2. NombreDeLafuncin. El identificador de la funcin. Debe cumplir las reglas ya comentadas en temas anteriores correspondientes al nombre de los identificadores.

3. Parmetros. Su uso es opcional, hay funciones sin parmetros. Los parmetros son una serie de valores que la funcin puede requerir para poder ejecutar su trabajo. En realidad es una lista de variables y los tipos de las mismas. Estructuras estticas En programacin se llaman estructuras estticas a datos compuestos de datos simples (enteros, reales, caracteres,...) que se manejan como si fueran un nico dato y que ocupan un espacio concreto en memoria que no vara durante la ejecucin del programa. Las estructuras estticas de C++ son: 1. Arrays. Tambin llamadas listas estticas, matrices y arreglos (aunque quiz lo ms apropiado es no traducir la palabra array). Son una coleccin de datos del mismo tipo. 2. Cadenas de caracteres. Tambin llamadas Strings. Se trata de un conjunto de caracteres que es tratado como un texto completo. 3. Punteros. Permiten definir variables que contienen posiciones de memoria; son variables que se utilizan para apuntar a otras variables, se las llama tambin apuntadores. Arrays (Vectores o Arreglos) Imaginemos que deseamos leer las notas de una clase de 25 alumnos. Desearemos por tanto almacenarlas y para ello, utilizando variables clsicas no nos quedar ms remedio que declarar 25 variables. Eso es tremendamente pesado de programar. Manejar las notas significara manejar continuamente 25 variables. Este tipo de problemas es el que se encargan de solucionar los arrays. Los arrays son una coleccin de datos del mismo tipo al que se le pone un nombre (por ejemplo nota). Para acceder a un dato de la coleccin hay que utilizar su ndice (por ejemplo nota[4] leer la cuarta nota). Tras leer las 25 notas, el resultado se almacena en la variable nota y se podr acceder a cada valor individual usando nota[i], donde i es el elemento al que queremos acceder. Hay que tener en cuenta que en los arrays el primer elemento es el 0; es decir nota[4] en realidad es el quinto elemento. En definitiva un array es una coleccin de elementos que se disponen en memoria consecutivamente y que poseen el mismo tipo y el mismo nombre y que permite acceder a cada elemento individual de la coleccin a travs de un nmero entero que se le llama ndice. Declaracin de arrays

Una array ocupa un determinado espacio fijo en memoria. Para que el ordenador asigne la cantidad exacta de memoria que necesita el array, hay que declararle. En la declaracin se indica el tipo de datos que contendr el array y la cantidad de elementos. Por ejemplo: int a[7]; Esa instruccin declara un array llamado a de siete elementos. Lo que significa que en memoria se reserva el espacio de siete enteros (normalmente 2 o 4 bytes por cada entero). Los elementos del array irn de a[0] a a[6] (hay que recordar que en C el primer elemento de un array es el cero). Hay que tener en cuenta que los arrays contienen una serie finita de elementos, es decir, de antemano debemos conocer el tamao que tendr el array. El valor inicial de los elementos del array ser indeterminado (depender de lo que contenga la memoria que se ha asignado al array, ese valor no tiene ningn sentido). Es posible declarar varios arrays a la vez haciendo: int a[100], b[25]; Tambin es vlida esta declaracin: int x=10; int a[x]; //Declara un array de 10 enteros Utilizacin de arrays Asignacin de valores: El acceso a cada uno de los valores se realiza utilizando un ndice que permite indicar qu elemento del array estamos utilizando. Por ejemplo: Int a[10];//quiere decir que el array tiene 10 posiciones que se recorren de 0 a 9. a[2]=17; printf(a[2]); a[2] es el tercer elemento del array, se le asigna el valor 17 y ese valor se muestra luego en la pantalla. Para acceder a todos los datos de un array se suele utilizar un bucle (normalmente de tipo for). Por ejemplo en el caso de tener que leer 21 notas, la comodidad de los arrays reside en que sin arrays necesitamos 21 instrucciones, con los arrays basta un bucle. Ejemplo (lectura de 21 notas): /* Array de 21 elementos */ int nota[21]; /* Contador para recorrer el array */ int i; for(i=0;i<21;i++) { printf(Escriba la nota %d:,i); scanf(%d,&nota[i]); } Al final del bucle anterior, las notas estarn rellenadas con los valores que el usuario escriba por teclado. Por ejemplo con estos valores:

Es importante destacar, que en lenguaje C la posicin 0 tambin cuenta. En C/C++ hay que tener un cuidado especial con los ndices, por ejemplo este cdigo es errneo: int a[4]; a[4]=13; Quiere decir que no hay elemento a[4]; es decir, el vector empieza en a[0] y su ultimo elemento es a[3] por lo que ese cdigo no tiene sentido. Sin embargo ningn compilador C++ nos advertir del fallo. Lo que ocurrir es que se almacenar el nmero 13 en la posicin del que sera el quinto elemento del array. Sin embargo al haber reservado slo espacio para cuatro elementos, esto significar que invadiremos el espacio de la memoria contiguo a nuestro array. Es un error grave ya que esta instruccin podra modificar datos de otras variables generando errores muy difciles de controlar. Una buena prctica de programacin consiste en utilizar constantes o variables fijas en lugar de nmeros para indicar el tamao del array: int TAMANIO=20; int nota[TAMANIO]; /* Contador para recorrer el array */ int i; // ciclo para llenar cada posicin del vector for(i=0;i<TAMANIO;i++) {// recorre desde i=0 hasta i = 19 printf(Escriba la nota %d:,i); scanf(%d,&nota[i]);// lee una nota en la posicin i del array nota } Para mostrar los datos de un array, tambin debemos hacerlo posicin a posicin, igual como lo llenamos. Ejemplo: // Ciclo para mostrar los elementos del vector for(i=0;i<TAMANIO;i++) {// recorre desde i=0 hasta i = 19 printf(\nLa nota %d es: ,i); printf(%d,nota[i]);// muestra la nota que esta en la posicin i del array nota } Cadena de Caracteres Las cadenas de caracteres son los textos formados por varios caracteres. En C/C++ las cadenas (o strings) son arrays de caracteres, pero que tienen como particularidad que su ltimo elemento es el carcter con cdigo cero (es decir \0). En sentido estricto una cadena de C++ es un puntero al primer carcter de un array de caracteres que seala al primer carcter. Slo que esa lista de caracteres finaliza en el cdigo 0. Declaracin de cadenas

Las cadenas de caracteres no son exactamente arrays de caracteres (es importante tener en cuenta que las cadenas terminan con el carcter nulo). char cadena[7];// cadena con 7 caracteres char cadena[80]; //Lo cual hace que se reserven en memoria 80 caracteres para esa variable. Para leer una cadena se debe hacer de la siguiente manera: printf(Introduzca una frase); scanf(%s,&cadena); Con %s se indica, que se esta leyendo una secuencia de caracteres, es decir, una cadena. Es mas til sustituir el scanf por gets (es una funcin nica y exclusivamente para leer cadenas de caracteres no podemos leer con gets otro tipo de datos que no sea cadena ), ya que el gets lee la cadena completa cuando incluye espacios, Ejemplo: Hola mundo. Si utilizamos el scanf en este caso, solo nos reconoce como contenido de cadena la palabra Hola. Uso del gets: printf(Introduzca una frase); gets(cadena); Mostrar Cadena printf(La cadena es: %s,cadena); Una forma de determinar el fin de la cadena, cuando se muestra carcter a carcter, es estableciendo como condicin de parada \0. Ejemplo: char cadena[7];// cadena con 7 caracteres // Ciclo para mostrar los elementos de una cadena uno por uno for(i=0;cadena[i]!=\0;i++){//recorre desde i=0 mientras cadena no haya llegado al fin printf%c , cadena[i]); } COSAS QUE HAY QUE TENER EN CUENTA AL PROGRAMAR EN C/C++ Secuencias de escape En el caso de los caracteres, hay que tener en cuenta que hay una serie de caracteres que son especiales. Por ejemplo como almacenamos en una variable char el smbolo de la comilla simple, si la propia comilla simple sirve para delimitar, es decir: char a=;//Error Eso no se puede hacer ya que el compilador entiende que hay una mala delimitacin de caracteres. Para resolver este problema y otros se usan los caracteres de escape, que

representan caracteres especiales. Todos comienzan con el signo \ (backslash) seguido de una letra minscula, son:

mbito de las variables Toda variable tiene un mbito. Esto es la parte del cdigo en la que una variable se puede utilizar. De hecho las variables tienen un ciclo de vida: 1. En la declaracin se reserva el espacio necesario en memoria para que se puedan comenzar a utilizar (digamos que se avisa de su futura existencia). 2. Se le asigna su primer valor (la variable nace). 3. Se la utiliza en diversas sentencias (no se debe leer su contenido sin haberla asignado ese primer valor). 4. Cuando finaliza el bloque en el que fue declarada, la variable muere. Es decir, se libera el espacio que ocupa esa variable en memoria. No se la podr volver a utilizar. Operador de asignacin Ya se ha comentado que el signo = sirve para asignar valores. Existen varias formas abreviadas de asignacin. Esto sirve como abreviaturas para escribir cdigo. As la expresin: x=x+10; Se puede escribir como: x+=10; Se permiten estas abreviaturas:

Ejemplos:

X=X +10 X=X -10 X=X *10 X=X /10 X=X %10 Operador ?

X+=10 X-=10 X*=10 X/=10 X%=10

Permite escribir expresiones condicionales. Su uso es el siguiente: Expresin_a_valorar?Si_verdadera:Si_falsa Ejemplo: x= (y>5?A:B); Significa que si la variable y es mayor de 5, entonces a x se le asigna el carcter A, sino se le asignar el carcter B. Otro ejemplo: int nota; scanf(%d,&nota); printf(nota>=5?"Aprobado":"Reprobado"); En este ejemplo si la nota leda es superior a 5 se muestra en pantalla Aprobado y si no se muestra Reprobado Operador sizeof Este operador sirve para devolver el tamao en bytes que ocupa en memoria una determinada variable. Operadores especiales 1. El operador . (punto). Este operador permite hacer referencia a campos de un registro o estructura. Un registro es una estructura de datos avanzada que permite agrupar datos de diferente tipo. 2. El operador flecha -> que permite acceder a un campo de registro cuando es un puntero el que seala a dicho registro. 3. Los corchetes [], que sirven para acceder a un elemento de un array(arreglo o vector) o de una cadena de caracteres. Un array es una estructura de datos que agrupa datos del mismo tipo.

Das könnte Ihnen auch gefallen