« Apprendre le langage C en 10 minutes » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
Ligne 227 : Ligne 227 :


int *nombre = &bicyclettes;
int *nombre = &bicyclettes;
Les tableaux s'initialisent comme suit:
int tableau[3];
tableau[0] = 1983;
tableau[1] = 1989;
tableau[2] = 1995;
Attention, les index des tableaux commencent à 0 et leur nom sans crochet est un pointeur sur l'adresse de la première case du tableau
printf("%d", tableau);
Si on demande la variable qui se trouve à cette adresse, on obtient la première valeur du tableau, on fera:
printf("%d", *tableau);
Ce qui correspond à
printf("%d", tableau[0]);
Pour avoir la 2e variable, on fera:
printf("%d", tableau[1]);
Une chaîne de caractères est un tableau de type char.

Version du 1 janvier 2024 à 17:14

Modèle:Page en construction

Petit programme

  1. include <stdio.h>

int main(void) {

   printf("Bonjour tout le monde !\n");
   return 0;

}

D'abord on inclue la bibliothèque stdio.h, responsable des entrées/sorties standards. Cela nous permettra d'utiliser la fonction printf, qui permet d'ajouter du texte dans le terminal.

Ensuite on définit la fonction appelée au démarrage du programme, main. Cette fonction renvoit un entier (int) et ne prend rien en paramètre (void). Son code est contenu dans des accolades.

Puis on appelle la fonction printf, qui va afficher la chaîne « Bonjour tout le monde ! » suivie d'un retour à la ligne (\n).

Enfin, on renvoit 0, code qui indique que tout s'est terminé normalement (return 0;)

Pour exécuter ce programme, on va le compiler:

gcc bonjour.c

La compilation donne un fichier exécutable appelé a.out

On lui donne le droite de s'exécuter avec :

chmod +x ./a.out

Puis on l'exécute avec :

./a.out


Variables

Les variables sont identifiées par leur nom et leur type. Elles peuvent être globales ou locales, si elles sont à l'intérieur d'une fonction ou d'une partie de fonction. Elles sont initialisées grâce au symbole =

  1. include <stdio.h>
  2. include <stdlib.h>

double vitesse ; /* 'vitesse' est une variable globale de type réel */

int main(int argc, char *argv[]) {

 int bicyclette = 4; /* 'bicyclettes' est une variable de type entier locale à la fonction 'main', elle vaut 4 */
 printf("Vous avez %d vélos\n", bicyclettes);
 return 0;

}

Il existe différents types de variables, voici quelques exemples :

int (nombres entiers courts), long (longs nombres entiers), float et double pour les nombres décimaux.

Ici dans le printf, on a un % suivi d'une lettre, qui permet de dire quoi afficher. "%d" représente int, "%ld" représente long, %f float ou double.

On peut récupérer une variable avec scanf:

int main(int argc, char *argv[]) {

 int bicyclettes = 0; // On initialise la variable à 0
 
 printf("Combien de vélos sont dans votre garage ? ");
 scanf("%d", &bicyclettes); // On demande d'entrer l'âge avec scanf
 printf("Vous avez %d vélos dans votre garage.\n", bicyclettes);
      
 return 0;

}

Opérations sur les nombres

On va utiliser les opérateurs standards

printf("2 + 3 = %d", resultat);

printf("4 - 3 = %d", resultat);

printf("3 * 2 = %d", resultat);

printf("4 / 2 = %d", resultat);

printf("9.0 / 2.0 = %f", resultat);

Il y a aussi des raccourcis.

variable = variable + 1; équivaut à variable++

variable = variable - 1; équivaut à variable--

variable = variable * 3; équivaut à variable *= 3;

Chaînes de caractères

Pour utiliser les chaînes de caractères, il faut inclure la bibliothèque pour les chaînes

  1. include <string.h>

Un autre caractère courant dans les ch est \t pour la tabulation.


Comparaison de chaînes: strcmp("manchot","linux"); 0 est renvoyé si elles sont identiques Longueur: strlen("manchot")

Conditions

Voici un exemple avec if, else if et else:

if (taille == 85a) {

   printf("Tout ce qui est petit est joli !");

} else if (taille == 90b) {

   printf("Tout ce qui est moyen est bien !");

} else if (taille == 95c) {

   printf("Quand c'est gros c'est beau !");

} else {

   printf("Chaque taille a son charme");

}

Le même exemple avec switch:

switch (taille) { case "85a":

 printf("Tout ce qui est petit est joli !");
 break;

case "90b":

 printf("Tout ce qui est moyen est bien !");
 break;

case "95c":

 printf("Quand c'est gros c'est beau !");
 break;

default:

 printf("Chaque taille a son charme");
 break;

}

On peut aussi définir les conditions avec ? et :

jours = (bissextile) ? 366 : 365;

est équivalent à

if (bissextile)

 jours = 366;

else

 jours = 365;

Boucles

Une boucle en programmation est une structure qui permet de répéter un bloc de code plusieurs fois, en fonction d'une condition. Elle permet d'exécuter des instructions de manière itérative jusqu'à ce que la condition spécifiée soit satisfaite.

La boucle "while" exécute un bloc de code tant que la condition spécifiée est vraie.

int nombre = 0;

while (nombre < 5) {

   printf("La valeur est %d\n", nombres);
   nombres++;

}

La boucle "for" parcourt un ensemble de valeurs et exécute quelque chose pour chaque valeur.

int compteur;

for (nombre = 0 ; nombre < 5 ; nombre++) {

   printf("La valeur est %d\n", nombre);

}

Commentaires

Les commentaires peuvent être inclus entre /* et */, dans ce cas ils peuvent s'étaler sur plusieurs lignes :

/*

  un commentaire 
  deux commentaires
  • /

Ou alors précédés de //

// un commentaire // deux commentaires


Fonctions

  1. include <stdio.h>

int factorielle(int n) {

 if (n == 0 || n == 1) {
   return 1;
 } else {
   return n * factorielle(n - 1);
 }

}

int main() {

 int num;
 
 printf("Entrez un nombre: ");
 scanf("%d", &num);
 
 int result = factorielle(num);
 
 printf("Factorielle de %d est %d\n", num, result);
 
 return 0;

}


Les pointeurs en C sont des variables spéciales qui contiennent l'adresse mémoire d'une autre variable. Ils sont utilisés pour manipuler et accéder directement à cette variable en utilisant cette adresse.

   nombre correspond à la valeur de la variable ;
   &nombre correspond à l'adresse de la variable.

Pour créer une variable de type pointeur, on rajoute le symbole * devant son nom.

int *nombre = &bicyclettes;

Les tableaux s'initialisent comme suit:

int tableau[3];

tableau[0] = 1983; tableau[1] = 1989; tableau[2] = 1995;

Attention, les index des tableaux commencent à 0 et leur nom sans crochet est un pointeur sur l'adresse de la première case du tableau

printf("%d", tableau);

Si on demande la variable qui se trouve à cette adresse, on obtient la première valeur du tableau, on fera:

printf("%d", *tableau);

Ce qui correspond à

printf("%d", tableau[0]);

Pour avoir la 2e variable, on fera:

printf("%d", tableau[1]);


Une chaîne de caractères est un tableau de type char.