Mode
Slides
Presentation
Remote control
Send
Listen
Press F11 to switch to fullscreen.
C: Cours 1
1
Organisation
C + Matlab
2
Semaines
3
C
4
La syntaxe C
Hello world
5
Variables
6
Printf
7
Structures
8
Operateurs
9
If
10
For, while
11
Tableaux
12
Fonctions
13
Documentation
14
Semaine 1
Syntaxe C
SSIE Programmation en C, Thomas Lochmatter, 2019
1
C Samuel BancalJean-Daniel Bonjour Matlab/Octave, Python Thomas Lochmatter Informatique pour l'ingénieur de l'environnement langages de programmationhaut-niveau langage de programmationbas-niveau vendredi matin mercredi après-midi Examen 35% Examen intermédiaire 20%Projet 45%
2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 Examen intermédiaire Projet Mercredi après-midi Cours Exercices / projet GR B 001 GR B 330 13:15 à 14:00 14:00 à 17:00 exercices sur ordinateur, 20% rendu + défense, 45% chapitres approfondis, projet chapitres de base, exercices
3

Le langage C ...

... date de 1972, mais est toujours utilisé ...

... si la vitesse d'exécution est prioritaire.

développement exécution
Python rapide lent
Calcul scientifique, prototypage, ...
C lent rapide
Linux kernel, interpréteur Python, traitement d'images, ...

... sur des systèmes avec très peu de puissance de calcul et de mémoire.

SHT85
Capteurs numériques, microcontrolleurs, Arduino, ...
4

Hello world

	#include <stdio.h>

	int main(int argc, char * argv[]) {
		printf("Hello world!\n");
		return 0;
	}
		# Compiler et exécuter
		$$ gcc helloworld.c -o helloworld -lm
		$$ ./helloworld
		Hello world!
	
Lorsque le programme est lancé, les instructions dans la fonction main sont exécutées. printf affiche un text. \n est le retour à la ligne. return 0 quitte le programme normalement (sans erreur). Chaque instruction est suivie par un ;.
5

Variables et types

variables, declarations, types, assignments
	// Déclaration de variables
	int quantite = 7;
	double prix = quantite * 4.5;
	char * produit = "boissons";

	// Modification
	prix = quantite * 5.2;
	produit = "boissons chaudes";
Chaque variable a un type. On le note la première fois qu'on utilise la variable.
6

Printf

	int quantite = 7;
	double prix = quantite * 4.5;
	char * produit = "boissons";

	printf("%d %s coûtent %f.\n", quantite, produit, prix);
	printf("%d %s coûtent %0.2f.\n", quantite, produit, prix);
7 boissons coûtent 31.500000.
7 boissons coûtent 31.50.
int entier %d
float, double nombre à virgule %f, %0.2f
char * texte, chaine de caractères,
cf. cours de la semaine 2
%s
7

Types composés, structures

	struct WGS84Coordinate {
		double longitude;
		double latitude;
		float altitude;
	};

	struct WGS84Coordinate matterhorn;
	matterhorn.longitude = 45.97639;
	matterhorn.latitude = 7.65833;
	matterhorn.altitude = 4478;
cf. cours de la semaine 3.
8

Operateurs et fonctions intégrées

	// Operateurs arithmétiques
	double resultat = (a + b) * (a - b) / c;

	// Fonctions mathématiques de la bibliothèque standard
	// sqrt, fabs, floor, ceil, log, exp, pow, sin, cos, ...
	#include <math.h>
	double valeurAbsolue = fabs(nombre);
	double distance = sqrt(x * x + y * y);
	...

	// Autres fonctions de la bibliothèque standard
	#include <stdlib.h>
	int valeurAbsolue = abs(entier);
	int entier = atoi(text);
	double nombre = atof(text);
	...
C standard library sur Wikipedia.
9

Conditions, if

branches
			if (countryCode == 41) {
				printf("Suisse\n");
				printf("Code: CH\n");
			} else if (countryCode == 33) {
				printf("France\n");
				printf("Code: F\n");
			} else {
				printf("Un autre pays ...\n");
			}
		
			double rabais = 0.0;

			if (quantite >= 100 || prix > 200) {
				rabais = 10.0;
			}

			printf("Rabais: %f %%\n", rabais);
		
L'opérateur || signifie "ou" et && signifie "et"
10

Boucles for et while

for loop, while loop
			for (int i = 0; i < 10; i++) {
				printf("%d\n", i);
			}

			// Structure
			for (depart; condition; increment) {
				...
			}
		
			int i = 1;
			while (i < 10) {
				printf("%d\n", i);
				i = i + 1;
			}
		
i++ et i += 1 et i = i + 1 sont équivalents, et ajoutent 1 à la variable i.
11

Tableaux

arrays
	// Option 1: initialisation directe
	double temperatures[] = {20.4, 21.3, 26.0, 23.2, 23.0};

	// Option 2: créer le tableau, puis le remplir
	double temperatures[5];
	temperatures[0] = 20.4;
	temperatures[1] = 21.3;
	...
	temperatures[4] = 23.0;

	// Afficher les valeurs
	for (int i = 0; i < 5; i++) {
		printf("Jour %d: %0.1f °C\n", i + 1, temperatures[i]);
	}
Résultat
Jour 1: 20.4 °C
Jour 2: 21.3 °C
...
Jour 5: 23.0 °C
Les valeurs d'un tableau peuvent être modifiées, mais sa longueur reste constante. Le type du tableau est double *.
12

Fonctions

functions
	#include <stdio.h>

	double calculePrix(int quantite, double prixUnitaire, double rabaisPourcent) {
		double rabaisFacteur = 1 - rabaisPourcent / 100;
		return quantite * prixUnitaire * rabaisFacteur;
	}

	void afficheTotal(double prix) {
		printf("Total: %0.2f\n", prix);
	}

	int main(int argc, char * argv[]) {
		double prix = calculePrix(12, 4.5, 10);
		afficheTotal(prix);
		return 0;
	}
	
On ne peux appeler que des fonctions plus haut dans le code. Chaque argument a son type. return quitte la fonction.
13

Documentation

Sur internet ☺

C standard library sur Wikipedia

C reference sur cppreference.com

Chercher "man nom de la fonction"

Taper "man nom de la fonction" dans le terminal

Stackoverflow

... ou demander a un assistant (Hugo, Paul, ou moi)

14