180 likes | 306 Views
A tt komma igång. Föreläsning1. Att komma igång. Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler p rintf scanf. Boken!.
E N D
Att komma igång Föreläsning1
Att komma igång • Boken?!?! • Vad är ett program? • Kompilerande-Interpreterande • Programmeringsmiljö • Hello World! • Att programmera och ett enkelt program • Variabler • printf • scanf
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.
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 (objektkod) 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 ett eller flera program på vår dator. Dessa kallas vår programmeringsmiljö. • Till att börja med är det bäst att använda enklast tänkbara miljö för att verkligen förstå vad man gör. Vi ska använda en miljö som heter gcc . Denna innehåller kompilator (och en del andra program såsom länkare) men ingen editor. För att skriva in kod kan man använda vilken texteditor som helst (kod är vanlig text tills den kompileras). Vi rekommenderar att ni använder emacs eller Codeblocks. gcckörs i ett terminalfönster så det blir också en del av vår programmeringsmiljö. • Senare, kanske redan under denna kurs, när man börjar förstå hur saker hänger ihop kan det vara smidigare att använda Codeblocks också för att skapa och exekvera program eller kanske väljer ni en annan miljö såsom Eclipse. • För att ni ska ha exakt samma och en väl fungerande programmeringsmiljö använder vi virtual box för att köra en färdigkonfigurerad linuxmiljö. • Senare bör ni också sätta upp en egen programmeringsmiljö på era datorer.
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> intmain(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.
Shell (bash) me@newtinydebian:~$ mkdir program me@newtinydebian:~$ cd program me@newtinydebian:~/program$ emacs hello.c & [3] 1949 me@newtinydebian:~/program$ ls hello.c me@newtinydebian:~/program$ gcchello.c -o hello me@newtinydebian:~/program$ ls hello hello.c me@newtinydebian:~/program$ ./hello Hello World! me@newtinydebian:~/program$ cd .. -gå upp cd -gå hem cd / -gå till root http://dl.dropbox.com/u/397277/bash_shell_cheat_sheetV2.pdf
Ett enkelt program /* Beräkning av sträckan om man färdas med hastigheten 25 m/s */ #include <stdio.h> intmain(void) { intstracka,hastighet,tid; hastighet = 25; printf("Hur lång tid? "); scanf("%d", &tid); stracka = hastighet * tid; printf("Med 25 m/s kommer du att färdas %d m.\n",stracka); printf("Lycka till på färden\n"); return 0; } • 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! • Observera indentering! -tabbningen
Ett enkelt program /* Beräkning av sträckan om man färdas med hastigheten 25 m/s */ #include <stdio.h> intmain(void) { intstracka,hastighet,tid; hastighet = 25; printf("Hur lång tid? "); scanf("%d", &tid); stracka = hastighet * tid; printf("Med 25 m/s kommer du att färdas %d m.\n", stracka); printf("Lycka till på färden\n"); return 0; } Terminal(shell): me@newtinydebian:~$ emacs enkeltP.c & [1] 1921 me@newtinydebian:~$ gccenkeltP.c -o enkeltP me@newtinydebian:~$ ./enkeltP Hur lang tid fardas du? 10 Med 25 m/s kommer du att fardas 250 m. Lycka till pafarden me@newtinydebian:~$
Variabler • Måste deklareras innan de används:int i, j, k; //heltalfloat x,y,z; //decimaltal • Ges ett värde med tilldelning = (ej lika med!)i=4;x=3.4f; • Kan sedan användas i uttryck:z= i*x+2; • Ska normalt ges så beskrivande namn som möjligtEx: antal, vikt1, vikt2, antalBollar, antal_bollarFår ej börja med siffra! Reserverade ord får ej användas!
Resistorer #include <stdio.h> intmain(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 beräknas 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 (g – decimaltal grundpotens eller ej beroende på storlek) Escapesequences: \n– ny rad \t – tabb\”
Exempel printf #include <stdio.h> intmain(void) { int antal=6; float vikt=3.2f; //använd gärna f när du skriver en float printf("Antal: %d, väger: %f\n", antal, vikt); float vinkel = 12.3456f; printf("Vinkeln:%8.2f radianer\n",vinkel); return 0; } utskrift: Antal: 6, väger: 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> intmain(void) { intt,n; printf("Bråk:"); scanf("%d / %d",&t,&n); printf("%d/%d\n",t,n); return 0; } utskrift: Bråk:2/3 2/3
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 2Speciellt 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) • Gör gärna fler uppgifter om du hinner! E-excercises, P-programmingprojects