C programmering :: Det første program

Alle manualer for sprog Pascal, Basic og C starter med et program, der skal udskrive "Hello, World". Det er blevet en kotume, måske for at bevise at sproget virker. Nej, det er fordi, får du hul på den så ved du at din compiler (oversætter) virker. I C kan sådant et program se således ud:

#include <stdio.h>

main()
{
    printf("Hello, world\n");
}
hello.c

eller rettere kildeteksten til programmet ser sådan ud. C kræver at kildeteksten skal oversættes af en compiler, der fortolker kildeteksten og omsætter den til noget som kaldes ved flere navne binærkode, maskinsprog, native code m.m. Det oversatte er det virkelige program, kildeteksten også kaldet kildekode er - bare tekst, men oversættelsen med compileren gør det til et program. Vi ser nu at abstraktionen, at kalde kildeteksten for program og det der er intet forgjort i at kalde kildeteksten for programmet, men jeg er nødt til at få alle med fra starten.

Kildeteksten skal tastes ind med en eller anden teksteditor.

  • Lav kildeteksten som i ovenstående boks og gem den under navnet hello.c
  • oversæt programmet med compileren gcc ved skrive kommandoen
#gcc hello.c
  • kør programmet ved at skrive
#./a.out
Hello, world
#

I ovenståen er vist hvordan det nogenlunde vil se ud på en Linux, # skal forestille Linux prompten, altså noget Linux skriver til dig for at vise at den er klar til at modtage kommandoer. Efter prompten er så dine indtastninger og programmet der udskriver noget på næste linie og en prompt igen.

Lad os kigge på programmet. I ethvert C program, uanset størrelse, består det af funktioner og variabler. Funktioner består af sætninger der beskriver handlinger eller operationer som programmet skal gøre. Operationer kan bruge variabler til at lagre værdier. Programmer kan benytte kontrolstrukturer, der giver betingelser for om en given sætning skal udføres eller ikke udføres.

C funktioner er underrutiner (eng. subrutine) som normalt navngives frit efter dit valg, dog med hensyn til visse tegn ikke må bruges, men i ét tilfælde er du bundet af det regelsæt, der skal skubbe programmet i gang. Programmet startes altid ved funktionen main. Ofte vil din main funktion kalde andre funktioner enten nogle som du selv laver eller funktioner som er definerede i et bibliotek (eng. library). Programmet benytter en funktion printf fra et standardbibliotek med standard input/output funktioner. Når man skal bruge funktioner fra et bibliotek inkluderes en header (med include) som vi gør det i programmets første linie

#include <stdio.h>

den skaber definitionen for hvad der findes i et bibliotek eller nogen gange flere biblioteker. Header filen stdio.h inkluder informationer fra standard biblioteket med input/output funktioner og deri ligger definitionen for printf.

Linien

main()

Definerer funktionen main. Mellem paranteserne () kan der indeholdes parametre, i dette tilfælde ingen.

Linierne med kode bruger

{
    printf("Hello, world\n");
}

tuborgparanteser {} og det imellem dem er start og slut for koden til funktionen main.

Funktionen main har en sætning,

printf("Hello, world\n");

som består af et kald til funktionen printf. Man kan overføre data eller værdier, kaldet parametre, til funktioner. Parameteren til funtionen printf er "Hello, world\n", parameteren er data af forskellige typer der passer til definitionen af funktionen, denne parameter er en streng-type. Paranteserne afgrænser parametre, med i dette tilfælde en streng-værdi. Strenge er tekst og afgrænses med cituationstegnet ", i stregen som blev overført til printf er der \n som er ét tegn og tolkes som et linieskift når det udskrives.

printf("Hello,");
printf(" world\n");

Ville give samme resultat, der er altså ingen automatisk linieskift i printf.

Tegnet \ kaldes et escape-tegn som betyder afvigelse eller undtagelse fra almindelig tekst og tegnet efter \ bestemmer hvilken tolkning der gives. Der er flere en \n escape tegn, det kan vi komme til senere, men skal du udskrive et " eller \ tegn gøres det med at sætte \ foran det bliver respektivt til \" eller \\.

Nu gik jeg ud fra at du fik indtastet programmet rigtigt, men lad os prøve med at lave en fejl i programmet, vi fjerner den sidste parantes ) i printf sætningen.

  • Ret hello.c og lav fejlen i editoren og gem filen
#include <stdio.h>

main()
{
    printf("Hello, world\n";
}
hello.c

 

  • Compilér programmet ved:
# gcc hello.c
hello.c: In function `main':
hello.c:5: parse error before `;'
#

Som du ser giver compileren en fejl med teksten "parse error before `;'" helt til venstre fortæller den kildetekstens navn og linienummeret hvor fejlen opstod. Når compileren giver fejl (eng. error) oversætter den ikke programmet, det vil i praksis sige at den ikke genererer et a.out program, den overskriver eller fjerner heller a.out, det gamle program der kunne køre, findes stadigvæk intakt.

I C afsluttes sætninger med ;. Derefter kan evt. skrives en ny sætning. Det betyder bla. at et linieskift er unødvendig, compileren oversætter programmet uanset linieskift eller ej. Der intet i selve opstillingen af programmets linier der siger compileren hvordan den skal oversætte programmet. Kildeteksten kan f.eks. være

#include <stdio.h>
main(){printf("Hello, world\n");}

og compileren vil oversætte dette til nøjagtigt det samme program. Om du bruger indrykning eller ej er ligegyldigt, det eneste det kan gavne er dig eller de mennesker der skal læse kildeteksten og det formål, er grund nok til at du skal gøre det. Det er derfor godt at begynde at danne dig et indtryk af hvordan du gør kildeteksten læsbart for dig selv og andre.

Så længe det kun er dig selv der skal kigge på programmerne kan du selvfølgelig lave dit eget "look", men skal du arbejde sammen med grupper af programmører, kan du blive tvunget ind i et stramt regelsæt for hvordan kildeteksten skal se ud.

 

 

 

Ressourcer C Library opslag The Single UNIX® Specification, Version 2 Copyright © 1997 The Open Group GNU C Library Engelsk, med masser af gode og dybe artikler. Danske søgeord Find selv de bedste danske søgeord til din hjemmeside.
Produkter Bookingsystem
System for reservation af tid for behandlinger, aftaler, lokaler, udstyr, personale. Tilpasset lektionstimer. Udskriver arbejdsplaner og ugeskema for opslag. Statistik. Danmarks bedste pris nu kun kr. 1.695,-
HelpdeskEffektiviser din support-organisation med et Helpdesksystem. Fjern tidrøvere der forhindrer fokus på problemløsning. Lektionsplan Formidling af generelle information og specifikke lektioner fra undervisere til studerende/elever. Medlemssystem Medlemssystem online med administration af medlemskartotek, kontingentbetalinger, flettefiler m.m.
Styr selv Styr selv indholdet på dine hjemmesider med Content Management System.
Citat Der findes mange stier til Bjergets top, men udsigten er altid den samme.

Kinesisk ordsprog



Professionelle løsninger til Internettet. Webdesign, e-handel, cms, søgeoptimering, webhotel, analyse, Intranet mm.