En kort text om programmering i C C skapades 1972 av Brian Ritchie och Dennis Kerighan på Bell Labs i USA Det blev det språk som är mest använt genom tiderna Det finns många olika språk Pascal, FORTH, BASIC, C++, Algol, Fortran, Lisp är några av dem C skapades för att skriva en ny version av OperativSystemet UNIX Vad ett OS är kommer vi att gå igenom senare I denna text ska vi focusera på själva koden (Bild:https://uploadwikimediaorg/wikipedia/commons/3/39/C_Hello_World_Programpng) Om vi kopierar en bild från Wikipedia och ser vilken kod de har som exempel, så är det just Hello World! från boken C Från första utgåvan blev detta exempelprogram det förmodligen mest skriva i världen /* betyder att vi lägger in en kommentar i koden Allt mellan /* till tittar inte compilern på // är också ett sätt att kommentera men bara radvis Låt oss se vad HelloWorldc gör: #include <stdioh> // # är ingen hashtag i detta fall /* Denna säger åt compilern (programmet som sätter ihop det ni skrivit till något användbart för datorn) att hämta filen stdioh stdioh betyder StandardInputOutputHeader ioctlh betyder InputOutputConTroLHeader (Här ser ni även hur kamelnotation fungerar) stdioh innehåller en massa information som compilern behöver känna till för att göra en vettig binär fil void tuva(int); /* här inför vi en deklaration som är nödvändig för att kunna göra en egen
funktion Void betyder att funktionen tuva() inte har 'return 0;' på slutet int står för integer heltal, och visar vad vi skickar till tuva int main() // huvudfunktionen själva programmet //öppen fiskmås Alla funktioner måste börja med en och sluta med en tuva(100); /* Här ropar vi på tuva() och ger henne 100 Programmet hoppar då vidare till funktionen tuva() med värdet 100 och så får vi se vad den gör där // main() avslutas med 'return 0; i det här fallet När jag var liten gick det att 'voida' main() och strunta i return // stänger main() tuva(int k) // berättar att tuva() använder 100 som ett heltal i variabeln k int i; // berättar att i är ett heltal INTeger for(i=0;i<k;i++) /* for(start; villkor; vad vi gör efter starten) så vi sätter en startpunkt, ofta noll, men kan vara ett annat värde som behövs vid tillfället Villkor kontrollerar ifall vi ska sluta med det vi håller på med i++ i detta fallet ökar vi i med 1 för varje varv i loopen En sådan funktion som for() kallas för loop, för den går runt samma avsnitt många gånger for(;;) är en evighetsmaskin;) printf( %d\n,i); /* printf() en funktion med massor med möjligheter Se boken C, eller tutorialspointcom \n betyder ny rad %d betyder skriv ut ett heltal i efter säger var vi hittar heltalet // stänger tuva() Istället för tuva kan ni välja vilket namn ni vill, bara ni ändrar namnet på alla ställen main() är huvudfunktionen tuva() är en subroutine, underfunktion Den kan inte fungera utan att bli kallad från main()
Kapitel 2 Datorer är bra på att räkna och minnas, men om vi inte kan få in data i dem, så har de inget att räkna eller minnas #include <stdioh> int main() char str1[30]; /* char betyder character, bokstav, hur många bokstäver str1 kan ta är 30 Behöver man större så anger man ett högre tal printf("ditt namn: "); scanf("%s", str1); /* scanf fungerar som printf, men väntar på din inmatning Testa med att mata in för och efternamn och se vad som händer return 0; // main Uppgift 1: Skriv ett program som frågar hur många gånger funktionen tuva() ska köra for-loopen if( a ==0 ) /* om villkoret är uppfyllt så genomförs det som är mellan de första fiskmåsarna return 0; else // annars görs det som är här tuva(a); Uppgift 2: Förbättra programmet och kontrollera om användaren skriver '0', då avslutas programmet scanf() printf() Dessa två har mycket gemensamt scanf( %d,i); läser in ett heltal i deklareras int i; om vi byter %d mot %c, läser vi in en enda bokstav Deklareras char i;
%s, läser in en sträng, det vill säga en serie bokstäver Deklareras char[antal bokstäver]; Tex char[20], för tjugo bokstäver; printf( %s\n,i); skriver ut en sträng Vill ni skriva ut decimaltal så använder ni %f %2f skriver ut ett decimaltal med två decimaler %8f, skriver ut med åtta decimaler Deklareras float i; Uppgift3: Skriv ett program som frågar efter cirkelns radie och skriver ut arean med tre decimaler Ni behöver: floath float O,r; om er IDE inte har PI så deklarera #define PI 314159 Ni ser ju själva var ni kan skriva in det i programmet O=2*PI*r A=PI*r*r Egna ideer uppmuntras! Läsligt! Ett annat sätt att kontrollera olika villkor är en: char c; scanf( %c,c); switch(c) case 'a': area(); break; //nr1 case 'v' volym(); break; default: printf( Mata in a, för att räkna ut arean; v för volymen\n ); // switch Uppgift 4: Bygg på programmet med ovanstående switch Testa att ta bort break nr 1 och se vad som händer For(;;) är ett sätt att få datorn att upprepa samma sak while(villkor) är ett annat, eller;
do while(villkor); Där villkor är tex i<10 eller i==0 eller strcmp(c,'q') så en loop, #include <stringh> char c; do printf( Vill du fortsätta programmet? ); //frågar vad vi vill göra c=getchar(); // läser en tangenttryckning while(!strcmp(c,'q')); // frågar sig själv vad vi vill göra med svaret /*! betyder INTE Vi vänder på frågan Skriver vi detta på vanlig engelska: While walue in c is not equal to q Så länge värdet i c inte är lika med q strcmp kräver en #include <stringh> Vill ni testa ovanstående så måste ni baka in den i main() Uppgift 5: Bygg ut programmet så det frågar efter varje gång det räknat ut area eller volym om du vill avsluta programmet eller fortsätta Uppgift 6: Gör om programmet så att det räknar ut temperaturen i C om du matar in Farenheit och i Celcius om du matar in F F=32+9/5*C C=5/9*(F-32) givetvis måste alla variabler deklareras float