Ohjelmointiparadigmat

Koko: px
Aloita esitys sivulta:

Download "Ohjelmointiparadigmat"

Transkriptio

1 Ohjelmointiparadigmat PROSEDURAALINEN OHJELMOINTI (CKL) Proseduraalinen ohjelmointi Olio-ohjelmointi Funktionaalinen ohjelmointi Logiikkaohjelmointi Rinnakkaisohjelmointi Piia Räsänen Proseduraalinen ohjelmointi Ohjelma jaetaan toiminnallisiin osiin Top-down Bottom-up Aliohjelmat Abstraktio Parametriohjaus Pääohjelma Suoritus lauseittain, järjestyksessä Ohjausrakenteet Proseduraalinen ohjelmointi Staattiset muuttujat Alkeistieto Taulukot Dynaamiset muuttujat Tietorakenteet Osoittimet (pointterit) C-kieli Historiaa Kehitettiin 1970-luvun alussa Kehittäjä Dennis Ritchie, AT & T:n Bellin laboratorio Alun perin suunnattu järjestelmäohjelmointiin Syntyi UNIX-käyttöjärjestelmää suunniteltaessa Uudelleenkoodauksen kieli Yleistyi pian myös sovellusohjelmoinnissa Standardi ANSI C ANSI/ISO 9899 Ensimmäinen versio 1990 Laajennettu versio 1999 C vs. Java Samankaltainen syntaksi Molemmissa tyypitys C proseduraalinen kieli, Java oliokieli!!! Muistin hallinta Javassa automaattista, C:ssä ohjelmoijan vastuulla C:ssä osoitintyyppi, Javassa viittaus-tyyppi (sama asia, mutta ei sinne päinkään) C:ssä otsikkotiedostot ja makrot Java tulkattava kieli, C käännetään suoraan 1

2 Termit haltuun Termit haltuun Lause Ohjelman toiminnallinen perusosa Päättyy puolipisteeseen Esim. rakenteinen lause (if, for jne.) Hyppylause (break, continue, goto) Paluulause (return) Koottu lause (lohko) Tyhjä lause (;) Lauseke päätettynä puolipisteeseen Lauseke Ohjelmointikielinen ilmaus, jolla on arvo Vakiot Muuttujat Aritmeettiset laskutoimitukset Funktion kutsut Pääohjelma Ohjelman kääntäminen #include <stdio.h> cs:ssä oleva gcc-kääntäjä int main(void) { printf("hello world!\n"); return 0; } gcc koodi.c./a.out Esimerkki: hello.c Ohjelman kääntäminen Pääohjelma gcc:n parametreja -Wall Tulostetaan myös varoitukset Esimerkki: kaanneltava.c -o Tulostiedosto -ansi ANSI-C:n mukaista koodia Muita pääohjelman otsikkoja void main(void) int main() void main() main() main(void) Käyttöympäristökohtaisia, vanhentuneita jne. ÄLÄ KÄYTÄ! Ikivanhat kääntäjät eivät tunne void-sanaa 2

3 Pääohjelma Tunnukset Parametrien välittäminen pääohjelmalle int main(int argc, char **argv) int main(int argc, char *argv[]) Sallitut merkit: a-z ja A-Z 0-9 _ (alaviiva) Ensimmäinen merkki ei saa olla numero Käytännössä 1-31 merkkiä Muuttujat Tyypitetty kieli Muuttujan määrittely: double luku; int a, b=8, c; Tulostusfunktio printf() #include <stdio.h> printf(ohjausjono, tieto1, tieto2...); Ohjausjono Aina lainausmerkeissä Voi sisältää ns. konversiomäärittelyitä, joihin parametrina annettavat tiedot viittaavat printf("muuttujan luku arvo on %d.\n",luku); printf():n tavallisimmat konversiomäärittelyt printf():n tavallisimmat konversiomäärittelyt Tyypit %c char Tyypit %f float, double %d %i (signed) int %lf double %u unsigned int %L long double %ld %li long int %s merkkijono %lu unsigned long %o etumerkitön oktaaliluku %x %X etumerkitön heksaluku 3

4 printf():n tavallisimmat konversiomäärittelyt Kentän leveys & tarkkuus Annetaan %-merkin ja tyypin välissä kentta.tarkkuus printf("%4.2f",doubleluku); Esimerkki: tulostelua.c Perustietotyypit Arvoalueet riippuvat ympäristöstä sizeof(tyyppi) sizeof(muuttuja) Yksittäinen merkki Kokonaisluku Desimaaliluku Merkkityypit Yksittäinen merkki tai pieni kokonaisluku Tilanvaraus (vähintään) yksi tavu (8b) char unisigned & signed Kokonaislukutyypit short int Vähintään16bit int Vähintään 16bit, usein 32bit long int Vähintään 32bit long long int Vähintään 64bit char! Kokonaislukutyypit Signed Etumerkillinen luku Kahden komplementti Unsigned Etumerkitön Pienin arvo nolla Koko sama kuin vastaavalla etumerkillisellä muuttujalla Desimaalilukutyypit Liukulukuja Aina enemmän tai vähemmän likiarvoja float Mantissa vähintään 6 numeroa Eksponentti vähintään [-37,37] double Mantissa vähintään 10 numeroa Eksponentti vähintään [-37,37] long double Mantissa vähintään 10 numeroa Eksponentti vähintään [-37,37] 4

