infor 101 - ugweb.cs.ualberta.ca

publicité
INFOR 101
Chapitre 2
Marianne Morris
1
L’informatique












Web et réseaux
Systèmes d’exploitation
Intelligence Artificielle
Théorie informatique
Graphiques
Algorithmes
Méthodes numériques
Robotiques
Génie informatique
Jeux vidéo
Bioinformatique
Informatique médicale
2
Que font les informaticiens?

Toutes sortes d’applications








Médicale
Biologique
Physique
Agriculture
Pédagogique
Astronomique
Climatologique
Robotique
3
INFOR 101





Algorithmes et Pseudocode
Programmation en C++
Architecture de l’ordinateur
Langage assembleur
Intro aux réseaux et à l’intelligence
artificielle
4
Révision du Chapitre 1

Objectifs:



Définir l’informatique
Introduction aux algorithmes
L’histoire des sciences informatiques
5
Révision du Chapitre 1
Introduction

Idées fausses:



L’informatique est l’étude des ordinateurs
L’informatique c’est apprendre à écrire des
programmes
L’informatique est l’étude des applications
de l’ordinateur et des logiciels
6
Révision du Chapitre 1
Définition de l’informatique

L’étude des algorithmes

Propriétés mathématiques et formelles


Réalisation de matériel


Construire des systèmes pour exécuter les algorithmes
Réalisations linguistiques


Comportement des algorithmes (corrects, efficaces)
Traduire les algorithmes en langage programmation
Applications

Créer des logiciels pour aider à résoudre les problèmes
7
Révision du Chapitre 1
Sommaire

L’informatique est l’étude d’algorithmes


…et non pas l’étude des ordinateurs!!!
Un algorithme est une séquence
d’opérations qui peuvent être exécutées
efficacement pour produire un résultat
et terminer dans un temps défini
8
Révision du Chapitre 1
Sommaire

Si on arrive à spécifier un algorithme pour
résoudre un problème particulier, on pourrait
automatiser la solution


…et employer un agent pour l’exécuter
Les ordinateurs se sont développés
originairement de calculatrices mécaniques en
merveilles électroniques miniatures! 
9
Intro au chapitre 2

Algorithmes




Pseudocode
Opérations en séquence
Opérations de condition
Opérations itératives
10
Chapitre 2

Pseudocode







Construction d’un programme
En langage naturel
Usage de syntaxe de programmation?
Exemple de pseudocode:
Entrer la valeur pour x et y
z=x+y
Imprimer à l’écran la valeur de z
11
Chapitre 2

Opérations en séquence






Opérations multiples dans un ordre
particulier et qui se font l’une après l’autre
Exemple d’opérations en séquence:
Lire des valeurs pour x et y à l’écran
Additionner les valeurs de x et de y
Assigner la somme à une variable z
Imprimer à l’écran la valeur de z
12
Chapitre 2

Opérations de condition
 Condition: Si… donc fais quelque chose



Exemple d’opérations de condition:
Lire les valeurs pour x et y
Si y = 0


Imprimer à l’écran «impossible de diviser»
D’ailleurs



Calculer x / y
Assigner z à la valeur de la division
Imprimer la valeur de z à l’écran
13
Chapitre 2

Opérations itératives


Itératives: répétition de la même étape
Exemple d’opérations itératives:
Tandis que x = 0
{
 Imprimer à l’écran
« Entrer une valeur x plus petite ou plus
grande que zéro! »
 Lire une autre valeur pour x
}
14
Chapitre 2


Représentation des algorithmes
Résolution de problèmes en utilisant
des algorithmes




Multiplication de deux nombres
Rechercher des listes
Trouver le max et le min
Comparaison avec motifs connus
(Pattern-matching)
15
Représentation des algorithmes

En langage naturel



Langage quotidien parlé et écrit
Ex: français, anglais, espagnol, arabe, etc.
Problèmes
Verbosité
 Imprécision
 Sens des mots varie selon le contexte

16
Figure 2.1
The Addition Algorithm of Figure 1.2 Expressed in Natural
Language
17
Représentation des algorithmes

Programmation en langage évolué
Ex: C++ et Java
 Problèmes:


