Introduksjon til programmering og programmeringsspråk

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

Kapittel 1: Datamaskiner og programmeringsspråk

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

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

156C. Algoritmer og maskinspråk. IT1101 Informatikk basisfag. Maskinspråk: det maskinen forstår. Assembler / assemblerspråk

Hva er programmering?

Kapittel 1: Datamaskiner og programmeringsspråk

Programmering. Carsten Wulff

Operativsystemer og grensesnitt

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk

Læringsmål og pensum. v=nkiu9yen5nc

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Forkurs i informatikk Python. Andreas Færøvig Olsen

Velkommen! I dag. Viktige beskjeder. Studieadministrasjonen. IN Høst Siri Moe Jensen Geir Kjetil Sandve Henrik Hillestad

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

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Java. Henrik Lieng Høgskolen i Oslo og Akershus

Litt om Javas class-filer og byte-kode

Lær kidsa programmering med

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

Oversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

Et forsøk på definisjon. Eksempel 1

Del 1 En oversikt over C-programmering

Steg 1: Få noe på skjermen

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

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

Et forsøk på definisjon

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

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

Velkommen til INF2100

Et forsøk på definisjon

Hva er kompilering? Dagens tema. En kompilator En kompilator leser Minila koden og lager Flok koden.

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

FINF1001 høst Asbjørn Korsbakken

Generelt om operativsystemer

Et forsøk på definisjon. Eksempel 1

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

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

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

1.2 Dynamiske, tjenerbaserte og interaktive nettsteder

Bakgrunnen for INF2100. Velkommen til INF2100. Prosjektet. Hva gjør en kompilator?

AlgDat 12. Forelesning 2. Gunnar Misund

Velkommen til INF5110 Kompilatorteknikk

Oppgave 1 - Linux kommandolinje (%)

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

INF3110 Programmeringsspråk. Dagens tema. Typer (Kapittel 3 frem til ) Innføring i ML (Kapittel & ML-kompendiet.) 1/19

Typer. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning

Generelt om operativsystemer

Før super:bit-oppdraget (120 min) Lærerveiledning forarbeid (6. trinn)

Alternativ dag for teoriforelesning. Intro. Torsdag 12:15-14:00 R1

Programmering (DAPE/ITPE 1400) Høgskolen i Oslo og Akershus Høst 2017 Henrik Lieng

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

Intro til WWW, HTML5 og CSS

Forelesning inf Java 1

Web fundamentals. Web design. Frontend vs. Backend Webdesign 17. januar Monica Strand

Oblig 5 Webutvikling. Av Thomas Gitlevaag

Velkommen til INF Kompilatorteknikk

Forprosjekt gruppe 13

Velkommen til INF2100 Jeg er Dag Langmyhr

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

En snarvei til INF2100

AlgDat 10. Forelesning 2. Gunnar Misund

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

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

Funksjonalitet og oppbygning av et OS (og litt mer om Linux)

Forelesning inf Java 1

Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007. Stein Krogdahl, Ifi UiO

Anbefalt litteratur: Pensum-bøker: Forelesere: Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Oversikt over emnet Programmering (DAPE/ITPE 1400) Høgskolen i Oslo og Akershus Høst 2016 Henrik Lieng

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

INF3110 Programmeringsspråk. Velkommen til kurset INF 3110/4110. Programmeringsspråk 1/24

INF 3110/4110. Velkommen til kurset. Programmeringsspråk. Først det praktiske

Dagens tema Kapittel 8: Objekter og klasser

En kortfattelig guide til JavaScript programmering. Joachim Haagen Skeie. Når vi bruker jquery funksjoner, må jquery inkluderes

Hvordan en prosessor arbeider, del 1

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

Hva er programmering og hva vil det si å lære det?

JavaServer Pages (JSP)

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

Kom i gang med Python

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering?

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

UNIVERSITETET I OSLO

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Steg 1: Regneoperasjoner på en klokke

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme

Hvorfor objektorientert programmering?

Programmeringsspråket C

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?

KRAVSPESIFIKASJON. Tittel: Pris++ Oppgave: Utvikle en Android applikasjon med tilhørende databasesystem. Periode: 1. Januar til 11. Juni.

Introduksjon til DARK assembly

Velkommen til IT1101 Informatikk basisfag. Faglærer og forelesninger. Lærebok. Øvinger. IT1101 Fagstab. Fagets hjemmeside

Kort om kursene INF1100 og MAT-INF1100L

Dokumentasjon av Installasjon

Transkript:

Introduksjon til programmering og programmeringsspråk Henrik Lieng Høgskolen i Oslo og Akershus https://code.org/

Veldig høy-nivå programmering med Scratch

End-user programming Overtone, Tidal, etc., bygger på idéen live coding. Dvs. programmer som endres on-the-fly mens programmerer lager programmet. I live musikkprogrammering er idéen at musikere, med kjennskap til litt koding, spiller musikk ved å programmere den. Eks: https://www.youtube.com/watch?v=s_uzxmtmene

Raspberry Pi Raspberry Pi ble laget for å få barn mer interessert i programmering. Systemet tilbyr et enkelt programmeringsmiljø, med Python, der kommunikasjon til enheter, som I/O, er rett-frem. PS: ikke bare for barn Eksempel: https://www.youtube.com/watch?v=navzmgxbe9c

Hva er et språk? Hvert språk har en formell beskrivelse av grammatikken til språket. Dette deles inn i to kategorier: 1. Systaks: beskriver strukturen til teksten if(true) System.out.println(); er lov, mens if true, System->println() ikke er lov 2. Semantikk: beskriver meningen med ulike tegn og symboler hva skjer her? if(false) domethod1(); else domethod2();

Spesifikke språk Mainstream språk har generell programutvikling som hovedmål. Spesifikke språk har spesifikke domener som mål. Eksempler: HTML for nettsideformatering Mathematica for matematikk SQL for databasekommunikasjon Bash for Linux skallprogrammering UnrealScript for dataspillutvikling GLSL for dataprosessering på grafikkprosessor

Hvor mange språk finnes det? Det blir oppfunnet tusenvis av språk hvert tiår. De fleste dør ut Et nytt språk dekker et nytt behov Java: skriv kode en gang, kjør på hvilken som helst maskin C: muliggjør utvikling av store systemer uten Assembly kode (UNIX) C++: C med klasser (språket het først C with Classes ) Behov i dag: samtidighetsstøtte sikkerhet naturlige språk

Hvilket språk er best? Ingen språk dekker alle behov Ikke bruk C/C++ fordi de er usikre Ikke bruk Java fordi du får dårlig ytelse Ikke bruk Python fordi det er for light-weight MEN, noen språk kan være bedre på spesifikke ting: C for operativsystemer Java for web- og apputvikling Matlab for matematikk Javascript for dynamiske websider

PYPL- PopularitY of Programming Language Index

Ikke-kompilerte språk Java er et kompilert språk: kildekoden kompileres slik at maskinen kan utføre instruksjonene til programmet. Det finnes imidlertid språk som ikke trenger kompilering. Her blir kildekoden istedenfor tolket av en tolk. Eksempler: JavaScript: tolkes av nettleser (som Google Chrome) PHP: tolkes av en PHP tolk (eget program typisk installert på en server) Python: tolkes av en Python tolk (kan konvertere til maskinkode) De fleste deklarative språk (eks. HTML, XML)

Python Verdens enkleste programmeringsspråk å lære Enkel syntaks, ikke C-syntaks (som Java) Prosedyre-basert, med svekket støtte for objekter Støtter ikke objekt-orientert programmering 100 %, som Java

Java Høy-nivå språk over C Kjører på en «virtuell maskin» Fordel: samme kode fungerer på alle typer maskiner (så lenge den støtter Java). Dette er ikke tilfellet med C/C++. Ulempe: Java vil alltid ha dårligere ytelse enn tilsvarende C/C++ programmer på grunn av prosessering av den virtuelle maskinen. Hovedprinsipper: sikkert (stol ikke på programmerer) enkelt (tilby abstraksjoner over C) objekt-orientert («alt» i Java er klasser) Les Wikipedia siden for historie/mer info.

C++ C++ er en utvidelse av C. C++ støtter objekt-orientert programmering. Ligger veldig nærme maskinvaren. C++ støtter all funksjonalitet tilgjengelig i C (men ikke motsatt).

«Medium»-nivå: C C er et høynivå-språk som ligger «nærme» maskinvaren. Å konvertere fra C til maskinkode/assembly er relativt «lett». C er verdens mest distribuerte språk. Så å si alle datamaskinarkitekturer støtter språket. C er prosedyre-basert, dvs. at programmet er delt inn i mindre prosedyrer. C programmer er ofte skrevet i en stor fil (med mange prosedyrer). Java er hovedsakelig implementert i C. C brukes i flere teoretiske eksempler i dett faget, der Java ikke «strekker til».

Lav-nivå språk: maskin- og assemblykode

Lav-nivå språk og spagettikode Assembly kode formateres som en sekvens av instruksjoner som direkte avbildes til maskinkode. For mer avanserte algoritmer vil dette føre til spagettikode, som gjør strukturen til algoritmen/programmet veldig vanskelig å forstå for mennesker. For å unngå slik spagettikode, har det blitt utviklet programmeringsspråk som tilbyr en mer strukturert form for kode. Java er et (av mange) språk som er strukturert

Deklarativ vs. Imperativ programmering Deklarativ Beskriver hva som skal gjøres, men ikke hvordan Programmer ofte delt inn i matematiske funksjoner (funksjonell programmering) Dette semesteret: HTML Imperativ Beskriver både hva og hvordan Programmer delt inn i en sekvens av instruksjoner «Oppskrifter» på løsninger Dette semesteret: Java

Deklarativ programmering - HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>hello</title> </head> <body> <p>hello, world!</p> </body></html>

Kategorisering av programmeringsspråk? Deklarativ vs. imperativ Statisk vs. dynamisk Lav nivå vs. høy nivå Kompilert vs. tolket Generell vs. spesifikk