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í
×
    dnes 14:11 | IT novinky

    Eric Migicovsky, zakladatel společnosti Pebble, v lednu oznámil, že má v plánu spustit výrobu nových hodinek Pebble s již open source PebbleOS. V březnu spustil předprodej hodinek Pebble Time 2 (tenkrát ještě pod názvem Core Time 2) za 225 dolarů s dodáním v prosinci. Včera představil jejich konečný vzhled (YouTube).

    Ladislav Hagara | Komentářů: 0
    dnes 12:44 | Zajímavý software

    Byla oznámena nativní podpora protokolu ACME (Automated Certificate Management Environment) ve webovém serveru a reverzní proxy NGINX. Modul nginx-acme je zatím v preview verzi.

    Ladislav Hagara | Komentářů: 0
    dnes 12:22 | Nová verze

    Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 25.08. Přehled novinek i s náhledy a videi v oficiálním oznámení.

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

    Společnost Perplexity AI působící v oblasti umělé inteligence (AI) podala nevyžádanou nabídku na převzetí webového prohlížeče Chrome internetové firmy Google za 34,5 miliardy dolarů (zhruba 723 miliard Kč). Informovala o tom včera agentura Reuters. Upozornila, že výše nabídky výrazně převyšuje hodnotu firmy Perplexity. Společnost Google se podle ní k nabídce zatím nevyjádřila.

    Ladislav Hagara | Komentářů: 5
    včera 04:33 | Bezpečnostní upozornění

    Intel vydal 34 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20250812 mikrokódů pro své procesory řešící 6 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána nová verze 1.25 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 1
    12.8. 13:44 | Nová verze

    Byla vydána beta verze Linux Mintu 22.2 s kódovým jménem Zara. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze novou XApp aplikaci Fingwit pro autentizaci pomocí otisků prstů nebo vlastní fork knihovny libAdwaita s názvem libAdapta podporující grafická témata. Linux Mint 22.2 bude podporován do roku 2029.

    Ladislav Hagara | Komentářů: 0
    12.8. 13:00 | IT novinky

    Provozovatel internetové encyklopedie Wikipedie prohrál v Británii soudní spor týkající se některých částí nového zákona o on-line bezpečnosti. Soud ale varoval britského regulátora Ofcom i odpovědné ministerstvo před zaváděním přílišných omezení. Legislativa zpřísňuje požadavky na on-line platformy, ale zároveň čelí kritice za možné omezování svobody slova. Společnost Wikimedia Foundation, která je zodpovědná za fungování

    … více »
    Ladislav Hagara | Komentářů: 2
    12.8. 12:55 | Nová verze

    Byla vydána verze 2.0.0 nástroje pro synchronizaci dat mezi vícero počítači bez centrálního serveru Syncthing (Wikipedie). Přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 3
    12.8. 12:33 | IT novinky

    Americký prezident Donald Trump se v pondělí osobně setkal s generálním ředitelem firmy na výrobu čipů Intel Lip-Bu Tanem. Šéfa podniku označil za úspěšného, informují agentury. Ještě před týdnem ho přitom ostře kritizoval a požadoval jeho okamžitý odchod. Akcie Intelu v reakci na schůzku po oficiálním uzavření trhu zpevnily asi o tři procenta.

    Ladislav Hagara | Komentářů: 14
    Kolik tabů máte standardně otevřeno ve web prohlížeči?
     (52%)
     (18%)
     (4%)
     (5%)
     (3%)
     (1%)
     (1%)
     (16%)
    Celkem 390 hlasů
     Komentářů: 23, poslední 4.8. 13:01
    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: 272×
    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: 51 | 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.