Les défis de syntaxe et de connaissance
de langage surtout pendant la
conception initiale du programme
18
Figure 2.2
The Beginning of the Addition Algorithm of Figure 1.2
Expressed in a High-Level Programming Language
19
Pseudocode


En anglais… ressemble à la plupart des
langages de programmation
Structure


Étapes numérotées et bien espacées
Aucune exigence de syntaxe
20
Pseudocode




Moins ambigu et plus facile à lire que le langage
naturel
Emphase sur la procédure et non pas sur la
notation ou la syntaxe!
Aider au raisonnement logique et à mieux
comprendre le comportement de l’algorithme
Facilement traduit en langage de programmation
21
Opérations de calcul
(en séquence)

Exemple


Assigner à une variable la valeur d’une
expression arithmétique
Une variable

Une adresse dans la mémoire pour le
stockage des données qui a un nom et qui
garde la valeur de ces données
22
Opérations en séquence

Opérations d’entrée


Recevoir des données du monde extérieur
Exemple


Obtenir la valeur r, le rayon d’un cercle
Opérations de sortie


Envoie des données au monde extérieur
Exemple

Imprimer la valeur de la surface d’un cercle
23
Figure 2.3
Algorithm for Computing Average Miles per Gallon
24
Opérations de condition et
opérations itératives

Tandis que les opérations en séquence sont
exécutées « en ligne droite »


i.e. du début jusqu’à la fin de l’algorithme en
séquence des instructions
Les opérations itératives et celles de condition
sont des structures de contrôle

Condition: « If… else »


Si + condition = résultat; d’ailleurs fais autre chose…
Itérations: boucle (loop)

Répétition d’un bloc d’instructions
25
Opérations de condition et
opérations itératives

Éléments d’une boucle (loop)



Condition de continuation
Structure de la boucle
Boucle infinie


La condition ne devient jamais fausse
Erreur!!!
26
Figure 2.5
Second Version of the Average Miles per Gallon Algorithm
27
Figure 2.7
Third Version of the Average Miles per Gallon Algorithm
28
Opérations de condition et
opérations itératives

Prétester une boucle




Tester la condition au début de chaque passe à
travers la boucle
La boucle peut ne jamais être exécutée
Boucle « while »
Post-tester une boucle



Tester la condition à la fin de chaque passe
La boucle devrait être exécutée au moins une fois
Boucle « do – while »
29
Figure 2.9
Summary of Pseudocode Language Instructions
30
Exemples de résolution de
problèmes algorithmique




Multiplication de deux nombres en utilisant
l’addition répétitive
Recherche en séquence pour trouver une valeur
particulière dans une collection non ordonnée
Trouver la valeur max dans une collection de
données
Déterminer si et où un motif se trouve dans un
morceau de texte (pattern-matching)
31
Exemple 1: Multiplication

Objectif:


Construire un algorithme pour multiplier deux
nombres a et b en utilisant l’addition répétée
Étapes:

Créer une boucle qui s’exécutera exactement
b fois et qui ajoutera chaque fois la valeur a
à un total t

Note: la valeur t augmente par une valeur a
chaque fois la boucle est exécutée
32
Figure 2.10
Algorithm for Multiplication via Repeated Addition
33
Exemple 2:
Rechercher une liste

Objectif:


Trouver le nom d’une personne dans une
liste non ordonnée de numéros de
téléphones d’abonnés
Étapes:

Commencer par la première entrée dans la
liste, y vérifier le nom et répéter la même
procédure pour toutes les entrées
34
Exemple 2:
Rechercher une liste

Recherche naïve (en séquence)


Pour chaque entrée dans la liste, une
section de l’algorithme vérifie si on a
trouvé la bonne valeur ou l’élément
Problèmes:


L’algorithme est utile pour les listes qui
contiennent un seul élément
On exécute la même opération plusieurs fois!
35
Exemple 2:
Rechercher une liste

Recherche correcte (en séquence)




Utiliser des itérations pour simplifier…
Référer aux éléments de la liste par des
indexes ou des pointeurs
Considérer les cas spéciaux (ex: le nom n’a
pas du tout été trouvé dans la liste)
Utiliser une variable « found » pour
terminer les itérations aussitôt qu’on trouve
la valeur qu’on cherche
36
Figure 2.13
The Sequential Search Algorithm
37
Exemple 2:
Rechercher une liste

