PERL HISTORIA. Możliwości związane z CGI, uniwersalność oraz fakt, że Perl jest językiem darmowym stało się przyczyną jego dynamicznego rozwoju.

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

Download "PERL HISTORIA. Możliwości związane z CGI, uniwersalność oraz fakt, że Perl jest językiem darmowym stało się przyczyną jego dynamicznego rozwoju."

Transkrypt

1 PERL Internetowe Bazy Danych wykład 12 HISTORIA Perl (Pracitcal Extraction and Report Language) jest jednym z języków programowania. Z założenia zaprojektowany został jako uzupełnienie systemu operacyjnego Unix oraz jego różnych odmian. Działa on jednak na innych platformach wliczając w to MS-DOS oraz wszystkie odmiany Windows. Perl posiada wiele cech języka C, sed, awk oraz Bourne shell. Dostępne są narzędzia pozwalające na przenoszenie skryptów z owych języków do poziomu Perla. Jest on zarazem jednym z najbardziej uniwersalnych języków programowania dostępnych w obecnym czasie. W przeciwieństwie do innych nie wymaga wykonywania różnych sztuczek gdy chce się go uruchomić w innych systemach operacyjnych. Tutaj wystarczy tylko znać poszczególne warianty poleceń podawanych interpreterowi. Trzeba bowiem wspomnieć, że Perl nie jest językiem kompilowanym lecz jednym z najszybszych interpretowanych. Przed wykonaniem zadanego skryptu, jest on sczytywany do pamięci i tam "formatowany" do wewnętrznego wykonywalnego formatu. Perl nie narzuca ograniczeń na dane - napisy i tablice mogą być dowolnej długości (pod warunkiem, że starczy miejsca w pamięci) zostały bowiem tak zaprojektowane aby dopasowywały się do rozmiarów danych. Jedną z głównych zalet tego języka jest jego bezpieczeństwo. Pracując na przykład w trybie administratora można, przed uzyskaniem dostępu do ważnych struktur systemowych, zmienić swoją pozycję w systemie tak aby nie spowodować swoją działalnością żadnych poważniejszych szkód. Programując w Perlu jesteśmy chronieni przed skutkami przypadkowego naruszenia bezpieczeństwa, ponieważ "obserwuje" on dane pochodzące z niepewnych źródeł i uniemożliwia wykonywanie niebezpiecznych operacji. Nazywa się to mechanizmem śledzenia danych. Powiązana z tym jest możliwość dołączenia chronionych przestrzeni, gdzie można bez problemów testować potencjalnie niebezpieczne kody bez żadnych szkód dla systemu operacyjnego. Perl od czasu swego powstania bardzo się rozwinął. Przestał służyć tylko do różnorodnych operacji na plikach, lecz w tej chwili jest on obecny we wszelkich możliwych dziedzinach - związanych z komputerami oczywiście. Jedną z dziedzin, która najbardziej się rozwinęła jest niewątpliwie CGI (Common Gateway Interface) zwane również wspólnym interfejsem bramy. Znajduje to bardzo szerokie zastosowanie przy projektowaniu i uatrakcyjnianiu stron WWW. Nieumiejętne użycie modułu powoduje jednak luki w systemie operacyjnym przez które można w łatwy sposób do niego się dostać. Możliwości związane z CGI, uniwersalność oraz fakt, że Perl jest językiem darmowym stało się przyczyną jego dynamicznego rozwoju

