Giter Club home page Giter Club logo

tdc's Introduction

TD: C

Notes & Cours

gcc

gcc (GNU C Compiler) est un compilateur C, il permet de convertir le C en binaire

Compilation

Compiler un fichier .c:

gcc fichier.c

La sortie sera par défaut a.out si celui-ci n'existe pas déjà

Execution

Executer le fichier compilé:

./a.out

Options

gcc fichier.c -o fichier_de_sortie # Permet de choisir le fichier de sortie
gcc fichier.c -lm # En cas d'utilisation de math.h

Fonction main

main est la fonction exécutée automatiquement par défaut lorsque le code est lancé, on peut y récupérer les arguments donnés en entrée:

int main(int argc, char *argv[]) {
    // argc: Contient le nombre d'arguments donnés en entrée
    // argv: Contient les arguments donnés en entrée sous forme d'un tableau de tableaux de caractères

    // Par défaut (sans arguments):
    //  argc = 1
    //  argv[0] = Nom de votre script

    return 0; // Valeur de sortie
}

Aussi bien qu'on puisse traiter les arguments en entrée, on peut donner une valeur de sortie pour les programmes qui appellent le code: return 0 signifie qu'il n'y a pas eu d'erreur et return 1 renvoie une erreur.

Fonction rand

Graine

La "graine" (seed) permet à la fonction rand de changer ses paramètres: la fonction rand prend des valeurs de la graine l'une aprés l'autre à chaque appel

srand(graine); // Définit la "graine" pour la fonction aléatoire

On définit donc la graine en fonction du temps, ce qui nous permet d'avoir des valeurs aléatoires différentes à chaques secondes:

srand(time(NULL));

Valeurs

Random entre [0; x[:

rand() % x;

Random entre [0; x]:

rand() % (x + 1);

Random entre [a; b[:

(rand() % (b - a)) + a;

Pointeurs

Les pointeurs permettent manipuler les adresses des variables et aussi de manipuler leurs valeurs en mémoire

Definition de pointeur

int a =  5;     // a est un entier de valeur 5
int *ptr = &a;  // ptr est un pointeur (*) d'entier (int) pointant vers l'adresse (&) de a

Utilisation

  • *ptr donne la valeur de a
  • ptr donne l'adresse de a
  • &a donne aussi l'adresse de a
  • &ptr donne l'adresse du pointeur

Cas des tableaux

Définir un pointeur sur un tableau et incrémenter son adresse permet de parcourir les valeurs du tableau

int tab[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int *ptr = tab; // Avec les tableaux le '&' devant la variable n'est pas nécessaire, un tableau est en arrière-plan, un pointeur

// tab[0] = *(ptr)
// tab[1] = *(ptr + 1)
// tab[x] = *(ptr + x)

Charte de nommage

  • La base: Ne pas utiliser de chiffres et caractères spéciaux (autre que le "underscore": _) dans les noms de variables, fonctions, structures,...
  • CamelCase: Commencer les noms d'élement par une miniscule et chaque nouveau mot par une majuscule (ex: calculDistance)
  • Constante: Définir les constances en majuscules (ex: #define SIZE 10)

Exercices

Compilation

A l'aide d'un Makefile la compilation est simplifiée (sous linux):

make build EXERCICE=1 # Pour compiler l'exercice 1

Les fichiers de sorties sont: exon avec n les numéro de l'exercice

tdc's People

Contributors

xisabla avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.