IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Dominik Baričák:2.7.2018 17:36

Ahoj,
Učím se na zdejších tutoriálech C# a narazil jsem na jeden problém ohledně for cyklu. Snažím se na to přijít sám, ale...na něco jsem asi přišel, ale nedává mi to smysl. Používá se to vůbec ? K čemu je dobrý vnořený cyklus bez závorek ?

První kód chápu. První cyklus zařídí to, aby desetkrát proběhl ten druhý. 10x se tedy pod sebe napíše druhý první.

První kód se závorkami:

using System;

namespace ConsoleApp6
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int j = 1; j <= 10; j++)
            {
                for (int i = 1; i <= 10; i++)
                {

                    Console.Write("první");
                    Console.WriteLine(" druhý");

                }
            }

            Console.ReadKey();
        }
    }
}

Druhý kód bez závorek kolem druhého cyklu chápu tak, že vykoná jen metodu Console.Write("dru­hý"); a potom předá řízení prvnímu cyklu. Ve výsledku to potom na jeden řádek vypíše 10x druhý, předá se řízení prvnímu cyklu a ten potom s mezerou pořád na první řádek pomocí metody Console.WriteLine(" první"); napíše první a odřádkuje.

Druhý bez závorek:

using System;

namespace ConsoleApp6
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int j = 1; j <= 10; j++)

            {
                for (int i = 1; i <= 10; i++)

                    Console.Write("první");
                    Console.WriteLine(" druhý");
            }

            Console.ReadKey();
        }
    }
}

Děkuji všem, kteří to přečetli až sem a díky za všechny rady. Snažil jsem se to popsat co možná nejlíp.

Zkusil jsem: Přijít na to sám. Google moc nepomohl.

Chci docílit: Přejít na další tutoriál :D

 
Odpovědět
2.7.2018 17:36
Avatar
Odpovídá na Dominik Baričák
Neaktivní uživatel:2.7.2018 17:48

Když někam, kde se závorky normálně píší, závorky nenapíšeš, prostě si VS do nich dá jenom první příkaz. Stačí, nebo to potřebuješ podrobněji?

Nahoru Odpovědět
2.7.2018 17:48
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Dominik Baričák:2.7.2018 17:57

Takhle stačí. Jen jsem to potřeboval potvrdit. Díky moc !

 
Nahoru Odpovědět
2.7.2018 17:57
Avatar
maxijoey
Člen
Avatar
Odpovídá na Dominik Baričák
maxijoey:9.7.2018 9:22

Jen doplňím, že to není jen o VS. Tohle je prostě vlastnost jazyka. Složené závorky označují blok který se má vykonat. Pokud blok není, vykoná se první příkaz pouze. Takto to funguje u cyklu ale třeba i u podmínek if. A je to tak ve všech C-like jazycích.

 
Nahoru Odpovědět
9.7.2018 9:22
Avatar
Odpovídá na Dominik Baričák
Jan Procházka:9.7.2018 13:32

Dalo by se všeobecně říci, že cykly a větve musí být ohraničené do bloků - procesor musí vždy přesně vědět které instrukce má provádět. V MATLABu, například, po každém ifu, foru atd. musí někde být end, který ukončí, byť i jednopříkazový, blok. V Céčku, například, máš možnost výslovné ohraničení bloku vynechat. Chybějící "značky" kompilátor doplní kolem prvního příkazu.

Je to hodně podobné matematickému zápisu násobení a sčítání. 4*A+B, respektive 4A+B, je "zkrácený" zápis a priori předpokládající, že čtyřikrát "provedeš" A až potom přidáš B. Úplný zápis by byl 4*(A)+B. Zápis 4*(A+B) je jediný možný, jak provést čtyřikrát A a B po sobě.

Důvod je jednoduchý, bez tohoto pravidla bys nikdy přesně nerozklíčoval 4a+b+c. je to 4(a)+b+c, 4(a+b)+c, nebo 4(a+b+c)?

Taky by Ti pomohlo "správné" formátování druhého příkladu. Výpis "druhý" má totiž být odsazený o jeden tabulátor méně a je tak snáz vidět, že se "první" vypíše desetkrát, potom jednou "druhý" a skočí to zpět na výpis série deseti "první" a tenhle skok zpět proběhne celkem desetkrát.

A k čemu se to používá? zkrátí to kód o dva řádky na jednom cyklu, což ho při správném formátování i zpřehlední.

Editováno 9.7.2018 13:33
 
Nahoru Odpovědět
9.7.2018 13:32
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.