Cours informatique concepts algorithmes et variables fondame
Télécharger PDFPlan du cours
Concepts de base des algorithmes
- Les structures conditionnelles
- Les structures itératives
- Les procédures et les fonctions
- Les tableaux
- Les chaînes de caractères
- Les enregistrements
- Les fichiers
Chapitre 1 : Introduction aux Algorithmes et aux Bases de la Programmation
Qu'est-ce que l'Informatique ?
L'informatique (fusion des termes "Information" et "Automatique") est la science du traitement automatique de l'information par une machine. Elle permet de manipuler les informations ou les données sous forme binaire.
Un ordinateur est une machine qui saisit (via des périphériques d'entrée), traite (via des programmes) et restitue (via des périphériques de sortie) les informations.
Définition d'un algorithme
Un algorithme est une procédure de calcul bien définie qui prend en entrée une valeur (ou un ensemble de valeurs) et produit en sortie une valeur (ou un ensemble de valeurs). C'est une séquence d'étapes de calcul qui transforme l'entrée.
Plus simplement, un algorithme est une suite d'instructions ordonnées qui, exécutées correctement, conduit à un résultat donné.
Caractéristiques d'un algorithme
- Clair : Il ne doit y avoir aucune ambiguïté ; il doit être compréhensible par tout exécutant.
- Déterministe : Avec un même ensemble de données en entrée, l'algorithme doit toujours fournir le même résultat, quelle que soit la date ou l'heure d'exécution.
- Fini : L'algorithme doit se terminer après un nombre fini d'étapes, quel que soit le jeu de données d'entrée valide.
- Efficace : L'algorithme doit effectuer le travail demandé avec un minimum de ressources (temps, mémoire).
Structure d'un algorithme
Un algorithme est généralement structuré en plusieurs parties :
- Titre de l'algorithme
- Déclarations (variables, constantes, etc.)
- Début (bloc d'instructions)
- Fin (terminaison du bloc d'instructions)
Exemple : Algorithme de la somme de deux entiers
Algorithme SommeDeuxNombres
Var
a, b, c : Entier
Début
// Lire les valeurs de a et b
c ← a + b
// Afficher la valeur de c
Fin
La notion de variable
Dans un programme informatique, il est nécessaire de stocker provisoirement des valeurs : les données à traiter et les résultats intermédiaires ou finaux obtenus par le programme.
Pour stocker une valeur au cours d'un programme, on utilise une variable. Dans la mémoire de l'ordinateur, une variable correspond physiquement à un emplacement de mémoire, repéré par une adresse binaire.
Analogie du verre :
- Un verre est un objet contenant un liquide.
- Une variable est une zone mémoire contenant une valeur.
| Contenant | Contenu |
|---|---|
| Variable | Valeur |
| Verre | Eau |
Déclaration d'une variable
Une variable est une entité qui contient une information et qui est caractérisée par :
- Un nom (ou identifiant) : il est unique et permet de désigner la variable.
- Une valeur : l'information associée à la variable à un instant donné. Cette valeur peut changer au cours de l'exécution du programme.
- Un type : il caractérise l'ensemble des valeurs que la variable peut prendre.
Exemples de déclarations (pseudo-code) :
Nom : Chaîne de caractères
Age : Entier
Distance : Réel
EstActif : Booléen
Le type d'une variable
Le type d'une variable est une caractéristique fondamentale qui est fixée une seule fois lors de sa déclaration et reste la même tout au long de l'exécution de l'algorithme. Le contenu de la variable doit impérativement être du même type que la variable elle-même (on ne peut pas, par exemple, affecter un nombre réel à une variable de type entier).
Le type d'une variable caractérise :
- L'espace des valeurs que peut prendre la donnée.
- L'ensemble des actions (opérations) que l'on peut effectuer sur cette variable.
Les types apparaissent généralement dans l'entête de l'algorithme, dans une section dédiée aux déclarations de variables.
Les types de données simples
Les types de variables les plus courants en algorithmique sont :
- Type numérique :
- Entier (
Entier) : Ensemble des entiers relatifs (Z). Ex: -5, 0, 100. - Réel (
Réel) : Ensemble des nombres réels (R). Ex: -3.14, 0.0, 2.718.
- Entier (
- Type alphanumérique :
- Caractère (
Caractère) : Représente un seul caractère, toujours noté entre apostrophes. Ex: 'A', 'z', '7'. - Chaîne de caractères (
Chaîne) : Représente une séquence de caractères, toujours notée entre guillemets. Ex: "Bonjour", "Algorithme 1".
- Caractère (
- Type booléen (
Booléen) : Stocke uniquement les valeurs logiques VRAI ou FAUX.
Expressions et Opérateurs
Une expression est une combinaison d'opérateur(s) et d'opérande(s) qui :
- Est évaluée durant l'exécution de l'algorithme.
- Possède une valeur (son interprétation) et un type (le type du résultat).
Un opérateur est un symbole d'opération qui agit sur une ou plusieurs opérandes pour produire un résultat.
Une opérande est une entité (variable, constante, ou même une autre expression) utilisée par un opérateur.
Exemple : Dans l'expression a + b
aetbsont les opérandes.+est l'opérateur.
Un opérateur est associé à un type de donnée et ne peut être utilisé qu'avec des variables, des constantes ou des expressions de types compatibles. Par exemple, l'opérateur + est généralement utilisé avec des types arithmétiques (entier, réel) ou, dans certains langages, avec des chaînes de caractères (pour la concaténation).
Un opérateur peut être :
- Unaire : s'il n'admet qu'une seule opérande (ex: l'opérateur de négation
-xou l'opérateur booléenNON). - Binaire : s'il admet deux opérandes (ex:
a + b,x ET y).
Opérateurs Booléens
Ces opérateurs sont utilisés avec des opérandes de type booléen et retournent une valeur booléenne (VRAI ou FAUX).
NON(Négation logique)ET(Conjonction logique)OU(Disjonction logique)OU EXCLUSIF(Disjonction exclusive logique)
Opérateurs Numériques
Ces opérateurs sont utilisés avec des opérandes numériques (entiers ou réels).
Opérateurs arithmétiques :
+: Addition-: Soustraction*: Multiplication/: Division (peut donner un réel)- Pour les entiers :
DIV: Division entière (retourne la partie entière du quotient)MOD: Modulo (retourne le reste de la division entière)
Opérateurs de comparaison :
Ces opérateurs comparent deux opérandes et le résultat est toujours un booléen (VRAI ou FAUX).
=: Égalité (vérifie si les opérandes sont égales)≠ou<>: Inégalité (vérifie si les opérandes sont différentes)<: Inférieur à≤ou<=: Inférieur ou égal à>: Supérieur à≥ou>=: Supérieur ou égal à
Ordre de priorité des opérateurs numériques
Pour les opérateurs arithmétiques, l'ordre de priorité (du plus prioritaire au moins prioritaire) est le suivant :
(): Parenthèses (elles forcent l'ordre d'évaluation)^: Élévation à la puissance (non standardisé en pseudo-code mais commun dans certains langages)*,/,DIV,MOD: Multiplication, Division, Division entière, Modulo+,-: Addition, Soustraction
Exemples :
2 + 3 * 7vaut23(car3 * 7est calculé en premier).(2 + 3) * 7vaut35(les parenthèses forcent l'addition en premier).
Opérateur Alphanumérique (Concaténation)
L'opérateur de concaténation permet de joindre deux ou plusieurs chaînes de caractères pour en former une seule.
&: Concaténation (ou parfois+dans certains langages, attention à l'ambiguïté avec l'addition numérique).
L'Instruction d'Affectation
Affecter une variable, c'est lui attribuer une valeur. Cette valeur peut être une constante, le contenu d'une autre variable ou le résultat d'une expression.
L'instruction d'affectation se note généralement avec le signe ← (flèche gauche) ou := en pseudo-code.
Important : L'expression située à droite de l'affectation doit être du même type que la variable située à gauche de l'affectation pour éviter les erreurs de type (sauf si des conversions implicites ou explicites sont possibles).
Règles pour une instruction d'affectation valide :
- À gauche de l'affectation, on doit trouver uniquement un nom de variable.
- À droite de l'affectation, on doit trouver une expression (constante, variable, ou un calcul).
Exemples :
a ← 24.5
b ← b + 5.5 // La valeur actuelle de b est augmentée de 5.5, puis le résultat est affecté à b.
nom ← "Alice"
La Lecture et l'Écriture (Entrées/Sorties)
Ces instructions permettent à un algorithme d'interagir avec l'utilisateur ou des sources externes.
L'instruction de lecture
Une instruction de lecture (ou d'entrée) permet à l'utilisateur de saisir des valeurs au clavier (ou depuis un fichier) pour qu'elles soient utilisées par le programme. Dès que le programme rencontre une instruction de lecture, il s'interrompt et attend la frappe d'une valeur par l'utilisateur.
Syntaxe générale : Lire (Variable)
Exemple : Lire (ageUtilisateur)
L'instruction d'écriture
Une instruction d'écriture (ou de sortie) permet de communiquer des valeurs (textes, résultats de calculs, contenu de variables) à l'utilisateur, généralement en les affichant à l'écran (ou en les écrivant dans un fichier).
Syntaxe générale : Ecrire ("Message", Variable, Expression)
Exemple : Ecrire ("La valeur de B est : ", B)
Exemple : Calcul de la surface d'un rectangle (avec constantes)
Algorithme CalculSurface1
Const
Longueur = 4.32
Largeur = 3.77
Var
Surface : Réel
Début
Surface ← Longueur * Largeur
Ecrire ("La surface du rectangle est : ", Surface, " m²")
Fin
Exemple : Calcul de la surface d'un rectangle (avec lecture utilisateur)
Algorithme CalculSurface2
Var
Longueur, Largeur, Surface : Réel
Début
Ecrire ("Donnez la longueur en m : ")
Lire (Longueur)
Ecrire ("Donnez la largeur en m : ")
Lire (Largeur)
Surface ← Longueur * Largeur
Ecrire ("La surface du rectangle est : ", Surface, " m²")
Fin
De l'Algorithmique au Langage C
L'algorithmique fournit les bases logiques de la résolution de problèmes. Le langage C est un langage de programmation qui permet de traduire ces algorithmes en instructions compréhensibles par un ordinateur.
Éléments de base du Langage C
Le langage C permet de découper un programme en modules (fonctions). La fonction principale de tout programme C est la fonction main(), qui est la première à être exécutée.
#include <stdio.h> // Inclusion de la bibliothèque standard d'entrée/sortie
int main() {
/* partie déclarative (déclaration des variables) */
/* partie instructions (actions du programme) */
return 0; // Indique que le programme s'est terminé sans erreur
}
Remarque : Chaque instruction en C doit se terminer par un point-virgule (;).
Déclaration de variables en C
En C, une variable doit être déclarée avant d'être utilisée. La syntaxe générale est :
<type_de_donnée> <nom_de_variable>;
Ou pour plusieurs variables du même type :
<type_de_donnée> <variable1>, <variable2>, ...;
Exemples :
int age; // Déclare une variable entière nommée "age"
float distance; // Déclare une variable réelle (à virgule flottante) nommée "distance"
char premiereLettre; // Déclare une variable de type caractère
double salaire, impots; // Déclare deux variables réelles (double précision)
Traduire les opérateurs de l'algorithmique en C
Les opérateurs en C sont très similaires à ceux de l'algorithmique, avec quelques spécificités.
Opérateurs Arithmétiques :
+: Addition-: Soustraction*: Multiplication/: Division (division entière si les opérandes sont des entiers, flottante sinon)%: Modulo (reste de la division entière, uniquement pour les entiers)
Opérateurs de Comparaison :
==: Égalité!=: Inégalité<: Inférieur à<=: Inférieur ou égal à>: Supérieur à>=: Supérieur ou égal à
Opérateurs Logiques :
!: NON (négation)&&: ET (conjonction)||: OU (disjonction)
Traduire l'instruction de lecture (Lire) en C
En langage C, la fonction la plus courante pour lire des données depuis le clavier est scanf() (faisant partie de la bibliothèque stdio.h).
// Exemple pour lire un entier
int nombre;
printf("Entrez un nombre entier : ");
scanf("%d", &nombre); // %d pour un entier, & pour l'adresse de la variable
// Exemple pour lire un réel
float prix;
printf("Entrez un prix : ");
scanf("%f", &prix); // %f pour un float
Traduire l'instruction d'écriture (Ecrire) en C
En langage C, la fonction la plus courante pour afficher des données à l'écran est printf() (faisant partie de la bibliothèque stdio.h).
// Exemple pour écrire un message et la valeur d'une variable
int resultat = 42;
printf("Le résultat est : %d\n", resultat); // %d pour un entier, \n pour un retour à la ligne
// Exemple pour écrire un texte avec un réel
float moyenne = 15.75;
printf("La moyenne est de %.2f\n", moyenne); // %.2f pour un float avec 2 décimales
printf("Bonjour le monde !\n");
Foire Aux Questions (FAQ)
Qu'est-ce qu'un algorithme et à quoi sert-il ?
Un algorithme est une séquence finie et non ambiguë d'instructions permettant de résoudre un problème ou d'accomplir une tâche spécifique. Il sert de plan détaillé pour la création de programmes informatiques, en décrivant logiquement les étapes à suivre pour transformer des données d'entrée en données de sortie.
Quelle est la différence entre une variable et une constante ?
Une variable est une entité nommée en mémoire qui peut stocker une valeur qui peut changer au cours de l'exécution d'un programme. Une constante est également une entité nommée qui stocke une valeur, mais cette valeur ne peut pas être modifiée après sa déclaration initiale. Les constantes sont utilisées pour des valeurs fixes (comme PI ou des taux).
Pourquoi est-il important de définir le type d'une variable ?
Définir le type d'une variable est crucial car cela indique à l'ordinateur la nature des données qu'elle contiendra (nombre entier, réel, caractère, texte, booléen, etc.). Cela permet à l'ordinateur de réserver la bonne quantité de mémoire, d'appliquer les opérations appropriées et d'éviter les erreurs en garantissant la cohérence des données manipulées.