Informatyka
Temat: Grafika
Wyobrazmy sobie kilka ponumerowanych punktow w przestrzeni. Chcemy polaczyc kazdy z punktow z kazdym odcinkami.
Jesli chcemy stworzyc tablice, ktora ma wiecej niz jedna kolumne, tworzymy ja w ten sposob:
array [1..n,1..m] of…
gdzie n to liczba rzedow a m liczba kolumn
Uklad wspolrzednych wyglada w komputerze tak, ze x rosna w prawo od lewego gornego rogu ekranu, a y z tego samego punktu rosna w dol.
Instrukcje rysowania :
line - rysuje linie parametry (x1,y1,x2,y2)
lineTo (wygodniej stosowac, gdy rysujemy lamana
moveto -przesuwa wskaznik graficzny
coordinates - zwraca pozycje wskaznika
pen, brush, textcolor - ustalanie kolorow.
Rectangle - rysuje prostokat
ellipse - rysuje elipse
Point - tysuje punkt
fill - wypelnia obszar
clear - czysci
font - czcionka
Teraz wrocimy do podstawowki o pobawimy sie zolwiem
Forward- do przodu
Backward - do tylu
Right
left
Penup
Pendown
Show
Hide
Home
Heading - w ktora storne patrzy zolw
SerHeading - ustawic kat
Position - pozycja
Setposition - ustawienie pozycji
Towards - ustawienie zolwia w ktoras strone
Zadania:
1. Wczytac linie tekstu (tylko male litery alfabetu lac. i spacje) i wypisac slowa palindromy.
2. Wylosowac tablice liczb dwucyfrowych i dla kazdej liczby zamienic cyfre dziesiatek i jednosci.
Programy:
Rysowanie linii z kolorami
program Graf;
const
n=500;
type
Punkty=array [1..n,1..2] of integer;
procedure losuj (var P: Punkty);
var
i: integer;
begin
for i:=1 to n do
begin
P[i,1]:=random (300);
P[i,2]:=random (300)
end
end;
Procedure Rysuj(P:Punkty);
var
i,j: integer;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
begin
Pen(1, random(255),random(255), random(255));
Line(P[i,1],P[i,2],P[j,1],P[j,2])
end
end;
var
P: Punkty;
begin
Randomize;
Losuj (P);
Rysuj (P);
end.
Program rysujacy to samo, tylko z kolem.
program Graf2;
const
n=10000;
type
Punkty=array [1..n,1..2] of integer;
Procedure oblicz (r:integer;var P:Punkty);
var
alfa:real;
i,xs,ys:integer;
begin
alfa:=2*pi/n;
xs:=r+50;
ys:=r+50;
for i:=1 to n do
begin
P[i,1]:=xs+round(r*sin(i*alfa));
P[i,2]:=ys+round(r*cos(i*alfa))
end
end;
Procedure Rysuj(P:Punkty);
var
i,j: integer;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
begin
Pen(1, random(255),random(255), random(255));
Line(P[i,1],P[i,2],P[j,1],P[j,2])
end
end;
var
P: Punkty;
r:integer;
begin
Randomize;
write(’r=’);
readln(r);
Oblicz (r,P);
Rysuj (P);
end.
Platek Kocha
program platekKocha;
procedure Koch (a:real; n:integer);
begin
if n=0 then
Forward (a)
else
begin
Koch(a/3,n-1);
left (-60);
Koch(a/3,n-1);
right(-120);
Koch(a/3,n-1);
left (-60);
Koch (a/3,n-1)
end
end;
procedure Platek (a:real;n:integer);
var
i:integer;
begin
for i:=1 to 3 do
begin
Koch (a,n);
Right(120)
end
end;
var
bok,n:integer;
begin
write(’bok=’);
readln(bok);
write(’n=’);
readln(n);
penup;
setposition(100,500);
pendown;
right(30);
Hide;
platek(bok,n)
end.
program jeden;
function palindrom (s:string):boolean;
var
i,j:integer;
jest:Boolean;
begin
i:=1;
j:=length(s);
jest:=true;
while (i<j) and (s[i] =s[j]) do
begin
i:=i+1;
j:=j-1
end;
if i<j then
palindrom:=false
else
palindrom:=true
end;
var
s,d:string;
i,j:integer;
b:boolean;
begin
write(’napisz cos ‘);
readln(s);
s:=s+’ ‘;
i:=1;
j:=1;
while i<=Length(s) do
begin
if s[i]=’ ‘ then
begin
d:=copy(s,j,i-j);
b:=palindrom(d);
if b=true then
writeln(d);
j:=i+1
end;
i:=i+1
end;
end.