Pobreza porcentual por etnia para el año (2024).pdf
02_C_Functions_Arrays.pdf
1. ELO320 - Estructuras de Datos y Algoritmos
Introducción a C
Funciones y Arreglos
Dr. Nicolás Gálvez R.
nicolas.galvez@usm.cl
Ing. Civil Telemática - Departamento de Electrónica
1er Semestre 2021
1/1
2. Funciones en C
Encapsula código.
Permite reutilizar código.
Se pueden compilar por separado.
Retorna siempre un tipo de dato especı́fico.
2/1
3. 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 ( parametros con o s i n nombre ) ;
f l o a t p o t e n c i a ( f l o a t a , f l o a t b ) ;
// . . . .
c a l c u l o = x ∗ p o t e n c i a ( y , 2 . 5 ) ;
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 ( parametros con nombre ) {
∗ Implementacion . . .
}∗/
f l o a t p o t e n c i a ( f l o a t a , f l o a t b ) {
return power ( a , b ) ;
}
3/1
4. Funciones en C
Si se utiliza solamente la implementación, está tiene que estar
definida antes de la función que la invoca.
Si se utiliza el prototipo, es éste el que debe estar defindo
antes de la función que la invoca.
Prototipo + Implementación: libertad de ubicación de la
implementación.
4/1
5. Funciones en Python
Python sólo permite implementación, no prototipos.
Python
def nombre funcion ( parametros ) :
#. . . Implementacion
return <expre sion >
5/1
6. 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
#include <s t d i o . h>
#d e f i n e MACRO 10
i n t main (){
i n t a = 5;
p r i n t f ( ” %” s n” , a∗MACRO) ;
}
6/1
7. Constante
Una variable constante es aquella que 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
#include <s t d i o . h>
i n t main (){
const i n t a = 5;
a = 10; //¿Cómo act úa e l compilador ?
p r i n t f ( ” %”dn” , a ) ;
}
7/1
8. Á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
#include <s t d i o . h>
void saludo (){ // var i s i r v e s ó l o dentro de f u n c i ón saludo .
i n t i = 5;
p r i n t f ( ” Hola alumno numero %d” , i ) ;
}
i n t main (){ // var a s i r v e s ó l o dentro de f u n c i ón main .
i n t a = 10;
saludo ( ) ;
p r i n t f ( ” %”dn” , a ) ;
r e t u r n 0;
}
8/1
9. Variable local
Una variable local, es aquella que está definida dentro de un ámbito
de terminado, vale decir, una función y/o estructura de control.
C
#include <s t d i o . h>
i n t main (){ // var a s i r v e s ó l o dentro de f u n c i ón main .
i n t a = 10;
i f ( a==10){
i n t b = 1;
p r i n t f ( ” %d %dn” , a , b ) ;
}
// ¿Qué pasa con l a v a r i a b l e b?
p r i n t f ( ” %d %dn” , a , b ) ;
return 0;
}
9/1
10. 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.
C
#include <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 = 10; // l o c a l
b++;
p r i n t f ( ” %d %dn” , a , b ) ; //¿Qué imprime ?
return 0;
}
En python, no se pueden modificar variables globales dentro de una
función.
10/1
11. Arreglos y Strings
Arreglo: Tipo estructurado consistente en conjunto homogéneo y
ordenado de elementos.
Se identifican por su posición relativa mediante un ı́ndice encerrado
con paréntesis cuadrados (parte de ı́ndice 0).
// A r r e g l o s e s t á t i c o s ( se l i b e r a n a l t e r m i n a r
// e l á mbito donde fueron d e c l a r a d a s ) :
i n t foo [ 1 0 ] ; //10 e n t e r o s creados en foo .
foo [ 3 ] = 7; //A cuarto elemento se a s i g n a un 7.
String: Arreglo de caracteres.
// Los s t r i n g se d e l i m i t a n con c a r a c t e r ’0 ’
// ( r e q u i e r e e s p a c i o de 1 char ) :
char nombre [ 1 0 ] = ”Juan” ; // S t r i n g de l a r g o máximo 10.
nombre [ 1 ] = ’ e ’ ; //Qué hace ?
p r i n t f ( ” %s n” , nombre ) ;
Veremos más sobre strings la próxima clase.
11/1
12. Arreglos Multidimensionales e Inicialización
Al igual que con las listas de Python, pueden definir arreglos
multidimensionales.
Además los arreglos pueden ser inicializados utilizando { y }.
C
#i n c l e d e <s t d i o . h>
i n t main (){
char nom [ 1 0 ] = ” Camilo ” ;
char a [ 5 ] [ 2 0 ] = {”Juan” , ” F r a n c i s c o ” , ” Pedro ” };
i n t b [ 3 ] [ 3 ] = {{1 ,2 ,3} , {4 ,5 ,6} , {7 ,8 ,9}} , i , j ;
f o r ( i =0; i <3; i ++){
f o r ( j =0; j <3; j++) //¿Qué pas ó con l a s l l a v e s ?
p r i n t f ( ” %d ” , b [ i ] [ j ] ) ;
p r i n t f ( ”n” ) ;
}
}
12/1
13. Recorrer un arreglo
Podemos utilizar cualquiera de las estructuras de control iterativas
para recorrerlos.
C
#i n c l e d e <s t d i o . h>
i n t main (){
i n t i ;
f l o a t a [ 5 ] ;
f o r ( i =0; i <5; i ++){
f l o a t v a l ; //¿Cuá ntas veces nace y muere v a l ?
s c a n f ( ” % f ” , &v a l ) ;
a [ i ]= v a l ;
} //¿Cómo r e d u c i r e s t e có digo ?
}
13/1
14. Recorrer un arreglo
Practiquen con los siguientes ejercicios:
Calcular el factorial de un número dado.
Ordenar de mayor a menor un arreglo de una dimensión.
Encontrar el mayor elemento en un arreglo de dos
dimensiones.
Calcular el promedio de los elementos en un arreglo
bidimensional.
Imprimir en orden inverso los elementos de un arreglo.
Imprimir todas las letras mayúsculas y minúsculas del alfabeto
(ver Código ASCII).
14/1