Quel algorithme exécuter pour résoudre
un problème particulier?


La réponse dépend bien des données dans la
liste qu’on recherche et de la manière dont
les données sont organisées dans cette liste
Les problèmes sont variés – il faut être
flexible et créatif!
38
Exemple 3: La valeur max

Objectif:


Trouver la plus grande valeur dans une liste de
données
Étapes:



Initialiser la plus grande valeur à la première
entrée dans la liste
Conserver un suivi de la valeur max vue jusqu’à
présent
Comparer chaque valeur dans la liste à la plus
grande valeur vue jusqu’à présent et assigner la
valeur la plus large à la valeur max
39
Exemple 3: La valeur max

Utiliser des itérations et les indexes des
données dans la liste
(comme on a fait dans exemple 2)

Update de deux variables constamment
pendant les itérations de la boucle

« location » et « largest »
40
Figure 2.14
Algorithm to Find the Largest Value in a List
41
Exemple 4: Pattern-matching

Objectif:



Trouver un motif (s’il y en a) dans une string
plus longue de texte
Exemple: TTAAGCAAGGCCTTGGGAATT
Étapes:


Essayer de trouver le motif dans toutes les
positions possibles dans le texte
À chaque position, comparer les lettres du motif
avec celles du texte
42
Exemple 4: Pattern-matching

Deux boucles l’une à l’intérieur de l’autre


Boucle extérieure: itérations à travers toutes les
positions possibles de strings qui peuvent
correspondre au motif
Boucle intérieure: itérations à travers toutes les
lettres des strings et celles des motifs pour vérifier
si elles correspondent les unes aux autres
43
Figure 2.16
Final Draft of the Pattern-Matching Algorithm
44
Notes pratiques


Une fois qu’on a construit un algorithme,
on peut utiliser celui-ci pour développer
des algorithmes plus sophistiqués
Librairie


Une collection d’algorithmes utiles
Un instrument important pour le
développement d’algorithmes
45
Notes pratiques

Méthode descendante (top-down)

Pour résoudre des problèmes compliqués



Brouillon de l’algorithme pour réfléchir aux
opérations de haut niveau
Élaborer les opérations de haut niveau après avoir
développé un schéma brouillon de l’algorithme
Répéter jusqu’à ce que toutes les opérations de
haut niveau soient développées à partir
d’opérations plus simples
46
Sommaire

Développement d’algorithmes




Corrects et efficaces
Plusieurs étapes inclues pseudocode, brouillon et
copies plus évoluées!
Utiliser des méthodes descendantes (top-down)
Utilisation du pseudocode


Pour aider à développer des algorithmes
Lisible, non ambigu, facile à analyser
47
Importance des exercices

Noter que les exemples dans ce
chapitre et les deux exercices 1 et 2
dans les prochaines pages (diapo # 49
et 50 dans cette présentation) sont
importants pour la pratique et pour
votre compréhension des concepts aussi
bien que pour l’examen!
48
Exercice 1: Exponentiel

Développez un algorithme pour calculer la
valeur exponentielle d’un nombre donné



Demandez à l’utilisateur d’entrer deux valeurs:
le nombre et la puissance
Utiliser une boucle dans votre algorithme…
Imprimez à l’écran de l’ordinateur le résultat
de l’opération exponentielle
49
Exercice 2:
Recherche et pattern-matching

Trouver si la séquence de lettres existe
dans une liste de lettres alphabétiques



Séquence de lettres: « abbd »
Liste contient un nombre N de lettres
Algorithme:



Lire N à l’écran
Rechercher la liste en utilisant une boucle et
des conditions « if… else »
Imprimer « found » ou « not found » à l’écran
50
Labo # 2

Déroulement d’algorithmes

Voir le manuel de labos



exercices du labo 2
Problèmes additionnels distribués pendant la
session de labo
Il faut me donner vos solutions des exercices
du labo 2 vers la fin de la session du labo
pour que je corrige votre travail (valeur 3%)
51
Intro au chapitre 3

Attributs des algorithmes




Importance de maintenir ces attributs
Mesurer l’efficacité des algorithmes
Exemples pratiques
Distribution du devoir # 1
52
Téléchargement