Programozási tételek - Pascal nyelvű megvalósítás

Az alábbiakban a programozási tetelek pascal nyelvű megvalósításait gyűjtöttük egybe.

A program kerete

Először készítsük el a program keretét, definiáljuk a szükséges változókat és készítsünk egyszerű beolvasó és kiíró eljárásokat!

Program Tetelek;
 
Const
  MaxN = 100;                      // Maximális elemszám
 
Var
  A : array[1..MaxN] of Integer;  // Elemeket tároló tömb
  N : Word;                       // Tényleges elemek száma
 
 
Procedure Beolvasas;            // Beolvassa az elemeket
 
    Var
      i : Word;                   // Ciklusváltozó
 
  Begin
    Write ('Adja meg az elemek számát: ');
    Readln(N);
    For i := 1 to N do
    Begin
      Write (i, '. elem: ');
      Readln(A[i]);
    End;(* For *)
  End;(* Beolvasas *)
 
 
  Procedure Kiir;                 // Kiírja az elemeket
 
    Var
      i : Word;                   // Ciklusváltozó
 
  Begin
    Write('A tömb elemei: ');
    For i := 1 to N-1 do
    Begin
      Write(A[i], ', ');
    End;(* For *)
    Writeln(A[i+1]);
  End;(* Kiiras *)
 
  // Ide kerülhetnek az egyes tételeket megvalósító függvények
 
Begin
 
  Beolvasas;
  Kiiras;
 
  // itt hívhatjuk meg a kívánt tételt megvalósító eljárást, függvényt
 
End.

Megszámolás tétel

Számoljuk meg, hogy hány negatív (T tulajdonságú) elem van a megadott számok között!

  Procedure Megszamolas;
    Var
      i  : Word;               // Ciklusváltozó
      Db : Word;               // A végeredmény
 
  Begin
    Db := 0;
    For i := 1 to N do
    Begin
      If (A[i] < 0) Then Inc(Db);
    End;(* For *)
    Writeln(Db, ' negatív szám található a megadott számok között!');
  End;(* Megszamolas *)

Összegzés tétel

Adjuk össze a megadott számokat!

  Procedure Osszegzes;
 
    Var
      Sum : Integer;              // A végeredmény
      i   : Word;                 // Ciklusváltozó
 
  Begin
    Sum := 0;
    For i := 1 to N do
    Begin
      Sum := Sum + A[i];
    End;(* For *)
    Writeln('A számok összege: ', Sum);
  End;(* Osszegzes *)

Eldöntés tétel

Döntsük el, van-e negatív (T tulajdonságú) szám a megadott számok között!

  Procedure Eldontes;
 
    Var
      i : Word;                    // Ciklusváltozó
 
  Begin
    i := 1;
    While (i <= N) and (A[i] >= 0) do
    Begin
      Inc(i);
    End;(* While *)
    If (i <= N) Then Writeln ('Van negatív szám a megadottak között.')
    Else Writeln ('Nem található negatív szám a megadottak között.');
  End;(* Eldontes *)

Kiválasztás

Adjunk meg egy negatív (T tulajdonságú) számot a megadottak közül, ha tudjuk, hogy van negatív szám köztük!

  Procedure Kivalasztas;
 
    Var
      i : Word;                       // Ciklusváltozó
 
  Begin
    i := 1;
    While A[i] >= 0 do
    Begin
      Inc(i);
    End;(* While *)
    Writeln ('A sorozat ', i, '. eleme negatív (', A[i], ').');
  End;(* Kiválsztás *)

Keresés tétel

Döntsük el, hogy van-e a számsornak negatív (T tulajdonságú) eleme, és ha van, adjunk vissza egy negatív elemet!

  Procedure Kereses;
 
    Var
      i : Word;                      // Ciklusváltozó
 
  Begin
    i := 1;
    While (i <= N) and (A[i] >= 0) do
    Begin
      Inc(i);
    End;(* While *)
    If (i <= N) Then Writeln('Van negatív szám, például a sorozat ', i, '. eleme (', A[i], ')')
    Else Writeln ('Nem található negatív szám a sorban.');
  End;(* Kereses *)

