MATLAB-ohjelmointi. COMSOL Oy Lauttasaarentie Helsinki Puh , Fax

Koko: px
Aloita esitys sivulta:

Download "MATLAB-ohjelmointi. COMSOL Oy Lauttasaarentie 52 00200 Helsinki Puh. 09-2510 400, Fax 09-2510 4010 info@comsol.fi www.comsol.fi"

Transkriptio

1 MATLAB-ohjelmointi COMSOL Oy Lauttasaarentie Helsinki Puh , Fax

2 MATLAB-Ohjelmointi Sivu 2

3 Sivu 3 SISÄLLYSLUETTELO 1 JOHDANTO MIKÄ IHMEEN MATLAB? KURSSIN KUVAUS JA TAVOITE ALKULÄMMITTELY, FUNKTIOT MATLABISSA FUNKTION RAKENNE ALIOHJELMAT JA PRIVATE-FUNKTIOT Kutsujärjestys Aliohjelmat Private-funktiot P-tiedostot KOMENTOJEN KUTSUMINEN FUNKTIOINA KIELEN RAKENTEET, OPERAATTORIT JA TESTAUS Vuonohjaus Operaattorit Onko X Esimääritellyt muuttujat FUNKTIOIDEN JA KOMENTOJONOTIEDOSTOJEN EROT EVAL JA EVALIN Virheiden käsittely Epäröivä funktio MUISTINKÄSITTELY PROFILER-TOIMINTO JA DEBUGGERI Debuggeri Profiler-toiminto MATLABIN TIETOTYYPIT NUMEERISET TIETOTYYPIT JA MERKKIJONOT STRUKTUURIT TIETOTYYPPI CELL Muuttuva määrä parametrejä PILKULLA EROTETUT LISTAT MATLABISSA KOODIN MUUTTAMINEN VEKTORIMUOTOON (ELI KUINKA TEHDÄÄN NOPEAA JA TIIVISTÄ KOODIA) TEKNIIKKA VAIKEAMPAA VEKTOROINTIA ESIMERKKEJÄ JA HARJOITUKSIA KAPPALEISIIN 2, 3 JA HYÖDYLLISIÄ APUVÄLINEITÄ YKSINKERTAISESTI VEKTORIMUOTOON ESIMERKKEJÄ PROFILER- JA DEBUGGER-TOIMINNOISTA Graafinen debuggeri Profiler-toiminto TIEDOSTON LUKEMINEN VAIKEAMPAA VEKTOROINTIA OLIOPOHJAINEN OHJELMOINTI (HAJOITA JA HALLITSE) KÄYTETTÄVISSÄ OLEVAT TYÖKALUT LUOKAN KÄSITE MATLABISSA Funktiot luokkien välisiin muunnoksiin Operaattorien kuormittaminen ja objektien prioriteetti Periytyminen Kuinka MATLAB kutsuu metodeja... 41

4 Sivu ESIMERKKEJÄ JA HARJOITUKSIA Lisää uint8-metodi Harjoituksia polynom-luokkaan liittyen HANDLE GRAPHICS, TAPAHTUMAOHJATTUA OHJELMOINTIA TUTKI JA MUUTA OMINAISUUKSIA KOMENNOILLA SET JA GET CALLBACK-FUNKTIOT GUIDE (GRAPHICAL USER INTERFACE DESIGN ENVIRONMENT) ESIMERKKEJÄ JA HARJOITUKSIA Radionäppäimet Etsi kaikki HG-objektit UIMENU-harjoitus Toinen UIMENU-harjoitus (ja hieman tiedostonkäsittelyä) Ensimmäinen GUI D-kuvaajan pyörittäminen Käyttöliittymän luonti olemassaolevalle funktiolle SYSTEEMI KUINKA MATLABIA KONFIGUROIDAAN? STARTUP.M JA FINISH.M KÄYNNISTYSPARAMETRIT MATLAB TEKNISEN PROSESSIN TAI MITTAUSLAITTEEN OHJAAMISESSA LIITE 1: PIKAOPAS... 58

5 Sivu 5 1 Johdanto 1.1 Mikä ihmeen MATLAB? MATLAB (MATrix LABoratory) on tieteelliseen laskentaan soveltuva interaktiivinen laskentaja kuvantamisohjelma. MATLAB yhdistää numeerisen analyysin, matriisilaskennan, signaalinkäsittelyn sekä grafiikkaominaisuudet käyttäjälle miellyttävään työskentely-ympäristöön, jossa tehtävät voidaan esittää tutussa matemaattisessa muodossa eikä varsinaista ohjelmointia tarvita. MATLABin avulla useat numeeriset ongelmat voidaan ratkaista erittäin nopeasti ja yksinkertaisesti esim. C- tai Fortran-ohjelmiin verrattuna. MATLAB on teollisuuden standardiapuväline teknisessä tutkimustyössä ja matemaattisten ongelmien ratkaisussa. Ohjelmisto on myös käytössä useissa yliopistoissa ja korkeakouluissa tutkimuksen ja opetuksen apuna. MATLAB on laajennettavissa sovelluskohtaisten funktiokokoelmien, "toolboxien", avulla. Funktiokokoelman M-tiedostoissa olevat funktiot laajentavat MATLABin käyttöä omien määrättyjen osa-alueidensa ongelmanratkaisua varten. Juuri joustava laajennettavuus on MATLABin suurin etu. Käyttäjä voi itse kirjoittaa tarvitsemansa funktiot tiedostoon ja laajentaa näin ohjelmaa toimimaan omien tarpeidensa mukaan. Suuri osa ohjelman mukana seuraavista funktioista on niin ikään muokattavissa tekstimuodossa. MATLAB on siis myös monipuolinen tietolähde, jota käyttäjä voi tutkia ja laajentaa halunsa mukaan. 1.2 Kurssin kuvaus ja tavoite MATLABin ammattimainen käyttö voidaan jakaa kahteen erilliseen osaan. 1. Kykyyn hyödyntää täysin ohjelmiston tarjoamat matemaattiset sovellusmahdollisuudet, mikä tarkoittaa ensi sijassa lineaarisen algebran ja numeerisen laskennan tuntemusta. Tätä ajatellen hyvä lähdeteos voisi olla esim. Gilbert Strangin "Introduction to Applied Mathematics", Wellesley-Cambridge press Kirja käsittelee suuria osia sovelletusta matematiikasta luettevalla ja helppotajuisella kielellä. Eri funktiokokoelmien tehokkaaseen käyttöön tarvitaan luonnollisesti kyseisen sovellusalueen erikoisosaamista. 2. Kykyyn ohjelmoida MATLABia. Vanhan sanonnan mukaan: "Sadan sivun Fortran-ohjelman voi MATLABilla lyhentää kymmeneen sivuun, mutta sadan sivun MATLAB-ohjelma on mahdottomuus." Väite pitikin osittain paikkansa ennen MATLAB 5:en julkaisua. Nykyään ohjelmointikieleen sisältyvät uudet rakenteet ja mukana seuraavat työkalut poistavat aikaisemmat puutteet. Kielen rakenteet ovat C:n kaltaisia, mutta useissa tapauksissa huomattavasti yksinkertaisempia. Toisaalta tapahtumia ei ole mahdollista ohjata yhtä pikkutarkasti kuin C-ohjelmissa, eikä rautaa tai oheislaitteita voi käsitellä suoraan. Lopputuloksena on, että vaikka MATLAB-ohjelmointikieli muistuttaakin C:tä, niin useissa tapauksissa C-kielessä tehokkaat ohjelmarakenteet eivät MATLABissa tuo nopeinta mahdollista lopputulosta. MATLABissa on niin ikään useita lisäyksiä, jotka helpottavat ohjelmointia jos niitä vain osaa käyttää. Kurssin tarkoitus on opettaa MATLABin käyttöä tehostavia menetelmiä ja tekniikoita. Tutkimme miten MATLABin vahvoja puolia voi käyttää hyväksi ja miten heikkoudet vältetään.

