Tulostaminen ja esikatselu

Koko: px
Aloita esitys sivulta:

Download "Tulostaminen ja esikatselu"

Transkriptio

1 OSA V 521 LUKU LUKU Tulostamisen ja esikatselu toteuttaminen vakiosovellusrunkoa räätälöimällä Monisivuisten raporttien toteuttaminen Eri sivusuhteiden ja laitteiden mittojen käsitteleminen Tulostaminen suoraan Windowsiin ilman sovellusrunkoa

2 522 Laiteriippumattomuus Ennen Windowsia useista käyttöjärjestelmistä puuttuivat grafiikkatulostinohjaimet. Tästä syystä sovellusten kirjoittajien piti toteuttaa omaan sovellukseen tulostimien ohjaus. Näin jokaisella sovelluksella oli oma joukko suosittujen tulostimien ohjaimia, joka johti valtavaan määrään samanlaista työtä. Onneksi Windowsin piirtopintamalli mahdollistaa näyttöjen, tulostimien ja piirtureiden käsittelemisen suunnilleen samanlaisina piirtopintoina. Vielä parempaa on, että laiteohjain joudutaan kirjoittamaan vain kerran ja laitteen valmistaja tekee sen itse. Vakiosovellusrungon tulostustuki Tavallinen tulostus ja tulostuksen esikatselu saadaan ainoastaan SDI- ja MDI-sovelluksiin. Valintaikkunasovellukset joutuvat toteuttamaan sen itse. Kehittyneet dokumentti/näkymä-tekniikat Sovellusrungon toimintojen käyttö AddWizardin tekemät SDI- ja MDI-sovellusrungot ottavat käyttöön tulostuksen ja esikatselun toiminnot automaattisesti. Voit estää tämän poistamalla AppWizardin vaiheessa Step 4 valinnan Printing and Print Preview, mutta yleensä tulostukselle on sovelluksissa käyttöä, eikä se kasvata erityisesti koodia tai huononna sovelluksen suorituskykyä. Tulostuksesta huolehtivat suurelta osin piirtopinta sekä GDI (josta kerrottiin luvussa 15). Sovellusrunko esittelee sinulle piirtopinnan dokumentin sivun tulostamiseen; voit käsitellä sitä suunnilleen ikkunapiirtopinnan tavoin. KATSO MYÖS Lisätietoja SDI-sovellusrungosta luvusta 12. Yksityiskohtia piirtopinnoista luvusta 15. Oletustulostuksen käyttö SDI-sovellusrunko tukee kuvien tulostamista dokumentissa oleviin tietoihin perustuvista näkymistä. Koska nämä tiedot näkyvät jo sovelluksen näkymässä, voit todennäköisesti tulostaa tiedot muokkaamalla näkymään tuen tulostamiselle. Sovellusrunko kutsuu näkymässä OnDraw()-funktiotasi kuvan näyttämiseksi. Sille on olemassa vastaava OnPrint()-funktio, jota sovellusrunko kutsuu antaakseen näkymäsi käsitellä tietojen tulostamisen. Usein kyse on saman piirtokoodin käyttämisestä kuin OnDraw()- funktiossasi. Mikäli näin on, et joudu oikeastaan toteuttamaan OnPrint()-funktiota sovellusrunko tekee tämän automaattisesti CView-kantaluokassa ja kutsuu OnDraw()-funktiota. Tulostin käsittelee piirtokoodia aivan samoin kuin näytöllä tehtäisiin, koska se korvaa näyttöpiirtopinnan omalla tulostinpiirtopinnallaan. OnDraw()-funktiosi voi sitten tutkia, saiko se syötteenä tulostin- vai näyttöpiirtopinnan, vaikkei sillä ole juuri merkitystä toimivathan piirtofunktiot molemmissa tapauksissa aivan samoin. Pääset perehtymään vakiosovellusrungon tulostustoimintoihin luomalla tavallisen SDI-sovelluksen AppWizardilla. Jätä vaiheessa Step 4 Print and Print Preview asetus valituksi (voit siis napauttaa Finishpainiketta jo vaiheessa Step 1) ja anna projektin nimeksi PrintIt.

3 Ensiksi tarvitset jotain piirrettyä tulostettavaksi. Voit luoda testipiirroksen CPrintItView-luokan (tavallinen CView-luokka) OnDraw()-funktioon listauksen 22.1 mukaisesti. Ohjelma esittää ikkunassa viivapiirroksen keskellä suurikokoista tekstiä (kuva 22.1). Mitä piirretään, ei ole tärkeää pyrimme vain esittämään erot näytön ja tulosteen välillä. LISTAUS 22.1 LST22_1.CPP OnDraw-funktiossa piirretään testikuva 1 void CPrintItView::OnDraw(CDC* pdc) 2 { 3 CPrintItDoc* pdoc = GetDocument(); 4 ASSERT_VALID(pDoc); OSA V LUKU // TODO: add draw code for native data here 6 7 // ** Set metric mapping 8 pdc->setmapmode(mm_lometric); 1 9 // ** Declare and create a font 2.2cm high 10 CFont fnbig; 11 fnbig.createfont(220,0,0,0,fw_heavy,false,false,0, 12 ANSI_CHARSET,OUT_DEFAULT_PRECIS, 13 CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, 14 FF_SWISS+VARIABLE_PITCH,"Arial"); 1 Koordinaatiston kohdistustapa MM_LOMETRIC valitaan, joten loogiset koordinaatit vastaavat 0,1 millimetriä. 15 //** Select the new font and store the original 16 CFont* poldfont = pdc->selectobject(&fnbig); 17 //** Declare a client rectangle 18 CRect rcclient; 19 GetClientRect(&rcClient); 20 // ** Convert to logical units 21 pdc->dptolp(&rcclient); 22 // ** Set up some drawing variables 23 const int npoints = 50; 24 int xm = rcclient.width(); 25 int ym = rcclient.height(); 26 double daspw = xm/(double)npoints; 27 double dasph = ym/(double)npoints; 28 // ** Select a black pen 29 CPen* poldpen = (CPen*)pDC->SelectStockObject(BLACK_PEN); 30 // ** Draw the lines 31 for(int i=0;i<npoints;i++) 32 { 33 int xo = (int)(i * daspw);

4 524 Kehittyneet dokumentti/näkymä-tekniikat 34 int yo = (int)(i * dasph); 35 pdc->moveto(xo,0); 2 36 pdc->lineto(xm,yo); 37 pdc->lineto(xm-xo,ym); 38 pdc->lineto(0,ym-yo); 39 pdc->lineto(xo,0); 40 } 2 Nämä rivit piirtävät merkkijonon ja upean taustan. 3 Rivillä 48 piirretään ikkunan keskelle Sample Print -teksti. 41 // ** Reselect the old pen 42 pdc->selectobject(poldpen); 43 // ** Draw the text on top 44 pdc->settextalign(ta_center+ta_baseline); 45 pdc->setbkmode(transparent); 46 // ** Set grey text 47 pdc->settextcolor(rgb(64,64,64)); 48 pdc->textout(xm/2,ym/2,"sample Print"); 3 49 // ** Reselect the old font 50 pdc->selectobject(poldfont); 51 } KUVA 22.1 PrintIt-ohjelman testikuva ikkunassa.

5 OSA V LUKU Vaikka OnDraw()-funktiossa onkin paljon koodia, ei siinä tehdä erityisen ihmeellisiä asioita. Ikkunan työalueelle piirretään viivoja ja työalueen keskelle tekstiä. Huomaa rivillä 8 piirtotilan asettaminen MM_LOMETRIC:iin eli loogiset koordinaatit ovat millin kymmenesosia (tästä kerrottiin luvussa 15). Rivillä 11 luodaan 2,2 cm korkea fontti ja sillä piirretään esimerkkiteksti rivillä 48. Riveillä piirretään reuna-alueen kaunis viivakuvio työalueen koordinaattien perusteella. Voit itse tutkia yksityiskohdat, tässä luvussa tulemme keskittymään tulostamiseen. Käännettyäsi ja ajettuasi ohjelmaa koodin listauksen 22.1 muutosten tekemisen jälkeen pitäisi sovellusikkunassa näkyä kuvan 22.1 esittämä kuvio. Kuinka sitten saan tulostettua tämän kuvan? Yllättävän helposti, koska sovellusrunko yrittää tulostaa kuvan jo OnDraw()-funktiotasi kutsumalla syöttämällä sille tulostimen piirtopinnan näyttöikkunan sijaan. Kun valitset PrintIt-sovelluksen File-valikosta Print Preview komennon, näet kuvan pienenä vasemmassa yläkulmassa tekstin fontti on siinä hieman liian iso piirrokseen nähden. Tämä ei ole sovellusrungon syy se on tehnyt parhaansa, mutta piirtopinnan koordinaatit ovat väärät. Ongelman syy löytyy riviltä 19 GetClientRect()-funktiosta. Huomaa, että GetClientRect()-funktio on näkymäluokan ( View) jäsenfunktio, ei piirtopinnan. Ongelmaa ei synny ikkunapiirtopinnalla, koska se on ikkunan työalueen (client rectangle) kokoinen. Nyt sen sijaan syötät ikkunan työalueen koordinaatit tulostinpiirtopinnalle (joka vertailtaessa on pienempi), mutta luot 2,2 cm korkean fontin, joka on aina saman kokoinen (piirtotilasta johtuen). Koordinaatiston kohdistustapojen käyttö näytöllä Ohjelmaa ajettaessa saatat huomata, ettei fontti olekaan täsmälleen 2,2 cm korkea. Syy tähän on, että Windowsin on vaikea aina tietää kunkin monitorityypin tarkkoja mittoja (vaikka monitori olisikin määritelty oikein Ohjauspaneelin Näyttöasetuksissa). Tulostinohjaimilla on kuitenkin huomattavasti tarkempi tieto oikeasta koosta, joten tulostettuna fontin tulisikin olla täsmälleen 2,2 cm korkea. KATSO MYÖS Yksityiskohtia OnDraw()-funktion korvaamisesta luvusta 15. Lisätietoa viivan piirtämisestä luvusta 16. Lisätietoa tekstin piirtämisestä luvusta 17. OnPrint()-funktion korvaaminen Saat korjattua työalueen koordinaattiongelman syöttämällä oikeat koordinaatit tulostimelle ikkunan sijaan. Onneksi sovellusrunko kutsuu virtuaalifunktiota, jonka voit korvata näkymässäsi ja jolla voit hakea

6 526 Virtuaalifunktiot ja moniperintä (l. polymorfismi) Virtuaalifunktio on kantaluokassa määritelty funktio, joka usein toteuttaa oletustoiminnon. Kun kantaluokasta johdetaan luokka, se voi toteuttaa oman versionsa virtuaalifunktiosta ja tarjota erikoistuneemmat toiminnot. Aina funktiota kutsuttaessa, jopa kantaluokan osoittimella johdetun luokan olioon, kutsutaan johdetun luokan funktiota; tämä tekniikka on nimeltään virtuaalifunktion korvaaminen (virtual function overriding). Korvaava funktio voi sitten tarvittaessa kutsua korvattua kantaluokan versiota ja saada näin sen toiminnot käyttöönsä. Virtuaalifunktiot ovatkin eräs tärkeimpiä keinoja toteuttaa C++-olioihin olioihin moniperintä. Kehittyneet dokumentti/näkymä-tekniikat tarvitsemasi tiedot. Kuten aiemmin esitettiin, tämä funktio on nimeltään OnPrint() ja se on samankaltainen OnDraw()-funktion kanssa. Piirrettäessä ikkunaan kutsutaan OnDraw()-funktiota ja piirrettäessä tulostimelle kutsutaan OnPrint()-funktiota. Kuinka sitten tulostuksen esikatselussa käytettiin OnDraw()-funktion koodia? CView-luokan oletustoteutuksessa OnPrint() yksinkertaisesti kutsuu OnDraw()- funktiota tulostinpiirtopintaparametrillä. Oman OnPrint()-funktiosi ei ole pakko kutsua OnDraw()-funktiota voit koodata sen tekemään jotain täysin muuta. Useimmat sovellukset tosin joutuvat tulostamaan käyttäjän näkemän kuvan. Täissä sovelluksissa käytetään tulostettaessakin OnDraw()-funktion koodia tulostinpiirtopinnalle. OnPrint()-virtuaalifunktion korvaaminen 1. Napauta projektin työtilaikkunassa (Developer Studion vasemmanpuoleinen ruutu) ClassView-välilehteä. 2. Avaa projektin luokat napauttamalla ikkunan ylintä plusmerkkiä. 3. Napauta hiiren oikealla painikkeella luokkaa, johon haluat lisätä OnPrint()-korvaajafunktion (PrintIt- esimerkissä luokkaa CPrintItView) saadaksesi esiin pikavalikon. 4. Valitse Add Virtual Override komento ja saat esiin New Virtual Override ikkunan. CView-luokan OnPrintoletuskäsittelijän käyttäminen Huomaa, että Wizardin tekemässä OnPrint()-käsittelijässä kutsutaan CView-kantaluokan OnPrint()- funktiota. MFC-lähdekoodia tutkimalla selviää, kuinka sovellusrungon tulostustuki toimii automaattisesti. CView::OnPrint()-funktion koodi löytyy Visual C++-hakemiston alta.\mfc\src\viewcore.cpptiedostosta. CView::OnPrint() yksinkertaisesti kutsuu OnDraw()- käsittelijää välittäen sille pdcpiirtopintaosoittimen. 5. New Virtual Override luettelosta tulisi löytyä OnPrintvirtuaalifunktion. 6. Valitse se ja napauta Add and Edit painiketta OnPrint()- funktion muokkaamiseksi. OnPrint()-funktion vakiokorvaajafunktio näyttää tältä: void CPrintItView::OnPrint(CDC* pdc, CPrintInfo* pinfo) { // TODO: Add your specialized code here CView::OnPrint(pDC,pInfo); } Ensimmäinen huomattava OnDraw()-funktiosta poikkeava seikka on toinen parametri, osoitin CPrintInfo-olioon pinfo. Tästä oliosta löydät tiedot tulostusasetuksista, erityisesti etsimäsi tulostinpiirtopinnan koordinaatit. CPrintInfon jäsenmuuttujissa on runsaasti muutakin hyödyllistä tietoa. Osa näistä on esitetty taulukossa 22.1.

7 TAULUKKO 22.1 CPrintInfon tulostietomuuttujat OSA V LUKU Muuttuja m_ncurpage m_nnumpreviewpages m_rectdraw m_ppd m_bdirect m_bpreview m_strpagedesc m_lpuserdata Sisällön kuvaus Monisivuisessa tulostuksessa nykyinen sivu numero 1 tai 2, riippuen esikatselussa kerralla esitettä vien sivujen määrästä Tulostettavan sivun koordinaatit Osoittaa CPrintDialog-luokkaan, mikäli Printikkunaa (Tulosta) käytetään. TRUE, mikäli Print-ikkuna on ohitettu TRUE, mikäli kyseessä on tulostuksen esikatselu Sivunumeron näyttämisessä käytetty muotoilukoodi Osoitin, jota voidaan käyttää osoittamaan käyttäjän määräämiin tietoihin CPrintInfon muutamia muita jäseniä käsitellään vielä myöhemmin tässä luvussa, mutta aluksi joudut hakemaan tulostuksen työalueen koordinaatit, joita käytät ikkunan työalueen sijaan. Tällä hetkellä tulostettavan sivun koordinaatit ovat jäsenmuuttujassa m_rectdraw. Voit käyttää näitä koordinaatteja tulostinpiirtopinnan kanssa OnDraw()-funktiossa. Pieni ongelma on kuitenkin se, ettei OnDraw()- funktiossa päästä käsiksi koko olioon, vaan joudut kopioimaan koordinaatit CPrintItView-luokan jäsenmuuttujaan. Lisää seuraavat rivit funktioon työalueen koordinaattien tallentamista varten //TODO-kommenttien jälkeen, mutta ennen CView::OnPrint()-kutsua: // ** kopioi työalueen koordinaatit pinfosta if (pinfo) m_rcprintrect = pinfo->m_rectdraw; Tämä tallentaa tulostuksen työalueen CPrintItView-luokan m_rcprintrect-jäsenmuuttujaan. Joudut myös määrittelemän tämän muuttujan, mikä käy helposti napauttamalla CPrintItView-luokkaa hiiren oikealla painikkeella ja valitsemalla pikavalikosta Add Member Variable. Muuttujan tyyppi (Variable Type) on CRect ja määrittely (declaration) tietenkin m_rcprintrect. Saantioikeudeksi joudut asettamaan Private (yksityinen), koska muiden luokkien ei tarvitse tietää mitään näistä sisäisesti käytettävistä koordinaateista. Public-, private- ja protected-saantioikeudet Jokaiselle luokan jäsenmuuttujalle voidaan luokan määrittelyssä asettaa julkinen (public), yksityinen (private) tai suojattu (protected) saantioikeus. Tämä vaikuttaa siihen, kuinka muista luokista ja johdetuista luokista päästään käsiksi kyseisiin jäsenmuuttujiin ja - funktioihin. Private-tyyppinen käsittelyoikeus antaa pääsyn tiettyyn luokan jäseneen vain oman luokan jäsenille. Protected on sama kuin private lisäten käsittelyoikeuden johdettujen luokkien jäsenille. Näillä tekniikoilla C++ohjelmoijat voivat varmistaa tiedon turvallisuuden sallimalla olioiden käsittelyn ainoastaan julkisten (public) saantifunktioiden kautta. Tämä vaikeuttaa huomattavasti jäsenmuuttujan tai funktion käyttöä vahingossa ja estää näin ohjelman mahdollisen kaatumisen.

8 528 Kehittyneet dokumentti/näkymä-tekniikat KATSO MYÖS Lisätietoja näkymäluokista ja CView:istä luvusta 12. Tulostinpiirtopinnan käyttö OnPrint()-funktiolle välitetty piirtopinta poikkeaa näyttöpiirtopinnasta hieman: värejä saattaa olla vähemmän ja piirtopinta on luultavasti näyttöä suurempi. Näitä ominaisuuksia lukuun ottamatta voit piirtää sille aivan kuten näytöllekin. Seuraavaksi esitetään, kuinka voit piirtää samalla OnDraw()-funktiolla niin näytölle kuin tulostimellekin. Kantaluokan koodi CView::OnPrint()-funktiossa toimii juuri näin. Piirtopinnassa on lippu, josta saadaan IsPrinting()-funktiolla selville, ollaanko piirtämässä näyttö- vai tulostintyyppiselle piirtopinnalle. Tämän tiedon avulla voit muuttaa tulostuksen erilaiseksi kuin näytölle on piirretty tai tarkemmin sanoen muuttaa koordinaatit tulosteelle sopiviksi. Esimerkkiohjelmassa tämä tarkoittaa ainoastaan m_rcprintrectkoordinaattien käyttämistä OnDraw()-funktiossa. Listauksessa 22.2 on esitetty koodi, jossa päätetään IsPrinting()-funktion avulla, käytetäänkö ikkunan työalueen koordinaatteja vai tulostimen koordinaatteja. Tämän ohjelman tulostus esikatselussa näkyy kuvasta LISTAUS 22.2 LST22_2.CPP Tulostimen työalueen koordinaattien lisääminen OnDraw()-funktioon 1 Tämä rivi muuntaa laitekoordinaattienkuvapisteet loogisiksi 0,1 mm koordinaateiksi. 1 //** Declare a client rectangle 2 CRect rcclient; 3 4 // ** Check the device context for printing mode 5 if (pdc->isprinting()) 6 { 7 // ** Printing, so use the print rectangle 8 rcclient = m_rcprintrect; 9 } 10 else 11 { 12 // ** Not printing, so client rect will do 13 GetClientRect(&rcClient); 14 } // ** Convert to logical units 17 pdc->dptolp(&rcclient); 1

9 Huomaa listauksessa 22.2, että rivillä 5 kutsutaan IsPrinting()- funktiota if-lauseella. Funktio nimittäin palauttaa TRUE, jos kyseessä on tulostinpiirtopinta (tai esikatselu) ja FALSE muilta piirtopinnoilta. Mikäli kyseessä on tulostinpiirtopinta, rcclient-muuttujaan sijoitetaan aiemmin talletetut tulostimen työalueen koordinaatit (rivi 8) ja ikkunapiirtopinnan koordinaatit puolestaan saadaan tutulla GetClientRect()-funktiolla (rivi 13). Koska olet käyttänyt oletuksesta poikkeavaa koordinaatiston kohdistustapaa (mapping mode), joudut muuttamaan sekä tulostinettä näyttöpiirtopinnan koordinaatit laitekoordinaateista loogisiksi koordinaateiksi. Tämä tehdään rivillä 17 DPtoLP()-funktiolla. Kun lisäät ja muokkaat OnDraw()-funktioosi listauksen rivit 4 14 ja käännät ja ajat sovelluksesi, voit käyttää tulostuksen esikatselua (preview) kuten aiemminkin, mutta paremmin tuloksin (kuva 22.2). OSA V LUKU KUVA 22.2 Tulostuksen esikatselu oikeilla tulostettavan sivun työalueen koordinaateilla KATSO MYÖS Lisätietoja piirtotiloista luvusta 15.

10 530 Laitteiden sivusuhteet Useimpien tulostimien sivusuhde lienee 1:1, mutta esimerkiksi vanhempien faksien lämpökirjoittimissa saattaa sivusuhteessa olla näkyvä ero. 1 Lasketaan ikkunan ja tulostimen sivun leveyksien ja korkeuksien suhteet. 2 Tällä rivillä lasketaan tulostimen oma sivusuhde laiteominaisuuksien tietojen (device caps) mukaan. Kehittyneet dokumentti/näkymä-tekniikat Sivusuhteen säilyttäminen Kuten kuvasta 22.2 näet, tulee kuva paperille muodoltaan vääristyneenä, koska paperi on korkeampi ja kapeampi kuin näyttö. Leveyden ja korkeuden suhdetta kutsutaan sivusuhteeksi (aspect ratio). Jos haluat estää kuvan venymisen suuntaan tai toiseen, joudut säilyttämään saman sivusuhteen kuin näytöllä. Listauksen 22.2 koodi ei vielä huomioi sivusuhdetta, mikä toki sopii toisiin sovelluksiin, joten joudut lisäämään koodia tulostusta varten. Parasta tässä tapauksessa on täyttää paperin koko leveys tai korkeus kuvalla ja sitten lyhentää toista näistä sivusuhteen säilyttämiseksi. Tätä varten tarvitset tietoa paperin koosta ja sen sivusuhteesta. Saat nämä selville (ja paljon muutakin) GetDeviceCaps()-funktiolla. Kun syötät funktiolle ASPECTX- ja ASPECTY-liput, saat selville kuvapisteen leveyden ja korkeuden suhteen. Mikäli suhde on 1:1, kuvapiste on neliön muotoinen, muutoin ei ole ja sivusuhde saattaa poiketa näytön sivusuhteesta. Jos sivusuhde ei ole sama, voit selvittää, saatko näytön sivusuhdetta käyttäen suuremman kuvan vaaka- vai pystysuuntaista kokoa muuttamalla. Näin vältät kuvan vääristymisen. Tarkoitukseen sopiva OnDraw()-funktion koodi on esitetty listauksessa LISTAUS 22.3 LST22_3.CPP Suurimman tulosteen tekeminen sivusuhde säilyttäen 1 //** Declare a client rectangle and get the client rect 2 CRect rcclient; 3 GetClientRect(&rcClient); 4 5 // ** Check the device context for printing mode 6 if (pdc->isprinting()) 7 { 8 // ** Find the Print width : Window width ratio 9 double dwidthratio = (double)m_rcprintrect.width() 10 /(double)rcclient.width(); // ** Find the Print height : Window height ratio 13 double dheightratio = (double) 1 14 m_rcprintrect.height()/(double)rcclient.height(); // ** Calculate the device's aspect ratio 17 double daspect=(double)pdc-> GetDeviceCaps(ASPECTX) 18 /(double)pdc->getdevicecaps(aspecty); // ** Find the new relative height

11 OSA V LUKU int nheight = (int)(rcclient.height() * 22 dwidthratio * daspect ); // ** Find the new relative width 25 int nwidth = (int)(rcclient.width() * 26 dheightratio * (1.0 / daspect) ); // ** Set the whole rectangle 29 rcclient = m_rcprintrect; // ** Determine the best fit, across or down the page 32 if (nheight > nwidth) 3 33 { 34 // ** Down is best, so adjust the width 35 rcclient.bottomright().x = 36 m_rcprintrect.topleft().x + nwidth; 37 } 38 else 39 { 40 // ** Across is best, so adjust the height 41 rcclient.bottomright().y = 42 m_rcprintrect.topleft().y + nheight; 43 } 44 } // Convert to logical units 47 pdc->dptolp(&rcclient); 3 Kun tiedetään, onko tulostusalue leveä vai korkea, saadaan paperi hyödynnettyä parhaiten ja kuva saadaan suurimpaan mahdolliseen kokoon. Huomaa, että sekä näytölle että tulosteeseen piirrettäessä käytetään GetClientRect()-funktiolla haettuja koordinaatteja (rivi 3). Näyttöä käsiteltäessä tämä riittääkin ja koodi jatkuu aivan normaalisti. Jos rivin 6 IsPrinting()-testi palauttaakin TRUE, tapahtuu paljonkin. Aluksi joudutaan selvittämään ikkunan leveyden suhde paperin leveyteen ja ikkunan korkeuden paperin korkeuteen. Nämä löytyvät riveiltä 9 ja 13, joilla paperin mitat jaetaan ikkunan mitoilla. Seuraavaksi päästään laitteen oman sivusuhteen laskemiseen. Funktiolta GetDeviceCaps() saadaan rivillä 17 laskettua itse laitteen leveyden ja korkeuden suhde; tämä tallennetaan muuttujaan daspect. Saaduilla luvuilla voidaan nyt laskea laitteen suhteellinen leveys ja korkeus vastaavaan ikkunan suhteen (rivit 21 ja 25). Tässä laskennassa, jossa on käytetty apuna laitteen sivusuhdetta, saadaan koko sivun leveyteen mitoitettu korkeus tai päinvastoin. Nyt joudutaan päättämään, saadaanko kuva sopimaan sivulle täysilevyisenä ja korkuisena ja sen jälkeen muuttamaan toisen suunnan mittaa. Rivin 32 ehto tekee tämän päätöksen sen mukaan, onko leveys vai korkeus suurempi. Jos Yleisiä sovellusten tulostusasetuksia Monet graafiset sovellukset tarjoavat useita sivusuhteeseen liittyviä valintoja. Esimerkkiohjelmassa on toteutettu valinta Best Fit eli haetaan parhaiten sivulle sopiva asettelu. Toinen yleinen valinta on Sovita Sivulle (Fit To Page), jolloin kuva venytetää koko arkin kokoiseksi (ja sivusuhde vääristyy). Voit törmätä myös valintaan Original Image Size, jolloin kuva esitetään (usein sivun keskellä) näytöllä käytetyssä koossa oikealla sivusuhteella, mutta varsinkin korkearesoluutioisilla tulostimilla tulos saattaa olla liian pienikokoinen.

12 532 Kehittyneet dokumentti/näkymä-tekniikat siis ikkuna on korkea ja kapea, kannattaa käyttää paperin koko korkeutta ja muuttaa leveyttä ja vastaavasti matalan ja leveän ikkunan kanssa on käytettävä koko leveyttä ja muutettava korkeutta. Riippuen valinnasta oikean alakulman x- tai y-koordinaattia muutetaan leveyden tai korkeuden asettamiseksi (rivit 35 ja 42). Huomaa, että muut koordinaatit asetetaan paperin mukaan muuttujaan rcclient (rivi 29), jonka jälkeen muutettava koordinaatti on ainoa tarvittava muutos. Tämän osan jälkeen funktiossa piirretään juuri asetetut työalueen mittojen mukaan. Kun käännät ja ajat sovelluksen listauksen 22.3 rivien OnDraw()- funktioon lisäämisen jälkeen, tulisi tulostuksen esikatseluikkunassa näkyä nyt kuvan sivusuhde samana kuin näytöllä ikkunassakin. Jos muutat ikkunan korkeaksi ja kapeaksi, tulostuksessa käytetään hyväksi paperin koko korkeus eikä koko leveyttä, mutta sivusuhde pysyy silti oikeana. KATSO MYÖS Yksityiskohtia GetDeviceCaps()-funktiosta luvusta 15. Yhden kuvan tulostaminen usealle sivulle Joskus yksi kuva halutaan jakaa tulostettaessa useammalle sivulle. Tätä varten joudutaan piirtämään osa kuvasta kunkin sivun piirtopinnalle. CScrollView-luokasta on tässä apua, koska se tarjoaa funktion ScrollToPosition() ja sallii mittakaavan muuttamisen. Tulostinpiirtopinnan valmistelu ja kohdistaminen sivujen välillä vaatii lisäksi hieman työtä. Sivutus ja paperin suunta Yhden sivun tulostaminen ikkunanäkymän mukaan on yleinen vaatimus, mutta usein tulostuksessa käsitellään laajojen ja mutkikkaiden monisivuisten dokumenttien tulostamista. Sovellusrunko tulee tässäkin apuun tarjoamalla yleisen Print Setup -valintaikkunan (Tulosta) sekä sivunumerointijärjestelmän tiettyjen sivujen esikatselua ja tulostamista varten. Ensimmäisen ja viimeisen tulostettavan sivun asettaminen Monisivuista dokumenttia tulostettaessa tulee aluksi selvittää, mitkä sivut tulostetaan samalla selviää myös tulostettavien sivujen lukumäärä. Tulostamisen alkaessa sovellusrungossa kutsutaan ensin näkymäluokan virtuaalifunktiota OnPreparePrinting(). Funktio saa yhden parametrin, CPrintInfo-olion pinfo. Tämä on ensimmäinen tilaisuus päästä käsiksi CPrintInfo-olioon ja esimerkiksi muuttaa tulostusasetuksia. AppWizard tekee automaattisesti OnPreparePrinting()-käsittelijän SDI-sovellusta luodessaan, joten et joudu lisäämään sitä itse. Saat esiin oletustoteutuksen kaksoisnapauttamalla CPrintItView-näkymäluokkasi

13 OnPreparePrinting()-jäsentä ClassView-sivulla. Sen pitäisi näyttää tältä: BOOL CPrintItView::OnPreparePrinting(CPrintInfo* pinfo) { // default preparation return DoPreparePrinting(pInfo); } Oletuksena kutsutaan DoPreparePrinting()-funktiota, jolle syötetään CPrintInfo-olio pinfo. DoPreparePrinting()-funktio alustaa tulostinpiirtopinnan ja kutsuu tulostettaessa (ei siis esikatselussa) Printvalintaikkunaa. Tätä valintaikkunaa käsitellään tarkemmin seuraavassa kappaleessa, mutta aivan ensiksi voisit asettaa tulostettavat sivut muokkaamalla CPrintInfo-oliota ennen DoPreparePrinting()- funktion kutsumista. Lisää tätä varten seuraavat rivit ennen // default preparation kommenttia: OSA V LUKU pinfo->setminpage(2); pinfo->setmaxpage(8); Nämä kaksi CPrintInfo-luokan jäsenfunktiota muokkaavat pinfon osoittamaa CPrintInfo-oliota asettamaan aloitussivun (SetMinPage():n avulla) numeroksi 2 ja viimeisen tulostettavan sivun numeroksi 8 (SetMaxPage():lla). Nyt dokumenttia tulostettaessa kutsutaan OnPrint()-funktiota seitsemän kertaa. Ainoa ero kutsuissa on pinfo->m_ncurpagejäsenmuuttujan arvo, joka saa sen hetkisen tulostettavan sivun numeron (tässä arvot 2 8). Sivunumeroiden (ja sivumäärän) määrittäminen riippuu aina sovelluksesta. Jos sovelluksestasi halutaan tulostaa CD-levyjen myyntiluettelo, on luonnollista, jos kullakin sivulla on kuvaus yhdestä levystä sekä levyn kansikuva. Tällöin 120 levyn valikoimasta saataisiin 120 sivun tuloste. Jos sovelluksesta tulostetaan hyvin erilaisia osia - kuten lomakkeita, kuvia, erikokoista tekstiä sisältäviä dokumentteja, joudutaan osien korkeudet mittaamaan ja päättelemään sillä perusteella, minkä verran tietoa sivulle sopii ja kuinka paljon sivuja kertyy. Oli miten oli, kun sivujen lukumäärä on tiedossa, se voidaan asettaa CPrintInfo-olioon OnPreparePrinting()-funktiossa. Voit tutustua pelkän näyttöikkunan ja kokonaisen asiakirjan tulostamisen eroihin tekemällä täysin oman OnPrint()-funktion toteutuksen listauksen 22.4 mukaisesti. Tässä OnPrint()-funktiossa ei kutsuta Print-valintaikkunan ohittaminen tulostettaessa Aina ei käyttäjää haluta vaivata Print-valintaikkunalla; se voidaan ohittaa asettamalla OnPreparePrinting()-käsittelijässä pinfo->m_bdirect-muuttuja arvoon TRUE.

14 534 Kehittyneet dokumentti/näkymä-tekniikat kantaluokan CView::OnPrint()-funktiota eikä näin ollen OnDraw()- käsittelijää. Tässä toteutuksessa näytössä on aivan eri kuva kuin tulostuksessa. LISTAUS 22.4 LST22_4.CPP Sivun tulostuksen toteutus OnPrint()-funktiossa 1 Luodaan 72 pisteen fontti CreatePointFont()-funktiolla. 2 Haetaan nykyinen sivunumero CPrintInfo-oliosta. 3 Asetetaan taustakulmiota varten pisteet taulukkoon. 4 Piirretään teksti, jossa on nykyinen sivunumero. 1 void CPrintItView::OnPrint(CDC* pdc, CPrintInfo* pinfo) 2 { 3 // TODO: Add your specialized code here 4 5 // ** Create and select the font 6 CFont fntimes; 7 fntimes.createpointfont(720,"times New Roman",pDC); 1 8 CFont* poldfont = (CFont*)pDC->SelectObject(&fnTimes); 9 10 // ** Create and select the brushe 11 CBrush brhatch(hs_cross,rgb(64,64,64)); 12 CBrush* poldbrush = 13 (CBrush*)pDC->SelectObject(&brHatch); // ** Create the page text 16 CString strdoctext; 17 strdoctext.format("page Number %d", 18 pinfo->m_ncurpage); pdc->settextalign(ta_center+ta_baseline); // ** Set up some useful point objects 23 CPoint ptcenter = pinfo->m_rectdraw.centerpoint(); 24 CPoint pttopleft = pinfo->m_rectdraw.topleft(); 25 CPoint ptbotright = pinfo->m_rectdraw.bottomright(); // ** Create the points for the diamond 28 CPoint ptpolyarray[4]= 29 { 30 CPoint(ptTopLeft.x,ptCenter.y), 3 31 CPoint(ptCenter.x,ptTopLeft.y), 32 CPoint(ptBotRight.x,ptCenter.y), 33 CPoint(ptCenter.x,ptBotRight.y) 34 }; // ** Draw the diamond 37 pdc->polygon(ptpolyarray,4); // ** Draw the text 40 pdc->textout(ptcenter.x,ptcenter.y,strdoctext); // ** Unselect the fonts 43 pdc->selectobject(poldfont); 44 pdc->selectobject(poldbrush); 45 }

15 OSA V LUKU Listauksen 22.4 riveillä 6 12 asetetaan tulostuksen tarvitsemat resurssit (fontti ja sivellin). Huomaa, että tähän tarkoitukseen löytyy parempikin paikka, kuten tässä luvussa myöhemmin esitetään. Voit hyödyntää tulostettavan sivun numeroa eri tekstin tulostamiseksi sivun sijainnin mukaan (rivi 17). Oikeassa sovelluksessa sivunumeron perusteella ehkä paikannettaisiin dokumentissa olevaa tietoa. Aiemmin mainitussa CD-myyntiluettelo esimerkissä sivunumero saattaisi suoraan viitata tiettyyn CD-levyyn ja piirtofunktiot voisivat hyödyntää tuota tietoa. Näin monimutkaiseen esimerkkiin ei tässä ole tilaa, joten tyydymme omassa esimerkissämme ainoastaan tulostamaan sivunumeron pinfo->m_ncurpage muuttujasta. Riveillä asetetaan taustalle piirrettäväksi salmiakkikuvio ja rivillä 40 piirretään sivun keskelle tekstiä. Riveillä valitaan takaisin käyttöön entinen sivellin (brush) ja fontti. Kun käännät ja ajat sovelluksen OnPrint()-funktioon tekemiesi muutosten jälkeen ja valitset sovelluksen File-valikosta Print Preview, pääset esikatselemaan useita sivuja kuvassa 22.3 esitetyillä Next Page ja Prev Page painikkeilla. Jos koneeseesi on kytketty tulostin, voit myös tulostaa monisivuisen dokumentin. MFC:n tulostuksen esikatselun toteutus MFC-sovellusrunko toteuttaa tulostuksen eskatselun (print preview) käyttäen dokumentoimatonta luokkaa CPreviewDC. Tämä erikoispiirtopinta toimii sovellukselle tulostinpiirtopinnan tavoin, mutta piirtääkin kuvan näytölle tavallisen näyttöpiirtopinnan tapaan. Tämä on välttämätöntä tulostinkohtaisten seikkojen, kuten sivutuksen mallintamiseksi. Vaikka luokka on dokumentoimaton, voit tutkia CPreviewDC:n lähdekoodia Visual C++-hakemiston alta tiedostosta MFC\SRC\DCPREV.CPP. KUVA 22.3 Monisivuisen dokumentin esikatselutulostus (Print Preview).

16 536 Kehittyneet dokumentti/näkymä-tekniikat KATSO MYÖS Lisätietoja objektien valitsemisesta piirtopinnalle luvusta 15. Lisätietoja eri sivellintyypeillä piirtämisestä luvusta 16. Collate-valintaruutu Jos käyttäjä poistaa Collatevalinnan (Lajittele) Printvalintaikkunassa, tulostinohjain kerää automaattisesti samat sivut päällekkäin. Tätä toimintoa varten ei jouduta lisäämään koodia, mutta tulostinohjaimen on tuettava sitä - muuten valinta poistetaan käytöstä Printvalintaikkunassa. Print-valintaikkunan käyttö Huomaa, että monisivuista dokumenttia tulostaessasi saat ensin esiin valintaikkunan, josta voit muokata tulostusasetuksia (kuva 22.4). Tämä on tavallinen Print-valintaikkuna (Tulosta), jota kutsutaan OnPreparePrinting()-korvaajafunktion kutsumasta CView::DoPreparePrinting()-funktiosta. Tässä ikkunassa voit määrittää tulostettavan sivualueen, kopioiden määrän, lajitteluvalinnan (Collate), kohdetulostimen ja koko joukon tulostinkohtaisia asetuksia. KUVA 22.4 Tavallinen Print-valintaikkuna. Käyttäjä voi muuttaa tulostusasetuksia tästä valintaikkunasta, joka sitten päivittää muutokset CPrintInfo-olioon ennen sen välittämistä sovelluksellesi. Voit halutessasi muokata tätä valintaikkunaa enemmän tai vähemmän, riippuen tarvittavasta sovelluskohtaisesta räätälöinnistä ja työhön käytettävästä ajasta. Palautapa nyt mieleen taulukon 22.1 esittämä CPrintInfo-luokan m_ppd-osoitin. Tämä osoittaa Print-valintaikkunan MFC-kirjastossa paketoivaan CPrintDialog-luokkaan. Tässä luokassa puolestaan on

17 OSA V LUKU m_pd-jäsen, joka on PRINTDLG-tietorakenne, jossa olevat oletusasetukset näytetään Print-valintaikkunassa. Tässä tietorakenteessa on varsin monta jäsentä, kuten listaus 22.5 osoittaa. Tämän tietorakenteen avulla voit muokata Print-valintaikkunan oletusasetuksia täysin mielesi mukaisiksi ja voit jopa vaihtaa (haasteita halutessasi) koko valintaikkunapohjan. Tässä en aio kertoa kaikista tietorakenteen jäsenistä yksityiskohtaisesti, mutta ainakin eräs merkittävä jäsen on ncopiesjäsenmuuttuja. Jos muutat suoraan tietorakenteen ncopies-jäsenen arvoa ennen CView::DoPreparePrinting()-funktion kutsumista, saat muutettua tulostettavien kopioiden määrää. Lisää tätä varten seuraava rivi OnPreparePrinting()-funktioosi: DevMode-tietorakenteen käyttö DevMode-tietorakenteessa on useita hyödyllisiä attribuutteja, jotka kertovat laitteen teknisistä ominaisuuksista ja konfiguraatiosta. Osoitin tämän tietorakenteeseen saadaan CPrintDialog-luokan GetDevMode()-funktiolla. pinfo->m_ppd->m_pd.ncopies = 15; Kun avaat tämän rivin lisäämisen (ja tiedoston kääntämisen) jälkeen Print-valintaikkunan, on tulostettavien kopioiden oletusmäärä 15 (jos tulostimesi sallii usean kopion tulostamisen). Vastaavasti voit muuttaa muitakin PRINTDLG-tietorakenteen jäseniä. LISTAUS 22.5 LST22_5.CPP PRINTDLG-tietorakenne 1 typedef struct tagpd { 2 DWORD lstructsize; 3 HWND hwndowner; 4 HANDLE hdevmode; 5 HANDLE hdevnames; 6 HDC hdc; 7 DWORD Flags; 8 WORD nfrompage; 9 WORD ntopage; 10 WORD nminpage; 11 WORD nmaxpage; 12 WORD ncopies; 13 HINSTANCE hinstance; 14 DWORD lcustdata; 15 LPPRINTHOOKPROC lpfnprinthook; 1 16 LPSETUPHOOKPROC lpfnsetuphook; 17 LPCTSTR lpprinttemplatename; 18 LPCTSTR lpsetuptemplatename; 19 HANDLE hprinttemplate; 20 HANDLE hsetuptemplate; 21 } PRINTDLG; 1 Tietorakenteen kuuden viimeisen jäsenen avulla voidaan muokata Print-valintaikkuna oman mallin mukaiseksi. Tämä on hyvin kehittynyt ominaisuus, jolla saadaan sovelluksen käyttäjälle esittämä käyttöliittymä täysin haltuun. Käyttäjän kuitattua Print-valintaikkunan OK:lla saat luettua muutokset taulukossa 22.2 esitetyillä CPrintDialog-luokan saantifunktioilla. Jos esimerkiksi haluat lukea käyttäjän asettaman kopioiden määrän ennen varsinaista tulostamista, saat sen CView::DoPreparePrinting()-funktion palautettua sen (listaus 22.6).

18 538 Kehittyneet dokumentti/näkymä-tekniikat Luonnollisesti voit tutkia suoraan myös pinfo->m_ppd->m_pd:n osoittaman PRINTDLG-tietorakenteen jäseniä suoraan. TAULUKKO 22.2 CPrintDialogin saantifunktiot Funktion nimi GetCopies() GetFromPage() GetToPage() GetPortName() GetDriverName() GetPrinterDC() PrintAll() PrintCollate() PrintRange() PrintSelection() Kuvaus Palauttaa käyttäjän asettaman kopioiden määrän Palauttaa asetetun aloitussivun Palauttaa asetetun lopetussivun Palauttaa valitun tulostinportin, esimerkiksi LPT1: Palauttaa valitun tulostinajurin nimen (kohdetulostimen) Palauttaa tulostinpiirtopinnan Palauttaa TRUE, jos tulostettavaksi on valittu kaikki sivut Palauttaa TRUE, jos käyttäjä haluaa tulostuksen lajiteltuna (Collate) Palauttaa TRUE, jos tulostettava sivualue (range) on määritelty Palauttaa TRUE, jos halutaan tulostettavan sivuilta valittu alue LISTAUS 22.6 LST22_6.CPP Määrätyn kopiomäärän varmentaminen tavallisesta Print-valintaikkunasta 1 Käyttäjä joudutaan päästämään ulos silmukasta Cancelpainikkeen napautuksella, muuten ei anneta muita vaihtoehtoja kuin tulostaminen. 2 Tämä epänormaali ehto jättää käyttäjän silmukkaan, jos tulostettavia kopioita on 5 tai vähemmän. Tämän tarkoitus on havainnollistaa Print-valintaikkunassa syötettyjen tietojen varmennusta. 1 BOOL CPrintItView::OnPreparePrinting(CPrintInfo* pinfo) 2 { 3 pinfo->setminpage(1); 4 pinfo->setmaxpage(10); 5 6 pinfo->m_ppd->m_pd.ncopies = 3; 7 8 do 9 { 10 // ** Check if user has cancelled print 11 if (DoPreparePrinting(pInfo) == FALSE) 1 12 return FALSE; // ** Warn the user if too many copies are specified 15 if (pinfo->m_ppd->getcopies()>5) 16 AfxMessageBox("Please choose less than 5 copies"); // ** Keep looping until they specify a valid number 19 } while(pinfo->m_ppd->getcopies()>5); 2 20 return TRUE; 21 }

19 Listauksessa 22.6 funktio CView::DoPreparePrinting() palauttaa FALSE, jos käyttäjä on painanut Cancel-painiketta (rivit 11 ja 12). Muussa tapauksessa rivillä 15 tarkistetaan tulostettavien kopioiden määrä ja käyttäjälle annetaan varoitus, mikäli kopioita halutaan yli 5 (tämä luku on otettu hatusta ). Silmukkaa toistetaan (rivi 19), kunnes käyttäjä syöttää sopivan määrän tai painaa Cancel-painiketta. OSA V LUKU Pysty- ja vaakasuuntainen tulostus Jos valitset sovelluksen File-valikosta Print Setup, voit muuttaa tulostuksen suunnan oletusarvoa. Vaihtoehdot ovat Portrait (pysty) ja Landscape (vaaka). Vaakasuuntaista tulostamista varten et joudu tekemään muutoksia koodiin; jos valitset tämän suunnan (orientation) esikatseluikkunassa, näet välittömästi paperin vaakasuuntaan asetettuna. Kun sovelluksesi vain käyttää CPrintInfo-luokan rectdraw-jäsentä, hoituu vaakasuuntainen tulostuskin automaattisesti. GDI-objektien lisääminen OnBeginPrinting()- funktiolla Kuten aiemmin mainittiin, listauksen 22.4 koodi kyllä toimii, mutta sen resurssien varaamisen voisi tehdä paremminkin. Tämän hetkisessä koodissamme jokaista sivua tulostettaessa kutsutaan OnPrint()- funktiota ja kaikki varataan aina alusta pitäen. Tässä yksinkertaisessa tulostuksessa sovelluksen hidastumista tuskin huomaa, mutta suuremmissa raporteissa halunnet varata resurssit ja suorittaa tarvittavat laskutoimitukset ainoastaan kerran raportin tulostuksen alussa. Tämän jälkeen voit tulostaa sivut ja vapauttaa resurssit raportin lopussa. Ihanteellinen alustuspaikka näille on OnBeginPrinting()- virtuaalifunktio ja resurssien vapauttamiseen vastinpari OnEndPrinting()-funktio. OnBeginPrinting()-funktiota kutsutaan OnPreparePrinting()-funktion jälkeen ja se on ensimmäinen paikka, jossa tulostinpiirtopinta on käytettävissä. Kyseinen piirtopinta on sama kuin tulostettaessa käytettävä, joten voit alustaa kaikki GDI-objektit sekä tulostettavan sivun koordinaatit tässä vaiheessa. AppWizardin automaattisesti luomassa koodissa funktio on vielä tyhjä: Eri paperikoot Käyttäjä voi määrittää eri paperikokoja kirjekuorikoosta A3- kokoon asti. Näiden valintojen käsittelemiseksi ei tarvita toimenpiteitä, koska Windows muuttaa sovelluksellesi välitetyn piirtopinnan automaattisesti valitun paperin kokoiseksi. CPrintInfo-olion rectdrawjäsenmuuttujassa on piirtopinnan kokoa esittävät koordinaatit. void CPrintItView::OnBeginPrinting(CDC* /*pdc*/, CPrintInfo* /*pinfo*/) { // TODO: add extra initialization before printing }

20 540 Kehittyneet dokumentti/näkymä-tekniikat Katsopa funktion määrittelyä erityisen tarkasti: funktiolle välitetyt parametrit on kommentoitu, joten tulet saamaan niistä käännettäessä virheilmoituksia. Muista siis poistaa kommentit ennen parametrien käyttöä. Nyt voit lisätä tähän funktioon GDI-objektien luontikutsut, jolloin et joudu tekemään samaa enää jokaiselle tulostettavalle sivulle erikseen: m_fntimes.createpointfont(720, Times new Roman,pDC); m_brhatch.createhatchbrush(hs_cross,rgb(64,64,64)); Huomaa, että fntimes ja brhatch-objektien nimissä on etuliite m_, joka viittaa objektien kuuluvan luokkaan (toteutus on luokan sisällä) eikä olevan yleisesti saatavilla (toteutus funktiossa). Koska joudut käsittelemään näitä GDI-objekteja OnPrint()-funktiosta, voit lisätä ne luokan määrittelyyn. Lisää siis luokan määrittelyyn fontti- ja sivellinobjektit: Tulostaminen väreissä ja mustavalkoisena Huomaa, että RGB(64,64,64)- makron antama COLORREF-arvo asettaa siveltimen tummanharmaaksi. Useimmat mustavalkotulostimet pystyvät käsittelemään eri harmaan sävyt varsin hyvin ditherointitekniikalla (värejä sekoittamalla). Voit myös määrittää käytettäväksi oikean 24- bittisen TrueColor-värin COLORREF-arvon; piirtopinta muuntaa värin automaattisesti lähimmäksi tulostimella tarjolla olevaksi väriksi. Väritulostimet saatavat pystyä esittämään annetun värin, mutta mustavalkotulostimet muuttavat sen harmaan sävyksi. protected: CFont m_fntimes; CBrush m_brhatch; Saat lisättyä rivit joko kaksoisnapauttamalla ClassView-sivulla CPrintItView-luokkaa ja lisäämällä rivit suoraan tai käyttämällä Add Member Variable valintaikkunaa. Huomaa myös, että kuviosivellin (hatched brush) luodaan CreateHatchBrush()-funktiolla eikä muodostinfunktiolla. Syy tähän on, että sivellin on olemassa yhtä kauan kuin näkymäkin, vaikka joudutkin kutsumaan OnEndPrinting()-funktion lopussa DeleteObject()-funktiota alla olevan GDI-resurssin vapauttamiseksi tulostuksien välillä. Voit siis lisätä sekä GDI-fonttiobjektin että sivellinobjektin tuhoavan koodin OnEndPrinting()-funktioon näin: m_fntimes.deleteobject(); m_brhatch.deleteobject(); Jäljelle jää vielä paikallisten GDI-objektien poistaminen OnPrint()- funktiosta ja niiden viittausten korvaaminen viittauksilla jäsenmuuttujaversioihin. Tämä käy korvaamalla paikalliset CFonttyyppinen fntimes ja CBrush-tyyppinen brhatch-muuttujat ja niiden luontifunktiot aiemmin luodun fontin ja siveltimen valinnalla: CFont* poldfont = (CFont*)pDC->SelectObject(&m_fnTimes); CBrush* poldbrush = (CBrush*)pDC- >SelectObject(&m_brHatch); Jos käännät ja ajat sovelluksen näiden muutosten tekemisen jälkeen, et todennäköisesti huomaa sovelluksen toiminnassa mitään eroa. Periaat-

Hiirisanomiin vastaaminen

Hiirisanomiin vastaaminen OSA II LUKU 8 163 8 LUKU Reagointi käyttäjän painaessa tai vapauttaessa hiiren painikkeen Omien funktioiden käyttö, kun hiiri liikkuu Hiirikoordinaattien käsittely ja valitun alueen tutkiminen 164 Näppäinpainallusten

Lisätiedot

ASIAKASOHJE. 1.1 Ajurin asennus & konfigurointiohje: 1. Kirjoita AutoCadin komentoriville _plottermanager ja paina Enter

ASIAKASOHJE. 1.1 Ajurin asennus & konfigurointiohje: 1. Kirjoita AutoCadin komentoriville _plottermanager ja paina Enter Tulostinajurin ja paperikoon konfigurointiohjeet AutoCad 2010 -ohjelmalla Ohje on tarkoitettu PLT-tiedostojen tekemiseen. PDF-tiedostoja varten on ohjeet erikseen. Erilaisista tulostusjärjestelmistä johtuen

Lisätiedot

Sisällysluettelo T A R R A O P A S

Sisällysluettelo T A R R A O P A S isällysluettelo 1 Tarraeditori 3 1.1 Label-ikkunan osat.3 1.2 Label ikkunan toiminnot 4 1.3 Layout-ikkunan osat...5 1.4 Layout-ikkunan toiminnot..5 2 Tarrojen tekeminen 7 3 Tulostusasetukset...8 Esimerkki

Lisätiedot

Käyttöpaneelin käyttäminen

Käyttöpaneelin käyttäminen Tässä luvussa on tietoja käyttöpaneelista, tulostinasetusten muuttamisesta ja käyttöpaneelin valikoista. Useimmat tulostinasetukset voidaan muuttaa sovellusohjelmalla tai tulostinajurilla. Sovellusohjelmalla

Lisätiedot

Fonttien käyttö LUKU. Tekstin esittäminen värein ja tyylein. Fonttien käyttö sovelluksen viimeistelyyn OSA IV LUKU 17.

Fonttien käyttö LUKU. Tekstin esittäminen värein ja tyylein. Fonttien käyttö sovelluksen viimeistelyyn OSA IV LUKU 17. OSA IV 389 LUKU 17 17 LUKU Tekstin esittäminen värein ja tyylein sovelluksen viimeistelyyn 390 Grafiikan piirtäminen William Caxtonin keksittyä painetun sanomalehden olemme olleet pääsemättömissä painotuotteista.

Lisätiedot

Käyttöpaneelin käyttäminen

Käyttöpaneelin käyttäminen Tässä jaksossa on tietoja käyttöpaneelin käytöstä, tulostimen asetusten muuttamisesta ja käyttöpaneelin valikoiden sisällöstä. 1 Useimpia tulostimen asetuksia voi muuttaa sovellusohjelmasta tai tulostinajurista.

Lisätiedot

Kuvan pienentäminen Paint.NET-kuvankäsittelyohjelmalla

Kuvan pienentäminen Paint.NET-kuvankäsittelyohjelmalla Kuvan pienentäminen Paint.NET-kuvankäsittelyohjelmalla Avaa Paint.NET tuplaklikkaamalla sen pikakuvaketta. Paint.NET avautuu tämän näköisenä. Edessä on tyhjä paperi. Saadaksesi auki kuvan, jota aiot pienentää

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

Piirtopinnalle piirtäminen

Piirtopinnalle piirtäminen OSA IV 333 LUKU 15 15 LUKU Erilaiset piirtopinnat ja niiden käyttö Piirtotilan ja piirtopinnan asetukset ja käyttö Koordinaatistojen kohdistustapojen käyttö piirrettäessä tuumina tai sentteinä 334 Piirtopintatietorakenteet

Lisätiedot

Pysäytettyjen töiden tulostus ja poisto Kun tulostuksessa ilmenee asetteluvirheitä Verify print -työt Reserve print -työt

Pysäytettyjen töiden tulostus ja poisto Kun tulostuksessa ilmenee asetteluvirheitä Verify print -työt Reserve print -työt Kun työ lähetetään tulostimeen, tulostinajurissa voidaan määrittää, että työ säilytetään muistissa. Kun tämä pidätetty työ halutaan tulostaa, se määritetään tulostettavaksi tulostimen käyttöpaneelin valikoissa.

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A 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

Ohjeet Finna- julisteen PowerPoint- pohjan muokkaamiseen

Ohjeet Finna- julisteen PowerPoint- pohjan muokkaamiseen Ohjeet Finna- julisteen PowerPoint- pohjan muokkaamiseen Ennen kuin aloitat: 1. Asenna tietokoneeseesi ilmainen Miso Regular fontti, jonka saat täältä: https://www.fontspring.com/fonts/marten- nettelbladt/miso

Lisätiedot

Opintokohteiden muokkaus

Opintokohteiden muokkaus 1 Opintokohteiden muokkaus Näiden ohjeiden avulla hahmottuu kuinka opintokohteita voidaan muokata Opinto-oppaassa. Ohje on suunnattu käyttäjille, joilla on WebOodiin OpasMuokkaaja-oikeudet. WebOodin käyttölupia

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 17.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 17.2.2010 1 / 41 Sanakirja Monissa sovelluksissa on tallennettava rakenteeseen avain arvo-pareja. Myöhemmin rakenteesta

Lisätiedot

Planssit (layouts) ja printtaus

Planssit (layouts) ja printtaus 1 / 21 Digitaalisen arkkitehtuurin yksikkö Aalto-yliopisto 17.11.2015 Planssit (layouts) ja printtaus Yksittäisen kuvan printtaus 2 / 21 Ennen printtausta valitse näkymä, jonka haluat printata, klikkaamalla

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Opintokohteiden muokkaus

Opintokohteiden muokkaus 1 Opintokohteiden muokkaus Näiden ohjeiden avulla hahmottuu kuinka opintokohteita voidaan muokata WebOodissa. Ohje on suunnattu käyttäjille, joilla on WebOodiin OpasMuokkaaja-oikeudet. WebOodin käyttölupia

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä

Lisätiedot

Tulostinajurin ja paperikoon konfigurointiohjeet PLT-tiedoston luontia varten AutoCad ohjelmille

Tulostinajurin ja paperikoon konfigurointiohjeet PLT-tiedoston luontia varten AutoCad ohjelmille Tulostinajurin ja paperikoon konfigurointiohjeet PLT-tiedoston luontia varten AutoCad 2007-2008 -ohjelmille Erilaisista tulostusjärjestelmistä johtuen kopiolaitokset suosittelevat eri tulostinajureita

Lisätiedot

Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager

Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager Missio: 1. Asentaminen 2. Valokuvien tarkastelu, tallennus/formaatit, koko, tarkkuus, korjaukset/suotimet, rajaus 3. Kuvan luonti/työkalut (grafiikka kuvat) 4. Tekstin/grafiikan lisääminen kuviin, kuvien/grafiikan

Lisätiedot

KÄYTTÖÖN. Koulukirjat tietokoneelle PIKAOHJEET PAPERPORT -OHJELMAN. Sisällysluettelo

KÄYTTÖÖN. Koulukirjat tietokoneelle PIKAOHJEET PAPERPORT -OHJELMAN. Sisällysluettelo Koulukirjat tietokoneelle PIKAOHJEET PAPERPORT -OHJELMAN KÄYTTÖÖN Sisällysluettelo ImageViewer ja PDF Viewer Plus -ohjelmien esittelyt 1 Käytön aloittaminen 1 Työpöydän hyödylliset työkalut 2 Image View

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 12.4.2010 T-106.1208 Ohjelmoinnin perusteet Y 12.4.2010 1 / 34 Graafiset käyttöliittymät Tähän asti kirjoitetuissa ohjelmissa on ollut tekstipohjainen käyttöliittymä.

Lisätiedot

Nspire CAS - koulutus Ohjelmiston käytön alkeet Pekka Vienonen

Nspire CAS - koulutus Ohjelmiston käytön alkeet Pekka Vienonen Nspire CAS - koulutus Ohjelmiston käytön alkeet 3.12.2014 Pekka Vienonen Ohjelman käynnistys ja käyttöympäristö Käynnistyksen yhteydessä Tervetuloa-ikkunassa on mahdollisuus valita suoraan uudessa asiakirjassa

Lisätiedot

AirPrint-opas. Tämä käyttöopas koskee seuraavia malleja:

AirPrint-opas. Tämä käyttöopas koskee seuraavia malleja: AirPrint-opas Tämä käyttöopas koskee seuraavia malleja: HL-340CW/350CDN/350CDW/370CDW/380CDW DCP-905CDW/900CDN/900CDW MFC-930CW/940CDN/9330CDW/9340CDW Versio A FIN Kuvakkeiden selitykset Tässä käyttöoppaassa

Lisätiedot

250 arkin vakiolokeron täyttäminen

250 arkin vakiolokeron täyttäminen Pikaopas Paperin ja erikoismateriaalin lisääminen Tässä osassa kerrotaan, miten 250 ja 550 arkin lokerot sekä käsinsyöttölokero täytetään.lisäksi siinä on tietoja Paperikoko- ja Paperilaji-asetuksista.

Lisätiedot

LIITE 1 1. Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa.

LIITE 1 1. Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa. LIITE 1 1 HARJOITUS 1 Kitara Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa. Käsiteltävät asiat Edit Poly Muokkaus kuvan mukaan TurboSmooth Extrude 1. Tarkistetaan että mittayksiköt

Lisätiedot

Mainosankkuri.fi-palvelun käyttöohjeita

Mainosankkuri.fi-palvelun käyttöohjeita Mainosankkuri.fi-palvelun käyttöohjeita Sisällys 1. Johdanto... 1 2. Sisäänkirjautuminen... 1 3. Palvelussa navigointi... 2 4. Laitteet... 2 5. Sisällönhallinta... 4 6. Soittolistat... 7 7. Aikataulut...

Lisätiedot

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010 12. Periytyminen Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

Lisätiedot

Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö

Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö OSA V 439 LUKU 19 19 LUKU Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö Luettelon tietojen ylläpito List View näkymässä

Lisätiedot

Ohjelmoinnin perusteet, kurssikoe

Ohjelmoinnin perusteet, kurssikoe Ohjelmoinnin perusteet, kurssikoe 18.6.2014 Kirjoita jokaiseen konseptiin kurssin nimi, kokeen päivämäärä, nimi, TMC-tunnus ja opiskelijanumero tai henkilötunnus. Vastaukset palautetaan tehtäväkohtaisiin

Lisätiedot

Siirtyminen Outlook 2010 -versioon

Siirtyminen Outlook 2010 -versioon Tämän oppaan sisältö Microsoft Microsoft Outlook 2010 näyttää hyvin erilaiselta kuin Outlook 2003. Tämän oppaan tarkoituksena on helpottaa uuden ohjelman opiskelua. Seuraavassa on tietoja uuden käyttöliittymän

Lisätiedot

Tulostusopas. Lokeroiden täyttäminen. Tulostusopas. 1 Vedä lokero kokonaan ulos.

Tulostusopas. Lokeroiden täyttäminen. Tulostusopas. 1 Vedä lokero kokonaan ulos. Sivu 1/10 Tulostusopas Tässä osassa kerrotaan, miten 250 ja 550 arkin lokerot sekä monisyöttölaite täytetään. Lisäksi se sisältää tietoja paperin suunnasta, Paperikoko- ja Paperilaji-asetusten määrittämisestä

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

R4C443Setup Guide Rev. C. Proof Sign-off: K.Gazan CRE Tsukada N.Nomoto R.Thomson. 3/15/01 Pass 0. Suomi MSEUL0475

R4C443Setup Guide Rev. C. Proof Sign-off: K.Gazan CRE Tsukada N.Nomoto R.Thomson. 3/15/01 Pass 0. Suomi MSEUL0475 Proof Sign-off: K.Gazan CRE Tsukada R Suomi MSEUL0475 L Proof Sign-off: K.Gazan CRE Tsukada Pakkauksen sisällön tarkistaminen paperituki tulostimen ohjelmat ja käsikirjan sisältävä CD-ROM värikasettipakkaus

Lisätiedot

OpasOodi Opintokohteiden muokkaus

OpasOodi Opintokohteiden muokkaus 1 OpasOodi Opintokohteiden muokkaus Näiden ohjeiden avulla hahmottuu kuinka opintokohteita voidaan muokata n OpasOodissa. Ohje on suunnattu käyttäjille, joilla on in OpasMuokkaaja-oikeudet. n käyttölupia

Lisätiedot

OpasOodi Opintokohteiden muokkaus

OpasOodi Opintokohteiden muokkaus 1 OpasOodi Opintokohteiden muokkaus Näiden ohjeiden avulla hahmottuu kuinka opintokohteita voidaan muokata n OpasOodissa. Ohje on suunnattu käyttäjille, joilla on in OpasMuokkaaja-oikeudet. n käyttölupia

Lisätiedot

HARJOITUSTYÖ ITKP101 Ronja Saarinen

HARJOITUSTYÖ ITKP101 Ronja Saarinen HARJOITUSTYÖ ITKP101 Ronja Saarinen ITKP101-Harjoitustyö Ronja Saarinen ronjaemmiwilhelmiina@gmail.com Asiakirjamalli Asiakirjamalli (engl. Template) tarkoittaa valmista asiakirjapohjaa, josta löytyvät

Lisätiedot

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi Muilla kielillä: English Suomi Pong-peli, vaihe 7 Tässä vaiheessa lisäämme peliin pistelaskun. Pong-pelissä pelaaja saa pisteen kun pallo ohittaa toisen pelaajan mailan. 1. Aliohjelmakutsu laskureita varten

Lisätiedot

6. Harjoitusjakso II. Vinkkejä ja ohjeita

6. Harjoitusjakso II. Vinkkejä ja ohjeita 6. Harjoitusjakso II Seuraavaksi harjoitellaan algebrallisten syötteiden, komentojen ja funktioiden käyttöä GeoGebrassa. Tarjolla on ensimmäisen harjoittelujakson tapaan kahden tasoisia harjoituksia: perustaso

Lisätiedot

1. HARJOITUS harjoitus3_korjaus.doc

1. HARJOITUS harjoitus3_korjaus.doc Word - harjoitus 1 1. HARJOITUS harjoitus3_korjaus.doc Kopioi itsellesi harjoitus3_korjaus.doc niminen tiedosto Avaa näyttöön kopioimasi harjoitus. Harjoitus on kirjoitettu WordPerfet 5.1 (DOS) versiolla

Lisätiedot

GEOS 1. Ilmastodiagrammi Libre Office Calc ohjelmalla

GEOS 1. Ilmastodiagrammi Libre Office Calc ohjelmalla GEOS 1 Ilmastodiagrammi Libre Office Calc ohjelmalla Libre Office Calc ohjelman saat ladattua ilmaiseksi osoitteesta: https://fi.libreoffice.org/ Tässä ohjeessa on käytetty Libre Office Calc 5.0 versiota

Lisätiedot

6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.)

6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.) 6. Tekstin muokkaaminen 6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.) Tekstin maalaaminen onnistuu vetämällä hiirellä haluamansa tekstialueen yli (eli osoita hiiren

Lisätiedot

Työvalikko. Tulosta puskuri Akt.alustan alus Tulost.uudel.ase. Faksin peruutus Työn peruutus Luottamuks. työ Pidätetyt. Paperinkäsittely.

Työvalikko. Tulosta puskuri Akt.alustan alus Tulost.uudel.ase. Faksin peruutus Työn peruutus Luottamuks. työ Pidätetyt. Paperinkäsittely. a voidaan käyttää vain, kun tulostin on käytössä, kun käyttöpaneelissa näkyy tulostimen ilmoitus tai kun tulostin on heksatulostustilassa. Avaa painamalla Valikko-painiketta. Lisätietoja saat valitsemalla

Lisätiedot

Tämän värilaatuoppaan tarkoitus on selittää, miten tulostimen toimintoja voidaan käyttää väritulosteiden säätämiseen ja mukauttamiseen.

Tämän värilaatuoppaan tarkoitus on selittää, miten tulostimen toimintoja voidaan käyttää väritulosteiden säätämiseen ja mukauttamiseen. Sivu 1/7 Värilaatuopas Tämän värilaatuoppaan tarkoitus on selittää, miten tulostimen toimintoja voidaan käyttää väritulosteiden säätämiseen ja mukauttamiseen. Laatu-valikko Tulostustila Väri Vain musta

Lisätiedot

Tärkeimmät toiminnot. Kertausta ja uusia toimintoja Wordistä sekä tiedostonhallinnasta. Tärkeimmät toiminnot jatkuu...

Tärkeimmät toiminnot. Kertausta ja uusia toimintoja Wordistä sekä tiedostonhallinnasta. Tärkeimmät toiminnot jatkuu... Tärkeimmät toiminnot Kertausta ja uusia toimintoja Wordistä sekä tiedostonhallinnasta Kun hiiren jättää kuvakkeen päälle vähäksi ajaksi Word selittää toiminnon Avaa tiedosto Tallenna Kumoa, nuolesta aiemmat

Lisätiedot

OHJEITA TULOSTAMISEEN

OHJEITA TULOSTAMISEEN OHJEITA TULOSTAMISEEN Ver. 1.3 22.10.2012 LYHYT OPPIMÄÄRÄ TULOSTUSSALDON TARKISTAMINEN Näet käytössäsi olevan tulostussaldon määrän työpöydälläsi olevasta Print account kuvakkeesta, katso kuva: Tuplaklikkaamalla

Lisätiedot

Tekstinkäsittelyn jatkokurssi

Tekstinkäsittelyn jatkokurssi TAMPEREEN KAUPUNKI Kasvatus- ja opetustoimiala @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Tekstinkäsittelyn jatkokurssi Word Error! Not a valid link. Sisällys 1 Tekstin asettelu 1 1.1 Sarkaimet 1 1.2 Sivun

Lisätiedot

ASENNUS- JA KÄYTTÖOHJE

ASENNUS- JA KÄYTTÖOHJE ASENNUS- JA KÄYTTÖOHJE YKSIKKÖHINTA SOPIMUKSEN TOTEUTUNEET MÄÄRÄT-SOVELLUS CMPRO5 VERSIO 2.8 PÄIVITETTY HEINÄKUU 2010 COPYRIGHT 2010 ARTEMIS FINLAND OY. ALL RIGHTS RESERVED. KÄYTTÖOHJE SIVU 2 (12) SISÄLLYSLUETTELO

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin

Lisätiedot

XNA grafiikka laajennus opas. Paavo Räisänen. www.ohjelmoimaan.net. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa.

XNA grafiikka laajennus opas. Paavo Räisänen. www.ohjelmoimaan.net. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa. XNA grafiikka laajennus opas Paavo Räisänen www.ohjelmoimaan.net Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa. Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei

Lisätiedot

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9. Python linkit: Python tutoriaali: http://docs.python.org/2/tutorial/ Numpy&Scipy ohjeet: http://docs.scipy.org/doc/ Matlabin alkeet (Pääasiassa Deni Seitzin tekstiä) Matriisit ovat matlabin perustietotyyppejä.

Lisätiedot

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan soveltamista List-luokan metodeja Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan metodeja List-luokan

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (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ätiedot

MDI-sovellusten kehittäminen

MDI-sovellusten kehittäminen OSA V 491 LUKU 21 21 LUKU MDI-sovelluksen luominen Siirtyminen dokumentti, näkymä- ja kehysluokan välillä Sovelluksen kehittäminen MFC;n monidokumentti/näkymä-arkkitehtuurilla 492 Kehittyneet dokumentti/näkymä-tekniikat

Lisätiedot

Käyttäjän käsikirja. LIB 500 ja LIB 510 v.4.0.2. 8.2. Releasettelutyökalu. 8.2.1. Yleistä. ,NNXQDMRNDLOPRLWWDDHWWlNRKGHRQSlLYLWHWWlYl

Käyttäjän käsikirja. LIB 500 ja LIB 510 v.4.0.2. 8.2. Releasettelutyökalu. 8.2.1. Yleistä. ,NNXQDMRNDLOPRLWWDDHWWlNRKGHRQSlLYLWHWWlYl 1MRS751368-RUM Käyttäjän käsikirja 8.1. Releyksikön valitseminen Releyksiköt esitetään asemakuvassa painikkeina. 8 $VHPDNXYDMRVVDQlN\\UHOH\NVLNN Jos kohteita tarvitsee päivittää, avataan ikkuna (Kuva 8.1.-2)

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 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ätiedot

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ aaro.leikari@hotmail.com TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ 25.01.2016 SISÄLLYS 1. Käyttöjärjestelmän asentaminen... 1 1.1 Windowsin asettamia laitteistovaatimuksia... 1 1.2 Windowsin asentaminen...

Lisätiedot

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä LUOKAN MÄÄRITTELY Luokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion muodostimet ja luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Olion kopioiminen

Lisätiedot

KODU. Lumijoen peruskoulu

KODU. Lumijoen peruskoulu KODU Lumijoen peruskoulu Sisällysluettelo 1. Aloitus... 2 1.1 Pelin tallennuspaikka... 2 1.2 Kodu Game lab... 3 2 Maan luominen... 4 2.1. Seinän tekeminen... 5 2.2. Vesialueen tekeminen peliin... 6 2.3.

Lisätiedot

Tulostusmateriaaliopas

Tulostusmateriaaliopas Sivu /5 Tulostusmateriaaliopas Tulostin tukee seuraavia paperi- ja erikoistulostusmateriaalikokoja. Universal-asetuksessa voit valita mukautettuja paperikokoja enimmäiskokoon asti. Tuetut paperikoot, -lajit

Lisätiedot

CADS Planner -tulostusohje

CADS Planner -tulostusohje Sisältö Yleistä tulostuksesta... 3 Tulostinajurin asentaminen Windowsiin... 4 Paperiarkin lisääminen tulostinajurille... 5 Tulostimen lisääminen CADSiin... 7 PDF-tiedoston tulostaminen... 9 PLT-tiedoston

Lisätiedot

Käyttöohje. Energent MagiCAD plugin

Käyttöohje. Energent MagiCAD plugin Käyttöohje Energent MagiCAD plugin Sisältö 1. Yleistä 1 Dokumentin sisältö... 1 Ohjelman asennus... 1 Vaadittavat ohjelmistot... 1 Asennus... 1 Ohjelman käynnistys... 2 2. Toiminnallisuudet 3 Insert Energent

Lisätiedot

UpdateIT 2010: Editorin käyttöohje

UpdateIT 2010: Editorin käyttöohje UpdateIT 2010: Editorin käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com Sisällys Editorin käyttöohje...

Lisätiedot

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus?

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus? Osa III 11. oppitunti Viittaukset Kahdessa viime luvussa opit käyttämään osoittimia kohteiden käsittelyyn vapaalla muistialueella sekä viittaamaan noihin kohteisiin epäsuorasti. Tässä luvussa käsiteltävät

Lisätiedot

C++11 lambdat: [](){} Matti Rintala

C++11 lambdat: [](){} Matti Rintala C++11 lambdat: [](){} Matti Rintala bool(*)(int) Tarve Tarve välittää kirjastolle/funktiolle toiminnallisuutta Callback-funktiot Virhekäsittely Käyttöliittymät Geneeristen kirjastojen räätälöinti STL:n

Lisätiedot

Aloita uusi kartoitus -painikkeesta käynnistyy uuden kartoituksen tekeminen

Aloita uusi kartoitus -painikkeesta käynnistyy uuden kartoituksen tekeminen it-arvi Ohjeet sovelluksen käyttöön KÄYNNISTYS: - Sovellus käynnistetään tuplanapauttamalla kuvaketta Esteettomyysarviointi.exe. ETUSIVU: Aloita uusi kartoitus -painikkeesta käynnistyy uuden kartoituksen

Lisätiedot

Ohjeisto Trimble Pro 6H yhdistämisestä Juno 5:een

Ohjeisto Trimble Pro 6H yhdistämisestä Juno 5:een Liite 4 1(19) KEMIN ENERGIA Ohjeisto Trimble Pro 6H yhdistämisestä Juno 5:een Janne Pirttimaa 12.2.2013 Liite 4 2(19) SISÄLLYSLUETTELO 1 Yhdistäminen bluetoothilla... 3 2. Ongelmatilanteet ja ratkaisut...

Lisätiedot

Johdanto: Jaetut näytöt Jaetun näytön asetukset ja näytöstä poistuminen Aktiivisen sovelluksen valitseminen

Johdanto: Jaetut näytöt Jaetun näytön asetukset ja näytöstä poistuminen Aktiivisen sovelluksen valitseminen Kappale 14: Jaetut näytöt 14 Johdanto: Jaetut näytöt... 232 Jaetun näytön asetukset ja näytöstä poistuminen... 233 Aktiivisen sovelluksen valitseminen... 235 TI-89 / TI-92 Plus:ssä voit jakaa näytön ja

Lisätiedot

JOHDANTO AirPrint on käytettävissä vain tulostimissa tai monitoimilaitteissa, jotka tukevat AirPrintiä. Huomaa

JOHDANTO AirPrint on käytettävissä vain tulostimissa tai monitoimilaitteissa, jotka tukevat AirPrintiä. Huomaa Käyttöopas AirPrint JOHDANTO Tässä oppaassa olevien tietojen täydellisyys, täsmällisyys ja ajantasaisuus on pyritty varmistamaan kaikin keinoin. Valmistaja ei vastaa omien vaikutusmahdollisuuksiensa ulkopuolella

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

RockID-varastonhallintajärjestelmän käyttöohje. v. 1.0

RockID-varastonhallintajärjestelmän käyttöohje. v. 1.0 RockID-varastonhallintajärjestelmän käyttöohje v. 1.0 Yleistä Rockstar lukijakäyttöliittymä Tuotteiden lukeminen lähtevään tilaukseen Tilaukseen kuulumattomat tuotteet Tuotteiden lukeminen tilauksesta

Lisätiedot

TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE

TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE HERVANNAN KIRJASTON TIETOTORI Insinöörinkatu 38 33720 Tampere 040 800 7805 tietotori.hervanta@tampere.fi TALLENNETAAN MUISTIKULLE JA MUISTIKORTILLE 1 Muistitikun

Lisätiedot

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi 1 C++11 Syntaksi Jari-Pekka Voutilainen 13.4.2012 2 Range-for Iteroi säiliön kaikki alkiot for-silmukassa. Säiliöltä vaaditaan begin- ja end-iteraattorit. Pätee kaikille C++11 STL-säiliöille, taulukoille,

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 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ätiedot

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet 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ätiedot

Javan perusteita. Janne Käki

Javan 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ätiedot

A4-leveys Suunta Autom.CR LFn jäl Tiheys Autom.LF CRn jäl Pistekoko. Fontin nimi Symbolijoukko Fonttilähde Lokeron uud.num.

A4-leveys Suunta Autom.CR LFn jäl Tiheys Autom.LF CRn jäl Pistekoko. Fontin nimi Symbolijoukko Fonttilähde Lokeron uud.num. PCL-valikon asetukset koskevat vain tulostustöitä, jotka tulostetaan PCL-komentokieltä käyttäen. Lisätietoja saat valitsemalla valikon vaihtoehdon: 1 A4-leveys Suunta Autom.CR LFn jäl Tiheys Autom.LF CRn

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisä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ätiedot

Ohjeita LINDOn ja LINGOn käyttöön

Ohjeita LINDOn ja LINGOn käyttöön Ohjeita LINDOn ja LINGOn käyttöön LINDOn tärkeimmät komennot ovat com (command), joka tuloaa käytettävissä olevat komennot ruudulle, ja help, jonka avulla saa tietoa eri komennoia. Vaaukset kursiivilla

Lisätiedot

Adobe Photoshop Elements, kuvakäsittelyn perusteet

Adobe Photoshop Elements, kuvakäsittelyn perusteet Sivu 1 / 8 Adobe Photoshop Elements, kuvakäsittelyn perusteet Lyhyesti Tämän oppaan avulla voit - kääntää kuvan - valita kuvasta vain tietyn alueen ja poistaa kuvasta muut (eng. crop, suom. rajaus) - muuttaa

Lisätiedot

Fiery Driver Windows-käyttöjärjestelmälle

Fiery Driver Windows-käyttöjärjestelmälle 2015 Electronics For Imaging, Inc. Tämän julkaisun tiedot kuuluvat tämän tuotteen Lakisääteisien ilmoitusten piiriin. 5. lokakuuta 2015 Sisällys 3 Sisällys...5 Fiery Driver Updater...5 Mukautettujen Fiery

Lisätiedot

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Tekstikontrollit LUKU. Tekstin ja sanomien esittäminen valintaikkunoissa. Tekstin muokkaaminen suorituksen aikana. Tiedon tarkistaminen syötön aikana

Tekstikontrollit LUKU. Tekstin ja sanomien esittäminen valintaikkunoissa. Tekstin muokkaaminen suorituksen aikana. Tiedon tarkistaminen syötön aikana OSA II LUKU 5 85 5 LUKU Tekstin ja sanomien esittäminen valintaikkunoissa Tekstin muokkaaminen suorituksen aikana Tiedon tarkistaminen syötön aikana Kontrollien toiminnan laajentaminen aliluokkien avulla

Lisätiedot

3 Taivuta ja ilmaa paperipino ja suorista sen reunat, ennen kuin lisäät sen tulostimeen. 2 Säädä ohjain lisättävän paperin koon mukaan.

3 Taivuta ja ilmaa paperipino ja suorista sen reunat, ennen kuin lisäät sen tulostimeen. 2 Säädä ohjain lisättävän paperin koon mukaan. Pikaopas Monisyöttölaitteen täyttö 1 Avaa monisyöttölaite. Paperin lisääminen Lokeroiden täyttäminen VAARA KAATUMISVAARA: Voit vähentää laitteen epävakauden riskiä lisäämällä jokaisen alustan erikseen.

Lisätiedot

Osa. Mitä ovat vakiot jäsenfunktiot Kuinka erotetaan luokan käyttöliittymä sen toteutuksesta

Osa. Mitä ovat vakiot jäsenfunktiot Kuinka erotetaan luokan käyttöliittymä sen toteutuksesta Osa II 7. oppitunti Lisää luokista Aiemmassa luvussa opit luomaan uusia tietotyyppejä esittelemällä luokkia. Tässä luvussa opit hallitsemaan luokkia ja käyttämään kääntäjää auttamaan virheiden löytämisessä

Lisätiedot

Käyttöoppaasi. KONICA MINOLTA DI251F http://fi.yourpdfguides.com/dref/590228

Käyttöoppaasi. KONICA MINOLTA DI251F http://fi.yourpdfguides.com/dref/590228 Voit lukea suosituksia käyttäjän oppaista, teknisistä ohjeista tai asennusohjeista tuotteelle. Löydät kysymyksiisi vastaukset käyttöoppaasta ( tiedot, ohjearvot, turvallisuusohjeet, koko, lisävarusteet

Lisätiedot

KUVAMUOKKAUS HARJOITUS

KUVAMUOKKAUS HARJOITUS KUVAMUOKKAUS HARJOITUS VÄRI, PARANNUS, KUVAKOKO, KEHYKSET Kuvan väri- ja valoisuusarvot ovat sidoksissa kuvanottohetken valaistukseen. Harjoituksen kuva on kuvattu loistevaloissa ja värisävy ei ole kohdallaan.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 28.1.2009 1 / 28 Esimerkki: murtoluvun sieventäminen Kirjoitetaan ohjelma, joka sieventää käyttäjän antaman murtoluvun.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointiharjoituksia Arduino-ympäristössä Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 19.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2011 1 / 39 Haluatko antaa palautetta luennoista? Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot