OSIOŁKOWI W ŻŁOBY DANO...

Wielkość: px
Rozpocząć pokaz od strony:

Download "OSIOŁKOWI W ŻŁOBY DANO..."

Transkrypt

1 Porównanie parserów XML-a OSIOŁKOWI W ŻŁOBY DANO... XML jest obecnie najpopularniejszym formatem wymiany danych. Język posiada szeroki wachlarz metod jego obsługi. W tym miesiącu w dziale a omówimy zalety i wady najpopularniejszych modułów XML, aby pomóc podjąć decyzję wyboru najlepiej dopasowanego do potrzeb użytkownika. Wdziedzinie przetwarzania dokumentów XML z pewnością trzyma się swojego motta: jest więcej niż jeden sposób, aby to zrobić. Mamy naprawdę duży wybór modułów do obsługi XML-a. Przeanalizujemy różne metody podejścia tych modułów, wykorzystując przykład przedstawiony na Rysunku 1. Ten plik zawiera dwa rekordy typu <cd> zagnieżdżone w znaczniku <result>. Każdy z tych rekordów składa się ze znaczników <artists> i <title>, reprezentujących odpowiednio nazwy artystów i tytuł płyty CD. W polu <artists> może być więcej niż jeden znacznik <artist>. Siła prostoty Najprostszy sposób na załadowanie struktury plików XML w u polega na wykorzystaniu modułu XML::Simple dostępnego w archiwum CPAN. Moduł ten udostępnia funkcję XMLin, która wczytuje plik lub łańcuch znaków zawierający kod XML i zapisuje je w strukturze obiektów a: w zależności od liczby artystów w znacznikach <artists> wynikowa struktura zawierająca nazwy artystów może być skalarem lub macierzą. To znacznie utrudnia pracę use XML::Simple; my $ref = XMLin ("data.xml"); Rysunek 1: Przykładowe dane XML reprezentujące bazę muzycznych płyt CD. Przykład struktury zmiennej $ref po załadowaniu naszego pliku przedstawia Rysunek 2. Warto zauważyć dwie rzeczy: Rysunek 2: Struktura danych zastosowana przez XML::Simple do przechowywania danych z Rysunku NUMER 20 PAŹDZIERNIK

2 PROGRAMOWANIE z tą strukturą. Można jednak wymusić, aby parser zawsze stosował macierze dla określonego pola struktury. Służy do tego opcja ForceArray. Wywołanie XMLin ( data.xml, ForceArray => ['artist']); powoduje, że $ref->{cd}->[0]->{artists}->{artist} Rysunek 3: Struktura XML uproszczona za pomocą opcji GroupTags modułu XML::Simple. zawsze zwróci referencję macierzy, nawet gdy w źródle danych występuje tylko jeden artysta. Po drugie, składnia ->{artists}- >{artist} jest nieco niewygodna, ponieważ ->{artists} nie zawiera innych elementów niż ->{artist}. XML::Simple obsługuje Listing 1: xptitles 03 use XML::LibXML; 05 my $x = XML::LibXML->new() 06 or die "new failed"; my $d = 09 $x->parse_file("data.xml") 10 or die "parse failed"; 12 my $titles = 13 "/result/cd/title/text()"; 15 for my $title ( 16 $d->findnodes($titles) ) { 17 print $title->tostring(), 18 "\n"; 19 } opcję GroupTags, pozwalającą programistom nieco uprościć wygenerowaną strukturę. Poniższy kod wygeneruje strukturę przedstawioną na Rysunku 3, która jest już znacznie prostsza w obsłudze. XMLin("data.xml", ForceArray => ['artist'], GroupTags => {'artists' => 'artist'}); W tej strukturze możemy zastosować na przykład prostą pętlę for wyszukującą numery seryjne płyt: for my $cd (<\@>{$ref->{cd}}) { print $cd-> {serial}, "<\\>n"; } XML::Simple ładuje cały plik XML do pamięci, co jest bardzo wygodne przy mniejszych plikach. Jeśli jednak mamy do czynienia z dość dużym plikiem XML, to podejście okaże się nieoptymalne, ponieważ może spowodować przepełnienie pamięci programu. Pokrętne ścieżki Wielbiciele zawiłych składni pokochają XPath. Moduł XML::LibXML z archiwum CPAN opiera się na bibliotece libxml2 związanej z projektem Gnome. Moduł ten pozwala zastosować znaną z XPath notację findnodes, stosowaną do wyszukiwania elementów Notacja Xpath wyszukująca zawartość tekstową wszystkich elementów <title> jest następująca /result/cd/title/text(): rozpoczynamy od korzenia dokumentu /, wspinamy się na gałąź <results>, <cd> i <title>, aby na końcu wywołać text(), co zwróci zawartość tekstową elementu. Można też alternatywnie zastosować składnię //title/text(), informującą XPath, że ma wykryć wszystkie elementy <title> niezależnie od tego, w którym miejscu hierarchii XML się znajdują. Skrypt xptitles z Listingu 1 demonstruje, że metoda findnodes() zwraca listę obiektów tekstowych, z których metoda tostring() w końcu pozwala odczytać poszukiwane wartości tekstowe. XPath potrafi nieźle rozwiązywać również trudniejsze zadania. Listing 2 prezentuje sposób odczytania wszystkich numerów seryjnych dysków CD, które w polach <artist> zawierają tekst Foo Fighters. Zastosowana w tym celu ścieżka /result/cd/artists/artist[.="foo Fighters"]/../../<\@>serial powoduje, że najpierw wspinamy się do znaczników <artist>, które są sprawdzane na obecność poszukiwanego tekstu za pomocą predykatu [.= Foo Fighters ]. Kropka określa bieżący węzeł w ścieżce. Jeśli w tym węźle zostanie odnaleziony poszukiwany tekst Foo Fighters, XPath przechodzi dwa poziomy wyżej w hierarchii../... Tutaj znajdują się węzły <cd>. Za pomocą <\@>serial pobierany jest obiekt atrybutu serial i zwracany jako wynik wywołania XPath. Listing 2 (xpserial) przedstawia cały skrypt, który z obiektu wynikowego wyciąga jego wartość (numer seryjny płyty CD) za pomocą metody value(). XPath umożliwia również zastosowanie notacji uproszczonej, lecz jeśli wystąpi problem z plikiem źródłowym, wyszukiwanie przyczyny może być dość utrudnione. Można jednak stwierdzić, że połączenie a i XPath pomimo wad jest z pewnością warte zastosowania, ponieważ daje dostęp do skutecznych technik XPath konstruowania solidnej logiki programu oraz zapenia doskonałe możliwości wyszukiwania błędów. W porównaniu z tym zastosowanie najprostszego nawet procesora XSLT wiąże się ze Listing 2: xpserial 03 use XML::LibXML; 05 my $x = XML::LibXML->new() 06 or die "new failed"; my $d = 09 $x->parse_file("data.xml") 10 or die "parse failed"; 12 my $serials = q{ 13 /result/cd/artists/ artist[.="foo Fighters"]/ 15../../@serial 16 }; for my $serial ( 19 $d->findnodes($serials) ) { 20 print $serial->value(), 21 "\n"; 22 } NUMER 20 PAŹDZIERNIK

