SlideShare una empresa de Scribd logo
Programación 1
Funciones en C
Angel Vázquez-Patiño
angel.vazquezp@ucuenca.edu.ec
Departamento de Ciencias de la Computación
Universidad de Cuenca
14 de septiembre de 2017
14/09/17 Angel Vázquez-Patiño 2/51
Objetivos
1) Conocer el concepto de función
2) Conocer el concepto de parámetro/argumento
3) Implementar funciones en C
4) Tener una primera aproximación al concepto
de puntero
5) Entender las llamadas de funciones por valor y
por referencia
6) Entender las reglas de ámbito de las variables
14/09/17 Angel Vázquez-Patiño 3/51
Funciones y parámetros
14/09/17 Angel Vázquez-Patiño 4/51
Divide et impera
Resolver un problema difícil dividiéndole en
partes más simples
14/09/17 Angel Vázquez-Patiño 5/51
Divide et impera
Tantas veces hasta que la resolución sea obvia
14/09/17 Angel Vázquez-Patiño 6/51
Función
Definición
●
Subalgoritmo, parte de un algoritmo principal
que permite resolver una tarea específica
●
Puede ser invocada desde otras partes del
algoritmo cuantas veces se necesite
●
Puede recibir valores (parámetros o
argumentos)
●
Puede devolver valores
14/09/17 Angel Vázquez-Patiño 7/51
Función
5 25
14/09/17 Angel Vázquez-Patiño 8/51
Función
Función resultado <- Potencia (base, exponente)
resultado <- base ^ exponente;
FinFunción
Algoritmo funcionPotencia
Definir base, exponente Como Entero;
Escribir "Ingrese Base: ";
Leer base;
Escribir "Ingrese Exponente: ";
Leer exponente;
Escribir "Resultado: ", Potencia(base, exponente);
FinAlgoritmo
14/09/17 Angel Vázquez-Patiño 9/51
1 #include<stdio.h>
2 // prototipo/declaración de función
3 float cuadrado(float x);
4 int main( ){
5 float m, n ;
6 scanf ("%f", &m) ;
7 n = cuadrado (m) ; // llamada
8 }
9 // definición
10 float cuadrado(float x){
11 float p = x * x;
12 return p;
13 }
14/09/17 Angel Vázquez-Patiño 10/51
Función
Cómo nombrar una función
●
Letras del alfabeto inglés, dígitos y el carácter _
●
El primer carácter no puede ser número
●
No usar palabras reservadas
●
Usar nombres descriptivos (nemotécnicos)
●
No usar el mismo nombre de las funciones para
variables ni viceversa
●
No usar espacios
14/09/17 Angel Vázquez-Patiño 11/51
Ejemplo guiado 1
Problema: calcular el cubo de un número
int cubo(int num)
{
return num*num*num;
}
Nombre ParámetroTipoTipo
Para devolver un valor
14/09/17 Angel Vázquez-Patiño 12/51
Ejemplo guiado 1
#include<stdio.h> // Uso de la función
int cubo(int num);
int main(){
int m, n;
printf("Número: "); scanf("%d", &m);
n = cubo(m);
printf ("El cubo de %d es %d.", m,
n);
}
int cubo(int num){ return num*num*num; }
14/09/17 Angel Vázquez-Patiño 13/51
Ejemplo guiado 1
#include<stdio.h> // Otra forma de llamar
int cubo(int num);
int main(){
int m;
printf("Número: "); scanf("%d", &m);
printf("%d^%d", m, cubo(m));
}
int cubo(int num){ return num*num*num; }
14/09/17 Angel Vázquez-Patiño 14/51
Ejemplo guiado 2
Problema: calcular el área de un triángulo
●
Para más parámetros, se separa con coma
int areaTriangulo(int base,int altura)
{
return base*altura;
}
14/09/17 Angel Vázquez-Patiño 15/51
Ejemplo guiado 2
#include<stdio.h>
int areaTriangulo(int base, int altura);
int main(){
int b, a;
printf("Base: "); scanf("%d", &b);
printf("Altura: "); scanf("%d", &a);
printf("Área: %d", areaTriangulo(b, a));
}
int areaTriangulo(int base, int altura)
{ return base*altura; }
14/09/17 Angel Vázquez-Patiño 16/51
Ejemplo guiado 3
Problema: calcular 5!
●
Es posible usar funciones sin parámetros
#include<stdio.h>
int factorial5();
int main(){
printf("5!: %d", factorial5());
}
int factorial5(){return 5*4*3*2;}
14/09/17 Angel Vázquez-Patiño 17/51
Ejemplo guiado 4
Problema: mostrar la tabla de multiplicar (1-10) de
un número
●
Una función no necesariamente devuelve un
valor
● En C se usa void para indicar que la función
no devuelve ningún valor. Y no se usa nunca
return (porque nunca se devuelve nada)
14/09/17 Angel Vázquez-Patiño 18/51
Ejemplo guiado 4
#include<stdio.h>
void tablaMultiplicar(int num);
int main(){ tablaMultiplicar(8); }
void tablaMultiplicar(int num){
for(int i=1; i<11; i++)
printf("%d x %d = %dn", num, i,
num*i);
}
14/09/17 Angel Vázquez-Patiño 19/51
Ejemplo guiado 5
Problema: mostrar la tabla de multiplicar del 7
●
Se puede definir funciones sin parámetros
#include<stdio.h>
void tabla7();
int main(){ tabla7(); }
void tabla7(){
for(int i=1; i<11; i++)
printf("7 x %d = %dn", i,
7*i);}
14/09/17 Angel Vázquez-Patiño 20/51
Ejercicio propuesto 1
●
Implementar una función que reciba un número
entero y devuelva True si dicho valor es impar
y False si es par
●
Utilizar un nombre adecuado para la función,
i.e., un nombre nemotécnico
14/09/17 Angel Vázquez-Patiño 21/51
Ejercicio propuesto 1
#include<stdio.h>
_Bool esImpar(int n);
int main(){
int num;
printf("Número: "); scanf("%d", &num);
printf(esImpar(num)==0?"nImpar: F":"nImpar: T");
}
_Bool esImpar(int n){
if(n%2 != 0)
return 1;
return 0;}
14/09/17 Angel Vázquez-Patiño 22/51
Ejercicio propuesto 2
●
Implementar una función que reciba un número
entero e imprima en pantalla los valores
anterior y posterior a ese número
●
Utilizar un nombre adecuado para la función,
i.e., un nombre nemotécnico
14/09/17 Angel Vázquez-Patiño 23/51
Ejercicio propuesto 2
#include<stdio.h>
void antPos(int n);
int main(){
int num;
printf("Número: "); scanf("%d", &num);
antPos(num);}
void antPos(int n){
printf("Anterior: %d.n", n-1);
printf("Posterior: %d.", n+1);}
14/09/17 Angel Vázquez-Patiño 24/51
Llamada de funciones por valor y
por referencia
14/09/17 Angel Vázquez-Patiño 25/51
Llamada por valor y por referencia
Llamada por referencia
●
La dirección de la variable es pasada a la
función como parámetro
●
El valor del parámetro puede ser modificado
●
El mismo espacio de memoria es usado en la
función y desde donde se llama
14/09/17 Angel Vázquez-Patiño 26/51
Llamada por valor y por referencia
Puntero
●
Variable que contiene la dirección de memoria
de un dato o de otra variable que contiene al
dato en un arreglo
●
Apunta al espacio físico donde está el dato o la
variable
●
Vea https://youtu.be/YqoV6UMQEcE
14/09/17 Angel Vázquez-Patiño 27/51
Llamada por valor y por referencia
Puntero
●
Muchas de las funciones estándares de C,
trabajan con punteros, e.g. scanf y strcpy
char a;
scanf ("%c",&a);
14/09/17 Angel Vázquez-Patiño 28/51
Llamada por valor y por referencia
Declaración de punteros
●
Igual que cualquier otra variable, pero
anteponiendo un * antes del nombre de la
variable
tipo *NombrePuntero;
14/09/17 Angel Vázquez-Patiño 29/51
1 #include <stdio.h>
2 int main(){
3 int a=0; int *punt;
4 punt=&a;//Asigna dir memori de a
5 printf("Valor de a: %d. nValor de
*punt: %d. n", a, *punt);
6 printf("Dirección de memoria de
*punt: %p", punt);
7 printf("nDirección de memoria de a
(&a): %p", &a);
8 }
14/09/17 Angel Vázquez-Patiño 30/51
#include<stdio.h>
void swap(int *a, int *b);
int main(){
int m = 22, n = 44;
printf("Antes m = %d y n = %dn", m, n);
swap(&m, &n);
printf("Después m = %d y n = %dn", m, n);}
void swap(int *a, int *b){
int tmp = *a;
*a = *b;
*b = tmp;
printf("Función a = %d y b = %dn", *a, *b);}
14/09/17 Angel Vázquez-Patiño 31/51
#include<stdio.h>
void swap(int a, int b);
int main(){
int m = 22, n = 44;
printf("Antes m = %d y n = %dn", m, n);
swap(m, n);
printf("Después m = %d y n = %dn", m, n);}
void swap(int a, int b){
int tmp = a;
a = b;
b = tmp;
printf("Función a = %d y b = %dn", a, b);}
14/09/17 Angel Vázquez-Patiño 32/51
Funciones que devuelven un arreglo
14/09/17 Angel Vázquez-Patiño 33/51
1 #include <stdio.h>
2 int * obtenerPares(int n){
3 // Arreglo entero stático local
4 static int arregloPares[100];
5 for(int i=0; i<n; i++)
6 arregloPares[i] = (i+1)*2;
7 // devuelve base address de arregloPares
8 return arregloPares;}
9 int main(){
10 int *arreglo; arreglo = obtenerPares(10);
11 for(int cont=0; cont<10; cont++)
12 printf("%dn", arreglo[cont]);}
14/09/17 Angel Vázquez-Patiño 34/51
Ejercicio propuesto 3 (1)
//****************************************
num <- divisor
a_d <- num
Repetir
num <- a_d
a_d <- 0
Mientras num > 0 Hacer
a_d <- a_d + num MOD 10
num <- trunc(num / 10)
FinMientras
Hasta Que a_d < 10
//********************************************
num <- cociente
ac <- num
Repetir
num <- ac
ac <- 0
Mientras num > 0 Hacer
ac <- ac + num MOD 10
num <- trunc(num / 10)
FinMientras
Hasta Que ac < 10
Algoritmo pruebaDelNueve
// Versión de Angel Vázquez
Leer dividendo
Leer divisor
cociente <- trunc(dividendo / divisor)
residuo <- dividendo MOD divisor
//****************************************
num <- dividendo
aD <- num
Repetir
num <- aD
aD <- 0
Mientras num > 0 Hacer
aD <- aD + num MOD 10
num <- trunc(num / 10)
FinMientras
Hasta Que aD < 10
14/09/17 Angel Vázquez-Patiño 35/51
Ejercicio propuesto 3 (2)
num <- residuo
ar <- num
Repetir
num <- ar
ar <- 0
Mientras num > 0 Hacer
ar <- ar + num MOD 10
num <- trunc(num / 10)
FinMientras
Hasta Que ar < 10
//***********************
num <- a_d * ac + ar
a_dc_r <- num
Repetir
num <- a_dc_r
a_dc_r <- 0
Mientras num > 0 Hacer
a_dc_r <- a_dc_r + num MOD 10
num <- trunc(num / 10)
FinMientras
Hasta Que a_dc_r < 10
//****************************************
Escribir "Dividendo: ", dividendo, ". Suma: ", aD
Escribir "Divisor : ", divisor, ". Suma: ", a_d
Escribir "Cociente : ", cociente, ". Suma: ", ac
Escribir "Residuo : ", residuo, ". Suma: ", ar
Escribir " "
Escribir " D = d * c + r -> ", aD, " = ",
a_dc_r
Escribir " "
Si aD = a_dc_r Entonces
Escribir " División correcta."
Sino
Escribir " División incorrecta."
Fin Si
FinAlgoritmo
14/09/17 Angel Vázquez-Patiño 36/51
Ámbito de las variables
14/09/17 Angel Vázquez-Patiño 37/51
Ámbito de las variables
Ámbito
●
Región del programa donde una variable definida
puede tener su existencia y más allá de esa
variable no puede ser accedida
Tres lugares donde se pueden declarar en C
1) Dentro de una función o bloque, variables locales
2) Fuera de todas las funciones, variables globales
3) En la definición de los parámetros de la función,
parámetros formales
14/09/17 Angel Vázquez-Patiño 38/51
Ámbito de las variables
Variables locales
●
Declaradas dentro de una función o bloque
●
Pueden ser usadas sólo por sentencias que
están dentro de esa función o bloque de código
●
No son conocidas por funciones fuera de donde
fueron declaradas
14/09/17 Angel Vázquez-Patiño 39/51
1 #include <stdio.h>
2 int main() {
3 /* declaración de variables locales */
4 int a, b;
5 int c;
6 /* inicialización */
7 a = 10; b = 20; c = a + b;
8 printf("a: %d, b: %d y c: %d",a,b,c);
9 return 0;
10 }
14/09/17 Angel Vázquez-Patiño 40/51
Ámbito de las variables
Variables globales
●
Definidas fuera de una función, usualmente al
inicio del programa
●
Toman sus valores durante todo el tiempo de
vida del programa
●
Pueden ser accedidas dentro de cualquier
función definida en el programa
14/09/17 Angel Vázquez-Patiño 41/51
1 #include <stdio.h>
2 /* declaración de variable global */
3 int g;
4 int main() {
5 /* declaración de variables locales */
6 int a, b;
7 /* inicialización */
8 a = 10; b = 20; g = a + b;
9 printf("a: %d, b: %d y g: %d", a, b, g);
10 return 0;
11 }
14/09/17 Angel Vázquez-Patiño 42/51
Ámbito de las variables
Variables globales
●
Un programa puede tener el mismo nombre
para una variable local y una variable global
●
El valor de la variable local dentro de una
función tendrá la preferencia
14/09/17 Angel Vázquez-Patiño 43/51
1 #include <stdio.h>
2 /* declaración de variable global */
3 int g = 20;
4 int main()
5 {
6 /* declaración de variable local */
7 int g = 10;
8 printf("g: %d.n", g);
9 return 0;
10 }
14/09/17 Angel Vázquez-Patiño 44/51
Ámbito de las variables
Parámetros formales
●
Son tratados como variables locales dentro de
una función y toman la precedencia por encima
de cualquier variable global
14/09/17 Angel Vázquez-Patiño 45/51
1 #include <stdio.h>
2 int a = 20;
3 int main(){
4 int a = 10; int b = 20; int c = 0;
5 printf("a en main(): %d.n", a);
6 c = sumar(a, b);
7 printf("c en main(): %d.n", c);
8 return 0;}
9 int sumar(int a, int b){
10 printf("a en sumar(): %d.n", a);
11 printf("b en sumar(): %d.n", b);
12 return a + b;}
14/09/17 Angel Vázquez-Patiño 46/51
Ámbito de las variables
Inicialización de variables locales y globales
●
Cuando se define una variable local, no es
inicializada por el sistema. El programador la
debe inicializar
●
Cuando se define una variable global, es
inicializada automáticamente por el sistema
14/09/17 Angel Vázquez-Patiño 47/51
Ámbito de las variables
Tipo de dato Valor inicial por
defecto
int 0
char ‘0’
float 0
double 0
pointer NULL
14/09/17 Angel Vázquez-Patiño 48/51
Ámbito de las variables
Inicialización de variables locales y globales
Es una buena práctica de programación
inicializar las variables apropiadamente, de otro
modo el programa puede producir resultados
inesperados porque las variables no inicializadas
tomarán valores basura ya disponibles en sus
posiciones de memoria
14/09/17 Angel Vázquez-Patiño 49/51
Conceptos y términos importantes
●
Palabras reservadas de C que no pueden ser
usadas como nombres de funciones
●
Punteros: obtención del valor del espacio de
memoria y la dirección del espacio de memoria
●
Llamado de función por valor y por referencia
●
Funciones que devuelven un arreglo
●
Reglas del ámbito de una variable
14/09/17 Angel Vázquez-Patiño 50/51
Referencias
●
C programming tutorial,
http://fresh2refresh.com/c-programming/
●
Departamento de Ciencias de la Computación, 2016.
Guía de aprendizaje del MOOC de Fundamentos de
Programación: parte II. Universidad de Cuenca,
Cuenca, Ecuador.
●
Plataforma MOOC Cedia, https://goo.gl/VDWwKV
●
Programación en C/Punteros, https://goo.gl/Wqx2Pa
●
Return array from function in C, https://goo.gl/YnlUbi
14/09/17 Angel Vázquez-Patiño 51/51
Preguntas

