SlideShare a Scribd company logo
Programuję w Delphi i C++ Builder cz. ii ebook
Niniejsza darmowa publikacja zawiera jedynie fragment
                      pełnej wersji całej publikacji.

Aby przeczytać ten tytuł w pełnej wersji kliknij tutaj.
Niniejsza publikacja może być kopiowana, oraz dowolnie
rozprowadzana tylko i wyłącznie w formie dostarczonej przez
NetPress Digital Sp. z o.o., operatora sklepu na którym można
nabyć niniejszy tytuł w pełnej wersji. Zabronione są
jakiekolwiek zmiany w zawartości publikacji bez pisemnej zgody
NetPress oraz wydawcy niniejszej publikacji. Zabrania się jej
od-sprzedaży, zgodnie z regulaminem serwisu.
Pełna wersja niniejszej publikacji jest do nabycia w sklepie
internetowym e-booksweb.pl - Audiobooki, ksiązki audio,
e-booki .
Niniejszy ebook jest własnością prywatną.
            Został zakupiony legalnie w serwisie Netpress.pl,
                     będącym oficjalnym Partnerem Wydawcy.




Niniejsza publikacja, ani żadna jej część, nie może być kopiowana,
ani w jakikolwiek inny sposób reprodukowana, powielana, ani
odczytywana w środkach publicznego przekazu bez pisemnej zgody
wydawcy. Zabrania się jej publicznego udostępniania w Internecie.




© Copyright for Polish edition by ZloteMysli.pl
Data: 11.10.2006


Tytuł: Programuję w Delphi i C++ Builder
Autor: Mirosław J. Kubiak
Wydanie I
ISBN: 83-7521-105-2


Projekt okładki: Marzena Osuchowicz
Korekta: Sylwia Fortuna
Skład: Anna Popis-Witkowska


Internetowe Wydawnictwo Złote Myśli
Netina Sp. z o. o.
ul. Daszyńskiego 5
44-100 Gliwice
WWW: www.ZloteMysli.pl
EMAIL: kontakt@zlotemysli.pl


Wszelkie prawa zastrzeżone.
All rights reserved.
SPIS TREŚCI

WSTĘP.............................................................................................. 5
ROZDZIAŁ 8. TABLICE..................................................................... 7
 Deklarowanie tablic............................................................................................ 7
 Dostęp do elementów tablicy........................................................................... 12
 Sito Eratostenesa.............................................................................................. 15
 Tablice dwuwymiarowe.................................................................................... 18
 Sortowanie bąbelkowe..................................................................................... 24
 Tablice przechowują również teksty................................................................ 29
 Warto zapamiętać............................................................................................ 43
ROZDZIAŁ 9. PODPROGRAMY....................................................... 44
 Co to są podprogramy...................................................................................... 44
 Definiujemy funkcje i procedury w języku Delphi.......................................... 44
 Definiujemy funkcje w języku C++ Builder..................................................... 49
 Programy mogą przekazywać podprogramom informacje..............................53
 Przekazywanie parametrów przez wartość...................................................... 54
 Zmienne globalne i lokalne.............................................................................. 59
 Przekazujemy funkcjom i procedurom tablice................................................ 60
 Rekurencja....................................................................................................... 69
 Warto zapamiętać............................................................................................. 75
ROZDZIAŁ 10. ELEMENTY GRAFIKI.............................................. 76
 Wprowadzenie ................................................................................................. 76
 Program Przykładowa grafika.......................................................................... 85
 Graficzny przykład programu rekurencyjnego................................................ 92
 Warto zapamiętać........................................................................................... 109
ROZDZIAŁ 11. PRZECHOWYWANIE INFORMACJI
W REKORDACH I W STRUKTURACH........................................... 110
 Rekordy i struktury......................................................................................... 110
 Warto zapamiętać........................................................................................... 121
ROZDZIAŁ 11. ELEMENTY PROGRAMOWANIA OBIEKTOWEGO. 122
 Wprowadzenie................................................................................................ 122
 Hermetyzacja danych..................................................................................... 144
 Dziedziczenie.................................................................................................. 144
 Polimorfizm.................................................................................................... 154
 Warto zapamiętać........................................................................................... 155
ROZDZIAŁ 13. OPERACJE WEJŚCIA/WYJŚCIA
– CZĘŚĆ II. PLIKI.......................................................................... 156
  Wprowadzenie................................................................................................ 156
  C++ Builder.................................................................................................... 157
  Pliki tekstowe.................................................................................................. 158
  Zapisywanie rekordów i struktur do pliku..................................................... 176
  C++ Builder.................................................................................................... 186
  Warto zapamiętać........................................................................................... 194
ROZDZIAŁ 14. WSKAŹNIKI.......................................................... 196
 Wprowadzenie................................................................................................ 196
 Wskaźniki i tablice......................................................................................... 200
 Programy mogą przekazywać podprogramom informacje .......................... 206
Przekazywanie parametrów przez wskaźnik................................................. 206
   Przekazywanie parametrów przez referencję................................................ 209
   Warto zapamiętać........................................................................................... 212
ROZDZIAŁ 15. ZMIENNE DYNAMICZNE....................................... 213
 Wprowadzenie................................................................................................ 213
 Zmienne dynamiczne do tablic...................................................................... 218
 Klasy TStrings i TStringList........................................................................... 221
 Warto zapamiętać.......................................................................................... 223
ROZDZIAŁ 16. ALGORYTMY NUMERYCZNE................................ 224
 Obliczanie sumy szeregu ............................................................................... 224
 Wyznaczenie miejsca zerowego funkcji metodą Newtona............................ 229
 Wyznaczanie miejsca zerowego funkcji ........................................................ 235
 Obliczanie całki metodą prostokątów............................................................ 241
DODATEK..................................................................................... 247
 D1. Formatowanie łańcuchów tekstowych..................................................... 247
 D2. Wybrane systemowe procedury konwersji typu..................................... 249
 D3. Standardowe procedury obsługujące pliki (Delphi) ............................... 251
 D4. Wyświetlanie komunikatów.................................................................... 254
 D5. Wartości parametru Flags dotyczące liczby i rodzaju przycisków.......... 255
 D6. Grafika w Delphi i w C++ Builder – ....................................................... 259

BIBLIOGRAFIA............................................................................. 263
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                   ●   str. 5
Wstęp




Wstęp

Umiejętność pisania programów przynajmniej w dwóch językach
programowania to wyzwanie dzisiejszych czasów adresowane do
młodych programistów.

