program cw3_33;
{ Program wpisuje liczby naturalne mniejsze od 100 }
{ podzielne przez 11 metoda "siłowa". }
{ Katalog r3_08: 3_33.pas }
var
I : Byte; begin
for I := 1 to 100 do
if (I mod 11 = 0) then Writeln (I);
Readln; end.
Pętla for (podobnie jak inne typy pętli, które poznasz w następnym rozdziale) to metoda zaprogramowania iteracji (z tym słowem spotkałeś się już podczas projektowania, pamiętasz?). Kolejne ćwiczenie (z moim zdaniem bardzo ciekawymi wynikami) zaczerpnąłem z książki Czy Bóg gra w kości lana Stewarta.
ĆWICZENIE
3.34
Obliczanie wyrazów ciqgu
Napisz program, który wyświetla kolejne wyrazy ciągu xn+i = x„2-1 dla x0 leżącego pomiędzy 0 i 1. Sprawdź wyniki dla różnych wartości X.. Czy widzisz jakąś regularność w zachowaniu? Popraw program, by liczył wartości ciągu xn+i = 2xn2—1 dla x0 leżącego pomiędzy O i 1.1 co teraz z wynikami?
Oczywiście, w ćwiczeniu wykorzystamy pętlę for. Zakładam, że jedną liczbę będę wyświetlał na 10 pozycjach, w wierszu zatem zmieści się 8 wyników. Wypiszę 24 wiersze, czyli razem 192 wyniki. Program może zatem mieć postać:
program cw3_34;
{ Program wpisuje kolejne wyrazy ciągu x(n+l) - x(n)~2-l }
{ dla podanej wartości x(0). }
{ Katalog r3_08 : 3_34.pas }
var
I : Byte;
Wartość : Real;
begin
Write ('Podaj wartość x(0) z zakresu (0, 1): '); Readln (Wartość); if ((Wartosc<-0) or (Wartosc>-l)) then
Writeln ('Podana dana spoza zakresu (0, 1)') else
for I 1 to 192 do begin
Wartość Wartosc*Wartosc-l;
Write (Wartość:10:5); end;
Readln; end.
Na początku programu czytamy wartość zerowego wyrazu ciągu. Za pomocą instrukcj warunkowej sprawdzamy, czy leży w interesującym nas zakresie (to bardzo typowe wykorzystanie tej instrukcji). Jeżeli nie — wyświetlamy komunikat o błędzie. Jeżeli tak — w pętli liczymy kolejne wyrazy ciągu i wypisujemy je (począwszy od pierwszego).
Cóż możemy zaobserwować? Bardzo szybko kolejne wyrazy ciągu zaczęły przybiera tylko dwie wartości na zmianę: 0 i 1. Spróbuj uruchamiać program dla innych wartośd