SlideShare una empresa de Scribd logo
1 de 20
C en C++
Sesión 5
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.
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.
El programa acababa con resultados misteriosos (o peor, el
programa fallaba) sin ninguna pista del motivo. La falta de ayuda
acerca del paso de argumentos y los enigmáticos bugs que
resultaban es, probablemente, la causa de que C se considerase «un
lenguaje ensamblador de alto nivel». Los programadores de pre-
Estándar C simplemente se adaptaron.
Creación de funciones
• 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.
Creación de funciones
• 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. A continuación se
muestra un ejemplo de un prototipo de función en una declaración:
Creación de funciones
• 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. En una declaración de
función, lo siguiente también es correcto:
Creación de funciones
• Ya que el compilador no hace más que checar 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:
Creación de funciones
• Esta regla sólo se aplica a C. En C++, un argumento puede no tener
nombrado en la lista de argumentos de la definición de la función.
Como no tiene nombre, no se puede utilizar en el cuerpo de la
función, por supuesto. Los argumentos sin nombre se permiten
para dar al programador una manera de “reservar espacio en la lista
de argumentos”. De cualquier modo, la persona que crea la función
aún así debe llamar a la función con los parámetros apropiados.
Creación de funciones
• Sin embargo, la persona que crea la función puede utilizar el
argumento en el futuro sin forzar una modificación en el código que
llama a la función. Esta opción de ignorar un argumento en la lista
también es posible si se indica el nombre, pero siempre aparecería
un molesto mensaje de advertencia, informando que el valor no se
utiliza, cada vez que se compila la función. La advertencia
desaparece si se quita el nombre del argumento.
Creación de funciones
• C y C++ tienen otras dos 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 C
significa “un número indeterminado de argumentos” (lo que es un
“agujero” en C ya que deshabilita la comprobación de tipos en ese
caso).
Creación de funciones
• 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 (también puede significar “sin tipo” en el caso de los punteros,
como se verá mas adelante
Valores de retorno de las funciones
• 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 (también puede significar “sin tipo” en el caso de los punteros,
como se verá mas adelante.
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. A continuación hay algunos
prototipos completos de funciones:
Valores de retorno de las funciones
Valores de retorno de las funciones
• Puede haber más de una sentencia return en una definición de función:
Valores de retorno de las funciones
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. Fíjese
que 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.
Verdadero y falso
• Todas las sentencias condicionales utilizan la veracidad o la falsedad
de una expresión condicional para determinar el camino de
ejecución. Un ejemplo de expresión condicional es A == B. Esto
utiliza el operador condicional == para saber si la variable A es
equivalente a la variable B. La expresión produce un booleano true
o false (estas son palabras reservadas sólo en C++; en C una
expresión es verdadera( true) si se evalúa con un valor diferente de
cero). Otros operadores condicionales son >, <, >=, etc.
Verdadero y falso
• Todas las sentencias condicionales utilizan la veracidad o la falsedad
de una expresión condicional para determinar el camino de
ejecución. Un ejemplo de expresión condicional es A == B. Esto
utiliza el operador condicional == para saber si la variable A es
equivalente a la variable B. La expresión produce un booleano true
o false (estas son palabras reservadas sólo en C++; en C una
expresión es verdadera( true) si se evalúa con un valor diferente de
cero). Otros operadores condicionales son >, <, >=, etc.
if-else
• La sentencia if-else puede existir de dos formas: con o sin
el else. Las dos formas son:

Más contenido relacionado

La actualidad más candente

Estructura de un rograma
Estructura de un rogramaEstructura de un rograma
Estructura de un rograma
ivanjvic
 
Librerias en-lenguaje-c
Librerias en-lenguaje-cLibrerias en-lenguaje-c
Librerias en-lenguaje-c
Kevin2811
 
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuarioLenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Carlos
 

La actualidad más candente (20)

Funcion scanf
Funcion scanfFuncion scanf
Funcion scanf
 
Clase 5
Clase 5Clase 5
Clase 5
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_
 
Condiciones
CondicionesCondiciones
Condiciones
 
Utilidad de las funciones en c
Utilidad de las funciones en cUtilidad de las funciones en c
Utilidad de las funciones en c
 
Funciones en Lenguaje C
Funciones en Lenguaje CFunciones en Lenguaje C
Funciones en Lenguaje C
 
FUNCIONES LENGUAJE C
FUNCIONES LENGUAJE CFUNCIONES LENGUAJE C
FUNCIONES LENGUAJE C
 
Comandos c#
Comandos c#Comandos c#
Comandos c#
 
Estructura de un rograma
Estructura de un rogramaEstructura de un rograma
Estructura de un rograma
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuario
 
Librerias en-lenguaje-c
Librerias en-lenguaje-cLibrerias en-lenguaje-c
Librerias en-lenguaje-c
 
Funciones C++ modificado
Funciones C++ modificadoFunciones C++ modificado
Funciones C++ modificado
 
Programación 1: cadenas en C
Programación 1: cadenas en CProgramación 1: cadenas en C
Programación 1: cadenas en C
 
C++
C++C++
C++
 
FUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE CFUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE C
 
Instrucciones para c_
Instrucciones para c_Instrucciones para c_
Instrucciones para c_
 
Comandos importantes en c++
Comandos importantes en c++Comandos importantes en c++
Comandos importantes en c++
 
Tutorial lenguaje c
Tutorial lenguaje cTutorial lenguaje c
Tutorial lenguaje c
 
Tutorial lenguaje c
Tutorial lenguaje cTutorial lenguaje c
Tutorial lenguaje c
 
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuarioLenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
 

Similar a C en c++

Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacion
charnisch
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
mezano09
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
Angel Perez
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
mezano09
 
Unidad1
Unidad1Unidad1
Unidad1
JHONNY
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
camnav
 
Lenguajes De Programacion C nivel1-unidad1
Lenguajes De Programacion C nivel1-unidad1Lenguajes De Programacion C nivel1-unidad1
Lenguajes De Programacion C nivel1-unidad1
charnisch
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
Joaquin1418
 
Elementos Básicos del Lenguaje
Elementos Básicos del LenguajeElementos Básicos del Lenguaje
Elementos Básicos del Lenguaje
chembe
 
Unidad1
Unidad1Unidad1
Unidad1
JHONNY
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
Facebook
 
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguaje
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguajeLenguaje de programacion c++ basico 1ra parte elementos basicos del lenguaje
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguaje
Dunkherz
 
Unidad1
Unidad1Unidad1
Unidad1
chembe
 
Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++
yesid19
 
1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje
yuli02
 
1ra parte elementos basicos del lenguaje
 1ra parte elementos basicos del lenguaje 1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje
yuli02
 

Similar a C en c++ (20)

Tema 7 www.fresymetal.com
Tema 7 www.fresymetal.comTema 7 www.fresymetal.com
Tema 7 www.fresymetal.com
 
Instrucciones Básicas para C++
Instrucciones Básicas para C++Instrucciones Básicas para C++
Instrucciones Básicas para C++
 
Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacion
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
 
Unidad1
Unidad1Unidad1
Unidad1
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
 
Lenguajes De Programacion C nivel1-unidad1
Lenguajes De Programacion C nivel1-unidad1Lenguajes De Programacion C nivel1-unidad1
Lenguajes De Programacion C nivel1-unidad1
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
 
Elementos Básicos del Lenguaje
Elementos Básicos del LenguajeElementos Básicos del Lenguaje
Elementos Básicos del Lenguaje
 
Lenguaje de programacion C++ 1
Lenguaje de programacion C++ 1Lenguaje de programacion C++ 1
Lenguaje de programacion C++ 1
 
Unidad1
Unidad1Unidad1
Unidad1
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
 
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguaje
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguajeLenguaje de programacion c++ basico 1ra parte elementos basicos del lenguaje
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguaje
 
Unidad1
Unidad1Unidad1
Unidad1
 
Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++
 
1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje
 
1ra parte elementos basicos del lenguaje
 1ra parte elementos basicos del lenguaje 1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje
 
PRESENTACIÓN DE LA ESTRUCTURA BÁSICA PARA C++
PRESENTACIÓN DE LA ESTRUCTURA BÁSICA PARA C++PRESENTACIÓN DE LA ESTRUCTURA BÁSICA PARA C++
PRESENTACIÓN DE LA ESTRUCTURA BÁSICA PARA C++
 

Más de Tensor

Más de Tensor (20)

Libertad
LibertadLibertad
Libertad
 
Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)
 
Metodo de la bisección
Metodo de la bisecciónMetodo de la bisección
Metodo de la bisección
 
Transito vehicular
Transito vehicularTransito vehicular
Transito vehicular
 
Teoria de colas
Teoria de colasTeoria de colas
Teoria de colas
 
Practica 7 2016
Practica 7 2016Practica 7 2016
Practica 7 2016
 
Practica 6 2016
Practica 6 2016Practica 6 2016
Practica 6 2016
 
Game maker
Game makerGame maker
Game maker
 
Practica 5 2016
Practica 5 2016Practica 5 2016
Practica 5 2016
 
Procesamiento de archivos
Procesamiento de archivosProcesamiento de archivos
Procesamiento de archivos
 
Cadenas y funciones de cadena
Cadenas y funciones de cadenaCadenas y funciones de cadena
Cadenas y funciones de cadena
 
Simulación en promodel clase 04
Simulación en promodel clase 04Simulación en promodel clase 04
Simulación en promodel clase 04
 
Reduccion de orden
Reduccion de ordenReduccion de orden
Reduccion de orden
 
Variación+de+parametros
Variación+de+parametrosVariación+de+parametros
Variación+de+parametros
 
Coeficientes indeterminados enfoque de superposición
Coeficientes indeterminados   enfoque de superposiciónCoeficientes indeterminados   enfoque de superposición
Coeficientes indeterminados enfoque de superposición
 
Bernoulli y ricatti
Bernoulli y ricattiBernoulli y ricatti
Bernoulli y ricatti
 
Practica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioPractica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicio
 
Clase 14 ondas reflejadas
Clase 14 ondas reflejadasClase 14 ondas reflejadas
Clase 14 ondas reflejadas
 
Ondas em
Ondas emOndas em
Ondas em
 
Clase 7 ondas electromagneticas
Clase 7 ondas electromagneticasClase 7 ondas electromagneticas
Clase 7 ondas electromagneticas
 

Último

ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdfANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
lvela1316
 

Último (20)

Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)
 
