Grunderna i C-Programmering

0
65

Arrayer

I detta avsnitt, kommer vi skapa ett litet C-program som genererar 10 slumptal och sorterar dem. För att göra det, vi kommer att använda en ny variabel arrangemang som kallas en array.

En mängd kan du deklarera och arbeta med en samling av värden av samma typ. Till exempel kanske du vill skapa en samling av fem heltal. Ett sätt att göra det skulle vara att förklara fem heltal direkt:

Nästa

  • Hur fungerar JavaScript för att fungera och hur kan jag bygga en enkel miniräknare med det?
  • Hur C-Programmering Fungerar
  • Hur HTML5 Fungerar
  • Vad är fördelarna med att lära sig C-programmering?
  • Är data mining och data warehousing?

int a, b, c, d, e,

Detta är helt okej, men tänk om du behövde ett tusen heltal? Ett enklare sätt är att deklarera en array av fem heltal:

int a[5];

De fem separata heltal inuti denna matris används av ett index. Alla kedjor börjar på index noll och gå till n-1 i C. Alltså, int[5]; innehåller fem element. Till exempel:

int a[5];

a[0] = 12;
a[1] = 9;
a[2] = 14;
a[3] = 5;
a[4] = 1;

En av de trevliga saker om utbud indexering är att du kan använda en loop för att manipulera index. Till exempel, följande kod initierar alla värdena i matrisen till 0:

int a[5];
int i;

for (i=0; i<5; i++)
a = 0;

Följande kod initierar värdena i matrisen jämfört med föregående kvartal och sedan skriver ut dem:

#include <stdio.h>

int main()
{
int a[5];
int i;

for (i=0; i<5; i++)
a = jag;
for (i=0; i<5; i++)
printf(“a[%d] = %dn”, i, a);
}

Matriser används hela tiden i C. för Att förstå en vanlig användning, starta en editor och skriv in följande kod:

#include <stdio.h>

#define MAX 10

int a;
int rand_seed=10;

/* från K&R
– returnerar slumptal mellan 0 och 32767.*/
int rand()
{
rand_seed = rand_seed * 1103515245 +12345;
avkastning (unsigned int)(rand_seed / 65536) % 32768;
}

int main()
{
int i,t,x,y;

/* fyll array */
for (i=0; i < MAX; i++)
{
a=rand();
printf(“%dn”,a);
}

/* mer saker kommer att gå här i en minut */

return 0;
}

Denna kod innehåller flera nya koncept. Den #define linje förklarar en konstant som heter MAX och sätter den till 10. Konstant namn är traditionellt skrivna i versaler för att göra dem uppenbara i koden. Linjen int a; visar hur du deklarerar en array av heltal i C. Observera att på grund av den position i matrisen förklaring, det är globalt för hela programmet.

Linjen int rand_seed=10 förklarar också en global variabel, den här gången heter rand_seed, som initieras till 10 varje gång programmet börjar. Detta värde är utgångspunkten för utsäde för slumpmässiga nummer kod som följer. I en riktig random number generator, utsäde bör initiera ett slumpmässigt värde, såsom det system som helst. Här rand funktion kommer att ge samma värden varje gång du kör programmet.

Linjen int rand() är en funktion förklaring. Slump-funktionen accepterar inga parametrar och returnerar ett heltal. Vi kommer att lära oss mer om funktioner senare. De fyra raderna som följer genomföra slump-funktionen. Vi kommer att ignorera dem för nu.

Den viktigaste funktionen är normalt. Fyra lokala heltal deklareras, och matrisen är fylld med 10 slumpmässiga värden med hjälp av en for-loop. Observera att matrisen a innehåller 10 individuella heltal. Du pekar på en viss heltal i vektorn med hjälp av hakparenteser. Så en[0] refererar till den första heltal i vektorn, [1] hänvisar till den andra, och så vidare. Raden som börjar med /* och slutar med */ kallas för en kommentar. Kompilatorn struntar helt i linje. Du kan placera anteckningar till dig själv eller andra programmerare i kommentarerna.

Lägg nu till följande kod i stället för den mer grejer … kommentar:

/* bubble sort array */
for (x=0; x < MAX-1; x++)
for (y=0; y < MAX-x-1; y++)
om a > a[y+1])
{
t=a;
a=a[j+1];
en[y+1]=t;
}
/* utskrift sorterad array */
printf(“——————–n”);
for (i=0; i < MAX; i++)
printf(“%dn”,a);

Denna kod möjliga slumpmässiga värden och skriver ut dem i sorterad ordning. Varje gång du kör det, kommer du att få samma värden. Om du vill ändra de värden som ska sorteras, ändra värdet av rand_seed varje gång du kör programmet.

Det enda enkla sättet att verkligen förstå vad den här koden gör är att köra det “för hand.” Det är, antar MAX är 4 för att göra det lite mer hanterbar, ta ut ett ark av papper och låtsas att du är datorn. Dra matris på papper och sätta fyra slumpmässigt, osorterade värden i en array. Utför varje linje av sortering avsnitt av koden och dra ut exakt vad som händer. Du kommer att finna att varje gång genom den inre slingan, de större värdena i matrisen pressas mot botten av utbud och lägre värden bubbla upp mot toppen.

Prova Detta!

  • I den första delen av koden kan du försöka att ändra for-loop som fyller matris till en enda rad kod. Se till att resultatet är detsamma som den ursprungliga koden.
  • Ta bubble sort kod ut den och lägga den i sin egen funktion. Funktionen header kommer att ogiltiga bubble_sort(). Flytta sedan de variabler som används av bubble sort att den fungerar så bra, och göra dem till det lokala. Eftersom matrisen är global, du behöver inte skicka parametrar.
  • Initiera slumptal frö till olika värden.

C för att Undvika Fel

  • C har inte rad att kontrollera, så om du index förbi slutet av kedjan, det kommer inte att berätta om det. Det kommer så småningom krascha eller ge dig sopor data.
  • Ett funktionsanrop måste innehålla () även om inga parametrar överförs. Till exempel C kommer att acceptera x=rand;men samtalet kommer inte att fungera. Minnet adress slump-funktionen kommer att vara placerade i x i stället. Du måste säga x=rand();.