Materiały dydaktyczne Języki programowania Semestr III Wykłady

41
Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie” Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin 1 Materiały dydaktyczne Języki programowania Semestr III Wykłady

Transcript of Materiały dydaktyczne Języki programowania Semestr III Wykłady

Page 1: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

1

Materiały dydaktyczne

Języki programowania

Semestr III

Wykłady

Page 2: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

2

Temat 1 (4 godziny):

Języki programowania. Delphi 2010 – omówienie środowiska

Zagadnienia tematyczne: A. Delphi 2010 – interfejs systemu programowania obiektowego i zdarzeniowego; B. BDE; C. Inne języki programowania; D. Zasady tworzenia aplikacji.

Zagadnienie: 1.A Delphi 2010 – interfejs systemu programowania obiektowego i zdarzeniowego

Delphi jest środowiskiem programowania opartym o język programowania Pascal, wyposażonym w edytor, kompilator, debugger i kilka innych przydatnych funkcji. Interfejs użytkownika Delphi 2010 składa się z wielu części (rys. 1).

Pasek menuPasek szybkiego dostępu

Czysty formularz

Okno Object Inspector

Okno Structure

Okno Tool Palette

Okno Project Manager

Rys. 1. Interfejs Delphi 2010

Page 3: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

3

Interfejs Delphi 2010 składa się z następujących części:

– paska menu (Menu Bar); – paska szybkiego dostępu (Menu SpeedBar); – palety składników (Component Paletee); – kontrolera obiektów (Object Inspector); – czystego formularza (Blank Form); – menagera projektu (Projekt Manager); – okna edycji kodu (Code Editing Window); – i innych (Menu Designer, Alignment Palette).

Pasek Menu

Pasek ten umieszczony jest tuż poniżej niebieskiego paska zawierającego nazwę programu Delphi 2010 i daje możliwość dostępu do większości funkcji programu (rys. 1). W tabeli 1 zebrano najważ-niejsze elementy menu głównego programu Delphi 2010 i opisano ich funkcje.

Funkcje elementów Menu Delphi 2010 Tabela 1

Nazwa elementu Najważniejsze funkcje

File Pozwala uruchomić nowy projekt, otwierać, zachowywać i zamykać pliki; do-dawać i usuwać pliki do/z bieżącego projektu.

Edit Pozwala wycinać, kopiować i wklejać kod w oknie kodów, albo elementy w formularzu.

Search Pozwala wykonywać operacje znajdowania i zastępowania kodu. View Pozwala oglądać różne części interfejsu Delphi.

Project Pozwala dodawać lub usuwać z projektu pliki i składniki. Daje również dostęp do kompilatora Delphi.

Run Zapewnia dostęp do różnych funkcji w celu uruchamiania kodu w środowisku projektowym.

Component Zapewnia funkcje zarządzania elementami zawartymi w projekcie i zarządzanie paletą składników.

Tools Pozwala ustawiać opcje i sterować wyglądem oraz działaniem środowiska pro-jektowego.

Help Daje dostęp do systemu pomocy Delphi.

Pasek szybkiego dostępu

Pasek ten pozwala na szybki dostęp do wielu najczęściej używanych funkcji Delphi 2010, m.in. do zachowywania pliku, uruchamiania aplikacji, dodawania nowego formularza do aplikacji czy przełą-czenia do okna edycji kodu programu. Delphi 2010 daje możliwość dowolnej konfiguracji paska szybkiego dostępu poprzez dodawanie lub usuwanie funkcji korzystając z edytora paska szybkiego dostępu.

Paleta składników

Paleta składników umożliwia szybki dostęp do wszystkich składników możliwych do wykorzystania do opracowywania interfejsu dowolnego programu. Paleta składników tworzy karty palet pogrupowa-nych tematycznie, z których najważniejsze przedstawiono w tabeli 2.

Page 4: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

4

Najważniejsze karty składników na palecie składników Delphi 2010 Tabela 2

Nazwa karty Funkcja Standard Zawiera najczęściej używane składniki.

Additional Zawiera inne często używane składniki.

Win32 Zawiera składniki zaprojektowane tak, aby były zgodne dla 32-bitowego środo-wiska Windows.

System Zawiera składniki, które dają dostęp do funkcji systemu Windows.

Win 3.1 Zawiera składniki do aplikacji pracujących w środowisku Windows 3.1, które mają podobne możliwości jak składniki Windows 95.

Dialogs Zawiera dostęp do pliku, drukarki, czcionek i innych pól dialogu. Data Access Zawiera składniki dołączane do baz danych.

Data Controls Zawiera składniki pozwalające poruszać się po bazach danych i manipulować danymi.

Internet Zawiera składniki realizujące obsługę funkcji związanych z Internetem.

Kontroler obiektów

Kontroler obiektów (Object Inspector) jest oknem pozwalającym kontrolować wygląd i funkcjonowa-nie każdego składnika w projekcie. Kontroler obiektów zawiera dwie karty, jedną właściwości (Pro-perties) i drugą zdarzeń (Events) (rys. 2). W tabeli 3 przedstawiono wybrane właściwości i zdarzenia pustego formularza.

Wybrane właściwości i zdarzenia pustego formularza Tabela 3

Właściwość Opis Align Określa sposób wyrównania kontrolek w obrębie jej obiektu nadrzędnego.

AutoScroll Określa, czy na obrzeżach formularza automatycznie będą wyświetlane paski przewijania.

BorderIcons Określa, które przyciski mają być wyświetlane na pasku tytułu. Canvas Pozwala uzyskać dostęp do powierzchni rysunkowej formularza. Caption Określa nazwę formularza. Color Określa kolor formularza.

Enabled Określa, czy formularz jest czynny. Font Określa czcionkę używaną do tekstu widniejącego na formularzu.

FormStyle Określa styl formularza. Height Określa wysokość formularza. Hide Pozwala ukryć formularz.

PopupMenu Określa, czy menu podręczne jest skojarzone z formularzem. Position Określa położenie i rozmiar formularza zaraz po wyświetleniu. Visible Określa czy formularz jest widoczny. Width Określa szerokość formularza.

Zdarzenie Opis OnClick Obsługuje zdarzenie w momencie kliknięcia przyciskiem myszy.

Page 5: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

5

OnClose Obsługuje zdarzenie po zamknięciu formularza. OnCreate Obsługuje zdarzenie po utworzeniu formularza.

OnDblClik Obsługuje zdarzenie w momencie dwukrotnego kliknięcia przyciskiem myszy. OnDestroy Obsługuje zdarzenie po usunięciu formularza.

OnHide Obsługuje zdarzenie po ukryciu formularza. OnKeyDown Obsługuje zdarzenie w momencie naciśnięcia i przytrzymania klawisza. OnKeyPress Obsługuje zdarzenie w momencie naciśnięcia klawisza. OnKeyUp Obsługuje zdarzenie w momencie zwolnienia klawisza.

OnMouseDown Obsługuje zdarzenie w momencie gdy przycisk myszy zostanie wciśnięty i przy-trzymany.

OnMouseMove Obsługuje zdarzenie w momencie gdy wskaźnik myszy jest przemieszczany po formularzu.

OnMouseUp Obsługuje zdarzenie w momencie gdy wskaźnik myszy jest zwalniany. OnPaint Obsługuje zdarzenie w momencie odświeżania obszaru rysunku formularza.

OnResize Obsługuje zdarzenie w momencie zmiany rozmiaru formularza. OnShow Obsługuje zdarzenie w momencie gdy formularz znajduje się w ognisku.

Rys. 2. Kontroler obiektów (karta właściwości i zdarzeń)

Okno edycji kodu

Okno edycji kodu wyświetlane jest poprzez naciśnięcie ikony znajdującej się w pasku szybkiego do-stępu, bądź klawiszem F12 na klawiaturze. Okno edycji kodu zawiera segmenty składowe formularza projektu, wśród których znajdują się wszystkie obiekty, zmienne, procedury (rys. 3).

Page 6: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

6

Rys. 3. Okno edycji kodu pliku Unit1

Każdy moduł rozpoczyna się od nagłówka Unit zawierającego nazwę modułu. Następnie następuje sekcja Interface. Jest to część opisowa zawierająca następujące cześci: Uses - zawiera informacje z jakich bibliotek lub innych modułów korzystamy; const - zawiera deklaracje stałych; type - tutaj znajdują się deklaracje typów (np. TForm1 = class(TForm) ), umieszczamy tu też nagłówki procedur i funkcji przeznaczonych do udostępnienia (np. procedure Button1Click(Sender: TObject); ); Private i Public - sekcje te informują kompilator że deklaracje w nich zawarte mają być tylko do użyt-ku lokalnego (private) lub globalnego (public); var - tutaj deklarujemy zmienne; implementation - w tej sekcji zgromadzone są procedury i funkcje naszego programu; end. - "end z kropką" zawsze oznacza koniec modułu lub programu.

Zagadnienie: 1.B BDE. Borland Database Engine

Borland Database Engine (BDE) - oprogramowanie firmy Borland dla środowiska Windows, które daje dostęp do baz danych znajdujących się na rozmaitych platformach systemowych. Uzywając bor-landowski interfejs IDAPI stwarza warstwę pośredniczącą między programem klienckim, a takimi bazami, jak dBASE, Paradox, Oracle, SQL Server, DB2, Informix, InterBase i bazy zgodne z ODBC. BDE jest dostępne samodzielnie, ale jest też wbudowane w języki programowania Borlanda. Technologia BDE powstawała przez wiele lat i z czasem przyjęte w niej rozwiązania okazały się mało wygodne i mało nowoczesne obecnie. BDE łączy w sobie dwie starsze technologie bazodanowe oraz wprowadzało trzecią nową. Dokładniej chodzi tutaj o wykorzystanie ODBC oraz IDAPI stworzonych na początku lat 90-tych. Nowym rozwiązaniem w BDE były bezpośrednie sterowniki dla kilku najpo-pularniejszych w tamtych czasach serwerów (sterowniki te zostały nazwane SQL Link). Zarówno

