wyklad1 - Paweł Mazurek
Transkrypt
wyklad1 - Paweł Mazurek
Informatyka Studia niestacjonarne EZ 2. dr inż. Paweł A. Mazurek Informacje organizacyjne Forma zajęć wykład – 2 x 2h na zjazd laboratorium – 2h na zjazd Informacje strony: http://mazurek.pollub.pl email: [email protected] konsultacje : sobota 13-14 E414 2 ZMIANY PLANU ZAJĘĆ 3 Wstęp do programowania Lublin, 2012 Czym jest programowanie? Programowanie to formułowanie ciągu operacji rozwiązującego dany problem w postaci akceptowalnej przez komputer. inaczej: Proces tworzenia programu (systemu) komputerowego, na który składają się: • opracowanie założeń • kodowanie • testowanie Dobre programowanie łączy elementy inżynierii, „rzemiosła” i „sztuki”. Programowanie - projektowanie, pisanie, modyfikowanie i testowanie programów. (IBM Dictionary of Computing) 5 6 Podstawowe pojęcia • Algorytm • Język programowania • Program • Kod źródłowy i wynikowy • Kompilacja • Programowanie strukturalne i obiektowe • Środowisko programistyczne 7 Algorytm Algorytm to dokładny, jednoznacznie sformułowany sposób postępowania, umożliwiający rozwiązanie określonego zadania w skończonej liczbie kroków. (zbiór poleceń ze wskazaniem porządku, w jakim mają być realizowane). Słowo algorytm pochodzi od przydomka matematyka arabskiego (IX w.) AlChwarizmi (Algorismus, Algorithmus). Zapis algorytmu: • w postaci opisu słownego • w postaci pseudokodu • w postaci schematu blokowego. Algorytm - uporządkowany zbiór reguł rozwiązania zadania w skończonej liczbie kroków. (IBM Dictionary of Computing) Program - algorytm zapisany w języku programowania. 8 Algorytm Programista musi znać sposób rozwiązania problemu, który stanowi przedmiot programu. Ten sposób określa algorytm. Algorytm określa dane oraz skończony ciąg operacji, jakie należy na tych danych wykonać, aby rozwiązać dowolny problem z określonej klasy. Inaczej mówiąc, algorytm określa dane oraz plan akcji, jakie należy wykonać, aby osiągnąć założony cel. 9 Algorytm ma być.. 1. Poprawny — dla każdego poprawnego zestawu informacji wejściowych prowadzić do poprawnych rezultatów. 2. Jednoznaczny — każdorazowo, dla każdego poprawnego zestawu informacji wejściowych, prowadzić do tych samych rezultatów. 3. Szczegółowy — aby ktoś albo coś wykonujący algorytm rozumiał dokładnie opisane operacje i potrafił je wykonać. 4. Uniwersalny — pozwalał na rozwiązanie dowolnego problem z określonej klasy, a nie dotyczył pewnych przypadków. 10 Metody zapisu algorytmów 1. Język naturalny (potoczny) określający ciąg kroków algorytmu. 2. Notacje graficzne, blokowe. najpopularniejsze są schematy 3. Pseudokod — połączenie języka naturalnego i notacji matematycznej z elementami języków programowania. 4. Zapis w postaci kodu programu w pewnym języku programowania. 11 Schemat (diagram) blokowy SCHEMAT BLOKOWY (ang. flowchart, block diagram, block scheme, flow diagram) Sieć działań, czyli graficzna reprezentacja procedury lub programu sporządzana w celach poglądowych lub jako przedstawienie algorytmu do zapisania w języku programowania. Ogólny plan budowy układu elektronicznego sporządzonych za pomocą umownych symboli z zaznaczeniem połączeń i kierunków przepływu informacji. W schemacie blokowym poszczególne operacje przedstawione są za pomocą odpowiednio połączonych skrzynek (klocków, bloków). Połączenia określają kolejność i sposób wykonywania operacji realizujących dany algorytm. W literaturze informatycznej przyjęto pewne standardowe oznaczenia poszczególnych działań (są to figury geometryczne), ale można również używać innych oznaczeń (muszą one jednak być takie same dla określonego typu operacji). (PN-75/E-01226) 12 Symbole stosowane w diagramach działań programów Wprowadzanie, wyprowadzanie wprowadzanie lub (i) wyprowadzanie danych Przetwarzanie operacja lub grupa operacji, w wyniku których ulega zmianie wartość, postać lub miejsce zapisu danych Skrzynka warunkowa sprawdzanie Decyzja operacja określająca warunku, np. czy N>0, mają kształt wybór jednej rombu. Ze skrzynki wychodzą tylko z alternatywnych dwa połączenia: jedno oznaczone dróg działania TAK, a drugie NIE. 13 Symbole stosowane w diagramach działań programów Łącznik stronicowy wejście lub wyjście z wyodrębnionych fragmentów schematu znajdujących się na jednej stronie Łącznik międzystronicowy wejście lub wyjście z wyodrębnionych fragmentów schematu znajdujących się na różnych stronach 14 Symbole stosowane w diagramach działań programów Przygotowanie modyfikacja instrukcji lub grupy instrukcji powodująca zmianę w przebiegu procesu przetwarzania Droga przepływu danych więź operacyjna między poszczególnymi operacjami procesu przetwarzania Droga przepływu danych o wskazanym kierunku 15 Schemat blokowy tworzony jest według następujących reguł: 1. Schemat blokowy składa się z bloków połączonych zorientowanymi liniami; 2. Bloki obrazują ciąg operacji; powinien być start i koniec; 3. Zawsze wykonywane są albo wszystkie instrukcje w bloku albo żadna; 4. Dalsze operacje nie zależą od poprzednich wariantów, chyba że zależności te zostały przekazane za pomocą danych; 5. Kolejność wykonania operacji jest ściśle określona przez zorientowane linie łączące poszczególne bloki; 6. Do każdego bloku może prowadzić co najwyżej jedna linia; 7. Linie mogą się łączyć ale nie mogą się rozdzielać (bez bloku decyzyjnego). 16 Przykładowe diagramy 17 Przykładowe diagramy 18 Soft do diagramów Do realizacji diagramów graficznych można wykorzystać wiele programów, w tym nawet proste programy graficzne. Na laboratorium wykorzystywany będzie darmowy program Diagram Designer. Aktualną wersje programu można ściągnąć ze strony projektu: http://meesoft.logicnet.dk/ 19 Język programowania Język programowania to zbiór: • zasad (tzw. składnia języka) • instrukcji • operatorów • ….. dzięki którym powstaje program komputerowy (a ściślej: kod źródłowy programu). Język programowania - język formalny (sztuczny) służący do zapisu programów komputerowych. (IBM Dictionary of Computing) 20 Dlaczego powstały języki programowania? 21 Języki programowania – pojęcia podstawowe Język ogólna nazwa zdefiniowanego zbioru znaków i symboli oraz reguł określających sposoby i kolejność ich użycia. Język, który jest stosowany do przetwarzania algorytmów nosi nazwę języka algorytmicznego, a przy zastosowaniu go do celów programowania określony jest jako język programowania. Ponieważ komputer posługuje się językiem binarnym, tzn. rozróżnia stany 0:1 - program w języku programowania należy przetworzyć tak, aby był zrozumiały dla maszyny – zadaniem tym zajmują się translatory. Języki programowania – pojęcia podstawowe Język programowania zbiór zasad składni, instrukcji, dzięki którym powstaje kod źródłowy programu. Procesor jest w stanie wykonywać program w kodzie maszynowym. Jednakże tworzenie programów w tym języku jest praktycznie niemożliwe. Dlatego programista używa języka zrozumiałego dla człowieka, który następnie jest kompilowany bądź interpretowany do postaci maszynowej. Istnieje wiele rodzajów języków programowania. Można je podzielić na języki strukturalne i obiektowe. Innym kryterium podziału jest zastosowanie języków (innych używa się do tworzenia programów multimedialnych, a innych do obliczeń numerycznych czy np. aplikacji sieciowych). Niektóre z języków są bardziej uniwersalne niż inne. Języki programowania – pojęcia podstawowe Implementacja zestaw narzędzi pośredniczący w tłumaczeniu kodu zapisanego w danym języku na kod maszynowy danego procesora. Każdy język programowania ma z reguły kilka implementacji przeznaczonych na różne platformy i robione przez różnych producentów 24 Języki programowania – pojęcia podstawowe Kod (plik) źródłowy program komputerowy w postaci tekstu zawierającego instrukcje języka programowania. Kod źródłowy jest jedynym formatem programu czytelnym dla człowieka. Kod źródłowy jest przetwarzany na kod maszynowy przez program zwany translatorem. Kod (plik) obiektowy przetłumaczona na język niskiego poziomu (asembler) wersja kodu źródłowego. 25 Języki programowania – pojęcia podstawowe Translator służy do wykonania kompilacji lub interpretacji kodu źródłowego (automatycznego tłumaczenia kodu źródłowego na język maszynowy). Standardowym katalogiem, w których umieszcza się pliki translatora jest katalog BIN w głównym katalogu aplikacji. Aby proces translacji był możliwy, system operacyjny musi znać dokładne położenie translatora i jego bibliotek. W tym celu należy dokonać odpowiedniego wpisu w pliku wsadowym autoexec.bat (czasami wpis tworzony jest automatycznie podczas instalacji). Rozróżnia się dwa rodzaje translatorów: kompilatory i interpretery. 26 Języki programowania – pojęcia podstawowe Kompilator program jednorazowo tłumaczący cały kod źródłowy na język maszynowy i zapisujący go do pliku wynikowego. Kolejne uruchomienia programu (pliku wynikowego) nie wymagają powtórzenia etapu kompilacji – oznacza to, że kompilator nie jest potrzebny do uruchamiania programu. Typowymi przykładami języków kompilowanych są: C, C++, Pascal, Fortran; 27 Języki programowania – pojęcia podstawowe Interpreter program tłumaczący i wykonujący kod źródłowy linia po linii. W tym przypadku nie ma pliku wynikowego, a każde uruchomienie wymaga ponownego przeprowadzenia etapu interpretacji – interpreter jest więc niezbędny do uruchomienia i wykonania programu. Typowymi przykładami języków interpretowanych są: Python, MatLab, GNU Plot, HTML, BPL; 28 Języki programowania – pojęcia podstawowe Biblioteka statyczna rodzaj biblioteki, która łączona jest z programem w etapie konsolidacji. W systemach z rodziny Windows zwykło nadawać się im rozszerzenia .lib lub .o, natomiast w systemach z rodziny Unix są to zwykle .a lub .o. Biblioteki statyczne, w przeciwieństwie do bibliotek dynamicznych, nie wymagają pomocy systemu operacyjnego komputera – po połączeniu z danym programem są od razu gotowe do użycia. Biblioteka dynamiczna rodzaj biblioteki, która łączona jest z programem dopiero w momencie jego wykonania. Aby tego dokonać system operacyjny komputera musi posiadać pewne funkcje, które umożliwiają łączenie dynamiczne. W systemach Windows biblioteki dynamiczne mają zazwyczaj rozszerzenie .dll 29 Języki programowania – pojęcia podstawowe Edytor kodu służy do pisania tekstu kodu źródłowego. Edytory mogą być uniwersalne (np. ConText, Amigo, Crimson, Codex, EditPlus, UltraEdit, Editeur, …) lub też zintegrowane z konkretną implementacją języka (np. Borland Delphi, Compaq Visual Fortran …). Edytory uniwersalne pozwalają na podłączanie kompilatorów jednego lub wielu języków i są rozprowadzane jako oddzielne programy. Podłączenie konkretnego kompilatora odbywa się poprzez odpowiednią definicję opcji programu. Zaletą edytorów jest to, że poprawiają znacznie przejrzystość i wygodę tworzenia kodu, a także „pomagają” pisać kod źródłowy programu wyróżniając, zazwyczaj kolorem lub wytłuszczoną czcionką, słowa kluczowe danego języka – łatwo wówczas zauważyć błąd już na etapie jego popełniania. 30 Języki programowania – pojęcia podstawowe Debugger (analizator kodu) służy do analizy poprawności tworzonego kodu źródłowego i stanowi zazwyczaj integralną część translatora (może być to również oddzielny program). Podczas analizy kodu źródłowego generowane są informacje o błędach – czasami wymaga to podania dodatkowych opcji kompilacji – na bieżąco (analizator zatrzymuje się w miejscu wykrycia błędu) lub też w postaci końcowego raportu. Oprócz sygnałów o błędach, analizatory podają również tzw. ostrzeżenia, tzn. informacje o znalezieniu niejasności w kodzie lub o wykryciu miejsca potencjalnie niebezpiecznego. Typowym ostrzeżeniem jest wiadomość o wykryciu deklaracji zmiennej, która nie została nigdzie w kodzie wykorzystana. 31 Języki programowania – pojęcia podstawowe Edytor formularzy służy do budowy okien widzianych przez użytkownika po uruchomieniu programu (formularzy). Element ten występuje jedynie w językach wizualnych, takich jak Visual Basic, Delphi, Compaq Visual Fortan i innych. W różnych implementacjach języków, edytor formularzy może być dostępny bezpośrednio po uruchomieniu programu lub też po wybraniu odpowiedniej opcji z menu. Zaletą stosowania tego narzędzia jest łatwość tworzenia dowolnie skomplikowanych okien i określania ich właściwości. Nie traci się wówczas czasu na pisanie elementów kodu, odpowiedzialnych za tworzenie się formularzy i ich elementów, a programista skupia się jedynie na realizacji założonego algorytmu. Brak edytora formularzy nie przesądza o tym, że nie można tworzyć standardowych, „okienkowych” aplikacji – wygląd definiowany jest wówczas przez programistę w kodzie źródłowym. 32 Języki programowania – pojęcia podstawowe Menadżer projektu służy do zarządzania modułami i plikami projektu. Rzadko bowiem tak się zdarza, że cały kod źródłowy zawarty jest w jednym pliku – przeważnie jest ich wiele i zawierają nie tylko poszczególne moduły kodu, ale również biblioteki, różne pliki wsadowe, grafikę i pliki multimedialne. Zazwyczaj istnieje główny plik projektu zawierający wszystkie potrzebne do kompilacji informacje. Z pomocą menadżera łatwo można modyfikować zawartość i strukturę projektu. Narzędzia dodatkowe służą do tworzenia systemu pomocy, ikon i kursorów, programów instalacyjnych. Ilość narzędzi i poziom ich zaawansowania zależy od implementacji języka. 33 Języki programowania – pojęcia podstawowe System pomocy służy do uzyskiwania informacji o środowisku programistycznym, zasadach jego użytkowania, elementach języka (wraz z przykładami), rodzaju licencji, autorach i kontaktach. Zależnie od implementacji języka oraz jego rodzaju pomoc może być mniej lub bardziej rozwinięta. Dobrze zorganizowanie, obszerne systemy pomocy zawierają często kompendium wiedzy na temat danego języka programowania. 34 Języki programowania – pojęcia podstawowe Etapy kompilacji Etap preprocesingu – obejmuje on odczyt i analizę kodu źródłowego na podstawie reguł danego języka. W tym etapie dokonywana jest: • analiza leksykalna – rozdzielenie kodu źródłowego na elementarne jednostki języka programowania zwane tokenami; • analiza składniowa – kontrola, czy ułożenie tokenów nie łamie reguł danego języka programowania (czy kod źródłowy był poprawny składniowo); • analiza semantyczna – określenie znaczenia poszczególnych tokenów. Przykładem może być sprawdzanie, czy nie występuje niezgodność typów. Etap kompilacji – służy do przetłumaczenia kodu źródłowego na kod obiektowy. W przypadku jednoczesnej kompilacji wielu plików źródłowych, każdy z nich przetworzony jest na oddzielny kod obiektowy. Na tym etapie nie są analizowane zależności pomiędzy poszczególnymi segmentami programu; Etap konsolidacji – służy do połączenia wszystkich plików obiektowych oraz dodatkowych bibliotek statycznych w jeden kod wynikowy. Na tym etapie sprawdzane są zależności pomiędzy poszczególnymi segmentami programu. Dodanie biblioteki statycznej wymaga podania odpowiednich opcji kompilacji. Po konsolidacji program jest gotowy do uruchomienia. 35 Języki programowania – pojęcia podstawowe Nieformalna klasyfikacja języków Języki 1 generacji – kod maszynowy Języki 2 generacji – asemblery Języki 3 generacji – języki wysokiego poziomu Języki 4 generacji – (generatory aplikacji) aplikacji) Komputery 5 generacji Języki skryptowe Języki obsługi baz danych Języki opisu dokumentu Meta języki (opisu innych języków) języków) Istnieje ponad 2000 języków programowania 36 Języki programowania – pojęcia podstawowe Język maszynowy (kod maszynowy) język programowania, w którym zapis programu wymaga instrukcji bezpośrednio jako liczb, które są rozkazami i danymi bezpośrednio pobieranymi przez procesor wykonujący ten program. Kod maszynowy to ciąg rozkazów procesora, inaczej instrukcji maszynowych oraz danych, na których te rozkazy operują. Rozkazy i dane zapisywane są w postaci liczb binarnych. Każdy procesor ma swoją własną listę rozkazów, rozkazy te zwykle różnią się od rozkazów innych procesorów. Kod maszynowy jest dedykowany dla procesora danego typu. Procesor wykonuje tylko kod maszynowy załadowany do pamięci operacyjnej komputera (ROM lub RAM). 37 Kod maszynowy to jedyna postać programu komputerowego, która jest zrozumiała dla komputera i może być przez niego wykonana. Kod maszynowy to ciąg rozkazów zrozumiałych dla procesora. Procesor pobiera, dekoduje i wykonuje te rozkazy. Rozkazy pobierane są z komórek pamięci operacyjnej, gdzie są zapisane w postaci binarnej. 38 Języki programowania – pojęcia podstawowe Asemblery rodzina języków programowania niskiego poziomu, w których zasadniczo jedno polecenie odpowiada jednemu rozkazowi procesora. Są to języki powstałe na bazie języka maszynowego poprzez zastąpienie liczb odpowiadających fragmentom rozkazów kodu maszynowego ich symbolicznymi odpowiednikami. Dzięki zamianie liczb na tzw. mnemoniki można pisać programy w miarę zrozumiałe dla człowieka, a jednocześnie bezpośrednio tłumaczone na kod maszynowy procesora, co pozwala zapewnić duży stopień kontroli programisty nad zachowaniem procesora. Pierwszym asemblerem był skonstruowany przez Konrada Zuse - układ elektromechaniczny przygotowania taśmy perforowanej z dodanie dwóch liczb: programem dla maszyny Z4. Pozwalał na wprowadzanie i odczyt LD ax es LD bx $FFC1 39 rozkazów i adresów w sposób zrozumiały dla człowieka. ADD ax es 40 Języki programowania – pojęcia podstawowe Język wysokiego poziomu typ języka programowania, którego składnia i słowa kluczowe mają maksymalnie ułatwić rozumienie kodu programu dla człowieka dystansując się od sprzętowych niuansów. Kod napisany w języku wysokiego poziomu nie jest bezpośrednio „zrozumiały” dla komputera – większość kodu stanowią tak naprawdę normalne słowa, np. w języku angielskim. Aby umożliwić wykonanie programu napisanego w tym języku należy dokonać kompilacji. Programista języków wysokiego poziomu uwolniony jest od konieczności znajomości rejestrów i adresów fizycznych pamięci 41 Języki programowania – pojęcia podstawowe Typy języków wysokiego poziomu Języki deklaratywne - składają się z opisowych stwierdzeń dotyczących danych i relacji pomiędzy danymi danymi.. Języki proceduralne - określające procedury obliczeniowe obliczeniowe.. Języki funkcyjne - stosują funkcje do kolejnych wartości oraz funkcje (operatory) do manipulacji funkcjami funkcjami.. Języki definicyjne - kolejne podstawienia interpretowane są jako definicje definicje.. Języki logiczne - oparte na logice matematycznej, programy traktowane są jako formuły logiczne logiczne.. Języki ograniczeń (constraint) - problemy są w nich specyfikowane nie w sposób jawny lecz przez podanie zbioru ograniczeń ograniczeń.. Języki obiektowo zorientowane - dane i procedury tworzą obiekty obiekty.. Języki programowania współbieżnego - dla komputerów o wielu procesorach.. procesorach Języki „przepływu danych” (dataflow) - dla komputerów o eksperymentalnej architekturze, sterowanych nie tyle kolejnymi instrukcjami co przepływem danych danych.. 42 Języki programowania – pojęcia podstawowe Języki IV generacji język programowania, pozwalający przy użyciu krótkich instrukcji stworzyć program, którego napisanie w językach niższej generacji wymaga użycia setek lub tysięcy razy większej liczby wierszy programu źródłowego. Innym określeniem języków 4 generacji jest Generatory aplikacji. Najważniejsze zastosowania: Multimedia (tworzenie prezentacji multimedialnych) Bazy danych (budowanie systemów baz danych) Obliczenia i modelowanie matematyczne Symulacje komputerowe 43 Języki programowania – pojęcia podstawowe Komputery (Języki) V Generacji Komputery V generacji mają (z założenia) wykorzystywać język naturalny i mechanizmy sztucznej inteligencji do autoprogramowania Język The Last One (ostatni) napisany w 1982 44 Języki programowania – pojęcia podstawowe Darmowe środowiska programistyczne Dev-C++ DevKDevelop Kylix Rapid--Q Rapid Lazarus Visual Basic 45 Języki programowania – pojęcia podstawowe Dev--C++ Dev Zintegrowane środowisko programistyczne (IDE), umożliwiające tworzenie programów w języku C/C++ działających w systemie Windows lub DOS. DOS. W zestawie umieszczono naprawdę wygodny edytor, pozwalający na kontrolę nawet dużego projektu, szybki i dający niewielki kod kompilator, dość dobry debuger i kilka innych przydatnych narzędzi, m.in. in. moduł do tworzenia instalacyjnych wersji programów programów.. Języki programowania – pojęcia podstawowe Interfejs Dev-C++ 47 Języki programowania – pojęcia podstawowe KDevelop Jest to opensource'owy produkt promowany przez firmę TrollTech, twórcę biblioteki komponentów Qt (podstawę środowiska KDE). KDE). KDevelop wspomaga programistów piszących w C++ i jest równie elastyczny w konfiguracji, co wygodny podczas pracy pracy.. KDevelop udostępnia (lub wykorzystuje dostępne w systemie) wszystkie potrzebne narzędzia, takie jak solidny edytor kodu (oparty o KWrite), narzędzie do tworzenia GUI (QtDesigner), kompilator (GCC), moduł współpracy z narzędziem kontroli wersji (CVS).. (CVS) Języki programowania – pojęcia podstawowe Interfejs KDevelop 49 Języki programowania – pojęcia podstawowe Kylix Zintegrowane środowisko dla programistów (IDE) pracujące pod Linuksem produkowane przez firmę Borland.. Pozwala na pisanie aplikacji w języku Delphi Borland (Obiect Pascal) i korzystanie z komponentów CLX CLX.. Od wersji 3 (2003 2003)) umożliwia także pisanie aplikacji w C++ C++.. Aplikacje CLX są kompatybilne na poziomie źródeł ze środowiskiem Delphi, dzięki czemu ułatwiono przenoszenie tych aplikacji do systemu Windows. Windows. Języki programowania – pojęcia podstawowe RapidQ RapidQ to kompilator języka podobnego do Basica w wersji dla Windows i Linuxa (a także dla innych Unixów) Unixów).. Kompilator generuje dość duże pliki. pliki. Kompiluje na zasadzie kompilatora Delphi, czyli jest generowany plik EXE.. EXE Języki programowania – pojęcia podstawowe Interfejs RapidQ 52 Języki programowania – pojęcia podstawowe Lazarus Lazarus to nakładka na kompilator Free Pascal - wzorowane na Delphi wizualne środowisko programistyczne oraz biblioteka Lazarus Component Library (LCL) - odpowiednik VCL VCL.. Program napisany z użyciem LCL można bez żadnych zmian skompilować dla dowolnego obsługiwanego procesora, systemu operacyjnego i interfejsu okienek okienek.. Projekt Lazarus rozpoczęto w lutym 1999 1999.. Cliff Baeseman Shane Miller Michael A. Hess Języki programowania – pojęcia podstawowe www.lazarus.freepascal.org Najnowszy (76.2 MB) Lazarus 0.9.30.2 54 Języki programowania – pojęcia podstawowe Visual Basic Jest to język i narzędzie programowania firmy Microsoft Microsoft.. Składnia jest oparta na języku BASIC ale unowocześniona.. unowocześniona Zawiera kilkaset instrukcji, funkcji i słów kluczowych kluczowych.. Nie jest językiem w pełni obiektowym gdyż nie udostępnia, np. np. możliwości dziedziczenia czy polimorfizmu polimorfizmu.. Wykorzystuje technologię ActiveX ActiveX.. Języki programowania – pojęcia podstawowe Interfejs Visual Basic 56 DELPHI Środowisko programisty Zestaw programów narzędziowych wspomagających tworzenie kodu. Najlepsze edytory, poza kolorowaniem kodu na bieżąco interpretują pisany kod, wyszukują błędy, pozwalają unikać przypadkowych błędów składniowych i literowych, oferują gotowe fragmenty kodu (snippets) 58 W epoce DOS-u tworzenie aplikacji za pomocą języka programowania takiego jak Turbo Pascal zajmowało bardzo dużo czasu. Dużą jego część poświęcano na tworzenie interfejsu użytkownika. W momencie pojawienia się systemu Windows programista dostał do ręki nowe narzędzia. Mógł wykorzystać gotowe funkcje, które tworzyły podstawowe elementy aplikacji , takie jak: okna, przyciski, grupy opcji itp. Niestety, programowanie w WinAPI było zadaniem bardzo trudnym i wymagało sporej wiedzy i umiejętności. Wkrótce jednak pojawiło się rozwiązanie: Rapid Application Development (RAD)(szybkie tworzenie aplikacji). Narzędzia te oferowały już na starcie gotowe okno aplikacji. Aby dodać do niego jakieś elementy, np. przyciski, wystarczy przeciągnąć je myszką z paska narzędzi. Za pomocą myszki można dowolnie zmienić ich położenie i rozmiary. 59 Borland Delphi jest narzędziem RAD umożliwiającym szybkie tworzenie aplikacji działających w systemie Windows. Ma dwie podstawowe cechy: jest wizualny tzn. pozwala przenosić myszką elementy aplikacji (np. przyciski) i układać je w oknach. jest obiektowy tzn. oparty jest na obiektowej wersji Pascala (Object Pascal). Doświadczenie zdobyte podczas programowania w Borland Pascalu będzie w Delphi owocować i ułatwi pracę z nowym narzędziem. Język Object Pascal wchodzący w skład Delphi jest zgodny z językiem Borland/Turbo Pascal . W czasie programowania nie można odwoływać się do takich modułów jak: Crt, DOS, Graph itp. Ze starej biblioteki zachowano jedynie moduł System, który został znacznie rozwinięty. Istnieją też różnice w nazwie funkcji, np. zamiast Close, jest CloseFile. W Object Pascalu został wprowadzony nowy model typu obiektowego definiowany za pomocą słowa kluczowego class. 60 Tworzenie aplikacji w Delphi jest dwutorowe (ang. two-way-tools). Pierwszym torem są narzędzia wizualne, drugim - pisanie kodu źródłowego. Najważniejsze jest to, że wszystko co zrobisz za pomocą narzędzi wizualnych jest automatycznie uwzględniane w kodzie źródłowym. Obydwie drogi są równie ważne: narzędzia wizualne służą do szybkiego projektowania interfejsu użytkownika, jednak aby aplikacja robiła coś konkretnego, musimy to napisać za pomocą języka Object Pascal. 61 Historia środowiska programistycznego Delphi Delphi, opracowane przez firmę Borland, jest następcą środowiska Turbo Pascal, będącego połączeniem kompilatora języka Pascal ze środowiskiem edycyjnym. Pierwsza wersja (16-bitowa) Delphi ukazała się w 1995 roku i przeznaczona była do pracy w Microsoft Windows 3.1. Było to jedno z pierwszych narzędzi typu Rapid Application Development Kolejna wersja – Delphi 2 – ukazała się w roku 1996 i była środowiskiem 32-bitowym, generującym kod dla Microsoft Windows 95. Delphi 3 ukazało się w roku 1997 i wprowadziło do środowiska następujące elementy: pakiety, rozproszoną obsługę baz danych, wspomaganie tworzenia aplikacji internetowych, wspomaganie tworzenia kontrolek ActiveX. Delphi 4 dodało wiele nowych usprawnień IDE (jak na przykład możliwość dokowania okien), oraz usprawnienia w samym języku programowania. W wersji 6 pojawiła się m.in. możliwość tworzenia przeźroczystych okien (Windows 2k/XP). Wersja 7 wniosła nowy komponent pozwalający na używanie stylów wizualnych z Windows XP w tworzonych programach. W roku 2001 powstała edycja przeznaczona dla Linuksa nazwana Kylix. Wersja 8 (rok 2003) wprowadziła Delphi w środowisko .NET, po raz pierwszy od powstania uległo też zmianie IDE, upodobniając się do Microsoft Visual Studio .NET. W edycji 2005, oprócz zintegrowania w jednym środowisku kompilatorów dla języków Delphi, Delphi.NET oraz C#, wprowadzono dalsze udoskonalenia środowiska 62 Historia środowiska programistycznego Delphi Na początku 2006 roku firma Borland wystawiła wszystkie przygotowane przez nią środowiska programistyczne – w tym również Delphi – na sprzedaż. Pomimo zapowiedzi sprzedaży w roku 2006 wprowadzono wersję Borland Turbo znana jako Borland Turbo Delphi /Borland Turbo C# /Borland Turbo C++ / Borland Turbo Delphi for .NET 14 listopada 2006 – powstała firma-córka CodeGear, która została wyodrębniona z firmy Borland. 19 marca 2007 – powstało CodeGear Delphi 2007 for Vista and AJAX. 5 września 2007 – powstało CodeGear RAD Studio 2007 (Delphi, Delphi for .NET oraz C++Builder ) 8 marca 2008 – pojawiło się CodeGear Delphi/400 for PHP 14 kwietnia 2008 – pojawiło się CodeGear Delphi for PHP 7 maja 2008 roku firma CodeGear przestała być własnością Borlanda. CodeGear została sprzedana za kwotę 23 milionów dolarów firmie Embarcadero. 63 Historia środowiska programistycznego Delphi Delphi Prism – jest to wtyczka do IDE Microsoft Visual Studio, wraz z kompilatorem – stanowiący nowe środowisko programistyczne. Delphi Prism używa udoskonalonego kompilatora Oxygene firmy RemObjects. Pozwala na pisanie aplikacji .NET dla Windows, Linux i Mac. Nowy kompilator jest oczekiwaną alternatywą dla języka C# – obsługuje .NET 1.1, 2.0, 3.0, 3.5, WinForms, WPF, Silverlight, ASP.NET i LINQ. Nie obsługuje Compact Framework. W języku Delphi Prism nie można używać już VCL.NET. Delphi 2009 – Delphi dla Windows obsługujące Win32. CodeGear oficjalnie zapowiedziało, że ma zamiar standaryzować i rozwijać język Delphi. Delphi 2010 - wydano 25 sierpnia 2009 roku. Jest to druga wersja środowiska Delphi, która obsługuje Unicode. Nie niesie dużych zmian w stosunku do Delphi 2009. Delphi 2010 posiada wsparcie dla Windows 7, oraz dla ekranów dotykowych i gestów (nowe kontrolki VCL) Delphi XE - wydano 30 sierpnia 2010 roku. Dodano kilka narzędzi do środowiska takich jak AQtime, CodeSite, Beyond Compare, zapewniono integrację z Subversion w IDE, dodano kontrolki do współpracy z Windows Azure oraz do przetwarzania w chmurze obliczeniowej Amazon EC2, oraz dokonano kilku ulepszeń w języku. Delphi XE Starter Edition - edycja Delphi XE udostępniona 27 stycznia 2011, skierowana dla hobbystów, studentów i małych firm, zatrudniających do pięciu programistów - dostępna za niższą cenę (około 190 $) 64 DELPHI 7 – wersja softu który jest w lab. Personal (Standard, Desktop) – wersja przeznaczona do konstruowania autonomicznych (niezależnych) programów użytkowych dla środowiska Windows, która zawiera ponad 85 gotowych do użycia komponentów i liczne przykładowe programy okienkowe, polecana przede wszystkim osobom początkującym w wizualnym programowaniu. Professional - wersja przeznaczona dla profesjonalistów z pełnym zintegrowanym środowiskiem programowania i komponentami internetowymi (łączna liczba komponentów przekracza 150), która dodatkowo umożliwia przygotowanie programów dla loklanych sieci komputerowych i do wielostanowiskowego obsługiwania baz danych. 65 DELPHI Enterprise - wersja z ponad 200 komponentami, umożliwia tworzenie programów rozproszonych, typu klient-serwer (w sieciach komputerowych składających się z komputera centralnego - serwera - oraz podporządkowanych mu stacji roboczych - klientów) i programów przeznaczonych dla Internetu, w tym typu e-commerce. Architect - jw. + narzędzia Bold for Delphi firmy BoldSoft (do tworzenia biznesowych aplikacji wielowarstwowych) 66 67 Download Delphi 7 Personal Delphi 7 Personal ~ 54 MB Alternatywne (i nowsze zarazem) wersje: Delphi 2005 (2007, 2009, 2010) Triale ~ 280 MB Turbo Delphi ~ 340 MB Wersje delphi na licencji Emabarcadero… 68 http://www.embarcadero.com/products/delphi 69 Embarcadero Delphi XE jest kompletnym pakietem do szybkiego tworzenia rozbudowanych aplikacji Windows. Pozwala znacznie ograniczyć czas pisania kodu i nawet kilkakrotnie skrócić czas dostarczania aplikacji dzięki wykorzystaniu bogatej biblioteki komponentów oraz w pełni dwukierunkowego środowiska RAD IDE. Narzędzie pozwala na wydajne tworzenie rozwiązań dla wielu różnych systemów Windows korzystających z różnych platform bazodanowych, w tym rozbudowanych aplikacji GUI, interaktywnych aplikacji dotykowych, kiosków multimedialnych oraz wielowarstwowych aplikacji bazodanowych, Internetowych i programowania "w chmurze". 70 Delphi XE pozwala na: Szybsze tworzenie aplikacji dzięki gotowym do użycia komponentom oraz wizualnej technice "drag-and-drop" Tworzenie aplikacji które wymagają szybkiej wizualizacji danych, bieżącego kontrolowania urządzeń (tryb czasu rzeczywistego), manipulowania obiektami i grafiką 3D, tworzenia modeli finansowych Otwarcie aplikacji na przyszłe wyzwania - tworzenie natywnych połączeń z 9 głównymi bazami danych wsparte wykorzystaniem komponentów do "łączenia w chmurze" Wykorzystanie tysięcy darmowych i komercyjnych komponentów wspierających programowanie interfejsów użytkownika, baz danych, rozwiązań wielowarstwowych, internetowych i wielu innych Dostęp do starszych wersji środowiska Kupując Delphi XE użytkownik dostaje dostęp do wcześniejszych wersji środowiska: Delphi 7 Delphi 2007 Delphi 2009 Delphi 2010 Delphi XE jest dostępne w 3 wersjach: Professional, Enterprise i Architect. 71 Informacje dodatkowe http://download.4programmers.net/Delphi http://4programmers.net/Delphi 72 http://www.borland.com/delphi/ http://www.borland.pl/delphi/ http://www.swissdelphicenter.ch/en/ – baza wiedzy na temat Delphi (po angielsku) http://delphi.icm.edu.pl/ – komponenty dla Kyliksa oraz wszystkich wersji Delphi i C++ Buildera http://delphi.about.com/ – mnóstwo ciekawych kawałków kodu oraz opis niektórych wersji Delphi http://www.unit1.pl/ – strona poświęcona programowaniu w Delphi http://www.delphifaq.net/ - mnóstwo ciekawych porad i kawałków kodu w Delphi 73 Jak znaleźć? …a od czego Google ?? 74 Lazarus – alternatywne środowisko dla chętnych !! Przy instalowaniu umieszczać program w katalogu BEZ SPACJI 75 Lazarus Uprawnienia administracyjne Firewall 76 Lazarus 77