CS - Computer science. Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008)



Relevanta dokument
Datastrukturer och algoritmer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

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

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

JAVAUTVECKLING LEKTION 4

Algoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T

Imperativ programmering. Föreläsning 2

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

Datastrukturer och algoritmer

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

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

Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert Problemexempel 1

COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall

Föreläsning 5: Dynamisk programmering

Algoritmer och interaktiv Python

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

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

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Några svar till TDDC70/91 Datastrukturer och algoritmer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Uppgift 1 (grundläggande konstruktioner)

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

Program & programmering

TDIU01 - Programmering i C++, grundkurs

Turingmaskinen - en abstrakt datormodell

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

JavaScript del 3 If, Operatorer och Confirm

Klassdeklaration. Metoddeklaration. Parameteröverföring

Fortsättningskurs i programmering F 3. Algoritmer i programutveckling II Hugo Quisbert Flödesplaner med selektion

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

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

Grundläggande datalogi - Övning 1

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

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

Prova på-laboration i Ada

Scanner Detektor lärarhandledning Mojäng

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Föreläsning 6: Introduktion av listor

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

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Exempel på ett litet Ada-program

Föreläsning 2 Programmeringsteknik och C DD1316

Föreläsning 5 Innehåll

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

Föreläsning 2. Operativsystem och programmering

Dagens föreläsning Programmering i Lisp Fö 5

Programmering A. Johan Eliasson

Grunderna i stegkodsprogrammering

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

Sanningar om programmering

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Tentamen Grundläggande programmering

PROGRAMMERING ÅK 9 INTRODUKTION

Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

KOMPLETTERANDE HEMTENTAMEN TDDB53

Calculate check digits according to the modulus-11 method

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

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?

Logik och kontrollstrukturer

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

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Algoritmer, datastrukturer och komplexitet

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

Föreläsning 1. Introduktion. Vad är en algoritm?

Klassrumsprojekt programmering - Digitalt lärande

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Föreläsning 8: Aritmetik och stora heltal

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

Arduinokurs. Kurstillfälle 4

TDDC74 Programmering, abstraktion och modellering DUGGA 1

Hur implementera algoritmerna på maskinnivå - datorns byggstenar

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Föreläsning 3. Iteration while-satsen

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Iteration while-satsen

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00

Föreläsning 3 Programmeringsteknik och Matlab DD1315. Importering av moduler. randrange

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

Sökning och sortering

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

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Föreläsning 1 & 2 INTRODUKTION

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

Visual Basic, en snabbgenomgång

OOP Objekt-orienterad programmering

Deklarativ programmering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Programmeringsteknik I

Inledande programmering med C# (1DV402) Summera med while"-satsen

Deklarativ programmering

Styrteknik: Binära tal, talsystem och koder D3:1

DD1361 Programmeringsparadigm. Carina Edlund

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

7 GRUNDERNA I PROGRAMMERING

Transkript:

CS - Computer science Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008) Vad datateknik INTE är: Att studera datorer Att studera hur man skriver datorprogram Att studera hur man använder datorer och datorprogram Programmering, GK /C 1

Vad datateknik ÄR... Studiet av algoritmer, inklusive deras formella och matematiska egenskaper implementering på maskinnivå implementering på programnivå tillämpningar Vad är en algoritm? Def.: En algoritm är en procedur för att lösa ett matematiskt problem i ett ändligt antal steg, vilket ofta innebär upprepning av en operation; allmänt: en steg-för-steg-metod för att genomföra någon uppgift. Def.: En algoritm är en välordnad följd av entydiga och beräkningsbara (computable) operationer vilka när de exekveras producerar ett resultat och stannar inom en ändlig tidsrymd. Programmering, GK /C 2

Tre huvudkategorier av operationer: 1) Sekventiella (primitiva operationer efter varann) 2) Villkorliga (val, selektion) 3) Iterativa (upprepning, repetition) Abu Ja far Muhammad ibn-musa Al-Khowarizmi (780-850) Algorismus Lärare vid matematiska institutionen i Baghdad Kitab al jabr w al muqabala, Rules of Restoration and Reduction (algebra) algoritmer Programmering, GK /C 3

Exempel: att addera två m-siffriga tal En grov algoritm (en idé om vad som ska göras): 1. Skriv talen under varandra 2. Börja från höger, arbeta mot vänster 3. Så länge det finns sifferpar, gör följande: 3.1. Addera ihop sifferparet 3.2. Om summan < 10, skriv det under strecket, annars skriv där summa - 10 och addera 1 till följande par 3.3 Ta nästa par till vänster 4. Om det finns en 1 som väntar på att adderas till följande par, skriv det under strecket. 5. Slut 1 (1)1 1 ex. 321 321 321 + 437 + 193 + 999 --------- --------- -------- 758 514 1320 Programmering, GK /C 4

En detaljerad algoritm (hur man gör): Givet: m 1 och två positiva heltal bestående av m siffror, a1a2...am och b1b2...bm Önskat: c0c1c2...cm, där Algoritm: c0c1c2...cm = a1a2...am + b1b2...bm 1. Låt carry = 0 2. Låt i = m 3. Repetera tills i = 0: 3.1. Låt ci = ai + bi + carry 3.2. Om ci 10 så låt ci = ci - 10 och låt carry = 1 annars låt carry = 0 3.3. Låt i = i - 1 {vi går ett steg åt vänster} 4. Låt c0 = carry 5. Skriv ut svaret c0c1c2...cm 6. Slut Programmering, GK /C 5

Algoritmen i lite annat format: 1. carry 0 2. i m 3. Repetera tills i = 0: 3.1. ci ai + bi + carry 3.2. Om ci 10 så ci ci - 10 och carry 1 annars carry 0 3.3. i i - 1 {vi går ett steg åt vänster} 4. c0 carry 5. Skriv ut svaret c0c1c2...cm 6. Slut Man kan också använda löpande numrering av stegen i stället för undre indexering:... 3. Repetera stegen 4 till 6 tills i = 0 4. ci ai + bi + carry 5. Om ci 10 så ci ci - 10 och carry 1 annars carry 0 6. i i - 1 {vi går ett steg åt vänster}... Programmering, GK /C 6

a1 a2 a3 321 + 437 b1 b2 b3 --------- 0758 c0 c1 c2 c3 Carry är här genomgående 0; vi lämnar ju normalt den ute. 0 1 0 0 a1 a2 a3 ai bi carry 321 1 + 3 + 0 = 4, carry 0 + 193 2 + 9 + 0 = 11, 1 ned, carry 1 b1 b2 b3 3 + 1 + 1 = 5, carry 0 --------- 0514 c0 c1 c2 c3 Programmering, GK /C 7

Olika sätt att representera algoritmer: 1) Naturliga språk (engelska, svenska, finska, japanska,...): Initially, set the value of the variable carry to 0 and the value of the variable i to m. When these initializations have been completed, begin looping until the value of the variable i becomes exactly 0. First, add together the values of the two digits ai and bi and the current value of carry to get the result called ci. Now check the value of ci to see if it is greater than or equal to 10... Vad är problemet med en dylik beskrivning? 2) Olika programmeringsspråk (kod):... BEGIN ReadLn(m); FOR i := 1 TO m DO ReadLn(a[i], b[i]); carry := 0; i := m; WHILE i >0 DO BEGIN c[i] := a[i] + b[i] + carry; IF c[i] >= 10 THEN BEGIN c[i] := c[i] - 10; carry := 1 END ELSE carry := 0;... Vad är problemet med en dylik beskrivning? Programmering, GK /C 8

3) Pseudokod Våra exempelalgoritmer är skrivna på pseudokod Personliga variationer Kombinerar naturligt språk med matematisk standardnotation Rekommenderas varmt!!! Exempel på enkla algoritmer, med de olika grundkonstruktionerna sekvens, selektion, iteration: Hur många km/l i medeltal kör jag? * primitiva operationer i sekvens bensin.c 1. Läs in antalliter, kmstart, kmslut 2. färd kmslut - kmstart 3. kmperliter färd / antalliter 4. Skriv ut kmperliter 5. Slut Programmering, GK /C 9

* Samma med selektion/val: bensin2.c 1. Läs in antalliter, kmstart, kmslut 2. färd kmslut - kmstart 3. kmperliter färd / antalliter 4. Skriv ut kmperliter 5. Om kmperliter > 10 så skriv ut Bra... annars skriv ut Detta blir dyrt, dags för en ny bil? 6. Slut * Samma med iteration/repetition/upprepning: bensin3.c 1. Läs in svar 2. Repetera 3 till 9 tills svar = nej : 3. Läs in antalliter, kmstart, kmslut 4. färd kmslut - kmstart 5. kmperliter färd / antalliter 6. Skriv ut kmperliter 7. Om kmperliter > 10 så skriv ut Bra... annars skriv ut Detta blir dyrt, dags för en ny bil? 8. Skriv ut Ska vi ta detta om? ja eller nej? 9. Läs in svar 10. Slut Programmering, GK /C 10

Vad händer om du skriver in som svar ja jooo... nej Nej Nej! NEJ! STOP!!!! SLUTA!!! &%&%% %!!!! Fundera på följande alternativ - vilka två fungerar lika? ÅA vill skicka olika sorts informationsbrev till alla ÅA-människor. Idén är den att personal ska få personalbrev och de studerande studentbrev. Hans Hackare har tre olika förslag på selektionssatser: Programmering, GK /C 11

1) IF x tillhör personal THEN skicka personalbrev ELSE skicka studentbrev 2) IF x tillhör studentkåren THEN skicka studentbrev ELSE skicka personalbrev 3) IF x tillhör studentkåren THEN skicka studentbrev. IF x tillhör personal THEN skicka personalbrev Uteslutar villkoren varandra, eller överlappar fallen? Om de uteslutar varandra till 100% kan du använda IF-THEN-ELSE. Annars måste du ha flera IF-satser efter varandra. personal studerande eller Har man säkert beaktat alla fallen? VAD ÄR VERKLIGHETEN MAN VILL BESKRIVA? Den avgör valet av konstruktion. Programmering, GK /C 12

Olika repetitionssatser: 1) Bestämt antal repetitioner - Repetera 10 gånger - Repetera antal gånger (antal måste vara känt när man kommer till satsen) 2) Obestämt antal repetitioner - Repetera så länge ett villkor gäller - Repetera tills ett villkor blir sant - Repetera evigt (tills man hoppar ur loopen med något exit-kommando) Programmering, GK /C 13