Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen



Relaterede dokumenter
Simulering I. Don t panic! * Morten Dam Jørgensen. * Large friendly letters

CPUer og maskinkode DM534. Rolf Fagerberg

Indhold. Maskinstruktur Kapitel 1. Assemblersprog Indledning Hop-instruktioner Input og output...

Programmering for begyndere Lektion 2. Opsamling mm

Kontrol-strukturer i PHP

Mircobit Kursus Lektion 3 (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.)

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

Naturvidenskab. En fællesbetegnelse for videnskaberne om naturen, dvs. astronomi, fysik, kemi, biologi, naturgeografi, biofysik, meteorologi, osv

Fang Prikkerne. Introduktion. Scratch

Introduktion til MatLab Matematisk Modellering af Dynamiske Modeller ved Kasper Bjering Jensen, RUC, februar 2010

Noter til C# Programmering Iteration

Fagets IT Introduktion til MATLAB

(Positions) Talsystemer

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

Lige siden den elektroniske computers opfindelse i slutningen af 1940, har det været muligt at få en computer til at beregne ting.

Start på Arduino og programmering

1. Bevægelse med luftmodstand

Klasse 1.4 Michael Jokil

Computerstøttet beregning

Python programmering. Per Tøfting. MacFest

Selvstudium 1, Diskret matematik

Michael Jokil

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Programmering i C. Lektion oktober 2008

#AlleKanKode. Lektion 2 - Konstanter og Variabler

Kapitel 3 Betinget logik i C#

Ghostbusters. Introduktion. Scratch. Du skal lave et fangelegsspil med spøgelser! Arbejdsliste. Test dit Projekt. Gem dit Projekt

Eksempel: Skat i år 2000

Enigma. Et programmeringssprog. Forfatter: Niels Serup X. Y Vejleder: A B C. Fag: Programmering Uddannelsessted: N M

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Kapitel 4 Løkker i C#

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

DM507 Algoritmer og datastrukturer

Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit if (indkomst > ) topskat = (indkomst ) * 0.

Introduktion til DM507

Bevægelse med luftmodstand

#AlleKanKode. Lektion 3 - Operatorer

Eulers metode. Tom Pedersen //Palle Andersen. Aalborg University. Eulers metode p. 1/2

NetLogo-simuleringen. Simuleringer og fysiske modeller (henfaldsloven)

Jan B. Larsen HTX Næstved Computational Thinking Albena Nielsen N. Zahles Gymnasium 2018/2019

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

Udarbejdet af CFU Absalon

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Mircobit Kursus Lektion 4 (Du skal her vælge Lets Code Og herefter Block Editor.)

Almen studieforberedelse. 3.g

Kreativ programmering

Introduktion. Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3. Philip Bille

Computerarkitektur. - en introduktion til computerarkitektur med LINDA

Lær Python dag 1 - modul 1

Programmering i C. Lektion september 2009

Under 'Microsoft Block Editor', klik 'New project' for at åbne block editor-værktøjet.

Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal

Forelæsning Uge 2 Torsdag

Pædagogisk vejledning til. Materialesæt. Sphero.

Test af It-komponent

APPENDIX A INTRODUKTION TIL DERIVE

Spar tid med struktureret programmering! Om PLC programmering

Koden i denne guide vil kun virke i Flash MX 2003 og MX ikke ældre versioner!

Undervisningsbeskrivelse

Brug og Misbrug af logiske tegn

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

Forelæsning Uge 2 Mandag

Introduktion. Philip Bille

Abstrakte datatyper C#-version

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

#AlleKanKode. Lektion 4 - Kontrol flow

JavaScript. nedarvning.

Benyt evt. programmeringsguiden Kør frem vælg sekunder i stedet for rotationer.

DM502. Peter Schneider-Kamp

Bekrig Klonerne. Introduktion. Scratch. I dette projekt skal du lære, hvordan du laver et spil, hvor du skal redde Jorden fra monstre i rummet.

Baggrundsnote om logiske operatorer

Python 3 kursus lektion 1:

I denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal.

Sproget Rascal (v. 2)

Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning

Rumfart. Introduktion. Scratch. Nu skal du lære hvordan du programmerer din egen animation! Arbejdsliste. Test dit Projekt.

Noter til C# Programmering Selektion

Matematisk modellering og numeriske metoder. Lektion 5

Start på javascript. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 03. Feb 2009 af webstuff I kategorien Programmering / JavaScript

Fable Kom godt i gang

Studieretningsopgave

Introduktion Indtastning Funktioner Scripts Optimering. Matlab

Introduktion til funktioner, moduler og scopes i Python

Matematik for økonomer 3. semester

Forelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999

Reeksamen i Diskret Matematik

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Kaotisk kuglebevægelse En dynamisk analyse

Noter til Perspektiver i Matematikken

CPU i7 2.2 GHz 4 kerner i5-4210u 1,7 GHz 2 kerner, 4 logiske kerner GPU integreret Nvidia GeForce 820M Ram 8GB 6 GB Harddisk HDD HDD

Mini SRP. Afkøling. Klasse 2.4. Navn: Jacob Pihlkjær Hjortshøj, Jonatan Geysner Hvidberg og Kevin Høst Husted

Newtons afkølingslov

Fable Kom godt i gang

Repræsentation af tal

Maple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje.

Matematik B - hf-enkeltfag, april 2011

FAGMODULBESKRIVELSE for Fysik

Søgning og Sortering. Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering. Philip Bille

Transkript:

Programmering Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Oversigt Undervisningen Hvad er programmering Hvordan er et program organiseret? Programmering og fysik Nobelprisen i 10 trin Nye koncepter Variable Logiske betingelser Løkker Strukturer Funktioner

Undervisningen Tirsdagsforelæsningerne Screencasts Computerfysik.dk Multiple Choice Afleveringer Diskussionsforum

Hvad er programmering? En computers aksiomer Instruktioner en computer kan forstå. Computerens CPU forstår kun aksiomer. Programmeringsprog som MATLAB er ligesom kalkulus, en abstraktion der gør det mere bekvemt at udføre beregninger. set gem en værdi i et register i CPUen move flyt værdi fra hukommelse til register read, write læs og skriv data fra en fysisk enhed (harddisk, grafikkort, lydkort o.lign.) add, subtract, multiply, divide Med værdier fra to registre, udfør beregning og gem i et tredje register compare Sammenlign værdien i to registre branch Gå til en anden lokation i programmet og udfør instruktionerne fra dette sted

Et program Skrevet i ren tekst (MS Word dur ikke!) Kommandoer afvikles oppefra og ned, og fra venstre mod højre Løkker, betingelser og funktioner gør at dele af et program godt kan afvikles flere gange...

Programmering og fysik Teoretisk analytisk arbejde (typisk i Mathematica), test af parameter-rum, plotting, matematisk modellering. Eksperimentstyring (kontrol af måleudstyr, lasere, teleskoper, acceleratorer) Dataopsamling, distribution og lagring Simulering af teoretiske modeller (alle grene af fysik) Dataanalyse, sammenligning mellem teori, simulering og observationer Visualisering

Nobelprisen i 10 trin (Få en god ide!) Opstil en teori om et fænomen i naturen... Resultatet publiceres! (og vent 10 år på Nobelpris...) Problemet (kan måske) formuleres analytisk justering af teori... Visualisering, konklusion, artikel, falsificering af teori... Problemet oversættes til en numerisk løsbar definition Resultatet sammenlignes med eksperiment ved statistisk analyse Problemet skrives i et programmeringssprog som f.eks. MATLAB Et program læser det binære resultat og oversætter det til decimal tal Programmet fortolkes/oversættes af MATLAB/kompiler til maskinsprog Maskinkoden afvikles, resultatet gemmes i binær form

Nobelprisen i 10 trin (Få en god ide!) Opstil en teori om et fænomen i naturen Resultatet publiceres! (og vent 10 år på Nobelpris...) Problemet (kan måske) formuleres analytisk Visualisering, konklusion, artikel, falsificering af teori... Problemet oversættes til en numerisk løsbar definition Resultatet sammenlignes med eksperiment ved statistisk analyse Problemet skrives i et programmeringssprog som f.eks. MATLAB Et program læser det binære resultat og oversætter det til decimal tal Programmet fortolkes/oversættes af MATLAB/kompiler til maskinsprog Maskinkoden afvikles, resultatet gemmes i binær form

Nye koncepter Programmering introducerer specielle operationer som ikke direkte kan sammenlignes med matematik: Variable (lagring af information) Afgreninger (betingelser) Løkker Datastrukturer

Variable Variable er navngivne størrelser, man kan benytte i et program til at gemme information som kan benyttes og manipuleres under afviklingen Indeholder information af forskellige slags Heltal Komma tal Tekst Komplekse tal Vektorer, Matricer Strukturer Anonyme funktioner heltal = 1000 kommatal = 3.1415 stort_kommatal = 6.0221415e23 tekst = 'GATTCA' logisk = false kompleks = 10 + 4i et_nyt_tal = stort_kommatal * kommatal http://computerfysik.dk/programmering/variable/