Przystępnie napisany podręcznik składa się z 16 rozdziałów
i dodatku. Przedstawiony w nim materiał zawiera kurs
równoczesnego programowania w językach Delphi Pascal oraz C++
Builder, bogato okraszony licznymi przykładami programów oraz
wielu klasycznych algorytmów w obu językach z wykorzystaniem
programowania wizualnego i zdarzeniowego, gdzie dodatkowo
uwzględniono obsługę sytuacji wyjątkowych. Te nowatorskie
propozycje mogą z powodzeniem zostać wykorzystane m.in.
w indywidualnej nauce przez pasjonatów programowania.

Ze względów technicznych książka została podzielona na dwie części:
część I zawiera rozdziały od 1 do 7, natomiast część II rozdziały od 8 do 16.

Rozdziały od 1 do 11 oraz od 13 do 16 zawierają kurs programowania
strukturalnego w obu językach programowania, natomiast rozdział 12
zawiera elementy programowania obiektowego w Delphi i C++ Builder.

Część II właśnie masz przed sobą, a pierwsza część jest dostępna pod
adresem: http://podstawy-delphi-builder.zlotemysli.pl

Rozdział 8. Tablice. W rozdziale dowiemy się w jaki sposób
deklarujemy tablice jedno- i dwuwymiarowe, na czym polega
sortowanie bąbelkowe oraz o tym, że tablice przechowują nie tylko
liczby, ale również teksty.

                Copyright by Złote Myśli & Mirosław J. Kubiak
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                ●   str. 6
Wstęp


Rozdział 9. Podprogramy. W rozdziale dowiemy się co to są
podprogramy i do czego można je wykorzystać, jak definiujemy
procedury i funkcje, jak przekazujemy informacje procedurom
i funkcjom, co to są zmienne globalne i lokalne oraz co to jest
rekurencja.

Rozdział 10. Elementy grafiki. W rozdziale nauczymy się pisać proste
programy graficzne w Delphi i C++ Builder oraz przedstawimy
graficzny przykład programu rekurencyjnego.

Rozdział     11.   Przechowywanie    informacji   w    rekordach
i w strukturach. Rozdział zawiera informacje o rekordach
i strukturach oraz w jaki sposób te informacje są przechowywane
w języku Delphi i C++ Builder.

Rozdział 12. Elementy programowania obiektowego. W rozdziale
poznamy elementy programowania obiektowego, nauczymy się pisać
proste programy zawierające obiekty oraz dowiemy się na czym
polega hermetyzacja danych, dziedziczenie i polimorfizm.

Rozdział 13. Operacje wejścia/wyjścia - część II. Pliki. W rozdziale
opowiemy co to są pliki oraz dowiemy się jak zapisywać informacje
do pliku i jak je odczytywać.

Rozdział 14. Wskaźniki. Ten rozdział przybliży nam zawiłości
wskaźników oraz poznamy w nim sposoby przekazywania
parametrów przez wskaźnik i przez referencję.

Rozdział 15. Zmienne dynamiczne. W rozdziale omówiono różnicę
pomiędzy zmiennymi statycznymi a zmiennymi dynamicznymi oraz
jak przydzielać i zwalniać pamięć dla zmiennych dynamicznych.

Rozdział 16. Algorytmy numeryczne. W rozdziale omówiono kilka
wybranych algorytmów numerycznych.


              Copyright by Złote Myśli & Mirosław J. Kubiak
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                    ●    str. 7
Rozdział 8. Tablice




Rozdział 8. Tablice

W tym rozdziale dowiemy się, w jaki sposób deklarujemy tablice
jedno- i dwuwymiarowe, na czym polega sortowanie bąbelkowe
oraz o tym, że tablice przechowują nie tylko liczby, ale również
teksty.


Deklarowanie tablic

Tablica jest to struktura danych, która umożliwia przechowywanie
w sposób zorganizowany wielu zmiennych tego samego typu
(całkowitego, rzeczywistego itd.). Aby stworzyć taką strukturę
musimy dokonać deklaracji tablicy. W deklaracji tablicy musimy
określić typ wartości, jaki ma przechowywać tablica, a także liczbę jej
elementów. Tablice mogą być jednowymiarowe, dwuwymiarowe itd.

Delphi

Oto ogólna postać deklarowania w języku                    Delphi       tablicy
jednowymiarowej i związanej z nią zmiennej.

type

  dentyfikator_tablicy = array[rozmiar_tablicy] of typ

var

  nazwa_zmiennej : identyfikator_tablicy;

A oto przykład zadeklarowania tablicy jednowymiarowej o nazwie
dane typu całkowitego, zawierającej 10 elementów.

                Copyright by Złote Myśli & Mirosław J. Kubiak
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                    ●   str. 8
Deklarowanie tablic


type

 tablica = array[1..10] of integer;

var

 dane : tablica;

możliwy jest również inny poprawny zapis:

var

 dane : array[1..10] of integer;

Dostęp do elementów tablicy jest realizowany za pośrednictwem
indeksu, który wskazuje dany element. Dla deklaracji tablicy
w języku Delphi zawartej poniżej:

var

 dane : array[1..10] of integer;

pierwszy element tablicy dane ma indeks 1, drugi element dostępny
jest przez indeks 2 itd. Ostatni element tablicy ma indeks równy
wymiarowi tablicy, czyli 10, co zilustrowano na rysunku poniżej.


   1      2       3       4      5       6       7       8      9       10

Oto prosty przykład programu ilustrujący posługiwanie się tablicą
jednowymiarową.




                Copyright by Złote Myśli & Mirosław J. Kubiak
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                ●   str. 9
Deklarowanie tablic


Program (Tablica1)

Formularz

Na formularzu wykonujemy następujące czynności:

   1. umieszczamy dwa przyciski Button, jeden u góry z prawej
      strony (Button1) i jeden na dole również z prawej strony
      (Button2),
   2. następnie klikamy myszą raz na Button1 i w Object
      Inspectorze zmieniamy we właściwościach (Properties)
      w Caption tekst Button1 na Zacznij,
   3. klikamy myszą raz na Button2 i w Object Inspectorze
      zmieniamy we właściwościach (Properties) w Caption tekst
      Button2 na Zakończ,
   4. z lewej górnej strony formularza umieszczamy komponent
      StringGrid,
   5. dwukrotnie klikamy na formularzu przycisk Zakończ
      i podpinamy związaną z nim procedurę procedure
      TForm1.Button2Click(Sender: TObject);

        begin

        Close;

        end;

   6. następnie dwukrotnie klikamy na formularzu przycisk
      Zacznij i podpinamy związaną z nim procedurę procedure
      TForm1.Button1Click(Sender: TObject), która została
      opisana w programie poniżej.




                Copyright by Złote Myśli & Mirosław J. Kubiak
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                ● str. 10
Deklarowanie tablic