3 moduł XML::Parser, może zainstalować moduł XML::SAX::Pure, który również można znaleźć w repozytorium CPAN. Warto pamiętać, że to rozwiązanie nie należy do najszybszych, lecz można je zainstalować bez konieczności posiadania kompilatora języka C. Instalacja modułu XML::Parser zajmuje dłuższą chwilę, poznacznie większymi problemami. XML::Parser Moduł XML::Parser implementuje bardziej klasyczny parser. Przekopuje się przez dokument XML znacznik po znaczniku i, gdy są spełnione określone warunki, wywołuje zdefiniowane przez użytkownika funkcje zwrotne (callback). Aby wyszukać numery seryjne płyt CD, w których nazwa artysty zawiera tekst Foo Fighters, należy na bieżąco kontrolować stan parsera już na etapie analizy drzewa Listing 3 xmlparse zawiera w wywołaniu Listing 3: xmlparse 03 use XML::Parser; 05 my $p = XML::Parser->new(); 06 $p->sethandlers( 07 Start => \&start, 08 Char => \&text, 09 ); 10 $p->parsefile("data.xml"); 12 my $serial; 13 my $is_artist; 15 ############################# 16 sub start { 17 ############################# 18 my ($p, $tag, %attrs) if ( $tag eq "cd" ) { 21 $serial = $attrs{serial}; 22 } $is_artist = 25 ( $tag eq "artist" ); 26 } ############################# 29 sub text { 30 ############################# 31 my ( $p, $text ) if ( $is_artist and 34 $text eq 35 "Foo Fighters" ) { 36 print "$serial\n"; 37 } 38 } konstruktora new () XML::Parser wskazanie funkcji zwrotnych dla parsera dla zdarzeń Start (gdy parser napotka otwierający znacznik XML) oraz Char (gdy parser napotka tekst pomiędzy znacznikami). Gdy parser napotka znacznik otwierający, jak <cd serial= 001 >, wywoła funkcję zwrotną start(), przekazując jej referencję parsera, nazwę znacznika oraz listę atrybutów w postaci par kluczy i wartości. W naszym przykładzie funkcji start () w drugim parametrze przekazywany jest ciąg znaków cd. Trzeci i czwarty parametr to odpowiednio ciągi znaków serial i 001. Funkcja zwrotna text () jest zdefiniowana w wierszu 29. Gdy parser znajdzie wartość tekstową, wywołuję tę funkcję z dwoma parametrami: referencją do parsera i ciągiem znaków reprezentującym znaleziony tekst. Aby parser wiedział, czy znaleziony tekst zawiera nazwę artysty (a nie inny ciąg znaków), musi śledzić swój stan, a w szczególności sprawdzić, czy przetwarzanie znajduje się wewnątrz znacznika <artist>. Jedyny sposób, aby parser mógł to stwierdzić, polega na zastosowaniu zmiennej globalnej $is_artist, której przypisywana jest wartość prawdziwa w przypadku, gdy otwierany jest znacznik <artist>. Zmienna globalna $serial wykorzystuje to samo podejście: zapisuje wartość numeru seryjnego w przypadku, gdy funkcja start() znajdzie atrybut serial znacznika <cd>. Dzięki temu funkcja print() w funkcji zwrotnej text() wypisuje prawidłowy numer seryjny aktualnie przetwarzanej płyty CD. To podejście zakłada, że każda płyta CD ma zdefiniowany atrybut <serial>, lecz tego możemy dopilnować, stosując kontrole poprawności składni bazy, na przykład za pomocą DTD. Modułu XML::Parser z reguły nie stosuje się bezpośrednio, lecz jako klasę bazową dla własnej klasy użytkownika. W rzeczywistości omówiony wcześniej XML::Simple może niejawnie wykorzystywać XML::Parser, jest to uzależnione od środowiska instalacji. Jeśli XML::Parser jest zainstalowany, lecz XML::Simple go nie wykorzystuje, można go do tego nakłonić, umieszczając w skrypcie klauzulę $XML::Simple::PREFERRED_PARSER = XML::Parser ;. W przypadku, gdy użytkownik pracuje na platformie, dla której nie jest dostępny Listing 4: htmlparse 03 use HTML::Parser; 05 my $p = HTML::Parser->new( 06 api_version => 3, 07 start_h => [ 08 \&start, "tagname, attr" 09 ], 10 text_h => [ \&text, "dtext" ], 12 xml_mode => 1, 13 ); 15 $p->parse_file("data.xml") 16 or die "Nie można przetworzyć"; my $serial; 19 my $artist; ############################# 22 sub start { 23 ############################# 24 my ( $tag, $attrs ) if ( $tag eq "cd" ) { 27 $serial = 28 $attrs->{serial}; 29 } $artist = 32 ( $tag eq "artist" ); 33 } ############################# 36 sub text { 37 ############################# 38 my ($text) if ($artist and 41 $text eq 42 "Foo Fighters" ) { 43 print "$serial\n"; 44 } 45 } 72 NUMER 20 PAŹDZIERNIK