2 INSTALACJA I KONFIGURACJA Na początek trzeba zaopatrzyć się w Perla - najlepiej poszukać go na jednej z płyt dołączanych do przeróżnych czasopism komputerowych lub po prostu ściągnąć go z internetu (ftp.cpan.org). Następnie pliki należy rozpakować (opis instalacji dla systemu Linux - pod Windowsem wystarczy po prostu użyć Zip'a): gunzip < pliki.tar.gz tar xvf - cd nazwa_rozpakowanego_katalogu Po rozpakowaniu należy program skonfigurować poleceniami: sh configure - dla konfiguracji automatycznej sh Configure - dla konfiguracji ręcznej I na koniec pozostaje zaalokowanie programu w systemie: make - stworzenie Perla make test - testowanie programu make install - zainstalowanie w systemie To powoduje, że w systemie pojawia się prawidłowy opisywany tu język gotowy do użycia. Trochę inaczej instaluje się wybrane moduły, ale o tym później. Perl, podobnie jak C, jest językiem bez ścisłego, koniecznego do zachowania poprawności skryptu, formatu. Definiowanie typów, zmiennych i procedur przed przystąpieniem do pisania właściwego programu jest niewątpliwie przydatne w przypadku tworzenia bardziej skomplikowanej struktury, lecz zupełnie niepotrzebne podczas pisania na przykład prostego programiku. Perl pozwala pominąć owe niepotrzebne linijki, zaoszczędzając przez to czasu programiście. print "Witaj, szkoło.\n"; Spowoduje to po prostu wypisanie na ekranie tekstu "Witaj, szkoło", bez żadnych dodatkowych, zbędnych w tym przypadku deklaracji zmiennych czy przypisywaniu dodatkowo wykonywanych procedur. To między innymi różni ten język od C, który wymaga na starcie programu przynajmniej podania linii #include. Podobnie jednak jak w C, każda komenda musi się kończyć ";". Natomiast tekst rozpoczynający się od znaku hash "#" jest traktowany przez interpreter jako komentarz. Najczęściej używanym do skryptów Perla rozszerzeniem jest.pl. Pierwsza linijka kodu powinna wyglądać następująco: bądź #!/usr/bin/perl #!/usr/local/bin/perl Jest ona różna dla innych systemów operacyjnych a wskazuje umiejscowienie interpretera na dysku. Nie jest ona jednak niezbędna do działania programu. Teoretycznie linijka ta powinna być traktowana jako komentarz ponieważ rozpoczyna się od znaku "#". Jest jednak inaczej. Jeżeli jej nie ma wcale to nie można uruchomić skryptu z polecenia./nazwa_skryptu ani wpisując samą nazwę programu. Trzeba wtedy podać bezpośrednio interpreter, który ma się zająć danym programem. W niektórych systemach bywa też tak, że nawet jeśli owa linijka znajduje się na pierwszym miejscu w - 2 -

3 skrypcie to próba wywołania go z komendy./nazwa_skryptu lub sama nazwa_skryptu kończy się niepowodzeniem. Wtedy najlepiej dopisać na samym końcu linii -s. Wygląda to tak: #!/usr/bin/perl -s Powoduje to zwykłe wywołanie jednej z funkcji dostępnych dla interpretera a mających za zadanie ułatwiać pisanie programów. Generalnie jednak w zdecydowanej większości systemów wystarczy wpisać tę linijkę na pierwszym miejscu. Oprócz tego może zaistnieć błąd jeszcze innej natury. Niektóre starsze systemu unixowe nie akceptują po prostu zapisu!# - tzw. "notacja shebang". Rozwiązania tego problemu są różne dla różnych systemów operacyjnych. Najprostszy program będzie więc wyglądał następująco: #!/usr/bin/perl print "Witaj, szkoło!"; Program napisać można w zwykłym pliku tekstowym za pomocą dowolnego edytora. Można mu nadać rozszerzenie bądź nie. Następnie trzeba mu nadać atrybuty pozwalające na jego wykonywanie poleceniem "chmod u+x nazwa_skryptu" lub spod trybu graficznego wywołując okno właściwości danego pliku. Uruchamiamy skrypt poleceniem: nazwa_skryptu - gdy znajduje się w katalogu na ścieżce./nazwa_skryptu - gdy nie ma w katalogu na ścieżce, jest w katalogu bieżącym perl nazwa_skryptu - podajemy go po prostu jako parametr dla interpretera W ostatnim wypadku możemy pominąć atrybuty wykonywalności dla pliku. interpreter i tak wykona zadaną czynność. Aby ułatwić, szczególnie początkującym, programistom pisanie skryptów i ich testowanie od niedawna interpreter można wywołać z bardzo przydatną funkcją -w. Jest to funkcja ostrzegająca przed różnymi błędami, które mogły zaistnieć w skrypcie, na przykład: zmienne skalarne użyte przed przypisaniem im wartości, odwołania do niezidentyfikowanych uchwytów plików lub plików, które są otwarte tylko w trybie czytania a my próbujemy coś do nich zapisać. Oprócz tej możliwości interpreter posiada również inne wywoływane w sposób perl -x, gdzie x to odpowiednia litera. Oto niektóre z przydatniejszych: -c działanie podobne jak funkcji opisywanej powyżej z tą różnicą, że Perl sprawdzi składnię skryptu bez jego uruchamiania -e linia_poleceń pozwala na wprowadzenie jednego lub więcej wierszy skryptu. Interpreter nie szuka w tym przypadku samego skryptu lecz pozwala niejako na napisanie nowego -n p skrypt zostaje umieszczony w specjalnej pętli, która spowoduje powtarzanie skryptu dla kolejnych plików wymienionych w argumentach -P przed prawidłową kompilacją program zostaje przetworzony przez procesor C -T jest to włączenie sprawdzania zagrożeń -u powoduje wykonanie tzw. "core dump" czyli zrzucenie ekranu po wykonaniu zadanego skryptu. Można następnie przekształcić to na plik wykonywalny za pomocą programu undump". Jest to jednak ograniczone bowiem "undump" nie jest dostępny na wszystkie platformy, na których można używać samego Perla. -U pozwala na wykonanie niebezpiecznych operacji -x katalog nakazuje Perlowi wydobycie skryptu z dowolnego pliku. Bezużyteczna jego część zostaje pominięta aż do odnalezienia ciągu rozpoczynającego się od #! i zawierającego słowo perl

4 ZMIENNE I TABLICE ZMIENNYCH Zmienna to nic innego jak wygodny schowek mający swoją nazwę, który pozwala nam przechować jakąś ważną dla nas wiadomość i w razie potrzeby udostępnia ją. Można je dzielić według różnych kryteriów ale najbardziej przydatnym jest podział ze względu na rodzaj przechowywanych danych. Najogólniej zmienne dzielą się na napisy i liczby oraz listy, które są z nich złożone. Pierwsza grupa nazywa się skalarem a druga mnogością - tablicą. W Perlu zmienna zawsze rozpoczyna się od znaczka dolara "$". Nie musimy zawczasu definiować rodzaju zmiennej jakiej chcemy użyć. Istnieje jednak różnica w definiowaniu pojedynczej zmiennej a tablicy: pierwszą zmienną używamy podając przy jej deklaracji na samym początku znak "$" - oznacza to zmienną typu skalarnego, tablicę natomiast definiujemy podając zamiast znaczka dolara Łatwo skojarzyć oba sposoby zapamiętując $kalar (tablica z angielskiego). Wykorzystując zmienne można nieco wydłużyć napisany wcześniej program. #!/usr/bin/perl $tekst = "Witaj szkoło!"; #deklaracja zmiennej skalarnej tekst print $tekst; #wypisanie zmiennej W Perlu wyzróżniamy pięć typów zmiennych: Typ zmiennej Znak Deklaracja Opis Skalar $ $zdanie Pojedyncza wartość - liczba lub Hasz % %rok Lista wartości opisana kolejnymi liczbami Grupa pewnych wartości - kluczem jest napis Typeglob * *zmienna "Coś" o nazwie zmienna Procedura & &kod Część kodu, który można wywołać W Perlu podobnie jak w wielu innych językach przypisanie zmiennych odbywa się za pomocą operatora "=". Oprócz przypisania standartowych wartości zmiennej skalarnej takich jak liczba czy ciąg wyrazów można również przypisać jej odwołanie do innej zmiennej bądź obiektu. O rodzaju do jakiego zostaje zakwalifikowana zmienna decydują cudzysłowy: podwójny " " - dokonuje interpolacji zmiennych a także odwrotnego ukośnika (np. \n w znak nowego wiersza), pojedynczy ' ' - wyłącza zupełnie interpolację, pojedyncze odwrotne apostrofy ' ' - powodują wykonanie oddzielnego zewnętrznego programu i zwrócenie jego danych wyjściowych w ten sposób by można było je odczytać jako jeden napis, zawierający wszystkie wiersze wyjścia. $liczba = 50; #liczba zwykła $wartosc = 2.2e23; #liczba zapisana "naukowo" $samochod = "Volvo"; #zwykły napis $zdanie = "Najlepszy $samochod"; #napis z interpolacja $koszt = 'Cena wynosi $500'; #napis bez interpolacji $zmienna1 = $zmienna2; #odwołanie do innej zmiennej $koniec = 'pwd'; #wywołanie zewnętrznego programu - koniec programu - 4 -

5 Inny przykład zastosowania odpowiednich cudzysłowów: $a = 'jeden'; $b = 'dwa'; $c = 'trzy'; print $a.'-'.$b.'-'.$c; #wypisuje jeden - dwa - trzy print '$a - $b - $c'; #wypisuje $a - $b - $c print "$a - $b - $c"; #wypisuje jeden - dwa - trzy Kompilator rozróżnia wielkie i małe litery. Tak więc mogą istnieć dwie różne zmienne, jedna $w a druga $W i nie będą ze sobą mylone. Nazwy zmiennych można dobierać dowolnie, mogą nimi być kombinacje liter i cyfr o nieograniczonych długościach. Od tej zasady jest jednak kilka wyjątków. Najważniejszym z nich jest zmienna opisywana jako "$_". Jest to typ zmiennej domyślnej, która jest używana raczej przez doświadczonych programistów. Pozwala ona wyeliminować część kodu przez to skracając program i eliminując zbyt dużą liczbę użytych zmiennych. Operacje są na niej wykonywane jeśli nie została wyspecyfikowana inna zmienna. Na przykład: $zdanie = 'Pies i kot za sobą nie przepadają.'; if ($zdanie =~/kot/) print 'Znalazłem wyraz kot.'; Jak widać przykład ten powoduje wyszukanie w podanej zmiennej wyrazu "kot" i wyświetlenie informacji o jego ewentualnej obecności. Można to jednak zapisać nieco prościej stosując zmienną domyślną "$_": $_ = 'Pies i kot za sobą nie przepadają.'; if (/kot/) print 'Znalazłem wyraz kot.'; W przypadku tego małego fragmentu kodu nie widać szczególnie dużej oszczędności czasu czy miejsca wprowadzając do użycia zmienną domyślną, ale przy bardzo rozbudowanych programach jest ona przydatna i stosowana. Wspomniana już druga grupa zmiennych to ogólnie nazywając mnogości. Pewne rodzaje stosowanych zmiennych mają za zadanie przechowywać wiele logicznie ze sobą powiązanych wartości. Do realizacji tego w Perlu można się posłużyć dwoma typami zmiennych: tablicą oraz haszem. Tablice stosujemy wtedy gdy chcemy znaleźć konkretną wartość za pomocą przyporządkowanej jej liczbie, hasz natomiast wyszukuje po nazwach. Tablice to nic innego jak uporządkowane listy skalarów, które można odczytać podając kolejny jego numer na liście. Znajdować się tam mogą zarówno liczby, napisy jak i mieszanka obu. Żeby przypisać listę danej tablicy wystarczy tylko zgrupować odpowiednie zmienne (najczęściej jakoś logicznie ze sobą powiązane) = ("azot", "tlen", "hel", "wodór"); - 5 -

6 Należy pamiętać przy tym, że odwołując się do zmiennej umieszczonej w tablicy należy podać jej numer licząc jako początek tablicy wartość 0 tzn. że np. tlen z jest skalarem numer 1 a nie 2. Indeksy tablic zawiera się w nawiasach kwadratowych. Jeśli zajmujemy się pojedynczym elementem tablicy używamy więc składni $gazy[n] gdzie n jest wybranym numerem zmiennej. Pojawia się znak dolara $ - ponieważ mamy cały czas do czynienia ze zmiennymi skalarnymi. Zamiast przypisu tablicy "ciągiem" powyżej) można zrobić to samo wpisując każdą wartość pojedynczo: $gazy[0] = "azot"; $gazy[1] = "tlen"; $gazy[2] = "hel"; $gazy[3] = "wodór"; Tablice są uporządkowane co pozwala nam na wykonywanie na nich wielu użytecznych operacji. Jedną z nich jest posługiwanie się tablicami jak swego rodzaju stosem używając nawet poleceń odnoszących się z reguły do stosu: push oraz pop. Wykorzystując komendę push można do tablicy przypisać dowolną zmienną: "argon"); Spowoduje dodanie kolejnego - piątego elementu do "argon", "neon"); Spowoduje dodanie do dwóch elementów za jednym razem. Ważną właściwością tablic jest możliwość dodawania ich do siebie Do zdejmowania wartości z danej tablicy służy polecenie pop: $z = W tym przypadku następuje usunięcie ostatniego elementu ale zostaje on przypisany zmiennej $z. W Perlu możliwe jest przypisanie zmiennej skalarnej tablicy. Można to wykonać następująco: $a #zmienna $a zawiera liczbę elementów $b = #w przeciwieństwie do poprzedniego polecenia to powoduje przypisanie zmiennej $b łańcucha składającego się z kolejnych elementów oddzielonych spacjami Do wypisania zawartości tablicy możemy posłużyć się jednym z poleceń: #wypisuje elementy tablicy jednym ciągiem print #to samo co wyżej tyle że oddziela elementy spacjami #wypisuje tylko ilość elementów danej tablicy - 6 -