6 Sivu 6 Soveltuvilta osin tehdään vertailua muiden ohjelmointikielten kanssa (lue C:n kanssa). Oppaan sanastoon kuuluu paljon MATLABissa käytettyä englanninkielisiä termejä, joita ei tarkoituksenmukaisuussyistä ole suomennettu, vaikka se joiltain osin olisikin ollut mahdollista. Kurssi, joka käsittelee yksinomaan jälkimmäistä edellä mainituista kahdesta kohdasta, koostuu mm. Seuraavista osista: Funktion käsite MATLABissa, aliohjelmat, private-funktiot, kutsujärjestys Virheiden käsittely Koodin muuntaminen vektorimuotoon Tietotyypit, tiedonkäsittely, MATLAB mittaustietojen jälkikäsittelyssä Oliopohjainen ohjelmointi Handle graphics Mistä löytyy lisätietoja? Joitakin ohjeita ja vinkkejä Sisältöä selvennetään kohta kohdalta pienillä esimerkeillä ja harjoituksilla. Kurssi ei käsittele suurten ohjelmointiprojektien toteutusta. Analyysin ja suunnittelun tekniikoita, algoritmeja (puita, listoja tms.) tai algoritmien analyysiä ei myöskään käsitellä. Näitä varten tekstissä on viitteitä ammattikirjallisuuteen. Kurssin viitekirjallisuus koostuu MATLABin mukana toimitettavista käsikirjoista, tärkeitä ovat ennen kaikkea: Matlab 6 New Features Using MATLAB Using MATLAB Graphics Building GUIs with MATLAB Application Program Interface Guide

7 Sivu 7 2 Alkulämmittely, funktiot MATLABissa Aluksi palautetaan mieliin kuinka MATLABissa kirjoitetaan omia funktioita. Tämä on ensiarvoisen tärkeää kurssin jatkon kannalta. 2.1 Funktion rakenne Periaatteessa funktio näyttää seuraavalta: function out=oma_funktio(in); % Funktion määrittely % FUNKTIO. Ohjeteksti. % Tekijän nimi, versionumero, päivämäärä if (funktion syötetiedot tarkastava ehtolause) % Suoritetaan jos syötetiedot virheellisiä. end % Varsinainen ohjelmakoodi function out1=aliohjelma(in1); % Aliohjelmat sijoitetaan aina % Aliohjelman koodi % pääfunktion koodin jälkeen % Lisää aliohjelmia? Tiedosto määritellään funktioksi ensimmäisellä rivillä olevalla avainsanalla function. Out ja in määrittelevät funktiot syötteenä käytettävien parametrien ja funktion palauttamien arvojen tyypit. Funktion määrittelyn jälkeen seuraa tavallisesti yksi tai useampia kommenttirivejä, jotka sisältävät funktion käyttöohjeet. Käyttöohjeet saa esille komennolla help funktio 1. Käyttöohjeen ensimmäisen rivin tulee sisältää funktion nimi ja lyhyt kuvaus sen toiminnasta. Komennolla lookfor, joka tutkii kaikkien funktioiden käyttöohjeiden ensimmäiset rivit, voi tällöin etsiä esim. funktioita joilla on jotain tekemistä FFT-algoritmin kanssa (lookfor fft). Hyvään ohjelmointitapaan kuuluu tutkia kaikki funktiolle syötettävät parametrit. Tämä tehdään yleensä funktion alkuosassa. Seuraavana on vuorossa funktion ohjelmakoodi, joka suorittaa funktion varsinaisen tehtävän. MATLABin versiosta 5 alkaen funktioon voi kuulua myös aliohjelmia. Näitä ja niin kutsuttuja private-funktioita käsitellään kappaleessa 2.2. Lopuksi funktiotiedostolle annetaan nimi oma_funktio.m. Joitakin asiaan liittyviä funktioita ovat mm. 1 Oppaan lopussa on liitteenä aiheryhmittäin jaoteltu pikaohje. Se käsittää suurimman osan MATLAB-funktioista ja on erittäin hyödyllinen etsittäessä tiettyä funktiota tai funktioryhmää. MATLABin viitosversiosta lähtien mukana on myös kattava hypertekstipohjainen tietokanta, jota käytetään selaimella. Tietokanta käynnistetään komennolla helpdesk.

8 Sivu 8 which - Locate functions and files. what - List MATLAB-specific files in directory. exist - Check if variables or functions are defined. inmem - List functions in memory. inputname - Input argument name. clear - Clear functions and variables from memory. dir - List directory. type - List M-file. dbtype - List M-file with line numbers. 2.2 Aliohjelmat ja private-funktiot Käynnistyksen yhteydessä MATLAB tekee listan kaikista pathdef-muuttujan määrittelemissä hakemistoissa olevista M-, P- 2 ja MEX-tiedostoista. Listan voi päivittää komennolla matlabpath(matlabpath). Kun mitä tahansa funktiota kutsutaan ensimmäistä kertaa, se käännetään pseudokoodiksi (vain M-tiedostot, P-tiedostot on jo käännetty) ja ladataan muistiin. Funktiot pysyvät muistissa kunnes niitä kutsutaan uudestaan ja funktiosta on olemassa uudempi versio. Funktiot voidaan myös poistaa muistista komennolla clear. Muistissa olevat tiedostot voidaan listata komennolla inmem Kutsujärjestys kun MATLABiin syötetään uusi funktion tai muuttujan nimi X, tutkitaan järjestyksessä seuraavat asiat: 1. Onko X MATLABin työmuistissa oleva muuttuja? 2. Onko X sisäänrakennettu funktio? 3. Onko X suoritettavan funktion aliohjelma (katso kappale 2.2.2)? 4. Onko X private-funktio (kappale 2.2.3)? 5. Onko X tiedosto nykyisessä hakemistossa tai MATLABin hakupolussa (kokeile komentoa matlabpath)? Funktioilla on seuraava kutsujärjestys: MEX- P- M-tiedostot (laskeva prioriteetti). Ensimmäinen löytynyt funktio suoritetaan. Esimerkki: exist on käyttökelpoinen funktio, kun halutaan tutkia jonkin muuttujan tai funktion alkuperää. 2 P-tiedostoja käsitellään kappaleessa

9 Sivu 9» help exist EXIST Check if variables or functions are defined. EXIST('A') returns: 0 if A does not exist 1 if A is a variable in the workspace 2 if A is an M-file or a file of unknown type on MATLAB's search path 3 if A is a MEX-file on MATLAB's search path 4 if A is a MDL-file (SIMULINK model) on MATLAB's search path 5 if A is a built-in MATLAB function 6 if A is a P-file on MATLAB's search path 7 if A is a directory EXIST('A') or EXIST('A.EXT') returns 2 if a file named 'A' or 'A.EXT' is on MATLAB's search path and the extension isn't a P or MEX function extension. EXIST('A','var') checks only for variables. EXIST('A','builtin') checks only for built-in functions. EXIST('A','file') checks for files or directories on MATLAB's search path. EXIST('A','dir') checks only for directories. EXIST returns 0 if the specified instance isn't found. See also DIR, WHAT, ISEMPTY. (exist is a built-in MATLAB function) Huomaa että annettu numerointi ei mitenkään vastaa käytettyä kutsujärjestystä. Käyttöohjeesta käy ilmi millaisia tiedostoja MATLAB käyttää omien MAT-päätteisten datatiedostojen lisäksi. Yksinkertainen esimerkki antaa tuloksen:» exist fft ans = 5» fft=3;» exist fft ans = 1 Harjoituksen jälkeen fft-funktio on käyttökelvoton kunnes samanniminen muuttuja poistetaan muistista komennolla clear fft Aliohjelmat Itse funktion kanssa samassa tiedostossa voi olla myös yksi tai useampia aliohjelmia. Ne kirjoitetaan pääfunktion ohjelmakoodin jälkeen ja niitä voivat kutsua vain pääfunktio ja samassa tiedostossa olevat muut aliohjelmat. Aliohjelmien käyttö tekee funktioiden rakenteesta selkeämmän. Aliohjelmia ei myöskään ole mahdollista kutsua suoraan callback-toiminnon avulla (katso kappale Handle Graphics), koska callback-funktioita täytyy voida kutsuakomentoriviltä Private-funktiot Private-funktiot ovat M-, P- tai MEX-tiedostoja, jotka on laitettu PRIVATE-nimiseen alihakemistoon. PRIVATE-hakemistossa olevia funktioita voivat kutsua vain hakemiston isäntähakemistossa (kuvassa PRGM1) olevat funktiot. PRIVATE-hakemistoja ei saa liittää MATLABin hakupolkuun. Siksi private-funktioilla voi olla sama nimi kuin jollain jo olemassa

10 Sivu 10 olevalla funktiolla. PRGM1-hakemistossa olevat funktiot voisivat esimerkiksi käyttää muunneltua versiota funktiosta fft2 (fft2 on normaalisti hakemistossa MATLAB\TOOLBOX\MATLAB\DATAFUN oleva M-tiedosto). C:\ juurihakemisto Rotkatalog MATLAB $MATLAB $MATLAB PROJECT PRGM1 PRIVATE projektin hakemisto Projektkatalog Ohjelman hakemisto, Programkatalog lisää tämä MATLABin polkuun komennolla addpath. addpath private-funktioiden Privatkatalog hakemisto till prgm P-tiedostot Jokainen MATLABin löytämä uusi M-tiedosto tarkastetaan ja käännetään ajettavaan muotoon. Tämä tapahtuu automaattisesti ja on normaalisti erittäin nopea toimenpide. Kääntäminen voidaan haluttaessa suorittaa myös etukäteen komennolla pcode, jolloin tuloksena on P-tiedosto (*.p). Kääntämiseen on yleensä kaksi syytä. 1. Ohjelma ei enää ole luettavissä tekstitiedostona. Näin voidaan suojella esim. tekijän kannalta tärkeitä algoritmeja. 2. Suuret graafiset sovellukset, kuten käyttöliittymät käynnistyvät nopeammin valmiiksi käännettyinä. Pcode-komennon haittapuolena on, että myös käyttöohje katoaa. Siksi jokainen M-tiedosto tulisi korvata kahdella uudella tiedostolla: pcode-komennolla luodulla funktio.p -tiedostolla ja funktio.m -tiedostolla, joka sisältää käyttöohjeen. P-tiedostojen haittana on myös riippuvuus laiteympäristöstä. The MathWorks toimittaa graafisiin sovelluksiin kuuluvat funktiot usein sekä P- että M- tiedostoina. Jos M-tiedostoa jostain syystä muutetaan täytyy myös P-tiedosto päivittää

11 Sivu 11 komennolla pcode funktio.m. Koska P-tiedostot ovat kutsujärjestyksessä ennen M-tiedostoja, ei muutoksella muutoin olisi mitään vaikutusta. 2.3 Komentojen kutsuminen funktioina Monia komentoja, esim. dir, cd, dos, load, save ja lasterr, voidaan myös kutsua funktioina. Esimerkiksi seuraavat rivit ovat toiminnaltaan identtisiä: lasterr Tapahtui_virhe lasterr('tapahtui_virhe') Ohjelmointiteknisesti funktiokutsu on parempi, koska se mahdollistaa moniosaisten merkkijonojen käyttämisen parametreina: lasterr( sprintf('tapahtui virhe %s', 3, date ) ); Kutsu kirjoittaa virheilmoituksen sitä varten varattuun muistiosoitteeseen. Edellisen kutsun parametrina ollut merkkijono voidaan tulostaa komennolla lasterr tai get(0, 'errormessage'). Virheilmoitus tallennetaan automaattisesti virheen tapahtuessa, esim funktion error suorituksen yhteydessä. Edellä esitetty rakenne on hyvin käyttökelpoinen paitsi graafisissa sovelluksissa, myös monissa muissa tilanteissa. 2.4 Kielen rakenteet, operaattorit ja testaus Vuonohjaus MATLABissa on neljä eri tapaa ohjata ohjelman suoritusta. Ne ovat if, for, while ja switch. Kaikki ovat C:n kaltaisia ja niiden syntaksi on if looginen lauseke koodia elseif looginen lauseke koodia else koodia end for laskuri=alkuarvo:askelpituus:loppuarvo koodia end while looginen lauseke koodia end switch skalaariarvoinen lauseke tai merkkijono case lausekkeen_arvo % tai useampia arvoja soluvektorissa koodia otherwise koodia end MATLAB käsittelee loogiset lausekkeet suhteelisen tehokkaasti. Esim. lausekkeessa if (a b c), (a tai b tai c) b ja c jätetään laskematta mikäli a on tosi. Seuraavassa on esimerkki switch-rakenteen käytöstä:

12 Sivu 12 switch (fcn) % fcn on sisäänrakennettu funktio case {'max','min','sort'} % useampia vaihtoehtoja soluvektorissa. narg_out=2; % C-kielessä ei vastinetta case {'fft'} narg_out=1; otherwise narg_out=[]; error('unknown type'); end Syy esimerkkiin on, että funktiota nargout voi soveltaa ainoastaan M- tai P-tiedostoissa oleviin funktioihin, ei siis sisäänrakennettuihin funktioihin. Voit huomata tämän kokeilemalla itse komentoja nargout('fft2'), nargout('fft') ja nargout('deal'). C-kielestä eroavasti case-lauseen jälkeen ei tarvitse määritellä break-lausetta, vaan se on oletuksena. Tämän seurauksena useamman kuin yhden case-lauseen suorittaminen ei ole mahdollista. MATLABissa break-komento keskeyttää vain for- ja while-silmukoita. Lisätietoa kielen rakenteisiin liityvistä funktioista saat komennolla help lang Operaattorit MATLABissa on suuri joukko aritmeettisia-, loogisia- ja relaatio-operaattoreita. Lisätietoa operaattoreista saat komennolla help ops tai pikaoppaan osasta "Operators and special characters. Esimerkkinä tutkimme funktiota times. Siinä käytetään operaattoria.*, joka kertoo kaksi matriisia alkioittain. t=0:.1:2; [x y z]=meshgrid(t); % Mitä meshgrid oikeastaan tekee? F=z.*exp(-z-2*x.*y); % F on skalaareista koostuva kolmiulotteinen taulukko slice(x,y,z,f,[.8 2],1,[.5 1.5],'linear'); colormap(hot); colorbar; MATLABissa, jonka perustietotyyppinä on matriisi, ja jossa laskutoimituksiin tarvitut silmukat ovat sisäänrakennettuina, tulee kaavoista ja matemaattisista lausekkeista yleensä erittäin tiiviitä. Hyvä esimerkki tästä on kaksiulotteisen nopean Fourier-muunnoksen toteuttava lauseke: f = fft(fft(x).').'; % M-tiedoston fft2.m ydin jossa fft on suorituksen nopeuttamiseksi sisäänrakennettu funktio. fft2 kutsuu fft-funktiota kahdesti, ja pari transponointia pitää huolen siitä, että muunnos tapahtuu sekä x- että y-akselilla ja että lopullinen tulosmatriisi on oikean suuntainen. Huomaa, että lausekkeessa käytetään operaattoria.' eikä ' (vertaa funktioita transpose ja ctranspose). Operaattori.' transponoi matriisin sellaisenaan ottamatta liittolukuja. XOR (eksklusiivinen tai) on myös hyvin tiivis: xor = (a b) & ~(a&b); muuttujien a ja b dimensio voi olla mielivaltainen. Kaksi muuta erittäin tärkeää operaattoria ovat: any tosi jos vektorin jokin elementti on erisuuri kuin 0 all tosi jos vektorin kaikki elementit ovat erisuuria kuin 0 Tärkein operaattori on sen sijaan :, colon, jota tarkastelemme kappaleessa Onko X... MATLABissa on useita hyödyllisiä is-alkuisia funktioita, joilla tutkitaan muuttujien tai olioiden ominaisuuksia. Ne ovat

