Chat with us, powered by LiveChat 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 - EssayAbode

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