Programmering istudering
Programmering istudering - en övning gjord av alexderosa1 på Glosor.eu.
1. Vik bak högra delen av pappret så att svaren inte syns.
2. Skriv ner svaren på frågorna i utrymmet under dem.
3. Vik tillbaka pappret och rätta genom att jämföra med svaren till höger.
I C lagrar vi bokstäver i typen char men char är en heltalstyp. Hur hänger detta ihop? Detta hänger ihop då bokstäver/text kompileras och görs om av kompilatorn till maskinkod som sedan kan visas i terminalen.
Vad innebär kompilering? Programtexten översätts till maskinkod om den inte upptäcker några fel, varje kompilator är specifik för ett språk.
Vad är en pekar-variabel? En ... är en typ av data som innehåller en specifik minnesadress. En ... till en variabel kan användas för att läsa och ändra värdet på variabeln. För att deklarera en ... skrivs en asterisk, *, framför variabelnamnet och för att få adressen till en variabel föregås den av ett och-tecken, &.
För att tilldela en variabel ett värde använder vi tilldelningsoperatorn =. Vad betyder det att den är en operator i C och att en tilldelning inte bara är en sats? En operator är något som verkar på en eller flera termer (argument). Det finns olika typer av operatorer: Unära operatorer (tar ett argument, ex. &, *, !, sizeof) & Binära operatorer (tar två argument, ex. +, -, ==, <= etc…)
Heltalsvariabler kan vara ”unsigned”, vad innebär det? Vad är skillnaden mellan en unsigned int och en int? Antag att variabeln a är deklarerad som en unsigned int. Ange vad som händer (principiellt) om man gör tilldelningen a = –1; Skillnaden är att unsigned inte kan innehålla negativa och positiva tecken. Endast positiva heltal. Om man printar med %d kommer man få samma negativa tal. Om man printar med %u kommer man få 4294967295, då en unsigned int är 32bit stor. Den ger dig maxvärde och tolkar det som positivt.
Varför kan det vara bra att initiera alla variabler? Så man kan förebygga så kallade buggar
Hur initierar man en matrisarray (en 2-dimensionell array). Ge ett exempel där man initierar en 3 gånger 3 matris med ettor i diagonalen. int a[3][3]= {{1, 0 ,0}, {0, 1, 0}, {0, 0, 1}};
Var gäller en deklaration av en lokal variabel? Inuti satsen som ... deklareras i.
Vad gör operationen n +=2 ? Den lägger till värdet 2 till det redan befintliga värdet på variabeln n.
Vad är en funktionsdeklaration och vad kan man använda den till? En ... ska se ut som följer: funktionstyp funktionsnamn(funktionsargument); Den kallar på en funktion och kommer köra funktionen. Deklarationen ger funktionens egenskaper och måste stämma med definitionen av samma funktion. Deklarationen gör över main.
Radbytestecknet \n används ofta i textsträngar i samband med standardfunktionen printf. Ge ett exempel på hur radbytestecknet används i ett printf-anrop och förklara vad en programrad med ett printf-anrop gör. Förklara också varför man bör undvika radbytestecknet i ett scanf-anrop. I printf används \n som ett radbyte. Printf används för att skriva ut en text i terminalen. Om du skriver ett \n i en scanf kommer du behöva göra två inskrivningar för att spara till variabeln. \n (blankvärde) gör att den fortsätter leta efter ett inscanningsvärde. Därför måste man scanna in ett till värde för att få det att sluta och spara in värdet
Vad innebär preprocessing? Programmet tar in information innan kompileringen sker. T.ex. #stdio eller #stdlib men även dina egna .h filer inkluderingsfiler.
Varför ska man normalt inte använda globala variabler? Använder minne under hela programmet. Inte bara när de körs. Eftersom värdet på en ... kan ändras i varje funktion i programmet, finns det risk för oönskade förändringar uppstår och därmed buggar i programmet. Denna risk ökar ju fler .. man använder och ju större programmet är. Man bör alltid eftersträva att skriva funktioner så allmänna som möjligt så att man kan återanvända den i andra sammanhang. Användning av ... minskar denna möjlighet.
Hur bör olikheten 3 < i ≤ 7 skrivas som villkor i C? ex: if(i>3&&i<=7)
Vad är betyder n++? lägger till 1 men returnerar original värdet.
Nämn ett exempel då man kan behöva göra en explicit konvertering i C? Om en typ ska ... till någon annan kan man göra det explicit, dvs. att man skriver ut den nya typen inom parantes precis efter likamedtecknet. Typer kan konverteras hur som helst sinsemellan, utom i fallet boolean. Boolean kan inte konverteras till eller från någon annan typ.
Varför måste man använda adressoperatorn (&) när man använder standardfunktionen scanf för att läsa in ett tal? När man har allokerat en minnesplats och storlek med en variabel måste man med hjälp av tecknet hänvisa till just den platsen.
Påverkar indentering den kompilerade koden? Nej
Varför ska man indentera (tabba in delar av) kod? Med ... menas att texten på raderna raderna dras in så att de avspeglar programmets struktur. Det har med läsbarheten att göra, så man ser vart en function börjar och slutar tex.
Antag att vi har deklarerat en array att ha längden 10 int a[10]; och sedan tilldelat: a[10]=4; Beskriv vad som händer när vi kör programmet. a[10] finns inte eftersom array slutar på “a[9]”
Vad innebär länkning? Ett program består av olika objektfiler som tillsammans skapar programmet. Länkning sätter ihop filerna till ett fungerande program.
Vad betyder en deklaration? Exempel på en deklaration: int antal; När man ... en variabel talar man om vad den ska heta och vilken typ den är. T.ex. Int, char, double, float etc.. Datatypen skrivs först och efter skrivs namnet. En variabel tar upp en plats i minnet där storleken baseras på typen. Till variabeln kan man adressera ett värde. Innan en variabel kan användas måste man ... vilken sort den är.
Varför ska man inte använda goto? När man använder ... hänvisar man till en specifik plats utan att man bryr sig om koden mellan goto och den specifika platsen. Man anser att programmet blir svårt att följa och uppdatera, speciellt för en person som inte skapat koden.
Vad betyder ++n? lägger till 1 och returnerar det tillagda värdet
När vi har flera nästlade loopar skulle goto kunna vara ett enkelt sätt att hoppa ur alla loopar medan break bara hoppar ur den innersta loopen. Man kan naturligtvis sätta alla loopvillkor så att de testas falskt för att hoppa ur men ibland känns det omständigt. Hur kan du enkelt hoppa ur flera nästlade loopar utan att använda goto? Man använder sig av en "flagga" då kan vi sätta ett flagg statement i flera loopar och ett flaggvärde deklarerat innan loopen. När flaggan uppfylls kommer den hoppa ur alla loopar som har samma värde. Oftast ges en “flagga” värdena 0 och 1 där 0 står för false och 1 för true. Detta används sedan i ovanstående fall när man vill avsluta och hoppa ur en loop (0) eller fortsätta med en loop (1).