Interactive Data Language - Programming and Data Visualization

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

Download "Interactive Data Language - Programming and Data Visualization"

Transkrypt

1 Uniwersytet Marii Curie Skªodowskiej w Lublinie Wydziaª Matematyki, Fizyki i Informatyki Šukasz Wiadrowski nr albumu Interactive Data Language - Programming and Data Visualization Praca magisterska powstaªa pod kierunkiem prof. dr hab. Krzysztofa Murawskiego

2 SPIS TRE CI 2 Spis tre±ci 1 Wst p Historia j zyka IDL Zastosowanie j zyka IDL Popularyzacja j zyka IDL Cel i zakres pracy Wprowadzenie do skladni Nazwy zmiennych Typy i rozmiary danych Typy podstawowe Tablice Struktury Wska¹niki Konwersja mi dzy typami Operatory Operatory logiczne Operatory arytmetyczne Operatory relacji Instrukcje Instrukcja IF...THEN Instrukcja WHILE...DO Instrukcja REPEAT...UNTIL Instrukcja FOR Instrukcja CASE...OF Instrukcja BREAK Procedury, funkcje, program glówny Procedury Funkcje Program gªówny Kompilacja Edytor dla wersji Praca z danymi Tworzenie danych Operacje na wektorach i macierzach Odczyt danych Pliki ASCII Pliki binarne Pliki graczne

3 SPIS TRE CI 3 4 Dwuwymiarowe rysunki i wykresy Procedura PLOT Procedura OPLOT Metoda LIVE_PLOT Obróbka sygnaªu Tworzenie danych Wygªadzanie sygnaªu metod SMOOTH Filtracja sygnaªu Obróbka plików gracznych Podstawowe operacje na obrazach Histogram obrazu Filtrowanie obrazu Obrazy monochromatyczne Obrazy kolorowe Trójwymiarowe techniki wizualizacji Metoda SURFACE Metoda SHADE_SURF Metoda SHOW Metoda XINTERANIMATE Cz ± programistyczna Podstawy programowania Techniki zaawansowane Podsumowanie 75 Bibliograa 76

4 1 Wst p 4 1 Wst p 1.1 Historia j zyka IDL J zyk IDL powstaª pod koniec lat 70-tych, a jego powstanie wi»e si z uniwersytetem w Boulder w stanie Kolorado, ±ci±lej z LASP 1 oraz osob Davida Sterna, ktory napisaª tam pierwsze linie kodu, dajace podwaliny dla Interactive Data Language. Jednym z pierwszych programow napisanych przez Sterna byª program Rufus, b d cy w skrocie kalkulatorem. Ulepszona wersja tego programu zostaªa u»yta jako interpreter danych z marsja«skich sond Mariner 7 i Mariner 9. W 1977 roku Stern opu±ciª LASP i zalo»yª RSI, czyli Research System Institute, który to instytut do dzi± zajmuje si rozwijaniem i dystrybucj opisywanego w tej pracy j zyka. Dwa lata po zaªo»eniu instytutu, sprzedal pierwsze licencje j zyka IDL dla NASA, a dokªadniej dla Centrum Lotow Kosmicznych (Goddard Space Flight Center). Kolejne dwa lata przyniosªy szybki rozwój rmie i kolejne ulepszenia j zyka. W 1981 roku ameryka«skie uniwersytety oraz kolejne rz dowe instytucje zgªosiªy ch u»ywania j zyka IDL. Rok 1987 przyniósª kolejne zmiany. Zaªo»yciel RSI wraz z pomoc Aliego Bahrami postanawiaj udostepni j zyk równie» u»ytkownikom systemu Unix. Zadanie to polegaªo caªkowitej zamianie kodu ¹ródªowego z kodu napisanego w j zyku Macro i Fortran na kod w j zyku C. Pozwoliªo to na dalsz ekspansj j zyka dla kilkunastu wersji Unix i byªo niew tpliwie komercyjnym sukcesem Sterna i jego ekipy. Jezyk IDL jest ci gle ulepszany i modykowany. Chocia» zakres mo»liwosci tego j zyka jest rozszerzany to jego podstawowe zadania pozostaj takie same jak przed trzydziestoma laty. 1.2 Zastosowanie j zyka IDL J zyk IDL, jest idealnym rozwi zaniem dla celów zwi zanych z analiz danych. Platforma ta to pot»ne narzedzie, kryj ce w sobie wyspecjalizowane techniki przetwarzania du»ych partii danych. Niemal»e od pocz tku byª to j zyk zorientowany na szeroko rozumiane przetwarzanie tablic. Dla u»ytkownika takie rozwi zanie przyczyniªo si do zminimalizowania wielu linii kodu napisanego w C, Fortranie lub innych j zykach, do kilku lub nawet do wywoªania jednej procedury czy funkcji. 1Laboratory for Atmospheric and Space Physics jest jednym z dziaªów badawczych podlegaj cych uniwersytetowi w Boulder w stanie Kolorado,specjalizuje si w technologiach kosmicznych, wspiera naukowo i technicznie loty zaªogowe i bezzaªogowe w±ród nich m.in. sondy Cassini i Galileo.

5 1.3 Popularyzacja j zyka IDL 5 Szeroki zakres zastosowa«przy równoczesnym wyspecjalizowaniu przyczyniªo si do spopularyzowania tego j zyka w±ród du»ej rzeszy naukowców. Istot j zyka jest tworzenie, obróbka oraz wyswietlanie danych. Oto przykªady rm, instytucji i projektów korzystaj cych z opisywanego w tej pracy j zyka: analiza zdj z sond kosmicznych Mariner 7 i Mariner 9, druga z nich dostarczyªa okoªo 7000 zdj Marsa i jego satelitów Phobosa i Deimosa. analiza zdj z Marsa zrobionych w 2004 roku przez kosmiczne ªaziki, Space Science Institute (SSI) Boulder, Colorado analiza zdj tomograi komputerowej (CT), MIMvista Corp. analiza klimatu, pogody, zjawisk na oceanie, danych geozycznych, National Oceanic and Atmospheric Administration (NOAA) program do trójwymiarowej wizualizacji skorupy ziemskiej, Millersville University of Pennsylvania, Earth Sciences Department projekt MRIVIEW, badanie funkcjonowania ludzkiego mózgu, Los Alamos National Labs Biophysics Group analiza zdj komety Halleya, European Space Agency analiza anomalii teleskopu kosmicznego Hubbla przy probie jego naprawy w 1990 roku University of Michigan, University of Colorado, wsparcie prac naukowych Nie sposób wymieni wszystkich projektów, w których wykorzystywany byª j zyk IDL. Zarówno agencje rz dowe, rmy prywatne jak i instytucje akademickie stosuj szeroko jego techniki przetwarzania i wizualizacji danych. J zyka IDL nie nale»y koja»y jedynie z wielkimi projektami naukowymi. Szerokie grono osób prywatnych u»ywa tego j zyka do pracy i nauki w swoich domach. 1.3 Popularyzacja j zyka IDL Interactive Data Language przez niemal»e 30 lat swojego istnienia zaskromiª sobie szerokie grono u»ytkowników. Jego popularno±ci dowodz ameryka«skie

6 1.4 Cel i zakres pracy 6 i zachodnioeuropejskie instytucje naukowe u»ywajace go do swych prac badawczych, tak»e liczna grupa studentów, których uniwersytety postanowiªy wprowadzi ten j zyk do systemu nauczania, wreszcie rzesza entuzjastów chc ca opanowa ten ciekawy j zyk. Sytuacja na krajowym rynku jest nieco odmienna. Tylko nieliczni wykªadowcy i naukowcy zajmuj si tym j zykiem. Wydawaªoby si,»e j zyk IDL podobny sw skªadnia do j zyka Fortran, który byª i jest nadal popularny w±ród ludzi nauki oka»e si jego lepsz alternatyw. Na ten negatywny stan maj zasadniczy wpªyw dwa czynniki: brak publikacji na temat j zyka IDL, a co za tym idzie brak popularyzacji ze wzgledu na trudny dost p do mateiaªów oraz znikome srodki na prowadzenie bada«naukowych, których wynikami zajmuje si opisywany w pracy j zyk. 1.4 Cel i zakres pracy Praca ta to proba opisania bardzo ciekawego j zyka jakim jest Interactive Data Language, czyli IDL. Skierowana jest gªównie do studentów i pracowników naukowych, ale rownie» do wszystkich osób którym nie obce jest poj cie wizualizacji danych. Poniewa» na polskim rynku brak jest publikacji zwi zanych z tym tematem, jest to jednocze±nie próba zapeªnienia powstaªej luki jak i zach ta do poznania tego jezyka. Mam nadziej,»e forma pracy, w której przedstawiam jezyk IDL od podstawowych elementow skªadni, poprzez budow procedur i funkcji, stopniowo odsªaniaj c jego szerokie mo»liwosci uczyni opanowanie tego j zyka jeszcze bardziej przyt pnym.

7 2 Wprowadzenie do skladni 7 2 Wprowadzenie do skladni 2.1 Nazwy zmiennych Zmienne i staªe to podstawowe elementy ka»dego nawet najmniejszego programu. Aby program dziaªaª poprawnie nale»y zapozna si z zasadami dotycz cymi nazywania zmiennych. Po pierwsze nazwy zmiennych mog posiadac litery i cyfry oraz znaki podkreslenia i znak dolara $, musz jednak zaczyna si od litery. Dªugo± nazewnika zmiennej mo»e wynosi maksymalnie 128 znaków, kolejne znaki po 128 b d ignorowane. Po drugie nazwa zmiennej nie mo»e pokrywa si z nazw funkcji lub procedury. Po trzecie nazwa zmiennej nie mo»e posiada odstepów. Nale»y pami ta,»e zmienna zm1, Zm1 i ZM1 to ta sama zmienna. Oto podstawowe zasady i bª dy w praktyce: Tablica 1: Tworzenie poprawnych nazw zmiennych Nazwa bªedna Blad Nazwa poprawna 2zm nie zaczyna sie na liter zm2 _zm2 nie zaczyna sie na liter zm_2 zm@ niedozwolony zm$ zm 2 niedozwolony odstep zm_2 eof konikt z nazw wbudowanej funkcji eoof 2.2 Typy i rozmiary danych W j zyku IDL stosuje si typy wbudowane oraz typy konstruowane przez u»ytkownika z typów wbudowanych, czyli tablice (ang. array)oraz struktury (ang.struct). J zyk IDL jest j zykiem typów przydzielanych dynamicznie. Oznacza to,»e u»ytkownik deklaruj c zmienn nie musi deklarowa jakiego jest ona typu. Typ danej jest dopasowywany do podstawionej pod jej nazewnik warto±ci Typy podstawowe Zbiór typów podstawowych j zyka IDL jest zbli»ony do typów danych innych j zyków programowania. Typy podstawowe s pochodnymi typów caªkowitego (integer), typu rzeczywistego (oat) oraz typu string.

8 2.2 Typy i rozmiary danych 8 Tablica 2: Typy podstawowe j zyka IDL Typ Zakres Rozmiar Byte bit Integer bit Unsigned Integer bit Long bit Unsigned Long bit 64 bit Long * * bit 64 bit Unsigned Long bit Floating-point bit Double-precision bit Complex bit Double-prec. complex bit String sekwencja znakow <2.1GB Powy»sza tabela dodatkowo uwzgl dnia podziaª na trzy podstawowe grupy typów. Typ Complex i Double-precision Complex to dwuelementowe pochodne typu Float i Double sªu» ce do reprezentacji liczb zespolonych i zªozonych struktur zawieraj cych te liczby. Istnieje mozliwosc sprawdzenia jakiego typu zmienne stworzylismy. Poni»ej przykªad utworzenia kilku zmennych i sprawdzenia ich typu: IDL>zm1=6L & zm2=0b & zm3=22 IDL>help,zm1 ZM1 LONG64=6 IDL>help,zm2 ZM2 BYTE=0 IDL>help,zm3 ZM3 INT=2 IDL>help,zm4 ZM4 FLOAT= IDL>help,zm5 ZM5 STRING='napis' & zm4=0.25 & zm5='napis' Tablice Tablica jest ponumerowan grup zmiennych tego samego typu. Pierwszy element tablicy posiada indeks 0, natomiast element ostatni ma indeks rowny liczbie elementów w tablicy zmniejszony o jeden. Aby zdeniowa tablic nale»y po nazewniku zmiennej i znaku podstawienia w nawiasach klamrowych

9 2.2 Typy i rozmiary danych 9 umie±ci dowoln liczb elementów tego samego typu rozdzielonych znakiem przecinka. IDL>tablica_int=[3,5,6,25,10,27] IDL>print,tablica_int Je»eli w tablicy umie±cimy elementy typu integer i elementy typu oat to nast pi automatyczna konwersja liczb caªkowitych na rzeczywiste. IDL>tablica_float=[3.24,5.3,6.67,25,10,27] IDL>print,tablica_float IDL wykonuje automatyczn konwersj tylko miedzy typami caªkowitymi i rzeczywistymi. Próba wstawienia do tablicy zawieraj cej warto±ci liczbowe np.: napisu daje w wyniku 0 w miejscu w którym ten napis wstawiono: IDL>tablica_int=[3,5,6,25,10,'napis'] IDL>print,tablica_int Oprócz tablic jednowymiarowych IDL umo»liwia nam tworzenie tablic wielowymiarowych. Maksymalny, dozwolony wymiar takiej tablicy wynosi 8. Aby utworzyc tablic wielowymiarow (w naszym przypadku dwuwymiarow ) poslu»ymy si nast puj cym kodem: IDL>tab2D=[[1,2,3],[4,5,6]] IDl>help,tab2D TAB2D INT = Array[3, 2] IDL>print,tab2D Tworz c bardziej zªo»one tablice pami tajmy,»e zawarto± ka»dego nawiasu to jeden wiersz tablicy, a ilo± elementów w wewnetrznym nawiasie to ilo± kolumn.

10 2.2 Typy i rozmiary danych Struktury Jedna tablica potra przechowywa dane tylko jednego typu. Struktura natomiast jest typem przeznaczonym do przechowywania zbioru danych ró»nych typów. Wyró»niamy dwa typy struktur: struktury nazwane i struktury anonimowe. Jedyna ró»nica pomi dzy nimi polega na tym,»e nie mo»na modykowac nazwy pola skªadowego i typu struktury nazwanej. Struktury nazwane slu» gªównie do przechowywania informacji o wielu obiektach o tych samych wªa±ciwo±ciach. Oto przykªad utworzenia, wprowadzenia i wy±wietlenia danych struktury nazwanej, a tak»e próba zmodykowania typu pola: IDL>void = {samochod,$ IDL>rok_produkcji:0, $ IDL>marka:'', $ IDL>model:'', $ IDL>przebieg:0D } IDL>moj_sam={samochod} IDL>moj_sam.rok=1999 IDL>moj_sam.marka='Renault' IDL>moj_sam.model='Clio' IDL>moj_sam.przebieg= IDL>print,moj_sam.rok,moj_sam.marka,moj_sam.model, $ moj_sam.przebieg 1999 Renault Clio Operator $ u»ywany na ko«cu wiersza nakazuje kompilatorowi traktowanie nast pnego wiersza jako kontynuacje poprzedniego. Sprawd¹my typ pola przebieg przed prob zmiany jego typu: help,moj_sam.przebieg <Expression> DOUBLE = Wstawmy caªkowit warto± pola przebieg i sprawd¹my teraz jego typ: moj_sam.przebieg=58000 help,moj_sam.przebieg <Expression> DOUBLE= Typ pola nie zmieniª si. Równie» zmiana nazwy pola lub ich liczby nie jest mo»liwa w stukturze nazwanej. Wracaj c do metod wy±wietlania stuktur