7 Hasz jest nieuporządkowanym zbiorem skalarów. Udostępnia swoje wartości nie przez podanie kolejnego ich numeru a poprzez wywołanie napisu z nimi skojarzonego. Hasze nazywane są bardzo często tablicami asocjacyjnymi. W przeciwieństwie do typowych tablic mają one strukturę nieuporządkowaną więc nie można na nich działać poleceniami typu push i pop. Klucze do hasza nie zależą od położenia dlatego podczas wprowadzania określonych elementów trzeba dostarczyć klucz i wartość. Nic nie stoi na przeszkodzie aby przypisać haszowi listę tak jak było to robione przy zwykłych tablicach, lecz tutaj każda para elementów będzie traktowana automatycznie jako para typu klucz/wartość. Przed haszem zamiast stoi jednak znak procenta %. Przykładowy hasz może wyglądać następująco: %rok = ("St", "styczeń", "Lt", "luty", "Ma", "marzec", "Kw", "kwiecień", "Maj", "maj", "Cz", "czerwiec", "Lip", "lipiec", "Si", "sierpień", "Wrz", "wrzesień", "Pa", "październik", "Lis", "listopad", "Gr", "grudzień"); Jak widać hasz zawiera 12 kluczy i 12 odpowiadających im wartości. Jest on napisany poprawnie jednak dosyć nieczytelnie i gdyby było więcej par klucz/wartość to znalezienie jakiejś konkretnej byłoby dosyć czasochłonne. Dlatego w Perlu zamiast przecinka odgradzającego klucze od wartości można użyć separatora =>. Po zamianie wygląda to tak: %rok = ( "St" => "styczeń", "Lt" => "luty", "Ma" => "marzec", "Kw" => "kwiecień", "Maj" => "maj", "Cz" => "czerwiec", "Lip" => "lipiec", "Si" => "sierpień", "Wrz" => "wrzesień", "Pa" => "październik", "Lis" => "listopad", "Gr" => "grudzień" ); Niewątpliwie jest to o wiele bardziej przejrzysta forma zapisu dłuższego hasza. Pojedynczy element z hasza jest wybierany za pomocą nawiasów klamrowych. Gdyby trzeba było znaleźć wartość skojarzoną z kluczem "Si" w tym haszu trzeba by było użyć konstrukcji $rok"si". Wyrażenie to zwróci wartość "sierpień". Nadal jednak jako typ zmiennej używamy skalara - czyli znak $ a nie %, mimo iż właśnie tak oznaczamy tablice hasza. Perl pozwala konwertować zwykłe tablice na tablice asocjacyjne (hasze) i na = %rok ma ułożenie takie jak pierwszy nieuporządkowany zapis hasza %rok powyżej z tym, że odwołujemy się do niego według zasad normalnej tablicy tzn. liczbowo %rok1 #od teraz hasz %rok1 ma taką samą zawartość jak %rok - 7 -

8 Oprócz tablic, które może utworzyć sam programista i użytkownik w Perlu istnieją także tablice i hasze tzw. globalne. Odnoszą się one do głównego pakietu obojętnie gdzie się do nich odwołujemy. Tak więc instrukcje poniżej znaczą dokładnie to samo: print print Powodują wypisanie zawartości Pierwsza z nich to wywołanie tablicy z dowolnego miejsca, druga to wywołanie konkretnie z pakietu main. Tablic i haszy globalnych jest w sumie W tablicy tej zapisane są wszystkie parametry podane w linii komend przy starcie programu. Aby wypisać pierwszy parametr trzeba napisać: print ("$ARGV[0]"); Korzystając z tej tablicy można napisać prosty programik, który zakończy się gdy okaże się, że został wywołany z dowolnymi parametrami: if print "Program wywołano z Zawiera listę katalogów gdzie mają być poszukiwane skrypty Perla przy przetwarzaniu poleceń "do wyrażenie", "require" oraz "use". Najpierw przeszukuje te podane z przełącznikiem -I a poźniej domyślne biblioteki m.in.: /usr/local/lib/perl5 /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/site_perl/$arch Na samym końcu przeszukuje katalog Są tam umieszczane dane wejściowe o ile użyty został w linii polecenia przełącznik -a. Jeśli opcja ta nie została użyta to tablica ta jest praktycznie bezużyteczna. %INC Zawiera wpisy do wszystkich plików dołączonych przez "do" i "require". Klucz to podana nazwa pliku a wartość, która zostaje zwrócona to położenie znalezionego pliku. %ENV Hasz ten zawiera zmienne opisujące aktualne środowisko. Wszystkie aktualnie ustalone i używane zmienne środowiskowe uzyskuje się wydając komendę "set" w shellu. Hasz ten jest bardzo przydatny i dosyć łatwo można go wykorzystać już na najprostszym poziomie programowania pisząc np. prosty program: print "Przychodzisz z loginu $ENV'USER'"; #zmienna USER zawiera aktualną nazwę użytkownika (dla administratora - root) - 8 -

9 %SIG Jest to hasz używany do ustawiania procedur obsługi sygnałów dla różnych sygnałów. Oto program bazujący na zmiennych z hasza %ENV. Po jego wywołaniu skrypt będzie czekał na jakikolwiek wpis a następnie po naciśnięciu klawisza Enter tekst zostaje zapisany do pliku.log o nazwie odpowiadającej nazwie użytkownika wywołującego skrypt wraz z hostem, z którego przyszedł użytkownik. Plik.log zostaje zapisany w dowolnym katalogu ustalanym przez administratora. Skrypt może być używany np. do pośredniego kontaktu z administratorem. Tak jak nie może być w systemie dwóch użytkowników o tych samych nazwach tak też nie będzie dwóch takich samych plików.log. Program "Kontakt": 01 #!/usr/bin/perl 02 $login = $ENV'USER'; 03 $host = $ENV'HOSTNAME'; 04 print STDOUT "Kontakt z administratorem - po każdym wywołaniu skryptu poprzedni wpis zostaje skasowany:"; 05 $text = <STDIN> 06 open (KONTAKT, ">/root/opinie/$login.log"); 07 print KONTAKT $text; 08 print KONTAKT "$login\n"; 09 print KONTAKT $host; 10 close (KONTAKT); 11 print "Dziękuję - plik został zapisany.\n"; Widać tu zastosowanie tablicy asocjacyjnej ENV a także operacje na uchwytach plików o których napiszę trochę później. Opis działania programu: 01 - na samym początku deklaruję gdzie znajduje się Perl na dysku 02 - skorzystanie z tablicy asocjacyjnej ENV, a w szczególności ze zmiennej środowiskowej USER i przyporządkowanie jej do zmiennej $login (skraca to zapis programu) 03 - podobna operacja jak powyżej z tym że zajmuję się zmienną HOSTNAME 04 - korzystam ze specjalnego uchwytu dla standardowego wyjścia w każdym pakiecie STDOUT, polecenie wyświetla zdanie na ekranie 05 - korzystam z uchwytu dla standardowego wejścia - STDIN program odczytuje to co zostało wprowadzone z klawiatury i zapisuje to pod zmienną o nazwie $text 06 - posłużenie się uchwytem o nazwie KONTAKT - utworzenie pliku o nazwie $login (czyli np. plik użytkownika z loginu dom będzie się nazywał dom.log i znajdował się będzie w katalogu /root/opinie) 07 - wpisanie do pliku.log odczytanej z klawiatury informacji zapamiętanej pod zmienną $text 08 - zapisanie do pliku.log loginu spod którego plik ten został utworzony 09 - zapisanie do pliku.log hosta z którego plik ten został utworzony 10 - zamknięcie uchwytu KONTAKT 11 - wypisanie ostatniego zdania - 9 -

10 OPERATORY Operatory, które mogą być używane podczas programowania w Perlu w większości zapożyczone są z języków C, Fortranu, sed oraz awk. Operatory można podzielić ze względu na: liczbę argumentów (jednoargumentowe, dwuargumentowe i trzyargumentowe), typ (wrostkowe i przedrostkowe) oraz rodzaj obiektów, na które działają (liczby, napisy i pliki). Wyrażenia często muszą być łączone i modyfikowane na różne sposoby i do tego służą właśnie operatory. O kolejności wykonywania operacji decyduje priorytet danego operatora. Można spotkać określenie, że jeden operator jest bardziej wiążący niż inny. Oznacza to tyle, że ma wyższy priorytet niż inny. Operatory Perla od najwyższego do najniższego priorytetu. Łączność Typ operatora Lewostronna zwrotów i list Lewostronna -> (operator dereferencji) Brak ++-- (autoinkrementacja i autodekrementacja) Prawostronna ** (podnoszenie do potęgi) Prawostronna!~\+ - Lewostronna =~!~ (operatory wiążące) Lewostronna */%x (operatory mnożnikowe) Lewostronna + -. Lewostronna <<>> (operatory przesuwania) Prawostronna alarm, my, ord, rmdir, sin, uc, stat, lc i inne Prawostronna <> <= >= lt, gt, le, ge (operatory relacyjne) Prawostronna ==!= <=> eq, ne, cmp (operatory równości) Lewostronna & Lewostronna (operatory zakresu) Lewostronna && (operatory logiczne) Lewostronna (operatory logiczne) Brak. Prawostronna?: (operator warunkowy) Prawostronna = += -= *= (operatory przypisania) Lewostronna, => (operatory przecinka) Brak Listowe Prawostronna Not (operatory logiczne) Lewostronna And (operatory logiczne) Lewostronna Or, xor (operatory logiczne)

11 Operatory arytmetyczne Internetowe Bazy Danych wykład 12 Są to nic innego jak zwykłe matematyczne funkcje określone na liczbach. Operacje arytmetyczne są wykonywane zgodnie ze znaną kolejnością (potęgowanie - mnożenie, dzielenie - dodawanie, odejmowanie). Kolejność tą można jednak zmienić poprzez zastosowanie nawiasów. Niektóre operacje arytmetyczne: Przykładowy zapis Nazwa operatora Działanie $a + $b Dodawanie dodaje $a do $b $a - $b Odejmowanie odejmuje od $a $b $a * $b Mnożenie iloczyn $a i $b $a / $b Dzielenie ilora $a przez $b $a % $b reszta z dzielenia reszta z dzielenia $a i $b $a ** $b Potęgowanie $a podniesione do potęgi $b Operatory posługujące się napisami Istnieją tylko dwa operatory działające na napisach. Pierwszym z nich jest. (kropka). Użycie jej powoduje połączenie zadanych napisów w jeden łańcuch, np.: $napis1 = 555; $napis2 = 000; print $napis1 + $napis2; #czyste dodawanie arytmetyczne - wypisze 555 print $napis1. $napis2; #wypisze zgodnie z tym co napisałem powyżej Drugim operatorem z tej grupy jest "x". Służy on do swoistego mnożenia zadanych napisów. Operator ten nazywany jest też operatorem powtarzania lub powielania. $napis1 = 551; $napis2 = 5; print $napis1 * $napis2; #czyste mnożenie arytmetyczne - wypisze 2755 print $napis1 x $napis2; #powieli 5 razy $napis Operatory przypisania Zasada, którą należy pamiętać przy programowaniu nie tylko w Perlu to, że znak "=" nie oznacza wcale matematycznego stwierdzenia - równa się. Oznacza to że coś uzyskuje określoną wartość. Matematyczną równość uzyskuje się poprzez użycie operatora "==". Operatory przypisania są typu dwuargumentowego oraz wrostkowego. Oznacza to tyle, że argumenty występują po obu stronach operatora. Argument z prawej strony może być dowolnym wyrażeniem ale lewy musi być oznaczeniem dowolnego miejsca przechowywania takiego jak zmienna czy element tablicy. Najbardziej popularnym przypisaniem jest przypisanie proste określające wartość wyrażenia po prawej stronie i nadające zmiennej z lewej strony tę właśnie wartość: $a = $b; $d = $x + $z; $c = $a * 2;

12 Jest możliwe również aby przypisanie odnosiło się do tej samej zmiennej dwa razy - pierwszy raz w celu obliczenia jej wartości a drugi by dokonać przypisania: $a = $a * 5; Stosowane jest to na tyle często, że "dorobiło" się skrótu (zapożyczonego zresztą z języka C). Poprzednią deklarację można więc zapisać w następujący sposób korzystając ze skrótu: $a *= 5; $a = 2; $b = 3; $a += $b; #dodanie $b do $a - wynik: $a = 5 $a -= $b; #odjęcie $b od $a - wynik: $a = -1 $a.= $b; #dopisanie $b do $a - wynik: $a = 23 Jedną z funkcji operatorów przypisania jest również taka bardzo przydatna operacja: $zm = "555"; #powoduje przypisanie zmiennej #zm wartości 555 o ile zmienna ta nie ma nic przypisanego wcześniej Operatory autoinkrementacji i autodekrementacji. Operatory te dodają lub odejmują jeden do/od wartości zmiennej. Można je umieścić zarówno z lewej jak i z prawej strony. Uzależnione to jest od tego kiedy ma być obliczona wartość zmiennej. Przykładowy zapis Nazwa operatora Działanie ++$a lub $a++ autoinkrementacja dodanie 1 do zmiennej $a --$a lub $a-- autodekrementacja odjęcie 1 od zmiennej $a Umieszczenie jednego z tych operatorów przed zmienną nazywane jest preinkrementacją (++$a) lub predekrementacją (--$a) a po zmiennej postinkrementacją ($a++) lub postdekrementacją ($a--). W pierwszym przypadku wartość zmiennej ulegnie zmianie przed odwołaniem się do niej a w drugim dopiero po jej użyciu np.: $a = 10; $b = ++$a; #zmienna $b nabywa wartość zmiennej $a +1 czyli 11 $c = $a--; #zmienna $c nabywa wartość 11 a zmienna $a zostaje zmniejszona o 1 Operatory logiczne Operatory te zwane są "skrótowymi" ponieważ umożliwiają programowi podjęcie decyzji opartej na wielu kryteriach. Aby to osiągnąć nie trzeba używać skomplikowanych instrukcji warunkowych. Zwane są również wyrażeniami testującymi ponieważ porównują ze sobą zmienne lub wartości i mogą zwracać prawdę (true) lub fałsz (false). Nazwa "skrótowe" bierze się stąd, że operatory te nie przetwarzają w ogóle prawego argumentu gdy do obliczenia wartości wyrażenia wystarczy sam argument lewy. W Perlu istnieją dwa zbiory operatorów: stary (przejęty z języka C) i zupełnie nowy. W Perlu zasadniczo każda liczba różna od zera i każdy łańcuch, który nie jest pusty jest uznawany za prawdę, a liczba 0 lub pusty łańcuch za fałsz

13 Przykładowy zapis $a && $b And $a $b Or Nazwa operatora Internetowe Bazy Danych wykład 12 Działanie wpisz $a jeśli ma wartość fałsz, inaczej wpisz $b wpisz $a jeśli ma wartość prawda, inaczej wpisz $b! $a Not prawda gdy $a nie jest prawdą $a and $b And $a or $b Or wpisz $a jeśli ma wartość fałsz, inaczej wpisz $b wpisz $a jeśli ma wartość prawda, inaczej wpisz $b not $a Not prawda gdy $a nie jest prawdą Jak widać ten sam efekt można uzyskać stosując zarówno znaki (&&,!) jak i normalne angielskie słowa (and, not). Formę tą łatwo można zrozumieć analizując prosty przykład: open (KONTAKT, "plik.log") or die "Nie mogę otworzyć pliku: $!\n"; Polecenie to zleca otworzenie pliku o nazwie plik.log. Jeśli operacja ta się powiedzie program bez problemów przejdzie do kolejnej fazy wykonywania poleceń. Jeśli natomiast z jakiegoś powodu nie będzie mógł otworzyć pliku zostanie wypisany komunikat zawarty w cudzysłowach. Na samym końcu komunikatu po dwukropku zostanie wypisany błąd jaki pojawił się przy próbie otwarcia pliku. Zmienna!$ jest jedną ze zmiennych specjalnych i zawiera komunikat o błędzie zwracany przez system operacyjny. Jak widać ważne dla programu operacje umiejscowione są po lewej stronie ekranu a te drugoplanowe po prawej. Operatory porównania Operatory te znane są pod nazwą relacyjne. Informują one o wzajemnej relacji dwóch wartości skalarnych, zarówno liczb jak i napisów. Dlatego istnieją dwa odrębne zbiory operatorów relacyjnych: jeden służący do porównywania liczb, a drugi napisów. Przykładowe operatory porównania: Sposób porównania Liczby Napisy Działanie równe $a == $b $a eq $b zwraca prawdę jeśli $a jest równe $b nierówne $a!= $b $a ne $b zwraca prawdę jeśli $a nie jest równe $b mniejsze lub równe $a <= $b $a le $b zwraca prawdę jeśli $a jest mniejsze lub równe $b większe lub równe $a => $b $a ge $b zwraca prawdę jeśli $a jest większe lub równe $b mniejsze niż $a < $b $a lt $b zwraca prawdę jeśli $a jest mniejsze od $b większe niż $a > $b $a gt $b zwraca prawdę jeśli $a jest większe od $b

14 Operatory badające pliki Internetowe Bazy Danych wykład 12 Ostatnią grupą operatorów z tych najpopularniejszych są te, które pozwalają zbadać plik przed uruchomieniem. Można na przykład otworzyć plik jako nowy i coś do niego zapisać podczas gdy taki plik istniał już i mógł zawierać bardzo ważne dla właściwego funkcjonowania systemu informacje. Warto więc byłoby użyć wcześniej operatora sprawdzającego czy dany plik istnieje już w systemie i czy np. można do niego w ogóle pisać. Operatory badające pliki są jednoargumentowymi operatorami biorącymi nazwę pliku lub uchwyt do niego i testującymi go po to by sprawdzić czy "coś" dotyczące danego pliku jest prawdziwe. Niektóre operatory badające pliki: Zapis Nazwa Działanie -r $a do odczytu Plik jest odczytywalny -w $a do zapisu Plik może zostać zapisany -x $a wykonywalny Plik ma atrybut wykonywalności -e $a istnieje Plik istnieje -z $a zerowa wielkość Plik ma zerową wartość -s $a niezerowa wielkość plik ma niezerową wartość -f $a plik zwykły plik -d $a katalog katalog -l $a dowiązanie symboliczne dowiązanie -p $a nazwany potok nazwany potok -b $a plik blokowy specjalny plik blokowy -c $a plik znakowy specjalny plik znakowy -T $a plik tekstowy oznacza plik tekstowy -B $a plik binarny oznacza plik binarny Zwykły plik nie jest tym samym co plik tekstowy. Plikiem binarnym jest na przykład jądro startowe systemu /vmlinux. Jest to przeciwieństwo pliku tekstowego. Operatory - T oraz - B działają następująco. Pierwszy blok pliku jest sprawdzany, czy nie ma w nim jakichś dziwnych znaków np. kodów kontrolnych czy znaków z ustawionym najstarszym bitem. Jeśli znaleziono zbyt dużo takich dziwnych znaków, powyżej 30%, system ustala dany plik jako binarny. W przeciwnym przypadku plik zostaje rozpoznany jako tekstowy. Plik zostaje uznany za binarny także gdy w pierwszym bloku znajduje się zero

15 PROCEDURY W większości obecnie stosowanych języków programowania możliwe jest zapisanie części wykonywanego kodu programu w postaci odrębnego bloku i wywoływanie go w dowolnym momencie, wtedy kiedy będzie to potrzebne. Części kodu w ten sposób zapisane nazywane są procedurami. Perl w tym przypadku nie jest gorszy, również pozwala definiować procedury. W przypadku tego języka funkcje i procedury to jedno i to samo. Aby poprawnie zadeklarować procedurę należy użyć polecenia: sub ETYKIETA; Gdy funkcje zostały już napisane można ich używać korzystając z poleceń: &ETYKIETA; Procedury, które są już zdefiniowane w innych pakietach a są potrzebne w czasie pisania programu można wywołać używając następującego polecenia: use NAZWA_PAKIETU qw(etykieta1 itd. itd.); Aby funkcja mogła spełniać powierzone jej zadanie konieczne jest dostarczenie jej danych, na których będzie przeprowadzała operacje. Przekazywanie danych z programu do procedury odbywa się bardzo prosto: wszystkie wykorzystywane parametry są przekazywane jako lista wartości skalarnych. W taki sam sposób funkcja zwraca dane po wykonaniu operacji. Wszystkie te parametry przekazywane i zachowywane są w tablicy oznaczonej Korzystając z tego można na podanej liście argumentów wykonywać dowolne operacje dotyczące normalnej tablicy. Aby wywołać poszczególne elementy tablicy stosuje się więc polecenie $_[0], $_[2] lub np. $_[7]. Jeśli potrzebne jest opuszczenie procedury w konkretnym momencie a zarazem wyświetlenie aktualnej wartości parametru na którym wykonywane są operacje można wykorzystać polecenie return, które działa właśnie w ten sposób. Z reguły nie jest ono jednak potrzebne, gdyż aktualną wartością jaką zwraca procedura jest wartość ostatnio wykonanej linii procedury. Doskonałym przykładem zastosowania procedury jest np. przygotowany wcześniej algorytm porównania dwóch liczb. Zmienna w stosunku do której będzie wykorzystywana procedura będzie zawierała wartość większej z liczb: sub porownanie if ($_[0] > $_[1]) $_[0]; else $_[1]; $liczba = &porownanie(10,11); Zmienna $liczba ustali się po porównaniu dwóch liczb (10,11) podanych jako parametry przy wywoływaniu procedury. W tym przypadku $liczba będzie miała więc wartość

16 chmod LISTA Funkcja ta powoduje zmianę atrybutów plików znajdujących się w polu LISTA. Konieczne jest by na samym początku listy jako pierwszy jej argument podano żądane atrybuty w postaci cyfr a nie liter. Czyli np. aby plik stał się wykonywalny dla jego właściciela (user) to zamiast podawania u+x (chmod u+x nazwa_pliku) w przypadku wykorzystywania tej funkcji zmuszeni jesteśmy napisać 100 (chmod 100 nazwa_pliku). W przypadku programów z reguły konieczne jest by wszyscy użytkownicy mogli z niego korzytać ale nie mogli ingerować w jego kod. Do zrealizowania tego celu konieczne jest użycie polecenia chmod 733 nazwa_pliku (powoduje przekazanie właścicielowi pliku wszystkich praw do niego, grupie w której znajduje się użytkownik oraz pozostałym użytkownikom prawa czytania i wykonywania pliku). Używanie zapisu cyfrowego zamiast literowego ma poważną zaletę ponieważ to co wykonuje się w dwóch zapisach literowych można zrobić w jednym cyfrowym. Funkcja ta zwraca liczbę plików, dla których zmiana żądanych atrybutów została zakończona sukcesem. chown LISTA Funkcja pozwala zmienić właściciela oraz grupę podanej listy plików. Podobnie jak w przypadku powyższej funkci tak i tym razem wymagane jest by pierwszymi dwoma elementami listy były cyfrowe identyfikatory uid oraz gid. Po zakończeniu operacji zwraca ona liczbę plików, dla których dokonała udanych zmian. chroot PLIK Wywołanie tej funkcji spowoduje, że PLIK stanie się nowym katalogiem domowym dla wykonywanego procesu. Do podanego miejsca będą odwoływały się ścieżki z "/" na początku. Funkcja ta jest dostępna jednak tylko i wyłącznie dla administratora systemu. getlogin W efekcie użycia tej funkcji zostają zwrócone informacje o zalogowanych właśnie użytkownikach. Są one uzyskiwane z /etc/utmp pod warunkiem, że informacje tego typu są w ogóle dostępne. Jeżeli informacje te są niedostępne konieczne staje się użycie funkcji getpwuid, która powoduje zamianę identyfikatora użytkownika i odnalezienie odpowiadającego mu wpisu w pliku passwd. Funkcja ta zwraca nazwę użytkownika. kill LISTA Funkca działa tak jak polecenie systemowe kill. Sygnał przesyłamy do określonego procesu lub procesów musi być umieszczony jako pierwszy element listy. Przesłanie takiego sygnału do procesu powoduje jego zakończenie. Funkcja zwraca ilość procesów, dla których wysłanie sygnału zakończyło się powodzeniem. mkdir KATALOG, PRAWA Wywołanie tej funkcji powoduje utworzenie katalogu o nazwie KATALOG. W polu PRAWA umieszcza się cyfrowe wartości atrybutów jakie posiadać ma nowo utworzony katalog. W przypadku poprawnego stworzenia katalogu funkcja zwraca wartość "1" w przeciwnym wypadku "0" (błąd zapisywany jest w zmiennej specjalnej $!). rename NAZWA1, NAZWA2 Powoduje zmianę NAZWA1 na NAZWA2. Zwraca "1" gdy wykonała swoje zadanie a "0" gdy z jakichś powodów nie mogła dokonać zmiany. (Ten "jakiś powód" pod postacią kodu błędu umieszczony jest w zmiennej $!). rmdir KATALOG Wywołanie tej funkcji spowoduje usunięcie określonego katalogu pod warunkiem, że jest on pusty. Podobnie jak w poprzednich przypadkach poprawne działanie funkcji zakończy się zwróceniem wartości "1" a błędne "0" (błąd w $!). Podanie nazwy katalogu jest tu opcjonalne, gdy ona się nie pojawi funkcja działa na zmiennej $_

17 STRUKTURY STERUJĄCE Większość prostych programów pisanych w Perlu jest liniowa. Oznacza to, że polecenia w nich zawarte wykonywane są po kolei. Aby wstrzymać lub spowodować wykonanie jakiegoś polecenia można użyć opisanych operatorów logicznych. Jednak programy zawierające pętle i instrukcje mają o wiele większe możliwości. Pętle i instrukcje nazywane są strukturami sterującymi. Perl jest więc językiem sterującym. Instrukcja if Blok jest zawsze ograniczony przez nawiasy klamrowe dlatego nigdy nie ma wątpliwości do którego przypisana jest instrukcja if. Sprawdza ona prawdziwość warunku i jeśli jest spełniony powoduje wykonanie bloku kodu. Blok to przynajmniej jedna instrukcja zamknięta w nawiasy klamrowe. Instrukcja if powoduje wykonanie bloku więc nawiasy te są bezwzględnie konieczne. if ($liczba > 0) print "Liczba $liczba jest większa od zera.\n"; Czasami gdy warunek nie jest spełniony zachodzi konieczność wykonania innego bloku lub bloków kodu. Można do tego celu wykorzystać nieobowiązkowe acz dostępne w Perlu słowo else. Wpisuje się je po pierwszym bloku i powoduje ono wykonanie drugiego bloku jeśli nie jest spełniony pierwszy warunek. Czasem konieczne jest postawienie większej ilości warunków. Do tego celu służy elsif dodawane do każdej możliwości. if sprawdzenie1 blok1; elseif sprawdzenie2 blok2; else sprawdzenie3 blok3; Jeśli okaże się, że "sprawdzenie1" jest prawdą to zostaje wykonany "blok1". Jeśli "sprawdzenie1" nie powiedzie się to zostaje przeprowadzony test "sprawdzenie2". Jeśli ono okaże się prawdą to zostaje wykonany blok programu oznaczony jako "blok2". Ostatni polecenie else powoduje sprawdzenie instrukcji "sprawdzenie3" ale tylko w przypadku gdy poprzednie sprawdzenia zwróciły wartość fałsz. Testów zaczynających się od elseif może być w instrukcji warunkowej kilka. Warunki towarzyszące if i elseif są sprawdzane po kolei, dopóki jeden z nich nie okaże się prawdziwy lub nie zostanie osiągnięte słowo else. Gdy jeden z warunków zostanie spełniony, jego blok zostanie wykonany a reszta rozgałęzień opuszczona. Oto prosty program opierający się na wykorzystaniu instrukcji if/elseif/else. Sprawdza on czy łańcuch $a składa się z jednego, dwóch lub trzech znaków bądź czy jest zbiorem pustym

18 Instrukcje, które powodują sprawdzenie ilości znaków w łańcuchu można powielać tak by np. sprawdzeniu dokładnemu podlegał łańcuch złożony nawet z 10 znaków. if (!$łańcuch) print "Łańcuch nie składa się z żadnych znaków, jest pusty.\n"; elseif (lenght($łańcuch) == 1) print "Łańcuch składa się z jednego znaku.\n"; elseif (lenght($łańcuch) == 2) print "Łańcuch składa się z dwóch znaków.\n"; elseif (lenght($łańcuch) == 3) print "Łańcuch składa się z trzech znaków.\n"; else print "Łańcuch zawiera więcej niż trzy znaki.\n"; Jednak czasem zachodzi potrzeba by wykonać blok tylko wtedy gdy warunek zwraca wartość fałsz. Można wtedy użyć instrukcji unless. unless ($liczba > 0) print "Liczba $liczba jest mniejsza lub równa zero.\n" Instrukcja kończąca działanie programu w przypadku gdy okaże się, że zmienna $zm jest pusta. die unless ($zm); Pętle Pętle zwane także konstrukcjami iteracyjnymi dzielą się na cztery główne grupy: while, until, for oraz foreach. Pozwalają one na to by program przetwarzał ten sam fragment kodu wiele razy podstawiając różne wartości. Instrukcje while i until Instrukcje te działają bardzo podobnie jak omawiane wcześniej if i unless, tyle że w pętli. Na początku sprawdzana jest część warunkowa instrukcji. Instrukcja while powoduje wykonanie bloku tak długo jak wyrażenie będzie miało wartość prawda. Gdy zamiast while użyte zostanie until to sens warunku zostanie odwrócony. Na końcu pętli while można użyć słowa continue. Blok po continue jest wykonywany po tym jak zakończy się wykonywane pierwszego bloku po while lub po przerwaniu jego wykonywania i przejściu do bloku continue

19 Pełna składnia pętli while wygląda następująco: while sprawdzenie1 blok1; continue blok2; Internetowe Bazy Danych wykład 12 Instrukcja for Pętla for należy do najczęściej stosowanych. Została zapożyczona z języka C. Zawiera ona trzy wyrażenia sterujące: pierwsze ustala wartość początkową zmiennej, drugie warunek, który sprawdza zmienną kontrolną i trzecie to wyrażenie, które pozwala zmodyfikować zmienną. Na początku ustalana jest wartość zmiennej i sprawdzany warunek. Jeśli zwróci on wartość prawda to następuje wykonanie bloku operacji. Dopiero na samym końcu zostaje uwzględnione wyrażenie modyfikujące początkową wartość zmiennej. Pętla jest wykonywana aż do momentu kiedy sprawdzenie warunku nie zwróci wartości fałsz. Wykorzystując pętlę for można np. w bardzo prosty i szybki sposób spowodować wypisanie ciągu kolejnych liczb od 0-5: for ($a = 0; $a < 5; $a++) print "$a\n"; Ustalamy wartość zmiennej $a na zero a następnie porównujemy ją z wartością 5. Jeśli jest ona mniejsza to następuje wykonanie polecenia wypisującego wartość zmiennej $a na ekran. Następnie pętla wykonuje operację poznanej już autoinkrementacji (dokładnie postinkrementacji) zmiennej $a i ponownie sprawdza ją z wartością 5. Sprawdzenie wartości zmiennej $a będzie zwracało wartość prawda dopóki $a nie osiągnie wartości 5. Wtedy pętla zostaje przerwana ale do tego czasu na ekranie pojawią się kolejno liczby 0, 1, 2, 3 i 4. Pętlę for można zastąpić w równoważnym stopniu odpowiednio skonstruowaną pętlą while: $a = 0; while ($a <5) print "$a\n"; continue $a++; Jako, że wszystkie trzy wyrażenia pętli for są opcjonalne możliwe więc jest wykonywanie pętli nieskończonej: for (;;) blok

20 Instrukcja foreach Internetowe Bazy Danych wykład 12 Jest to ostatnia z głównych instrukcji iteracyjnych stosowanych w Perlu. Pozwala ona na wykonywanie tego samego bloku kodu dla każdego skalara z danego zbioru np. tablicy. foreach zmienna (lista) Wartość zmiennej jest lokalna dla pętli ale odzyskuje swoją faktyczną wartość po zakończeniu wykonywania pętli. Pole zmienna może zostać pominięte, wtedy w użyciu znajdzie się znana już zmienna domyślna $_. Jeśli pole lista jest tablicą to jest możliwe modyfikowanie każdego jej elementu przez modyfikację zmiennej wewnątrz pętli. Pętla foreach podobnie jak while może lecz nie musi kończyć się blokiem continue. Operatory next i last Czasem konieczne jest zakończenie lub wyjście z pętli podczas jej wykonywania. Polecenie last działa tak samo jak instrukcja break w języku C. Powoduje ono natychmiastowe przerwanie i zakończenie przetwarzania w danej pętli. Blok oznaczony jako continue, jeśli w ogóle występuje, nie jest wykonywany. Działa to niejako w taki sam sposób jakby sprawdzenie warunku w pętli dało wartość fałsz. Komenda next działa jak polecenie continue w języku C. Użycie jej spowoduje opuszczenie wykonywania operacji w pętli aż do końca bieżącej iteracji i przejście do następnej. Jeśli istnieje blok oznaczony jako continue to jego wykonanie następuje tuż przed kolejnym sprawdzeniem warunku, tak samo zresztą jak w normalnej pętli. Dzięki temu blok ten może być użyty np. do inkrementacji bądź dekrementacji zmiennej mimo, iż wykonywanie wcześniejszego bloku poleceń zostało pominięte przez zastosowanie next. Jedną z używanych komend w stosunku do pętli jest polecenie redo. Użycie go spowoduje ponowne przetworzenie bloku instrukcji pętli bez ponownego sprawdzenia warunku. Blok continue nie jest w ogóle wykonywany. Instrukcja goto W Perlu podobnie jak w większości innych języków programowania występuje instrukcja goto, pomimo tego że można ją w każdym przypadku z powodzeniem zastąpić stosując pętlę. Jej podstawowa składnia wygląda następująca: blok operacji; etykieta: blok operacji; goto etykieta; Trzeba zauważyć że po zadeklarowaniu pewnego bloku operacji, pod nazwą etykieta, na końcu używamy dwukropka a nie średnika. W Perlu występują aż trzy formy komendy goto: goto etykieta, goto wyrażenie i goto &nazwa

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

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

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

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA, który zawiera: zmienne, konstrukcje warunkowe i iteracyjne (IF-THEN-ELSE, CASE, DO WHILE, DO UNTIL), konfigurowane środowisko użytkownika. METAZNAKI zestaw

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Należy ściągnąć oprogramowanie Apache na platformę

Należy ściągnąć oprogramowanie Apache na platformę Programowanie Internetowe Język PHP - wprowadzenie 1. Instalacja Oracle+Apache+PHP Instalacja Apache, PHP, Oracle Programy i ich lokalizacja Oracle Database 10g Express Edition10.2 http://www.oracle.com/technology/products/database/

Bardziej szczegółowo

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem Moduł 1 1. Wprowadzenie do języka Python Python jest dynamicznym językiem interpretowanym. Interpretowany tzn. że kod, który napiszemy możemy natychmiast wykonać bez potrzeby tłumaczenia kodu programistycznego

Bardziej szczegółowo

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak Systemy operacyjne System operacyjny Linux - wstęp Anna Wojak 1 1 Wstęp Linux jest systemem z rodziny Unix. Pierwsza wersja systemu została opracowana w 1969 roku przez K.Thompsona i D.Ritchie Jest to

Bardziej szczegółowo

Algorytmika i Programowanie VBA 1 - podstawy

Algorytmika i Programowanie VBA 1 - podstawy Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy

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

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia Dynamiczne przetwarzanie stron dr Beata Kuźmińska-Sołśnia KLIENT Witaj INTERNET SERWER Plik HTML Witaj wyświetlanie przez przeglądarkę Witaj! Serwer WWW komputer

Bardziej szczegółowo

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

Cw.12 JAVAScript w dokumentach HTML

Cw.12 JAVAScript w dokumentach HTML Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

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

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

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

KARTA KURSU. Języki skryptowe

KARTA KURSU. Języki skryptowe KARTA KURSU Nazwa Nazwa w j. ang. Języki skryptowe Script languages Kod Punktacja ECTS* 3 Koordynator mgr Alfred Budziak Zespół dydaktyczny: dr Olaf Bar mgr Alfred Budziak Opis kursu (cele kształcenia)

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Instrukcje Język Basic został stworzony w 1964 roku przez J.G. Kemeny ego i T.F. Kurtza z Uniwersytetu w Darthmouth (USA). Nazwa Basic jest

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1)

JAVAScript w dokumentach HTML (1) JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript mogą być zagnieżdżane w dokumentach HTML. Instrukcje JavaScript

Bardziej szczegółowo

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby Część XI C++ W folderze nazwisko36 program za każdym razem sprawdza oba warunki co niepotrzebnie obciąża procesor. Ten problem można rozwiązać stosując instrukcje if...else Instrukcja if wykonuje polecenie

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

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

Metody numeryczne Laboratorium 2

Metody numeryczne Laboratorium 2 Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania

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

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

do instrukcja while (wyrażenie);

do instrukcja while (wyrażenie); Instrukcje pętli -ćwiczenia Instrukcja while Pętla while (póki) powoduje powtarzanie zawartej w niej sekwencji instrukcji tak długo, jak długo zaczynające pętlę wyrażenie pozostaje prawdziwe. while ( wyrażenie

Bardziej szczegółowo

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski Informatyka- wykład Podstawy programowania w Pythonie dr Marcin Ziółkowski Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie 23 listopada 2015 r. JĘZYK PYTHON Język Python jest

Bardziej szczegółowo

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix Wydział Zarządzania i Modelowania Komputerowego Specjalność: Informatyka Stosowana Rok III Semestr V 1. Logowanie w systemie Unix. Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu

Bardziej szczegółowo

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga! Programowanie I O czym będziemy mówili Podstawy programowania w językach proceduralnym ANSI C obiektowym Java Uwaga! podobieństwa w podstawowej strukturze składniowej (zmienne, operatory, instrukcje sterujące...)

Bardziej szczegółowo

Ćwiczenie nr 14: System Linux

Ćwiczenie nr 14: System Linux Ćwiczenie nr 14: System Linux Barbara Łukawska, Adam Krechowicz, Tomasz Michno Czym jest Linux? Słowo Linux może oznaczać zarówno jądro systemowe Linux, jak i całą rodzinę systemów operacyjnych, które

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

wagi cyfry 7 5 8 2 pozycje 3 2 1 0

wagi cyfry 7 5 8 2 pozycje 3 2 1 0 Wartość liczby pozycyjnej System dziesiętny W rozdziale opiszemy pozycyjne systemy liczbowe. Wiedza ta znakomicie ułatwi nam zrozumienie sposobu przechowywania liczb w pamięci komputerów. Na pierwszy ogień

Bardziej szczegółowo

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej. Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej. Dział Zagadnienia Wymagania podstawowe Wymagania ponadpodstawowe Arkusz kalkulacyjny (Microsoft Excel i OpenOffice) Uruchomienie

Bardziej szczegółowo

Programowanie strukturalne i obiektowe

Programowanie strukturalne i obiektowe Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie

Bardziej szczegółowo

Podstawy JavaScript ćwiczenia

Podstawy JavaScript ćwiczenia Podstawy JavaScript ćwiczenia Kontekst:

Bardziej szczegółowo

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice. Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice. Język PHP Język interpretowalny, a nie kompilowany Powstał w celu programowania

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegółowo

Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ

Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ Mariusz Jankowski autor strony internetowej poświęconej Excelowi i programowaniu w VBA; Bogdan Gilarski właściciel firmy szkoleniowej Perfect And Practical;

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. IŚ ćw.8 JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w dokumentach HTML. Skrypt JavaScript

Bardziej szczegółowo

for (i=0; i<10; i=i+1) instrukcja; instrukcja zostanie wykonana 10 razy for (inicjalizacja; test; aktualizacja) instrukcja;

for (i=0; i<10; i=i+1) instrukcja; instrukcja zostanie wykonana 10 razy for (inicjalizacja; test; aktualizacja) instrukcja; Rok akademicki 2014/2015, Pracownia nr 5 2/36 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2014/2015 Pracownia

Bardziej szczegółowo

MATERIAŁY - udostępnianie materiałów dydaktycznych w sieci SGH

MATERIAŁY - udostępnianie materiałów dydaktycznych w sieci SGH MATERIAŁY - udostępnianie materiałów dydaktycznych w sieci SGH SPIS TREŚCI i EKRANÓW WSTĘP Ekran1: Wstęp. Logowanie Ekran2: Strona początkowa UDOSTEPNIONE MATERIAŁY Ekran3: Dostępne materiały Ekran4: Zawartość

Bardziej szczegółowo

Języki skryptowe w programie Plans

Języki skryptowe w programie Plans Języki skryptowe w programie Plans Warsztaty uŝytkowników programu PLANS Kościelisko 2010 Zalety skryptów Automatyzacja powtarzających się czynności Rozszerzenie moŝliwości programu Budowa własnych algorytmów

Bardziej szczegółowo

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych Ćwiczenie nr 3 Wyświetlanie i wczytywanie danych 3.1 Wstęp Współczesne komputery przetwarzają dane zakodowane za pomocą ciągów zerojedynkowych. W szczególności przetwarzane liczby kodowane są w systemie

Bardziej szczegółowo

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Pętle for, while, do... while, foreach Jeszcze o operatorach... Skrócone operatory arytmetyczne przykład x +=

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

ALGORYTMY I PROGRAMY

ALGORYTMY I PROGRAMY ALGORYTMY I PROGRAMY Program to ciąg instrukcji, zapisanych w języku zrozumiałym dla komputera. Ten ciąg instrukcji realizuje jakiś algorytm. Algorytm jest opisem krok po kroku jak rozwiązać problem, czy

Bardziej szczegółowo

Kolumna Zeszyt Komórka Wiersz Tabela arkusza Zakładki arkuszy

Kolumna Zeszyt Komórka Wiersz Tabela arkusza Zakładki arkuszy 1 Podstawowym przeznaczeniem arkusza kalkulacyjnego jest najczęściej opracowanie danych liczbowych i prezentowanie ich formie graficznej. Ale formuła arkusza kalkulacyjnego jest na tyle elastyczna, że

Bardziej szczegółowo

VinCent Administrator

VinCent Administrator VinCent Administrator Moduł Zarządzania podatnikami Krótka instrukcja obsługi ver. 1.01 Zielona Góra, grudzień 2005 1. Przeznaczenie programu Program VinCent Administrator przeznaczony jest dla administratoró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

JAVAScript w dokumentach HTML - przypomnienie

JAVAScript w dokumentach HTML - przypomnienie Programowanie obiektowe ćw.1 JAVAScript w dokumentach HTML - przypomnienie JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w

Bardziej szczegółowo

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,

Bardziej szczegółowo

Wprowadzenie do Scilab: podstawy języka Scilab

Wprowadzenie do Scilab: podstawy języka Scilab Wprowadzenie do Scilab: podstawy języka Scilab Magdalena Deckert, Izabela Szczęch, Barbara Wołyńska, Bartłomiej Prędki Politechnika Poznańska, Instytut Informatyki Narzędzia Informatyki Narzędzia Informatyki

Bardziej szczegółowo

Scenariusz zajęć. Moduł VI. Projekt Gra logiczna zgadywanie liczby

Scenariusz zajęć. Moduł VI. Projekt Gra logiczna zgadywanie liczby Scenariusz zajęć Moduł VI Projekt Gra logiczna zgadywanie liczby Moduł VI Projekt Gra logiczna zgadywanie liczby Cele ogólne: przypomnienie i utrwalenie poznanych wcześniej poleceń i konstrukcji języka

Bardziej szczegółowo

Rekurencja (rekursja)

Rekurencja (rekursja) Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)

Bardziej szczegółowo

APLIKACJE INTERNETOWE 5 PHP W P R O W A D Z E N I E D O P R O G R A M O W A N I A

APLIKACJE INTERNETOWE 5 PHP W P R O W A D Z E N I E D O P R O G R A M O W A N I A APLIKACJE INTERNETOWE 5 PHP W P R O W A D Z E N I E D O P R O G R A M O W A N I A PLAN PREZENTACJI Absolutne podstawy PHP w HTML-u Pierwszy skrypt Błędy Kończenie instrukcji Komentarze Zmienne Podstawy

Bardziej szczegółowo

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2]

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2] 1. CEL ĆWICZENIA Celem ćwiczenia jest przedstawienie możliwości wykorzystania języka JavaScript do tworzenia interaktywnych aplikacji działających po stronie klienta. 2. MATERIAŁ NAUCZANIA JavaScript tak

Bardziej szczegółowo

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Wykład 3 ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Waldi Ravens J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 146 deklaracje zmiennych instrukcja podstawienia

Bardziej szczegółowo

Paradygmaty programowania

Paradygmaty programowania Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych Szkolenie przeznaczone jest dla osób chcących poszerzyć swoje umiejętności o tworzenie rozwiązań internetowych w PHP. Zajęcia zostały przygotowane w taki sposób, aby po ich ukończeniu można było rozpocząć

Bardziej szczegółowo

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

Temat zajęć: Filtry, strumienie standardowe oraz przetwarzanie potokowe. stderr

Temat zajęć: Filtry, strumienie standardowe oraz przetwarzanie potokowe. stderr Temat zajęć: Filtry, strumienie standardowe oraz przetwarzanie potokowe Czas realizacji zajęć: 180 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Strumienie standardowe i ich przekierowywanie,

Bardziej szczegółowo

1. Wprowadzanie danych z klawiatury funkcja scanf

1. Wprowadzanie danych z klawiatury funkcja scanf 1. Wprowadzanie danych z klawiatury funkcja scanf Deklaracja int scanf ( const char *format, wskaźnik, wskaźnik,... ) ; Biblioteka Działanie stdio.h Funkcja scanf wczytuje kolejne pola (ciągi znaków),

