Академический Документы
Профессиональный Документы
Культура Документы
TUTORA:
TEMAS DE LA ACTIVIDAD
FUNCIONES & APUNTADORES
1.4 FUNCIONES
1.4.1 PROTOTIPOS
1.4.1.1 La Definición De Una Función
1.4.1.2 Paso De Parámetros Por Valor
1.4.1.3 Paso De Parámetros Por Referencia
1.4.2 VARIABLES LOCALES Y GLOBALES
1.4.3 RECURSIVIDAD
1.5 PUNTEROS
9. ¿A que tipo de variables se les llama locales y a que tipo se les llama
globales?, dé un ejemplo de la utilización de cada una de ellas.
11. ¿Una función recursiva necesita de una condición para terminar el proceso
en el momento específico?, ¿Por qué?
12. ¿Qué significa para usted apuntador?, busque la definición y haga una
comparación entre su definición y la definición encontrada.
13. Escriba un ejemplo del uso del operador * y del operador de dirección (&)
Acompañamiento interactivo
Enviar vía e-mail, todas las inquietudes que se tengan o comunicarse conmigo vía
celular.
1. FUNCIONES
Una de las herramientas fundamentales a lo largo de la historia de la
programación, ha sido la inclusión de funciones, que se comportan como
miniprogramas dentro de otro programa, permitiendo la reducción de espacio, la
agrupación de muchas sentencias repetitivas bajo un mismos nombre, permiten
que los programas sean legibles, estructurados y comprensibles, logrando con
esto poder actualizar y/o corregir los programas de una manera rápida, sin tener
que afectar la integridad de todo el programa. Podemos definir a las funciones
como:
Una función es una sección de código independiente, con nombre, que ejecuta
una tarea específica y opcionalmente devuelve un valor al programa que la
llamó,
Una función tiene un único nombre, al utilizar éste nombre en otras partes del
programa se pueden ejecutar los enunciados contenidos en la función. A esto
se le conoce como llamar o llamado a la función, e inclusive se puede llamar
desde otras funciones
Una tarea es un trabajo discreto que un programa debe ejecutar como parte de
su desempeño general, por ejemplo mandar una línea de texto a centrar,
realizar ordenamientos, realizar cálculos matemáticos.
Las funciones están concebidas para devolver valores, por defecto el valor es
int, de querer que la función no retorne valor, se le antecede al instrucción
“void” o puede tomar cualquier valor como si fuese una variable
Los parámetros de una función van entre paréntesis y representa los valores
de salida, y podemos afirmar que cada parámetro es una variable, en caso de
no realizar paso de parámetros, simplemente se escribe el nombre de la
función y los paréntesis “llamado()”
3. PROTOTIPOS
Para utilizar una función en un programa se requiere en primer lugar declararla y
después definirla. La declaración de la función le indica al compilador el nombre, el
tipo de dato devuelto por la función y los parámetros pasados a la función. A la
declaración de una función se le llama también el prototipo.
Un prototipo es una declaración de una función. Consistente simplemente en el
encabezado de la función, terminado con punto y coma (;)lo que hace es avisar al
compilador, como se va a llamar la función y si recibe y devuelve información.
La estructura de un prototipo es: <tipo> func (<lista de declaración de
parámetros>);
Ejemplo:
int Mayor (int a, int b);// es un prototipo de función que devuelve un entero y recibe
dos parámetros enteros aunque C++ permite realizar el prototipo de la siguiente
manera int Mayor(int,int); sin necesidad de escribir el nombre de las variables.
Entonces La estructura de un programa en C++ quedaría así:
[directivas del pre-procesador: includes y defines]
[declaración de variables y constantes globales]
[definiciones de clases]
[prototipos de funciones]
[declaraciones de clases]
[definiciones de funciones]//definidas en los prototipos
función main ()
Ejemplo
# include <stdio.h>
main ()
{
int i1,i2;
i1=5; i2=105;
proc(p1,p2)
int p1;
int *p2;
{
Es quien regresa un y solo un dato a la parte del programa que la este llamando o
invocando, sin embargo es de considerar que return puede regresar un dato, una
variable o una expresión algebraica (no ecuación o formula) como lo muestran los
siguientes ejemplos;
a) Return 3.1416;
b) Return area;
#include <iostream.h>
#include <conio.h>
#include “math.h”
// Función principal
int main()
{
int x, y,r;
float r2;
cout << "Introduzca dos numeros" << endl;
cin >> x
cin >> y;
divide(x, y); // llama a la función "Divide"
divide(y, x);
r = multiplica(x, y);
cout << "La multiplicación de X y Y es = a: "<< r << endl;
r2=raiz(x);
int raiz;
getch() ;
return 0;
}
// Función divide
void divide (int valorx, int valory)
{
int respuesta; // variable local
respuesta= (valorx / valory;);
cout << "La división de los dos valores es: " << resultado << endl;
}
// Función multiplica
int multiplica(int valorx, int valory)
{
int mult; // variable local
mult = valor1 * valor2;
return mult;// retorna el valor del proceso
}
Ejemplo:
//Paso de parámetros por referencia //
#include <stdio.h>
#include <iostream.h>
void intercambio(int *, int *); // prototipo de la función
main()
{
int a = 20, b = 30;
intercambio(&a, &b); // a y b son pasados por referencia
cout<<"a es "<<a;
cout <<" b es " <<b;
}
void intercambio(int *x, int *y)
{
int z = *x; // z toma el contenido de la dirección x
*x = *y; // x toma el contenido de y
*y = z; // contenido de y = z
}
9. ¿A que tipo de variables se les llama locales y a que tipo se les llama
globales?, dé un ejemplo de la utilización de cada una de ellas.
- Variable Local: Es un tipo de variables a la cual se les llama locales ya que sólo
son útiles dentro del cuerpo de la función. Los parámetros utilizados en una
función se consideran como variables de tipo local y se utilizan exactamente de la
misma manera, como lo demuestra en el siguiente código:
- Variable Global: A las variables que declaramos fuera del cuerpo de cualquier
función se dice que tienen alcance global y por lo tanto estas funciones están
disponibles para cualquier función del programa, incluye main (). Las variables
globales no cambian el valor de las globales, sin embargo una variable local con el
mismo nombre que una variable global oculta a la variable global. Los conceptos
discutidos hasta este momento quedan demostrados en el siguiente programa:
#include <iostream.h>
int global; // variable global
void funcion1 (int parámetro);
int main ()
{
int local1, i, global=30;
cout << local1 << endl << endl;
cout << "Introduzca un numero:" << endl;
cin >> local1;
cout << "Su numero es: " << local1 << endl;
cout << endl;
for (i=0; i<5; i++)
{
int local2; // válida solo dentro del bucle
local2 = i;
cout << local1 << "\t";
cout << local2 << endl;
}
funcion1(local1);
cout << "La variable \"global\" local vale: "
<< global << endl;
cout << "La variable \"global\" global vale: "
<< ::global << endl;
global=45;
cout << "La variable \"global\" local ahora vale: "
<< global << endl;
cout << "La variable \"global\" global vale: "
<< ::global << endl;
//cout << local2 << endl;
return 0;
}
void funcion1(int parametro)
{
global = global + parámetro;
}
Método iterativo
long factorial(int n){
long resultado=1;
for(int i=1; i<=n; i++){
resultado*=i;
}
return resultado;
}
Método recursivo
long factorial(int n){
if(n==0) return 1;
return (n*factorial(n-1));
}
11. ¿Una función recursiva necesita de una condición para terminar el proceso en
el momento específico?, ¿Por qué?
Si; ya que si no existiera la función continuaría haciendo el proceso
indefinidamente.
12. ¿Qué significa para usted apuntador?, busque la definición y haga una
comparación entre su definición y la definición encontrada.
Podremos deducir por el nombre que un apuntador, es algo que apunta a algún
lado, en el caso de la programación de computadoras, los punteros apuntan a
direcciones de memoria, Los punteros son variables las cuales guardan
direcciones de memoria RAM. En memoria un puntero ocupa 2 bytes.
Para este caso tomaremos una dirección no real (1200), la verdadera dirección la
asigna el sistema operativo, a través del compilador. En memoria, la variable P
almacena un valor de 1200. La variable X se encuentra en la dirección de memoria
1200.La abstracción que se debe hacer es la de que P apunta o señala a X. Para
definir un puntero se inicia definiendo el tipo (int, flota, char…), luego se antepone
el * la nombre de la variable ejemplo int *X.
13. Escriba un ejemplo del uso del operador * y del operador de dirección (&)
Ejemplo:
1 int *p_entero;
2 int entero1, entero2;
3 entero1 = 2;
4 entero2 = 5;
5 p_entero = &entero1;
6 entero1 = *p_entero + entero2;
Del mismo modo podemos asignar un valor a la variable a la que apunta el
puntero, de la forma:
1 int *p_entero;
2 int entero1, entero2;
3 entero1 = 2;
4 entero2 = 5;
5 p_entero = &entero1;
6 *p_entero = entero1 + entero2;
Declaraciones C C++
No permitido. Mensaje de error: "Objeto de
Objeto de tipo
sizeof desconocido."
void
Ej:
El compilador no esta en condiciones de determinar el monto de
void x;
memoria que requiere el objeto.
Retorno de un
función Significa que la función no retorna ningún valor
Ej:
void func () { ('tipo pseudodevuelto').
......................
Puntero a objeto de tipo
Puntero a void Un puntero a void es tratado
desconocido.
Ej: como un puntero a char.
Requiere conversion explicita a
void* p; Conversion implicita.
otro tipo antes de ser utilizado.
Ej:
#include <iostream>
using namespace std;
class Vector {
public: int x, y;
bool operator== (Vector& v) {
return ((v.x == x) && (v.y == y))? true: false;
}
bool operator!= (Vector& v) {
return !(*this == v);
}
bool operator> (Vector& v) {
return ((x * x + y * y) > (v.x * v.x + v.y * v.y))? true: false;
}
bool operator< (Vector& v) {
return ((x * x + y * y) < (v.x * v.x + v.y * v.y))? true: false;
}
bool operator>= (Vector& v) {
return ((x * x + y * y) >= (v.x * v.x + v.y * v.y))? true: false;
}
bool operator<= (Vector& v) {
return ((x * x + y * y) <= (v.x * v.x + v.y * v.y))? true: false;
}
};
16. Realizar el prototipo y la función de un proceso que tome por parámetros como
valor dos números a y b, obtenga la potencia c=ab y retorne c. En C/C++.
- LIBROS
- SITIOS WEB
1. http://www.zator.com/Cpp/E_Ce.htm
2. http://es.geocities.com/jorge_hefty/index.html
3.http://www.sc.ehu.es/sbweb/fisica/cursoJava/numerico/recursivo/intro_recursivas
.htm