You are on page 1of 58

Niniejszy darmowy ebook zawiera fragment penej wersji pod tytuem: "Programuj w Delphi i C++ Builder" Aby przeczyta

informacje o penej wersji, kliknij tutaj

Darmowa publikacja dostarczona przez www.zlotemysli.pl


Niniejsza Wydawc. publikacji publikacja Zabronione bez moe s by kopiowana, zmiany oraz w dowolnie zawartoci si jej

rozprowadzana tylko i wycznie w formie dostarczonej przez jakiekolwiek zgody pisemnej wydawcy. Zabrania

odsprzeday, zgodnie z regulaminem Wydawnictwa Zote Myli.

Copyright for Polish edition by ZloteMysli.pl Data: 30.09.2006 Tytu: Programuj w Delphi i C++ Builder (fragment utworu) Autor: Mirosaw J. Kubiak
Projekt okadki: Marzena Osuchowicz Korekta: Sylwia Fortuna Skad: Anna Popis-Witkowska Internetowe Wydawnictwo Zote Myli Netina Sp. z o.o. ul. Daszyskiego 5 44-100 Gliwice WWW: www.ZloteMysli.pl EMAIL: kontakt@zlotemysli.pl Wszelkie prawa zastrzeone. All rights reserved.

SPIS TRECI
WSTP...................................................................................................................6 ROZDZIA 1. WPROWADZENIE DO PROGRAMOWANIA.......................................11

wiat algorytmw............................................................................................................11 Metody prezentacji algorytmw.....................................................................................13 Algorytm liniowy a algorytm z rozgazieniami............................................................14 Pseudojzyk.....................................................................................................................17 Na czym polega pisanie programw..............................................................................17 Programowanie strukturalne........................................................................................20 Programowanie obiektowe............................................................................................22 Jzyk programowania Pascal - rys historyczny............................................................22 Jzyk programowania Delphi programowanie wizualne..........................................23 Jzyki programowania C/C++ - rys historyczny..........................................................24 C++ Builder programowanie wizualne......................................................................25 Programowanie zdarzeniowe.........................................................................................26 Warto zapamita...........................................................................................................27
ROZDZIA 2. TWORZYMY PIERWSZY PROGRAM ...............................................30

Rozszerzenia plikw w Delphi i C++ Builder...............................................................30 Mj pierwszy program....................................................................................................31 Projekt.............................................................................................................................37 Tworzymy prost aplikacj............................................................................................37 Menu gwne i paski narzdzi.......................................................................................40 Paleta komponentw.....................................................................................................40 Tworzymy nasz pierwszy program................................................................................43 Program i jego struktura................................................................................................46 Moduy w Delphi............................................................................................................48 Preprocesor.....................................................................................................................50 Dyrektywa #include.......................................................................................................50 Dyrektywa #pragma.......................................................................................................51 Moduy w C++ Builder...................................................................................................54 Tworzymy drugi program..............................................................................................55 Komentarze.....................................................................................................................58 Tworzenie nowych programw i zapisywanie ich na dysku........................................58 Wprowadzanie programu rdowego z dysku do edytora kodu rdowego.............59 Koczenie pracy w rodowisku Delphi (lub C++ Builder) ..........................................59 Warto zapamita...........................................................................................................59
ROZDZIA 3. DEKLARACJA STAYCH I ZMIENNYCH W PROGRAMIE.............................................................................61

Identyfikatory.................................................................................................................61 Deklarujemy stae w programie.....................................................................................62 Deklarujemy zmienne w programie..............................................................................64 Sowa kluczowe...............................................................................................................68 Nadawanie zmiennym wartoci.....................................................................................69 Warto zapamita...........................................................................................................79
ROZDZIA 4. OPERACJE WEJCIA/WYJCIA CZ I......................................81

Standardowe operacje wejcia/wyjcia.........................................................................81 Obsuga sytuacji wyjtkowych.......................................................................................89 Warto zapamita...........................................................................................................95


ROZDZIA 5. PROSTE OPERACJE ARYTMETYCZNE ............................................96

Podstawowe operatory arytmetyczne...........................................................................96 Warto zapamita.........................................................................................................104


ROZDZIA 6. PODEJMUJEMY DECYZJE W PROGRAMIE...................................105

Podstawowe operatory relacji......................................................................................105 Instrukcje warunkowe..................................................................................................106 Instrukcja warunkowa if...............................................................................................107

Operatory logiczne koniunkcji AND i alternatywy OR...............................................117 Instrukcje wyboru.........................................................................................................139 Pierwszy wikszy program...........................................................................................147 Warto zapamita.........................................................................................................161
ROZDZIA 7. ITERACJE......................................................................................163

Instrukcje iteracyjne.....................................................................................................163 Instrukcja for................................................................................................................164 Jak dziaa ptla for?......................................................................................................167 Operatory inkrementacji i dekrementacji...................................................................174 Poznajemy operator modulo........................................................................................179 Poznajemy operator negacji.........................................................................................182 Zmiana przyrostu zmiennej sterujcej ptl...............................................................185 Liczby Fibonacciego.....................................................................................................204 Analizujemy pozostae instrukcje iteracyjne..............................................................208 Instrukcja iteracyjna repeat (Delphi).........................................................................209 Instrukcja iteracyjna do ... while (C++ Builder).........................................................212 Schemat Hornera..........................................................................................................215 Algorytm Euklidesa......................................................................................................222 Instrukcja iteracyjna while (Delphi)...........................................................................228 Instrukcja iteracyjna while (C++ Builder)..................................................................230 Priorytety poznanych operatorw...............................................................................233 Typ wyliczeniowy.........................................................................................................234 Warto zapamita.........................................................................................................239
ZAPROSZENIE DO II CZCI KSIKI...............................................................242 DODATEK..........................................................................................................243

D1. Formatowanie acuchw tekstowych..................................................................243 D2. Wybrane systemowe procedury i funkcje konwersji typu w Delphi i C++ Builder......................................................................245 D3. Wywietlanie komunikatw..................................................................................246

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 5

Rozdzia 2. Tworzymy pierwszy program


W tym rozdziale napiszemy pierwszy program w jzykach Delphi i w C++ Builder, poznamy zasady pisania programw w jzykach Delphi i w C++ Builder oraz wiczenia podstawowe, jakie powinien opanowa kady, aby biegle pisa programy w edytorze kodw rdowych, nagrywa je na dysk, wczytywa z dysku programy rdowe oraz je kompilowa i uruchamia, poznamy rwnie struktur programu dla jzykw Delphi i C++ Builder.

