Sisäänrakennetun debuggerin käyttö

Koko: px
Aloita esitys sivulta:

Download "Sisäänrakennetun debuggerin käyttö"

Transkriptio

1 OSA VII 653 LUKU LUKU Sisäänrakennetun debuggerin käyttö Ohjelmien kääntäminen debuggauskäyttöön tai julkaistavaksi optimoituna Virheiden hakeminen koodirivien yksittäisaskellusta käyttäen Ikkunoiden ja niiden sanomien tarkkaileminen

2 654 Kehittyneet tekniikat Debuggaus- ja selaustietojen luominen Suuri osa ohjelman kehitystyöstä on itse asiassa ohjelmasi debuggaamista. Kaikkien ohjelmistojen kehittäminen jakaantuu selkeästi suunnitteluun, toteutukseen ja debuggaamiseen. Visual C++ -työkalussa on debuggausympäristö merkittävänä osana ja käytettävät debuggaustyökalut auttavat myös ohjelmankehityksessä. Löydät ohjelman ongelmakohdat nopeasti tutkimalla muuttujien arvoja ajon aikana ja seuraamalla ohjelman kulkua niin omassa kuin MFCkoodissakin. Spy++-ohjelman kaltaiset työkalut osaavat näyttää Windowsin ja ohjelmasi välillä lähetetyt sanomat ja mahdollistavat sovellusten käyttämien käyttöliittymäkontrollien ja Windows-tyylien selvittämisen. Projektin aktiivisen konfiguraation asettaminen Projektin aktiivinen konfiguraatio tarkoittaa kääntäjälle tulosohjelman tuottamiseksi annettuja konfigurointiohjeita. Kun sovellus on kehitetty valmiiksi Debugkonfiguraatiolla, saadaan julkaistava versio pienemmäksi ja nopeammaksi Releasekonfiguraatiolla. Aktiivinen konfiguraatio muutetaan Build-valikon Set Active Configuration - komennolla, mikä näyttää aluksi Set Active Configuration - valintaikkunassa luettelon projektin konfiguraatioista. Release-konfiguraatio voidaan valita tästä kaksoisnapauttamalla, jolloin kääntäjä alkaa käyttää sen määrittelyjä Debugkonfiguraation sijaan. Debug- ja Release tilan käyttö Sovellusta käännettäessä on valittavissa kaksi selkeästi eri kääntäjän konfiguraatiota: Debug- ja Release-tila. Voit muuttaa käytettävää konfiguraatiota Project-valikosta saatavalla Settings-komennolla (tai näppäilyllä Alt+F7). Tällöin saat esiin Project Settings valintaikkunan (kuva 27.1). Projektin pääasetukset esitetään ylimmällä tasolla ja niitä voidaan valita Settings For yhdistelmäruudusta. Valittuasi konfiguraatioasetuksen ikkunan oikean puolen asetuksien muutokset kohdistuvat ainoastaan tähän konfiguraatioon. Sovellusta käännettäessä se käännetään käytettävän konfiguraation asetuksin. Voit tietysti valita Settings For yhdistelmäruutuun All Configurations, jolloin tehdyt asetusten muutokset sekä kääntäminen kohdistuu kaikkiin konfiguraatioihin. Uutta projektia luodessa tuetaan sekä Debug- että Release asetuksia; nämä konfiguraatiot tuottavat varsin erilaista objektikoodia. Debugtilassa ohjelman kääntämisellä saadaan suuri ja melko hidas suoritettava ohjelma. Syy tähän on ohjelmaan lisättyjen debuggaustietojen määrä sekä kääntäjän optimoinnin puuttuminen.

3 OSA VII LUKU KUVA 27.1 Project Settings valintaikkunan C/C++-välilehti. Kun käännät saman ohjelman Release-tilassa, saat pienen ja nopean suoritettavan ohjelman, mutta et pääse tutkimaan sitä rivi riviltä etkä saa siltä debuggaussanomia. Tavallisesti sovellusta kehitettäessä kääntäjä jätetään Debug-tilaan, jotta ohjelmakoodin ongelmatilanteet löytyisivät helposti. Kun sovellus on saatu julkaisuvalmiiksi, konfiguraatio voidaan muuttaa Releasetilaan, jolloin sen käyttäjille saadaan pieni ja nopea versio. KATSO MYÖS Lisätietoja projektin hallinnasta ja konfiguraatioista luvusta 2. Debuggausvalintojen ja -tasojen asettaminen Voit asettaa debuggausvalintoja ja tasoja Project Settings valintaikkunan C/C++-välilehdeltä. Tämä valintaikkunan sivu saadaan esiin valitsemalla Project-valikosta Settings (tai näppäilemällä Alt+F7) ja valitsemalla ikkunasta C/C++-välilehti. Kun sivulla on valittu Category-ruudussa General (yleiset asetukset), ikkunassa voidaan valita seuraavat asetukset: Warning Level. Tämä määrittää käännöksen aikana annetun virhevaroitustason. Käytettävissä ovat taulukon 27.1 esittämät asetukset. Oletustaso näistä on Level 3, joka on varsin herkkä, vaikka useat C++-ohjelmoijat suosittavat jopa Level 4:n käyttöä, jotta kääntäjä varoittaisi vielä uhkaavista potentiaalisista ongelmista. Level 1 ja None valinnat sopivat vain erityiskäyttöön, koska ne ilmoittavat ainoastaan vakavista virheistä (tai eivät ilmoita). Testaaminen Releasetilassa Sovellus tulee testata täysin vielä release-kääntämisen jälkeenkin. Mahdolliset ongelmat saattavat liittyä Debug-tilassa käytettyjen (ja Release-tilassa poistettujen) ASSERT-makrojen käyttöön (josta lisää myöhemmin tässä luvussa) tai nopeuden ja muistin optimointiin. Level 4 -tason varoitukset Varoitustasoa Level 4 käytettäessä huomaat myös Microsoftin oman AppWizardin tekemän koodin antavan varoituksia (vaikkakin yleensä vain käyttämättömistä funktion parametreistä, mikä voidaan jättää huomiotta).

4 656 Kehittyneet tekniikat Warnings as Errors. Valitsemalla tämän kääntäjän varoitukset tulkitaan kääntämisen pysäyttäviksi virheiksi. Generate Browser Info. Kun valitset tämän asetuksen, kääntäjä luo tietoja auttamaan projektin funktioiden, symbolien ja luokkasuhteiden löytämistä Browse-ikkunassa (josta lisää seuraavassa kappaleessa). Valitettavasti näiden tietojen luominen kasvattaa selvästi käännösaikaa, varsinkin laajoissa projekteissa (joissa näitä tietoja juuri tarvitaan). Debug Info. Tässä voit valita, kuinka paljon kääntäjä tekee debuggaustietoja. Valinnat on esitetty taulukossa Optimizations. Debug-tilassa nämä jätetään yleensä valitsematta, koska ne sotkevat debuggausta ja hidastavat kääntämistä. Release-tilassa voit kuitenkin valita, haluatko sovellukseltasi mahdollisimman hyvää suorituskykyä (Maximize Speed) vai pientä kokoa (Minimize Size) vai ehkä oletusarvoa, jolloin pyritään keskitienä molempiin. Preprocessor Definitions. Tässä syötetään ohjelmaa käännettäessä määriteltävät #define-makrot. Voit hyödyntää näitä määrittelyjä yhdessä koodin #ifdef, #else ja #endif esikäsittelijän komentojen kanssa kääntämään koodilohkon ainoastaan määrätyssä konfiguraatossa. Debug-tilassa annetaan automaattisesti _DEBUG-määrittely. Tätä voidaan hyödyntää rajaamaan koodilohkon kääntäminen ainoastaan Debug-tilaan seuraavasti: int a= b * c / d + e; #ifdef _DEBUG CString strmessage; strmessage.format( Result of sum was %d,a); afxmessagebox(strmessage); #endif Tässä sanomaruutukoodi käännetään ja suoritetaan ainoastaan, kun sovellus on käännetty Debug-tilassa. Kun siirrytään Releasetilaan, lohkon koodia ei edes käännetä suoritettavaan tiedostoon. Project Options. Itse kääntäjä suoritetaan konsolisovelluksena ja se muuttaa Developer Studion asetukset komentoriviltä syötettäviksi lipuiksi. Voit lisätä käyttöliittymästä puuttuvia eksoottisempia lippuja vielä näihin komentorivilippuihin tässä tekstiruudussa.

5 TAULUKKO 27.1 Kääntäjän varoitustasot OSA VII LUKU Taso None Level 1 Level 2 Level 3 Level 4 Ilmoitetut varoitukset Ei ilmoiteta Ainoastaan kaikkein vakavimmat Myös joitakin vähemmän vaarallisia Oletustaso (kaikki merkittävät varoitukset) Hyvin herkkä (sopii perfektionisteille) TAULUKKO 26.2 Debug Info asetukset Asetus None Line Numbers Only C 7.0 Compatible Program Database Program Database for Edit and Continue Tuotetut debuggaustiedot Ei tuota debuggaustietoja varattu yleensä Release-tilalle Tämä tuottaa ainoastaan lähdekoodiin viittaavat rivinumerot funktioita ja yleisiä muuttujia varten. Etuna on käännösajan ja exe-tiedoston koon pysyminen kohtuullisena. Tämä tuottaa Microsoft C7.0 yhteensopivat debuggaustiedot. Kaikki debuggaustiedot sijoitetaan suoritettaviin tiedostoihin niiden kokoa kasvattaen, mutta täysi symbolinen debuggaus onnistuu. Tällä asetuksella käännettäessä luodaan.pdbpäätteinen tiedosto, jossa on enimmäismäärä debuggaustietoa. Edit and Continue tietoja ei kuitenkaan luoda. Tämä on oletusasetus ja tavallisimmin käytetty. Se tuottaa.pdb-tiedoston, jossa on enimmäismäärä debuggaustietoa sekä luo uuden Edit and Continue ominaisuuden vaatimat tiedot. Kääntäjän lippujen vaikutus Jokainen projektin asetus muutetaan pitkäksi luetteloksi kääntäjän komentorivilippuja. Esimerkiksi Debug info -asetus muutetaan esilaisiksi /Zkomentorivivalinnoiksi. Nämä ovat: /Zd vain rivinumeroille, /Z7 kääntäjän versio 7:n yhteensopivuudelle, /Zi ohjelmatietokannalle ja /Zl Edit and Continue -tilaa varten. Jos muutat Debug info -asetuksia, muutokset näkyvät myös Project Options - ruudussa.

6 658 Kehittyneet tekniikat Selaustietojen luominen ja käyttö Source Browser työkalulla voit tutkia lähdekoodiasi yksityiskohtaisesti. Tämä työkalu saattaa olla suorastaan korvaamaton jonkun ulkopuolisen tekemää koodia tutkittaessa tai käsiteltäessä omaa koodia pitkän tauon jälkeen. Saat Source Browser työkalun käyttöön kääntämällä sovelluksen Generate Browse Info asetus valittuna (Project Settings ikkunan C/C++-välilehdellä). Voit käynnistää työkalun näppäilemällä Alt+F12 tai valitsemalla Tools-valikosta Source Browser (ensimmäisellä suorituskerralla sinua pyydetään kääntämään selaustiedot). Ensimmäinen Source Browser ohjelman esittämä valintaikkuna pyytää syöttämään sen ohjelman osan Identifier-nimen, jota selataan (kuva 27.2). Tämä voi olla esimerkiksi sovelluksessa olevan luokan, tietorakenteen, funktion, globaalin tai paikallisen muuttujan nimi. Syötettyäsi nimitunnisteen OK-painike tulee käyttöön ja pääset selaamaan tuon tunnisteen lisätietoja. KUVA 27.2 Browse-valintaikkunassa pyydetään selattavaa nimeä. Select Query luettelosta voit valita, missä muodossa tieto haetaan valitusta nimestä. Voit valita seuraavista vaihtoehdoista: Definitions and References. Tällä valinnalla näytetään kaikki tiedostot, joista on viitattu kyseiseen nimeen ja tieto siitä, onko kyseessä viittaus (reference), eli nimen käyttö koodissa, vai nimen määrittely (identifier). Esimerkki tästä on esitetty kuvassa Tiedostonimen lisäksi luettelossa esitetään myös rivinumerot. Jos kaksoisnapautat esitettyä tiedostonimeä, esitetään viitattu ohjelmakoodi Developer Studion editori-ikkunassa. Tämä on erityisen hyödyllinen tutkittaessa tietyn muuttujan tai funktion käyttöä.

7 OSA VII LUKU KUVA 27.3 Source Browser esittää viittaukset ja määrittelyt. File Outline. Tällä valinnalla esitetään kaikki (Identifierruutuun) annetussa tiedostossa määritellyt luokat, data, funktiot, makrot ja tyypit (kuva 27.4). Voit poistaa tai ottaa mukaan valitun tyyppiset tiedot ylärivin painikkeilla. KUVA 27.4 Lähdekoodiselaimen File Outline näyttö. Base Classes and Members. Tämä on eittämättä lähdekoodiselaimen käyttökelpoisimpia valintoja. Kun annat identifiernimeksi luokan, esitetään koko luokkahierarkia ja kunkin tason jäsenfunktiot ja muuttujat (kuva 27.5). Voit myös ottaa mukaan ainoastaan tietyntyyppiset jäsenfunktiot ja muuttujat.

8 660 Kehittyneet tekniikat KUVA 27.5 Lähdekoodiselaimen Base Classes and Members näkymä. Derived Classes and Members. Myös tämä näkymä on käyttökelpoinen esittäen kaikki annetusta luokasta johdetut luokat sekä niiden omat jäsenfunktiot ja muuttujat. Tällä valinnalla pääset myös tutustumaan paremmin MFC-luokkakirjaston rakenteeseen, kun annat Identifier-nimeksi CWnd (kuva 27.6). KUVA 27.6 Lähdekoodiselaimen Derived Classes and Members näkymä esittää CWnd-luokasta johdetut luokat. Call Graph. Funktiokutsuverkko, joka esittää kaikki annetun nimen kutsumat funktiot sekä kutsuttujen funktioiden määrittely- ja toteutustiedostot. Tämän avulla voit näppärästi seurata ohjelman kulkua. Callerr Graph. Vastaavalla Callers Graph valinnalla näytetään kaikki annettua nimeä kutsuvat funktiot. Tämän avulla voit jäljittää määrätyn funktiosi kutsujat.

9 OSA VII LUKU Etädebuggaus ja ajonaikainen debuggaus Debuggerin työkalujen avulla voit debugata myös etätietokoneessa ajettavaa ohjelmaa (jopa Internetin kautta TCP/IP:llä). Tämä on hyödyllistä, kun haluat testata ohjelmaasi erilaisessa laiteympäristössä kuin ohjelmankehitykseen tarkoitettu tietokone. Tätä varten tarvitset molempiin koneisiin täsmälleen samat.exe ja dll-tiedostot käytetyistä ohjelmista. Projektin lataamisen jälkeen voit debugata ohjelmaa etätietokoneen jaetusta hakemistosta muuttamalla Executable for debug session tekstiruutuun paikallisen.exe tiedoston hakemistopolun ja tiedostonimen (löytyy Project Settings valintaikkunan Debug-välilehdeltä). Joudut lisäämään myös Debug-välilehden alaosaan hakemistopolun.exe-tiedostoon Remote Executable Path and File Name tekstiruutuun ja jättämään Working Directory ruudun tyhjäksi. Sitten voit käynnistää etätietokoneessa debuggerin seurantaohjelman käynnistämällä MSVCMON.EXE ohjelman ja kytkeytymällä paikallisesta koneesta siihen Build-valikon Debugger Remote Connection komennolla. Remote Connection valintaikkunasta valitaan Local, jos debuggaukseen käytetään jaettua hakemistoa, ja Remote, kun debuggaus tehdään TCP/IP-yhteyden kautta (etätietokoneen osoite syötetään Settings-painikkeella saadussa ikkunassa). Tämä valinta kytkee Developer Studion etätietokoneen debuggerin seurantaohjelmaan (remote monitor), joka käynnistää istunnon. Ajonaikainen debuggaus (Just-in-time debugging) mahdollistaa tavalliseen tapaan suoritetun (ei siis debuggerilla) ohjelman debuggaamisen siinä ilmenneen ongelman tapahtuessa. Jos tietokoneeseesi on asennettu Visual C++ ja tämä valinta on sallittu, mikä tahansa kesken ajon kaatunut ohjelma ladataan uuteen Developer Studion istuntoon valmiiksi debugattavaksi ja kaatumisen aiheuttanut koodi esitetään. Tämä aiheuttaa mielenkiintoisen tilanteen, jos kaatunut ohjelma on itse Developer Studio. Tällöin ladataan ajettavaksi toinen Developer Studion istunto ja saat esiin sen ohjelman assembly-kielisen koodin, jonka kaatuminen debuggerissa kaiken aiheutti. Omien sovellusten debuggaaminen on niiden kaatuessa (niitä demottaessa?) hyödyllistä. Ajonaikainen debuggaus sallitaan Tools-valikon Options-komennolla saadun ikkunan Debug-välilehdeltä valitsemalla Just-in-time debugging. Etädebuggaustiedostojen asentaminen Tarvitset etätietokoneeseen seuraavat tiedostot debuggeriseurantaohjelmaa varten: MSVCMON.EXE, MSVCRT.DLL, TLN0T.DLL, DM.DLL, MSVCP6O.DLL ja MSDIS110.DLL. Nämä tiedostot löytyvät Visual Studion hakemiston alta hakemistosta.\common\msdev98\bin.

10 662 Kehittyneet tekniikat Tällä sivulla OLE RPC valinta on myös hyödyllinen kehitettäessä COMja DCOM-sovelluksia, koska se sallii debuggerin seurata ohjelmansuoritusta toiseen ohjelmaan tai.dll:ään ja antaa toisen debuggerin huolehtia toisesta prosessista. Oma debuggeri saa debuggauksen hallinnan takaisin etäfunktion suorituksen jälkeen. Tällainen debuggaus toimii verkon yli ja jopa erilaisissa tietokoneissa. KATSO MYÖS Lisätietoja COM:ista ja OLE:sta luvusta 25. Ehdolliset keskeytyskohdat Voit asettaa keskeytyskohtiin (breakpoint) ehtoja, jolloin saat niistä hyvin tehokkaita vianhakutyökaluja. Ehdot voivat tarkistaa muuttujan arvoja tai ne voidaan asetaa ohittamaan keskeytyskohta muutaman kerran ennen tietylle riville pysähtymistä. Ohjelmansuorituksen seuranta ja yksittäisaskellus Eräs Visual C++:n debuggausympäristön hyödyllisimmistä ominaisuuksista on vuorovaikutteinen koodirivien yksittäisaskellus. Tämä tarkoittaa ohjelmakoodin suorittamista rivi kerrallaan ja samalla muuttujien arvojen tutkimista. Voit asettaa ohjelmaan myös keskeytyskohtia (breakpoint), jolloin ohjelma suoritetaan keskeytyskohdaksi merkitylle koodiriville saakka ja ohjelmansuoritus pysäytetään. Voit tutkia tällöin haluamiasi muuttujia ja jatkaa tämän jälkeen ohjelmansuoritusta. TRACE- ja ASSERT-lauseiden käyttö auttaa myös ohjelman vianhaussa. TRACE-lauseilla voidaan esittää tekstiä ja muuttujien arvoja ohjelmasta, kun kyseinen lause suoritetaan. ASSERT-lauseella ohjelma saadaan pysähtymään, ellei testattava ehto ole tosi (TRUE), vaikka sen tulisi olla. TRACE-makron käyttö Voit lisätä eri paikkoihin ohjelmaasi TRACE-makroja kertomaan sitä ajettaessa, että kyseinen rivi on suoritettu tai esittämään muuttujan arvoa tuossa vaiheessa. TRACE-makrot käännetään ohjelmaasi Debugkonfiguraatiota käytettäessä ja niiden tuloste näytetään Developer Studion alareunan ikkunan Debug-välilehdellä ajettaessa ohjelmaa debuggerin alaisuudessa. Voit jättää ohjelmakoodiisi TRACE-makrot myös Release-tilassa käännettäessä, koska nämä makrot jätetään tällöin automaattisesti pois käännöksestä. Yksinkertaisten tekstisanomien tai muuttujien arvojen näyttäminen

11 onnistuu syöttämällä muotoilumerkkijono TRACE-makron ensimmäiseksi parametriksi. Tämän formaatti on aivan sama kuin printf()- tai CString::Format() funktiolla käytettävä. Jos tekstin seassa halutaan esittää kokonaislukuja, niiden paikka merkitään %d:llä, heksadesimaaliluvut %x:llä ja merkkijonot %s:llä. Seuraavat parametrit vastaavat sitten kukin yhtä näistä muotoilukoodeista. Esimerkiksi seuraava koodi: int nmynum = 60; char* szmystring = This is my String ; TRACE( Number = %d, or %x in hex and my string is: %s\n, nmynum, nmynum, szmystring); Tuottaa seuraavan tulosteen: Number = 60, or 3c in hex and my string is This is my string Listauksessa 27.1 esitettyä TRACE-makroa on käytetty esittämään merkkijono ennen ja jälkeen yksinkertaisella, mutta tehottomalla menetelmällä suoritetun lajittelun jälkeen. OSA VII LUKU Jos haluat kokeilla listauksen 27.1 koodia, voit tehdä AppWizardilla yksinkertaisen SDI-sovellusrungon. Lisää listauksen koodi dokumenttiluokkasi toteutustiedostoon ennen OnNewDocument()- funktiota ja kutsuu sitten DoSort()-funktiota OnNewDocument()- funktiosta käsin. Voit suorittaa sovelluksen debuggerissa (valitse Build-valikosta Start Debug ja alivalikosta Go) nähdäksesi TRACE-lauseen tulosteen. Varmista vielä, että Output-ikkuna on näkyvissä (valitse Viewvalikosta Output) ja siitä Debug-välilehti päällimmäisenä. LISTAUS 27.1 LST27_1.CPP Yksinkertainen sort-funktio debuggerin käytön havainnollistamiseksi 1 void Swap(CUIntArray* pdwnumbers,int i) 1 2 { 3 UINT uval = pdwnumbers->getat(i); 4 pdwnumbers->setat(i,pdwnumbers->getat(i+1)); 5 pdwnumbers->setat(i+1,uval); 6 } 7 8 void DoSort() 9 { 10 CUIntArray arnumbers; 11 for(int i=0;i<10;i++) arnumbers.add(1+rand()%100); 12 Debuggauksen pikanäppäin Nopein tapa käynnistää debuggaus on painaa F5- näppäintä. Tämä käynnistää ohjelman suorittamisen debuggerissa (mikäli suoritettava tiedosto on ajan tasalla) tai pyytää kääntämään uusimmat lähdekooditiedostot ennen jatkamista. 1 Swap()-funktio vaihtaa kaksi muuttujaa taulukon peräkkäisistä paikoista.

12 664 2 TRACE-makrolla tulostetaan numero ennen järjestämistä. 3 Jokainen numeropari tarkistetaan ja jos järjestys on väärä, ne vaihdetaan. 4 Numerot tulostetaan jälleen TRECE-makrolla järjestämisen jälkeen. Kehittyneet tekniikat 13 TRACE("Before Sort\n"); 2 14 for(i=0;i<arnumbers.getsize();i++) 15 TRACE("[%d] = %d\n",i+1,arnumbers[i]); BOOL bsorted; 18 do 19 { 20 bsorted = TRUE; 21 for(i=0;i<arnumbers.getsize()-1;i++) 22 { 23 if (arnumbers[i] > arnumbers[i+1]) 3 24 { 25 Swap(&arNumbers,i); 26 bsorted = FALSE; 27 } 28 } 29 } while(!bsorted); TRACE("After Sort\n"); 4 32 for(i=0;i<arnumbers.getsize();i++) 33 TRACE("[%d] = %d\n",i+1,arnumbers[i]); 34 } Listauksessa 27.1 järjestetään rivillä 11 luotu satunnaislukutaulukko (lukuarvot 1 100). Riveillä tulostetaan taulukon sisältö TRACE-lauseella ennen taulukon järjestämistä. Riveillä taulukko järjestetään vaihtamalla väärässä järjestyksessä olevat parit keskenään (kutsumalla rivillä 25 Swap()-funktiota). Riveillä 1 6 esitetty Swap()-funktio käyttää parametreinä osoitinta taulukkoon ja sijaintia siinä ja vaihtaa kaksi tuossa taulukon paikassa olevaa lukua keskenään. Järjestämisen jälkeen taulukon sisältö tulostetaan uudelleen Outputikkunaan rivin TRACE-lauseilla. Tämän ohjelman TRACE-lauseiden tulostus näkyy Developer Studion Output-ikkunassa taulukon 27.3 mukaisesti. Järjestämisalgoritmi Vaikka tämä järjestämisalgoritmi sopiikin hyvin debuggaamisen havainnollistamiseen, se lienee järjestämisalgoritmeista tehottomimpia. Jos tarvitset tehokasta järjestämistä, tutki quicksort-algoritmia, joka on toteutettu C++-kirjaston qsort()-funktioksi. TAULUKKO 27.3 Sort-ohjelman tulostus Ennen Jälkeen [1] = 42 [1] = 1 [2] = 68 [2] = 25 [3] = 35 [3] = 35 [4] = 1 [4] = 42 [5] = 70 [5] = 59 [6] = 25 [6] = 63 [7] = 79 [7] = 65

13 OSA VII LUKU Ennen Jälkeen [8] = 59 [8] = 68 [9] = 63 [9] = 70 [10] = 65 [10] = 79 ASSERT- ja VERIFY-makrojen käyttö ASSERT-makroa käytetään, kun halutaan varmistaa, että tietty ehto on tosi. Makrolle annetaan yksi parametri, ehtolause, joka voi olla joko TRUE tai FALSE. Jos ehtolause on tosi (TRUE), mitään ei tapahdu. Jos ehto on epätosi (FALSE), ohjelma pysähtyy ja Debug Assertion Failed valintaikkuna esitetään (kuva 27.7). Tässä voit valita, haluatko lopettaa ohjelman suorituksen (Abort), debugata sovellusta (Retry) vai olla huomioimatta ilmoitusta (Ignore). Ikkunassa esitetään myös ohjelma, lähdekoodirivi sekä lauseen rivinumero. Jos valitset Abort, debuggausistunto keskeytetään. Retry on luultavasti käyttökelpoisin näistä valinnoista, koska tällöin kääntäjä näyttää ohjelmakoodin, jossa ASSERT-makro epäonnistui, jolloin voit tutkia, mikä vian aiheutti. Jos asia on jo selvä tai et halua huomioida ilmoitusta, voit valita Ignore ja jatkaa ohjelman suorittamista mikä tosin saattaa johtaa vielä vakavampiin virheisiin. KUVA 27.7 Debug Assertion Failed ikkunasta voit hakea ohjelmavikoja. ASSERT-makroa käytetään usein syöttöparametrien tarkistamiseen. Voit esimerkiksi parantaa Swap()-funktion luotettavuutta (listauksessa 27.1) tutkimalla sen syöttöparametrit. Lisää tätä varten Swap()- funktion alkuun seuraavat ASSERT-makrot: ASSERT(pdwNumbers); ASSERT(i>=0 && i<10);

14 666 Kehittyneet tekniikat Tämä varmistaa, että osoitin taulukkoon ei ole NULL ja että paikka taulukossa on väliltä 0 9. Mikäli jompikumpi ehto ei pidä paikkaansa, esitetään Debug Assertion Failed ikkuna. Tällä tekniikalla voit selvittää virheellisistä syöttöparametreistä johtuvia virheitä. On hyvä tapa tarkistaa aina funktion syöttöparametrit, jotta ne vastaisivat odotettuja arvoja. Toinen vastaava makro, ASSERT_VALID, on käytettävissä CObjectkantaluokasta johdettujen luokkien kanssa (esimerkiksi kaikki MFCluokat). Tämä tarkistaa olion ja sen sisällön läpikotaisemmin varmistaen, että koko olio on kunnossa ja oikeassa tilassa. Voit syöttää tälle makrolle osoittimen olioon esimerkiksi näin: Muita sijoiitusmakroja Vähemmän käytettyjä sijoitusmakroja (assert...) on muun muassa ASSERT_POINTER, joka käyttää parametreinä osoitinta ja sen viittaamaa tieto/oliotyyppiä. ASSERT_POINTER varmistaa, ettei osoitin ole NULL ja varaa muistia ja tarkistaa, että olio sopii siihen. Vastaava sijoitustesti on myös ASSERT_NULL_OR_POINTER, joka sallii NULL-osoittimet, muttei osoittimia olioihin, jotka käyttävät nykyiselle prosessille käymättömiä muistiosoitteita. ASSERT_VALID(pdwNumbers); Toinen ASSERT-tyyppinen makro ASSERT_KINDOF, jota myös käytetään CObject-kantaluokasta johdettujen olioiden kanssa, tarkistaa, onko luokka oikeaa tyyppiä. Jos esimerkiksi haluat tarkistaa, onko näkymäosoittimesi oikeaa näkymäluokkaa, kirjoittaisit ASSERT_KINDOF-makron näin: ASSERT_KINDOF(CYourSpecialView,pYView); Ellei luokka ole oikeaa tyyppiä tai siitä johdettua luokkaa, esitetään Assertion Failed ikkuna. Muista varoa sijoittamasta normaalissa ohjelman toiminnassa tarvittavaa koodia ASSERT-makroon, koska niitä ei käännetä Release-versioon. Esimerkki tavallisesta Release-tilan vaikeasti jäljitettävästä koodausvirheestä on tällainen: int a = 0; ASSERT(++a >0); if (a>0) MyFunc(); Debug-käännöksessä tämä koodi kasvattaa kokonaislukua ASSERTrivillä ja kutsuu sitten MyFunc()-funktiota seuraavalla rivillä, koska a on nollaa suurempi. Koska firmasi myyntimiehet ovat halukkaita esittelemään ohjelmaa ja koska Debug-tilassa ei näyttänyt olevan ongelmia, päätät kääntää ohjelmasta Release-version. Tämä versio toimitetaan sitten myyntimiehille, jotka esittävät sen tulevalle asiakkaalle ja ohjelma kaatuu komeasti. Syy tähän on, että ++a lausetta ei suoriteta eihän Release-tilassa käännetä ASSERT-lauseita. VERIFY-makro auttaa tähän ongelmaan. Se toimii Debug-tilassa aivan samoin kuin ASSERT-makro ja näyttää saman Assertion Failed ikkunan, mikäli syötetty lause on 0 (FALSE). Lause suoritetaan kuitenkin Release-tilassa, mutta nollatuloksesta ei näytetä Assertion-ikkunaa. VERIFY sopiikin käytettäväksi, kun sille syötetty lause halutaan

15 suorittaa aina ja ASSERT, kun lause halutaan tarkistaa ainoastaan debugattaessa. Tästä syystä edellisen esimerkin ASSERT-makron korvaaminen VERIFY:lla saa myös Release-version toimimaan oikein: VERIFY(++a > 0); Useammin VERIFY-makroja näkee kuitenkin käytettävän funktioiden paluuarvoja tarkistettaessa: VERIFY(MyFunc()!= FALSE); OSA VII LUKU Keskeytyskohtien ja ohjelman yksittäisaskelluksen käyttö Suurimpaan osaan ohjelmavioista tehoaa parhaiten ohjelman yksittäisaskellus (single stepping) ja keskeytyskohtien (breakpoint) käyttö. Visual C++ tukee hyvin edistyneitä keskeytyskohtatyyppejä ja yksittäisaskellustietoja ja toivottavasti onnistun antamaan tämän debuggaustyökalun tehosta edes vähän esimakua. Yksittäisaskelluksen keskeinen osa on keskeytyskohtien käyttö. Voit asettaa keskeytyskohdan mihin tahansa kohtaan koodiasi ja ajaa sitten ohjelmaa debuggerissa. Kun keskeytyskohta saavutetaan, ohjelmakoodi merkitystä kohdasta näytetään editori-ikkunassa ja voit jatkaa ohjelman suorittamista siitä lause kerrallaan tai ajamista jatkamalla. Keskeytyskohta lisätään määrätylle koodiriville valitsemalla rivi (napauttamalla osoitin kyseiselle riville editorissa) ja napauttamalla tämän jälkeen Build-työkalurivin (kuva 27.8) Breakpoint-kuvaketta tai F9-näppäintä. Monimutkaisemmat keskeytyskohdat voidaan asettaa Edit-valikon Breakpoints-komennolla esitettävässä ikkunassa (kuva 27.9). Kun lisäät keskeytyskohdan, se esitetään pienenä punaisena pisteenä valitun rivin vieressä. Keskeytyskohdan on oltava todellisessa suoritettavassa lauseessa, joten joskus Developer Studio siirtää keskeytyskohdan lähimmälle tällaiselle riville. KUVA Keskeytyskohdan lisääminen koodiisi Build-pienoistyökalurivillä tai F9-näppäimellä Käännä (Compile, Ctrl+F7) 2 Koosta (Build, F7) 3 Lopeta koostaminen (Stop Build, Ctrl+Break) 4 Aja (Go, F5) 5 Lisää/poista keskeytyskohta

16 668 Kehittyneet tekniikat KUVA 27.9 Keskeytyskohdan lisääminen Breakpoints-valintaikkunasta. Voit lisätä tai poistaa keskeytyskohdan napauttamalla vastaavaa (käden muotoista) kuvaketta tai poistaa sen Breakpoints-valintaikkunan Remove- tai Remove All painikkeella. Keskeytyskohdat voidaan jättää merkityiksi, mutta poistaa käytöstä poistamalla sen valinnan Breakpoints-luettelosta. Uudelleen napauttamalla valintaruutu merkitään ja keskeytyskohta aktivoidaan. Asetettuasi keskeytyskohdat voit ajaa ohjelmaa debuggerissa valitsemalla Build-valikon Start Debug alivalikosta Go. Voit myös napauttaa Go-kuvaketta (Breakpoint-kuvakkeen vasemmalla puolen, kuva 27.8) tai näppäillä F5. Ohjelmaa ajetaan normaalisti, kunnes keskeytyskohta saavutetaan. Tällöin ohjelma pysähtyy ja keskeytyskohta esitetään nuolella. Tässä vaiheessa voit jatkaa yksittäisaskeltamista (step) Debug-työkaluriviltä, kuten kuvassa esitetään. Tarvittaessa saat tämän työkalurivin esiin napauttamalla hiiren oikealla painikkeella ikkunan yläosan työkalurivien paikalla ja valitsemalla pikavalikosta Debug. KUVA Keskeytyskohtaan pysähtynyt debuggeri on valmis yksittäisaskellukseen Debugtyökaluriviltä. Kun debuggerissa on pysäytetty ohjelman suorittaminen, pääset tutkimaan muuttujien arvoja yksinkertaisesti kuljettamalla osoitinta niiden yli editori-ikkunassa. Tällöin muuttujan arvo näkyy työkaluvih-

17 jeen tavoin osoittimen kohdalla. Lisää yksityiskohtia saat, jos raahaat muuttujan Watch-ikkunaan (tästä lisää seuraavassa kappaleessa). Voit yksittäisaskeltaa koodin lauseita käyttäen Debug-työkalurivin neljää aaltosulkukuvaketta tai valitsemalla vastaavan toiminnon Debug-valikosta. Eri askellusvaihtoehdot on esitetty taulukossa Nämä kaikki löytyvät sekä Debug-työkaluriviltä että Debug-valikosta. TAULUKKO 27.4 Yksittäisaskellusvaihtoehdot Kuvake/Valinta Näppäin Toiminta OSA VII LUKU Step Into F11 Debuggeri suorittaa nykyisen rivin ja mikäli kyseessä on funktiokutsu, suoritta mista jatketaan tuon funktion sisällä. Step Over F10 Kuten Step Into, mutta funktiokutsun kohdalla tuo funktio suoritetaan normaalinopeudella ja sen jälkeen ohjelmansuoritus pysäytetään, jolloin näyttää kuin suorituksessa olisi hypätty funktion ylitse. Step Out vaihto+f11 Debuggeri suorittaa funktio loppuosan normaalilla nopeudella ja pysähtyy, kun funktiosta palataan kutsuvaan funktioon. Run to Cursor Ctrl+F10 Ohjelmaa suoritetaan debuggerissa, kunnes määräämäsi osoittimen sijainti saavutetaan. Tämä sijainti voidaan merkitä hiirellä ohjelmariviä napauttamalla. Go F5 Ohjelmansuoritusta jatketaan seuraavaan keskeytyskohtaan saakka. Stop Debugging vaihto+f5 Debuggerin käyttö lopetetaan ja palataan muokkaustilaan.

18 670 Kehittyneet tekniikat Kuvake/Valinta Näppäin Toiminta Restart Ctrl+vaihto+F5 Tällä valinnalla ohjelma käynnistetään uudelleen alusta ja pysähdytään ensimmäiselle riville. Break Execution Tällä valinnalla debuggerissa normaalisti ajettava ohjelma pysäytetään. Apply Code Changes Alt+F10 Jos olet tehnyt muutoksia koodiin debuggauksen aikana, voit tällä valinnalla kääntää koodin ja jatkaa debuggaamista samasta paikasta. Näillä valinnoilla voit seurata ohjelmansuorituksen kulkua ja muuttujien arvoja koodin muokatessa niitä. Editori-ikkunan keltainen nuoli osoittaa aina, mikä lause suoritetaan seuraavaksi. Seuraavassa kappaleessa kerrotaan ohjelmansuorituksen pysähdyttyä käytettävissä olevista debuggeri-ikkunoista. Edit and Continue toiminnan käyttö Eräs Visual C uusista hienoista ominaisuuksista on nimeltään Edit and Continue (muokkaa ja jatka). Tämä tarkoittaa, että voit muokata koodia ohjelman ollessa pysäytettynä debuggeri-ikkunassa. Muokkaamisen jälkeen saat käyttöön Debug-valikon Apply Code Changes komennon (ja työkalurivin painikkeen ). Tämän valitsemalla koodiin tekemäsi muutokset käännetään ja voit jatkaa debuggaamista uutta muuttunutta koodia käyttäen. Tätä ominaisuutta hyödyntäen voit korjata viat debuggauksen aikana ja jatkaa debuggaamista samasta kohden samoin muuttujien arvoin kuin ennen muokkaamista. Tämä on erityisen hyödyllistä laajoissa ja mutkikkaissa ohjelmissa. Ohjelman muuttujien seuraaminen Kuvassa esitetään Watch- ja Variables-ikkunat. Näissä ikkunoissa esitetään muuttujien arvot, kun ohjelmansuoritus debuggerissa on

19 keskeytetty. Saat nämä ikkunat tarvittaessa esiin View-valikon Debug Windows valikosta tai työkalurivin painikkeilla tai. OSA VII LUKU KUVA Watch-ikkunassa esitetään muuttujien arvot debuggauksen aikana. 1 Watch-ikkuna 2 Muuttujat 3 Context-yhdistelmäruutu Variables-ikkuna esittää aina ikkunan yläosan Context-yhdistelmäruudussa esitetyn funktion paikalliset muuttujat. Löydät tarvittavan funktion avaamalla yhdistelmäruudun ja hakemalla funktion juuri kutsuttujen funktioiden luettelosta. Kyseessä on funktiokutsupino (Call Stack), jossa esitetään kaikki pysäytyskohtaan pääsemiseksi tarvitut funktiokutsut. Kun valitset toisen funktion, ikkunassa esitettäviksi vaihtuvat vastaavat muuttujat. Voit laajentaa olio-osoittimen napauttamalla nimen vieressä olevaa plusmerkkiä. C++:n this-osoitin näytetään aina luokan jäsenfunktioita varten ja sen laajentamalla saat esiin kaikki nykyisen olion jäsenmuuttujat. Watch-ikkunassa voit syöttää muuttujien nimiä näppäimistöltä tai raahata muuttujan nimen ikkunaan suoraan editorista (kun olet nimen ensin hiirellä valinnut). Esitettävien muuttujien arvot näytetään niin kauan kuin ne ovat voimassa (eli sillä hetkellä debugattavan funktion käytettävissä). Lausekkeiden avaaminen QuickWatchilla Voit käyttää QuickWatch-ikkunaa laskimena, johon voidaan syöttää matemaattisia ja loogisia lausekkeita mukaan lukien ohjelman muuttujat arvoineen. Kun Recalculate-painiketta painetaan, lausekkeen arvo esitetään Current Value - ruudussa.

20 672 Kehittyneet tekniikat Voit syöttää Watch-ikkunassa myös yksinkertaisia taulukon indeksejä tai tyyppimuunnosoperaattoreita (cast). Hiiren oikealla painikkeella voit muuttaa näytettävän arvon kokonaislukumuodosta heksadesimaaliseksi ja päinvastoin. Kun askellat ohjelmaa eteenpäin, Watch- ja Variable-ikkunoissa esitettävien muuttujien arvot päivitetään ja voit seurata, kuinka ohjelmansuoritus muuttaa muuttujien arvoja. Assembly-koodin yksittäisaskellus Kun Disassembly-ikkuna on esillä, debuggeri käy läpi assembly-koodin käsky kerrallaan. Assembly-koodi ja vastaava toimintakoodi ovat suoritettavan koodisi tavuja, jotka edustavat CPU-käskyjä. Assembly-koodin askellus käsky kerrallaan on hidasta ja raskasta, mutta se selittää tarkkaan, miksei ohjelmasi toimi kuten pitäisi. Se on lisäksi usein ainoa tapa löytää vikoja itse kääntäjän tekemästä koodista. Kääntäjä saattaa joskus erehtyä optimoidessaan ja kääntäessään mutkikasta lähdekoodia. Muita debuggerin ikkunoita Muut debuggerin ikkunat saadaan esille View-valikon Debug Windowsalivalikosta valitsemalla tai vaihtoehtoisesti Debug-työkaluriviltä. Nämä ikkunat ovat: QuickWatch. Napauttamalla muuttujaa luettelosta ja valitsemalla QuickWatch (tai näppäilemällä vaihto+f9) saadaan valitun muuttujan sisältö esiin. Voit myös syöttää muuttujan nimen suoraan ja siirtää sen seurattavaksi Watch-ikkunaan Add Watch painikkeella. Registers. Registers-ikkunassa esitetään CPU:n rekisterien senhetkiset arvot. Tästä ei liene merkittävää hyötyä, ellet ratko assembly-kielisen koodin ongelmia. Memory. Memory-ikkunassa esitetään sovelluksen muistialue sarakkeittain: ensimmäisessä on osoite, toisessa muistipaikkojen arvot heksadesimaalisena ja kolmannessa samat merkkeinä. Voit muuttaa pikavalikosta esitysmuodon Bytetyyppisestä myös Short tai Long-tyyppisiksi. Call Stack. Call Stack ikkunassa näytetään luettelo funktioista, joita on kutsuttu ennen kuin nykyiseen funktioon on päästy sekä kullekin funktiolle syötetyn parametrit. Tästä on hyötyä erityisesti jäljitettäessä ohjelmansuoritusta nykyiseen funktioon saakka. Jos kaksoisnapautat luettelon funktiota, näet editori-ikkunassa paikan funktiosta, missä kyseistä funktiota kutsuttiin. Jos lähdekoodia ei ole saatavilla, funktiokutsut näyttävät seuraavalta: KERNEL32! bff88f75() Tällaista alkiota napautettaessa näytetään C++-koodin sijaan assembly-koodia.

21 OSA VII LUKU Disassembly. Jos valitset työkaluriviltä tai valikosta Disassembly-komennon, voit vaihtaa näytettäväksi pelkkää C++-koodia tai sekä C++:aa että assembly-koodia. Jos C++kielistä lähdekoodia ei ole saatavilla, näytetään pelkästään assembly-koodia. Muita debuggaustyökaluja Sisäänrakennettujen debuggaustyökalujen lisäksi kääntäjän mukana on myös useita itsenäisiä, mutta käyttökelpoisia debuggausohjelmia. Saat käynnistettyä näitä Tools-valikosta valitsemalla. Näillä työkaluilla seurataan usein tiettyjä Windowsin osia, kuten sanomia, suoritettavia prosesseja tai rekisteröityjä OLE-objekteja. Näin saadaan vielä lisätietoa sovelluksen debuggaamiseen. Spy++ Spy++ on epäilemättä näistä työkaluista käyttökelpoisimpia. Spy++:lla voit nähdä lapsi- ja isäikkunoiden hierarkian, ikkunoiden asemat ja liput sekä ikkunan kantaluokan. Voit myös seurata ikkunalle lähetettäviä sanomia. Kun käynnistät Spy++:n ensimmäisen kerran, se näyttää kaikki työpöydän ikkunat, niiden osat sekä kunkin ikkunan kantaluokan (kuva 27.12). Kuvan näkymää on vieritetty näyttämään Windowsin CD Player apuohjelman tiedot. Spy++ näyttää kaikki painikkeet ja yhdistelmäruudutkin, jotka ovat itsekin lapsi-ikkunoita CD Player pääikkunassa.

22 674 Kehittyneet tekniikat KUVA Spy++:n alkunäyttö Windowsin työpöydältä CD Player -osa esitettynä. Jos napautat Spy-valikkoa, saat esiin seuraavat komennot: Messages. Huomaat tämän pian erääksi Spy++:n parhaista toiminnoista, sillä voit seurata kaikille ikkunoille lähetettyjä sanomia (myös omalle sovelluksellesi). Voit myös valita vain osan sanomista näytettäväksi, sillä esimerkiksi hiiren liike saa aikaan suuren joukon sanomia. Sanomien seuraamiseksi valitse tämä komento ja saat esiin Message Options ikkunan (kuva 27.13). Tästä ikkunasta voit raahata Finder-osoittimen seurattavan ikkunan päälle. Osoitinta siirrettäessä se näyttää vielä tietoja osoitettavasta ikkunasta. Spy++ korostaa tämän lisäksi osoitettavan ikkunan, josta erottuvat vielä kehysikkuna ja ikkunan työalue (client). Kun olet paikantanut oikean ikkunan, vapauta hiiren painike ja ikkuna on valittu. Tässä vaiheessa pääset käyttämään ikkunan toisia välilehtiä valitaksesi mahdollisesti vain osan sanomista näytettäviksi sekä asettaaksesi esitettävän tiedon muotoa. Kun olet valmis, sulje Message Options ikkuna OK:lla. Kuvassa esitetty Spy++-ohjelman tulostus näyttää tavallisen SDI-sovelluksen työkalurivin käytön tuottamia sanomia. Kuten huomaat, kaikkia sanomia tarkkailemalla hiiren liike ja osoittimen tarkistus saavat suuren osan tulostusalasta. Onneksi mukana on myös tuttu WM_LBUTTONUP paikkaparametreineen.

23 OSA VII LUKU KUVA Spy++:n Message Options ikkunan Finder-osoittimella valitaan tutkittava ikkuna. KUVA Työkalurivin käytöstä tulevia Spy++:n kirjaamia Windowsin sanomia. Windows. Kuvassa on esitetty Windows-näkymä on Windowsin työpöydän rakenne- ja asettelunäkymä. Jos kaksoisnapautat luettelon ikkunan nimeä, saat esiin ominaisuussivun, jossa esitetään kaikki valitun ikkunan paikka- ja lipputiedot. Tämän tiedon päivittämiseksi tarvitset Windows-valikon Refresh-komentoa. Processes. Saat esiin kaikki ajossa olevat prosessit (ohjelmat) Processes-näkymästä. Kukin prosessi voidaan vielä laajentaa esittämään sen säikeet (thread) sekä siihen liittyvät ikkunat. Threads. Sama kuin Processes ilman prosessien nimiä. Tällä näet kaikki ajossa olevat säikeet (ohjelmien suoritusputket) sekä säikeiden omistamat ikkunat. Spy++-työkalussa on enemmän ominaisuuksia kuin tässä mahtuu käsittelemään, mutta Windowsin rakenteen ja sanomien ymmärtämisessä se on vertaansa vailla. Saat paljon arvokasta tietoa jo tutkimalla tavallista kaupallista sovellusta Spy++:lla. Se on myös oiva

24 676 Kehittyneet tekniikat debuggaustyökalu selvitettäessä sanomista johtuvia ongelmia; Spy++:lla näet, saavatko ikkunasi oikeita sanomia ja missä järjestyksessä sanomat tulevat. KATSO MYÖS Lisätietoja Windowsin sanomista luvusta 4. Process Viewer Näet prosessien tiedot Spy++:aa tarkemmin Process Viewer ohjelmalla (PView95.exe tai Pview.exe). Löydät tämän sovelluksen Windowsin päävalikosta valitsemalla Käynnistä/Ohjelmat/Microsoft Visual Studio 6.0 Tools valikon (Start/Programs/ Microsoft Visual Studio 6.0 Tools). Tällä sovelluksella näet koneessasi ajossa olevat prosessit ja voit lajitella niitä sarakkeen otsikkoa napauttamalla (PView95). Prosessia napauttamalla saat näkyviin alempaan ikkunaan sen säikeet. Kuvassa on esitetty Process Viewer, jossa on valittu Developer Studio prosessi sen säikeiden näyttämiseksi. KUVA Process Viewer näyttää MSDEV.EXEn ja sen säikeet. OLE/COM Object Viewer OLE/COM Object Viewer työkalulla näytetään kaikki järjestelmään rekisteröidyt OLE/COM-objektit, mukaan lukien ActiveX-kontrollit, tyyppikirjastot, upotettavat objektit, automaatio-objektit sekä monet muut ryhmät. Ohjelmasta käsin voit jopa luoda eri objektien ilmentymiä ja tutkia yksityiskohtaisesti niiden liittymiä. OLE/COM Object Viewer sopii käytettäväksi OLE/COM-sovelluksia kehitettäessä sekä vaikeasti selvitettävien ActiveX-kontrollien tutkimiseen.

25 KATSO MYÖS Lisätietoja ActiveX-kontrollien käytöstä sovelluksissasi luvusta 9. Lisätietoja ActiveX-kontrollien luomisesta luvusta 26. Yksityiskohtia COMista ja OLEsta luvusta 25. OSA VII LUKU MFC Tracer Kuvan MFC Tracer työkalulla voit estää normaalin TRACEmakron käytön tai lisätä normaaliin TRACE-tulostukseen lisätietoja. Tämän työkalun käynnistäessäsi saat esiin joukon valintaruutuja, joita valitsemalla tai valintoja poistamalla tulostettavien TRACE-tietojen määrää voidaan muuttaa. Voit lisätä seurattavaksi tietoja Windowsin sanomista, tietokantasanomista, OLE-sanomista sekä muista helpottaaksesi hankalien ongelmien ratkaisemista. MFC-koodi luo nämä sanomat asetettujen lippujen mukaan. Voit jopa poistaa tavallisen TRACE-tulostuksen käytöstä poistamalla Enable Tracing valinnan. KUVA MFC Tracer työkalun valinnat.

26 678 Kehittyneet tekniikat

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

Visual C++ -ohjelman tekeminen ja suunnittelu

Visual C++ -ohjelman tekeminen ja suunnittelu Visual C++ -ohjelman tekeminen ja suunnittelu OSA I LUKU 1 5 1 LUKU Visual C++ -ohjelman tekeminen ja suunnittelu Windows sovellusten tekeminen AppWizardilla Sovelluksen muokkaaminen resurssieditorilla

Lisätiedot

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Microsoft SQL käyttö Yleistä VisualStudiosta Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: - sovellushallintaan -

Lisätiedot

Kehitysympäristö LUKU. Developer Studio kehitysympäristön alkeet. Liikkuminen projektin työtilassa ja sen eri näkymissä

Kehitysympäristö LUKU. Developer Studio kehitysympäristön alkeet. Liikkuminen projektin työtilassa ja sen eri näkymissä OSA I LUKU 2 23 2 LUKU Developer Studio kehitysympäristön alkeet Liikkuminen projektin työtilassa ja sen eri näkymissä Projektien hallinnan vaatimat asetukset 24 Developer Studio - ympäristön räätälöinti

Lisätiedot

erasmartcardkortinlukijaohjelmiston

erasmartcardkortinlukijaohjelmiston erasmartcardkortinlukijaohjelmiston asennusohje Sisällysluettelo 1. erasmartcard... 2 2. erasmartcard-ohjelmiston normaali asennus... 3 2.1. Ennen asennusta... 3 2.2. Asennus... 3 3. Muut asennustavat...

Lisätiedot

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER Group 16 Ville Laatu Henri Myllyoja - i SISÄLLYSLUETTELO 1. DEBUGGERI YLEISESTI... II 1.1 Debuggerin käyttämien... ii 1.2 Debuggerin käynnistäminen... ii

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

Lisätiedot

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0 Johdanto Nämä ohjeet opastavat sinut tekemään kurssiin TKT-1110 Mikroprosessorit liittyvät harjoitustyöt. Ohjeet sisältävät kolme osiota. Ensimmäisenä esitellään projektin luonti, mikä tehdään ainoastaan

Lisätiedot

Jypelin käyttöohjeet» Ruutukentän luominen

Jypelin käyttöohjeet» Ruutukentän luominen Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen

Lisätiedot

Muuttujien määrittely

Muuttujien määrittely Tarja Heikkilä Muuttujien määrittely Määrittele muuttujat SPSS-ohjelmaan lomakkeen kysymyksistä. Harjoitusta varten lomakkeeseen on muokattu kysymyksiä kahdesta opiskelijoiden tekemästä Joupiskan rinneravintolaa

Lisätiedot

Valintanauhan komennot Valintanauhan kussakin välilehdessä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja.

Valintanauhan komennot Valintanauhan kussakin välilehdessä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja. Pikaopas Microsoft Excel 2013 näyttää erilaiselta kuin aiemmat versiot. Tämän oppaan avulla pääset alkuun nopeasti ja saat yleiskuvan uusista ominaisuuksista. Komentojen lisääminen pikatyökaluriville Pidä

Lisätiedot

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto Condess ratamestariohjelman käyttö Aloitus ja alkumäärittelyt Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto Kun kysytään kilpailun nimeä, syötä kuvaava nimi. Samaa nimeä käytetään oletuksena

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

JAKELUPISTE KÄYTTÖOHJE 2/6

JAKELUPISTE KÄYTTÖOHJE 2/6 käyttöohjeet JAKELUPISTE KÄYTTÖOHJE 2/6 1. Esittely JakeluPiste on helppo ja yksinkertainen ratkaisu tiedostojen lähettämiseen ja vastaanottamiseen. Olipa kyseessä tärkeä word dokumentti tai kokonainen

Lisätiedot

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

Skype for Business ohjelman asennus- ja käyttöohje Sisällys Skype for Business ohjelman asennus- ja käyttöohje Sisällys Kirjautuminen Office 365 -palveluun... 2 Skype for Business ohjelman asentaminen... 3 Yhteyshenkilöiden lisääminen Skype for Business ohjelmassa...

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

CISS Base Excel raporttien määritys Käyttäjän käsikirja. CISS Base Käyttäjän Käsikirja Econocap Engineering Oy 1

CISS Base Excel raporttien määritys Käyttäjän käsikirja. CISS Base Käyttäjän Käsikirja Econocap Engineering Oy 1 Käyttäjän käsikirja CISS Base Käyttäjän Käsikirja Econocap Engineering Oy 1 Tuotemerkit Accudraw, Bentley, B Bentley logo, MDL, MicroStation, MicroStation/J, QuickVision ja SmartLine ovat rekisteröityjä

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 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

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

Projektin luonti LPCXpressolla

Projektin luonti LPCXpressolla Projektin luonti LPCXpressolla Ensimmäiseksi työtilaan (workspace) pitää liittää käytössä olevalle prosessorille sopiva CMSIS-kirjasto. LPCXpresson projektinluontivelhot olettavat, että projektit käyttävät

Lisätiedot

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 8.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 8.2.2010 1 / 38 Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta ohjelma

Lisätiedot

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA SISÄLLYS 1. KUVAN TUOMINEN PAINTIIN...1 1.1. TALLENNETUN KUVAN HAKEMINEN...1 1.2. KUVAN KOPIOIMINEN JA LIITTÄMINEN...1 1.1. PRINT

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

Tiedostojen lataaminen netistä ja asentaminen

Tiedostojen lataaminen netistä ja asentaminen s. 1/5 Tiedostojen lataaminen netistä ja asentaminen Yleistä Internetissä on paljon hyödyllisiä ilmaisohjelmia, jotka voi ladata ja asentaa omalle koneelle. Osa ohjelmista löytyy suomenkielisiltä sivuilta,

Lisätiedot

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8) WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8) 1 UUDEN KILPAILUTIEDOSTON AVAUS Avaa Wcondes ohjelma tuplaklikkaamalla wcondes.lnk ikonia. Ohjelma avaa automaattisesti viimeksi tallennetun kilpailutiedoston.

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

Lisätiedot

(Tätä ohjetta saa käyttää yliopiston opetustarkoituksiin ja jatkokehittelyyn.)

(Tätä ohjetta saa käyttää yliopiston opetustarkoituksiin ja jatkokehittelyyn.) jbaci Käyttöohje (Tätä ohjetta saa käyttää yliopiston opetustarkoituksiin ja jatkokehittelyyn.) 1. Yleistä jbaci on työkalu, jota käytetään rinnakkaisuuden hallinnan havainnollistamiseen ja harjoitteluun.

Lisätiedot

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

Skype for Business ohjelman asennus- ja käyttöohje Sisällys Skype for Business ohjelman asennus- ja käyttöohje Sisällys Kirjautuminen Office 365 -palveluun... 2 Skype for Business ohjelman asentaminen... 3 Yhteyshenkilöiden lisääminen Skype for Business ohjelmassa...

Lisätiedot

ELOKUVAKASVATUS SODANKYLÄSSÄ VIDEON SIIRTÄMINEN DVD-LEVYLLE

ELOKUVAKASVATUS SODANKYLÄSSÄ VIDEON SIIRTÄMINEN DVD-LEVYLLE ELOKUVAKASVATUS SODANKYLÄSSÄ 99600 Sodankylä +358 (0)40 73 511 63 tommi.nevala@sodankyla.fi Elokuvakasvatus Sodankylässä Oppimateriaali 9/2005 VIDEON SIIRTÄMINEN DVD-LEVYLLE ROXIO TOAST LITE 6 2 ROXIO

Lisätiedot

HOW-TO: Kuinka saan yhdistettyä kaksi tulospalvelukonetta keskenään verkkoon? [Windows XP]

HOW-TO: Kuinka saan yhdistettyä kaksi tulospalvelukonetta keskenään verkkoon? [Windows XP] HOWTO: Tulospalveluohjelman asetusten määrittely verkkokäytössä 1/5 HOW-TO: Kuinka saan yhdistettyä kaksi tulospalvelukonetta keskenään verkkoon? [Windows XP] Kaksi tietokonetta saa kytkettyä keskenään

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu HAAGA HELIA/IltaTiko ICT2TD005: Ohjelmisto suunnittelutaito 1 VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu Tämä pikaopas opastaa käyttämään VisualStudion web sivujen suunnittelu ja toteutusominaisuuksia.

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

BaseMidlet. KÄYTTÖOHJE v. 1.00

BaseMidlet. KÄYTTÖOHJE v. 1.00 KÄYTTÖOHJE v. 1.00 KUVAUS BaseMidlet on matkapuhelimessa toimiva sovellus jolla voi etäkäyttää Tiimi 7000 sarjan säätimiä. Copyright Team-Control Oy, oikeudet muutoksiin pidätetään. TiiMi on Team-Control

Lisätiedot

Ohjelman Suositukset. Luku 5 Suositukset

Ohjelman Suositukset. Luku 5 Suositukset Luku 5 Suositukset Suositukset ovat asetuksia jotka määräävät kuinka ZoomText käynnistyy, lopettaa ja esiintyy Windows työpöydällä käytön aikana. Aktivoimalla Automaattiset Päivitykset, aina ZoomTextin

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8) WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8) 1 UUDEN KILPAILUTIEDOSTON AVAUS Avaa Wcondes ohjelma tuplaklikkaamalla wcondes.lnk ikonia. Ohjelma avaa automaattisesti viimeksi tallennetun kilpailutiedoston.

Lisätiedot

Coolselector Asennusohje

Coolselector Asennusohje MAKING MODERN LIVING POSSIBLE Coolselector Asennusohje Täydellinen valinta on vain muutaman klikkauksen päässä www.danfoss.fi/kylma Yleiset vaatimukset Windows XP asennus Windows 7 asennus Asennuksen poisto

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 10.10.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 10.10.2018 1 / 20 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten ohjelman toimintaa voi tutkia ja ohjelmassa

Lisätiedot

17 BUDJETOINTI. Asiakaskohtainen Budjetti. 17.1 Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust. 17.1.1 Yleistä

17 BUDJETOINTI. Asiakaskohtainen Budjetti. 17.1 Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust. 17.1.1 Yleistä 17 Asiakaskohtainen Budjetti 17.1 Ylläpito-ohjelma 17.1.1 Yleistä BudgCust Ohjelmalla avataan järjestelmään asiakaskohtaisia budjetteja, jotka annetaan kuukausitasolla (oletus). 17.1.2 Parametrit Ohjelmaa

Lisätiedot

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

Lisätiedot

MultiBoot. Käyttöopas

MultiBoot. Käyttöopas MultiBoot Käyttöopas Copyright 2006 Hewlett-Packard Development Company, L.P. Tässä olevat tiedot voivat muuttua ilman ennakkoilmoitusta. Ainoat HP:n tuotteita ja palveluja koskevat takuut mainitaan erikseen

Lisätiedot

OPISKELIJAN OPINNOT -NÄYTTÖ. Opiskelijan opintosuoritustietoja katsellaan Opiskelijan opinnot -näytöltä. Näyttö löytyy päävalikosta Opinnot.

OPISKELIJAN OPINNOT -NÄYTTÖ. Opiskelijan opintosuoritustietoja katsellaan Opiskelijan opinnot -näytöltä. Näyttö löytyy päävalikosta Opinnot. Helsingin yliopisto WinOodi Sivu 1/5 OPISKELIJAN OPINNOT -NÄYTTÖ Opiskelijan opintosuoritustietoja katsellaan Opiskelijan opinnot -näytöltä. Näyttö löytyy päävalikosta Opinnot. Opiskelijan opinnot -näytölle

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

1 Funktiot, suurin (max), pienin (min) ja keskiarvo

1 Funktiot, suurin (max), pienin (min) ja keskiarvo 1 Funktiot, suurin (max), pienin (min) ja keskiarvo 1. Avaa uusi työkirja 2. Tallenna työkirja nimellä perusfunktiot. 3. Kirjoita seuraava taulukko 4. Muista taulukon kirjoitusjärjestys - Ensin kirjoitetaan

Lisätiedot

Hellä ensikosketus. Tomi Kiviniemi

Hellä ensikosketus. Tomi Kiviniemi Hellä ensikosketus Tomi Kiviniemi Asialista Vähän debuggauksen filosofiaa. GDB:n peruskäyttö Netbeansissä. GDB:n peruskäyttö komentoriviympäristössä. Hieman edistyneempää sähellystä komentoriviympäristössä.

Lisätiedot

Sähköposti ja uutisryhmät 4.5.2005

Sähköposti ja uutisryhmät 4.5.2005 Outlook Express Käyttöliittymä Outlook Express on windows käyttöön tarkoitettu sähköpostin ja uutisryhmien luku- ja kirjoitussovellus. Se käynnistyy joko omasta kuvakkeestaan työpöydältä tai Internet Explorer

Lisätiedot

Olet tehnyt hyvän valinnan hankkiessasi kotimaisen StorageIT varmuuskopiointipalvelun.

Olet tehnyt hyvän valinnan hankkiessasi kotimaisen StorageIT varmuuskopiointipalvelun. StorageIT 2006 varmuuskopiointiohjelman asennusohje. Hyvä asiakkaamme! Olet tehnyt hyvän valinnan hankkiessasi kotimaisen StorageIT varmuuskopiointipalvelun. Ennen asennuksen aloittamista Varmista, että

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

TTS kannattavuuslaskentaohjelma

TTS kannattavuuslaskentaohjelma TTS kannattavuuslaskentaohjelma Käyttöönotto TTS kannattavuuslaskentaohjelma on suunniteltu yrittäjän apuvälineeksi yrityksen keskeisten kannattavuuden, maksuvalmiuden ja vakavaraisuuden tunnuslukujen

Lisätiedot

C# 3.0:n uudet ominaisuudet Language Integrated Query...45

C# 3.0:n uudet ominaisuudet Language Integrated Query...45 Luku 1 Johdanto... IX Tutustutaan Visual Studioon Visual Studion uusin versio...2 Mikä Visual Studio on?...2 Tuki tiimityölle eli Visual Studio Team System...4 Microsoft Expression -tuoteperhe...5 Visual

Lisätiedot

Kompassi-digikokeen julkaisu opettaja

Kompassi-digikokeen julkaisu opettaja Kompassi-digikokeen julkaisu opettaja Ennen kuin voit julkaista kokeen oppilaillesi, heidän pitää liittyä tekemääsi työtilaan avaimella ja avata Kompassi napauttamalla Kompassi-digikokeet -linkkiä. Tällöin

Lisätiedot

OHJE EXCEL-MAKRON LUOMISEKSI JA MAKRON KÄYTÖSTÄ

OHJE EXCEL-MAKRON LUOMISEKSI JA MAKRON KÄYTÖSTÄ OHJE EXCEL-MAKRON LUOMISEKSI JA MAKRON KÄYTÖSTÄ Tässä ohjeessa esitetään kuinka Excel-taulukkolaskentaan luodaan makro ja annetaan muutama vinkki makron käyttöön. Ohje koostuu seuraavasti: 1. Mikä makro

Lisätiedot

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ

TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ Windows XP-käyttöjärjestelmän asetuksilla sekä Word-asetuksilla voit vaikuttaa tietokoneen näytön ulkoasuun, selkeyteen ja helppokäyttöisyyteen.. 1) ASETUKSET

Lisätiedot

KEMI-TORNIONLAAKSON KOULUTUSKUNTAYHTYMÄ LAPPIA LANGATON VIERAILIJAVERKKO 2(7) VERKKOYHTEYDEN MÄÄRITTELY WINDOWS XP:LLE (WINDOWS XP SP3)

KEMI-TORNIONLAAKSON KOULUTUSKUNTAYHTYMÄ LAPPIA LANGATON VIERAILIJAVERKKO 2(7) VERKKOYHTEYDEN MÄÄRITTELY WINDOWS XP:LLE (WINDOWS XP SP3) LANGATON VIERAILIJAVERKKO 1(7) LANGATTOMAN VIERAILIJAVERKON KÄYTTÖ Kemi-Tornionlaakson koulutuskuntayhtymä Lappia tarjoaa vierailijoiden, opiskelijoiden ja henkilökunnan käyttöön suojatun langattoman verkon

Lisätiedot

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN -Mene osoitteeseen keskustanuoret.fi/user - Kirjoita saamasi käyttäjätunnus ja salasana - Klikkaa yllä olevaa piirisi logoa niin

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

erasmartcard-kortinlukijaohjelmiston asennusohje (mpollux jää toiseksi kortinlukijaohjelmistoksi)

erasmartcard-kortinlukijaohjelmiston asennusohje (mpollux jää toiseksi kortinlukijaohjelmistoksi) erasmartcard-kortinlukijaohjelmiston asennusohje (mpollux jää toiseksi kortinlukijaohjelmistoksi) Sisällysluettelo 1 erasmartcard 3 2 erasmartcard-ohjelmiston normaali asennus 4 2.1 Ennen asennusta 4 2.2

Lisätiedot

Tobii Communicator 4. Alkutoimet

Tobii Communicator 4. Alkutoimet Tobii Communicator 4 Alkutoimet TERVETULOA TOBII COMMUNICATOR 4 -OHJELMAAN Tobii Communicator 4:n avulla liikuntarajoitteiset tai kommunikaatiokyvyiltään rajoittuneet henkilöt voivat käyttää tietokonetta

Lisätiedot

HP ProBook 430 G5 kannettavien käyttöönotto

HP ProBook 430 G5 kannettavien käyttöönotto HP ProBook 430 G5 kannettavien käyttöönotto Windows 10:n asennus, päivitysten tarkistus ja Abitti-asetukset Kytke tietokone verkkovirtaan ennen koneen käynnistämistä! Windows 10 Home käyttöjärjestelmän

Lisätiedot

Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje

Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje Sisällysluettelo VIP Laajennettu raportointi... 3 Luo raportti Laajennetun raportoinnin työkaluilla... 4 Avaa Laajennettu raportointi... 4 Valitse

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

Käyttöopas RoofCon Viewer

Käyttöopas RoofCon Viewer Käyttöopas RoofCon Viewer Sisällysluettelo Käyttöopas RoofCon Viewer... 1 Sisällysluettelo... 2 Asennus... 3 Merkitse objekti... 3 Zoomaa... 3 Mittaa etäisyys... 3 Työkaluvalikko ja Piirustusvaihtoehdot...

Lisätiedot

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: {

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: { Osa I 2. oppitunti C++-ohjelman osat Ennen kuin menemme yksityiskohtaisemmin sisälle C++-luokkiin, -muuttujiin jne, katsokaamme ensin, millaisista osista C++-ohjelma koostuu. Tämän tunnin aikana opit seuraavat

Lisätiedot

Osoittimet ja taulukot

Osoittimet ja taulukot C! ja taulukot 1.2.2018 Tiedotteita Tämän jälkeen taas pari väliviikkoa (tenttiviikko) Seuraava luento 22.2. Laskareita ei tenttiviikolla 12.2. 16.2. 2 ja muisti Muisti Keskusyksikkö Suorittaa muistissa

Lisätiedot

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1.

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1. Condes Suunnistuksen ratamestariohjelmisto Versio 7 Quick Start opas Yhteystiedot: olfellows Jouni Laaksonen Poijukuja 4 21120 RAISIO jouni.laaksonen@olfellows.net www.olfellows.net olfellows www.olfellows.net

Lisätiedot

4. Luokan testaus ja käyttö olion kautta 4.1

4. 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ätiedot

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

C-ohjelmoinnin peruskurssi. Pasi Sarolahti C! C-ohjelmoinnin peruskurssi Pasi Sarolahti Mitä haluan oppia C-kurssilla? ja miksi? Tutustu lähimpään naapuriin Keskustelkaa miksi halusitte / jouduitte tulemaan kurssille 3 minuuttia è kootaan vastauksia

Lisätiedot

Tekstinkäsittely ja opinnäytetyö I sisällysluettelo ja sivunumerointi. Word 2007

Tekstinkäsittely ja opinnäytetyö I sisällysluettelo ja sivunumerointi. Word 2007 Tekstinkäsittely ja opinnäytetyö I sisällysluettelo ja sivunumerointi Word 2007 Perttu Suhonen 2008 Sisällysluettelo 1 Sisällysluettelon tekeminen...5 1.1 Monitasoinen numerointi...5 1.2 Otsikkotyylien

Lisätiedot

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA Ohjeistuksessa käydään läpi kuvan koon ja kuvan kankaan koon muuntaminen esimerkin avulla. Ohjeistus on laadittu auttamaan kuvien muokkaamista kuvakommunikaatiota

Lisätiedot

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014 Työpaja Työpaja on vertaisarviointiin soveltuva työkalu. Työpaja mahdollistaa töiden palautuksen ja niiden jakelun opiskelijoiden arvioitavaksi sekä arvioinnin antamisen. Laita Muokkaustila päälle ja lisää

Lisätiedot

Juha Haataja 4.10.2011

Juha Haataja 4.10.2011 METROPOLIA Taulukkolaskenta Perusteita Juha Haataja 4.10.2011 Lisätty SUMMA.JOS funktion käyttö (lopussa). Tavoite ja sisältö Tavoite Taulukkolaskennan peruskäytön hallinta Sisältö Työtila Omat kaavat,

Lisätiedot

Send-It ilmoittautumisjärjestelmä (judotapahtumat Suomessa)

Send-It ilmoittautumisjärjestelmä (judotapahtumat Suomessa) Ilmoittautumis järjestelmän otsikko alue Jokaisella tapahtumalla on otsikko-osa joka on samanlainen joka puolella sovellusta. Tämä Judokilpailuissa käytetty otsikko-osa koostuu viidestä linkistä, joita

Lisätiedot

Moottorin kierrosnopeus Tämän harjoituksen jälkeen:

Moottorin kierrosnopeus Tämän harjoituksen jälkeen: Moottorin kierrosnopeus Tämän harjoituksen jälkeen: osaat määrittää moottorin kierrosnopeuden pulssianturin ja Counter-sisääntulon avulla, osaat siirtää manuaalisesti mittaustiedoston LabVIEW:sta MATLABiin,

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

Muistitikun liittäminen tietokoneeseen

Muistitikun liittäminen tietokoneeseen Muistitikun käyttäminen 1 Muistitikun liittäminen tietokoneeseen Muistitikku liitetään tietokoneen USB-porttiin. Koneessa voi olla useita USB-portteja ja tikun voi liittää mihin tahansa niistä. USB-portti

Lisätiedot

Pikanäppäin Yhdistelmiä. Luku 6 Pikanäppäimet

Pikanäppäin Yhdistelmiä. Luku 6 Pikanäppäimet Luku 6 Pikanäppäimet Pikanäppäimet ovat näppäinyhdistelmiä, jotka mahdollistavt ZoomTextin komennot ilman ZoomTextin käyttäjäliittymän aktivointia. Pikanäppäin komentoja on melkein jokaisella ZoomTextin

Lisätiedot

Kirjan toteutus BoD easybook -taittotyökalun avulla

Kirjan toteutus BoD easybook -taittotyökalun avulla Kirjan toteutus BoD easybook -taittotyökalun avulla Seuraavilla sivuilla esittelemme yksityiskohtaisesti, miten voit helposti ja nopeasti yhdistää kuvia ja tekstiä easybook -taittotyökalun avulla. Edellytykset

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

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

Tilastolliset ohjelmistot 805340A. Pinja Pikkuhookana

Tilastolliset ohjelmistot 805340A. Pinja Pikkuhookana Tilastolliset ohjelmistot 805340A Pinja Pikkuhookana Sisältö 1 SPSS 1.1 Yleistä 1.2 Aineiston syöttäminen 1.3 Aineistoon tutustuminen 1.4 Kuvien piirtäminen 1.5 Kuvien muokkaaminen 1.6 Aineistojen muokkaaminen

Lisätiedot

Valitse aineisto otsikoineen maalaamalla se hiirella ja kopioimalla (Esim. ctrl-c). Vaihtoehtoisesti, Lataa CSV-tiedosto

Valitse aineisto otsikoineen maalaamalla se hiirella ja kopioimalla (Esim. ctrl-c). Vaihtoehtoisesti, Lataa CSV-tiedosto Versio k15 Näin laadit ilmastodiagrammin Libre Officen taulukkolaskentaohjelmalla. Ohje on laadittu käyttäen Libre Officen versiota 4.2.2.1. Voit ladata ohjelmiston omalle koneellesi osoitteesta fi.libreoffice.org.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 23.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 1 / 44 Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta

Lisätiedot

OHJE Jos Kelaimeen kirjautuminen ei onnistu Mac-koneella Sisällys

OHJE Jos Kelaimeen kirjautuminen ei onnistu Mac-koneella Sisällys Sisällys 1 Varmista, että DigiSign-kortinlukijaohjelmisto on käynnissä 2 1.1 DigiSign-kuvake 2 1.2 Sovelluksen käynnistäminen 2 1.3 Kortin toiminnan varmistaminen 4 2 Jos käytät selaimena Mozilla, Firefox

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 4.10.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 4.10.2017 1 / 23 Mahdollisuus antaa luentopalautetta Luennon aikana voit kirjoittaa kommentteja ja kysymyksiä sivulle

Lisätiedot

Asiointipalvelun ohje

Asiointipalvelun ohje Asiointipalvelun ohje Yleistä 1. Kirjautuminen 2. Yhteystiedot 3. Vastaustavan valinta 1. Yleistä 2. Palkkatietojen lataaminen tiedostosta 4. Lomake 1. Yleistä 2. Linkit ja vastaajan tiedot 3. Lomakekäsittely

Lisätiedot

12. Näppäimistöltä lukeminen 12.1

12. Näppäimistöltä lukeminen 12.1 12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.

Lisätiedot

Visma Business AddOn Tuotetarrat. Käsikirja

Visma Business AddOn Tuotetarrat. Käsikirja Visma Business AddOn Tuotetarrat Käsikirja Oppaan päiväys: 30.8.2012. Asiakaspalvelu: Helpdesk: www.visma.fi Visma Software Oy pidättää itsellään oikeuden mahdollisiin parannuksiin ja/tai muutoksiin tässä

Lisätiedot

Automaattitilausten hallinta. Automaattitilauksien uudistettu käsittely

Automaattitilausten hallinta. Automaattitilauksien uudistettu käsittely Automaattitilausten hallinta Raportit Saat yhteenvedon voimassa olevista automaattitilauksista ja automaatti-ilmoituksista hakemistopuun Raportit-valikon alta. PDF-napista voit ladata koneellesi yhteenvedon

Lisätiedot

Octo käyttöohje 1. Sisältö

Octo käyttöohje 1. Sisältö Octo käyttöohje 1 Sisältö Sisältö...1 Sisäänkirjautuminen...2 Etusivu...2 Uimarihaku...3 Uimariryhmät...4 Seurahaku...4 Kilpailutilastot...5 Ilmoittautuminen kilpailuun...6 Kilpailuun ilmoittautuminen...7

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

MICROSOFT EXCEL 2010

MICROSOFT EXCEL 2010 1 MICROSOFT EXCEL 2010 Taulukkolaskentaohjelman jatkokurssin tärkeitä asioita 2 Taulukkolaskentaohjelmalla voit Käyttää tietokonetta ruutupaperin ja taskulaskimen korvaajana Laatia helposti ylläpidettäviä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

Tämä ohje on laadittu Mozilla Firefoxin asetuksille versiossa 27.0.1

Tämä ohje on laadittu Mozilla Firefoxin asetuksille versiossa 27.0.1 Mozilla Firefox 17.2.2014 Tämä ohje on laadittu Mozilla Firefoxin asetuksille versiossa 27.0.1 Mac- käyttäjille suunnattuja erityishuomioita ohjeen lopussa. Selaimesta on aina suositeltavaa käyttää uusinta

Lisätiedot