Object Pascal/Instrukcje strukturalne
Wygląd
program struktur;
var
i, j, silnia: integer;
z: char;
begin
writeln('Witaj!');
begin
write('Na początek jakieś instrukcje w bloku. ');
write('Nic szczególnego z tego nie wynika. ');
writeln('Chociaż blok liczy się za jedną instrukcję');
readln; {przypominam, że średnik przed end nie jest konieczny}
end;
write('Podaj liczbę całkowitą: ');
readln(i);
if i > 0 then {instrukcja warunkowa: "jeśli i > 0 to"}
writeln('To jest liczba dodatnia.');
writeln('Jeszcze raz, z bardziej rozbudowaną instrukcją.');
if i > 0 then {"jeśli i jest większe od 0 to"}
writeln('To jest liczba dodatnia.') {ważne - brak średnika}
else {"a jeżeli nie jest"}
writeln('To jest liczba ujemna (chyba, że 0).');
write('Podaj kolejną liczbę całkowitą: ');
readln(i);
{zagnieżdżanie instrukcji warunkowych}
if i > 0 then
if i mod 2 = 0 then
writeln('To jest liczba dodatnia parzysta.')
else
writeln('To jest liczba dodatnia nieparzysta.')
else
if i mod 2 = 0 then
writeln('To jest liczba niedodatnia parzysta.')
else
writeln('To jest liczba niedodatnia nieparzysta.');
write('Czy mam odejmować? (t/n) ');
readln(z);
if z='t' then
begin {i tu przyda się instrukcja złożona}
write('i=');
readln(i);
write('j=');
readln(j);
writeln('i-j=', i-j);
end;
writeln('Zajmijmy się jeszcze liczbą ', i);
{trochę mniej instrukcji}
if i > 0 then
if i mod 2 = 0 then
writeln('To jest liczba dodatnia parzysta.')
else
writeln('To jest liczba dodatnia nieparzysta.')
else
if i mod 2 = 0 then
writeln('To jest liczba niedodatnia parzysta.');
{A to nie działa tak, jak można by się spodziewać}
if i > 0 then
if i mod 2 = 0 then
writeln('To jest liczba dodatnia parzysta.')
else
if i mod 2 = 0 then
writeln('To jest liczba niedodatnia parzysta.')
else
writeln('To jest liczba niedodatnia nieparzysta.');
{begin end jest niezbędne}
if i > 0 then
begin
if i mod 2 = 0 then
writeln('To jest liczba dodatnia parzysta.');
end
else
if i mod 2 = 0 then
writeln('To jest liczba niedodatnia parzysta.')
else
writeln('To jest liczba niedodatnia nieparzysta.');
write('Podaj ocenę: ');
readln(i);
case i of
1: writeln('niedostateczny');
2: writeln('dopuszczający');
3: writeln('dostateczny');
4: writeln('dobry');
5: writeln('bardzo dobry');
6: writeln('celujący');
7: begin
writeln('geniusz?');
writeln('nieprawidłowa ocena');
end;
else writeln('nieprawidłowa ocena');
end;
writeln('Przyszedł czas na pętle.');
readln;
for i := 1 to 100 do
write(i, ' ');
writeln;
writeln('Podaj liczbę, której silnię mam policzyć');
readln(i);
silnia := 1;
for j := i downto 2 do {dla j od i do 2 w dół }
begin
silnia := silnia * j;
write(j, ' * ');
end;
writeln('1 = ', silnia);
writeln('Teraz będzie się powtarzać, aż wpiszesz "f".');
repeat {powtarzaj}
writeln('powtarzam'); {tutaj nie potrzeba begin-end}
readln(z);
until z='f'; {aż z="f"}
writeln('a teraz będzie się powtarzać, póki wpisujesz "f".');
{początkowe z="f" jest zapewnione przez poprzednią pętlę}
while z='f' do {póki z="f" rób}
readln(z);
{Na koniec dziwne zjawisko}
writeln('Pętla for nie przejmuje się zmianami wartości po swoim rozpoczęciu.');
i := 10;
for j := 1 to i do
begin
writeln(j); {wypisze liczby od jednego do dziesięciu}
{j := 5;} {co więcej nie pozwala na ręczną zmianę zmiennej pętli - to byłby błąd}
i := 5;
end;
writeln('Ten przykładowy program jest strasznie długi, a i tak nie obejmuje wszystkich funkcji. W każdym razie na razie żegna.');
readln;
end.