11 2.2 Typy i rozmiary danych 11 istnieje druga metoda wy±wietlania pól struktury. Aby wy±wietli wszystkie pola nie musimy zna ich nazw tylko ich liczb. Pola numerowane s tak jak w przypadku tablic. Oto przykªad: IDL>print,moj_sam.(0),moj_sam.(1),moj_sam.(2),moj_sam.(3) 1999 Renault Clio Pola struktury nienazwanej mog by dowolnie modykowane. Zatem ich typ,nazwa i ilo± mog si zmienia wedªug gustu u»ytkownika. Oto przykªad utworzenia struktury nienazwanej i próby jej modykacji: IDL>karol={wiek:22,wzrost:175,waga:69} IDL>help,karol.wzrost <Expression> INT=175 IDL>karol={wiek:22,wzrost:175.5,waga:69} IDL>help,karol.wzrost <Expression> FLOAT= Dzi ki wstawieniu nowej warto±ci nast piªa zmiana typu pola naszej struktury z caªkowitej na rzeczywist Wska¹niki Wska¹nik jest zmienn wskazuj c na inn zmienn. Powstaje pytanie dlaczego stosowa zamiennik oryginalnej zmiennej. Odpowied» jest krótka, z powodu rozmiaru. Wska¹nik jest umieszczny w 4 bajtach pami ci. Jego gªówn zalet jest to,»e mo»e wskazywa na obiekty o du»o wi kszych rozmiarach takich jak tablice, czy zªo»one struktury. Przy wielokrotnym odwoªywaniu si do tych du»ych zbiorów danych u»ywanie wska¹nikow oszczedza pami potrzebn na allokowanie obiektów. Mo»emy tworzy dwa typy wska¹ników: wska¹nik null oraz wska¹nik do zmiennej. Oto kod tworz cy pierwszy typ wska¹nika: IDL>wsk=ptr_new() IDL>help,wsk WSK POINTER = <NullPointer> Wska¹nik null jest u»yteczny je»eli zmienna, na któr wskazuje jest nieznana w czasie tworzenia wska¹nika. Drugi typ wska¹nika (wska¹nik na zmienn ) mo»e zosta utworzony na dwa sposoby. Pierwszym sposobem jest u»ycie funkcji PTR_NEW z argumentem b d cym obiektem, na który wska»nik ma

12 2.2 Typy i rozmiary danych 12 wskazywa. IDL>tablica_int=[1,2,3,4,5,6] IDL>wsk_tablica1=ptr_new(tablica_int) Drugi sposób polega na tym,»e najpierw tworzymy wska¹nik niezdeniowanej zmiennej przy pomocy funkcji PTR_NEW z argumentem allocate_heap. Nast pnie tworzymy dane, na które b dzie wskazywaª wska¹nik i podstawiamy dane pod wska¹nik. IDL>wsk_tablica2=ptr_new(/allocate_heap) IDL>tablica_float=[1.0,2.0,3.0,4.0,5.0,6.0] IDL>*wsk_tablica2=tablica_float Zalet wska¹ników jest to,»e mo»emy sie nimi posªugiwa jak obiektami, na które wskazuj. Poznajmy sposób odwoªywania si do warto±ci obiektów, na które wskazuj wska¹niki. W celu wy±wietlenia elementów tablicy tablica_int i struktury z poprzedniego rozdziaªu posªu»my si poleceniem: IDL>print,*wsk_tablica IDL>wsk_samochod=ptr_new(moj_sam) IDL>print,*wsk_samochod 1999 Renault Clio Aby wy±wietli pojedynczy element tablicy posluguj c si wska¹nikiem nale»y posªu»yc si poleceniem: print,(*wsk_tablica1)[5] 6 print,(*wsk_samochod).model Clio Prace ze wska¹nikem ko«czymy wpisuj c polecenie: ptr_free,wsk_tablica Konwersja mi dzy typami J zyk IDL oferuje nam szeroki zestaw typów danych. Czasami jednak niezb dne staje si przekonwertowanie typu. Nasze pocz tkowe zaªo»enia mog okaza

13 2.2 Typy i rozmiary danych 13 si bªedne i zakres naszej zmiennej mo»e okaza si zbyt maªy. Cz sto deklarujemy zmienn licznika p tli jako integer. Zakres jej je»eli startujemy od 0 wynosi nieco ponad Przy wi kszym zbiorze danych do przetworzenia ªatwo przekroczy t granic. Oto zestaw funkcji przydatnych do konwertowania typów: Tablica 3: Funkcje konwertuj ce typy Typ Funkcja konwertuj ca Byte b=byte(x) Integer i=x(x) Unsigned Integer ui=uint(x) Long l=long(x) Unsigned Long ul=ulong(x) 64-bit Long l64=long64(x) 64-bit Unsigned Long ul64=ulong64(x) Floating-point f=oat(x) Double-precision d=double(x) Complex zesp=complex(x) Double Complex dzesp=dcomplex(x) String str=string(x) A oto dziaªanie kilku z tych funkcji w praktyce: IDL>tablica_float=[3.2,4.6,4.49,3.99,5.22,1.18] IDL>tablica_int=fix(tablica_float) IDL>print,tablica_int Spój»my na sposób konwersji pomi dzy typem integer a byte. Wynikiem tej konwersji musi by zawsze liczba z przedziaªu dozwolonego dla typu byte (0-255). Przyj»yjmy si tej metodzie zamiany typów: tablica_int=[433,512,123,256,255,257] tablica_byte=byte(tablica_int) print,tablica_byte

14 2.3 Operatory 14 Oto nastepny przykªad konwersji typów. Tym razem z typu string na oat. tablica_string=['0.56','455','9 99','-78.6','L3L','36B'] tablica_float=float(tablica_string) print,tablica_float Nie ka»da konwersja jest dozwolona. Przykªadem jest tu próba zamiany napisu zawieraj cego liter na pierwszym miejscu na warto± liczbow. O tym,»e konwersja mi dzy naszymi typami jest niemo»liwa do wykonania informuje nas w naszym przypadku komunikat: Type conversion error: Unable to convert given STRING to Float. 2.3 Operatory Operatory logiczne W j zyku IDL wyró»niamy trzy operatory logiczne. S to operator iloczynu AND &&, operator sumy OR oraz operator logicznej negacji NOT. Operator logiczny && daje w wyniku 1 kiedy wynikiem wyra»e«, które ten operator ª czy jest prawda logiczna. Nale»y pami ta,»e niezerowe warto±ci liczbowe, niepuste napisy oraz wszystkie wskazniki oprócz wska¹nikow null traktowane s jako logiczna prawda, wszystkie pozostaªe obiekty traktowane s jako logiczny faªsz. Tak jak w wi kszo±ci wspóªczesnych j zyków programowania je»eli pierwszy warunek jest falszem drugi nie jest ju» sprawdzany. Oto przykªady: IDL>print,1&&1 1 IDL>print,1&&0 0 IDL>print,1&&'napis' 1 IDL>print,1&&wsk_tablica 1 Operator logiczny daje w wyniku prawd je»eli jedno z wyra»e«, które ª czy jest prawd. W tym wypadku je»eli pierwsze wyra»enie jest prawd drugie nie jest ju» sprawdzane. Oto przykªady:

15 2.3 Operatory 15 IDL>print,0 1 1 IDL>print,0 0 0 Operator logicznej negacji daje w wyniku 1 je»eli wyra»enie przed nim stoj ce jest logicznym faªszem. W przciwnym wypadku wynikiem jest 0. Oto przykªady: IDL>print,~0 1 IDL>print,~ Operatory arytmetyczne J zyk IDL zawiera standardowy zestaw operatorow matematycznych wzbogacony o operatory inkkrementacji ++, deinkrementacji - -, pot gowania oraz uzyskiwania reszty z dzielenia MOD. Tablica 4: Operatory arytmetycze operator opis przykªad wynik + dodawanie a= inkrementacja a=3 a odejmowanie a= deinkrementacja a=3 a- - 2 * mno»enie a=3*5 15 / dzielenie a=10.0/ pot gowanie a=23 8 MOD dzielenie modulo a=11 MOD Operatory relacji Operatory relacji s niezb dne w budowaniu wyra»en takich jak instrukcje warunkowe czy p tle. Ich zadaniem jest zbadanie czy dany warunek zachodzi miedzy dwoma czªonami danej relacji. Wynikiem jest prawda lub falsz logiczny. Skªadnia operatorów logicznych j zyka IDL wywodzi si z j zyka For-

16 2.4 Instrukcje 16 tran. Oto zestawienie operatorów relacji: Tablica 5: Operatory relacji j zyk IDL j zyk Fortran opis EQ.EQ. równy NE.NE. ró»ny GT.GT. wi kszy GE.GE. wi kszy-równy LT.LT. mniejszy LE.LE. mniejszy-równy 2.4 Instrukcje J zyk IDL udost pnia u»ytkownikowi szereg podstawowych instrukcji, dzi ki znajomo±ci których ªatwiej opisywa i programowa zªo»one problemy. Do instrukcji nalez : instrukcja warunkowa IF...THEN, instrukcja p tli WHILE...DO, instrukcja p tli FOR i p tli REPEAT...UNTIL, instrukcja wyboru CASE...OF oraz pochodne niektórych z tych instrukcji Instrukcja IF...THEN Warunek logiczny umieszczony w instrukcji warunkowej sªu»y wybraniu jednej z alternatywnych dróg programu. Skªadnia instrukcji jest nastepuj ca: IF warunek THEN instrukcja Je»eli po speªnieniu warunku chcemy wykona wi cej ni» jedno polecenie to nale»y zgrupowa te polecenia: IF warunek THEN BEGIN instrukcja1 instrukcja2... ENDIF Je±li chcemy aby nasz program zabezpieczaª obydwie drogi po wykonaniu testu logicznego, to jest drog po speªnieniu warunku i drog gdy warunek nie jest speªniony potrzebna jest nam instrukcja IF...THEN...ELSE.

17 2.4 Instrukcje 17 IF warunek THEN instrukcja_na_tak ELSE instrukcja_na_nie Równie» w tym przypadku je±li liczba instrukcj w której± z gaª zi jest wi ksza ni» jeden to nale»y zgrupowa te polecenia kodem: IF warunek THEN BEGIN instrukcja_na_tak_1 instrukcja_na_tak_2... ENDIF ELSE BEGIN instrukcja_na_nie_1 instrukcja_na_nie_2... ENDELSE Nie jest bª dem u»ywanie ª czników BEGIN...ENDIF oraz BEGIN...ENDELSE dla pojedynczych instrukcji w drodze na tak lub na nie. Oto dziaªanie instrukcji w praktyce: IDL>licz1=100.0 && licz2=50.0 IDL>IF (licz1 mod licz2 EQ 0) THEN BEGIN $ IDL>print,("licz1 jest podzielnikiem licz2") $ IDL>ENDIF ELSE BEGIN $ IDL>print,("licz1 nie jest podzielnikiem licz2") $ IDL>ENDELSE licz1 jest podzielnikiem licz Instrukcja WHILE...DO Instrukcja ta jest jedn z dostepnych w j zyku IDL p tli, czyli instrukcji kontroluj cych wielokrotne wykonywanie si pewnych cz sci kodu programu. Jej skªadnia jest nast puj ca: WHILE warunek DO instrukcja Je±li w refrenie p tli wystepuje wi cej ni» jedno polecenie nale»y ograniczy je w nastepuj cy sposób: WHILE warunek DO BEGIN instrukcja1

18 2.4 Instrukcje 18 instrukcja2... ENDWHILE Refren p tli, czyli jej instrukcje po sªowie kluczowym DO wykonuj si dopóki warunek p tli jest prawdziwy. Kiedy warunek p tli jest faªszem logicznym przed pierwszym wykonaniem petli oznacza to,»e refren nigdy si nie wykona. Oto przykªad dzialania p tli WHILE...DO: IDL>licznik=0 IDL>WHILE(licznik LT 5) DO BEGIN $ IDL>print,3^licznik $ IDL>licznik++ $ IDL>ENDWHILE Instrukcja REPEAT...UNTIL P tla ta jest skªadniowo podobna do p tli WHILE...DO. Ró»nica polega na tym,»e warunek sprawdzany jest po wykonaniu instrukcji refrenu. Wyj±cie z p tli nast puje tutaj, gdy warunek jest speªniony. Zatem nawet je±li pierwsze sprawdzenie warunku p tli daje w wyniku prawd to refren wykona si jeden raz, co bylo niedopuszczalne w poprzednio opisywanej p tli. Uwzgledniamy oczywiscie,»e z poprzedniej petli wyj±cie nastepowaªo przy falszu warunku p tli. Oto skªadnia p tli REPEAT...UNTIL: REPEAT instrukcja UNTIL warunek W przypadku wi kszej ilo±ci instrukcji w refrenie p tli modykujemy skªadnie dodaj c: REPEAT BEGIN instrukcja1 instrukcja2... ENDREP UNTIL warunek Zwró my uwag,»e warunek p tli jest prawdziwy przed pierwszym jego sprawdzeniem. Oto przykªad dziaªania tej p tli: IDL>licznik=5

19 2.4 Instrukcje 19 IDL>suma=10 IDl>REPEAT BEGIN $ IDL>suma=suma+licznik $ IDL>licznik++ $ IDL>print,suma $ IDL>ENDREP UNTIL(suma GE 10) 15 Budowa tej p tli mo»e by pomocna przy dokonywaniu wyboru pomi dzy wykonaniem refrenu, a pomini ciem tego etapu i przejsciem np.: do wykonywania dalszych oblicze«: REPEAT BEGIN instrukcje refrenu print,"zakonczyc (T/N) read,odp ENDREP UNTIL (odp EQ 'T') Instrukcja FOR P tla FOR jest p tl z licznikiem. Pozwala ona na wykonywanie polece«zawartych w refrenie okre±lon przez u»ytkownika ilo± razy. Dodatkowo p tla for j zyka IDL umo»liwia ustawienie kroku odpowiedzialnego za zwi kszanie licznika. Je»eli tego nie zrobimy to krok b dzie miaª warto± 1 i po ka»dym wykonaniu instrukcji refrenu, licznik b dzie zwi kszany o t wla±nie warto±. Oto skªadnia p tli FOR: FOR licznik=poczatek,koniec,krok DO BEGIN instrukcja1 instrukcja2... ENDFOR Je»eli w refrenie p tli zawarta jest tylko jedna instrukcja to ograniczniki BEGIN i ENDFOR s zb dne. Ich u»ywanie jednak cz sto pomaga w dobrej i czytelnej organizacji pisanego przez nas kodu. Oto przykªad zastosowania tej p tli w praktyce przy wy±wietlaniu kilku kolejnych pot g dwójki, drugi przykªad ilustruje zagnie»d»anie dwóch p tli FOR daj ce w wyniku macierz jednostkow :