Rys. 8.1. Formularz skonstruowany dla programu Tablica1, na którym
zamieszczono komponent StringGrid.


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
 Dialogs, StdCtrls, Grids;

type
 TForm1 = class(TForm)
  Button1: TButton;
  Button2: TButton;
  StringGrid1: TStringGrid;
  procedure Button1Click(Sender: TObject);
  procedure Button2Click(Sender: TObject);
 private
  { Private declarations }
 public
  { Public declarations }
 end;

var


                Copyright by Złote Myśli & Mirosław J. Kubiak
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                ● str. 11
Deklarowanie tablic


 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
 n = 10;

type
 tablica = array[1..n] of integer;
var
 i : integer;
 dane : tablica;

begin
StringGrid1.ColCount:=2; // ustalenie ilosci kolumn
StringGrid1.RowCount:=n+1; //ustalenie ilosci wierszy
StringGrid1.Cells[0,0]:='Indeks tabl.';
StringGrid1.Cells[1,0]:='Wart. tabl.';

for i:=1 to n do
 StringGrid1.Cells[0,i]:=IntToStr(i); //opis wierszy

for i:=1 to n do
 begin
 dane[i]:=i;
 StringGrid1.Cells[1,i]:=IntToStr(dane[i]);
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Close();
end;

end.



                Copyright by Złote Myśli & Mirosław J. Kubiak
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                         ● str. 12
Deklarowanie tablic


C++ Builder

Oto ogólna postać zadeklarowania w języku w C++ Builder tablicy
jednowymiarowej i związanej z nią zmiennej.

typ_tablicy nazwa_tablicy [rozmiar_tablicy]

A oto przykład zadeklarowania tablicy jednowymiarowej o nazwie
dane typu całkowitego, zawierającej 10 elementów:

    int dane [10];


Dostęp do elementów tablicy

Dostęp do elementów tablicy jest realizowany za pośrednictwem
indeksu, który wskazuje dany element. Dla deklaracji tablicy

int dane [10];

aby uzyskać dostęp do pierwszego elementu tablicy dane,
powinniśmy podać indeks 01, drugi element dostępny jest przez
indeks 1 itd. Ostatni element tablicy ma indeks równy rozmiarowi
tablicy minus 1, czyli 9, co zilustrowano na rysunku poniżej.


      0       1      2       3       4      5       6       7       8         9


Oto prosty przykład              ilustrujący    posługiwanie       się     tablicą
jednowymiarową.



1
    Indeks pierwszego elementu tablicy w języku C++ wynosi zawsze 0.

                   Copyright by Złote Myśli & Mirosław J. Kubiak
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                ● str. 13
Dostęp do elementów tablicy


Program (Tablica1)

Formularz

Na formularzu wykonujemy następujące czynności:

   1. umieszczamy dwa przyciski Button, jeden u góry z prawej
      strony (Button1) i jeden na dole również z prawej strony
      (Button2),
   2. następnie klikamy myszą raz na Button1 i w Object
      Inspectorze zmieniamy we właściwościach (Properties)
      w Caption tekst Button1 na Zacznij,
   3. klikamy myszą raz na Button2 i w Object Inspectorze
      zmieniamy we właściwościach (Properties) w Caption tekst
      Button2 na Zakończ,
   4. z lewej górnej strony formularza umieszczamy komponent
      StringGrid,
   5. dwukrotnie klikamy na formularzu przycisk Zakończ
      i podpinamy związaną z nim funkcję void __fastcall
      TForm1::Button2Click(TObject *Sender)

       {

        Close();

       }

   6. następnie dwukrotnie klikamy na formularzu przycisk
      Zacznij i podpinamy związaną z nim funkcję void
      __fastcall TForm1::Button1Click(TObject *Sender),
      która została opisana w programie poniżej.




               Copyright by Złote Myśli & Mirosław J. Kubiak
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                     ● str. 14
Dostęp do elementów tablicy



//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
     : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  const n=10;
  int i;
  int dane[10];

 StringGrid1->ColCount=2; //ustalenie ilosci kolumn
 StringGrid1->RowCount=n+1; //ustalenie ilosci wierszy
 StringGrid1->Cells[0][0]="Indeks tablicy";
 StringGrid1->Cells[1][0]="Wart. tabl.";

 for (i=0; i<10; i++)
  {
   StringGrid1->Cells[0][i+1]=IntToStr(i); //opis wierszy
  }

 for (i=0; i<10; i++)
  {
   dane[i]=i;
   StringGrid1->Cells[1][i+1]=IntToStr(dane[i]);
  }


                Copyright by Złote Myśli & Mirosław J. Kubiak
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                     ● str. 15
Dostęp do elementów tablicy


}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
 Close();
}
//---------------------------------------------------------------------------



Sito Eratostenesa

Około roku 200 p.n.e. matematyk grecki Eratostenes podał algorytm
na znajdowanie liczb pierwszych. Liczby pierwsze to są liczby
naturalne większe od 1, które dzielą się przez siebie i przez 1. Nazwa
tego najstarszego algorytmu na znajdowanie liczb pierwszych
pochodzi od sposobu, w jaki te liczby są znajdowane. Wszystkie
liczby po kolei przesiewa się, usuwając z spośród nich wszystkie
wielokrotności danej liczby. Zilustrujemy to przykładem, znajdując
za pomocą sita Eratostenesa wszystkie liczby pierwsze z zakresu od 2
do 30, które umieścimy w tabeli poniżej.

 2     3    4    5     6    7    8    9    10    11   12   13   14    15   16
 17   18   19 20 21 22 23 24 25 26 27 28 29 30

Liczba 2 jest liczbą pierwszą, pozostałe znajdujemy po usunięciu
z tabeli wielokrotności liczby 2 (gdyż nie są to liczby pierwsze)
otrzymując:

 2     3    *    5     *    7    *    9     *    11    *   13    *    15    *
 17    *   19    *    21    *   23     *   25    *    27    *   29    *




                Copyright by Złote Myśli & Mirosław J. Kubiak
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                       ● str. 16
Sito Eratostenesa


Kolejny etap polega na usunięciu z tabeli po liczbie 3 (przyjmuje się,
że jest to liczba pierwsza) wielokrotności liczby 3. Rezultat tego
działania znajduje się poniżej:

    2    3   *      5   *    7    *    *    *    11    *   13     *     *    *
    17   *   19     *   *    *   23    *    25    *    *    *     29    *


Z pozostałych teraz liczb kolejną po 2 i 3 jest liczba 5, którą
pozostawia się wykreślając wszystkie liczby podzielne przez 5:

    2    3   *      5   *    7    *    *    *    11    *   13     *     *    *
    17   *   19     *   *    *   23    *    *     *    *    *     29    *


Kontynuując to wykreślanie dojdziemy do sytuacji, kiedy zostaną
wykreślone wszystkie liczby, które nie są pierwsze i pozostaną tylko
liczby pierwsze.

W tym momencie możemy zakończyć nasze poszukiwania liczb
pierwszych pamiętając, że kolejne wykreślenia należy powtarzać, nie
dalej jak do liczby będącej zaokrąglonym w dół pierwiastkiem
kwadratowym ze zmiennej zakres. W naszym przykładzie jest to:
sqrt(30)=5.477.., po zaokrągleniu w dół2 otrzymujemy liczbę 5. W tabeli
pozostały już tylko liczby pierwsze, które wyświetlamy na ekranie.

Górny zakres, dla którego chcemy odnaleźć liczby pierwsze
wyznaczony jest tylko rozmiarem tablicy. W naszym programie jest to:

int tablica[10000];

Chcąc zmienić ten zakres, należy zmienić rozmiar tablicy.

2
 W języku C++ Builder realizuje to matematyczna funkcja floor(), która
znajduje się w pliku nagłówkowym math.h.

                  Copyright by Złote Myśli & Mirosław J. Kubiak
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                     ● str. 17
Sito Eratostenesa


C++ Builder (Sito)


//---------------------------------------------------------------------------

#include <vcl.h>
#include <math.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
     : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int i,j,zakres,zm_pom;
  int tablica[10000];

 zakres=StrToInt(InputBox("Podaj gorny zakres liczb
pierwszych","Maksymalny gorny zakres wynosi 9999",""));

 zm_pom = floor(sqrt(zakres));

 for (i=1; i<=zakres; i++)
  tablica[i]=i;


                Copyright by Złote Myśli & Mirosław J. Kubiak
PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak
                                                                     ● str. 18
Sito Eratostenesa


  for (i=2; i<=zm_pom; i++)
   if (tablica[i]!=0)
    for (j=i+1; j<=zakres; j++)
     if (j%i==0) tablica[j]=0;

 ListBox1->Items->Clear();
 ListBox1->Items->Add("Liczby pierwsze z zakresu od 1 do
"+IntToStr(zakres)+" to");

 for (i=2; i<=zakres; i++)
  if (tablica[i]!=0) ListBox1->Items->Add(IntToStr(i));
}
//---------------------------------------------------------------------------
Niniejsza darmowa publikacja zawiera jedynie fragment
                      pełnej wersji całej publikacji.

Aby przeczytać ten tytuł w pełnej wersji kliknij tutaj.
Niniejsza publikacja może być kopiowana, oraz dowolnie
rozprowadzana tylko i wyłącznie w formie dostarczonej przez
NetPress Digital Sp. z o.o., operatora sklepu na którym można
nabyć niniejszy tytuł w pełnej wersji. Zabronione są
jakiekolwiek zmiany w zawartości publikacji bez pisemnej zgody
NetPress oraz wydawcy niniejszej publikacji. Zabrania się jej
od-sprzedaży, zgodnie z regulaminem serwisu.
Pełna wersja niniejszej publikacji jest do nabycia w sklepie
internetowym e-booksweb.pl - Audiobooki, ksiązki audio,
e-booki .

More Related Content

PDF
Moja Firma
PDF
Czas Na E-Biznes
PDF
Internet w praktyce Tobiasz Maliński ebook
PDF
Czas Na E Biznes Fragment
PDF
Internet W Praktyce
PDF
Internet W Praktyce
PDF
Internet W Praktyce
PDF
Europejski Trybunał Praw Człowieka. Wybór orzeczeń 2009 - ebook
Moja Firma
Czas Na E-Biznes
Internet w praktyce Tobiasz Maliński ebook
Czas Na E Biznes Fragment
Internet W Praktyce
Internet W Praktyce
Internet W Praktyce
Europejski Trybunał Praw Człowieka. Wybór orzeczeń 2009 - ebook

What's hot (12)

PDF
Internet W Praktyce
PDF
Internet w praktyce
PDF
Sekrety języka C# (c sharp) ebook
PDF
Internet w praktyce
PDF
Czas Na E Biznes Fragment
PDF
Udane Wesele Fragment
PDF
Programuję W Delphi I C Builder
PDF
Czas Na E Biznes
PDF
Czas Na E Biznes
PDF
Czas Na E Biznes Fragment
PDF
Czas Na E Biznes
PDF
Czasnae Biznes
Internet W Praktyce
Internet w praktyce
Sekrety języka C# (c sharp) ebook
Internet w praktyce
Czas Na E Biznes Fragment
Udane Wesele Fragment
Programuję W Delphi I C Builder
Czas Na E Biznes
Czas Na E Biznes
Czas Na E Biznes Fragment
Czas Na E Biznes
Czasnae Biznes
Ad

Similar to Programuję w Delphi i C++ Builder cz. ii ebook (20)

PDF
Programuje W Delphi I C Builder
PDF
Programuje W Delphi I C Builder
PDF
Programuje w Delphi i C Builder
PDF
darmowe ebooki Programuje W Delphi I C Builder
PDF
Delphi 7. Kompendium programisty
PDF
ABC Delphi 6
PDF
Delphi 7 dla każdego
PDF
ABC Delphi 7
PDF
ABC Delphi 2006
PDF
Delphi. Szybki start
PDF
Praktyczny kurs Delphi
PDF
Delphi 2005. Ćwiczenia praktyczne
PDF
Delphi 2005. 303 gotowe rozwiązania
PDF
C++BuilderX. Ćwiczenia
PDF
C++Builder i Turbo C++. Podstawy
PDF
C++Builder Borland Developer Studio 2006. Kompendium programisty
PDF
Aplikacje w Delphi. Przykłady. Wydanie II
PDF
Programowanie w języku C. Szybki start
PDF
C++Builder 6. Ćwiczenia
PDF
C#. Ćwiczenia
Programuje W Delphi I C Builder
Programuje W Delphi I C Builder
Programuje w Delphi i C Builder
darmowe ebooki Programuje W Delphi I C Builder
Delphi 7. Kompendium programisty
ABC Delphi 6
Delphi 7 dla każdego
ABC Delphi 7
ABC Delphi 2006
Delphi. Szybki start
Praktyczny kurs Delphi
Delphi 2005. Ćwiczenia praktyczne
Delphi 2005. 303 gotowe rozwiązania
C++BuilderX. Ćwiczenia
C++Builder i Turbo C++. Podstawy
C++Builder Borland Developer Studio 2006. Kompendium programisty
Aplikacje w Delphi. Przykłady. Wydanie II
Programowanie w języku C. Szybki start
C++Builder 6. Ćwiczenia
C#. Ćwiczenia
Ad

More from e-booksweb.pl (20)

PDF
Jak zdobyć zielona kartę i wizy czasowe - ebook
PDF
Jak zachęcać do czytania. Minilekcje dla uczniów gimnazjum i liceum - ebook
PDF
ABC emigranta - Honorata Chorąży-Przybysz - ebook
PDF
Życie, sprawy i wędrówka do piekła doktora jana fausta - ebook
PDF
żYcie przed życiem, życie po życiu. Zaświaty w tradycjach niebiblijnych - ebook
PDF
Zwielokrotnianie umysłu - ebook
PDF
Zrobię to dzisiaj! - Bartłomiej Popiel - ebook
PDF
Zostań Kopernikiem! - Halina Gumowska - ebook
PDF
Znaki i przepowiednie nadchodzącego końca świata - ebook
PDF
Złote pocałunki. Opowieści niezwykłe - ebook
PDF
Złodziejka pamięci - Krystyna Kofta - ebook
PDF
Zdobycie sandomierza (rok 1809) - Walery Przyborowski - ebook
PDF
Zbuduj trwałą i szczęśliwą przyjaźń - Anna Grabka - ebook
PDF
Zarządzanie pracą - ebook
PDF
Zakłady sportowe i bukmacherskie kontra multilotek - ebook
PDF
Zagadki ludzkiej natury huna - tajemna wiedza kahunów, hipnoza, duchy, zjawy,...
PDF
Wypełnianie dokumentów ZUS - ebook
PDF
Wymiar i rozkład czasu pracy - ebook
PDF
Warsztaty edukacji twórczej. Jak rozwijać osobowość przez sztukę. Program int...
PDF
Warsztaty edukacji teatralnej - ebook
Jak zdobyć zielona kartę i wizy czasowe - ebook
Jak zachęcać do czytania. Minilekcje dla uczniów gimnazjum i liceum - ebook
ABC emigranta - Honorata Chorąży-Przybysz - ebook
Życie, sprawy i wędrówka do piekła doktora jana fausta - ebook
żYcie przed życiem, życie po życiu. Zaświaty w tradycjach niebiblijnych - ebook
Zwielokrotnianie umysłu - ebook
Zrobię to dzisiaj! - Bartłomiej Popiel - ebook
Zostań Kopernikiem! - Halina Gumowska - ebook
Znaki i przepowiednie nadchodzącego końca świata - ebook
Złote pocałunki. Opowieści niezwykłe - ebook
Złodziejka pamięci - Krystyna Kofta - ebook
Zdobycie sandomierza (rok 1809) - Walery Przyborowski - ebook
Zbuduj trwałą i szczęśliwą przyjaźń - Anna Grabka - ebook
Zarządzanie pracą - ebook
Zakłady sportowe i bukmacherskie kontra multilotek - ebook
Zagadki ludzkiej natury huna - tajemna wiedza kahunów, hipnoza, duchy, zjawy,...
Wypełnianie dokumentów ZUS - ebook
Wymiar i rozkład czasu pracy - ebook
Warsztaty edukacji twórczej. Jak rozwijać osobowość przez sztukę. Program int...
Warsztaty edukacji teatralnej - ebook

Programuję w Delphi i C++ Builder cz. ii ebook

  • 2. Niniejsza darmowa publikacja zawiera jedynie fragment pełnej wersji całej publikacji. Aby przeczytać ten tytuł w pełnej wersji kliknij tutaj. Niniejsza publikacja może być kopiowana, oraz dowolnie rozprowadzana tylko i wyłącznie w formie dostarczonej przez NetPress Digital Sp. z o.o., operatora sklepu na którym można nabyć niniejszy tytuł w pełnej wersji. Zabronione są jakiekolwiek zmiany w zawartości publikacji bez pisemnej zgody NetPress oraz wydawcy niniejszej publikacji. Zabrania się jej od-sprzedaży, zgodnie z regulaminem serwisu. Pełna wersja niniejszej publikacji jest do nabycia w sklepie internetowym e-booksweb.pl - Audiobooki, ksiązki audio, e-booki .
  • 3. Niniejszy ebook jest własnością prywatną. Został zakupiony legalnie w serwisie Netpress.pl, będącym oficjalnym Partnerem Wydawcy. Niniejsza publikacja, ani żadna jej część, nie może być kopiowana, ani w jakikolwiek inny sposób reprodukowana, powielana, ani odczytywana w środkach publicznego przekazu bez pisemnej zgody wydawcy. Zabrania się jej publicznego udostępniania w Internecie. © Copyright for Polish edition by ZloteMysli.pl Data: 11.10.2006 Tytuł: Programuję w Delphi i C++ Builder Autor: Mirosław J. Kubiak Wydanie I ISBN: 83-7521-105-2 Projekt okładki: Marzena Osuchowicz Korekta: Sylwia Fortuna Skład: Anna Popis-Witkowska Internetowe Wydawnictwo Złote Myśli Netina Sp. z o. o. ul. Daszyńskiego 5 44-100 Gliwice WWW: www.ZloteMysli.pl EMAIL: kontakt@zlotemysli.pl Wszelkie prawa zastrzeżone. All rights reserved.
  • 4. SPIS TREŚCI WSTĘP.............................................................................................. 5 ROZDZIAŁ 8. TABLICE..................................................................... 7 Deklarowanie tablic............................................................................................ 7 Dostęp do elementów tablicy........................................................................... 12 Sito Eratostenesa.............................................................................................. 15 Tablice dwuwymiarowe.................................................................................... 18 Sortowanie bąbelkowe..................................................................................... 24 Tablice przechowują również teksty................................................................ 29 Warto zapamiętać............................................................................................ 43 ROZDZIAŁ 9. PODPROGRAMY....................................................... 44 Co to są podprogramy...................................................................................... 44 Definiujemy funkcje i procedury w języku Delphi.......................................... 44 Definiujemy funkcje w języku C++ Builder..................................................... 49 Programy mogą przekazywać podprogramom informacje..............................53 Przekazywanie parametrów przez wartość...................................................... 54 Zmienne globalne i lokalne.............................................................................. 59 Przekazujemy funkcjom i procedurom tablice................................................ 60 Rekurencja....................................................................................................... 69 Warto zapamiętać............................................................................................. 75 ROZDZIAŁ 10. ELEMENTY GRAFIKI.............................................. 76 Wprowadzenie ................................................................................................. 76 Program Przykładowa grafika.......................................................................... 85 Graficzny przykład programu rekurencyjnego................................................ 92 Warto zapamiętać........................................................................................... 109 ROZDZIAŁ 11. PRZECHOWYWANIE INFORMACJI W REKORDACH I W STRUKTURACH........................................... 110 Rekordy i struktury......................................................................................... 110 Warto zapamiętać........................................................................................... 121 ROZDZIAŁ 11. ELEMENTY PROGRAMOWANIA OBIEKTOWEGO. 122 Wprowadzenie................................................................................................ 122 Hermetyzacja danych..................................................................................... 144 Dziedziczenie.................................................................................................. 144 Polimorfizm.................................................................................................... 154 Warto zapamiętać........................................................................................... 155 ROZDZIAŁ 13. OPERACJE WEJŚCIA/WYJŚCIA – CZĘŚĆ II. PLIKI.......................................................................... 156 Wprowadzenie................................................................................................ 156 C++ Builder.................................................................................................... 157 Pliki tekstowe.................................................................................................. 158 Zapisywanie rekordów i struktur do pliku..................................................... 176 C++ Builder.................................................................................................... 186 Warto zapamiętać........................................................................................... 194 ROZDZIAŁ 14. WSKAŹNIKI.......................................................... 196 Wprowadzenie................................................................................................ 196 Wskaźniki i tablice......................................................................................... 200 Programy mogą przekazywać podprogramom informacje .......................... 206
  • 5. Przekazywanie parametrów przez wskaźnik................................................. 206 Przekazywanie parametrów przez referencję................................................ 209 Warto zapamiętać........................................................................................... 212 ROZDZIAŁ 15. ZMIENNE DYNAMICZNE....................................... 213 Wprowadzenie................................................................................................ 213 Zmienne dynamiczne do tablic...................................................................... 218 Klasy TStrings i TStringList........................................................................... 221 Warto zapamiętać.......................................................................................... 223 ROZDZIAŁ 16. ALGORYTMY NUMERYCZNE................................ 224 Obliczanie sumy szeregu ............................................................................... 224 Wyznaczenie miejsca zerowego funkcji metodą Newtona............................ 229 Wyznaczanie miejsca zerowego funkcji ........................................................ 235 Obliczanie całki metodą prostokątów............................................................ 241 DODATEK..................................................................................... 247 D1. Formatowanie łańcuchów tekstowych..................................................... 247 D2. Wybrane systemowe procedury konwersji typu..................................... 249 D3. Standardowe procedury obsługujące pliki (Delphi) ............................... 251 D4. Wyświetlanie komunikatów.................................................................... 254 D5. Wartości parametru Flags dotyczące liczby i rodzaju przycisków.......... 255 D6. Grafika w Delphi i w C++ Builder – ....................................................... 259 BIBLIOGRAFIA............................................................................. 263
  • 6. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 5 Wstęp Wstęp Umiejętność pisania programów przynajmniej w dwóch językach programowania to wyzwanie dzisiejszych czasów adresowane do młodych programistów. Przystępnie napisany podręcznik składa się z 16 rozdziałów i dodatku. Przedstawiony w nim materiał zawiera kurs równoczesnego programowania w językach Delphi Pascal oraz C++ Builder, bogato okraszony licznymi przykładami programów oraz wielu klasycznych algorytmów w obu językach z wykorzystaniem programowania wizualnego i zdarzeniowego, gdzie dodatkowo uwzględniono obsługę sytuacji wyjątkowych. Te nowatorskie propozycje mogą z powodzeniem zostać wykorzystane m.in. w indywidualnej nauce przez pasjonatów programowania. Ze względów technicznych książka została podzielona na dwie części: część I zawiera rozdziały od 1 do 7, natomiast część II rozdziały od 8 do 16. Rozdziały od 1 do 11 oraz od 13 do 16 zawierają kurs programowania strukturalnego w obu językach programowania, natomiast rozdział 12 zawiera elementy programowania obiektowego w Delphi i C++ Builder. Część II właśnie masz przed sobą, a pierwsza część jest dostępna pod adresem: http://podstawy-delphi-builder.zlotemysli.pl Rozdział 8. Tablice. W rozdziale dowiemy się w jaki sposób deklarujemy tablice jedno- i dwuwymiarowe, na czym polega sortowanie bąbelkowe oraz o tym, że tablice przechowują nie tylko liczby, ale również teksty. Copyright by Złote Myśli & Mirosław J. Kubiak
  • 7. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 6 Wstęp Rozdział 9. Podprogramy. W rozdziale dowiemy się co to są podprogramy i do czego można je wykorzystać, jak definiujemy procedury i funkcje, jak przekazujemy informacje procedurom i funkcjom, co to są zmienne globalne i lokalne oraz co to jest rekurencja. Rozdział 10. Elementy grafiki. W rozdziale nauczymy się pisać proste programy graficzne w Delphi i C++ Builder oraz przedstawimy graficzny przykład programu rekurencyjnego. Rozdział 11. Przechowywanie informacji w rekordach i w strukturach. Rozdział zawiera informacje o rekordach i strukturach oraz w jaki sposób te informacje są przechowywane w języku Delphi i C++ Builder. Rozdział 12. Elementy programowania obiektowego. W rozdziale poznamy elementy programowania obiektowego, nauczymy się pisać proste programy zawierające obiekty oraz dowiemy się na czym polega hermetyzacja danych, dziedziczenie i polimorfizm. Rozdział 13. Operacje wejścia/wyjścia - część II. Pliki. W rozdziale opowiemy co to są pliki oraz dowiemy się jak zapisywać informacje do pliku i jak je odczytywać. Rozdział 14. Wskaźniki. Ten rozdział przybliży nam zawiłości wskaźników oraz poznamy w nim sposoby przekazywania parametrów przez wskaźnik i przez referencję. Rozdział 15. Zmienne dynamiczne. W rozdziale omówiono różnicę pomiędzy zmiennymi statycznymi a zmiennymi dynamicznymi oraz jak przydzielać i zwalniać pamięć dla zmiennych dynamicznych. Rozdział 16. Algorytmy numeryczne. W rozdziale omówiono kilka wybranych algorytmów numerycznych. Copyright by Złote Myśli & Mirosław J. Kubiak
  • 8. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 7 Rozdział 8. Tablice Rozdział 8. Tablice W tym rozdziale dowiemy się, w jaki sposób deklarujemy tablice jedno- i dwuwymiarowe, na czym polega sortowanie bąbelkowe oraz o tym, że tablice przechowują nie tylko liczby, ale również teksty. Deklarowanie tablic Tablica jest to struktura danych, która umożliwia przechowywanie w sposób zorganizowany wielu zmiennych tego samego typu (całkowitego, rzeczywistego itd.). Aby stworzyć taką strukturę musimy dokonać deklaracji tablicy. W deklaracji tablicy musimy określić typ wartości, jaki ma przechowywać tablica, a także liczbę jej elementów. Tablice mogą być jednowymiarowe, dwuwymiarowe itd. Delphi Oto ogólna postać deklarowania w języku Delphi tablicy jednowymiarowej i związanej z nią zmiennej. type dentyfikator_tablicy = array[rozmiar_tablicy] of typ var nazwa_zmiennej : identyfikator_tablicy; A oto przykład zadeklarowania tablicy jednowymiarowej o nazwie dane typu całkowitego, zawierającej 10 elementów. Copyright by Złote Myśli & Mirosław J. Kubiak
  • 9. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 8 Deklarowanie tablic type tablica = array[1..10] of integer; var dane : tablica; możliwy jest również inny poprawny zapis: var dane : array[1..10] of integer; Dostęp do elementów tablicy jest realizowany za pośrednictwem indeksu, który wskazuje dany element. Dla deklaracji tablicy w języku Delphi zawartej poniżej: var dane : array[1..10] of integer; pierwszy element tablicy dane ma indeks 1, drugi element dostępny jest przez indeks 2 itd. Ostatni element tablicy ma indeks równy wymiarowi tablicy, czyli 10, co zilustrowano na rysunku poniżej. 1 2 3 4 5 6 7 8 9 10 Oto prosty przykład programu ilustrujący posługiwanie się tablicą jednowymiarową. Copyright by Złote Myśli & Mirosław J. Kubiak
  • 10. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 9 Deklarowanie tablic Program (Tablica1) Formularz Na formularzu wykonujemy następujące czynności: 1. umieszczamy dwa przyciski Button, jeden u góry z prawej strony (Button1) i jeden na dole również z prawej strony (Button2), 2. następnie klikamy myszą raz na Button1 i w Object Inspectorze zmieniamy we właściwościach (Properties) w Caption tekst Button1 na Zacznij, 3. klikamy myszą raz na Button2 i w Object Inspectorze zmieniamy we właściwościach (Properties) w Caption tekst Button2 na Zakończ, 4. z lewej górnej strony formularza umieszczamy komponent StringGrid, 5. dwukrotnie klikamy na formularzu przycisk Zakończ i podpinamy związaną z nim procedurę procedure TForm1.Button2Click(Sender: TObject); begin Close; end; 6. następnie dwukrotnie klikamy na formularzu przycisk Zacznij i podpinamy związaną z nim procedurę procedure TForm1.Button1Click(Sender: TObject), która została opisana w programie poniżej. Copyright by Złote Myśli & Mirosław J. Kubiak
  • 11. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 10 Deklarowanie tablic Rys. 8.1. Formularz skonstruowany dla programu Tablica1, na którym zamieszczono komponent StringGrid. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; StringGrid1: TStringGrid; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Copyright by Złote Myśli & Mirosław J. Kubiak
  • 12. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 11 Deklarowanie tablic Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); const n = 10; type tablica = array[1..n] of integer; var i : integer; dane : tablica; begin StringGrid1.ColCount:=2; // ustalenie ilosci kolumn StringGrid1.RowCount:=n+1; //ustalenie ilosci wierszy StringGrid1.Cells[0,0]:='Indeks tabl.'; StringGrid1.Cells[1,0]:='Wart. tabl.'; for i:=1 to n do StringGrid1.Cells[0,i]:=IntToStr(i); //opis wierszy for i:=1 to n do begin dane[i]:=i; StringGrid1.Cells[1,i]:=IntToStr(dane[i]); end; end; procedure TForm1.Button2Click(Sender: TObject); begin Close(); end; end. Copyright by Złote Myśli & Mirosław J. Kubiak
  • 13. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 12 Deklarowanie tablic C++ Builder Oto ogólna postać zadeklarowania w języku w C++ Builder tablicy jednowymiarowej i związanej z nią zmiennej. typ_tablicy nazwa_tablicy [rozmiar_tablicy] A oto przykład zadeklarowania tablicy jednowymiarowej o nazwie dane typu całkowitego, zawierającej 10 elementów: int dane [10]; Dostęp do elementów tablicy Dostęp do elementów tablicy jest realizowany za pośrednictwem indeksu, który wskazuje dany element. Dla deklaracji tablicy int dane [10]; aby uzyskać dostęp do pierwszego elementu tablicy dane, powinniśmy podać indeks 01, drugi element dostępny jest przez indeks 1 itd. Ostatni element tablicy ma indeks równy rozmiarowi tablicy minus 1, czyli 9, co zilustrowano na rysunku poniżej. 0 1 2 3 4 5 6 7 8 9 Oto prosty przykład ilustrujący posługiwanie się tablicą jednowymiarową. 1 Indeks pierwszego elementu tablicy w języku C++ wynosi zawsze 0. Copyright by Złote Myśli & Mirosław J. Kubiak
  • 14. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 13 Dostęp do elementów tablicy Program (Tablica1) Formularz Na formularzu wykonujemy następujące czynności: 1. umieszczamy dwa przyciski Button, jeden u góry z prawej strony (Button1) i jeden na dole również z prawej strony (Button2), 2. następnie klikamy myszą raz na Button1 i w Object Inspectorze zmieniamy we właściwościach (Properties) w Caption tekst Button1 na Zacznij, 3. klikamy myszą raz na Button2 i w Object Inspectorze zmieniamy we właściwościach (Properties) w Caption tekst Button2 na Zakończ, 4. z lewej górnej strony formularza umieszczamy komponent StringGrid, 5. dwukrotnie klikamy na formularzu przycisk Zakończ i podpinamy związaną z nim funkcję void __fastcall TForm1::Button2Click(TObject *Sender) { Close(); } 6. następnie dwukrotnie klikamy na formularzu przycisk Zacznij i podpinamy związaną z nim funkcję void __fastcall TForm1::Button1Click(TObject *Sender), która została opisana w programie poniżej. Copyright by Złote Myśli & Mirosław J. Kubiak
  • 15. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 14 Dostęp do elementów tablicy //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { const n=10; int i; int dane[10]; StringGrid1->ColCount=2; //ustalenie ilosci kolumn StringGrid1->RowCount=n+1; //ustalenie ilosci wierszy StringGrid1->Cells[0][0]="Indeks tablicy"; StringGrid1->Cells[1][0]="Wart. tabl."; for (i=0; i<10; i++) { StringGrid1->Cells[0][i+1]=IntToStr(i); //opis wierszy } for (i=0; i<10; i++) { dane[i]=i; StringGrid1->Cells[1][i+1]=IntToStr(dane[i]); } Copyright by Złote Myśli & Mirosław J. Kubiak
  • 16. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 15 Dostęp do elementów tablicy } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- Sito Eratostenesa Około roku 200 p.n.e. matematyk grecki Eratostenes podał algorytm na znajdowanie liczb pierwszych. Liczby pierwsze to są liczby naturalne większe od 1, które dzielą się przez siebie i przez 1. Nazwa tego najstarszego algorytmu na znajdowanie liczb pierwszych pochodzi od sposobu, w jaki te liczby są znajdowane. Wszystkie liczby po kolei przesiewa się, usuwając z spośród nich wszystkie wielokrotności danej liczby. Zilustrujemy to przykładem, znajdując za pomocą sita Eratostenesa wszystkie liczby pierwsze z zakresu od 2 do 30, które umieścimy w tabeli poniżej. 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Liczba 2 jest liczbą pierwszą, pozostałe znajdujemy po usunięciu z tabeli wielokrotności liczby 2 (gdyż nie są to liczby pierwsze) otrzymując: 2 3 * 5 * 7 * 9 * 11 * 13 * 15 * 17 * 19 * 21 * 23 * 25 * 27 * 29 * Copyright by Złote Myśli & Mirosław J. Kubiak
  • 17. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 16 Sito Eratostenesa Kolejny etap polega na usunięciu z tabeli po liczbie 3 (przyjmuje się, że jest to liczba pierwsza) wielokrotności liczby 3. Rezultat tego działania znajduje się poniżej: 2 3 * 5 * 7 * * * 11 * 13 * * * 17 * 19 * * * 23 * 25 * * * 29 * Z pozostałych teraz liczb kolejną po 2 i 3 jest liczba 5, którą pozostawia się wykreślając wszystkie liczby podzielne przez 5: 2 3 * 5 * 7 * * * 11 * 13 * * * 17 * 19 * * * 23 * * * * * 29 * Kontynuując to wykreślanie dojdziemy do sytuacji, kiedy zostaną wykreślone wszystkie liczby, które nie są pierwsze i pozostaną tylko liczby pierwsze. W tym momencie możemy zakończyć nasze poszukiwania liczb pierwszych pamiętając, że kolejne wykreślenia należy powtarzać, nie dalej jak do liczby będącej zaokrąglonym w dół pierwiastkiem kwadratowym ze zmiennej zakres. W naszym przykładzie jest to: sqrt(30)=5.477.., po zaokrągleniu w dół2 otrzymujemy liczbę 5. W tabeli pozostały już tylko liczby pierwsze, które wyświetlamy na ekranie. Górny zakres, dla którego chcemy odnaleźć liczby pierwsze wyznaczony jest tylko rozmiarem tablicy. W naszym programie jest to: int tablica[10000]; Chcąc zmienić ten zakres, należy zmienić rozmiar tablicy. 2 W języku C++ Builder realizuje to matematyczna funkcja floor(), która znajduje się w pliku nagłówkowym math.h. Copyright by Złote Myśli & Mirosław J. Kubiak
  • 18. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 17 Sito Eratostenesa C++ Builder (Sito) //--------------------------------------------------------------------------- #include <vcl.h> #include <math.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int i,j,zakres,zm_pom; int tablica[10000]; zakres=StrToInt(InputBox("Podaj gorny zakres liczb pierwszych","Maksymalny gorny zakres wynosi 9999","")); zm_pom = floor(sqrt(zakres)); for (i=1; i<=zakres; i++) tablica[i]=i; Copyright by Złote Myśli & Mirosław J. Kubiak
  • 19. PROGRAMUJĘ W DELPHI I C++ BUILDER cz. II – Mirosław J. Kubiak ● str. 18 Sito Eratostenesa for (i=2; i<=zm_pom; i++) if (tablica[i]!=0) for (j=i+1; j<=zakres; j++) if (j%i==0) tablica[j]=0; ListBox1->Items->Clear(); ListBox1->Items->Add("Liczby pierwsze z zakresu od 1 do "+IntToStr(zakres)+" to"); for (i=2; i<=zakres; i++) if (tablica[i]!=0) ListBox1->Items->Add(IntToStr(i)); } //---------------------------------------------------------------------------
  • 20. Niniejsza darmowa publikacja zawiera jedynie fragment pełnej wersji całej publikacji. Aby przeczytać ten tytuł w pełnej wersji kliknij tutaj. Niniejsza publikacja może być kopiowana, oraz dowolnie rozprowadzana tylko i wyłącznie w formie dostarczonej przez NetPress Digital Sp. z o.o., operatora sklepu na którym można nabyć niniejszy tytuł w pełnej wersji. Zabronione są jakiekolwiek zmiany w zawartości publikacji bez pisemnej zgody NetPress oraz wydawcy niniejszej publikacji. Zabrania się jej od-sprzedaży, zgodnie z regulaminem serwisu. Pełna wersja niniejszej publikacji jest do nabycia w sklepie internetowym e-booksweb.pl - Audiobooki, ksiązki audio, e-booki .