Más contenido relacionado

La actualidad más candente

Estructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoEstructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigo
Rosbelia Balza
 
Serie Fibonacci en C
Serie Fibonacci en CSerie Fibonacci en C
Serie Fibonacci en C
Abraham
 
Guia de estructuras Condicionales
Guia de estructuras CondicionalesGuia de estructuras Condicionales
Guia de estructuras Condicionales
laryenso
 
4. estructuras selectivas
4. estructuras selectivas4. estructuras selectivas
4. estructuras selectivas
martell024
 
10. aplicaciones de las pilas
10. aplicaciones de las pilas10. aplicaciones de las pilas
10. aplicaciones de las pilas
Andreita Enriquez
 
5.1 estructura de una clase.
5.1 estructura de una clase.5.1 estructura de una clase.
5.1 estructura de una clase.
K Manuel TN
 

La actualidad más candente (20)

Arreglos vectores pseint
Arreglos vectores pseintArreglos vectores pseint
Arreglos vectores pseint
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Introducción a las funciones en el lenguaje C
Introducción a las funciones en el lenguaje CIntroducción a las funciones en el lenguaje C
Introducción a las funciones en el lenguaje C
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
1.3 uso de tipos de datos abstractos
1.3 uso de tipos de datos abstractos1.3 uso de tipos de datos abstractos
1.3 uso de tipos de datos abstractos
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
 
Estructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoEstructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigo
 
Serie Fibonacci en C
Serie Fibonacci en CSerie Fibonacci en C
Serie Fibonacci en C
 
Guia de estructuras Condicionales
Guia de estructuras CondicionalesGuia de estructuras Condicionales
Guia de estructuras Condicionales
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 
Funciones de entrada y salida
Funciones de entrada y salidaFunciones de entrada y salida
Funciones de entrada y salida
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
4. estructuras selectivas
4. estructuras selectivas4. estructuras selectivas
4. estructuras selectivas
 
Sintaxis del lenguaje c++
Sintaxis del lenguaje c++Sintaxis del lenguaje c++
Sintaxis del lenguaje c++
 
PRUEBAS Y DEPURACIÓN
PRUEBAS Y DEPURACIÓNPRUEBAS Y DEPURACIÓN
PRUEBAS Y DEPURACIÓN
 
10. aplicaciones de las pilas
10. aplicaciones de las pilas10. aplicaciones de las pilas
10. aplicaciones de las pilas
 
5.1 estructura de una clase.
5.1 estructura de una clase.5.1 estructura de una clase.
5.1 estructura de una clase.
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria Estatica
 

Destacado

Destacado (7)

Programación 1: algoritmos
Programación 1: algoritmosProgramación 1: algoritmos
Programación 1: algoritmos
 
