Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
t
raf
ALGORITHMIQUE 2
MOHAMMED SADDOUNE
t
raf
1 Les tableaux en langage C
2 Chaı̂nes de caractères
3 Fonctions
4 Récursivité
t
Un tableau est un ensemble d’éléments consécutifs du même type. Les cases
d’un tableau sont numérotées à partir de 0.
raf
Syntaxe en C
La syntaxe pour déclarer un tableau en langage C est la suivante:
< type> <nom du tableau> [<taille du tableau>];
EXEMPLE:
- Déclaration d’un tableau de 10 caractères.
t
D’une manière plus génerale:
Généralisation
raf
On peut imaginer un tableau à plusieurs lignes. Dans ce cas, la déclaration se
fait de la façon suivante :
<type> <nom du tableau> [<taille 1ère dimension>][<taille 2nde
dimension>] ...;
EXEMPLE:
- Déclaration d’un tableau d’entiers à deux dimensions de 5 lignes * 5 colonnes.
int matriceEntiers[5][5];
t
Utilisation d’un tableau
raf
nombre appelé indice (en anglais index) qui, combiné avec le nom du
tableau, permet de décrire exactement chaque élément.
Pour accéder à un élément du tableau, il suffit donc de donner le nom du
tableau, suivi de l’indice de l’élément entre crochets:
NomTableau[indice]
t
Utilisation d’un tableau
raf
nombre appelé indice (en anglais index) qui, combiné avec le nom du
tableau, permet de décrire exactement chaque élément.
Pour accéder à un élément du tableau, il suffit donc de donner le nom du
tableau, suivi de l’indice de l’élément entre crochets:
NomTableau[indice]
Quelques remarques:
t
Manipulation des données
Un élément du tableau (repéré par le nom du tableau et son indice) peut être
raf
manipulé exactement comme une variable. On peut donc effectuer des
opérations avec (ou sur) des éléments de tableau.
EXEMPLE:
- Soit tabEntier un tableau de 10 entiers:
int tabEntier[10];
- Pour affecter la valeur 6 et 9 au deuxième et cinquième éléments
respectivement on écrit:
tab[1] = 6;
tab[4] = 9;
- Pour affecter au 10ème élément le résultat de l’addition des éléments 2 et 5,
on écrit :
tab[9] = tab[1] + tab[4]; // tab[9] = 15
t
raf
Initialisation d’un tableau
Lorsque l’on définit un tableau, les valeurs des éléments qu’il contient ne sont
pas définies
⇓
Alors, il faut les initialiser, c’est-à-dire leur affecter une valeur
t
Première méthode
raf
Une méthode rustique consiste à affecter des valeurs aux éléments un par un:
int tab[6];
tab[0] = tab[1] = tab[2] = tab[3] = tab[4] = tab[5] = 0;
t
Première méthode
raf
Une méthode rustique consiste à affecter des valeurs aux éléments un par un:
int tab[6];
tab[0] = tab[1] = tab[2] = tab[3] = tab[4] = tab[5] = 0;
t
Valeurs spécéfiques
Pour initialiser un tableau avec des valeurs spécifiques, il est possible
d’initialiser le tableau à la définition en plaçant entre accolades les valeurs,
raf
séparées par des virgules:
t
Valeurs spécéfiques
Pour initialiser un tableau avec des valeurs spécifiques, il est possible
d’initialiser le tableau à la définition en plaçant entre accolades les valeurs,
raf
séparées par des virgules:
Remarques:
t
Façon plus sécuritaire
Il est conseillé d’employer le plus possible des constantes dans vos programmes,
raf
notamment pour la taille des tableaux. Le code ci-dessus peut s’écrire ainsi :
#define NB ELEMENT TAB 6
int Tab[NB ELEMENT TAB];
int Indice;
for (Indice = 0; Indice < NB ELEMENT TAB; Indice++) {
Tab[Indice] = 0;
}
t
Façon plus sécuritaire
Il est conseillé d’employer le plus possible des constantes dans vos programmes,
raf
notamment pour la taille des tableaux. Le code ci-dessus peut s’écrire ainsi :
#define NB ELEMENT TAB 6
int Tab[NB ELEMENT TAB];
int Indice;
for (Indice = 0; Indice < NB ELEMENT TAB; Indice++) {
Tab[Indice] = 0;
}
Avantages:
Voici les avantages liés à l’utilisation des constantes :
Moins d’erreurs d’exécution dues à un débordement difficile à déceler.
Pour modifier la taille du tableau il suffit de changer le define en début du
code source.
Le code possède une lisibilité accrue.
t
Définition
Une chaı̂ne de caractères (appelée string en anglais) est une suite de caractères,
c’est-à-dire un ensemble de symboles faisant partie du jeu de caractères
raf
MOHAMMED SADDOUNE ALGORITHMIQUE 2
Algorithmique 2
Les tableaux en langage C
Chaı̂nes de caractères
Fonctions
Récursivité
t
Définition
Une chaı̂ne de caractères (appelée string en anglais) est une suite de caractères,
c’est-à-dire un ensemble de symboles faisant partie du jeu de caractères
raf
En langage C, il n’existe pas un type qui traite les chaı̂ne de caractères.
En langage C, une chaı̂ne de caractères est un tableau, comportant
plusieurs données de type char, dont le dernier élément est le caractère nul
’ \0’, c’est-à-dire le premier caractère du code ASCII (dont la valeur est 0).
Le ’ \0’ est un caractère de contrôle (donc non affichable) qui permet
d’indiquer une fin de chaı̂ne de caractères. Ainsi une chaı̂ne composée de
n éléments sera en fait un tableau de n+1 éléments de type char.
t
Définition
Une chaı̂ne de caractères (appelée string en anglais) est une suite de caractères,
c’est-à-dire un ensemble de symboles faisant partie du jeu de caractères
raf
En langage C, il n’existe pas un type qui traite les chaı̂ne de caractères.
En langage C, une chaı̂ne de caractères est un tableau, comportant
plusieurs données de type char, dont le dernier élément est le caractère nul
’ \0’, c’est-à-dire le premier caractère du code ASCII (dont la valeur est 0).
Le ’ \0’ est un caractère de contrôle (donc non affichable) qui permet
d’indiquer une fin de chaı̂ne de caractères. Ainsi une chaı̂ne composée de
n éléments sera en fait un tableau de n+1 éléments de type char.
B O N J O U R \0
t
Comment créer une chaı̂ne de caractères ?
raf
Le nombre maximum de caractères que comportera la chaı̂ne sera égal au
nombre d’éléments du tableau moins un (réservé au caractère de fin de
chaı̂ne).
char NomTableau[NombreElements]
t
Comment créer une chaı̂ne de caractères ?
raf
Le nombre maximum de caractères que comportera la chaı̂ne sera égal au
nombre d’éléments du tableau moins un (réservé au caractère de fin de
chaı̂ne).
char NomTableau[NombreElements]
Astuce
En définissant le tableau de la manière suivante, vous mettez en évidence le
nombre de caractères maximal de la chaı̂ne :
char NomTableau[NombreElements+1]
Par exemple:
char Chaine[10+1]
t
raf
Initialiser une chaı̂ne
initialiser une chaı̂ne de caractères veut dire remplir les cases du tableau
avec des caractères, sachant que celui-ci devra obligatoirement contenir le
caractère de fin de chaı̂ne ”\0”.
Il y a deux façons de procéder:
1 remplir manuellement le tableau case par case
2 utiliser les fonctions de manipulation de chaı̂nes fournies dans les librairies
standard
t
#include < stdio.h >
void main(){
char chaine[7+1];
raf
chaine[0] = ’B’;
chaine[1] = ’O’;
chaine[2] = ’N’;
chaine[3] = ’J’;
chaine[4] = ’O’;
chaine[5] = ’U’;
chaine[6] = ’R’;
chaine[7] = ’\ 0’;
}
- D’une manière plus simple, on peut écrire:
t
raf
Définition
- On appelle fonction un sous-programme qui permet d’effectuer un ensemble
d’instructions par simple appel de la fonction dans le corps du programme
principal.
- Les fonctions permettent d’exécuter dans plusieurs parties du programme une
série d’instructions, cela permet une simplicité du code et donc une taille de
programme minimale.
t
Déclaration d’une fonction
Avant d’être utilisée, une fonction doit être définie en précisant son nom, ses
arguments et les instructions qu’elle contient. La définition d’une fonction
raf
s’appelle déclaration.
t
Déclaration d’une fonction
Avant d’être utilisée, une fonction doit être définie en précisant son nom, ses
arguments et les instructions qu’elle contient. La définition d’une fonction
raf
s’appelle déclaration.
Remarque ! ...
Une fois cette étape franchie, votre fonction ne s’exécutera pas tant que l’on ne
fait pas appel à elle quelque part dans la page.
MOHAMMED SADDOUNE ALGORITHMIQUE 2
Algorithmique 2
Les tableaux en langage C
Chaı̂nes de caractères
Fonctions
Récursivité
t
1 typeDonnee représente le type de valeur que la fonction est sensée
retourner (char, int, float ...)
raf
2 Si la fonction ne renvoie aucune valeur, on la fait alors précéder du
mot-clé void
3 Le nom de la fonction suit les mêmes règles que les noms de variables:
le nom doit commencer par une lettre
un nom de fonction peut comporter des lettres, des chiffres et les caractères
(les espaces ne sont pas autorisés)
le nom de la fonction, comme celui des variables est sensible à la casse
(différenciation entre les minuscules et majuscules)
4 Les arguments sont facultatifs, mais s’il n’y a pas d’arguments, les
parenthèses doivent rester présentes
5 Il ne faut pas oublier de refermer les accolades
6 Le nombre d’accolades ouvertes (fonction, boucles et autres structures)
doit être égal au nombre d’accolades fermés !
7 La même chose s’applique pour les parenthèses, les crochets ou les
guillemets
t
Pour exécuter une fonction, il suffit de faire appel à elle en écrivant son nom
raf
(une fois de plus en respectant la casse) suivi d’une parenthèse ouverte
(éventuellement des arguments) puis d’une parenthèse fermée:
NomDeFonction();
Remarques :
t
Arguments d’une fonction
raf
Il est possible de passer des arguments à une fonction, c’est-à-dire lui
fournir une valeur ou le nom d’une variable afin que la fonction puisse
effectuer des opérations sur ces arguments ou bien grâce à ces arguments.
Le passage d’arguments à une fonction se fait au moyen d’une liste
d’arguments (séparés par des virgules) entre parenthèses suivant
immédiatement le nom de la fonction.
Le nombre et le type d’arguments dans la déclaration, le prototype et dans
l’appel doit correspondre au risque, sinon, de générer une erreur lors de la
compilation...
Un argument peut être :
une constante
une variable
une expression
une autre fonction
t
Renvoie d’une valeur
raf
mot-clé return.
Lorsque l’instruction return est rencontrée, la fonction évalue la valeur qui
la suit, puis la renvoie au programme appelant (programme à partir duquel
la fonction a été appelée).
Une fonction peut contenir plusieurs instructions return, ce sera toutefois
la première instruction return rencontrée qui provoquera la fin de la
fonction et le renvoi de la valeur qui la suit.
Syntaxe:
La syntaxe de l’instruction return est simple :
return (valeurOuVariable);
Note: Le type de valeur retourné doit correspondre à celui qui a été précisé
dans la définition (et le prototype).
t
Preuve par induction
Le principe est comme suit:
raf
C’est comme montrer qu’on sait grimper dans une échelle !
Il faut pouvoir atteindre le premier échelon
Il faut pouvoir passer d’un échelon quelconque à l’échelon suivant
t
EXEMPLE:
raf
MOHAMMED SADDOUNE ALGORITHMIQUE 2
Algorithmique 2
Les tableaux en langage C
Chaı̂nes de caractères
Fonctions
Récursivité
t
EXEMPLE:
raf
MOHAMMED SADDOUNE ALGORITHMIQUE 2
Algorithmique 2
Les tableaux en langage C
Chaı̂nes de caractères
Fonctions
Récursivité
t
raf
Définition
Fonction qui, directement ou indirectement, s’appelle elle même pour résoudre
une instance de problème plus simple
t
raf
Règles de la récursion
t
raf
EXEMPLE:
t
unsigned long factoriel iterative (unsigned int n)
raf
{
unsigned long ret = 1;
unsigned int i = 1;
for (i = 1; i <= n; i++)
{
ret *= i;
}
return ret;
}
t
unsigned long factoriel iterative (unsigned int n)
raf
{
unsigned long ret = 1;
unsigned int i = 1;
for (i = 1; i <= n; i++)
{
ret *= i;
}
return ret;
}
t
unsigned long factoriel (int n)
raf
{
if (n < 0) {
exit (EXIT FAILURE);
}
else if (n == 1 || n == 0) {
return 1;
}
return n * factoriel (n - 1);
}
t
unsigned long factoriel (int n)
raf
{
if (n < 0) {
exit (EXIT FAILURE);
}
else if (n == 1 || n == 0) {
return 1;
}
return n * factoriel (n - 1);
}
t
TOUR DE HANOI:
raf
MOHAMMED SADDOUNE ALGORITHMIQUE 2
Algorithmique 2
Les tableaux en langage C
Chaı̂nes de caractères
Fonctions
Récursivité
t
TOUR DE HANOI:
raf
MOHAMMED SADDOUNE ALGORITHMIQUE 2
Algorithmique 2
Les tableaux en langage C
Chaı̂nes de caractères
Fonctions
Récursivité
t
TOUR DE HANOI:
raf
MOHAMMED SADDOUNE ALGORITHMIQUE 2
Algorithmique 2
D
Les tableaux en langage C
Chaı̂nes de caractères
Fonctions
Récursivité