Teorifrågor a) Typ b) Konstant c) Formell parameter d) Tilldelning e) Sträng f) Returtyp g) Aktuell parameter h) Variabel i) Uttryck j) Lokal variabel k) Nyckelord l) Fält m) Deklaration av variabel n) Initiering av variabel f) Ström /* a En typ beskriver storlek (i bytes) och tolkningen av dessa, char, int */ /* b En konstant är ett värde som inte kan förändras under programmets exekvering 'c', 123, 0.67 */ /* c Formell parameter är den parameter som anges i funktions dekl./definitionen int my_func( int i ), i formell parameter*/ /* d Tilldelning innebär att man ger en variabel ett värde, x = 1; */ /* e Sträng är en följd av tecken, i C "Hej" (avslutas i C med \0)*/ /* f Typen på det värde en funk. returnerar, my_func ovan har resultattyp int*/ Skrivuppgifter 1 8 1. å, ä, ö 2. if, else, while. Dessa kallas nyckelord. 3. a-z och 0-9 4. /*kommentar*/. Skrivs med egen text inom /* */ 5. används för specialtecken, ex \n \2 6. Indentering används för att skriva rader med olika mycket tabbar eller blanksteg. För att underlätta läsning och förståelse av programmet. 9. 1. Ett värde som inte ändras 2. 3, "pi", ’e’ 3. #define MAX, För att inte ändra värdet av misstag 10 1. Kompilatorn kan kontrollera typfel 2. Char 1 byte, int = 4 bytes, float = 4 bytes, double = 8 bytes 3. ’x’ = 1 byte, 23 = 4 bytes, 1.3 = 8 bytes, 3.8e97 = 8 bytes 4. true = 1, false = 0 5. Hej skulle visa 4. Hej är 4 st bytes 6. char 11. 1. Man kan använda A-Z, a-z, 0-9. 0-9 kan inte inleda namnet. 2. Man skapar variabeln och reserverar minne 3. Värdet i sum 4. Tilldelning, X = 5 5. Initiering 6. Konstanter är värde som saknar namn, konstanta variabler kan endast läsa (har typ) och variabler kan läsas och skrivas till 12 1. En språkkonstruktion där man sätter ihop värden m.h.a. en operator 2. a=b, +, =, *, /, ++, -=, 3. Om uttrycket är sant är uttryckets värde 1, är det falskt är uttryckets värde 0 4. +n, & 5. Om variabeln är av typen int, heltalsdivision Om variabeln är av typen float eller double, vanlig division 6. &&, || 7. Först läggs 1 i minnet, sedan tilldelas variablerna värdet som finns i minnet 8. c=a+b, a>1 && b=2 9. a) int, 6 b) int, 98 c) float, 3.0 d) double, 99.0 e) int, 3, tappar decimaler 10. a) utskrift: 5, värde: 6 b) utskrift: 4, värde: 4 11. Kompilatorn kontrollerar ej om det är rätt typer av variabler i uttrycket int* i_ptr = (int*) 123 12. Ett tecken hämtas från stdin och läggs i ch. Värdet blir 1 om tecknet från stdin är \n, annars blir värdet 0. Uttrycket har typen boolen. Om man inte har parenteser kommer värdet av uttrycket getchar() != ’\n’ att läggas i ch, 1 eller 0. 13 1. En instruktion 2. Avslutar med ; , tex counter++; 3. ; 4. Med måsvingar, { }. Det går alltid att byta ut en sats mot ett block. 5. Uttryckssatser avslutas med ; och sammansatta satser avslutas med } Skrivuppgifter 2 6. 1. char str[20] 2. char str[] = "Samma gamla visa" 3. %s 4. Man läser in ett begränsat antal tecken, man kanske missar några i slutet, (buffer overflow) 5. fgets vill ha en variabel som argument, scanf vill ha en adress till en variabel (en sträng är en adress) 6. Läser ’\n’, lägger till ’\0’, programmerarens ansvar 7. Försöker lägga 10 tecken i en "låda" som bara har plats för ett tecken 7 1. a) Jämför adresser, alltid false b) Försöker tilldela en adress med ett värde c) strcmp() d) strcpy() 2. Med hjälp av strlen() 3. "Sill är gött är" 8 1. pekarvärde är adress och pekarvariabel är en variabel som innehåller en adress. 2. Stjärnan följer inte med till b, borde stå char* a, *b 3. Adressen har inte blivit tilldelad, (pekar ingenstans) 4. %p 5. 3å 6. 2n 7. Värdet i ptr Värde i ch Tecken i str X H H,e,j,\0 X A H,e,j,A X H H,e,j,\0 X A H,A,j,\0 0X1000 X H,e,j,\0 0X1001 X H,e,j,\0 0X1003 X H,e,j,\0 0X1000 H H,e,j,\0 0X1002 j H,e,j,\0 0X1001 e H,e,j,\0 0X1003 A H,e,j,A 0X1001 H H,e,j,\0 0X1001 e H,e,j,\0 8. str++ <=> str = str +1 värde = värde, går inte str = ptr värde = x, går inte Skrivuppgifter 3 6 1. Nej 2. Huvud: Definitionens första rad Kropp: Kod mellan { och } 3. Invariablerna för funktionen 4. Står ovanför main(), avslutas med ; , ex: double mean(int a, int b); 5. Typen av returvärdet, double i ex ovan 6. Med return eller vid sista } om funktionen är av typen void 7. De "vanliga" typerna, men inte fält eller strängar, i de fallen får man använda adresser istället 8. Nej 9. Deklarationer före main och definitioner efter main 10. De argument som anges i funktionsanropet 11. anrop => beräknar och skickar parametrar => hoppar till funktionen => utför instruktioner i funktionen => returnerar ett värde => hoppar tillbaka till precis efter funktionsanropet 7 1. Den del av programmet där deklarationen gäller 2. Auto: Minnesutrymme deklareras när deklarationens block exekveras Static: Minnesutrymmet existerar under hela programmet, programmet minns variabler inom en funktion mellan anropen 3. Lokala variabler har en livslängd inom blocket Globala variabler har en livslängd under hela programmet 4. Lokala variabler har sitt deklarationsområde inom blocket där dom deklareras Globala variabler har sitt deklarationsområde över hela programmet 8 1. Indexering a[10] = b, Index är i det här fallet 10 2. En sträng avslutas med ’\0’ 3. int i[10], ett fält med 10 positioner 4. Nej 5. Nej, fungerar inte. Man måste ta en åt gången ned hjälp av indexering 9 1. Post skapar en kombination av typer. Postvariabel är en variabel vars typ bestäms av deklaration av posten 2. Man använder .-operatorn , tex p.fname 3. Ja, om strängar eller fält kopieras värde för värde 4. struct koor{ int x; int y; }; 5. #define MAX 5 struct koor{ int x; int y; }; struct koor a[MAX] x=a[2].x;