Programación 1: estructuras de control
Programación 1: estructuras de controlProgramación 1: estructuras de control
Programación 1: estructuras de control
 
Programación 1: introducción a C
Programación 1: introducción a CProgramación 1: introducción a C
Programación 1: introducción a C
 
Programación 1: tipos básicos de datos en C
Programación 1: tipos básicos de datos en CProgramación 1: tipos básicos de datos en C
Programación 1: tipos básicos de datos en C
 
Machine learning: aprendizaje basado en árboles de decisión
Machine learning: aprendizaje basado en árboles de decisiónMachine learning: aprendizaje basado en árboles de decisión
Machine learning: aprendizaje basado en árboles de decisión
 
Teoría de redes: presentación
Teoría de redes: presentaciónTeoría de redes: presentación
Teoría de redes: presentación
 
Machine learning: presentación
Machine learning: presentaciónMachine learning: presentación
Machine learning: presentación
 

Similar a Programación 1: funciones en C

Algoritmos - Funciones C++
Algoritmos - Funciones C++ Algoritmos - Funciones C++
Algoritmos - Funciones C++
Ronal Palomino
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
cemayoral
 
Computacion punteros
Computacion punterosComputacion punteros
Computacion punteros
Manuel
 
Informe técnico 1
Informe técnico 1Informe técnico 1
Informe técnico 1
Saya Paredes
 

Similar a Programación 1: funciones en C (20)

Tema 2 - Programación básica en C (III)
Tema 2  - Programación básica en C (III)Tema 2  - Programación básica en C (III)
Tema 2 - Programación básica en C (III)
 
Introduccion a C++
Introduccion a C++Introduccion a C++
Introduccion a C++
 
Ejemplos_funciones.pdf
Ejemplos_funciones.pdfEjemplos_funciones.pdf
Ejemplos_funciones.pdf
 
07 funciones
07 funciones07 funciones
07 funciones
 
Informe tecnicou1
Informe tecnicou1Informe tecnicou1
Informe tecnicou1
 
Practicas bloque 2
Practicas bloque 2Practicas bloque 2
Practicas bloque 2
 
Informe tecnico
Informe tecnicoInforme tecnico
Informe tecnico
 
Algoritmos - Funciones C++
Algoritmos - Funciones C++ Algoritmos - Funciones C++
Algoritmos - Funciones C++
 
Cpp
CppCpp
Cpp
 
Cpp
CppCpp
Cpp
 
Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
 
Computacion punteros
Computacion punterosComputacion punteros
Computacion punteros
 
Escuela
EscuelaEscuela
Escuela
 
Escuela
EscuelaEscuela
Escuela
 
Uni3 estructura-general-de-un-programa-cont
Uni3 estructura-general-de-un-programa-contUni3 estructura-general-de-un-programa-cont
Uni3 estructura-general-de-un-programa-cont
 
Informe técnico 1
Informe técnico 1Informe técnico 1
Informe técnico 1
 
Laboratorio1 entrada-salida de datos / Lenguance C
Laboratorio1   entrada-salida de datos / Lenguance CLaboratorio1   entrada-salida de datos / Lenguance C
Laboratorio1 entrada-salida de datos / Lenguance C
 
Lenguaje c neo
Lenguaje c neoLenguaje c neo
Lenguaje c neo
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 

Más de Angel Vázquez Patiño

Causality and climate networks approaches for evaluating climate models, trac...
Causality and climate networks approaches for evaluating climate models, trac...Causality and climate networks approaches for evaluating climate models, trac...
Causality and climate networks approaches for evaluating climate models, trac...
Angel Vázquez Patiño
 

Más de Angel Vázquez Patiño (20)

Funciones, límites y continuidad
Funciones, límites y continuidadFunciones, límites y continuidad
Funciones, límites y continuidad
 
Integral definida e integración
Integral definida e integraciónIntegral definida e integración
Integral definida e integración
 
Valores extremos y comportamiento de las funciones y de sus gráficas
Valores extremos y comportamiento de las funciones y de sus gráficasValores extremos y comportamiento de las funciones y de sus gráficas
Valores extremos y comportamiento de las funciones y de sus gráficas
 
Derivada y diferenciación
Derivada y diferenciaciónDerivada y diferenciación
Derivada y diferenciación
 