20 2.4 Instrukcje 20 IDL>FOR i=0,4 DO BEGIN $ IDL>print,2^i $ IDL>ENDFOR macierz=indgen(4,4) FOR i=0,3 DO BEGIN FOR k=0,3 DO BEGIN IF (i EQ k) THEN BEGIN macierz[i,k]=1 ENDIF ELSE BEGIN macierz[i,k]=0 ENDELSE ENDFOR ENDFOR print,macierz Instrukcja CASE...OF Instrukcja CASE...OF to bardziej zªo»ona wersja instrukcji warunkowej. Badana jest tu warto± pewnej zmiennej. Ka»da warto± jak ta zmienna mo»e przyj prowadzi do innej cz ±ci kodu. Ilo± tych rozgaª zie«zale»y od u»ytkownika. Przyj»yjmy si skªadni tej instrukcji: CASE zmienna OF przypadek1: BEGIN instrukcje END przypadek2: BEGIN instrukcje END... ELSE: BEGIN instrukcje END ENDCASE

21 2.4 Instrukcje 21 Opcja ELSE nie jest obowi zkowa i mo»na j pomin. Odpowiada ona za wszystkie pozostaªe warto±ci zmiennej, które nie zostaªy uwzgl dnione w wyró»nionych przypadkach. Oto prosty przykªad u»ycia naszej instrukcji w praktyce. U»ywam tutaj dwóch funkcji systemowych max()i min(), których wynikiem jest odpowiednio najwi ksza i najmniejsza liczba ze zbioru wejsciowego. Oto przykªad: tablica_int=[9, 87, 56, 34, 0, -12, 44] print,'1-oblicz maximum' print,'2-oblicz minimum' print,'3-wyjscie z programu' print,'wybierz 1-3' read,odp CASE odp OF 1: begin print,'minimum to:' print,min(tablica_int) end 2: begin print,'maximum to:' print,max(tablica_int) end 3:print,'Opcja wyjscie' ELSE: print,'niepoprawna odpowiedz!' ENDCASE Šatwo zauwa»y,»e wprowadzanie wielu linii kodu z wiersza polece«jest uci zliwe. Nie mamy równie» mo»liwo±ci zapisania wyników naszej pracy. Wkrótce dowiemy si na czym polega pisanie procedur i funkcji i jakie mamy z ich pisania korzy±ci. Przedstawiony wy»ej kod to kod procedury. Poni»ej wyniki powstaªe dzi ki kompilacji jej kodu: 1-oblicz maximum 2-oblicz minimum 3-wyjscie z programu IDL>Wybierz 1-3: 1 Minimum to: -12

22 2.5 Procedury, funkcje, program glówny Instrukcja BREAK Instrukcja BREAK jest ±ci±le zwi zana z instrukcjami takimi jak FOR,WHILE REPEAT...UNTIL. U»ycie instrukcji BREAK wewn trz tych p tli prowadzi do natychmiastowego z niej wyj±cia. Oto przykªad: FOR i=1,10 DO BEGIN IF(i EQ 5)THEN BREAK print,i ENDFOR print,'wyjscie z petli' wyjscie z petli Normalnie nastapiªoby wy±wietlenie wszystkich elementów licznika. Po wykonaniu instrukcji BREAK nast piªo natychmiastowe zako«czenie wykonywania instrukcji p tli FORi wyj±cie poza ni. 2.5 Procedury, funkcje, program glówny Pisanie bardziej zªo»onych programów, zawieraj cych wiele linii kodu wymaga podzielenia zada«programu pomi dzy procedury i funkcje. Post p programistyczny wymusiª na twórcach j zyka IDL stworzenie edytora uªatwiaj cego wprowadzanie kodu. Pisanie procedur, funkcji i programów, a tak»e ich kompilacja sta a si wygodniejsza. Poznajmy tajniki pisania i kompilacji procedur, funkcji, programów gªównych, a tak»e wygl d i funkcje edytora j zyka IDL dla wersji Procedury Pisanie dowolnej procedury zaczynamy w nastepuj cy sposób: pro nazwa procedury,lista parametrów,lista sªów kluczowych tre± procedury end Nazwa pliku, w którym zapisali±my dan procedur musi skªadac si z nazwy procedury i rozszerzenia pro. Lista parametrów i sªów kluczowych jest opcjonalna. Nie ka»da procedura musi je zawiera. Rol sªów kluczowych jest cz sto kontrolowanie sposobu dziaªania programu. Odpowiadaj one m.in.

23 2.5 Procedury, funkcje, program glówny 23 za rodzaj i sposób wy±wietlania wyników programu. Oto przykªad procedury i sposób przekazywania do niej parametrów: pro power,liczba1,liczba2 print,liczba1^liczba2 end Plik z nasz procedur zgodnie z reguª nazwali±my power.pro po jego skompilowaniu wywoªujemy plik wykonywalny i przekazujemy parametr procedurze nastepuj co: IDL>power,3, Funkcje Funkcja zwraca wynik operacji w niej wykonywanych. Oto sposób budowania dowolnej funkcji: function nazwa funkcji,lista argumentów,lista sªów kluczowych tr± funkcji end Do przekazania warto±ci wynikowej sªu»y polecenie RETURN, warto±. Dozwolone jest posiadanie wielu instrukcji return w tre±ci danej funkcji, ale mo»liwe mo»e by wykonanie tylko jednej z nich. Oto przykªad funkcji zwracaj cej mniejsz z dwóch liczb wejsciowych: function minimum,liczba1,liczba2 IF (liczba1 GT liczba2) THEN BEGIN return,liczba2 ENDIF ELSE BEGIN return,liczba1 ENDELSE end Po kompilacji pliku minimum.pro jakim nazwali±my plik z nasz funkcj nale»y przekaza zwracany rezultat wywoªuj c funkcj nastepujaco: IDL>wynik=minimum(10,0.5) IDL>print,wynik

24 2.5 Procedury, funkcje, program glówny Program gªówny Program gªówny jest programem nadzorczym. Odpowiada on za kolejno± wykonywania procedur i funkcji z nim zwi zanych. Nie posiada on deklaracji na pocz tku. Jedynym wymogiem jest zako«czenie jego instrukcji sªowem END. Je»eli umie±cilismy sekcje programu gªównego w pliku to jego nazwa nie mo»e pokrywa si z nazw funkcji lub procedury w nim zawartej. Kompilator sam wykrywa czy dany plik posiada sekcje programu gªównego czy nie. Je»eli takowa istnieje to zostaj skompilowane wszystkie moduªy procedur i funkcji, a nazwa danego moduªu b dzie nazw danej funkcji lub procedury. Dodatkowo skompilowany moduª gªówny przyjmie nazw $MAIN$. Jego wykonanie nast pi po wpisaniu w linii polece«polecenia: IDL>.GO Oto przykªad kodu programu gªównego zapisanego w pliku glowny.pro steruj cego wykonywaniem procedur oraz sposob kompilacji moduªów programu gªównego i procedur: pro wyswietl1 print,'procedura nr.1' end pro wyswietl2 print,'procedura nr.2' end print,'program glowny wykonuje:' wczytaj wyswietl end Skompilujmy plik glowny.pro i spój»my na skomilowane moduªy: IDL>.COMPILE glowny Compiled module: WYSWIETL1. Compiled module: WYSWIETL2. Compiled module: $MAIN$. Istnieje mo»liwo± sprawdzenia dziaªania ka»dego moduªu z osobna. Wywoªajmy jedn z procedur, a nast pnie program gªowny: IDL>wyswietl1

25 2.5 Procedury, funkcje, program glówny 25 procedura nr.1 IDL>.go program glowny wykonuje: procedura nr.1 procedura nr Kompilacja Otrzymanie wyników napisanego kodu mo»e si odby poprzez jego skompilowanie. Cz ± polece«poznali±my we wcze±niejszym podrozdziale. Oto wszystkie polecenia niezb dne przy kompilacji i uruchamianiu programów z linii polece«: IDL>.COMPILE [plik1,...,plikn] lub IDL>.COM [plik1,...,plikn] Polecenie to kompiluje procedury, funkcje programy gªówne zawarte w wyszczególnionych plikach. IDL>.RUN [plik1,...,plikn] lub IDL>.R [plik1,...,plikn] Polecenie dziaªa tak jak poprzednie, dodatkowo je»eli plik posiada sekcje programu gªównego nastepuje natychmiastowe wykonanie tej sekcji. IDL>.GO Polecenie to nakazuje wykonanie kodu uprzednio skompilowanego modulu gªównego programu. Ka»da zmiana w kodzie wymaga skompilowania tego modulu, w którym zaszªa zmiana. Nie jest wymagane dodawanie rozszerze«kompilowanych b d¹ uruchamianych plików. Kompilator automatycznie wyszuka podany plik z rozszerzeniem pro o podanej nazwie Edytor dla wersji 6.2 Wspomnieli±my wczesniej,»e cz sto m cz ce jest wprowadzanie kodu poprzez linie polece«. Dzi ki edytorowi j zyka IDL pisanie programów, ich kompilacja, uruchamianie, a tak»e korzystanie z bogatej pomocy nie stanowi wielkiego problemu. Mo»na powiedzie,»e dzi ki edytorowi mo»emy postawi pierwsze kroki w celu poznania j zyka IDL. Jest on dost pny dla systemow Windows, Macintosh oraz wielu platform Unixowych.

26 2.5 Procedury, funkcje, program glówny 26 Edytor skªada si z kilku paneli. Bezpo±rednio u góry znajduje si pasek menu, a pod nim pasek narz dzi edytora. Pod paskiem edytora znajduje si duzy panel edytora kodu oraz mniejszy panel projektu. Pod nimi znajduje si panel wyników, nast pnie panel zmiennych i linia polece«. Oto wygl d edytora: Rysunek 1: Wygl d edytora j zyka IDL dla wersji 6.2 Wersj demo mo»na pobra ze strony Wersj tak mo»na równie» otrzyma poczt po wypeªnieniu ankiety zawartej na tej stronie. Niestety zablokowanych jest tu kilka funkcji m.in. zapis danych do pliku,a czas u»ywania edytora jest ograniczony do 7 minut, po których trzeba ponownie uruchomic edytor. Niespotkaªem si na polskim rynku z dystrybucj systemu Linux, w któr wbudowany byªby kompilator tego jezyka. Wersja studencka to koszt okoªo 80 dolarów.

27 3 Praca z danymi 27 3 Praca z danymi Je»eli mamy jakiekolwiek dane to na pewno da si je wy±wietli przy pomocy j zyka IDL. Je»eli natomiast nie mamy zbioru danych, nad którym chcieliby±my pracowa to j zyk IDL stworzy te dane dla nas. 3.1 Tworzenie danych Nie zawsze mamy gotowy zestaw danych. J zyk IDL posiada szereg wbudowanych funkcji inicjuj cych zestaw danych. Za ich pomoc mo»emy utworzy jednowymiarowy wektor lub wielowymiarowe tablice dowolnego typu. Pola inicjowane s wartosci 0. Dla przy±pieszenia dziaªania programu mo»na z tej inicjacji zrezygnowa wstawiaj c w funkcji inicjuj cej ag /NOZERO. Oto zestaw tych funkcji: Tablica 6: Funkcje tworz ce zbiory danych Typ Funkcja byte BYTARR() integer INTARR() unsigned integer UINTARR() long LONARR() unsigned long ULONARR() 64-bit long LON64ARR() unsigned 64-bit long ULON64ARR() oating point FLTARR() double precision DBLARR() string STRARR() Wszystkie te funkcje maj jednakow skªadni. Wynik ich dziaªania jest równie» podobny, jednak warto±ci, którymi s inicjowane s ró»ne i tak dla typu byte jest to warto± 0, a dla typu double 0.0. Podaj c za argument funkcji tylko jeden wymiar otrzymujemy wektor o liczbie pól okre±lon przez nasz argument i typie adekwatnym do wywoªanej funkcji. Oto skªadnia jednej z tych funkcji, przykªad u»ycia i wynik: wynik=fltarr(d1[,...,d8] [,/NOZERO]) IDL>tablica_float=FLTARR(3,3) IDL>print,tablica-float

28 3.2 Operacje na wektorach i macierzach Oto nast pny zestaw funkcji. Charakteryzuj sie one tym,»e pierwszy element zbioru przez nie utworzonego ma wartosc 0, ka»dy nast pny element zwi ksza t warto± o 1. Tablica 7: Funkcje inicjuj ce zbiory danych Typ Funkcja byte BINDGEN() integer INDGEN() unsigned integer UINDGEN() long LINDGEN() unsigned long ULINDGEN() 64-bit long L64INDGEN() unsigned 64-bit long UL64INDGEN() oating point FINDGEN() double precision DINDGEN() Sój»my jak wygl da dzia anie dwóch z tych funkcji w praktyce: IDL>tab_int=INDGEN(3,3) IDL>tab_float=FINDGEN(2,2) IDL>print,tab_int IDL>print,tab_float Operacje na wektorach i macierzach Dowiedzieli±my si jak stworzy wielowymiarowe zbiory danych. Czas na poznanie operacji jakie s mo»liwe na tych zbiorach. W±ród operacji na macierzach i wektorach istnieje wiele zale»no±ci.

29 3.2 Operacje na wektorach i macierzach 29 Z racji tego,»e macierze stanowi bardziej zªo»one struktury, a wiekszo± danych przechowywana jest wla±nie w macierzowej postaci wielowymiarowych kolumn i wierszy poznanie operacji macierzowych stanowi istotny punkt w poznaniu jezyka IDL. Najpierw poznajmy kilka operacji na wektorach: wektor=indgen(5) print,wektor print,wektor(2:4) print,wektor^ print,wektor GE print,[wektor,20,21] Struktura dowolnej macierzy M jest taka,»e element le» cy na przeci ciu i-tej kolumny i j-tego wiersza oznaczamy przez M[i,j]. J zyk IDL ªatwiej i szybciej ni» jakikolwiek inny j zyk operuje na macierzach. Mogli±my si przekona obserwuj c operacje na wektorach,»e jednym poleceniem wykonujemy to co w innych j zykach programowania wymagaªoby zastosowania jednej p tli. W stosunku do macierzy,gdzie zast powane s przynajmniej dwie petle wida specjalizacj j zyka w tym zakresie. Zobaczmy przykªady kilku operacji macierzowych: macierz_1=indgen(3,3) print,macierz_ print,rotate(macierz_1,1) print,rotate(macierz_1,4) print,transpose(macierz_1+1)

