Progc 1
Progc 1
Langage C
3: Les entrées-sorties
4: Les opérateurs
6: Les tableaux
8: Les fonctions
Introduction 3
1) Présentation du langage C
Qu'est-ce que le C ?
Il est actuellement l’un des langages les plus utilisés dans le monde
Langage de haut niveau
Il est gratuit et évolutif • Plus simple
• Java
• Plus éloigné du fonctionnement • C#.net
de la machine • Python
• Contrôle sur le matériel limité, …
Auteur du langage C masqué par l’abstraction
• Gestion de la mémoire
• Dennis Ritchie : automatique
informaticien américain
Langage de bas niveau
• Plus complexe • C
• Plus proche du fonctionnement • C++
de la machine • Objective-C
• Contrôle sur le matériel total, …
Le but initial était de développer un langage qui
permettrait de réécrire le système d'exploitation UNIX accès direct
• Gestion de la mémoire
manuelle
Binaire
Classification des langages de programmation
Introduction 4
1) Présentation du langage C
Paradigme de programmation utilisé ?
Paradigme ?
Un paradigme en informatique est une approche ou un modèle de programmation qui
définit la manière dont les programmes informatiques sont structurés, conçus et exécutés.
Il existe plusieurs paradigmes de programmation, mais on peut les regrouper en deux grandes
familles :
a) La programmation impérative :
Le paradigme de programmation le plus ancien
Dans la programmation impérative, vous spécifiez explicitement les actions à effectuer,
ainsi que l'ordre dans lequel elles doivent être exécutées.
b) La programmation déclarative :
Dans la programmation déclarative, vous indiquez généralement le résultat souhaité ou les
règles à suivre, et le système informatique détermine comment accomplir la tâche.
Introduction 5
1) Présentation du langage C
Paradigme de programmation utilisé ?
Programmation procédurale :
Ada, Pascal, C
Programmation Programmation orientée objet :
impérative C++, Java
Tous les langages Programmation concurrente :
de programmation Ada95
Programmation fonctionnelle :
Programmation LISP, SCHEME
déclarative Programmation logique :
PROLOG
Introduction 6
1) Présentation du langage C
La programmation procédurale ?
Comme son nom l’indique, la programmation procédurale contient une procédure étape
Les problèmes sont décomposés en petites parties et ensuite, pour résoudre chaque
2) Caractéristiques de C
Pourquoi utiliser C ?
Il est capable de très bien fonctionner même lors de la gestion de nombreuses données.
2) Caractéristiques de C
Pourquoi utiliser C ?
Exemples d’utilisation :
Un fichier source est un simple fichier texte dont l'extension conventionnellement .c pour les
sources en langage C.
Un programme C peut être composé d'un grand nombre de modules, chaque module est composé
de fonctions. Parmi l'ensemble des modules, une fonction particulière, nommée main (), doit
obligatoirement exister. Elle doit être unique dans le programme. Ce sous-programme est appelé
généralement programme principal.
Remarque : Le langage C distingue les minuscules, des majuscules. Les mots réservés du langage C
doivent être écrits en minuscules : la fonction principale doit être appelée main() en minuscule et
non Main() ou MAIN().
Introduction 11
Remarque : Il convient de noter que bien que certaines anciennes versions de compilateurs C
autorisent l'utilisation de void main()
Cela n'est pas conforme à la norme C et n'est pas recommandé.
Introduction 12
Une fois le fichier source (.c) écrit, il est nécessaire de convertir les instructions en un
langage machine (fichier .obj) pour que l'ordinateur exécute le programme (fichier .exe).
C'est le rôle du compilateur.
Un compilateur traduit le code source d'un programme écrit dans un langage évolué
(exemple langage C) en un langage utilisable par l'ordinateur ou langage machine.
.c : fichier source
compilateur
Il existe divers compilateurs de programmes écrits en C, parmi lesquels : gcc (GNU Compiler
d’analyser les éventuels problèmes et d'exécuter les programmes et tout cela sur un même
logiciel.
Hors-ligne (version desktop): Code:: Blocks , DEV C++, Microsoft Visual C++, etc.
Onlinegdb : [Link]
Mycompiler : [Link]
Programiz : [Link]
Introduction 14
3) Ouvrir l’environnement DEV C++ et passer les étapes (> suivant, > suivant …)
Menu
Explorateur de Projet/Classes
Barre de statut
Introduction 17
(Ctrl+N)
Introduction 18
Emplacement: Bureau
1) Les commentaires
• Les commentaires forment un moyen pour mettre du texte arbitraire dans le code source sans
que le compilateur C l'interprète
• L’utilisation des commentaires a plusieurs avantages :
Une documentation explicite du code pour faciliter la compréhension, la maintenance et la
réutilisation des programmes.
Explication du but et de la fonctionnalité du code.
Détails sur l'historique ou le raisonnement derrière le code.
Placement des droits d'auteur/licences, notes de projet, remerciements spéciaux, etc.
directement dans la source.
• Il existe deux types de commentaires en C :
Commentaires sur une seule ligne Commentaires sur multi-lignes
Il est introduit par double barre oblique // La séquence /* est utilisée pour déclarer le début du
Il commence dés // et se termine à la fin de la commentaire et */ est utilisée pour déclarer la fin du
ligne commentaire
Exemple : Exemple :
/*
// Ceci est un commentaire sur une seule Ceci est un bloc de commentaires.
ligne */
Les éléments de base du langage C 24
Rq : Plusieurs variables peuvent être déclarées simultanément si elles ont le même type (à travers une
séparation par des virgules)
Syntaxe :
type identificateur1 , identificateur2 ;
Exemple :
int jour, mois, annee ; // Cette déclaration définit trois variables (jour, mois, annee ) de type int
Les éléments de base du langage C 28
Rq : Il est possible également de faire plusieurs affectations en même temps en enchaînant plusieurs
fois l'opérateur =
Exemple :
int b;
int a = b = 0 ; // initialisation des deux variables a et b à 0
Les éléments de base du langage C 29
3) Les constantes
► Définition
Une constante est une donnée qui ne change pas au cours de l’exécution d’un programme.
Il peut arriver que la valeur d’une variable ne doive pas changer après l’initialisation.
Une constante peut être de n’importe quel type (entier, réel, caractère, … ).
► Déclaration et initialisation
Il existe deux méthodes simples pour définir des constantes : en utilisant le préprocesseur
#define ou le mot clé const.
Rq : Une constante doit être obligatoirement déclarée et initialisée sur la même ligne
Les éléments de base du langage C 30
3) Les constantes
► #define vs const
En C, const et #define présentent quelques différences en termes de fonctionnement et de cas
d'utilisation.
Aspect const #define
Sécurité des types Oui, conserve le type de la variable Non, aucune sécurité des types
Allocation de Alloue de la mémoire pour chaque Aucune allocation de mémoire
mémoire
variable
Portée Respecte la portée des blocs et fonctions Portée globale, pas de restrictions
Préprocesseur Ne peut pas être utilisé pour la Utilisé pour la substitution de texte
substitution de texte
Débogage Permet l'inspection des valeurs pendant Peut rendre le débogage plus difficile
le débogage
const est préférable lorsque vous avez besoin d'une variable constante avec une sécurité des types et
une portée,
#define est plus adapté pour la création de macros pour la substitution de texte ou la définition de
constantes simples sans souci de sécurité des types ou de portée.
Exemple : #define CARRE(x) ((x) * (x))
Les entrées-sorties
Les entrées / sorties en C 32
1) Introduction
Les entrées/sorties désignent les opérations de lecture et d'écriture de données (afficher des
Cette nomination est une abréviation de Standard Input and Output en anglais, qui signifie
"entrée/sortie standard".
#include <stdio.h>
Les entrées / sorties en C 33
Ce type d’opérations permet d’ afficher des informations à l'écran. Pour ce faire, il existe une
Ce type d’opérations permet d’ afficher des informations à l'écran. Pour ce faire, il existe une
Exemple :
Il est possible en C de saisir plusieurs variables de même ou de types différents en une seule
instruction.
Cela se fait en spécifiant le format de chaque variable dans la chaîne de format, séparé par
des espaces.
Cependant, l’entrée d’une autre chose que les valeurs attendues, cela peut entraîner des
erreurs de saisie ou de lecture incorrecte.
Exemple :
4) Exercice d’application
Écrire un programme en C qui permet d’afficher une date donnée par l’utilisateur (sous la forme
JJ/MM/AAAA)
Algorithme Affichage
Variables jour , mois , annee : entier
Début
Écrire ("Donner le jour : ") , Lire (jour)
Écrire ("Donner le mois : ") , Lire (mois)
Écrire ("Donner l’année : ") , Lire (annee)
Écrire (" La date est : " , jour, "/ ", mois, "/ " , annee)
Fin
Les entrées / sorties en C 38
4) Exercice d’application
Écrire un programme en C qui permet d’afficher une date donnée par l’utilisateur (sous la forme
JJ/MM/AAAA)
#include <stdio.h>
Algorithme Affichage
int main()
Variables jour , mois , annee : entier
{
Début
int jour , mois , annee ;
Écrire ("Donner le jour : ") , Lire (jour)
printf("Donner le jour :"); scanf ("%d",&jour) ;
Écrire ("Donner le mois : ") , Lire (mois)
printf("Donner le mois :"); scanf ("%d",&mois) ;
Écrire ("Donner l’année : ") , Lire (annee)
printf("Donner l’année :"); scanf ("%d",&annee)
Écrire (" La date est : " , jour, "/ ", mois, "/ " , annee)
;
Fin
printf("La date est : %d / %d / %d", jour, mois,
annee); return 0;
}
Les opérateurs
Les opérateurs 40
1) Introduction
Les opérateurs sont des symboles permettant d'effectuer des opérations sur des valeurs.
Une opération arithmétique peut faire intervenir des opérandes de types différents.
Dans ce cas, le compilateur effectue des conversions temporaires et automatiques de types.
Ces conversions sont effectuées suivant des règles qui possèdent une priorité descendante.
Les opérateurs 43
Règle 1 est prioritaire par rapport à Règle 2, Règle 2 est prioritaire par rapport à Règle 3 et ainsi
de suite.
Les opérateurs 44
Ce type d’opérateur permet d’effectuer des tests logiques sur des données de types booléen
et/ou binaire.
Le résultat de ces tests est une valeur entière : true (1) / false (0)
Rq : Pour afficher une variable booléenne, on utilise le format %d car bool est un type entier (0 pour
false, 1 pour true)
Les opérateurs 46
Ce type d’opérateur ne nécessite qu'un opérande. Ils sont appelés opérateurs unaires.
Ce type d’opérateur permet de tester une expression et de retourner une valeur suivant le
résultat du test.
Syntaxe :
Expression ? Valeur renvoyée si Expression vaut vrai : Valeur renvoyée sinon
Exemple :
int i = 2 , j = 3 , max ;
max = i > j ? i : j ;
// la variable max reçoit la valeur maximale entre les deux entiers i et j
// Expression : i > j
// Valeur renvoyée si Expression vaut vrai : i
// Valeur renvoyée si Expression vaut faux : j
// Résultat : la variable max va recevoir la valeur de j puisque i n’est pas supérieur à j
Les opérateurs 48
8) L’opérateur (sizeof)
Cet opérateur permet de retourner la taille en octets d'un type ou d'une variable.
Le type ou la variable sont passés en argument.
Syntaxe :
sizeof (type) | sizeof (variable)
Exemple :
unsigned int t ; float r ;
t = sizeof (char) ; // t reçoit la taille en octets de type char qui vaut 1
t = sizeof (r) ; // t reçoit la taille en octets de la variable r qui est de type float, t vaut 4
Les opérateurs 49
Rq : Les contenus de a et de b restent inchangés ; seulement les valeurs utilisées dans les calculs
sont converties.
Les opérateurs 50
Il existe donc une hiérarchie pour les conversions : char < short int < int < long int < float <
double
Les opérateurs 51
int a = 5;
float b = 4.5;
float result = a + b; // 'a' est converti implicitement en float
printf("Result: %f \n", result);
2. Affectation entre types différents
double x = 9.876;
float y = x; // 'x' (double) est converti implicitement en float
printf("y = %f \n", y);
Les opérateurs 52
char c = ’A’;
int i = c + 1; // 'c' est promu implicitement en int avant l'addition
printf("i = %d \n", i);
void printDouble(double d) {
printf("d = %f\n", d); }
int main()
{ float x = 3.14f;
printDouble(x); // 'x' (float) est converti implicitement en double
return 0; }
Les opérateurs 53
Les opérateurs présentés dans le tableau ci-dessous possèdent une priorité descendante.
Les opérateurs d'une même ligne possèdent la même priorité.
Opérateur
() [] ->
(casting) sizeof & ! ++ -- new delete
* / %
+ -
< <= > >=
== !=
&&
||
? :
= += -= *= /= %=
Rq :
Si une expression fait intervenir en même temps plusieurs opérateurs qui ont la même priorité
alors l'opérateur situé le plus à gauche dans l'expression sera le premier évalué
Les opérateurs 54