Ohjelmoin*kielet ja - paradigmat 5op. Markus Norrena

Samankaltaiset tiedostot
Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmoin*kielet ja - paradigmat 5op. Markus Norrena

1. Olio-ohjelmointi 1.1

Erittäin nopea tapa saada kehitysympäristö php:lle pystyyn Voidaan asentaa muistitikulle

811120P Diskreetit rakenteet

PHP:n alkeita ja taustaa. Markus Norrena

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

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

811120P Diskreetit rakenteet

Harjoitus 6 (viikko 42)

OPPITUNTI 20 Tilan tallentaminen istuntofunktioilla

Ohjelmoinnin perusteet Y Python

1. Mitä tehdään ensiksi?

Ohjelmoinnin perusteet Y Python

Tutoriaaliläsnäoloista

5. HelloWorld-ohjelma 5.1

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

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

Sisällys. 15. Lohkot. Lohkot. Lohkot

Olio-ohjelmointi Javalla

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

Harjoitus 2 (viikko 45)

1. Omat operaatiot 1.1

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Harjoitus 5 (viikko 48)

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Palvelinpuolen ohjelmointi

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

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

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

14. Hyvä ohjelmointitapa 14.1

Ohjelmoinnin perusteet Y Python

13. Hyvä ohjelmointitapa (osa 1) 13.1

Ohjelmoinnin perusteet Y Python

ELM GROUP 04. Teemu Laakso Henrik Talarmo

VERKKOSOVELLUSTEN OHJELMOINTI, JOHDATUS PHP:HEN

Metodien tekeminen Javalla

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

Valtion yhteisen viestintäratkaisun (Vyvi) Työtila- ja Ryhmä-palvelun kirjautumisohje

Harjoitus 5 (viikko 41)

SELVITYSRAPORTTI LABRA-VERKON MYSQL:n JA PHP:n KÄYTTÖÖNOTOSTA. Jarkko Kähkönen

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Sisällys. 16. Lohkot. Lohkot. Lohkot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssien laaja oppimäärä

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

P e d a c o d e ohjelmointikoulutus verkossa

Harjoitus 3 (viikko 39)

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Harjoitus 6 (viikko 42)

ITKP102 Ohjelmointi 1 (6 op)

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

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Kuukauden kuvat kerhon galleriaan lähtien kuukaudenkuvaajan kuvagalleria on siirretty uudelle palvelimelle osoitteeseen:

NÄIN KÄYTÄT SIGNWIKIÄ

Aloittaminen: Miten e-kirja lainataan?

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Luento 5. Timo Savola. 28. huhtikuuta 2006

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Ohjeet asiakirjan lisäämiseen arkistoon

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

Luottamuksellinen sähköposti Lapin yliopistossa. Ilmoitusviesti

Kirje -tasolla viestiliikenne suojataan automaattisesti SSL-salauksella, sekä viesti lukitaan Deltagon MessageLock -tekniikalla.

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

Harjoitustyö: virtuaalikone

Ohjelmoinnin perusteet Y Python

Julkinen. Suomen Pankin ja Finanssivalvonnan suojattu sähköposti: ulkoisen käyttäjän ohje

Written by Administrator Saturday, 28 August :51 - Last Updated Tuesday, 22 February :45

Bitnami WordPress - Asenna WordPress koneellesi. Jari Sarja

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

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Muistutus aikatauluista

3 Verkkopalveluarkkitehtuuri

Ohjelmoinnin peruskurssi Y1

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

Harjoitus 4 (viikko 47)

Ohjelmoinnin perusteet Y Python

Harjoitus 5 (viikko 41)

Javan perusteita. Janne Käki

CMS Made Simple Perusteet

Luottamuksellinen sähköposti Trafissa

Ohjelmoinnin perusteet Y Python

1 PHP-sovelluksen toiminta

Ohjelmoinnin peruskurssi Y1

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

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

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

ohjeita kirjautumiseen ja käyttöön

Transkriptio:

Ohjelmoin*kielet ja - paradigmat 5op Markus Norrena

Tiedonhankintatehtävä Ryhmissä, valmistelkaa muutaman kalvon esitys luokassa seuraavista aiheista 1. Proseduraalinen ohjelmointi suhteessa olioohjelmointiin 2. MVC-arkkitehtuuri 3. Olio-ohjelmointi PHP:ssä 4. Olio-ohjelmointi JavaScriptissä

Tärkeimmät ohjelmointiparadigmat Proseduraalinen (lausekielinen) ohjelmointi Olio-ohjelmointi Funktionaalinen ohjelmointi Logiikkaohjelmointi Rinnakkaisohjelmointi Mitä tarkoittaa paradigma?

Proseduraalinen ohjelmointi / yleistä Ohjelman rakenne jäsennetään toiminnasta käsin. Periaate: Suunnittelussa keskeisenä asiana, miten ohjelma jaetaan toiminnallisiin osiin. Kontrolli: Ohjelmaa suoritetaan lause kerrallaan, apuna ehtoja ja toistolauseet (linearisesti). http://fi.wikipedia.org/wiki/ Proseduraalinen_ohjelmointi

Olio-ohjelmointi / yleistä Tärkeimmät kielet C++ ja Java Tullut erittäin yleiseksi, koska luokkien ja olioiden avulla voidaan helposti mallittaa monien reaalimaailman ongelmien käsitteistöä. Laajat luokkakirjastot helpottavat uusien sovellusten rakentamista.

Olio-ohjelmointi / yleistä Pääsee oikeuksiinsa vasta silloin, kun koodin määrä on suuri. Kontrolli etenee siten, että luokkien metodit kutsuvat toisiaan. Pääohjelma ei kontrolloi kokonaisuutta, vaan sitä tarvitaan lähinnä käynnistymiseen. http://fi.wikipedia.org/wiki/olio-ohjelmointi Mitä ovat luokka, olio, metodi?

Funktionaalinen ohjelmointi / yleistä Ohjelman rakenne jäsennetään toiminnasta käsin. Kaikki toiminnot tehdään funktiokutsujen avulla, ei siis suoriteta peräkkäisiä lauseita Keskeisin kieli LISP (v. 1960) ja sen eri murteet (mm. Common Lisp, Scheme) ja Haskell

Funktionaalinen ohjelmointi / yleistä Rekursio erittäin tärkeää, Toisto tehdään yleensä rekursion avulla http://fi.wikipedia.org/wiki/ Funktionaalinen_ohjelmointi Mitä on rekursio?

Logiikkaohjelmoin* Kuvaa maailman faktoina ja faktojen välisinä suhteina. Esimerkiksi "Ville on Kallen isä, Matti on Villen isä, X on Y:n poika, jos Y on X:n isä" kuvataan prolog-kielellä näin: isa (ville, kalle). isa (matti, ville). poika (X, Y) :- isa (Y, X). http://fi.wikipedia.org/wiki/logiikkaohjelmointi

Rinnakkaisohjelmoin* tehdä useampaa asiaa samanaikaisesti Oikein tehtynä nopeuttaa ja tehostaa ohjelmia. Tällainen vaikutelma yhtäaikaa tapahtuvasta suorituksesta saadaan aikaan ns. säikeillä (thread) Esimerkki: ajatelkaa yhtä prosessoria videoprojektorina joka näyttää miljoona kuvaa sekunnissa ja johon jonottaa sata eri elokuvaa samaan aikaan näytettäviksi.

Rinnakkaisohjelmoin* Tähän kuuluvat myös hajautetut järjestelmät, jotka ovat ohjelmia ja järjestelmiä jotka koostuvat itsenäisistä, keskenään kommunikoivista osista. Esimerkki: tilisiirto tai pankkiautomaatit.

PHP - kertausta Proseduraalista ohjelmoin1a

Alkuvalmistelut - phpinfo Virkistetään perus-php-muistia: Luo PHP-tiedosto jossa on ainakin tämä käsky: phpinfo(); Suorita php-koodi, eli katsokaa sitä selaimessa

Kaikki algoritmit ja siis myös kaikki ohjelmat, voidaan ilmaista näiden kolmen perusrakenteen avulla: Peräkkäisyys Peräkkäisyys tarkoittaa, että algoritmin käskyt suoritetaan esiintymisjärjestyksessä ellei valinta- tai toistolauseella toisin määrätä Valinta if else jos puussa on rahaa, ota sitä sieltä, muuten hanki töitä Toisto poimi rahaa puusta - toista niin kauan kuin puussa on rahoja

Kertausta: valinta Ehtolause <?php $a = 2; if ($a == 2) { echo "a on kaksi <br />"; } else { echo "a ei ole kaksi!<br />"; }?>

Kertausta: toisto While - silmukka <?php $i = 1; while ($i <= 10) { }?> echo $i++. "<br>"; /* $i tulostetaan ensin ja sitten siihen lisätään 1*/

Kertausta: taulukkomuuttujat <?php $numbers = array(1,2,3,4,5,6); print_r($numbers);?> echo $numbers[0]; // 1 echo $numbers[1]; // 2

