120 likes | 238 Vues
ALGO – Algoritmizace 7. cvičení. ročník, ZS Ing. Zdena DOBEŠOVÁ, Ph.D. Příklad 7.1a - rozcvička. Sestav algoritmus, který přepíše vstupní matici A(N,M) do jednorozměrného pole P( ??? ) po řádcích. Řešení 7.1a. 2. tělo programu T = M * N délka posloupnosti P(R)
E N D
ALGO – Algoritmizace7. cvičení ročník, ZS Ing. Zdena DOBEŠOVÁ, Ph.D.
Příklad 7.1a - rozcvička Sestav algoritmus, který přepíše vstupní matici A(N,M) do jednorozměrného pole P(???) po řádcích.
Řešení 7.1a 2. tělo programu T = M * Ndélka posloupnosti P(R) vnější cyklus je po sloupcích FOR I=1 to I=N Step L=1 DO vnitřní cyklus je po řádcích FOR J= 1 to J = M Step K = 1 Do index pole P spočítáme do R R = N * (I-1) + J P(R)= A(I,J) End For J End For I 3. tisk pole P(R) For Q=1 To Q=T Do Tisk P(Q) End For Q P(1)= A(1,1) P(2)= A(1,2) P(3)= A(1,3) R= 5 * (1-1) + 3 =5*0+3 … P(6)= A(2,1) P(7)= A(2,2) .. P(11)= A(3,1) … 2. varianta : R=0 před cyklem R=R+1 v cyklu
Příklad 7.1b Sestav algoritmus, který přepíše vstupní matici A(N,M) do jednorozměrného pole P(???) po sloupcích.
Podprogramy Podprogram je pojmenovaná část programu. • výhoda: opakované použití • stejná opakující se část programu – stačí část programu napsat jednou a pojmenovat a pak jen volat • volání podprogramu – jménem • více vstupních parametrů odděleno čárkou Syntaxe v pseudojazyku: Pr <jméno> (vstupní parametry) . . . End Pr Příklad: Pr Mocnina (I) K = I*I End Pr Použití: I= 5 F=Mocnina(I) R= F+2 . . .
Žárovky 7.2 Popis situace: Matice žárovek Z(N,M) I,J jsou aktuální souřadnice žárovky, na kterou hráč klepl vlastnost (stav) žárovky popisujeme stavem „svítí“, „nesvítí“ Podprogram pro rozsvícení nebo zhasnutí jedné žárovky – změnu jejího stavu Pr ZmenStavZ (I,J) – zde jsou (I,J) vstupní parametry podprogramu IF Z(I,J)= „svítí“ THEN Z(I,J)= „nesvítí“ ELSE Z(I,J)= „svítí“ END IF END Pr
Žárovky – pokr. Podprogram pro nastavení sousedních žárovek při výběru středové žárovky - 1+ 4 sousední žárovky Pr StredZ (I,J) – zde jsou (I,J) vstupní parametry ZmenStavZ(I,J) vlastní žárovka ZmenStavZ(I+1,J) žárovka pod ZmenStavZ(I-1,J) žárovka nad ZmenStavZ(I,J+1) žárovka vpravo ZmenStavZ(I,J-1) žárovka vlevo END Pr levý kraj – 3 sousedi Pr KrajZL (I,J) – zde jsou (I,J) vstupní parametry ZmenStavZ(I,J) vlastní žárovka ZmenStavZ(I+1,J) žárovka pod ZmenStavZ(I-1,J) žárovka nad ZmenStavZ(I,J+1) žárovka vpravo END Pr
Žárovky – pokr. pravý kraj – 3 sousedi Pr KrajZP (I,J) – zde jsou (I,J) vstupní parametry ZmenStavZ(I,J) vlastní žárovka ZmenStavZ(I+1,J) žárovka pod ZmenStavZ(I-1,J) žárovka nad ZmenStavZ(I,J-1) žárovka vlevo END Pr Horní kraj – 3 sousedi Pr KrajZH (I,J) – zde jsou (I,J) vstupní parametry ZmenStavZ(I,J) vlastní žárovka ZmenStavZ(I+1,J) žárovka pod ZmenStavZ(I,J+1) žárovka vpravo ZmenStavZ(I,J-1) žárovka vlevo END Pr
Žárovky – pokr. Dolní kraj – 3 sousedi Pr KrajZH (I,J) – zde jsou (I,J) vstupní parametry ZmenStavZ(I,J) vlastní žárovka ZmenStavZ(I-1,J) žárovka nad ZmenStavZ(I,J+1) žárovka vpravo ZmenStavZ(I,J-1) žárovka vlevo END Pr 4 rohové žárovky: Levý horní roh – 2 sousedi Pr RohZLH (I,J) – zde jsou (I,J) vstupní parametry ZmenStavZ(I,J) vlastní žárovka ZmenStavZ(I+1,J) žárovka pod ZmenStavZ(I,J+1) žárovka vpravo END Pr
Žárovky – pokr. Pravý horní roh – 2 sousedi Pr RohZPH (I,J) – zde jsou (I,J) vstupní parametry ZmenStavZ(I,J) vlastní žárovka ZmenStavZ(I+1,J) žárovka pod ZmenStavZ(I,J-1) žárovka vlevo END Pr Levý dolní roh – 2 sousedi Pr RohjZLD (I,J) – zde jsou (I,J) vstupní parametry ZmenStavZ(I,J) vlastní žárovka ZmenStavZ(I-1,J) žárovka nad ZmenStavZ(I,J+1) žárovka vpravo END Pr Pravý dolní roh – 2 sousedi Pr RohZPD (I,J) – zde jsou (I,J) vstupní parametry ZmenStavZ(I,J) vlastní žárovka ZmenStavZ(I-1,J) žárovka nad ZmenStavZ(I,J-1) žárovka vlevo END Pr
Žárovky – pokr. Hlavní program –volá všechny dříve definované podprogramy 9 různých pozic ŽÁrovek-> 9x volba Case Select Case Z(I,J) Case I=1 AND J=1 Then RohZLH(I,J) Case I=1 AND 1<J<M Then KrajH Case I=1 AND J=M Then RohZPH(I,J) Case 1<I<N AND J=1 Then KrajL Case 1<I<N AND 1<J<M Then StredZ(I,J) . . . Case I=N AND J=M Then RohZPD(I,J) EndSelect