Föreläsning1
•
•
•
•
•
•
•
•
•
Boken?!?!
Vad är ett program?
Kompilerande-Interpreterande
Programmeringsmiljö (shell eller CODEBLOCKS)
Hello World!
Att programmera och ett enkelt program
Variabler
printf
scanf
• 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.
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.
• 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)
• 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. gcc kö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.
• Ä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.
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$ gcc hello.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
Man skriver i editorn efter att ha gjort punkt 2 nedan.
1.Man kompilerar och kör med knappen F9 (efter att ha
markerat editor)
2. Meny: Öppnar filer med FILE->open, eller FILE-new-empty
3. Meny: Sparar filer med FILE->SAVE as
4. Tar bort körningsfönstret med godtyckligt knapptryck
Mer än så behöver man inte använda i Codeblocks med denna
minirepertoar. Man får alltid ett nytt körningsfönster efter F9.
/* 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 lång tid? ");
scanf("%d", &tid);
stracka
= hastighet * 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!
printf("Med 25 m/s kommer du att färdas %d m.\n",stracka);
printf("Lycka till på färden\n");
return 0;
}
•Observera indentering! -tabbningen
/* Beräkning av sträckan om man färdas med hastigheten 25 m/s */
#include <stdio.h>
Terminal(shell):
me@newtinydebian:~$ emacs enkeltP.c &
int main(void)
[1] 1921
{
me@newtinydebian:~$ gcc enkeltP.c -o enkeltP
int stracka,hastighet,tid;
me@newtinydebian:~$ ./enkeltP
hastighet = 25;
Hur lang tid fardas du? 10
Med 25 m/s kommer du att fardas 250 m.
printf("Hur lång tid? ");
Lycka till pa farden
scanf("%d", &tid);
me@newtinydebian:~$
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;
}
• Måste deklareras innan de används:
int i, j, k;
//heltal
float x,y,z;
//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
Ex: antal, vikt1, vikt2, antalBollar, antal_bollar
Får ej börja med siffra! Reserverade ord får ej användas!
#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 beräknas till %6.3f ohm\n",r3);
return 0;
}
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
\”
#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, 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
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!
#include <stdio.h>
int main(void)
{
int t,n;
printf("Bråk:");
scanf("%d / %d",&t,&n);
printf("%d/%d\n",t,n);
return 0;
}
utskrift:
Bråk:2/3
2/3
• 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)
• Gör gärna fler uppgifter om du hinner!
E-excercises, P-programming projects