Markku Siermala, IMT Bioinformatiikan koulutusohjelma

Slides:



Advertisements
Samankaltaiset esitykset
18. Abstraktit tietotyypit
Advertisements

Tietorakenteet ja algoritmit
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
© Hannu Laine 1 Tietorakenteet ja algoritmit Funktio-osoittimet Funktio-osoittimen ja taulukko-osoittimen vertailu Funktio-osoittimen käyttötapoja.
JavaScript (c) Irja & Reino Aarinen, 2007
© Jukka Harju, Jukka Juslin1 Java-ohjelmointi opas ammattimaiseen osaamiseen Luku 6 (osittain) Tiedostot.
Binääripuut Kaksihaaraista puuta sanotaan binääripuuksi:
Tietorakenteet ja algoritmit
11/9/2012 © Hannu Laine 1 Tietorakenteet ja algoritmit Elegantti toteutus funktiolle insert_to_list_end Alkion lisäys sisällön mukaan järjestettyyn listaan.
2.8.3 Abstraktit tietotyypit
C:\RI400 hakemistosta valitaan ExcelPDFConverter ja klikataan sitä.
Taulukot Jukka Juslin © Jukka Juslin 2006.
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille
22. Taulukot.
Perl on Ohjelmointikieli, skriptikieli
Rakenteinen ohjelmointi
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
Auli Jaakkola 1 Palkkatiedustelun tietomallin mukaisen tilastovastauksen luonti Tässä esimerkissä tiedosto tuotetaan excelistä csv-muotoon. 1.Oletetaan,
C-ohjelmointi, kevät 2006 Taulukot Binääritiedostot Luento
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
OLIO-OHJELMOINTI PERUSTEET PERUSTIETOTYYPIT
TyyppimuunnoksettMyn1 Tyyppimuunnokset Joskus kääntäjän on tehtävä itse päätöksiä, jos ohjelmoija ei ole ajatellut yksityiskohtia: int arvo1=10; long arvo2=25;
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
Ohjelmoinnin tekniikkaa Sisällys for -lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely.
TAULUKKO YKSIULOTTEINEN TAULUKKO. TAULUKKO  Taulukon tarkoitus Ohjelmassa tarvitaan paljon samantyyppisiä samaan kohdealueeseen kuuluvia muuttujia Näitä.
Binäärinen hakupuu Jokaisessa solmussa on yksikäsitteinen avain
TIETO JA TIETOKONEOHJELMA TIETOKONEOHJELMA KÄSITTELEE TIETOJA TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA MENETELMILLÄ.
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Map-luokka Mikä Map on? Mapin esittely ja luonti Map-luokan metodeja Mappiin lisääminen Mapin läpikäynti Mapista poistaminen 1.
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
String-vertailusta ja Scannerin käytöstä (1/2)
2.8 TIETO- JA TALLETUSRAKENTEET
Muuttujat ja vakiottMyn1 Muuttujat ja vakiot PHP-kielen syntaksi on lainattu suurimmaksi osaksi C- kielestä. PHP on erityisesti HTML-dokumenttien sisään.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
22. Taulukot.
© Jukka Juslin1 Tiedostot Tuloksellinen Java-ohjelmointi.
1 Ohjelmointikielten varhaishistoria Esa-Matti Miettinen
© Jukka Juslin1 Osio2 Olio-ohjelmointi: Merkkijonot eli Stringit Jukka Juslin.
Johdatus ohjelmointiin – C kielen peruselementit Tutkijayliopettaja Manne Hannula Opetusharjoittelu (ohjaava opettaja Jukka Jauhiainen)
2. Lisää Java-ohjelmoinnin alkeita
FunktiottMyn1 Funktiot Funktiot voidaan jakaa –Kirjastofunktioihin, jotka ovat valmiina kaikkien käytössä. Erikoisempien kirjastofunktioiden käyttöönotto.
Visual Basic -ohjelmointi
Visual Basic -ohjelmointi
Keskusmuistitietokantahakemistot Vilho Raatikka Solid Information Technology Tietokannat NYT! Helsinki,
15. Ohjelmoinnin tekniikkaa
Osoittimen määrittely ja alustus tMyn1 Osoittimen määrittely ja alustus Osoitin (pointer) on muuttuja, joka voi sisältää keskusmuistiosoitteen. Osoitinmuuttujan.
Listat eli luettelot listaelementit ovat lohkoelementtejä:  lista ja listan alkiot alkavat uudelta riviltä  listan jälkeen tuleva elementti alkaa uudelta.
Foreach-toistolausetMyn1 foreach-toistolause foreach-rakenteella on kätevä käydä läpi kaikki taulukon alkiot. Erityisen kätevää se on hajautustaulukon.
Ohjausrakenteet Määräävät ohjelmakoodin suoritusjärjestyksen Ehtolause if – else on muotoa if (lauseke) lause1 else lause2 Jos lauseke on tosi, niin suoritetaan.
Prioriteettijonot ja kekolajittelu (heapsort)
Puun määritelmä Puu on yhden tai useamman kytketyn solmun muodostama hierarkinen joukko Lehtisolmuista juurisolmuun on yksikäsitteinen polku Käytetään.
Lajittelun sovelluksia Yksilöllisyyden testaaminen Kopioiden poistaminen Mediaani/n:ksi suurimman valinta frekvenssien laskenta/yleisin alkio, l.moodi.
Hajakoodaus Talletetaan alkiot avain-indeksoituun taulukkoon Hajakoodausfunktio Menetelmä avain-indeksin laskemiseen avaimesta Törmäyksen selvitysstrategia.
Muuttujan osoite int a=1; 0xbfffea64 /* tulostetaan a:n osoite*/ printf(“%p\n”, &a); 0xbfffea68 /* tulostetaan a:n osoite + 1*/ printf(“%p\n”, &a+1); /*
Linkitetty lista Joukko alkioita jotka on kytketty toisiinsa linkeillä Listan alkio sisältää talletettavan datan ja linkin seuraavan alkioon Alkion lisääminen.
Symbolitaulut Joukko hakuavaimen omaavia tietueita LISÄÄ uusi tietue ETSI tietue hakuavaimen perusteella Sovelluksia: Spell checker etsii sanoja sanakirjasta.
Scalan valmiit kokoelmat. Mikä on kokoelma?  Tietorakenne jonka tehtävänä on pitää kirjaa (useista) tietyn tyyppisistä arvoista. Kokoelman sisältämiä.
Jatkeet TIES341 Funktio-ohjelmointi 2 Kevät 2006.
String-vertailusta ja Scannerin käytöstä (1/2)
2. Taulukot.
Foreach-toistolause foreach-rakenteella on kätevä käydä läpi kaikki taulukon alkiot. Erityisen kätevää se on hajautustaulukon tapauksessa, jossa taulukon.
7. Näytölle tulostaminen
16. Ohjelmoinnin tekniikkaa
14. Hyvä ohjelmointitapa.
2. Taulukot.
7. Näytölle tulostaminen
4. Luokan testaus ja käyttö olion kautta
16. Ohjelmoinnin tekniikkaa
Esityksen transkriptio:

Markku Siermala, IMT Bioinformatiikan koulutusohjelma 30.11.2004 Tietorakenteet Markku Siermala, IMT Bioinformatiikan koulutusohjelma 30.11.2004

Yleistä (1) tietorakenne = rakenne, jossa tieto esitetään/säilytetään/operoidaan miksi tietoa mallinnetaan rakenteellisesti tieto luonnollisessa muodossa jotkin operaatiot helppo tai nopea toteuttaa tai yleensä mahdollista toteuttaa

Yleistä (2) alkio, tiedon yksikkö, joiden suhteista rakentuu tietorakenne lista, 1-ulotteinen rakenne, ulottuvuutena pituus taulukko, 2-ulotteinen rakenne, ulottuvuutena pituus ja leveys puut, ulottuvuutena syvyys ja leveys graafi

Lista (1) joukko arvoja, skalaareja, osoitteita, listoja yms. peräkkäin lueteltuna [2,5,f,6,8,r,sss,MATTI] listan alamuotoja pino LIFO jono FIFO vektori

Lista (2) yksinkertainen tapa pitää useita alkioita yhdessä, muuttujilla monasti mahdoton alkiolukumäärän ylärala on yleensä muistin koosta kiinni alkiot saatavissa kiinni indekseillä tai osoittimilla listojen käsittelyyn paljon valmiita funktioita

Lista (3) Tavallisia listojen funktioita alkion lisäys ja poisto päistä tai oikeaan positioon alkioiden järjestäminen etsintä vektori-kontekstiin liittyvät operaatiot

Lista (4) Lista perlissä myöhemmin lisää perlin listoista alkaa @-merkillä esim: @Nimet yleensä alustetaan samalla @Nimet = (”Jussi”,”Lissu”); myöhemmin lisää perlin listoista

Tietue yhteen avaimeen sidotaan (vakio määrä) joukko arvoja nimi, ikä C:ssä struct-tyyppi struct auto { char Nimi[20]; int Vuosiluku; } perlissä ei luonnollista tietue-rakennetta

Assosiatiivinen taulukko (1) avain ja tieto –pari lokusID ja geeni: (678,ZFP36L2) erittäin hyödyllinen, kun tarvitaan nopeaa hakemista (sisäinen viittausrakenne) perlissä silppu (engl. hash) arvoilla EI järjestystä!!

Silppu esittely alkion laittaminen silppuun: %LocusIDToOfficialSymbol = (); avaimena skalaari esim. locusID-numero arvona skalaari,lista tai silppu yms. edellä silppu alustettiin tyhjäksi (hyvä tapa) alkion laittaminen silppuun: $LocusIDToOfficialSymbol{678}= ZFP36L2; alkion ottaminen silpusta: $GeneName = $LocusIDToOfficialSymbol{678};

Puut monet rakenteet ympärillämme ovat puu-hierargiassa organisaatiot sukupuut skenaariot/toimintamallit tietokoneen hakemistorakenne

Puista Binääripuu: puun jokaisella alkiolla on kaksi lasta luonnollinen sovellus on lajittelutarkoitus arvot sijoittuvat puussa arvonsa mukaan, vasemmalla pienemmät arvot ja oikealla suuremmat nopettaa alkion/position etsintää -> tiedon hallintaa

Muita puita AVL-puu B-puu Restricted universe tree yms. binaarinen hakupuu tasapainotusehdolla B-puu kompleksisempi binääripuuta esim. sukupuu-informaatioon sopiva Restricted universe tree yms. joillain erikoisrakenteilla ja ehdoilla saadaan esim. hakuoperaatioita yms. nopeutettua

Graafi Joukko solmuja ja linkkejä esim. kaupunkien väliset tieverkostot

Muistinkäsittely (1) yleisesti muuttujan esittelyssä sille automaattisesti varataan tarvittava määrä muistia tämän takia esim. C:ssä (ja siis myös C++:ssa) on tarkkaa, mitä muuttujaan saa sijoittaa perlissä muistinkäsittely on enemmän ”piilossa”

Muistinkäsittely (2) perlissä listan kokoa kasvatetaan lisäämällä sinne alkioita ja päinvastoin @Lista = (@Lista,”Jussi”); C:ssä listan koko pitää päättää koodattaessa int Luvut[30]; ja listan ulopuolelle ei saa viitata esim. viittaus alkioon 35 kaataisi ohjelman suorituksen (ylivuoto)

Muistinkäsittely (3) Dynaaminen muistinkäsittely mahdollistaa ajonaikaisen listan koon muuttamisen C:ssä. linkitetty lista: juuri,alkioita riippumassa osoittimien ketjussa ja viimeinen alkio ”maadoitettu”.

Perl ja listat (1) esittely ja alustus @Lista = (); @NimiLista = (”Antti”,”Jussi”,”Elias”); @_ = (1,2,3,4,5,6,7,8,9,10); #oletuslista @NumeroLista = (@_,11); @ListOfLists = (@NimiLista ,@NumeroLista);

Perl ja listat (2) alkioon viittaaminen indeksointi alkaa nollasta!!! alkion viittauksessa käytetään listan nemen edessä skalaari-operaattoria $Nimi = $NimiLista[2]; $JokuArvo = $ListOfLists[6]; mikä arvo tulee ed. muuttujaan ($Luku,@_) = @ListOfLists;

Perl ja listat (3) viittaaminen jatkuu esim. $JokuArvo = $ListOfLists[$MyIndex]; esim. $MyIndex = 0; @ListForNumbers = (); while($MyIndex < 100) { @ListForNumbers = (@ListForNumbers,$MyIndex); $MyIndex = $ MyIndex + 1; } $ListanKoko = @ListForNumbers;#laittaa muuttujaan listan koon

Perl ja valmiit funktiot kutsu yleensä $palautusArvo = FunktionNimi($Parametri1,$Parametri2...)

Perlin listafunktioita push: push(@_,12); laittaa listan viimeiseksi alkioksi uuden pop:$Arvo = pop(@_); poistaa viimeisen arvon ja laittaa muuttujaan vastaavasti shift ja unshift listan alkupäälle reverse-kääntää listan järjestyksen sort-järjestää AAKKOS-järjestykseen

Listoista (1) foreach ohjausrakenne, jossa jokainen listan alkio sij. muuttujaan ja käsitellään lohkossa syntaksi: foreach $ListanAlkio (@ItseLista) { print $ListanAlkio ”\n”; }

Tiedosto suoraan listaan esim. tiedoston lukeminen listaan ja yhden alkion tulostus open(Lukija,”Teksti.txt”);#avataan kahva tiedostoon @Lista = <Lukija>;#lukee oletuslistaan Testi.txt:n chomp(@Lista);#poistaa kaikkien rivien lopusta rivinvaihtomerkin print $Lista[456],”\n”;

Muuta (1) Perliohjelmassa on automaattisesti käytössä lista @ARGV, jossa on taletettuna ohjelman käynnistyskäskyn yhteydessä annetut parametrit. perl LaskeKeskiarvo.pl 2 4 5 6 ------------------------------- $ParametrilistanPituus = @ARGV; $Value = $ARGV[2];

Muuta (2) esim. 2. ohjelamaparametreista: perl CheckName.pl Antti Auramo ------------------------------- $ParametrilistanPituus = @ARGV; $FirstName = $ARGV[0];#Antti $LastName = $ARGV[1];#Auramo

Muuta (3) tekstihakutoiminnon voi tehdä index-funktiolla: index(hakuteksi,haettavamjono) $Position = index(”RNSKSFJSAJAS”,”SK”); palauttaa sen position, jossa ensimmäinen sovittuva merkki esiintyy, esimerkissä palautetaan luku 2 (koska indeksointi alkaa nollasta) jos merkkiä ei esiinny, palautetaan -1

Mietittävää (1) Millainen on ohjelma, joka kysyy jäyttäjältä 5 nimeä ja tallettaa ne listaan, tulostaa nimet käänteisessä järjestyksessä lukee kysyy käyttäjältä nimejä ja numeroita ja tallettaa ne silppuun siten, että nimi on avain ja numero on arvo, kunnes törmää merkkijonoon ”lopetus” sekä tämän jälkeen tulostaa silpun sisällön? *) silpun avaimet saadaan listaan funktiolla: @Avaimet = keys(%Silppu);

Mietittävää (2) Millainen on ohjelma, joka saa parametrina tiedostonimen ja tulostaa tiedoston ne rivit näytölle, joissa esiintyy b, c, d, f, g, x tai z -kirjain. on kuten edellinen, mutta tulostaa ne rivit, joissa esiintyy a, r ja t samalla rivillä.