30 3.2 Operacje na wektorach i macierzach Mo»emy przesuwa klolumny i wiersze macierzy przy pomocy funkcji SHIFT. Drugi argument tej funkcji odpowiada za przesuwanie kolumn, trzeci natomiast odpowiada za przesuwanie wierszy. W celu szybszego poznania dziaªania tej funkcji najpierw przypomnijmy posta bazow naszej wejsciowej macierzy: print,macierz_ print,shift(macierz_1,1,0) print,shift(macierz_1,0,1) Pamietaj c,»e przy pomocy funkcji print nie zmieniamy naszych danych zapisanych w pami ci komputera lecz tylko modykujemy ich warto±ci przy wy±wietlaniu zobaczmy w jak prosty sposób przy pomocy operatora ## mo»emy pomnozy dwie macierze. Macierz druga musi mie tak sam liczb wierszy co macierz pierwsza liczb kolumn, w przeciwnym wypadku wygenerowane zostanie ostrze»enie: Operands of matrix multiply have incompatible dimensions Pamietaj c o powy»szej zasadzie tworzymy dwie nowe macierze i wykorzystujemy nasz operator: macierz_1=[[3,2],[2,3],[3,2]] macierz_2=[[2,3],[4,3]] print,macierz_1 ## macierz_

31 3.3 Odczyt danych 31 Tak oto wykonali±my programowo najszybsze mno»enie dwóch maciezy z zachowaniem kontroli nad ich poprawn iloscia kolumn i wierszy. Tym kilku liniom kodu cz sto równowa»ne jest kilkudziesi t w przypadku j zyków takich jak Pascal, czy C. 3.3 Odczyt danych Dane s podstaw ka»dego wykresu. W poprzednim rozdziale opisaªem sposoby tworzenia danych. Cz sto jednak takie sposoby nie wystarczaj i nale»y wczyta zbiór danych z pliku. J zyk IDL wspiera wiele formatów danych m.in. pliki: ASCII, binarne, DICOM, DXF, WAV i XDR. S w±ród nich tak»e formaty naukowe takie jak: CDF, HDF, HDF-EOS czy netcdf. Wczytywaniu tak ró»norodnych danych musz towarzyszy ró»ne techniki. Danym zapisanym w obrazach, tworzeniu obrazów z danych jak i obslugiwanym formatom gracznym po±wi cony b dzie osobny rozdziaª. Oto niektóre z technik wczytywania danych Pliki ASCII J zyk IDL obsªuguje dwa typy danych ASCII. Jest to typ tak zwanego wolnego formatu, gdzie poszczególne elementy w pliku oddzielone s przecinkami, znakami spacji lub znakami tabulacji oraz typ wyra¹ny, gdzie elementy w pliku oddzielone s innym znakiem wybranym przez uzytkownika. Istnieje kilka sposobów czytania takich danych. Pierwszym z nich jest u»ycie procedury READF, której wywoªanie wymaga wpierw u»ycia jednej z procedur otwarcia pliku, do odczytu OPENR, do zapisu OPERNW lub do dopisywania OPENU. Niestety, aby poprawnie wczyta dane musimy tutaj zna ilo± elementów w ka»dej z linii. Oto przykªad otwarcia pliku, wczytania i wy±wietlenia danych w nim zapisanych: openr, plik, 'dane.txt',/get_lun WHILE ~ EOF(plik) DO BEGIN READF, plik, var1, var2, var3,var4, var5 print, var1, var2, var3, var4, var5 ENDWHILE close,plik

32 3.3 Odczyt danych 32 Opisana metoda sprawdza si, jednak przy wiekszych zbiorach danych, gdzie wystepuje wiele kolumn mo»e okaza si uci»liwa. Matoda czytania danych ASCII przy pomocy funkcji READ_ASCII z wcze±niejszym okresleniem formatu danych w trakcie wywoªania funkcji ASCII_TEMPLATE w istotny sposob niweluje niedogodno±ci opisawenego wcze±niej sposobu czytania danych. Pierwszym krokiem jest wpisanie kodu: format_pliku=ascii_template() Po wpisaniu tej komendy zaczyna si proces formatowania zbioru danych, wy±wietlone zostaje pierwsze okno dialogowe. Rysunek 2: Okre±lenie formatu pliku - metoda ASCII_TEMPLATE Wybieramy opcje Delimited, poniewa» kolumny naszego pliku rozdzielone s przecinkami lub spacjami lub znakami tabulacji. Wprowadzamy znak ±rednika jako opcjonalny znak pocz tku komentarza, automatycznie nasz plik zaczyna si w pierwszym wierszu nie b d cym komentarzem. W naszym przypadku jest to wiersz pierwszy. Po kliknieciu przycisku Next pojawia si nast pne okno, w którym wpisujemy liczb elementow w jednej linii, znak rozdzielaj cy oraz warto±, któr program przyjmie za domy±ln w przy-

33 3.3 Odczyt danych 33 padku braku danej warto±ci w pliku. Domy±lnie jest to staªa IEEE NaN. 2. Oto drugie okno dialogowe: Rysunek 3: Okre±lenie formatu pliku - metoda ASCII_TEMPLATE W ostatnim oknie dialogowym mamy mo»liwo± nadania odpowiednim kolumnom nazw. Istnieje równie» opcja, dzi ki której mo»emy przyporz dkowa typ danych odpowiednim kolumnom. Typ danych w danej kolumnie jest automatycznie dostosowywany do typu danej kolumny w naszym pliku. Istnieje mo»liwo± omini cia krokow zwi zanych z okre±laniem formatu wczytywanego pliku. Wówczas procedu wczytania pliku stanowi wywoªanie procedury READ_ASCII. Krótszy sposób nie daje nam gwarancji wªasciwego wczytania danych. Warto wi c po±wi ci kilka chwil gracznemu interfejsowi u»ytkowniaka metody ASCII_TEMPLATE. Zobaczmy ostatnie okno dialogowe tej metody oraz wyniki funkcji READ_ASCII: 2Not A Number - rezultat niedozwolonych operacji takich jak dzielenie przez zero, logarytm z liczby ujemnej, w przypadku zbiorow danych oznacza brakujace elementy, wzgledem denicji danego zbioru

34 3.3 Odczyt danych 34 Rysunek 4: Okre±lenie formatu pliku - metoda ASCII_TEMPLATE Okre±lili±my format pliku. Wczytajmy dane wywoªuj c funkcj READ_ASCII. Wyniki wy±wietlamy w standardowy sposób: dane_ascii= read_ascii(filepath('dane.txt'),template=format_pliku) print,dane_ascii { } Pliki binarne Poznali±my sposób wczytywania plików tekstowych. Bardziej wydajnym i kompaktowym sposobem przechowywania danych jest eksportowanie danych do plikow binarnych. Dane takie s przechowywane jako strumienie bajtów. Pliki binarne s niezb dne przy przechowywaniu du»ych zbiorów danych, równie» plików gracznych. Tak jak w przypadku plików tekstowych j zyk IDL oferuje nam mo»liwo± ustawienia formatu zbioru danych poprzez graczny interfejs funkcji BINARY_TEMPLATE(). Oto przykªad jej wywolania: format_pliku=binary_template() dane_bin=read_binary(filepath('plik.dat'),template=format_pliku)

35 3.3 Odczyt danych 35 Dwa okna dialogowe przeprowadzaj nas przez proces alalogicznie jak w przypaku plików ASCII, poªaczenie z funkcj READ_BINARY() skutkuje otrzymaniem gotowego zbioru danych do wy±wietlenia. Tablica 8: Staªe liczbowe i napisowe równowa»ne typom danych j zyka IDL Staªa liczbowa Staªa napisowa Typ 0 UNDEFINED Undened 1 BYTE Byte 2 INT Integer 3 LONG Longword 4 FLOAT Floating 5 DOUBLE Double-precision 6 COMPLEX Complex oating 7 STRING String 8 STRUCT Structure 9 DCOMPLEX Double-prec. complex 10 POINTER Pointer 11 OBJREF Object reference 12 UINT Unsigned Integer 13 ULONG Unsigned Longword Integer 14 LONG64 64-bit Integer 15 ULONG64 Unsigned 64-bit Integer W przypadku plików binarnych opcja wywoªania funkcji READ_BINARY() z pomini ciem BINARY_TEMPLATE() jest o wiele bezpieczniejsza, gdy» opcje ustawiane przez u»ytkownika za pomoc GUI 3 mo»na z powodzeniem ustawi jako argumenty funkcji READ_BINARY().Zamiast nazw typów mo»emy u»y w wywoªaniu funkcji READ_BINARY() predeniowanych staªych (Tabela 8). Niemniej jednak w jednym jak i wdrugim przypadku musimy zna struktur danych aby nasze parametry w wiarygodny sposób odzwierciedlaly dane w pliku. Pliki binarne stanowi wr cz ogromne zbiory danych. Mo»emy jednak posªu»y si maªym plikiem lub cz ±ci du»ego dla pokazania tej techniki. IDL>dane_binarne=read_binary(FILEPATH('plik.dat'),data_start=0,$ IDL>data_type=INT,data_dims=[3,3],endian='little') IDL>print,dane_binarne 3ang.Graphical User Interface - graczny interfejs u»ytkownika

36 3.3 Odczyt danych W naszym przypadku dane byªy typu integer, ich wczytywanie zacz lismy od pocz tku pliku, a wczytany obszar zawieraª tablic dwuwymiarowa o trzech wierszach i trzech kolumnach. Warto± parametru endian stanowi o sposobie wczytywania bajtów do pami ci. Zarówno dla architektury procesorów Intel jak i AMD w systemach Windows i Linux warto± ta powinna by ustawiona jako 'little'. Inne architektury np.: Motorola PowerPC dla systemu Macintosh OS X oraz Sun SPARC dla systemu Solaris wymagaj parametru 'big' Pliki graczne Chocia» pliki graczne s cz sto równowa»ne plikom binarnym to jednak techniki wczytywania plików gracznych ze wzgl du na ich specyk zostaªy oddzielone od technik wczytywania i wy±wietlania plików binarnych. W przypadku plików binarnych otrzymujemy jako wynik zestaw liczb, a w plikach gracznych z danych liczbowych powstaje obraz. Obraz jest dwu lub kilkuwymiarow tablic warto±ci liczbowych z zakresu Do przechowywania obrazów bardzo dobrze nadaje si typ BYTE. W przypadku obrazów monochromatycznych tablica jest dwuwymiarowa, natomiast w przypadku obrazów wielobarwnych najcz ±ciej trójwymiarowa. Wi kszo± kolorowych obrazów posiada trójkanaªow struktur barw typu RGB 4. Ka»dy kanaª to jakby obraz monochromatyczny. Do piero ich zªo»enie daje efekt wielobarwno±ci. Jedynym problemem jest poprawne wy±wietlenie koloru. Dlatego ka»dy z obslugiwanych formatów gracznych otrzymaª osobn funkcj wy±wietlaj c. Do poprawnego wczytania pliku gracznego niezb dne jest znanie jego rozszerzenia. Analogicznie do funkcji wczytuj cych pliki graczne istniej funkcje tworz ce grak. Tak np.: dla formatu bmp jest to funkcja WRITE_BMP, dla plików PNG funkcja WRITE_PNG.Przyj»yjmy si metodom wczytywania i wy±wietlania plików gracznych, a tak»e technikom wspieraj cym wczytywanie plików gracznych. 4model przestrzeni barw,zawdzi czaj cy sw nazw pierwszym literom barw skªadowych: Red Green Blue. Pierwotnie stosowany w technikach analogowych z powodzeniem mo»e by stosowany w technikach cyfrowych.

37 3.3 Odczyt danych 37 Tablica 9: Funkcje wczytuj ce pliki graczne Typ plku Nazwa funkcji.bmp READ_BMP.gif READ_GIF.jpeg,.jpg READ_JPEG.png READ_PNG.ppm,.pbm READ_PPM.ti,.tif READ_TIFF obrazek_png=read_png('mars.png',r,g,b) tvlct,r,g,b tv,obrazek_png Rysunek 5: Wynik wspóªdzialania funkcji read_png, tvlct i tv Bez u»ycia procedury TVLCT Load Color Table obrazek zostanie pozbawiony barw i wy±wietlony jako obrazek monochromatyczny. Na szcz ±cie wiemy ju» jak temu zapobiec. Alternatywa dla procedury TV jest procedura TVSCL. TVSCL skaluje warto±ci obrazka tak aby przebiegaªy one przez caªy mo»liwy zakres, czyli rozkªadaªy si równomiernie pomiedzy wartosciami Nie zawsze stosowanie takiego skalowania jest nam potrzebne. Pami tajmy,»e takie skalowanie mo»e znieksztaªci pewne typy obrazów.

38 3.3 Odczyt danych 38 Cz sto spotykamy si z problemem zbyt maªego lub zbyt du»ego okna, w którym wy±wietlana jest graka. Za cechy takie jak tytuª, wysoko± i szeroko± okna, ilo± okien,a tak»e miejsce na ekranie dzi ki parametrom XPOS i YPOS, które to odpowiednio okre±laj odst p od górnego lewego rogu ekranu postepuj cy w prawo i odstep od górnego lewego rogu ekranu postepuj cy w dóª odpowiada procedura WINDOW. Istone jest,»e ustawienia pewnych parametrów ró»ni si dziaªaniem w ró»nych systemach operacyjnych. Najlepiej otworzy stron pomocy j zyka IDL dotycz ce tej procedury poleceniem: IDL>? window Oto przykªad u»ycia tej procedury ustawiaj cej szeroko± i wysoko± okna, tytuª oraz wy±rodkowywuj ce to okno przy rozdzielczo±ci 1024 na 768 pikseli i przy wprowadzonych wymiarach okna: WINDOW,title='Moj wykres',xsize=480,ysize=480,xpos=272,ypos=144

39 4 Dwuwymiarowe rysunki i wykresy 39 4 Dwuwymiarowe rysunki i wykresy Rysunki i wykresy s podstawowym sposobem wizualizacji danych. Cz sto jeden rysunek, czy wykres mo»e zobrazowa proces, którego opisanie zaj ªoby wiele miejsca i czasu. Przyj»yjmy si metodom tworzenia dwuwymiarowych rysunków i wykresów. 4.1 Procedura PLOT Proste rysunki czy wykresy tworzymy za pomoc procedury PLOT. Ka»- dorazowe wywoªanie tej procedury ustanawia kilka elementów,s to: okno rysowania danego rysunku ograniczony przez osie ukªadu wspóªrz dnych, obszar rysunku, stanowi cy okno rysunku wraz z jego otoczeniem, typy osi oraz rodzaj skalowania. Oto przykªad u»ycia tej funkcji: x=findgen(100)*(4*!pi/100) ;utworzenie zbioru danych z zakresu 0-4π plot, sin(x) Rysunek 6: Wykres funkcji sinus-metoda plot W przypadku kiedy chcemy wizualizowa pewien zbiór danych, domy±lnie o± Y numerowana jest od 0. W wielu przypadkach chcemy aby o± Y przyjmowaªa inne wartosci. Temu sªu»y sªowo kluczowe /YNOZERO, które dostosowuje warto±ci osi Y do wy±wietlanych na niej danych. Oto przykªad:

