Sei sulla pagina 1di 68

Universidad Nacional de Ingeniera

Programa de Iniciacin Tecnolgica (PIT)


CTIC
Curso: Lenguaje C++

Prof.: Lic. Csar Martn Cruz Salazar


Introduccin
Los programas vistos hasta este punto se ejecutan de modo
secuencial. La ejecucin comienza con la primera sentencia de la
funcin y prosigue hasta la ltima sentencia, cada una de las
cuales se ejecuta una sola vez.
Esta forma de programacin es adecuada para resolver problemas
sencillos. Sin embargo, para la resolucin de problemas de tipo
general se necesita la capacidad de controlar cules son las
sentencias que se ejecutan y en qu momento.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 1


Introduccin
Las estructuras de control controlan la secuencia o flujo de
ejecucin de las sentencias. Estas se dividen en tres grandes
categoras en funcin del flujo de ejecucin:
secuencia, seleccin y repeticin.
En esta parte del curso consideraremos las estructuras selectivas
o condicionales, las sentencias if y switch, que controlan si una
sentencia o lista de sentencias se ejecutan en funcin del
cumplimiento o no de una condicin.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 2


La sentencia if - else
En C++, la sentencia if else es usado para expresar decisiones.
Formalmente la sintaxis es:
If (expresin)
sentencia1
else
sentencia2
donde la parte else es opcional. La expresin es evaluada; si esta
es verdad(esto es, si la expresin tiene un valor distinto de cero), la
sentencia1 es ejecutado. Si es falso(la expresin es cero) y si hay
una parte else, la sentencia2 es ejecutada en vez.
Ejercicio1:
Averige si el nmero introducido desde el teclado es mayor que 0,
menor que 0 o igual a 0.
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 3
La sentencia if - else
#include <iostream>
using namespace std;
int main()
{
float numero; /* comparar nmero introducido por usuario */
cout<<"Introduzca un numero positivo o negativo: ";
cin>>numero;
/* comparar nmero */
if (numero>0)
cout<<numero<<" es mayor que cero\n";
if (numero<0)
cout<<numero<<" es menor que cero\n";
if (numero == 0)
cout<<numero<<" es igual a cero\n";
return 0;
} Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 4
La sentencia if - else
Formatos
1. If (expresin_lgica)
sentencia
2. If (expresin-lgica)
sentencia1
else
sentencia2
3. if (expresin-lgica) sentencia,
4. if (expresin-lgica) sentencia1 else sentencia2

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 5


Ejercicios con if - else
Ejercicio2: Realizar una prueba de la divisibilidad de dos nmeros.
#include <iostream>
using namespace std;
int main()
{
int n, d;
cout<<"Introduzca dos enteros : \n";
cout<<"Entero 1 :";
cin>>n;
cout<<"\n";
cout<<"Entero 2 :";
cin>>d;
if (n%d ==0)
cout<<n<<" es divisible por "<<d<<endl;

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 6


Ejercicios con if - else
else
cout<<n<<" no es divisible por "<<d<<endl;
return 0;
}

Ejercicio 3: Calcular el mayor de dos nmeros ledos del teclado y


visualizarlo en pantalla.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 7


Ejercicios con if - else
#include <iostream>
using namespace std;
int main()
{
int x, y;
cout<<"Introduzca dos enteros : "<<endl ;
cout<<"Entero 1: ";
cin>>x;
cout<<"Entero 2: ";
cin>>y;
if (x > y) cout<<x<<" es mayor que "<<y<<endl;
else cout<<y<<" es mayor que "<<x<<endl;
return 0;
} Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 8
Ejercicios con if - else

Ejercicio 4:
Dada la funcin f(x), calcular la funcin para un valor dado de x y
visualizarlo en pantalla.
f(x) = {x - x para x <= 0
-x + 3x para x > 0

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 9


Ejemplos con if - else
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
float f,x;
cout<<"\n Elige un valor de x: ";
cin>>x ;
if (x <=0.0)
f = pow(x,2) - x;
else
f = -pow(x,2) + 3*x;
cout<<"f ("<<x<<")"<<"="<<f<<endl;
return 0;
}
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 10
Sentencias if -else anidadas
Hasta este punto, las sentencias if implementan decisiones que
implican una o dos alternativas. En esta seccin, se mostrar
como se puede utilizar la sentencia if para implementar
decisiones que impliquen mas de dos diferentes alternativas.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 11