Rozszerzenia plikw w Delphi i C++ Builder


Z rozdziau 1 wiemy, e w rodowisku programistycznym Delphi (i rwnie w C++ Builder) dla kadego projektu jest tworzone wiele plikw. Nazwa pliku skada si z dwch elementw: nazwy nadanej projektowi i jego moduom oraz predefiniowanego rozszerzenia stosowanego przez Delphi (lub C++ Builder). Tabela poniej przedstawia rozszerzenia plikw stosowane w obu rodowiskach.
Tabela 2.1. i w C++ Builder Rozszerzenia plikw stosowane w Delphi

Element Plik projektu Plik grupy projektowej

Delphi .dpr .bpg1

C++ Builder .bpr .bpg

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 6

Plik kodu rdowego Plik nagwkowy Plik formularza Skompilowany plik binarny Skompilowany plik zasobw Zapisanie ustawie pulpitu Ustawienia projektu Pliki rdowe pakietu Skompilowany pakiet Ukad pulpitu

.pas brak .dfm .dcu .res lub .dcr .dsk .dof .dpk .bpl .dst

.cpp .h lub .hpp .dfm .obj .res .dsk brak .bpk .bpl .dst

Dla celw naszej ksiki, zdecydowalimy umieci w odpowiednich katalogach pliki tworzone przez rodowisko Delphi (lub C++ Builder). Na przykad w katalogu P01 znajduj si pliki stworzone przez rodowisko Delphi (lub C++ Builder) i zwizany z nimi okrelony programistyczny problem. Dodatkowo naley stworzy katalog dla Delphi oraz dla C++ Builder, gdzie bd umieszczane wszystkie podkatalogi, np. P01 zawierajce okrelony problem programistyczny dla danego jzyka programowania.

atwo zauway, e w niektrych przypadkach rozszerzenia plikw stosowane przez rodowiska programistyczne Delphi i C++ Builder s takie same.
Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 7

Mj pierwszy program
Poniej zamieszczono pierwszy program napisany w jzyku

programowania Delphi i C++ Builder. Delphi (katalog P01): unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text:= 'Moj pierwszy program w Delphi'; end; end.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 8

A oto ten sam program napisany w jzyku C++ Builder (katalog P01):

//--------------------------------------------------------------------------#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) { Edit1->Text="Moj pierwszy program w C++ Builder"; } //---------------------------------------------------------------------------

Prosz si nie martwi, jeli instrukcje jzyka Delphi lub C++ Builder s dla nas zupenie niezrozumiae. Ich znaczenie dokadnie poznamy w tej i w nastpnych lekcjach2. Piszc programy w Delphi (lub w C++ Builderze) bdziemy korzystali ze zintegrowanego rodowiska Delphi (lub C++ Buildera), ktre funkcjonuje w systemie operacyjnym Windows.

Jak przekonany za chwil si, wiele linijek kodu generuje samo rodowisko Delphi (C++ Builder).
Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 9

Aby dobrze zapozna si z nowym rodowiskiem programistycznym, jakie oferuje Delphi lub C++ Builder, warto dokadnie zapozna si z jego podstawow filozofi. Jzyki Turbo Pascal (TP), Turbo C++ i zwizane z nimi rodowisko DOS to bardzo proste narzdzia do nauki programowania, gdzie ciar jego funkcjonowania by usytuowany na pisaniu algorytmw. Pisanie nieskomplikowanych programw wycznie do celw dydaktycznych nie sprawiao w tym rodowisku adnych trudnoci. Wad tego rodowiska by brak gotowych i wygodnych interfejsw komunikacyjnych pomidzy programem a uytkownikiem. Delphi (i C++ Builder) to wyrafinowane, nowoczesne i wizualne rodowisko programistyczne, oferujce wiele gotowych rozwiza, w ktrym naley si odnale, aby swobodnie mc w nim pisa proste lub skomplikowane aplikacje. Autor postawi sobie za zadanie poprowadzenia Czytelnika poprzez oba rodowiska programistyczne w sposb prosty, ilustrujc nauk programowania w jzykach przykadami Delphi i C++ Builder nieskomplikowanymi praktycznych programw.

Gwnym celem tej ksiki jest przyblienie obu rodowisk programistycznych, bez wnikania w ich zawioci, aby mc swobodne pisa rne programy w obu jzykach programowania nie tylko do celw dydaktycznych.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 10

Rys. 2.1. Zintegrowane rodowisko Delphi z widocznym u gry menu i palet komponentw. Poniej na rodku widnieje formularz (Form1), a z lewej strony znajduje si Object TreeView oraz Object Inspector. Edytor kodu rdowego znajduje si pod formularzem.

Rys. 2.2. Zintegrowane rodowisko C++ Builder z widocznym u gry menu i palet komponentw. Poniej na rodku widnieje formularz (Form1), a z lewej strony znajduje si Object TreeView oraz Object Inspector. Edytor kodu rdowego znajduje si pod formularzem.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 11

Zintegrowane Integrated

rodowisko Development

Delphi

(C++

Builder) skada

IDE si

(ang. m.in.

Environment)

z nastpujcych elementw:

menu gwne i paski narzdzi, palety komponentw, projektanta formularzy (ang. Form Designer), edytora kodu rdowego (ang. Code Editor), inspektora obiektw (ang. Object Inspector) wraz z oknem hierarchii komponentw oraz menedera projektw. bdziemy omawiali dokadnie tych czci skadowych

Nie

rodowiska Delphi, odsyajc Czytelnika do istniejcej bogatej literatury np. [Reisdorph, 2001, Dorobek, 2003]. Wybierzemy tylko to, co jest nam potrzebne i niezbdne do dalszej nauki pisania programw.

Rys. 2.3. Zintegrowane rodowisko Delphi z widocznym na rodku edytorem kodu rdowego, formularz znajduje si pod edytorem.
Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 12

Rys. 2.4. Zintegrowane rodowisko C++ Builder z widocznym na rodku edytorem kodu rdowego, formularz znajduje si pod edytorem.

Projekt
Jest to zestaw rdowych i binarnych plikw wzajemnie ze sob powizanych, ktre po procesie kompilacji tworz jeden wykonywalny program (*.exe) lub bibliotek *.dll.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 13