TRABAJO CON TRES O MAS FRACCIONES PARA NIÑOS
TRABAJO CON TRES O MAS FRACCIONES PARA NIÑOSTRABAJO CON TRES O MAS FRACCIONES PARA NIÑOS
TRABAJO CON TRES O MAS FRACCIONES PARA NIÑOS
 
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIALA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
 
Época colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la épocaÉpoca colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la época
 
proyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
proyecto semana de los Jardines, actividades a realizar para resaltar esta fechaproyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
proyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
 
Sesión de clase: Luz desde el santuario.pdf
Sesión de clase: Luz desde el santuario.pdfSesión de clase: Luz desde el santuario.pdf
Sesión de clase: Luz desde el santuario.pdf
 
a propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionesa propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definiciones
 
Revista Faro Normalista 6, 18 de mayo 2024
Revista Faro Normalista 6, 18 de mayo 2024Revista Faro Normalista 6, 18 de mayo 2024
Revista Faro Normalista 6, 18 de mayo 2024
 
Análisis de la situación actual .La Matriz de Perfil Competitivo (MPC)
Análisis de la situación actual .La Matriz de Perfil Competitivo (MPC)Análisis de la situación actual .La Matriz de Perfil Competitivo (MPC)
Análisis de la situación actual .La Matriz de Perfil Competitivo (MPC)
 
