SlideShare una empresa de Scribd logo
1 de 12
Fundamentos de la
programación
Integrantes:
Juan José Yanangomez Salinas.
Procedimientos
Un procedimiento es un fragmento de código cuya función es la de realizar una tarea
específica independientemente del programa en el que se encuentre. Con los
procedimientos se pueden crear algoritmos de ordenación de arrays, de modificación
de datos, cálculos paralelos a la aplicación, activación de servicios, etc. Prácticamente
cualquier cosa puede realizarse desde procedimientos independientes.
#include <stdio.h>
#include <stdlib.h>
void areatriangulo (void) {
float base, altura;
printf("Introduce base: ");
scanf("%f",&base);
printf("Introduce altura: ");
scanf("%f",&altura);
printf("El área es: %2.2f n",(base*altura)/2);
}
int main(int argc, char *argv[])
{
areatriangulo();
system("PAUSE");
return 0;
}
Funciones
Una función es una parte con nombre de un programa que puede ser involucrada o
llamada desde cualquier otra parte del programa cuando haga falta. La sintaxis de las
funciones depende de si la declaramos o las definimos.
La declaración se escribe poniendo el tipo que retorna la función seguido de su nombre
y de una lista de parámetros entre paréntesis (los parámetros deben ser de la forma
tipo-parametro, (nom_param), donde los corchetes indican que el nombre es opcional),
para terminar la declaración ponemos punto y coma (recordar que una declaración es
una sentencia).
Para definir una función se escribe el tipo que retorna, el nombre de la función y una
lista de parámetros entre paréntesis. A continuación se abre una llave, se escriben las
sentencias que se ejecutan en la función y se cierra la llave.
#include <stdio.h>
#include <stdlib.h>
float areatriangulo (void) {
float base, altura;
printf("Introduce base: ");
scanf("%f",&base);
printf("Introduce altura: ");
scanf("%f",&altura);
return (base*altura)/2;
}
int main(int argc, char *argv[])
{
float area;
area=areatriangulo();
printf("El área es: %2.2f n",area);
system("PAUSE");
return 0;
}
Variables locales
A diferencia de las anteriores, las variables definidas DENTRO de una función, son
denominadas VARIABLES LOCALES a la misma, a veces se las denomina también como
AUTOMÁTICAS, ya que son creadas y destruidas automáticamente por la llamada y el
retorno de una función, respectivamente.
Estas variables se ubican en la pila dinámica (stack) de memoria , destinándosele un
espacio en la misma cuando se las define dentro de una función, y borrándose cuando la
misma devuelve el control del programa, a quien la haya invocado.
Este método permite que, aunque se haya definido un gran número de variables en un
programa, estas no ocupen memoria simultáneamente en el tiempo, y solo vayan
incrementando el stack cuando se las necesita, para luego, una vez usadas desaparecer,
dejando al stack en su estado original.
El identificador ó nombre que se la haya dado a una variable es sólo relevante entonces,
para la función que la haya definido, pudiendo existir entonces variables que tengan el
mismo nombre, pero definidas en funciones distintas, sin que haya peligro alguno de
confusión .
La ubicación de estas variables locales, se crea en el momento de correr el programa, por lo
que no poseen una dirección prefijada, esto impide que el compilador las pueda inicializar
previamente. Recuérdese entonces que, si no se las inicializa expresamente en el momento
de su definición, su valor será indeterminado (basura).
Variables globales
Este tipo de variable será ubicada en el segmento de datos de la memoria utilizada
por el programa, y existirá todo el tiempo que esté ejecutándose este.
Este tipo de variables son automáticamente inicializadas a CERO cuando el programa
comienza a ejecutarse.
Son accesibles a todas las funciones que estén declaradas en el mismo, por lo que
cualquiera de ellas podrá actuar sobre el valor de las mismas.
#include <stdio.h>
double una_funcion(void);
double variable_global ;
main()
{
double i ;
printf(“%f”, variable_global ); /* se imprimirá 0 */
i = una_funcion() ;
printf(“%f”, i ); /* se imprimirá 1 */
printf(“%f”, variable_global ); /* se imprimirá 1 */
variable_global += 1 ;
printf(“%f”, variable_global ); /* se imprimirá 2 */
return 0 ;
}
double una_funcion(void)
{
return( variable_global += 1) ;
}
nt y; /* Global. Conocida tanto por main() como por MiFuncion() */
main ()
{
int x; /* Esta x es local a main () */
y = 100;
x = 1;
printf (“x=%d, y=%d”, x, y) /* Visualiza x=1, y=100 */
{ /* Comienza bloque */
int x; /* Esta x es local al bloque */
x = 2;
printf (“x=%d, y=%d”, x, y) /* Visualiza x=2, y=100 */
MiFuncion () /* Visualiza x=3, y=100 */
printf (“x=%d, y=%d”, x, y) /* Visualiza x=2, y=100 */
} /* Fin del bloque */
printf (“x=%d, y=%d”, x, y) /* Visualiza x=1, y=100 */
}
MiFuncion ()
{
int x; /* Local a MiFuncion() */
x = 3;
printf (“x=%d, y=%d”, x, y) /* Visualiza x=3, y=100 */
}
Observemos que la variable_global está definida afuera de las funciones del programa,
incluyendo al main(), por lo que le pertenece a TODAS ellas. En el primer printf() del
programa principal se la imprime, demostrándose que está automáticamente
inicializada a cero .
Luego es incrementada por una función() que devuelve además una copia de su valor,
el cual es asignado a i ,la que, si es impresa mostrará un valor de uno, pero también la
variable_global ha quedado modificada, como lo demuestra la ejecución de la
sentencia siguiente. Luego main() también modifica su valor , lo cual es demostrado
por el printf() siguiente.
Esto nos permite deducir que dicha variable es de uso público, sin que haga falta que
ninguna función la declare, para actuar sobre ella.
Parámetros
Todos los parámetros se pasan valor por valor, es decir, se hace una copia de los
parámetros cuando llamamos a la función.
En la llamada, antes de hacer la copia, se chequea que los parámetros actuales (los valores
o variables especificados en la llamada) son del mismo tipo que los parámetros formales (
los que declaramos en la lista de parámetros de la declaración de la función). Si los tipos
son iguales o existe una conversión implícita la llamada puede realizarse, si no son iguales
deberemos realizar conversiones explicitas.
Una función es un bloque de sentencias identificado por un nombre y puede recibir y
devolver datos. En bajo nivel, en general, las funciones operan como las subrutinas de
Assembler, es decir, al ser llamadas, se guarda en la Pila el valor actual del PC (Program
Counter), después se ejecuta todo el código de la función y finalmente se recobra el PC
para regresar de la función.

