Att komma igång Föreläsning 1
Att komma igång Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera Variabler printf scanf
Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator eller annan hårdvara (mobil, dammsugare, brödrost, miniräknare) Ett strukturerat generellt sätt att lösa problem
Hur lär man sig att programmera? Övning övning övning programmering är ett hantverk! Det är helt avgörande att ni jobbar med uppgifterna som hör till varje föreläsning direkt. Endast föreläsningen ger ingenting! Gör allt ni kan för att hålla er i fas. Ni får/bör hjälpa varandra men aldrig kopiera kod. Du måste förstå vad du programmerar vad varje rad gör! För att lära dig programmera (och för att hitta fel) måste du kunna läsa koden såsom en dator (kompilator) läser koden.
Vad har du lärt dig när kursen är klar? C Programmering Problemlösning
Boken! Ni behöver läsa boken både för att lära er sånt vi inte hinner på föreläsningen och för att lära er att lära från en bok. Har ni använt boken aktivt under kursen kommer den senare vara en följeslagare genom er programmeringskarriär som ni kan gå tillbaka till igen och igen både för att repetera och för att lära er nytt. Det är dessutom boken ni får ha med er på den praktiska tentamen. Hittar ni i boken är den då ett mycket bra stöd.
Kurs - PM Genomgång
Vad är ett program? En processor kan endast utföra extremt enkla operationer såsom: flytta ett tal i minnet till en annan plats, lägga ihop ett tal med ett annat tal, dela ett tal med två osv. Ett program som processorn kör måste därför bestå av sådana enkla instruktioner. Dessutom finns hoppinstruktioner som gör att den kan köra om sekvenser av koden (oftast efter att ha bytt plats på talen i minnet). Förutom vid hoppinstruktioner utför processorn instruktionerna i ordning en efter en. - ett sådant enkelt program som processorn kan förstå sägs vara i maskinkod Oftast vill man själv inte programmera i maskinkod då det blir extremt arbetsamt att få datorn att göra något användbart. Istället programmerar vi i något högnivåspråk, t.ex C. Denna kod kallas källkod (C-kod). Denna kompileras sedan av en kompilator (ett program) till maskinkod ett program som processorn kan förstå. Filen som vi då får kallas för exekverbar eller körbar.
Kompilerande-Interpreterande Det ovan beskrivna sättet att arbeta beskriver hur man arbetar med kompilerande språk. Ex. C, C++, Fortran I interpreterande språk kompileras inte koden i förväg. Istället låter vi ett program översätta åt processorn varje gång vi kör koden. Dessa program kallas interpreterande. Ex. Basic, Lisp Samma språk kan ha båda möjligheterna. (Java är ett mellanting)
Programmeringsmiljö För att kunna programmera behöver vi editor för att skriva vår kod kompilator kompilerar vår kod till ett körbart program Kompilatorn består ofta av flera program (preprocessor, kompilator, länkare) som skapar vårt körbara program i flera steg. Alla program man använder för att programmera (oftast fler än ovan, tex debugger) utgör ens programmeringsmiljö. Det är helt avgörande för er framgång på kursen att ni redan idag får igång en sådan på er dator. Förhoppningsvis har ni gjort detta på introkursen men annars se till att ni inte går härifrån förrän ni lyckats. Gå in på introkursen HF0010 (länk finns på kth-social) och följ instruktionen i föreläsning 3. Kom ihåg att installera Codeblocks med mingw inkluderad.
Hello World! Är ett litet program som gör minsta möjliga för att testa att man har en fungerande programmeringsmiljö och att man förstår hur man använder den: #include <stdio.h> int main(void) { printf("hello World! \n"); return 0; } Ett litet första steg mot fantastiska program! Börja alltid med detta i en ny miljö och backa alltid hit om du har problem.
Codeblocks Välj File->New->Empty file Välj File->Save file as Spara filen som hello.c i en katalog på hårddisken där du vill ha dina program. Kom ihåg att göra back-up-er på denna katalog! Filen kan heta vad den vill men namnet får endast innehålla bokstäver och siffror och inte mellanslag, å, ä eller ö. Skriv i texten från föregående bild och spara. Om du kopierar kan du få med konstiga tecken. T.ex kan bli felaktiga. Välj Build->Build Det har nu skapats en fil hello.o (objektsfil) och en fil hello.exe (körbar fil) Välj Build->Run Kommandotolken öppnas och programmet körs. Du kan också köra programmet genom att dubbelklicka på det i utforskaren (kommandotolken stängs dock direkt programmet har kört klart) eller genom att öppna kommandotolken och gå till rätt katalog och där köra kommandot hello.exe. OBS stäng aldrig ner kommandotolken med X utan tryck return. Har programmet hängt sig kan du prova ctrl-c. Gäller särskilt på tentamen!
Kommandotolken Om man inte vill använda Codeblocks för att köra gcc (eller mingw som den heter för windows) så behöver man sätta path-variabeln så att den har en pekare till kompilatorn och andra gcc-exe-filer. Exakt hur man gör detta varierar mellan windowsversioner. Om ni gör detta var försiktiga så att ni endast lägger till en path och inte tar bort något. Har man gjort detta kan man köra programmen i kommandotolken: C:\>cd CProgram C:\CProgram>gcc Hello.c -o Hello.exe C:\CProgram>Hello.exe Hello World! Detta är dock inte prioriterat just nu utan det är viktigare att ni kommer igång med att programmera!
Ett enkelt program /* Calculation of distance when travelling at speed 25 m/s */ #include <stdio.h> int main(void) { int distance,speed,time; speed = 25; printf("hur lang tid? "); scanf("%d", &time); Hur programmerar man? skriv en rad kompilera provkör osv Hur läser man ett program? Som en kompilator rad efter rad Vad gör varje tecken? Allt betyder något Målet är att förstå allt ibland får ni nu i början nöja er med att acceptera Kompilatorn är extremt kinkig ha tålamod kompileringsfel är enkla att fixa! distance = speed * time; } printf("med 25 m/s kommer du att fardas %d m.\n",distance); printf("lycka till pa farden\n"); return 0; Observera indentering! -tabbningen
Variabler Måste deklareras innan de används: int i; float x,z; //int blir variabelns datatyp dvs heltal //-decimaltal Ges ett värde med tilldelning = (ej lika med!) i=4; x=3.4; Kan sedan användas i uttryck: z= i*x+2; Ska normalt ges så beskrivande namn som möjligt. Får ej börja med siffra, innehålla mellanslag eller reserverade ord: numberof, weight1, weigtht2, nrofcars, nrof_cars
Resistorer #include <stdio.h> int main(void) { float r1,r2,r3; printf("resistans hos R1 (ohm) : "); scanf("%f",&r1); printf("resistans hos R2 (ohm) : "); scanf("%f",&r2); r3=r1*r2/(r1+r2); printf("r3 beraknas till %6.3f ohm\n",r3); return 0; }
Funktionen printf(string, ) Ex: printf( antal: %d, vikt %f,numberof,weight); Omvandlingsspecifikationer: %m.px (alt %-m.px för vänsterjusterat) m p minsta antalet platser utskriften blir (större vid behov) -valfri antalet decimaler -valfri X d betyder heltal e betyder decimaltal i grundpotensform f betyder decimaltal Escape sequences: \n ny rad \t tabb \
Exempel printf #include <stdio.h> int main(void) { int numberof=6; float weight=3.2f; //f förtydligar att det är float printf("antal: %d, vikt: %f\n", numberof, weight); float angle = 12.3456f; printf("vinkeln:%8.2f radianer\n",angle); } return 0; utskrift: Antal: 6, vikt: 3.200000 Vinkeln: 12.35 radianer
Funktionen scanf(string, ) Ex: scanf("%d%f", &numberof, &weight); -låter oss läsa in ett heltal till variabeln numberof och ett decimaltal till variabeln weight från användaren. Om användaren matar in: 4 3.7 <enter> får antal värdet 4 och vikten värdet 3.7 &-tecknet före variabelnamnet kallas adress-operatorn och gör att vi skickar minnesadressen istället för värdet till scanf. scanf behöver ju veta var den ska stoppa data! Viktigt!
Exempel scanf #include <stdio.h> int main(void) { int dividend,divisor; printf("kvot:"); scanf("%d / %d",÷nd,&divisor); printf("%d/%d=%d\n", dividend, divisor, dividend/divisor); } return 0; Kvot:7/3 7/3=2