Autor Tema: Orden de las funciones en un programa  (Leído 1912 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Juan_PIC

  • PIC12
  • **
  • Mensajes: 84
Orden de las funciones en un programa
« en: 12 de Enero de 2008, 13:07:59 »
Hola, tengo una duda, grande para mi pero pequeña para ustedes :P

Tengo entendido que el C es un lenguaje estructurado, entonces si tengo este programa...

#include <16f877.h>
#device ICD=TRUE
#fuses HS,NOLVP,NOWDT,PUT
#use delay(clock=20000000)
#define GREEN_LED PIN_A5
#define YELLOW_LED PIN_B4
#define RED_LED PIN_B5
#define PUSH_BUTTON PIN_A4
light_one_led(int led) {
output_high(GREEN_LED);
output_high(YELLOW_LED);
output_high(RED_LED);
switch(led) {
case 1 : output_low(GREEN_LED); break;
case 2 : output_low(YELLOW_LED); break;
case 3 : output_low(RED_LED); break;
}
}
wait_for_one_press() {
while(input(PUSH_BUTTON)) ;
while(!input(PUSH_BUTTON)) ;
}
main() {
while(TRUE) {
light_one_led(1);
wait_for_one_press();
light_one_led(2);
wait_for_one_press();
light_one_led(3);
wait_for_one_press();
}

Se ejecutan "light_one_led(int led)" y "wait_for_one_press()" antes de ejecutarse "main()" o el programa si o si ejecuta primero la funcion que se llame main?

Espero sus respuestas    :mrgreen:
Cuando se ponen límites, la mente humana comienza a buscar maneras de romperlos.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Orden de las funciones en un programa
« Respuesta #1 en: 12 de Enero de 2008, 13:53:53 »
nop. en C se ejecuta PRIMERO siempre lo que hay dentro de la función Main

lo que pasa es que si llamas una función dentro del Main, tienes que estar antepuesto del Main, y por ello es que colocan las funciones antes. Otra alternativa (y que me parece elegante) es declarar las funciones y luego las pones después del Main (en el orden que quieras)

ej:

Código: C
  1. #include <16f877.h>
  2. #device ICD=TRUE
  3. #fuses HS,NOLVP,NOWDT,PUT
  4. #use delay(clock=20000000)
  5. #define GREEN_LED PIN_A5
  6. #define YELLOW_LED PIN_B4
  7. #define RED_LED PIN_B5
  8. #define PUSH_BUTTON PIN_A4
  9.  
  10. void light_one_led(int led) ;
  11. void wait_for_one_press() ;
  12.  
  13. void main() {
  14.    while(TRUE) {
  15.       light_one_led(1);
  16.       wait_for_one_press();
  17.       light_one_led(2);
  18.       wait_for_one_press();
  19.       light_one_led(3);
  20.       wait_for_one_press();
  21.    }
  22. }
  23. //**************************************
  24. void light_one_led(int led) {
  25.    output_high(GREEN_LED);
  26.    output_high(YELLOW_LED);
  27.    output_high(RED_LED);
  28.    switch(led) {
  29.       case 1 : output_low(GREEN_LED); break;
  30.       case 2 : output_low(YELLOW_LED); break;
  31.      case 3 : output_low(RED_LED); break;
  32.   }
  33. }
  34. //**************************************
  35. void wait_for_one_press() {
  36.    while(input(PUSH_BUTTON)) ;
  37.    while(!input(PUSH_BUTTON)) ;
  38. }

« Última modificación: 12 de Enero de 2008, 13:56:36 por PalitroqueZ »
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Juan_PIC

  • PIC12
  • **
  • Mensajes: 84
Re: Orden de las funciones en un programa
« Respuesta #2 en: 12 de Enero de 2008, 15:37:50 »
Ok muchisimas gracias PalitroqueZ!   :mrgreen:
Cuando se ponen límites, la mente humana comienza a buscar maneras de romperlos.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Orden de las funciones en un programa
« Respuesta #3 en: 12 de Enero de 2008, 22:12:23 »
Ademas de elegante, el hecho de declarar las librerias antes del main() permite que estas librerias esten dentro de archivos diferentes al del programa principal, evitando en programas muy largos, editar algo que no querias... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Orden de las funciones en un programa
« Respuesta #4 en: 13 de Enero de 2008, 04:30:35 »
Aunque sólo fuera por hacer los programas más inteligibles, debería ser obligatorio declarar las funciones antes de usarlas (y conste que yo no lo hago siempre).


 

anything