Vývojový diagram

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Anonym123
nováček
Příspěvky: 20
Registrován: květen 16
Pohlaví: Muž
Stav:
Offline

Re: Vývojový diagram

Příspěvekod Anonym123 » 27 kvě 2016 22:31

Ano, je to psaný ve FreePascalu.

Ale jak to tam mám zapsat?
Takhle to asi být zapsané nemůže, ne? A co ten podprogram?
http://www.jpeg.cz/images/2016/05/27/MpgA.png

Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7356
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Vývojový diagram

Příspěvekod faraon » 28 kvě 2016 18:07

Takhle se mi ta volání líbí. Odpovídají hlavičce volané procedury, je v nich celý výraz který se počítá a přiřazuje.

Zato u toho výpisu je potřeba napsat co se vlastně dělá, protože kosodélník znamená obecný vstup/výstup. Pro čtení z klávesnice a výpis na obrazovku existují speciální značky, "Manual input" a "Display". Vypadají jako klávesnice a klasický obrazovkový monitor při pohledu z boku:
Obrázek

Ta procedura je trochu složitější, navíc jsi tam zase nenakreslil jak probíhají ty cykly. Možná by pomohlo přepsat jí do starého pascalského odsazování, to je přehlednější.

Kód: Vybrat vše

procedure vypsanimatice(var m:matice);
  var i,j:integer;

  begin
    for i:= 1 to 5 do
      begin
        for j:= 1 to 5 do
          write(m[i,j],' ');
        writeln;
      end;
  end;

Ve vnitřním cyklu se vypisují buňky jednoho řádku matice, potom se odřádkuje, a to všechno se provádí ve vnějším cyklu pro všechny jednotlivé řádky. Kdyby sis to napsal s většími mezerami, dal by se ten diagram nakreslit přímo do tohohle kódu, kolem jednotlivých příkazů ;-)
Begin a end ti pak ukazují místa, kde spojovací čáry vstupují a vystupují do/z jednotlivých bloků příkazů. Každá jednotlivá programová struktura se totiž může brát jako složený příkaz, a zakreslit jako jeden obdélník, viz níže.

Trochu jsem ti opravil hlavičku té procedury a přidal komentář s deklarací použitých proměnných, tak jí zkus dokončit. Jako vzor jsem předělal ten minulý obrázek, a důkladně jsem ho ošipkoval, abys lépe viděl co se v těch cyklech děje. Vnitřní cyklus je navíc orámovaný přerušovanou čarou:

MpgA_.png

Ten čárkovaný obdélník vnitřního cyklu by mohl obsahovat jen stručný popis, protože je to složený příkaz, který má vcelku jeden vstupní a jeden výstupní bod. Mohlo by v něm být napsáno například "výpis jednoho řádku matice". Celý program se skládá ze sekvence takovýchhle bloků. které dohromady vytváření jeden blok. Dva a více po sobě následující bloky se vždy dají složit do jednoho bloku, jako korále na nitce.
Každý z těch bloků může zase obsahovat libovolný počet jiných bloků, a všechny se dají zase drobit a drobit až na úroveň jednotlivých instrukcí procesoru (a dalo by se jít ještě dál, přes mikroinstrukce až ke spínání jednotlivých tranzistorů!), když budeš tímhle postupem (zjemňováním) navrhovat program, říká se tomu postup shora dolů. Je to jeden ze základních bodů strukturovaného programování.

A když už jsem načal to strukturování, vývojové diagramy pro něj sice nejsou úplně nejvhodnější (vhodnější jsou struktogramy, ale ty je mnohem pracnější kreslit), ale pokud si ohlídáš aby se ti jednotlivé struktury daly vždy uzavřít do bloku s jedním vstupem a jedním výstupem, bude vždy možné takový vývojový diagram přepsat do libovolného moderního jazyka.
Jenom se ti ty spojovací čáry nesmí nikdy zkřížit, to by znamenalo že jsi někde něco udělal úplně blbě :lol:
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Anonym123
nováček
Příspěvky: 20
Registrován: květen 16
Pohlaví: Muž
Stav:
Offline

Re: Vývojový diagram

Příspěvekod Anonym123 » 28 kvě 2016 19:00

Teď moc nechápu, co po mně chcete, už jsem z toho zmatený :-D
Co si myslíte o tomhle?

http://www.jpeg.cz/images/2016/05/28/bwoAy.png

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7356
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Vývojový diagram

Příspěvekod faraon » 28 kvě 2016 19:29

Ale jo, trochu to chápeš :lol:

To vlevo je konec hlavního programu, ale to dokresli k tomu předchozímu obrázku, kde bylo rozkreslené to větvení (tady jsem z něj udělal jeden blok, za to by tě ve škole nepochválili). A koukám že ty obdélníky jsi už stihl opravit na volání podprogramu! Můžeš přidat i hlavičku (úvodní terminátor) s názvem programu, a po ní těm cyklům předcházela ještě jedna věc, podívej se do zdrojáku.

Podprogram vpravo vypadá už skoro perfektně, jenom ti tam ještě chybí jeden detail, podívej se do zdrojáku co všechno se provádí uvnitř vnějšího cyklu. Co se ještě udělá na konci každého vypsaného řádku?
Možná že u toho podprogramu by se místo "Konec" hodil spíš "Návrat", ale to záleží spíš na tom jak jste se to učili. Já tam teda u procedur nepíšu nic, a pokud funkce vrací nějakou hodnotu, tak napíšu co se vrací.

Jen mě tak napadlo, neučí vás ty vývojáky podle knihy "Algoritmizace" od Jany Pšenčíkové? Výborná učebnice, a má je tam přesně tak jak je děláš ty. Co jsem tak vypozoroval, tak učebnice programování od ženských jsou lepší než spousta těch které napsali chlapi, dokážou to pochopitelněji a podrobněji vysvětlovat. Však první programátor v historii byla také žena, Ada Lovelace: http://www.root.cz/clanky/prichod-hacke ... -byla-ada/
A jedna z nejvýznamnějších osobností vývoje programovacích jazyků také, Grace Hopper: http://www.root.cz/clanky/prichod-hacke ... hopperova/
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Anonym123
nováček
Příspěvky: 20
Registrován: květen 16
Pohlaví: Muž
Stav:
Offline

Re: Vývojový diagram

Příspěvekod Anonym123 » 28 kvě 2016 20:04

Já vím, že tam mám mít celý ten cyklus, já jen ukazuji, jestli to tak má být správně, já to pak všechno vezmu a udělám jeden velký VD programu.
Podle žádné učebnice nás neučí, jelikož učebnice vůbec nemáme, ale je možný, že nás takhle podle toho učí. :-)
Já bych byl spíše radši, kdyby jste mi udělal obrázek, jak to má vypadat toho co mám/e, jelikož pak přesně nevím, jestli mám všechno správně napsané, udělané, použité dobré značky apod. :-)
U začátku programu si nejsem jistý, co tam má být, já bych tam dal jenom "start/začátek"(název programu) a možná maximálně poznámku s proměnnými, takže přesně nevím, co chcete dát na začátek programu.
Taky si nejsem 100% jist, zdali mám konec programu přesně správně zapsaný (značky, text v nich, a přesně takhle to má být??) a také podprogram, jestli tak má být.. Vím, že jste psal, že vypadá téměř už perfektně, ale že tam chybí malý detail. Koukám do na program a nevím co mi tam chybí, zdá se mi, že vše již mám zapsané.
Proto by bylo dobré, jak jsem již zmínil, kdyby jste byl ochoten mi ukázat, jak je to dobře. Můžete jenom vzít a stáhnout obrázek a jen to poupravit, aby tam když tak nebyly chyby. :-)

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7356
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Vývojový diagram

Příspěvekod faraon » 28 kvě 2016 20:31

Když já bych radši abys na to přišel sám, ono se ti to může jednou hodit i k jiným věcem než je programování ;-)
Pokud bys tam měl nějakou hrubou chybu, tak bych tě na ní upozornil, to se neboj. Nemůžeme pokračovat dál pokud budeš dělat blbost, taková věc se musí odstranit jako první...