4 PROGRAMOWANIE nieważ do pracy potrzebuje działającej instalacji biblioteki expat. Aby uniknąć konieczności instalowania tych wszystkich bibliotek, można do pracy wykorzystać HTML::Parser lub inną bibliotekę dostępną w archiwum CPAN. Warunki są dwa: składnia nie może wiele się różnić i musi istnieć możliwość modyfikacji trybu xml_mode z nierestrykcyjnej analizy kodu HTML na bardziej wymagający tryb niezbędny w przypadku Kiepskie narzędzia, poprawne wyniki Jeśli przyjrzeć się skryptowi htmlparse z Listingu 4, można zauważyć, że konstruktor HTML::Parser oczekuje nieco innej składni niż jego odpowiednik w XML::Parser. Po zdefiniowaniu wersji API należy podać Listing 5: twig 03 use XML::Twig; 05 my $twig = XML::Twig->new( 06 TwigHandlers => { 07 "/result/cd/artists/artist" 08 => \&artist 09 } 10 ); 12 $twig->parsefile("data.xml"); 13 ############################# 15 sub artist { 16 ############################# 17 my ( $t, $artist ) if ( $artist->text() eq 20 "Foo Fighters" ) { 21 my $cd = 22 $artist->parent() 23 ->parent(); print $cd->att('serial'), 26 "\n"; 27 } # Zwolnienie pamięci zajętej przez 30 # przetworzone drzewo 31 $t->purge(); 32 } parametry start_h i text_h, które definiują funkcje zwrotne dla znacznika otwierającego element oraz dla tekstu poza znacznikami Konstruktor określa również parametry parsera, które mają być obsłużone Rysunek 4: Wynik działania skryptu twigfilter (zmodyfikowana struktora XML) przez funkcje zwrotne: start () otrzyma nazwę otwierającego znacznika i listę atrybutów (w postaci referencji do tablicy), natomiast funkcja text () otrzyma po prostu odnaleziony tekst. Naginanie gałązki Moduł XML::Twig autorstwa Michela Rodriguez stanowi niezwykle efektywny sposób przeprowadzenia odwzorowania struktur danych XML na struktury danych a. Potrafi przetworzyć dokumenty XML tak monstrualnych rozmiarów, przy których XML::Simple po prostu nie daje rady. Dzieje się tak dzięki temu, że zamiast ładować cały plik do pamięci, XML::Twig przetwarza go małymi kawałkami. XML::Twig posiada tak wiele metod nawigacji, że określenie najwygodniejszej dla danego problemu może okazać się trudnym zadaniem. Skrypt twig z Listingu 5 wywołuje konstruktor XML::Twig::new() z parametrem Twighandlers, który powoduje, że gałąź struktury XML /result/cd/artists/artist jest odwzorowywana na funkcję obsługi artist() zdefiniowaną w wierszu 15. Gdy parser XML::Twig napotka znacznik <artist>, wywoła funkcję artist z dwoma parametrami. Pierwszym z nich jest obiekt klasy XML::Twig, drugim jest obiekt XML::Twig::Elt (najwyraźniej Elt to skrót od element ). Ten drugi parametr reprezentuje węzeł w drzewie XML, bezpośrednio do którego jest zaczepiony znacznik <artist>. Metoda text () obiektu XML::Twig::Elt zwraca tekst znajdujący się pomiędzy początkowym a końcowym znacznikiem <artist>. Jeśli tekst ten zawiera ciąg znaków Foo Fighters, wiersze 23 i 24 przejdą w hierarchii dwa poziomy w górę, wywołując dwukrotnie metodę parent(). Odszukany w ten sposób obiekt informacji o płycie CD jest następnie za pomocą metody att() odpytany o dostępność atrybutu serial, którego wartość jest następnie wypisywana. Po przetworzeniu znacznika artist w wierszu 31 jest wywoływana metoda purge(), która zwalnia pamięć wykorzystywaną przez drzewo XML do gałęzi, w której obiekt aktualnie się znajduje. XML::Twig jest wystarczająco inteligentny, aby nie usuwać bezpośrednich przodków bieżącego węzła, lecz usunie rodzeństwo, które zostało już w pełni przetworzone. Ten typ zarządzania pamięcią nie ma większego sensu przy tak małym drzewie XML jak przykładowe, lecz przy gigantycznych dokumentach może być kwestią życia lub śmierci. XML::Twig cechuje się nie tylko eleganckimi funkcjami nawigacyjnymi, skrypt może też zmieniać nazwy znaczników, wywoływać metody dynamicznie zmieniające drzewo, a nawet odrzucające jego fragmenty dla oszczędności pamięci. Weźmy na przykład skrypt twigfilter zli- Listing 6: twigfilter 03 use XML::Twig; 05 my $twig = 06 XML::Twig->new( 07 PrettyPrint => "indented"); $twig->parsefile("data.xml") 10 or die "Błąd parsowania"; 12 my $root = $twig->root(); 13 for my $cd ( 15 $root->children('cd') ) { 16 $cd->att_to_field( 17 'serial', 'id' ); 18 $cd->first_child('artists') 19 ->delete(); 20 $cd->set_gi("compactdisc"); 21 } $root->print(); NUMER 20 PAŹDZIERNIK

