Introduktion till programmering

Relevanta dokument
Introduktion till programmering

Introduktion till Python. TDDE23 Funktionell och imperativ programmering, del 1 Föreläsning 3 Peter Dalenius Institutionen för datavetenskap

Imperativ och Funktionell Programmering i Python #TDDD73

Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,

Mjukstart i programmering

TDDD78 / 729A85 Objektorienterad programmering och Java

Programmering, grundkurs

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

TDDD78 / 729A85 Objektorienterad programmering och Java

Selektion och iteration

Grafik. TDDC66 Datorsystem och programmering Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

Uppgifter teknik HT17 (uppdaterad v. 40)

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

Introduktion till Linux. TDDC66 Datorsystem och programmering Föreläsning 1 Peter Dalenius Institutionen för datavetenskap

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

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

Introduktion till Linux. TDDC66 Datorsystem och programmering Föreläsning (i) Peter Dalenius Institutionen för datavetenskap

DD1314 Programmeringsteknik

Introduktion till programmering och Python Grundkurs i programmering med Python

Introduktion till programmering, hösten 2011

Introduktion till Unix och Linux

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

Digitalt lärande och programmering i klassrummet

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

Objektorienterad Programmering (TDDC77)

Deklarativ programmering

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

TDDC77 Objektorienterad Programmering

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

TDP002 Imperativ programmering

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

MATLAB-modulen Programmering i MATLAB. Höstterminen hp. Vad är MATLAB

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

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Objektorienterad programmering

Grundkurs i programmering - intro

FÖRELÄSNING 1 PERSONAL TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 SYFTE EXAMINATION ORGANISATION

TDP001/TDP002. Introduktionsföreläsning. Eric Elfving Institutionen för Datavetenskap (IDA)

TDDD73-funktionell och imperativ programmering i python

Objektorienterad Programmering (TDDC77)

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

v. 42 Python HT17 En introduktion Oscar Bergqvist

Föreläsning 5 Mer om funktioner, villkor

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Outline. Objektorienterad Programmering (TDDC77) Kursinfo. Outline. Hemsida. Organization. Ahmed Rezine Examination. Webreg.

Deklarativ programmering

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

Datorsystem och programmering

TDDE44 Programmering, grundkurs

Imperativ programmering i ADA

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

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

Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,

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

Programutveckling med Java 7.5 p, ht 2007 (D0019N) STUDIEHANDLEDNING - ALLMÄN INFORMATION

TDP002 - Imperativ programmering

Läsöversikt. Föreläsningar 2-6. Genomförande av laborationer

Introduktion till programmering. Undervisning. Litteratur och examination. Lärare. Föreläsning 1

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Funktioner. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 8. Peter Dalenius Institutionen för datavetenskap

v. 43 Python HT17 En introduktion Oscar Bergqvist

GIT L0003B. Databaser, en introduktion. Information inför kursstart

Använda Python Laboration 1 GruDat, DD1344

Programmeringsteknik I

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

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

Grundläggande datavetenskap 4p

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

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

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Program & programmering

Grundläggande programmering med matematikdidaktisk inriktning för lärare i åk 7-9

Prova på-laboration i Ada

Föreläsning 1 & 2 INTRODUKTION

Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode

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

Språket Python - Del 1 Grundkurs i programmering med Python

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Föreläsning 3. Programmering, C och programmeringsmiljö

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

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Grundläggande programmering med matematikdidaktisk inriktning för lärare i åk 7-9

Programmering - abstraktion och modellering

Introduktion till Programmering. Dåtid, nutid och framtid

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

TDP002 - Imperativ programmering

Programmering, grundkurs

Föreläsning 3. Programmering, C och programmeringsmiljö

Datamodeller och databaser, avancerad kurs

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

Kursanalys DA2003 sommar 2017

Evaluation Summary - CDT104 Grundläggande Webbdesign HT07 Dan Levin

Programming in C# and.net Framework

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Tentamen i Introduktion till programmering

Planering av ett större program, del 2 - for och listor. Linda Mannila

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

Objektorienterad programmering och Java

Transkript:

Introduktion till programmering TDDC66 Datorsystem och programmering Föreläsning 1 Peter Dalenius Institutionen för datavetenskap 2013-09-02

Översikt Vad är programmering? Kursens målsättning och organisation Hur använder man progamspråket Python? 3

Vad är ett program och hur programmerar man? 4

Programmering i ett nötskal program en uppsättning regler eller instruktioner med uppgift att styra en dators beräkningar (Nationalencyklopedin) komponenterna programspråket och dess konstruktioner processen principer för hur man utformar program resultatet hur program körs och hur de påverkar folk 5

Datorns utveckling en kort historik Tidiga datorer, ofta militära 40-, 50-talet Persondatorer för hem och kontor 80-, 90-talet Mobila enheter 10-talet 1940 1950 1960 1970 1980 1990 2000 2010 Stordatorer för industrin 60-, 70-talet Internet för vanligt folk 90-,00-talet 6

Hur långt kommer vi i den här kursen? 7

Några roliga saker vi inte hinner med... Hur man designar grafiska gränssnitt Hur datorer kommunicerar med varandra över nätverk Hur man lagrar information i databaser Hur man startar processer för att få saker att hända samtidigt Hur man hanterar större programmeringsprojekt Hur man gör appar Vi kommer att fokusera på grunderna i programmering och hur man etablerar goda vanor för att bli en bra programmerare. Allt det andra och mycket mer kommer längre fram. 8

Hur passar programmering in i mitt framtida jobb? 9

10 Svensk industri är beroende av mjukvara...

Hur lär man sig att programmera? 11

Enligt Peter Norvig, forskningschef på Google... Bli intresserad av programmering, så att du orkar lägga ner 10000 timmar på träning. Skriv många olika program. Prata med andra programmerare och läs deras kod. Om du vill, läs på universitet. Arbeta i projekt tillsammans med andra programmerare. Ta över projekt efter andra programmerare. Lär dig åtminstone ett halvt dussin olika programmeringsspråk. Peter Norvig (2001) Teach Yourself Programming in Ten Years. http://norvig.com/21-days.html 12

Varför har vi valt programspråket Python? 13

Pythons historik Skapades i slutet av 1980-talet av holländaren Guido van Rossum, som fortfarande spelar en stor roll för språkets utveckling. Det åttonde mest populära programspråket i världen. [1] Version 3.0, som vi kommer använda, kom i december 2008. Det var en ganska stor förändring som inte är bakåtkompatibel. Fri programvara. [1] TIOBE Programming Community Index July 2012 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 14

Fördelar med Python Lätt att komma igång med. Har en stabil användarbas både på universitet och i industrin. Funkar bra både för systemprogram och för tillämpningar. Neutralt i förhållande till olika programmeringsparadigm. Kan användas för att illustrera koncept inom programmering. 15

Målsättning Datorsystem använda IDA:s datorsystem såpass bra att det inte blir så mycket praktiska problem i framtida programmeringskurser Programmering konstruera enklare program i Python förklara hur program fungerar genom att använda korrekt datavetenskaplig terminologi 16

Upplägg Aktivitet Föreläsningar Lektioner Laborationer Eget arbete Tid i HT1 Innehåll 24 h Introduktion, översikt, sammanfattning(ligger alltid steget före) 8 h Genomgångar, förberedelser, exempel, torrövningar 26 h Arbete med övningar och uppgifter, diskussioner, redovisningar 60 h Läsa, öva, experiementera, arbeta med övningar och uppgifter 17

Examination Webbaserad datorintroduktion vecka 35-38 UPG1 Slutuppgift TDDC66 Datorsystem och programmering LAB1 Prova på-laborationer Laborationsomgång 1-2 Python vecka 38-51 TDDD73 Funktionell och imperativ programmering i Python LAB1 DAT1 Laborationsomgång 3-7 Datortentamen 18

Tillåtet och otillåtet samarbete Allt arbete med examinerande uppgifter i kursen TDDC66 Datorsystem och programmering ska ske enskilt (förutom i prova på-laborationerna när arbetet sker i par). I kursen TDDD73 Funktionell och imperativ programmering i Python (d.v.s. i praktiken från labbomgång 3) kommer ni att arbeta i par som ni själva får välja. Vad är enskilt arbete? Var går gränsen för fusk? Universitetets disciplinnämnd kan vid fusk stänga av studenter upp till sex månader, vilket innebär att man ej får delta i undervisning och inte får några studiemedel. 19

Kurslitteratur John M. Zelle (2010) Python Programming: An Introduction to Computer Science. Second Edition. ISBN 978-1-59028-241-0 Boken har ett bra pedagogiskt upplägg som ansluter väl till det vi vill göra i kursen. Den täcker dock inte allt som vi vill gå igenom, så en del saker kommer enbart att tas upp på föreläsningar. Om man skaffar en annan Python-bok, se till att den täcker Python 3! 20

Personal Examinator: Peter Dalenius Kursadministratör: Anna Grabska Eklund Lektions- och laborationsassistenter: D1A: Anders Märak Leffler, Hugo Lindholm D1B: Peter Larsson Green, Torbjörn Lönnemark D1C: Jonas Wallgren, Per Eklund U1: Fredrik Heintz, Rickard Andersson 21

Information och kommunikation På kurswebben finns all information om kursen man behöver: http://www.ida.liu.se/~tddc66 Laborationsmaterial Föreläsningsbilder Länk till schema Planering och deadlines Regler för redovisning och komplettering m.m. 22

23 Hur man startar Python-interpretatorn

Hur man använder Python-interpretatorn >>> 2+3 5 >>> 2+4*5-6 16 >>> print("hello world!") Hello world! >>> def greeting():... print( Nobody expects the Spanish Inquisition.")... print( Our chief weapon is surprise... and fear.")... >>> greeting() Nobody expects the Spanish Inquisition. Our chief weapon is surprise... and fear. 24

Hur man använder Python-interpretatorn >>> def skryt(namn):... print("det är bra att kunna Python.")... print(namn, "är jättebra på Python.")... >>> skryt("peter") Det är bra att kunna Python. Peter är jättebra på Python. >>> skryt("jenny") Det är bra att kunna Python. Jenny är jättebra på Python. >>> skryt <function skryt at 0x218390> >>> print <built-in function print> 25

26 Vårt första Python-program

1. Skriv ut lite informativ text 2. Läs in en rad från användaren, försök tolka vad som matades Vad gör programmet? in och spara detta i variabeln x 3. Börja gissa att roten ur x är x/2 och spara gissningen i variabeln guess def find_root(): print("this program tries to find the square root of a number.") x = eval(input("enter a number: ")) guess = x/2 for i in range(5): guess = (guess + x/guess)/2 print(guess) 4. Upprepa de följande raderna 5 gånger find_root() 5. Räkna ut en ny bättre gissning och skriv ut den Newton-Raphsons metod för att räkna ut kvadratroten av ett tal x. 27

Varför så mycket mellanrum? def find_root(): print("this program tries to find the square root of a number.") x = eval(input("enter a number: ")) guess = x/2 for i in range(5): guess = (guess + x/guess)/2 print(guess) find_root() Underordnade rader måste skjutas in en bit på raden, indenteras. Newton-Raphsons metod för att räkna ut kvadratroten av ett tal x. 28

Olika sätt att köra vårt program zaza4 <23> python3 newton.py This program tries to find the square root of a number. Enter a number: 2 1.5 1.4166666666666665 1.4142156862745097 1.4142135623746899 1.414213562373095 zaza4 <24> python3 Python 3.2.2 (default, Mar 7 2012, 13:44:00) [GCC 3.4.6] on sunos5 Type "help", "copyright", "credits" or "license" for more information. >>> 29

Hur man använder Python-interpretatorn >>> import newton This program tries to find the square root of a number. Enter a number: 2 1.5 1.4166666666666665 1.4142156862745097 1.4142135623746899 1.414213562373095 >>> newton.find_root() This program tries to find the square root of a number. Enter a number: 10 3.5 3.178571428571429 3.162319422150883 3.1622776604441363 3.162277660168379 30

Hur man använder Python-interpretatorn >>> from newton import * This program tries to find the square root of a number. Enter a number: 3 1.75 1.7321428571428572 1.7320508100147274 1.7320508075688772 1.7320508075688772 >>> find_root() This program tries to find the square root of a number. Enter a number: 5 2.25 2.236111111111111 2.2360679779158037 2.23606797749979 2.23606797749979 31

Ordning och reda på programkoden Programkod organiseras i moduler, och om man inte gör något speciellt kommer varje fil att bli en modul. import newton Ladda in modulen (filen) newton. Funktioner i modulen går att anropa med newton.funktionsnamn from newton import * Ladda in modulen (filen) newton så att allt som finns i den går att anropa direkt. Detta är bra för våra små program, men blir rörigt när vi kommer lite längre fram. 32

Satser ryggraden i ett program Ett Python-program består av ett antal satser (eng. statements) som utförs i tur och ordning. Än så länge har vi i huvudsak stött på följande typer av satser: Enkla satser Tilldelning (eng. assignment) Funktionsanrop Sammansatta satser Iteration med for Funktionsdefinition 33

Olika typer av satser: Tilldelning Hur ser det ut? namn = uttryck Vad händer? Uttrycket beräknas och resultatet sparas i den namngivna variabeln. def find_root(): print("this program tries to find the square root of a number.") x = eval(input("enter a number: ")) guess = x/2 for i in range(5): guess = (guess + x/guess)/2 print(guess) find_root() 34

Olika typer av satser: Funktionsanrop Hur ser det ut? funktionsnamn(frivilliga argument) Vad händer? Argumenten skickas till funktionen, underprogrammet, för behandling. def find_root(): print("this program tries to find the square root of a number.") x = eval(input("enter a number: ")) guess = x/2 for i in range(5): guess = (guess + x/guess)/2 print(guess) find_root() Funktionsanrop som inte är självständiga satser 35

Olika typer av satser: Iteration med for Hur ser det ut? for namn in område: undersatser Vad händer? Undersatserna körs så många gånger som området specificerar. def find_root(): print("this program tries to find the square root of a number.") x = eval(input("enter a number: ")) guess = x/2 for i in range(5): guess = (guess + x/guess)/2 print(guess) find_root() 36

Olika typer av satser: Funktionsdefinitioner Hur ser det ut? def funktionsamn(frivilliga argument): undersatser Vad händer? Undersatserna sparas för att kunna anropas senare. def find_root(): print("this program tries to find the square root of a number.") x = eval(input("enter a number: ")) guess = x/2 for i in range(5): guess = (guess + x/guess)/2 print(guess) find_root() 37

Olika typer av satser: Selektion Enkelt val if a > 0: print( positivt") Två alternativ if a > 0: print( positivt") else: print( negativt") Tre eller fler alternativ if 0 <= a < 10: print("ental") elif a < 0: print("negativt") else: print("tio eller mer") 38

Inför första laborationstillfället Ta reda på vilken labbgrupp du är med i (se kurswebben). Ta reda på när den labbgruppen har sitt första labbtillfälle (se schemat). Dyk upp på rätt plats i rätt tid. Våra laborationer brukar börja kvart över. De flesta har sin första laboration i eftermiddag. 39

Bildkällor: http://en.wikipedia.org/wiki/file:windows_9x_bsod.png http://mcsp.wartburg.edu/zelle/python/ http://en.wikipedia.org/wiki/file:eniac.jpg http://en.wikipedia.org/wiki/file:univacii.jpg http://en.wikipedia.org/wiki/file:ibm_pc_5150.jpg http://en.wikipedia.org/wiki/file:acer_aspire_8920_gemstone_by_georgy.jpg http://en.wikipedia.org/wiki/file:htc_touch_pro2_georgy.jpg http://en.wikipedia.org/wiki/file:lego_color_bricks.jpg http://commons.wikimedia.org/wiki/file:lego_at_work.jpg http://www.swedsoft.se/ www.liu.se