Tworzymy prost aplikacj


Prost aplikacj moemy stworzy realizujc nastpujce kroki:

1. Utwrz na dysku dowolny katalog, w ktrym bdziesz zapisywa wszystkie pliki tworzone przez Delphi (C++ Builder) dla danego projektu. 2. Uruchom Delphi (C++ Builder) w taki sposb, jak uruchamia si programy w Windows. Na ekranie monitora zobaczysz zintegrowane rodowisko Delphi (C+ + Builder). Na rodku ekranu zobaczysz okno projektanta formularzy (ang. Form Designer) o nazwie Form1. Pod nim znajduje si edytor kodu rdowego (ang. Code Editor) o nazwie Unit1.pas (Unit1.cpp). Zawarto edytora kodu, generowana przez program jest nastpujca dla: Unit1.pas unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public
Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 14

{ Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} end. Unit1.cpp

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

Delphi (C++ Builder) jest tak skonstruowany, e wszelkie zmiany dokonane na formularzu pocigaj za sob zmiany w edytorze kodu, co oznacza e edytor kodu jest cile zwizany z projektantem formularzy. Jeli teraz porwnamy nasz pierwszy program napisany w Delphi (lub C++ Builder), a przedstawiony na pocztku tej lekcji,

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 15

to moemy zobaczy, ile jest naszego wkadu w projekt, a ile samego rodowiska Delphi.

4. Wybierz opcj File|Save All. Otworzy si okienko z pytaniem o nazw pliku rdowego moduu. W polu Save (Zapisz) wska utworzony przed chwil katalog. 5. W polu Nazwa pliku wpisz swoj nazw (lub pozostaw domyln) i nacinij przycisk Zapisz. 6. Teraz naley poda nazw projektu. W polu Nazwa pliku wpisz swoj nazw projektu (lub pozostaw domyln) i ponownie nacinij przycisk Zapisz. Podczas swojej pracy Delphi (i C++ Builder) tworzy szereg plikw, ktre zostay omwione wczeniej. Wspomnimy jeszcze tylko o jednym wsplnym rozszerzeniu pliku. Rozszerzenie .exe Opis Wykonywalny program wynikowy

Menu gwne i paski narzdzi


Menu gwne zawiera wszystkie opcje niezbdne do pracy, natomiast paski narzdzi zawieraj wygodne skrty do czsto powtarzanych polece. Filozofia menu gwnego i paskw narzdzi jest intuicyjna i podobna, jak w systemie Windows.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 16

Paleta komponentw
Suy do wybierania komponentw albo innych kontrolek (np. kontrolek ActiveX) w celu umieszczenia ich na formularzu. Paleta ta skada si z wielu kart, zwanych czasami stronami. Kliknicie odpowiedniej zakadki powoduje otwarcie odpowiadajcej jej karty. W tej ksice bdziemy si posugiwali m.in. kartami Standard i Additional.

Rys. 2.3. Paleta komponentw karta Standard.

Rys. 2.4. Paleta komponentw karta Additional.

Proces umieszczania komponentu na formularzu odbywa si w dwch etapach:

1. wybranie odpowiedniego komponentu znajdujcego si na palecie klikniciem myszy, 2. umieszczenie tego komponentu na formularzu klikniciem myszy.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 17

Oto nastpujce komponenty, ktre zostay wykorzystane w tej ksice:

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 18

Karta Standard Komponent Nazwa komponentu Edit liniowe pole tekstowe, suce do np. pobrania danych od uytkownika Label etykieta suca do wywietlania tekstu Button przycisk Panel pozwala komponentw na zamieszczanie innych

ListBox umoliwia zgrupowanie listy elementw

MainMenu pozwala na utworzenie w prosty sposb menu dla wasnej aplikacji Memo pole tekstowe suce do edycji duej iloci tekstu

Karta Additional Komponent StringGrid formularzu i wierszy Nazwa komponentu pozwala na umieszczeniu na siatki, skadajcej si z kolumn

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 19

Tworzymy nasz pierwszy program


Delphi

1.

Postpujemy dokadnie jak w punkcie Tworzymy prost aplikacj.

2. Nastpnie na palecie komponentw klikamy mysz przycisk Button i ponownie klikamy mysz na formularzu w miejscu, gdzie chcemy, eby si on znajdowa. Nastpnie w narzdziach Object Inspectora szukamy Caption i zamiast Button1 wpisujemy sowo Zacznij. Object Inspector pokazuje waciwoci (Properties) i zdarzenia (Events), ktre zostay przypisane rnym komponentom, dajc atw moliwo zmiany ich waciwoci. 3. Z palety komponentw wybieramy komponent Edit i umieszczamy go na formularzu. W Object Inspectorze szukamy Text i usuwamy sowo Edit1. 4. Dwukrotnie klikamy na formularzu to miejsce, gdzie zosta umieszczony komponent Zacznij, aby obsuy zwizane z tym komponentem zdarzenie. W okienku Unit1.pas ukaza si dodatkowy fragment kodu widoczny w ramce poniej:

procedure TForm1.Button1Click(Sender: TObject); begin end; end.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 20

Pomidzy sowami kluczowymi begin end; wpisujemy zasadniczy fragment kodu naszego programu: Edit1.Text:= 'Moj pierwszy program w Delphi';

5. Naciskajc klawisz F9 lub Run|Run, lub przycisk kompilujemy nasz program. 6. Po skompilowaniu na formularzu naciskamy przycisk Zacznij, ktry wygenerowa tekst: Moj pierwszy program w Delphi. 7. Powtarzamy wszystkie czynnoci, aby je utrwali. C++ Builder

1.

Postpujemy dokadnie jak w punkcie Tworzymy prost aplikacj.

2. Nastpnie na palecie komponentw klikamy mysz przycisk Button i ponownie klikamy mysz na formularzu w miejscu, gdzie chcemy, eby si on znajdowa. Nastpnie w narzdziach Object Inspectora szukamy Caption i zamiast Button1 wpisujemy sowo Zacznij. Object Inspector pokazuje waciwoci (Properties) i zdarzenia (Events), ktre zostay przypisane rnym komponentom, dajc atw moliwo zmiany ich waciwoci. 3. Z palety komponentw wybieramy komponent Edit i umieszczamy go na formularzu. W Object Inspectorze szukamy Text i usuwamy sowo Edit1. 4. Dwukrotnie klikamy na formularzu to miejsce, gdzie zosta umieszczony komponent Zacznij, aby obsuy zwizane

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 21