Más contenido relacionado

La actualidad más candente

comandos
comandoscomandos
comandosarecerv
 
Sistemas Operativos - Semáforos
Sistemas Operativos - SemáforosSistemas Operativos - Semáforos
Sistemas Operativos - SemáforosJuan Rojas
 
Estructura programa c++
Estructura programa c++Estructura programa c++
Estructura programa c++UVM
 
Estructura de un rograma
Estructura de un rogramaEstructura de un rograma
Estructura de un rogramaivanjvic
 
La estructura basica_para_c_
La estructura basica_para_c_La estructura basica_para_c_
La estructura basica_para_c_GamePlayer35
 
Funciones y Subrutinas
Funciones y SubrutinasFunciones y Subrutinas
Funciones y SubrutinasGabriel Parra
 
Administracion de-sistemas-operativos apuntes-v2-4
Administracion de-sistemas-operativos apuntes-v2-4Administracion de-sistemas-operativos apuntes-v2-4
Administracion de-sistemas-operativos apuntes-v2-4Juan Timoteo Cori
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuarioUVM
 
Estructura de un programa en c
Estructura de un programa en cEstructura de un programa en c
Estructura de un programa en cMary Guaman
 
Estructura de Programa en C++
Estructura de Programa en C++Estructura de Programa en C++
Estructura de Programa en C++ncrmax
 
Funciones con vectores c++
Funciones con vectores c++Funciones con vectores c++
Funciones con vectores c++jose machado
 

La actualidad más candente (20)

comandos
comandoscomandos
comandos
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Presentacion capitulo 6
Presentacion capitulo 6Presentacion capitulo 6
Presentacion capitulo 6
 
Funciones
FuncionesFunciones
Funciones
 
Trabajo case
Trabajo caseTrabajo case
Trabajo case
 
Sistemas Operativos - Semáforos
Sistemas Operativos - SemáforosSistemas Operativos - Semáforos
Sistemas Operativos - Semáforos
 
Elementos
ElementosElementos
Elementos
 
Estructura programa c++
Estructura programa c++Estructura programa c++
Estructura programa c++
 
Estructura de un rograma
Estructura de un rogramaEstructura de un rograma
Estructura de un rograma
 
La estructura basica_para_c_
La estructura basica_para_c_La estructura basica_para_c_
La estructura basica_para_c_
 
Funciones y Subrutinas
Funciones y SubrutinasFunciones y Subrutinas
Funciones y Subrutinas
 
Tipos de-variables
Tipos de-variablesTipos de-variables
Tipos de-variables
 
Administracion de-sistemas-operativos apuntes-v2-4
Administracion de-sistemas-operativos apuntes-v2-4Administracion de-sistemas-operativos apuntes-v2-4
Administracion de-sistemas-operativos apuntes-v2-4
 
Manual
ManualManual
Manual
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuario
 
funciones
 funciones  funciones
