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 gått HF1010 och där satt upp en sådan på er dator annars kan ni följa länken för att få hjälp med detta. Vi ska i denna kurs använda en miljö som heter gcc. Den innehåller alla program man behöver förutom en texteditor. Som texteditor kan man använda vilken enkel texteditor som helst. Programmeringskod är bara text till dess att den kompileras. Dock bör man undvika avancerade ordprocessorer såsom word eller wordpad som lägger till styrtecken till texten. Mitt förslag är att vi i kursen använder editorn Codeblocks. Den har speciellt stöd för att editera C-kod och den erbjuder möjligheten att köra kompilatorn och vår kod direkt i editorn. Har ni inte installerat Codeblocks tidigare så gör det nu: välj versionen med mingw på sidan: http://www.codeblocks.org/downloads/26. Förutom att direkt installera en programmeringsmiljö finns alternativet att köra en virtuell dator med programmeringsmiljön installerad. Detta kan vara ett alternativ om ni initialt har problem med att installera miljön lokalt på er dator. Mer om detta kan ni läsa på HF1010.
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.
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 /* Beräkning av sträckan om man färdas med hastigheten 25 m/s */ #include <stdio.h> int main(void) { int stracka,hastighet,tid; hastighet = 25; printf("hur lang tid? "); scanf("%d", &tid); 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! stracka = hastighet * tid; } printf("med 25 m/s kommer du att fardas %d m.\n",stracka); 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! och reserverade ord får ej användas: antal, vikt1, vikt2, antalbollar, antal_bollar
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,antal,vikt); Omvandlingsspecifikationer: %m.px (alt %-m.px) m minsta antalet platser utskriften blir (större vid behov) -valfri p antalet decimaler -valfri X d heltal e decimaltal i grundpotensform f decimaltal Escape sequences: \n ny rad \t tabb \
Exempel printf #include <stdio.h> int main(void) { int antal=6; float vikt=3.2f; //använd gärna f när du skriver en float printf("antal: %d, vikt: %f\n", antal, vikt); float vinkel = 12.3456f; printf("vinkeln:%8.2f radianer\n",vinkel); } return 0; utskrift: Antal: 6, vikt: 3.200000 Vinkeln: 12.35 radianer
Funktionen scanf(string, ) Ex: scanf("%d%f", &antal, &vikt); -låter oss läsa in ett heltal till variabeln antal och ett decimaltal till variabeln vikt 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 t,n; printf("kvot:"); scanf("%d / %d",&t,&n); printf("%d/%d=%d\n",t,n,t/n); } return 0; Kvot:7/3 7/3=2
Studieanvisningar F1 Kompilera och kör ett helloworld-program (K2 E1,s33) Kompilera och kör enkelt program och resistorer från föreläsningen. Pröva att modifiera och experimentera med koden LEK! Frivilligt: Skumma snabbt igenom kapitel 1. Läs igenom kapitel 2 Speciellt 2.6 som vi inte pratat om men ni ska kunna! Gör K2 P1, P2, P3 (sid 33-34) Läs igenom kapitel 3, fastna inte på detaljer, har du sett dem nu hittar du tillbaka när du behöver dem Gör K3 E1, P1, P6 (sid 49-51)Observera att boken ibland inte tänkt sig att man ska programmera excercises men det är ändå oftast bästa sättet att göra dessa. Svara på instuderingsuppgifter. K2 King (läroboken) kapitel 2 E excercises, näst sist i varje kapitel P - programming projects, sist i varje kapitel