Page 7: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

7

ODBC jak IDAPI pozwalały wykorzystać plikowe bazy danych, a mechanizmy dostarczane w BDE umożliwiały wykorzystywanie ich w podobny sposób jak serwery SQL.

Zagadnienie: 1.C Inne języki programowania

Język programowania to ciąg symboli tworzonych według określonych zasad tworzący kod którego podstawowym zadaniem jest wykonywanie obliczeń i algorytmów oraz kontrolowanie/obsługa ze-wnętrznych urządzeń takich jak drukarek, robotów. Na świecie obecnie istnieją tysiące języków pro-gramowania i każdego roku powstają nowe. Wśród najpopularniejszych znajdują się:

– Java - to obiektowy język programowania stworzony przez grupę roboczą pod kierunkiem Jamesa Goslinga z firmy Sun Microsystems.

– C - imperatywny, strukturalny język programowania stworzony na początku lat siedemdzie-siątych XX w. przez Dennisa Ritchiego do programowania systemów operacyjnych i innych zadań niskiego poziomu.

– C++ - został zaprojektowany przez Bjarne Stroustrupa jako rozszerzenie języka C o obiekto-we mechanizmy abstrakcji danych i silną statyczną kontrolę typów. Zachowanie zgodności z językiem C na poziomie kodu źródłowego pozostaje jednym z podstawowych celów projek-towych kolejnych standardów języka.

– PHP - obiektowy, skryptowy język programowania zaprojektowany do generowania stron in-ternetowych w czasie rzeczywistym.

– Visual Basic - to język programowania wysokiego poziomu i narzędzie programowania firmy Microsoft.

– Pyton - interpretowany, interaktywny język programowania stworzony przez Guido van Ros-suma w 1990. Python posiada w pełni dynamiczny system typów i automatyczne zarządzanie pamięcią, jest zatem podobny do takich języków, jak Tcl, Perl, Scheme czy Ruby.

– Perl - to interpretowany język programowania autorstwa Larry'ego Walla przeznaczony głównie do pracy z danymi tekstowymi, używany także do innych zastosowań. Wzorowany na takich językach jak C, skryptowe: sed, awk i sh oraz na wielu innych.

– Objective-C - to rozszerzenie języka C o możliwości obiektowe, wzorowane na Smalltalku. Objective-C przyjął drogę całkowicie odmienną od C++. Jest używany głównie w frameworku Cocoa w systemie Mac OS X oraz w iPhone OS.

– Delphi - język programowania, którego można używać w środowiskach firmy Borland, Em-barcadero, Microsoft (Delphi Prism), oraz w środowisku Lazarus. Narzędzia te są zintegrowa-nymi środowiskami programistycznymi typu RAD, działającymi zgodnie z zasadą dwustron-nej edycji. Dawniej język Delphi był nazywany Object Pascalem. Standard języka Delphi obejmuje wiele bogatych funkcjonalnie klas, których nie ma w standardzie Object Pascala, a ponadto umożliwia programowanie wizualne, czyli Object-Oriented Design. Object Pascal jest rozszerzeniem języka Pascal – został on rozwinięty przez firmę Apple Computer przy współpracy Larry'ego Teslera, głównego architekta, i Niklausa Wirtha, wynalazcy Pascala (rys. 4).

Page 8: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

8

Rys. 4. Drzewo genealogiczne języków programowania z którego wywodzi się Delphi

Odpowiednik Delphi stworzony przez firmę Borland dla Linuksa nosił nazwę Kylix. Jego produkcja została zaniechana, gdyż charakteryzował się niską jakością. Obecnie rozwijane jest na licencji GNU GPL zintegrowane środowisko programistyczne (IDE) o nazwie Lazarus wzorowane na Delphi. Laza-rus jest środowiskiem wieloplatformowym, dostępnym dla różnych systemów operacyjnych.

Zagadnienie: 1.D Zasady tworzenia aplikacji

W celu stworzenia poprawnego programu komputerowego tzw. aplikacji należy zastanowić się nad zadaniami jakie będzie wykonywał dany program oraz jak będzie wyglądał jego interfejs, a dodatko-wo napisać poprawny kod programu i dodatkowo wykonać dokumentację programu. Przeanalizowa-nie zadań programu pozwoli określić kto będzie użytkownikiem programu oraz metodę wprowadzania i zapisywania danych, co bezpośrednio wpływa na wygląd programu, a tym samym na korzystanie z zaawansowanych technik programowania t.j. stosowania skrótów klawiszowych, pasków szybkiego dostępu, szybkiego menu i inne.

Literatura

1. Todd Miller, David Powell. Delphi 3 Księga Eksperta Tom 1 i 2, Helion, 1998. 2. Marco Cantu, Delphi 6, Praktyka programowania Tom 1 i 2, Mikon, 2002. 3. Paul Kimmel, Delphi 6 dla profesjonalistów, RM, 2001. 4. P. Thurrott, G. Brent, R. Bagdazian, S. Tendon, Delphi 3, Arkana, 1998.

Page 9: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

9

Temat 2 (3 godziny):

Zmienne i pętle

Zagadnienia tematyczne: A. Rodzaje zmiennych, podział zmiennych; B. Pętle, pętle zagnieżdżone; C. Metody wykrywania błędów.

Zagadnienie: 2.A Rodzaje zmiennych, podział zmiennych

Zmienną określamy daną, która może przyjmować i przechowywać informację różnego typu przypi-sanego lub określonego dla zmiennej, i dlatego ważnym zadaniem jest prawidłowe przypisanie dla zmiennej jego typu. Używane w Delphi zmienne przedstawiono w tabeli 4.

Typy zmiennych uzywane w Delphi Tabela 4

Typ zmiennej Rozmiar w bajtach

Zakres

ShortInt 1 Liczby całkowite [-128, 127] Byte 1 Liczby całkowite [0, 255]. Char 1 Znaki pojedyncze + liczby z zakresu [0, 255].

WideChar 2 Znaki pojedyncze + liczby [0, 65535]. SmallInt 2 Liczby całkowite od [-32768, 32767].

Word 2 Liczby całkowite [0, 65535]. LongInt 4 Liczby całkowite [-2 147 483 648, 2 147 483 647].

Int64 8 Liczby całkowite [-9 223 372 036 854 775 808, 9 223 372 036 854 775 807].

Integer 4 Liczby całkowite [-2 147 483 648, 2 147 483 647]. Cardinal 4 Liczby całkowite [0, 4 294 967 295].

LongWord 4 Liczby całkowite [0, 4 294 967 295]. Single 4 Liczby rzeczywiste [1,5x10-45, 3,4x1038]. Double 8 Liczby rzeczywiste [5,0x10-324, 1,7x10308].

Real 8 Liczby rzeczywiste [5,0x10-324, 1,7x10308]. Real148 6 Liczby rzeczywiste [2,9x10-39, 1,7x1038]. Extended 10 Liczby rzeczywiste [3,4x10-4932, 1,1x104932].

Comp 8 Liczby rzeczywiste [-9 223 372 036 854 775 808, 9 233 372 036 854 775 807].

Currency 8 Liczby rzeczywiste [-9 223 372 036 854 775 808, 9 233 372 036 854 775 807].

Boolean 1 True albo False String do 2 GB Ciąg znaków

ShortString - Ciąg znaków - maksimum 255 Variant 16 Zmienny

Page 10: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

10

Zmienne w zależności od dostępności w programie dzielimy na:

– lokalne – zmienne ograniczone tylko do pojedynczej procedury, używane wewnątrz tej proce-dury;

– zmienne w zakresie modułu – dostępne dla wszystkich procedur zawartych wewnątrz tego modułu;

– globalne - dostępne dla całego programu, a także funkcji i procedur umieszczonych w aplika-cji, pamięć dla zmiennych globalnych przydzielana jest w momencie uruchamiania aplikacji.

Zagadnienie: 2.B Pętle, pętle zagnieżdżone

Działanie każdego programu opiera się na możliwości podejmowania różnych decyzji na podstawie aktualnych w danym momencie parametrów. Kryteria te mogą zależeć od danych wprowadzonych przez użytkownika lub wewnętrznego stanu aplikacji. Sterowanie programem odbywa się dzięki in-strukcjom warunkowym. W przypadku gdy, chcemy wielokrotnie wykonać sekwencję pewnych in-strukcji stosuje się tzw. pętle. Delphi pozwala stosować trzy różne struktury pętli:

– For (dla); – Repeat (powtórz); – While (dopóki).

Pętla For

Pętli For używa się w programie wówczas, kiedy blok programu musi być powtórzony określoną ilość razy. Pętla For ma postać (rys. 5):

zmienna := 1

TAK

zmienna := zmienna+1

instrukcja 1

zmienna <= 10

NIE

Rys. 5. Schemat blokowy pętli FOR

Pętla For wykonywana jest w następujący sposób: najpierw zmiennej przypisywana jest wartość pierwszego (w tym wypadku – dolnego) zakresu, następnie wartość zmiennej porównywana jest z wartością drugiego (górnego) zakresu i jeśli jest ona mniejsza lub równa, wykonywana jest instrukcja