Maximumkiválasztás

Keressük meg a számok legnagyobbikát!

  Procedure MaximumKivalasztas;
 
    Var
      i    : Word;                  // Cilusváltozó
      MaxI : Word;                  // A legnagyobb elem indexe
 
  Begin
    MaxI := 1;
    For i := 2 to N do
    Begin
      If (A[MaxI] < A[i]) Then
      Begin
        MaxI := i;
      End;(* If *)
    End;(* For *)
    Writeln('A legnagyobb elem az ', MaxI, '. elem, ami: ', A[MaxI]);
  End;(* MaximumKivalogatas *)

Kiválogatás

Válogassuk ki egy másik tömbbe (Eredmeny) a negatív (T tulajdonságú) elemeket!

  Procedure Kivalogatas;
 
    Var
      i        :       Word;                      // Ciklusváltozó
      Db       :       Word;                      // Az negatív elemek száma
      Eredmeny :       Array[1..MAXN] of Integer; // A végeredmény
 
  Begin
    Db := 0;
    For i := 1 to N do
    Begin
      If (A[i] < 0) Then
      Begin
        Inc(Db);
        Eredmeny[Db] := A[i];
      End;(* If *)
    End;(* For *)
 
    // Az eredmény kiiratása
 
    Write('Negatív elemek: ');
    If Db > 0 Then
    Begin
      For i := 1 to Db-1 do
      Begin
        Write(Eredmeny[i], ', ');
      End;(* For *)
      Writeln(Eredmeny[i+1]);
    End;(* If *)
  End;(* Kivalogatas *)

Rendezés

Rendezzük a számsort növekvő sorrenbe!

Minimumkiválasztásos rendezés

  • Kiválasztjuk a legkisebb elemet
  • Első és a lekisebb cseréje
  • A maradék, eggyel rövidebb számsorra ismételjük a fentieket
  • Az N-1-edik elem helyrerakásakor kész vagyunk (az N. már csak jó helyen lehet.
  Procedure Rendezes;
 
    Var
      i, j     :       Word;             // Ciklusváltozó
      MinIndex :       Word;                // Minimális elem indexe
      seged    :       Integer;             // Segédváltozó a cseréhez
 
  Begin
    For i := 1 to N-1 do // i azt mutatja, hogy hanyadik elemet rakom a helyére
    Begin
 
      // MinimumKiválasztás tétele
 
      MinIndex := i;
      For j:= i+1 to N do
      Begin
        If A[j] < A[MinIndex] Then MinIndex:=j;
      End;(* For *)
 
      // A csere
 
      seged := A[i]; A[i] := A[MinIndex]; A[MinIndex] := seged;
    End;(* For *)
  End;(* Rendezes *)

Logaritmikus keresés

Adott, rendezett sorozatban keressünk meg egy megadott értéket!

  Procedure LogaritmikusKereses;
 
    Var
      e, v, k :       Word;         // Eleje, vége , közepe
      x       :       Integer;      // A keresendő érték
      Talalat :       Boolean;      // Megtaláltuk-e már?
 
  Begin
    Talalat := False;
    Write ('Keresett elem: '); Readln(x);
    e := 1; v := N;
    While (e <= v) and not(Talalat) do
    Begin
      k := (e + v) div 2;
      If A[k] < x Then e := k+1
      Else If A[k] > x Then v := k-1
      Else Talalat := True;
    End;(* While *)
    If (A[k] = x) Then Writeln('A keresett elem a tömb ', k, '. eleme.')
    Else Writeln('Nincs ilyen elem!');
  End;(* LogaritmikusKereses *)
oktatas/informatika/programozas/pascal/tetelek.txt · Utolsó módosítás: 2019/06/04 14:21 szerkesztette: barnkopf
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0