40 4.1 Procedura PLOT 40 IDL>populacja=[463,459,437,433,431,433,431,428,430] IDL>lata=[1965,1970,1975,1980,1985,1990,1995,2000] IDL>PLOT,lata,populacja,/ynozero,title='Populacja',$ IDL>xtitle='lata',ytitle='tys.' Rysunek 7: Metoda plot-zmiana skali osi Y Procedura PLOT jest podstawowym narz dziem wizualizacji danych. Jej szereg rozbudowanych opcji pozwala przedstawia wyniki na ró»ne sposoby. Opis jej jest dostepny po wpisaniu komendy: IDL>? plot Sprobujmy wyswietli dane z poprzedniego przykªadu w troch inny sposób modykuj c i dodaj c nowe opcje procedury PLOT. PLOT,lata,populacja,THICK=2,XTICKS=8,YTICKS=8,TICKLEN=1.0, /ynozero,title='populacja',xtitle='lata',ytitle='tys.' Dodaj c kilka opcji stworzyli±my caªkiem nowe okno z wynikami. U»ytkownik dysponuj c szerokim wachlarzem tych opcji mo»e w znaczacy sposób wpªywa na zwi kszenie atrakcyjno±ci i czytelno±ci tworzonych wykresów. Spój»my na wyniki.

41 4.1 Procedura PLOT 41 Rysunek 8: Mo»liwosci procedury plot Procedura PLOT mo»e by równie» u»yta w celu wy±wietlenia kilku wykresów obok siebie. W takim wypadku nale»y odpowiednio zainicjowa zmienn systemow!p.multi, b dac tablic kontrolujac rozmieszczenie wykresów. Pamietaj c,»e pierwszy element tej tablicy okre±la liczb oczekuj cych na wy±wietlenie wykresów, drugi element okre±la liczb kolumn, a trzeci liczb wierszy okien rysowania, tworzymy pokaz wykresów.!p.multi = [0,1,2,0,0] ;jedna kolumna, dwa wiersze x=findgen(100)*(4*!pi/100) wykres1=sin(x) wykres2=cos(x) plot,wykres1,title='sinus',psym=1 plot,wykres2,title='cosinus',psym=3 Stworzyli±my pokaz dwóch wykresów w jednym oknie. Do dobrego tonu nale»y przywrócenie domy±lnej warto±ci zmiennej!p.multi tak aby w jednym oknie wyswietlany byª jeden wykres. Czynimy to poleceniem: IDL>!P.MULTI=0

42 4.2 Procedura OPLOT 42 Rysunek 9: Multi-pokaz wykresow Poprzednie wywoªanie procedury PLOT zawieraªo sªowo kluczowe PSYM. Przyjmuj c warto±ci od 0 do 5 steruje ono sposobem wy±wietlania punktów wykresu, mog ce przyjmowac np.: symbol gwiazdek, czy krzy»yków. Odmienne sposoby rysowania b d nam pomocne przy rysowaniu kilku wykresów w jednym oknie rysowania. 4.2 Procedura OPLOT Dzi ki umieszczaniu kilku okien rysowania w jednym oknie gracznym mamy mo»liwo± porównywania danych, je±li s ze sob powi zane. Mo»liwo± ta jest jednak ograniczona. Dzi ki procedurze OPLOT, która nadrysowywuje wcze±niejsze wykresy zachowuj c przy tym skale jednostek, porównanie ze sob danych w postaci wykresów jest w znacz cy sposob uªatwione. x=findgen(100) x=findgen(100)*(4*!pi/100) plot,sin(x) oplot,sin(x-!pi),linestyle=1,thick=2 oplot,sin(x/2),linestyle=2,thick=2

43 4.2 Procedura OPLOT 43 Rysunek 10: Metoda oplot Tak jak w metodzie PLOT za rodzaj linii odpowiadaªo sªowo kluczowe PSYM, tak w opisywanej funkcj t peªni sªowo LINESTYLE. Liczba opcji wynosi tak jak w poprzednim przypadku 6. Procedura OPLOT umo»liwiªa nam porównywanie kilku wykresów danych. Nie daje nam jednak mo»liwosci dowiedzenia si o skªadowych wykresu. W przypadku funkcji trygonometrycznych problem nie jest tak wielki, wystarczaj ce mog by tutaj tytuª wykresu i opis osi, ale ju» w przypadku wykresów ekonomicznych musimy mie mo»liwo± opisania ka»dego wykresu z osobna. Tak mozliwo± daje nam procedura XYOUTS. Procedura ta daje w wyniku tekst, umieszczaj c go w oknie wykresu. Wspoªrz dne startowe x i y okre±la pierwszy i drugi parametr funkcji, natomiast trzeci parametr odpowiada za tre±. Oto przykªad omawianego rozwi zania: firma1=[440,449,437,433,431,433,431,428,430,431] firma2=[328,361,331,320,367,395,423,380,388,390] firma3=[314,329,365,387,407,414,433,431,442,443] lata=[1980,1982,1984,1986,1988,1990,1992,1994,1996] dane_zakres=[[firma1],[firma2],[firma3]] plot,lata,firma1,/ynozero,yrange=[min(dane_zakres),$ max(dane_zakres)],ytitle='tys.pln',xtitle='lata',thick=2

44 4.2 Procedura OPLOT 44 oplot,lata,firma2,linestyle=1,thick=2 oplot,lata,firma3,linestyle=4,thick=2 Ustalili±my zakres dla osi Y wybieraj c najmniejsz i najwieksz warto±± spo±ród zysków trzech rm. Dwukrotnie wywoªana procedura OPLOT dorysuje kolejne wykresy do ju» istniej cego wykresu powstaªego w wyniku wywoªania procedury PLOT. Spój»my teraz na kod odpowiedzialny za tworzenie podpiu wykresu: nazwy=['zysk firmy1','zysk firmy2','zysk firmy3'] n=n_elements(lata)-1 FOR i=0,2 DO BEGIN XYOUTS,1995,dane_zakres[n,i],nazwy[i] ENDFOR W p tli wykonujemy procedur XYPOS dla ka»dego wykresu tak aby podpis wy±wietlony zostaª w miejscu po ostatniej danej uwzgl dnionej w wykresie, czyli po roku 1995 (o± x) i ostatniej danej z tablicy rmai (o± y). Spój»my na wyniki wpisanego kodu: Rysunek 11: Metoda oplot

45 4.3 Metoda LIVE_PLOT Metoda LIVE_PLOT Procedura LIVE_PLOT ª czy w sobie cechy opisywanych ju» procedur PLOT i OPLOT. Ró»ni si jednak od nich tym,»e tworzy interaktywne ±rodowisko rysowania. Po dwukrotnym klikni ciu na dany element wykresu pojawia si okno dialogowe w którym mo»emy zmienia opcje i wªa±ciwo±ci jego dotycz ce. Co wi cej dysponujemy siedmioma przyciskami pozwalaj cymi na wstawianie linii, pól tekstowych, prostokatów, drukowanie okna oraz na cofanie wprowadzonych zmian. Istotne jest to,»e parametry wykresu mog by ustalane podczas wywoªania procedury, a nast pnie zmieniane lub mody- kowane po utworzeniu okna programu. live_plot,firma1,firma2,firma3,title='porownanie zyskow' Rysunek 12: Metoda live_plot

46 5 Obróbka sygnaªu 46 5 Obróbka sygnaªu Pliki d¹wi kowe s zapisem sygnaªu, który bardzo cz sto potra by doskonaªym ¹ródªem danych. Wiele danych medycznych uzyskuje si poprzez analiz plików d¹wi kowych. Odpowiednio dobrane techniki wy±wietlania i analizowania tych plików umo»liwiaj w wielu przypadkach postawienie dobrej diagnozy. Dzieje si tak np.: w przypadku zaburze«mowy, czy chorób serca (badania EKG). Nie mo»na jednak ª czy tej dziedziny jedynie z medycyn. Analiza sygnaªu to wa»ny element pracy sejsmologów i astronomów. Badanie takich ¹ródeª danych to bardzo szerokie zagadnienie wielu dziedzin nauki. 5.1 Tworzenie danych J zyk IDL dysponuje wyspecjalizowanymi narz dziami do obróbki sygnaªu. Umieszczone s one w pakiecie o nazwie IDL Wavelet Toolkit. Pakiet ten uruchamiamy poleceniem: IDL>wv_applet Umo»liwia on wy±wietlanie informacji o zbiorze danych, importowanie plików d¹wi kowych, binarnych lub tekstowych, wy±wietlanie danych w wielu wymiarach. Wszystkie interesuj ce interfejsy graczne tego pakietu wymagaj wykupienia licencji. Posªu»ymy si sztucznie utworzonym sygnalem. oryginalny=sin(findgen(100)/5)*exp((-1)*(findgen(100)/30)) Rysunek 13: Wygenerowany sygnaª

47 5.1 Tworzenie danych 47 Oto wynik naszego kodu. Powstaªy sygnaª wymaga jeszcze kilku operacji, dzi ki którym b dzie wierniej odtwarzaª sygnaª rzeczywisty. Dodajmy teraz do oryginalnego sygnaªu drugi imituj cy szum. Tworzymy go przy pomocy funkcji RANDOMU generuj cej rzeczywiste liczby pseudolosowe. IDL>zaszumiony=oryginalny+((randomu(2l, 100)-0.5)/5) Wygenerowane warto±ci imituj szybko zmieniaj ce si w czasie poszczególne warto±ci badanego sygnaªu. Oto sygnaª zaszumiony. Rysunek 14: Wygenerowany sygnaª zaszumiony Wykorzystuj c procedur PLOT oraz OPLOT porównamy, nakªadaj c na siebie sygnaª oryginalny i sygnaª szumu. IDL>plot,oryginalny,xtitle = "Czas",ytitle ="Sygnal",thick=2.0 IDL>oplot,zaszumiony Uzyskali±my sygnal, b d cy podstaw naszej dalszej analizy. Ci gle jednak nie stanowi on jednego zbioru danych. Wy±wietlenie sygnaªu oryginalnego i zaszumionego w jednym oknie wykresu stanowi pocz tek drogi do zªo»enia tych dwóch funkcji w jedn caªo±. Przyj»yjmy si wynikom procedur.

48 5.2 Wygªadzanie sygnaªu metod SMOOTH 48 Rysunek 15: Porównanie sygnaªu oryginalnego z zaszumionym 5.2 Wygªadzanie sygnaªu metod SMOOTH Funkcja SMOTH korzystaj c z wbudowanego u±redniaj cego ltra wygªadza elementy wej±ciowej tablicy. Dodatkowym atutem tej funkcji jest to,»e nie zmienia ona zakresu danych. W naszym przypadku analizujemy dane imituj ce sygnal. Funkcja ta mo»e otrzyma na wejsciu dowoln tablic, b d c np.: fragmentem wczytanego obrazu gracznego. IDL>wygladzony=smooth(zaszumiony,5) plot,wygladzony Otrzymalismy sygnaª, mog cy by przedmiotem analizy. Cz sto ju» samo odpowiednie odczytanie wykresu jest w stanie da odpowied¹ na wiele pytan. Odpowiednie ltrowanie i analiza próbek da mog jeszcze wi cej odpowiedzi ich badaczom. Otrzymany obraz jest dobr imitacj próbek sygnaªu rzeczywistego. 5.3 Filtracja sygnaªu Za pomoc odpowiednich technik ltracji mo»emy uzyska dane, które bez tych technik nigdy nie zostaªyby dostrze»one. W naszym wypadku b d to ltry dziaªaj ce w dziedzinie cz stotliwo±ci. Istota ltrów jest taka sama

49 5.3 Filtracja sygnaªu 49 Rysunek 16: Sygnaª wygªadzony metod Smooth równie» dla danych gracznych. Po wprowadzeniu maski warto±ci danego ltra dziaªamy nim na warto±ciach danego sygnalu, uzyskuj c nowe warto±ci b d ce pewn pochodn warto±ci sygnaªu i maski ltra. y=[findgen(50),findgen(50)-50] y[51:99]=reverse(y[0:48]) Utworzylismy tablic 100 elementow liczb rzeczywistych stosuj c funkcj FINDGEN. Nas pnie pierwszych 49 elementów w odwróconej kolejno±ci przekopiujemy na miejsce ostatnich 49 elementow. Bazuj c na stworzonej tablicy tworzymy ltr (Rys.17). filtr=1.0/(1+(y/15)^8) plot,filtr Utworzony ltr staje si podstaw do tworzenia kolejnych. Aby uzyska ltr dolnoprzepustowy i zastosowa go na naszym sygnale nale»y wpisa kod: IDL>dolny=fft 5 (fft(zaszumiony,1)*filtr,-1) 5ang. Fast Fourier Transform, czyli szybka transformata Fouriera. Wykorzystuje ona pewne wªasno±ci symetrii funkcji trygonometrycznych w punktach ich obliczania, aby uzyska wi ksz szybko± oblicze«ni» w metodach konwencjonalnych. Je±li N oznacza liczb punktów w czasowej sekwencji sygnaªu, to w algorytmie konwencjonalnym trzeba

50 5.3 Filtracja sygnaªu 50 Rysunek 17: Wizualizacja utworzonego ltra IDL>plot,dolny Analogicznie do uzyskania ltru dolnoprzepustowego w dziedzinie cz stotliwo±ci wpisujemy ponizszy kod w celu uzyskania ltra górnoprzepustowego: IDL>gorny=fft(fft(zaszumiony,1)*(1.0-filtr),-1) IDL>plot,gorny Spój»my na wyniki dziaªania obydwu ltrów. Wejsciowym sygnaªem w obu przypadkach byª sygnaª zaszumiony. by wykona w przybli»eniu N 2 operacji, a w algorytmie FFT wystarcza ok. N ln N

51 5.3 Filtracja sygnaªu 51 Rysunek 18: Filtry- dziedzina cz stotliwo±ci

