Está en la página 1de 28

Lenguaje C

Semana 5

Clase 07
Agenda
1 Repaso 3 Prototipos

Alcance de
2 Funciones 4
variables
Repaso
¿Qué es la función
“main”?
Mencione 3 tipos de
datos y su uso
¿Qué es una
condicional?
Hacer un programa en C para
determinar el promedio de dos
notas y determinar si el
estudiante aprobó o no.
Escribir un programa que realice
la pregunta ¿Desea continuar S/N?
y que no deje de hacerla hasta que
el usuario teclee N.
Funciones
★ Hasta ahora, todos los programas que hemos estado
escribiendo en el curso han sido escritos dentro de main().

★ Eso no ha sido un problema aún, pero lo podría ser si nuestros


programas comienzan a convertirse pesados y difíciles de
manejar.
★ Las funciones nos permiten aislar una parte de nuestro código del
resto del programa y así realizar una tarea en específica. Las
funciones constan de tres partes:

○ tipo de retorno tipo de retorno nombre(parámetros)


{
○ nombre
instrucciones;
○ parámetros }
★ Podemos empezar a crear nuestras propias funciones, como los
bloques personalizados en Scratch:
ejemplo.c

1 #include <stdio.h>
2
3 void meow (void)
4 {
5 printf("meow\n");
6 }
7
8 int main(void)
9 {
10 for (int i = 0; i < 3; i++)
11 {
12 meow();
13 }
14 return 0;
15 }
★ El primer “void” significa que no hay un valor de retorno para
nuestra función. El “void” dentro de paréntesis también indica que
la función no acepta ningún argumento o entradas.

★ Las siguientes líneas de código que están entre llaves serán el


código que se ejecutará cada vez que nuestra función sea llamada.
Prototipos
★ Podemos mover nuestra función al fondo de nuestro archivo, ya
que no necesitamos saber cómo se implementa de inmediato:
ejemplo.c

1 #include <stdio.h>
2
3 int main(void)
4 {
5 for (int i = 0; i < 3; i++)
6 {
7 meow();
8 }
9 return 0;
10 }
11
12 void meow (void)
13 {
14 printf("meow\n");
15 }
★ Pero ahora, cuando tratamos de compilar nuestro programa,
miraremos algunos errores:
★ Resulta que nuestra declaración implícita o el uso de la función sin
definirla primero, no está permitida.

★ El compilador lee nuestro código desde el principio al final, por lo


que no sabe lo que es la función “meow”.
★ Podemos resolver esto declarando nuestra función con un prototipo,
que le dice al compilador que definiremos nuestra función después:

ejemplo.c

1 #include <stdio.h>
2 void meow(void);
3 int main(void)
4 {
5 for (int i = 0; i < 3; i++)
6 {
7 meow();
8 }
9 return 0;
10 }
11
12 void meow (void)
13 {
14 printf("meow\n");
15 }
★ “void meow(void)”; es nuestra función prototipo. Observa que
realmente no escribimos la implementación de la función hasta
después en el código.

★ Los prototipos nos permiten declarar una función que luego será
llamada en nuestro programa.
★ Podemos añadir un argumento a nuestra función “meow”:
ejemplo.c

1 #include <stdio.h>
2
3 void meow(int n);
4
5 int main(void)
6 {
7 meow(3);
8 return 0;
9 }
10
11 void meow (int n)
12 {
13 for (int i = 0; i < n; i++)
14 {
15 printf("meow\n");
16 }
17 }
★ Con “void meow(int n)”, estaremos cambiando nuestra función para
integrar alguna entrada “n”, que será un número entero.

★ Entonces, en nuestro bucle “for”, podemos verificar si “i < n” para que


repitamos el bucle el número correcto de veces.

★ Finalmente en nuestra función “main”, simplemente podemos llamar


“meow”, dándole una entrada para la cantidad de veces que queremos
mostrar por pantalla “meow”.
Alcance de
variables
○ locales: son aquellas variables que solo pueden ser accedidas
dentro de la función donde fueron definidas.

○ globales: son aquellas variables que pueden ser accedidas en


cualquier parte de nuestro programa.

○ de bloque: son aquellas variables que solo pueden ser accedidas


dentro de los corchetes en donde está definida, por ejemplo
dentro de un ciclo o una condicional.
★ El alcance de una variable se refiere a la porción de código donde
puede ser accedida la variable. En el lenguaje C existen tres tipos de
alcances:
#include <stdio.h>
int suma(int a, int b);
int suma(int a, int b)
{
/*variable global ya que puede ser accedida
/*variable local, solo
por todas las funciones del programa*/
int numero = 10; puede ser
accedida en la
int main()
{
función suma*/
float x = 40.15; int numero1 = 100;
if(x < 100)
printf("%d\n", numero1);
{
/*variable de bloque, sólo puede ser }
accedida dentro de la condicional donde fue
declarada*/
int z = 120;
}
}
★ Las variables globales pueden ser usadas o “referenciadas” en
cualquier parte del código, por ende no podemos crear otra
variable con el mismo nombre que posee una variable global.

★ Las variables globales son muy flexibles y esto las hace peligrosas,
por lo cual es preferible almacenar datos usados por muchas
funciones, como el valor de pi o la resolución de una pantalla.
¿Preguntas?

También podría gustarte