Et forsøk på definisjon

Like dokumenter
Et forsøk på definisjon

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Et forsøk på definisjon. Eksempel 1

Et forsøk på definisjon. Eksempel 1

$antall_maaneder =12; Variablene $pris og $antall_maaneder i eksemplet ovenfor har

Verdier, variabler og forms

1.2 Dynamiske, tjenerbaserte og interaktive nettsteder

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Kapittel 1. Innledning og motivasjon. 1.1 Innledning. 1.2 Dynamiske, tjenerbaserte og interaktive nettsteder Dynamiske nettsider

}?> <!DOCTYPE... <html xmlns=" <head>... </head> <body> <p>nå skal vi printe hallo:</p> <?php //funksjonskall

En enkel while-løkke. 1 of :28. 2 of :28. while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt

Aritmetiske operasjoner. Litt om forrige times øvelsesoppgaver

while-løkker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

while-økker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

Når en bruker skriver sitt navn ("Ole") i et form-element med name="fornavn" som attributt. klikker på submit-knappen

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 07/ Vi holder orden på verdier med hjelp av variabler

Introduksjon til beslutningsstrukturer

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Tilgjegelighet av XHTML-forms

$i < 5 forsettelsesbetingelsen - false => Løkken slutter.

Webprogrammering høsten 2017

datatyper Hva er programmering? Variabler og Informasjonsteknologi 2 Kompetansesemål

the web Introduksjon Lesson

(X)HTML, CSS og JavaScript HTML. Det første dokumentet Grunnleggende programmering i Java Monica Strand 26.

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

Introduksjon til programmering og programmeringsspråk. Henrik Lieng Høgskolen i Oslo og Akershus

Oppgave 1 Hva tror du følgende program skriver ut til terminalen? Diskuter med gruppen.

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Introduksjon til programmering og programmeringsspråk

INF109 - Uke 1b

Forelesning 23/9-08 Webprog 1. Tom Heine Nätt

Shellscripting I. Innhold

INTRODUKSJON HVEM ER DETTE FAGET FOR?...

Et lite oppdrag i bakgrunnen

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Utførelse av programmer, metoder og synlighet av variabler i JSP

Oppgaver uke 1: Løsningsforslag

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

Læringsmål og pensum. v=nkiu9yen5nc

Steg 1: Felix har forsvunnet!

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

lagring med HTML5 Offline lagring Offline Informasjonsteknologi 2 Gløer Olav Langslet Sandvika VGS

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

UNIVERSITETET I OSLO

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

HØGSKOLEN I SØR-TRØNDELAG

INF109 - Uke 1a

Metoder med parametre, løkker og arrayer

6105 Windows Server og datanett

if-tester Funksjoner, løkker og iftester Løkker og Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

CASCADING STYLESHEETS (CSS)

VEILEDER MOTTA FJERNHJELP

Oblig 5 Webutvikling. Av Thomas Gitlevaag

Memoz brukerveiledning

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

VEILEDER MOTTA FJERNHJELP

6108 Programmering i Java. Leksjon 1. Introduksjon til programmering og til Java

file:///c:/users/michaelp/sites/dkdm/dw6/dreamweaver6.html

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Seksjon 1. INF2270-V16 Forside. Eksamen INF2270. Dato 1. juni 2016 Tid Alle trykte og skrevne hjelpemidler, og en kalkulator, er tillatt.

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF 1000 høsten 2011 Uke september

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

HTML og relasjonsdatabaser med PHP

Forsvunnet katt webside

Klasser. Webprogrammering høsten Objekter. Eksempelklasser og -objekter. 2 of :56. 1 of :56

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2)

Forelesning inf Java 1

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Oppgave 1 (Etter forelesning 31/8) Gå gjennom nettsiden arngren.net og list opp alle problemene du ser. Både i funksjonalitet/bruk og i koden bak.

Litt om kompilering og interpretering. Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2) Syntaks og semantikk

Kapittel 1: Datamaskiner og programmeringsspråk

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

2 Om statiske variable/konstanter og statiske metoder.

BAAN IVc. BAAN Data Navigator - Brukerhåndbok

Kom i gang med Python

Forelesning inf Java 1

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!

Webformularer, PHP og databaser