13 Sivu 13 ismember - True for set member. M isglobal - True for global variables. B isempty - True for empty matrix. B isequal - True if arrays are identical. B isnumeric - True for numeric arrays. M islogical - True for logical array. B isnan - True for Not-a-Number. B isinf - True for infinite elements. B isfinite - True for finite elements. B isreal - True for real array. B isprime - True for prime numbers. M issparse - True for sparse matrix. B ishold - Return hold state. M ishandle - True for graphics handles. B ischar - True for character array (string). B iscellstr - True for cell array of strings. M isletter - True for letters of the alphabet. B isspace - True for white space characters. B iscell - True for cell array. M isfield - True if field is in structure array. M isstruct - True for structures. M isa - True if object is a given class. B isobject - True for objects. M isunix - True for the UNIX version of MATLAB. M Kirjaimet M ja B oikeassa reunassa tarkoittavat M-tiedostoa ja vastaavasti sisäänrakennettua funktiota. Esimerkiksi yhtäläisyysoperaattorin == avulla ei ole mahdollista tunnistaa muuttujan arvoa NaN. Lausekkeen (a==nan) arvo ei koskaan ole 0, mikä on oikein, sillä NaN (Not a Number) ei voi olla yhtäsuuri minkään luvun kanssa. Tällöin tunnistamiseen täytyy käyttää funktiota isnan. Huomaa, että lauseke isnumeric(nan) on kuitenkin tosi Esimääritellyt muuttujat Seuraavassa on listattu MATLABin tärkeimmät esimääritellyt muuttujat: i, j Imaginääriyksikkö, määritelmänä sqrt(-1). Muuten i ja j eivät poikkea mitenkään tavallisista muuttujista. Niiden arvon voi halutessaan muuttaa yksinkertaisella sijoituslausekkeella. eps Liukulukulaskennan suhteellista tarkkuutta kuvaava muuttuja, määritelmänä eps=(pienin_ykköstä_suurempi_liukuluku - 1). Monien funktioiden laskentatarkkuus (TOLERANCE) on jotain*eps. computer Tietokoneen tyyppi. Mahdollistaa kone- ja käyttöjärjestelmäkohtaisen koodin käytön: switch (computer) case 'PCWIN' % Jos käytössä PC % koodia otherwise % Muuten % koodia end % Komennolla type filesep näet oikean esimerkin Inf IEEE standardin (Institute of Electrical and Electronics Engineers) mukainen positiivinen äärettömyys. Tuloksena esim. jaettaessa nollalla. NaN Not a Number, esim. 0/0 tai inf/inf. Aritmeettinen esitys ei numerolle IEEE standardia noudattavilla koneilla.

14 Sivu 14 Laskutoimitusten tuloksena voi olla NaN tai Inf ilman että tuloksena on virheilmoitus. Inf+Inf on edelleen Inf ja NaN+NaN tai Inf+NaN antaa tulokseksi NaN. Mitä on tuloksena laskutoimituksesta Inf-Inf? NaN ja Inf eivät näy piirtotoiminnoissa. Tätä voi hyödyntää haluttaessa piilottaa osia kuvaajasta: z=peaks; % Korkeusinformaatio z(30:40,20:30)=nan; % Korvataan tietyt pisteet arvolla NaN % z(30:40,20:30)=nan*z(30:40,20:30); % Sama operaatio MATLAB 4:ssä mesh(peaks,z); % mesh(korkeusinformaatio, väri-informaatio) colormap(copper); rotate3d % Pyöritetään kuvaajaa hiiren osoittimella (rotate3d) 2.5 Funktioiden ja komentojonotiedostojen erot Ainoa näkyvä ero funktion ja komentojonon välillä on funktiotiedostossa ensimmäisenä oleva funktion määrittely. Toiminnallisia eroja on kuitenkin useita. Komentojono varaa aina muuttujilleen tilan perustyötilasta (base workspace). Eri komentojonotiedostot näkevät täten toistensa muuttujat ja voivat muuttaa niitä tarpeen mukaan. Funktion suorituksen yhteydessä luodaan puolestaan tilapäinen työtila (function workspace). Kaikki funktion muuttujat ovat paikallisia, ellei toisin ole määritelty, eivätkä muut funktiot tai komentojonot voi muuttaa niitä. Funktion suorituksen loputtua varattu muisti vapautetaan. Kaikki parametrit, globaaleja muuttujia lukuunottamatta, välitetään funktion määrittelyssä olevan parametrilistan kautta 3. Sekä funktiot että komentojonot käännetään pseudokoodiksi ja ladataan muistiin ensimmäisellä suorituskerralla. MATLABin aikaisemmat versiot käänsivät vain funktiot. Komentojonot tulkattiin rivi kerrallaan, mikä teki niistä suhteellisesti hitaampia. Milloin sitten kannattaa käyttää komentojonoa ja milloin funktiota? Hyvänä nyrkkisääntönä voidaan sanoa, että funktiota tulee käyttää aina muutamaa erikoistapausta lukuunottamatta: 1. Suuremmissa ohjelmointiprojekteissa esimääritellyt muuttujat, globaalit tai paikalliset 4, kannattaa laittaa erilliseen tiedostoon. 2. Komentojonon käyttö helpottaa uusien funktioiden testausta, koska tällöin välttyy funktion vaatimalta parametrien määrittelyltä. 3. Komentojonoja kannattaa käyttää myös mikäli kyseessä on usein toistuva laskutoimitus, jonka tulos tallennetaan perustyötilaan. Funktion paikallisille muuttujille ei tällöin tarvitse varata muistia ja itse funktion kutsuun kuluva, useimmiten huomattava, aika säästyy. 2.6 eval ja evalin Funktio eval suorittaa sille parametrina syötetyn merkkijonon kuten tavallisen lausekkeen: 3 Käytännössä asia on näin. Katso eval- ja evalin-funktioita käsittelevä kappale. 4 Globaaleja muuttujia kannattaa välttää viimeiseen asti. Useimmiten ne tekevät ohjelmista hajanaisia ja vaikeasti ylläpidettäviä. Lisätietoja globaaleista muuttujista saat komennolla help global.

15 Sivu 15» ii=3;» s=['x',int2str(ii+1000),'=z',int2str(ii),'(:,',int2str(ii),');'] % Älä unohda merkkijonon % päättävää puolipistettä s = X1003=Z3(:,3);» eval(s) Varmista että merkkijono on halutun kaltainen ennen eval-funktion kutsumista. Yllä oleva esimerkki esittelee erään klassisen sovelluksen: käyttäjä ei etukäteen tiedä kuinka monta muuttujaa mittaustiedoston pohjalta syntyy, joten ne on luotava dynaamisesti. Samalla tavalla voidaan helposti luoda sarja tiedostonimiä, TULOS1.DAT, TULOS2.DAT jne. Eval-funktio on loistava työkalu. Sillä syntyy helposti tehokkaita, dynaamisia ja ennen kaikkea vaikeaselkoisia lausekkeita. Pienenä haittapuolena on kuitenkin lausekkeiden monimutkaisuudesta johtuva hitaus. Suurempi ongelma on, että eval-kutsuja sisältäviä M-tiedostoja ei voi kääntää MEXtiedostoiksi mcc-ohjelmalla (MATLAB Compiler). Eval-funktiota on syytä käyttää harkiten ja se kannattaa mahdollisuuksien mukaan korvata feval-funktiolla, joka on nopeampi eikä estä M- tiedostojen kääntämistä. evalin vastaa eval-funktiota, mutta sen käyttämän muistialueen voi valita. Kutsu on muotoa evalin(x, 'lauseke'); % X on joko 'base' tai 'caller' jossa X on 'base' tai 'caller'. 'lauseke' suoritetaan siis joko perustyötilassa tai kutsuvan funktion paikallisessa työtilassa. Evalin-funktio antaa mahdollisuuden päästä käsiksi funktion muuten erilliseen muistialueeseen. Tehokasta, mutta samanaikaisesti ohjelmista tulee epäselviä, joten mahdollisuutta kannattaa käyttää varoen. Vertaa funktioita evalin ja assignin. Miten ne eroavat toisistaan? Virheiden käsittely Eval- ja evalin-funktioilla on vielä yksi arvokas ominaisuus. Ne osaavat käsitellä mahdollisia virheitä: eval('komento', 'Virheen_sattuessa_suorita_sen_sijaan_tämä_komento.'); evalin(x, 'komento', 'Virheen_sattuessa_suorita_sen_sijaan_tämä_komento.'); Myös tässä X on 'base' tai 'caller'. Virheen sattuessa vaihtoehtoinen komento suoritetaan sen funktion muistialueella, jossa virhe sattui. Oletetaan että joudumme käsittelemään suurta määrää datatiedostoja. Eval-funktion avulla tulosten katoaminen ja tarpeettomat keskeytykset funktion suorituksessa voidaan välttää tilanteessa, jossa jokin tiedostoista on vahingoittunut ja aiheuttaa (tuntemattoman) virheen. Funktiossa isfield eval-funktiota käytetään seuraavasti: tf = logical(1); % Oletuksena lippu tf on TOSI eval(['s.',k,';'], 'tf=logical(0);') % struktuuri.kenttä; Jos struktuurissa 5 s ei ole kenttää k, niin tapahtuu virhe ja lipun tf arvoksi tulee EPÄTOSI. Tämä on hyvä esimerkki eval- ja evalin-funktioiden käyttökelpoisuudesta. Toisaalta isfield-funktion pitäisi toki olla sisäänrakennettu. 5 Katso kappale 3.2.

16 Sivu Epäröivä funktio C-kielessä on mahdollista määritellä staattisia muuttujia (ja funktioita). Ne tallennetaan erilliselle muistialueelle koko ohjelman suorituksen ajaksi ja alustus tapahtuu vain kerran; ohjelman alussa. MATLABissa ei ole vastaavaa mahdollisuutta, mutta alla olevan funktion static.m avulla voidaan käyttää "staattisia" muuttujia määrittelemällä halutut muuttujat globaaleiksi kutsuvan funktion ('caller') muistialueella. function static(varargin) % STATIC. Määritellään "staattisia" muuttujia (globaalien avulla) % sillä aikaa kun odotamme, että The MathWorks ottaa käyttöön staattiset % muuttujat. ÄLÄ käytä samoja muuttujanimiä eri funktioissa. % "staattista" muuttujaa EI saa muuttaa tyhjäksi ([]) suorituksen % aikana. Se poistetaan komennolla clear global muuttuja; % % esimerkki kutsusta: static XXX=99 DONE=logical(0) % Mats S, kurssitiedosto 1997 for ( ii=1:nargin ) % Silmukka tutkii yhden syöteparametrin kerrallaan v=varargin{ii}; var=v; value=[]; % varargin % Ensin tutkitaan tapahtuuko alustus asianmukaisesti yhdessä % muuttujan staattiseksi määrittelyn yhteydessä. eq=findstr('=',v); if ( length(eq)>1 ) error(['virheellinen määrittely: ',v]) elseif ( ~isempty(eq) ) var=v(1:(eq-1)); value=v((eq+1):length(v)); end % Määritellään muuttujat globaaliksi kutsuvan funktion paikallisessa työtilassa "caller workspace" % Tarvitaan kaksi kutsua, koska lauseke global muuttuja=arvo ei ole MATLABissa kelvollinen. % Ensimmäinen kutsu varmistaa, että muuttuja on olemassa kutsuvan funktion työtilassa % ja toinen alustaa muuttujan mikäli se oli aikaisemmin tyhjä. s=['global ',var,';']; evalin('caller', s); s=['if ( isempty(',var,') ), ',v,'; end']; % vain jos muuttuja=[] evalin('caller', s, 'error(''impossible'')'); end Varargin-toiminto käsitellään kappaleessa Staattisia muuttujia voidaan käyttää esim. muuttujien alustamiseen kutsuttaessa funktiota ensimmäisen kerran: static START=logical(1); % Annetaan muuttujalle START alussa arvo TOSI if (START) % omat alustukset START=logical(0); % Annetaan muuttujalle START arvo EPÄTOSI else % Ensimmäisen kutsun jälkeen tehdään jotain muuta. end Kokeile static-funktiota funktion add.m avulla:

17 Sivu 17» type add function SUMMA_ADD=add(x); static SUMMA_ADD=0; SUMMA_ADD=SUMMA_ADD+x; % Määritellään muuttuja SUMMA_ADD "staattiseksi"» add(2) ans = 2» add(-5) ans = -3 Static on kaikesta huolimatta funktio. Sitä ei kannata käyttää nopeuden kannalta kriittisissä silmukoissa tai usein kutsuttavissa funktioissa, sillä jokainen kutsu vie muutamia millisekunteja. 2.7 Muistinkäsittely Kuten aikaisemmin mainittiin luo MATLAB käynnistyksen yhteydessä listan kaikista pathdefmuuttujan määrittelemissä hakemistoissa olevista M-, P- ja MEX-tiedostoista. Lista voidaan päivittää komennolla matlabpath(matlabpath). Kun funktiota kutsutaan ensimmäistä kertaa, se käännetään pseudokoodiksi (vain M-tiedostot, P-tiedostot on jo käännetty) ja ladataan muistiin. Funktiot pysyvät muistissa kunnes niitä kutsutaan uudestaan ja funktiosta on olemassa uudempi versio. Funktiot voidaan myös poistaa muistista komennolla clear. Mutta mitä funktiota kutsuttaessa oikein tapahtuu? function y=funktio(x); % Kutsutaan funktiota komennolla % Y=funktio(X); Useissa ohjelmointikielissä funktioita voidaan kutsua kahdella eri tavalla. Parametrista X voidaan joko tehdä kopio funktion käyttöön tai funktiolle voidaan antaa osoitin parametriin X. MATLABin funktiokutsut tehdään osoittimien avulla, vaikka kutsun muoto viittaakin muuhun. Tämä pitää paikkansa niin kauan kuin kutsuttava funktio ei muuta parametrin arvoa. Mikäli parametrin arvoa muutetaan tehdään siitä kopio funktion käyttöön, mikä lisää muistin kulutusta. Sen sijaan kutsu y=f2(f1(x)); ei vie enempää muistia kuin kutsu y=f1(x); y=f2(y); Yksinkertaisessa lausekkeessa y=x; vapautetaan ensin muistialue, johon y osoittaa. Sen jälkeen luodaan kopio x:stä ja laitetaan y osoittamaan siihen. Kaikki sisäiset laskutoimitukset tehdään kaksinkertaisen tarkkuuden liukuluvuilla matriisi X vaatii siten muistia tavua = 2 Mb (4 Mb jos X on kompleksinen). Normaaleissa laskutoimituksissa tilaa tarvitaan usein myös muuttujien (tilapäisille) kopioille. Muisti saattaa sirpaloitua hyvinkin nopeasti ja jonkin ajan kuluttua ohjelma joutuu käyttämään kovalevyä suurten tietomäärien tallentamiseen. Tässä tilanteessa seuraavat vinkit voivat olla avuksi. Ennen kaikkea: varaa muistia suurille tietomäärille ohjelman alkuvaiheessa, kun se vielä on mahdollista 6. Suurimmat muuttujat ensin. Käytä komentoja zeros, ones, cell tai struct. 6 MATLAB käyttää dynaamiseen muistin varaamiseen C-rutiineja malloc, calloc ja free. Varattu muisti ei välttämättä palaudu käyttöjärjestelmälle ennen kuin MATLAB lopetetaan. Huomaa myös, että unixkäyttöjärjestelmissä komento x=rand(1e6,1); y=rand(1e6,1); clear; z=rand(2.01e6,1); vaatii kaksi kertaa niin paljon muistia kuin komento z=rand(2.01e6,1); clear; x=rand(1e6,1); y=rand(1e6,1); Siis suurimmat muuttujat ensiksi!

18 Sivu 18 X=zeros(M,N,O); % M, N ja O isoja lukuja Käytä komentoja clear tai pack paljon muistia vaativien MATLAB-ohjelmien välillä. Clear voidaan sijoittaa myös itse ohjelmaan. Anna komento clear muuttuja tai aseta muuttuja tyhjäksi komennolla muuttuja=[]; Kierrätä muuttujia, mutta harkiten! Huomaa, että määritykset kuten harva_matriisi='merkkijono'; tekevät ohjelmasta vaikeaselkoisen. Käytä yleisluontoisia nimiä ja ilmoita muuttujan uusi käyttötarkoitus kommenttirivillä. Käytä tietotyyppiä uint8, kappale 3.1, tiedon varastointiin silloin kuin se on mahdollista. Mikäli haluttujen tulosten saaminen ei edellytä suurinta mahdollista laskentatarkkuutta, niin laskutoimitukset voi hoitaa MEX-tiedoston avulla. C-kielessä on mahdollisuus käyttää 4-, 2-, tai yksitavuisia muuttujia 7, ja jopa vain muutamista biteistä koostuvat muuttujat ovat mahdollisia. Kirjoita ohjelman uudestaan niin, että tieto käsitellään pienemmissä osissa askel askeleelta. Jos muuttujat ovat erittäin suuria voivat globaalit muuttujat olla avuksi. Oletetaan että ohjelman aluksi suoritetaan seuraava komentojono: global HUGE % määrittely load HUGE % Erittäin suuri muuttuja HUGE sisältää 600x600x80 uint8-elementtiä Seuraavaksi annetaan komento global HUGE kaikissa niissä funktioissa, joissa tarvitaan muuttujaa HUGE. HUGE sijoitetaan näin globaaliin työtilaan (global workspace), jolloin kaikki funktiot käsittelevät yhtä ja samaa muuttujaa. Tärkeintä on kuitenkin se, että MATLABia ei päästetä tekemään kopioita erittäin suurista matriiseista. Suuria datajoukkoja voi siis käyttää funktion parametreina, mutta muuttaminen kannattaa tehdä pienemmissä osissa ja askel askeleelta. Kuinka MATLAB käsittelee epäselvän funktiomäärittelyn y=yfunk(y, )? Lue lisätietoja komennolla help memory. 2.8 Profiler-toiminto ja debuggeri Debuggeri Verrattuna siihen mitä Microsoft keräsi C-kehitysympäristöönsä PWB:hen (Programmers WorkBench) 90-luvun alussa, ei MATLABin debuggerin ominaisuuksissa ole juurikaan kehumista. Muutoksia muuttujien arvoissa on vaikea seurata ja vuokaavion luominen ohjelmointiprojekteja varten on mahdotonta. Mukana tuleva debuggeri, graafinen Windowsissa ja Macissa, on kuitenkin intuitiivinen ja helppokäyttöinen. Tutki sen käyttöä komennoilla help debug ja help dbstop ja selvitä sen jälkeen kuinka alla oleva funktio yfunk.m toimii: 7 1 tavu == 8 bittiä

19 Sivu 19 function y=yfunk(y) y=2*y; Harjoituksissa, luvussa 5 on vielä toinen yksinkertainen esimerkki, jonka avulla debuggerin käyttöä voi harjoitella Profiler-toiminto MATLABin mukana seuraa myös käytännöllinen profiler-toiminto. Sen avulla saat tietää kuinka suuri osa M-tiedoston käyttämästä suoritusajasta kuluu milläkin rivillä. Alla on kolme eri versiota samasta funktiosta. Rivinumerot ovat vasemmassa laidassa. 1 function [r,s]=profiex1; function [r,s]=profiex2; function [r,s]=profiex3; 2 % PROFIEX1. % PROFIEX2. % PROFIEX3. 3 % Älä tee näin! % oikea tapa tietyin edellytyksin % oikea tapa 4 5 t=-2:.001:2; t=-2:.001:2; t=-2:.001:2; 6 r=[]; s=[]; r=zeros(size(t)); s=zeros(size(t)); 7 i=0; 8 for (x=t) for (x=t) x=t; 9 i=i+1; 10 y=1+x^3; y=1+x^3; y=1+x.^3; % vektorimuotoon 11 r=[r x]; r(i)=x; r=x; % muutettu kutsu 12 s=[r y]; s(i)=y; s=y; 13 end end Esimerkki. Kokeile seuraavia komentoja ylläoleviin funktioihin: profile profiex1; % Määrittää mihin funktioon profiler-toimintoa käytetään. profiex1; % Suoritetaan haluttu funktio. Kaikki funktion profiex1 kutsut rekisteröidään. profile report; % raportti tekstimuodossa profile plot; % graafinen raportti profile done; % Lopetetaan profiler-toiminnon käyttö. Huomaa, että kuvaajassa on kaksi y-akselia (pareto.m, katso myös plotyy.m).

20 Sivu 20 3 MATLABin tietotyypit MATLAB array char numeric cell struct double uint8 sparse 3.1 Numeeriset tietotyypit ja merkkijonot MATLABin versioon 5 asti double oli ainoa tietotyyppi. Kaikki muut tietotyypit tallennettiin double-muotoon, mukaan lukien merkkijonot. Jokainen double-muuttuja vie tilaa 8 tavua (64 bittiä). uint8 on 8-bittinen kokonaisluku väliltä [0,255]. Tätä tietotyyppiä käytetään lähinnä kuvien tallentamiseen. Matemaattisia operaatioita ei ole määritelty, vaan tarvittaessa ne joudutaan toteuttamaan omien M- tai MEX-tiedostojen avulla (katso luku 6). uint8 voi olla myös kompleksinen. Laskutoimituksia varten uint8 muunnetaan ensin tyyppiin double: x=uint8( double(a) + double(b) ); % a ja b tyyppiä uint8 int8, käytössä on myös 8-bittinen kokonaisluku välillä [-128, 127]. sparse on tarkoitettu harvojen matriisien tallentamiseen. Muistinkulutus on (nollasta_eroavien_alkioiden_lukumäärä)* tavua. char-tietotyypillä tallennetaan merkkijonoja. Muistia kuluu 2 tavua (16 bittiä) merkkiä kohden. Käytössä ovat myös double-, uint8-, int8-, sparse- ja char-nimiset funktiot, jotka muuntavat toisia tietotyyppejä nimen mukaiseen tietotyyppiin.

T211003 Sovellusohjelmat Matlab osa 4: Skriptit, funktiot ja kontrollirakenteet

T211003 Sovellusohjelmat Matlab osa 4: Skriptit, funktiot ja kontrollirakenteet Ohjelmointi Matlab-komentoja voidaan koota ns. M-tiedostoon. Nimi tulee tiedoston tarkentimesta.m. Matlabilla voidaan ohjelmoida kahdella eri tavalla: Skriptit eli komentojonot eli makrot Funktiot eli

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

Matlabin perusteita Grafiikka

Matlabin perusteita Grafiikka BL40A0000 SSKMO KH 1 Seuraavassa esityksessä oletuksena on, että Matlabia käytetään jossakin ikkunoivassa käyttöjärjestelmässä (PC/Win, Mac, X-Window System). Käytettäessä Matlabia verkon yli joko tekstipäätteeltä,

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

Matlab-perusteet. Jukka Jauhiainen. OAMK / Tekniikan yksikkö. Hyvinvointiteknologian koulutusohjelma

Matlab-perusteet. Jukka Jauhiainen. OAMK / Tekniikan yksikkö. Hyvinvointiteknologian koulutusohjelma Matlab-perusteet Jukka Jauhiainen OAMK / Tekniikan yksikkö Hyvinvointiteknologian koulutusohjelma Tämän materiaalin tarkoitus on antaa opiskelijalle lyhyehkö johdanto Matlabohjelmiston perusteisiin. Matlabin

Lisätiedot

SIMULINK S-funktiot. SIMULINK S-funktiot

SIMULINK S-funktiot. SIMULINK S-funktiot S-funktio on ohjelmointikielellä (Matlab, C, Fortran) laadittu oma algoritmi tai dynaamisen järjestelmän kuvaus, jota voidaan käyttää Simulink-malleissa kuin mitä tahansa valmista lohkoa. S-funktion rakenne

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

Käyttöliittymäohjelmointi

Käyttöliittymäohjelmointi Käyttöliittymäohjelmointi Graafisen käyttöliittymän (GUI) avulla voidaan Matlabissa kirjoittaa graafisia sovellutuksia, jotka sisältävät erilaisia komponentteja: Programming GUI Components (GUIDE) Push

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

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

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmiston testaus ja laatu. Testausmenetelmiä Ohjelmiston testaus ja laatu Testausmenetelmiä Testausmenetelmiä - 1 Testauksen menetelmien päälähestymistapoina ovat black-box testi testaaja ei voi tutkia lähdekoodia testaus perustuu sovellukselle suunnitteluvaiheessa

Lisätiedot

BL40A0000 Säätötekniikan ja signaalinkäsittelyn

BL40A0000 Säätötekniikan ja signaalinkäsittelyn 1 BL40A0000 Säätötekniikan ja signaalinkäsittelyn matemaattiset ohjelmistot Luennot ja harjoitukset Katja Hynynen, h. 6431, p. 040-548 8954 Katja.Hynynen@lut.fi Opetus ja suoritusvaatimukset OPETUS: Luentoja

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

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma 5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma Every cloud has a silver line. - englantilainen sananlasku Tässä osiossa tärkeää: yksi- ja moniulotteinen taulukko Sisältö Yleistä Yksiulotteinen

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

Lisätiedot

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin Ohjausjärjestelmien jatkokurssi Visual Basic vinkkejä ohjelmointiin http://www.techsoft.fi/oskillaattoripiirit.htm http://www.mol.fi/paikat/job.do?lang=fi&jobid=7852109&index=240&anchor=7852109 Yksiköt

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

Valitse ruudun yläosassa oleva painike Download Scilab.

Valitse ruudun yläosassa oleva painike Download Scilab. Luku 1 Ohjeita ohjelmiston Scilab käyttöön 1.1 Ohjelmiston lataaminen Ohjeet ohjelmiston lataamiseen Windows-koneelle. Mene verkko-osoitteeseen www.scilab.org. Valitse ruudun yläosassa oleva painike Download

Lisätiedot

Luku 3. Listankäsittelyä. 3.1 Listat

Luku 3. Listankäsittelyä. 3.1 Listat Luku 3 Listankäsittelyä Funktio-ohjelmoinnin tärkein yksittäinen tietorakenne on lista. Listankäsittely on paitsi käytännöllisesti oleellinen aihe, se myös valaisee funktio-ohjelmoinnin ideaa. 3.1 Listat

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

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

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

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

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

MATLAB 6.0 m-tiedoston ohjelmointiopas. lähteenmäki.m 2001 www.tpu.fi/~mlahteen/

MATLAB 6.0 m-tiedoston ohjelmointiopas. lähteenmäki.m 2001 www.tpu.fi/~mlahteen/ MATLAB 6.0 m-tiedoston ohjelmointiopas lähteenmäki.m 2001 www.tpu.fi/~mlahteen/ MATLAB 6.0 m-tiedoston ohjelmointiopas 2 SISÄLLYSLUETTELO 1 Johdanto 3 2 Skriptit 3 3 Funktiot 4 4 Muuttujat 7 5 Tietotyypit

Lisätiedot

Luento 4. Timo Savola. 21. huhtikuuta 2006

Luento 4. Timo Savola. 21. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 4 Timo Savola 21. huhtikuuta 2006 Osa I Shell Lausekkeet Komentoriville kirjotettu komento on lauseke echo "foo" echo $USER MUUTTUJA=1 ls -l Rivinvaihto

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset 815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

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

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

Harjoitus 1 -- Ratkaisut

Harjoitus 1 -- Ratkaisut Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin

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

Johdatus Ohjelmointiin

Johdatus Ohjelmointiin Johdatus Ohjelmointiin Syksy 2006 Viikko 2 13.9. - 14.9. Tällä viikolla käsiteltävät asiat Peruskäsitteitä Kiintoarvot Tiedon tulostus Yksinkertaiset laskutoimitukset Muuttujat Tiedon syöttäminen Hyvin

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

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisä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

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan

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

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

Lisätiedot

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

Octave-opas. Mikä on Octave ja miksi? Asennus

Octave-opas. Mikä on Octave ja miksi? Asennus Octave-opas Mikä on Octave ja miksi? Asennus Käynnistys ja käyttöliittymä Komennot tiedostojen hallintaan SciTE-editor.m-tiedostot Ohjeita muualla Mikä on Octave ja miksi? Octave on numeeriseen laskentaan

Lisätiedot

ASCII-taidetta. Intro: Python

ASCII-taidetta. Intro: Python Python 1 ASCII-taidetta All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what to do.

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

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisä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

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia Javascript 2: Ohjelmointikielen ominaisuudet Jaana Holvikivi Metropolia HTML - sivun rakenne ja osiot HTML HEAD STYLE SCRIPT STYLEsheet Javascript file BODY Javascript

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

Lisätiedot

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä.

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä. PHP-kielen perusteet Käytä lähteenä PHP:n virallista manuaalia http://www.php.net/docs.php tai http://www.hudzilla.org/php (siirry Paul Hudsonin verkkokirjaan). Lisää materiaalia suomeksi esimerkiksi ohjelmointiputkan

Lisätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on

Lisätiedot

Luento 2: Tiedostot ja tiedon varastointi

Luento 2: Tiedostot ja tiedon varastointi HELIA 1 (19) Luento 2: Tiedostot ja tiedon varastointi Muistit... 2 Päämuisti (Primary storage)... 2 Apumuisti (Secondary storage)... 2 Tiedon tallennuksen yksiköitä... 3 Looginen taso... 3 Fyysinen taso...

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

KAAVAT. Sisällysluettelo

KAAVAT. Sisällysluettelo Excel 2013 Kaavat Sisällysluettelo KAAVAT KAAVAT... 1 Kaavan tekeminen... 2 Kaavan tekeminen osoittamalla... 2 Kaavan kopioiminen... 3 Kaavan kirjoittaminen... 3 Summa-funktion lisääminen... 4 Suorat eli

Lisätiedot

Määrittelydokumentti

Määrittelydokumentti Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta

Lisätiedot

812336A C++ -kielen perusteet, 21.8.2010

812336A C++ -kielen perusteet, 21.8.2010 812336A C++ -kielen perusteet, 21.8.2010 1. Vastaa lyhyesti seuraaviin kysymyksiin (1p kaikista): a) Mitä tarkoittaa funktion ylikuormittaminen (overloading)? b) Mitä tarkoittaa jäsenfunktion ylimääritys

Lisätiedot

Kielioppia: toisin kuin Javassa

Kielioppia: toisin kuin Javassa Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien

Lisätiedot

Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016)

Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Tietokoneavusteinen opetus -kurssilla opetetaan Adobe Flash CS6:n käyttämistä neljänä kertana: 11.3.2016, 15.3.2016, 18.3.2016 ja 1.4.2016. Harjoituskerroilla

Lisätiedot

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

Kääntäjän virheilmoituksia

Kääntäjän virheilmoituksia OHJ-1101 Ohjelmointi 1e 2008-09 1 Kääntäjän virheilmoituksia Kun progvh2 ohjelma käännetään antaa tutg++ seuraavat virheilmoitukset ja varoitukset: proffa> tutg++ progvh2.cc progvh2.cc:29:13: warning:

Lisätiedot

LAS-TIEDOSTON SISÄLTÖ LIITE 2/1

LAS-TIEDOSTON SISÄLTÖ LIITE 2/1 LAS-TIEDOSTON SISÄLTÖ LIITE 2/1 LAS-TIEDOSTON SISÄLTÖ Las-tiedoston version 1.4 mukainen runko koostuu neljästä eri lohkosta, ja jokaiseen lohkoon voidaan tallentaa vain standardissa sovittua tietoa ja

Lisätiedot

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015

815338A Ohjelmointikielten periaatteet 2014-2015 815338A Ohjelmointikielten periaatteet 2014-2015 X Skriptiohjelmointi Sisältö 1. Johdanto 2. Skriptikielten yleispiirteitä 3. Python 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 2 X.1 Johdanto

Lisätiedot

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus) VISUAL BASIC OHJEITA Kutsuttava ohjelma alkaa kometoparilla Sub... End Sub Sub ohjelmanimi()...koodia... End Sub Muuttujat Muuttujan esittely Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency,

Lisätiedot

JavaScript alkeet Esimerkkikoodeja moniste 2 (05.10.11 Metropolia)

JavaScript alkeet Esimerkkikoodeja moniste 2 (05.10.11 Metropolia) JavaScript alkeet Esimerkkikoodeja moniste 2 (05.10.11 Metropolia) Esim 5.1 laskujärjestys operaattorit var tulos = 5 + 4 * 12 / 4; document.write("5 + 4 * 12 / 4 laskutoimituksen tulos

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

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ... 1. Tietorakenteet Tietorakenteet organisoivat samankaltaisten olioiden muodostaman tietojoukon. Tämä järjestys voidaan saada aikaan monin tavoin, esim. Keräämällä oliot taulukkoon. Liittämällä olioihin

Lisätiedot

12 Mallit (Templates)

12 Mallit (Templates) 12 Mallit (Templates) Malli on määrittely, jota käyttämällä voidaan luoda samankaltaisten aliohjelmien ja luokkien perheitä. Malli on ohje kääntäjälle luoda geneerisestä tyyppiriippumattomasta ohjelmakoodista

Lisätiedot

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100 Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).

Lisätiedot

Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa.

Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa. Laskuharjoitus 1A Mallit Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa. 1. tehtävä %% 1. % (i) % Vektorit luodaan

Lisätiedot

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu

Lisätiedot

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. TIETOKONEOHJELMIEN RAKENNE Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. Teollisuusautomaation ohjelmiin on lainattu runsaasti perinteisen

Lisätiedot

1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

TIETORAKENTEET JA ALGORITMIT

TIETORAKENTEET JA ALGORITMIT TIETORAKENTEET JA ALGORITMIT Timo Harju 1999-2004 1 typedef link List; /* Vaihtoehtoisia nimiä */ typedef link Stack; /* nodepointterille */ typedef link Queue typedef struct node Node; /* itse nodelle

Lisätiedot

Verilogvs. VHDL. Janne Koljonen University of Vaasa

Verilogvs. VHDL. Janne Koljonen University of Vaasa Verilogvs. VHDL Janne Koljonen University of Vaasa Sälää Huom! Verilogistauseita versioita: 1995, 2001 ja 2005. Kommentit Javasta tutut // ja /* */ ovat kommenttimerkkejä. Case sensitivity Isot ja pienet

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma:

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma: Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 2 1. Toteuta Pythonilla seuraava ohjelma: 2. Tulosta Pythonilla seuraavat luvut allekkain a. 0 10 (eli, näyttää tältä: 0 1 2 3 4 5 6 7 8 9 10 b. 0 100 c. 50 100 3.

Lisätiedot

MATLABin alkeita J.Merikoski JYFL 2009 fysp120

MATLABin alkeita J.Merikoski JYFL 2009 fysp120 MATLABin alkeita J.Merikoski JYFL 2009 fysp120 Tämän pikaoppaan tarkoitus on auttaa nopeaan alkuun matlab-ohjelmiston käytössä. Keskitymme fyysikolle (välittömästi) hyödyllisimpiin komentoihin ja rakenteisiin.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja

Lisätiedot

etunimi, sukunimi ja opiskelijanumero ja näillä

etunimi, sukunimi ja opiskelijanumero ja näillä Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

ATK tähtitieteessä. Osa 2 - IDL perusominaisuudet. 12. syyskuuta 2014

ATK tähtitieteessä. Osa 2 - IDL perusominaisuudet. 12. syyskuuta 2014 12. syyskuuta 2014 IDL - Interactive Data Language IDL on tulkattava ohjelmointikieli, jonka vahvuuksia ovat: Yksinkertainen, johdonmukainen komentosyntaksi. Voidaan käyttää interaktiivisesti, tai rakentamalla

Lisätiedot

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja

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

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

Lisätiedot

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa ssa ohjelman käytössä suoritusaikana oleva muisti jakautuu neljään osaan: koodisegmentti datasegmentti pinosegmentti (stack) kasa (heap) ssa ohjelman koodisegmentti sisältää käännetyn ohjelmakoodin sisältö

Lisätiedot