52 6 Obróbka plików gracznych 52 6 Obróbka plików gracznych J zyk IDL jest bardzo pomocny w obróbce plików gracznych. Faktem jest,»e jest zorientowany na szeroko rozumiane tablice. Obrazy mog by przechowywane jako wielowymiarowe tablice. Wiele procedur i funkcji jest specjalnie przystosowana do przetwarzania obazów i pracy z nimi. W poprzednim rozdziale dowiedzielismy si jak wczyta plik graczny. Teraz dowiemy si jak go modykowa i wydobywa z niego informacje. 6.1 Podstawowe operacje na obrazach W rozdziale o wczytywaniu danych poznalismy techniki wczytywania plików gracznych. Teraz posªu»ymy si jeszcze inn funkcj READ_IMAGE, która jest bardzo podobna do opisanych wcze±niej. Jest jednak bardziej uniwersalna, gdy» mo»na za jej pomoc wczytywa pliki graczne róznych typów. Posªu»ymy si ni w kodzie zmieniaj cym rozmiar pliku gracznego. plik=filepath('saturn.jpg',subdirectory=['examples','data']) READ_JPEG,plik,oryginal rozmiar_obrazu=size(oryginal,/dimensions) zmieniony=rebin(oryginal,3,550/2,410/2) WINDOW,0,XSIZE=rozmiar_obrazu[1]/2,YSIZ=rozmiar_obrazu[2]/2,$ TITLE='Planeta Saturn pomniejszenie' TV,zmieniony,TRUE=1 window,1,xsize=rozmiar_obrazur[1],ysiz=rozmiar_obrazu[2],$ TITLE='Planeta Saturn oryginal' TV,oryginal,TRUE=1 Wczytali±my plik graczny. Przy pomocy funkcji REBIN zmienilismy rozmiar tablicy, przechowyj cej dane pikseli. Nale»y pami ta,»e funkcja ta wymaga aby stosunek szeroko±ci obrazu do jego wysoko±ci byª zgodny z warto±ciami obrazu bazowego. Zauwa»yªem,»e pliki z rozszerzeniem.jpeg nie s prawidªowo rozpoznawane. Wywoªuj c funkcje READ_JPEG nale»y w nazwie pliku wpisywa rozszerzenie.jpg nawet je»eli posiadamy wyª cznie plik.jpeg. Poleceniem, które zamyka wszystkie otwarte, aktywne okna graczne jest: IDL>wdelete

53 6.1 Podstawowe operacje na obrazach 53 Rysunek 19: Skalowanie pliku gracznego Czasami potrzebne nam przekonwertowanie obrazu kolorowego na obraz monochromatyczny, czyli np.: posiadaj cy jedynie tak zwane odcienie szarosci. Oto kod rozwiazuj cy ten problem. plik=filepath('saturn.jpg',subdirectory=['examples','data']) READ_JPEG,plik,image saturn_mono=0.3*reform(image[0,*,*])+0.59*reform(image[1,*,*])+$ 0.11*Reform(image[0,*,*]) tv,saturn_mono J zyk IDL dysponuje wieloma szybkimi metodami obróbki obrazu. Wi kszo± jednak zostaªa dostosowana do obrazów monochromatycznych. W pewnych przypadkach istnieje mo»liwo± obej±cia tego problemu. Podczas analizy pliku gracznego mo»na rozªo»y go na cz ±ci, odpowiednio jedna skªadowa cz ± na jeden skªadowy kanaª obrazu i pracowa na ka»dym kanale osobno. Tak technike przedstawi podczas ltrowaniu obrazów. Je»eli nasz obraz bazowy nie jest monochromatyczny musimy posªuguj c si metod konwertowania pliku kolorowego do monochromatycznego przedstawiomej powy»ej, dokonac konwersji. W naszym przypadku b dzie to obraz medyczny przedstawiaj cy wyniki tomograi komputerowej ludzkiej gªowy.

54 6.1 Podstawowe operacje na obrazach 54 Oto kod wczytuj cy i wy±wie tlaj cy oryginalny obraz medyczny. Wy±wietlenie oryginalnego pliku pomo»e nam przy porównywaniu tego pliku z wynikami kodu manipuluj cego tym obrazem. plik=filepath('med_1.jpg',subdirectory=['examples','data']) READ_JPEG,plik,obraz wymiary_obrazu=size(obraz,/dimensions) WINDOW,0,XSIZE=wymiary_obrazu[0],YSIZ=wymiary_obrazu[1],$ title='oryginalny oraz medyczny' tv,obraz Rysunek 20: Oryginalny plik medyczny Przy posªugiwaniu si funkcj SIZE nalezy pami ta,»e w przypadku obrazów monochromatycznych zwraca ona dwa wyniki: szeroko± i wysoko±, a wi c wynikowa tablica ma dwa indeksy, odpowiednio 0 i 1. Podczas pracy z obrazami kolorowymi zwracane s trzy warto±ci: liczba kanaªów, szeroko± i wysoko±, a wynikowa tablica ma indeksy równe odpowiednio 0,1 i 2. Jednym z podstawowych sposobów manipulacji obrazem jest ustawienie progu dla wy±wietlania. Stosuje si w tej technice operatory relacji, a ich wynikiem jest tablica zer i jedynek. Wprowadzona warto± dzieli piksele na dwie grupy. Speªnianie lub niespeªnianie danej relacji stanowi o kolorze danego piksela. W przypadku speªniania relacji jest to kolor biaªy, w przypadku niespeªniania kolor czarny.

55 6.1 Podstawowe operacje na obrazach 55 Prawidªowe wyniki wy±wietlenia uzyskamy przy uzyciu procedury TVSCL. Posªu»my si operatorem GT i zobaczmy na wyniki poni»szego kodu. tvscl,obraz GT 125 Rysunek 21: U»ycie progu zwiekszajacego kontrast Kolejn prost i szybk technik obróbki obrazu jest zastosowanie operatorów relacji w postaci znakowej takich jak >,<,>=,<=. Nale»y pamieta,»e operatory te nie s równowa»ne z operatorami w postaci napisowej. I tak na przyklad wynik u»ycia operatora GT nie pokrywa sie z wynikiem u»ycia operatora >. Tak b dzie równiez w tym przypadku. Wpiszmy polecenie: tvscl,obraz>125<200 Dzi ki u»yciu dwoch operatorów moglismy ustawi minimalna warto± jasno±ci oraz maksymalna warto± jaka b dzie nas interesowaªa. W tym przypadku wynikiem nie b dzie obraz czarnych i biaªych pikseli. Wy±wietlone zostan tylko te warto±ci, które b da speªniaªy warunek relacji, a wi c ich warto±ci zawieraªy b d si pomi dzy 126 a 199. Mo»liwe jest zastosowanie jednego operatora. Przyj»yjmy si wynikom wprowadzonego kodu.

56 6.2 Histogram obrazu 56 Rysunek 22: Wy±wietlenie przedziaªu jasno±ci 6.2 Histogram obrazu Histogramem obrazu nazywamy wykres graczny, przedstawiaj cy rozkªad jasno±ci danego obrazu. Ka»da warto± danego piksela zostaje wpisana do tablicy, tym samym zwi ksza liczebno± zbioru jasno±ci o danej warto±ci. Po analizie histogramu mo»na dowiedzie si czy obraz zostaª na±wietlony lub czy zawiera w ski przedziaª barw w przypadku obrazów kolorowych. W wielu j zykach programowania rysowanie histogramu wymaga kilkunastu linii kodu. Nam zajmie to co najwy»ej kilka. file=filepath('saturn.jpg',subdirectory=['examples','data']) READ_JPEG,file,obraz wymiary_obrazu=size(obraz,/dimensions) nowy=rebin(obraz,3,550/2,410/2) DEVICE,RETAIN=2,DECOMPOSED=0 WINDOW,0,XSIZE=wymiary_obrazu[1]-30,YSIZE=wymiary_obrazu[2]-30,$ title='histogram' TV,nowy,TRUE=1 PLOT,HISTOGRAM(obraz),COLOR=155,MAX_VALUE=4000,$ POSITION=[0.55, 0.15, 0.95, 0.95],/NOERASE,/NODATA OPLOT,HISTOGRAM(obraz),COLOR=155 Spój»my na wyniki. Histogram zostaª umieszczony w prawej cz ±ci okna. O± X odpowiada jasno±ci, natomiast o± Y odpowiada za liczb punktów.

57 6.3 Filtrowanie obrazu 57 Rysunek 23: Przykªadowy histogram obrazu Przyj»yjmy sie naszemu histogramowi. W ªatwy sposob mozna wyczyta,»e najwi ksza ilo± punktów oscyluje blisko warto±ci 0. Natomiast znikoma ilo± ma warto± zbli»on do 255. Wniosek z czytania histogramu jest taki,»e obraz posiada wiele pikseli czarnych lub zbli»onych do tego koloru a niewiele pikseli jasnych. Potwierdzili±my zatem budow naszego zdj cia. 6.3 Filtrowanie obrazu Przy ltrowaniu obrazów mo»na zastosowa wi kszo± technik jakie stosowali±my przy ltrowaniu sygnaªu. Jedynie zakres i metody wy±wietlania danych s odmienne. Nie mniej jednak ltrowanie obrazów jest nieco szersz dziedzin j zyka IDL Obrazy monochromatyczne Do pokazania technik ltrowania obrazów u»yjemy nowego pliku gracznego. Pierwszym krokiem b dzie zbudowanie ltra, nast pnie u»yjemy go na obrazie i wy±wietlimy wyniki. Wy±wietlam obraz oryginalny aby uªatwi analizowanie naszej pracy.

58 6.3 Filtrowanie obrazu 58 Rysunek 24: Obraz oryginalny monochromatyczny file=filepath('owoce_mono.jpg',subdirectory=['examples','data']) READ_JPEG,file,obraz_we DEVICE,RETAIN=2,DECOMPOSED=0 wymiary_obrazu=size(obraz_we,/dimensions) obraz_wy=rebin(obraz_we,wymiary_obrazu[0]/2,wymiary_obrazu[1]/2) WINDOW,0,XSIZE=wymiary_obrazu[0]/2,YSIZ=wymiary_obrazu[1]/2,$ title='filtrowanie obrazu' filtr=replicate(-1, 3, 3) filtr[1,1]=8 obraz_wy=convol(obraz_wy,filtr,center=1) tv,obraz_wy Stworzyli±my wªasny ltr. Jednak budowa jego nie byªa przypadkowa. Jest to przykªad ltra La Place'a. Zastosowanie tego ltra jest jednym ze sposobów wykrywania kraw dzi w obrazie. J zyk IDL dysponuje równie» wbudowanym zestawem ltrów. W±ród nich mamy takie rodzaje ltrów: ltr wygªadzaj cy (SMOOTH), ltr Sobela (SO- BEL), ltr u±redniaj cy (MEDIAN) i wiele innych, o których dowiemy sie wi cej wpisuj c w linii polece«zapytanie: IDL>? filters

59 6.3 Filtrowanie obrazu 59 Rysunek 25: Filtr-wykrywanie kraw dzi Wªasne deniowanie ltrów jest na pewno bardziej czasochªonne. Mo»emy jednak dokonywa dowolnej modykacji ltrów i odkrywa ich mo»liwo±ci. Zastosowanie ltra wbudowanego sprowadza si do zastosowania jednej linii kodu. Oto przykªad. tv,median(obraz_wy,9) Rysunek 26: Filtr u±redniaj cy

60 6.3 Filtrowanie obrazu Obrazy kolorowe Przetwarzanie obrazów w j zyku IDL jest zorientowane na obrazy monochromatyczne. Wiele dziedzin nauki jeszcze kilka lat temu pracowaªo wyª cznie na takich obrazach. Post p w nauce i technice na pewno b dzie przekªadaª si na zmodykowanie kodu wielu funkcji i procedur zajmujacych sie obróbk obrazu. W tym podrozdziale przedstawiam metod lrtujac obrazy kolorowe z zastosowaniem technik dziaªajacych na obrazach monochromatycznych. file=filepath('owocergb.jpg',subdirectory=['examples','data']) READ_JPEG,file,obraz_we filtr=9 kanalr=reform(obraz_we[0,*,*]) kanalg=reform(obraz_we[1,*,*]) kanalb=reform(obraz_we[2,*,*]) wynik1=median(kanalr,filtr) wynik2=median(kanalg,filtr) wynik3=median(kanalb,filtr) obraz_we[0,*,*]=wynik1 obraz_we[1,*,*]=wynik2 obraz_we[2,*,*]=wynik3 tv,obraz_we,true=1 Rysunek 27: Filtr u±redniaj cy Przedstawiona metoda jest baz dla zastosowania innych ltrów zarówno wbudowanych jak i tworzonych przez u»ytkownika.

61 7 Trójwymiarowe techniki wizualizacji 61 7 Trójwymiarowe techniki wizualizacji Wizualizacja trójwymiarowa w j zyku IDL mo»e odbywa si na kilka ró»nych sposobów. Wszystkie techniki charakteryzuja si tym,»e ich opanowanie jest ªatwe dla u»ytkownika. W efekcie dostajemy trójwymiarowy wykres naszego zbioru danych. Mo»liwo± porównania kilku technik ze sob jest dodatkowym atutem wizualizacji danyh w j zyku IDL. 7.1 Metoda SURFACE Metoda SURFACE umo»liwia nam wy±wietlenie trójwymiarowego wykresu zbioru danych. Okno wynikowe skªada si z wykresu umieszczonego wewn trz trójosiowego ukªadu wspóªrz dnych. dane=shift(dist(40),20,20) dane=exp(-(dane/10)^2) SURFACE,dane,TITLE='Matoda surface',charsize = 2 Rysunek 28: Metoda SURFACE Procedura SURFACE posiada szereg opcji umo»liwiaj cych modykacj wykresu. Jednymi z nich s opcje AX i AZ, odpowiadaj ce za wy±wietlenia wykresu pod ró»nymi k tami. AX jest odpowiedzialne za obrót wokóª osi X, a AZ za obrót wokóª osi Z.

62 7.2 Metoda SHADE_SURF 62 Wprowad¹my modykacj do wykresu, ustalaj c parametry AX i AZ poleceniem: SURFACE,dane,AX=50,AZ=25,TITLE='Matoda surface',charsize=2 Rysunek 29: Metoda SURFACE 7.2 Metoda SHADE_SURF Procedura SHADE_SURF jest zmodykowan wersj opisanej powy»ej metody SURF. Jej wyj tkowo± polega na tym,»e umo»liwia cieniowanie wykresu równiez za pomoc okre±lonej przez u»ytkownika palety barw. Palet t okre±lamy w parametrze procedury LOADCT. Oto przykªad zastosowania naszej metody do danych z poprzedniego przykªadu. loadct,, shade_surf,dane surface,dane,xstyle=4,ystyle=4,zstyle=4,/noerase Posªu»yli±my sie tu równie» metod SURFACE. Wynikiem czego jest uzyskanie na wykresie siatki dla danych.

