Algorithmique et programmation Dpartement dinformatique Pr L EL
- Slides: 139
Algorithmique et programmation Département d’informatique Pr. L. EL BERMI
Contenu du Module • Chapitre 1: Généralités • Chapitre 2: L’élément de base d’un algorithme • Chapitre 3: La sélection en algorithmique et en C • Chapitre 4: Les boucles en algorithmique et en C • Chapitre 5: Les tableaux et les fonctions
Chapitre 1: Généralités • Introduction • Composants d’un ordinateur • Codage
Introduction • L’informatique est la science de traitement automatique de l’information par des ordinateurs. • Informatique = information + automatique (mot inventé en 1962 par Philippe Dreyfus) • Information: ensemble de données ou de connaissances humaines et des communications dans le domaine technique, scientifique, économique et social. • Traitement automatique: toutes les opérations que l’on peut effectuer sur les informations: saisie, modification, stockage, transmission, … • Le traitement de l'information consiste en une suite d'opérations transformant une représentation de cette information en une autre représentation plus facile à manipuler ou à interpréter.
Définitions • Un ordinateur est un ensemble de circuits électroniques qui traite l'information grâce à un programme qu'il mémorise, communique et archive des informations. • Le traitement de l'information se fait automatiquement et vise à résoudre un problème bien défini. • Architecture d’un ordinateur désigne le mode de fonctionnement d’un ordinateur; c’est-à-dire comment l’information circule dans un ordinateur.
Composantes d’un ordinateur Un ordinateur se compose en deux principales parties: v Partie matérielle (Hardwrae) c’est les composants physiques de l’ordinateur. v Partie Logicielle (Software) c’est des logiciels permettant le fonctionnement de l’ordinateur.
• Les différentes fonctions correspondent à 3 constituants de l'ordinateur: - la mémoire centrale - l'unité centrale - les périphériques • La mémoire centrale contient les programmes systèmes nécessaires au bon fonctionnement de l'ordinateur, et les programmes utilisateurs répondant à un besoin particulier et résolvant un problème rencontré par le dit utilisateur • L'unité centrale va s'occuper de l'exécution des programmes logés dans la mémoire centrale. Elle est constituée de l'unité arithmétique et logique (UAL) qui s'occupe de toutes les opérations arithmétiques et logiques (addition, soustraction, multiplication, etc) et de l’unité de commande (UC) qui exécute les programmes instructions par instructions en collaborant avec l'UAL. • Les périphériques sont les unités qui assurent la relation de l'ordinateur avec le monde extérieur. Ils constituent de périphériques d’entrée et sortie assurant l’entrée et sortie de données.
Mémoire Processeur Bus Unités d’entréesortie . . . Imprimante Écran Disque La mémoire contient des instructions et des données
• Tous ces constituants sont reliés entre eux par l’intermédiaire d’un bus, qui est l’artère centrale et leur permet de s’échanger des données. • Pratiquement tous les ordinateurs actuels ont cette architecture, qui ce soit les micros ordinateurs personnels ou les gros ordinateurs des entreprises. • Les différences résident essentiellement dans les performances des constituants. • L’ensemble des communications à l’intérieur s’effectue par le langage binaire.
Codage Comprendre comment un ordinateur : représente une information (nombre, caractère, image, son, etc. ). Convertis des entiers ou des virgule flottante en représentation binaire et vice versa. En général on peut distinguer deux types d’information: instructions et les données.
Les données: sont les opérandes sur lesquels portent les opérations, ou produits par cellesci. Une addition, par exemple, peut s’appliquer à deux opérandes, donnant un résultat qui est la somme des deux opérandes. On distingue les données numériques, pouvant être l’objet d’une opération arithmétique, des données non numériques, par exemple, les symboles constituant un texte.
Instructions • Les instructions représentent les opérations (addition, par exemple) effectuées par un ordinateur. Elles sont composées de plusieurs champs: - Le code de l’opération à effectuer; - Les opérandes impliqués dans l’opération. • Le traitement de l’information est une suite d’opérations transformant une représentation de cette information en une autre représentation plus facile à manipuler ou à interpréter. Exemples: 245+5 x 2 -5=250; Gestion des comptes clients dans une banque; Recensement de la population; Inscription, notes des étudiants, …
• Le codage d’une information consiste à établir une correspondance entre la représentation externe (habituelle) de l’information (le nombre 65 ou le caractère «A» par exemple) et sa représentation interne dans la machine (une suite de bits). • L’unité de base de la théorie de l’information est le bit, bit = binary digit, qui signifie en anglais nombre binaire. • Un bit, par définition, est un composant quelconque ne pouvant se trouver que dans deux états possibles, exclusifs l’un de l’autre. Il prend la valeur 0 ou 1.
Nombre de bits
Convertir de la base 10 vers une base quelconque • Cas de nombre entiers : On divise le nombre par base b, puis le quotient obtenu par la base b, et ainsi de suite jusqu’a obtenir un quotient nul. La suite des restes obtenus correspond aux chiffres dans la base b visée,
Exemple 1
Sens inverse: binaire en décimal Comme, on a définit précédemment ( en base b), convertir un nombre binaire en base décimal c’est le calcul de la décomposition de ce nombre. Exemple:
Chapitre 2: L’élément de base d’un algorithme • Introduction • Définitions • Principe
Problème • Je veux informatiser ce problème et le rendre exploitable à travers ma machine. Qu’est ce que je dois faire ? 2*x + 3 = 0 10*x - 1= 0 0*x + 0 = 0 0*x + 3 = 0 ? ? a*x + b = 0 ? ?
Principe d’algorithmique Énoncé non précis : Problème informel Spécification Analyse Énoncé précis : Problème formel Algorithme Programmation Langage de programmation : Pascal, . . Compilation Exécutable du programme Exécution Résultat
Algorithmique Définition : Encyclopédie Universelle Un algorithme est une suite finie de règles à appliquer dans un ordre déterminé à un nombre fini de données pour arriver, en un nombre fini d'étapes, à un certain résultat, et cela indépendamment des données
Algorithmique Définition : C’est un pseudo-langage qui est conçu pour résoudre les problèmes et applications sans aucune contrainte due aux langages de programmation et aux spécificités de la machine. Ce pseudo-langage sera ensuite traduit et codé dans le langage de programmation désiré.
Langage de programmation Définition : On appelle langage de programmation tout ensemble fini de mots réservés qui permettent de traduire les instructions de l’algorithme afin de l’exécuter par l’ordinateur. Exemple : Turbo Pascal, Cobol, Fortran, C, Delphi, Visual Basic (VB), C++, Java etc. . .
Compilateur Définition : On appelle compilateur tout programme spécial qui permet d’avoir un programme exécutable à partir d’un programme source: Le programme ainsi obtenu est appelé programme Objet
Structure générale d’un algorithme Titre du Problème Déclaration des Constantes Déclaration des Objets Déclaration des Variables Déclaration des Tableaux Déclaration des Procédures et Fonctions Début Instructions Manipulation FIN
Etapes de résolution Démarches à suivre pour résoudre un problème donné: Identifier les données du départ (entrées) et celle(s) qu’il faut obtenir (sorties); Structurer les données (variables ou constantes, type. . . ); Réfléchir pour déterminer les actions nécessaires à l’obtention des résultats ; Présenter les résultats.
Chapitre 2: L’élément de base d’un algorithme • Variables
Donnée ou objet Définition : Un objet est toute partie identifiable de l’information au cours d’un traitement. Il est caractérisé par son nom, son type et sa valeur. L’ensemble des objets manipulés par un algorithme est appelé: environnement de cet algorithme. Remarque : Les objets manipulés par un ordinateur sont : Les Constantes et Les Variables
Les constantes Définition : Les Constantes désignent des références à des valeurs invariantes dans le programme Syntaxe de la déclaration : Constante Nom_Constante = Valeur Exemple : Constante Pi = 3. 14
Les variables Définition : Ce sont des références (adresses mémoires) où vont être stockées des valeurs variables. Les différentes valeurs d’une référence vont appartenir au type de données auquel appartient la référence. Remarques : 1°- Le nom d’une variable suite de caractères qui permet d’identifier la variable d’une manière unique dans un algorithme. 2°- Il existe différents types de variables.
Types de variables: Entier Définition : C’est l’ensemble des nombres entiers positifs ou négatifs. Syntaxe de la déclaration : Variable variable 1, variable 2, … : Entier Exemple : Variable a, b : Entier a et b sont, par exemple, les coefficients de l’équation : ax + b = 0
Types de variables: Réel Définition : C’est l’ensemble des nombres réels, c’est à dire les nombres décimaux sans limitation. Syntaxe de la déclaration : Variable variable 1, variable 2, … : Réel Exemple : Variable x, y : Réel
Chaines de caractères Définition : C’est une suite de caractères, c’est à dire des combinaisons de caractères (lettres, chiffres, symboles. . ). Syntaxe de la déclaration : Variable variable 1, variable 2, … : Caractère Exemple : Variable Nom, Catégorie : Caractère
Booléen Définition : Il s’agit des objets qui ne peuvent prendre que deux valeurs vrai ou faux. Syntaxe de la déclaration : Variable variable 1, variable 2, … : Booléen Exemple : Variable Décision : Booléen
Autres types de déclarations Objets : Type Tableau Un tableau permet de représenter un ensemble de valeurs ayant des propriétés communes et appartenant toutes au même type. Ces variables sont identifiées par un même nom mais un numéro de repère(indice) pour chacun. Les Fonctions et Les Procédures Ce sont des sous-programmes auxquels on peut faire référence à l’intérieur d’un programme. Ils sont conçus pour éviter les répétitions et pour découper des programmes jugés trop longs; ce qui facilite la lisibilité du programme principal.
Manipulations des variables Définition : On appelle instruction toute commande élémentaire que l’on doit appliquer sur des objets pour avoir des sorties bien définies. Définition : Une action est un événement qui change l’état d’un objet d’un état initial donné à un état final désiré. Une action a une durée d’exécution finie et un effet propre et bien défini. Chaque action porte sur des objets sur lesquels elle s’exécute : L'Action est une seule instruction ou un groupe d’instructions
Structure d’un algorithme Titre du Problème Déclaration des Constantes Déclaration des Objets Déclaration des Variables Déclaration des Tableaux Déclaration des Procédures et Fonctions Début Instructions Manipulation FIN
Manipulation: Corps d’algorithme Dans la partie manipulation, on doit commencer par le mot DEBUT et se termine par le mot FIN : DEBUT Instruction 1 Instruction 2 ……. Instruction n FIN Action
Les instructions La partie manipulation utilise les différents objets déclarés dans la partie déclaration et leur applique des opérations afin de retourner le(s) résultat(s) attendu(s) par le programmeur. Pour ce fait, il y a différentes actions, dites instructions, à savoir : Instructions de dialogue Homme-Machine ; Instructions d’affectation ; Instructions à structure alternative ; Instructions à structure répétitive. Etc…
Fonction de dialogue Output L’affichage des informations: Pour faire comprendre qu’il faut afficher des informations à l’écran, on utilise l’instruction écrire qui obéit à la syntaxe suivante : Écrire (Variable ou ‘ Message’ ) Exemples : Écrire (‘ Saisissez la valeur de a ’) Écrire (‘ Saisissez la valeur de b ’) Écrire (‘ Saisissez les valeurs de a et b ’) Écrire (‘Le résultat trouvé est : ’, r ) Écrire (r)
Fonction de dialogue Input La Saisie des informations: Pour indiquer dans un algorithme que telle donnée doit être lue par le système, on utilise l’instruction lire qui obéit à la syntaxe suivante : Lire(Variable) Exemple : Écrire (‘ Saisissez la valeur de a ’) Lire(a)
Instruction d’affectation Définition: C’est le stockage d’une valeur à un endroit spécifique(variable). Pour affecter une valeur à une variable, on écrit : Variable Valeur Exemple : Variable valeur 1 + valeur 2 Variable valeur 1 * valeur 2 Variable valeur + Variable 1
n n n Les variables sont des références (adresses mémoires) où vont être stockées des valeurs qui peuvent changer au cours de l’exécution du programme. Les mémoires sont repérées par des numéros (pour l’ordinateur) ou des noms (pour le programmeur, qui a intérêt à choisir des noms significatifs). Chaque fois qu’on procède à une nouvelle affectation, l’ancien contenu de la mémoire est perdu et un nouveau contenu est placé dans la mémoire. Les constantes correspondent à des zones mémoires dont le contenu ne peut pas varier. ’A’ octet n° 52 01000001
Exemple Quels résultats produit l’algorithme suivant ? Les types de variables sont-ils corrects Déclaration Titre : Calcul Variable Début Manipulation A ← 30 B ← A * 2 Écrire('B=' , B) C ← (B + A)/4 B D Fin A: Entier C, B : Réel D : caractère E : Booléen ← ← ← C / 5 ‘Amine’ E (A > 40) Ou (C < B) Écrire('les valeurs obtenues sont : A = ' , A , 'B = ' , B , ' C = ', C , ' D = ', D, ' E = ', E)
Etat de la mémoire Instruction Après l’instruction A ← 30 Après l’instruction B←A*2 Après l’instruction C ← (B + A)/4 Après l’instruction B← C/5 Après l’instruction D ← ‘Amine' Après l’instruction E ← (A >40) Ou (C<B) A B C D E 30 — — 30 60 — — — 30 60 22. 5 — — 30 4. 5 22. 5 Amine Faux —
Exercice Énoncé: Écrire l’algorithme permettant le calcul de la surface d’un cercle connaissant son rayon : Surface = * Rayon 2 Entrée : La valeur du rayon Manipulation Sortie : La Surface calculée
Solution Titre : Surface d’un cercle Déclaration : Constante Pi=3. 14 Variable Rayon : Entier Variable Surface : Réel * Donnée d’entrée* * Donnée de sortie* Manipulation : DEBUT Écrire ( 'Saisir la valeur du rayon' ) Lire(Rayon) Surface Rayon * Pi Écrire (' La Surface du cercle est : ', Surface) FIN
Exercice Écrire l’algorithme qui permet de déterminer le salaire mensuel d’un commercial sachant que ce salaire comporte un montant fixe de 4000 DHS et une commission qui représente 10% du chiffre d’affaire réalisé par mois.
- Analyse du problème Recenser les données dont on dispose, celles qu’on cherche à produire • • Choisir les actions à utiliser pour résoudre le problème - Présentation de l’algorithme * Déclarer toutes les données utilisées (variables, constantes, types) * Organiser les actions * Présenter les résultats
Solution Titre : Commission Déclaration : Constante M = 4000 Variable CA : Entier * Donnée d’entrée* Com : Réel * Donnée intermédiaire* Sal : Réel * Donnée de sortie* Manipulation : DEBUT Écrire ('Donner le CA mensuel en DHS') Lire(CA) Com CA * 10/100 Sal Com + M Écrire ('Le salaire mensuel est de : ', Sal, ' en DHS ' ) FIN
Exercice Écrire un algorithme qui calcule la moyenne générale d’un étudiant sachant que celle-ci se calcule de la manière suivante : Moyenne = [ 3 * Note(Biologie) + 2* Note(Géologie) + Note(LCI)] / 6 Indication : Entrées: NB, NG, NLCI Algorithme Sortie: MG
Représentation en langage C (De l’algorithmique au langage C) 53 Filière MIP (S 1) : Module I 111
Structure d’un programme C La structure d’un programme C est la suivante : Votre programme doit Obligatoirement contenir une fonction principale « main ( ) » , qui est exécutée lorsque le programme est lancé #include<stdio. h> void main () { Déclaration des variables Corps } mon. Programme. c 54 Filière MIP (S 1) : Module I 111
Structure d’un programme C #include<stdio. h> Void main () { Déclaration des variables Corps } mon. Programme. c 55 Filière MIP (S 1) : Module I 111
Structure d’un programme C Mon premier programme : Bonjour tout le monde #include <stdio. h> void main() { printf(" Bonjour tout le monde ") ; } On sauvegarde ce programme dans un fichier qui se nomme programme 1. c 56 Filière MIP (S 1) : Module I 111
Structure d’un programme C Mon premier programme : Bonjour tout le monde Ø La machine ne comprend que le langage machine Ø Il faut traduire mon programme 1. c en langage machine à l’aide d’un traducteur du langage C vers le langage machine Ø Un programme appelé compilateur vérifie la syntaxe de mon programme (on dit d’une façon générale, code source) et le traduit en code objet, compris par le processeur Ø Le programme en code objet ainsi obtenu peut être exécuté sur la machine 57 Filière MIP (S 1) : Module I 111
Compilation d'un programme C Schéma simplifié de la compilation #include <stdio. h> void main() { printf(" Bonjour tout le monde ") ; } 58 Filière MIP (S 1) : Module I 111
Compilation d'un programme C Schéma: Bibliothèques de fonctions et compilation 59 Filière MIP (S 1) : Module I 111
Compilation d'un programme C Quelques environnements de développement Sous Windows Sous Linux Ø Eclipse Ø Netbeans Ø Visual C++ Ø KDevelop Ø Turbo c++ Ø… Ø Dev-C++ 60 Filière MIP (S 1) : Module I 111
De l’algorithmique au C Algorithme et programmation C Algorithme somme #include <stdio. h> variable X, Y: Entier void main ( ){ Début int X, Y ; X 4 X=4 ; Ecrire("Donner Y ") printf("Donner Y"); Lire(Y) scanf("%d", &Y); Ecrire(X+Y) printf("%d", X+Y); Fin } 61 Filière MIP (S 1) : Module I 111
De l’algorithmique au C Traduction de l’entête d’un algorithme Syntaxe en pseudo-code: Algorithme <nom_algorithme> Syntaxe en langage C : void main ( ) (éventuellement ajouter au début du fichier #include<stdio. h>) 62 Filière MIP (S 1) : Module I 111
De l’algorithmique au C Traduction des déclarations d’un algorithme : variables Syntaxe en pseudo-code: variable<nom_variable> : <type_variable> Syntaxe en langage C : <type_variable> <nom_variable> ; 63 Filière MIP (S 1) : Module I 111
De l’algorithmique au C Traduction des déclarations d’un algorithme : variables 64 Filière MIP (S 1) : Module I 111
De l’algorithmique au C Traduction des instructions : affectation Exemple: 65 Filière MIP (S 1) : Module I 111
De l’algorithmique au C Traduction des instructions : écriture Exemple : 66 Filière MIP (S 1) : Module I 111
De l’algorithmique au C Exemple : Traduire en C l'algorithme suivant 67 Filière MIP (S 1) : Module I 111
De l’algorithmique au C Corrigé #include<stdio. h> Void main ( ) { int A, B, C; A = 3; B=2; printf(" Avant échange"); printf("La valeur de A =%d et de B =%d", A, B); C=B; B=A; A=C; printf(" Après échange") ; printf("La valeur de A =%d et de B =%d", A, B); } 68 Filière MIP (S 1) : Module I 111
De l’algorithmique au C Traduction des instructions : lecture Exemple : 69 Filière MIP (S 1) : Module I 111
De l’algorithmique au C Exemple : Traduire en C l'algorithme suivant 70 Filière MIP (S 1) : Module I 111
De l’algorithmique au C Corrigé #include<stdio. h> Void main ( ) { int A, B, C; printf("Donner A"); scanf("%d", &A); printf("Donner B"); scanf("%d ", &B) ; C=B; B=A; A=C; printf("Après échange") ; printf("La valeur de A =%d et de B =%d", A, B); } 71 Filière MIP (S 1) : Module I 111
Les Constantes caractères (Séquences d'échappement) Une séquence d'échappement est un couple de symboles dont le premier est le signe d'échappement ''. a b t n r sonnerie curseur arrière tabulation nouvelle ligne retour au début de ligne NUL \ ? ' " f v trait oblique point d'interrogation apostrophe guillemets saut de page (imprimante) tabulateur vertical 72 Filière MIP (S 1) : Module I 111
Les opérateurs standards Opérateurs logiques Opérateurs arithmétiques + * / % addition soustraction multiplication division (entière et rationnelle!) modulo (reste d'une div. entière) && et logique || ou logique ! négation logique Opérateurs de comparaison == != <, <=, >, >= égal à différent de plus petit que, . . . 73 Filière MIP (S 1) : Module I 111
Initialisation des variables En C, il est possible d'initialiser les variables lors de leur déclaration: Exemple: int A, MAX = 1023; char C, TAB = 't'; float X = 1. 05 e-4; Remarque: int A; A=10; int A=10; 74 Filière MIP (S 1) : Module I 111
Initialisation des variables Les constantes En utilisant l'attribut const, nous pouvons indiquer que la valeur d'une variable ne change pas au cours d'un programme. Exemple: const int MAX = 767; const double TVA = 0. 25; const double e = 2. 7; const char NEWLINE = 'n'; 75 Filière MIP (S 1) : Module I 111
Commentaires Les commentaires sont non seulement utiles, mais nécessaires à la compréhension d'un programme. Forme « standard » : /*. . . */ ou //… Exemple: a = a + 1; /* Ceci est un commentaire de ligne */ b = b - 1; /* Et ceci en est un autre */ 76 Filière MIP (S 1) : Module I 111
Les opérateurs particuliers de C En pratique, nous retrouvons souvent des affectations comme: i = i + 2 En C, nous utiliserons plutôt la formulation plus compacte: i += 2 L'opérateur += est un opérateur d'affectation. Pour la plupart des expressions de la forme: expr 1 = (expr 1) op (expr 2) Il existe une formulation équivalente qui utilise un opérateur d'affectation: expr 1 op= expr 2 77 Filière MIP (S 1) : Module I 111
Les opérateurs particuliers de C Opérateurs d'affectation += -= *= /= %= ajouter à diminuer de multiplier par diviser par modulo Exemple A+=2; A*=B A%=B A=A+2; A=A*B; A=A%B; 78 Filière MIP (S 1) : Module I 111
Opérateurs d'incrémentation et de décrémentation Les affectations les plus fréquentes sont du type: I = I + 1 et En C, nous disposons de deux opérateurs pour ces affectations: I=I-1 I++ ou ++I pour l'incrémentation (augmentation d'une unité) I-- ou --I pour la décrémentation (diminution d'une unité) X=I++ passe d'abord la valeur de I à X et incrémente après X=I-- passe d'abord la valeur de I à X et décrémente après X=++I incrémente d'abord et passe la valeur incrémentée à X X=--I décrémente d'abord et passe la valeur décrémentée à X var ++; ⇒ Post-incrémentation ++ var; ⇒ Pré-incrémentation Exemple Supposons que la valeur de N est égal à 5: X = N++; X = ++N; Résultat: N=6 et X=5 Résultat: N=6 et X=6 79 Filière MIP (S 1) : Module I 111
Les priorités des opérateurs Priorité 1 (la plus forte): Priorité 2: Priorité 3: Priorité 4: Priorité 5: Priorité 6: Priorité 7: Priorité 8: Priorité 9 (la plus faible): () ! ++ -*/% +< <= > >= == != && || = += -= *= /= %= 80 Filière MIP (S 1) : Module I 111
Les fonctions arithmétiques standard Les fonctions suivantes sont prédéfinies dans la bibliothèque standard <math>. Pour pouvoir les utiliser, le programme doit contenir la ligne: #include<math. h> COMMANDE C exp(X) log 10(X) pow(X, Y) sqrt(X) fabs(X) sin(X) cos(X) tan(X) asin(X) acos(X) atan(X) sinh(X) cosh(X) tanh(X) EXPLICATION fonction exponentielle logarithme naturel logarithme à base 10 X exposant Y racine carrée de X valeur absolue de X sinus, cosinus, tangente de X arcsin(X), arccos(X), arctan(X) sinus, cosinus, tangente hyperboliques de X 81 Filière MIP (S 1) : Module I 111
Les conversions de type automatiques les valeurs des opérandes sont converties automatiquement dans un type commun. Ces manipulations implicites convertissent en général des types plus 'petits' en des types plus 'larges'; char < short ≤ int ≤ long < float < double Exemple char A=3; int B=4; float C=4; float D, E; char F; D = A/C; E = A/B; F = A/C; Ø Pour le calcul de D, A est converti en float et divisé par C. Le résultat (0. 75) est affecté à D qui est aussi du type float. On obtient donc: D=0. 75 Ø Pour le calcul de E, A est converti en int et divisé par B. Le résultat de la division (type int, valeur 0) est converti en float. On obtient donc: E=0. 000 Ø Pour le calcul de F, A est converti en float et divisé par C. Le résultat (0. 75) est retraduit en char. On obtient donc: F=0 82 Filière MIP (S 1) : Module I 111
Les conversions de type forcées (casting) Il est possible de convertir explicitement une valeur en un type quelconque en forçant la transformation à l'aide de la syntaxe: Casting (conversion de type forcée) (<Type>) <Expression> Exemple La valeur de A est explicitement convertie char A=3; int B=4; float C; C = (float)A/B; en float. La valeur de B est automatiquement convertie en float. Le résultat de la division (type rationnel, valeur 0. 75) est affecté à C. Résultat: C=0. 75 83 Filière MIP (S 1) : Module I 111
Écriture d'un caractère putchar('a'); putchar() c’est une fonction d’écriture d’un caractère. Exemples char A = 225; char B = 'a'; int C = 'a'; putchar('x'); putchar('? '); putchar('n'); putchar(65); putchar(A); putchar(B); putchar(C); Remarque: /* afficher la lettre x */ /* afficher le symbole ? */ /* retour à la ligne */ /* afficher le symbole avec le code 65 (ASCII: 'A') */ /* afficher la lettre avec le code 225 (ASCII: 'ß') */ /* beep sonore */ putchar(B); printf("%c", B) ; 84 Filière MIP (S 1) : Module I 111
Lecture d'un caractère getchar() c’est une fonction de lecture d’un caractère Exemple: int C; C = getchar(); Scanf("%c", &c); 85 Filière MIP (S 1) : Module I 111
Exemple 1 : Traduire en C l'algorithme suivant Algorithme Calcul Variable A : Entier C, B : Réel D : caractère E : Booléen Début A ← 30 B←A*2 Écrire('B=' , B) C ← (B + A)/4 B←C/5 D ← ‘A’ E ← (A > 40) Ou (C < B) Écrire('les valeurs obtenues sont : A = ' , A , 'B = ' , B , ' C =’, C, ' D = ', D, ' E = ', E) Fin 86
Exemple 2 : Traduire en C l'algorithme suivant Algorithme Surface d’un cercle Constante Pi=3. 14 Variable Rayon : Entier * Donnée d’entrée* Variable Surface : Réel * Donnée de sortie* DEBUT Écrire ( 'Saisir la valeur du rayon' ) Lire(Rayon) Surface Rayon * Pi Écrire (' La Surface du cercle est : ', Surface) FIN 87
Exemple 3 : Traduire en C l'algorithme suivant Algorithme Commission Constante M = 4000 Variable CA : Entier Com : Réel Sal : Réel * M: montant fixe* * Donnée d’entrée (CA: chiffre d’affaire) * * Donnée intermédiaire (Com: commission )* * Donnée de sortie(Sal: salaire mensuel )* DEBUT Écrire ('Donner le CA mensuel en DHS') Lire(CA) Com CA * 10/100 Sal Com + M Écrire ('Le salaire mensuel est de : ', Sal, ' en DHS ' ) FIN 88
Chapitre 2: L’élément de base d’un algorithme • Structure alternative
Structure alternative Les conditions : On appelle condition simple toute expression de la forme : Variable 1 Opérateur Variable 2
Opérations Arithmétiques Opération Signification + Addition - Soustraction * Multiplication / Division % ou mod Modulo : le reste de la division de 2 valeurs entières
Opérations conditionnelles Pour exprimer les conditions, on utilise les opérateurs conditionnels suivants : Opérateur Signification = < > <= >= <> Égal Inférieur Supérieur Inférieur ou égal Supérieur ou égal différent
Opérations logique On peut combiner des conditions à l’aide des opérateurs logiques : Opérateur Signification Et Et logique Ou Ou logique Non Négation logique Ou = Xor Ou exclusif
Exemple Expression Résultat (4 <7) ET (9>0) Vrai (1 < 0) OU (1<>1) Faux Non(13. 4 < 15) Faux
Priorité des opérations Priorité de *, / div et % par rapport à + et 5 + 9 * 3 = 32 et non 42 5*9+3 = 48 et non 60 Pour les opérateurs de même priorité, associativité à partir de la gauche 15 / 5 * 3 = 9 et non 1 5 – 2 + 4 = 7 et non – 1 On peut utiliser des parenthèses pour changer l’ordre des opérations : 15 / (5 * 3) = 1 (5 + 9 ) * 3 = 42
Types de variables et Opérations Priorité de *, / div et % par rapport à + et 5 + 9 * 3 = 32 et non 42 5*9+3 = 48 et non 60 Pour les opérateurs de même priorité, associativité à partir de la gauche 15 / 5 * 3 = 9 et non 1 5 – 2 + 4 = 7 et non – 1 On peut utiliser des parenthèses pour changer l’ordre des opérations : 15 / (5 * 3) = 1 (5 + 9 ) * 3 = 42
Structure Alternative: SI Pour exprimer le fait que des instructions vont être exécutées dans un cas alors que d’autres instructions peuvent être exécutées dans l’autre cas, on utilise une structure alternative. Syntaxe : Si condition alors Actions 1 [ Sinon Actions 2] Finsi Option Facultative
Exemple Titre : Test 1 Titre : Test 2 Variable x : entier Début Écrire ('Saisir un entier x ') Lire (x) Si (x > 0) alors Écrire (' x est un nombre positif ') Écrire('x est un nombre positif ') Finsi Sinon Écrire (' x est un nombre négatif ou nul') Finsi Fin
Exercice Solution : ……………. (Reste de l’algorithme) Si (MG >= 10) alors Écrire ('Admis') Sinon Écrire ('Ajourné') Finsi FIN
Exercice Écrire l’algorithme qui permet de calculer le maximum de deux entiers quelconques.
Solution Titre : Maximum Variable a , b, max : entier Début Écrire ('Saisir deux entiers a et b ') Lire(a, b) Si (a > b) alors max a Sinon max b Finsi Écrire ('le maximum de ' , a , ' et de ' , b, ' est : ' , max) Fin
Instruction: Selon-cas
Syntaxe : Suivant Cas variable Faire Cas Valeur 1 Actions 1 Cas Valeur 2, Valeur 3, Valeur 4 Actions 2 Cas Valeur 5 à Valeur 7 Actions 3. . Sinon Cas Actions N Fin Suivant
Exemple Écrire l’algorithme qui permet de déterminer le nombre de jours d’un mois d’une année donnée
…. Reste de l’Algorithme Selon Cas M Faire Cas 2 Action 1 Cas 1, 3, 5, 7, 8, 10 , 12 Action 2 Cas 4, 6, 9, 11 Action 3 Sinon Cas Écrire ( 'Attention : Mois Incorrect ') Fin Suivant FIN
Structure répétitive Problème : Écrire un algorithme permettant d’afficher 300 fois le message : ‘‘ bonjour tout le monde’’. Solution Classique : DEBUT Écrire (' Bonjour tout le monde '). . Écrire (' Bonjour tout le monde ') FIN 1 2 300
Boucle: Tant que On utilise cette instruction pour exécuter des actions tant qu’une condition est réalisée. Syntaxe : <initialisation> Tant que Condition Faire <bloc de traitement> <bloc de contrôle> Fin tant que Action
« Sémantique : Si condition = T n Tant que Valeur(T)=Vrai le bloc d'instructions R sera exécuté. n Si valeur(T)=Faux on passe à l'instruction suivante. Ø Avec TANT QUE le test fait à PRIORI. Ø Il se peut que l'on ne rentre jamais dans la boucle. Ø La boucle n'est pas INCONDITIONNELLE. On ne connaît pas à l’avance le nombre d'itérations.
Solution de l’exercice précédent : Variable i : Entier DEBUT i 0 * Initialisation * Tant que (i < 300) Faire Écrire (' Bonjour tout le monde ') i i+1 Fin tant que FIN
Exercice Afficher tous les multiples de 9 inférieurs à 485 Titre : Multiples de 9 Variable M, i : Entier *i: variable intermédiaire: compteur* DEBUT i 0 * initialisation de la boucle* M 0 Tant que (M < 485) Faire Écrire (M , ' est un multiple de 9 ' ) i i+1 * incrémentation du compteur * M i * 9 Fin tant que FIN
Exercice Dans cet algorithme combien de fois la boucle est- elle exécutée ? Titre : Boucle 1 Variable i , y : Entier Début i y 0 Tant Que (i<7) faire i i+1 y y+i Écrire (' y = ' , y) Fin Tant que Fin i = variable intermédiaire = compteur i i+1 = incrémentation du compteur
Boucle: Faire jusqu’à On utilise cette instruction pour exécuter des actions jusqu'à ce que une condition soit remplie. Syntaxe : <Initialisation> Faire <bloc de traitement> <bloc de progression > Jusqu’à Condition Action
Sémantique : Si valeur(T)= Faux la boucle est à nouveau exécutée. Si Valeur(T)=Vrai, on passe à l'instruction suivante. Avec Faire jusqu’à le test fait à POSTERIORI. • Il y aura un passage dans la boucle. Le bloc d’instructions sera exécuté au moins une fois. • La boucle n’est pas INCONDITIONNELLE. On ne connaît pas à l’avance le nombre d’itérations.
Exemple Titre : Boucle 2 Variable i , y : Entier Début i y 0 faire i i+1 y y+i Écrire (' y = ' , y) Jusqu’à (i >7) Fin Valeurs de y ?
Exercice Écrire un algorithme permettant de calculer, pour un entier N> 0, la somme : SN = 1 + 2 + 3 + …… + N
Solution Variable N, S, i : Entier DEBUT Écrire (' Saisir une valeur entière positive : ') Lire (N) S 0 * initialisation de la boucle* i 0 Faire i i + 1 S S + i jusqu’à (i > =N) Écrire (' La somme : S = ', S) FIN
Boucle: Pour La spécification de cette instruction c’est qu’elle limite le nombre de fois où doit se répéter le bloc Action Syntaxe : <Initialisation> Pour variable valeur 1 à valeur 2 faire <Bloc de traitement> Fin Pour La boucle est Inconditionnelle On connaît à priori le nombre d'itérations
Exercice Écrire un algorithme permettant le calcul du factoriel d’un entier N > 0 donné : N !
Titre : Factoriel Variable N : Entier i : Entier * i variable intermédiaire F : Entier i = compteur * DEBUT Écrire (' Saisir une valeur entière N > 0: ') Lire (N ) F 1 * initialisation de la boucle* Pour i 1 à N Faire F F*i Fin Pour Écrire (' Le factoriel de ', N , ' est : ' , F) FIN
Exercice Écrire l’algorithme permettant de calculer la moyenne des notes de N étudiants
Solution Titre : Moyenne Variable N, i : Entier note, S, Moy : Réel DEBUT Écrire (' Saisir le nombre d’étudiants: ') Lire (N) S 0 * initialisation de la boucle* Pour i 1 à N faire Écrire (' Saisir la note de l’Etudiant ' , i , ' : ') Lire (note) S S + note Fin Pour Moy S/N Écrire (' La moyenne est : ', Moy) FIN
A tenir Si nombre d'itérations connu Alors Boucle Pour Sinon Si itération exécutée au moins une fois Alors Boucle Faire jusqu’à Sinon Boucle Tant que faire
Boucle: tant que faire et faire jusqu’à Remarques: Soient T une condition et R l’action. Alors il y a équivalence entre les boucles Tant que faire et Faire jusqu’à. La syntaxe est la suivante: n Tant Que T faire R Fin Tant Que ~ Et n Faire R jusqu ’à T § Si T alors Faire R Jusqu ’à non(T) Fin. Si § ~ R Tant Que non(T) faire R Fin Tant Que
Exercice 1 - Écrire un algorithme permettant de déterminer le Nème terme d’une suite numérique connaissant son premier terme et ses coefficients a et b et tels que: Un = a * Un-1 + b 1 n N 2 - Écrire un algorithme permettant de définir le rang N et le terme correspondant de la suite tels que UN > 1000
Solution 1) Le nombre d’itérations est connu : Boucle Pour Variable N, i : Entier a, b, S : Réel DEBUT Écrire (' Saisir la valeur de N: ') Lire (N) Écrire ('Saisir la valeur du premier terme et les coefs a et b: ') Lire (S , a, b ) Pour i 1 à N faire S a * S + b Fin Pour Écrire ( ' Le terme d’’ordre: ’, N, ‘est : ', S ) FIN
2) Le nombre d’itérations inconnu : Boucle Faire jusqu’à Variable N : Entier a, b, S : Réel DEBUT Écrire ('Saisir la valeur du premier terme et les coefs a et b: ') Lire (S , a, b) N 0 Faire S a * S + b N N + 1 Jusqu’à S > 1000 Écrire (' La somme de la série est : ', S) Écrire (' Le rang est : ', N ) FIN
Exercice Écrire un algorithme permettant de calculer la somme : Sn(x) = 1/x + 2/x 2 + 3 /x 3 + …… + n /xn
Chapitre 4: Tableaux & fonctions
Tableaux Un tableau permet de représenter un ensemble de valeurs ayant des propriétés communes et appartenant toutes au même type. Ces variables sont identifiées par un même nom mais un numéro de repère(indice) pour chacun. Remarque : 1°- Un tableau peut être d’une ou plusieurs dimensions. 2°- La syntaxe de la déclaration d’un tableau change selon la dimension de ce dernier
Syntaxe de la déclaration : Tableau à une dimension : Tab Nom-Tableau[nombre de valeurs supportées] : Type Tableau à plusieurs dimensions : Tab Nom-Tableau[nombre de valeurs supportées en dimension 1, nombre de valeurs supportées en dimension 2, , … ] : Type
Tableau à une dimension : - Un tableau pour enregistrer les salaires de 30 employés : Tab Salaires[30] : Réel Salaires[16] = 4000. 50 Tableau à plusieurs dimensions : - Une matrice d’entiers de 5 lignes et 7 colonnes : Tab Matrice-Test[5, 7 ] : Entier Matrice-Test[2, 3] = 13
Exemple 1: Calcul Moyenne Tableau Note[11]: Réel Variable Moy, Som : Réel Début Pour i ← 1 à 11 faire Ecrire ("Entrez la note n", i) Lire (Note([i]) Fpour Som ← 0 Pour i ← 1 à 11 faire Som ← Som + Note[i] Fpour Moy ← Som / 11 Ecrire (‘la moyenne est ’, Moy) Fin
Exemple 2 • Ecrire un algorithme qui permet d’afficher une matrice et de calculer la somme de deux matrices
Fonctions et procédures Ce sont des sous-programmes auxquels on peut faire référence à l’intérieur d’un programme. Ils sont conçus pour éviter les répétitions et pour découper des programmes jugés trop longs ce qui facilite la lisibilité du programme principal. Remarques : 1°- Les Fonctions et les Procédures sont caractérisées par des paramètres d’entrée et des paramètres de sortie. 2°-La fonction retourne une seule valeur tandis que La procédure peut retourner plusieurs valeurs ou aucune.
- Boris velikson
- Logique algorithmique
- Algorithmique
- Exercices et problèmes d'algorithmique helen kassel
- Aspect java
- Programmation agile
- Tableau go
- Role ladder
- Michel bierlaire
- Programmation web avancée
- Programmation
- Problème de transport en programmation linéaire
- Planification annuelle football
- Programmation lineaire
- Programmation procédurale vs orienté objet
- Programmation
- Php
- Scheme langage
- Typedef
- Theoreme des ecarts complementaires exemple
- Manuel de programmation robot abb irc5
- Problme