Autor Tema: Problema con anidamiento de codigo (SOLUCIONADO)  (Leído 1478 veces)

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

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1093
Problema con anidamiento de codigo (SOLUCIONADO)
« en: 24 de Abril de 2016, 22:46:58 »
Hola gente, tengo una duda con CCS y no encuentro informacion que me la aclare, ni en el manual de CCS, ni en el libro "Compilador C CCS y simulador Proteus para microcontroladores PIC".
Viendo este codigo:

Código: [Seleccionar]
         
         if(a==1)
            for(n=1;n<=25;n++)
               sentencia1;
               sentencia2;
               sentencia N;
               
            a++;

Como puedo estar seguro de donde acaba el IF y el FOR. Me explico, en mi caso, quiero que "a" aumente cuando acabe el FOR, pero antes de que acabe el IF.

Saludos.
« Última modificación: 25 de Abril de 2016, 08:30:39 por AcoranTf »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Problema con anidamiento de codigo
« Respuesta #1 en: 25 de Abril de 2016, 00:05:59 »

Código: [Seleccionar]
         if(a==1)
            {
               for(n=1;n<=25;n++)
                 {
                    sentencia1;
                    sentencia2;
                    sentencia N;
                 }
               a++;
            }

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1093
Re:Problema con anidamiento de codigo
« Respuesta #2 en: 25 de Abril de 2016, 08:23:58 »
 :-/ :-/ Gracias planeta, soy un caso.
Lo habre hecho veces?.
Voy a tener que dejar de trasnochar tanto  :D :D.

Saludos.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema con anidamiento de codigo (SOLUCIONADO)
« Respuesta #3 en: 25 de Abril de 2016, 08:43:50 »
Tu codigo termina siendo:

Código: C
  1. if(a==1)
  2.         {
  3.                 for(n=1;n<=25;n++)
  4.                 {
  5.                         sentencia1;
  6.                 }
  7.         }
  8.         sentencia2;
  9.         sentencia N;
  10.         a++;

Cuando no se tienen las llaves se incluye solo a la instruccion que le sigue, los tabs adelante no significan nada para C, solo para el usuario, asi que no podes incluirlos por que tienen un tab nomas. La instruccion que le sigue al if es el for y todo lo que contiene el mismo, la instruccion que le sigue al for es sentencia1 nomas. Observaras que los demas queda afuera tanto del for como del if. Y esto se vuelve complicado de ver rapidamente.

Y es por eso mismo que una de las recomendaciones es SIEMPRE agregar las llaves por mas que sea 1 instruccion, de esa forma se puede ver con claridad el flujo del mismo. Ocupa mas espacio, disminuye la limpieza, pero aumenta la claridad del codigo.

EDIT: Probado tu codigo y funciona como el codigo que pase, pero lo que buscabas imagino es lo que puso planeta
« Última modificación: 25 de Abril de 2016, 08:53:14 por KILLERJC »

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1093
Re:Problema con anidamiento de codigo (SOLUCIONADO)
« Respuesta #4 en: 25 de Abril de 2016, 09:39:21 »
Exactamente KillerJC, lo que necesito es justamente lo que indico planeta9999. Al no ser parte de la sintaxis de CCS, no aparece donde yo lo busque, pero es como tu dices.
Como comente antes, se junto todo, el cansancio por la hora, la falta de info especifica y la impaciencia por probar una rutina de un proyecto.
Gracias por tu aclaracion.

Saludos.


 

anything