Gabriel Vincent Postado 27 de novembro de 2011 Denunciar Compartilhar Postado 27 de novembro de 2011 Olá a todos Estava eu escrevendo um programa simples quando me perguntei: como exatamente funciona o break; ? O meu código é algo como: for (i = 0; i < 10; i++) { for (s = 0; s <= i; s++) { if (s == 7) break; }}[/CODE]A pergunta é: esse break; vai parar só o for de dentro? Ou vai parar os dois for?Agradeço a quem puder ajudar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Willy Postado 27 de novembro de 2011 Denunciar Compartilhar Postado 27 de novembro de 2011 (editado) Esse código que você usou como exemplo nem compila !!! Tenta esse (desculpe a falta de indentação): int main() { printf("!!!Hello World!!!"); for(int i = 0; i < 10; i++) { for(int j = 0; j < 10; j++) { if (j == 7) { printf("Sai no segundo loop!\n"); break; } } } printf("Sai no final!\n"); return 0; } Resultado na console (o break sai do segundo for) : !!!Hello World!!! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no final! Editado 27 de novembro de 2011 por Willy Citar Link para o comentário Compartilhar em outros sites More sharing options...
Gabriel Vincent Postado 29 de novembro de 2011 Autor Denunciar Compartilhar Postado 29 de novembro de 2011 Esse código que você usou como exemplo nem compila !!! Tenta esse (desculpe a falta de indentação): int main() { printf("!!!Hello World!!!"); for(int i = 0; i < 10; i++) { for(int j = 0; j < 10; j++) { if (j == 7) { printf("Sai no segundo loop!\n"); break; } } } printf("Sai no final!\n"); return 0; } Resultado na console (o break sai do segundo for) : !!!Hello World!!! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no segundo loop! Sai no final! Obrigado pela resposta! Eu sei que o código não compila, claro, ele nem está adaptado a nenhuma linguagem específica. Foi só um exemplo em pseudo-código do que eu queria fazer, para ilustrar minha pergunta. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Cassius Pacheco Postado 2 de dezembro de 2011 Denunciar Compartilhar Postado 2 de dezembro de 2011 Sim Gabriel, o "break" sai somente do for que tu utilizaste! Citar Link para o comentário Compartilhar em outros sites More sharing options...
George Villasboas Postado 4 de dezembro de 2011 Denunciar Compartilhar Postado 4 de dezembro de 2011 O break funciona para a estrutura de loops mais próxima do break. Sempre assim. No seu exemplo, a estrutura mais próxima é a do segundo laço FOR (o da variável "s"). Se depois do fechamento desse laço FOR você colocasse mais um break, ele valeria para o primeiro for. A lógica é essa. Só lembrando que o break é utilizado em outras situações também, que não loops. Em Switches, que são um tipo de estrutura condicional. Não se esqueça que objective-C é uma derivação do C. Dê uma olhada em referencias de C que todas estas duvidas de semântica da linguagem são discutidas lá. Abraço e bons estudos! Citar Link para o comentário Compartilhar em outros sites More sharing options...
javaXviper Postado 11 de dezembro de 2011 Denunciar Compartilhar Postado 11 de dezembro de 2011 break dentro de for é meio "deselegante" usa um while com a condição de parada igual ao if que aciona o break for (int i = 0 ; i < 10; i++){ int s = 0; while ((s < =i) && (s != 7)){ s++; } } Alberto LS 1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Thiago Leite Postado 12 de dezembro de 2011 Denunciar Compartilhar Postado 12 de dezembro de 2011 Concordo com o javaXviper, for seria mais para um contador/listagem. Nesse caso o while cai como uma luva. Citar Link para o comentário Compartilhar em outros sites More sharing options...
João Henrique Borges Postado 3 de janeiro de 2012 Denunciar Compartilhar Postado 3 de janeiro de 2012 javaXviper, no seu código, o contador não será incrementado quando s for igual a 7. Mas não efetua a saída como o break fez no post inicial. A dúvida do Gabriel era quanto à saída do laço, feita por break. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe do debate
Você pode postar agora e se registrar depois. Se você tem uma conta, entre agora para postar com ela.