funciones
 
Estructura de un programa en c
Estructura de un programa en cEstructura de un programa en c
Estructura de un programa en c
 
Estructura de Programa en C++
Estructura de Programa en C++Estructura de Programa en C++
Estructura de Programa en C++
 
Funciones con vectores c++
Funciones con vectores c++Funciones con vectores c++
Funciones con vectores c++
 

Similar a Fundamentos de la programación

Similar a Fundamentos de la programación (20)

Funciones en C
Funciones en CFunciones en C
Funciones en C
 
FUNCIONES LENGUAJE C
FUNCIONES LENGUAJE CFUNCIONES LENGUAJE C
FUNCIONES LENGUAJE C
 
Funciones
FuncionesFunciones
Funciones
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4
 
Presentacion
PresentacionPresentacion
Presentacion
 
FUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE CFUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE C
 
Tema 7
Tema 7Tema 7
Tema 7
 
Funciones
FuncionesFunciones
Funciones
 
Estructura De Control
Estructura De ControlEstructura De Control
Estructura De Control
 
Estructura del programa arduino
Estructura del programa arduinoEstructura del programa arduino
Estructura del programa arduino
 
Funciones en lenguage c
Funciones en lenguage cFunciones en lenguage c
Funciones en lenguage c
 
Funciones en Lenguaje C
Funciones en Lenguaje CFunciones en Lenguaje C
Funciones en Lenguaje C
 
vectores y matrices
vectores y matricesvectores y matrices
vectores y matrices
 
Funciones con vectores y matrices1
Funciones con vectores y matrices1Funciones con vectores y matrices1
Funciones con vectores y matrices1
 
Presen iii 26 funciones
Presen iii  26 funcionesPresen iii  26 funciones
Presen iii 26 funciones
 
Unidad III
Unidad IIIUnidad III
Unidad III
 
Metodos,variables, pasodeparametros
Metodos,variables, pasodeparametrosMetodos,variables, pasodeparametros
Metodos,variables, pasodeparametros
 
Hd
HdHd
Hd
 
Exposicion grupal
Exposicion grupalExposicion grupal
Exposicion grupal
 
8448148681
84481486818448148681
8448148681
 

Último

TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdfFernandaGarca788912
 
Condensadores de la rama de electricidad y magnetismo
Condensadores de la rama de electricidad y magnetismoCondensadores de la rama de electricidad y magnetismo
Condensadores de la rama de electricidad y magnetismosaultorressep
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptxBRAYANJOSEPTSANJINEZ
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILProblemSolved
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAJOSLUISCALLATAENRIQU
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptxguillermosantana15
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASPersonalJesusGranPod
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptMarianoSanchez70
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfDiegoMadrigal21
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxSergioGJimenezMorean
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 

Último (20)

TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdf
 
Condensadores de la rama de electricidad y magnetismo
Condensadores de la rama de electricidad y magnetismoCondensadores de la rama de electricidad y magnetismo
Condensadores de la rama de electricidad y magnetismo
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
 
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.pptARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
ARBOL DE CAUSAS ANA INVESTIGACION DE ACC.ppt
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 

