Kustība un sazarojuma operators

Objekta kustība tiek panākta to uzzīmējot, īsu brītiņu paturot un zīmējot gabaliņu uz priekšu.

1. programma

Programma pārslidina riņķa līniju pāri ekrānam no kreisās līdz labajai malai.

uses Graph,Crt;
var x,y:integer;
begin
  InitGraph(x,y,'');
  x:=9;
  repeat
    SetColor(1);
    circle(x,100,10);
    delay(10);
    SetColor(0);
    circle(x,100,10);
    x:=x+1;
  until x>GetMaxX-9;
  readln;
  CloseGraph;
end.

1. Pauzei izmantosim procedūru dalay no crt moduļa.
5. Centra abscisa sākumā. Rādiuss būs 10. Tāpēc riņķa līnijas kreisās malas abscisa sākumā būs 0.
7. Uzstādām zīmēšanas krāsu.
8. Uzzīmējam riņķīti.
9. Pauze. Ar to varam regulēt kustības ātrumu. Ja pauze būs ļoti maza, mēs riņķiti vispār nepamanīsim.
10.Uzstādām fona krāsu.
11.Uzzīmējam riņķīti fona krāsā, t.i., to izdzēšam.
12.Nākošā centra abscisa. Ja grib ātrāk, var palielināt par vairkiem punktiem.
13.Tā turpinām līdz riņķīša labā mala ir sasniegusi ekrāna labo malu.

2. programma

Liksim bumbiņai kustēties pa taisnstūra iekšpusi 450 leņķi attiecībā pret tā malu. Sasniedzot malu, bumbiņa pret to atsitīsis un turpinās kustību. Procesu varēs apturēt, nospiežot kādu no tastatūras taustiņiem.

uses Graph,Crt;
var x,y,a,b:integer;
begin
  InitGraph(x,y,'');
  rectangle(20,20,600,500);
  a:=1;b:=1;
  randomize;
  x:=random(500)+70;
  y:=random(400)+70;
  repeat
    SetColor(15);
    circle(x,y,10);
    delay(10);
    SetColor(0);
    circle(x,y,10);
    x:=x+a;
    y:=y+b;
    if x=589 then a:=-1;
    if x=31 then a:=1;
    if y=489 then b:=-1;
    if y=31 then b:=1;
  until KeyPressed;
  readln;
  CloseGraph;
end.

5. Uzzīmējam taisnstūri.
6. Tās būs virziana vektora koordinātas. Ja a=1, kustība notiek pa labi. Ja a=-1, kustība notiek pa kreisi. Ja b=1, kustība notiek uz leju. Ja b=-1, kustība notiek uz augšu. Tātad sākumā bumbiņa kustēsies pa labi uz leju.
8.,9. x un y - bubiņas centra koordinātas. Sākumā bumbiņu novietosim gadījuma punktā.
10.Ciklā būs bumbiņas kustības viens solis - pārvietošna vienu punktu uz sāniem un vienu punktu vertikālā virzienā.
11.Bumbiņas krāsa.
12.Uzzīmējam bumbiņu.
13.Pauze.
14.Krāsa dzēšanai.
15.Bumbiņa tiek dzēsta.
16.,17.Aprēķinam bumbiņas centra nākošās koordinātas.
18.Ja sasniegta labā mala, jāmaina virziens uz kreiso pusi.
19.Ja sasniegta kreisā mala, jāmaina virziens uz labo pusi.
20.Ja sasniegta apakšējā mala, jāmaina virziens uz augšu.
21.Ja sasniegta augšējā mala, jāmaina virziens uz leju.
22.Kustība beigsies pēc taustiņa nospiesanas. Funkcija KeyPressed atrodas crt modulī.

3. programma

Šī programma atrisina kvadrātvienādojumu ax2+bx+c=0.

var a,b,c:integer;
    D:real;