IMPLICACIONES BIOÉTICAS ANTE EL TRANSHUMANISMO A PARTIR DEL PENSAMIENTO FILOS...
IMPLICACIONES BIOÉTICAS ANTE EL TRANSHUMANISMO A PARTIR DEL PENSAMIENTO FILOS...IMPLICACIONES BIOÉTICAS ANTE EL TRANSHUMANISMO A PARTIR DEL PENSAMIENTO FILOS...
IMPLICACIONES BIOÉTICAS ANTE EL TRANSHUMANISMO A PARTIR DEL PENSAMIENTO FILOS...
 
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdfANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
 
Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )
 
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
 
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptxPATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
 
Cerebelo Anatomía y fisiología Clase presencial
Cerebelo Anatomía y fisiología Clase presencialCerebelo Anatomía y fisiología Clase presencial
Cerebelo Anatomía y fisiología Clase presencial
 
Lec. 08 Esc. Sab. Luz desde el santuario
Lec. 08 Esc. Sab. Luz desde el santuarioLec. 08 Esc. Sab. Luz desde el santuario
Lec. 08 Esc. Sab. Luz desde el santuario
 
Power Point: Luz desde el santuario.pptx
Power Point: Luz desde el santuario.pptxPower Point: Luz desde el santuario.pptx
Power Point: Luz desde el santuario.pptx
 
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdfMETODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
 