Betingelser, forgreninger Betingelser tester et logisk udsagn: hvis værdien af x er mindre end y så gør... hvis udsagnet er sandt vil en blok kode blive afviklet, ellers ikke. Forgreninger (branching), flow-control http://computerfysik.dk/programmering/logik-og-betingelser-if-saetninger/

Betingelser a > b sandt hvis a er større end b a < b sandt hvis a er mindre end b f(x) = a >= b sandt hvis a er større eller lig med b a <= b sandt hvis a er mindre end eller lig med b a ~= b sandt hvis a ikke er lig med b a == b sandt hvis a er lig med b a && b sandt hvis a er sand og b er sand a b sandt hvis a er sand eller b er sand z x hvis x>0 z + x ellers if x > 0 f = z - x else f = z + x end

Betingelser Flere alternative betingelser Eksempel: if <logisk udsagn> kommando1 elseif <andet logisk udsagn> kommando2 else kommando3 end a = 10 b = -5 if a > 0 && b >= 0 c = 0 elseif b < -10 c = 1 elseif a > 0 b ~= -5 c = -1 else c = a end Hvad bliver c sat til?

Løkker (Loops) En løkke er en kommando som gentager en blok kode et antal gange. En løkke kan udføres et forudbestemt antal gange, eller indtil en logisk betingelse ikke længere er udført while <logisk udsagn> kommandoer end for i=1:100 kommandoer (udføres 100 gange) end http://computerfysik.dk/programmering/lokker-for-while--loops/

Løkker Eksempel: Matematiske summer og produkter: a = 10 X i=1 i 2 = 385 b = 4Y i=1 1 i =1 1 2 1 3... = 1 24 =0.417 a = 0 for i=1:10 a = a + i.^2 end b = 1 for i=1:4 b = b.* 1./i end

Løkker Eksempel: Legeme påvirket af tyngdeacceleration over 10 sekunder Koden i mellem while og end afvikles indtil t = 10 Eksempel på numerisk løsning af en differentialligning Vi har næsten en simulering her, der mangler kun begyndelsesbetingelser t = 0 % tid (s) dt = 0.1 % tidsskridt (s) a = [0, -9.8] % tyngde while t < 10 % afslut kl 10s t = t + dt % opdater t end % Newtons 2. lov v = v + dt.* a r = r + dt.* v

Datastrukturer Har man et objekt som skal beskrives af mere end ét tal eller én vektor, kan man lave en struktur som indeholder flere variable kat = struct(); % Ny datastruktur kat.ben = 4; % (N) kat.hale = 0.94; % (m) kat.masse = 4.5; % (kg) kat.farve = 'tabby'; kat.r = [12, 4, 4]; % (m) position kat.v = [0, 0, -2]; % (m/s) hastighed http://computerfysik.dk/programmering/datastrukturer/

Datastrukturer Strukturer kan bruges ligesom variable, man skal blot huske at sætte navnet på strukturen før navnet på den indeholdte variabel: kat.v = kat.v + dt.* g kat.r = kat.r + dt.* kat.v if kat.r(3) <= 0 && kat.v > 10 kat.lever = false else kat.lever = true end

Funktioner Funktioner minder om funktioner i matematikken, men de kan også bruges til andet end udregninger (f.eks. plotting) Der findes to slags Normale funktioner Anonyme funktioner http://computerfysik.dk/programmering/funktioner/

Funktioner Funktioner laves som særskilte filer (f.eks. idealgas.m gemmes i samme mappe som hovedprogrammet fysik_aflevering.m : idealgas.m fysik_aflevering.m function p = idealgas(n, T, rho) k = 1.38e-23; % Boltzmanns k... p = (N * k * T) / rho; end N = 10; rho = 0.055; T = 298; tryk = idealgas(n, T, rho)

Funktioner Anonyme funktioner er små funktioner som kan stå på en enkelt linje. De kan indlejres i programmer, og kræver ikke ekstra.m filer k = 1.38e-23; % Boltzmanns k... p = @(N,T,rho) (N * k * T) / rho; N = 10; rho = 0.055; T = 298; tryk = p(n, T, rho)

Næste uge Fysik simulering! Løsning af differentialligninger med Euler metoden Randbetingelser

Husk Aflevering Den første af 4 afleveringer i programmering er aktiveret i Absalon, få den afleveret i denne uge Tester basal viden om MATLAB, skulle kunne løses ved at læse opgaverne og copypaste lidt :)