Fundamentos de la programación

  • 2. Procedimientos Un procedimiento es un fragmento de código cuya función es la de realizar una tarea específica independientemente del programa en el que se encuentre. Con los procedimientos se pueden crear algoritmos de ordenación de arrays, de modificación de datos, cálculos paralelos a la aplicación, activación de servicios, etc. Prácticamente cualquier cosa puede realizarse desde procedimientos independientes.
  • 3. #include <stdio.h> #include <stdlib.h> void areatriangulo (void) { float base, altura; printf("Introduce base: "); scanf("%f",&base); printf("Introduce altura: "); scanf("%f",&altura); printf("El área es: %2.2f n",(base*altura)/2); } int main(int argc, char *argv[]) { areatriangulo(); system("PAUSE"); return 0; }
  • 4. Funciones Una función es una parte con nombre de un programa que puede ser involucrada o llamada desde cualquier otra parte del programa cuando haga falta. La sintaxis de las funciones depende de si la declaramos o las definimos. La declaración se escribe poniendo el tipo que retorna la función seguido de su nombre y de una lista de parámetros entre paréntesis (los parámetros deben ser de la forma tipo-parametro, (nom_param), donde los corchetes indican que el nombre es opcional), para terminar la declaración ponemos punto y coma (recordar que una declaración es una sentencia). Para definir una función se escribe el tipo que retorna, el nombre de la función y una lista de parámetros entre paréntesis. A continuación se abre una llave, se escriben las sentencias que se ejecutan en la función y se cierra la llave.
  • 5. #include <stdio.h> #include <stdlib.h> float areatriangulo (void) { float base, altura; printf("Introduce base: "); scanf("%f",&base); printf("Introduce altura: "); scanf("%f",&altura); return (base*altura)/2; } int main(int argc, char *argv[]) { float area; area=areatriangulo(); printf("El área es: %2.2f n",area); system("PAUSE"); return 0; }
  • 6. Variables locales A diferencia de las anteriores, las variables definidas DENTRO de una función, son denominadas VARIABLES LOCALES a la misma, a veces se las denomina también como AUTOMÁTICAS, ya que son creadas y destruidas automáticamente por la llamada y el retorno de una función, respectivamente. Estas variables se ubican en la pila dinámica (stack) de memoria , destinándosele un espacio en la misma cuando se las define dentro de una función, y borrándose cuando la misma devuelve el control del programa, a quien la haya invocado. Este método permite que, aunque se haya definido un gran número de variables en un programa, estas no ocupen memoria simultáneamente en el tiempo, y solo vayan incrementando el stack cuando se las necesita, para luego, una vez usadas desaparecer, dejando al stack en su estado original.
  • 7. El identificador ó nombre que se la haya dado a una variable es sólo relevante entonces, para la función que la haya definido, pudiendo existir entonces variables que tengan el mismo nombre, pero definidas en funciones distintas, sin que haya peligro alguno de confusión . La ubicación de estas variables locales, se crea en el momento de correr el programa, por lo que no poseen una dirección prefijada, esto impide que el compilador las pueda inicializar previamente. Recuérdese entonces que, si no se las inicializa expresamente en el momento de su definición, su valor será indeterminado (basura).
  • 8. Variables globales Este tipo de variable será ubicada en el segmento de datos de la memoria utilizada por el programa, y existirá todo el tiempo que esté ejecutándose este. Este tipo de variables son automáticamente inicializadas a CERO cuando el programa comienza a ejecutarse. Son accesibles a todas las funciones que estén declaradas en el mismo, por lo que cualquiera de ellas podrá actuar sobre el valor de las mismas.
  • 9. #include <stdio.h> double una_funcion(void); double variable_global ; main() { double i ; printf(“%f”, variable_global ); /* se imprimirá 0 */ i = una_funcion() ; printf(“%f”, i ); /* se imprimirá 1 */ printf(“%f”, variable_global ); /* se imprimirá 1 */ variable_global += 1 ; printf(“%f”, variable_global ); /* se imprimirá 2 */ return 0 ; } double una_funcion(void) { return( variable_global += 1) ; }
  • 10. nt y; /* Global. Conocida tanto por main() como por MiFuncion() */ main () { int x; /* Esta x es local a main () */ y = 100; x = 1; printf (“x=%d, y=%d”, x, y) /* Visualiza x=1, y=100 */ { /* Comienza bloque */ int x; /* Esta x es local al bloque */ x = 2; printf (“x=%d, y=%d”, x, y) /* Visualiza x=2, y=100 */ MiFuncion () /* Visualiza x=3, y=100 */ printf (“x=%d, y=%d”, x, y) /* Visualiza x=2, y=100 */ } /* Fin del bloque */ printf (“x=%d, y=%d”, x, y) /* Visualiza x=1, y=100 */ } MiFuncion () { int x; /* Local a MiFuncion() */ x = 3; printf (“x=%d, y=%d”, x, y) /* Visualiza x=3, y=100 */ }
  • 11. Observemos que la variable_global está definida afuera de las funciones del programa, incluyendo al main(), por lo que le pertenece a TODAS ellas. En el primer printf() del programa principal se la imprime, demostrándose que está automáticamente inicializada a cero . Luego es incrementada por una función() que devuelve además una copia de su valor, el cual es asignado a i ,la que, si es impresa mostrará un valor de uno, pero también la variable_global ha quedado modificada, como lo demuestra la ejecución de la sentencia siguiente. Luego main() también modifica su valor , lo cual es demostrado por el printf() siguiente. Esto nos permite deducir que dicha variable es de uso público, sin que haga falta que ninguna función la declare, para actuar sobre ella.
  • 12. Parámetros Todos los parámetros se pasan valor por valor, es decir, se hace una copia de los parámetros cuando llamamos a la función. En la llamada, antes de hacer la copia, se chequea que los parámetros actuales (los valores o variables especificados en la llamada) son del mismo tipo que los parámetros formales ( los que declaramos en la lista de parámetros de la declaración de la función). Si los tipos son iguales o existe una conversión implícita la llamada puede realizarse, si no son iguales deberemos realizar conversiones explicitas. Una función es un bloque de sentencias identificado por un nombre y puede recibir y devolver datos. En bajo nivel, en general, las funciones operan como las subrutinas de Assembler, es decir, al ser llamadas, se guarda en la Pila el valor actual del PC (Program Counter), después se ejecuta todo el código de la función y finalmente se recobra el PC para regresar de la función.