Kapitel 1
Introduktion til programmering i C

Kurt Nørmark ©
Institut for Datalogi, Aalborg Universitet


Sammendrag
Næste lektion
Stikord Referencer Indhold
Dette er første lektion af slides til kurset 'Programmering i C' på den teknisk-naturvidenskabelige basisuddannelse ved Aalborg Universitet. Vi starter med nogle slides i kategorien 'Kursusintroduktion' som beskriver praktiske forhold. Det faglige indhold i denne lektion er koncentreret om udtryk, operatorer, assignment operatorerne, samt udskrivning og indlæsning.


Kursusintroduktion

Kurset ifølge studieordningen
Slide Indhold Stikord
Referencer 

  • Formål

    • At give de studerende et kendskab til datalogiske grundbegreber og principper i en så almen form, at det kan understøtte problemløsning ved hjælp af datamater under anvendelse af imperative programmeringssprog. Målet med kurset er at give de studerende en teoretisk og praktisk viden, som kan understøtte den videre anvendelse af programmering. Specifikt er målene med kurset at give de studerende: En grundlæggende programmeringsfærdighed, en forståelse af datalogiske grundbegreber knyttet til data, kontrol, algoritmer, abstraktion, struktur og korrekthed.

  • Indhold

    • Algoritmebegrebet. Grundlæggende programmeringsbegreber: Data og kontrolstrukturer. Abstraktion: Procedurer og funktioner. Introduktion til dataabstraktion.

Motivation
Slide Indhold Stikord
Referencer 

Hvorfor skal du interessere dig for programmering?

  • Den der kan programmere kan bruge computeren til generel problemløsning

    • Hvis du ikke kan programmere er du afhængig af andres programmer

  • 'Almen dannelse' for højtuddannede

    • Det er vigtigt for alle tek-nat uddannede at kende til grundbegreberne i programmering

    • Det er fornuftigt at tilegne sig 'programmeringshåndværket' tidligt i studiet

De fleste i dette lokale kommer til at bruge tusinder af timer ved en computer under studiet og gennem et langt arbejdsliv

Derfor er det vigtigt at have kontrol over maskinen - Den ultimative kontrol er at kunne programmere

Programmeringssprog
Slide Indhold Stikord
Referencer 

Hvorfor programmering i sproget C?

  • Krav og forventninger fra forskellige fagområder

    • Et programmeringssprog der kan bruges til noget praktisk

  • En naturlig progression i forhold til tidlig undervisning i funktionsprogrammering

    • funktionsprogrammering

    • imperativ programmering

    • objekt-orienteret programmering

C er ikke et 'universitets sprog', og det har ikke 'pædagogiske rødder' ligesom f.eks. Pascal

C Historik
Slide Indhold Stikord
Referencer 

C blev udviklet af Dennis Ritchie i 1972 på AT&T Bell Labs i USA

  • Udviklet fra et tidligere (nu uddødt sprog) kaldet B, som igen stammer fra sproget BCPL

  • C hører historisk sammen med operativsystemet UNIX

  • "C is terse, low-level and permissive"

  • Udbredt sprog til systemprogrammering

    • De fleste store programpakker på både Windows og Unix er skrevet i C

Henvisning

Lærebogen
Slide Indhold Stikord
Referencer 

C by Dissection - the essentials of C Programming, fourth edition, af Kelley og Pohl

  • Karakteristik af lærebogen:

    • Orienteret mod håndværket - en praktisk bog

    • Relativ kort og kontant

    • Adskiller sig fra en typisk CS1 bog, som de fleste vil møde næste på semester

    • Forklarer bogens programmer meget grundigt og systematisk

Den akademiske dimension vil blive understreget i forelæsningerne

Dissekering
Slide Indhold Stikord
Referencer 

"Skære noget i mindre stykker for at undersøge det videnskabeligt. Analysere i mindste detalje."

Figur. A photo of dissection of the human body

Henvisning

Lærebogens ressourcer
Slide Indhold Stikord
Referencer 

Lærebogen indeholder dele, som rækker ud over det stof, som bliver pensum på kurset

  • Appendix A. En beskrivelse af standard C biblioteket

  • Appendix B. En beskrivelse af C's præprocessor

  • Appendix C. En beskrivelse af operatorer der tilgår enkelte bits

  • Appendix D. En beskrivelse af forskellen mellem ANSI C og traditionel C

  • Appendix E. ASCII tegntabel

  • Appendix F. Operator prioritets og associeringstabel

  • Kapitel 14. C programmeringsværktøjer

  • Kapitel 15. Overgangen til C++

Eksamensopgave og eksamen
Slide Indhold Stikord
Referencer 

Eksamen er baseret på en opgave, som udvikles de sidste to kursusgange

  • Eksamensopgaven:

    • Løses i halvgrupper de sidste to kursusgange, hvor al tid bruges på dette

    • Halvgrupperne formes ved at kursusholder/sekretariatet deler en projektgruppe i 2 dele

    • Opgaven formuleres i god tid inden 9. kursusgang

  • Mundtlig eksamen i halvgruppen:

    • Besvarelsen af eksamensopgaven er udgangspunktet for den mundtlige eksamen

    • Efter en kort demo stilles individuelle spørgsmål om programmet, som gradvist bevæger sig over i det generelle pensum

    • Både programmet, de studerendes evne til at diskutere programmet og den generelle viden om pensum evalueres

    • Individuel vurdering, bestået/ikke bestået

    • En evt. omprøve er individuel med mulighed for genaflevering af eksamensopgaven


Programbegrebet

Hello World i C
Slide Indhold Stikord
Referencer 

Et 'hello world' program er et typisk første program, som viser hvor let eller svært det er at skrive en tekst ud på skærmen fra programmet

Program: Hello World.
/*
// The traditional first program in honor of
// Dennis Ritchie, who invented C while
// at Bell Labs in 1972.
*/

#include <stdio.h>

int main(void)
{
   printf("Hello, world!\n");
   return 0;
}

Programbeskrivelse og programudførelse
Slide Indhold Stikord
Referencer 

Ordet 'program' bruges ofte i tvetydigt for både programbeskrivelsen og programudførelsen

  • Programbeskrivelse:

    • Kildeprogrammet (engelsk: source program)

    • En statisk tekst eller struktur, som skabes af programmøren

    • Oversættes til en lavniveau beskrivelse, som kan fortolkes af computeren

  • Programudførelse:

    • Det kørende program (engelsk: program execution)

    • En dynamisk process som defineres og begrænses af programbeskrivelsen

    • Mange begreber, som knytter sig til programudførelsen, har et direkte modstykke i programbeskrivelsen


Variable og assignment

Assignment
Slide Indhold Stikord
Referencer Lærebog 

Variable er pladser i lageret, hvis værdier kan ændres ved udførelse af assignment kommandoer.

Alle variable skal erklæres før brug.

Begrebet variabel: En variabel er en navngiven plads i computerens arbejdslager, som kan indeholde en værdi af en bestemt type.
Begrebet assignment: Et assignment er en kommando, som ændrer værdien af en variabel.

Syntax:

type variable1, variabel2..., variablen; 
variablei = expression;

Program: Et simplet program med variable og assignments.
#include <stdio.h>

int main(void) {

  int course, classes, students, average_pr_class;

  course = 1;
  classes = 3;
  students = 301;

  average_pr_class = students / classes;

  printf("There are %d students pr. class\n", average_pr_class);
  
  return 0;
}

Program: En variation af programmet.
#include <stdio.h>

int main(void) {

  int course = 1, classes = 3, students = 301, average_pr_class;

  average_pr_class = students / classes;

  printf("There are %d students pr. class\n", average_pr_class);
  
  return 0;
}

Initialisering
Slide Indhold Stikord
Referencer Lærebog 

Enhver variabel bør eksplicit tildeles en startværdi i programmet

Begrebet initialisering: Ved initialisering forstås tilskrivning af en startværdi til en variabel

Program: Et program med en uinitialiseret variabel.
#include <stdio.h>

int main(void) {

  int course, classes, students, average_pr_class;

  course = 1;
  /* classes uninitialized */
  students = 301;


  average_pr_class = students / classes;

  printf("There are %d students pr. class\n", average_pr_class);
  printf("course: %d, classes: %d, students: %d\n", 
          course, classes, students);
  
  return 0;
}

Program: Program output.
There are 0 students pr. class
course: 1, classes: 1107341000, students: 301

Hvis man undlader at initialisere variable risikerer man at der opstår tilfældige fejl, når man kører programmet

Assignments af formen i = i + 1
Slide Indhold Stikord
Referencer Lærebog 

