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.

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

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

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

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

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

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

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

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

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

Lisätiedot

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

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

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

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

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

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

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

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

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

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

3. Muuttujat ja operaatiot 3.1

3. Muuttujat ja operaatiot 3.1 3. Muuttujat ja operaatiot 3.1 Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit.

Lisätiedot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit. 3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen

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

Matlabperusteita, osa 1. Heikki Apiola Matlab-perusteita, osa 1. Heikki Apiola. 12. maaliskuuta 2012

Matlabperusteita, osa 1. Heikki Apiola Matlab-perusteita, osa 1. Heikki Apiola. 12. maaliskuuta 2012 Matlab-perusteita, 12. maaliskuuta 2012 Matlab-perusteita, Ohjelmahahmotelma 1. viikko: Matlab 2. viikko: Maple (+ annettujen Matlab tehtävien ratkaisuja) 3. viikko: Maple ja Matlab (lopputyöt) Matlab-perusteita,

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

Matriiseista. Emmi Koljonen

Matriiseista. Emmi Koljonen Matriiseista Emmi Koljonen 3. lokakuuta 22 Usein meillä on monta systeemiä kuvaavaa muuttujaa ja voimme kirjoittaa niiden välille riippuvaisuuksia, esim. piirin silmukoihin voidaan soveltaa silmukkavirtayhtälöitä.

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

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

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

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

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin perusteet, syksy 2006 Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen

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

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

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

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

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

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

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

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

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

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

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

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

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

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

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

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

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

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

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

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

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

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

811120P Diskreetit rakenteet

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

Lisätiedot

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

Matemaattiset ohjelmistot A. Osa 2: MATLAB

Matemaattiset ohjelmistot A. Osa 2: MATLAB Matemaattiset ohjelmistot 802364A Osa 2: MATLAB Mikko Orispää 30. lokakuuta 2013 Sisältö 1 MATLAB 2 1.1 Peruslaskutoimitukset......................... 2 1.2 Muuttujat................................ 3

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

Python-ohjelmointi Harjoitus 2

Python-ohjelmointi Harjoitus 2 Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento

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

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

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

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n

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

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

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

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

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

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

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

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

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.3.2010 1 / 36 Monikko Monikko (engl. tuple) muistuttaa listaa, mutta monikon sisältöä ei voi muuttaa sen jälkeen,

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

Heikki Apiola, Juha Kuortti, Miika Oksman. 5. lokakuuta Matlabperusteita, osa 1

Heikki Apiola, Juha Kuortti, Miika Oksman. 5. lokakuuta Matlabperusteita, osa 1 Matlab-perusteita, 5. lokakuuta 2015 Matlab-perusteita, Mikä on Matlab Matriisilaboratorio [Cleve Moler, Mathworks inc.] Numeerisen laskennan työskentely-ympäristö Suuri joukko matemaattisia ja muita funktioita,

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

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

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

Kokonaislukuaritmetiikka vs. logiikkaluupit

Kokonaislukuaritmetiikka vs. logiikkaluupit Diskreetti matematiikka, syksy 2010 Matlab-harjoitus 3 (18.11. klo 16-18 MP103) Tehtäviin vastataan tälle paperille, osoitettuihin tyhjiin alueisiin, yleensä tyhjille riveille. Tehtävät saa ja on suorastaan

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 10: Paikalliset muuttujat, kirjan tulkki kokonaisuutena (mm. SICP 3.2, 4.1.24.1.6) Riku Saikkonen 22. 11. 2012 Sisältö 1 Ympäristöt: miten paikalliset

Lisätiedot

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A. Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta

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

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento

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

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka

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

Rakenteiset tietotyypit Moniulotteiset taulukot

Rakenteiset tietotyypit Moniulotteiset taulukot C! Rakenteiset tietotyypit Moniulotteiset taulukot 22.2.2018 Agenda Rakenteiset tietotyypit Vilkaisu 6. kierroksen tehtäviin Moniulotteiset taulukot Esimerkki Seuraava luento to 8.3. Ilmoittautuminen ohjelmointikokeeseen

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

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

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

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

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Toinen harjoitustyö. ASCII-grafiikkaa 2017 Toinen harjoitustyö ASCII-grafiikkaa 2017 Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt17-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin

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

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

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

Loppukurssin järjestelyt C:n edistyneet piirteet

Loppukurssin järjestelyt C:n edistyneet piirteet C! Loppukurssin järjestelyt C:n edistyneet piirteet 30.3.2017 Ohjelmassa Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Esikääntäjä Parametrilistat Funktio-osoittimet Kunniamainintoja Kuura

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

1. Mitä tehdään ensiksi?

1. Mitä tehdään ensiksi? 1. Mitä tehdään ensiksi? Antti Jussi i Lakanen Ohjelmointi 1, kevät 2010/ Jyväskylän yliopisto a) Etsitään Googlesta valmis algoritmi b) Mietitään miten itse tehtäisiin sama homma kynällä ja paperilla

Lisätiedot