abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

    včera 20:33 | IT novinky

    Noví Bulánci byli oficiálně vydáni. V roce 2021 bylo na Startovači na podporu vývoje této hry vybráno 7,3 miliónů Kč. Hra je zatím určena jenom pro Windows, díky Protonu ale běží také na Linuxu.

    Ladislav Hagara | Komentářů: 6
    včera 14:55 | IT novinky

    ChatGPT může vidět, slyšet a mluvit.

    Ladislav Hagara | Komentářů: 4
    včera 14:33 | Zajímavý software

    Upscaler je open source nástroj pro zvýšení rozlišení a vylepšení obrázků pomocí AI. Vývoj probíhá na GitLabu. Instalovat lze také z Flathubu. Stejně jako Upscayl je Upscaler postaven nad Real-ESRGAN.

    Ladislav Hagara | Komentářů: 1
    včera 12:11 | Nová verze

    GNUnet (Wikipedie) byl vydán v nové major verzi 0.20.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.

    Ladislav Hagara | Komentářů: 0
    včera 11:55 | Komunita

    V Dublinu o víkendu proběhla dvanáctá iterace multimediální konference Video Dev Days, kterou pravidelně pořádá nezisková organizace VideoLAN. Záznamy přednášek z prvního a druhého dne jsou dostupné na YouTube.

    elenril | Komentářů: 0
    24.9. 20:44 | Nová verze

    LibrePCB, tj. svobodný multiplatformní softwarový nástroj pro návrh desek plošných spojů (PCB), dospěl po pěti letech vývoje do verze 1.0.0. Přehled novinek v příspěvku na blogu a v aktualizované dokumentaci. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GPLv3.

    Ladislav Hagara | Komentářů: 0
    23.9. 16:55 | IT novinky

    Facebook má nové logo. Poznáte rozdíl?

    Ladislav Hagara | Komentářů: 8
    23.9. 15:55 | Nová verze

    Byla vydána nová verze 7.2 v Javě napsané aplikace pro komplexní návrh rozmístění nábytku a dalšího vybavení v interiérech Sweet Home 3D. Vyzkoušet lze online verzi. Před dvěma týdny vyšla placená verze pro chytré telefony a tablety (App Store, Google Play).

    Ladislav Hagara | Komentářů: 5
    22.9. 14:11 | Pozvánky

    Zítra 23. září proběhne Maker Faire Mladá Boleslav, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    22.9. 13:33 | Nová verze

    Byla vydána beta verze Ubuntu 23.10 s kódovým názvem Mantic Minotaur. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 23.10 mělo vyjít 12. října 2023.

    Ladislav Hagara | Komentářů: 10
    Knihy s linuxovou tematikou
     (19%)
     (15%)
     (50%)
     (27%)
    Celkem 276 hlasů
     Komentářů: 11, poslední 17.9. 19:19
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Dotaz: Ukončení cyklů

    17.2.2014 21:16 Jakubysko
    Ukončení cyklů
    Přečteno: 246×
    Ahoj, jak vyskočit ze dvou cyklů? Potřebuji vyskočit z toho vnořeného. Díky while true do while true do break break done done

    Odpovědi

    17.2.2014 21:33 Carth_Onasi
    Rozbalit Rozbalit vše Re: Ukončení cyklů

    První věc - jak to souvisí s Unixem nebo Linuxem?

    Druhá věc - má to být ... do break done break done

    Třetí věc - while true je cesta do pekel

    Čtvrtá věc - dělá se to tak, že nadefinuješ proměnu (např. konec = false), pak ve vnitřním cyklu pro ukončení nastavíš konec na true a ve vnějším cyklu to testuješ - to jsou základní programovací techniky.
    18.2.2014 08:25 potato
    Rozbalit Rozbalit vše Re: Ukončení cyklů
    while true je cesta do pekel
    Cykly s podmínkou ukončení uprostřed nepřestanou být užitečné jen proto, že se ti nelíbí. A v jazycích, které nemají cykly s podmínkou na konci (shell, Python, ...), je while-true často nejelegantnější/nejpraktičtější způsob, jak cyklus realizovat.
    18.2.2014 15:24 Andrej | skóre: 50 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Ukončení cyklů
    Třetí věc - while true je cesta do pekel

    To řekl kdo? Nejčastěji to slýchám od lidí, kteří nikdy neprogramovali. Opak je pravdou — cyklus, který testuje podmínku někde uprostřed, je leckdy elegantnější a efektivnější než zoufalá snaha vyjádřit totéž ve formě cyklů s podmínkou a krokem v těsném sousedství. Nestandardní typy cyklů začnou být dvojnásob užitečné ve chvíli, kdy cyklus závisí na dvou různých ukončovacích podmínkách, které mohou nastat nezávisle na sobě.

    Čtvrtá věc - dělá se to tak, že nadefinuješ proměnu (např. konec = false), pak ve vnitřním cyklu pro ukončení nastavíš konec na true a ve vnějším cyklu to testuješ - to jsou základní programovací techniky.

    Co je tohle za hovadinu? Prasárny tohoto typu vedou k tvorbě kódu, který je neefektivní (což nemusí nutně vadit, ale cosi to vypovídá o programátorských kvalitách autora) a velmi nepřehledný (což vadí po všech stránkách).

    Tazatel se ptal, jak vyskočit ze dvou vnořených cyklů — předpokládám, že v shellu, když se ptá na linuxové poradně. Odpověď je jednoduchá: bash i dash (a možná i jiné shelly) mají příkaz break s číselným parametrem. Číselný parametr má implicitně hodnotu 1, tedy break bez parametru vyskočí z nejbližšího cyklu nebo selectu. Hodnota 0 znamená, že se nikam nevyskakuje a vrátí se 0 (úspěch). Hodnota větší než 1 vyskakuje z vnořených cyklů.

    Odpověď na původní otázku by asi byla break 2. (A vůbec není nutné vymýšlet fantasmagorie o tom, jak by se údajně mělo či nemělo programovat.)

    LangPa avatar 17.2.2014 23:21 LangPa | skóre: 12 | blog: LangPavel | Hradec Králové
    Rozbalit Rozbalit vše Re: Ukončení cyklů
    1) goto je taky cesta do pekel ale funguje.

    2) jaký jazyk? Některé umožňují, tuším, napsat break 2
    17.2.2014 23:34 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: Ukončení cyklů
    ... iné umožňujú pomenovať slučku návestím, aby bolo následne z vnútorného cyklu brejknúť ten vonkajší.

    Inak povedané: ak chce opytujúci sa lepšiu odpoveď, mal by lepšie sformulovať otázku.
    18.2.2014 11:16 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Ukončení cyklů
    Přijde na to v jakém jazyku.
    První a druhý příklad lze realizovat ve většině (včetně bash-e).
    Třetí příklad je nepěkný a někde jsem četl, že je ospravedlnitelný pokud je těch cyklů roj (pokud by to mělo být jediné goto v kódu, tak bych ho neospravedlnil :)).
    /* gcc -W -pedantic loop.c -o loop */
    #include <stdlib.h>
    #include <stdio.h>
    
    int main( int arc, char **argv ) {
      int breakit;
      int doit;
    
      /*an example */
      printf("\nExample 1:\n");
      breakit = 0;
      while(1){
        printf("1st loop\n");
        while(1){
          printf("2nd loop\n");
          if(1==1){
            printf("Cond. to break all loops, break 2nd loop\n");
            breakit=1;
            break;
          }
        }
        if(breakit==1){
          printf("Break 1st loop\n");
          break;
        }
      }
    
      /*an better example */
      printf("\nExample 2:\n");
      doit = 1;
      while(doit){
        printf("1st loop\n");
        while(doit){
          printf("2nd loop\n");
          if(1==1){
            printf("Cond. to break all loops, break 2nd loop\n");
            doit=0;
            break;
          }
        }
      }
    
      /*Do not recomended */
      printf("\nExample 3:\n");
      while(1){
        printf("1st loop\n");
        while(1){
          printf("2nd loop\n");
          if(1==1){
            printf("Cond. to break all loops, goto (to) loopsend: \n");
            goto loopsend;
          }
        }
      }
      loopsend:
    
      return 0;
    }
    
    
    Některé jazyk jako třeba Java může mít něco takovéhoto (netestováno.)
     class JavaLoop{
        public static void main(String[] args){
          System.out.print("\nExample 1:\n");
          topouter:
          while(true){
            System.out.print("1st loop\n");
            while(true){
              System.out.print("2nd loop\n");
              if(1==1){
                System.out.print("Cond. to break all loops, break with label\n");
                break topouter;
              }
            }
          }
          return 0;
        }
      }
    
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.