Der er ofte behov for at tælle en variabel op eller ned.

Dermed optræder variablen både på venstre og højre side af assignmentsymbolet

  • Antag at i har værdien 7

  • Beregning af i = i + 1

    • Udtrykket i + 1 på venstre side af assignmentsymbolet beregnes til 8

    • Værdien af variablen i ændres fra 7 til 8

Program: Et program med forskellige optællinger og nedtællinger. annotation
#include <stdio.h>

int main(void) {

  int i = 3, j = 7, k = 9;

  i = i + 1;
  j = j - i;
  k = k * j;

  printf("i: %d, j: %d, k: %d\n", i, j, k);
  
  return 0;
}

Program: Output fra ovenstående program.
i: 4, j: 3, k: 27

Et første blik på datatyper i C
Slide Indhold Stikord
Referencer Lærebog 

C understøtter forskellige fundamentale datatyper

Tabel.
Konkrete typerEksempler på værdier
Heltalint
short
long
10
5
111L
Reelle taldouble
float
long double
10.5
5.5F
111.75L
Tegnchar'A'
'a'
Tekststrengechar *"Computer"
"C"
 

Henvisning

Program: Illustration af konkrete typer i et C program.
#include <stdio.h>

int main(void) {

  int i = 10;
  short j = 5;
  long k = 111L;

  double x = 10.5;
  float y = 5.5F;
  long double z = 111.75L;

  char c = 'A';
  char d = 'a';

  char *s = "Computer", *t = "C";  

  return 0;
}

Foruden de forskellige typer af tal understøtter C også heltal i oktal og hexadecimal notation (eksempelvis 0123 og 0x1bc ).


Udtryk og operatorer

Udtryk
Slide Indhold Stikord
Referencer Lærebog 

Udtryk er sammen med kommandoer de vigtigste 'byggesten' i ethvert program

Begrebet udtryk: Et udtryk er et programfragment der beregnes med henblik på returnering af en værdi, som tilhører en bestemt type.

Et udtryk opbygges typisk af operatorer og operander.

Antag at værdien af x er 14 og y er 3:

Tabel. Forskellige udtryk med udtrykkenes typer og værdier.
UdtrykTypeVærdi
7Heltal7
xHeltal14
x + 6Heltal20
x / 3Heltal4
x % 3Heltal2
x <= yBooleanfalse
x + y * 3 >= y % x - 5Booleantrue
 

Beregning af sammensatte udtryk
Slide Indhold Stikord
Referencer Lærebog 

Problemstilling: Hvordan fortolkes udtryk som er sammensat af adskillige operatorer og operander?

  • Indsæt parenteser som bestemmer beregningsrækkefølgen

    • x + y * 3 >= y % x - 5

    • (x + (y * 3)) >= ((y % x) - 5)

  • Benyt regler som definerer hvilke deludtryk (operander) der beregnes før andre

    • Multiplikation, division og modulus beregnes før addition og subtraktion

    • Addition og subtraktion beregnes før sammenligning

C prioriterer operatorer i 15 forskellige niveauer. Men det er også muligt - og ofte nødvendigt - at sætte parenteser omkring deludtryk

Prioritering af operatorer
Slide Indhold Stikord
Referencer Lærebog 

En simplificeret operator prioriterings tabel med de mest anvendte operatorer.

Udtryk som bruger operatorer fra et højt niveau beregnes før udtryk med operatorer fra et lavere niveau.

Tabel. En operatorprioriteringstabel for udvalgte operatorer.
NiveauOperatorer
14+unary      -unary
13*      /      %
12+      -
10<      <=      >      >=
9==      !=
5&&
4||
 

Associering af operatorer
Slide Indhold Stikord
Referencer Lærebog 

Problemstilling: Prioriteringstabellen fortæller ikke hvordan vi beregner udtryk med operatorer fra samme niveau

  • 10 - 1 - 9 / 3 / 2

    • Operator prioriteringen fortæller at divisionerne foretages før subtraktionerne

    • Associeringsreglerne fortæller at der sættes parenteser fra venstre mod højre

    • ((10 - 1) - ((9 / 3) / 2))

    • Resultatet er 8

Program: Et C program med udtrykket 10 - 1 - 9 / 3 / 2.
#include <stdio.h>