Kertausta: taulukkomuuttujat <?php Eri tapa ilmaista sama asia: $numbers[] = 1; $numbers[] = 2; $numbers[] = 3;... print_r($numbers);?> echo $numbers[0]; // 1 echo $numbers[1]; // 2

<?php $a = 'Kevin'; $b = 'Mary'; $c = 'Joe'; $d = 'Larry'; $e = 'Audrey'; Kertausta: muuttujat 2 $students = array('a', 'c', 'e'); foreach($students as $seat) { }?> echo $$seat. "<br />"; Mitä tämä tekee ja miksi?

Funktiot Php:ssä Funktio on kuin ohjelma ohjelman sisällä PHP:llä on iso funktio-kirjasto mm. aakkostus-, sähköpostinlähetys-, tietokantafunktioita ja muita Voi myös itse tehdä omia funktioita itselleen Silloin ei tarvitse kirjoitaa samaa koodia monta kertaa, vaan teet yhden funktion ja sen jälkeen kutsut funktiota aina tarvittaessa

Funk*ot, esimerkki 1. <?php function writemsg(){ echo "Hello world!"; } writemsg(); writemsg();?> Aloitat määrittelemällä funktiollesi nimen Nimessä ei saa olla välilyöntejä Myöhemmin koodissa kutsut funktiota sen nimellä

Funktio voi myös ottaa syötteen (parametrin), tämä määritellään sen otsikossa (eli heti nimen perään) Syöte on muuttuja jota funktio sitten käsittelee <?php function addnum($first, $second) { } $newnum = $first + $second; return $newnum; echo addnum(4,5); echo "<br><br>"; echo addnum(4, addnum(5,6));?> Return palauttaa arvon

Jos funktiossa halutaan käyttää funktion ulkopuolella olevia muuttujia, ne on määriteltävä global-avainsanan avulla Seuraavassa esimerkissä markan ja euron suhde haetaan funktion ulkopuolisesta muuttujasta <?php $suhde = 5.94573; function euroiksi($markat) { global $suhde; return round($markat / $suhde, 2); } echo "100 markkaa on ". euroiksi(100). " euroa.";?>

Funktiot, vielä esimerkki <?php function increment($var = 0){ $var++; } return $var; $a = 2; $a = increment(4); echo "a: ". $a."<br />";?>

Kertausta: loogiset operaacorit = sijoitus == vertaa!= eri kuin 2!= 5 <> eri kuin < <= > >= and && 5=2 or 1=2

Kertausta: teks*jonojen käsicely <?php $kokonimi=" markus norrena \n"; echo "Alussa: ". $kokonimi. "."; //explode -- Split a string by string $nimet = explode(" ", $kokonimi); $kokonimi=""; //ucfirst -- Make a string's first character uppercase foreach ($nimet as $nimi) { $kokonimi.= ucfirst($nimi). " "; } //trim -- Strip whitespace (or other characters) from // the beginning and end of a string $kokonimi = trim($kokonimi); echo "Lopussa: ". $kokonimi. ".";?>

Alkuvalmisteluja PHP code checker http://phpcodechecker.com/

Cookies, Evästeet tekniikka käycäjäkohtaisen *edon säilycämiseen pysyvämmin kuin mitä muucujilla on mahdollista KäyCäjän kirjautuminen on voimassa sivulta toiselle, tai verkkokaupassa ostoskorin sisältö säilyy Eväste on pieni *edonmurunen, teks*npätkä, jonka selain tallentaa käycäjän koneelle Evästeet liicyvät aina yhteen palveluun, ja niillä on *ecy voimassaoloaika

Eväste luodaan PHP:n setcookie- funk*olla Ensimmäinen parametri on nimi, jolla evästeeseen myöhemmin viitataan Toinen parametri on evästeen arvo, tallennecava *eto Kolmas parametri kertoo, kuinka kauan eväste säilyy käycäjän koneella Jos kolmaca parametria ei ole annecu, eväste on voimassa istunnon ajan eli niin kauan kuin selainikkunaa ei suljeta <?php //luo evästeen nimi, jonka arvo on Juho setcookie("nimi", "Juho"); //tämä eväste on voimassa seuraavat 10 minuuttia setcookie("auto", "Honda", time() + 60 * 10);?>

Evästeen poistaminen tapahtuu samalla funk*olla muca nyt arvo on tyhjä merkkijono Ja voimassaoloaika on asetecava menneisyyteen (joca poistaminen onnistuu oikein kaikilla selaimilla) Tämä skrip* poistaa ne evästeet, jotka edellinen skrip* loi: <?php //poistetaan edellisessä esimerkissä luodut evästeet setcookie("nimi", ""); setcookie("auto", "", time() - 60 * 10);?>

