Sunteți pe pagina 1din 15

Algoritmos y Lenguajes de Programación I

C en C++

Winston E. Morteo Sánchez


wmorteo@hotmail.com
1
3. C en C++.
Como C++ está basado en C, debería estar familiarizado con la

sintaxis de C para poder programar en C++, del mismo modo


que debería tener una fluidez razonable en álgebra para poder
hacer cálculos.

2
3.1 Creación de funciones.
●En el antiguo C (previo al estándar), se podía invocar una
función con cualquier número y tipo de argumentos sin que el
compilador se quejase. Todo parecía ir bien hasta que
ejecutabas el programa.
●En C y C++ Estándar usan una característica llamada
prototipado de funciones. Con esta herramienta se han de
describir los tipos de argumentos al declarar y definir una
función.
●Esta descripción es el «prototipo». Cuando la función es
llamada, el compilador usa el prototipo para asegurar que los
argumentos pasados son los apropiados, y que el valor
retornado es tratado correctamente. Si el programador comete
un error al llamar a la función, el compilador detecta el error. 3
3.1 Creación de funciones.
●Esencialmente, aprendió sobre prototipado de funciones (sin
llamarlas de ese modo) en el capítulo previo, ya que la forma de
declararlas en C++ requiere de un prototipado apropiado.
●En un prototipo de función, la lista de argumentos contiene los
tipos de argumentos que se deben pasar a la función y
(opcionalmente para la declaración), identificadores para los
argumentos.
El orden y tipo de los argumentos debe coincidir en la

declaración, definición y llamada a la función

4
3.1 Creación de funciones.
●A continuación se muestra un ejemplo de un prototipo de
función en una declaración:
– int translate(float x, float y, float z);
No se puede usar la misma sintaxis para declarar los

argumentos en el prototipo de una función que en las


definiciones ordinarias de variables.
●Esto significa que no se puede escribir: float x, y, z. Se debe
indicar el tipo de cada argumento.

5
3.1 Creación de funciones.
En una declaración de función, lo siguiente también es

correcto:
– int translate(float, float, float);
Ya que el compilador no hace más que chequear los tipos

cuando se invoca la función, los identificadores se incluyen


solamente para mejorar la claridad del código cuando alguien lo
está leyendo.
En la definición de la función, los nombres son necesarios ya

que los argumentos son referenciados dentro de la función:


– int translate(float x, float y, float z) { x = y = z; }

6
3.1 Creación de funciones.
C y C++ tienen otras maneras de declarar una lista de

argumentos.
Si se tiene una lista de argumentos vacía, se puede declarar

esta como func() en C++, lo que indica al compilador que hay


exactamente cero argumentos. Hay que tener en cuenta que
esto sólo significa una lista de argumentos vacía en C++.
En ambos, C y C++, la declaración func(void); significa una lista

de argumentos vacía. La palabra clave void significa «nada» en


este caso.

7
3.1 Creación de funciones.
La otra opción para las listas de argumentos se produce cuando

no se sabe cuantos argumentos o qué tipos tendrán los


argumentos; esto se conoce como lista de argumentos variable.
Esta «lista incierta de argumentos» se representada con puntos

suspensivos (...).
Definir una función con una lista de argumentos variable es

significativamente más complicado que definir una función


normal.

8
3.1 Creación de funciones.
●Se puede utilizar una lista de argumentos variable para una
función que tiene un grupo de argumentos fijos si se quiere
deshabilitar la comprobación del prototipo de función.
Por eso, se debe restringir el uso de listas de argumentos

variables en C y evitarlas en C++ (en el cual, como aprenderá,


hay alternativas mucho mejores).
El manejo de listas de argumentos variables se describe en la

sección de librerías de la documentación de su entorno C


particular.

9
3.1.1. Valores de retorno de las funciones.
Un prototipo de función C++ debe especificar el tipo de valor

devuelto de la función (en C, si no se especifica será por defecto


un int).
●La especificación del tipo de retorno precede al nombre de la
función.
Para especificar que no se devolverá valor alguno, se utiliza la

palabra reservada void.


●Esto provocará un error si se intenta devolver un valor desde la
función.

10
3.1.1. Valores de retorno de las funciones.
● A continuación hay algunos prototipos completos de funciones:
– int f1(void); // Devuelve un entero, no tiene argumentos
– int f2(); // igual que f1() en C++ pero no en C Stantard
– float f3(float, int, char, double); // Devuelve un float
– void f4(void); // No toma argumentos, no devuelve nada

11
3.1.1. Valores de retorno de las funciones.
●Para devolver un valor desde una función, se utiliza la sentencia
return.
Esta sentencia termina la función y salta hasta la sentencia que

se halla justo después de la llamada a la función.


●Si return tiene un argumento, se convierte en el valor de
retorno de la función.
●Si una función indica que retornara un tipo en particular,
entonces cada sentencia return debe retornar un valor de ese
tipo.

12
3.1.1. Valores de retorno de las funciones.
●Puede haber más de una sentencia return en una definición de
función:
//: C03:Return.cpp
// Use of "return"
#include <iostream>
using namespace std;

char cfunc(int i) { int main() {


if(i == 0) return 'a'; cout << "type an integer: ";
if(i == 1) return 'g'; int val;
if(i == 5) return 'z'; cin >> val;
return 'c'; cout << cfunc(val) << endl;
} }

13
3.1.1. Valores de retorno de las funciones.
En cfunc(), el primer if que comprueba que la condición sea true

sale de la función con la sentencia return.


La declaración de la función no es necesaria puesto que la

definición aparece antes de ser utilizada en main(), de modo


que el compilador sabe de su existencia desde dicha definición.

14
3.1.1. Valores de retorno de las funciones.
En cfunc(), el primer if que comprueba que la condición sea true

sale de la función con la sentencia return.


La declaración de la función no es necesaria puesto que la

definición aparece antes de ser utilizada en main(), de modo


que el compilador sabe de su existencia desde dicha definición.

15

S-ar putea să vă placă și