z tym komponentem zdarzenie. W okienku Unit1.cpp ukaza si dodatkowy fragment kodu widoczny w ramce poniej:

void __fastcall TForm1::Button1Click(TObject *Sender) { } 5. Pomidzy nawiasami klamrowymi { }; wpisujemy zasadniczy fragment kodu naszego programu: Edit1->Text="Moj pierwszy program w C++ Builder"; 6. Naciskajc klawisz F9 lub Run|Run, lub przycisk kompilujemy nasz program. 7. Po skompilowaniu na formularzu naciskamy przycisk Zacznij, ktry wygenerowa tekst: Moj pierwszy program w C++ Builder. 8. Powtarzamy wszystkie czynnoci, aby je utrwali.

Rys. 2.7. Mj pierwszy program w C++ Builderze (analogiczny rezultat otrzymamy w Delphi) katalog (P01).

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 22

Program i jego struktura


Aplikacje w zintegrowanym rodowisku Delphi (i C++ Builder) s zbudowane z moduw. W rodowisku Delphi (i C++ Builder) kady formularz jest zwizany z jakim moduem, ktry definiuj klas 3 Tform1 dla tego formularza. Delphi Aplikacj w rodowisku Delphi tworz pliki o dwch rodzajach kodu rdowego:

1. gwny plik programu oraz 2. jeden lub wicej moduw. Poniej zamieszczono struktur gwnego pliku programu.

program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
3

Wicej o klasach Czytelnik dowie si w rozdziale 12.


Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 23

Na pocztku programu znajduje si sowo kluczowe4 program, po ktrym nastpuje nazwa programu np. Project1 zakoczona rednikiem. Deklaracja uses specyfikuje list moduw skadajcych si na program. Moduy w Delphi to pliki drugorzdne, do ktrych odwoujemy si poprzez program. Ogromn zalet rodowiska Delphi jest automatyczne generowanie pliku projektu. Aby si o tym przekona, naley uruchomi Delphi, a nastpnie klikn Project| View Source. Sekcja uses zawiera modu Forms oraz modu Unit1 z dyrektyw in specyfikujc nazw pliku zawierajc podany modu. Zapis Unit1 in 'Unit1.pas' oznacza, e modu Unit1 znajduje si w pliku Unit1.pas. Sowo kluczowe uses umoliwia zarzdzanie kompilacj i konsolidacj aplikacji. Gwny kod tej aplikacji: Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; znajduje si pomidzy sowami kluczowymi begin i end. Zarwno modu, jak i program musi zosta zakoczony kropk.

Sowa kluczowe zostan omwione w rozdziale 3.


Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 24

Moduy w Delphi
Kady formularz zosta zdefiniowany w module. Moduy umoliwiaj definiowanie i udostpnianie zestawu podprogramw, czyli procedur i funkcji. Pusty modu, zawierajcy kod poniej, uzyskamy naciskajc File|New|Unit. unit Unit1; interface implementation end.

Modu, ktry ma swoj jednoznaczn nazw - w tym wypadku (Unit1) - skada z sekcji interface, gdzie deklaruje si wszystkie identyfikatory widoczne dla innych moduw oraz z sekcji implementation deklaracje. W module powinny zosta zadeklarowane wszystkie identyfikatory przed ich uyciem. W sekcji interface oraz w sekcji implementation mog by zadeklarowane:

zawierajcej

kod

programu

dodatkowe

stae za pomoc sowa kluczowego const, zmienne i obiekty za pomoc sowa kluczowego var, typy i klasy za pomoc sowa kluczowego type, funkcje i procedury.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 25

C++ Builder Poniej przedstawiono struktur gwnego pliku programu.

//--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop //--------------------------------------------------------------------------USEFORM("Unit1.cpp", Form1); //--------------------------------------------------------------------------WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } catch (...) { try { throw Exception(""); } catch (Exception &exception) { Application->ShowException(&exception); } } return 0; } //---------------------------------------------------------------------------

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 26

Preprocesor
Kod programu znajdujcy si w plikach rdowych nie jest poddawany kompilacji w postaci, w jakiej moemy zobaczy w edytorze. Wersj plikw rdowych przeznaczon do kompilacji generuje mechanizm zwany preprocesorem. Przeglda on kod w poszukiwaniu instrukcji, ktre ma wykona. Tymi instrukcjami s dyrektywy preprocesora, ktre rozpoczynaj si od znaku #. Efektem pracy preprocesora jest zmodyfikowana posta kodu rdowego. Modyfikacje wykonane przez preprocesor w kodzie programu nie s widoczne i istniej jedynie podczas kompilacji. Na pocztku gwnego pliku programu znajduj si dwie dyrektywy preprocesora: #include <vcl.h> #pragma hdrstop Poniej pokrtce omwimy ich znaczenie.

Dyrektywa #include
Jej zadaniem jest doczenie do pliku o podanej nazwie do kodu rdowego. Jest ona najczciej wykorzystywana do wczania plikw nagwkowych (*.h). Oglna jej posta jest nastpujca: #include <nazwa_pliku>.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 27

Aby plik mg by doczony, musi si on znajdowa w ciece plikw nagwkowych. Zapis #include nazwa_pliku oznacza, e plik jest najpierw poszukiwany w katalogu biecym (tam, gdzie znajduje si plik rdowy projektu), a nastpnie w ciece plikw nagwkowych.

Dyrektywa #pragma
Suy do definiowania nowych dyrektyw, specyficznych dla danego kompilatora. Ta dyrektywa koczy list statycznych plikw nagwkowych (wczanych za pomoc dyrektywy include). Dyrektywa #pragma hdrstop (ang. header stop) informuje kompilator, e wanie nastpi koniec listy plikw nagwkowych, ktre maj by prekompilowane. Dyrektywa #include <vcl.h> oznacza, e do programu naley doczy pliki nagwkowe biblioteki VCL. Kady program w C, C++ oraz w C++ Builder musi zawiera w sobie przynajmniej jedn funkcj. Funkcja WinMain() jest gwn funkcj programu C++ Builder5 i kady program ma dokadnie jedn tak funkcj, nawet jeli skada si z wielu moduw. Jest ona
5