Luz desde el santuario. Escuela Sabática
Luz desde el santuario. Escuela SabáticaLuz desde el santuario. Escuela Sabática
Luz desde el santuario. Escuela Sabática
 
cuadernillo_cuentos_de_los_valores_elprofe20 (1).docx
cuadernillo_cuentos_de_los_valores_elprofe20 (1).docxcuadernillo_cuentos_de_los_valores_elprofe20 (1).docx
cuadernillo_cuentos_de_los_valores_elprofe20 (1).docx
 

C en c++

  • 2. 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.
  • 3. 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. El programa acababa con resultados misteriosos (o peor, el programa fallaba) sin ninguna pista del motivo. La falta de ayuda acerca del paso de argumentos y los enigmáticos bugs que resultaban es, probablemente, la causa de que C se considerase «un lenguaje ensamblador de alto nivel». Los programadores de pre- Estándar C simplemente se adaptaron.
  • 4. Creación de funciones • 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.
  • 5. Creación de funciones • 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. A continuación se muestra un ejemplo de un prototipo de función en una declaración:
  • 6. Creación de funciones • 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. En una declaración de función, lo siguiente también es correcto:
  • 7. Creación de funciones • Ya que el compilador no hace más que checar 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:
  • 8. Creación de funciones • Esta regla sólo se aplica a C. En C++, un argumento puede no tener nombrado en la lista de argumentos de la definición de la función. Como no tiene nombre, no se puede utilizar en el cuerpo de la función, por supuesto. Los argumentos sin nombre se permiten para dar al programador una manera de “reservar espacio en la lista de argumentos”. De cualquier modo, la persona que crea la función aún así debe llamar a la función con los parámetros apropiados.
  • 9. Creación de funciones • Sin embargo, la persona que crea la función puede utilizar el argumento en el futuro sin forzar una modificación en el código que llama a la función. Esta opción de ignorar un argumento en la lista también es posible si se indica el nombre, pero siempre aparecería un molesto mensaje de advertencia, informando que el valor no se utiliza, cada vez que se compila la función. La advertencia desaparece si se quita el nombre del argumento.
  • 10. Creación de funciones • C y C++ tienen otras dos 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 C significa “un número indeterminado de argumentos” (lo que es un “agujero” en C ya que deshabilita la comprobación de tipos en ese caso).
  • 11. Creación de funciones • 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 (también puede significar “sin tipo” en el caso de los punteros, como se verá mas adelante
  • 12. Valores de retorno de las funciones • 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 (también puede significar “sin tipo” en el caso de los punteros, como se verá mas adelante.
  • 13. 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. A continuación hay algunos prototipos completos de funciones:
  • 14. Valores de retorno de las funciones
  • 15. Valores de retorno de las funciones • Puede haber más de una sentencia return en una definición de función:
  • 16. Valores de retorno de las funciones
  • 17. 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. Fíjese que 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.
  • 18. Verdadero y falso • Todas las sentencias condicionales utilizan la veracidad o la falsedad de una expresión condicional para determinar el camino de ejecución. Un ejemplo de expresión condicional es A == B. Esto utiliza el operador condicional == para saber si la variable A es equivalente a la variable B. La expresión produce un booleano true o false (estas son palabras reservadas sólo en C++; en C una expresión es verdadera( true) si se evalúa con un valor diferente de cero). Otros operadores condicionales son >, <, >=, etc.
  • 19. Verdadero y falso • Todas las sentencias condicionales utilizan la veracidad o la falsedad de una expresión condicional para determinar el camino de ejecución. Un ejemplo de expresión condicional es A == B. Esto utiliza el operador condicional == para saber si la variable A es equivalente a la variable B. La expresión produce un booleano true o false (estas son palabras reservadas sólo en C++; en C una expresión es verdadera( true) si se evalúa con un valor diferente de cero). Otros operadores condicionales son >, <, >=, etc.
  • 20. if-else • La sentencia if-else puede existir de dos formas: con o sin el else. Las dos formas son: