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

Relevanta dokument
TDP002 Imperativ programmering

TDP002 Imperativ programmering

TDP002 - Imperativ programmering

TDP002 - Imperativ programmering

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

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

Grundkurs i programmering - intro

Program & programmering

Introduktion till programmering. Programspråk och paradigmer

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

Imperativ programmering

Föreläsning 2. Operativsystem och programmering

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

OOP Objekt-orienterad programmering

TDP001: Handhavande av datormiljö, 4 hp. Ola Leifler, Institutionen för datavetenskap

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

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

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

Introduktion till programmering och Python Grundkurs i programmering med Python

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

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

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

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

LADDA NER LÄSA. Beskrivning. Programmering i Python PDF LÄSA ladda ner

Föreläsning 1: Introduktion till kursen

TDDE44 Programmering, grundkurs

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

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

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

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

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

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

Programmering i C++ Kompilering från kommandoraden

SMD 134 Objektorienterad programmering

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

Prova på-laboration i Ada

Introduktion till programmering, hösten 2011

Programmeringsteknik I

Lite mer om CGI-programmering

Objektorienterad programmering

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

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

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Mattias Enervall (Övningsassistent) Examination. 1 Skriftlig tentamen (betyg)

Datorsystem och programmering

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

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Daniel Petersson (Labassistent) Examination. 1 Skriftlig tentamen (betyg)

TDDC77 Objektorienterad Programmering

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

JAVAUTVECKLING LEKTION 1

Föreläsning 1 & 2 INTRODUKTION

Objektorienterad Programmering (TDDC77)

Föreläsning 1: Introduktion till kursen

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 1: Introduktion till kursen

Exempel på typer av datorspråk EXCEL

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

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

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

Deklarativ programmering

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

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

Exempel på typer av datorspråk EXCEL

Programmering, grundkurs

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

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

Grundläggande datalogi - Övning 1

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Språkteknologi (SV2122) Föreläsning 3: Programmering i Python

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

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

GIT L0012B. Implementation av geografiska informationssystem. Information inför kursstart

Använda Python Laboration 1 GruDat, DD1344

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

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

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Mjukstart i programmering

Innehålls förteckning

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

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe

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

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

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

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

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

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2014

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode

MUDDYCARDS 729G04 PYTHON 1. Positivt. Negativt. JODY FOO Department of Computer and Information Science (IDA) Linköping University, Sweden

Konstruktion av datorspråk

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

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

F4. programmeringsteknik och Matlab

TDP003 Projekt: Egna datormiljön

Föreläsning 1 & 2 INTRODUKTION

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

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

Transkript:

TDP002 Imperativ programmering Översikt Human Centered Systems Inst. för datavetenskap Linköpings universitet Välkommen till IP Om kursen Datorns grundbegrepp Historien om Python Hej värld i IDLE Principer vs Python Hitta rätt attityd Labb-gruppindelning Schema En lång vandring börjar med att man tar på sig skorna Innovativ programmering Programplan för IP - översikt Akademisk utbildning och hantverkskunnande Yrkesutbildning med rum för kreativitet och egna intressen Tillämpningsorienterad lyhördhet mot teknikfront och industri Utbildning av programutvecklarproffs Som kan hantverket Fungera i grupp och kommunicera Yrkesmässig attityd

IP Årskurs 1 HT Handhavande av datormiljö, 4hp Imperativ programmering, 6hp Projekt: Egna datormiljön, 6hp Tentaperiod Handh. av datormiljö (forts) OO programmering, 8hp Projekt: OO system, 6hp VT Innovativ prog.varudesign, 6hp Konstruktion av datorspråk, 6hp Projekt: Datorspråk, 6hp Tentaperiod Innovativ prog.varudesign (forts) Algoritm och systemkonstr, 6 hp Projekt: interaktivt system, 6hp Du förväntas......delta i schemalagd undervisning...läsa och arbeta flitigt på egen hand varje dag Gör många egna övningar Läs och experimentera på egen hand Jobba 8-10 timmar...fullfölja kurser på bra sätt PP-tips 35: Finish What You Start Tentaperiod 30 + 30 högskolepoäng (hp) per läsår ca 1,5 hp per arbetsvecka Tentaperiod PP-tips 69: Gently Exceed Your User's Expectations...ha en bra attityd till intensivt arbete och andra människor Kursens syfte (Mål 1) - Teori Att Du lär Dig: Programmera i ett imperativt språk De grundläggande principerna för imperativa språk Att kommunicera om program och programmering Skilja på generella principer och program- och språkspecifika Imperativ programmering så att du enkelt kan byta språk, t ex från Python till C++ Kursens syfte (Mål 2): Hantverk Att Du lär Dig: Hantverket att programmera imperativt Använda programmeringspråket Python (för mindre program) Använda programmeringens grundelement bra Gå från givet problem till en egen lösning (som även andra uppskattar) Genom egen erfarenhet

Kursens syfte (Mål 3): Verktyg Att Du lär Dig: Att utnyttja en generell utvecklingseditor Att du lär dig arbeta med en versionshanterare Genom egen erfarenhet Hur Emacs kan användas på ett avancerat sätt Hur Subversions eller liknande grundläggande funktioner fungerar Arbeta i (Ubuntu) Linuxmiljön under utveckling Examinationsmoment Datortenta, 3hp teorifrågor och individuell problemlösning (+ verktyg) Halvtids-dugga, samla poäng till sluttentan Laborationer, 3hp (muntlig och) skriftlig redovisning 3 obligatoriska seminarier 3 obligatoriska dojos/programmeringsstugor Egna övningar Ett måste för att klara datortentan Tillgodoräknanden-Dugga Ger 3 poäng på tentamen (för betyg 4/5). Kurslitteratur: LP + PL Learning Python, 4th Edition. Mark Lutz O'reilly 2009 Concepts of Programming Languages, 9 th Edition. Robert W Sebesta, Addison Wesley 2009

Vad är en dator? Exempel: PC Vad är ett program? processor med von-neumann-arkitektur samma arbetsminne för data och program Instruktioner Nätverk CD Hård disk Användargränssitt program är en sekvens av instruktioner register för aktuell instruktion och data imperativa högnivåspråk, t ex C, Java, Python programmet består av satser, block och deklarationer register Arbetsminne Processor I/Oenhet exekvering av satser sker sekvensiellt Data hålls med tillståndsvariabler Satser variabler Tre grundbegrepp (Källa: wikipedia) Källkod (eng source code): is any sequence of statements and/or declarations written in some human-readable computer programming language. The source code may be converted into an executable file by a compiler, or executed on the fly from the human readable form with the aid of an interpreter. Interpretator: ett program som exekverar direkt från källkod Kompilator: ett program som översätter från ett format till ett annat, t ex från källkod till exekverbar kod Hur kör man Pythonprogram (Kap 3) Python körs (normalt) via en Python-interpretator Python-interpretatorn har en inbyggd bytekod-kompilator byte-kod är s k intermediär kod Även s k objekt-kod stöds Python-byte-kod exekveras med python virtual machine (PVM) Moderna språk ofta en mix av interpretering/kompilering Källkod Interpretator Bytekodkompilator PVM bytekod

IDLE: standard-ide för Python Olika sätt att exekvera Pythonkod IDE: Integrated Development Environment interaktiv Python via IDLE-skalet Även en editor för programfiler Inbyggd debugger Interaktivt via kommandorad: kommandoskal DOS, IDLE-skal, Linux-skal print-kommandot onödigt; ladda fil möjligt; inga blanka rader Testa kod interaktivt...användbart vid experiment Anropa ett fil myprogram.py från kommandorad % python myprogram.py Linux: #!/usr/bin/python el. bättre #! /usr/bin/env python (utläses hash bang eller shebang-rad på unix-språk) % chmod a+x myprogram.py Generell editor/ide: t ex Emacs och C-c C-c Så hur ser du Pythonkod ut? Med tal: >>> 4 + 3 7 >>> (42-33) / 4 2 >>> (42-33) / 4.5 2.0 >>> (42-33) / 5.3 1.6981132075471699 >>> (42-33) / 5 1 >>> length = 3.6 >>> depth = 4 >>> length * depth 14.4 Med strängar: >>> "What's this?" "What's this?" >>> "What's this?" + ' Not "that"' 'What\'s this? Not"that"' >>> message = "Let the Game Begin" >>> message[8:12] 'Game' >>>"Error %(code)i \... %(msg)s" % \... {'code': 334, 'msg': 'Couldn\'t parse'} "Error 334 Couldn't parse" >>> "test".islower() True >>> "Test".islower() False Vårt första Pythonprogram Filen helloworld.py: #!/usr/bin/env python # -*- coding: utf-8 print "Hej Värld!" raw_input("\ntryck valfri tangent för att avsluta") larde@~:./helloworld.py Hej Värld! Tryck valfri tangent för att avsluta larde@~: Enkla Pythonprogram är som skript dvs kommandon på fil Program = fil = modul Kommando = sats

Programmeringsspråk Maskinspråk är datorns språk. Det är binärkod (1 och 0) Assemblerspråk är mnemoniskt maskinspråk Ex: MOV A,#0FFH Högnivåspråk är utvecklade för att passa programmeraren 1943 Eniac Code 1950 Short Code 1954 FORTRAN 1958 Algol 58,Lisp 1959 COBOL 1963 Algol 68 1964 Basic 1967 Simula 1971 Pascal 1972 C, Prolog,ML 1976 Smalltalk 1977 Bourne Shell 1983 C++, Ad 1987 Perl 1991 Python, VB 1993 Ruby 1994 PHP 1995 Java 2000 C# Principer: syntax och semantik Syntax: formatet på språkets konstruktioner Semantik: betydelsen hos språkets konstruktioner Varje programspråk har sin egen unika syntax Paradigm: språken har en gemensam semantisk kärna men kan variera i olika detaljer I våra kurser: Vi lär oss principerna så kan vi paradigmet Språket som vi väljer är ett exempel...om än valt med omsorg Men då måste vi lära oss se principerna i exemplet Python vs Java en skillnad i syntax... Python: If x == 2 and y == 3 print hej for x in range(7): print x Java: If (x == 2 && y == 3) { System.out.println( hej ); } for (int x=0; x < 7; x++) { System.out.println(x); }...men i många avseenden samma semantik villkor iteration Program in or into a Language Programmers who program "in" a language limit their thoughts to constructs that the language directly supports. If the language tools are primitive, the programmer's thoughts will also be primitive. Programmers who program into a language first decide what thoughts they want to express, and then they determine how to express those thoughts using the tools provided by their specific language. -- Steve McConnell, paraphrasing David Gries, Code Complete

Historien om Python Version 0.9 lanserades 1991 av Guido van Rossum Evolverat ur ABC (jmf Basic) och Modula-3 (jmf Pascal) Python 2.6.2 nuvarande stabila version Öppen källkod (GPL-kompatibel licens) Programming for Everybody Multiparadigm: Imperativt, funktionellt, objekt-orienterat Skriptspråksfamiljen: Perl, Python, Tcl, bash, etc rapid development: bra för nybörjare och proffs Python 3.1.1 nästa utgåva Om språket Python Kraftfullt skriptspråk eng. script = manus, manuskript kommandospråk, dvs används även interaktivt Unix-begrepp: skalfönstrets språk, skalskript Bra för enradare men även större program Klister med bra stöd för filhantering, strängar, operativsystemsanrop Inbäddat i andra språk t ex C och Java Generellt lättanvänt imperativt, objekt-orienterat språk Enkla konstruktioner: typsystem, modulhantering, exkvering Korta program; liten mängd standardbibliotek Hitta rätt attityd Aah! Äntligen semester!! Regel nummer 1: Attityd är allt Programmering - Likt Sherlock Holmes Mord/problem är intressant Sökandet är jobbet Ju svårare desto bättre Ett fall i taget: fokus Välj dina fall med omsorg Klienterna kommer till dig för att det är svårt Varje detalj är viktig Arbeta systematiskt och outtröttligt

Till sist några allmänna råd... Slösa inte med din lånade tid här Sätt upp ditt mål och följ det Ta ansvar för din egen utbildning Var flitig och uthållig Fullfölj - en sak (kurs) i taget Gå din egen väg - låt dig inte distraheras Summering Learning Python, Kap 2-3 Programming Languages, Kap 1, (frivilligt 2), 3.1 Wikipedia: http://en.wikipedia.org/wiki/source_code http://en.wikipedia.org/wiki/compiler http://en.wikipedia.org/wiki/interpreter_%28computer_software%29 Rekommenderade övningar Se övningsmaterialet, föreläsning för föreläsning Även gamla tentauppgiftproblem Labbgrupper Schema Jobba två och två Hitta någon på samma nivå Nybörjare nästan ingen eller ingen erfarenhet av programmering Gjort lite på gymnasiet eller som hobby Tagit någon/några kurs på Högskola/Universitet Skriv upp er i webreg (3 grupper gr1, gr2, gr3) Er webreg grupp är er grupp i schemat Vid schemalagda tillfällen enbart de grupper i schemat. Handledd laboration i schemat innebär assistent på plats Schemat kommer att förändras Imorgon 13-15 utgår Imorogn 15-17 gr3 och gr1 Första veckan Komma igång Registrera i webreg Installera det som behövs Prova emacs/svn Prova på lite python