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.

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

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

Lisätiedot

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006 Harjoitus 1: Matlab Mat-2.2107 Sovelletun matematiikan tietokonetyöt Syksy 2006 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1 Harjoituksen aiheita Tutustuminen Matlab-ohjelmistoon Laskutoimitusten

Lisätiedot

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 81122P (4 ov.) 30.5.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

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

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

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

Ohjelmointiharjoituksia Arduino-ympäristössä

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

Lisätiedot

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 811122P (5 op.) 12.12.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

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

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

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

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla 2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

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

Lisätiedot

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

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

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

1. Omat operaatiot 1.1

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

Lisätiedot

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

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

Lisätiedot

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Ohjelmointi 1 C#, kevät 2013, 2. tentti ITKP102 Ohjelmointi 1 C# 15.5.2013 1 / 6 Ohjelmointi 1 C#, kevät 2013, 2. tentti Tentaattori Antti-Jussi Lakanen Tässä tentissä saa olla mukana omia muistiinpanoja yhden arkin verran. Tentin valvojalla

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

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

Matlab- ja Maple- ohjelmointi

Matlab- ja Maple- ohjelmointi Perusasioita 2. helmikuuta 2005 Matlab- ja Maple- ohjelmointi Yleistä losoaa ja erityisesti Numsym05-kurssin tarpeita palvellee parhaiten, jos esitän asian rinnakkain Maple:n ja Matlab:n kannalta. Ohjelmien

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

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

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

Ohjelmoinnin perusteet Y Python

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

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

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

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

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

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

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

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

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

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

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

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

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

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

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

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

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

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

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

Olio-ohjelmointi Syntaksikokoelma

Olio-ohjelmointi Syntaksikokoelma C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja

Lisätiedot

Harjoitus 10: Mathematica

Harjoitus 10: Mathematica Harjoitus 10: Mathematica Mat-2.2107 Sovelletun matematiikan tietokonetyöt Syksy 2006 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1 Harjoituksen aiheita Tutustuminen Mathematica-ohjelmistoon Mathematican

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

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

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

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

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 06.09.2005 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ

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

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin

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

Mathematica Sekalaista asiaa

Mathematica Sekalaista asiaa Mathematica Sekalaista asiaa Asetusoperaattorit Mathematicassa voi käyttää omia muuttujasymboleja melko rajattomasti ja niiden nimeämisessä voi käyttää miltei mitä tahansa merkkejä. Käytännössä nimeämisessä

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

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

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

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

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

Lisätiedot

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

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

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

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

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

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n

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

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

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL FinFamily PostgreSQL 1 Sisällys / Contents FinFamily PostgreSQL... 1 1. Asenna PostgreSQL tietokanta / Install PostgreSQL database... 3 1.1. PostgreSQL tietokannasta / About the PostgreSQL database...

Lisätiedot

Harjoitus 6: Simulink - Säätöteoria. Syksy 2006. Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1

Harjoitus 6: Simulink - Säätöteoria. Syksy 2006. Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1 Harjoitus 6: Simulink - Säätöteoria Mat-2.2107 Sovelletun matematiikan tietokonetyöt Syksy 2006 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1 Harjoituksen aiheita Tutustuminen säätötekniikkaan Takaisinkytkennän

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

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

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0 CODEONLINE Monni Oo- ja Java-harjoituksia Version 1.0 Revision History Date Version Description Author 25.10.2000 1.0 Initial version Juha Johansson Inspection History Date Version Inspectors Approved

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

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Taulukon edut Taulukon haitat Taulukon haittojen välttäminen Dynaamisesti linkattu lista Linkatun listan solmun määrittelytavat Lineaarisen listan toteutus dynaamisesti linkattuna

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

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

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

Ohjelmointi 1 C#, kevät 2013,

Ohjelmointi 1 C#, kevät 2013, Ohjelmointi 1 C#, kevät 2013, 19.4.2013 (English versions of the questions can be requested from the supervisor. Englanninkieliset kysymykset saa pyytämällä tentin valvojalta.) Tentti (yliopisto opiskelijat)

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Muuttujat eri muisteissa Ohjelman muistialueen layout Paikallisen ja globaalin muuttujan ominaisuudet Dynaamisen muistinkäytön edut Paikallisten muuttujien dynaamisuus ADT

Lisätiedot

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

HARJOITUSKERTA 1: SPSS-OHJELMAN PERUSKÄYTTÖ JA MUUTTUJAMUUNNOKSET

HARJOITUSKERTA 1: SPSS-OHJELMAN PERUSKÄYTTÖ JA MUUTTUJAMUUNNOKSET HARJOITUSKERTA 1: SPSS-OHJELMAN PERUSKÄYTTÖ JA MUUTTUJAMUUNNOKSET OHJELMAN KÄYNNISTÄMINEN Käynnistääksesi ohjelman valitse All Programs > > IBM SPSS Statistics 2x, tai käynnistä ohjelma työpöydän kuvakkeesta.

Lisätiedot

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =

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

ATK tähtitieteessä. Osa 4 - IDL input/output. 19. syyskuuta 2014

ATK tähtitieteessä. Osa 4 - IDL input/output. 19. syyskuuta 2014 19. syyskuuta 2014 IDL - INPUT/OUTPUT-rutiinit IDL pystyy lukemaan ja kirjoittamaan monentyyppisiä tiedostoja, esim. FORTRAN ja C-kielten ohjelmien tulostusta. Käytössä on myös monipuoliset tulostuksen

Lisätiedot

7. Oliot ja viitteet 7.1

7. Oliot ja viitteet 7.1 7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 8: Tulkki: proseduurit, abstrakti syntaksi, quote ja cond (mm. SICP 44.1.5 osin) Riku Saikkonen 15. 11. 2011 Sisältö 1 Argumentittomat proseduurit ja käyttöliittymä

Lisätiedot

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

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

Lisätiedot

SELECT-lauseen perusmuoto

SELECT-lauseen perusmuoto SQL: Tiedonhaku SELECT-lauseen perusmuoto SELECT FROM WHERE ; määrittää ne sarakkeet, joiden halutaan näkyvän kyselyn vastauksessa sisältää

Lisätiedot

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

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 4.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 4.3.2009 1 / 35 Tiedostot Tiedostojen käsittelyä tarvitaan esimerkiksi seuraavissa tilanteissa: Ohjelman käsittelemiä

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,

Lisätiedot

Matriisit, kertausta. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

Matriisit, kertausta. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi Matriisit, kertausta Merkintöjä 1 Matriisi on suorakulmainen lukukaavio. Matriiseja ovat esimerkiksi: ( 2 0.4 8 0 2 1 ) ( 0, 4 ), ( ) ( 1 4 2, a 11 a 12 a 21 a 22 ) Kaavio kirjoitetaan kaarisulkujen väliin

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

7.4 Sormenjälkitekniikka

7.4 Sormenjälkitekniikka 7.4 Sormenjälkitekniikka Tarkastellaan ensimmäisenä esimerkkinä pitkien merkkijonojen vertailua. Ongelma: Ajatellaan, että kaksi n-bittistä (n 1) tiedostoa x ja y sijaitsee eri tietokoneilla. Halutaan

Lisätiedot