Vous êtes sur la page 1sur 11

UA 4 : ALGORITHMIQUE ET PROGRAMMATION.

A partir des savoirs, savoirs être et savoirs faire sur le raisonnement algorithmique,
l’élève doit être capable d’utiliser les méthodes et les outils permettant de résoudre, à
l’aide du langage C, des problèmes nécessitant un traitement automatisé de
l’information.

Leçon 8 : Notion de base en Algorithme et Programmation C


Compétences visées :

- Définir algorithme, programmation, compilateur


- Enumérer les outils nécessaires à la programmation
- Donner la structure générale d’un programme C

Situation :
Votre épreuve de mathématique porte la mention « calculatrice programmable interdite ».
Votre petit-frère vous interroge pour la comprendre :
• Lister quelques raisons de cette interdiction (quelques problèmes qu’elle résout)
• Comment obtenir un résultat avec cette calculatrice (résoudre d’une équation)
• Qu’est-ce qu’un programme ?

Introduction
Face à un problème donné, une analyse permet de proposer un modèle et d’établir une
méthode de résolution possible. Cette solution Celle-ci peut être implémentée par
l’écriture d’un programme de traitement en langage C.

1. Définitions
Une instruction est un ordre qui permet de spécifier au processeur l’action à exécuter.
Un algorithme est une séquence d’opérations visant à la résolution d’un problème.
Un algorithme est une suite finie d’opérations permettant de résoudre un problème.
Un programme informatique est un ensemble d’opérations exécutées par un ordinateur.
Un langage de programmation est une notation conventionnelle destinée à formuler des
algorithmes et produire des programmes informatiques qui les appliquent.
Un langage de programmation est une structure qui utilise un vocabulaire et des
syntaxes pour donner des instructions à un programme informatique.

Un compilateur est un programme qui traduit les instructions écrites dans un langage de
programmation en langage machine ou « code » utilisé par le processeur.

2. Les étapes de résolution d’un problème


L’analyse d’un problème peut se résumer à :
- Identifier les résultats à obtenir
- Identifier les traitements à effectuer
- Identifier les données sur lesquelles les traitements vont être effectués.
- Tester étape par étape pour s’assurer des résultats.

Page 1 sur 11
3. Les outils nécessaires pour programmer
Ce sont :
- Un éditeur de texte permet d’écrire le programme dans un langage simplifié
- Un compilateur transforme en langage machine et donne le programme exécutable
- Un débogueur identifie les erreurs de compilation et aide à les corriger
On peut retrouver ses trois outils regroupés dans un Environnement de Développement
Intégré (EDI) comme visual Studio, Xcode, Code blocks…

4. La structure générale d’un programme C


Dans un programme C on retrouve deux parties essentielles :
- Une partie déclarative contenant les objets utilisés dans le programme
- Une partie réservée aux instructions
Syntaxe : Exemple :
<include des bibliothèques> #include <stdio.h>
main() int main()
{<Déclaration des variables> {
<instructions> } printf(‘’Bonjour\n’’) ;
return 0 ;
}

- #include <stdio.h> bibliothèque E/S standard (directives de préprocesseur=


