viernes, 23 de marzo de 2012

Unidad III Funcones



Que es una función?


Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman ciertos valores de entrada, llamados parámetros y proporcionan un valor de salida o valor de retorno; aunque en C++, tanto unos como el otro son opcionales, y pueden no existir.
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 a la función. Una función puede ser llamada desde otra función.

Una función es independiente. Una función puede ejecutar sus tareas sin interferencia en ó de otras partes del programa.

Una función ejecuta una tarea específica. Esta es la parte fácil de la definición. Una tarea es un trabajo discreto que su programa debe ejecutar como parte de su desempeño general, por ejemplo mandar una línea de texto a impresión, ordenar una lista ó hacer un cálculo matemático.

Una función opcionalmente devuelve un valor al programa que la llamó. Cuando un programa llama a una función se ejecutan los enunciados contenidos en ésta, si si programa lo requiere, éstos enunciados pueden devolver un valor al programa que llamó a la función.

     Cuando un programa llama a una función, la ejecución del código salta a la posición inicial definida por el nombre de la función, el programa ejecuta los enunciados contenidos en ésta y posteriormente el programa que llamó a la función continúa en la línea de código siguiente. Una función bién diseñada ejecuta una tarea específica y fácil de entender. Es recomendable ante una tarea complicada, dividirla en múltiples funciones y entonces llamarlas a su debido momento.

Prototipos de una función.

En C++ es obligatorio usar prototipos. Un prototipo es una declaración de una función. Consiste en una presentación de la función, exactamente con la misma estructura que la definición, pero sin cuerpo y terminada con un ";". La estructura de un prototipo es:

[extern|static] <tipo_valor_retorno> [<modificadores>] <identificador>(<lista_parámetros>);

En general, el prototipo de una función se compone de las siguientes secciones:

Opcionalmente, una palabra que especifique el tipo de almacenamiento, puede ser extern o static. Si no se especifica ninguna, por defecto será extern.

El tipo del valor de retorno, que puede ser void, si no necesitamos valor de retorno. En C++ es obligatorio indicar el tipo del valor de retorno.

El identificador de la función. Es costumbre, muy útil y muy recomendable, poner nombres que indiquen, lo más claramente posible, qué es lo que hace la función, y que permitan interpretar qué hace el programa con sólo leerlos. Cuando se precisen varias palabras para conseguir este efecto se puede usar alguna de las reglas más usuales. Una consiste en separar cada palabra con un "_". Otra, consiste en escribir la primera letra de cada palabra en mayúscula y el resto en minúsculas. Por ejemplo, si hacemos una función que busque el número de teléfono de una persona en una base de datos, podríamos llamarla "busca_telefono" o "BuscaTelefono".

Una lista de declaraciones de parámetros entre paréntesis. Los parámetros de una función son los valores de entrada (y en ocasiones también de salida). Para la función se comportan exactamente igual que variables, y de hecho cada parámetro se declara igual que una variable. Una lista de parámetros es un conjunto de declaraciones de parámetros separados con comas. Puede tratarse de una lista vacía. En C++ este procedimiento se considera obsoleto, se usa simplemente "func()".
Por ejemplo:

int Mayor(int a, int b);

Un prototipo sirve para indicar al compilador los tipos de retorno y los de los parámetros de una función, de modo que compruebe si son del tipo correcto cada vez que se use esta función dentro del programa, o para hacer las conversiones de tipo cuando sea necesario.
En el prototipo, los nombres de los parámetros son opcionales, y si se incluyen suele ser como documentación y ayuda en la interpretación y comprensión del programa. El ejemplo de prototipo anterior sería igualmente válido si se escribiera como:

int Mayor(int, int);

