inf130 -ordinateurs et programmation · 2014. 8. 22. · inf130 -ordinateurs et programmation...
TRANSCRIPT
INF130 - Ordinateurs et programmation
Semaine 01
Document présenté par Frédérick Henriet conçu par les enseignants en informatique du SEG
Fonctionnement d'un ordinateur- Présenter les différentes composantes d'un ordinateur.
Notions de bases en programmation- Les modules ;- Les commentaires ;- Les entrées/sorties ;- Les variables et les types ;- Les constantes ;
Objectifs du cours
INF130 - Cours 01 Objectifs
Un ordinateur est une machine programmable de traitement de l'information, commandée par des programmes stockés en mémoire, qui accepte des données structurées, les traite selon des règles définies et produit automatiquement un résultat en sortie (cf. OQLF).
Un ordinateur est constitué d'une unité centrale (pour exécuter les programmes), d'une mémoire centrale (pour stocker les données et les logiciels) et de périphériques, comme le clavier, la souris, l'écran et les hauts-parleurs (pour communiquer avec l'utilisateur).
L'ordinateur
INF130 - Cours 01 Ordinateur
Bloc d'alimentation ("Power supply")
Il fournit du courant à l'ensemble des composants de l'ordinateur.
Composantes internes de l'ordinateur
Il est également possible d'ajouter différentes cartes dans l'ordinateur :- carte réseau (pour accéder à l'internet);- carte vidéo (pour pouvoir connecter un écran);- carte de son (pour connecter des haut-parleurs);- etc.
INF130 - Cours 01 Ordinateur 2
Afin de vous initier à ce qu'est la programmation, supposez que vousdisposez d'un robinet et de deux contenants non gradués :
- un contenant de 3 litres;- un contenant de 5 litres.
Décrivez comment il est possible de mesurer un volume de 4 litres.
Exercice
La programmation correspond à l'ensemble des activités techniques reliées à l'élaboration d'un programme informatique. Elle comprend donc les activités de conception, d'écriture, de test et de maintenance de programmes (cf. OQLF).
Un programmeur doit être en mesure de :- trouver une solution à un problème;- exprimer cette solution de façon structurée;- traduire cette solution en un langage compréhensible par la machine;- tester le programme.
Solution
Première solution
Remplissez le contenant de 5 litres.Versez le contenu du contenant de 5 litres dans le contenant de 3 litres.Videz le contenant de 3 litres.Versez le contenu du contenant de 5 litres (2 litres) dans le contenant de 3 litres.Remplissez le contenant de 5 litres.Versez le contenu du contenant de 5 litres dans le contenant de 3 litres jusqu'à ce que ce dernier soit plein (1 litre).Il reste alors 4 litres dans le contenant de 5 litres.
La même solution exprimée différemment
1) 2) 3)
4) 6)
2
0
5
02
5)
5
3
4
3
Félicitation, vous venez d'écrire votre premier algorithme! Un algorithme est une séquence d’instructions permettant de réaliser une tâche en un nombre fini d’étapes.
Exemples d’algorithmes :- une recette de cuisine;- les directives pour se rendre à une certaine destination;- les instructions à suivre pour assembler un meuble;- les actions à effectuer pour faire la lessive.
Les algorithmes (p. 12)
Bien que les cartes de pirates soient très jolies, il existe deux outils un peu plus moderne pour décrire un algorithme : l’ordinogramme et le pseudocode.
Un ordinogramme (aussi nommé organigramme et schéma fonctionnel) est un diagramme composé de symboles (boîtes, flèches, etc.) qui permet d’illustrer la séquence des instructions à réaliser dans un algorithme.
L’ordinogramme qui suit détermine les chiffres à composer pour effectuer un appel téléphonique.
Une façon de décrire un algorithme : l'ordinogramme (p. 13)
DÉBUT
FIN
Composer le numérode téléphone
Composer le 1Composer le code
régional
L'appel estinterurbain
Composer le 011
L'appel estoutre-mer
Composer l'indicatifdu pays
Composer l'indicatifde la ville
VRAI
FAUX FAUX
VRAI
Voici un exemple d'ordinogramme aperçu dans un CLSC de la Rive-Sud de Montréal.
Le pseudocode est un langage qui combine des éléments de langage de programmation et de langage naturel et qui sert à décrire un algorithme.
Voici de nouveau l'algorithme qui détermine les chiffres à composer pour effectuer un appel téléphonique, mais cette fois décrit à l'aide de pseudocode.
Une façon de décrire un algorithme : le pseudocode (p. 14)
DÉBUT
si (l’appel est interurbain) alorssi (l’appel est outre-mer) alors
composer le 011composer l’indicatif du payscomposer l’indicatif de la ville
sinon
composer le 1composer le code régional
fin si
sinon
composer le code régionalfin si
composer le numéro de téléphoneFIN
Première étape : création d'un module (p. 27)
L'environnement de programmation utilisé dans ce cours sera VBA d'Excel. VBA veut dire Visual
Basic for Applications et, ici, l'application concernée est Microsoft Excel.
Tout programme en Visual Basic for Applications d'Excel nécessite la création d'un module.
Un module est un sous-ensemble d’un programme destiné à remplir des tâches bien définies. L’utilisation de modules permet de découper un programme en parties indépendantes.
Pour créer un module, il suffit de :- appuyer sur ALT-F11 pour atteindre l'éditeur de VBA;- cliquer dans la barre de menu sur l'option Insertion → Module.
Nous verrons plus tard dans la session l'importance des modules.
Nous prendrons l'habitude de placer un commentaire :- au début d'un module;- à côté d'une déclaration de variable;- au-dessus d'une définition de procédure ou de fonction;- avant tout groupe d'instructions complexes;- au-dessus de la définition d'un type ou d'une constante.
Deuxième étape : commenter (p. 39)
En en-tête d'un module
'--------------------------------------------------------------' Module : NOM_DU_MODULE' Par : Frédérick Henri' Date : 22/04/2010'' Ce module permet de ...'' Il connaît ...'--------------------------------------------------------------
À côté de la déclaration d'une variable
Dim rayon As Double ' Le rayon du cercle (en cm).
Au-dessus de la définition d'une fonction
'' CARRÉ'' Cette fonction calcule le carré d'une valeur.'' PARAMÈTRES :' - x : La valeur à mettre au carré (type : Double).'' VALEUR DE RETOUR : Lavaleur de x au carré (type : Double).'' EXEMPLE D'APPEL : carré(1.5) retourne 2.25.'
Un commentaire est une information ajoutée au code qui sert à en clarifier le fonctionnement et qui n'a aucun effet sur l'exécution.
Syntaxe des commentaires en VBA d'Excel
Le symbole ' indique que le reste de la ligne est un commentaire.' Ceci est un commentaire!
Un programme se compose toujours d'une ou plusieurs procédures. Une procédure est une portion d'un programme informatique qui porte un nom et se compose d'une séquence d'instructions permettant de réaliser une tâche. La procédure qui régit le fonctionnement d'un programme se nomme programme principal.
Syntaxe minimale de la définition d'une procédure en VBA
Sub nom()
End Sub
où nom correspond au nom de la procédure. Celui doit respecter les règles suivantes :- le premier caractère doit être une lettre ;- l’utilisation des caractères «.», «!», «@», «&», «$», «#» ainsi que de l'espace n'est pas
permis.- le nom ne peut compter plus de 255 caractères ;- le nom ne doit pas être visible au même niveau de portée.
Nous aborderons plus en profondeur les procédures dès le prochain cours.
Troisième étape : le programme principal (p. 31)
Les sorties (p. 50 et 164)
Une sortie est une opération par laquelle un programme fournit une donnée à l’utilisateur (écriture sur disque, affichage à l'écran, son dans les haut-parleurs, etc.).
Pour l'instant, contentons-nous d'afficher un message à l'écran dans une boîte de message.
Syntaxe d'un MsgBox en VBA
Call MsgBox(message à afficher, boutons, titre)
où
message à afficher est une chaîne de caractères.
boutons est une somme de constantes déterminant les boutons et icônes à afficher. Ce paramètre est facultatif.
titre est une chaîne de caractères. Ce paramètre est facultatif.
Pour obtenir la description complète de cette fonction, surlignez le mot MsgBox dans l'éditeur
Exemple avec 1 seul paramètre
Call MsgBox("Bienvenue en INF130.")
Exemple avec 2 paramètres
Call MsgBox("Êtes-vous prêt ?", vbQuestion)
Call MsgBox("Je suis prêt.", vbExclamation)
Exemple avec 3 paramètres
Call MsgBox("Division par 0.", vbCritical, _"Erreur")
Comme premier exercice, vous devez :1) vous rendre dans l'éditeur VBA;2) créer un nouveau module;3) ajouter une nouvelle procédure nommée exercice1;4) ajouter le code nécessaire afin de faire afficher la fenêtre ci-dessous.
Lorsque vous aurez terminé, lisez la solution et prenez le temps de bien observer les commentaires
Exercice
'' EXERCICE1'' Cette procédure affiche le message "Déjà un succès" à l'écran' dans une boîte de dialogue.'' PARAMÈTRES : Aucun.'' VALEUR DE RETOUR : Aucune.'Public Sub exercice1()
' On utilise la fonction MsgBox pour afficher à l'écran.' On remarque que le message à afficher et le titre sont des' chaînes de caractères puisqu'ils sont entourés de guillemets.Call MsgBox("Déjà un succès!", vbExclamation, "Exercice 1")
End Sub
Solution
Une variable est un identificateur, par exemple x ou prénom, utilisé pour représenter une valeur, par exemple le nombre 5 ou la chaîne de caractères "Frédérick". La valeur représentée par une variable peut être modifiée durant l’exécution d’un programme.
Une variable est donc une sorte d’aide-mémoire qui ne peut conserver qu’une seule information. Suite à la déclaration d’une variable, il est permis de consulter la valeur qu’elle contient ou encore de modifier celle-ci à l’aide d’une assignation.
Syntaxe de déclaration d'une variable en VBA
visibilité nom As type
où
visibilité peut être : Dim, Static, Public ou Private.
nom correspond au nom de la variable qui doit respecter les mêmes règles que le nom d'une procédure.
type qui peut être un type standard de VBA (Integer, String, Double, etc.), d'Excel (Worksheet, Range, ...) ou un type créé par le programmeur. Le type détermine les valeurs que la variable peut représenter ainsi que le fonctionnement des opérations (+, -, *, /, etc.) que l’on peut appliquer sur cette variable.
Les variables (p. 41 et 163)
À noter...
Nous donnerons toujours un nom significatif à nos variables. Évitez les noms devariables ne possédant qu'une seule lettre (comme f ou n).
Nous ferons toujours suivre une déclaration de variable d'uncommentaire expliquant l'utilité de cette variable.
Nous ferons débuter tous nos modules par l'instructionOption Explicit (p. 40). Cela nous forcera à déclarernos variables explicitement et évitera plusieurs erreurs.
Exemple de déclaration et d'utilisation de variables'
' EFFECTUER_ACHAT'' Cette procédure calcule le coût d'un achat, ajoute la taxe et ' affiche le montant total à l'écran.'' PARAMÈTRES : Aucun.'' VALEUR DE RETOUR : Aucune.'Public Sub effectuer_achat()
Dim nombre_articles As Integer ' Nombre d'articles achetés.Dim prix_article As Double ' Prix d'un article.Dim total As Double ' Coût total de l'achat (avec taxes).
' On initialise les variables.nombre_articles = 10prix_article = 1.25
' On calcule le coût total en incluant la taxe.total = nombre_articles * prix_article * (1 + 0.13)
' On affiche le coût total de l'achat.Call MsgBox("Le coût total de l'achat est " & total & " $.")
End Sub
Exercice
Dim x As IntegerDim y As Integer
x = 3y = x + 2x = 6
Que contiennent les variables x et y suite à l'exécution du code ci-dessous ? Êtes-vous capable d'écrire un programme pour tester votre réponse ?
Pour faire le suivi du contenu d'une variable, on peut employer un espion. Il suffit de :- surligner le nom de la variable;- cliquer dans la barre de menu sur Débogage → ajouter un espion...- appuyer sur le bouton Ok;- suivre l'exécution de la procédure à l'aide de la touche F8.
Principaux types en VBA (p. 162)
Le type identifie la nature d'une donnée. Le type d'une variable détermine sa taille, les données qu'elle peut contenir et les opérations permises sur cette variable.
On retrouve ci-dessous la liste des principaux type de données en VBA d'Excel.
Nom anglais Nom français Taille Plage de valeurs
Byte Octet 1 octet 0 à 255
Boolean Booléen 2 octets Vrai (true) ou Faux (false)
Integer Entier 2 octets -32 768 à 32 767
Long Entier long 4 octets -2 147 483 648 à 2 147 483 647
Single Nombre à virgule 4 octets -3.402823 E38 à -1.401298 E-45 (valeurs négatives)flottante, simple 1.401298 E-45 à 3.402823 E38 (valeurs positives)précision » Environ 7 chiffres significatifs
Double Nombre à virgule 8 octets -1.79769313486231 E308 à -4.94065645841247 E-324
flottante, double 4.94065645841247 E-324 à 1.79769313486232 E308précision » Environ 15 chiffres significatifs
Date Date 8 octets 1er janvier 100 au 31 décembre 9999
String Chaîne de caractères 10 octets + longueur de la chaine 0 à 2 milliards de caractères
Variant Divers 16 octets Variée…
Les entrées (p. 46 et 166)
Saisie d'une chaîne de caractères
Dim nom As String
nom = InputBox("Quel est votre nom?")
Call MsgBox("Bonjour " & nom & "!", vbInformation)
Une entrée est une opération par laquelle un programme acquiert une donnée de l’utilisateur (lecture sur disque, lecture au clavier, saisie d'un clic de souris, etc.).
Pour l'instant, contentons-nous de saisir une entrée au clavier à l'aide d'une boîte de dialogue.
Syntaxe d'un InputBox en VBA
variable = InputBox(message, titre, valeur par défaut)
où
message est une chaîne de caractères.
titre est une chaîne de caractères. Ce paramètre est facultatif.
valeur par défaut est une chaîne de caractères. Ce paramètre est facultatif.
Les entrées (p. 46 et 166)
Saisie d'une valeur entière
Dim valeur_lue As Integer ' Reçoit une valeur lue au clavier.Dim double_valeur_lue As Integer ' Reçoit le double de la valeur lue.
' On saisit la valeur au clavier.valeur_lue = Val(InputBox("Quelle est la valeur désirée?"))
' On calcule le double de la valeur lue.double_valeur_lue = valeur_lue * 2
' On affiche le double de la valeur.Call MsgBox("Son double est : " & double_valeur_lue, vbInformation)
La fonction InputBox retourne une chaîne de caractères (type de données String).
Pour saisir un nombre, il est conseillé d'utiliser la fonction Val. Celle-ci convertit une chaine de caractères en valeur numérique. Si la chaîne de caractères ne contient pas une valeur numérique valide, alors la fonction retourne zéro.
Sans la fonction Val pour réaliser la conversion, VBA essaiera de la faire automatiquement. Toutefois, lorsque l'utilisateur entrera une valeur incorrecte, une erreur d'incompatibilité de type se produira.
a) Écrivez une procédure qui saisit une valeur entière au clavier et affichele carré de cette valeur à l'écran.
Exercices
b) Écrivez une procédure qui :- saisit le salaire horaire d'un employé;- saisit le nombre d'heures travaillées par l'employé;- calcule le salaire qui doit être versé à l'employé;- affiche le salaire à l'écran.
Par exemple, si l'utilisateur entre 23.50 et 40, la procédure affiche la boîte ci-dessous.
'' EXERCICE2'' Cette procédure saisit un nombre entier au clavier et affiche le' carré de ce nombre à l'écran.'' PARAMÈTRES : Aucun.'' VALEUR DE RETOUR : Aucune.'Public Sub exercice2()
Dim valeur_lue As Integer ' Pour saisir une valeur au clavier.
' On saisit la valeur.valeur_lue = Val(InputBox("Veuillez entrer un nombre :"))
' On affiche le carré de ce nombre à l'écran.Call MsgBox(valeur_lue * valeur_lue)
End Sub
Solutions
'' EXERCICE3'' Cette procédure saisit le salaire horaire d'un employé et le' nombre d'heures travaillées durant une semaine. Elle calcule le' salaire à verser et l'affiche à l'écran.'' PARAMÈTRES : Aucun.'' VALEUR DE RETOUR : Aucune.'Public Sub exercice3()
Dim salaire_horaire As Double ' Le salaire horaire (en $).Dim nb_heures As Double ' Nombre d'heures travaillées.Dim salaire_à_verser As Double ' Salaire à verser (en $).
' On saisit le salaire horaire.salaire_horaire = Val(InputBox("Entrez le salaire horaire :"))
' On saisit le nombre d'heures travaillées.nb_heures = Val(InputBox("Entrez le nombre " & _
"d'heures travaillées :"))
' On calcule le salaire à verser à l'employé.salaire_à_verser = nb_heures * salaire_horaire
' On affiche le salaire à verser à l'employé.Call MsgBox("Salaire à verser : " & salaire_à_verser & " $.")
End Sub
Une instruction conditionnelle (ou sélection) est une instruction permettant de choisir la ou les instructions à réaliser en fonction de l’évaluation d’une expression booléenne.
L'instruction conditionnelle permet de modifier le flot d'exécution naturel des instructions.
Syntaxe d'une instruction conditionnelle en VBA
If expression booléenne ThenInstruction(s) à réaliser quand l'expression est vraie
ElseInstruction(s) à réaliser quand l'expression est fausse
End If
où
expression booléenne est une expression booléenne (p. ex. : x < 10).
À noter : la présence du Else n'est pas obligatoire dans une instruction conditionnelle.
L'instruction conditionnelle (p. 58)
Calcul du salaire d'un individu (en tenant compte du temps supplémentaire)
Dim salaire_horaire As Double ' Le salaire horaire (en dollars).Dim nb_heures As Double ' Le nombre d'heures travaillées.Dim salaire_à_verser As Double ' Le salaire à verser à l'employé.
' On saisit le salaire horaire.salaire_horaire = Val(InputBox("Entrez le salaire horaire :"))
' On saisit le nombre d'heures travaillées.nb_heures = Val(InputBox("Entrez le nombre d'heures travaillées :"))
' On calcule le salaire à verser à l'employé.If (nb_heures <= 40) Then
salaire_à_verser = nb_heures * salaire_horaireElse
salaire_à_verser = 40 * salaire_horaire + _(nb_heures - 40) * salaire_horaire * 1.5
End If
' On affiche le salaire à verser à l'employé.Call MsgBox("L'employé doit recevoir " & salaire_à_verser & " $.")
À noter...
Le code à l'intérieur d'une instruction conditionnelle est décaléd'une tabulation vers la droite. On dit de ces lignes qu'ellessont indentées (p. 28).
Nous prendrons l'habitude d'indenter le code à l'intérieurd'une procédure, d'une instruction conditionnelle.
Les constantes (p. 49 et 163)
Une constante est un identificateur, par exemple G ou PI, utilisé pour conserver une valeur, par exemple 6.67428 × 10−11. L’assignation d’une valeur à une constante n’est permise que lors de sa déclaration.
Syntaxe de définition d'une constante en VBA
visibilité Const nom As type = valeur
où
visibilité peut être : Public ou Private.
nom doit respecter les contraintes suivantes :- il débute par une lettre;- il contient au maximum 255 caractères;- il ne contient pas de blanc, de point ou de caractères spéciaux tels que : !, @, &, $ et #
(notons que le trait de soulignement est permis);- il doit être unique à l'intérieur de sa portée;
type peut être un type standard de VBA (Integer, String, Variant, etc.).
valeur est une valeur qui sera associée à la constante pour la durée de l'exécution du programme.
À noter...
Bien qu'une déclaration de constante puisse apparaître à l'intérieur d'unsous-programme, nous prendrons l'habitude de les placer au début d'unmodule (juste sous l'instruction Option Explicit).
Par convention, le nom d'une constante sera toujours en lettres majuscules.
Exemple de définition de constante
' Le nombre d'heure maximal avant que les heures en surplus ne' soient considérées comme étant du temps supplémentaire.Private Const NB_MAX_HEURES As Double = 40
' La majoration du salaire lors du temps supplémentaire.Private Const MAJORATION_SALAIRE As Double = 1.5
Les instructions conditionnelles imbriquées (p. 70)
Syntaxe de plusieurs instructions conditionnelles imbriquées en VBA
If expression booléenne ThenInstruction(s)
ElseIf expression booléenne ThenInstruction(s)...
ElseInstruction(s)
End If
où
expression booléenne est une expression booléenne.
À noter : de nouveau, le Else est facultatif.
Exemple d'instructions imbriquées
Dim valeur_lue As Integer ' La valeur lue au clavier.
' On saisit le nombre.valeur_lue = Val(InputBox("Veuillez entrer un nombre :"))
' On affiche à l'écran si le nombre est positif, négatif ou nul.If (valeur_lue > 0) Then
Call MsgBox("Ce nombre est positif.")ElseIf (valeur_lue < 0) Then
Call MsgBox("Ce nombre est négatif.")Else
Call MsgBox("Ce nombre est nul.")End If
Exercices
Les deux bouts de code suivants reviennent-ils au même ?
If (x <= 1) ThenCall MsgBox(1)
ElseIf (x <= 2) ThenCall MsgBox(2)
ElseIf (x <= 3) ThenCall MsgBox(3)
End If
If (x <= 1) ThenCall MsgBox(1)
End ifIf (x <= 2) Then
Call MsgBox(2)End ifIf (x <= 3) Then
Call MsgBox(3)End if
a) Écrivez une procédure qui saisit l'âge d'un invidivu au clavier et affiche à l'écran si lapersonne est majeure ou non.
b) Écrivez une procédure qui lit deux valeurs et affiche à l'écran la plus grande des deuxvaleurs saisies.
' L'âge de la majorité légale.Private Const AGE_MAJORITÉ As Integer = 18
'' EXERCICE4'' Cette procédure saisit l'âge d'un individu et affiche si celui-ci ' est majeur ou non.'' PARAMÈTRES : Aucun.'' VALEUR DE RETOUR : Aucune.'Public Sub exercice4()
Dim age As Integer ' L'âge de l'individu en année.
' On saisit l'âge de l'individu.age = Val(InputBox("Veuillez entrer votre age :"))
' On affiche à l'écran si la personne est majeure ou non.If (age >= AGE_MAJORITÉ) Then
Call MsgBox("Vous êtes une personne majeure.")Else
Call MsgBox("Vous êtes un mineur.")End If
End Sub
Solutions
'' EXERCICE5'' Cette procédure saisit deux nombres au clavier et affiche le plus ' grand des nombres lus.'' PARAMÈTRES : Aucun.'' VALEUR DE RETOUR : Aucune.'Public Sub exercice5()
Dim premier_nombre As Double ' Première valeur lue au clavier.Dim second_nombre As Double ' Deuxième valeur lue au clavier.
' On saisit le premier nombre.premier_nombre = Val(InputBox("Veuillez entrer un nombre :"))
' On saisit le second nombre.second_nombre = Val(InputBox("Veuillez entrer un nombre :"))
' On affiche à l'écran lep lus grand des deux nombres.If (premier_nombre >= second_nombre) Then
Call MsgBox(premier_nombre & " >= " & second_nombre)Else
Call MsgBox(second_nombre & " >= " & premier_nombre)End If
End Sub
Conclusion
En programmation, il existe plusieurs façons de se rendre au même résultat. Dans ce cours, plutôt que de nous attarder sur l'évaluation de la façon choisie, nous nous concentrerons sur la découverted'une solution et sur l'expression de cette solution d'une façon claire et propre.
À faire cette semaine
- Lire les chapitres 3 et 4 du livre.- Lire l'énoncé du travail pratique numéro 1.
Notions importantes vues cette semaine
- Les commentaires (');- Les sorties (MsgBox);- Les variables et les types (Dim, Integer, Double et String);- Les entrées (InputBox et Val);- Les instructions conditionnelles (If et Else);- Les constantes (Const).