Page 11: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

11

stojąca po słowie kluczowym do. Po wykonaniu instrukcji, zmienna indeksująca zwiększana jest o 1 i ponownie porównywana z górnym zakresem. Zapis petli FOR: FOR i:=1 to 10 do {10 jest tu wartością końcową} Begin {instrukcja} End; W przypadku wykorzystania słowa kluczowego downto odwracany jest kierunek wykonania pętli – zmienna indeksująca musi być większa lub równa niż drugi (w tym wypadku – dolny) zakres, a w każdym kroku jest ona zmniejszana o 1.

Pętla Repeat

Pętla tworzona z wykorzystaniem instrukcji REPEAT … UNTIL wykonywana jest co najmniej raz i kończy się wykonywać, jeśli jest spełniony występujący w niej warunek logiczny. Pętla tego rodzaju składa się ze słowa kluczowego repeat, po którym występuje sekwencja instrukcji zakończonych sło-wem kluczowym until i warunkiem logicznym. Ogólna postać pętli repeat przedstawiona jest poniżej, a schemat blokowy na rysunku 6: Repeat Begin {instrukcja1}; End; Until /warunek logiczny/ ;

zmienna := 1

TAK

zmienna := zmienna+1

zmienna >= 10NIE

Rys. 5. Schemat blokowy pętli REPEAT

Page 12: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

12

Pętla While

Pętla tworzona z wykorzystaniem instrukcji while jest najprostszym typem pętli. Pozwala ona na wy-konywanie pewnej instrukcji tak długo, jak długo spełniony jest określony warunek logiczny. Pętla tego rodzaju składa się ze słowa kluczowego while, po którym występuje warunek logiczny, za nim pojawia się słowo kluczowe do oraz instrukcja, która ma być wykonywana. Ogólna postać pętli while przedstawiona jest w poniższym przykładzie (rys. 7): while /warunek logiczny/ do {instrukcja1};

zmienna := 1

TAK

zmienna := zmienna+1

zmienna <= 10

NIE

Rys. 7. Schemat blokowy pętli WHILE

Pętle zagnieżdżone

Wewnątrz każdej pętli można umieścić dowolne instrukcje, również kolejną pętlę. Mogą być więc one zagnieżdżane. Najczęściej zagnieżdżane są pętle for. W podobny sposób jak pętle for można za-gnieżdżać pętle while, istnieje również możliwość mieszania typów zagnieżdżonych pętli, tzn. w pętli while może być zagnieżdżona pętla for i odwrotnie, w pętli for może być zagnieżdżona pętla while. Przykład zagnieżdżonej pętli przedstawia rysunek 8.

Page 13: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

13

TAK NIE

TAK NIE

A = B

zmienna A

zmienna B

A > B

A = A B B = B A

Rys. 8. Przykład pętli zagnieżdżonej

Zagadnienie: 2.C Metody wykrywania błędów

Najczęściej występującymi podczas programowania błędy to:

– błędy kompilacji (complier errors), które powodują, że program w ogóle nie będzie wykony-wany;

– błędy wykonania (runtime errors), które spowodują zatrzymanie programu w środku jego wy-konywania, albo jego nieprawidłowe wykonanie.

Pojawienie się podczas kompilacji błędów najczęściej spowodowane jest nieprawidłową pisownią nazwy zmiennej lub obiektu, lub braku zdeklarowania zmiennej przed jej użyciem. Programując w Delphi w przypadku pojawienia się jakiegokolwiek błędu podczas kompilacji programu nastąpi samo-czynne przerwanie programu i powiadomienie o występującym błędzie, wraz z podaną jego przyczy-ną. Błąd taki można natychmiast poprawić ponieważ jego wskazanie następuje w oknie Structure (rys. 9).

Rys. 9. Komunikaty o błędach w oknie Structure

Page 14: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

14

Najczęściej występujące błędy zestawiono w tabeli 5.

Najczęstsze błędy kompilacji Tabela 5

Komunikat o błędzie Możliwa przyczyna Undeclared identifier Nieprawidłowo wpisana nazwa zmiennej, obiektu lub procedury.

Nie zdeklarowana zmienna. Brak nazwy modułu, zawierającego procedurę w klauzuli uses.

Incompatible types Przypisanie lub porównanie zmiennych dwóch różnych typów. Wykonywanie operacji niedozwolonych dla danego typu zmiennych.

\:=\ expected but \=\ found

Nieprawidłowo wpisany symbol = w instrukcji przypisanie. Poprawny operator przypisania to /:=/.

Unterminated string Pominięcie jednego ze znaków apostrofa, który potrzebny jest przy stru-mieniu tekstu.

EDivByZero Program próbował wykonać dzielenie przez zero. EOverflow Podczas operacji zmiennopozycyjnej wystąpiło przepełnienie, oznacza to

że wyliczona liczba nie mieści się w zakresie liczb, jakie kod potrafi obsłu-żyć.

ERangeError Liczba całkowita jest spoza dopuszczalnego zakresu wartości. Bardzo pomocnym narzędziem Delphi w wyszukiwaniu błędów jest Integrated Debugger. Pozwala on na wyszukiwaniu błędów w określonym obszarze kodu programu, do określonego punktu w progra-mie, a dodatkowo śledzić i oceniać wartości zmiennych i wyrażeń oraz poprawnego wykonywania instrukcji podczas działania aplikacji.

Literatura

1. Todd Miller, David Powell. Delphi 3 Księga Eksperta Tom 1 i 2, Helion, 1998. 2. Marco Cantu, Delphi 6, Praktyka programowania Tom 1 i 2, Mikon, 2002. 3. Paul Kimmel, Delphi 6 dla profesjonalistów, RM, 2001. 4. Andrzej Marciniak, Turbo Pascal 7.0 – Część I, Wydawnictwo Nakom, 1996.

Page 15: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

15

Temat 3 (3 godziny):

Tworzenie aplikacji w Delphi

Zagadnienia tematyczne: A. Zasady tworzenia interfejsu, programu; B. Komponenty, tworzenie komponentów, wykorzystanie komponentów.

Zagadnienie: 3.A Zasady tworzenia interfejsu, programu

Do stworzenia dowolnej aplikacji w Delphi zalecane jest stosowanie pięciu następujących etapów: – planowanie programu –

– czyli zdecydować w jakim celu dana aplikacja powstaje i kim będą jej użytkownicy, w jaki sposób do programu będą trafiać informacje i jaką postać będą miały dane wyjściowe z progra-mu;

– projektowanie interfejsu – – wiedza o tym, kim będą użytkownicy programu pomaga określić wygląd interfejsu, oraz spo-sób wprowadzania i wyprowadzania danych. Projektowanie interfejsu wiąże się również z wy-korzystaniem komponentów, które bezpośrednio wpływają na wygląd programu oraz umożli-wiają użytkownikowi wprowadzenia teksu, dokonywanie wyborów, oglądanie i redagowanie grafiki czy inicjowanie czynności programu;

– definiowanie właściwości i zdarzeń składników programu – – umieszczone komponenty na formularzu wymagają określenia dla nich właściwości i zdarzeń. Właściwości każdego komponentu wykonuje się w kontrolerze obiektów (Object Inspector), zaś obsługa zdarzeń każdego komponentu wymaga uzupełnienie kodu programu w oknie edycji ko-du. Poprawne działanie kodu programu wymaga dodatkowo zdefiniowanie zmiennych, które najlepiej wykonać na tym etapie tworzenia każdej aplikacji.

– testowanie programu – – w momencie gdy utworzyliśmy wszystkie elementy programu i przypisaliśmy wszystkim komponentów ich właściwości i obsługujące ich zdarzenia, możemy przetestować nasz program wybierając z paska szybkiego dostępu Run, lub naciskając klawisz funkcyjny F9. Wybranie tego polecenia spowoduje kompilację naszego programu oraz sprawdzenie poprawności jego składni, czyli wyszukanie błędów w kodzie. Błędy te mogą być najczęściej błędami składni poleceń lub błędami niezdeklarowanych zmiennych. W przypadku znalezienia błędu Delphi zatrzyma proces kompilacji i wskaże je w oknie Structure (rys. 9). Proces testowanie programu należy przepro-wadzać tak długo, aż zostaną poprawione wszystkie błędy, a nasza aplikacja będzie działać po-prawnie zgodnie z naszymi oczekiwaniami;

– tworzenie pliku wykonawczego – – w momencie kod programu nie zawiera błędów, a aplikacja działa poprawnie możemy wyko-nać plik wykonawczy (Executable File). Tworzenie takiego pliku odbywa się poprzez wybranie z paska menu Project a następnie Compile, lub naciśnięcie kombinacji klawiszy Ctrl+F9, co spowoduje utworzenie przez kompilator pliku wykonawczego z rozszerzeniem *.exe.

Zagadnienie: 3.B Komponenty, tworzenie komponentów, wykorzystanie komponentów

Komponenty, są to elementy Delphi, z których budowane są aplikacje dla Windows. Komponenty możemy podzielić na widoczne (np. przycisk klasy TButton, etykiety klasy Tlabel) lub niewidoczne

Page 16: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

16