Esto sólo indica que en algún lugar del programa se definirá una función "Mayor" que admite dos parámetros de tipo int y que devolverá un valor de tipo int. No es necesario escribir nombres para los parámetros, ya que el prototipo no los usa. En otro lugar del programa habrá una definición completa de la función.
Normalmente, los prototipos de las funciones se declaran dentro del fichero del programa, o bien se incluyen desde un fichero externo, llamado fichero de cabecera, (para esto se usa la directiva #include, que veremos en el siguiente capítulo).
las funciones son externas por defecto. Esto quiere decir que son accesibles desde cualquier punto del programa, aunque se encuentren en otros ficheros fuente del mismo programa.
En contraposición las funciones declaradas static sólo son accesibles dentro del fichero fuente donde se definen.



Llamada por valor y llamada por referencia


dos formas de invocar funciones en muchos lenguajes llamados llamada por valor y la llamada por referencia.
cuando los argumentos se pasan en llamada por valor, se efectúa una copia del valor del argumento y esta se pasa ala función llamada. las modificaciones a la copia no afecta el valor original de la variable del llamador.cuando un arguento es pasado  a llamada por referencia, el llamador de hecho permite que la función llamada modifique el valor original de la variable.
Llamada por valor debería se utilizada cuando la función no necesite modificar el valor original del llamador. Mientras que la llamada por referencia debería de utilizarse en funciones llamadas confiables , que necesitan modificar la variable original.










Gomez,Virgilio (1999). FuncionesC++ http://www.modelo.edu.mx/univ/virtech/frontal/progcpp.htm

Como programar en C/C++
H.M.Deitel/P.J.Deitel
segunda edicion
Prence Hall

martes, 20 de marzo de 2012

practica extra examen 2


/*examen 2 boletos en localidades de un estadio
toledo ortega maritza guadalupe 11211045*/




inicio


numboletos=0,b1=0,b2=0,b3=0,b4=0,b5=0,localidad=0 int
p1=0.0,p2=0.0,p3=0.0,p4=0.0,p5=0.0,total=0.0 float
print" precio boleto localidad 1 "
read p1
print" precio boleto localidad 2 "
read p2
print" precio boleto localidad 3 "
read p3
print" precio boleto localidad 4 "
read p4
print" precio boleto localidad 5 "
read p5
print"cantidad de boletos "
read numboletos
print"localidad "
read localidad
while (numboletos!=0)
{
switch (localidad)
{
case 1:b1=b1+numboletos
total=total+b1*p1
break
case 2:b2=b2+numboletos
total=total+b2*p2
break;
case 3:b3=b3+numboletos
total=total+b3*p3
break;
case 4:b4=b4+numboletos
total=total+b4*p4
break;
case 5:b5=b5+numboletos
total=total+b5*p5
break;
default:cout<<"incorrecto "
}
print "cantidad de boletos "
read numboletos
print "localidad "
read localidad
}
print "numero de boletos localidad 1 ",b1
print "numero de boletos localidad 2 ",b2
print "numero de boletos localidad 3 ",b3
print "numero de boletos localidad 4 ",b4
print "numero de boletos localidad 5 ",b5
print "total de boletos",(b1+b2+b3+b4+b5)
print "total ",total
fin
}

martes, 13 de marzo de 2012

practica 10


problema 1 Un modelo para calcular la población mundial.




inicio


a=0,t=0 int
poblacion=0.0 real
print"anio poblacion "
for (a=1985 toa<=2012 stepa=a+1)
{
poblacion=4.88*(1+exp(0.02*t))
print,a,setprecision(5),setw(8),poblacion," millones de personas"


t=t+1;
}
fin


problema 2 un proyectil 

inicio
 v=500.0,ang=0.0,t=0.0,x=0.0,y=0.0 real
print"X\t\ty"
for (t=0 to t<=10 step t=t+0.5)
{

ang=((22.8*3.1416)/180.0)
x=v*t*cos(ang)
y=v*t*sin(ang)
print,x,"\t\t",y
}





problema 3 Realizaron 4 experimentos, con 6 resultados de ensaye.




inicio



e=0,r=0 int
promedio=0.0,suma=0.0,ensaye=0.0 float 


for(e=1to e<=4 step e=e+1)
{
suma=0.0;
print"introdisca resultados de experimento ",e,endl;
for(r=1to r<=6 stepr=r+1)
{
print"resultado ",r," ="
read ensaye
suma=suma+ensaye
}
print"promedio= ",(suma/6.0)
}
fin










problema 4 repita el problema 3 pero esta vez que el usuario introduzca por teclado  la cantidad de resultados de ensayes en cada experimento 


inicio



 e=0,n=0,r=0 int

promedio=0.0,suma=0.0,ensaye=0.0 float 

cout<<"numero de esnsayes "<<endl;
cin>>n;

for(e=1 to e<=n step e=e+1)
{
suma=0.0;
print"introdisca resultados de experimento ",e,endl;
for(r=1to r<=6 step r=r+1)
{
print"resultado ",r," ="
read ensaye
suma=suma+ensaye
}
print"promedio= ",(suma/6.0)
}
fin




problema 4b realice el problema 3 pero elimine la gaza anidada  interior e introduzca 6 resultados de ensaye  en lugar de uno ala vez


inicio


e=0,n1=0,n2=0,n3=0,n4=0,n5=0,n6=0 int 
promedio=0.0,suma=0.0,ensaye=0.0 float


for(e=1to e<=4 step e=e+1)


print"introdisca resultados de experimento ",e,endl;
print"resultado de ensaye 1 "
read n1
print"resultado de ensaye 2 "
read n2
print"resultado de ensaye 3 "
read n3
print"resultado de ensaye 4 "
read n4
print"resultado de ensaye 5 "
read n5
print"resultado de ensaye 6 "
read n6
suma=n1+n2+n3+n4+n5+n6
print"promedio= ",(suma/6.0)
}

fin









problema 5a y=x+x^2/2+x^3/6+x^5/120 para x entre 5 10 incremento de 0.2


inicio

 x=0.0, y =0.0 float
print"x","\t\t","y"
for (x=5 to x<=10 step x=x+0.02)
{
y=(x+pow(x,2))/(2+pow(x,3))/(6+pow(x,4))/(24+pow(x,5))/120;
print,x,"\t\t",y
}
 fin











problema 5b y=24e^0.04t para x entre 5 y 10 incremento de 0.02





inicio


t=0, y =0 float 
print"x","\t\t","y"
for (t=1to t<=10 stept=t+0.2)
{
y=24*exp(0.04*t)
print,t,"\t\t",y,endl
}


fin











problema 5c y=5x^5-2x^3+x  para x entre 5 y 10 incremento de 0.5 

inicio


 x=0, y =0 float
print"x","\t\t","y"
for (x=5 to x<=10 stepx=x+0.5)
{
y=(5*pow(x,5))-(2*pow(x,3))+x;
print,x,"\t\t",y
}
fin




problema 6 escriba un programa que calcule y despliegue valores en x,z,y




inicio
 x=0,y=0,z=0 int


print"x",setw(4),"z",setw(15),"y"
for (x=2 to 6 step x=x+1)
{
for (z=2 to6 step z=z+1)
{
if (x==z)
{
print,x,setw(4),z,setw(15),"     funcion indefinida"
}
else
{
y= (pow(x,2)*z)/(x-z);
printx,setw(4),z,setw(15),y
}
}
}
final





practica 9

problema 1


  n = 0, f = 1, suma = 0, c1 = 0, c2 = 0 int
print"cantidad de Términos de la serie (1 +2 +3 .... n:!"
read n
print "Términos de la serie"
for(c1 = 1 to  n step c1 = c1 +1)
{f = 1;
for(c2 = c1 to 1 step c2 = c2-1)
{f= f * c2;}
print f,"   "
if (c1 == n)
{print"="
}
else
{print"+"
}
suma = suma + f}
print ,suma

fin











Problema 2


inicio
 suma=1,f=1.0,termino=0 real


 x=0,c1=0,c2=0 int
print "Suma de los valores del 1 al 20:"
print"Introducir valor de x: "
read x
print"1+"
for(c1=1 to20  stepc1=c1+1)
{f=1.0;
for(c2=c1 to0 step c2=c2-1)
{f=f*c2
}
print(pow(x,c1)/f)
suma=suma+(pow(x,c1)/f)
if(c1==20)
{print<<"="}
else
{print"+"
}}
print,suma
fin









Problema .3


inicio


 numlineas,c1=0,c2=0 int
print"numero de lineas=?"
read,numlineas
for(c1=1 to numlineas stepc1=c1+1)
{
for(c2=1;c2<=c1;c2=c2+1)
{print" * "}
print,endl
}
fin





problema 4


inicio


 qu=0,di=0,ne=0,pe=0,precio,cambio=0,total=0 int
print"\tttienda de solo un precio"
print"\t\n            pague con 1 dollar"
print"\n\t    precio del articulo"
read precio
cambio=(100-precio)
while(cambio/25)
{
qu=cambio/25
cambio=cambio-(qu*25)
}
while(cambio/10)
{
di=cambio/10
cambio=cambio-(di*10)
}
while(cambio/5)
{
ne=cambio/5
cambio=cambio-(ne*25)
}
pe=cambio
total =100-precio


print"cambio en monedas= "
print"monedas de quarter= ",qu
print"monedas de dime= ",di
print"monedas de necko= ",ne
print"monedas de pennies= ",pe
print"total= ",total
fin



problema 5






inicio


 nombre[15] char
 tipofumi=0,numbre=0,precio=0,n=0,tipo1=0,tipo2=0,tipo3=0,tipo4=0 int
 costo=0,mayor=0,mayor1=0,mayor2=0,hec=0 int
print"\t\tprecio de fumigacion por tipos"
print"\n\tTipo 1 fumigacion contra las malas hiervas $10 pesos x hec"
print"\n\tTipo 2 fumigacion contra las langostas $20 pesos por hec"
print"\n\tTipo 3 fumigacion contra gusanos $30 pesos por hec"
print"\n\tTipo 4 fumigacion todo lo anterior a $50 pesos x hec"
do
{
print"nombre "
read nombre
print"tipo de fumigacion "
read tipofumi
print"hectareas "
read hec
switch(tipofumi)
{
case 1:costo=10
tipo1=tipo1+1
break
case 2:costo=20
tipo2=tipo2+1
break
case 3:costo=30
tipo3=tipo3+1
break
case 4:costo=50
tipo4=tipo4+1
break
default:print"no existe"

if (hec>1000)
{precio=costo*hec*.05
}

if (hec<1000)
{ precio= costo*hec
}

if (hec>1500)
{precio=costo*hec*.10


print"costo ",costo
print"hectareas fumigadas ",hec
print"precio del area fumigada ",precio
print"decea introducir datos si 1 o no 2 "
read n
}

while (n==1)
if (tipo1>tipo2)
{mayor=tipo1
}
else
{mayor=tipo2
}
if (tipo3>tipo4)
{mayor1=tipo3}
else
{mayor1=tipo4
}
if (mayor>mayor1)
{mayor2=mayor
}
else
{mayor2=mayor1
}



print"tipo mas solicitado es ",mayor2















domingo, 11 de marzo de 2012

Practica 8

Problema 1

INICIO

x,y int

f real
print "x y f(x,y)"
for (x=2 to 8 step x=x+2)
{
for (y=6 to 21 step y=y+3)
{
f=(pow(x,2)-pow(y,2))/(pow(x,2)+pow(y,2))
print x," ",y," ",f
}
}
FIN






problema 2

INICIO
 x,y,f   float
print"x       y"
for (x=-4 to4 step x=x+1)
{
for (y=-5 to5 step y=y+1)
{
f=(pow(x,2)/16)+(pow(y,2)/25);
if (f==1)
{
print,x,"      ",y
}
}
}

FIN






problema 3

INICIO


int n=0,i=1,j=0;
do
{
cout,"introduce valor posiivo"
cin,n
if (n<0)
{
cout"el numero no es valido"
}
}
while (n<0)
for (i=1   to  i<=n      stepi=i+1)
{
for (j=1  to j<=(n-(i-1))    stepj=j+1)
{
cout,j
}
}
FIN



Problema 4

1.-Inicio
n=0, i=0, edad=0, goles=0, asistencia=0,min=0, jugador=0 int
nombre [15]            char
altura, peso, f          real
eva=0, mayor=0    real
Print “Introduzca numero: ”
read n
for(i=1 to n step i=i+1)
{
Print “Nombre: ”
Read nombre
Print “Edad: ”
Read edad
Print "altura en pulgadas: "
Read altura
Print “Peso: ”
Read peso
Print “Goles: ”
Read goles
Print “Asistencia: ”
Read asistencia
Print “Minutos: ”
Read min
Print “Factor de liga: ”
Read f
eva= ((goles+asistencia-min)/4+(altura+peso)/5-edad)*f
Print "Nombre: ",nombre
Print "Evaluacion: ",eva
if (eva>mayor)
{
mayor=eva
jugador=i
}
}
Print "Jugador con evalucion mayor: ",jugador
Print “Evaluacion: ",mayor
Fin.