58

Programuje W Delphi I C Builder

Embed Size (px)

DESCRIPTION

ebook Delphi i C

Citation preview

  • 1. 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 ZloteMysli.pl Niniejszapublikacjamoe by kopiowana,orazdowolnie rozprowadzana tylko i wycznie w formie dostarczonej przez Wydawc. Zabronione sjakiekolwiek zmianyw zawartoci publikacji bez pisemnej zgody wydawcy. Zabraniasi jej 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. KubiakProjekt okadki: Marzena Osuchowicz Korekta: Sylwia Fortuna Skad: Anna Popis-WitkowskaInternetowe Wydawnictwo Zote Myli Netina Sp. z o.o. ul. Daszyskiego 5 44-100 Gliwice WWW: www.ZloteMysli.pl EMAIL: [email protected] Wszelkie prawa zastrzeone. All rights reserved.

2. SPIS TRECIWSTP...................................................................................................................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 3. Operatory logiczne koniunkcji AND i alternatywy OR...............................................117Instrukcje wyboru.........................................................................................................139Pierwszy wikszy program...........................................................................................147Warto zapamita.........................................................................................................161 ROZDZIA 7. ITERACJE......................................................................................163Instrukcje iteracyjne.....................................................................................................163Instrukcja for................................................................................................................164Jak dziaa ptla for?......................................................................................................167Operatory inkrementacji i dekrementacji...................................................................174Poznajemy operator modulo........................................................................................179Poznajemy operator negacji.........................................................................................182Zmiana przyrostu zmiennej sterujcej ptl...............................................................185Liczby Fibonacciego.....................................................................................................204Analizujemy pozostae instrukcje iteracyjne..............................................................208Instrukcja iteracyjna repeat (Delphi).........................................................................209Instrukcja iteracyjna do ... while (C++ Builder).........................................................212Schemat Hornera..........................................................................................................215Algorytm Euklidesa......................................................................................................222Instrukcja iteracyjna while (Delphi)...........................................................................228Instrukcja iteracyjna while (C++ Builder)..................................................................230Priorytety poznanych operatorw...............................................................................233Typ wyliczeniowy.........................................................................................................234Warto zapamita.........................................................................................................239 ZAPROSZENIE DO II CZCI KSIKI...............................................................242 DODATEK..........................................................................................................243D1. Formatowanie acuchw tekstowych..................................................................243D2. Wybrane systemowe procedury i funkcjekonwersji typu w Delphi i C++ Builder......................................................................245D3. Wywietlanie komunikatw..................................................................................246 4. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 5 Mirosaw J. Kubiak Rozdzia 2. Tworzymy pierwszy programW 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++ BuilderZ 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.Tabela2.1. Rozszerzeniaplikw stosowanew Delphi i w C++ BuilderElementDelphi C++ Builder Plik projektu .dpr.bpr Plik grupy .bpg1.bpg projektowejCopyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 5. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 6 Mirosaw J. KubiakPlik kodu rdowego.pas.cpp Plik nagwkowybrak .h lub .hpp Plik formularza .dfm.dfm Skompilowany plik .dcu .obj binarny Skompilowany plik.res lub .dcr .res zasobw Zapisanie ustawie.dsk.dsk pulpitu Ustawienia projektu .dofbrak Pliki rdowe.dpk.bpk pakietu Skompilowany pakiet .bpl.bpl Ukad pulpitu .dst .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. 1 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 6. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 7 Mirosaw J. KubiakMj pierwszy programPoniej zamieszczono pierwszy program napisany w jzyku programowania Delphi i C++ Builder.Delphi (katalog P01): unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject);private { Private declarations }public { Public declarations }end;varForm1: 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 7. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 8 Mirosaw J. KubiakA oto ten sam program napisany w jzyku C++ Builder (katalog P01)://---------------------------------------------------------------------------#include #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 (lubC++ Buildera),ktre funkcjonuje w systemie operacyjnym Windows. 2 Jak przekonany za chwil si, wiele linijek kodu generuje samo rodowisko Delphi (C++ Builder). Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 8. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 9 Mirosaw J. KubiakAby 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 wjzykach Delphii C++ Builder nieskomplikowanymiprzykadamipraktycznychprogramw. 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 9. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 10 Mirosaw J. Kubiak 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 10. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 11 Mirosaw J. KubiakZintegrowanerodowisko Delphi(C++ Builder) IDE (ang. Integrated DevelopmentEnvironment) skadasi m.in. 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 oknemhierarchii komponentw oraz menedera projektw.Niebdziemy omawiali dokadnie tych czci skadowych 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 11. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 12 Mirosaw J. Kubiak Rys. 2.4. Zintegrowane rodowisko C++ Builder z widocznym na rodku edytorem kodu rdowego, formularz znajduje si pod edytorem.ProjektJest to zestaw rdowych i binarnych plikw wzajemnie ze sob powizanych, ktrepo procesiekompilacjitworz jeden wykonywalny program (*.exe) lub bibliotek *.dll. Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 12. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 13 Mirosaw J. KubiakTworzymy prost aplikacjProst 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;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs;typeTForm1 = class(TForm)private { Private declarations }publicCopyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 13. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 14 Mirosaw J. Kubiak{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}end.Unit1.cpp//---------------------------------------------------------------------------#include #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 14. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 15 Mirosaw J. Kubiakto 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. RozszerzenieOpis .exe Wykonywalny program wynikowy Menu gwne i paski narzdziMenu 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 15. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 16 Mirosaw J. KubiakPaleta komponentwSuy 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 16. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 17 Mirosaw J. KubiakOto nastpujce komponenty, ktre zostay wykorzystane w tej ksice:Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 17. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 18 Mirosaw J. Kubiak Karta StandardKomponentNazwa komponentu Edit liniowe pole tekstowe, suce do np.pobrania danych od uytkownika Label etykieta suca do wywietlania tekstuButton przyciskPanel pozwala nazamieszczanie innychkomponentw ListBox umoliwia zgrupowanie listy elementwMainMenu pozwala na utworzenie w prostysposb menu dla wasnej aplikacjiMemo pole tekstowe suce do edycji duej ilocitekstuKarta AdditionalKomponentNazwa komponentu StringGrid pozwala na umieszczeniu naformularzusiatki, skadajcej si z kolumni wierszyCopyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 18. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 19 Mirosaw J. KubiakTworzymy nasz pierwszy programDelphi 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); beginend;end.Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 19. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 20 Mirosaw J. KubiakPomidzy 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++ Builder1.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 zwizaneCopyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 20. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 21 Mirosaw J. Kubiak z tym komponentem zdarzenie. W okienku Unit1.cpp ukazasi dodatkowy fragment kodu widoczny w ramce poniej:void __fastcall TForm1::Button1Click(TObject *Sender) {} 5. Pomidzy nawiasami klamrowymi { }; wpisujemy zasadniczyfragment kodu naszego programu: Edit1->Text="Mojpierwszy program w C++ Builder";6. Naciskajc klawisz F9 lub Run|Run, lub przyciskkompilujemy 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 21. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 22 Mirosaw J. KubiakProgram i jego strukturaAplikacje 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.DelphiAplikacj 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;usesForms,Unit1 in 'Unit1.pas' {Form1};{$R *.res}beginApplication.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 22. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 23 Mirosaw J. KubiakNa 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. 4 Sowa kluczowe zostan omwione w rozdziale 3. Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 23. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 24 Mirosaw J. KubiakModuy w DelphiKady 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;interfaceimplementationend. 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 implementationzawierajcej kod programu idodatkowe deklaracje.W module powinny zosta zadeklarowane wszystkie identyfikatory przed ichuyciem.Wsekcji interfaceoraz w sekcji implementation mog by zadeklarowane: 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 24. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 25 Mirosaw J. KubiakC++ BuilderPoniej przedstawiono struktur gwnego pliku programu.//---------------------------------------------------------------------------#include #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 25. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 26 Mirosaw J. KubiakPreprocesorKod 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 #pragma hdrstopPoniej pokrtce omwimy ich znaczenie.Dyrektywa #includeJej 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 . Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 26. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 27 Mirosaw J. KubiakAby plik mg by doczony, musi si on znajdowa w ciece plikw nagwkowych. Zapis#include nazwa_plikuoznacza, e plik jest najpierw poszukiwany w katalogu biecym (tam, gdzie znajduje si plik rdowy projektu), a nastpnie w ciece plikw nagwkowych.Dyrektywa #pragmaSuy do definiowania nowych dyrektyw, specyficznych dla danego kompilatora. Ta dyrektywakoczylist 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 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 ona5Programy 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 27. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 28 Mirosaw J. Kubiakwywoywana jako pierwsza i zawiera w sobie zestaw kolejnych instrukcji wykonywanych przez program, zawartych pomidzy par nawiasw klamrowych { ... }.Skadnia funkcji WinMain() jest nastpujca:WINAPIWinMain(HINSTANCEAktEgz, HINSTANCE PoprzEgz, LPSTR Parametry, int Stan),gdzie HINSTANCE w wolnym tumaczeniu oznacza uchwyty. S oneniezbdne,gdy system Windowsjest 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 28. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 29 Mirosaw J. KubiakSkada si on z procesu inicjacji metoda 6 Initialize(), tworzenia formularza metoda CreateForm() oraz metoda Run(). Cao gwnego kodu aplikacji umieszczono w nawiasach klamrowychtry{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 29. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 30 Mirosaw J. KubiakModuy w C++ BuilderKady 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 #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 30. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 31 Mirosaw J. Kubiakdo ktrej ten obiekt naley. Prototyp tej funkcji (nazywanej konstruktorem) z parametrami ma posta:__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)7Tworzymy drugi programDelphi 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;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7Konwencja __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 31. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 32 Mirosaw J. Kubiak Dialogs, StdCtrls;typeTForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject);private { Private declarations }public { Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text:='Moj pierwszy program nie sprawil mi zadnych trudnosci'; end;end.C++ BuilderWzbogaceni 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 32. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 33 Mirosaw J. KubiakJeli mamy nadal trudnoci z napisaniem takiego programu, to kompletny jego wydruk znajduje si poniej.//---------------------------------------------------------------------------#include #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 33. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 34 Mirosaw J. Kubiak+ Builder generuje to automatycznie.KomentarzeW 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 dyskuAby utworzy now aplikacjnaleynacisnFile|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 rdowegoAby 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 34. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 35 Mirosaw J. Kubiakzawiera 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 zapamitaPodczas 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 rozdzielajceCopyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 35. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 36 Mirosaw J. Kubiak niepowizane ze sob instrukcje. Gdy kompilator trafi na pustlini, 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 36. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 37 Mirosaw J. Kubiak Rozdzia 3. Deklaracja staych i zmiennych w programieW 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.IdentyfikatoryProgramy 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 uytkownika bdziemyposugiwali si identyfikatorami.S tookrelone cigi znakw alfabetuCopyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 37. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 38 Mirosaw J. Kubiakangielskiego, przy czym pierwszy musi znak by liter. Nie wolno definiowa identyfikatorw takich samych jak sowa kluczowe. A oto kilka przykadowych identyfikatorw:Poprawne Niepoprawne dlugosc570dlugosc minimum?!minimum maksimum_boku_amaksimum boku a Deklarujemy stae w programieStae jzyka Delphi (i C++ Builder) reprezentuj ustalone wartoci, ktre nie mog zosta zmienione podczas dziaania programu. Mog by one dowolnego typu. DelphiDo deklarowania staych w jzyku Delphi suy sowo kluczowe const (ang. constant - staa). Oglna posta deklaracji staej dla tego jzyka jest nastpujca:constnazwa_staej = warto;Np. deklaracja:constcyfra = 10;Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 38. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 39 Mirosaw J. Kubiakoznacza, e w caym programie zostaa zadeklarowana staa o nazwie cyfra i o wartoci rwnej 10.C++ BuilderDo deklarowania staych suy sowo kluczowe const (pisane wycznie maymi literami). Oglna posta deklaracji staej dla tego jzyka jest nastpujca:const typ nazwa_staej = warto;Zapisconst 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++ BuilderDo 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 39. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 40 Mirosaw J. KubiakZapisconst 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 programieW jzykach Delphi i C++ Builder wszystkie zmienne, zanim zostan uyte w programie, musz zosta wczeniej zadeklarowane.DelphiW 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:varnazwa_zmiennej : typ zmiennej;Na przykad deklaracje zmiennej o nazwie liczba typu integer deklarujemy w sposb nastpujcy:Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 40. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 41 Mirosaw J. Kubiakvarliczba : 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: DelphiNiektre 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 32- bitowych.Typ danej Rozmiar Zakres wartoci w bajtach ShortInt 1-128 127 Byte 1 0 255 Char 1 0 255 WideChar20 65 535 SmallInt2- 32 768 32 767Word 20 65 535 LongInt 4- 2 147 483 648 2 147 483 647Int648 od - 9 223 372 036 854 775 808 Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 41. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 42 Mirosaw J. Kubiak do 9 223 372 036 854 775 807Integer 4Tak samo jak LongIntCardinal 4 0 4 294 967 925LongWord 4Tak samo jak CardinalSingle 4 1,5 x 10-45 3,4 x 1038 Double8 5,0 x 10-324 1,7 x 10308 Real8 Tak samo jak Double Extended10 3,4 x 10-4932 1,1 x 104932Comp 8 od - 9 223 372 036 854 775 808 do 9 223 372 036 854 775 807 Boolean 1False lub True C++ BuilderW 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 42. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 43 Mirosaw J. KubiakW 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 Liczba bitwPrzechowywane wartociunsigned char8 0 255signed char8 - 128 127 unsigned int 160 65 535 short signed int 16 - 32 768 32 767 signed int 16 - 32 768 32 767 long unsigned int32 0 4 294 967 295 long signed int32 - 2 147 483 648 2 147 483 647 Typ rzeczywistyLiczba bitwPrzechowywane wartocifloat 32 3.4*10-38 3.4*1038(liczby rzeczywiste)double64 1.7*10-3081.7*10308(liczby o podwjnejprecyzji) long double80 3.4*10-4932 1.1*104932 (liczby o wysokiejprecyzji) 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 43. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 44 Mirosaw J. KubiakSowa kluczowePodczas 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. DelphiUWAGA: 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.andarrayasmbegin case classconstconstruct- destructor div or do downto else end file forfunction goto ifimplemen-tation in inheritedinline interface label modnilnotofor procedure program record repeatset shlshrstring thento type unit untilusesvar whilewith xorCopyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 44. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 45 Mirosaw J. Kubiak C++ BuilderUWAGA: sowa kluczowe w jzyku C++ Builder piszemy wycznie maymi literami.Tabela 3.4. Wybrane sowa kluczowe w C++ Builder.asmauto breakcasecatch char classconstcontinuedefault delete do double elseenum extern floatforfriendgoto if inline intlongnew operator privateprotectedpublicregister return shortsigned sizeofstatic struct switch template thisthrow trytypedefunionunsignedvirtual void volatile while Nadawanie zmiennym wartociJak wczeniej zostao powiedziane, zmienne przechowuj wartoci w trakcie dziaania programu.Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 45. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 46 Mirosaw J. Kubiak DelphiDo przypisania zmiennej nowej wartoci suy instrukcja przypisania oznaczona symbolem := (dwukropek i znak rwnoci). Oglna posta tej instrukcji jest nastpujca:nazwa_zmiennej := wyraenieDo wywietlania na ekranie wartoci zmiennych posuymy si np. polem Edit. Na formularzu wykonujemy nastpujce czynnoci:1. umieszczamy na nim trzy komponenty Panel,cztery komponenty Edit oraz dwa przyciski Button,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 46. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 47 Mirosaw J. Kubiak Rys. 3.1. Program P02 podczas projektowania formularza.4. nastpnie dwukrotnie klikamy na formularzu przycisk Zaczniji podpinamyzwizanznimprocedurprocedurTForm1.Button1Click(Sender: TObject) z nastpujcymkodem: 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 47. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 48 Mirosaw J. KubiakEdit1.Text:=litera;Edit2.Text:=IntToStr(liczba);Edit3.Text:=Format('%2.2f', [pomiar]); end; 5. W ostatnim etapie dwukrotnie klikamy przycisk Zakoczi w procedurzeprocedure TForm1.Button2Click(Sender: TObject)umieszczamy nastpujcy kod: procedure TForm1.Button2Click(Sender: TObject); beginEdit4.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 48. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 49 Mirosaw J. KubiakZapis Edit3.Text:=Format('%2.2f', [pomiar]) oznacza, e aby w poluEdit3moga sipojawizmiennapomiar 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;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ExtCtrls, StdCtrls;typeTForm1 = 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;varForm1: TForm1;Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 49. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 50 Mirosaw J. Kubiakimplementation{$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++ BuilderPo zadeklarowaniu zmiennej, przy uyciu operatora przypisania (oznaczonego znakiem rwnoci=)moemyprzypisa jej odpowiedni warto. Oglna posta instrukcji przypisania jest nastpujca:nazwa_zmiennej = wyraenieCopyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 50. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 51 Mirosaw J. KubiakDo wywietlania na ekranie wartoci zmiennych posuymy si polem Edit. Na formularzu wykonujemy nastpujce czynnoci:1. umieszczamy na nim trzy komponenty Panel, cztery komponenty Edit oraz dwa przyciski Button,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 Zaczniji podpinamy zwizan z nim funkcj void __fastcallCopyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 51. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 52 Mirosaw J. Kubiak TForm1::Button1Click(TObject *Sender) z nastpujcymkodem: 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 Zakoczi w funkcjivoid __fastcallTform1::Button2Click(TObject *Sender) umieszczamy nastpujcy kod:void __fastcall TForm1::Button2Click(TObject*Sender) Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 52. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 53 Mirosaw J. Kubiak{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 Edit3->Text=FloatToStrF(pomiar,ffNumber,4,2) oznacza, e aby w polu Edit3 moga si pojawi zmienna pomiar typurzeczywistego,musi ona zostapoddana najpierw 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 #pragma hdrstop Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 53. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 54 Mirosaw J. Kubiak #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 54. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 55 Mirosaw J. Kubiak Po skompilowaniu obu programw naciskamy przycisk Zacznij. Rys. 3.3. Efekt dziaania programu P02 w obu jzykach programowania.Warto zapamita1. 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:DelphiC++ Builder Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 55. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 56 Mirosaw J. Kubiak var typ_zmiennej nazwa nazwa_zmiennej: typ zmiennej; zmiennej;Typ zmiennej okrela typ wartoci (na przykad liczba cakowitalubzmiennoprzecinkowa), jakmoeona przechowywa, a take operacje, jakie program moe na niej wykonywa. 5. Dlapodniesieniaczytelnoci programw, podczas deklarowania zmiennych naley uywa nazw znaczcych.6. Oglna posta instrukcji przypisania jest nastpujca:DelphiC++ Builder nazwa_zmiennej := nazwa_zmiennej = wyraenie wyraenie Do wywietlania na ekranie wartoci zmiennej suy np. komponent Edit.Copyright by Wydawnictwo Zote Myli & Mirosaw J. Kubiak 56. PROGRAMUJ W DELPHI I C++ BUILDER - darmowy fragment - kliknij po wicej str. 57 Mirosaw J. Kubiak 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 57. POLECAMY TAKE PORADNIKI:Sekrety jzyka C# (c-sharp) Andrzej Stefaczyk Dlaczego tworzenie aplikacjiw Visual Studio .NET 2005 jest takieproste?Ebook "Sekrety jzyka C#" uczy zarwno skadni nowegojzyka C# jak rwnie zasad tworzenia aplikacjiokienkowych dla systemu Windows w tym jzyku.Przeznaczony jest zarwno dla osb, ktre nie miay do tejpory stycznoci z programowaniem jak i dla osb, ktreprogramoway wczeniej w innych jzykach i chciaybypozna 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 opisujedany 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 prostoutworzy rozbudowan aplikacjebazodanow?Ebook "Visual Basic 2005 Express i MySQL" uczy zarwnoskadni jzyka Visual Basic jak rwnie zasad tworzeniaaplikacji opartych o baz danych MySQL dla systemuWindows w tym jzyku, a zosta napisany gwniez myl o pocztkujcych programistachWicej 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 poradnikwna stronie www.zlotemysli.pl