Hlavička programu bude podobná hlavičce toho podprogramu, takže prostě ovál s názvem programu, a po něm poznámka s deklarací lokálních proměnných.

Detail v tom podprogramu najdeš jak ve zdrojáku, tak i v mém popisu pod tím obrázkem. Zamysli se ještě jednou - co musíš udělat na konci každého řádku?

Nějakou učebnici by to chtělo, nebo aspoň doporučenou literaturu byste měli mít. Tahle kniha se dneska už hůř shání, je z roku 2009, ale existuje uložto... Další věc, která se v Čechách moc nevyskytuje, je šablona na kreslení vývojových diagramů, existuje jich dokonce celá řada různých, například tyhle:

Obrázek
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Anonym123
nováček
Příspěvky: 20
Registrován: květen 16
Pohlaví: Muž
Stav:
Offline

Re: Vývojový diagram

Příspěvekod Anonym123 » 29 kvě 2016 16:01

Zamysli se ještě jednou - co musíš udělat na konci každého řádku?
No vím, že středník (;), ale ty se do VD přeci nepíšou ne?

http://www.jpeg.cz/images/2016/05/29/kTj32.png

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7356
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Vývojový diagram

Příspěvekod faraon » 29 kvě 2016 20:36

Středník to fakt není :-)
No, máš ve zdrojáku write a writeln, čím se liší? Kdy se který používá? To by měla být poslední věc která tomu podprogramu chybí.

Ta hlavička hlavního programu by šla, ještě tam je před těmi cykly nějaká činnost.

Bacha na to že vnitřek těch cyklů jsem vyřízl, a chybí tam to větvení! A ten čárkovaný obdélník tam také nepatří, ten tam byl jen abys lépe viděl blok vnitřního cyklu.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Anonym123
nováček
Příspěvky: 20
Registrován: květen 16
Pohlaví: Muž
Stav:
Offline

Re: Vývojový diagram

Příspěvekod Anonym123 » 29 kvě 2016 21:36

O tom cyklu vím, to se neboj. :-)

no write je psaní na dalším řádku a writeln je na stejném řádku?

Před cykly, už nic nevidím, jen název programu a deklarování a potom už tam je jen podprogram, který máme nakreslený vedle.
Možná zadání počet řádků a sloupců ? Ale to máme v cyklech.

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7356
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Vývojový diagram

Příspěvekod faraon » 29 kvě 2016 21:50

Anonym123 píše:no write je psaní na dalším řádku a writeln je na stejném řádku?

Přesně naopak! Takže vnitřní cyklus napíše pět položek za sebou na jednom řádku, a pak je potřeba odřádkovat.

Letmý pohled do maličko upraveného zdrojáku napoví, které dvě věci se dělají ve vnějším cyklu. První je vnitřní cyklus, a ta druhá? Už jí vidíš?

Kód: Vybrat vše

procedure vypsanimatice(var m:matice);
  var i,j:integer;

  begin
    for i:= 1 to 5 do
      begin
        for j:= 1 to 5 do write(m[i,j],' ');
        writeln;
      end;
  end;

A stejně tak v tom hlavním programu máš na začátku nějaký výpis textu.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Anonym123
nováček
Příspěvky: 20
Registrován: květen 16
Pohlaví: Muž
Stav:
Offline

Re: Vývojový diagram

Příspěvekod Anonym123 » 29 kvě 2016 21:53

Jo, už to chápu. :-)
Ale jak to tedy mám zapsat do toho VD? když tam je jen čistě writeln ?

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7356
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Vývojový diagram

Příspěvekod faraon » 29 kvě 2016 22:06

Tak abys tomu rozuměl ty i učitel(ka) :idea:

Já bych tam plácnul "Display" a v něm buď symbol pro Enter nebo \n, ale takové věci jste se se ještě neučili. Takže bys tam mohl udělat V/V kosodélník a do něj vepsat třeba:

Kód: Vybrat vše

   PIŠ:
nový řádek
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)


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 7 hostů