Sentencias if -else anidadas
Sintaxis :
If (condicin1)
sentencia1
else if (condicin2)
sentencia2
..
else if (condicin_n)
sentencia_n
else
sentencia_(n+1)

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 12


Ejemplo if -else anidadas

Ejercicio 5:
Introduzca un nmero desde el teclado y pruebe si es mayor que
0, menor que 0 e igual a 0.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 13


Ejemplos if - else anidadas
#include <iostream>
using namespace std;
int main()
{
float numero;
cout<<"Introduzca un numero positivo, negativo o cero : ";
cin>>numero;
/* compara nmero con cero */
if (numero > 0)
{
cout<<numero<<", es mayor que cero\n";
cout<<"pruebe de nuevo introduciendo un numero negativo"<<endl;
}
else if (numero < 0)

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 14


Ejemplos if - else anidadas
{
cout<<numero<<", es menor que cero\n" ;
cout<<"pruebe de nuevo introduciendo el cero"<<endl;
}
else
{
cout<<numero<<", es igual a cero\n";
cout<<"porque no introduce otro numero?"<<endl;
}
return 0;
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 15


Sentencia de Control switch
La sentencia switch se utiliza para seleccionar una de entre
mltiples alternativas.
La sentencia switch es especialmente til cuando la seleccin se
basa en el valor de una variable simple o de una expresin simple
denominada expresin de control o selector. El valor de esta
expresin puede ser de tipo int o char, pero no de tipo float ni
double.
Sintaxis :
switch (selector)
case etiqueta1 : sentencias,;
case etiqueta2 : sentencias,;
.
case etiquetan : sentencias,;
default: sentencias,; /* opcional. */
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 16
Sentencia de Control switch
La expresin de control o selector se evala y se compara con
cada una de las etiquetas de case.
Cada etiqueta es un valor nico, constante y cada etiqueta debe
tener un valor diferente de los otros.
Si el valor de la expresin selector es igual a una de las etiquetas
case -por ejemplo, etiqueta2 - entonces la ejecucin comenzar
con las sentencias y continuar hasta que se encuentra al final
de la sentencia de control switch, o hasta encontrar la sentencia
break.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI


17
Sentencia de Control switch
Es habitual que despus de cada bloque de sentencias
correspondiente se desee terminar la ejecucin del switch; para
ello se sita la sentencia break como ltima sentencia del bloque.
break hace que siga la ejecucin en la siguiente sentencia al
switch.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI


18
Sentencia de Control switch
Sintaxis con break :
switch (selector)
case etiqueta1 : sentencias,;
break;
case etiqueta2 : sentencias,;
break;
.
.
case etiquetan : sentencias,;
break;
default: sentencias,; /* opcional. */

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 19


Sentencia de Control switch
Una sentencia break consta de la palabra reservada break
seguida por un punto y coma. Cuando la computadora ejecuta las
sentencias siguientes a una etiqueta case, contina hasta que se
alcanza una sentencia break. Si la computadora encuentra una
sentencia break, termina la sentencia switch. Si se omiten las
sentencias break, despus de ejecutar el cdigo de case, la
computadora ejecutar el cdigo que sigue a la siguiente case.

Ejemplo:

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 20


Ejemplo de Sentencia switch
switch (opcion)
{
case 0:
puts ("Cero!") ;
break;
case 1:
puts ( "Uno ! ) ;
break;
case 2:
puts(Dos!);
break;
Default:
puts ("Fuera de rango") ;
}
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 21
Ejemplo de Sentencia switch
switch (opcion)
{
case 0:
case 1:
case 2:
puts ("Menor de 3") ;
break;
case 3:
puts( "Igual a 3") ;
break;
default:
puts ("Mayor que 3") ;
}
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 22
Ejercicio de Sentencia switch
Ejercicio 6: Se necesita saber si un determinado carcter car
es una vocal.
#include <iostream>
using namespace std;
int main()
{
char car;
cout<<"Ingrese un caracter :";
cin>>car;
switch (car) {
case 'a': case 'A':

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 23


Ejercicio de Sentencia switch
case 'e': case 'E':
case 'i': case 'I':
case 'o': case 'O':
case 'u': case 'U':
cout<<car<<" es una vocal\n";
break;
default:
cout<<car<<" no es una vocal\n";
}
return 0;
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 24


Ejercicio de Sentencia switch
Ejercicio 7: Programa que averigua el calificativo que se le da a las
notas de A hasta D.
#include <iostream>
using namespace std;
int main()
{
char nota;
cout<<"Ingrese la nota como caracter (A...D) :";
cin>>nota;
switch(nota)
{
case 'A':case 'a':
cout<<"Sobresaliente"<<endl;
break;

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 25


Ejercicio de Sentencia switch
case 'B':case 'b':
cout<<"Notable"<<endl;
break;
case 'C':case 'c':
cout<<"Aprobado"<<endl;
break;
case 'D':case 'd':
cout<<"Desaprobado"<<endl;
break;
default:
cout<<"nota no vlida"<<endl;
}
return 0;
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 26


Estructuras repetitivas. Introduccin
Una de las caractersticas de las computadoras que aumentan
considerablemente su potencia es su capacidad para ejecutar
una tarea muchas veces (repetidas) con gran velocidad,
precisin y fiabilidad. Las tareas repetitivas es algo que los
humanos encontramos difciles y tediosas de realizar. Ahora, se
estudiarn las estructuras de control iterativas o repetitivas
que realizan la repeticin o iteracin de acciones.
C++ soporta tres tipos de estructuras de control:

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 27


Estructuras repetitivas. Introduccin
Los bucles while, for y do-while. Estas estructuras de control o
sentencias repetitivas controlan el nmero de veces que una
sentencia o listas de sentencias se ejecutan.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 28


La sentencia While

Un bucle (ciclo) es cualquier construccin de programa que repite


una sentencia o secuencia de sentencias un nmero de veces. La
sentencia (o grupo de sentencias) que se repiten en un bloque se
denomina cuerpo del bucle y cada repeticin del cuerpo del bucle
se llama iteracin del bucle.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 29


La sentencia While

Un bucle while tiene una condicin del bucle (una expresin


lgica) que controla la secuencia de repeticin. La posicin de esta
condicin del bucle es delante del cuerpo del bucle y significa que
un bucle while es un bucle pretest de modo que cuando se ejecuta
el mismo, se evala la condicin antes de que se ejecute el cuerpo
del bucle.
La Figura siguiente representa el diagrama del bucle while.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 30


La sentencia While

El diagrama indica que la ejecucin de la sentencia o sentencias


expresadas se repite mientras la condicin del bucle permanece
verdadera y termina cuando se hace falsa. Tambin indica el
diagrama anterior que la condicin del bucle se evala antes de
que se ejecute el cuerpo del bucle y, por consiguiente, si esta
condicin es inicialmente falsa, el cuerpo del bucle no se
ejecutar. Quiere decir, que el cuerpo de un bucle while se
ejecutar cero o ms veces.
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 31
La sentencia While
Sintaxis
1. while (condicin - bucle)
Sentencia;
2. while (condicin - bucle)
{
sentencia-1;
sentencia-2;
.
.
sentencia-n;
}
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 32
La sentencia While
While : es una palabra reservada C++
Condicin-bucle: es una expresin lgica o booleana
Sentencia: es una sentencia simple o compuesta
Ejemplo 1:
/*Programa que cuenta hasta 10 */
#include <iostream>
using namespace std;
int main()
{
int x=0;
while (x<=10)
cout<<"x: "<<x++<<endl;
return 0;
}
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 33
La sentencia While
Ejemplo 2: Programa que visualiza en pantalla 15 asteriscos.
/* visualizar 15 asteriscos */
#include <iostream>
using namespace std;
int main()
{
int contador = 0; //inicializacin
while(contador<15) //prueba condicin
{
cout<<" * " ;
contador++; //actualizacin (incrementa en 1 el
contador)
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 34


La sentencia While
cout<<"\n";
return 0;
}
Resultado:
* * * * * * * * * * * * * * *
Presione una tecla para continuar . . .

La variable que representa la condicin del bucle se denomina


tambin variable de control del bucle debido a que su valor
determina si el cuerpo del bucle se repite. La variable de control
del bucle debe ser: 1) inicializada, 2) comprobada, y 3)
actualizada para que el cuerpo del bucle se ejecute
adecuadamente.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 35


Bucles controlados por centinelas
Normalmente, no se conoce con exactitud cuantos elementos de
datos se procesarn antes de comenzar su ejecucin. Un medio
para manejar esta situacin es instruir al usuario a introducir un
nico dato definido y especificado denominado valor centinela
como ltimo dato. La condicin del bucle comprueba cada dato y
termina cuando se lee el valor centinela.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 36


Bucles controlados por centinelas
El valor centinela se debe seleccionar con mucho cuidado y debe
ser un valor que no pueda producirse como dato. En realidad el
centinela es un valor que sirve para terminar el proceso del bucle.
En el siguiente programa hay un bucle con centinela; se
introducen datos mientras que sta sea distinta de centinela. Los
datos se suman dentro del blucle.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 37


Bucles controlados por centinelas
#include <iostream>
using namespace std;
int main()
{
const int centinela = -1;
int dato, cuenta=0, suma=0;
cout<<"Introduzca el primer numero: ";
cin>>dato;
while(dato!=centinela)
{
cuenta++;
suma+=dato;//suma=suma + dato
cout<<"Introduzca el siguiente numero: ";
cin>>dato;
}
cout<<"\nFinal, se ingresaron :"<<cuenta<<" numeros"<<endl;
cout<<"Suma total: "<<suma<<endl;
return 0;
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 38


La sentencia break en los bucles
La sentencia break se utiliza, a veces, para realizar una
terminacin anormal del bucle. Dicho de otro modo, una
terminacin antes de lo previsto. Su sintaxis es:
break;
La sentencia break se utiliza para la salida de un bucle while o
do-while, aunque tambin como se ha visto se puede utilizar
dentro de una sentencia switch, siendo ste su uso ms
frecuente.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 39


El Bucle for

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 40


El Bucle for
Ejemplo 1:
/*Imprime "Hola!" diez veces as como el valor del contador */
#include <iostream>
using namespace std;
int main()
{
int i;
for(i=0;i<10;i++)
{
cout<<"\nHola!"<<endl;
cout<<"El valor del contador es : "<<i;
}
cout<<"\n";
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 41


Ejercicios con el Bucle for
Ejercicio 8: Imprimir las letras desde A hasta la Z

#include <iostream>
using namespace std;
int main()
{
char c;
for(c='A';c<='Z';c++)
cout<<" "<<c;
cout<<"\n";
return 0;
}
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 42
Ejercicios con el Bucle for
Ejercicio 9: Imprimir los valores 1, 2, 4, 8, 16, 32, 64
#include <iostream>
using namespace std;
int main()
{
int i;
for (i = 1; i < 100; i*=2)
{
if(i>1) cout<<", "<<i;
else cout<<" "<<i;
}
cout<<"\n";
}
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 43
Ejercicios con el Bucle for
Ejercicio 10: Imprimir i+2j. Inicializar i a 0 y j a la constante
MAX. El bucle se ejecutar mientras i sea menor que j. Las
variable de control i se incrementa en 1, y a la vez j se
decrementa en 1.
#include <iostream>
using namespace std;
#define MAX 25
int main()
{
int i, j;
for (i = 0 , j = MAX; i < j; i++, j--)
cout<<" "<<i+2*j;
cout<<"\n";
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 44


El Bucle DoWhile
La sentencia do-while se utiliza para especificar un bucle
condicional que se ejecuta al menos una vez. Esta situacin se
suele dar en algunas circunstancias en las que se ha de tener la
seguridad de que una determinada accin se ejecutar una o
varias veces, pero al menos una vez.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 45


El Bucle Do While
La construccin do comienza ejecutando sentencia. Se evala a
continuacin expresin. Si expresin es verdadera, entonces
se repite la ejecucin de sentencia. Este proceso contina hasta
que expresin es falsa. La semntica del bucle do se
representa grficamente en la Figura siguiente:

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 46


Ejemplo con Do While
Ejemplo: Programa que cuenta de 0 a 9 con Do While
#include <iostream>
using namespace std;
int main()
{
int x=0;
do
cout<<"x: "<<x++<<endl;
while (x < 10);
return 0;
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 47


Ejercicio con Do While
Ejercicio11: Hacer un Programa que imprima las letras
minsculas del alfabeto.
#include <iostream>
using namespace std;
int main()
{
char car = 'a';
do
cout<<" "<<car++;
while (car <='z');
cout<<"\n";
return 0;
}
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 48
Funciones. Introduccin
Una funcin es un mini programa dentro de un programa. Las
funciones contienen varias sentencias bajo un solo nombre, que
un programa puede utilizar una o ms veces para ejecutar dichas
sentencias.
La divisin del cdigo en funciones hace que las mismas se
puedan reutilizar en su programa y en otros programas.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 49


Funciones. Introduccin
Si se agrupan funciones en bibliotecas otros programas pueden
reutilizar las funciones, por esa razn se puede ahorrar tiempo
de desarrollo.
Cualquier compilador incluye ms de quinientas funciones de
biblioteca, que esencialmente pertenecen a la biblioteca estndar
ANSI(American National Standards Institute).
La potencia real del lenguaje es proporcionada por la biblioteca
de funciones.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 50


Concepto de funcin
El programa se divide en muchos mdulos (rutinas pequeas
denominadas funciones), que producen muchos beneficios:
aislar mejor los problemas, escribir programas correctos ms
rpido y producir programas que son mucho ms fciles de
mantener.
As pues, un programa C++ se compone de varias funciones.
Por ejemplo, si queremos escribir un programa que obtenga una
lista de caracteres del teclado, los ordene alfabticamente y los
visualice a continuacin en la pantalla, es posible hacer todas
estas tareas en un nico gran programa (funcin main ( ) ).

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 51


Concepto de funcin
int main()
{
/* Cdigo C para obtener una lista de caracteres * /

/ * Cdigo C para ordenar alfabticamente los caracteres */

/ * Cdigo C para visualizar la lista * /
...
return 0
}
Sin embargo, este mtodo no es correcto. El mejor medio para
escribir un programa es escribir funciones independientes para
cada tarea que haga el programa. El citado programa sera el
siguiente:
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 52
Concepto de funcin
int main()
{
obtenercaracteres(); / * Llamada a una funcin que obtiene los caracteres */
alfabetizar (); / * Llamada a la funcin que ordena alfabticamente las letras
*/
verletras (); / * Llamada a la funcin que visualiza letras en la pantalla */
return 0; / * retorno al sistema * /
}

int obtenercaracteres()
{
/ *Cdigo de C para obtener una lista de caracteres * /
return 0; / * Retorno a main() * /
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 53


Concepto de funcin
int alfabetizar()
{
/* Cdigo de C para alfabetizar los caracteres */
return 0 ; / * Retorno a funcin main() */
}

void verletras()
{
/ * Cdigo de C para visualizar lista alfabetizada */
return 0; / * Retorno a funcin main0 * /
}
Cada funcin realiza una determinada tarea y cuando se ejecuta
return se retorna al punto en que fue llamada por el programa o
funcin principal.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 54


Estructura de una funcin
En C todas las funciones son externas o globales, es decir, pueden
ser llamadas desde cualquier punto del programa.
La estructura de una funcin en C++ es:
tipo-de-retorno nombreFuncin ( listaDeParmetros)
{
cuerpo de la funcin
return expresin
}
tipo-de-retorno Tipo de valor devuelto por la funcin o la palabra
reservada void si la funcin no devuelve ningn valor.
nombreFuncin Identificador o nombre de la funcin.
listaDeParmetros Lista de declaraciones de los parmetros de la funcin
separados por comas.
expresin valor que devuelve la funcin.
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 55
Ejemplos de funciones
La Funcin cuadrado
/* Calcula los cuadrados de nmeros enteros sucesivos a partir de un nmero dado
n, parmetro de la funcin y hasta obtener un cuadrado que sea mayor de 600 */
int cuadrado(int n)
{
int q=n*n;
while (q<=600) /*el cuadrado ha de ser menor o igual a 600 */
{
cout<<"El cuadrado de "<< n<<" es "<<q<<endl;
n++ ;//Incremento n=n + 1
q = n*n;
}
return 0;
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 56


Ejemplos de funciones
La Funcin suma
/*
Calcula la suma de un nmero dado (parmetro) de elementos ledos de la entrada
estndar(tec1ado).
*/
float suma (int num-elementos)
{
int indice;
float total = 0.0;
cout<<\n \t Introduce <<num-elementos<< nmeros reales\n;
for (indice = 0; indice < num-elementos; indice++)
{
float x;
cin>> x ;

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 57


Llamada a una funcin
/* La funcin suma se completa con :*/
total += x; //total = total + x
}
return total;
}
Las funciones, para poder ser ejecutadas, han de ser llamadas o
invocadas. Cualquier expresin puede contener una llamada a una
funcin que redirigir el control del programa a la funcin nombrada.
Normalmente la llamada a una funcin se realizar desde la funcin
principal main(), aunque naturalmente tambin podr ser desde otra
funcin.
La funcin que llama a otra funcin se denomina funcin llamadora
y la funcin controlada se denomina funcin llamada.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 58


Llamada a una funcin
/*La funcin max devuelve el nmero mayor de dos enteros.*/
#include <stdio.h>
int max(int x, int y)
{
if (x < y)
return y;
else
return x;
}
int main()
{
int m, n;
do {
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 59
Ejemplo de llamada a una funcin
cin>>m;
cin>>n;
cout<<Maximo de <<m<<y<<n<< es <<max(m,n);
/*llamada a max*/
}while (m != 0) ;
return 0;
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 60


Ejercicios con funciones
Ejercicio12: Calcular la media aritmtica de dos nmeros reales.
#include <iostream>
using namespace std;
double media(doub1e x1, double x2)
{
return(x1 + x2)/2;
}
int main()
{
double numl, num2, med;
cout<<"1ntroducir dos nmeros reales: ";
cin>>numl;
cin>>num2 ;
med = media(num1, num2);
cout<<El valor medio es ", med) ;
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 61
Ejercicios con funciones
return 0;
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 62


Prototipo de las funciones
La declaracin de una funcin se denomina prototipo. Los
prototipos de una funcin contienen la cabecera de la funcin,
con la diferencia de que los prototipos terminan con un punto y
coma.
Especficamente un prototipo consta de los siguientes
elementos:

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 63


Prototipo de las funciones

nombre de la funcin, una lista de argumentos encerrados entre


parntesis y un punto y coma. En C++ no es estrictamente
necesario que una funcin se declare o defina antes de su uso,
no es necesario incluir el prototipo aunque si es recomendable
para que el compilador pueda hacer chequeos en las llamadas a
las funciones. Los prototipos de las funciones llamadas en un
programa se incluyen en la cabecera del programa.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 64


Prototipo de las funciones
Sintaxis
tipo-retorno nombre-funcin (lista-de-declaracin parmetros) ;

tipo-retorno Tipo del valor devuelto por la funcin o palabra


reservada void si no devuelve un valor.
nombre-funcin Nombre de la funcin.
lista-declaracin parmetros Lista de declaracin de los
parmetros de la funcin, separados por comas (los nombres de
los parmetros son opcionales, pero es buena prctica incluirlos
para indicar lo que representan).

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 65


Prototipo de las funciones
Un prototipo declara una funcin y proporciona una informacin
suficiente al compilador para verificar que la funcin est siendo
llamada correctamente, con respecto al nmero y tipo de los
parmetros y el tipo devuelto por la funcin.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 66


Ejemplos de Prototipos de funciones
1. double FahrACelsius(double tempFahr);
2. int max(int x, int y);
3. int longitud(int h, int a);
4. struct persona entrad(void);
5. char* concatenar(char* c1, char* c2);
6. double intensidad(double, double);

Los prototipos se sitan normalmente al principio de un


programa, antes de la definicin de la funcin main() .

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 67

Potrebbero piacerti anche