5 Arvoalueiden rajat Ylivuoto #include <limits.h> CHAR_MIN CHAR_MAX UCHAR_MAX SHRT_MIN SHRT_MAX USHRT_MAX INT_MIN INT_MAX UINT_MAX LONG_MIN LONG_MAX ULONG_MAX LLONG_MIN LLONG_MAX ULLONG_MAX Esimerkki: perustietotyypit.c Jos laskennan tulos menee arvoalueen ulkopuolelle, bitit "valuvat yli" merkitsevästä päästä ( ) (2 10 ) ( ) ( ) ( ) (-2 10 ) Tyypinmuunnokset Lausekkeessa keskenään erityyppisiä operandeja Sijoitusoperaatiossa sijoitettavan arvo eri tyyppiä kuin sijoituksen kohdemuuttuja Yleinen muunnos lausekkeen arvon laskemiseksi Laskennassa ei käytetä int-tyyppiä suppeampaa tarkkuutta Tarkkuus voi kärsiä sijoitettaessa muuttujaan Eksplisiittinen tyypinmuunnos Ohjelmoijan vastuulla! Tyypinmuunnoksen vaikutus muutettavaan arvoon Kokonaisluku kokonaisluku Jos muutettava mahtuu kohteen tyyppiin arvo ja merkki säilyvät Jos muutettava ei mahdu kohteen tyyppiin ratkaisu järjestelmäkohtainan Joka tapauksessa menee pieleen Desimaaliluku kokonaisluku Desimaaliosa jää pois Jos kokonaisosa mahdollista esittää kohdetyypissä arvo ja etumerkki säilyvät Tyypinmuunnoksen vaikutus muutettavaan arvoon Kokonaisluku desimaaliluku Jos muutettavan arvon merkitsevien numeroiden määrä ei ylitä kohtaan merkitsevien numeroiden määrää arvo ja merkki säilyvät Desimaaliluku desimaaliluku Suppeammasta laajempaan arvo ja merkki säilyvät Jos muutettavan arvon merkitsevien numeroiden määrä ei ylitä kohtaan merkitsevien numeroiden määrää arvo ja merkki säilyvät Esimerkki: tyyppitesti.c Totuusarvot C-kielessä ei varsinaista totuusarvotyyppiä Totuusarvot kokonaislukuja epätosi == 0 tosi!= 0 5

6 Kokonaislukuvakiot Desimaalilukuvakiot Tyyppi voidaan määrätä Esitysmuoto desimaali-, oktaali- tai heksadesimaalijärjestelmän mukaan Oletuksena 10-kantainen int Kokonaislukujen loppuliitteet l, L long (18L) u, U unsigned (18U) Kokonaislukujen etuliitteet 0 oktaaliluku (022) 0x, 0X heksadesimaaliluku (0X12) Tyyppi voidaan määrätä Oletustyyppi double Desimaalilukujen loppuliitteet f, F float (123.4F) l, L long double (123.4L) Eksponenttiesitysmuoto e, E (1.23E+2) Merkkivakiot Erikoismerkkejä Kirjoitetaan heittomerkkien sisään \n \t \a \r \b \f \\ \' \" \? rivinvaihto tabulointi äänimerkki rivin alkuun peruutus sivunvaihto kenoviiva heittomerkki lainausmerkki kysymysmerkki Taulukot Joukko muuttujia, jotka ovat keskenään samaa tyyppiä Taulukon alkiot Vierekkäiset paikat keskusmuistissa alkio_tyyppi tunnus[koko]; int luvut[10]; char merkit[] = {'a','b','c'}; double taulukko[3][4]; Periaatteessa max 12 ulottuvuutta tunnus[indeksi] = alkio; Taulukon ylivuoto Taulukon ulkopuolella olevia alkioita voidaan käyttää Muistiosoite taulukon lopussa Sisältö?! Esimerkki: taulukot.c 6

7 Nimetyt vakiot #define VUOSI 2009; Operaattorit sitovuusjärjestyksessä () []. -> sizeof (type) - +! ~ & * * / % + - >> << < > <= >= ==!= & ^ &&?: Bittioperaatiot <<, >> & ~ Bittien siirtäminen yhdellä vasemmalle/oikealle Bittirinnakkainen AND-operaatio Bittirinnakkainen OR-operaatio Binääriluvun komplementti Esimerkki: bittijuttuja.c Laskentajärjestys Operaattoreiden sitovuus Alilausekkeiden arvottamisjärjestystä ei määrätty Poikkeuksena &&? :, Laskentajärjestys pääasiassa vasemmalta oikealle Poikkeuksena pointtereihin liittyvät * ja & sekä sijoitukset Esimerkki: laskentajarjestys.c Laskentajärjestys Sequence point Rajattu osa ohjelmaa, jonka laskenta on irrallaan ympäristöstä Muuttujien arvojen oltava yksikäsitteisiä Optimointi Tätä rikottaessa ratkaisut järjestelmäkohtaisia Raja: Tietyt operaattorit ( &&?: ) Lauseen loppu Myös rakenteiset lauseet Esimerkki: sequencepoint.c Kommentit /* Tämä on kommentti */ // Tämä ei ole kommentti 7

8 Ehtolause Ehtolause if(ehto) lause; if(ehto) lause; else lausek; if(ehto){ lausea; lauseb; } else { lausec; laused; lausee; } switch-lause Ehdollinen lauseke switch(lauseke){ case vakio1: lauseita; break; case vakio2: lauseita; case vakio3: case vakio4: lauseita; break; default; lauseita; } ehto? lausekea : lausekeb Jos ehto on tosi, lausekkeen arvo on lausekea, muuten lausekeb i = (a>b)? a : b; while-lause do-while-lause while(ehto) lauseke; do lauseke; while(ehto); while(ehto) { lausekea; lausekeb; } do { lausekea; lausekeb; } while(ehto); 8

9 for-lause Ehdottomat hyppylauseet for(lausekea; lausekeb; lausekec) lause; for(alustus; ehto; päivitys) { lausea; lauseb; lausec; } break Poistuminen switch-rakenteesta Toiston katkaiseminen continue Ohitetaan toistorakenteen rungon loppuosa return Funktiosta poistuminen Ehdottomat hyppylauseet Funktiot goto Siirtyminen määrättyyn koodin kohtaan Erittäin kyseenalainen lause, ei koskaan välttämätön! C:ssä kaikki aliohjelmat ovat funktioita Lähdekoodin määritykset voimassa esittelykohdasta eteenpäin Funktio täytyy olla kirjoitettuna ennen kutsuaan Funktion prototyyppimäärittely tyyppi fkt_nimi(tyyppi par1, tyyppi par2,... tyyppi parn); Esittely mahdollistaa aliohjelman kutsun myös silloin, kun se ei ole "näkyvissä" kääntäjälle Yleensä sama kuin funktion otsikkorivi - runko Pelkät parametrien tyypit riittää Funktion kutsu koostuu funktion nimestä ja suluissa olevasta parametrilistasta Funktiot Funktion kutsu koostuu funktion nimestä ja suluissa olevasta parametrilistasta Parametrittomuus = void Parametrit arvoparametreja Arvo kopioituu Paluuarvo Tietue "Olio ilman metodeja" Kootaan yhteen (eri tyyppistä) tietoa Ohjelmoijan määrittelemä tietotyyppi Voidaan määritellä joko tietotyyppinä tai muuttujan määrittelyn yhteydessä Tietuetyypin esittely voidaan tehdä metodin sisällä, lähdekooditiedostossa irrallisena tai erillisessä otsikkotiedostossa Kenttiin viittaaminen pistenotaatiolla Esimerkki tietueita.c, muistia.c 9

10 Tietue Omat tietotyypit struct PVM { int pp; int kk; int vv; }; struct PVM pva; pva.pp=21; pva.kk=4; pva.vv=2009; struct { int x,y; } piste; piste.x=2; piste.y=5; typedef tietotyyppi omanimi; Esimerkki: typedef.c, prototyyppi.c Pointterit Pointterit Pointteri on muuttuja, jonka sisältönä on toisen muistipaikan osoite Operaattorit: & muistipaikan osoite * osoitteessa olevan muistipaikan sisältö Pointteri on tyypitetty, sitä määriteltäessä täytyy kertoa sen kohteen tyyppi float palkka = ; float *p; p = &palkka; Muuttujan arvon käsittely aliohjelmassa Parametrina muistiosoite Pointterin osoittaman muuttujan käsittely Sisältöoperaattorin avulla Indeksoimalla (taulukko) Nuolioperaattorilla (tietue) Esmerkki: pointterit.c, pointterit2.c Syöttöfunktio scanf() #include <stdio.h> scanf(ohjausjono, kohde1, kohde2...); Ohjausjono lainausmerkeissä Mitä tietoa luetaan, konversiomäärittelyt Kohdemuuttujien muistiosoitteet & scanf("%d",&luku); Syöttöfunktio scanf() Tavallisimmat konversiomäärittelyt %d int (10-järjestelmä) %ld long %i int (myös heksa- ja oktaaliluvut) %li long (myös heksa- ja oktaaliluvut) %u unsigned %lu undisgned long %f float %lf double %c char %s char[n] (merkkijono) 10