5 Rysunek 5: Zapytania XPath w interaktywnej powłoce xsh. stingu 6, który zastępuje składnię atrybutów serial='xxx' znacznika cd z postaci <cd serial= xxx >... </cd> na czytelniejszą postać <cd><id>xxx</id>... </cd>, usuwając przy okazji informacje o artyście. W tym celu skrypt wykorzystuje metodę root() odczytującą obiekt korzenia (<results>). Następnie metoda children() zwraca wszystkich potomków obiektu korzenia, to znaczy elementy cd. Metoda att_to_field() przekształca atrybuty serial elementów cd na samodzielne elementy id. W tym momencie metoda first_child() zwraca już tylko jeden element artist. Metoda delete() tego elementu unicestwia węzeł i usuwa go z drzewa. Na końcu metoda set_gi() (gi to skrót od generic identifier) zmienia nazwę obiektu cd powstałego w wy- niku parsowania znacznika <cd> na nazwę <CompactDisc>. Rysunek 4 przedstawia wynik działania tego skryptu. Parametr PrettyPrint konstruktora o wartości indented powoduje, że funkcja print () wywoływana w wierszu 23 wypisze reprezentację drzewa XML w estetycznie sformatowanej postaci. Moduł XML::Twig daje programistom możliwość pisania niezwykle zwartych programów. Należy jedynie poćwiczyć chwilę, aby nauczyć się odpowiednich technik pracy z tym modułem. XML::XSH Zwolennicy rozwiązań interaktywnych zainteresują się zapewne trybem powłoki xsh modułu XML::XSH. Wywołanie xsh otwiera interpreter tekstowy, w którym można wczytywać dokumenty zapisane na dysku twardym, a nawet odczytywać je bezpośrednio z WWW. Następnie można na tych załadowanych strukturach wykonywać dowolne żądania XPath. Wyniki są wypisywane na ekranie, można więc na bieżąco korygować wywoływane zapytania. Rysunek 5 przedstawia przykładową sesję powłoki: załadowanie dokumentu z dysku twardego (poleceniem open doca = data.xml ), po czym następuje wywołanie ls uruchamiające zapytanie XPath. Wynikiem tego zapytania jest jeden numer seryjny serial='002'. Przedstawiłem tu zaledwie kilka wybranych przykładów z ogromnej kolekcji modułów do obróbki formatu XML dostępnych w archiwum CPAN. XML::XPath, XML::DOM, XML::Mini, XML::SAX i XML::Grove są zaledwie przykładami nieskończonych możliwości programistów języka dotyczących obróbki dokumentów INFO [1] Listingi dla tego artykułu: [2] Podręcznik modułu XML::Twig: 74 NUMER 20 PAŹDZIERNIK

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML Perl a XML Narzędzia informatyczne w językoznawstwie Perl - Przetwarzanie XML Marcin Junczys-Dowmunt junczys@amu.edu.pl Zakład Logiki Stosowanej http://www.logic.amu.edu.pl 31 modułów w CPAN zawiera w

