Sie sind auf Seite 1von 21

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA

ACADEMIA DE COMPUTACION

PROGRAMACION ORIENTADA A OBJETOS.

PRACTICA 4.
FUNCIONES (SEGUNDA PARTE)

PROFESOR:
MAD. SILVIANO ESCAMILLA GARCÍA
POO

ÍNDICE

FUNCIONES....................................................................................................................................3
Consideraciones teóricas

EJEMPLOS DE FUNCIONES...................................................................................................7
EJEMPLOS DE FUNCIONES RECURSIVAS.......................................................................11

4
POO

INTRODUCCIÓN A LAS FUNCIONES:

Una Función es una parte del código independiente del programa que se llama
dentro de él, como dijimos anteriormente C no tiene procedimientos solamente
funciones los procedimientos los simula con funciones que no devuelven nada
(Void) la estructura de la funciones en C y es los elementos mas fuertes del
lenguaje.

El desarrollo de una función es:

Tipo_de_valor_retornonombreFunción( lista de argumentos )

declaracion de variables locales a la función

codigo ejecutable

return ( exprecion ) // optativo

Las variables de nuestras funciones son locales es decir que solamente viven
cuando se esta ejecutando la llamada a la función; el código ejecutable son las
sentencias que el programa utiliza para funcionar y el valor de retorno es el
resultado que va a devolver la misma función ( si se dice que una función retorna
un entero en el return se debe poner un entero como valor de devolución

4
POO

Ej: esta función de ejemplo cuenta cuantos caracteres existen dentro de una
variable que se le pase como parámetro.

Int cuentacaracteres( char cadena[] )

int cont =0; // defino una variable local para la función

for (cont=0; cadena[cont]!= ‘\0’; cont++)

;;

return (cont);

Analicemos la función expuesta primero decimos que la función devuelve un int


entero y el nombre de la función es cuentacaracteres y como argumento se le
pasa una cadena.

4
POO

Dentro de la función se define una variable local que solamente funciona para esta
función y es de tipo entero después recorro la cadena pasada como parámetro
buscando el fin de línea (‘\0’) cuando lo encuentro retorno el valor de cont que
tiene la cantidad de caracteres que contiene la cadena. ;)

Y dentro de nuestro programa se debe definir las funciones de esta manera.

Main()

{ ....

....

valor_de_retorno nombrefuncion( lista de argumentos)

variables locales

codigo ejecutable ...

...

...

return valor_de_retorno

};

4
POO

PARA TODODOS LOS PROGRAMAS.

1. Cambiar en formato de entra y salida de “C” a “C++” de todos los programas(cout, cin)así
como librerías.
2. Haga correr el programa
3. Imprima pantalla de los resultados obtenidos
4. Realice un análisis del programa, de cada función y lo que realiza el programa.
5. Qué tipo de errores encontró.
6. Conclusiones finales del programa.
7. Guardar archivos cpp. Y exe, de cada programa.
8. Realizar una carpeta principal y subcarpetas por cada programa, que contenga los
archivos cpp. y exe.(recuerde guardar la carpeta principal con el formato establecido en
clase.
9. Comprimir toda su práctica en zip o .rar y guardarla con el formato establecido en clase.

Enviar la practica al correo establecido en clase.

4
POO

PROGRAMA 1.

#include <stdio.h>

int primo(int num);

void main()
{
int n;
printf("\n Escribe un número: ");scanf("%d",&n);
if (primo(n)==1) printf("\n\n Es primo");
else printf("\n\n No es primo");
}

int primo(int num)


{
int resto,i,result;
for(i=2;i<num-1;i++)
{
resto=num % i;
if((resto==0) && (num != 2)) return 0;
}
return 1;
}

4
POO

PROGRAMA 2.

/* Programa que dado un número 'N' escribe todos los


números comprendidos entre 1 y 10.000, que cumplen
las siguientes reglas:
- La suma de sus cifras debe ser un divisor de N
- El producto de sus cifras debe ser un múltiplo de 'N' */

#include <stdio.h>

void main()
{
int n,i,c1,c2,c3,c4,suma,producto;
printf("\nEscribe un número: ");scanf("%d",&n);
for (i=1;i<=9999;i++)
{
c1=int(i/1000);
c2=int((i % 1000)/100);
c3=int(((i % 1000) % 100)/10);
c4=(((i % 1000) % 100) % 10);
suma=c1+c2+c3+c4;
producto=c1*c2*c3*c4;
if ((n % suma == 0) && (producto % n == 0) &&
(suma <= n) && (producto >= n))
{
printf("%5d",i);
printf("\n");
}
}
}

4
POO

Bibliotecas de programas.

Crea, utilizando tu editor favorito un fichero de nombre Fich001 y extensión c y grábalo en


TuCarpeta:

Fich001.c

/* Fich001.c */

/* Determinación de un número primo */

int primo(int num)


{
int resto,i,result;
for(i=2;i<num-1;i++)
{
resto=num % i;
if ((resto==0) && (num != 2)) return 0;
}
return 1;
}

Acabamos de crear un fichero biblioteca de nombre Fich001.c que contiene de momento una sóla
función, no lo ejecutes porque entre otras cosas no te funcionará.

PROGRAMA 3

#include <stdio.h>
#include "c:\TuCarpeta\Fich001.c"

void main()
{
int n;
printf("\n Escribe un número: ");scanf("%d",&n);
if (primo(n)==1) printf("\n\n Es primo");
else printf("\n\n No es primo");

4
POO
}

Observa de qué forma decimos al compilador que utilice las funciones que tenemos en Fich001.c:

#include “c:\TuCarpeta\Fich001.c”

Vamos a hacer un programa que escribe el listado de números primos inferiores a uno dado (utiliza
la función primo() de Fich001.c

PROGRAMA 4

#include <stdio.h>
#include "c:\TuCarpeta\Fich001.c"

void main()
{
int n,i;
int j,panta;
char c;
printf("\nHasta qué número quieres la lista de números primos: ");
scanf("%d",&n);
printf("\n");
c=getchar();
printf("\n1\n");
j=0;panta=1;
for(i=2;i<n;i++)

4
POO
if(primo(i)==1)
{
printf("%10d",i);
j++;
if(j==160*panta)
{
printf("\n Pulsa [Return] para continuar \n");
c=getchar();
panta++;
}
}
if(primo(n)==1) printf("\n%10d",n);
}

Descomposición de un número en factores primos (utiliza la función primo() de Fich001.c)

PROGRAMA 5

#include <stdio.h>
#include "c:\TuCarpeta\Fich001.c"

void main()
{
int n,i;
int k;

4
POO
printf("\n Escribe el número a descomponer: \n");
scanf("%d",&n);
for(i=2;i<n;i++)
{
k=1;
while ((primo(i)==1) && (n % (k*i) ==0))
{
printf("%d-",i);
k=k*i;
}
}
}

4
POO

Cálculo del máximo común divisor MCD por el método de Euclides.

PROGRAMA 6

/* Cálculo del M.C.D de dos números */

#include <stdio.h>

void main()
{
int x,y;
int aux;
int resto;

printf("\n Escribe un número x: "); scanf("%d",&x);


printf("\n Escribe otro número y: "); scanf("%d",&y);
if(x<y)
{
aux=x;
x=y;
y=aux;
}
if((x % y) == 0) resto=y;
while ((x % y) != 0)
{
resto=x-y*(x/y);
x=y;
y=resto;
}
printf("\n El M.C.D es: %d",resto);
}

4
POO

PROGRAMA 07.- REALICE EL PROGRAMA ANTERIOR PERO UTILIZANDO UNA FUNCIÓN

using namespace std;

#include "C:\Users\jose ortiz\Desktop\xd\Fich002.c"

#include<stdio.h>

#include<conio.h>

#include<math.h>

#include<iostream>

if(x<y)

aux=x;

x=y;

y=aux;

if((x % y) == 0) resto=y;

4
POO

while ((x % y) != 0)

resto=x-y*(x/y);

x=y;

y=resto;

cout<<("\n El M.C.D es:");

cout<<resto;

4
POO

Fich002.c

/* Fich002.c */

/* Determinación de un número primo */


int primo(int num)
{
int resto,i,result;
for(i=2;i<num-1;i++)
{
resto=num % i;
if ((resto==0) && (num != 2)) return 0;
}
return 1;
}

/* Determinación del M.C.D de dos números */


int MCD(int x,int y)
{
int aux;
int resto;
if (x<y)
{
aux=x;
x=y;
y=aux;
}
if ((x % y)==0) resto=y;
while ((x % y) != 0)
{
resto=x-y*(x/y);
x=y;

4
POO
y=resto;
}
return resto;
}

Vamos a probar la función MCD, que acabamos de incluir en Fich002.c

PROGRAMA 8

/* Prog068.cpp */

#include <stdio.h>
#include "c:\TuCarpeta\Fich002.c"

void main()
{
int a,b;
int mcd;
char otra[1];
otra[0]='s';
while (otra[0]=='s')
{
printf("\n Número: "); scanf("%d",&a);
printf("\n Número: "); scanf("%d",&b);
mcd=MCD(a,b);
printf("\n\n El MCD de %d y %d es %d",a,b,mcd);
printf("\n\n Quieres otro MCD (s/n)? ");
scanf("%s",otra);
}
}

4
POO

PROGRAMA 09.- Realice el programa anterior pero que calcule también el mínimo común
múltiplo.

PROGRAMA REALIZADO

using namespace std;


#include "C:\Users\jose ortiz\Desktop\POO\Programa 8\Fich003.c"
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<iostream>

main(void)
{
int a,b;
int mcd;
char otra[1];
otra[0]='s';
while (otra[0]=='s')
{
cout<<("\n Número: ");
cin>>a;
cout<<("\n Número: ");
cin>>b;

4
POO
mcd=MCD(a,b);
mcm=MCM(a,b);
cout<<("\n\n El MCD de %d y %d es %d",a,b,mcd);
cout<<("\n\n Quieres otro MCD (s/n)? ");
cin>>otra;
cout<<("\n\n El MCM es",a,b,mcm);
}
}

PROGRAMA 10.

Programa que simplifica una fracción, utilizando la función MCD, que tenemos en Fich002.c

#include <stdio.h>
#include "c:\TuCarpeta\Fich002.c"

void main()
{
int a,b;
int div;
printf("\n Escribe el numerador: ");
scanf("%d",&a);
printf("\n Escribe el denominador: ");
scanf("%d",&b);
div=MCD(a,b);
printf("\n Fracción simplificada: %d / %d",a/div,b/div);
}

4
POO

PROGRAMA 11.

Programa que suma dos fracciones.

#include <stdio.h>
#include "c:\TuCarpeta\Fich003.c"

void main()
{
int f1[2],f2[2];
int mcd,num;
printf("\Escribe la 1ª fracción: \n"); scanf("%d %d",&f1[0],&f1[1]);
printf("\Escribe la 2ª fracción: \n"); scanf("%d %d",&f2[0],&f2[1]);
mcd=(f1[1]*f2[1])/MCD(f1[1],f2[1]);
num=(mcd/f1[1])*f1[0]+(mcd/f2[1])*f2[0];
printf("\n\n Suma de %d/%d + %d/%d = ",f1[0],f1[1],f2[0],f2[1]);
printf(" %d / %d",num,mcd);
printf("\n\n");
simplifica(num,mcd);
}

4
POO

Das könnte Ihnen auch gefallen