programme qui se lance au début de la compilation)
- int main() fonction principale ( 1programme C débute toujours par la fonction
main())
- printf(‘’Bonjour\n’’) ; (affiche ‘’Bonjour’’ à l’écran et \n renvoie à la ligne)
instruction
- return 0 ; (indique la fin de la fonction main()) instruction
Remarque :
- /* les commentaires facilitent lisibilité et compréhension du programme*/ (//
commentaires courts
- Le langage C distingue les minuscules des majuscules. Les mots reservés du C sont
écrits en minuscules (include, main, return, scanf
- Toutes les instructions se terminent obligatoirement par un point-virgule ;
- En C le programme principal et les sous programmes sont définis comme des
fonctions

Page 2 sur 11
UA 4 : Algorithmique et programmation.
Leçon 9 : Les variables et les constantes en langage C
Compétences visées :
- Déclarer des variables
- Déclarer des constantes
- Enumérer les opérateurs

Situation :
Vous voulez utilisez un programme pour résoudre une équation du deuxième degré.
• Lister les éléments nécessaires pour obtenir les solutions.
• Lister les opérations utiles pour obtenir les solutions.

1. Les variables et leur type en C


Une variable est une petite information temporaire qu’on stocke dans la RAM.
Une variable est un emplacement mémoire caractérisé par
- Un nom ou identificateur,
- Un type
- Une valeur
a. Les noms des variables en C
- Composés de lettres, de chiffres et de ‘_’,
- Commencent par une lettre ou par ‘_’,
- Ne contiennent pas d’accents ni d’espace.
Exemples
Corrects Incorrects
Nom1 Nom 1
Nom_3 Nom.3
_long -long
Matiere_scien Matière scien

b. Les types des variables en C

Un type définit les champs de valeurs que peuvent prendre la variable et les opérations qui
lui sont applicables.
- Les types entiers
o int (entier standard)
o short (entier court)
o long (entier long)
o char (caractère)
- Les types réels
o float (décimal)
o double (décimal double)

c. la déclaration des variables en C


Elle permet de réserver de la place en mémoire pour contenir la valeur de la variable. Cette
déclaration indiquera au compilateur le nom et le type de la variable et elle pourra

Page 3 sur 11
l’initialiser à une certaine valeur. Si votre programme utilise une variable qui n’a pas été
déclarée, le compilateur génère un message d’erreur.
En algo : nom_variable : type
En C : type nom_variable ;
Exemples :
int x, y, coef_info ;
float surf, larg, long ;
char nom ;
avec initialisation
int coef_info = 2 ;
char nom = ‘toto’ ;

2. les constantes en C
Une constante est une « variable particulière » dont la valeur ne change pas lorsqu’on
exécute le programme.
Elles sont utilisées pour calculer des valeurs pour initialiser les variables. Les formats des
constantes sont les suivants :
- les constantes entières : notation décimale (150), octale (0124), hex 0xcde, caractère
(‘B’),
- les constantes flottantes (1.34, 1e-2)
- Nb : on distingue les caractères non imprimables identifiés par leurs codes internes
et débutants par \
‘ \n ’ Nouvelle ligne ‘ \r ’ Retour chariot
‘ \t ’ Tabulation horizontale ‘ \v ’ Tabulation verticale
‘ \b ’ Espacement arrière ‘ \\ ’ Back slash
‘ \f ’ Saut de page ‘ \’’ ’ Guillemet
‘\’ ‘ Apostrophe

La déclaration des constantes en C


En algo : nom_const = valeur
En C : #define <nom_constante> <valeur> ou
const <type> <nom_constante>= valeur ;
Exemples :
#define PI 3.14 // const float PI = 3.14 ;
#define TVA 19.25 // const float TVA = 19.25 ;
Par convention on écrit les noms de constantes en MAJUSCULES.

3. Affectation des variables


Une affectation est une instruction qui permet de d’attribuer/donner une valeur à une
variable. Avant d’utiliser une variable, il faut la déclarer
Nom_variable = expression ;
Exemples
Prix = 150 ;
Prix = Prix + 100 ;
Prix = Benef ;
Page 4 sur 11
4. Les opérateurs en C
Un opérateur est un symbole qui décrit une opération ou une action à effectuer sur une
ou plusieurs opérandes.
- Les opérateurs arithmétiques
Addition : +
Soustraction : -
Multiplication : *
Division : / (7/2=3 ; 7.0/2=3.5)
Modulo : % reste de la division entière.
- Les opérateurs logiques (1 : vrai et 0 : faux)
ET logique : &&
OU logique : ||
Négation : !
- Les opérateurs de comparaison (1 : vrai et 0 : faux)
Egal : ==
Différent : !=
<, <=, >, >= : inférieur, inférieur ou égal, supérieur, supérieur ou égal
- Les opérateurs d’affectation
Ils permettent d’affecter à une variable une valeur, certains de ces
opérateurs permettent d’affecter et de réaliser une opération arithmétique en même
temps.
expr1 = expr1 op expr2 équivaut à expr1 op = expr2

Opérateurs Fonction Ecriture Equivalence


= Affectater ordinaire X=Y X=Y
+= Ajouter à X+=Y X= X+Y
-= Diminuer à X-=Y X=X-Y
*= Multiplier par X*=Y X=X*Y
/= Diviser par X/=Y X=X/Y
%= Affecter reste div entière X%=Y X=X%Y
++ Incrémenter X++ X=X+1
-- Décrémenter X-- X=X-1
Exemples : i=6 ; a=++i i=7 et a=7 incrémente d’abord i et passe la valeur à a
i=6 ; a=i++ i=7 et a=6 passe la valeur de i à a après incrémente i
int nombre = 2 ;
nombre += 4 ; (//6)
nombre -= 3 ; (//3)
nombre *= 6 ; (//18)
nombre /= 3 ; (//6)
nombre %=4 ; (//2)

Page 5 sur 11
Leçon 10 : La lecture et l’écriture en langage C
Compétences visées :
- Utiliser l’instruction lecture en C
- Utiliser l’instruction d’écriture en C

Situation :
Vous venez d’écrire votre premier programme qui résout une équation du deuxième degré
et vous voulez interagir avec les utilisateurs :
• Comment savoir ce que fait votre programme ?
• Comment allez-vous afficher les messages à l’écran ? Proposez une solution

Introduction :
Une bibliothèque est un ensemble de fonctions utilisées pour les opérations courantes
telles que les E/S. la bibliothèque standard stdio contient les fonctions scanf (lecture) et
printf (écriture).
1. L’écriture des données en C.
La fonction printf est utilisée pour afficher du texte, des résultats d’expressions ou la valeur
d’une variable à l’écran.
Elle utilise des formats d’affichage précédés de %
printf(‘’<%format>’’, <expres1>, <expres2>) ; // affiche la valeur de la variable écrite après
les guillemets et après avoir ajouté la virgule
Symboles Singification
%d Entier
%f Réel
%c Caractère
%s Chaine de caractère
On peut afficher la valeur de plusieurs variables dans un seul printf : il suffit d’indiquer les
formats puis les variables dans le même ordre, séparées par des virgules.
Exemples :
printf(‘’Hello\n’’) ;
int a=50 ; int a=b ;
printf(‘’la valeur de b est %d\n’’,b) ;
printf(‘’la somme = %d\n’’, a+b) ;
char c=’A’ ;
printf(‘’le caractère %c a le code %d’’, c,c) ;
2. La lecture des données
La fonction scanf permet de lire à partir du clavier des caractères ou des données
numériques.
scanf(‘’<format>’’ , &nom_variable) ; //& pointe sur l’adresse de la variable
exemples :
int entier ;
float reel ;
scanf(‘’%d’’,&entier) ;
scanf(‘’%f’’,&reel) ;

int jour, mois, annee ;


scanf(‘’%d %d %d’’, &jour, &mois, &annee) ;
Page 6 sur 11
Leçon 11 : Les structures conditionnelles en langage C
Compétences visées :

- Utiliser la structure à un choix en C


- Utiliser la structure à plusieurs choix en C

Situation :
En fin d’année scolaire, on souhaite afficher le résultat (admis, redouble, rattrapage ou
exclusion) d’un élève de seconde à l’aide d’un programme en C :
• Comment faire pour avoir le résultat d’un élève ?
• Comment prendre en compte l’orientation en Première ? Proposez une solution

Introduction :
La résolution d’un problème peut se faire sous condition et chaque condition peut
entrainer l’exécution de certaines instructions du programme.

1. La structure conditionnelle à un choix.


Elle évalue une expression, et oriente l’exécution du programme en fonction du
résultat de cette évaluation. La syntaxe est la suivante :
if (expression)
{instructions;}
Si le résultat de l’évaluation est vrai, l’instruction est exécutée. Dans le cas contraire,
l’exécution du programme se poursuit avec l’instruction qui suit l’instruction if.
Exemple : Ecrire un programme qui dit si deux nombres entiers sont égaux.
#include <stdio.h>
#include <stdlib.h>
int x, y;
int main()
{printf("\nEntrez une valeur entière pour x : ");
scanf("%d", &x);
printf("\nEntrez une valeur entière pour y : ");
scanf("%d", &y);
if (x == y)
printf("x est égal à y\n");}

2. La structure conditionnelle à plusieurs choix.

Une instruction if peut contenir une clause else comme le montre l’exemple suivant :
if (expression)
instruction1;
else
instruction2;
Si expression est évaluée comme étant vraie, instruction1 est exécutée, sinon c’est
instruction2 qui est exécutée.
S’il y a plusieurs instructions après if ou après else, on les encadre par des accolades
{}
Page 7 sur 11
Exemple : Ecrire un programme qui compare deux nombres entiers.
#include <stdio.h>
#include <stdlib.h>
int x, y;
int main()
{
printf("\nEntrez une valeur entière pour x: ");
scanf("%d", &x);
printf("\nEntrez une valeur entière pour y: ");
scanf("%d", &y);
if (x == y)
printf("x est égal à y\n");
else
if (x > y)
printf("x est plus grand que y\n");
else
printf("x est plus petit que y\n");
exit(EXIT_SUCCESS);
}

Page 8 sur 11
Leçon 12 : Les structures répétitives en langage C
Compétences visées :
- Utiliser la structure FOR
- Utiliser la structure WHILE
- Utiliser la structure DO WHILE

Situation :
En fin de trimestre, les bulletins doivent être remis aux élèves de chaque classe. Pour
ce faire il faut posséder à la saisie des notes de chaque élève et au calcul de sa moyenne.
Proposez une solution qui peut aider à réaliser cette tâche.
• Comment faire pour avoir le résultat d’un élève ?
• Comment faire pour avoir le résultat d’une classe ?

Introduction :
La résolution d’un problème peut nécessiter l’exécution d’un traitement plusieurs
fois. C’est pourquoi on peut faire appel à une structure répétitive.
Par défaut, l’ordre d’exécution d’un programme C se fait de haut en bas (top-down).
L’exécution commence avec la première instruction de la fonction main(), et se poursuit,
instruction par instruction, jusqu’à la dernière. Le langage C contient de nombreuses
instructions de contrôle qui permettent de modifier cet ordre d’exécution. Nous avons
étudié l’ordre if, voici trois autres instructions qui nous serons utiles.

1. La structure répétitive FOR.


Elle permet d’exécuter un certain nombre de fois un bloc d’une ou
plusieurs instructions comprises entre une borne inférieure et une borne supérieure. Sa
syntaxe est la suivante :
for
(initial; condition; incrément)
{instruction(s)}
Initial, condition et incrément sont des expressions ; instruction(s) représente une
instruction simple ou composée. La boucle for fonctionne de la façon suivante :
1. L’expression initial est évaluée. Il s’agit en général d’une instruction d’affectation qui
initialise une valeur particulière. Exemple : compteur = 0
2. L’expression condition est évaluée. condition est souvent une expression de
comparaison.
3. Si condition est fausse (valeur 0), l’instruction for se termine et l’exécution reprend à la
première instruction qui suit instruction(s).
4. Si condition est vraie (valeur différente de 0), les instructions de instruction(s) sont
exécutées.
5. L’expression incrément est calculée et l’exécution reprend à l’étape 2.
Exemple : compteur++

Page 9 sur 11
Exemple1 : Ecrire un programme qui affiche les nombres de 20 à 1.
#include <stdio.h>
#include <stdlib.h>
int compteur;
int main()
{
/* Affichage des nombres de 1 à 20 */
for (compteur = 1; compteur <= 20; compteur--)
printf("%d\n", compteur);
exit(EXIT_SUCCESS);
}
Exemple2 : Ecrire un programme qui affiche les nombres de 10 à 30 avec leur carré.
#include <stdio.h>
#include <stdlib.h>
int compteur;
int main()
{
/* Affichage des nombres de 10 à 30 et leur carré */
for (compteur = 10; compteur <= 30; compteur++)
printf("compteur=%d, compteur2=d\n", compteur, compteur*compteur);
exit(EXIT_SUCCESS);
}
2. La structure répétitive WHILE (TantQue…Faire)
Elle permet d’exécuter un bloc d’instructions tant qu’une condition reste vraie. Sa syntaxe
est la suivante :
while (condition)
instruction(s)
La condition est une expression C et instruction(s) représente une instruction simple ou
composée. La boucle while fonctionne de la façon suivante :
1. La condition est évaluée.
2. Si condition est fausse (valeur 0), l’instruction while se termine et l’exécution se poursuit avec
l’instruction qui suit immédiatement instruction(s).
3. Si condition est vraie (valeur différente de 0), les instructions de instruction(s) sont exécutées.
4. L’exécution reprend à l’étape 1.
Exemple : Ecrire un programme qui affiche les nombres de 1 à 20.
#include <stdio.h>
#include <stdlib.h>
int compteur;
int main()
{
/* Affiche les nombres de 1 à 20 */
compteur= 1;
while (compteur<= 20)
{
printf("%d\n", compteur);
compteur++;
}
exit(EXIT_SUCCESS);
}

Page 10 sur 11
3. La structure répétitive DO WHILE (Répétez… jusqu’à)
Elle exécute un bloc d’instructions tant qu’une condition reste vraie. La différence entre la
boucle do while et les deux boucles précédentes est que le test de la condition s’effectue à
la fin de la boucle. Pour les deux autres, le test se fait au début.
L’instruction do while a la structure suivante :
do
instructions
while (condition);
condition est une expression du langage C, et instruction(s) représente une instruction
simple ou composée. Quand une instruction do while est rencontrée pendant
l’exécution du programme, voici ce qui se passe :
1. Les instructions de instruction(s) sont exécutées.
2. condition est testée. Si elle est vraie, l’exécution reprend à l’étape 1. Si elle est
fausse, la boucle se termine.
Le test de condition étant réalisé à la fin, les instructions qui font partie de la boucle do
while sont toujours exécutées au moins une fois. Au contraire, dans les boucles for et do
while, si le test est faux dès le début, les instructions ne sont jamais exécutées.

Exemple : Ecrire un programme qui affiche les entiers de 1 à 20.


#include <stdio.h>
#include <stdlib.h>
int compteur;
int main()
{
/* Affiche les nombres de 1 à 20 */
compteur= 1;
do
{
printf("compteur=%d\n", compteur);
compteur++;
}
while (compteur<= 20) ;
exit(EXIT_SUCCESS);
}

En résumé : Dans le principe, ces trois boucles peuvent réaliser les mêmes tâches, mais
elles sont différentes.
• L’instruction FOR permet, en une seule ligne de code, d’initialiser, d’évaluer, et
d’incrémenter.
• L’instruction WHILE s’exécute tant que la condition reste vraie.
• L’instruction DO WHILE s’exécute une fois, puis de nouveau jusqu’à ce que la
condition soit fausse.

Application : voir fiche TD

Page 11 sur 11