63 7.3 Metoda SHOW3 63 Rysunek 30: Metoda SHADE SURF Rodzaj wczytanej tablicy kolorów wy±wietlany zostaje w czasie kompilacji w panelu projektu. W naszym przypadku jest to: LOADCT: Loading table RED TEMPERATURE 7.3 Metoda SHOW3 Metoda SHOW3 jest syntez kilku metod. W jej skªad wchodz metoda SUR- FACE opisana w poprzednim rozdziale oraz metoda CONTOUR odpowiadaj ca za dwuwymiarowy rzut na pªaszczyzn zbioru danych. Caªo± jest jednym z bardziej szczegóªowych sposobów wizualizacji danych. Co wi cej jest to doskonaªy przykªad przygotowania zbioru danych do analizy. W poprzednich przykªadach sami tworzyli±my zbiory danych do prezentacji poznawanych metod. W tym przypadku, aby lepiej zaprezentowac mo»liwo±ci metody SHOW3 wczytamy zbiór danych z pliku binarnego i zaprezentujemy dane w nim zgromadzone. loadct,3 plik=filepath('moje_dane.dat',subdirectory=['examples','data']) dane=read_binary(plik,data_dims=[500,500],data_type=2)

64 7.4 Metoda XINTERANIMATE 64 dane=congrid(dane,50,50) SHOW3,dane Rysunek 31: Metoda SHOW3 7.4 Metoda XINTERANIMATE Procedura XINTERANIMATE pozwala na wy±wietlanie sekwencji obrazów. Chocia» zagadnienie trójwymiarowej animacji mo»e wydawa si skomplikowane to zasada jej jest prosta. Podstaw ka»dego wykresu s dane. W przypadku animacji powinnismy mie kilka zbiorów danych, ukazuj - cych pewne zjawisko zmieniaj ce si w czasie. Dobrym przykªadem danych do animacji s tablice trójwymiarowe. Ka»da posiada wªasny numer oraz dwuwymiarow tablic danych. Opcje animacji jaka powstaje mog by zmieniane przez u»ytkownika z wykorzystaniem interfejsu tej metody. Metoda XINTERANIMATE tworzy bufor, wystarczaj cy do przechowywania okre±lonej liczby klatek animacji. Do naszych celów posªu»ymy si plikiem binarnym, przechowuj cym medyczne dane rytmu ludzkiego serca. Oto kompletny przykªad tej metody:

65 7.4 Metoda XINTERANIMATE 65 OPENR,plik_bin,FILEPATH('abnorm.dat',SUBDIR=$ ['examples','data']),/get_lun anim_med=bytarr(64,64,16) READU,plik_bin,anim_med loadct,3 DEVICE,RETAIN=2,DECOMPOSED=0 anim_med=rebin(anim_med,128,128,16) XINTERANIMATE,SET=[128,128,16],/SHOWLOAD FOR i=0,15 DO BEGIN XINTERANIMATE,FRAME=i,IMAGE=anim_med[*,*,i] ENDFOR XINTERANIMATE, /KEEP_PIXMAPS Nasz plik wej±ciowy przechowuje 16 tablic dwuwymiarowych. Jego struktura jest zatem idealna do zastosowania naszej metody. Po przygotowaniu zbioru danych nale»y trzykrotnie wywoªa procedur XINTERANIMATE. Pierwsze wywoªanie sªu»y inicjacji panelu animacji, drugie wywoªanie odpowiada za wczytanie klatek animacji do bufora natomiast trzecie obsªuguje wy±wietlenie animowanego pokazu. Rysunek 32: Animacja metod XINTERANIMATE

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++ Podstawy Programowania :: Roman Grundkiewicz :: 014 Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub

Bardziej szczegółowo

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Lekcja 9 - LICZBY LOSOWE, ZMIENNE Lekcja 9 - LICZBY LOSOWE, ZMIENNE I STAŠE 1 Liczby losowe Czasami spotkamy si z tak sytuacj,»e b dziemy potrzebowa by program za nas wylosowaª jak ± liczb. U»yjemy do tego polecenia: - liczba losowa Sprawd¹my

Bardziej szczegółowo

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++ Podstawy Programowania - Roman Grundkiewicz - 013Z Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub

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

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Bash i algorytmy. Elwira Wachowicz. 20 lutego Bash i algorytmy Elwira Wachowicz elwira@ifd.uni.wroc.pl 20 lutego 2012 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 1 / 16 Inne przydatne polecenia Polecenie Dziaªanie Przykªad

Bardziej szczegółowo

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15 ANALIZA NUMERYCZNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Metoda Eulera 3 1.1 zagadnienia brzegowe....................... 3 1.2 Zastosowanie ró»niczki...................... 4 1.3 Output do pliku

Bardziej szczegółowo

Wska¹niki, tablice dynamiczne wielowymiarowe

Wska¹niki, tablice dynamiczne wielowymiarowe Rozdziaª 11 Wska¹niki, tablice dynamiczne wielowymiarowe 11.1 Wst p Identycznie, jak w przypadku tablic statycznych, tablica dynamiczna mo»e by tablic jedno-, dwu-, trójitd. wymiarow. Tablica dynamiczna

Bardziej szczegółowo

Przetwarzanie sygnaªów

Przetwarzanie sygnaªów Przetwarzanie sygnaªów Laboratorium 1 - wst p do C# Dawid Poªap Przetwarzanie sygnaªów Pa¹dziernik, 2018 1 / 17 Czego mo»na oczekiwa wzgl dem programowania w C# na tych laboratoriach? Dawid Poªap Przetwarzanie

Bardziej szczegółowo

Lekcja 9 Liczby losowe, zmienne, staªe

Lekcja 9 Liczby losowe, zmienne, staªe Lekcja 9 Liczby losowe, zmienne, staªe Akademia im. Jana Dªugosza w Cz stochowie Liczby losowe Czasami potrzebujemy by program za nas wylosowaª liczb. U»yjemy do tego polecenia liczba losowa: Liczby losowe

Bardziej szczegółowo

Lekcja 12 - POMOCNICY

Lekcja 12 - POMOCNICY Lekcja 12 - POMOCNICY 1 Pomocnicy Pomocnicy, jak sama nazwa wskazuje, pomagaj Baltiemu w programach wykonuj c cz ± czynno±ci. S oni szczególnie pomocni, gdy chcemy ci g polece«wykona kilka razy w programie.

Bardziej szczegółowo

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java J zyk programowania JAVA c 2011 Vincent Van GOGH: M»czyzna pij cy li»ank kawy Zadanie 6. Napisz program, który tworzy tablic 30 liczb wstawia do tej tablicy liczby od 0 do 29 sumuje te elementy tablicy,

Bardziej szczegółowo

Lekcja 6 Programowanie - Zaawansowane

Lekcja 6 Programowanie - Zaawansowane Lekcja 6 Programowanie - Zaawansowane Akademia im. Jana Dªugosza w Cz stochowie Wst p Wiemy ju»: co to jest program i programowanie, jak wygl da programowanie, jak tworzy programy za pomoc Baltiego. Na

Bardziej szczegółowo

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej 3.1 Informacje ogólne Program WAAK 1.0 służy do wizualizacji algorytmów arytmetyki komputerowej. Oczywiście istnieje wiele narzędzi

Bardziej szczegółowo

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz Lekcja 8 - ANIMACJA 1 Polecenia Za pomoc Baltiego mo»emy tworzy animacj, tzn. sprawia by obraz na ekranie wygl daª jakby si poruszaª. Do animowania przedmiotów i tworzenia animacji posªu» nam polecenia

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

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki. Wydziaª Matematyki, Fizyki i Informatyki 10 marca 2008 Spis tre±ci Listy 1 Listy 2 3 Co to jest lista? Listy List w Mathematice jest wyra»enie oddzielone przecinkami i zamkni te w { klamrach }. Elementy

Bardziej szczegółowo

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy. 1 Klasy. Klasa to inaczej mówi c typ który podobnie jak struktura skªada si z ró»nych typów danych. Tworz c klas programista tworzy nowy typ danych, który mo»e by modelem rzeczywistego obiektu. 1.1 Denicja

Bardziej szczegółowo

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe 1 Wprowadzenie 1.1 rodowisko programistyczne NetBeans https://netbeans.org/ 1.2 Dokumentacja j zyka Java https://docs.oracle.com/javase/8/docs/api/

Bardziej szczegółowo

P tle. Rozdziaª Wst p. 4.2 P tle P tla for(...);

P tle. Rozdziaª Wst p. 4.2 P tle P tla for(...); Rozdziaª 4 P tle 4.1 Wst p Niniejszy rozdziaª zawiera opis p tli w j zyku C, wraz z przykªadowymi programami oraz ich obja±nieniem. 4.2 P tle P tla to element j zyka programowania, pozwalaj cy na wielokrotne,

Bardziej szczegółowo

Programowanie i struktury danych 1 / 44

Programowanie i struktury danych 1 / 44 Programowanie i struktury danych 1 / 44 Lista dwukierunkowa Lista dwukierunkowa to liniowa struktura danych skªadaj ca si z ci gu elementów, z których ka»dy pami ta swojego nast pnika i poprzednika. Operacje

Bardziej szczegółowo

1 Bª dy i arytmetyka zmiennopozycyjna

1 Bª dy i arytmetyka zmiennopozycyjna 1 Bª dy i arytmetyka zmiennopozycyjna Liczby w pami ci komputera przedstawiamy w ukªadzie dwójkowym w postaci zmiennopozycyjnej Oznacza to,»e s one postaci ±m c, 01 m < 1, c min c c max, (1) gdzie m nazywamy

Bardziej szczegółowo

Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów

Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów 1 Wst p Przypomnijmy,»e komputer skªada si z procesora, pami ci, systemu wej±cia-wyj±cia oraz po- ª cze«mi dzy nimi. W procesorze mo»emy

Bardziej szczegółowo

1. Odcienie szaro±ci. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem.

1. Odcienie szaro±ci. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem. 2018/2019 1. Odcienie szaro±ci Model RGB jest modelem barw opartym na wªa±ciwo±ciach odbiorczych

Bardziej szczegółowo

Lekcja 3 Banki i nowe przedmioty

Lekcja 3 Banki i nowe przedmioty Lekcja 3 Banki i nowe przedmioty Akademia im. Jana Dªugosza w Cz stochowie Banki przedmiotów Co ju» wiemy? co to s banki przedmiotów w Baltie potramy korzysta z banków przedmiotów mo»emy tworzy nowe przedmioty

Bardziej szczegółowo

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X. Relacje 1 Relacj n-argumentow nazywamy podzbiór ϱ X 1 X 2... X n. Je±li ϱ X Y jest relacj dwuargumentow (binarn ), to zamiast (x, y) ϱ piszemy xϱy. Relacj binarn okre±lon w zbiorze X nazywamy podzbiór

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

Baza danych - Access. 2 Budowa bazy danych

Baza danych - Access. 2 Budowa bazy danych Baza danych - Access 1 Baza danych Jest to zbiór danych zapisanych zgodnie z okre±lonymi reguªami. W w»szym znaczeniu obejmuje dane cyfrowe gromadzone zgodnie z zasadami przyj tymi dla danego programu

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych Wykªad 3 1 / 37 tekstowe binarne Wyró»niamy dwa rodzaje plików: pliki binarne pliki tekstowe 2 / 37 binarne tekstowe binarne Plik binarny to ci g bajtów zapami tanych w

Bardziej szczegółowo

Metodydowodzenia twierdzeń

Metodydowodzenia twierdzeń 1 Metodydowodzenia twierdzeń Przez zdanie rozumiemy dowolne stwierdzenie, które jest albo prawdziwe, albo faªszywe (nie mo»e by ono jednocze±nie prawdziwe i faªszywe). Tradycyjnie b dziemy u»ywali maªych

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

Ukªady równa«liniowych

Ukªady równa«liniowych dr Krzysztof yjewski Mechatronika; S-I 0 in» 7 listopada 206 Ukªady równa«liniowych Informacje pomocnicze Denicja Ogólna posta ukªadu m równa«liniowych z n niewiadomymi x, x, x n, gdzie m, n N jest nast

Bardziej szczegółowo

Wst p do informatyki. Systemy liczbowe. Piotr Fulma«ski. 21 pa¹dziernika 2010. Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Wst p do informatyki. Systemy liczbowe. Piotr Fulma«ski. 21 pa¹dziernika 2010. Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska Wst p do informatyki Systemy liczbowe Piotr Fulma«ski Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska 21 pa¹dziernika 2010 Spis tre±ci 1 Liczby i ich systemy 2 Rodzaje systemów liczbowych

Bardziej szczegółowo

Liczby zmiennoprzecinkowe

Liczby zmiennoprzecinkowe Liczby zmiennoprzecinkowe 1 Liczby zmiennoprzecinkowe Najprostszym sposobem reprezentowania liczb rzeczywistych byªaby reprezentacja staªopozycyjna: zakªadamy,»e mamy n bitów na cz ± caªkowit oraz m na

Bardziej szczegółowo

Listy i operacje pytania

Listy i operacje pytania Listy i operacje pytania Iwona Polak iwona.polak@us.edu.pl Uniwersytet l ski Instytut Informatyki pa¹dziernika 07 Który atrybut NIE wyst puje jako atrybut elementów listy? klucz elementu (key) wska¹nik

Bardziej szczegółowo

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania WYKŁAD 8 Reprezentacja obrazu Elementy edycji (tworzenia) obrazu Postacie obrazów na różnych etapach procesu przetwarzania Klasy obrazów Klasa 1: Obrazy o pełnej skali stopni jasności, typowe parametry:

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

Wstawianie gotowych rysunków w texu - informacje podstawowe.

Wstawianie gotowych rysunków w texu - informacje podstawowe. Wstawianie gotowych rysunków w texu - informacje podstawowe. By móc wstawi rysunek musimy w preambule pliku dopisa odpowiedni pakiet komend : \usepackage. W przypadku graki doª czamy pakiet:graphicx, (nieco

Bardziej szczegółowo

Metody dowodzenia twierdze«

Metody dowodzenia twierdze« Metody dowodzenia twierdze«1 Metoda indukcji matematycznej Je±li T (n) jest form zdaniow okre±lon w zbiorze liczb naturalnych, to prawdziwe jest zdanie (T (0) n N (T (n) T (n + 1))) n N T (n). 2 W przypadku

Bardziej szczegółowo

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1 J zyki formalne i operacje na j zykach J zyki formalne s abstrakcyjnie zbiorami sªów nad alfabetem sko«czonym Σ. J zyk formalny L to opis pewnego problemu decyzyjnego: sªowa to kody instancji (wej±cia)

Bardziej szczegółowo

Edyta Juszczyk. Akademia im. Jana Dªugosza w Cz stochowie. Lekcja 1Wst p

Edyta Juszczyk. Akademia im. Jana Dªugosza w Cz stochowie. Lekcja 1Wst p Lekcja 1 Wst p Akademia im. Jana Dªugosza w Cz stochowie Baltie Baltie Baltie jest narz dziem, które sªu»y do nauki programowania dla dzieci od najmªodszych lat. Zostaª stworzony przez Bohumira Soukupa

Bardziej szczegółowo

Lekcja 5 Programowanie - Nowicjusz

Lekcja 5 Programowanie - Nowicjusz Lekcja 5 Programowanie - Nowicjusz Akademia im. Jana Dªugosza w Cz stochowie Programowanie i program wedªug Baltiego Programowanie Programowanie jest najwy»szym trybem Baltiego. Z pomoc Baltiego mo»esz

Bardziej szczegółowo

x y x y x y x + y x y

x y x y x y x + y x y Algebra logiki 1 W zbiorze {0, 1} okre±lamy dziaªania dwuargumentowe,, +, oraz dziaªanie jednoargumentowe ( ). Dziaªanie x + y nazywamy dodawaniem modulo 2, a dziaªanie x y nazywamy kresk Sheera. x x 0

Bardziej szczegółowo

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia

Bardziej szczegółowo

19. Obiektowo± 1 Kacze typowanie. 2 Klasy

19. Obiektowo± 1 Kacze typowanie. 2 Klasy 1 Kacze typowanie 19. Obiektowo± Sk d interpreter wie, jakiego typu s np. przekazywane do metody argumenty? Tak naprawd wcale nie musi wiedzie. Do poprawnego dziaªania programu istotne jest,»e przekazywany

Bardziej szczegółowo

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych. Wykªad jest prowadzony w oparciu o podr cznik Analiza matematyczna 2. Denicje, twierdzenia, wzory M. Gewerta i Z. Skoczylasa. Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych. Denicja Mówimy,»e funkcja

Bardziej szczegółowo

Lekcja 3 - BANKI I NOWE PRZEDMIOTY

Lekcja 3 - BANKI I NOWE PRZEDMIOTY Lekcja 3 - BANKI I NOWE PRZEDMIOTY Wiemy ju» co to s banki przedmiotów i potramy z nich korzysta. Dowiedzieli±my si te»,»e mo»emy tworzy nowe przedmioty, a nawet caªe banki przedmiotów. Na tej lekcji zajmiemy

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

Ć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

Technologie Informacyjne

Technologie Informacyjne Technologie Informacyjne Wykªad 5 Paweª Witkowski MIM UW Wiosna 2012 P. Witkowski (MIM UW) Technologie Informacyjne Wiosna 2012 1 / 1 WYSZUKAJ.PIONOWO WYSZUKAJ.PIONOWO(kryterium wyszukiwania; macierz;

Bardziej szczegółowo

2 Liczby rzeczywiste - cz. 2

2 Liczby rzeczywiste - cz. 2 2 Liczby rzeczywiste - cz. 2 W tej lekcji omówimy pozostaªe tematy zwi zane z liczbami rzeczywistymi. 2. Przedziaªy liczbowe Wyró»niamy nast puj ce rodzaje przedziaªów liczbowych: (a) przedziaªy ograniczone:

Bardziej szczegółowo

Systemy mikroprocesorowe - projekt

Systemy mikroprocesorowe - projekt Politechnika Wrocławska Systemy mikroprocesorowe - projekt Modbus master (Linux, Qt) Prowadzący: dr inż. Marek Wnuk Opracował: Artur Papuda Elektronika, ARR IV rok 1. Wstępne założenia projektu Moje zadanie

Bardziej szczegółowo

Matematyka wykªad 1. Macierze (1) Andrzej Torój. 17 wrze±nia 2011. Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej

Matematyka wykªad 1. Macierze (1) Andrzej Torój. 17 wrze±nia 2011. Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej Matematyka wykªad 1 Macierze (1) Andrzej Torój Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej 17 wrze±nia 2011 Plan wykªadu 1 2 3 4 5 Plan prezentacji 1 2 3 4 5 Kontakt moja strona internetowa:

Bardziej szczegółowo

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017 i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski Uniwersytet Šódzki, Wydziaª Matematyki i Informatyki UŠ piotr@fulmanski.pl http://fulmanski.pl/zajecia/prezentacje/festiwalnauki2017/festiwal_wmii_2017_

Bardziej szczegółowo

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz. 16 lutego Podstawowe funkcje. 2.1 Windows

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz. 16 lutego Podstawowe funkcje. 2.1 Windows SVN - wprowadzenie Adam Krechowicz 16 lutego 2013 1 Wprowadzenie do SVN SVN SubVersion jest systemem kontroli wersji pozwalaj cym wielu u»ytkownikom na swobodne wspóªdzielenie tych samych plików. Pozwala

Bardziej szczegółowo

Caªkowanie numeryczne - porównanie skuteczno±ci metody prostokatów, metody trapezów oraz metody Simpsona

Caªkowanie numeryczne - porównanie skuteczno±ci metody prostokatów, metody trapezów oraz metody Simpsona Akademia Górniczo-Hutnicza im. Stanisªawa Staszica w Krakowie Wydziaª Fizyki i Informatyki Stosowanej Krzysztof Grz dziel kierunek studiów: informatyka stosowana Caªkowanie numeryczne - porównanie skuteczno±ci

Bardziej szczegółowo

Macierze i Wyznaczniki

Macierze i Wyznaczniki Macierze i Wyznaczniki Kilka wzorów i informacji pomocniczych: Denicja 1. Tablic nast puj cej postaci a 11 a 12... a 1n a 21 a 22... a 2n A =... a m1 a m2... a mn nazywamy macierz o m wierszach i n kolumnach,

Bardziej szczegółowo

Pascal - wprowadzenie

Pascal - wprowadzenie Pascal - wprowadzenie Ogólne informacje o specyfice języka i budowaniu programów Filip Jarmuszczak kl. III c Historia Pascal dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego

Bardziej szczegółowo

Dyskretyzacja i kwantyzacja obrazów

Dyskretyzacja i kwantyzacja obrazów Laboratorium: Cyfrowe przetwarzanie obrazów i sygnaªów Dyskretyzacja i kwantyzacja obrazów 1 Cel i zakres wiczenia Celem wiczenia jest zapoznanie si z procesami dyskretyzacji i kwantyzacji, oraz ze zjawiskami

Bardziej szczegółowo

Przetwarzanie sygnałów

Przetwarzanie sygnałów Spis treści Przetwarzanie sygnałów Ćwiczenie 1 Wprowadzenie do programu Octave 1 Operatory 1 1.1 Operatory arytmetyczne...................... 1 1.2 Operatory relacji.......................... 1 1.3 Operatory

Bardziej szczegółowo

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie Cz ± II Podziaª pracy 1 Tablica sortuj ca Kolejka priorytetowa to struktura danych udost pniaj ca operacje wstawienia warto±ci i pobrania warto±ci minimalnej. Z kolejki liczb caªkowitych, za po±rednictwem

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

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH Klasa: 3TIR - Technik informatyk Program: 351203 Wymiar: 4 h tygodniowo Podręcznik: Kwalifikacja E.14 Programowanie

Bardziej szczegółowo

MiASI. Modelowanie systemów informatycznych. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

MiASI. Modelowanie systemów informatycznych. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska MiASI Modelowanie systemów informatycznych Piotr Fulma«ski Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska 18 stycznia 2010 Spis tre±ci 1 Analiza systemu informatycznego Poziomy analizy 2

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

Lab. 02: Algorytm Schrage

Lab. 02: Algorytm Schrage Lab. 02: Algorytm Schrage Andrzej Gnatowski 5 kwietnia 2015 1 Opis zadania Celem zadania laboratoryjnego jest zapoznanie si z jednym z przybli»onych algorytmów sªu» cych do szukania rozwi za«znanego z

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

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

Ekonometria. wiczenia 1 Regresja liniowa i MNK. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej

Ekonometria. wiczenia 1 Regresja liniowa i MNK. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej Ekonometria wiczenia 1 Regresja liniowa i MNK (1) Ekonometria 1 / 25 Plan wicze«1 Ekonometria czyli...? 2 Obja±niamy ceny wina 3 Zadania z podr cznika (1) Ekonometria 2 / 25 Plan prezentacji 1 Ekonometria

Bardziej szczegółowo

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje

Bardziej szczegółowo

Proces tworzenia programu:

Proces tworzenia programu: Temat 1 Pojcia: algorytm, program, kompilacja i wykonanie programu. Proste typy danych i deklaracja zmiennych typu prostego. Instrukcja przypisania. Operacje wejcia/wyjcia. Przykłady prostych programów

Bardziej szczegółowo

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski Instrukcja obsługi Norton Commander (NC) wersja 4.0 Autor: mgr inż. Tomasz Staniszewski ITM Zakład Technologii Maszyn, 15.10.2001 2 1.Uruchomienie programu Aby uruchomić program Norton Commander standardowo

Bardziej szczegółowo

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe: Podstawy Informatyki Metalurgia, I rok Historia Lata 0-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard Koniec lat 80 standard

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Zadanie 1: Bar Programowanie wspóªbie»ne wiczenia 6 monitory cz. 2 Napisz monitor Bar synchronizuj cy prac barmana obsªuguj cego klientów przy kolistym barze z N stoªkami. Ka»dy klient realizuje nast

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

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

1 Wskaźniki. 1.1 Główne zastosowania wskaźników 1 Wskaźniki Wskaźnik (ang. pointer) jest obiektem (zmienną) przechowującym adres pamięci. Definiowanie wskaźników: typ *nazwa wskaznika; np.: int *wsk na x;, double *xxx;, char *znak;. Aby można było pracować

Bardziej szczegółowo

OptiMore Importer Rejestru VAT. Instrukcja obsługi programu

OptiMore Importer Rejestru VAT. Instrukcja obsługi programu OptiMore Importer Rejestru VAT Instrukcja obsługi programu Wstęp Program OptiMore Importer Rejestru VAT jest przeznaczony do importowania wpisów do rejestru VAT na podstawie danych zawartych w pliku źródłowym.

Bardziej szczegółowo

G PROGRAMMING. Part #4

G PROGRAMMING. Part #4 G PROGRAMMING Part #4 Tablice, wykresy, klastry Tablice Zbiór elementów danych tego samego typu Zastosowanie gromadzenie danych z powtarzalnych operacji odczytu, obliczeń (magazynowanie danych przebiegów

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

Aproksymacja funkcji metod najmniejszych kwadratów

Aproksymacja funkcji metod najmniejszych kwadratów Aproksymacja funkcji metod najmniejszych kwadratów Teoria Interpolacja polega na znajdowaniu krzywej przechodz cej przez wszystkie w zªy. Zdarzaj si jednak sytuacje, w których dane te mog by obarczone

Bardziej szczegółowo

Wojewódzki Konkurs Matematyczny

Wojewódzki Konkurs Matematyczny Wojewódzki Konkurs Matematyczny dla uczniów gimnazjów ETAP SZKOLNY 16 listopada 2012 Czas 90 minut Instrukcja dla Ucznia 1. Otrzymujesz do rozwi zania 10 zada«zamkni tych oraz 5 zada«otwartych. 2. Obok

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r. M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza

Bardziej szczegółowo

Matlab Składnia + podstawy programowania

Matlab Składnia + podstawy programowania Matlab Składnia + podstawy programowania Matlab Matrix Laboratory środowisko stworzone z myślą o osobach rozwiązujących problemy matematyczne, w których operuje się na danych stanowiących wielowymiarowe

Bardziej szczegółowo

1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski

1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski 1 Strumienie W j zyku C++ pliki obsªugiwane s za pomoc strumieni. Strumie«pozwala na sekwencyjny dost p do pliku. Elementy, które jako pierwsze

Bardziej szczegółowo

Mathematica - podstawy

Mathematica - podstawy Mathematica - podstawy Artur Kalinowski Semestr letni 2011/2012 Artur Kalinowski Mathematica - podstawy 1 / 27 Spis tre±ci Program Mathematica 1 Program Mathematica 2 3 4 5 Artur Kalinowski Mathematica

Bardziej szczegółowo

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14 WST P DO TEORII INFORMACJI I KODOWANIA Grzegorz Szkibiel Wiosna 2013/14 Spis tre±ci 1 Kodowanie i dekodowanie 4 1.1 Kodowanie a szyfrowanie..................... 4 1.2 Podstawowe poj cia........................

Bardziej szczegółowo

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++ Podstawy Informatyki Metalurgia, I rok Wykład 6 Krótki kurs C++ Historia Lata 70-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard

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

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

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze Podstawy Informatyki Metalurgia, I rok Wykład 3 Liczby w komputerze Jednostki informacji Bit (ang. bit) (Shannon, 1948) Najmniejsza ilość informacji potrzebna do określenia, który z dwóch równie prawdopodobnych

Bardziej szczegółowo

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym.

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym. ZESTAWY A Zestaw 1 Organizacja plików: Wszystkie pliki oddawane do sprawdzenia nale»y zapisa we wspólnym folderze o nazwie b d cej numerem indeksu, umieszczonym na pulpicie. Oddajemy tylko ¹ródªa programów

Bardziej szczegółowo

Arytmetyka zmiennopozycyjna

Arytmetyka zmiennopozycyjna Rozdziaª 4 Arytmetyka zmiennopozycyjna Wszystkie obliczenia w octavie s wykonywane w arytmetyce zmiennopozycyjnej (inaczej - arytmetyce ) podwójnej precyzji (double) - cho w najnowszych wersjach octave'a

Bardziej szczegółowo

Bazy danych. Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 9/15

Bazy danych. Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 9/15 Bazy danych Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 9/15 Przechowywanie danych Wykorzystanie systemu plików, dostępu do plików za pośrednictwem systemu operacyjnego

Bardziej szczegółowo

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania 1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca

Bardziej szczegółowo

Macierze i Wyznaczniki

Macierze i Wyznaczniki dr Krzysztof yjewski Mechatronika; S-I.in». 5 pa¹dziernika 6 Macierze i Wyznaczniki Kilka wzorów i informacji pomocniczych: Denicja. Tablic nast puj cej postaci a a... a n a a... a n A =... a m a m...

Bardziej szczegółowo

Wybrane poj cia i twierdzenia z wykªadu z teorii liczb

Wybrane poj cia i twierdzenia z wykªadu z teorii liczb Wybrane poj cia i twierdzenia z wykªadu z teorii liczb 1. Podzielno± Przedmiotem bada«teorii liczb s wªasno±ci liczb caªkowitych. Zbiór liczb caªkowitych oznacza b dziemy symbolem Z. Zbiór liczb naturalnych

Bardziej szczegółowo

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15 ARYTMETYKA MODULARNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Denicja kongruencji i jej podstawowe wªasno±ci 3 2 Systemy pozycyjne 8 3 Elementy odwrotne 12 4 Pewne zastosowania elementów odwrotnych

Bardziej szczegółowo

Macierze. 1 Podstawowe denicje. 2 Rodzaje macierzy. Denicja

Macierze. 1 Podstawowe denicje. 2 Rodzaje macierzy. Denicja Macierze 1 Podstawowe denicje Macierz wymiaru m n, gdzie m, n N nazywamy tablic liczb rzeczywistych (lub zespolonych) postaci a 11 a 1j a 1n A = A m n = [a ij ] m n = a i1 a ij a in a m1 a mj a mn W macierzy

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo