Programmeringsteknisk översiktskurs (5DV031) Introduktion till kursen
Innehåll Introduktion till kursen Personal, examination, mål Vad är ett program? Lite historia Vad kan ett program vara? Hur gör man när man programmerar? Ett första program
Lärare & handledare Lärare och handledare Thomas Johansson (thomasj@cs.umu.se) Lärare Marie Nordström (marie@cs.umu.se)
MIT-huset, våning 4 Studexp support Thomas Marie
Datorlab MA316 & MA326 (MIT-huset plan 3) Windows 7 MA436 & MA446 (MIT-huset plan 4) Linux (Debian) Reserverade för kursen under laborationspassen se planering Alltid tillgängliga via kort Handledning (Thomas) I Lab eller på kontoret schemalagda tider (se schemat) Via mail i mån av tid
Våra målsättningar Alla ska ha skrivit flera fungerande program. Många ska känna att det är riktigt kul att programmera. Så många som möjligt ska uppfylla kursens mål. Vara öppen för en dialog i lärandesituationen.
Vad säger era utbildningsplaner? För högskoleexamen i medieproduktion vid Umeå universitet skall studenten visa kunskaper om de datorsystem som är gängse inom området. visa förmåga och sådan färdighet som fordras för att kunna hantera moderna datorbaserade system som används inom mediebranschen. http://www.teknat.umu.se/digitalassets/93/ 93493_utbildningsplan-medieproducent.pdf
Vad säger era utbildningsplaner? För högskoleexamen i nät- och kommunikationsteknik vid Umeå universitet skall studenten ha grundläggande kunskaper i teknisk programmering. utvecklat förmågan att arbeta med moderna datorbaserade system http://www.teknat.umu.se/digitalassets/90 /90788_utbildningsplan-nat-och-kommunikation.pdf
Kursplanen Moment 1, teoridel, 3 högskolepoäng Momentet behandlar grunderna i problemlösning med hjälp av datorprogram. I detta ingår en introduktion till hur man stegvis löser problem med hjälp av algoritmer. Vidare presenteras de mest grundläggande byggstenarna i ett programmeringsspråk som gör att algoritmerna kan översättas till program. Stor tonvikt kommer att läggas på programmeringsteknisk färdighet genom praktik. En delmängd av programmeringsspråket C används. Moment 2, färdighetsträning, 4,5 högskolepoäng Momentet utgörs av ett antal obligatoriska uppgifter där teorin från Moment 1 tillämpas. Färdigheter som indentering av kod, kompilering, testning, debuggning och dokumentation tränas.
FSR förväntade studieresultat Efter avslutad kurs ska studenten kunna omvandla givna enkla algoritmer till program i det aktuella programspråket följa givna konventioner för hur program ska skrivas med avseende på indentering och kommentering förklara principerna för och använda sig av variabler, uttryck och kontrollstrukturer i ett högnivåspråk konstruera och använda funktioner för att strukturera ett program använda sig av grundläggande datatyper, arrayer och strängar samt känna till deras begränsningar använda sig av ett felsökningsverktyg skriftligt och muntligt redogöra för utfört arbete med de obligatoriska uppgifterna
Fjolårets kursutvärdering Tyvärr var det bara drygt halva gruppen som svarade på kursvärderingen. Om man räknar med 60 aktiva studenter så blir svarsfrekvensen 63%. Lagom fördelning föreläsningar, labbövningar, gruppövningar Saker tas upp som man ej behöver kunna Mer utförliga OH-bilder Högre tempo/lägre tempo Basera föreläsningarna på boken
Kursmaterial Håkan Strömberg, C Genom ett Nyckelhål, Studentlitteratur, 2007, ISBN 978-91-44-03577-2 Föreläsningsunderlag (finns på webbsidan) http://www.cs.umu.se/kurser/5dv031/ht12/ Diverse material som delas ut under kursen
Institutionen för datavetenskap 2 + 2 + 4 utbildningsprogram Kandidat Datavetenskap, Kognitionsvetenskap Civ Ing Teknisk datavetenskap, Interaktion och design Master Beräkningsteknik, Datavetenskap, Människa-datorinteraktion, Robotik Forskning inom många olika ämnen Teknisk-vetenskapliga o parallella beräkningar Medicinsk informatik Kognitionsvetenskap Flera forskningscentra Programvaruteknik Teoretisk datalogi MDI Robotik
Datorsupport på datavetenskap Slut papper i skrivaren Glömt lösenordet Dator trasig Glappt tangentbord Smutsiga skärmar (rengöringsmedel på plan 4) Skicka mail till support@cs.umu.se (eller ring 786 9950) information om datorns namn, labsal, problem, vem du är Se även http://support.cs.umu.se/
Studentexpeditionen Passerkort Betalning för utskrifter Försäljning av kompendier Utlämning av tentor Utskrift av studieintyg, registreringsintyg... Anmälan till tentamen via webben! Yvonne Löwstedt (studentexp@cs.umu.se, 5598)
Administration av användare Kortaccess Alla som har kort får access automatiskt vid registrering. De som saknar kort vänder sig till studentexpeditionen Personer som inte haft en datoranvändare (xxx@cs.umu.se) på datavetenskap tidigare: Jag har en lapp med ert nya användarnamn och tillfälligt lösenord
Kursens upplägg Föreläsningar (6 st + introduktion) Kommer innehålla teoripresentation och praktiska inslag Lektioner i lab (6 st + datorintro) i 4 grupper Thomas och Marie närvarande, arbete med övningar Gruppövningar (6 st) Genomgång av lablektionen Obligatoriska inlämningsuppgifter
Examination Moment 1, teoridel, 3 hp Vanlig tentamen i skrivsal, 4 timmar Omtenta och uppsamlingstenta i skrivsal Moment 2, färdighetsträning, 4.5 hp 3 obligatoriska uppgifter Läs Hederskodex och Riktlinjer för labgenomförande!
Obligatoriska uppgifter Ordinarie sista redovisningsdag står på varje uppgifts webbsida. Uppgiften bedöms med G, K, O eller U Om en komplettering (K eller O) krävs skall den göras inom fem arbetsdagar. Om man inte är klar med alla OU måste man komplettera vid ett uppsamlingstillfälle (påsk/augusti). Måste göra om alla uppgifter Kan vara nya uppgifter/nya handledare
Obligatoriska uppgifter En uppgift som är 5 minuter sen är för sen. Ansökan om uppskov pga exvis sjukdom ska ske minst en dag före sista inlämningsdag. Kursansvarig bedömer uppskoven. Resultat anslås på kursens hemsida.
Hur kan man lägga upp sina studier? En 7,5 hp kurs motsvarar 200h total studietid för normalstudenten. 5 veckor ger ca 40h/vecka. Delta på undervisningen Läsa boken Övningsuppgifter i lab Göra obligatoriska uppgifter Repetera/ tentaplugga
Hur kan jobbet fördelas? 50h läsa boken (10 min*300 sidor) 15h övrigt tentaplugg 42h schemalagd undervisning (F/L/G) 40h övningsuppgifter 53h kvar till de obligatoriska uppgifterna 15h till OU1 15h till OU2 23h till OU3 PLANERING AV ARBETET VIKTIGT!
Vad är ett program? Lite historia, vad är ett program, hur programmerar man?
Kort historik 1387 kom ordet Abacus en manuell miniräknare Idén mycket äldre!
Kort historik 1600-talet mekaniska miniräknare tex 1642 The Pascaline, räknare som kunde de enklaste räknesätten Blaise Pascal 1623-1662 Bilderna hämtad från http://en.wikipedia.org/wiki/pascaline och http://en.wikipedia.org/wiki/blaise_pascal
Ada Lovelace 1815-1852 Kort historik Charles Babbage 1791-1871 1822 The Difference Engine av Charles Babbage den första datorn som hade minne, processor, in- och utenheter samt program (i form av hålkort!) Ada Augusta King var den som skrev ned Charles Babbages arbete och brukar räknas som den första programmeraren Bilderna hämtad från http://en.wikipedia.org/wiki/babbage och http://en.wikipedia.org/wiki/ada_lovelace
Kort historik 1946: ENIAC en av de första elektroniska datorerna 17 468 vacuum tubes, 7,200 crystal diodes, 1,500 relays, 70,000 resistors, 10,000 capacitors and around 5 million hand-soldered joints. It weighed 30 short tons (27 t), 2.6 m by 0.9 m by 26 m, took up 63 m² Consumed 150 kw of power. ENIAC's main control panel http://en.wikipedia.org/wiki/eniac
Kort historik 1977, den första persondatorn Apple I Första datorn som använde sig av ett tangentbord. http://en.wikipedia.org/wiki/apple_i Steve Wozniak 1950- Steve Jobs 1955-2011
Kort historik 80-talet kom nya Macintosh-datorer och IBM-PC började också bli populär Bilderna från wikipedias texter om macintosh, ibm-pc, zx spectrum och amiga
Program Operativsystem Ordbehandlare Webbläsare MP3- spelaren i mobilen...
En liten dator Ett chip 7.5 x 7.5 mm Inte så mycket mer! Programmerad i C!
Vad är programmering? Olika betydelser: Modellera ett beteende Del av problemlösningsarbete Instruktioner till maskinen Skriva program i programspråk
Vad är ett datorprogram? Instruktioner som talar om hur ett problem ska lösas. Programspråk Maskinkod eller lågnivåspråk Lätt att förstå för datorn. (har varit) Lämpligt för maskinnära tillämpningar. Kan ge snabbare exekvering (körning). Högninvåspråk Lätt att förstå för människan. Måste oftast kompileras till maskinkod för att datorn ska kunna köra programmet. Lämpligt för mer komplicerade algoritmer
Programspråk, syntax och semantik Ett programspråk specificerar ord och symboler som får användas för att skriva program regler som bestämmer hur ord och symboler får sättas ihop Syntaxen (satslära) hur giltiga programstrukturer (satser) måste se ut Semantiken (betydelselära) vad olika satser exakt betyder (dvs hur datorn ska tolka programmen)
Kan en dator lösa alla typer av problem? Problemet måste gå att beskriva för datorn. Man måste kunna skriva en algoritm. Vissa problem kan inte lösas inom ändlig tid. Satser som varken kan bevisas eller motbevisas Vissa problem kan inte lösas exakt. Numeriska problem
Hur löser man problem med hjälp av en dator? Förstå problemet Problemspecifikation Problemlösning Utveckla en algoritm Skriva kod Implementera algoritmen Testa och debugga programmet Dokumentera och underhålla programmet
C ett imperativt programspråk Utvecklat 1972 Dennis Ritchie (AT & T Bell Labs) Hand i hand med Unix (Ken Thompson) Standardiserat (ANSI C -89, ISO -90, 95, -99) Ken Thompson 1943- (vänster) Dennis Ritchie 1941-2011 (höger) http://en.wikipedia.org/wiki/dennis_ritchie
C ett imperativt programspråk Hantverksmetafor, man har ett (passivt) objekt som bearbetas steg för steg tills man nått målet. Passar extra bra till problem som kan lösas med hjälp av en steg-för-steg algoritm. Samma algoritm kan appliceras på många olika mängder av data. Fördelar Produderar program som går snabbt att köra och som använder systemresurser effektivt. Nackdelar Passar inte så bra till ostrukturerade problem och komplexa algoritmer Tvingar programmeraren att se problem/problemlösning som en sekvens av steg
Kompilatorn Code::Blocks Header.h Rutinbibliotek Källkod.c Objektfil.obj Körbar.exe Code::Blocks tar hand om allt - nästan
Ett exempel Skriv in ett tal: 12 Ett till: 23 Summan blir = 35
Vad vill vi göra? Skriv ut lite text på skärmen Skriv in ett tal: Läs ett värde från tangentbordet och spara i en variabel. Skriv ut lite mer text på skärmen Ett till: Läs in ett värde till en annan variabel Summera de två talen i en tredje variabel Skriv ut text och summan Summan blir =
Källkod #include <stdio.h> #include <stdlib.h> int main(void){ int a,b,c; printf("skriv in ett tal: "); scanf("%d",&a); printf("ett till: "); scanf("%d",&b); c = a + b; printf("summan blir = %d\n",c); } system("pause"); return 0;
Detaljerna Rader som börjar med # Hanteras av preprocessorn <filnamn> filen finns på det vanliga stället filnamn söker först lokalt #include gör en kopia av filen och lägg in här stdio.h hanterar standard in- och utmatning av text stdlib.h behövs för att raden system( pause ); ska fungera
Detaljerna int main(void) Funktionsdefinition Alla program har en main { } Omger funktionsdefinitionen (begin-end) Grupperar satser, ett block Strängkonstant, en följd av karaktärer inom dubbelsnuttar \n specialtecken för ny rad return 0; I funktionshuvudet har vi sagt att funktionen skall returnera ett heltal
Ett program Är en textfil med källkod Notera att filnamnet ska sluta på.c Innehåller funktionen main int main(void){ } deklaration av variabler int a,b,c; Kommunikation - anrop av funktioner printf, scanf Beräkningar c = a + b;