23 Sep Algorithms power the biggest web companies and the most promising startups. Interviews at tech companies start with questions that probe for good algorithm thinking. In this computer scienc
Algorithms power the biggest web companies and the most promising startups. Interviews at tech companies start with questions that probe for good algorithm thinking.
In this computer science course, you will learn how to think about algorithms and create them using sorting techniques such as quick sort and merge sort, and searching algorithms, median finding, and order statistics.
Algorithmique Partie5-boucles.pdf
Algorithmique: Partie5
PRÉPARÉ PAR PR. <Username>
GINFO1
Année Scolaire 2021-2022
Les boucles
Les boucles servent à répéter l'exécution d'un groupe d'instructions un
certain nombre de fois
On distingue trois sortes de boucles en langages de programmation :
Les boucles tant que (while): on y répète des instructions tant qu'une certaine
condition est réalisée
Les boucles répéter jusqu’à (do while): on y répète des instructions jusqu'à ce qu'une
certaine condition soit réalisée
Les boucles pour ou avec compteur (For): on y répète des instructions en faisant évoluer un compteur (variable particulière) entre une valeur initiale et une valeur
finale
La boucle Tant que (1)
la condition (dite condition de contrôle de la boucle) est évaluée avant chaque itération
si la condition est vraie, on exécute instructions (corps de la boucle), puis, on retourne tester la condition. Si elle est encore vraie, on répète l'exécution, …
si la condition est fausse, on sort de la boucle et on exécute l'instruction qui est après FinTantQue
La boucle Tant que (2)
Le nombre d'itérations dans une boucle TantQue n'est pas connu au moment d'entrée dans la boucle.
Il dépend de l'évolution de la valeur de condition
Une des instructions du corps de la boucle doit absolument changer la valeur de condition de vrai à faux (après un certain nombre d'itérations), sinon le programme tourne indéfiniment
=> Attention aux boucles infinies
Exemple de boucle infinie :
i ← 2
TantQue (i > 0)
i ← i+1 (attention aux erreurs de frappe : + au lieu de -)
FinTantQue
Boucle Tant que : exemple (nombre d’iterations est inconnu)
Contrôle de saisie d'une lettre majuscule jusqu’à ce que le caractère entré soit valable:
Variable C : caractère
Debut
Ecrire (" Entrez une lettre majuscule ")
Lire (C)
TantQue (C < 'A' ou C > 'Z’)
Ecrire ("Saisie erronée. Recommencez")
Lire (C)
FinTantQue
Ecrire ("La letter entree est en majuscule")
Fin
Début
Fin
Afficher Entrez une lettre C
Lire C
Ecrire ("Saisie erronée.Recommencez")
C < 'A' ou C > 'Z’
Faux Vrai
Organigramme
Lire C
Ecrire ("La lettre entree est en majuscule")
Reboucler
La boucle Repeter Jusqu’a
la condition (dite condition de contrôle de la boucle) est évaluée avant chaque itération
si la condition est fausse, on exécute instructions (corps de la boucle), puis, on retourne tester la condition. Si elle est encore vraie, on répète l'exécution, …
si la condition est vrai, on sort de la boucle et on exécute l'instruction qui est après jusqu’a
Repeter Instructions
Jusqu’a (condition) Vrai
Faux
1. Ecrivez un algorithme qui reçoit un entier de
l’utilisateur et ne l’affiche que si il est positif.
2. Tracez l’organigramme.
Repeter jusqu’a: exemple (nombre d’iterations est inconnu)
Algorithme
Variables: X: entier Début
Répéter
écrire (Entrez un entier X)
Lire (X)
Jusqu’à (x>0)
écrire (X est positif)
Fin
Début
Fin
écrire (Entrez un entier X)
Lire (X)
écrire (X est positif)
Si X>0
Faux
Vrai
Organigramme
Reboucler
Boucle Pour: Exemple
(nombre d’itérations est connu)
1. Ecrivez un algorithme pour calculer la moyenne de
N notes entrées par l’utilisateur et l’afficher sur
l’écran.
2. Tracez l’organigramme.
11
Algorithme
Variables N,i: entier
Note, somme, Moy: reel
debut
somme 0 Afficher (“Entrez N”)
Lire (N)
Pour i allant de 1 a N faire
Afficher (“Entrez Note”)
Lire (Note)
somme somme+Note fin Pour
Moy somme/N Affichez (Moy)
fin
13
Début
Fin
i<=N
Somme 0
Lire(Note)
i i+1
Afficher (“Entrez N”)
Afficher (“La Moyenne de N notes est: ”,Moy)
Vraie
Faux
i 1
Afficher (“Entrez une note”)
somme somme+Note
Moy Somme/N
Lire (N)
Reboucler
Algorithmique Partie1-Introduction.pdf
Notions
d’Algorithmiques:
Partie1
Préparé par<Username>
GINFO1
Année Scolaire
2020-2021
Plan
Définition d’un algorithme
Les notions de bases
Les outils de bases de l’algorithmique:
Les identificateurs
Les types de variables
Les instructions élémentaires en algorithmique:
Déclaration des variables
L’affectation
Les opérations de lecture/Ecriture
L’organigramme
Exercices
Lo mot Algorithme
Le mot algorithme est issu de la déformation du nom d’un
savant perse du IXème siècle appelé Al Khuwarizmi.
Donc, il n’y a aucun rapport avec le mot rythme, ce qui explique
l’absence de y dans le mot algorithme.
Algorithme : séquence finie d’actions permettant de résoudre
un problème donné.
La notion d’algorithmique est directement dérivée du concept
d’algorithme.
Algorithmique : ensemble des méthodes permettant de définir
et/ou d’étudier des algorithmes.
Definition d’un algorithme
Un algorithme prend en entrée des données et fournit un résultat
permettant de donner la réponse à un problème
Un algorithme =Une série d’opérations à effectuer :
o Opérations exécutées en séquence ⇒algorithme séquentiel.
o Opérations exécutées en parallèle ⇒algorithme parallèle.
o Opérations exécutées sur un réseau de processeurs ⇒algorithme réparti ou
distribué.
Mise en œuvre de l’algorithme
= implémentation (plus général que le codage)
= écriture de ces opérations dans un langage de programmation donne un
programme.
Représentation d’un
algorithme Un algorithme est généralement exprimé par
Un langage informel, ou incomplètement formalisé : texte libre (i.e.
description des différentes étapes en français),
Un Organigramme (diagramme représentant les étapes),
Un pseudo-code (version simplifiée d’un langage informatique) ou autres.
Notions de base
Dans les langages de programmation une variable sert à
stocker la valeur d’une donnée
Une variable désigne en fait un emplacement mémoire
dont le contenu peut changer au cours d’un programme
(d’où le nom variable)
Règle : Les variables doivent être déclarées avant
d’être utilisées, elles doivent être caractérisées par :
un nom (Identificateur)
un type (entier, réel, caractère, chaîne de caractères, …)
Choix des identificateurs (1)
Le choix des noms de variables est soumis à quelques règles qui varient selon le langage, mais en général:
Un nom doit commencer par une lettre alphabétique exemple valide: A1 exemple invalide: 1A
doit être constitué uniquement de lettres, de chiffres et du soulignement _ (Eviter les caractères de ponctuation et les espaces)
Exemples:
Noms valides: SMIP2007, SMP_2007
Noms invalides: SMP 2005,SMI-2007,SMP;2007
doit être différent des mots réservés du langage (par exemple en Java: int, float, else, switch, case, default, for, main, return, …)
La longueur du nom doit être inférieure à la taille maximale spécifiée par le langage utilisé
Choix des identificateurs (2)
Conseil: pour la lisibilité du code choisir des noms
significatifs qui décrivent les données manipulées
exemples: TotalVentes2004, Prix_TTC, Prix_HT
Remarque: en pseudo-code algorithmique, on va
respecter les règles citées, même si on est libre dans la
syntaxe
Types de variables
Le type d’une variable détermine l’ensemble des valeurs qu’elle peut prendre, les types offerts par la plus part des langages sont:
Type numérique (entier ou réel)
Byte (codé sur 1octet): de 0 à 255
Entier (codé sur 2 octets) : -32 768 à 32 767
Entier long (codé sur 4 ou 8 octets)
Réel simple précision (codé sur 4 octets)
Réel double précision (codé sur 8 octets)
Type logique ou booléen: deux valeurs VRAI ou FAUX
Type caractère: lettres majuscules, minuscules, chiffres, symboles, … exemples: ’A’, ’a’, ’1’, ’?’, …
Type chaîne de caractère: toute suite de caractères, exemples: " Nom, Prénom", "code postale: 1000", …
Declaration des variables
Rappel: toute variable utilisée dans un programme doit avoir fait
l’objet d’une déclaration préalable
En pseudo-code, on va adopter la forme suivante pour la
déclaration de variables:
Variables liste d'identificateurs : type
Exemple:
Variables i, j, k : entier
x, y : réel
ch1, ch2 : chaîne de caractères
Remarque: pour le type numérique on va se limiter aux entiers et
réels.
L’instruction d’affectation
l’affectation consiste à attribuer une valeur à une variable
(ça consiste en fait à remplir où à modifier le contenu d'une zone mémoire)
En pseudo-code, l'affectation se note avec le signe ←
Var← 2 : veut dire attribuer la valeur de 2 à la variable Var
e peut être une valeur, une autre variable ou une expression
Var et e doivent être de même type ou de types compatibles
l’affectation ne modifie que ce qui est à gauche de la flèche
Ex valides: i ←1 j ←i k ←i+j
x ←10.3 OK ←0 ch1 ←"SMI"
ch2 ←ch1 x ←4 x ←j
(voir la déclaration des variables dans le transparent précédent)
non valides: i ←10.3 OK ←"SMI" j ←x
Remarques importantes
Beaucoup de langages de programmation (C/C++, Java, …) utilisent le signe égal = pour l’affectation ←. Attention aux confusions:
l'affectation n'est pas commutative : A=B est différente de B=A
l'affectation est différente d'une équation mathématique :
A=A+1 a un sens en langages de programmation
A+1=2 n'est pas possible en langages de programmation et n'est pas équivalente à A=1
Certains langages donnent des valeurs par défaut aux variables déclarées.
Pour éviter tout problème il est préférable d'initialiser les variables déclarées
Exercice1
Donnez les valeurs des variables A, B et C après exécution des instructions suivantes ?
Algorithme test1
Variables A, B, C: Entier
Début
A ← 3
B ← 7
A ← B
B ← A+5
C ← A + B
C ← B – A
Fin
Exercice2
Donnez les valeurs des variables A et B après exécution des instructions suivantes ?
Algorithme test2
Variables A, B : Entier
Début
A ← 1
B ← 2
A ← B
B ← A
Fin
Les deux dernières instructions permettent-elles d’échanger les valeurs de A et B ?
Les instructions d'entrées-sorties:
lecture et écriture (1)
Les instructions de lecture et d'écriture permettent à la
machine de communiquer avec l'utilisateur
La lecture permet d'entrer des donnés à partir du
clavier
En pseudo-code, on note: lire (var)
la machine met la valeur entrée au clavier dans la zone
mémoire nommée var
Remarque: Le programme s'arrête lorsqu'il rencontre
une instruction Lire et ne se poursuit qu'après la frappe
d’une valeur au clavier et de la touche Entrée
Les instructions d'entrées-sorties:
lecture et écriture (2)
L'écriture permet d'afficher des résultats à l'écran (ou
de les écrire dans un fichier)
En pseudo-code, on note: écrire (var)
la machine affiche le contenu de la zone mémoire var
Conseil: Avant de lire une variable, il est fortement
conseillé d’écrire des messages à l’écran, afin de
prévenir l’utilisateur de ce qu’il doit frapper
Exemple1
Ecrivez un algorithme pour lire un entier de
l’utilisateur et l’afficher sur écran.
Solution:
Algorithme test3
variable x:entier
début
afficher (entrez un entier: )
lire(x)
afficher(x)
fin
Exemple2
Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui calcule et affiche le double de ce nombre.
Solution:
Algorithme Calcul_double
variables A, B : entier
début
écrire("entrer un nombre ")
lire(A)
B ← 2*A
écrire("le double de ", A, "est :", B)
fin
Exemple3: algorithme
Ecrivez un algorithme pour lire deux entiers de l’utilisateur
et afficher leur moyenne sur l’écran.
Solution:
Algorithme calcul_moyenne
variable a,b:entier
moy: reel
début
afficher (entrez un entier: )
lire(a)
afficher (entrez un entier: )
lire(b)
moy ←(a+b)/2
afficher(la moyenne de,a, et,b, est: ,moy)
Fin
Declaration d’une constante
Une constante prend une valeur invariable dans tout le
programme :
La déclaration d’une constante permet de réserver de l’espace
mémoire pour stocker des données dont la valeur est fixée
pour tout l’algorithme
Syntaxe:
constante(<identificateur>: type) ← <expression>
Exemple :
constantes (MAX : entier) ←100
(DOUBLEMAX : entier) ←MAX *2
Remarques importantes pour
les constantes
Une constante ne change pas de valeur au cours du prorgamme.
Exemple:
Variable a: entier
constantes (Dim : entier) ←10
Début
a ← 2
a ← Dim
a ← Dim+20
Dim ← 30
Valide
Valide
Valide
invalide
Un organigramme
Représentation graphique
d’un organigramme
Il n’existe pas vraiment de norme pour les organigrammes représentant des algorithmes. On peut tout de même mentionner certains points qui font consensus :
Les étapes de début et de fin sont représentées par des rectangles aux coins arrondis ;
Les étapes de traitement/lecture sont représentées par des rectangles
Les étapes d’ecriture ou affichage sont représentées par des parallélogrammes.
Les étapes de test sont représentées par des losanges ;
les transitions par des liens orientés entre les formes;
Les appels à des fonctions ou procédures (aussi appelées sous- routines) sont représentés par des rectangles dont les côtés sont dédoublés ;
Ecrire (Entrez un entier: )
Début
Fin
Lire(X)
Ecrire(X)
Exemple1
Tracez l’organigramme pour lire un entier de l’utilisateur et
l’afficher sur écran.
Exemple2
Tracez l’organigramme qui demande un nombre entier à
l'utilisateur, puis qui calcule et affiche le double de ce nombre.
Fin
Ecrire (Entrez un entier: )
Lire(a)
Ecrire(b)
b ←a*2
Début
Exemple3
Début
Fin
Ecrire (Entrez un entier: )
Lire(a)
Ecrire(moy)
Ecrire (Entrez un entier: )
Lire(b)
moy ←(a+b)/2
Tracez l’organigramme pour lire deux entiers de l’utilisateur et
afficher leur moyenne sur l’écran.
Conclusion
Les étapes qui décrivent un programme sont représentées par un algorithme ou un organigramme.
Cette phase est très importante pour faciliter l’implémentation en un langage de programmation.
Un algorithme est une description complète et détaillée des actions à effectuer et de leur séquencement pour arriver à un résultat donné
Intérêt: séparation analyse/codage (pas de préoccupation de syntaxe)
Qualités:
exact (fournit le résultat souhaité)
efficace (temps d’exécution, mémoire occupée)
clair (compréhensible)
général (traite le plus grand nombre de cas possibles), …
L’algorithmique désigne aussi la discipline qui étudie les algorithmes et leurs applications en Informatique
Une bonne connaissance de l’algorithmique permet d’écrire des algorithmes exacts et efficaces
Algorithmique Partie2-Expressions.pdf
Notions d’Algorithmiques: