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" (@gazy 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ą: push(@gazy, "argon"); Spowoduje dodanie kolejnego - piątego elementu do push(@gazy, "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 poleceniem: Do zdejmowania wartości z danej tablicy służy polecenie pop: $z = pop(@gazy); 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 = "@gazy" #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 "@gazy"; #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 "@INC\n"; print "@main::inc\n"; 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 (@ARGV) 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

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

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

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

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach: Skrypty powłoki Skrypty są zwykłymi plikami tekstowymi, w których są zapisane polecenia zrozumiałe dla powłoki. Zadaniem powłoki jest przetłumaczenie ich na polecenia systemu. Aby przygotować skrypt, należy:

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

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

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

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

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

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Instrukcje. Operatory. Operatory. Instrukcje sterujące. wyrażenie1 && wyrażenie2 ;

Instrukcje. Operatory. Operatory. Instrukcje sterujące. wyrażenie1 && wyrażenie2 ; Instrukcje wyrażenie1 if wyrażenie2 ; wyrażenie1 until wyrażenie2 ; wyrażenie1 wyrażenie2 ; wyrażenie1 wyrażenie2 ; wyrażenie1? wyrażenie2 : wyrażenie3 ; if (wyrażenie) blok [ [ elsif (wyrażenie) blok...

Bardziej szczegółowo

Trochę o plikach wsadowych (Windows)

Trochę o plikach wsadowych (Windows) Trochę o plikach wsadowych (Windows) Zmienne środowiskowe Zmienną środowiskową można ustawić na stałe w systemie (Panel sterowania->system- >Zaawansowane ustawienia systemu->zmienne środowiskowe) lub też

Bardziej szczegółowo

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch. Instrukcje warunkowe i skoku. Spotkanie 2 Dr inż. Dariusz JĘDRZEJCZYK Wyrażenia i operatory logiczne Instrukcje warunkowe: if else, switch Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania

Bardziej szczegółowo

Pętle. Dodał Administrator niedziela, 14 marzec :27

Pętle. Dodał Administrator niedziela, 14 marzec :27 Pętlami nazywamy konstrukcje języka, które pozwalają na wielokrotne wykonywanie powtarzających się instrukcji. Przykładowo, jeśli trzeba 10 razy wyświetlić na ekranie pewien napis, to można wykorzystać

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

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux Administracja sieciowymi systemami operacyjnymi III Klasa - Linux SKRYPTY POWŁOKI mgr inż. Tomasz Borowiec SKRYPTY POWŁOKI - PODSTAWY W Linuksie skrypt jest plikiem tekstowym zawierającym polecenia systemowe

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

Pracownia Komputerowa wykład III

Pracownia Komputerowa wykład III Pracownia Komputerowa wykład III dr Magdalena Posiadała-Zezula dr Jan Suffczyński 1 Powłoki - rodzaje! W Linux ie mamy kilka powłok do wyboru:! sh : Bourne Shell, oryginalna powłoka systemu unix! csh :

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

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Bash - wprowadzenie. Bash - wprowadzenie 1/39 Bash - wprowadzenie Bash - wprowadzenie 1/39 Bash - wprowadzenie 2/39 Czym jest bash? Rysunek : Zadanie powłoki to ukrycie wywołań systemowych Bash - wprowadzenie 3/39 Czym jest bash? Przykład polecenia:

Bardziej szczegółowo

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

Bardziej szczegółowo

Struktura pliku projektu Console Application

Struktura pliku projektu Console Application Struktura pliku projektu Console Application #include #include using namespace std; int main(int argc, char *argv[]) // to jest komentarz system("pause"); return EXIT_SUCCESS; Na początku

Bardziej szczegółowo

Programowanie w języku C++ Grażyna Koba

Programowanie w języku C++ Grażyna Koba Programowanie w języku C++ 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 zasad

Bardziej szczegółowo

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Tablice (jedno i wielowymiarowe), łańcuchy znaków Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie

Bardziej szczegółowo

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc. Zmienne powłoki Zmienne powłoki (shell variables) to tymczasowe zmienne, które mogą przechowywać wartości liczbowe lub ciągi znaków. Związane są z powłoką, Przypisania wartości do zmiennej następuje poprzez

Bardziej szczegółowo

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych 1. Wstawianie skryptu na stroną: Laboratorium 1 Do umieszczenia skryptów na stronie służy znacznik: //dla HTML5 ...instrukcje skryptu //dla HTML4 ...instrukcje

Bardziej szczegółowo

3. Instrukcje warunkowe

3. Instrukcje warunkowe . Instrukcje warunkowe Przykłady.1. Napisz program, który pobierze od użytkownika liczbę i wypisze na ekran słowo ujemna lub nieujemna, w zależności od tego czy dana liczba jest ujemna czy nie. 1 #include

Bardziej szczegółowo

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający

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

lekcja 8a Gry komputerowe MasterMind

lekcja 8a Gry komputerowe MasterMind lekcja 8a Gry komputerowe MasterMind Posiadamy już elementarną wiedzę w zakresie programowania. Pora więc zabrać się za rozwiązywanie problemów bardziej złożonych, które wymagają zastosowania typowych

Bardziej szczegółowo

4. Funkcje. Przykłady

4. Funkcje. Przykłady 4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni

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

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest Pętle Pętla to pewien fragment kodu, który jest wykonywany wielokrotnie. Wyobraź sobie taką sytuację. Piszesz program do szyfrowania danych. Dane są szyfrowane kolejno bajt po bajcie. Załóżmy, że plik

Bardziej szczegółowo

Technologie Informacyjne - Linux 3

Technologie Informacyjne - Linux 3 Technologie Informacyjne - 3 Instytut Matematyki Uniwersytet Gdański Tryby plików i uprawnienia Każdy z plików uniksowych posiada zbiór uprawnień określajacych, czy możemy dany plik odczytać (r), zapisać

Bardziej szczegółowo

Narzędzia informatyczne w językoznawstwie

Narzędzia informatyczne w językoznawstwie Narzędzia informatyczne w językoznawstwie Perl - Struktury kontrolne i zmienne Marcin Junczys-Dowmunt junczys@amu.edu.pl Zakład Logiki Stosowanej http://www.logic.amu.edu.pl 28. listopada 2007 Marcin Junczys-Dowmunt

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else. Nazwa implementacji: Nauka języka Python wyrażenia warunkowe Autor: Piotr Fiorek Opis implementacji: Poznanie wyrażeń warunkowych if elif - else. Nasz kalkulator umie już liczyć, ale potrafi przeprowadzać

Bardziej szczegółowo

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Spis treści 1 Wprowadzenie 1 2 Dane i kod 2 3 Wyrażenia 2 3.1 Operacje arytmetyczne i logiczne.................. 2 3.2 Podstawowe

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

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

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

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem

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

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

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

1 Przygotował: mgr inż. Maciej Lasota

1 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 1 1/7 Język C Instrukcja laboratoryjna Temat: Programowanie w powłoce bash (shell scripting) 1 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do programowania w powłoce Skrypt powłoki

Bardziej szczegółowo

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego. Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego. Czas realizacji zajęć: 135 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Zmienne śrowiskowe oraz ich eksportowanie, argumenty

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

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

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst. Schematy blokowe I Jeżeli po schematach blokowych będzie używany język C, to należy używać operatorów: '&&', ' ', '!=', '%' natomiast jeśli Ruby to 'and', 'or', '%', '!='. 1. Dostępne bloki: a) początek:

Bardziej szczegółowo

Podstawy programowania w języku C

Podstawy programowania w języku C Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu

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

Zapisywanie algorytmów w języku programowania

Zapisywanie algorytmów w języku programowania Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym

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

System operacyjny Linux

System operacyjny Linux Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 6 Język bash Pierwszy skrypt Rozwinięcia parametryczne Bloki instrukcji Dwa przydatne polecenia Tablice Sprawdzanie warunków Instrukcje

Bardziej szczegółowo

JAVA?? to proste!! Autor: wojtekb111111

JAVA?? to proste!! Autor: wojtekb111111 1 JAVA?? to proste!! 2 Niniejszy tutorial przedstawia krótkie wprowadzenie do programowania w języku JAVA. Jakie narzędzia na początku potrzebujemy do rozpoczęcia programowania w tym języku? JDK (java

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

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR Zadanie polega na napisaniu pierwszego programu w języku C, jego poprawnej kompilacji i wgraniu na mikrokontroler. W tym celu należy zapoznać

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

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1 Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem

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

Programowanie komputerowe. Zajęcia 1

Programowanie komputerowe. Zajęcia 1 Programowanie komputerowe Zajęcia 1 Code::Blocks - tworzenie projektu Create New Project Console Application -> C++ Wybierz nazwę projektu Stworzy się nowy projekt z wpisaną funkcją main Wpisz swój program

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

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

Ćwiczenie 1. Wprowadzenie do programu Octave

Ćwiczenie 1. Wprowadzenie do programu Octave Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 1. Wprowadzenie do programu Octave Mimo że program Octave został stworzony do

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

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda. Nazwa implementacji: Nauka języka C wyrażenia warunkowe if- Autor: Piotr Fiorek Opis implementacji: Poznanie struktury oraz zastosowania wyrażeń warunkowych if- w języku C. W programie realizującym jakiś

Bardziej szczegółowo

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p. Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

Zapis algorytmów: schematy blokowe i pseudokod 1

Zapis algorytmów: schematy blokowe i pseudokod 1 Zapis algorytmów: schematy blokowe i pseudokod 1 Przed przystąpieniem do napisania kodu programu należy ten program najpierw zaprojektować. Projekt tworzącego go algorytmu może być zapisany w formie schematu

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

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja; INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

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

Środowisko programisty Zestaw 7

Środowisko programisty Zestaw 7 Bash, zmienne i instrukcje warunkowe Zmienne możemy traktować jak etykiety, które przechowują ciągi znaków. Definiujemy je przy pomocy znaku = bez spacji po obu jego stronach: dog="azor" Do zmiennych w

Bardziej szczegółowo

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

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

7. Pętle for. Przykłady

7. Pętle for. Przykłady . Pętle for Przykłady.1. Bez użycia pętli while ani rekurencji, napisz program, który wypisze na ekran kolejne liczby naturalne od 0 do pewnego danego n. 5 int n; 6 cin >> n; 8 for (int i = 0; i

Bardziej szczegółowo

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53: Instrukcje sterujące wer. 11 z drobnymi modyfikacjami! Wojciech Myszka 2017-07-05 10:53:09 +0200 Ala ma kota Część I Prosty przykład Problem 1. Zadanie polega na tym, żeby opracować algorytm który dla

Bardziej szczegółowo

Wstęp do programowania. Wykład 1

Wstęp do programowania. Wykład 1 Wstęp do programowania Wykład 1 1 / 49 Literatura Larry Ullman, Andreas Signer. Programowanie w języku C++. Walter Savitch, Kenrick Mock. Absolute C++. Jerzy Grębosz. Symfonia C++. Standard. Stephen Prata.

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

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for. Zadania do wykonania Rozwiązując poniższe zadania użyj pętlę for. 1. apisz program, który przesuwa w prawo o dwie pozycje zawartość tablicy 10-cio elementowej liczb całkowitych tzn. element t[i] dla i=2,..,9

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

Skrypty powłoki w systemie Linux

Skrypty powłoki w systemie Linux Skrypty powłoki w systemie Linux Wykonywanie codziennych czynności w systemie operacyjnym jest męczące, gdy za każdym razem trzeba wpisywać te same zestawy komend. Znacznie wygodniej byłoby zapisać je

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

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

Systemy operacyjne. Programowanie w shellu: BASH. Wydział Inżynierii Metali i Informatyki Przemysłowej

Systemy operacyjne. Programowanie w shellu: BASH. Wydział Inżynierii Metali i Informatyki Przemysłowej Systemy operacyjne Programowanie w shellu: BASH dr inż. Andrzej Opaliński pawilon B5/p.406 tel. (+48)12 617 46 37 e-mail: andrzej.opalinski@agh.edu.pl Wydział Inżynierii Metali i Informatyki Przemysłowej

Bardziej szczegółowo

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012 Skrypty BASH a Systemy Operacyjne 2 Mateusz Hołenko 4 października 2012 Plan zajęć O skryptach słów kilka... Powłoka, wiersz poleceń Obsługa powłoki bash Składnia języka skryptowego bash a Zadania Mateusz

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

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

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

Pracownia Komputerowa wykład III

Pracownia Komputerowa wykład III Pracownia Komputerowa wykład III dr Magdalena Posiadała-Zezula http://www.fuw.edu.pl/~mposiada/pk16 1 Powłoki - rodzaje! W Linux ie mamy kilka powłok do wyboru:! sh : Bourne Shell, oryginalna powłoka systemu

Bardziej szczegółowo

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2) Wstęp do informatyki stęp do informatyki Polecenia (cz.2) Lista procesów top Pokaż listę procesów polecenie interaktywne Procesy Uruchamianie w tle. shell nie czeka na zakończenie procesu, można wydawać

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,

Bardziej szczegółowo