Causality and climate networks approaches for evaluating climate models, trac...
Causality and climate networks approaches for evaluating climate models, trac...Causality and climate networks approaches for evaluating climate models, trac...
Causality and climate networks approaches for evaluating climate models, trac...
 
Diferencias finitas y Ecuación de calor
Diferencias finitas y Ecuación de calorDiferencias finitas y Ecuación de calor
Diferencias finitas y Ecuación de calor
 
Puntos ordinarios y singularidades de una EDO lineal
Puntos ordinarios y singularidades de una EDO linealPuntos ordinarios y singularidades de una EDO lineal
Puntos ordinarios y singularidades de una EDO lineal
 
La ecuación diferencial de Legendre
La ecuación diferencial de LegendreLa ecuación diferencial de Legendre
La ecuación diferencial de Legendre
 
Solución en series de y' = f(x,y)
Solución en series de y' = f(x,y)Solución en series de y' = f(x,y)
Solución en series de y' = f(x,y)
 
Métodos de resolución de EDOs mediante series
Métodos de resolución de EDOs mediante seriesMétodos de resolución de EDOs mediante series
Métodos de resolución de EDOs mediante series
 
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
 
Problemas que originan sistemas de ecuaciones
Problemas que originan sistemas de ecuacionesProblemas que originan sistemas de ecuaciones
Problemas que originan sistemas de ecuaciones
 
Linealización de sistemas de primer orden
Linealización de sistemas de primer ordenLinealización de sistemas de primer orden
Linealización de sistemas de primer orden
 
Sistemas de EDOs
Sistemas de EDOsSistemas de EDOs
Sistemas de EDOs
 
Método de la secante
Método de la secanteMétodo de la secante
Método de la secante
 
Iteraciones de punto fijo
Iteraciones de punto fijoIteraciones de punto fijo
Iteraciones de punto fijo
 
Objetos y variables en Python
Objetos y variables en PythonObjetos y variables en Python
Objetos y variables en Python
 
Definiciones de Error
Definiciones de ErrorDefiniciones de Error
Definiciones de Error
 
Fundamentos de Computación y Programación
Fundamentos de Computación y ProgramaciónFundamentos de Computación y Programación
Fundamentos de Computación y Programación
 
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
 

Último

matematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccionmatematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccion
alberto891871
 
PETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacionPETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacion
ctrlc3
 
MODULO DE MATEMATICAS BÁSICAS universidad UNAD.pdf
MODULO DE MATEMATICAS  BÁSICAS universidad UNAD.pdfMODULO DE MATEMATICAS  BÁSICAS universidad UNAD.pdf
MODULO DE MATEMATICAS BÁSICAS universidad UNAD.pdf
frankysteven
 
Algebra, Trigonometria y Geometria Analitica.pdf
Algebra, Trigonometria y Geometria Analitica.pdfAlgebra, Trigonometria y Geometria Analitica.pdf
Algebra, Trigonometria y Geometria Analitica.pdf
frankysteven
 

Último (20)

Los vidrios eléctricos en un automóvil.pptx
Los vidrios eléctricos en un automóvil.pptxLos vidrios eléctricos en un automóvil.pptx
Los vidrios eléctricos en un automóvil.pptx
 
Flujograma de gestión de pedidos de usuarios.
Flujograma de gestión de pedidos de usuarios.Flujograma de gestión de pedidos de usuarios.
Flujograma de gestión de pedidos de usuarios.
 
Presentación PISC Préstamos ISC Final.pdf
Presentación PISC Préstamos ISC Final.pdfPresentación PISC Préstamos ISC Final.pdf
Presentación PISC Préstamos ISC Final.pdf
 
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALESLA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
 
Criterios de la primera y segunda derivada
Criterios de la primera y segunda derivadaCriterios de la primera y segunda derivada
Criterios de la primera y segunda derivada
 
matematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccionmatematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccion
 
Sistemas de posicionamiento global (G.P.S.).pdf
Sistemas de posicionamiento global (G.P.S.).pdfSistemas de posicionamiento global (G.P.S.).pdf
Sistemas de posicionamiento global (G.P.S.).pdf
 
PETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacionPETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacion
 
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagneticoPresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
 
Mapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIASMapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIAS
 
Sistema de 4 barras articuladas bb_2.pdf
Sistema de 4 barras articuladas bb_2.pdfSistema de 4 barras articuladas bb_2.pdf
Sistema de 4 barras articuladas bb_2.pdf
 
DISEÑO DE LOSAS EN UNA DIRECCION (CONCRETO ARMADO II )
DISEÑO DE LOSAS EN UNA DIRECCION  (CONCRETO ARMADO II )DISEÑO DE LOSAS EN UNA DIRECCION  (CONCRETO ARMADO II )
DISEÑO DE LOSAS EN UNA DIRECCION (CONCRETO ARMADO II )
 
Tasaciones Ñuñoa - La Reina - Las Condes
Tasaciones Ñuñoa - La Reina - Las CondesTasaciones Ñuñoa - La Reina - Las Condes
Tasaciones Ñuñoa - La Reina - Las Condes
 
Efecto. Fotovoltaico y paneles.pdf
Efecto.     Fotovoltaico  y  paneles.pdfEfecto.     Fotovoltaico  y  paneles.pdf
Efecto. Fotovoltaico y paneles.pdf
 
Deilybeth Alaña - Operaciones Básicas - Construcción
Deilybeth Alaña - Operaciones Básicas - ConstrucciónDeilybeth Alaña - Operaciones Básicas - Construcción
Deilybeth Alaña - Operaciones Básicas - Construcción
 
MODULO DE MATEMATICAS BÁSICAS universidad UNAD.pdf
MODULO DE MATEMATICAS  BÁSICAS universidad UNAD.pdfMODULO DE MATEMATICAS  BÁSICAS universidad UNAD.pdf
MODULO DE MATEMATICAS BÁSICAS universidad UNAD.pdf
 
&PLC Ladder.pdf automatización industrial
&PLC Ladder.pdf automatización industrial&PLC Ladder.pdf automatización industrial
&PLC Ladder.pdf automatización industrial
 
Joseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidadJoseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidad
 
UNIVERSIDAD NACIONAL ALTIPLANO PUNO - FACULTAD DE INGENIERIA MECANICA ELECTRICA.
UNIVERSIDAD NACIONAL ALTIPLANO PUNO - FACULTAD DE INGENIERIA MECANICA ELECTRICA.UNIVERSIDAD NACIONAL ALTIPLANO PUNO - FACULTAD DE INGENIERIA MECANICA ELECTRICA.
UNIVERSIDAD NACIONAL ALTIPLANO PUNO - FACULTAD DE INGENIERIA MECANICA ELECTRICA.
 
Algebra, Trigonometria y Geometria Analitica.pdf
Algebra, Trigonometria y Geometria Analitica.pdfAlgebra, Trigonometria y Geometria Analitica.pdf
Algebra, Trigonometria y Geometria Analitica.pdf
 

Programación 1: funciones en C

  • 1. Programación 1 Funciones en C Angel Vázquez-Patiño angel.vazquezp@ucuenca.edu.ec Departamento de Ciencias de la Computación Universidad de Cuenca 14 de septiembre de 2017
  • 2. 14/09/17 Angel Vázquez-Patiño 2/51 Objetivos 1) Conocer el concepto de función 2) Conocer el concepto de parámetro/argumento 3) Implementar funciones en C 4) Tener una primera aproximación al concepto de puntero 5) Entender las llamadas de funciones por valor y por referencia 6) Entender las reglas de ámbito de las variables
  • 3. 14/09/17 Angel Vázquez-Patiño 3/51 Funciones y parámetros
  • 4. 14/09/17 Angel Vázquez-Patiño 4/51 Divide et impera Resolver un problema difícil dividiéndole en partes más simples
  • 5. 14/09/17 Angel Vázquez-Patiño 5/51 Divide et impera Tantas veces hasta que la resolución sea obvia
  • 6. 14/09/17 Angel Vázquez-Patiño 6/51 Función Definición ● Subalgoritmo, parte de un algoritmo principal que permite resolver una tarea específica ● Puede ser invocada desde otras partes del algoritmo cuantas veces se necesite ● Puede recibir valores (parámetros o argumentos) ● Puede devolver valores
  • 7. 14/09/17 Angel Vázquez-Patiño 7/51 Función 5 25
  • 8. 14/09/17 Angel Vázquez-Patiño 8/51 Función Función resultado <- Potencia (base, exponente) resultado <- base ^ exponente; FinFunción Algoritmo funcionPotencia Definir base, exponente Como Entero; Escribir "Ingrese Base: "; Leer base; Escribir "Ingrese Exponente: "; Leer exponente; Escribir "Resultado: ", Potencia(base, exponente); FinAlgoritmo
  • 9. 14/09/17 Angel Vázquez-Patiño 9/51 1 #include<stdio.h> 2 // prototipo/declaración de función 3 float cuadrado(float x); 4 int main( ){ 5 float m, n ; 6 scanf ("%f", &m) ; 7 n = cuadrado (m) ; // llamada 8 } 9 // definición 10 float cuadrado(float x){ 11 float p = x * x; 12 return p; 13 }
  • 10. 14/09/17 Angel Vázquez-Patiño 10/51 Función Cómo nombrar una función ● Letras del alfabeto inglés, dígitos y el carácter _ ● El primer carácter no puede ser número ● No usar palabras reservadas ● Usar nombres descriptivos (nemotécnicos) ● No usar el mismo nombre de las funciones para variables ni viceversa ● No usar espacios
  • 11. 14/09/17 Angel Vázquez-Patiño 11/51 Ejemplo guiado 1 Problema: calcular el cubo de un número int cubo(int num) { return num*num*num; } Nombre ParámetroTipoTipo Para devolver un valor
  • 12. 14/09/17 Angel Vázquez-Patiño 12/51 Ejemplo guiado 1 #include<stdio.h> // Uso de la función int cubo(int num); int main(){ int m, n; printf("Número: "); scanf("%d", &m); n = cubo(m); printf ("El cubo de %d es %d.", m, n); } int cubo(int num){ return num*num*num; }
  • 13. 14/09/17 Angel Vázquez-Patiño 13/51 Ejemplo guiado 1 #include<stdio.h> // Otra forma de llamar int cubo(int num); int main(){ int m; printf("Número: "); scanf("%d", &m); printf("%d^%d", m, cubo(m)); } int cubo(int num){ return num*num*num; }
  • 14. 14/09/17 Angel Vázquez-Patiño 14/51 Ejemplo guiado 2 Problema: calcular el área de un triángulo ● Para más parámetros, se separa con coma int areaTriangulo(int base,int altura) { return base*altura; }
  • 15. 14/09/17 Angel Vázquez-Patiño 15/51 Ejemplo guiado 2 #include<stdio.h> int areaTriangulo(int base, int altura); int main(){ int b, a; printf("Base: "); scanf("%d", &b); printf("Altura: "); scanf("%d", &a); printf("Área: %d", areaTriangulo(b, a)); } int areaTriangulo(int base, int altura) { return base*altura; }
  • 16. 14/09/17 Angel Vázquez-Patiño 16/51 Ejemplo guiado 3 Problema: calcular 5! ● Es posible usar funciones sin parámetros #include<stdio.h> int factorial5(); int main(){ printf("5!: %d", factorial5()); } int factorial5(){return 5*4*3*2;}
  • 17. 14/09/17 Angel Vázquez-Patiño 17/51 Ejemplo guiado 4 Problema: mostrar la tabla de multiplicar (1-10) de un número ● Una función no necesariamente devuelve un valor ● En C se usa void para indicar que la función no devuelve ningún valor. Y no se usa nunca return (porque nunca se devuelve nada)
  • 18. 14/09/17 Angel Vázquez-Patiño 18/51 Ejemplo guiado 4 #include<stdio.h> void tablaMultiplicar(int num); int main(){ tablaMultiplicar(8); } void tablaMultiplicar(int num){ for(int i=1; i<11; i++) printf("%d x %d = %dn", num, i, num*i); }
  • 19. 14/09/17 Angel Vázquez-Patiño 19/51 Ejemplo guiado 5 Problema: mostrar la tabla de multiplicar del 7 ● Se puede definir funciones sin parámetros #include<stdio.h> void tabla7(); int main(){ tabla7(); } void tabla7(){ for(int i=1; i<11; i++) printf("7 x %d = %dn", i, 7*i);}
  • 20. 14/09/17 Angel Vázquez-Patiño 20/51 Ejercicio propuesto 1 ● Implementar una función que reciba un número entero y devuelva True si dicho valor es impar y False si es par ● Utilizar un nombre adecuado para la función, i.e., un nombre nemotécnico
  • 21. 14/09/17 Angel Vázquez-Patiño 21/51 Ejercicio propuesto 1 #include<stdio.h> _Bool esImpar(int n); int main(){ int num; printf("Número: "); scanf("%d", &num); printf(esImpar(num)==0?"nImpar: F":"nImpar: T"); } _Bool esImpar(int n){ if(n%2 != 0) return 1; return 0;}
  • 22. 14/09/17 Angel Vázquez-Patiño 22/51 Ejercicio propuesto 2 ● Implementar una función que reciba un número entero e imprima en pantalla los valores anterior y posterior a ese número ● Utilizar un nombre adecuado para la función, i.e., un nombre nemotécnico
  • 23. 14/09/17 Angel Vázquez-Patiño 23/51 Ejercicio propuesto 2 #include<stdio.h> void antPos(int n); int main(){ int num; printf("Número: "); scanf("%d", &num); antPos(num);} void antPos(int n){ printf("Anterior: %d.n", n-1); printf("Posterior: %d.", n+1);}
  • 24. 14/09/17 Angel Vázquez-Patiño 24/51 Llamada de funciones por valor y por referencia
  • 25. 14/09/17 Angel Vázquez-Patiño 25/51 Llamada por valor y por referencia Llamada por referencia ● La dirección de la variable es pasada a la función como parámetro ● El valor del parámetro puede ser modificado ● El mismo espacio de memoria es usado en la función y desde donde se llama
  • 26. 14/09/17 Angel Vázquez-Patiño 26/51 Llamada por valor y por referencia Puntero ● Variable que contiene la dirección de memoria de un dato o de otra variable que contiene al dato en un arreglo ● Apunta al espacio físico donde está el dato o la variable ● Vea https://youtu.be/YqoV6UMQEcE
  • 27. 14/09/17 Angel Vázquez-Patiño 27/51 Llamada por valor y por referencia Puntero ● Muchas de las funciones estándares de C, trabajan con punteros, e.g. scanf y strcpy char a; scanf ("%c",&a);
  • 28. 14/09/17 Angel Vázquez-Patiño 28/51 Llamada por valor y por referencia Declaración de punteros ● Igual que cualquier otra variable, pero anteponiendo un * antes del nombre de la variable tipo *NombrePuntero;
  • 29. 14/09/17 Angel Vázquez-Patiño 29/51 1 #include <stdio.h> 2 int main(){ 3 int a=0; int *punt; 4 punt=&a;//Asigna dir memori de a 5 printf("Valor de a: %d. nValor de *punt: %d. n", a, *punt); 6 printf("Dirección de memoria de *punt: %p", punt); 7 printf("nDirección de memoria de a (&a): %p", &a); 8 }
  • 30. 14/09/17 Angel Vázquez-Patiño 30/51 #include<stdio.h> void swap(int *a, int *b); int main(){ int m = 22, n = 44; printf("Antes m = %d y n = %dn", m, n); swap(&m, &n); printf("Después m = %d y n = %dn", m, n);} void swap(int *a, int *b){ int tmp = *a; *a = *b; *b = tmp; printf("Función a = %d y b = %dn", *a, *b);}
  • 31. 14/09/17 Angel Vázquez-Patiño 31/51 #include<stdio.h> void swap(int a, int b); int main(){ int m = 22, n = 44; printf("Antes m = %d y n = %dn", m, n); swap(m, n); printf("Después m = %d y n = %dn", m, n);} void swap(int a, int b){ int tmp = a; a = b; b = tmp; printf("Función a = %d y b = %dn", a, b);}
  • 32. 14/09/17 Angel Vázquez-Patiño 32/51 Funciones que devuelven un arreglo
  • 33. 14/09/17 Angel Vázquez-Patiño 33/51 1 #include <stdio.h> 2 int * obtenerPares(int n){ 3 // Arreglo entero stático local 4 static int arregloPares[100]; 5 for(int i=0; i<n; i++) 6 arregloPares[i] = (i+1)*2; 7 // devuelve base address de arregloPares 8 return arregloPares;} 9 int main(){ 10 int *arreglo; arreglo = obtenerPares(10); 11 for(int cont=0; cont<10; cont++) 12 printf("%dn", arreglo[cont]);}
  • 34. 14/09/17 Angel Vázquez-Patiño 34/51 Ejercicio propuesto 3 (1) //**************************************** num <- divisor a_d <- num Repetir num <- a_d a_d <- 0 Mientras num > 0 Hacer a_d <- a_d + num MOD 10 num <- trunc(num / 10) FinMientras Hasta Que a_d < 10 //******************************************** num <- cociente ac <- num Repetir num <- ac ac <- 0 Mientras num > 0 Hacer ac <- ac + num MOD 10 num <- trunc(num / 10) FinMientras Hasta Que ac < 10 Algoritmo pruebaDelNueve // Versión de Angel Vázquez Leer dividendo Leer divisor cociente <- trunc(dividendo / divisor) residuo <- dividendo MOD divisor //**************************************** num <- dividendo aD <- num Repetir num <- aD aD <- 0 Mientras num > 0 Hacer aD <- aD + num MOD 10 num <- trunc(num / 10) FinMientras Hasta Que aD < 10
  • 35. 14/09/17 Angel Vázquez-Patiño 35/51 Ejercicio propuesto 3 (2) num <- residuo ar <- num Repetir num <- ar ar <- 0 Mientras num > 0 Hacer ar <- ar + num MOD 10 num <- trunc(num / 10) FinMientras Hasta Que ar < 10 //*********************** num <- a_d * ac + ar a_dc_r <- num Repetir num <- a_dc_r a_dc_r <- 0 Mientras num > 0 Hacer a_dc_r <- a_dc_r + num MOD 10 num <- trunc(num / 10) FinMientras Hasta Que a_dc_r < 10 //**************************************** Escribir "Dividendo: ", dividendo, ". Suma: ", aD Escribir "Divisor : ", divisor, ". Suma: ", a_d Escribir "Cociente : ", cociente, ". Suma: ", ac Escribir "Residuo : ", residuo, ". Suma: ", ar Escribir " " Escribir " D = d * c + r -> ", aD, " = ", a_dc_r Escribir " " Si aD = a_dc_r Entonces Escribir " División correcta." Sino Escribir " División incorrecta." Fin Si FinAlgoritmo
  • 36. 14/09/17 Angel Vázquez-Patiño 36/51 Ámbito de las variables
  • 37. 14/09/17 Angel Vázquez-Patiño 37/51 Ámbito de las variables Ámbito ● Región del programa donde una variable definida puede tener su existencia y más allá de esa variable no puede ser accedida Tres lugares donde se pueden declarar en C 1) Dentro de una función o bloque, variables locales 2) Fuera de todas las funciones, variables globales 3) En la definición de los parámetros de la función, parámetros formales
  • 38. 14/09/17 Angel Vázquez-Patiño 38/51 Ámbito de las variables Variables locales ● Declaradas dentro de una función o bloque ● Pueden ser usadas sólo por sentencias que están dentro de esa función o bloque de código ● No son conocidas por funciones fuera de donde fueron declaradas
  • 39. 14/09/17 Angel Vázquez-Patiño 39/51 1 #include <stdio.h> 2 int main() { 3 /* declaración de variables locales */ 4 int a, b; 5 int c; 6 /* inicialización */ 7 a = 10; b = 20; c = a + b; 8 printf("a: %d, b: %d y c: %d",a,b,c); 9 return 0; 10 }
  • 40. 14/09/17 Angel Vázquez-Patiño 40/51 Ámbito de las variables Variables globales ● Definidas fuera de una función, usualmente al inicio del programa ● Toman sus valores durante todo el tiempo de vida del programa ● Pueden ser accedidas dentro de cualquier función definida en el programa
  • 41. 14/09/17 Angel Vázquez-Patiño 41/51 1 #include <stdio.h> 2 /* declaración de variable global */ 3 int g; 4 int main() { 5 /* declaración de variables locales */ 6 int a, b; 7 /* inicialización */ 8 a = 10; b = 20; g = a + b; 9 printf("a: %d, b: %d y g: %d", a, b, g); 10 return 0; 11 }
  • 42. 14/09/17 Angel Vázquez-Patiño 42/51 Ámbito de las variables Variables globales ● Un programa puede tener el mismo nombre para una variable local y una variable global ● El valor de la variable local dentro de una función tendrá la preferencia
  • 43. 14/09/17 Angel Vázquez-Patiño 43/51 1 #include <stdio.h> 2 /* declaración de variable global */ 3 int g = 20; 4 int main() 5 { 6 /* declaración de variable local */ 7 int g = 10; 8 printf("g: %d.n", g); 9 return 0; 10 }
  • 44. 14/09/17 Angel Vázquez-Patiño 44/51 Ámbito de las variables Parámetros formales ● Son tratados como variables locales dentro de una función y toman la precedencia por encima de cualquier variable global
  • 45. 14/09/17 Angel Vázquez-Patiño 45/51 1 #include <stdio.h> 2 int a = 20; 3 int main(){ 4 int a = 10; int b = 20; int c = 0; 5 printf("a en main(): %d.n", a); 6 c = sumar(a, b); 7 printf("c en main(): %d.n", c); 8 return 0;} 9 int sumar(int a, int b){ 10 printf("a en sumar(): %d.n", a); 11 printf("b en sumar(): %d.n", b); 12 return a + b;}
  • 46. 14/09/17 Angel Vázquez-Patiño 46/51 Ámbito de las variables Inicialización de variables locales y globales ● Cuando se define una variable local, no es inicializada por el sistema. El programador la debe inicializar ● Cuando se define una variable global, es inicializada automáticamente por el sistema
  • 47. 14/09/17 Angel Vázquez-Patiño 47/51 Ámbito de las variables Tipo de dato Valor inicial por defecto int 0 char ‘0’ float 0 double 0 pointer NULL
  • 48. 14/09/17 Angel Vázquez-Patiño 48/51 Ámbito de las variables Inicialización de variables locales y globales Es una buena práctica de programación inicializar las variables apropiadamente, de otro modo el programa puede producir resultados inesperados porque las variables no inicializadas tomarán valores basura ya disponibles en sus posiciones de memoria
  • 49. 14/09/17 Angel Vázquez-Patiño 49/51 Conceptos y términos importantes ● Palabras reservadas de C que no pueden ser usadas como nombres de funciones ● Punteros: obtención del valor del espacio de memoria y la dirección del espacio de memoria ● Llamado de función por valor y por referencia ● Funciones que devuelven un arreglo ● Reglas del ámbito de una variable
  • 50. 14/09/17 Angel Vázquez-Patiño 50/51 Referencias ● C programming tutorial, http://fresh2refresh.com/c-programming/ ● Departamento de Ciencias de la Computación, 2016. Guía de aprendizaje del MOOC de Fundamentos de Programación: parte II. Universidad de Cuenca, Cuenca, Ecuador. ● Plataforma MOOC Cedia, https://goo.gl/VDWwKV ● Programación en C/Punteros, https://goo.gl/Wqx2Pa ● Return array from function in C, https://goo.gl/YnlUbi