Bardziej szczegółowo

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Być może jesteś doświadczonym programistą, biegle programujesz w Javie, Kompendium PHP 01 Być może jesteś doświadczonym programistą, biegle programujesz w Javie, C++, Pythonie lub jakimś innym języku programowania, których jak myślę, powstało już tyle, że chyba nie ma osoby,

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Służy do wybierania/wyszukiwania fragmentów dokumentu XML. Przypomina trochę ścieżki w systemie operacyjnym. Niech będzie dany dokument XML:

Służy do wybierania/wyszukiwania fragmentów dokumentu XML. Przypomina trochę ścieżki w systemie operacyjnym. Niech będzie dany dokument XML: Podstawy XPATH Służy do wybierania/wyszukiwania fragmentów dokumentu XML. Przypomina trochę ścieżki w systemie operacyjnym. Niech będzie dany dokument XML:

Bardziej szczegółowo

Deklaracja struktury w C++

Deklaracja struktury w C++ Struktury to złożone typy danych pozwalające przechowywać różne informacje. Za pomocą struktur możliwe jest grupowanie wielu zmiennych o różnych typach w jeden obiekt. Strukturę można nazywać obiektem

Bardziej szczegółowo

Systemy operacyjne. Laboratorium 8. Perl find

Systemy operacyjne. Laboratorium 8. Perl find Systemy operacyjne Laboratorium 8 Perl find Temat obejmuje przeszukiwanie drzew katalogowych z użyciem perla oraz podstawowe zdolności w używaniu referencji, tablic asocjacyjnych i mechanizmów typu stat.

Bardziej szczegółowo

Podstawy JavaScript ćwiczenia

Podstawy JavaScript ćwiczenia Podstawy JavaScript ćwiczenia Kontekst:

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0 Słowem wstępu Część rodziny języków XSL Standard: W3C XSLT 1.0-1999 razem XPath 1.0 XSLT 2.0-2007 Trwają prace nad XSLT 3.0 Problem Zakładane przez XML usunięcie danych dotyczących prezentacji pociąga

Bardziej szczegółowo

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet Blok 2 - PHP Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Podstawy podstaw, czyli małe wprowadzenie do PHP, Podstawy

Bardziej szczegółowo

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Modelowanie hierarchicznych struktur w relacyjnych bazach danych Modelowanie hierarchicznych struktur w relacyjnych bazach danych Wiktor Warmus (wiktorwarmus@gmail.com) Kamil Witecki (kamil@witecki.net.pl) 5 maja 2010 Motywacje Teoria relacyjnych baz danych Do czego

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

WYKŁAD 3 XML DOM XML DOCUMENT OBJECT MODEL CZĘŚĆ 1

WYKŁAD 3 XML DOM XML DOCUMENT OBJECT MODEL CZĘŚĆ 1 WYKŁAD 3 XML DOM XML DOCUMENT OBJECT MODEL CZĘŚĆ 1 XML DOM (ang. XML Document Object Model Obiektowy Model Dokumentu XML) Inaczej drzewo DOM to hierarchiczny, obiektowy model dokumentu XML. DOM to platforma

Bardziej szczegółowo

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo

Python wstęp. Michał Bereta www.michalbereta.pl

Python wstęp. Michał Bereta www.michalbereta.pl Python wstęp Michał Bereta www.michalbereta.pl Wprowadzenie... 1 Źródła wiedzy... 1 Uruchomienie interpretera Pythona... 2 Python jako kalkulator użycie interaktyne... 2 Uruchamianie skryptów z plików...

Bardziej szczegółowo

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane Extensible Markup Language (XML) Wrocław, 15.03.2019 - Java - technologie zaawansowane Wprowadzenie XML jest językiem znaczników (ang. markup language) używanym do definiowania zbioru zasad rozmieszczenia

Bardziej szczegółowo

Języki i techniki programowania Ćwiczenia 2

Języki i techniki programowania Ćwiczenia 2 Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...

Bardziej szczegółowo

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists()

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists() 4. Pliki 4.1. Informacje ogólne o dostępie do plików w PHP Jak praktycznie każdy język programowania, PHP zapewnia dostęp do systemu plików znajdujących się na komputerze, na którym uruchamiany jest skrypt,

Bardziej szczegółowo

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane

Bardziej szczegółowo

Diagnostyka pamięci RAM

