Ver. 1.0 Beta, Nie masz kompilatora? Teraz moesz pisa skrypty ONLINE! Wersja podstawowa -nie zawiera wszystkich polece Pascala. Suy do nauki podstaw

Pascal

Choinka z gwiazdek


Najczciej w szkoach nauczyciele zadaj problem rysowania choinki z gwiazdek. Chodzi o to by uzyska rysunek w trybie tekstowym.


Ile wierszy? 5

   *
  ***
 *****
*******
*********


Choinka z gwiazdek z warunkiem if


program choinka;
var i, j, w : Integer;
begin
 Write('Ile wierszy? ');
 ReadLn(w);

 for i:=1 to w do
 begin
   for j:=1 to w + i - 1 do
   if j >= w - (i - 1) then
     Write('*')
   else
     Write(' ');

   WriteLn;
 end;
end.

Choinka z gwiazdek z samymi ptlami


program choinka;
var i, j, w : Integer;
begin
 Write('Ile wierszy? ');
 ReadLn(w);

 for i:=1 to w do
 begin
   for j:=1 to w - i do Write(' ');
   for j:=1 to i * 2 - 1 do Write('*');
   WriteLn;
 end;
end.

Takich sposbw rozwizania moe by bardzo wiele. Chodzi o to jak matematycznie zapisa rozwizanie zadania przy pomocy zmiennych. Jak samemu znajdowa takie matematyczne rozwizania?


Najpierw tworzymy ptl odpowiedzialn za rysowanie kolejnych linii choinki. Zaczynamy od czubka, koczymy na dole. Czyli ta ptla musi by od 1 do tylu, ile uytkownik wpisa wierszy. Przyjmijmy, e od 1 do "w", gdzie w jest zmienn, wczytan z klawiatury. Po kadorazowym narysowaniu linii, trzeba przenie kursor do linii nastpnej za pomoc WriteLn. Ale jeszcze przed przejciem do kolejnej linii trzeba przecie narysowa igy w poziomie.


Z tego wynika, e wewntrz tej ptli musi by jeszcze inna, ktra narysuje igy choinki. Jest to o tyle utrudnienie, e dla choinki, ktra ma 5 wierszy najpierw trzeba narysowa 4 spacje i jedn gwiazdk, potem 3 spacje i 3 gwiazdki, potem 2 spacje i 5 gwiazdek... itd.


atwo zauway, e liczba spacji z kadym wierszem maleje o 1. Na samej grze bdzie tyle spacji co wierszy choinki – 1. Znowu liczba gwiazdek ronie od 1, zwikszajc si w kadym rzdzie o 2 gwiazdki. Wynika z tego, e:



Dla choinki o wysokoci zapisanej w zmiennej "w"


W ptli od 1 do w rysujemy:
 1 rzd: w - 1 spacji, 1 gwiazdka
 2 rzd: w – 2 spacji, 3 gwiazdki
 3 rzd: w – 3 spacji, 5 gwiazdek
"w"rzd: w – w spacji, w * 2 – 1 gwiazdek

Czyli w jednej ptli musz by dwie nowe ptle, z ktrych jedna rysuje spacje, a druga gwiazdki. Teraz skd bdzie wiadomo, e gdy jestemy w pierwszym rzdzie, mamy od w odj 1 i narysowa jedn gwiazdk, a w drugim rzdzie od w odj 2 i narysowa 3 gwiazdki?


Wanie do tego suy zmienna skojarzona z ptl! Pisalimy ptl dla zmiennej i oraz j. Czyli w pierwszym rzdzie i bdzie rwne 1, w drugim i=2, w trzecim i=3, itd. To nam wystarczy.


Trzeba wic napisa ptl ze spacjami od 1 do w – i, a ptl z gwiazdkami od 1 do i * 2 - 1.

 

Strona korzysta z plikw cookie w celu wiadczenia usug Google (reklamy, statytyki) oraz Facebook. Jeli chcesz zablokowa pliki cookies wyacz je w swojej przegldarce. Potrzebujesz pomocy? kliknij