int main(void) {

  int res1, res2, res3;

  res1 =  10 - 1 - 9 / 3 / 2;

  res2 =  ((10 - 1) - ((9 / 3) / 2));    
  /* left to right associativity */

  res3 =  (10 - (1 - (9 / (3 / 2))));   
  /* right to left associativity */

  printf("res1 = %d, res2 = %d, res3 = %d\n", res1, res2, res3);
  
  
  return 0;
}

Program: Output fra ovenstående program.
res1 = 8, res2 = 8, res3 = 18

De fleste operatorer i C associerer fra venstre mod højre

Operator tabel for C
Slide Indhold Stikord
Referencer Lærebog 

Tabel. Den fulde operator prioriteringstabel for C.
NiveauOperatorerAssociativitet
16()      []      ->      .      ++postfix      --postfix left to right
15++prefix      --prefix      !      ~      sizeof(type)      +unary      -unary      &unary,prefix      *unary,prefixright to left
14(type name) Castright to left
13*      /      %left to right
12+      -left to right
11<<      >>left to right
10<      <=      >      >=left to right
9==      !=left to right
8&left to right
7^left to right
6|left to right
5&&left to right
4||left to right
3?:right to left
2=      +=      -=      *=      /=      >>=      <<=      &=      ^=      |=right to left
1, left to right
 

C by Dissection side 611


Assignment operatorer i C

Blandede udtryk og assignments i C
Slide Indhold Stikord
Referencer Lærebog 

Udtryk i C er urene i forhold til vores hidtidige forklaring af udtryk

Årsagen er at et assigment opfattes som et udtryk i C

  • Antag at i har værdien 7

  • Programfragmentet a = i + 5 er et udtryk i C

    • Udtrykket beregnes som a = (i + 5)

      • Operatoren + har højere prioritet end operatoren =

    • Som en sideeffekt ved beregningen af udtrykket tildeles variablen a værdien 12

    • Værdien af udtrykket a = i + 5 er 'højresidens værdi', altså 12.

Program: Brug og misbrug af assignments i udtryk.
#include <stdio.h>

int main(void) {

  int a, b, c, d;

  a = b = c = d = 7;  /* a = (b = (c = (d = 7)))  */
  printf("a: %d, b: %d, c: %d, d: %d\n", a,b,c,d);
  
  a = (b = 2) + (c = 3) - (d = 1);
  printf("a: %d, b: %d, c: %d, d: %d\n", a,b,c,d);
  
  return 0;
}

Program: Output fra ovenstående program.
a: 7, b: 7, c: 7, d: 7
a: 4, b: 2, c: 3, d: 1

Assignment operatorerne har meget lav prioritering, hvilket indebærer at tildelningen af variablen altid sker efter beregningen af 'højresiden'.

Assignment operatorerne associerer fra højre mod venstre.

Increment og decrement operatorerne
Slide Indhold Stikord
Referencer Lærebog 

C understøtter særlige operatorer til optælling og nedtælling af variable.

Man kan også bruge ordinære assignments ala i = i + 1 og i = i - 1 til dette.

  • Antag at variablen i har værdien 7

  • Prefix formen: ++i

    • Tæller først variablen i op fra 7 til 8

    • Returnerer dernæst værdien 8 som resultat af udtrykket

  • Postfix formen: i++

    • Returnerer først værdien 7 som resultatet af udtrykket

    • Tæller dernæst variablen i op fra 7 til 8

Eksempel: increment og decrement operatorerne
Slide Indhold Stikord
Referencer Lærebog 

Vi viser her et illustrativ eksempel på increment og decrement operatorer

Program: Illustration af increment og decrement operatorerne.
#include <stdio.h>

int main(void) {
  
  int i = 3, j = 4, k = 5;
  int res1, res2, res3;
  
  i++; j--; ++k;
  /* i is 4, j is 3, k is 6 */

  printf("i: %d, j: %d, k: %d\n", i,j,k);

  res1 = --i;
  res2 = j++;
  res3 = --k;

  printf("res1: %d, res2: %d, res3: %d\n", res1, res2, res3);
  printf("i: %d, j: %d, k: %d\n", i,j,k);
  
  return 0;
}

Program: Output fra ovenstående program.
i: 4, j: 3, k: 6
res1: 3, res2: 3, res3: 5
i: 3, j: 4, k: 5

Sondringen mellem prefix og postfix relaterer sig til tidspunktet for op/nedtælling af variablen relativ til fastlæggelsen af returværdien.

Hvis man bruger increment- og decrementoperatorerne som kommandoer, er det ligegyldigt om der anvendes prefix eller postfix form.

Andre assignment operatorer
Slide Indhold Stikord
Referencer Lærebog 

C understøtter akkumulerende assignment operatorer for +, -, *, / and flere andre binære operatorer

Syntax:

variable op= expressions   

Syntax:

variable = variable op (expression)

Program: Et program med forskellige optællinger og nedtællinger - modsvarer tidligere vist program.
#include <stdio.h>

int main(void) {

  int i = 3, j = 7, k = 9;

  i += 1;      /*  i = i + 1; */
  j -= i;      /*  j = j - i; */
  k *= j;      /*  k = k * j; */

  printf("i: %d, j: %d, k: %d\n", i, j, k);
  
  return 0;
}

Program: Output fra ovenstående program.
i: 4, j: 3, k: 27

Henvisninger


Udskrivning og indlæsning

Udskrivning med printf
Slide Indhold Stikord
Referencer Lærebog 

Kommandoen printf kan udskrive data af forskellige fundamentale typer.

Formateringen af output styres af en kontrolstreng, som altid er første parameter.

Program: Udskrivning af variable af forskellige typer med printf.
#include <stdio.h>

int main(void) {

  int i = 10;
  short j = 5;
  long k = 111L;
  printf("i: %d, j: %3hd, k: %10.5ld\n", i, j, k);

  double x = 10.5;
  float y = 5.5F;
  long double z = 111.75L;
  printf("x: %f, y: %5.2f, z: %Le\n", x, y, z);

  char c = 'A';
  char d = 'a';
  printf("c: %c, d: %d\n", c, d);

  char *s = "Computer", *t = "C";
  printf("s: %s,\nt: %s\n", s, t);  

  return 0;
}

Program: Output fra ovenstående program.
i: 10, j:   5, k:      00111
x: 10.500000, y:  5.50, z: 1.117500e+02
c: A, d: 97
s: Computer,
t: C

Henvisninger

  • Egenskaber af printf kommandoen:

    • Indlejring af formaterede parametre i en fast tekst.

    • Én til én korrespondance mellem konverteringstegn og parametre efter kontrolstrengen.

    • Mulighed for at bestemme antal tegn i output, antal cifre før og efter 'komma', venstre/højrestilling, og output talsystem.

    • Antallet af udlæste tegn returneres

Indlæsning med scanf
Slide Indhold Stikord
Referencer Lærebog 

Kommandoen scanf fortolker tegn med henblik på indlæsning af værdier af de fundamentale datatyper

Fortolkning og styring af input sker med en kontrolstreng, analogt til kontrolstrengen i printf.

Program: Indlæsning og summering af tal.
/* Sums are computed. */

#include <stdio.h>

int main(void)
{
   int     cnt = 0;
   float   sum = 0.0, x;

   printf("The sum of your numbers will be computed\n\n");
   printf("Input some numbers:  ");
   while (scanf("%f", &x) == 1) {
      cnt = cnt + 1;
      sum = sum + x;
   }
   printf("\n%s%5d\n%s%12f\n\n",
      "Count:", cnt,
      "  Sum:", sum);
   return 0;
}

Henvisning

  • Egenskaber af scanf kommando:

    • De indlæste data indlæses i angivne lageraddresser

    • Antallet af gennemførte indlæsninger/konverteringer returneres

Et input output eksempel
Slide Indhold Stikord
Referencer Lærebog 

Program: Et program der beregner arealet af en cirkel.
#include <stdio.h>

#define PI 3.141592653589793

int main(void)
{
   double radius;

   printf("\n%s\n\n%s",
      "This program computes the area of a circle.",
      "Input the radius:  ");
   scanf("%lf", &radius);
   printf("\n%s\n%s%.2f%s%.2f%s%.2f\n%s%.5f\n\n",
      "Area = PI * radius * radius",
      "     = ",  PI, " * ",  radius, " * ",  radius,
      "     = ", PI * radius * radius );
   return 0;
}

Program: Samme program med farvede fremhævninger af kontrolstreng og parametre til printf.
#include <stdio.h>

#define PI 3.141592653589793

int main(void)
{
   double radius;

   printf("\n%s\n\n%s",
      "This program computes the area of a circle.",
      "Input the radius:  ");
   scanf("%lf", &radius);
   printf("\n%s\n%s%.2f%s%.2f%s%.2f\n%s%.5f\n\n",
      "Area = PI * radius * radius",
      "     = ",  PI, " * ",  radius, " * ",  radius,
      "     = ", PI * radius * radius );
   return 0;
}

Program: Input til og output fra programmet.
This program computes the area of a circle.

Input the radius:  5.3

Area = PI * radius * radius
     = 3.14 * 5.30 * 5.30
     = 88.24734


Opgaver og Praktiske Detaljer

Praktiske detaljer
Slide Indhold Stikord
Referencer 

En huskeliste med praktiske detaljer

  • Øvelser i grupperum

    • Grupperne er listet på kursushjemmesiden

    • Sig straks til hvis vi har glemt en gruppe, eller hvis gruppeangivelsen er forkert

    • Sæt en seddel på døren hvis I løser opgaver i et andet rum

    • Papirkurv uden for døren betyder hjælp

  • Opgaveløsninger

    • Ved hver øvelsesgang frigives der links til opgaveløsninger kl. 11.00

  • Pensum

  • CD med Windows software relevant for C programmering

    • Omdeles ved første kursusgang - én pr. gruppe

  • Hjemmeside og slides

    • Lektionssiderne færdiggøres en uge før forelæsning og øvelser

    • Slides til alle lektioner foreligger ved kursusstart, men vil blive revideret tæt på selve lektionen

    • Det er muligt at se alle slides på én side.

    • Der findes en sammenskrevet udgave af undervisningsmaterialet, i HTML såvel som PDF

Tidsenheder
Slide Indhold Stikord
Referencer 

Opgave 12 og 13 (side 37 og 38) handler om at udregne timer, minutter og sekunder fra et antal sekunder

Find det ufærdige program på nettet via kursets hjemmeside (exer_12.c).

  • Aspekter af opgaven

    • Opg 12: Udformning af en passende printf kommando som udskriver fast tekst og nogle heltal

    • Opg 13: Videre udregning timer og minutantal mellem 0 og 59

      • Algoritmisk problem: Hvilke beregninger skal foretages (i hvilken rækkefølge).

      • Brug af modulus operatoren %

      • Meget gerne brug af symbolske konstanter ala SECONDS_PER_MINUTES og SECONDS_PER_HOUR

Programformatering
Slide Indhold Stikord
Referencer 

Opgave 15 side 72 handler om konventionerne for programformatering

  • Aspekter:

    • Opgaveformuleringen giver et dårligt formateret program: '08_terrible.c'.

    • Kør programmet som det er.

    • Forhold jer til de anbefalede konventioner for programopstilling og indrykning

    • Vælg bedre navne til variable

    • Kør programmet igen

Læs side 25 om 'Style'!

Power of 2
Slide Indhold Stikord
Referencer 

Opgave 10 side 71 handler om forskellen mellem prefix og postfix increment udtryk (++i kontra i++) i programmet øverst side 58

  • Aspekter:

    • Tænk først problemstillingen igennem

    • Afprøv det eksisterende program: 02_pow_of_2.c

    • Forudsig forandringen ved at ændre prefix increment til postfix increment

    • Find ud af om forudsigelsen er rigtig ved at køre det ændrede program

Cirkelopgave
Slide Indhold Stikord
Referencer 

Opgave på 'ugesedlen' som beder jer finde ud om et givet punkt er inden i en cirkel med en bestemt radius

  • Aspekter:

    • Generel, simpel programmering, herunder input og output

    • Får behov for en if kontrolstruktur (dækkes næste gang, se evt. side 85).

    • Får behov for sammenligning af to tal med < eller <= (se evt. side 78).

    • Vær bevidst om god programopstilling og god kommentering


Samlede referencer
Indhold Stikord
Foldoc: C
Web page from which the photo is taken
Oversigt over typer fra 5. lektion
Operatorer, prioriteter og associeringer
Tidligere slide med akkumulerende assignments
Mere detaljeret beskrivelse af printf
Tidligere slide med et første kig på typer
Mere detaljeret beskrivelse af scanf

 

Kapitel 1: Introduktion til programmering i C
Kursets hjemmeside     Forfatteren's hjemmeside     Om frembringelsen af disse sider     Forrige lektion (top)     Næste lektion (top)     Forrige lektion (bund)     Næste lektion (bund)     
Genereret: 7. Juli 2010, 15:09:42