Asi to bude znít trochu hloupě ale může mi někdo prosím vysvětlit co je to odsazování k čemu je a jak ho udělat?
Jsem začínající programátor.
Co je to odsazování?
Re: Co je to odsazování?
Odsazování (indentation) slouží k tomu, aby se program zpřehlednil a programátor se v něm sám vyznal. Zvýrazňuje nebo odděluje programové struktury a související celky:
Porovnej to s tím samým kódem bez odsazování a řekni sám ve kterém se lépe orientuješ:
Odsazování může být buď horizontální, počtem mezer či tabulátorů na začátku řádku, nebo vertikální, pomocí prázdných řádků.
Kód: Vybrat vše
void output(int kod)
{
int i=5;
unsigned char text[7]={0};
if (kod<128)
putchar(kod);
else
{
for (;kod;--i)
{
text[0]=(text[0]>>1)+128;
text[i]+=(kod&63)+128;
kod>>=6;
}
text[++i]|=text[0];
printf("%s",text+i);
}
}
Porovnej to s tím samým kódem bez odsazování a řekni sám ve kterém se lépe orientuješ:
Kód: Vybrat vše
void output(int kod)
{
int i=5;
unsigned char text[7]={0};
if (kod<128)
putchar(kod);
else
{
for (;kod;--i)
{
text[0]=(text[0]>>1)+128;
text[i]+=(kod&63)+128;
kod>>=6;
}
text[++i]|=text[0];
printf("%s",text+i);
}
}
Odsazování může být buď horizontální, počtem mezer či tabulátorů na začátku řádku, nebo vertikální, pomocí prázdných řádků.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Co je to odsazování?
Šlo to zkompilovat? Ještě by na začátku měl být "program název", nevím jak hodně je FP tolerantní.
Ano, takhle nějak se to v Pascalu obvykle dělá, dvě mezery na každou úroveň jsou pro začátečníka a tenhle jazyk dostačující.
Existuje strašně moc různých stylů odsazování, a každému může vyhovovat něco jiného, tak se nelekni když někde uvidíš něco takového: https://en.wikipedia.org/wiki/Indent_style Ty složené závorky { a } tam znamenají totéž co v Pascalu begin a end.
Ano, takhle nějak se to v Pascalu obvykle dělá, dvě mezery na každou úroveň jsou pro začátečníka a tenhle jazyk dostačující.
Existuje strašně moc různých stylů odsazování, a každému může vyhovovat něco jiného, tak se nelekni když někde uvidíš něco takového: https://en.wikipedia.org/wiki/Indent_style Ty složené závorky { a } tam znamenají totéž co v Pascalu begin a end.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Co je to odsazování?
Abych zbytečně nezakladal nove tema. Zkusil jsem si napsat jednoduchý prográmek co mi vypíše hodnoty proměnných a funguje.
Re: Co je to odsazování?
Tohle není na nové téma, řešíme stále jednu věc.
Udělal jsi to dobře, akorát zrovna tady je to odsazování zbytečné. Máš tu souvislý blok příkazů, který vždy proběhne vcelku tak jak je. Pascal to co máš v jednom bloku mezi begin a end bere jako jeden příkaz, říká se tomu "složený příkaz".
Uvnitř jakéhokoliv bloku můžeš mít jiné bloky, v nich zase další, a v nich zase další, a tak dále jak potřebuješ, a abys na první pohled poznal odkud kam každý blok sahá a co všechno k němu patří, k tomu slouží právě to odsazování. Všechny řádky jednoho bloku začínají ve stejném sloupci, a řádky v něm vnořeného bloku jsou o kousek posunuté vpravo. Další v něm vnořený blok je zase o kousek dál, a další...
Pokud bys v tomhle prográmku chtěl zvýraznit jednotlivé části, tak by se hodilo spíš vertikální odsazení. Mezi nesouvisejícími částmi vynechat prázdný řádek, a za ním se už dělá něco jiného:
Každý ten úsek by ještě šel opatřit komentářem popisujícím přesně jeho činnost a účel, k tomu brzy dojdeš sám. I u jednoduchých programů už po pár týdnech nebudeš sám vědět co jsi tam vlastně prováděl, a bez komentářů ti bude dlouho trvat než ho znovu pochopíš tak, abys v něm mohl udělat třeba i jen jednoduchou úpravu. Bez nich bude rychlejší napsat to celé znova, než se tím snažit prokousávat
Udělal jsi to dobře, akorát zrovna tady je to odsazování zbytečné. Máš tu souvislý blok příkazů, který vždy proběhne vcelku tak jak je. Pascal to co máš v jednom bloku mezi begin a end bere jako jeden příkaz, říká se tomu "složený příkaz".
Uvnitř jakéhokoliv bloku můžeš mít jiné bloky, v nich zase další, a v nich zase další, a tak dále jak potřebuješ, a abys na první pohled poznal odkud kam každý blok sahá a co všechno k němu patří, k tomu slouží právě to odsazování. Všechny řádky jednoho bloku začínají ve stejném sloupci, a řádky v něm vnořeného bloku jsou o kousek posunuté vpravo. Další v něm vnořený blok je zase o kousek dál, a další...
Pokud bys v tomhle prográmku chtěl zvýraznit jednotlivé části, tak by se hodilo spíš vertikální odsazení. Mezi nesouvisejícími částmi vynechat prázdný řádek, a za ním se už dělá něco jiného:
Kód: Vybrat vše
begin
osoba1:='Michal';
writeln(osoba1);
readln;
osoba2:='Lada';
writeln(osoba2);
readln;
mesic1:='Duben';
writeln(mesic1);
readln;
mesic2:='Kveten';
writeln(mesic2);
readln
end.
Každý ten úsek by ještě šel opatřit komentářem popisujícím přesně jeho činnost a účel, k tomu brzy dojdeš sám. I u jednoduchých programů už po pár týdnech nebudeš sám vědět co jsi tam vlastně prováděl, a bez komentářů ti bude dlouho trvat než ho znovu pochopíš tak, abys v něm mohl udělat třeba i jen jednoduchou úpravu. Bez nich bude rychlejší napsat to celé znova, než se tím snažit prokousávat
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Co je to odsazování?
K čemu jsou potom ty proměnné v praxi?
Re: Co je to odsazování?
A k čemu by byl v praxi program, který nezpracovává žádná data? Do těch proměnných se ukládají data za běhu, jsou to vlastně pojmenovaná místa v paměti, kam se zapíšou a kde je program najde když s nimi chce pracovat. Profesor Wirth, který Pascal vymyslel, o tom napsal knihu, která se jmenuje "ALGORITMY + DATOVÉ STRUKTURY = PROGRAMY".
Program sám o sobě je jenom zapsaný postup, jak se mají data přežvýkat, nic víc. A ta data dodá uživatel programu, který ho spustil! Vyzkoušej si tohle, zkus tam zadat třeba celou svojí rodinu:
Takže jeden program, ale mnoho různých výsledků...
Program sám o sobě je jenom zapsaný postup, jak se mají data přežvýkat, nic víc. A ta data dodá uživatel programu, který ho spustil! Vyzkoušej si tohle, zkus tam zadat třeba celou svojí rodinu:
Kód: Vybrat vše
program roky;
var narozeni,letopocet,vek:integer;
begin
{vstup udaju}
write('Zadej rok narozeni: ');
readln(narozeni);
write('Zadej letosni rok: ');
readln(letopocet);
{vypocet}
vek:=letopocet-narozeni;
{vypis vysledku}
writeln('Letos je ti ',vek,' roku.');
readln
end.
Takže jeden program, ale mnoho různých výsledků...
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Co je to odsazování?
KOd jsem si zkusil funguje ale nějak jsem nepochopil rozdíl mezi write a write line.
Re: Co je to odsazování?
Když něco nevíš nebo nechápeš, tak si to prostě vyzkoušej. Hraj si:
Schválně jestli na to přijdeš a dokážeš ten rozdíl popsat vlastními slovy
Jedna stará historka, kterou jsem kdysi našel někde na netu:
Kód: Vybrat vše
write(1);
writeln(2);
write(3);
writeln(4);
Schválně jestli na to přijdeš a dokážeš ten rozdíl popsat vlastními slovy
Jedna stará historka, kterou jsem kdysi našel někde na netu:
Vzpomněl jsem si na jednoho kamaráda, profesionálního programátora, který v devadesátých letech psal v Pascalu složité účetní programy. Byl jsem u něj v kanceláři, potřeboval si něco dokončit, tak jsem jej sledoval při práci.
Psal v modrém Borlandím editoru kód, najednou se zamyslel a natáhl do skříně pro knížku. Nalistoval stránku, nakoukl, knížku sklapnul a pokračoval v programování. Zajímalo mě, co takový profík používá za literaturu, tak jsem se podíval na obal. Stálo tam M. Virius: Základy programování - úvod do Turbo Pascalu.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Co je to odsazování?
Nejsem si tedy jistý ale write by tedy mělo přečíst třeba jen jedno slovo kdežto write line přečte celý řádek.
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host