Programy pisane w C++ Builder i posugujce si klas formularza nie zawieraj funkcji void main(void) znan z jzyka C/C++ .
Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 28

wywoywana jako pierwsza i zawiera w sobie zestaw kolejnych instrukcji wykonywanych przez program, zawartych pomidzy par nawiasw klamrowych { ... }. Skadnia funkcji WinMain() jest nastpujca: WINAPI WinMain(HINSTANCE AktEgz, HINSTANCE

PoprzEgz, LPSTR Parametry, int Stan), gdzie HINSTANCE w wolnym tumaczeniu oznacza uchwyty. S one niezbdne, gdy system Windows jest systemem wielozadaniowym, co oznacza, e w danej chwili moe dziaa wiele egzemplarzy danego programu. Argumenty tej funkcji maj nastpujce znaczenie: AktEgz uchwyt aktualnego egzemplarza programu, PoprzEgz uchwyt poprzedniego egzemplarza programu, Parametry acuch z parametrami wywoania programu, Stan okrela, w jakim stanie jest program. Gwny kod tej aplikacji ma posta: Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->Run();

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 29

Skada si on z procesu inicjacji metoda 6 Initialize(), tworzenia formularza metoda CreateForm() oraz metoda Run(). Cao gwnego kodu aplikacji umieszczono w nawiasach klamrowych try { Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } gdzie wykorzystano obsug sytuacji wyjtkowych try catch. Jeli powyszy proces tworzenia aplikacji si nie powiedzie, to na ekranie zobaczymy komunikat w postaci wygenerowanego przez system tzw. wyjtku (ang. exception), wywietlonego przy pomocy funkcji ShowException(). Instrukcja return 0 zwraca do systemu operacyjnego kod zakoczenia dziaania programu.
6

O metodach Czytelnik dowie si wicej w rozdziale12.


Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 30

Moduy w C++ Builder


Kady formularz zosta zdefiniowany w module. Moduy umoliwiaj definiowanie i udostpnianie zestawu podprogramw, czyli procedur i funkcji. Pusty modu, zawierajcy kod poniej, uzyskamy naciskajc File|New|Unit.

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

Modu, ktry ma swoj jednoznaczn nazw w tym wypadku (Unit1.cpp) skada si m.in. z dyrektyw dla preprocesora oraz funkcji __fastcall. Zanim zaczniemy korzysta z formularza, ktry jest pierwszym obiektem, musi on zosta odpowiednio zainicjowany. Umoliwia to nam specjalna funkcja skadowa, noszca tak sam nazw jak klasa,
Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 31

do ktrej ten obiekt naley. Prototyp tej funkcji (nazywanej konstruktorem) z parametrami ma posta: __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)7

Tworzymy drugi program


Delphi Wzbogaceni o dodatkowe informacje sprbujmy napisa program w Delphi, ktry wypisuje komunikat: Moj pierwszy program w Delphi nie sprawil mi zadnych trudnosci. Jeli mamy nadal trudnoci z napisaniem takiego programu, to kompletny jego wydruk znajduje si poniej.

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7

Konwencja __fastcall (szybkie wywoanie) zapewnia, e parametry konstruktora zostan przekazane przez rejestry procesora, a peny tekst konstruktora klasy TForm1 zostanie automatycznie umieszczony w module Unit1.cpp i tam te zostanie zainicjowany.
Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 32

Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text:='Moj pierwszy program nie sprawil mi zadnych trudnosci'; end; end.

C++ Builder Wzbogaceni o dodatkowe informacje dotyczce struktury programu sprbujmy napisa program w C++ Builder, ktry wypisuje na ekranie komunikat: Moj pierwszy program w C++ Builder nie sprawil mi zadnych trudnosci.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 33

Jeli mamy nadal trudnoci z napisaniem takiego programu, to kompletny jego wydruk znajduje si poniej.

//--------------------------------------------------------------------------#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) { Edit1->Text="Moj pierwszy program nie sprawil mi zadnych trudnosci"; } //---------------------------------------------------------------------------

Domylnie generowana nazwa funkcji Button1Click obsugi zdarzenia (ang. event handler) skada si z nazwy obiektu Button1 i nazwy zdarzenia Click. Natomiast (TObject *Sender) to argument funkcji. TObject to klasa macierzysta, natomiast *Sender to wskanik (ang. pointer) obiektu klasy TObject. Skadnia ta opiera si na mechanizmie dziedziczenia8, a program C+
8

Dziedziczenie zostanie omwione w rozdziale 12.


Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 34

+ Builder generuje to automatycznie.

Komentarze
W Delphi (i w C++ Builderze) komentarze moemy wstawia do programu na trzy sposoby: {To jest komentarz} (*To tez jest komentarz*) //I to tez jest komentarz, ale tylko do konca linii

Tworzenie nowych programw i zapisywanie ich na dysku


Aby utworzy now aplikacj naley nacisn File|New|

Application. Zapisujemy j na dysku klikajc: File|Save lub File| Save As lub File|Save Project As lub File|Save All.

Wprowadzanie programu rdowego z dysku do edytora kodu rdowego


Aby wprowadzi programu rdowego z dysku do edytora kodu rdowego naley dwukrotnie klikn na plik np. Project1, ktry

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 35

zawiera kod rdowy projektu. Reszt za nas zrobi rodowisko Windows.

Koczenie pracy w rodowisku Delphi (lub C++ Builder)


Ze rodowiska Delphi (lub C++ Builder) wychodzimy naciskajc File|Exit.

Warto zapamita
Podczas tej lekcji nauczylimy si pisa proste programy w edytorze tekstw Delphi (i C++ Builder), zapisywa je do pamici zewntrznej (dysk twardy, dyskietka) oraz wczytywa wczeniej zapisane pliki z pamici zewntrznej do edytora.

1. Wszystkie programy w jzyku w Delphi rozpoczynaj si od sowa kluczowego program, po ktrym nastpuje nazwa programu. 2. Nazwa programu nie moe rozpoczyna si liczb. 3. Gwna cz programu w jzyku C++ Builder rozpoczyna si od instrukcji WinMain(). 4. Komentarze w programach bdziemy umieszczali w nawiasach {} lub uywajc znakw //. 5. Aby poprawi czytelno programw rdowych, naley oprcz komentarzy wstawi puste linie rozdzielajce

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 36