Bardziej szczegółowo

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1 Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1. Podstawowe operacje logiczne dla cyfr binarnych Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie

Bardziej szczegółowo

1 Wielokrotne powtarzanie tych samych operacji

1 Wielokrotne powtarzanie tych samych operacji 1 Wielokrotne powtarzanie tych samych operacji Zadanie 1. roszę porównać następujące programy(efekt działania każdego z nich jest takisam). rzykład 1 przedstawia najbardziej typowy zapis, powodujący wykonanie

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

Konstrukcje warunkowe Pętle

Konstrukcje warunkowe Pętle * Konstrukcje warunkowe Pętle *Instrukcja if sposób na sprawdzanie warunków *Konstrukcja: if(warunek) else { instrukcje gdy warunek spełniony} {instrukcje gdy warunek NIE spełniony} * 1. Wylicz całkowity

Bardziej szczegółowo

Struktura i działanie jednostki centralnej

Struktura i działanie jednostki centralnej Struktura i działanie jednostki centralnej ALU Jednostka sterująca Rejestry Zadania procesora: Pobieranie rozkazów; Interpretowanie rozkazów; Pobieranie danych Przetwarzanie danych Zapisywanie danych magistrala

Bardziej szczegółowo

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux Przetwarzanie tekstu 2 Operacje na plikach tekstowych w systemie Linux filtry programy przetwarzajace pliki (w szczególności tekstowe) w taki sposób, że odczytuja dane (plik wejściowy) ze standardowego

Bardziej szczegółowo

Serwer WWW Apache. http://httpd.apache.org/ Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, 2.2.25, 2.0.65 zakończony projekt

Serwer WWW Apache. http://httpd.apache.org/ Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, 2.2.25, 2.0.65 zakończony projekt Serwer WWW Apache http://httpd.apache.org/ Plik konfiguracyjny httpd.conf Definiujemy m.in.: Katalog który ma być serwowany Moduły, które mają zostać uruchomione na serwerze m.in. PHP, mod_rewrite Wirtualne

Bardziej szczegółowo

Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym

Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym S t r o n a 1 Bożena Ignatowska Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym Wprowadzenie W artykule zostaną omówione zagadnienia związane z wykorzystaniem funkcji tekstowych w arkuszu

Bardziej szczegółowo

Język programowania: Lista instrukcji (IL Instruction List)

Język programowania: Lista instrukcji (IL Instruction List) Język programowania: Lista instrukcji (IL Instruction List) Wykład w ramach przedmiotu: Sterowniki programowalne Opracował dr inż. Jarosław Tarnawski 08.12.2009 Norma IEC 1131 Języki tekstowe Języki graficzne

Bardziej szczegółowo

Ustalanie dostępu do plików - Windows XP Home/Professional

Ustalanie dostępu do plików - Windows XP Home/Professional Ustalanie dostępu do plików - Windows XP Home/Professional Aby edytować atrybuty dostępu do plikow/ katalogow w systemie plików NTFS wpierw sprawdź czy jest Wyłączone proste udostępnianie czyli przejdź

Bardziej szczegółowo

Prawa dostępu do plików

Prawa dostępu do plików Prawa dostępu do plików Wszystkie pliki systemów uniksowych posiadają swoje prawa dostępu dla zapisu, odczytu i wykonywania. Jeżeli dotychczas spotykałeś się z systemami Windows na partycjach FAT - możesz

Bardziej szczegółowo

#include int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); } OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;

Bardziej szczegółowo

SKRYPTY. Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego

SKRYPTY. Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego 1 SKRYPTY Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego z = 1 y + 1+ ( x + 2) 3 x 2 + x sin y y + 1 2 dla danych wartości x = 12.5 i y = 9.87. Zadanie to można rozwiązać: wpisując dane i wzór wyrażenia

Bardziej szczegółowo

Dzisiejszy wykład. Programowanie w Perlu. Usuwanie elementów z początku tablicy. Dodawanie elementów do początku tablic

Dzisiejszy wykład. Programowanie w Perlu. Usuwanie elementów z początku tablicy. Dodawanie elementów do początku tablic Dzisiejszy wykład Programowanie w Perlu Manipulowanie tablicami, zmienne lokalne, funkcje Marcin Junczys-Dowmunt junczys@amu.edu.pl Wydział Matematyki i Informatyki http://web.wmi.amu.edu.pl Wrócimy do

Bardziej szczegółowo

Rys. 1. Widok uruchomienia polecenia apt-get install build-essential. Rys. 2. Widok uruchomienia polecenia apt-get install apache2

Rys. 1. Widok uruchomienia polecenia apt-get install build-essential. Rys. 2. Widok uruchomienia polecenia apt-get install apache2 1. Instalacja serwera WWW Aby zainstalować serwer WWW w systemie Linux, należy wykorzystać menedżer pakietów apt-get. Polecenia które należy wpisać w terminalu użytkownika root 1 : apt-get install build-essential

Bardziej szczegółowo

Skanowanie OCR w aplikacji Kancelaria Komornika. Instrukcja dla użytkownika

Skanowanie OCR w aplikacji Kancelaria Komornika. Instrukcja dla użytkownika Skanowanie OCR w aplikacji Kancelaria Komornika Instrukcja dla użytkownika Spis treści 1. Zakładka Wyrażenia... 3 2. Zakładka Grupy wyrażeń... 5 3. Opcje Skanowania / OCR... 7 4. Rozpoznawanie Danych...

Bardziej szczegółowo

Moduł do importu wyciągów bankowych ver 1.3

Moduł do importu wyciągów bankowych ver 1.3 Moduł do importu wyciągów bankowych ver 1.3 Program służy do rozliczania rozrachunków oraz zamówień na podstawie wyciągu przelewów z banku. Uruchamia się go przez zaznaczenie dowolnego rozrachunku i wybranie

Bardziej szczegółowo

Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier

Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier Systemy operacyjne Instrukcja laboratoryjna Ćwiczenie 1: Polecenia systemu UNIX/LINUX Opracował: dr inż. Piotr Szpryngier Olsztyn 2009 1 Wprowadzenie. Cel zajęć praktycznych. Wymagania stawiane studentom

Bardziej szczegółowo

TEMAT : System operacyjny MS DOS pliki wsadowe

TEMAT : System operacyjny MS DOS pliki wsadowe Temat : Pliki wsadowe w MS-DOS Każdy system operacyjny ma możliwość przetwarzania wsadowego. Zamiast wielokrotnie wpisywać z klawiatury ciągi poleceń można zapisać je w pliku wsadowych (batch). Po uruchomieniu

Bardziej szczegółowo

Laboratorium Systemów Operacyjnych Komputerów Tryb linii komend i programowanie wsadowe w systemach DOS/Windows

Laboratorium Systemów Operacyjnych Komputerów Tryb linii komend i programowanie wsadowe w systemach DOS/Windows Laboratorium Systemów Operacyjnych Komputerów Tryb linii komend i programowanie wsadowe w systemach DOS/Windows 1. Tryb linii komend Tryb linii komend pozwala użytkownikowi na zlecanie wykonywania operacji

Bardziej szczegółowo

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Programowanie 3 - Funkcje, pliki i klasy

Programowanie 3 - Funkcje, pliki i klasy Instytut Informatyki Uniwersytetu Śląskiego Laborki funkcja; parametry funkcji; typ zwracany; typ void; funkcje bez parametrów; napis.length() - jako przykład funkcji. Zadania funkcja dodająca dwie liczby;

Bardziej szczegółowo

Polecenia wewnętrzne:

Polecenia wewnętrzne: Polecenia wewnętrzne DOS-u znajdują się w pamięci operacyjnej komputera, realizowane przez procesor poleceń COMMANDCOM Polecenia zewnętrzne DOS-u są to pliki ściągane do pamięci operacyjnej każdorazowo

Bardziej szczegółowo

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Komunikacja za pomocą potoków. Tomasz Borzyszkowski Komunikacja za pomocą potoków Tomasz Borzyszkowski Wstęp Sygnały, omówione wcześniej, są użyteczne w sytuacjach błędnych lub innych wyjątkowych stanach programu, jednak nie nadają się do przekazywania

Bardziej szczegółowo

Podstawy programowania (1)

Podstawy programowania (1) Podstawy programowania (1) doc. dr inż. Tadeusz Jeleniewski Konsultacje pokój 19 Poniedziałki, godz. 9:45 11:20 e-mail: tadeusz.jeleniewski@neostrada.pl Podstawy programowania (1) - wykład 1. Wprowadzenie

Bardziej szczegółowo

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2 - 1 - MS EXCEL CZ.2 FUNKCJE Program Excel zawiera ok. 200 funkcji, będących predefiniowanymi formułami, słuŝącymi do wykonywania określonych obliczeń. KaŜda funkcja składa się z nazwy funkcji, która określa

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

Algorytmika i programowanie

Algorytmika i programowanie Grażyna Koba Algorytmika i programowanie Programowanie w języku Logo materiały dodatkowe do podręcznika Informatyka dla gimnazjum Temat 21-L Programowanie w języku Logo Warto powtórzyć 1. Proste polecenia

Bardziej szczegółowo