Diagnostyka pamięci RAM Diagnostyka pamięci RAM 1 (Pobrane z slow7.pl) Uszkodzenie pamięci RAM jest jednym z najczęściej występujących problemów związanych z niestabilnym działaniem komputera. Efektem uszkodzenia kości RAM są

Bardziej szczegółowo

Zaawansowane programowanie obiektowe - wykład 5

Zaawansowane programowanie obiektowe - wykład 5 Zaawansowane programowanie obiektowe - wykład 5 dr Piotr Jastrzębski (czynnościowe) opisują zachowanie obiektów, komunikację pomiędzy nimi i ich odpowiedzialność. Interpreter Iterator (kursor) Łańcuch

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 5. 30 października 2013 Plan wykładu 1 2 3 4 yield from Zamiast Example for item in iterable: yield item: można pisać Example yield from iterable Plan wykładu 1 2 3 4 Przykłady wyrażeń regularnych

Bardziej szczegółowo

Materiały do laboratorium MS ACCESS BASIC

Materiały do laboratorium MS ACCESS BASIC Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I

Bardziej szczegółowo

Ćwiczenie: JavaScript Cookies (3x45 minut)

Ćwiczenie: JavaScript Cookies (3x45 minut) Ćwiczenie: JavaScript Cookies (3x45 minut) Cookies niewielkie porcje danych tekstowych, które mogą być przesyłane między serwerem a przeglądarką. Przeglądarka przechowuje te dane przez określony czas.

Bardziej szczegółowo

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,

Bardziej szczegółowo

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych Katedra Mikroelektroniki i Technik Informatycznych Łódź, 14 października 2005 roku Wstęp DOM Document Object Model zapewnia: Zbiór obiektów reprezentujących dokumenty XML i HTML. Model łączenia obiektów.

Bardziej szczegółowo

Pawel@Kasprowski.pl Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Pawel@Kasprowski.pl Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07 PHP i bazy danych Paweł Kasprowski pawel@kasprowski.pl Użycie baz danych Bazy danych używane są w 90% aplikacji PHP Najczęściej jest to MySQL Funkcje dotyczące baz danych używają języka SQL Przydaje się

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie

Bardziej szczegółowo

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki LINQ TO XML Celem ćwiczenia jest zapoznanie się z możliwościami przetwarzania dokumentów XML na platformie.net. W toku zadania zostaną przedstawione dwie technologie: LINQ TO XML i XPath. Autor ćwiczenia:

Bardziej szczegółowo

Metody Kompilacji Wykład 1 Wstęp

Metody Kompilacji Wykład 1 Wstęp Metody Kompilacji Wykład 1 Wstęp Literatura: Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman: Compilers: Princiles, Techniques, and Tools. Addison-Wesley 1986, ISBN 0-201-10088-6 Literatura: Alfred V. Aho,

Bardziej szczegółowo

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost; Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z dużej ilości danych zapisanych na serwerze jest współpraca z relacyjną bazą danych. 2 1. Utworzyć bazę danych.

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 - Wprowadzenie Co to jest kursor?

Bardziej szczegółowo

System plików warstwa logiczna

System plików warstwa logiczna Dariusz Wawrzyniak Pojęcie u Plik jest abstrakcyjnym obrazem informacji gromadzonej i udostępnianej przez system komputerowy. Plik jest podstawową jednostką logiczną magazynowania informacji w systemie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Laboratorium 7 Blog: dodawanie i edycja wpisów

Laboratorium 7 Blog: dodawanie i edycja wpisów Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w obrębie skryptu. Wyrażenia include() i require() są niemal

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

Łączenie liczb i tekstu.

Łączenie liczb i tekstu. Łączenie liczb i tekstu. 1 (Pobrane z slow7.pl) Rozpoczynamy od sposobu pierwszego. Mamy arkusz przedstawiony na rysunku poniżej w którym zostały zawarte wypłaty pracowników z wykonanym podsumowaniem.

Bardziej szczegółowo

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Wykorzystywanie parsera DOM w programach Java i PL/SQL Wykorzystywanie parsera DOM w programach Java i PL/SQL Maciej Zakrzewicz mzakrz@cs.put.poznan.pl http://www.cs.put.poznan.pl/~mzakrz/ Parser DOM Aplikacja DOM API Parser DOM Dokument XML Drzewo DOM Parser

Bardziej szczegółowo

Dlaczego GML? Gdańsk r. Karol Stachura

Dlaczego GML? Gdańsk r. Karol Stachura Dlaczego GML? Gdańsk 13.03.2017r. Karol Stachura Zanim o GML najpierw o XML Dlaczego stosuje się pliki XML: Tekstowe Samoopisujące się Elastyczne Łatwe do zmiany bez zaawansowanego oprogramowania Posiadające

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

Pliki. Operacje na plikach w Pascalu

Pliki. Operacje na plikach w Pascalu Pliki. Operacje na plikach w Pascalu ścieżka zapisu, pliki elementowe, tekstowe, operacja plikowa, etapy, assign, zmienna plikowa, skojarzenie, tryby otwarcia, reset, rewrite, append, read, write, buforowanie