11 Funktiot Merkkijono Pointteri parametrina "Muuttujaparametri" Itse parametri on edelleen arvoparametri Pointteri osoittaa muistipaikkaan, joka on varattu kutsuvassa ympäristössä Esimerkki pointteriparametrit.c Taulukko parametrina Pointteri taulukon ensimmäiseen soluun Esimerkki: taulukkoparametrit.c C-kielessä merkkijono on joukko char-muuttujia peräkkäisissä muistipaikoissa char mjono1[10], *mjono2; Merkkijonon lopussa loppumerkki '\0' Käsittely ohjelmoijan vastuulla (virhealtista) Merkkijonovakio voidaan ilmaista lainausmerkeissä Esimerkki: merkkijonoja.c #include <string.h> Esimerkki: merkkijonojenkasittely.c size_t strlen(const char *) size_t erikoistietotyyppi, käytännössä etumerkitän kokonaisluku parametrina osoitin (merkkijonon ensimmäiseen) merkkiin const kertoo, ettei merkkijonoa muuteta funktiossa char *strcpy(char *s1, const char *s2) Kopioi s2:n osoittaman merkkijonon s1:n osoittamaan paikkaan Palauttaa osoittimen s1-merkkijonon alkuun char *strncpy(char *s1, const char *s2, size_t n) Kuten strcpy Kopioi korkeintaan n merkkiä Huom! Jos loppumerkki ei sisälly kopioitaviin, se jää pois! int strcmp(const char *s1, const char *s2) Verrataan s1:n ja s2:n osoittamia merkkijonoja merkki kerrallaan <0 jos s1 ennen s2 ==0 jos s1 ja s2 samat >0 jos s1 s2:n jälkeen int strncmp(char *d, const char *s, size_t n) Kuten strcmp Vertaa korkeintaan n merkkiä alusta lukien 11

12 char *strcat(char *s1, const char *s2) Yhdistää s2:n osoittaman merkkijonon s1:n osoittaman merkkijonon loppuun Huolehdittava, että s1:lle varattu riittävästi tilaa! char *strncat(char *s1, const char *s2, size_t n) Kuten strcat Liittää korkeintaan n merkkiä char *strchr(const char *s, int c) Etsii merkin c ensimmäisen esiintymän s:n osoittamassa merkkijonossa Palauttaa osoittimen ko. merkkiin (merkkijonoon) Jos merkkiä ei löydy, palauttaa NULL-pointterin char *strstr(const char *s1, const char *s2) Etsii ensimmäistä s2:n osoittamaa alimerkkijonoa s1:n osoittamasta merkkijonosta #include <stdio.h> int sprintf(char *s1, const char *s2,...) Asettaa s1:n osoittamaan merkkijonoon muotoillun merkkijonon s2 int sscanf(const char *s1, const char *s2,...) Lukee s1:n osoittamasta merkkijonosta muotoillun merkkijonon s2 mukaisesti Merkkijonotaulukot #include <stdlib.h> int atoi(const char *); long atol(const char *); double atof(const char *) Määritellään yleensä merkkijonoihin osoittavia pointtereita sisältävänä taulukkona Mahdollista toteuttaa myös kaksiulotteisena merkkitaulukkona 12

13 Standarditietovirrat Merkkitieto Binääritietovirta Tieto siirtyy sellaisenaan Tekstitietovirta Merkkijono Rivejä Syöttövirta stdin Tulostevirta stdout Yksittäiset merkit char-tyyppiä Merkkivakio heittomerkeissä Merkkitietoa luetaan puskuroidusti Merkkitiedon lukeminen Merkkijonon lukeminen scanf("%c",&merkki); int getchar(void) scanf("%s",&mjono) fgets() Rivinlukufunktio Liittää aina loppuun loppumerkin gets() Jos tila loppuu, loppumerkki jää pois! Esmierkki: lukuajakirjoitusta.c Merkkijonon tulostaminen printf("%s",mjono); puts(const char *); Tiedostojen käsittely Tiedostoa avattaessa ilmoitetaan tiedoston ulkoinen nimi sekä käsittelytapa Lukeminen "r" "rb" Kirjoittaminen "w" "a" "a+" "wb" "ab" "ab+" Päivittäminen "r+" "w+" "rb+" "wb+" Tiedoston lopussa EOF-merkki stdio.h:n symbolinen vakio Tiedosto-osoitin siirtyy automaattisesti luettaessa 13

14 Tiedoston avaaminen ja sulkeminen FILE *fopen(const char *, const char *); Avaa tiedoston käsittelyä varten Jos avaaminen ei jostain syystä onnistu, palautuu NULL int flcose(file *); Nollasta poikkeava arvo tapahtui virhe Tulisi muistaa tehdä aina! FILE *freopen(const char *, const char *, FILE *); Liittää parametritietovirran tiedostoon Tiedoston alkuun palaaminen void rewind(file *); Palauttaa tiedosto-osoittimen tiedoston alkuun Tekstitiedostoon kirjoittaminen Tekstitiedostosta lukeminen int fputc(int, FILE *); Merkin kirjoittaminen tiedostoon char *fputs(const char *, FILE *); Merkkijonon kirjoittaminen fprintf(file *, const char *,...); Muotoiltu kirjoittaminen int fgetc(file *); Merkin lukeminen tiedostosta char *fgets(char *, int, FILE *); Merkkijonon lukeminen tiedostosta fscanf(file *, const char *,...); Muotoiltu lukeminen Esimerkki: tekstitiedostot.c Binääritiedostoon kirjoittaminen size_t fwrite(const void *, size_t, size_t, FILE *); Osoitin lohkoon Koko 1-n tavua Esim. tietue Lohkon koko ja lohkojen lukumäärä Osoitin tiedostoon Binääritiedostosta lukeminen size_t fread(void *, size_t, size_t, FILE *); Osoitin luettavaan lohkoon Lohkon koko ja lohkojen lukumäärä Osoitin tiedostoon Esimerkki: binaaritiedosto.c 14

15 Dynaaminen muistialueen varaus include <stdlib.h> void *malloc(size_t n); Varaa muistia n tavua Palauttaa osoittimen varatun alueen alkuun Huom! Tyyppinä void * Muistitila pysyy varattuna kunnes se vapautetaan! void free(void *); Vapauttaa dynaamisesti varatun muistin Lisää dynaamisesta muistin varaamisesta void *calloc(int lkm, size_t n); Varaa muistia lkm kappaletta n tavun lohkoja Muuten kuten malloc void *realloc(void *ptr, size_t n); Suurentaa/pienentää ptr:n osoittaman dynaamisen muistitilan kokoa Alunperin varattu: malloc tai calloc Joko lisätilaa alkuperäisen perään tai kokonaan uusi tila jolloin osoite muuttuu Muistinvarausfunktiot palauttavat NULL (0) jos varaus epäonnistui 15

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa,

Lisätiedot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot Tiedosto yhteenkuuluvien tietojen joukko, joka on tavallisesti talletettu pysyväismuistiin muodostuu tietueista, jotka voivat olla keskenään samanlaisia tai vaihdella tyypiltään tiedostot ovat joko tekstitiedostoja

Lisätiedot

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU Ohjelmointi 2 Jussi Pohjolainen TAMK» Tieto- ja viestintäteknologia Tietotyypeistä C++ - kielessä useita tietotyyppejä Kirjaimet: char, wchar_t Kokonaisluvut: short, int, long Liukuluvut: float, double

Lisätiedot

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

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

Lisätiedot

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

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

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

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

Lisätiedot

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

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

Luennon sisältö Tyypit int, char, float, double signed, unsigned short, long Vakiot const Rakenteet if, for, while, switch, do-while Syöttö ja tulostu

Luennon sisältö Tyypit int, char, float, double signed, unsigned short, long Vakiot const Rakenteet if, for, while, switch, do-while Syöttö ja tulostu C-kurssi Viikko 1: tyypit, rakenteet, makrot Luennon sisältö Tyypit int, char, float, double signed, unsigned short, long Vakiot const Rakenteet if, for, while, switch, do-while Syöttö ja tulostus Makrot

Lisätiedot

Ohjeet. AS C-ohjelmoinnin peruskurssi Aalto-yliopiston sahkotekniikan korkeakoulu Tentti , Raimo Nikkila

Ohjeet. AS C-ohjelmoinnin peruskurssi Aalto-yliopiston sahkotekniikan korkeakoulu Tentti , Raimo Nikkila AS-0.1103 C-ohjelmoinnin peruskurssi Aalto-yliopiston sahkotekniikan korkeakoulu Tentti 15.05.2013, Raimo Nikkila Ohjeet Kaikki ohjelmointitehtavat tulee toteuttaa C-kielella hyvaa ohjelmointityylia noudattaen.

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

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi ero taulukkoon taulukossa alkiot samantyyppisiä tietueessa alkiot voivat olla erityyppisiä tiedot kuitenkin yhteen kuuluvia ohjelmoinnin perusteet,

Lisätiedot

1. luento. Ohjelmointi (C) T0004 Syksy 2003. 1. luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot.

1. luento. Ohjelmointi (C) T0004 Syksy 2003. 1. luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot. EVTEK Teknillinen ammattikorkeakoulu Ohjelmointi (C) T0004 Syksy 2003 Olli Hämäläinen kurssin sisältö ja tavoitteet työmuodot luennot 1-2/2003 laboratorioharjoitukset 1-2/2003 kotitehtävät, laboratoriokerrat

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

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

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

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2 Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2 Syntaksilomake (22.4.2007) C-kielen standardikirjaston funktioita gets(merkkijono); scanf("formaatti", &muuttuja1,..., &muuttujan); sscanf(merkkijono,

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

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

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

C-kieli mahdollistaa hyvin tiiviin ja samalla sekavan tavan esittää asioita, kuitenkin hyvän ohjelman tulisi olla mahdollisimman helppolukuinen ja

C-kieli mahdollistaa hyvin tiiviin ja samalla sekavan tavan esittää asioita, kuitenkin hyvän ohjelman tulisi olla mahdollisimman helppolukuinen ja 1. C-kieli yleiskäyttöinen ohjelmointikieli, standardoitu 1990. siirrettävä laiteläheinen pieni ydin, monimutkaiset kokonaisuudet rakennetaan aliohjelmakirjastojen avulla. direktiivit ja esikääntäjien

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

Lyhyt kertaus osoittimista

Lyhyt kertaus osoittimista , syksy 2007 Kertausta Luento 10 12.10.2007 Syksy 2007 1 Lyhyt kertaus osoittimista char *p; /* char, int, jne ilmoittavat, minkä tyyppisiä */ Keskusmuisti int *q; /* olioita sisältäviin muistilohkoihin

Lisätiedot

1. Mitä seuraava ohjelma tulostaa? Vastaukseksi riittää yksi rivi joka esittää tulosteen. (6 p)

1. Mitä seuraava ohjelma tulostaa? Vastaukseksi riittää yksi rivi joka esittää tulosteen. (6 p) C- ohjelmoinnin peruskurssi, Tentti 28.5.2015 Lyhyt referenssi funktioista tehtäväpaperin lopussa. Paperilla on 5 tehtävää, joista useimmissa on muutama alikohta. Maksimipistemäärä on 30 pistettä. Kirjoita

Lisätiedot

C-kurssi syksy ltö. Luennon sisält. Luento 2: tyypit, rakenteet, makrot Tyypit. signed, unsigned short,, long Vakiot const Rakenteet

C-kurssi syksy ltö. Luennon sisält. Luento 2: tyypit, rakenteet, makrot Tyypit. signed, unsigned short,, long Vakiot const Rakenteet C-kurssi syksy 2007 Luento 2: tyypit, rakenteet, makrot 5.9.2008 Luennon sisält ltö Tyypit int, char, float, double signed, unsigned short,, long Vakiot const Rakenteet if,, for, while, switch, do-while

Lisätiedot

Luennon sisält. ltö. C-kurssi syksy ääreet: int ja char. Yksinkertaiset tyypit. Kokonaisluvut. Merkit

Luennon sisält. ltö. C-kurssi syksy ääreet: int ja char. Yksinkertaiset tyypit. Kokonaisluvut. Merkit Luennon sisält ltö C-kurssi syksy 2007 Luento 2: tyypit, rakenteet, makrot 5.9.2008 Tyypit int, char, float, double signed, unsigned short,, long Vakiot const Rakenteet if,, for, while, switch, do-while

Lisätiedot

C-kurssi kevät Luennon sisältö

C-kurssi kevät Luennon sisältö C-kurssi kevät 2006 Luento 2: tyypit, rakenteet, makrot 24.1.2006 Luennon sisältö Tyypit int, char, float, double signed, unsigned short, long Vakiot const Rakenteet if, for, while, switch, do-while Syöttö

Lisätiedot

Luennon sisältö. C-kurssi kevät Tasokokeen kohta 1: Taulukon järjestäminen. Tasokokeen kohta 2. Tasokokeen kohta 2. Tasokokeen kohta 3

Luennon sisältö. C-kurssi kevät Tasokokeen kohta 1: Taulukon järjestäminen. Tasokokeen kohta 2. Tasokokeen kohta 2. Tasokokeen kohta 3 Luennon sisältö C-kurssi kevät 2006 Luento 2: tyypit, rakenteet, makrot 24.1.2006 Tyypit int, char, float, double signed, unsigned short, long Vakiot const Rakenteet if, for, while, switch, do-while Syöttö

Lisätiedot

Loppukurssin järjestelyt

Loppukurssin järjestelyt C! Loppukurssin järjestelyt 29.3.2018 Ohjelmassa Yhteenvetoa palautteesta Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Kysyttävää / kerrattavaa 10-kierroksen asioista? Aikatauluista 10. kierroksen

Lisätiedot

Moduli 5: Kehittyneitä piirteitä

Moduli 5: Kehittyneitä piirteitä C! : Kehittyneitä piirteitä 19.4.2016 Aikataulusta 5. harjoituskierroksen määräaika: pe 22.4. Maari-C keskiviikkoisin ja torstaisin (12-14) Ti 26.4. Harjoitustentti (eli kertausluento) Normaalin luennon

Lisätiedot

Kielioppia: toisin kuin Javassa

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

Lisätiedot

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

Binäärioperaatiot Tiedostot ja I/O

Binäärioperaatiot Tiedostot ja I/O C! Binäärioperaatiot Tiedostot ja I/O 8.3.2018 Tiedotteita Viimeinen luento to 29.3. Ohjelmointitehtävä, ohjelmointikoe ja niiden järjestelyt Ohjelmointikokeeseen ilmoittautuminen auki 2 .c tiedostot ja.h

Lisätiedot

Osoittimet ja taulukot

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

Lisätiedot

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot C! : Moniulotteiset taulukot & Bittioperaatiot 15.3.2016 Agenda Pieni kertausharjoitus Moniulotteiset taulukot Esimerkki taulukoista Tauko (bittitehtävä) Binäärioperaatioista Esimerkki (vilkaistaan IP

Lisätiedot

Binäärioperaatiot Tiedostot ja I/O

Binäärioperaatiot Tiedostot ja I/O C! Binäärioperaatiot Tiedostot ja I/O 16.3.2017 Tiedotteita Määräaikoja pidennetty Myös 7. kierros uudestaan auki perjantaihin asti Seuraava ja viimeinen luento 30.3. Makrot, funktio-osoittimet Kokeen

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. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on

1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on 1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on esiteltävä. char ch; int count=1; struct complex float re, im; complex z; complex sqrt( complex );

Lisätiedot

Ohjeet. Jaa vastauksesi konsepteille siten, etta:

Ohjeet. Jaa vastauksesi konsepteille siten, etta: / AS-0.1103/4 C~ohjelmoinnin peruskurssi Aalto-yliopiston teknillinen korkeakoulu Tentti 12.05.2010, Raimo Nikkilii Ohjeet Kaikki ohjelmointitehtavat tulee toteuttaa C-kielella hyvaa ohjelmointityylia

Lisätiedot

VIII. Osa. Liitteet. Liitteet Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto

VIII. Osa. Liitteet. Liitteet Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto Osa VIII Liitteet Liitteet A B C Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto Osa VIII A. Liite Operaattoreiden suoritusjärjestys On tärkeää ymmärtää, että operaattoreilla on prioriteettinsa,

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

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

7. Näytölle tulostaminen 7.1

7. Näytölle tulostaminen 7.1 7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit:

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

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

C-kurssi kevät t Luento 2: tyypit, rakenteet, makrot

C-kurssi kevät t Luento 2: tyypit, rakenteet, makrot C-kurssi kevät t 2006 Luento 2: tyypit, rakenteet, makrot 24.1.2006 Luennon sisält ltö Tyypit int, char, float, double signed, unsigned short,, long Vakiot const Rakenteet if,, for, while, switch, do-while

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

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

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

Lisätiedot

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

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.2015 Työkaluista Perinteinen: komentorivi + tekstieditori Editori: esimerkiksi Kate, Notepad++, Aquamacs (Emacs) Ohjelman kääntäminen ja suorittaminen komentoriviterminaalissa TMC - komentorivityökalu

Lisätiedot

Moduli 2: Osoittimet ja taulukot. Joel Huttunen

Moduli 2: Osoittimet ja taulukot. Joel Huttunen : Osoittimet ja taulukot 26.1.2016 Moduli 1 yhteenvetoa laskuharjoituksista (PS: palautteen saa jättää myös suomeksi jos haluaa) Ongelmia ympäristön asennuksessa Hoitakaa kuntoon ajoissa, niin loppukurssilla

Lisätiedot

C-ohjelmointi, syksy 2006

C-ohjelmointi, syksy 2006 , syksy 2006 Taulukot Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot Binääritiedostot Luento 8 3.10.2006 Syksy 2006 1 Luennon sisältö Taulukoiden käsittelyä Yksiulotteiset taulukot

Lisätiedot

C-ohjelmointi, syksy Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot. Binääritiedostot. Luento

C-ohjelmointi, syksy Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot. Binääritiedostot. Luento , syksy 2006 Taulukot Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot Binääritiedostot Luento 8 3.10.2006 Syksy 2006 1 Luennon sisältö Taulukoiden käsittelyä Yksiulotteiset taulukot

Lisätiedot

// // whiledemov1.c // #include <stdio.h> int main(void){ int luku1 = -1; int luku2 = -1;

// // whiledemov1.c // #include <stdio.h> int main(void){ int luku1 = -1; int luku2 = -1; // // whiledemov1.c // #include int main(void){ int luku1 = -1; int luku2 = -1; while( luku1

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

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

Luennon sisältö. Taulukot (arrays) (Müldnerin kirjan luku 10) Yksiulotteiset taulukot. Mikä taulukko on? Taulukko-osoitin. tavallinen osoitin

Luennon sisältö. Taulukot (arrays) (Müldnerin kirjan luku 10) Yksiulotteiset taulukot. Mikä taulukko on? Taulukko-osoitin. tavallinen osoitin , kevät 2006 Taulukot Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot Binääritiedostot Luento 8 21.3.2006 Kevät 2006 Liisa Marttinen 1 Luennon sisältö Taulukoiden käsittelyä Yksiulotteiset

Lisätiedot

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat:

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat: 1. Luokan jäsenet Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat: class luokan_nimi tyypit: enum, struct, class, typedef

Lisätiedot

2. C-kieli ja ongelmanratkaisu

2. C-kieli ja ongelmanratkaisu 2. C-kieli ja ongelmanratkaisu Taustaa Esimerkki C-kielisen ohjelman kehityksestä Kielen yleispiirteet Muuttujat Suoritettavat lauseet Tietotyypit ja lausekkeet Tietojen lukeminen ja tulostaminen 64 C

Lisätiedot

C-ohjelmointi: Osoittimet

C-ohjelmointi: Osoittimet C-ohjelmointi: Osoittimet Liisa Marttinen & Tiina Niklander 22.2.2005 Muistinhallinta Java vs C Luokka on viittaustyypin määritelmä ja olio on viittaustyypin ilmentymä Muistinhallinta on implisiittistä.

Lisätiedot

if-lauseen yksinkertaisin muoto on sellainen, missä tietyt lauseet joko suoritetaan tai jätetään suorittamatta.

if-lauseen yksinkertaisin muoto on sellainen, missä tietyt lauseet joko suoritetaan tai jätetään suorittamatta. if- valintarakenne Yksittäisen vaihtoehdon valinta if-lauseen yksinkertaisin muoto on sellainen, missä tietyt lauseet joko suoritetaan tai jätetään suorittamatta. Syntaksi: if (ehto) lauseita; Aaltosulkeiden

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

Osoittimet ja taulukot

Osoittimet ja taulukot Osoittimet ja taulukot Hannu Laine Copyright Hannu Laine Osoittimet int main (void) { int a; int *p; //p on osoitinmuuttuja p = &a; *p = 10; printf( %d, *p); //tulostuu muuttujan a sisältö scanf( %d, p);

Lisätiedot

Modulaarisessa ohjelmoinnissa jaetaan ohjelma osiin (moduuleihin), jotka ovat yksinkertaisia ja lyhyitä.

Modulaarisessa ohjelmoinnissa jaetaan ohjelma osiin (moduuleihin), jotka ovat yksinkertaisia ja lyhyitä. 3. Funktiot Modulaarisessa ohjelmoinnissa jaetaan ohjelma osiin (moduuleihin), jotka ovat yksinkertaisia ja lyhyitä. Modulaarisuudella pyritään parantamaan ohjelman ymmärrettävyyttä, testattavuutta sekä

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

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: C++ rautaisannos Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: # include #include main ( ) main (

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä 812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus

Lisätiedot

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

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

Lisätiedot

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

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

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

C++ Kuva 1-1. C- ja C++ kielien perustana olevat kielet.

C++ Kuva 1-1. C- ja C++ kielien perustana olevat kielet. 1. JOHDANTO C-kieli on perustana useille muille ohjelmointikielille. Esimerkiksi C++-kieli on kehitetty C- kielestä, Java- ja C#-kielen syntaksin perustana on toiminut C-kieli ja useat muutkin ohjelmointikielet

Lisätiedot

C-ohjelmointikieli vs. muut kielet

C-ohjelmointikieli vs. muut kielet C-ohjelmointikieli vs. muut kielet C-kieli ohjelmointikielten "sukupuussa" (C++ -kielen kehittäjää Bjarne Stroustrupia mukaillen): 1 C vs. Java ("stereotyyppisesti") Käytännön eroja (tyypillisesti): Java:

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

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

Ohjausrakenteet. Valinta:

Ohjausrakenteet. Valinta: Ohjausrakenteet Luento antaa yleiskuvan siitä kuinka ohjelmassa suorittaan vaihtoehtoisia tehtäviä valintarakenteiden avulla ja kuinka samanlaisia ohjelma-askeleita toistetaan toistorakenteiden avulla

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

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

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

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

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

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

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

Lisätiedot

Table of Contents. T740103 Olio-ohjelmointi C/C++ perusteita Jukka Jauhiainen OAMK Tekniikan yksikkö 2010, 2011

Table of Contents. T740103 Olio-ohjelmointi C/C++ perusteita Jukka Jauhiainen OAMK Tekniikan yksikkö 2010, 2011 Tämän materiaalin lähteenä on käytetty osoitteesta http://www.cplusplus.com/doc/tutorial löytyvää C+ + Language Tutorial. Tämän osan tarkoituksena on pääasiassa kerrata C-kielestä tuttuja perusasioita

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

13 Operaattoreiden ylimäärittelyjä

13 Operaattoreiden ylimäärittelyjä 248 13 C++-kielessä voidaan operaattoreita ylimäärittää. Ylimääriteltävää operaattoria voidaan pitää ikäänkuin metodina, joka esitellään luokan esittelyssä ja määritellään luokan ulkopuolella kuten metoditkin.

Lisätiedot

5/20: Algoritmirakenteita III

5/20: Algoritmirakenteita III Ohjelmointi 1 / syksy 2007 5/20: Algoritmirakenteita III Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/17 Tämän

Lisätiedot

C-ohjelmointikieli vs. muut kielet. C vs. Java ("stereotyyppisesti") C-ohjelman korkean tason rakenne. Java-ohjelman korkean tason rakenne

C-ohjelmointikieli vs. muut kielet. C vs. Java (stereotyyppisesti) C-ohjelman korkean tason rakenne. Java-ohjelman korkean tason rakenne C-ohjelmointikieli vs. muut kielet C-kieli ohjelmointikielten "sukupuussa" (C++ -kielen kehittäjää Bjarne Stroustrupia mukaillen): Java-ohjelman korkean tason rakenne Ohjelma koostuu virtuaalikoneen hallinnoimista

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

C-ohjelmointi, kevät Merkkijonot Komentoriviparametrit. Luento

C-ohjelmointi, kevät Merkkijonot Komentoriviparametrit. Luento , kevät 2006 Merkkijonot Komentoriviparametrit Luento 7 14.3.2006 Kevät 2006 Liisa Marttinen 1 Merkkijonot (strings) (Müldnerin kirjan luku 9) C:ssä merkkijono ei ole ennaltamääritelty datatyyppi (kuten

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

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

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