(TOpenDialog, TTimer). Komponenty widoczne to komponenty interfejsu widoczne na formularzu podczas fazy projektowania jak również w fazie wykonywania programu. Komponenty niewidoczne to elementy systemowe, które są widoczne tylko w fazie projektowania aplikacji, umożliwiają one dostęp do zdarzeń systemowych bądź dialogowych systemu Windows. Przeniesienie komponentu z palety na formularz następuje po kliknięciu składnika palety lewym przy-ciskiem myszy, a następnie kliknięciu w odpowiednim miejscu na formularzu lub dwukrotnym klik-nięciu komponentu na palecie. Każdy umieszczony na formularzu komponent jest dopisywany do definicji klasy TForm1 pod nazwą standardową, która jest widoczna obok właściwości Name w okienku Inspektora obiektów. Nazwę tę można zmienić na inną i powinno się to zrobić zaraz po wstawieniu komponentu. Standardowe właściwości i zdarzenia komponentów zostały zamieszczone w tabeli 3. Delphi daje możliwość tworzenia nowych komponentów i instalacji istniejących już komponentów. Do stworzenia nowego komponentu jak również instalacji nowych komponentów służy polecenie New Component. Tworzeniem nowego komponentu rozpoczynamy poprzez wybranie polecenia New Component z menu Component. Na ekranie zobaczymy wówczas okienko (rys. 10A), z listy rozwijal-nej należy wybrać komponent, który będzie stanowił klasę bazową dla naszego nowego obiektu, dla którego następnie możemy wpisać dowolną nazwę (Class Name), określić w jakiej palecie zostanie zainstalowany (Palette Page) oraz wskazać gdzie zostaną zapisane nowe pliki związane z komponen-tem (Unit name) (rys. 10B).

Rys. 10. Zasady tworzenia nowego komponentu

Po naciśnięciu przycisku Next pojawi się nam końcowe okno które pozwoli zakończyć proces tworze-nia się komponentu bądź instalacji utworzonych już wcześniej komponentów.

Literatura

1. Todd Miller, David Powell. Delphi 3 Księga Eksperta Tom 1 i 2, Helion, 1998. 2. Marco Cantu, Delphi 6, Praktyka programowania Tom 1 i 2, Mikon, 2002. 3. Paul Kimmel, Delphi 6 dla profesjonalistów, RM, 2001. 4. P. Thurrott, G. Brent, R. Bagdazian, S. Tendon, Delphi 3, Arkana, 1998.

Page 17: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

17

Temat 4 (3 godziny):

Programowanie grafiki i multimediów

Zagadnienia tematyczne: A. Tworzenie aplikacji multimedialnych, wykorzystanie „płótna”, rysowanie wykresów, schematów, obsługa plików graficznych; B. Operacje na plikach.

Zagadnienie: 4.A Tworzenie aplikacji multimedialnych, wykorzystanie „płótna”, rysowanie wykresów, schema-tów, obsługa plików graficznych

Delphi daje dwa sposoby obsługi grafiki:

– składniki graficzne (graphics components): wykorzystywane w aplikacji w czasie projektowania, ale można je zmieniać przez kod programu, tak jak wszystkie inne składniki; – metody graficzne (graphics methods): czyli, wiersze kodu, które działają tylko w czasie działania programu. Stosując metody graficzne używa się graficznego systemu współrzędnych (graphics coor-dinate system), który jest parą liczb. Pierwsza liczba z tej pary określa odległość punktu od lewej kra-wędzi składnika, w którym punkt jest umieszczony, zaś druga liczba odległość między punktem, a górną krawędzią składnika. Delphi obsługuje dwa rodzaje typów grafiki:

– obrazki (pictures): obrazy, które przechowywane są w postaci plików na dysku. Wyświetlenie do-wolnego obrazka (o rozszerzeniu *.gif, *.png, *.jpg, *.jpeg, *.bmp, *.tif, *.tiff, *.wmf, *.ico, *.emf) możliwe jest poprzez zastosowanie komponentu Image i skorzystanie z właściwości Picture z okna Object Inspector. W przypadku gdy załadowany obraz nie mieści się w ramach kontrolki TImage, to zostaje obcięty na jej granicach lub dopasowany automatycznie do jej rozmiarów, może być również powiększany lub zmniejszany w stosunku do oryginalnych rozmiarów. – rysunki (drawings): grafika tworzona rzeczywiście przez stworzony program za pomocą metod obiektu Canvas (płótno). Wybrane metody obiektu TCanvas przedstawiono w tabeli 6.

Wybrane metody obiektu TCanvas Tabela 6

Metoda Znaczenie Kolor:=Canvas.pixels[x, y] Za pomocą funkcji Pixels można odczytać kolor piksela w miejscu o

współrzędnych (x, y). Canvas.pixels[x, y]:=clRed Ta sama funkcja wywołana w ten sposób powoduje wyświetlenie na

formularzu czerwonego punktu w współrzędnych (x, y). MoveTo[x, y] Przenosi kursor graficzny do punktu o współrzędnych (x, y). LineTo[x, y] Rysuje linię od bieżącej pozycji kursora graficznego do punktu o

współrzędnych (x, y). Rectangle[x1, y1, x2, y2] Procedura rysuje prostokąt.

Ellipse[x1, y1, x2, y2] Procedura rysuje elipsę – parametrami są współrzędne dwóch przeciw-ległych wierzchołków prostokąta, w który elipsa jest wpisana.

Polyline([Point(x1, y1), Procedura rysuje linię łamaną lub wielokąt.

Page 18: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

18

Point(x2, y2), Point(x3, y3)]) Polygon([Point(x1, y1),

Point(x2, y2), Point(x3, y3)]) Procedura umożliwia narysowanie wielokąta wypełnionego bieżącym kolorem i stylem pędzla.

Refresh Procedura odświeżą formularz – kasuje wszystkie obiekty rysowane za pomocą metod obiektu Canvas i nieumieszczanie w procedurze obsługi zdarzenia OnPaint.

Arc(x1, y1,x2, y2,x3, y3, x4, y4)

Procedura rysuje krzywą eliptyczną w prostokącie o współrzędnych (x1, y1; x2, y2) od punktu (x3, y3), do punktu (x4, y4).

Pie(x1, y1,x2, y2,x3, y3, x4, y4) Procedura rysuje wycinek koła. RoundRect(x1,y1,x2,y2,x3,y3) Procedura rysuje prostokąt z zaokrąglonymi narożnikami.

TextOut(x, y) Procedura wyświetla napis.

Zagadnienie: 4.B Operacje na plikach

Podstawowymi operacjami na plikach są: kopiowanie, usuwanie, przenoszenie, zmiana nazwy oraz tworzenie ich. Procedury i funkcje służące do operowania na plikach przedstawiono w tabeli 7.

Wybrane procedury i funkcje służące do operowania na plikach Tabela 7

Nazwa Opis Append Otwiera plik i ustawia się na samym końcu.

AssignFile Kojarzy zmienną plikową z danym plikiem. BlockRead Odczytuje dane z plików typowanych lub binarnych. BlockWrite Zapisuje dane do plików typowanych lub binarnych.

ChDir Ustawia aktualny katalog. CloseFile Zamyka uprzednio otwarty plik. CreateDir Tworzy katalog określony w parametrze. DeleteFile Usuwa określony plik.

DirectoryExists Sprawdza czy dany katalog istnieje. Eof Zwraca True jeżeli otwarty plik został odczytany do końca. Eoln Zwraca True jeżeli pozycja tekstu wskazuje na koniec linii. Erase Usuwa plik.

FileClose Zamyka uprzednio otwarty plik. FileCreate Na podstawie ścieżki tworzy nowy plik. FileOpen Otwiera plik na podstawie podanej ścieżki. FileExists Sprawdza czy dany plik istnieje. FileMode Określa sposób otwarcia pliku. FilePos Pobiera aktualną pozycję w pliku.

FileRead Odczytuje dane z otwartego pliku. FileSearch Wyszukuje pliku w określonym katalogu. FileSeek Umożliwia przemieszczanie się po otwartym pliku.

FileSetAttr Ustawia atrybuty pliku. FileSetDate Ustawia datę ostatniej modyfikacji pliku.

FileSetReadOnly Ustawia plik jedynie do odczytu. FileWrite Zapisuje dane do pliku. FindClose "Zamyka wyszukiwanie" uprzednio otwarte procedurą.

Page 19: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

19

FindFirst Wyszukuje pliki pasujące do danej maski. FindNext Jeśli plik został znaleziony, procedura nakazuje szukać dalej.

ForceDirectories Tworzy nowe katalogi. MkDir Tworzy nowy katalog. Read Odczytuje zawartość pliku tekstowego lub binarnego.

Readln Odczytuje kolejną linię z pliku tekstowego. RemoveDir Usuwa katalog.

Rename Zmienia nazwę pliku. RenameFile Zmienia nazwę pliku lub katalogu.

Reset Otwiera plik celem odczytania zawartości. ReWrite Otwiera plik do zapisu. RmDir Usuwa katalog. Seek Przesuwa na daną pozycję pliku amorficznego lub typowanego.

SeekEof Sprawdza czy kursor wskazuje na koniec pliku. SeekEoln Sprawdza czy kursor wskazuje na koniec linii.

SetCurrentDir Ustawia aktualny katalog. Truncate Usuwa zawartość pliku znajdującą się za "kursorem".

Write Zapisuje dane binarne lub tekstowe do pliku. Writeln Zapisuje nową linię do pliku tekstowego.

Przykłady składni najczęściej stosowanych poleceń operacji na plikach.

Kopiowanie pliku

Bardzo prosta funkcja kopiowania ma postać: CopyFile(IpExistingFileName:PansiChar; IpNewFileName:PansiChar; bFailIfExists:LongBool); IpExistingFileName - scieżka pliku, który chcemy skopiować IpNewFileName - ścieżka, gdzie chcemy skopiować plik BFailIfExists - jeżeli posiada wartość true to nie nadpisuje pliku jeżeli ten istnieje Przykład: Chcę skopiować plik 'C:\a.txt' do folderu 'D:\Pliki' CopyFile('C:\a.txt','D:\Pliki\a.txt',true);