Bardziej szczegółowo

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only. System Szablonów

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only. System Szablonów System Szablonów System szablonów System szablonów to biblioteka, która pozwala oddzielić warstwę prezentacji od warstwy logicznej. Aplikacja WWW najpierw pobiera wszystkie dane, przetwarza je i umieszcza

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy

Bardziej szczegółowo

Wyszukiwanie plików w systemie Windows

Wyszukiwanie plików w systemie Windows 1 (Pobrane z slow7.pl) Bardzo często pracując na komputerze prędzej czy później łapiemy się na pytaniu - Gdzie jest ten plik? Zapisujemy i pobieramy masę plików i w nawale pracy pewne czynności są wykonywane

Bardziej szczegółowo

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób. Zadanie: Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób. Na kolejnych zajęciach projekt będzie rozwijana i uzupełniana o kolejne elementy omawiane

Bardziej szczegółowo

Kopiowanie, przenoszenie plików i folderów

Kopiowanie, przenoszenie plików i folderów Kopiowanie, przenoszenie plików i folderów Pliki i foldery znajdujące się na dysku można kopiować lub przenosić zarówno w ramach jednego dysku jak i między różnymi nośnikami (np. pendrive, karta pamięci,

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Windows XP - lekcja 3 Praca z plikami i folderami Ćwiczenia zawarte w tym rozdziale pozwolą na tworzenie, usuwanie i zarządzanie plikami oraz folderami znajdującymi się na dysku twardym. Jedną z nowości

Bardziej szczegółowo

Przykładowy dokument XML

Przykładowy dokument XML Język XML XML (extensible Markup Language, czyli rozszerzalny język znaczników) to specyfikacja dotycząca przechowywania informacji. Jest to również specyfikacja opisujaca strukturę tych informacji. XML

Bardziej szczegółowo

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę. Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 5 Kursory w SQL Serverze Wprowadzenie Modele kursorów Używanie kursorów Rodzaje kursorów Praca

Bardziej szczegółowo

Programowanie obiektowe i C++ dla matematyków

Programowanie obiektowe i C++ dla matematyków Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 22 XI 2011 Uwaga! Ponieważ już sobie powiedzieliśmy np. o wskaźnikach i referencjach, przez które nie chcemy przegrzebywać

Bardziej szczegółowo

Bibliotek grid została stworzona aby wykorzystywać funkcje programu R ( oraz wprowadzone do programu R) do tworzenia odwzorowań typu grid oraz siatek

Bibliotek grid została stworzona aby wykorzystywać funkcje programu R ( oraz wprowadzone do programu R) do tworzenia odwzorowań typu grid oraz siatek Paulina Lewińska Bibliotek grid została stworzona aby wykorzystywać funkcje programu R ( oraz wprowadzone do programu R) do tworzenia odwzorowań typu grid oraz siatek punktów. Dodatkowo pozwala ona użytkownikom

Bardziej szczegółowo

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik Wizualne systemy programowania Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Kolekcje List

Bardziej szczegółowo

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 4 Budowa prostych formularzy, stany sesji, tworzenie przycisków Plan Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 2 Formularz i jego typy Tworzenie formularza

Bardziej szczegółowo

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady

Bardziej szczegółowo

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty

Bardziej szczegółowo

System operacyjny Linux

System operacyjny Linux Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 2 Instalacja opensuse Przygotowanie do instalacji Konfiguracja instalacji Zakończenie instalacji Instalacja oprogramowania Program

Bardziej szczegółowo

5.4. Tworzymy formularze

5.4. Tworzymy formularze 5.4. Tworzymy formularze Zastosowanie formularzy Formularz to obiekt bazy danych, który daje możliwość tworzenia i modyfikacji danych w tabeli lub kwerendzie. Jego wielką zaletą jest umiejętność zautomatyzowania

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

1 Moduł Inteligentnego Głośnika

1 Moduł Inteligentnego Głośnika 1 Moduł Inteligentnego Głośnika Moduł Inteligentnego Głośnika zapewnia obsługę urządzenia fizycznego odtwarzającego komunikaty dźwiękowe. Dzięki niemu możliwa jest konfiguracja tego elementu Systemu oraz

Bardziej szczegółowo

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika Prowadzący: Dr inż. Jacek Habel Instytut Technologii Maszyn i Automatyzacji Produkcji Zakład Projektowania Procesów

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej I NIC sieci Pamięć operacyjna Przerwania Przerwania

Bardziej szczegółowo

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1 WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1 SGML (Standard Generalized Markup Language) Standardowy uogólniony język znaczników służący do ujednolicania struktury i formatu różnego typu informacji (danych). Twórcy

Bardziej szczegółowo

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017 Systemy operacyjne Laboratorium 9 Perl wyrażenia regularne Jarosław Rudy Politechnika Wrocławska 28 lutego 2017 Temat obejmuje wykorzystanie wyrażeń regularnych w perlu. Wyrażenia same w sobie są w zasadzie

Bardziej szczegółowo

1 Moduł Inteligentnego Głośnika 3

1 Moduł Inteligentnego Głośnika 3 Spis treści 1 Moduł Inteligentnego Głośnika 3 1.1 Konfigurowanie Modułu Inteligentnego Głośnika........... 3 1.1.1 Lista elementów Modułu Inteligentnego Głośnika....... 3 1.1.2 Konfigurowanie elementu

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

Model semistrukturalny

Model semistrukturalny Model semistrukturalny standaryzacja danych z różnych źródeł realizacja złożonej struktury zależności, wielokrotne zagnieżdżania zobrazowane przez grafy skierowane model samoopisujący się wielkości i typy

Bardziej szczegółowo

Użycie Visual Basic for Applications ("VBA")

Użycie Visual Basic for Applications (VBA) Użycie Visual Basic for Applications ("VBA") Przegląd SEE z modułem VBA Developer SEE używa języka programowania Visual Basic for Applications (VBA) pozwalającego tworzyć krótkie programy zwane "makrami".

Bardziej szczegółowo

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja Część VIII C++ Przedrostkowa i przyrostkowa inkrementacja i dekrementacja W poprzednim ćwiczeniu operatory inkrementacji i dekrementacji występowały w wersji przyrostkowej. Istnieje inny sposób zapisu

Bardziej szczegółowo

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale

Bardziej szczegółowo

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne Baza danych sql 1. Wprowadzenie Do tej pory operowaliście na listach. W tej instrukcji pokazane zostanie jak stworzyć bazę danych. W zadaniu skorzystamy z możliwości utworzenia struktury bazy danych z

Bardziej szczegółowo

Java EE produkcja oprogramowania

Java EE produkcja oprogramowania Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez

Bardziej szczegółowo

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują

Bardziej szczegółowo

Wykład 5: Klasy cz. 3

Wykład 5: Klasy cz. 3 Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu

Bardziej szczegółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD Języki C i C++ Wykład: 2 Wstęp Instrukcje sterujące 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Instrukcje sterujące 2 Pętla for for ( instrukcja_ini ; wyrazenie_warunkowe

Bardziej szczegółowo

Metody Kompilacji Wykład 3

Metody Kompilacji Wykład 3 Metody Kompilacji Wykład 3 odbywa się poprzez dołączenie zasad(reguł) lub fragmentów kodu do produkcji w gramatyce. Włodzimierz Bielecki WI ZUT 2 Na przykład, dla produkcji expr -> expr 1 + term możemy

Bardziej szczegółowo

Spis treści. Rozdział 1. Aplikacje konsoli w stylu ANSI C i podstawowe operacje w Visual C++... 7

Spis treści. Rozdział 1. Aplikacje konsoli w stylu ANSI C i podstawowe operacje w Visual C++... 7 Spis treści Wprowadzenie...n...n... 5 Jak korzystać z tej książki?...t... 6 Rozdział 1. Aplikacje konsoli w stylu ANSI C i podstawowe operacje w Visual C++... 7 Podsumowanie...t...t...15 Rozdział 2. Rozdział

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

Funkcje i instrukcje języka JavaScript

Funkcje i instrukcje języka JavaScript Funkcje i instrukcje języka JavaScript 1. Cele lekcji a) Wiadomości Uczeń : zna operatory i typy danych języka JavaScript, zna konstrukcję definicji funkcji, zna pętlę If i For, Do i While oraz podaje

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Przestrzenie nazw Standardowa biblioteka szablonów

Bardziej szczegółowo

Instrukcja instalacji PHP-Hypercachera Refresher Standard oraz PHP-Hypercachera Refresher GZIP na Twojej witrynie

Instrukcja instalacji PHP-Hypercachera Refresher Standard oraz PHP-Hypercachera Refresher GZIP na Twojej witrynie Instrukcja instalacji PHP-Hypercachera Refresher Standard oraz PHP-Hypercachera Refresher GZIP na Twojej witrynie 1. Instalacja w zwykłym skrypcie PHP Instalacja PHP Hypercachera Refresher Standard i PHP

Bardziej szczegółowo

Argumenty wywołania programu, operacje na plikach

Argumenty wywołania programu, operacje na plikach Temat zajęć: Argumenty wywołania programu, operacje na plikach Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Zmienne statyczne) W języku C można decydować o sposobie przechowywania zmiennych. Decydują

Bardziej szczegółowo

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists() Paweł Gmys PHP strona 1 Lekcja 10 Uprawnienia Aby skrypt PHP mógł odwołać się do pliku, musi mieć odpowiednie uprawnienia. Szczegóły są zależne od serwera. Najczęściej chyba skrypt ma uprawnienia takie,

Bardziej szczegółowo

Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT

Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT O co chodzi? - Przypomnienie Hackathon - http://en.wikipedia.org/wiki/hackathon A hackathon is an event in which computer programmers

Bardziej szczegółowo

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod: 1. Listener dla przycisku. Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod: W linii 24 tworzymy globalną metodę mglobal_onclicklistener,

Bardziej szczegółowo