3. Binääripuu, Java-toteutus
|
|
- Elli Halonen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 3. Binääripuu, Java-toteutus /* / / Rajapinta SearchTree: binäärisen hakupuun käsittelyrajapinta / / Metodit: / / void insert( Comparable x ); / / - solun lisääminen puuhun / / void remove( Comparable x ); / / - solun poistaminen puusta / / void removemin(); / / - pienintä data-alkiota vastaavan solun poistaminen / / Comparable find( Comparable x ); / / - solun etsiminen / / Comparable findmin(); / / - pienintä data-alkiota vastaavan solun etsiminen / / Comparable findmax(); / / - suurinta data-alkiota vastaavan solun etsiminen / / boolean isempty(); / / - testi, onko puu tyhjä / / void makeempty(); / / - puun tyhjentäminen / / void printtree(); / / - puun tulostaminen / / Huomautuksia: / / - rahjapinta on sijoitettava samaan pakkaukseen kuin luokka / / BstNode ja tämän rajapinnan implementoiva luokka, / / esimerkiksi BST / / - rajapinta SearchTree mahdollistaa usean eri hakupuun / / toteutuksen, esim. BST, AVL, Red-Black Tree ym. / / - rajapinta on otettu teoksesta Weiss M. A: Data Structures / / & Problem Solving Using Java / / T. Harju / / */ public interface SearchTree void insert( Comparable x ); void remove( Comparable x ); void removemin(); Comparable find( Comparable x ); Comparable findmin(); Comparable findmax(); boolean isempty(); void makeempty(); void printtree(); /* / / Luokka BstNode: binäärisen hakupuun (BST) solu / / Kentät: / / Comparable item : solun data / / BstNode left : viite solun vasempaan lapsisoluun / / BstNode right : viite solun oikeaan lapsisoluun / / Konstruktorit: / / BstNode( Comparable it ) / / BstNode( Comparable it, BstNode lt, BstNode rt ) / / Metodit: / / - ei metodeja / / Huomautuksia: / / - luokka on sijoitettava samaan pakkaukseen kuin / / rajapinta SeachTree ja luokka BST / / - luokka yhdessä rajapinnan SearchTree kanssa mahdollistaa / / muunkin hakupuun kuin perus-bst:n toteutuksen. Tässä esim./ / on varauduttu AVL:n toteutukseen: luokka sisältää, tosin / / pois kommentoituna, AVL:n toteutusta helpottavan kentän / / "height" / / - luokan toteutus perustuu teoksessa Weiss M. A: Data / / Structures & Problem Solving Using Java julkaistuun / / koodiin. / / T. Harju / / */ class BstNode Comparable item; BstNode left; BstNode right; // int height = 0; //Varauduttu AVL:ään BstNode( Comparable it, BstNode lt, BstNode rt ) item = it; left = lt; right = rt; BstNode( Comparable it) this( it, null, null );
2 /* / / Luokka BST: binäärisen hakupuun (BST) implementointi toteut- / / tamalla rajapinta SearchTree / / Kentät: / / BstNode root : BST:n juurisolu / / Konstruktorit: / / BST() / / - luo tyhjän BST:n, jossa root = null / / Rajapinnan metodit: / / void insert( Comparable x ); / / - solun lisääminen puuhun / / void remove( Comparable x ); / / - solun poistaminen puusta / / void removemin(); / / - pienintä data-alkiota vastaavan solun poistaminen / / Comparable find( Comparable x ); / / - solun etsiminen / / Comparable findmin(); / / - pienintä data-alkiota vastaavan solun etsiminen / / Comparable findmax(); / / - suurinta data-alkiota vastaavan solun etsiminen / / boolean isempty(); / / - testi, onko puu tyhjä / / void makeempty(); / / - puun tyhjentäminen / / void printtree(); / / - puun tulostaminen / / Toteutustapa: / / Edellä olevat metodit ovat kaikki julkisia ja muodostavat / / siten julkisen ohjelmointirajapinnan. Varsinainen toteutus / / on kuitenkin kätketty muilta kuin luokan perillisillä paitsi/ / yksinkertaisimmilla metodeilla, esim. isempty(). Rajapinta- / / metodit vain kutsuvat toteutusmetodeja, jotka ovat näky- / / vyydeltään "protected". Katso tämä varsinainen toteutus / / koodista. / / Huomautuksia: / / - luokka on sijoitettava samaan pakkaukseen kuin luokka / / BstNode ja rajapinta SearchTree / / - luokan toteutus perustuu teoksessa Weiss M. A: Data / / Structures & Problem Solving Using Java julkaistuun / / koodiin. / / T. Harju / / */ public class BST implements SearchTree protected BstNode root; public BST() root = null; /*--- Rajapinnan SearcTree toteutus ---*/ public void insert( Comparable x ) root = insert( x, root ); public void remove( Comparable x ) root = remove( x, root ); public void removemin() root = removemin( root ); public Comparable find( Comparable x ) return find( x, root ).item; public Comparable findmin() return findmin( root ).item; public Comparable findmax() return findmax( root ).item; public boolean isempty() return root == null; public void makeempty() root = null; public int height() // BST:n korkeus, ei sisälly rajapintaan return height( root ); public void printtree() printtree( root );
3 /*--- Sisäiset metodit: varsinainen toteutuskoodi ---*/ protected BstNode insert( Comparable x, BstNode t ) if ( t == null ) t = new BstNode( x, null, null ); if ( x.compareto( t.item ) < 0 ) t.left = insert( x, t.left ); if ( x. compareto( t.item ) > 0 ) t.right = insert( x, t.right ); System.out.println( "BST insert: duplicate item" ); protected BstNode remove( Comparable x, BstNode t ) if ( t == null ) System.out.println( "BST remove: item not found" ); if ( x.compareto( t.item ) < 0 ) t.left = remove( x, t.left ); if ( x.compareto( t.item ) > 0 ) t.right = remove( x, t.right ); if ( t.left!= null && t.right!= null ) t.item = findmin( t.right ).item; t.right = removemin( t.right ); t = ( ( t.left!= null )? t.left : t.right ); protected BstNode removemin( BstNode t ) if ( t == null ) System.out.println( "BST removemin: item not found" ); if ( t.left!= null ) t.left = removemin( t.left ); t = t.right; protected BstNode find( Comparable x, BstNode t ) while ( t!= null ) if ( x.compareto( t.item ) < 0 ) t = t.left; if ( x.compareto( t.item ) > 0 ) t = t.right; System.out.println( "BST find: item not found" ); protected BstNode findmin( BstNode t ) if ( t!= null ) System.out.println( "BST findmin: item not found" ); while ( t.left!= null ) t = t.left; protected BstNode findmax( BstNode t ) if ( t!= null ) System.out.println( "BST findmax: item not found" ); while ( t.right!= null ) t = t.right; protected int height( BstNode t ) int u, v; if ( t == null ) return -1; u = height( t.left ); v = height( t.right ); return ( u > v )? u + 1 : v + 1; protected void printtree( BstNode t ) if ( t.left!= null ) printtree( t.left ); for ( int i = 0; i < 2*height( t ); ++i ) System.out.print( " " ); System.out.println( t.item ); if ( t.right!= null ) printtree( t.right ); public class BstDemo public static void main( String[] args ) SearchTree puu = new BST(); System.out.println( "Anna BST:hen sijoitettavat luvut, lopuksi - 999" ); int luku = Lue.kluku(); while ( luku!= -999 ) puu.insert( new Integer( luku ) ); luku = Lue.kluku(); puu.printtree();
4 4. BST, C-toteutus /* BST.H - binäärisen hakupuun (Binary Search Tree) käsittelyyn */ /* liittyviä määrittelyjä. */ /* Käyttö: */ /* - omaan ohjelmaan #include "bst.h", jonka on oltava */ /* hakemistossa, mistä kääntäjä sen löytää */ /* - tiedosto bst.c linkitettävä mukaan ohjelmaan */ /* Sisältö: */ /* insnode() : lisää noden BST:hen, myös tyhjään */ /* find() : etsii noden BST:stä */ /* findmin() : etsii BST:n pienimmän data-alkion noden */ /* findmax() : etsii BST:n suurimman data-alkion noden */ /* delnode() : poistaa noden BST:stä */ /* delbst : poistaa koko BST:n */ /* height() : palauttaa BST:n korkeuden */ /* printbst() : tulostaa BST:n sisällön sisäjärjstyksessä */ /* Teokseen Weiss: Data Structures and Algorithm Analysis perustuen */ /* implementoinut Timo Harju , */ #ifndef _BST.H #define _BST.H typedef int item_type; /* BST:n datan tyyppi */ typedef struct node *link; /* Pointteri nodeen */ struct node /* Node: */ item_type item; /* data */ link left; /* pointteri vasempaan oksaan */ link right; /* ja oikeaan oksaan */ ; typedef link BST; /* Vaihtoehtoinen nimi pointterille */ typedef struct node Node; /* ja itse nodelle */ /* Funktioiden prototyypit */ link insnode( BST T, item_type a ); link find( BST T, item_type x ); link findmin( BST T ); link findmax( BST T ); link delnode( BST T, item_type a ); void delbst( BST T ); int height( BST T ); void printbst( BST T ); #endif /* BST.C - binäärisen hakupuun (Binary Search Tree) käsittelyyn */ /* liittyviä funktioita */ /* Käyttö: */ /* - omaan ohjelmaan #include "bst.h", jonka on oltava */ /* hakemistossa, mistä kääntäjä sen löytää */ /* - tämä tiedosto bst.c linkitettävä mukaan ohjelmaan */ /* Sisältö: */ /* insnode() : lisää noden BST:hen, myös tyhjään */ /* find() : etsii noden BST:stä */ /* findmin() : etsii BST:n pienimmän data-alkion noden */ /* findmax() : etsii BST:n suurimman data-alkion noden */ /* delnode() : poistaa noden BST:stä */ /* delbst() : poistaa koko BST:n */ /* height() : palauttaa BST:n korkeuden */ /* printbst() : tulostaa BST:n sisällön sisäjärjstyksessä */ /* Teokseen Weiss: Data Structures and Algorithm Analysis perustuen */ /* implementoinut Timo Harju , */ #include <stdio.h> #include <stdlib.h> #include "bst.h" link insnode( BST T, item_type a ) if ( T == NULL ) if ( ( T = ( link ) malloc( sizeof( struct node ) ) ) == NULL ) printf( "insnode: muistin varaaminen epäonnistui\n" ); exit(1); T->item = a; T->left = T->right = NULL; if ( a < T->item ) T->left = insnode( T->left, a ); if ( a > T->item ) T->right = insnode( T->right, a ); link find( BST T, item_type x ) if ( T == NULL ) if ( x < T->item ) return find( T->left, x ); if ( x > T->item ) return find( T->right, x );
5 link findmin( BST T ) if ( T!= NULL ) while( T->left ) T = T->left; link findmax( BST T ) if ( T!= NULL ) while( T->right ) T = T->right; link delnode( BST T, item_type a ) link temp, child; if ( T == NULL ) printf( "Tuhottavaa ei löydy" ); if ( a < T->item ) T->left = delnode( T->left, a ); if ( a > T->item ) T->right = delnode( T->right, a ); if ( T->left && T->right ) temp = findmin( T->right ); T->item = temp->item; T->right = delnode( T->right, T->item ); temp = T; if ( T->left == NULL ) child = T->right; if ( T->right == NULL ) child = T->left; free( temp ); return child; void delbst( BST T ) link p, q; if ( T!= NULL ) p = T->left; q = T->right; free( T ); delbst( p ); delbst( q ); int height( BST T ) int u, v; if ( T == NULL ) return -1; u = height( T->left ); v = height( T->right ); if ( u > v ) return u+1; return v+1; void printbst( BST T ) int n, i; if ( T!= NULL ) printbst( T->left ); n = height( T ); /* Tässä yritetään saada */ for ( i = 0 ; i < 2 * n; ++i ) /* tulostus edes vähän */ printf( " " ); /* puuta muistuttavaksi */ printf( "%d\n", T->item ); printbst( T->right ); /* */ /* TIETORAKENTEET JA ALGORITMIT: BSTDemo */ /* Varsinaiset BST:n käsittelyrutiinit ovat tiedostoissa bst.h */ /* (tietotyypit ja funktioiden prototyypit) sekä bst.c (koodi) */ /* T. Harju , */ /* */ #include <stdio.h> #include <conio.h> #include "bst.h" void main( void ) BST Tree = NULL, p; int val, luku; clrscr(); printf( "BST:n (Binary Search Tree) käsittelyä\n\n"); printf( "Anna puuhun sijoitettavat luvut, lopuksi -9999\n" ); printf( ": " ); scanf( "%d", &luku ); while ( luku!= ) Tree = insnode( Tree, luku ); printf( ": " ); scanf( "%d", &luku );
6 /* Sitten vaan kokeillaan lisäystä, poistoa ja koko listan hävittämistä. */ /* Siinä sivussa tulee etsiminenkin testatuksi. */ 6. BST, vaatimaton java-toteutus do do clrscr(); printf( "Lisäys... 1\n" ); printf( "Poisto... 2\n" ); printf( "BST:n tuhoaminen... 3\n" ); printf( "Lopetus... 0\n" ); printf( "\nvalintasi: " ); scanf( "%d", &val ); while ( ( val < 0 ) ( val > 3 ) ); switch ( val ) case 1: /* Lisäys */ printf( "Anna lisätttvä alkio: " ); scanf( "%d", &luku ); Tree = insnode( Tree, luku ); case 2: /* Poisto */ printf( "Mikä alkio poistetaan: " ); scanf( "%d", &luku ); p = find( Tree, luku ); if ( p == NULL ) printf( "Ei löydy!" ); Tree = delnode( Tree, luku ); case 3: /* Puun hävittäminen */ delbst( Tree ); Tree = NULL; default: while( val!= 0 ); /* Luokka BST: vähän BST-luokan alkua / / TH */ class Node // BST:n solu: data + linkit oksiin Comparable item; // Comparable on Javassa määr. rajapinta Node left; Node right; public Node() // Solun konstruktori item = null; left = right = null; public class BST private Node root; // Puun juuri public BST() // Konstruktori root = null; // Solun lisäys public Node insnode( Node T, Comparable a ) if ( T == null ) T = new Node(); T.item = a; T.left = T.right = null; if ( a.compareto( T.item ) < 0 ) T.left = insnode( T.left, a ); if (a.compareto( T.item ) > 0 ) T.right = insnode( T.right, a ); public Node getroot() // Palauttaa juuren return root; public void setroot( Node p ) // Asettaa juuren root = p; void prtree( Node p, int h ) // Tulostetaan puu if ( p!= null ) prtree( p.right, h + 1 ); // sisäjärjestyksessä for ( int i = 0; i < h; ++i ) // jossakin määrin puun System.out.print( " " ); // muodossa System.out.println( p.item ); prtree( p.left, h + 1 );
7 /* Testiohjelma luokan BST kokeilemiseksi / / TH */ 6. PQ, C-toteutus public class BSTdemo public static void main( String[] args ) BST puu = new BST(); // Luodaan BST System.out.println( "Anna BST:hen sijoitettavat kokonaisluvut yksitellen." ); System.out.println( "Anna lopuksi -999" ); int luku= Lue.kluku(); // Ensimmäinen sijoitettava if ( luku!= -999 ) // Tehdään siitä juuri puu.setroot( puu.insnode( puu.getroot(), new Integer( luku ) ) ); puu.prtree( puu.getroot(), 0 ); System.out.println( "" ); luku= Lue.kluku(); while ( luku!= -999 ) puu.insnode( puu.getroot(), new Integer( luku ) ); puu.prtree( puu.getroot(), 0 ); System.out.println( "" ); luku= Lue.kluku(); /* PQ.H - priorisoidun jonon (Priority Queue) käsittelyyn */ /* liittyviä määrittelyjä, PQ:n toteutus taulukossa */ /* olevana binäärisenä kasana (heap) */ /* Käyttö: */ /* - omaan ohjelmaan #include "pq.h", jonka on oltava */ /* hakemistossa, mistä kääntäjä sen löytää */ /* - tiedosto pq.c linkitettävä mukaan ohjelmaan */ /* Sisältö: */ /* creapq() : luo PQ:n */ /* insert() : lisää alkion PQ:un */ /* delmin() : poistaa PQ:n pienimmän alkion */ /* printpq() : tulostaa PQ:n (vast. puun tasojärjestyksessä ) */ /* delpq() : tuhoaa PQ:n */ /* Teokseen Weiss: Data Structures and Algorithm Analysis perustuen */ /* implementoinut Timo Harju , */ #ifndef _PQ.H #define _PQ.H typedef int item_type; /* PQ:n datan tyyppi */ struct pqstruct int maxsize; /* PQ:n maksimi alkiomäärä */ int size; /* PQ:n todellinen alkiomäärä */ item_type *items; /* Pointteri PQ:n datataulukkoon */ ; typedef struct pqstruct *PQ; /* Pointterityyppi PQ:un */ /* Funktioiden prototyypit */ PQ creapq( int n ) ; void insert( PQ H, item_type a ); item_type delmin( PQ H ); void printpq( PQ H ); void delpq( PQ H ); #endif
8 /* PQ.C - priorisoidun jonon (Priority Queue) käsittelyyn */ /* liittyviä funktioita, PQ:n toteutus taulukossa */ /* olevana binäärisenä kasana (heap) */ /* Käyttö: */ /* - omaan ohjelmaan #include "pq.h", jonka on oltava */ /* hakemistossa, mistä kääntäjä sen löytää */ /* - tämä tiedosto pq.c linkitettävä mukaan ohjelmaan */ /* Sisältö: */ /* creapq() : luo PQ:n */ /* insert() : lisää alkion PQ:un */ /* delmin() : poistaa PQ:n pienimmän alkion */ /* printpq() : tulostaa PQ:n (vast. puun tasojärjestyksessä ) */ /* delpq() : tuhoaa PQ:n */ /* Teokseen Weiss: Data Structures and Algorithm Analysis perustuen */ /* implementoinut Timo Harju , */ #include <stdio.h> #include <stdlib.h> #include "PQ.H" #ifndef MIN_DATA #define MIN_DATA /* Pienin mahdollinen data-alkio (int) */ #endif PQ creapq( int n ) PQ H; void insert( PQ H, item_type a ) int i; if ( H->size == H->maxSize ) printf( "PQ on täynnä\n" ); i = ++H->size; while( H->items[i/2] > a ) H->items[i] = H->items[i/2]; i /= 2; H->items[i] = a; item_type delmin( PQ H ) int i, child; item_type mini, last; if ( H->size == 0 ) printf( "PQ on tyhjä\n" ); return H->items[0]; mini = H->items[1]; last = H->items[H->size--]; H = ( PQ ) malloc( sizeof( struct pqstruct ) ); if ( H == NULL ) printf( "PQ:n muistinvaraus ei onnistunut\n" ); exit( 1 ); H->items = ( item_type * ) malloc( ( n + 1 ) * sizeof( item_type ) ); if ( H->items == NULL ) printf( "PQ:n datan muistinvaraus ei onnistunut\n" ); exit( 2 ); H->maxSize = n; H->size = 0; H->items[0] = MIN_DATA; return H; for ( i = 1; 2*i <= H->size; i = child ) child = 2*i; if ( ( child!= H->size ) && ( H->items[child+1] < H->items[child] ) ) ++child; if ( last > H->items[child] ) H->items[i] = H->items[child]; H->items[i] = last; return mini; void printpq( PQ H ) int i; for ( i = 1; i <= H->size; ++i ) printf( "%d ", H->items[i] );
9 void delpq( PQ H ) free( H->items ); free( H ); H = NULL;
TIETORAKENTEET JA ALGORITMIT
TIETORAKENTEET JA ALGORITMIT Timo Harju 1999-2004 1 typedef link List; /* Vaihtoehtoisia nimiä */ typedef link Stack; /* nodepointterille */ typedef link Queue typedef struct node Node; /* itse nodelle
LisätiedotA274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PUURAKENTEET, BINÄÄRIPUU, TASAPAINOTETUT PUUT MIKÄ ON PUUTIETORAKENNE? Esim. Viereinen kuva esittää erästä puuta. Tietojenkäsittelytieteessä puut kasvavat alaspäin.
LisätiedotA TIETORAKENTEET JA ALGORITMIT KORVAAVAT HARJOITUSTEHTÄVÄT 3, DEADLINE KLO 12:00
A274101 TIETORAKENTEET JA ALGORITMIT KORVAAVAT HARJOITUSTEHTÄVÄT 3, DEADLINE 9.2.2005 KLO 12:00 PISTETILANNE: www.kyamk.fi/~atesa/tirak/harjoituspisteet-2005.pdf Kynätehtävät palautetaan kirjallisesti
LisätiedotA274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen
Lisätiedot1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...
1. Tietorakenteet Tietorakenteet organisoivat samankaltaisten olioiden muodostaman tietojoukon. Tämä järjestys voidaan saada aikaan monin tavoin, esim. Keräämällä oliot taulukkoon. Liittämällä olioihin
LisätiedotRajapinta (interface)
1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko
LisätiedotListarakenne (ArrayList-luokka)
Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Taulukon edut Taulukon haitat Taulukon haittojen välttäminen Dynaamisesti linkattu lista Linkatun listan solmun määrittelytavat Lineaarisen listan toteutus dynaamisesti linkattuna
Lisätiedot18. Abstraktit tietotyypit 18.1
18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
LisätiedotAlgoritmit 2. Luento 2 Ke Timo Männikkö
Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento
LisätiedotOhjelmointi 2 / 2010 Välikoe / 26.3
Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään
LisätiedotAlgoritmit 2. Luento 2 To Timo Männikkö
Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento
LisätiedotPino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:
Pino (stack) Pino: viimeisenä sisään, ensimmäisenä ulos (LIFO, Last In, First Out) -tietorakenne kaksi perusoperaatiota: alkion lisäys pinon päälle (push), ja päällimmäisen alkion poisto (pop) Push(alkio)
LisätiedotSisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto
Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
LisätiedotOhjelmoinnin jatkokurssi, kurssikoe 28.4.2014
Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.
LisätiedotTietorakenteet, laskuharjoitus 6,
Tietorakenteet, laskuharjoitus, 23.-2.1 1. (a) Kuvassa 1 on esitetty eräät pienimmistä AVL-puista, joiden korkeus on 3 ja 4. Pienin h:n korkuinen AVL-puu ei ole yksikäsitteinen juuren alipuiden keskinäisen
LisätiedotTietorakenteet ja algoritmit II Loppuraportti, ryhmä 7
Tietorakenteet ja algoritmit II Loppuraportti, ryhmä 7 Turun Yliopisto Informaatioteknologian laitos Kevät 2008 Jonne Pohjankukka, jjepoh@utu.fi, 73116 Simo Savonen, sipesa@utu.fi, 56572 Jyri Lehtonen,
LisätiedotTehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003
Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003 Matti Nykänen 5. joulukuuta 2003 1 Satelliitit Muunnetaan luennoilla luonnosteltua toteutusta seuraavaksi: Korvataan puusolmun p kentät p. key ja
LisätiedotMikä yhteyssuhde on?
1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin
LisätiedotOlio-ohjelmointi Javalla
1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi
LisätiedotAlgoritmit 1. Luento 7 Ti Timo Männikkö
Algoritmit 1 Luento 7 Ti 31.1.2017 Timo Männikkö Luento 7 Järjestetty binääripuu Binääripuiden termejä Binääripuiden operaatiot Solmun haku, lisäys, poisto Algoritmit 1 Kevät 2017 Luento 7 Ti 31.1.2017
LisätiedotJAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?
JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,
LisätiedotLyhyt kertaus osoittimista
, syksy 2007 Kertausta Luento 10 12.10.2007 Syksy 2007 1 Lyhyt kertaus osoittimista char *p; /* char, int, jne ilmoittavat, minkä tyyppisiä */ Keskusmuisti int *q; /* olioita sisältäviin muistilohkoihin
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Elegantti toteutus funktiolle insert_to_list_end Alkion lisäys sisällön mukaan järjestettyyn listaan (insert_to_list) Linkatun listan yleisyys alkiotyypin suhteen source-tasolla
Lisätiedot// // whiledemov1.c // #include <stdio.h> int main(void){ int luku1 = -1; int luku2 = -1;
// // whiledemov1.c // #include int main(void){ int luku1 = -1; int luku2 = -1; while( luku1
LisätiedotMuita linkattuja rakenteita
1 Muita linkattuja rakenteita Johdanto Aikaisemmin on käsitelty listan, jonon ja pinon toteutus dynaamisesti linkattuna rakenteena. Dynaamisella linkkauksella voidaan toteuttaa mitä moninaisimpia rakenteita.
Lisätiedotpublic static void main (String [] args)
HAAGA-HELIA OHJELMOINTI 1(5) OHJELMALUOKKA Ohjelma-luokan käynnistää public static void main (String [] args) main-metodiin voi koodata 1. ohjelman logiikan tai 2. luoda ohjelma-olion ja kutsua metodia,
LisätiedotHakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina
Hakupuut tässä luvussa tarkastelemme puita tiedon tallennusrakenteina hakupuun avulla voidaan toteuttaa kaikki joukko-tietotyypin operaatiot (myös succ ja pred) pahimman tapauksen aikavaativuus on tavallisella
Lisätiedot16. Javan omat luokat 16.1
16. Javan omat luokat 16.1 Sisällys Johdanto. Object-luokka: tostring-, equals-, clone- ja getclass-metodit. Comparable-rajapinta: compareto-metodi. Vector- ja ArrayList-luokat. 16.2 Javan omat luokat
LisätiedotBinäärihaun vertailujärjestys
Järjestetyn sanakirjan tehokas toteutus: binäärihaku Binäärihaku (esimerkkikuassa aain = nimi) op Eea 5 op 5 op op 8 op 5 6 7 8 op Eea 5 op 5 op op 8 op 5 6 7 8 op Eea 5 op 5 op op 8 op 5 6 7 8 op Eea
LisätiedotA274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT GRAAFITEHTÄVIÄ JA -ALGORITMEJA Lähteet: Timo Harju, Opintomoniste Keijo Ruohonen, Graafiteoria (math.tut.fi/~ruohonen/gt.pdf) GRAAFIN LÄPIKÄYMINEN Perusta useimmille
LisätiedotTehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki
Tehtävä 1 Koherentti selitys Koherentti esimerkki ½p ½p Tehtävä 2 Täysiin pisteisiin edellytetään pelaajien tulostamista esimerkin järjestyksessä. Jos ohjelmasi tulostaa pelaajat jossain muussa järjestyksessä,
LisätiedotKaksiloppuinen jono D on abstrakti tietotyyppi, jolla on ainakin seuraavat 4 perusmetodia... PushFront(x): lisää tietoalkion x jonon eteen
Viimeksi käsiteltiin pino: lisäys ja poisto lopusta jono: lisäys loppuun, poisto alusta Pinon ja jonon yleistävä tietorakenne: kaksiloppuinen jono alkion lisäys/poisto voidaan kohdistaa jonon alkuun tai
Lisätiedot#include <stdio.h> // io-toiminnot. //#define KM_MAILISSA int main( ){
demo1.c 30/09/15 08:19 #include // io-toiminnot //#define KM_MAILISSA 1.609 int main( ){ double mailit = 0.0; double kilometrit; const double KM_MAILISSA = 1.609; printf("anna maililukema > ");
LisätiedotKompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma
1 Kompositio Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä kompositio on? Tili - : String - : double 1 1 Kayttoraja
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Useampitasoiset ADT:t Käytetään esimerkkiohjelmaa Ratkaisuyritys 1 Ratkaisuyritys 2 Lopullinen ratkaisu Lopullisen ratkaisun toteutusyritys Lopullisen ratkaisun oikea toteutus
LisätiedotLoppukurssin järjestelyt
C! Loppukurssin järjestelyt 29.3.2018 Ohjelmassa Yhteenvetoa palautteesta Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Kysyttävää / kerrattavaa 10-kierroksen asioista? Aikatauluista 10. kierroksen
LisätiedotVertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004
Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;
Lisätiedot1 Tehtävän kuvaus ja analysointi
Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.
LisätiedotMetodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen
Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus
LisätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja
LisätiedotAlgoritmit 2. Luento 7 Ti Timo Männikkö
Algoritmit 2 Luento 7 Ti 4.4.2017 Timo Männikkö Luento 7 Joukot Joukko-operaatioita Joukkojen esitystapoja Alkiovieraat osajoukot Toteutus puurakenteena Algoritmit 2 Kevät 2017 Luento 7 Ti 4.4.2017 2/26
LisätiedotDemo 6 vastauksia. 1. tehtävä. #ifndef #define D6T1 H D6T1 H. #include <iostream> using std::ostream; using std::cout; using std::endl;
Demo 6 vastauksia 1. tehtävä #ifndef #define D6T1 H D6T1 H #include using std::ostream; using std::cout; using std::endl; #include using std::string; 10 template class
Lisätiedotprivate TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;
Tietorakenteet, laskuharjoitus 7, ratkaisuja 1. Opiskelijarekisteri-luokka saadaan toteutetuksi käyttämällä kahta tasapainotettua binäärihakupuuta. Toisen binäärihakupuun avaimina pidetään opiskelijoiden
LisätiedotLoppukurssin järjestelyt C:n edistyneet piirteet
C! Loppukurssin järjestelyt C:n edistyneet piirteet 30.3.2017 Ohjelmassa Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Esikääntäjä Parametrilistat Funktio-osoittimet Kunniamainintoja Kuura
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Muuttujat eri muisteissa Ohjelman muistialueen layout Paikallisen ja globaalin muuttujan ominaisuudet Dynaamisen muistinkäytön edut Paikallisten muuttujien dynaamisuus ADT
LisätiedotMerkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:
Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin
Lisätiedot4. Luokan testaus ja käyttö olion kautta 4.1
4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään
LisätiedotLuokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.
1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).
LisätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero
Lisätiedot811312A Tietorakenteet ja algoritmit V Hash-taulukot ja binääriset etsintäpuut
811312A Tietorakenteet ja algoritmit 2018-2019 V Hash-taulukot ja binääriset etsintäpuut Sisältö 1. Hash-taulukot 2. Binääriset etsintäpuut 811312A TRA, Hash-taulukot, binääripuut 2 V.1 Hash-taulukot Käytetään
LisätiedotC++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:
C++ rautaisannos Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: # include #include main ( ) main (
LisätiedotTiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot
Tiedosto yhteenkuuluvien tietojen joukko, joka on tavallisesti talletettu pysyväismuistiin muodostuu tietueista, jotka voivat olla keskenään samanlaisia tai vaihdella tyypiltään tiedostot ovat joko tekstitiedostoja
LisätiedotKääreluokat (oppikirjan luku 9.4) (Wrapper-classes)
Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi
LisätiedotTietorakenteet, laskuharjoitus 3, ratkaisuja
Tietorakenteet, laskuharjoitus 3, ratkaisuja 1. (a) Toistolauseen runko-osassa tehdään yksi laskuoperaatio, runko on siis vakioaikainen. Jos syöte on n, suoritetaan runko n kertaa, eli aikavaativuus kokonaisuudessaan
LisätiedotOhjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:
1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri
LisätiedotOhjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.
Välikoe / 20.3 Vastaa neljään (4) tehtävään. Jos vastaat 5:een, 4 huonointa arvostellaan. Kunkin tehtävän vastaus eri konseptille. 1. Pöytätesti Pöytätestaa seuraava ohjelma. Tutki ohjelman toimintaa pöytätestillä
LisätiedotLuokan muodostimet (Constructors)
Mikä on muodostin? Luokan muodostimet (Constructors) Millaisia muodostimia on? Oletusmuodostin (Default Constructor) Parametrillinen muodostin Kopiointimuodostin (Copy Constructor) this-muuttuja Miten
LisätiedotRinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti
Rinnakkaisohjelmointi kurssi Opintopiiri työskentelyn raportti Opintopiiri: Heikki Karimo, Jesse Paakkari ja Keijo Karhu Päiväys: 15.12.2006 Ohjelmointitehtävä C i C i : Säikeet ja kriittisen vaiheen kontrollointi
LisätiedotInformaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006
TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa
Lisätiedotlähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa
Kekolajittelu Prioriteettijonolla toteutettu keko InsertItem ja RemoveMinElem: O(log(n)) Lajittelu prioriteettijonolla: PriorityQueueSort(lajiteltava sekvenssi S) alusta prioriteettijono P while S.IsEmpty()
LisätiedotTietorakenteet, laskuharjoitus 7,
Tietorakenteet, laskuharjoitus 7, 14.-19.3. 1. "Tira meets software engineering, osa 1" Lue luentomonisteen kalvot 233-236. Toteuta luokka Opiskelijarekisteri joka tarjoaa seuraavat palvelut: opiskelijoiden
LisätiedotMetodien tekeminen Javalla
1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.
LisätiedotPinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia
Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia Kukin alkio (viite) talletettuna solmuun (node) vastaa paikan käsitettä
Lisätiedot9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Pino Pinon määritelmä Pinon sovelluksia Järjestyksen kääntäminen Palindromiprobleema Postfix-lausekkeen laskenta Infix-lausekkeen muunto postfix-lausekkeeksi Sisäkkäiset funktiokutsut
LisätiedotJavan perusteita. Janne Käki
Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).
LisätiedotJava-kielen perusteita
Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja
LisätiedotTaulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu
Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on
Lisätiedotuseampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero
Alkioiden avaimet Usein tietoalkioille on mielekästä määrittää yksi tai useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero 80 op
LisätiedotModuli 5: Kehittyneitä piirteitä
C! : Kehittyneitä piirteitä 19.4.2016 Aikataulusta 5. harjoituskierroksen määräaika: pe 22.4. Maari-C keskiviikkoisin ja torstaisin (12-14) Ti 26.4. Harjoitustentti (eli kertausluento) Normaalin luennon
LisätiedotCS-A1140 Tietorakenteet ja algoritmit
CS-A1140 Tietorakenteet ja algoritmit Kierros 4: Binäärihakupuut Tommi Junttila Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Syksy 2016 Sisältö Binäärihakupuut Avainten lisääminen,
Lisätiedottietueet eri tyyppisiä tietoja saman muuttujan arvoiksi
tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi ero taulukkoon taulukossa alkiot samantyyppisiä tietueessa alkiot voivat olla erityyppisiä tiedot kuitenkin yhteen kuuluvia ohjelmoinnin perusteet,
LisätiedotRakenteiset tietotyypit Moniulotteiset taulukot
C! Rakenteiset tietotyypit Moniulotteiset taulukot 22.2.2018 Agenda Rakenteiset tietotyypit Vilkaisu 6. kierroksen tehtäviin Moniulotteiset taulukot Esimerkki Seuraava luento to 8.3. Ilmoittautuminen ohjelmointikokeeseen
LisätiedotLuokan sisällä on lista
1 Luokan sisällä on lista Luokan sisällä lista Listan sisältävä luokka Konstruktorit get-metodi Lista muissa metodeissa addxx-metodi Yksinkertainen pääohjelma Kertauksen List-luokan metodeja 1 Luokan sisällä
Lisätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:
LisätiedotSisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2
4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä
Lisätiedot812341A Olio-ohjelmointi Peruskäsitteet jatkoa
812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat
LisätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero
LisätiedotOperaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta
C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 5: Sijoituslause, SICP-oliot, tietorakenteen muuttaminen (mm. SICP 33.1.3, 3.33.3.2) Riku Saikkonen 6. 11. 2012 Sisältö 1 Muuttujan arvon muuttaminen:
LisätiedotOhjelmointi 2 / 2011 Välikoe / 25.3
Välikoe / 25.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään liittyvää tehtävää. Aikaa 4 tuntia.
Lisätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien
LisätiedotKierros 4: Binäärihakupuut
Kierros 4: Binäärihakupuut Tommi Junttila Aalto University School of Science Department of Computer Science CS-A1140 Data Structures and Algorithms Autumn 2017 Tommi Junttila (Aalto University) Kierros
LisätiedotSisältö. 22. Taulukot. Yleistä. Yleistä
Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä
Lisätiedot7. Näytölle tulostaminen 7.1
7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio
LisätiedotOhjelmointi 2, välikoe
Ohjelmointi 2, välikoe 21.3.2014 Vastaa neljään tehtävään kuudesta siten, että jokainen tehtävä tulee omalle konseptilleen. Mikäli vastaat useampaan kuin neljään tehtävään, pisteiden laskussa huomioidaan
Lisätiedot3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.
3. Hakupuut Hakupuu on listaa tehokkaampi dynaamisen joukon toteutus. Erityisesti suurilla tietomäärillä hakupuu kannattaa tasapainottaa, jolloin päivitysoperaatioista tulee hankalampia toteuttaa mutta
LisätiedotJava-kielen perusteita
Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa
LisätiedotSisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2
4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely
LisätiedotMuistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa
ssa ohjelman käytössä suoritusaikana oleva muisti jakautuu neljään osaan: koodisegmentti datasegmentti pinosegmentti (stack) kasa (heap) ssa ohjelman koodisegmentti sisältää käännetyn ohjelmakoodin sisältö
LisätiedotLista luokan sisällä
Lista luokan sisällä Luokan sisällä on lista Joukkue-luokka, joka sisältää listän joukkueen pelaajista Pelaaja Joukkueen metodit, jotka käyttävät listaa Ohjelmaluokka Luokan sisällä on lista Tarkoitta
LisätiedotHarjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:
Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int
LisätiedotOhjelmointi 1 / 2009 syksy Tentti / 18.12
Tentti / 18.12 Vastaa yhteensä neljään tehtävään (huomaa että tehtävissä voi olla useita alakohtia), joista yksi on tehtävä 5. Voit siis valita kolme tehtävistä 1 4 ja tehtävä 5 on pakollinen. Vastaa JOKAISEN
LisätiedotOlio-ohjelmointi Syntaksikokoelma
C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja
Lisätiedot1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )
Tehtävä do while + Viikko 1 Tehtävä 27. Salasana (MOOC) Viikko 1 Tehtävä 28. Lämpötilat (MOOC) Tehdään ohjelma, joka kysyy käyttäjältä lukua. Luku kerrotaan aina seuraavalla käyttäjän antamalla luvulla
Lisätiedot815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.
Lisätiedot