Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Markku Siermala, IMT Bioinformatiikan koulutusohjelma

Samankaltaiset esitykset


Esitys aiheesta: "Markku Siermala, IMT Bioinformatiikan koulutusohjelma"— Esityksen transkriptio:

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

2 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

3 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

4 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

5 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

6 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

7 Lista (4) Lista perlissä myöhemmin lisää perlin listoista
yleensä alustetaan samalla @Nimet = (”Jussi”,”Lissu”); myöhemmin lisää perlin listoista

8 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

9 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ä!!

10 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};

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

12 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

13 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

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

15 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”

16 Muistinkäsittely (2) perlissä listan kokoa kasvatetaan lisäämällä sinne alkioita ja päinvastoin @Lista = 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)

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

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

19 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

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

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

22 Perlin listafunktioita
push: laittaa listan viimeiseksi alkioksi uuden pop:$Arvo = 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

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

24 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 kaikkien rivien lopusta rivinvaihtomerkin print $Lista[456],”\n”;

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

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

27 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

28 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);

29 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ä.


Lataa ppt "Markku Siermala, IMT Bioinformatiikan koulutusohjelma"

Samankaltaiset esitykset


Iklan oleh Google