Sådan læres C-programmering med dette nybegynderprojekt
Reklame
At lære at programmere er en kumulativ oplevelse. Ved siden af at lære syntaks for dit valgte sprog, skal du også lære de generelle principper, som alle programmeringssprog bruger.
At forstå og lære C-programmering kan være skræmmende, men der er et par grundlæggende ideer, der er værd at gøre dig bekendt med, når du starter. Et simpelt projekt er en fantastisk måde at lære de grundlæggende forhold i C.
Så hvor skal du starte? Ved at sige hej!
1. Hej, verden!
Den første del af næsten alle kodningskurser er hej verdensprogrammet . At gennemgå det detaljeret fremhæver nogle af måderne C adskiller sig fra andre sprog. Til at begynde med skal du åbne en teksteditor eller IDE Text Editors vs. IDE'er: Hvilken af dem er bedre for programmerere? Tekstredaktører vs. IDE'er: Hvilken af dem er bedre for programmerere? Det kan være svært at vælge mellem en avanceret IDE og en enklere teksteditor. Vi tilbyder en vis indsigt for at hjælpe dig med at tage denne beslutning. Læs mere efter eget valg, og indtast denne kode:
#include /* this is a Hello World script in C */ int main(void) { printf("Hello, World! \n"); return 0; }
Dette korte stykke kode udskrives til konsollen, før programmet afsluttes. Gem det et sted, der er let at huske som hello.c . Nu skal du sammenstille og oprette din fil.
At få det til at køre
Normalt behøver du ikke installere yderligere software på din computer for at køre C-scripts. Åbn et terminalvindue (eller kommandoprompt, hvis du kører Windows), og naviger til det bibliotek, du gemte dit script i.
Den måde, du kompilerer og kører din fil på, varierer fra system til system:
- Windows-brugere: Gør din fil eksekverbar ved at skrive cl hello.c og trykke på enter. Dette vil oprette hello.exe i den samme mappe, som du kan køre ved at skrive hej .
- Linux- og macOS-brugere: Skriv gcc -o hello hello.c, og tryk på enter for at gøre det eksekverbart, og kør det ved at skrive ./hello .
Uanset hvilken metode du bruger, skal du køre dit script vise dig dette:
Hvis det ikke fungerede på Windows, skal du sørge for at køre kommandoprompten i administratortilstand. For macOS skal du muligvis installere Xcode fra App store og følge disse trin fra StackOverflow.
Lad os nu se på programmet linje for linje for at se, hvordan det fungerer, og forbedre det!
Under hætten: Forstå C-sproget
præprocessorer
Det script, du lige har oprettet, begynder med inkluderingen af et bibliotek.
#include
Den første linje i scriptet kaldes en forbehandler . Dette udføres, inden resten af scriptet er samlet. I dette tilfælde fortæller det, at scriptet skal bruge biblioteket stdio.h . Der er et stort antal forbehandlere til forskellige opgaver.
Stdio.h tager sig af at få input fra programmets bruger og sende oplysninger tilbage til dem.
/* this is a Hello World script in C */
Denne næste linje er en kommentar. Skråstreg og stjerne beder kompilatoren om at ignorere alt mellem det og den lukkende stjerne og skråstreg. Selvom dette kan virke meningsløst, er det en vigtig vane at komme ind at være i stand til at forlade dig selv og andre klare bemærkninger om, hvad din kode gør.
Hovedfunktionen
int main(void)
Hvert C-program skal have en hovedfunktion. Main er en funktion, der returnerer et heltal, betegnet med int . Konsolerne efter main er for dens argumenter, men i dette tilfælde tager det ingen, hvilket er grunden til at du bruger det ugyldige nøgleord.
Du skriver koden, der skal udføres mellem to krøllede seler.
{ printf("Hello, World! \n"); return 0; }
Inde i funktionen kalder du funktionen printf () . Ligesom main () er printf en funktion. Forskellen er, at printf er en funktion i det stdio- bibliotek, du inkluderede i starten.
Printf udskriver noget i parenteserne, mellem anførselstegnene, til konsollen. \ N er en fluksekvens, der kaldes newline, der fortæller kompilatoren at springe til den næste linje i konsollen, før du fortsætter.
Bemærk, at disse linjer ender i semikoloner, som kompilatoren bruger til at dele en opgave fra den næste. Vær opmærksom på disse semikoloner - at gå glip af dem er den første årsag til, at ting ikke går rigtigt!
Endelig vender funktionen tilbage med tallet 0 og afslutter programmet. Hovedfunktionen () skal altid returnere et heltal, og returnere = 0; signaliserer til computeren, at processen var vellykket.
At forstå hvert trin i dette script er en god start i at lære både C-syntaks, og hvordan sproget fungerer.
2. Oprettelse af dine egne C-funktioner
Du kan oprette dine egne brugerdefinerede funktioner i C. I stedet for at udskrive Hello World i hovedfunktionen, skal du oprette en ny funktion, der gør det for dig.
void print_for_me() { printf("Hello, World! \n"); }
Lad os nedbryde dette.
void er et nøgleord, der betyder, at følgende funktion ikke returnerer noget.
print_for_me () er navnet på funktionen, og de tomme parenteser viser, at den ikke kræver argumenter for at arbejde. Et argument er ethvert stykke information, der skal videregives til en funktion for at få det til at fungere - senere tilføjer du et eget argument for at ændre output! Bemærk: Dette er ikke det samme som hovedfunktionen () ovenfor, som brugt tomrum. Denne funktion kan ikke tage argumenter, mens denne kan (men i dette tilfælde ikke behøver).
Kodeblokken skal være velkendt for dig - det er bare udskrivningsangivelsen fra den originale hovedfunktion.
Nu kan du kalde denne funktion fra din hovedfunktion.
int main(void) { print_for_me(); print_for_me(); return 0; }
Du kan her se en fordel ved at bruge din egen funktion. I stedet for at skrive printf (“Hej, verden! \ N”) hver gang, kan du ringe til funktionen to gange.
Lige nu virker dette muligvis ikke så vigtigt, men hvis din print_for_me-funktion indeholdt en masse kodelinjer, er det en god tidsbesparelse at kunne kalde det så let!
Dette er en grundlæggende idé om programmering, du vil støde på i hele din uddannelse. Skriv din egen funktion en gang i stedet for at skrive de samme store stykker kode igen og igen.
3. Brug af funktionsprototyper i C
Prototyper er en af de vigtigste måder, begynder C adskiller sig fra andre sprog. Kort sagt er en prototype som en eksempelvisning af en funktion, der er defineret senere. Hvis du skriver funktionen print_for_me () efter hovedfunktionen, kan du muligvis få en advarsel, når du udarbejder:
Advarselsmeddelelsen fortæller dig, at kompilatoren løb ind i funktionen print_for_me, før den blev erklæret, så den kunne ikke være sikker på, at den ville fungere korrekt, når programmet kører.
Koden fungerer stadig, men advarslen kan undgås helt ved hjælp af en prototype.
#include void print_for_me(); int main(void) { print_for_me(); print_for_me(); return 0; } void print_for_me() { printf("Hello, World! \n"); }
Ved at se på det fulde program kan du se prototypen til print_for_me (), der findes i starten af programmet, men indeholder intet. Prototypefunktionen viser kompilatoren, hvordan funktionen skal se ud, og om den kræver argumenter eller ej.
Dette betyder, at når du kalder det i hovedfunktionen, ved compileren, om den kaldes korrekt, og kan smide en advarsel eller en fejl, hvis det er nødvendigt. Dette kan være noget, der forekommer mærkeligt nu, men at vide om dem nu vil hjælpe i fremtiden.
Dette program fungerer stadig uden en prototype, men de er god praksis at bruge. Outputen ser stadig den samme ud nu, lad den ændre den for at gøre den mere personlig!
4. Overførsel af argumenter til C-funktioner
Ændring af scriptet
I dette sidste trin vil du bede om brugerens navn og registrere deres input. Så bruger du den i den funktion, du oprettede før. I C er ord ikke kendt som strenge som i andre programmeringssprog.
I stedet er de en række enkeltpersoner. Symbolet for en matrix er [], og nøgleordet er char . Begynd med at opdatere din prototype-funktion i starten af dit script:
#include void print_for_me(char name[]);
Nu ved kompilatoren, at funktionen senere i scriptet tager en række karakterer kaldet navn . Indtil videre eksisterer denne karakter ikke. Opdater din hovedfunktion for at oprette den, og brug den til at gemme brugerinput:
int main(void) { char name[20]; printf("Enter name: "); scanf("%s", name); print_for_me(name); print_for_me("Everyone!"); return 0; }
Den første linje i hovedet opretter en karaktergruppe med 20 mulige mellemrum, der kaldes navn. Dernæst bliver brugeren bedt om at indtaste deres navn vha. Printf. Den næste linje bruger en ny funktion kaldet scanf, der tager det næste ord, som brugeren skriver.
"% S" fortæller funktionen, at det skal gemme dataene som en streng, og kalde det navn .
Ændring af funktionen
Når du kalder print_for_me, kan du medtage navn i parenteserne. På den næste linje ser du, at du også kan videregive andre tegn, så længe de er mellem anførselstegn. Begge gange overføres det, der findes i parenteserne til funktionen print_for_me.
Rediger det nu for at bruge de nye oplysninger, du giver dem:
void print_for_me(char name[]) { printf("Hello, "); puts(name); }
Her kan du se, at parenteserne er blevet opdateret ligesom prototypen i starten af scriptet. Indvendigt udskriver du stadig hej ved hjælp af printf. En ny funktion her er sætter . Dette er en mere avanceret version af printf.
Alt, der anbringes i parenteserne, udskrives på konsollen, og en ny linje (den \ n, du har brugt tidligere) tilføjes automatisk.
Gem og kompilér din kode på samme måde, som du gjorde tidligere - bemærk, at du kan navngive programmet noget andet, hvis du ikke vil overskrive dit tidligere program. Jeg kaldte min hej2 :
Som du skulle se, tager programmet input og bruger det i funktionen, før den forudindstillede hilsen til "Alle!" Sendes igen og giver to separate output til den samme funktion.
ABC-programmerne i C-programmering
Dette program er enkelt, men nogle af koncepterne deri er det ikke. Mere avanceret C-kode skal skrives meget godt for at forhindre crash. Dette er grunden til, at mange synes, det er et fremragende sprog at lære først, da det indstiller gode vaner i nye programmører.
Andre synes, at det at lære C ++ er en bedre idé, da det bygger på C, mens det bevarer sin lavere systemkontrol. (Der er også Rust at overveje - det er et spændende programmeringssprog, der syntaktisk ligner C ++.)
En ting er sikker: sprog som Python er meget mere begyndervenlige. På et gammelt sprog bruges C stadig overalt, men Python kan være fremtidens sprog 6 grunde til, at Python er fremtidens programmeringssprog 6 grunde til, at Python er fremtidens programmeringssprog Vil du lære eller udvide dine programmeringsevner ? Her er grunden til at Python er det bedste programmeringssprog at lære i år. Læs mere !
Udforsk mere om: C, kodetutorials, programmering.