niepowizane ze sob instrukcje. Gdy kompilator trafi na pust lini, to po prostu ja pominie. 6. Wszystkie programy (zawarte w tej ksice) i napisane w jzyku Delphi (lub C++ Builder) wywietlaj informacje na ekranie przy pomocy komponentw.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 37

Rozdzia 3. Deklaracja staych i zmiennych w programie


W tym rozdziale dowiemy si, co to s identyfikatory, jak tworzy i wykorzystywa stae i zmienne w programach napisanych w jzyku Delphi (oraz w C++ Builder), poznamy typy zmiennych oraz sowa kluczowe.

Identyfikatory
Programy przechowuj informacje w postaci staych i zmiennych. Jeli chcemy umieci w programie stae lub zmienne, to musimy je wczeniej zadeklarowa. W zalenoci od tego, jakiego rodzaju wartoci chcemy przechowywa, na przykad liczb cakowit, liczb zmiennoprzecinkow lub liter alfabetu, to musimy uywa staych i zmiennych okrelonego typu. Typ staych i zmiennych okrela typ wartoci, jakie mog one przechowywa, jak rwnie zbir operacji matematycznych (dodawanie, mnoenie itd.), jakie moe program wykonywa na tych wartociach. W czasie tej lekcji przedstawimy, jak tworzy i wykorzystywa stae i zmienne w programach napisanych w Delphi (i w C++ Builder). Do oznaczania nazw staych, zmiennych, funkcji i innych obiektw zdefiniowanych przez S uytkownika to okrelone bdziemy cigi posugiwali znakw si identyfikatorami. alfabetu

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 38

angielskiego, przy czym pierwszy musi znak by liter. Nie wolno definiowa identyfikatorw takich samych jak sowa kluczowe. A oto kilka przykadowych identyfikatorw: Poprawne dlugosc minimum maksimum_boku_a Niepoprawne 570dlugosc ?!minimum maksimum boku a

Deklarujemy stae w programie


Stae jzyka Delphi (i C++ Builder) reprezentuj ustalone wartoci, ktre nie mog zosta zmienione podczas dziaania programu. Mog by one dowolnego typu. Delphi Do deklarowania staych w jzyku Delphi suy sowo kluczowe const (ang. constant - staa). Oglna posta deklaracji staej dla tego jzyka jest nastpujca: const nazwa_staej = warto; Np. deklaracja: const cyfra = 10;

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 39

oznacza, e w caym programie zostaa zadeklarowana staa o nazwie cyfra i o wartoci rwnej 10. C++ Builder Do deklarowania staych suy sowo kluczowe const (pisane wycznie maymi literami). Oglna posta deklaracji staej dla tego jzyka jest nastpujca: const typ nazwa_staej = warto; Zapis const int cyfra = 10; oznacza, e w caym programie zostaa zadeklarowana staa typu cakowitego int (ang. integer) o nazwie cyfra i o wartoci rwnej 10. Warto tak zdefiniowanej staej w obu jzykach pozostaje niezmienna w programie, a kada prba zmiany tej wartoci bdzie sygnalizowana jako bd. C++ Builder Do deklarowania staych suy sowo kluczowe const (pisane wycznie maymi literami). Oglna posta deklaracji staej dla tego jzyka jest nastpujca: const typ nazwa_staej = warto;

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 40

Zapis const int cyfra = 10; oznacza, e w caym programie zostaa zadeklarowana staa typu cakowitego int (ang. integer) o nazwie cyfra i o wartoci rwnej 10. Warto tak zdefiniowanej staej w obu jzykach pozostaje niezmienna w programie, a kada prba zmiany tej wartoci bdzie sygnalizowana jako bd.

Deklarujemy zmienne w programie


W jzykach Delphi i C++ Builder wszystkie zmienne, zanim zostan uyte w programie, musz zosta wczeniej zadeklarowane. Delphi W jzyku programowania Delphi musimy w bloku deklaracyjnym zadeklarowa zmienne uywajc sowa kluczowego var (ang. variable - zmienna). Nastpnie musimy okreli typy zmiennych. Ogln posta deklaracji zmiennej przestawiono poniej: var nazwa_zmiennej : typ zmiennej; Na przykad deklaracje zmiennej o nazwie liczba typu integer deklarujemy w sposb nastpujcy:

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 41

var liczba : integer; W jzyku Delphi (i w C++ Builder) nazw zmiennej (jej identyfikator) ustala programista. UWAGA: nazwa zmiennej nie moe zaczyna si od cyfry. Piszc program programista moe skorzysta z (zamieszczonych poniej) nastpujcych predefiniowanych typw: Delphi Niektre typy danych s ze znakiem, a niektre bez znaku. Zmienne ze znakiem przechowuj zarwno liczby dodatnie, jak i ujemne. Zmienne bez znaku przechowuj tylko liczby dodatnie.
Tabela 3.1. Wybrane predefiniowane typy w jzyku Delphi dla aplikacji 32bitowych.

Typ danej ShortInt Byte Char WideChar SmallInt Word LongInt Int64

Rozmiar w bajtach 1 1 1 2 2 2 4 8

Zakres wartoci -128 127 0 255 0 255 0 65 535 - 32 768 32 767 0 65 535 - 2 147 483 648 2 147 483 647 od - 9 223 372 036 854 775 808

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 42

do 9 223 372 036 854 775 807 Integer Cardinal LongWord Single Double Real Extended Comp 4 4 4 4 8 8 10 8 Tak samo jak LongInt 0 4 294 967 925 Tak samo jak Cardinal 1,5 x 10-45 3,4 x 1038 5,0 x 10-324 1,7 x 10308 Tak samo jak Double 3,4 x 10-4932 1,1 x 104932 od - 9 223 372 036 854 775 808 do 9 223 372 036 854 775 807 Boolean 1 False lub True

C++ Builder W jzyku w C++ Builder wszystkie zmienne, zanim zostan uyte w programie, musz wczeniej zosta zadeklarowane. Aby zadeklarowa zmienn w programie, musimy okreli jej typ i nazw (identyfikator), przez ktr program bdzie odwoywa si do tej zmiennej. Ogln posta deklaracji zmiennej przestawiono poniej: typ_zmiennej nazwa zmiennej; Na przykad deklaracje zmiennej o nazwie liczba typu int deklarujemy w sposb nastpujcy: int liczba;
Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 43

