ELO320 - Estructuras de Datos y Algoritmos
Introducción a C
Funciones en C
Dr. Nicolás Gálvez R.
[email protected] Ing. Civil Telemática - Departamento de Electrónica
1er Semestre 2024
1/30
Clase Activa
Funciones
Clase Activa: Módulo 1
Ejercicio 1.1
Cree una función, sin recibir parámetros ni retorna valores, que
salude por pantalla al usuario. Utilicela en la función main().
Aprendemos: Declaración y uso de función, función sin retorno, tipo de dato void.
2/30
Clase Activa
Funciones
Clase Activa: Módulo 1
Ejercicio 1.2
Cree una función que solicite por pantalla al usuario un número
entero y lo retorne. Utilicela en la función main(), almacenando
dicho valor en una variable y mostrándola por pantalla.
Aprendemos: Declaración y uso de función, función con retorno, diferencia printf vs return.
3/30
Clase Activa
Funciones
Clase Activa: Módulo 2
Responda a las preguntas expuestas en los comentarios de los
siguientes códigos. Esta actividad será resuelta en clases junto al
profesor.
Aprendemos: Variables globales, variables locales, ámbito, ciclo de vida de una variable.
4/30
Clase Activa
Funciones
Clase Activa: Módulo 2
Ejercicio 2.1
#i n c l u d e <s t d i o . h>
#i n c l u d e <math . h> // p a r a f u n c i ón power
float potencia ( float a , float b );
i n t main ( ) {
int x = 5 , y = 6;
float calculo = x ∗ potencia (y , 2.5);
// ac á s e h a c e n má s c o s a s
return 0;
}
// ¿Cuá l e s e l p r o b l e m a d e l c ó d i g o ?
5/30
Clase Activa
Funciones
Clase Activa: Módulo 2
Ejercicio 2.2
#i n c l u d e <s t d i o . h>
#i n c l u d e <math . h> // p a r a f u n c i ón power
i n t main ( ) {
int x = 5 , y = 6;
float calculo = x ∗ potencia (y , 2.5);
// ac á s e h a c e n má s c o s a s
return 0;
}
float potencia ( float a , float b) {
r e t u r n power ( a , b ) ;
}
// ¿Cuá l e s e l p r o b l e m a d e l c ó d i g o ?
6/30
Clase Activa
Funciones
Clase Activa: Módulo 2
Ejercicio 2.3
#i n c l u d e <s t d i o . h>
#i n c l u d e <math . h> // p a r a f u n c i ón power
float potencia ( float a , float b) {
r e t u r n power ( a , b ) ;
}
i n t main ( ) {
int x = 5 , y = 6;
int calculo = x ∗ potencia (y , 2.5);
// ac á s e h a c e n má s c o s a s
return 0;
}
// ¿Cuá l e s e l p r o b l e m a d e l c ó d i g o ?
7/30
Clase Activa
Funciones
Clase Activa: Módulo 2
Ejercicio 2.4
#i n c l u d e <s t d i o . h>
#d e f i n e N 10
i n t main ( ) {
const i n t n = 5;
n = 1 0 ; // ¿Cómo a c t ú a e l c o m p i l a d o r ?
p r i n t f ( ” %d\n” , n∗N ) ;
return 0;
// ¿Cuá l e s e l p r o b l e m a d e l c ó d i g o ?
// ¿Qué d i f e r e n c i a a n de N?
}
8/30
Clase Activa
Funciones
Clase Activa: Módulo 2
Ejercicio 2.5
#i n c l u d e <s t d i o . h>
i n t main ( ) {
i n t i =10;
i f ( i ==10){
int i = 5;
}
p r i n t f ( ” E l v a l o r de i e s : %d\n” , i ) ;
// ¿Qué v a l o r i m p r i m e ?
return 0;
}
9/30
Clase Activa
Funciones
Clase Activa: Módulo 2
Ejercicio 2.6
#i n c l u d e <s t d i o . h>
void saludo (){
int i = 5;
p r i n t f ( ” Hola , numero %d” , i ) ;
}
i n t main ( ) {
int i = 10;
saludo ( ) ;
p r i n t f ( ” Hola , ¿ qu é t a l ? , numero %d\n” , i ) ;
return 0;
}
// ¿Qué i m p r i m e e s t e c ó d i g o ?
10/30
Clase Activa
Funciones
Clase Activa: Módulo 2
Ejercicio 2.7
#i n c l u d e <s t d i o . h>
i n t a =1;
i n t b =2;
i n t main ( ) {
int a = 10;
b++;
p r i n t f ( ” %d %d\n” , a , b ) ;
return 0;
}
// ¿Qué i m p r i m e e s t e c ó d i g o ?
11/30
Clase Activa
Funciones
Clase Activa: Módulo 3
Ejercicio 3.1
Cree una función que reciba como parámetro una temperatura en
grados Kelvin y retorne la temperatura en grados Celsius.
◦
K = ◦ C + 273,15
Aprendemos: Parámetros, valor de retorno.
12/30
Clase Activa
Funciones
Clase Activa: Módulo 3
Ejercicio 3.2
Cree una función que reciba como parámetro una temperatura, su
tipo (Celsius, Fahrenheit o Kelvin), y un tipo de temperatura de
salida diferente. La función debe retornar la temperatura en la
opción de salida ingresada.
◦ 5
C= × (◦ F − 32)
9
Aprendemos: Parámetros, valor de retorno.
13/30
Clase Activa
Funciones
Clase Activa: Módulo 3
Ejercicio 3.3
Cree un programa que pregunte por pantalla un tipo de
temperatura y un valor, y luego pregunte en que otra unidad quiere
como transformarlo. (por ejemplo, inicia como Kelvin, y se entrega
Celsius o Fahrenheit). Debe usar las funciones creadas en el
Ejercicio 3.1 y 3.2. Además, puede crear más funciones.
◦ 9
F = × (◦ K − 273,15) + 32
5
Aprendemos: Modularización, Uso de funciones, construcción basada en funciones.
14/30
Clase Activa
Funciones
Clase Activa: Módulo Desafı́o
Ejercicio Desafı́o
Cree una función que reciba como parámetro un dı́a de la semana
y retorne un número que represente a dicho dı́a.
Aprendemos: Modularización, Uso de funciones, construcción basada en funciones.
15/30
Clase Activa
Funciones
Clase Activa: Módulo Desafı́o
Ejercicio Desafı́o
Cree una función que reciba como parámetro un número y retorne
el nombre del dı́a de la semana al que éste representa.
Aprendemos: Modularización, Uso de funciones, construcción basada en funciones.
16/30
Clase Activa
Funciones
Clase Activa: Módulo 4
Ejercicio Desafı́o
Cree un programa que pregunte un dı́a de la semana y luego una
cantidad X de dı́as. El programa debe retornar el dı́a de la semana
que será en X dı́as. Debe utilizar las dos funciones diseñadas
anteriormente.
Aprendemos: Modularización, Uso de funciones, construcción basada en funciones.
17/30
Clase Activa
Funciones
Información de Vital
Importancia para la Clase
Activa1.
1
Depende exclusivamente de uds. leerla y comprenderla.
18/30
Macros y Constantes
Clase Activa
Ámbito
Funciones
Var. Global y Var. Local
Funciones en C
Encapsula código.
Permite reutilizar código.
Se pueden compilar por separado.
Retorna siempre un tipo de dato especı́fico.
19/30
Macros y Constantes
Clase Activa
Ámbito
Funciones
Var. Global y Var. Local
Funciones en C
Se puede separar interfaz (prototipo) de implementación.
Interfaz (prototipo): Sólo define existencia y formato de
función. Suficiente para ser invocada.
C
// t i p o r e t o r n o f u n c i o n ( p a r a m e t r o s con o s i n nombre ) ;
float potencia ( float a , float b );
// . . . .
calculo = x ∗ potencia (y , 2.5);
20/30
Macros y Constantes
Clase Activa
Ámbito
Funciones
Var. Global y Var. Local
Funciones en C
Implementación: Define implementación de código de
función.
C
/∗ t i p o r e t o r n o f u n c i o n ( p a r a m e t r o s con nombre ) {
∗ Implementacion . . .
}∗/
float potencia ( float a , float b) {
r e t u r n power ( a , b ) ;
}
21/30
Macros y Constantes
Clase Activa
Ámbito
Funciones
Var. Global y Var. Local
Funciones en C
Si se utiliza solamente la implementación, está tiene que estar
definida antes de la función que la utiliza.
Si se utiliza el prototipo, es éste el que debe estar defindo
antes de la función que la usa.
Prototipo + Implementación: libertad de ubicación de la
implementación → diferentes archivos.
22/30
Macros y Constantes
Clase Activa
Ámbito
Funciones
Var. Global y Var. Local
Funciones en Python
Python sólo permite implementación, sin prototipos.
Python
def nombre funcion ( parametros ) :
#. . . Implementacion
r e t u r n <e x p r e s i o n >
23/30
Macros y Constantes
Clase Activa
Ámbito
Funciones
Var. Global y Var. Local
Macro
Una macro es un valor o conjuntos de instrucciones constantes que
se definen a nivel de preprocesamiento. No es una variable y no
puede ser modificada.
C
#i n c l u d e <s t d i o . h>
#d e f i n e MACRO 10
i n t main ( ) {
int a = 5;
p r i n t f ( ” %” s \n” , a ∗MACRO) ;
}
24/30
Macros y Constantes
Clase Activa
Ámbito
Funciones
Var. Global y Var. Local
Constante
Una variable constante es aquella que se declara con el keyword
const, e implica que ésta no puede ser modificada. Tiene todo el
resto de las propiedades de una variable común.
C
#i n c l u d e <s t d i o . h>
i n t main ( ) {
const i n t a = 5;
a = 1 0 ; // ¿Cómo a c t ú a e l c o m p i l a d o r ?
p r i n t f ( ” %d\n” , a ) ;
}
25/30
Macros y Constantes
Clase Activa
Ámbito
Funciones
Var. Global y Var. Local
Ámbito (Scope)
Las funciones (includa main) definen el alcance de las variables,
llamado ámbito, vale decir, el segmento en el cual existen y
pueden ser usadas → entre { y }.
C
#i n c l u d e <s t d i o . h>
v o i d s a l u d o ( ) { // v a r i s i r v e s ó l o d e n t r o de f u n c i ón s a l u d o .
int i = 5;
p r i n t f ( ” H o l a alumno numero %d” , i ) ;
}
i n t main ( ) { // v a r a s i r v e s ó l o d e n t r o de f u n c i ón main .
int a = 10;
saludo ( ) ;
p r i n t f ( ” %d\n” , a ) ;
return 0;
}
26/30
Macros y Constantes
Clase Activa
Ámbito
Funciones
Var. Global y Var. Local
Variable local
Una variable local, es aquella que está definida dentro de un
ámbito determinado, vale decir, entre llaves { y }.
Esto aplica para todo elemento que contenga llaves, incluida
funciones y estructuras de control.
27/30
Macros y Constantes
Clase Activa
Ámbito
Funciones
Var. Global y Var. Local
Variable local
C
#i n c l u d e <s t d i o . h>
i n t main ( ) { // v a r a s i r v e s ó l o d e n t r o de f u n c i ón main .
int a = 10;
i f ( a==10){
int b = 1;
p r i n t f ( ” %d %d\n” , a , b ) ;
}
// ¿Qué p a s a con l a v a r i a b l e b ?
p r i n t f ( ” %d %d\n” , a , b ) ;
return 0;
}
28/30
Macros y Constantes
Clase Activa
Ámbito
Funciones
Var. Global y Var. Local
Variable Global
Una variable global, es aquella que está definida fuera de
cualquier ámbito.
Puede ser llamada, modificada y utilizada desde cualquier ámbito,
siempre y cuando no exista una variable local con el mismo
nombre.
29/30
Macros y Constantes
Clase Activa
Ámbito
Funciones
Var. Global y Var. Local
Variable Global
C
#i n c l u d e <s t d i o . h>
i n t a =1; // g l o b a l
i n t b =2; // g l o b a l
i n t main ( ) {
i n t a = 1 0 ; // l o c a l
b++;
p r i n t f ( ” %d %d\n” , a , b ) ; // ¿Qué i m p r i m e ?
return 0;
}
En python, no se pueden modificar variables globales dentro de una
función.
30/30