begin
  writeln('Ievadi kvadrātvienādojuma koeficientus a,b,c:');
  readln(a,b,c);
  D:=b*b-4*a*c;
  if D<0 then writeln('Vienādojumam sakņu nav')
         else if D=0 then writeln('x=',-b/(2*a):1:2)
                     else writeln('x1=',(-b-sqrt(D))/(2*a):1:2,'   x2=',(-b+sqrt(D))/(2*a):1:2);
end.

4. Dialogs ar lietotāju.
5. Ievadām kavdrātvienādojuma koeficientus.
6. Aprēķinam diskriminantu.
7. Ja diskriminants negatīvs izvadām paziņojumu, ka sakņu nav. (Šis operators izpleties pa trim rindiņām. Var rakstīt arī vienā. Jārakstā kā uzskatāmāk.)
8. Ja diskriminants ir 0, izvadām vienu sakni.
9. Ja diskriminants lielāks par 0, izvadām 2 saknes.

Uzdevumi

  1. Sastādīt programmu, kas pārbīda galvu pāri ekrānam. (Galvas zīmēšanai un dzēšanai izmantot procedūru Galva).
  2. Sastādīt programmu, kas pārvieto galvu apkārt ekrānam.
  3. Sastādīt programmu, kas riņķa līnijai liek augt un sarauties.
  4. Sastādīt programmu, kas galvai liek augt un sarauties.
  5. Papildināt 2.programmu tā, lai, atsitoties pret labo malu, bumbiņa paliek sarkana, bet, atsitoties pret kreiso malu, - balta.
  6. Sastādīt programmu, kas zīmē riņķi, ja datnē bilde.txt ierakstīts skaitlis 1 un kavadrātu, ja šajā datnē ierakstīts skaitlis 2.
  7. Sastādīt programmu, kas zīmē riņķi, ja datnē bilde.txt ierakstīts burts R un kavadrātu, ja šajā datnē ierakstīts burts K.
  8. Sastādīt programmu, kas zīmē riņķi, ja datnē bilde.txt ierakstīts burts R, kavadrātu, ja šajā datnē ierakstīts burts K un trijstūri, ja šajā datnē ierakstīts burts T.
  9. Papildināt iepriekšējā uzdevuma programmu tā, lai tā darbotos gan lielajiem gan mazajiem burtiem r, k un t.
  10. Datnes pirmajā rindiņā dots objektu skaits n. Katrā no nākošajām n rindiņām aprakstīts viens objekts. Objekti ir līnijas un riņķa līnijas. Līnija tiek aprakstīta vispirms rakstot burtu L un pēc tam četrus skaitļus - galapunktu koordinātas. Riņķa līnija tiek aprakstīta vispirms rakstot burtu R un pēctam trīs skaitļus: centra koordinatas un rādiusu.
    Datnes piemērs:
    3
    R 100 100 50
    L 50 20 70 80
    R 200 100 20
    
    Sastādīt programmu, kas uzzīmē datnē aprakstītos objektus.
  11. Sastādīt programmu, kas rindiņā zīmē āķīšus, pie tam katru piekto āķīti zīmē sarkanu, bet visus pārējos baltus:
  12. Sastādīt programmu, kas uzzīmē 15 rindās katrā pa 15 riņķīšiem tā, lai riņķīši virs diagonāles būtu vienā krāsā, riņķiši uz diagonāles - otrā krāsā, zem diagonāles - trešajā krāsā.
  13. Sastādīt programmu, kas aprēķina funkcijas

    vērtību jebkurai lietotāja ievadītai x vērtībai.
  14. Sastādīt programmu, kas noskaidro, vai ievadītais skaitlis ir pāra vai nepāra.
  15. Sastādīt programmu, kas par ievadīto skaitli pasaka, vai tas pozitīvs, negatīvs, vai nulle.
  16. Sastādīt programmu, kas atrod mazāko no diviem skaitļiem.
  17. Sastādīt programmu, kas atrod mazāko no trim skaitļiem.
  18. Sastādīt programmu, kas atrisina bikvadrātvienādojumu ax4+bx2+c=0 (a,b,c tiek ievadīti).
  19. Sastādīt programmu, kas noskaidro, vai ievadītie 3 skaitļi var kalpot par trijstūra malu garumiem.