SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
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 .

Contenu connexe

Tendances

Internet W Praktyce
Internet W PraktyceInternet W Praktyce
Internet W PraktyceAdam
 
Sekrety języka C# (c sharp) ebook
Sekrety języka C# (c sharp) ebookSekrety języka C# (c sharp) ebook
Sekrety języka C# (c sharp) ebooke-booksweb.pl
 
Internet w praktyce
Internet w praktyceInternet w praktyce
Internet w praktyceebook
 
Czas Na E Biznes Fragment
Czas Na E Biznes   FragmentCzas Na E Biznes   Fragment
Czas Na E Biznes Fragmentkotkidwa
 
Udane Wesele Fragment
Udane Wesele   FragmentUdane Wesele   Fragment
Udane Wesele FragmentDarmowyEbook
 
Programuję W Delphi I C Builder
Programuję W Delphi I C BuilderProgramuję W Delphi I C Builder
Programuję W Delphi I C BuilderAdam
 
Czas Na E Biznes
Czas Na E BiznesCzas Na E Biznes
Czas Na E BiznesHalik990
 
Czas Na E Biznes Fragment
Czas Na E Biznes   FragmentCzas Na E Biznes   Fragment
Czas Na E Biznes Fragmenteboooki
 
Czas Na E Biznes
Czas Na E BiznesCzas Na E Biznes
Czas Na E BiznesHalik990
 
Czasnae Biznes
Czasnae BiznesCzasnae Biznes
Czasnae Biznesfreeebook
 

Tendances (12)

Internet W Praktyce
Internet W PraktyceInternet W Praktyce
Internet W Praktyce
 
Internet w praktyce
Internet w praktyceInternet w praktyce
Internet w praktyce
 
Sekrety języka C# (c sharp) ebook
Sekrety języka C# (c sharp) ebookSekrety języka C# (c sharp) ebook
Sekrety języka C# (c sharp) ebook
 
Internet w praktyce
Internet w praktyceInternet w praktyce
Internet w praktyce
 
Czas Na E Biznes Fragment
Czas Na E Biznes   FragmentCzas Na E Biznes   Fragment
Czas Na E Biznes Fragment
 
Udane Wesele Fragment
Udane Wesele   FragmentUdane Wesele   Fragment
Udane Wesele Fragment
 
Programuję W Delphi I C Builder
Programuję W Delphi I C BuilderProgramuję W Delphi I C Builder
Programuję W Delphi I C Builder
 
Czas Na E Biznes
Czas Na E BiznesCzas Na E Biznes
Czas Na E Biznes
 
Czas Na E Biznes
Czas Na E BiznesCzas Na E Biznes
Czas Na E Biznes
 
Czas Na E Biznes Fragment
Czas Na E Biznes   FragmentCzas Na E Biznes   Fragment
Czas Na E Biznes Fragment
 
Czas Na E Biznes
Czas Na E BiznesCzas Na E Biznes
Czas Na E Biznes
 
Czasnae Biznes
Czasnae BiznesCzasnae Biznes
Czasnae Biznes
 

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

Programuje W Delphi I C Builder
Programuje W Delphi I C BuilderProgramuje W Delphi I C Builder
Programuje W Delphi I C Builderfreeebook
 
Programuje W Delphi I C Builder
Programuje W Delphi I C BuilderProgramuje W Delphi I C Builder
Programuje W Delphi I C BuilderGregory Grex
 
darmowe ebooki Programuje W Delphi I C Builder
darmowe ebooki Programuje W Delphi I C Builderdarmowe ebooki Programuje W Delphi I C Builder
darmowe ebooki Programuje W Delphi I C Builderebooks
 
Programuje w Delphi i C Builder
Programuje w Delphi i C BuilderProgramuje w Delphi i C Builder
Programuje w Delphi i C BuilderEbooki za darmo
 
Internet W Praktyce Fragment
Internet W Praktyce   FragmentInternet W Praktyce   Fragment
Internet W Praktyce FragmentDarmowyEbook
 
Internet W Praktyce
Internet W PraktyceInternet W Praktyce
Internet W Praktyceguest51f3e84
 
E-społeczność
E-społecznośćE-społeczność
E-społecznośćebook
 
E Spolecznosc Darmowy Fragment
E Spolecznosc   Darmowy FragmentE Spolecznosc   Darmowy Fragment
E Spolecznosc Darmowy FragmentDarmowyEbook
 
E-Spoleczność
E-SpolecznośćE-Spoleczność
E-SpolecznośćAdam
 
Internet W Praktyce
Internet W PraktyceInternet W Praktyce
Internet W Praktycefreeebook
 