Om du allerede kjenner Scratch og har en Scratchbruker kan du gå videre til Steg 1.

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

Verden. Steg 1: Vinduet. Introduksjon

Programmeringsspråket C Del 2

Oblig 1. Oppgave 1. Gå gjennom nettsiden arngren.net og list opp alle problemene du ser. Både i funksjonalitet/bruk og i koden bak.

Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den.

Dette er en demonstrasjonsside som vi skal bruke for å se litt nærmere på HTTP protokollen. Eksemplet vil også illustrere et par ting i PHP.

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

IN uke 1. Komme i gang med programmering

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

MUS Interaktiv Musikk

Operativsystemer og grensesnitt

Simulerings-eksperiment - Fysikk/Matematikk

ITGK - H2010, Matlab. Repetisjon

Transkript:

Et forsøk på definisjon [Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 18/08-17 Engelsklignende språk, med rigid syntaks, som kan brukes til å skrive instruksjoner (eksempel nedenfor). Instruksjonene i et programmeringsspråk kan leses og skrives av mennesker (vi forstår hva ord som print betyr). Instruksjonene (samlet kalt programkode ) oversettes til maskinspråk (som bare datamaskinen forstår), slik at datamaskinen kan utføre dem. Hva er et dataprogram (litt forenklet) en sekvens med instruksjoner skrevet i et programmeringsspråk... Motivasjon: Hvorfor vi lærer å programmere (og hva er et programmeringsspråk) Om dynamiske, tjenerbaserte, interaktive nettsider Noen enkle programmer, bruken av print-funksjonen Verdier og variabler Grunnleggende arbeid med variabler Om infrastrukturen, tjenermaskinen og andre verktøy Arbeide med øvelsesoppgaver... oversatt (eller tolket) til maskinspråk for å utføre nyttige handlinger. Eksempel print ++$i : Programkode for et lite dataprogram (én instruksjon lang), skrevet i programmeringsspråket PHP: print("dette er et enkelt program"); kjør programmet Mye av dagens virksomhet på webben, alt fra nettbanker til bibliotekkataloger, er dynamisk, interaktiv (og databasestyrt). For å kunne forstå hvordan dynamiske nettsteder lages, må vi kunne litt om programmering. For å kunne lage slike nettsteder må vi kunne programmere. PHP er et programmeringsspråk brukt til å lage dynamiske, tjenerbaserte og interaktive nettsider Vi skriver våre programmer i PHP-filer, som oftest med navn som fil.php Disse filene lagrer vi på en webtjener, der hvor vi lagrer html-filer. En PHP-er, stort sett, en HTML-fil, med (potensielt) dynamisk innhold. Noen begrep: Viktige bregreper å diskutere, er Hva er "et programmeringsspråk"? Hva betyr "en dynamisk nettside"? Hva menes med at en side er "interaktiv"? Hva menes med "tjenerbasert"? I dagens forelesning skal vi først prøve å se på disse begrepene. Underveis lager vi et første (og andre) program, som utfører en meget enkel oppgave. En statisk nettside ser lik ut hver gang den hentes frem Samme visning, uansett av hvem, hvor og når siden hentes fram. Eksempel: en statisk nettside. (samme visning hver gang jeg klikker). En dynamisk nettside kan se annerledes ut fra gang til gang. Et eksempel: en dynamisk nettside (klikker 3 til 4 ganger: forskjellig innhold fra gang til gang!) statisk: HTML-fil, med "klokkeslettet" skrevet som tekst. dynamisk: krever en mekanisme, som "henter" det faktiske klokkeslettet og tilrettelegger for visning 1 of 18 18.08.2017, 13:27 2 of 18 18.08.2017, 13:27

Med PHP kan vi ta i bruk data fra brukere, ved hjelp av HTML-forms PHP-programmer er istand til å ta i bruk data som brukere av nettsider legger i utlagte FORM-elementer. Hva heter du? Data fra FORM-elementer overføres via nettet til webtjeneren, som tilpasser nettsidens funksjon til dataene. PHP henter klokkeslettet på tjeneren (fritt etter Lash (2003), figur 1.2). En tjenerbasert, dynamisk nettside tilrettelegges på tjenermaskinen Vi bruker den dynamiske webklokken som eksempel. Følgende skjer når vi klikker på en lenke til en tjenerbasert dynamisk webklokke: nettleseren sender en forespørsel til tjeneren, som finner riktig PHP-program (med URL'en til PHP-filen) PHP-programmet etterspør det øyeblikkelige klokkeslettet gjør klokkeslettet om til en forståelig tekststreng (for eksempel "12.02.02" Slike FORM-elementer ser vi på neste gang! Kort svar: Mange steder. Ofte små og mellomstore nettsteder. Det ferdig tilrettelagte innholdet overføres til vår nettleser over nettet. Webtjenerprogrammet (et annet program) sender strengen med klokkeslettet over nettet til vår nettleser, for visning. I dette eksemplet viser vår nettleser tjenerens klokkeslett. Hvis vår tjener er lokalisert i USA, risikerer vi å få et klokkeslett som ikke passer med vårt. 3 of 18 18.08.2017, 13:27 4 of 18 18.08.2017, 13:27

Eksempel 2: Flere linjer med HTML Vi vever PHP-instruksjoner sammen med "faste" HTML-setninger Eksempel 1: En HTML fil med én linje generert med PHP Dette eksemplet gjør lite utover genreringen av "vanlig" HTML-kode. Forskjellen er at eksemplet gjør det med et PHP-program. "print" innenfor en PHP-blokk gjør at HTML-KODEN med blå bakgrunn flettes med den "faste" HTML koden (med grå bakgrunn) Teksten (HTML-koden) utenfor PHP-blokken kaller vi for "maltekst" (template text). Den sammenflettede siden sendes nettleseren. Obs. semikolontegnet bak klammen!!!! <!DOCTYPE html> <html> <head> <title>et første eksempel </title> </head> <body> print(" <p>dette er mitt første PHP-program</p>"); </body> </html> Her skriver vi PHP-kode som skal bli til 5 linjer med innhold. Vi bruker vanlig avsnittsstruktur: en overskrift, et avsnitt og en liste. <!DOCTYPE html> <html> <head> <title>det andre eksemplet</title> </head> <body> print("<h3>dette er en overskrift</h3>"); print( "<p>nå følger en liste med innførsler</p>"); print("<ul>"); print(" <li>første innførsel</li>"); print(" <li>andre innførsel</li>"); print(" <li>tredje innførsel </li>"); print("</ul>"); </body> </html> I nettleseren: Slik ser resultatet ut i sidevisning: og slik ser det ut i kildevisning. Helt vanlig HTML (kan ikke se at den kommer fra PHP) 5 of 18 18.08.2017, 13:27 6 of 18 18.08.2017, 13:27

Eksempel 3: Kode med innlagte kommentarer Vi skriver kommentarer i programkoden for at vi (og andre) lettere skal kunne lese våre programmer Det tar ofte tid å utvikle et program. Derfor greit å utstyre programmet med kommentarer, slik at vi (og andre) kan, i ettertid, skjønne hva vi skrev. Kommentarer i programmet påvirker ikke programmets funksjon. Blir ikke tolket! PHP tillater to typer kommentarer: énlinjet og flerlinjet. En linje i en PHP-blokk som begynner med to skråstreker er en kommentarlinje: // Neste linje printer en linje med tekst til nettleseren print("<p> Denne linjen skrives til nettleseren</p>"); Denne linjen skrives til nettleseren En blokk-kommentar, mellom /* og */ kan strekke seg over flere linjer: /* Neste linje printer en linje med tekst til nettleseren */ print("<p> Denne linjen skrives til nettleseren</p>"); <!DOCTYPE html> <html> <head> <title>kommentarer</title> </head> <body> /* Dette programmet skriver noen linjer til en nettleser. Skrevet av Michael*/ // Linjen nedenfor skriver overskriften print("<h3>dette er en overskrift</h3>"); print( "<p>nå følger en liste med innførsler</p>"); //linjene nedenfor skriver innførslene print("<ul>"); print(" <li>første innførsel</li>"); print(" <li>andre innførsel</li>"); print(" <li>tredje innførsel </li>"); print("</ul>"); </body> </html> Sidevisningen blir ikke påvirket av kommentarer. 7 of 18 18.08.2017, 13:27 8 of 18 18.08.2017, 13:27

Eksempel 4: Kode for den dynamiske webwebklokken Det kreves ennå ikke at dere forstår PHP-koden for den dynamiske webklokken. Men siden vi snakket en del om den idag - kan det være greit å vise den... Merk linenummerne: ikke en del av koden!! Jeg kommer til å bruke linjenumre i noen av eksemplene i fremtiden. 1. <!DOCTYPE html> 2. <html> 3. <head> 4. <title>dynamisk klokke</title> 5. </head> 6. <body> 7. <p> klokka er 8. 9. // Hent klokkslettet fra tjeneren, og plasser i en tekststreng 10. $klokke_streng=date("g\.i\.s"); 11. 12. // Vis streng med klokkeslett i nettleservinduet 13. print($klokke_streng); 14. 15. </p> 16. </body> 17.</html> Med hjelp av programmeringsspråket PHP skal vi få vår tjenermaskin (bibin.hio.no) til å lage dynamisk HTML-innhold. Instruksjonene i PHP er vevd sammen med "vanlige" HTML-koder og tekst. De skrives i PHP-blokker innenfor disse sidene. En PHP-blokk begynner med "" og avsluttes med "". Innholdet som genereres av PHP-blokker er dynamisk: det genereres hver gang vi henter fram nettsiden, og kan være forskjellig fra gang til gang Filen som viser 12.00.00 hele tiden heter, for eksempel, klokke_s.htm Filen som viser et annet (og riktigere) klokkeslett heter klokke_d.php PHP-skrevne nettsider kan også være interaktive, ved å bruke FORM-elementer Våre programmer bruker variabler for å lagre og aksessere data. Programmene kjører èn instruksjon av gangen, og trenger å lagre data mellom gangene. Eksempelprogram: Legg sammen to brukergitte tall 9 of 18 18.08.2017, 13:27 10 of 18 18.08.2017, 13:27

Et program som legger sammen to brukergitte tall må hente det ene hente det andre legge tallene sammen presentere resultatet. Mellom operasjonene må data tas vare på (mellomlagres) kunne finnes igjen. Her kommer variabler og verdier inn. En verdi ("datastykke") kan være et tall eller en tekststreng. "Michael" er et eksempel på en tekstverdi. 12.5, -15 og 100000 er eksempler på tallverdier. Verdien i en variabel kan variere (derav navnet) : Variabelen $pris kan for eksempel ha verdien 10 en liten stund, deretter verdien 12. Variabelen $fornavn kan holde verdien "Michael ", og deretter verdien " Lars". En variabel kan holde forskjellige verdier (ikke samtidig!) så lenge programmet kjører Variabelen har bare ett og samme navn så lenge programmet kjører. Variabelens verdi er flyktig. Variabelen $fornavn kan i prinsippet ha forskjellige verdier i løpet av et programs "levetid" (derav betegnelsen "variabel"). I $fornavn kan det stå "Michael", så kan det stå "Lars" deretter "Erik", osv. En variabel - en plass i maskinens minne som kan holde på en verdi En variabel er en "plassholder", med navn, som kan holde en verdi. Verdien blir da innholdet i denne plassholderen. $pris =12; Variabelnavnet uttrykker verdiens rolle i programmet. Eksempel: $pris =12; $antall_maaneder =12; Variablene $pris og $antall_maaneder i eksemplet ovenfor har En direkteverdi er en verdi som er gjengitt ordrett i programmet For eksempel "Michael", 4.25 En direkteverdi brukes ofte til å sette en førsteverdi til en variabel: For eksempel $fornavn ="Michael ", eller $pris = 4.25 ; Direkteverdier av typen tekst (tekstliteraler) skrives med anførselstegn i PHP-programmer. Direkteverdier av typen tall skrives uten anførselstegn. samme verdi (tallet 12) sannsynligvis helt forskjellige roller i programmer. Et program kan ha mange variabler, og alle har et unikt navn Dette gjør det mulig for programmet å aksessere variablene: for å avlese deres verdier evt. legge nye verdier i dem. Alle disse er lovlige variabelnavn : $pris, $antallmaaneder $fornavn, $etternavn Vi bruker ofte ord, på engelsk eller norsk, og setter et dollartegn($) foran. Unngå æøå! (klokkeeksempel) 11 of 18 18.08.2017, 13:27 12 of 18 18.08.2017, 13:27

Print'ing av en variabel viser variabelens verdi Direkte tilordning: å legge en verdi i en variabel. Eksempler på direkte tilordning: (Legg merke til semikolon på slutten): $fornavn = "Michael" ; (på norsk: $fornavn settes lik "Michael") $etternavn = "Preminger" ; (på norsk: $etternavn settes lik "Preminger") $pris = 4.25 ; (på norsk: $pris settes lik 4.25) $antall_maaneder = 12 ; (på norsk: $antall_maaneder settes lik 12) altså: "=" betyr "settes lik" ikke "er lik" og ikke "lik" Eksempel 5: Vise verdien til en tekstvariabel ved å print()'e variabelen... print ($etternavn) ; betyr: skriv verdien til variabelen med navnet $etternavn til nettleseren. Filen variabel.php: (linjenummerne er ikke en del av programmet, brukes bare for referanse): 1. <!DOCTYPE... 2. <html> 3. <head>... 4. <title>eksempel1</title> 5. </head> 6. <body> 7. 8. $fornavn = "Michael" ; 9. print( $fornavn ); 10. 11. </body></html> Linjene 1-6, samt linje 11, utgjør filens HTML-del. Disse tillater jeg meg å hoppe over i de kommende eksemplene. Linjene 7-10 utgjør en PHP-blokk. På linje 8 blir variabelen $fornavn definert, og tilordnet verdien "Michael" Linje 9 gjør at verdien til $fornavn skrives til nettleseren. Når vi henter fram filen i nettleseren med URLen "http://bibin.hio.no/~michaelp/variabel.php" får vi Michael i nettleservinduet. I eksemplene nedenfor vises bare PHP-koden, (anta dog at HTML-strukturen er der). 13 of 18 18.08.2017, 13:27 14 of 18 18.08.2017, 13:27

Eksempel 6: Printe numeriske variabler. Hvis vi henter fram denne filen i nettleseren: $gebyr = 42 ; print($gebyr); blir 42 skrevet i nettleservinduet. Eksempel 7: Vi kan flette variabler i tekstsetninger som print()-instruksjonen skriver ut: Følgende PHP-program: $fornavn = "Michael" ; $gebyr = 42 ; print ("<p> $fornavn måtte betale kr. $gebyr for å ha levert boken for sent</p>"); skriver følgende når det hentes fram i nettleseren Michael måtte betale kr. 42 for å ha levert boken for sent 15 of 18 18.08.2017, 13:27 16 of 18 18.08.2017, 13:27

Eksempel 10 og 11: sammenføye variabelverdier og direkteverdier mellom anførselstegn Eksempel 8: konkatenere (føye sammen) tekststrenger med (punktum) Av og til trenger vi å slå to eller flere tekststrenger sammen. 1. 2. $fornavn = "Michael" ; 3. $etternavn = "Preminger" ; 4. $helenavnet = $fornavn. $etternavn ; 5. print ("<p>$helenavnet</p>"); 6. Linje 4 sammenføyer $fornavn og $etternavn til en lang tekststreng. tekststrengen tilordnes variabelen $helenavnet. MichaelPreminger skrives i nettleservinduet når siden hentes fram. Eksempel 9: en liten forbedring av programmet fra eksempel 8 Vi 'føyer inn et mellomrom' mellom $fornavn og $etternavn. 1. 2. $fornavn = "Michael" ; 3. $etternavn = "Preminger" ; 4. $helenavnet = $fornavn. " ". $etternavn ; 5. print ("<p>$helenavnet</p>"); 6. Vi kan sammenføye variabelverdier og direkteverdier ved å legge de, side om side, mellom anførselstegn: $helenavnet ="$fornavn $etternavn"; print ("<p>$helenavnet</p>"); resulterer i Michael Preminger Programmet $antallepler =12; $setning ="<p>jeg har $antallepler epler!</p>"; print ( $setning ); gir Jeg har 12 epler! i nettleservinduet. Sist oppdatert 18/08-17 av Michael Preminger, michaelp@hioa.no og får Michael Preminger 17 of 18 18.08.2017, 13:27 18 of 18 18.08.2017, 13:27