Huom! Evästeet on luotava ja poistecava ennen kuin mitään muuta kirjoitetaan sivulle, koska ne kulkevat sivun otsikko*etojen mukana Evästeiden lukeminen on mahdollista $_COOKIE- taulukon kauca

Seuraava skrip* tulostaa evästeiden sisältämät *edot <?php //haetaan aikaisemmassa esimerkissä luodut evästeet muuttujiin $nimi = $_COOKIE["nimi"]; $auto = $_COOKIE["auto"]; //tulostetaan evästeiden tiedot echo "{$nimi}n auto on $auto";?> Jos odotetaan kymmenen minuusa, auton merkki ei enää näy sivulla Jos selain avataan uudestaan, nimi häviää

Session / Istunnot Istunnoissa palvelun käycäjälle muodostetaan yksilöllinen id- tunnus, joka joko tallennetaan evästeeseen tai kulkee URL:n mukana Palvelimelle luodaan id- tunnusta vastaava *edosto, johon istunnossa käytetyt muucujat tallentuvat

Istunto aloitetaan session_start- funk*olla Tämän jälkeen istunnon muucujia käsitellään $_SESSION- taulukon kauca Esimerkki määricää kaksi istuntomuucujaa: <?php //aloitetaan istunto session_start(); //määritetään istuntomuuttujat $_SESSION["nimi"] = "Markus"; $_SESSION["auto"] = "Jopo";?>

MuuCujien lukeminen onnistuu suoraan samasta taulukosta skrip* lukee ja tulostaa edellisessä esimerkissä määritetyt istuntomuucujat: <?php //aloitetaan istunto session_start(); //luetaan istuntomuuttujat $nimi = $_SESSION["nimi"]; $auto = $_SESSION["auto"]; //tulostetaan tiedot echo "$nimi:n auto on $auto";?>

IstuntomuuCujat voidaan 'poistaa' määricelemällä ne tyhjiksi $_SESSION["nimi"]=""; $_SESSION["auto"]=""; Kaikki istuntomuucujat voi tyhjentää käskyllä: session_unset(); Tässä tapauksessa istunto on yhä olemassa Koko istunnon voi lopecaa käskyllä: session_destroy();

Kotitehtävä 1 Tee kirjautumisjärjestelmä ilman tietokantaa. Sivustolle jolla on vähintään 2 eri sivua. Kysyy tunnusta ja muistaa kirjautumisen ettei kysy uudestaan siirryttäessä sivulta toiselle. Ei päästä millekään sivulle ellei ole oikeaa salasanaa. Käytä funktioita koodissasi (hyvä koodaustapa). Palauta koodisi ja linkki sivulle Markukselle sähköpostitse. (Älä käytä palvelimen htaccess tiedostoa tähän.)

Kotitehtävä 2 Tutustu seuraaviin frameworkeihin Muodosta niistä käsitys itsellesi, ja valitse kaksi joita mieluiten lähtisit kokeilemaan Symfony CodeIgniter Phalcon Laravel Node.js CoffeeScript AngularJS

Ensi kerta on etäkerta Uuden organisaation kehittämispäivän takia ensi kerran luento on peruttu Siksi hoidamme etänä pari juttua mitä muuten olisimme keskustelemalla hoitaneet

Kotitehtävä 2 -jatko Valitse yksi framework itsellesi Korkeintaan kahdella saa olla sama valinta! Merkitse omasi tänne: http://doodle.com/8qef66he9zf4s63p Symfony, CodeIgniter, Phalcon, Laravel, Node.js, CoffeeScript, AngularJS

Kotitehtävä 3 Asenna valitsemasi frameworkki ja tee "hello world" tasoinen koe sillä. Voit käyttää esim. 195.148.97.131 konetta tai XAMPP:ia. KäyCäkää 195.148.97.131 koneella näitä MySQL tunnuksia: Tunnus: okp Salasana: oli9trr3 luokaa itsellenne oma *etokanta sinne hcp://195.148.97.131/phpmyadmin/ Lähetä linkki kokeeseesi Markukselle päivää ennen ensi kerran luentoa (2 viikon päästä).

Seuraavalla tapaamiskerralla Ainakin Tietokannan käyttö PHP:llä (MySQL ja PDO) File Upload esimerkki Katsomme miten Framework kokeilunne ovat menneet Nämä kalvot laitetaan tänne: http://users.metropolia.fi/~norrm/k14/okp/