Internet W Praktyce
Internet W PraktyceInternet W Praktyce
Internet W PraktyceHalik990
 
Pajączek 5 NxG. Ćwiczenia praktyczne
Pajączek 5 NxG. Ćwiczenia praktycznePajączek 5 NxG. Ćwiczenia praktyczne
Pajączek 5 NxG. Ćwiczenia praktyczneWydawnictwo Helion
 
Tania jazda samochodem - Lech Baczyński - ebook
Tania jazda samochodem - Lech Baczyński - ebookTania jazda samochodem - Lech Baczyński - ebook
Tania jazda samochodem - Lech Baczyński - ebooke-booksweb.pl
 
Niezawodne strategie wygrywania w sieci
Niezawodne strategie wygrywania w sieciNiezawodne strategie wygrywania w sieci
Niezawodne strategie wygrywania w sieciEbooki za darmo
 
Moja firma - Anna Jarczyk - ebook
Moja firma - Anna Jarczyk - ebookMoja firma - Anna Jarczyk - ebook
Moja firma - Anna Jarczyk - ebooke-booksweb.pl
 
Tajemnice największych uwodzicieli - ebook
Tajemnice największych uwodzicieli - ebookTajemnice największych uwodzicieli - ebook
Tajemnice największych uwodzicieli - ebooke-booksweb.pl
 

Similaire à Programuję w Delphi i C++ Builder cz. ii ebook (20)

Programuje W Delphi I C Builder
Programuje W Delphi I C BuilderProgramuje W Delphi I C Builder
Programuje W Delphi I C Builder
 
Programuje W Delphi I C Builder
Programuje W Delphi I C BuilderProgramuje W Delphi I C Builder
Programuje W Delphi I C Builder
 
darmowe ebooki Programuje W Delphi I C Builder
darmowe ebooki Programuje W Delphi I C Builderdarmowe ebooki Programuje W Delphi I C Builder
darmowe ebooki Programuje W Delphi I C Builder
 
Programuje w Delphi i C Builder
Programuje w Delphi i C BuilderProgramuje w Delphi i C Builder
Programuje w Delphi i C Builder
 
Internet W Praktyce Fragment
Internet W Praktyce   FragmentInternet W Praktyce   Fragment
Internet W Praktyce Fragment
 
Internet W Praktyce
Internet W PraktyceInternet W Praktyce
Internet W Praktyce
 
E-społeczność
E-społecznośćE-społeczność
E-społeczność
 
E-społeczność
E-społecznośćE-społeczność
E-społeczność
 
E Spolecznosc Darmowy Fragment
E Spolecznosc   Darmowy FragmentE Spolecznosc   Darmowy Fragment
E Spolecznosc Darmowy Fragment
 
E-Spoleczność
E-SpolecznośćE-Spoleczność
E-Spoleczność
 
C++Builder 6. Ćwiczenia
C++Builder 6. ĆwiczeniaC++Builder 6. Ćwiczenia
C++Builder 6. Ćwiczenia
 
Internet W Praktyce
Internet W PraktyceInternet W Praktyce
Internet W Praktyce
 
Internet W Praktyce
Internet W PraktyceInternet W Praktyce
Internet W Praktyce
 
Pajączek 5 NxG. Ćwiczenia praktyczne
Pajączek 5 NxG. Ćwiczenia praktycznePajączek 5 NxG. Ćwiczenia praktyczne
Pajączek 5 NxG. Ćwiczenia praktyczne
 
Angielskie Przyimki
Angielskie PrzyimkiAngielskie Przyimki
Angielskie Przyimki
 
C++ bez obaw
C++ bez obawC++ bez obaw
C++ bez obaw
 
Tania jazda samochodem - Lech Baczyński - ebook
Tania jazda samochodem - Lech Baczyński - ebookTania jazda samochodem - Lech Baczyński - ebook
Tania jazda samochodem - Lech Baczyński - ebook
 
Niezawodne strategie wygrywania w sieci
Niezawodne strategie wygrywania w sieciNiezawodne strategie wygrywania w sieci
Niezawodne strategie wygrywania w sieci
 
Moja firma - Anna Jarczyk - ebook
Moja firma - Anna Jarczyk - ebookMoja firma - Anna Jarczyk - ebook
Moja firma - Anna Jarczyk - ebook
 
Tajemnice największych uwodzicieli - ebook
Tajemnice największych uwodzicieli - ebookTajemnice największych uwodzicieli - ebook
Tajemnice największych uwodzicieli - ebook
 

Plus de e-booksweb.pl

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

Plus de e-booksweb.pl (20)

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

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

  • 1.
  • 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 .