W Tabeli 3.2 zawarto najbardziej rozpowszechnione (standardowe) typy zmiennych stosowane w jzyku w C++ Builder.
Tabela 3.2. Powszechnie stosowane typy zmiennych cakowite i rzeczywiste stosowane w jzyku w C++ Builder oraz przydzielona dla nich pami w bitach.

Typ cakowity unsigned char signed char unsigned int short signed int signed int long unsigned int long signed int

Liczba bitw 8 8 16 16 16 32 32

Przechowywane wartoci 0 255 - 128 127 0 65 535 - 32 768 32 767 - 32 768 32 767 0 4 294 967 295 - 2 147 483 648 2 147 483 647 Przechowywane wartoci 3.4*10-38 3.4*1038 1.7*10-3081.7*10308 3.4*10-4932 1.1*104932

Typ rzeczywisty float (liczby rzeczywiste) double (liczby o podwjnej precyzji) long double (liczby o wysokiej precyzji)

Liczba bitw 32 64

80

W jzyku C++ Builder mamy do dyspozycji typ logiczny bool. Jego zmienne mog przyjmowa dwie wartoci true (prawda) oraz false (fasz).

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 44

Sowa kluczowe
Podczas tworzenia nazw zmiennych musimy pamita, e w obu jzykach programowania istniej pewne zarezerwowane sowa, ktre nie mog by uywane jako zmienne. Te zarezerwowane sowa to s sowa kluczowe, ktre maj specjalne znaczenie dla kompilatora. Delphi UWAGA: sowa kluczowe w jzyku Delphi moemy pisa zarwno duymi, jak i maymi literami. Umawiamy si, e w tej ksice sowa kluczowe w programach napisanych w jzyku Delphi piszemy maymi literami.
Tabela 3.3. Wybrane sowa kluczowe w jzyku Delphi.

and class do for in mod shl type while

array const downto function inherited nil shr unit with

asm

begin

case

construct- destructor div or else goto inline not record string until xor end if interface of repeat then uses file implementation label or set to var

procedure program

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 45

C++ Builder UWAGA: sowa kluczowe w jzyku C++ Builder piszemy wycznie maymi literami.
Tabela 3.4. Wybrane sowa kluczowe w C++ Builder.

asm char delete extern if operator return struct try void

auto class do float inline private short switch typedef volatile

break const double for int protected signed template union while

case continue else friend long public sizeof this unsigned

catch default enum goto new register static throw virtual

Nadawanie zmiennym wartoci


Jak wczeniej zostao powiedziane, zmienne przechowuj wartoci w trakcie dziaania programu.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 46

Delphi Do przypisania zmiennej nowej wartoci suy instrukcja przypisania oznaczona symbolem := (dwukropek i znak rwnoci). Oglna posta tej instrukcji jest nastpujca: nazwa_zmiennej := wyraenie Do wywietlania na ekranie wartoci zmiennych posuymy si np. polem Edit. Na formularzu wykonujemy nastpujce czynnoci:

1. umieszczamy na nim trzy komponenty Panel, komponenty Edit oraz dwa przyciski Button,

cztery

2. po umieszczeniu na formularzu komponentu Panel1 naley na w Object Inspectorze zmieni we waciwociach (Properties) w Caption Panel1 na Litera, Panel2 na Liczba oraz Panel3 na Pomiar, 3. po umieszczeniu na formularzu przycisku Button naley w Object Inspectorze zmieni we waciwociach (Properties) w Caption Button1 na Zacznij i Button2 na Zakocz. Ilustruje to rysunek poniej.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 47

Rys. 3.1. Program P02 podczas projektowania formularza.

4. nastpnie dwukrotnie klikamy na formularzu przycisk Zacznij i podpinamy zwizan z nim procedur procedur TForm1.Button1Click(Sender: TObject) z nastpujcym kodem: procedure TForm1.Button1Click(Sender: TObject); var litera : Char; liczba : Integer; pomiar : Real; begin litera:='A'; liczba:=120; pomiar:=78.231;

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 48

Edit1.Text:=litera; Edit2.Text:=IntToStr(liczba); Edit3.Text:=Format('%2.2f', [pomiar]); end; 5. W ostatnim etapie dwukrotnie klikamy przycisk Zakocz i w procedurze procedure TForm1.Button2Click(Sender: TObject) umieszczamy nastpujcy kod: procedure TForm1.Button2Click(Sender: TObject); begin Edit4.Text:='Koniec programu'; end; Kilka sw wyjanienia powicimy nastpujcym linijkom kodu: Edit2.Text:=IntToStr(liczba); Edit3.Text:=Format('%2.2f', [pomiar]); Zapis Edit2.Text:=InttoStr(liczba) oznacza, e aby w polu Edit2 moga si pojawi zmienna liczba, to musi na niej zosta wykonana konwersja typu przy pomocy procedury IntToStr. Wicej informacji na temat systemowych procedur konwersji typu znajdzie czytelnik w Dodatku na kocu ksiki.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 49

Zapis Edit3.Text:=Format('%2.2f', [pomiar]) oznacza, e aby w polu Edit3 moga si pojawi zmienna pomiar typu rzeczywistego, musi ona zosta najpierw poddana formatowaniu. Wicej informacji na temat formatowania acuchw tekstowych znajdzie Czytelnik w Dodatku. Poniej znajduje si cay program napisany w Delphi (P02).

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Panel1: TPanel; Panel2: TPanel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Button2: TButton; Panel3: TPanel; Edit4: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1;

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 50

implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var litera : Char; liczba : Integer; pomiar : Real; begin litera:='A'; liczba:=120; pomiar:=78.231; Edit1.Text:=litera; Edit2.Text:=IntToStr(liczba); Edit3.Text:=Format('%2.2f', [pomiar]); end; procedure TForm1.Button2Click(Sender: TObject); begin Edit4.Text:='Koniec programu'; end; end.

C++ Builder Po zadeklarowaniu zmiennej, przy uyciu operatora przypisania (oznaczonego nastpujca: nazwa_zmiennej = wyraenie znakiem rwnoci =) moemy przypisa jej odpowiedni warto. Oglna posta instrukcji przypisania jest

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 51

Do wywietlania na ekranie wartoci zmiennych posuymy si polem Edit. Na formularzu wykonujemy nastpujce czynnoci:

1. umieszczamy na nim trzy komponenty Panel, komponenty Edit oraz dwa przyciski Button,

cztery

