Imperativ programmering



Relevanta dokument
Imperativ programmering. Föreläsning 4

Program & programmering

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

Föreläsning 1: Intro till kursen och programmering

Objektorienterad programmering

Föreläsning 1: Intro till kursen och programmering

Imperativ programmering. Föreläsning 2

DD1361 Programmeringsparadigm Föreläsning 1: Intro

Introduktion till programmering. Programspråk och paradigmer

Föreläsning 2. Operativsystem och programmering

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

TDP002 Imperativ programmering

PROGRAMMERINGSMETODIK

IT för personligt arbete F6

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Grundkurs i programmering - intro

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Kursanalys för Programmeringsparadigm 2D1361, läsperiod 1 och 2 läsåret 2005/2006

Programmeringsparadigm - en jämförelse

Välkomna till NADA. Paradigm i datalogin. Vad är ett paradigm

729G06 Föreläsning 1 Objektorienterad programmering

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

DD1361 Programmeringsparadigm Föreläsning 1: Intro

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

TDIU01 (725G67) - Programmering i C++, grundkurs

Funktionell programmering

PROGRAMMERINGSMETODIK

Programmeringsteknik I

TDP002 - Imperativ programmering

Inledande programmering med C# (1DV402) Introduktion till programmering

Exempel på typer av datorspråk EXCEL

Deklarativt programmeringsparadigm

TDP002 - Imperativ programmering

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik

Föreläsning 5 5DV086 - Programspråk

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Innehålls förteckning

Sista delen av kursen

Programspråkslingvistik. Sista delen av kursen. Ett programspråk

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Sista delen av kursen

Imperativ programmering. Föreläsning 3

Studentportalen UNIX-konton (systemansvariga P4118) Lärare: Anna Eckerdal,

Introduktion till programmering

GRUNDKURS I C-PROGRAMMERING

Datalogi I, grundkurs med Java 10p, 2D4112, Tentamen 29 november 2003, svar och lösningar

Exempel på typer av datorspråk EXCEL

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Software Technology. Josef Svenningsson

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Mjukstart i programmering

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 2 Jody Foo,

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Introduktion till programmering och Python Grundkurs i programmering med Python

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Kapitel 2. Evolutionen av de viktigaste programmeringsspråken ISBN

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Användar- och systemdokumentation

Inledande programmering med C# (1DV402) Introduktion till C#

Objektorienterad Programkonstruktion. Föreläsning 1 2 nov 2015

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Objektorienterad Programkonstruktion. Föreläsning 1 1 nov 2016

Föreläsning 1: Introduktion till kursen

Bakgrund. Bakgrund. Bakgrund. Håkan Jonsson Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers.

Genicore AB. Modellbaserad ansats. En liten firma i Göteborg som gör stora datasystem. Systemspråk - När modellen är systemet. torsdag 10 maj 2012

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

TDDE44 Programmering, grundkurs

Introduktion till programmering, hösten 2011

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Föreläsning 1: Introduktion till kursen

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

Föreläsning 1: Introduktion till kursen

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

Skolverket Workshop i kursen TIATIL00S Tillämpad Programmering

Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Del : Funktionell programmering. I alla deluppgifterna, använd Haskell och skriv typen för de identifierare du definierar.

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 2 Jody Foo,

Välkomna till DIT012 IPGO

Välkomna till kursen i grundläggande programmering DVGA08, ISGA04

TDP002 Imperativ programmering. Översikt. Programplan för IP - översikt. Innovativ programmering

TDP002 Imperativ programmering

Deklarativ programmering

DD1361 Programmeringsparadigm. Carina Edlund

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

PARADIGMSKIFTE I PROGRAMMERINGEN INNEBÖRDEN AV FUNKTIONELL PROGRAMMERING VID PROGRAMUTVECKLING

OOP Objekt-orienterad programmering

729G06 Programmering och logik. Info om pythondelen & introduktion till objektorienterad programmering.

SKOLFS. beslutade den -- maj 2015.

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Start v. Programspråk. Poäng. 03 Institution Institutionen för datavetenskap 7.5. Antal registrerade (män/kvinnor) 59 (54/5)

SKOLFS. beslutade den XXX 2017.

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Introduktion till Haskell

Transkript:

Imperativ programmering 1DL126 3p

Imperativ programmering Jesper Wilhelmsson ICQ: 20328079 Yahoo: amigajoppe MSN / epost: jesperw@it.uu.se Rum: 1335 Tel: 471 1046

Imperativ programmering Vilka programmeringsspråk kan du?

Imperativ programmering "Haha.. Gammal hederlig imperativ programmering!"

Schema M T O T v24 F F L v25 F F L v26 F S F L v27 F F L v28 F S F L v29 F S Föreläsningar i 1311 Labbar i 1549D Seminarier i 1213

Kursupplägg Föreläsningar 11 st. All viktig information som behövs för att klara kursen. Labbar 5 st. Tillfällen att fråga. Labbtiden räcker inte. Kom förberedda!! Seminarier 3 st. Examination genom diskussion. 38 timmar schemalagt av 120.

Kursmaterial "Programming languages", Ravi Sethi http://www.it.uu.se/edu/course/homepage/impprog/st07 Wikipedia (engelsk!) Kompendium om C Tutorials och andra hjälpsidor på nätet Egna förslag

Redovisningsuppgifter Uppgift 1 Fem program skrivna i C, C++, Java, Ada och Pascal. Översätt alla programmen till de fem olika språken. Undersök språkkonstruktioner. Välj ett imperativt språk och ta reda på vad som är och inte är tillåtet. Hitta egenskaper hos språket som skiljer det från andra språk. Redovisas på seminarie 1.

Redovisningsuppgifter Uppgift 2 Egen valfri programmeringsuppgift. Några förslag på uppgift finns men ni är välkomna att föreslå egna uppgifter. Sammanfattning och stilredovisning på seminarie 1. Slutredovisning på seminarie 2.

Redovisningsuppgifter Uppgift 3 Ta ett projekt från SourceForge.net och studera källkoden. Vilken paradigm följer koden? Går den att läsa? Vad är bra, vad är mindre bra? Vad skulle du göra annorlunda? Slutdiskussion på seminarie 3.

Paradigm Programmeringsstil - olika sätt att se på programmet och dess syfte. "Data som programmet arbetar med ska förvaras tillsammans med koden som arbetar på datat." "Ett anrop till en funktion ska vara oberoende av vad som sker runt omkring - samma indata ska alltid ge samma svar." "Programmet är en serie av kommandon som förändrar tillståndet i datorn." "Programmet består endast av relationer mellan olika objekt."

Det var en gång...... en vision (Leibniz, 1674) 1. Skapa ett universellt språk i vilket alla tänkbara problem kan formuleras. 2. Hitta en metod för att lösa alla problem som kan formuleras i det universella språket.

Det var en gång... Olöst i 250 år Oavgörbarhetsproblemet (Hilbert & Ackermann, 1928) "Skapa ett datorprogram som tar som indata en definition av ett formellt språk och ett matematiskt uttryck beskrivet i språket. Programmet ska returnera sant eller falskt beroende på om uttrycket evaluerar till sant eller falskt."

Det var en gång... Allan Turing - Turing-maskinen Alonzo Church - -kalkylen "Ett universellt språk..." - Nej, tyvärr! Två olika sätt att se på problemet Två olika sätt att tänka

Paradigmer Religiösa krig... Det finns ingen silverkula! Ingen paradigm är bäst! Inget programmeringsspråk är bäst! Inte ens för ett enskilt problem!

Paradigmer och språk Tre huvudgrupper Imperativa språk Algol, Fortran, C, Pascal, Ada Funktionella språk Haskell, Scheme, ML, Erlang, Excel Logiska språk Prolog Deklarativa språk

Funktionellt synsätt "Värdet av ett uttryck beror endast av värdet av dess deluttryck." Förbjuder sidoeffekter - Samma indata ska alltid ge samma resultat. Funktioner är data. Rekursiv programmering. Läs mer i Sethi, Programming Languages.

Logiskt synsätt "Att programmera med relationer är mer flexibelt än att programmera med funktioner." Ingen skillnad på argument och resultat. 5 + 7 = X Ja, om X = 12 5 + X = 12 Ja, om X = 7 Läs mer i Sethi, Programming Languages.

Paradigmer Funktionell programmering Meddelandeprogrammering Dataflödesprogrammering Logisk programmering Constraint-programmering

Imperativt synsätt En serie instruktioner som förändrar omgivningens tillstånd. Iterativ programmering. Ett recept i en kokbok - Steg-för-steginstruktioner som påverkar tillståndet i grytan. Den globala grytan innehåller efter att receptet är slutfört ett resultat som kan betraktas av andra.

Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering Prototypbaserad programmering Konceptorienterad programmering Aspektorienterad programmering Attributorienterad programmering... och så vidare...

Paradigmer Riktiga program är för komplexa. T.ex. kompilator: Parsning - Imperativt Optimering - Funktionellt Registerallokering - Logikprogrammering Kodgenerering - Funktionellt

En paradigm räcker inte! C++ stödjer många tankesätt Procedurell programmering Objektbaserad programmering Objektorienterad programmering Agentorienterad programmering Generisk programmering Common Lisp, Python, Ruby, Oz.

Imperativ hårdvara Hårdvaran styrs av maskinkod som skrivs i en imperativ stil. Datorns tillstånd - minnet - förändras av en serie instruktioner. Abstraktionslager ovanpå hårdvaran bygger mer och mer avancerade språk.

Historisk tillbakablick I begynnelsen fanns det maskinkod - den var imperativ... FORTRAN 1954 B-0 (COBOL) 1957 ALGOL 1958 LISP 1958 SNOBOL 1962 CPL 1963 BASIC 1964 Simula I 1964 Smalltalk 1969 Pascal 1970 Prolog 1970 ML 1973 Scheme 1975

Mot högre nivåer Java Erlang Prolog Ada ML C Pascal BASIC Assembler Hårdvara

Obligatorisk uppgift Skriv ner det viktigaste / det du minns bäst från dagens föreläsning