Usuwanie pliku

Funkcja usuń ma postać: DeleteFile(const FileName:string); const FileName - ścieżka pliku, który chcemy skasować Przykład: Chcę skasować plik 'C:\a.txt' DeleteFile('C:\a.txt');

Przenoszenie pliku

Plik można przenieść funkcją: MoveFile(IpExistingFileName:PansiChar;IpNewFileName:PansiChar); IpExistingFileName - scieżka pliku, który chcemy przenieść,

Page 20: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

20

IpNewFileName - ścieżka, gdzie chcemy przenieść plik Przykład: Chcę przenieść plik 'C:\a.txt' do folderu 'D:\Pliki' MoveFile('C:\a.txt', 'D:\Pliki\a.txt');

Zmiana nazwy pliku

Zmianę nazwy pliku można wykonać funkcją CopyFile (skopiować plik do tej samej lokacji pod inną nazwą, a następnie usunąć starą wersję funkcją DeleteFile), albo przenieść go do tej samej lokalizacji za pomocą funkcji MoveFile, ale istnieje specjalna funkcja stworzona do zmiany nazwy pliku: RenameFile(const OldName:string; const NewName:string); const OldName - ścieżka ze starą nazwą pliku const NewName - ścieżka z nową nazwą pliku Przykład: Chcę zmienić nazwę pliku 'C:\a.txt' na 'b.txt' RenameFile('C:\a.txt','C:\b.txt');

Tworzenie pliku

Do tworzenia nowych plików służy funkcja: CreateFile(IpFileName: PansiChar; dwDesiredAccess: Cardinal; dwShareMode: Cardinal; IpSecuri-tyAttributes: PsecurityAttributes; dwCreationDisposites: Cardinal; dwFlagsAndAttributes: Cardinal; hTemplateFile: Cardinal) IpFileName:PansiChar - ścieżka nowego pliku i jego typ DwFlagsAndAttributes - atrybuty: 0 - archiwalny, 1- tylko do odczytu, archiwalny, 2 - ukryty, archi-walny, 3- tylko do odczytu, archiwalny, ukryty, 4 - archiwalny, blokada ukryty, 5 - tylko do odczytu, archiwalny, blokada ukryty Przykład: Chcę stworzyć plik 'C:\a.txt' z atrybutami archiwalny, blokada ukryty CreateFile('c:\a.txt',0,0,nil,1,4,0);

Literatura

1. Todd Miller, David Powell. Delphi 3 Księga Eksperta Tom 1 i 2, Helion, 1998. 2. Marco Cantu, Delphi 6, Praktyka programowania Tom 1 i 2, Mikon, 2002. 3. Paul Kimmel, Delphi 6 dla profesjonalistów, RM, 2001. 4. P. Thurrott, G. Brent, R. Bagdazian, S. Tendon, Delphi 3, Arkana, 1998.

Page 21: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

21

Temat 5 (2 godziny): Bazy danych w Delphi

Zagadnienia tematyczne: A. Tworzenie baz danych w Delphi; B. Tworzenie interfejsu bazy danych, kwerendy, raporty, eksport – import danych.

Zagadnienie: 5.A i 5.B Tworzenie baz danych w Delphi. Tworzenie interfejsu bazy danych, kwerendy, raporty, eksport – import danych.

Mechanizmem odpowiedzialnym za poprawne działanie baz danych w Delphi jest Borland Database Engine oraz takie narzędzia jak: Database Desktop, Data Access Components, Data Components oraz Database Form Wizard, przedstawione w tabeli 8.

Wybrane narzędzia i elementy bazy danych Tabela 8

Element Opis Database Grupa tabel z danymi, zawierająca powiązane ze sobą informacje.

Table Grupa rekordów danych, z których każdy zawiera ten sam typ danych. Record Pojedyncza pozycja danych w tabeli, składająca się z szeregu pól danych. Field Określony element danych zawartych w rekordzie. Query Polecenie, zwykle używające strukturowego języka kwerend przeznaczonego do od-

bierania określonej grupy rekordów z jednej lub wielu tabel albo do wykonania opera-cji na tabeli.

Index Szczególny typ tabeli, która zawiera wartości pół kluczy i wskaźników do pozycji rzeczywistego rekordu.

Session Komponent używany do połączenia między bazami danych. DataSource Komponent ten łączy zbiór danych (TTable lub TQuery) z wizualnymi komponentami.

DBEdit Komponent pozwalający na modyfikację pojedynczego pola. DBGrid Komponent ten pozwala na modyfikację oraz przeglądanie tabeli w formie siatki.

DBNavigator Komponent służący do poruszania się po tabeli, przechodzenia w stan edycji, dopisy-wania nowego rekordu itp.

DBImage Komponent ten służy do wyświetlania obiektu binarnego, przechowywanego w formie obrazu.

DBText Komponent umożliwiający wyświetlanie danych pochodzących z określonego pola bez możliwości ich modyfikacji.

Data Module Obiekt służący do przechowywania niewidocznych komponentów aplikacji oraz do ustawiania ich właściwości, tworzenia i przypisywania metod obsługi zdarzeń.

Typy pól tabeli w Delphi mogą być zapisywane w postaci ciąg znaków, liczb całkowitych, wartości logicznych, wyrażeń określających datę itp. Typy danych w Delphi zamieszczono w tabeli 9.

Wybrane typy danych pól tabeli Tabela 9

Typy numeryczne Integer Liczba całkowita 32-bitowa.

Short Integer Liczba całkowita 16-bitowa.

Page 22: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

22

Byte Liczba całkowita z zakresu od 0 do 255. Float Liczba rzeczywista.

Money Liczba ze stałą liczbą miejsc dziesiętnych Autoincrement Unikatowa liczba automatycznie zwiększana o 1

Boolean Wartość logiczna: True lub False; Yes lub No; 1 lub 0 Typy znakowe

Character Dowolne znaki ASCII Alpha Dowolne znaki ASCII Memo Dowolne znaki ASCII Text Dowolne znaki ASCII

Typy czasu i daty Date Format: dzień, miesiąc, rok. Time Format: godzina, minuta, sekunda.

Date & Time Format: data i czas. Timestamp Format: data i czas.

Inne typy pól Binary Format: dane binarne. Image Format: grafika. Bitmap Format: grafika w formacie BMP.

OLE Format: grafika, muzyka, dokumenty itp. Database Desktop jest narzędziem dołączonym do Delphi, które pozwala na bardzo wygodne zarzą-dzanie oraz tworzenie struktur tabel relacyjnych baz danych. Database Desktop umożliwia tworzenie tabel w oparciu o sterowniki dostarczone wraz z pakietem Delphi. Pozwala również na budowę zapy-tań SQL, które można później zastosować w aplikacji. Narzędzie to umożliwia tworzenie tabel stan-dardowych typów baz danych. Wybrane typy tabel baz danych zostały przedstawione w tabeli 10.

Wybrane typy tabel baz danych Tabela 10

Źródło danych Opis Paradox Tabele utworzone i używane przez system baz danych Paradox Borlanda. Tabele te

są również domyślnymi tabelami jakie tworzy Database Desktop. dBASE Tabele utworzone przez system bazy danych dBASE Borlanda. ASCII Pliki tekstowe zawierające informacje ułożone w postaci kolumn.

Local InterBase Server

Bazy danych tworzone i używane przez InterBase Server Borlanda.

Access Bazdy danych tworzone w MS Access Microsoft.

Właściwości tabel typu Paradox.

Tabele bazy Paradox są bardziej uniwersalne od innych typów baz danych i posiadają wiele interesu-jących właściwości, niedostępnych w innych typach tabel. Tworząc tabele typu Paradox w wersji 7, możemy określić m.in.:

– kontrolę poprawności wprowadzanych danych (Validity Checks); – maskę wprowadzanych danych; – indeksy dodatkowe do tabel typu Paradox (Secondary Indexes);

Page 23: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

23

– integralność referencyjną; – zabezpieczanie tabeli hasłem (Password Security); – język tabeli (Table Language).

Wyszukiwanie i filtrowanie danych

W celu znalezienia rekordów w zbiorze danych w Delphi stosuje się trzy sposoby wyszukiwania:

– metoda Locate, która służy do przeszukiwania zbioru danych w celu znalezienia rekordu, wówczas znaleziony rekord staje się rekordem bieżącym;

– metoda Lookup zwraca wartość wskazanych pól rekordu, które pasują do określonych kryte-riów wyszukiwania;

– metody FindKey oraz FindNearest: pierwsza polega na przeszukiwanie zbioru danych w celu znalezienia rekordu zawierającego w polach wskazane wartości; metoda FindNearest nato-miast w przypadku nieznalezienia szukanego wzorca w tabeli, przemieszcza kursor do rekor-du, którego wartości są najbardziej zbliżone do wartości przekazanych w parametrze wywoła-nia metody.

Delphi umożliwia również wprowadzanie filtrowania danych. W tym celu komponent TTable wypo-sażony został w dwie właściwości i jedno zdarzenie. Właściwość pierwsza to Filter, która określa warunek, według którego filtrowany będzie zbiór danych. Druga właściwość: Filtered aktywuje Filter. Do zdefiniowania warunku filtru dla zbioru danych można zastosować zdarzenie OnFilterRecord, które wywoływane jest za każdym razem, kiedy inny rekord staje się bieżącym rekordem i gdy jedno-cześnie aktywne jest filtrowanie. Innym sposobem ograniczania zbioru dostępnych rekordów jest zastosowanie zakresów. Zakres jest zbiorem sąsiadujących ze sobą indeksowanych rekordów, ograniczonym pewnymi wartościami zakre-su. Język SQL (Structured Query Language- język zapytań strukturalnych) został zaprojektowany przez firmę IBM w celu sprawnej realizacji kwerend w relacyjnych bazach danych. Kwerenda jest zlece-niem dla programu bazy danych, mającym na celu odszukanie rekordów spełniających określone kry-teria. Do wykonania kwerendy w Delphi służy komponent TQuery. Jej podstawowe właściwości to: SQL – zawiera tekst komendy języka SQL, która zostanie wykonana; DatabaseName – określa nazwę bazy danych, z którą został skojarzony zbiór danych; Params – zawiera parametry przekazywane do komendy SQL; Active – określa czy zbiór danych jest otwarty, czy nie. Bazy danych Delphi prócz DataBase Desktop bazują na dwóch głównych grupach składników:

– Data Access (dostęp do danych) – zapewniających połączenie między tworzonym programem a bazami danych (rys. 10 a);

– Data Controls (dane) – służące do przedstawienia danych znajdujących się w bazie danych (rys. 10 b).

Page 24: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

24

a) b)

Rys. 10. Składniki: a) Data Access, b) Data Controls

Przekazywanie danych z bazy danych na drukarkę odbywa się poprzez generowanie raportów. Uni-wersalnym i w pełni kompatybilnym narzędziem stosowanym w Delphi jest QuickReport komponenty znajdujące się w zakładce QReport (rys. 11).

Rys. 11. Wybrane składniki karty QReport

Literatura

1. Todd Miller, David Powell. Delphi 3 Księga Eksperta Tom 1 i 2, Helion, 1998. 2. Marco Cantu, Delphi 6, Praktyka programowania Tom 1 i 2, Mikon, 2002. 3. Paul Kimmel, Delphi 6 dla profesjonalistów, RM, 2001. 4. Arkadiusz Jakubowski, Delphi 4 – Tworzenie systemów baz danych, Helion, 1999.

Page 25: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

25

Temat 6 (1 godzina):

Delphi i AutoCAD.

Zagadnienia tematyczne: A. Automatyzacja czynności związanych z wykonywaniem rysunków w programie Auto-CAD; B. Obiekty klient, serwer C. Interfejs OLE; D. Nawiązanie połączenia przez interfejs OLE;

Zagadnienie: 6.A Automatyzacja czynności związanych z wykonywaniem rysunków w programie AutoCAD

Przez pojęcie automatyzacji definiować można możliwość programowego sterowania obiektami inne-go programu oraz możliwość dostępu do bibliotek DLL i procedur znajdujących się w innych pro-gramach. Dzięki automatyzacji zadań graficznych w AutoCadzie za pomocą Delphi, można sterować i wywoływać polecenia – procedury, za pomocą innych aplikacji stworzonych na cele automatyzacji zadań, bez potrzeby uruchamiania samego AutoCAD-a. Poprawnie napisana aplikacja, (nie tylko w Delphi), potrafi „porozumiewać się” z Autocad-em, wysyłać do niego zmienne, zwracać wyniki, bez potrzeby uruchomiania i otwierania określonego rysunku.

Zagadnienie: 6.B Obiekty klient, serwer

Aplikację sterowaną nazywamy serwerem, a aplikację sterującą nazywamy klientem. Serwer – aplikacja którą sterujemy w procesie automatyzacji, gdyż to ona udostępnia obiekty automa-tyzacji OLE, na których przeprowadzane będą różnego rodzaju działania graficzne i obliczeniowe. (AutoCAD). Klient – aplikacja która wykorzystuje obiekty aplikacji sterowanej, w tym przypadku obiekty serwera. Aplikacja typu klient może być stworzona w dowolnym programie (Word, Excel, Access itp.), lub języku programowania (Delphi, VB, C++) udostępniającym obiekty automatyzacji OLE. Program taki można napisać i skompilować bez konieczności posiadania serwera, czyli programu AutoCAD. Pro-gram taki, jeśli zostanie uruchomiony na komputerze, na którym jest zainstalowany AutoCAD, wyko-na zaprogramowane działanie.

Zagadnienie: 6.C Interfejs OLE

Dostęp do obiektów OLE umożliwiają interfejsy nazywane interfejsami automatyzacji OLE, a w przypadku AutoCAD-a interfejs ten nazywany Interfejsem automatyzacji OLE AutoCAD-a - umoż-liwia on dostęp do następujących obiektów:

– Obiekty rysunkowe; – Elementy informacyjne; – Dokumenty i dokumentacja; – Konfiguracje programu i konfiguracje użytkowników; – I inne.

Page 26: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

26

W praktyce oznacz to że w/w obiektami, procedurami możemy sterować lub wywoływać je nie ko-niecznie z poziomu AutoCADa-a, ale również przy zastosowaniu właśnie uniwersalnych środowisk programistycznych. (Delphi, Borland Builder itp.). Dodatkowo można tworzyć nakładki dowolnej postaci z dowolnymi funkcjami, które z poziomu samego AutoCAD-a, mogą wydawać się bardziej skomplikowane w obsłudze. Przykładem może tu być aplikacja pozwalająca np. na rysowanie dowolnych okręgów w przestrzeni rysunku AutoCAD-a, która pozwala na rysowanie okręgów poprzez nowo utworzone okno dialogowe, bez potrzeby definiowania każdego okręgu w linii poleceń AutoCAD-a (rys. 12).

Rys. 12. Widok nakładki „Rozmieść otwory” automatyzującej rysowanie otworów w przestrzeni rysunku programu Auto-CAD.

Automatyzacja zadań za pomocą tych środowisk pozwala na wykorzystanie bogatych bibliotek i na-rzędzi programistycznych, które w nich istnieją, a sam AutoCAD ich nie posiada. Chodzi tu przede wszystkim o współprace z relacyjnymi bazami danych, tworzenie bibliotek komponentów i procedur, a także dodawanie do AutoCAD-a nowych menu jak i również tworzenie własnych nakładek. Wykorzystanie bibliotek i komponentów Delphi pozwala również na stworzenia własnych unikalnych bibliotek elementów, menu podręcznych itp. Na potrzeby danego projektu lub zakładu. Struktura obiektów interfejsu automatyzacji OLE jest dość rozbudowana, obiekty poszczególne są pogrupowane w zbiorach, a dostęp do nich uzyskuje się przez główny obiekt interfejsu automatyzacji OLE programu AutoCAD. Główny obiekt interfejsu to: AutoCAD.Application wraz z przynależnymi do niego obiektami. Struk-turę tego obiektu przedstawia rysunek 13.

Page 27: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

27

Rys. 13. Struktura głównego obiektu interfejsu automatyzacji programu AutoCAD.

Obiekt Document – najczęściej wykorzystywany obiekt przy pracach nad rysunkiem, analogicznie do programu AutoCAD oznacza to aktywne okno z rysunkiem, wraz z przynależnymi do niego obiektami generującymi składniki rysunku oraz ustawienia aktualnego rysunku, właściwościami, warstwami itd. Struktura obiektu Document została przedstawiona na rysunku poniżej. Obiekt Document zawiera:

– Zbiór Blocks – stanowiący zbiór wszystkich bloków występujących w obiekcie Document wraz z innymi blokami specjalnymi (ModelSpace, PaperSpace). Wszystkie składniki dodawa-ne do tego zbioru za pomocą metody Add, a dostęp do wszystkich składników zbioru reali-zowany jest za pomocą metod Item;

– Obiekt Block – jest to składnik zbioru Blocks i może występować w postaci Blok, warstwa lub odnośnik;

– Obiekt Modelspace – przestrzeń modelu, dla każdego rysunku istnieje tylko jedna przestrzeń modelu. Jest to zbiór wszystkich obiektów w przestrzeni modelu. Nowe obiekty dodaje się do tego zbioru za pomocą metod Addtypmetody;

– Obiekt Paperspace – aktywna przestrzeń papieru. Jeśli akurat aktywna jest przestrzeń modelu, to blok ten odpowiada ostatniemu widokowi przestrzeni papieru;

– Elementy rysunkowe takie jak: linia, polilinia, punkt, okrąg, itd.; – Pozostałe składniki takie jak wymiarowanie, grupowanie, warstwy, tekst itd.

Application (AutoCAD.Application)

Documents

MenuBar

MenuGroups

PopupMenu

Preferences

Document

MenuGroup

Page 28: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

28

Rys. 14. Struktura obiektu Document.

Obiekt PopupMenu – grupa obiektów związanych z obsługą menu i ikon programu AutoCAD. Do grupy tej możemy się odwoływać wywoływać programowo funkcje poszczególnych menu, jak rów-nież tworzyć własny ikony paski menu, czy menu podręczne. Elementy rysunkowe przynależne do obiektu Document to:

– 3DFace; – 3DPoly; – 3DSolid; – Arc; – Attribute; – AttributeRef; – BlockRef; – Circle; – Dim3PointAngular; – DimAlinged; – DimAngular; – DimDiametric; – DimOrdinate; – DimRadial; – DimRotated; – Ellipse; – ExternalReference; – Hatch; – Leader; – Line; – Mline; – Mtext; – Point; – PolifaceMesh; – Raster; – Ray; – Region;

Document

Blocks

Block

ModelSpace Paperspace

Database

Pozostałe składniki obiektu

Document

Elementy rysunkowe

obiektu Document

Page 29: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

29

