Niekończąca się pętla cykliczna

2018-11-30 19:44
0

Mam napisać taki program, nie bardzo wiem jak się do tego zabrać, prosiłbym o jakieś wskazówki.
Zademonstruj użycie niekończącej się instrukcji cyklicznej (z warunkiem zawsze prawdziwym) przerwanej instrukcją break pod wymyślonym warunkiem.

Pozostało 580 znaków

2018-11-30 19:54
1

No, ale co tu wskazywać -- treść masz napisaną po polsku, trzeba teraz dokładnie to zapisać w c++:

while(true) {
    coś robimy;
    if(wymyślony warunek) {
        break;
    }
    coś robimy;
}

Pozostało 580 znaków

2018-11-30 22:38
0

Równoważnym zapisem będzie

for(;;)
{
....
break;
}
edytowany 2x, ostatnio: furious programming, 2018-11-30 23:02

Pozostało 580 znaków

2018-11-30 22:43
1

@Kamila Nowak: ??? Chodziło Ci o for(;;) zamiast while(true)? Domyśliłem się po dobrych kilku minutach...

Pokaż pozostałe 12 komentarzy
Ja bym w sumie chętnie się dowiedział czemu tak jest, poza "taki mamy style guide" albo "20 lat temu kompilatory wolały for(;;) i tak już zostało". Osobiście preferuję while(true) chociażby dlatego, że w innych językach dokładnie ten sam zapis jest poprawny i znaczy to samo, a for(;;) to zapis specyficzny dla C/C++/D. - kq 2018-12-01 00:28
W projektach w których zadawałem to pytanie, odpowiedzi były takie: 1. for(;;) to wyrażenie pętli nieskończonej a nie pętli z warunkiem typu true. 2. true i false z <stdbool.h>, to makro które łatwo przez nieuwagę "przedefiniować" (jakie makra są w C każdy wie). 3. while(true) nasuwać może podejrzenia że był tam test który "jak bezpiecznik gwoździem" został zaślepiony. Tak, zgadzam się kompilator traktuje to jednakowo, tak zgadzam się każde z tych twierdzeń można negować. W kilku projektach (także C++ dla automotive) miałem to wymuszane i nie sądzę że powinienem to łamać. - Mokrowski 2018-12-01 00:52
A pytając o "techniczne przesłanki", otrzymałem informację (ogólnie), "tak mamy ustawione procesy sprawdzania kodu by określane były warunki wyjścia z pętli nieskończonych oznaczonych przez for(;;)". Moim zdaniem for(;;) dla takich klas systemów, lepiej oznacza intencję autora kodu że chce mieć pętlę nieskończoną. Trochę mi jednak zajęło przekonanie się do tych argumentów które tu podałem. Świętej wojny nie zamierzam z tego powodu rozpoczynać... - Mokrowski 2018-12-01 01:01
Tak z ciekawości, bez jakiś szerokich pomiarów sprawdziłem: boost 1.68.0: while(true) -> 59, while(1) -> 42, for(;;) -> 228. linux 4.19.6: while(true) -> 1, while(1) -> 69, for(;;) -> 56. dlib 19.16: while(true) -> 14, while(1) -> 0, for(;;) -> 1. Qt 5.11.2 (katalog Src): while(true) -> 72, while(1) -> 147 , for(;;) -> 417 IMHO ciekawe w zestawieniu z przekonaniem "zapis jest dziwny", "nigdy tego nie widziałem", "nigdy się z tym nie spotkałem"... Choć oczywiście to tylko statystyka (i to słaba) a sam zapis to rzecz jasna ustalona w danym projekcie konwencja a nie dyktat. - Mokrowski 2018-12-02 21:08

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0