2. po umieszczeniu na formularzu komponentu Panel1 naley na w Object Inspectorze zmieni we waciwociach (Properties) w Caption Panel1 na Litera, Panel2 na Liczba oraz Panel3 na Pomiar. 3. po umieszczeniu na formularzu przycisku Button naley w Object Inspectorze zmieni we waciwociach (Properties) w Caption Button1 na Zacznij i Button2 na Zakocz. Ilustruje to rysunek poniej.

Rys. 3.2. Program P02 podczas projektowania formularza.

4. nastpnie dwukrotnie klikamy na formularzu przycisk Zacznij i podpinamy zwizan z nim funkcj void __fastcall

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 52

TForm1::Button1Click(TObject *Sender) z nastpujcym kodem: void __fastcall TForm1::Button1Click(TObject *Sender) { char litera; int liczba; float pomiar; litera = 'A'; liczba = 120; pomiar = 78.231; Edit1->Text=litera; Edit2->Text=IntToStr(liczba); Edit3->Text=FloatToStrF(pomiar,ffNumber,4,2); } 5. W ostatnim etapie dwukrotnie klikamy przycisk Zakocz i w funkcji void __fastcall Tform1::Button2Click (TObject *Sender) umieszczamy nastpujcy kod:

void __fastcall TForm1::Button2Click(TObject *Sender)

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 53

{ Edit4->Text="Koniec programu"; } Kilka sw wyjanienia powicimy nastpujcym linijkom kodu: Edit2->Text=IntToStr(liczba); Edit3->Text=FloatToStrF(pomiar,ffNumber,4,2); Zapis Edit2->Text=IntToStr(liczba) oznacza, e aby w polu Edit2 moga si pojawi zmienna liczba, to musi na niej zosta wykonana konwersja typu przy pomocy procedury IntToStr. Wicej informacji na temat systemowych procedur konwersji typu znajdzie czytelnik w Dodatku. Zapis typu Edit3->Text=FloatToStrF(pomiar,ffNumber,4,2) rzeczywistego, musi ona zosta poddana najpierw

oznacza, e aby w polu Edit3 moga si pojawi zmienna pomiar formatowaniu. Wicej informacji na temat formatowania acuchw tekstowych znajdzie Czytelnik w Dodatku na kocu ksiki. Poniej znajduje si cay program napisany w C++ Builder (P02).

//--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop


Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 54

#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) { char litera; int liczba; float pomiar; litera = 'A'; liczba = 120; pomiar = 78.231; Edit1->Text=litera; Edit2->Text=IntToStr(liczba); Edit3->Text=FloatToStrF(pomiar,ffNumber,4,2); } //--------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender) { Edit4->Text="Koniec programu"; } //---------------------------------------------------------------------------

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 55

Po skompilowaniu obu programw naciskamy przycisk Zacznij.

Rys. 3.3. Efekt dziaania programu P02 w obu jzykach programowania.

Warto zapamita
1. Identyfikator to cig znakw, z ktrych pierwszy musi by liter. Nie mona definiowa identyfikatorw takich samych jak sowa kluczowe. 2. Sowa kluczowe w jzyku Delphi moemy pisa zarwno duymi, jak i maymi literami, natomiast w C++ Builderze tylko maymi literami. 3. Jeli chcemy uywa zmiennych w programie, to musimy wszystkie je wczeniej zadeklarowa, informujc kompilator o ich nazwie i typie. 4. Oglna posta deklaracji zmiennej jest: Delphi C++ Builder

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 56

var nazwa_zmiennej: typ zmiennej;

typ_zmiennej nazwa zmiennej;

Typ zmiennej okrela typ wartoci (na przykad liczba cakowita wykonywa. 5. Dla podniesienia czytelnoci programw, podczas deklarowania zmiennych naley uywa nazw znaczcych. 6. Oglna posta instrukcji przypisania jest nastpujca: Delphi nazwa_zmiennej := wyraenie C++ Builder nazwa_zmiennej = wyraenie lub zmiennoprzecinkowa), jak moe ona przechowywa, a take operacje, jakie program moe na niej

Do wywietlania na ekranie wartoci zmiennej suy np. komponent Edit.

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej

Mirosaw J. Kubiak

str. 57

Jak skorzysta z wiedzy zawartej w penej wersji ebooka?

Wicej praktycznych porad dotyczcych programowania w Delphi i C ++ Builder znajdziesz w penej wersji ebooka. Zapoznaj si z opisem na stronie:

http://podstawy-delphi-builder.zlotemysli.pl

Jak szybko nauczy si programowania w dwch rnych jzykach?

Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak

POLECAMY TAKE PORADNIKI:


Sekrety jzyka C# (c-sharp) Andrzej Stefaczyk Dlaczego tworzenie aplikacji w Visual Studio .NET 2005 jest takie proste?
Ebook "Sekrety jzyka C#" uczy zarwno skadni nowego jzyka C# jak rwnie zasad tworzenia aplikacji okienkowych dla systemu Windows w tym jzyku. Przeznaczony jest zarwno dla osb, ktre nie miay do tej pory stycznoci z programowaniem jak i dla osb, ktre programoway wczeniej w innych jzykach i chciayby pozna moliwoci C# ( c-sharp). Wicej o tym poradniku przeczytasz na stronie: http://c-sharp.zlotemysli.pl "wietna pozycja dla chccych si nauczy C# w .NET-cie zwile opisuje dany problem i przedstawia rozwizania. Po prostu bomba." - webmax, student WISZ-u z Gorzowa Wlkp.

Visual Basic 2005 Express i MySQL ukasz Peta Jak szybko i prosto utworzy rozbudowan aplikacje bazodanow?
Ebook "Visual Basic 2005 Express i MySQL" uczy zarwno skadni jzyka Visual Basic jak rwnie zasad tworzenia aplikacji opartych o baz danych MySQL dla systemu Windows w tym jzyku, a zosta napisany gwnie z myl o pocztkujcych programistach Wicej o tym poradniku przeczytasz na stronie: http://visual-basic.zlotemysli.pl "Nie dosyc, ze e-book, to jeszcze dodatkowo kody i przyklady aplikacji do nauki. Bardzo wartosciowy e-book. Czysto i prosto przekazana wiedza. Polecam." David 27 lat, programista

Zobacz peen katalog naszych praktycznych poradnikw na stronie www.zlotemysli.pl

You might also like