– Shape; – Solid; – Spline; – Text; – Trace; – i inne.

Zagadnienie: 6.D Nawiązanie połączenia przez interfejs OLE

Korzystanie z metod i obiektów serwera, czyli programu AutoCAD możliwe jest tylko, gdy nawiązane jest połączenie z serwerem OLE programu AutoCAD. Pomimo tego, sam program (nakładka – klient), może być napisany i skompilowany bez konieczności posiadania serwera – w tym przypadku Auto-CAD-a. Posiadanie serwera wymagane jest tylko przy uruchamianiu danego programu klienta. Połączenie można uzyskać z poziomu systemu Delphi na dwa sposoby:

1. Tworzenie nowego obiektu, który udostępnia obiekty programu AutoCAD. Można to zreali-zować przy pomocy funkcji CreateOleObject.

2. Uzyskanie dostępu do aktualnie otwartego rysunku w programie AutoCAD – funkcja GetO-leObject.

Kolejne etapy nawiązania połączenia z AutoCAD:

1. Deklaracja użycia modułu obsługującego obiekty OLE w części modułu zawierającej listę modułów;

… uses ComObj; …

2. Deklaracja zmiennych opisujących obiekty programu AutoCAD: AutoCAD.Application – główny obiekt interfejsu OLE;

Autocad.Application.Document – dokument otwarty przez interfejs OLE; Autocad.Application.Document.ModelSpace – przestrzeń modelu aktualnie otwartego

modelu; … var AcadApp, AcadDoc, AcadDwg : OleVariant; {deklaracja zmiennych w programie} …

3. Sprawdzenie czy AutoCAD został uruchomiony i w zależności od wyniku wybrać jedną z wy-żej wymienionych metod służącą do nawiązania połączenia OLE. Nawiązanie połączenia z programem AutoCAD w przypadku, gdy program został już otwarty, może przyjąć następującą postać:

… AcadApp:=GetActiveOLEObject(‘AutoCAD.Application.15’);

… Nawiązanie połączenia z programem AutoCAD w przypadku gdy program nie został jeszcze otwarty, może przyjąć następującą postać:

Page 30: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

30

AcadApp:=CreateOLEObject(‘AutoCAD.Application.15’); AcadApp.Visible := true; …

4. Sprawdzenie czy w AutoCadzie otworzono jakiś dokument i przypisanie go zmiennej – zmiennej zadeklarowanej w punkcie 2.

… if AcadApp.Document.Count > 0 then begin AcadDwg:=AcadDoc.Modelspace; … end else begin … end; …

5. Translacja współrzędnych. 6. Generowanie rysunków

Literatura

1. Wojciech Czyżewski, Edward Lisowski. AutoCAD. Automatyzacja zadań grafiki za pomocą Delphi, Helion, 2002.

Page 31: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

31

Temat 7 i 8 (2 godziny):

Automatyzacja zadań grafiki AutoCAD za pomocą Delphi. Tworzenie aplikacji i działania na rysunkach.

Zagadnienia tematyczne: A. Translacja współrzędnych; B. Automatyzacja generowania podstawowych elementów rysunkowych; C. Metody generowania obiektów 3D

Zagadnienie: 7.A Translacja współrzędnych

W trakcie kompilowania programu służącego do automatyzacji zadań AutoCAD-a przy pomocy Del-phi, powstaje problem z prawidłowym określeniem współrzędnych. Kompilator Delphi nie dopuszcza stosowania trójelementowej tablicy w automatyzacji OLE. Auto-CAD natomiast, do określenia punktu w przestrzeni modelu korzysta z trzech współrzędnych (x,y,z). Przekształcenie zmiennych z interfejsu Delphi skompilowanie ich i przesłanie do AutoCAD-a, możli-we jest przy pomocy funkcji VarArrayCreate, która przekształca zmienną typu OLEVariant w tablicę liczb Double. Przykład translacji współrzędnych, na przykładzie funkcji, do której program się odwołuje, przedsta-wia poniższa funkcja:

function trans(x,y:Double):OleVariant; {trans – dwolona nazwa funkcji} begin Result:=varArrayCreate([0,2], varDouble); {zwracana wartość funkci} Result[0]:=x; Result[1]:=y; Result[2]:=z; end;

Przekształcenie zmiennych w wyżej podany sposób sprawdza się tylko w przypadku generowania elementów o określonej liczbie punktów. Przy generowaniu elementów o nieokreślonej liczbie punk-tów tablica taka musi być zgodna z typem OLEVariant. Kolejny przykład przedstawia funkcję, która zwraca wariantową tablicę punktów w przestrzeni, a ilość liczb musi być wielokrotnością trzech.

function trans3d(wspXYZ:array of double): OleVariant; {trans – dwolona nazwa funkcji} var i: integer; begin Result:=VarArrayCreate([0.High(WspXYZ)].varDouble; {zwracana wartość funkci} for i:=0 to high(wspXYZ) do {sprawdzenie wszystkich pkt} Result[i]:=WspXYZ[i] end;

Page 32: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

32

Zagadnienie: 7.B Automatyzacja generowania podstawowych elementów rysunkowych

Automatyczne generowanie prostych rysunków, symboli graficznych itp. przy tworzeniu dokumenta-cji rysunkowej, jest bardzo wygodne i znacznie przyspiesza pracę nad rysunkiem, a im proces rysun-kowy jest bardziej rozbudowany, automatyzacja tego procesu potrafi znacznie przyspieszyć tworzenie dokumentacji rysunkowej. Proces automatyzacji OLE AutoCADA, umożliwia generowanie rysunków dla obiektów:

– ModelSpace; – PaperSpace; – Block;

Przy czym metody generowania składników rysunku dla wyżej wymienionych obiektów są takie sa-me. Poniżej przedstawiony przykłady kilku podstawowych operacji pozwalających na dodawanie obiek-tów rysunkowych do już otwartego rysunku.

Linia

Metoda pozwalająca na dodawanie dowolnej linii do obiektu to – Addline. Postać funkcji jest następu-jąca:

Line:=Object.AddLine(startpoint. EndPoint); Line – zmienna typu OLEVariant określająca rysowaną linię (np. lewy, prawy), definiowana w sekcji var, np. … var lewy, prawy: OleVariant; {oznaczenie rysowanych lini} … Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … Start point – punkt początkowy linii; EndPoint – punkt końcowy linii; Gotowa funkcja może przyjąć postać: Lewy:=AcadDwg.AddLine((x1,y1,z1), (x2,y2,z2)); Przy czym, współrzędne x1,y1,z1, x2,y2,z2, należałoby poddać translacji dla interfejsu OLE i stosując funkcję przedstawioną w zagadnieniu 7.A funkcja przyjęłaby postać: Lewy:=AcadDwg.AddLine(trans(x1,y1),trans(x2,y2));

Page 33: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

33

Okrąg

Metoda pozwalająca na dodawanie okręgu do obiektu to – AddCircle. Postać funkcji jest następująca: Circle:=Object.AddCircle(Center, Radius) Circle – zmienna typu OLEVariant określająca rysowany okrąg (np. kolo1: OleVariant) Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … Center – środek okręgu; Radius - promień okręgu; Gotowa funkcja może przyjąć postać: Kolo1:=AcadDwg.AddCircle((x1,y1,z1), r1)); Przy czym, współrzędne x1,y1,z1 należałoby poddać translacji dla interfejsu OLE i stosując funkcję przedstawioną w zagadnieniu 7.A funkcja przyjęłaby postać: Kolo1:=AcadDwg.AddCircle(trans(x1,y1), r1));

Łuk

Metoda pozwalająca na dodawanie łuku do obiektu to – AddArc. Postać funkcji jest następująca: Arc:=Object.AddArc(Center, Radius, startangle, endAngle); Arc – zmienna typu OLEVariant określająca rysowany łuk(np. Luk1, Luk2: OleVariant) Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … Center – współrzędne środka okręgu; Radius - promień łuku; StartAngle – kąt początkowy łuku; EndAngle – kąt końcowy łuku ; Gotowa funkcja może przyjąć postać: Luk1:=AcadDwg.AddArc((x1,y1,z1), r1,0,Pi/2)); Przy czym, współrzędne x1,y1,z1, należało by poddać translacji dla interfejsu OLE i stosując funkcję przedstawioną w zagadnieniu 7.A. funkcja przyjęła by postać: Luk1:=AcadDwg.AddArc(trans(x1,y1), r1,0,Pi/2));

Page 34: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

34

Text

Metoda pozwalająca na dodanie tekstu do obiektu to - AddText. Postać funkcji jest następująca: Text:=Object.AddText(TextString, InsertionPoint, Height); Text – zmienna typu OLEVariant określająca wprowadzany tekst (np. napis, text) Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; …

TextString – treść napisu jaka ma być wprowadzona do obiektu - zmienna typu string; InsertionPoint – parametr określający, wpsółrzedne tekstu; Height – parametr określający wysokość tekstu – zmienna typu Integer; Gotowa funkcja może przyjąć postać: napis:=AcadDwg.AddText(To jest mój napis, (x1,y1,z1), 3.5) Przy czym, współrzędne x1,y1,z1, należało by poddać translacji dla interfejsu OLE i stosując funkcję przedstawioną w zagadnieniu 7.A.

Kreskowanie

Metoda pozwalająca na dodatnie kreskowania do obiektu to - AddHatch. Postać funkcji jest następu-jąca: Hatch:=Object.AddHatch(PatternType, PatternName, Associativity); Hatch – zmienna typu OLEVariant określająca kreskowany obiekt; Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … PatternType – parametr określający typ kreskowania– zmienna typu Integer; PatternName – parametr określający nazwę wzoru kreskowania zgodnie z typami widocznymi w pro-

gramie AutoCAD, np. ANSI31 - zmienna typu string; Associativity – parametr określający czy kreskowanie ma być skojarzone z konturem lub nie; Po zdefiniowaniu obiektu kreskowania należy podać zewnętrzne i wewnętrzne granice kreskowania na pomocą metod:

AppendOuterLoop(Loop); AppendInnerLoop(Loop).

Parametr Loop jest taplicą obiektów rysunkowych tworzących zamknięty kontur.

Page 35: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

35

Zagadnienie: 7.C Metody generowania obiektów 3D

Prostopdałościan

Metoda pozwalająca na dodanie do rysunku obiektu typu prostopadłościan to AddBox. Postać funkcji jest następująca: 3DSolid:=object.AddBox(Origin, Length, Width, Height); 3DSolid – zmienna typu OLEVariant określająca rysowany prostopadłościan, np.Prostopad; Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy

zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … Length, Width, Height – parametry opisujące wymiary prostopadłościanu; Origin – punkt, w którym ma być umieszczony środek prostopadłościanu, przy czym należy pamiętać,

iż prostopadłościan umieszczany jest w taki sposób, że krawędzie są równoległe do układu współrzędnych.

Gotowa funkcja może przyjąć postać: Prostopad:=AcadDwg.addBox(trans3d(x1,y1,z1), a,b,h); Wykorzystana tu funkcja trans3d, służy do translacji zmiennych dla celów kompilacji i została do-kładnie omówiona w zagadnieniu 7.A.

Sfera

Metoda pozwalająca na dodanie do rysunku obiektu 3D typu sfera to AddSphere. Postać funkcji jest następująca: 3DSolid:=object.Addsphere(Center, Radius); 3DSolid – zmienna typu OLEVariant określająca rysowany prostopadłościan, np.sfera; Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy

zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … Center – parametr określający współrzędne środka sfery. Radius – parametr określający promień sfery Gotowa funkcja może przyjąć postać: Sfera:=AcadDwg.addSphere(trans3d(x1,y1,z1+r), r); Wykorzystana tu funkcja trans3d, służy do translacji zmiennych dla celów kompilacji i została do-kładnie omówiona w zagadnieniu 7.A.

Page 36: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

36

Stożek

Metoda pozwalająca na dodanie do rysunku obiektu 3D typu stożek to AddCone. Postać funkcji jest następująca: 3DSolid:=object.AddCone(Center, BaseRadius, Height); 3DSolid – zmienna typu OLEVariant określająca rysowany prostopadłościan, np.sfera; Object – odwołanie się do obiektu (rysunku) aktualnie otwartego, do przestrzeni modelu przy pomocy

zmiennej OleVariant, definiowanej w sekcji var np. … var AcadDwg: OleVariant; … Center – parametr określający współrzędne środka prostopadłościanu opisanego na stożku; BaseRadius – parametr określający promień podstawy stożka; Height – parametr określający wysokość stożka. Gotowa funkcja może przyjąć postać: stozek:=AcadDwg.addCone(trans3d(x1,y1,z1+h/2), h); Wykorzystana tu funkcja trans3d, służy do translacji zmiennych dla celów kompilacji i została do-kładnie omówiona w zagadnieniu 7.A.

Literatura

1. Wojciech Czyżewski, Edward Lisowski. AutoCAD. Automatyzacja zadań grafiki za pomocą Delphi, Helion, 2002.

Temat 9 (2 godziny): Automatyzacja AutoCAD-a – przykłady aplikacji dla mechaników.

Zagadnienia tematyczne: A. Aplikacje automatyzujące prace – połączenia spawane B. Aplikacje automatyzujące prace – połączenia wpustowe C. Aplikacje automatyzujące prace – połączenia śrubowe

Zagadnienie: 9.A Aplikacje automatyzujące pracę – połączenia spawane

Projektowanie konstrukcji spawanych wymaga określenia wielu parametrów dla poszczególnych złącz oraz narysowanie odpowiednich symboli na rysunku, im bardziej złożony rysunek i różnorodność spoin tym dłuższy czas potrzebny jest na wykonanie takiego rysunku. Zautomatyzowanie tego procesu możne znacznie przyspieszyć i ułatwić tworzenie tego typu dokumentacji rysunkowej (rys. 15).

Page 37: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

37

Rys. 15. Widok programu automatyzującego rysowanie połączeń spawanych w programie AutoCAD

Aplikacja taka pozwala na wybieranie przedstawionych w formie przycisków symboli zdefiniowanych w przedmiotowej normie i budowanie na ich podstawie oznaczenia spoiny. Dodatkowo w oknie dialo-gowym użytkownik definiuje właściwości i parametry spoiny (rys. 16).

Rys.16. Widok programu automatyzującego rysowań spawanych w programie AutoCAD – wybór rodzaju spoiny.

Jednocześnie w trakcie wprowadzania opisu spoiny użytkownik widzi aktualny symbol opisywanej spoiny, który może zostać wstawiony do aktualnie tworzonej dokumentacji rysunkowej w programie AutoCAD (rys. 17).

Rys. 17. Widok programu automatyzującego rysowanie połączenia spawanego w programie AutoCAD – okno przedstawiające aktualny symbol spoiny

wstawiany do obszaru rysunku.

Page 38: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

38

Po tak wygenerowanym symbolu spoiny w sposób automatyczny, program generuje go w programie AutoCAD i wstawia do przestrzeni rysunkowej we wskazanym miejscu (rys. 18).

Rys. 18. Widok programu automatyzującego rysowanie połączenia spawanego w programie AutoCAD - widoczna nakładka i efekt działania nakładki.

Zagadnienie: 9.B Aplikacje automatyzujące pracę – połączenia wpustowe

Podobnie sytuacja wygląda przy rysowaniu wpustów, które są znormalizowane, a wymiary poprzecz-ne wpustów dobiera się w zależności od średnicy czopa. Wymiary poprzeczne wpustów dobiera się w zależności od średnicy czopa, a długość wpustu podlega obliczeniu z warunku na docisk powierzchni bocznej wpustu współpracującej z rowkiem czopa i piasty. Program, który przedstawiono poniżej został opracowany w taki sposób, aby zautomatyzować proces rysowania w programie AutoCAD połączeń wpustowych, z uwzględnieniem obliczeń wytrzymało-ściowych (rys. 19).

Rys. 19. Widok programu automatyzującego rysowanie połączenia wpustowego w programie AutoCAD.

Page 39: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

39

Rys. 20. Widok programu automatyzującego rysowanie połączenia wpustowego w programie AutoCAD - widoczne działa-nie nakładki i efekt rysowania połączenia w programie AutoCAD.

Po wprowadzeniu wszystkich danych zostanie wygenerowany rysunek w postaci widoku, na którym automatycznie zostanie narysowany kontur połączenia (wałek, wpust, gniazdo). Po wygenerowaniu rysunku połączenia program wstawia widok tego połączenia w programie AutoCAD, we wskazanym miejscu na rysunku. Przy wprowadzaniu momentu, mocy obrotów, są uwzględniane obliczenia wy-trzymałościowe, a dane do rysunku są pobierane automatycznie z tabel zawierających znormalizowane wymiary.

Zagadnienie: 9.C Aplikacje automatyzujące pracę – połączenia śrubowe

Połączenia gwintowe są bardzo często stosowane przy projektowaniu różnego rodzaju maszyn i urzą-dzeń, a ich różnorodność może powodować utrudnienia w trakcie sporządzania dokumentacji rysun-kowej. Dzięki zastosowaniu automatyzacji procesu rysowania połączenia gwintowanego, można znacznie przyspieszyć sam proces rysowania połączenia w programie AutoCAD, jak również połączeń wg normy i obliczenia wytrzymałościowe. Tworząc aplikację, która ma wspomagać rysowanie połą-czeń gwintowych, można dodatkowo wzbogacić ją o wybór elementów konkretnego producenta lub dostawcy, tworząc program, który nie tylko rysuje nam połączenia gwintowe, ale również współpracu-je z dowolną bazą danych. Selekcja jest wykonywana automatycznie przez stworzoną przez nas apli-kację, tak samo jak i rysunek połączenia śrubowego w programie AutoCAD. Prezentowany poniżej program pozwala na podstawie wybranych elementów składowych połączenia śrubowego, wygenerowanie odpowiedniego symbolu i wstawienie go do programu AutoCAD wraz ze wszystkimi atrybutami opisującymi to połączenie (rys. 21-24).

Page 40: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

40

Rys. 21. Widok programu automatyzującego rysowanie połączenia śrubowego w programie AutoCAD – wybór śruby.

Rys. 22. Widok programu automatyzującego rysowanie połączenia śrubowego w programie AutoCAD – wybór podkładki.

Rys. 23. Widok programu automatyzującego rysowanie połączenia śrubowego w programie AutoCAD – wybór nakrętki.

Page 41: Materiały dydaktyczne Języki programowania Semestr III Wykłady

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Projekt „Rozwój i promocja kierunków technicznych w Akademii Morskiej w Szczecinie”

Akademia Morska w Szczecinie, ul. Wały Chrobrego 1-2, 70-500 Szczecin

41

Rys. 24. Widok programu automatyzującego rysowanie połączenia śrubowego w programie AutoCAD – wybór rodzaju gwintu.

Literatura

1. Wojciech Czyżewski, Edward Lisowski. AutoCAD. Automatyzacja zadań grafiki za pomocą Delphi, Helion, 2002.