cours inf1110 (h -2001) - info2.uqam.cankambou_r/inf1110/h2002/introinf1110.pdfmicroprocesseur...

39
Cours INF1110 (H-2001) Copyright, 2003 © Roger Nkambou CONSEIL Pour plus d'information, consultez la page Web du cours Par: Roger Nkambou, Ph.D. Professeur UQAM INF1110 • Professeur Roger Nkambou Bureau: PK4925 Tel : 8395 [email protected] Auxilliaires d’enseignement • À venir Page Web – http://www.info.uqam.ca/~nkambou/inf1110

Upload: ngothu

Post on 05-Feb-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Cours INF1110 (H-2001)

Copyright, 2003 © Roger Nkambou

CONSEILPour plus d'information, consultez

la page Web du cours

Par: Roger Nkambou, Ph.D.ProfesseurUQAM

INF1110• Professeur

– Roger Nkambou

• Bureau: PK4925• Tel : 8395

[email protected]

• Auxilliaires d’enseignement• À venir

• Page Web – http://www.info.uqam.ca/~nkambou/inf1110

Page 2: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Horaire• Cours

– G30 (Local SH3620)• Mercredi 15h30-17h• Vendredi 13h30-15h

• Laboratoires• Vendredi 15h-17h

– Local PK-S530, S525

• Consultations• Mercredi de 13h-15h (à mon bureau)

Interaction

• Plusieurs moyens pour contacter le prof et lesauxilliaires afin de poser des questions sur le cours ou les travaux:– Durant les séances d’exercices (démo): c’est le moyen

le plus simple et le plus efficace. N’hésitez pas à en faire usage !!!

– Par courriel ([email protected])– Durant le créneau horaire dédié aux consultations.– Par le forum (un autre moyen efficace)

Page 3: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Objectifs du cours• Familiariser les étudiants à une approche de

résolution de problème et aux notions de base liées à la programmation à l’aide du langage Ada.

• Contenu:– Rapide introduction à l’ordinateur– Introduction aux méthodes de résolution de problème et

à l’algorithmique– Présentation des concepts de base de la programmation

en Ada (variables, expressions, structures de contrôle,fonctions, entrées/sorties, gestion des exceptions,utilisation des modules externe, types structurés,fichiers)

Séances de labo (Démo)

• Elles sont obligatoires et fortement recommandées car c’est dans ce cadre que vous devez mettre en pratique les aspects “théoriques” vus en cours.

• La première séance vous permettra de vous familiariser avec l’environnement de programmation (ObjectAda 7.1, 7.2) et le système d’exploitation (Windows2000).

• Les autres séances consisteront chacune en un ensemble d’exercices pratiques relatifs aux concepts étudiés en cours (énoncés disponibles sur le site).

• Les solutions des démos seront disponibles sur le Web au plus tard à la séance suivante.

Page 4: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Évaluation

• Examens• Intra (25%)• Final (25%)

• Travaux pratiques (3)• Tp1 - Individuel (15%)• Tp2 - Individuel (15%)• Tp3 - Groupe (20%)

• Seuils :• Examen: 50%• Tp : 50%

• Travaux en retard: • -10% par jour de retard• 0 si plus d’une semaine de retard

Documentation

• Notes de cours du professeur Pierre Richard (Disponibles à la Coop)

• Livres recommandés (disponibles à la Coop)– P. Gabrini– J. Skansholm

• Autres ressources disponibles sur la page web du cours

Page 5: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Qu’est-ce que la programmation ?• Ordinateur = Automate programmable• Programme = Description de la tâche à réaliser par

un ordinateur = Séquences d’instructions et dedonnées susceptibles d’être traitées (c-à-d “comprise” et “exécutées”) par l’automate.

• Programmer, c’est décomposer la tâches àautomatiser sous la forme d’une séquence d’instructions et de données adaptées à l’automate utilisé.

Structure simplifiée d ’un micro-ordinateur

Sous-systèmed ’E/S

Bus d ’adresses

Bus de données

Bus de contrôle

Microprocesseur

Unité centralede traitement

Mémoire Centrale (RAM)

Page 6: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

La mémoire

• But: Stocker les données et les programmes pour des fins de traitement.

• La RAM est organisée comme un ensemble de cases adressées (ou mots) de taille fixe (16, 32, 64 bits selon le cas).

• Capacité mémoire en octet (8bits), KiloOctet, MégaOctet ou GigaOctet• Hiérarchie des mémoires:

– Registres– Mémoire cache (sur la même puce que le CPU): pour stocker les

instructions fréquentes ou courantes afin d’éviter l’accès à la RAM. Très rapide

– RAM– Disk cache– Disque (magnétique + optique)– Bande magnétique

La mémoire

0

1

23

4

5

6

N-2

N-1

M-1 M-2 M-3 M-4 2 1 0M-5

Page 7: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Le sous-système d’E/S

• Il est chargé de la gestion des dispositifs d’entrée (clavier,souris, capteurs, …) et de sorties (écran, imprimantes, …).

• Il est connecté à ceux-ci par des PORT (Ex: ports serie et parallèle pour imprimante, souris, clavier…)

• Les ports sont ensuite connectés aux bus (une sorte d’autoroute interne à l’ordinateur)

• L’information est transmise de la mémoire centrale vers lesdispositifs de sortir à travers le Bus.

• Inversement, l’information en provenance des dispositifs d’entrée est envoyée en mémoire via le Bus.

• Le Bus de données transporte les données, le bus decontrôle, les informations de contrôle et le bus d’adresse, les adresses.

Le micro-processeur

• Il détermine l’ensemble des instructions élémentaires(instructions-machine) que l’ordinateur est capabled’exécuter.

• Il est chargé de traiter les instructions spécifier par leprogrammeur.

• Il comprend 2 composantes: l’unité arithmétique et logique(UAL) et l’unité de contrôle (UC).

• L’UAL effectue les opérations arithmétqiues (additions,soustraction …)

• L’UC contrôle la séquence d’exécution des instructions.

Page 8: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Les microprocesseurs INTELMicroprocesseur Largeur bus données

8048 8 8051 8

8085A 8 8086 16 8088 8 8096 16

80186 16 80188 8 80286 16

80386EX 16

80386DX 32 80386SL 16

80386SLC 16 80386SX 16

80486DX/DX2 32 80486SX 32

80486DX4 32 Pentium 64

Les microprocesseurs MotorolaMicroprocesseur Largeur bus données

6800 8 6805 8

6809 8 68000 16

68008Q 8 68008D 8 68010 16 68020 32 68030 32 68040 32 68050 32 68060 64

PowerPC 64

Page 9: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Les instructions-machine

• Comme nous le savons, l’ordinateur ne peut comprendre que des instructions de très bas niveau se reduisant en unesuite de 0 et de 1.

• Ainsi, les instructions-machine sont trop élémentaires pourpouvoir être utilisées efficacement par les humains pourécrire des programmes.

• Considérons l’exemple suivant :

– On veut écrire un programme qui initialise uncompteur à 5 et qui décrémente ce dernierjusqu’à 0...

Instructions-machine (suite)

Ce qui donne le programme suivant enlangage machine: 00000100000010100000010100000000000010100000000000000011000000110000000100001010000000111000001100000010

Ins tr . Code Mach . D o n n é e s C o d e M a c h . P r o g r a m m e

CMP 00000000 D E C R 0 0 0 0 0 0 0 1 E N D 0 0 0 0 0 0 1 0 J U M P 0 0 0 0 0 0 1 1 LOAD 00000100

-3 1 0000011

0 0 0 0 0 0 0 0 0

2 0 0 0 0 0 0 1 0

3 0 0 0 0 0 0 1 1

5 0 0 0 0 0 1 0 1 6 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0

1 : LOAD 10 5 2 : CMP 10 0 3 : JUMP +3 4 : DECR 10 5 : JUMP –3 6 : E N D

Page 10: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

La notion de langage deprogrammation

… Il faut donc fournir au programmeur lapossibilité d’utiliser des instructions de plus haut niveau, plus proches de notre manièrede penser et de conceptualiser les problèmes…

Voici 3 exemples d’instructions écrits dansdes langages de haut niveau pour leproblème précédent:

La notion de langage deprogrammation (suite)

BASIC C ADA

1 N=5 2 LABEL 1 3 IF (N=5) THEN GOTO 2 4 ELSE N=N-1; GOTO 1 5 LABEL 2 6 END

For (n=5; n>0; n--)

N := 5 ; loop N := N-1; exit when (N=0); end loop; ou N := 5; While (N /= 0) loop N := N-1; End loop;

Page 11: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

La notion de langage deprogrammation (suite)

• Cependant, si nous utilisons des instructions plus accessiblesà l’humain, comment les rendre compréhensibles pour lesordinateurs qui doivent les exécuter ?

• Solution:– Disposer d’un programme capable de TRADUIRE les séquences

d’instructions de haut niveau en des séries d’instructions-machinedirectement exécutables par les circuits électroniques du microprocesseur.

– Selon ses caractéristiques , un tel programme est appeléCOMPILATEUR ou INTERPRÉTEUR.

– L’ensemble des instructions et des données de plus haut niveau qu’un compilateur ou un interpréteur est capable de traiter constitue un LANGAGE DE PROGRAMMATION (Lexique, syntaxe etsémantique).

La notion de langage deprogrammation (suite)

• Un langage de programmation est donc un moyen formel permettant de décrire des traitements (c-à-d des tâches à réaliser)sous la forme de programmes (c-à-d de séquences d’instructions et de données de “haut niveau” (c-à-d compréhensibles par leprogrammeur)) pour lequel un compilateur ou un interpréteur est disponible pour permettre l’exécution effective par un ordinateur.

• Exemple de langages de programmation: C, C++, Ada, Java, Pascal,…

• Exemple de compilateurs (ou d’interpréteurs) – pour C: gcc, icc– pour ADA: adacomp , gnat (compilateur), adaexec (interpréteur)

Page 12: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Interpréteur / Compilateur• Ce sont tous 2 des programmes destinés à traduire des

programmes écrits dans un langage de programmation de hautniveau en des séries d’instructions-machine directement exécutables par l’ordinateur.

• La différence réside dans la manière dont la traduction est réalisée:– Compilateur: traduit tout le programme à la fois et génère un

exécutable réutilisable.• Avantage: permet de réaliser des applications plus efficaces (possibilité

d’optimisation à la compilation)– Interpréteur: traduit le programme instruction par instruction dans le

cadre d’une interaction continue avec l’utilisateur.• Avantage: idéal pour le prototypage (on peut immédiatement tester ce que

l’on est entrain de réaliser)

• La traduction se subdivise en 4 étapes essentielles: l’analyse lexicale, l’analyse syntaxique, les vérifications sémantiques et la génération du code.

Environnement d’utilisation d’unsystème informatique

• Les compilateurs et interpréteurs sont des bons exemples deprogrammes utilitaires, c-à-d des programmes qui doivent être disponibles sur un système informatique afin de le rendre effectivenement utilisable.

• Un autre exemple de programme utilitaire incontournable estle système d’exploitation, qui n’est autre que le programme utilitaire dont le rôle est de gérer le bon fonctionnement du système informatique, et en particulier, de prendre en charge les interactions du système avec l’utilisateur.

• Exemples de systèmes d’explotation:– Unix, DOS, Linux

Page 13: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Système d’exploitation

• Les tâches du système d’exploitation sont multiples. Parmiles plus importantes, on peut citer:

– la gestion des accès auxsystème (connections et déconnections);– la gestion de la mémoire centrale;– la gestion des mémoires secondaires et d’une façon plus générale,

des périphériques (imprimantes, modem, …);– la gestions des accès aux divers programmes utilitaires

(interpréteur, compilateur, éditeur…);

– ...

Système d’exploitation (suite)• Gestion des chemins d’accès aux fichiers

– Arborescence de repertoires

• repertoire principal : \• chemin d’accès à un répertoire parent: ..• Exemples de commandes:

– A:\langages\prolog> CD..– A:\langages\objectada> DIR \– A:\langages> DEL OBJECTADA\PROG1.ADA– A:\texte> DIR \LANGAGES\OBJECTADA– A:\> COPY B:\EXEMPLE1.INF LANGAGES\OBJECTADA\EX1.ADA

• Quelques commandes DOS– CD, CHDIR, CHKDSK, COMP, COPY, DEL (ERASE), DIR,

DISKCOMP, DISKCOPY, FORMAT, MD (MKDIR), PRINT, REN (RENAME), RD (RMDIR), TYPE

Page 14: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Vue en couche d ’un micro-ordinateur

Machine physique

Machine virtuelle du SE

Machines virtuelles des langagesde programmation

Applications

DOS

Windows

Environnements de programmation

icc, gcc, adacomp, adaexec...

Électroniciens

Programmeurssystème

Programmeursd ’applications

Utilisateurs

Évolution des langages de programmation

Le langage machine (spécifique à une architecture donnée) •excessivement compliqué pour les humains•n'a pas été utilisé très longtemps•très petits programmes (<1000 instructions)

Le langage d'assemblage (spécifique à une famille d'ordinateurs donnée) •problèmes relativement simples et/ou courts •a évolué énormément au cours des ans•il était surtout utilisé pour les programmes de système

Les langages de haut niveau (FORTRAN, COBOL, ...) •problèmes longs mais peu complexes •pas de structure (à l'époque) des instructions ni des variables•étaient spécialisés à des domaines spécifiques

Page 15: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Évolution des langages de programmation

La programmation structurée (ALGOL, ADA, Pascal, C, Modula, ...)•problèmes assez complexes et/ou longs •bonnes structure des énoncés et des variables •assez rigides et lourds dans leur utilisation

La programmation orientée objet (C++, ObjectAda, Delphi, Java, Simula, ...)

•problèmes très complexes •traitement simplifié d'objets physiques ou non •augmentation de la productivité des utilisateurs

L'ingénierie du logiciel •problèmes très gros et très complexes•participation de grosses équipes de travail •plusieurs outils de conception de logiciels

Exemple de fonction procédurale

Solde

Montant

Nouveau soldeRetrait()

Compte

Compte

Page 16: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Exemple d ’objet

Compte

soldeMontant retrait

Exemple d ’encapsulation

solde

Dépôt

Retrait

OBJET COMPTE

Page 17: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Phases de préparation d ’un programme Ada (1)Algorithme

Prog. source

Prog. objet

Fonctions externes

Source éditéÉditeur

Compilateur

Éditeur de lien Chargement

Exécution

Librairie des programmes

Codification

Phases de préparation d ’un programme ADA (2)

Code objet

Code exécutable

Code de la lib.

Code source

Compilateur

Édition de lien

Code de démarrage

Page 18: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Environnement

Éditeur

Compilateur

Ed. de lien

Chargeur

UCT

RAM

RAM

disque

disque

disque

disque

Phase 1

Phase 2

Phase 3

Phase 4

Phase 5

Extension au nom du fichier source

monFichier.ada

Nom de base

ExtensionPoint

Page 19: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Un mot sur le codage interne des données

• Parler le même langage pour pouvoir échanger des données: vrai pour les humain mais aussi pour les ordinateurs

• D’où l’existence des normes. Ex: IEEE754 pour le codage des données

Codage des caractères• ASCII initial : 7 bits pour le codage =) 128 position (de 0 à

127). Ce qui laisser les position de 128 à 255 à la disposition des concepteurs pour le codage des caractères graphiques par exemple (unité de l’info = octet (8 bits)).

• ISO 8859 a ensuite imposé ces positions selon les aphabets. Ex: ISO 8859-1 (ou ISO-Latin-1) pour l’Europe occidentale qui fixe les caractères codés dans les position 128 à 255.

• Toutefois, 256 positions restent insuffisant pour coder de manière uniforme tous les alphabets. Solution: UNICODE

• UNICODE code un caractère sur 2 octets, ce qui offre une possibilité de 65536 positions. Pour l’instant, seul 34168 positions ont été attribuées, ce qui laisse de la place même pour les extra-terrestres ?

• JAVA a été le premier langage a utilisé UNICODE =) qu’un programme peut avoir des variables en japonais et produire des message d’erreur en russe (moyenne l’installation des polices appropriées sur votre ordi)

Page 20: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Codage des entiers et des réels• De 16 à 64 bits selon le cas • Cas de Ada : Voir livre de Pierre Richard

Introduction à l ’algorithmique: La résolution de problèmes

• Données (informations dont on dispose)• Démarche de traitement (algorithme) • Résultats (informations que l ’on souhaite

calculer)

Page 21: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Les types d ’informations

• Plusieurs types d ’informations– nombres réels représentant des mesures physiques, – nombres entiers, – rationnels , – mot ou phrase saisi par l'utilisateur, – suite de rationnels décrivant les coefficients d'un

polynôme, – heures, – dates... ou toute combinaison plus complexe d'une des

formes ci-dessus.

Les valeurs

• valeur = information donnée ou qui a été calculée. Exemple : 1, 3.1415926536, 22/7 sont des valeurs (respectivement entière, décimale et fractionnaire). (3, 4) est une valeur dans N2.

Page 22: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Démarche de résolution

• Algorithme = suite d ’opération à exécuter pour produire les résultats recherchés à partir des données.

• Cette suite = ensemble d ’expressions• Expression = forme symbolique, contenant des

valeurs et des opérateurs servant à exprimer une nouvelle valeur.

• Exemple: <Image>, faux ou (3*4 = 0) sont des expressions

Évaluation des expressions

• Toute expression a un type qui détermine l'ensemble dans lequel elle prend sa valeur.

• Évaluer une expression consiste à calculer sa valeur. L ’évaluation de l ’expression (5/2) donne le réel 2.5. Celle de (3*4=0) donne le booléen « faux ».

Page 23: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Types d ’expression• Expressions arithmétiques ==> opérateurs

arithmétiques (+, -, cos, sin, …)• Expressions booléennes ==> opérateurs logiques

(ou, et, non)(valeur = vrai ou faux)• Expressions relationnelles ==> opérateurs

relationnels (=, <>, >, <, …)• Expression alternative: si ExpB alors Exp• Expression itérative:

– pour i=1..N faire SuiteD ’exp– Repéter SuiteD ’Exp jusqu ’à ExpB– Tantque Condition faire SuiteD ’Exp

Les expressions d ’affectation et les variables

• Variable = Contenant déclaré d ’un certain type pouvant contenir à un moment donnée une valeur du type concerné.

• Déclaration d ’une variable (Expression de déclaration) = spécification du type de la variable. Exemple: N:entier ==> Je déclare que N est une variable de type entier. Un espace mémoire sera réservé pour cette variable.

• Affectation d ’une valeur à une variable = Mettre une valeur dans une variable. Exemple: N <--- 5. (La variable N reçoit la valeur 5).

Page 24: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Exemple 1Calcul de la somme des N premiers nombres entier Données : N : entier // déclaration des données Résultats : S : entier // déclaration des résultats Démarche : Début S = 0; // initialisation Lire(N); // donnée attendu de l’usager Pour i=1 jusqu’à N // expression itérative (boucle) // i est la variable de contrôle de la boucle Faire S=S+i; FinFaire Retourner(S) // retourne le resultat Fin

Exemple2Maximun de deux nombres entiers Données : Nombre1 : entier // déclaration des données Nombre2 : entier Résultats : Maximum : entier // déclaration des résultats Démarche : Début Si (Nombre1 >= Nombre2) alors // expression conditionnelle Maximum = Nombre1 Sinon Maximum = Nombre2 Finsi Retourner(Maximum) // retourne le résultat Fin

Page 25: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Méthodologie de résolution de problèmes• 3 phases:

– Spécification • identifier le problème (lui donner un nom),• faire le bilan des données disponibles, • préciser leur type, • définir le type de résultat attendu, et • décrire ce résultat (sans dire comment le calculer).

Cette phase résulte en un programme, dont on choisit le nom, on précise les types, et dont on commente le fonctionnement.

– Conception• Ébauche d ’une solution (approche par analyse descendante (voir plus

loin))• Affinement de cette solution (Algorithme) • Développement d ’une stratégie de vérification (préparer un jeu d ’essai

significatif (contenant des données normales, extrêmes, hors bornes, incorrectes, etc.).

Méthodologie (suite)– Réalisation• Programmation (phase de codage):

– traduire l'algorithme dans un langage donné (dans notre cas, ADA):• utiliser les constructions adéquates du langage en veillant au respect des

règles de syntaxe, • utiliser les types présents dans le langage en veillant à ce que leurs

limitations ne mettent pas la solution en défaut. • Vérification et tests

– vérifier que le type calculé correspond au type que l'on avait spécifié. – réaliser des tests fonctionnels, qui peuvent permettre, de déceler d'éventuelles

erreurs de fonctionnement.– l'impossibilité pratique de réaliser des tests exhaustifs, ne permet pas de

prouver que la fonction est totalement correcte.• Rédaction de la documentation (spécification, document de conception,

guide d ’utilisation, limites du programme, listing du programme source bien commenté, description des fichiers sur l ’unité contenant le programme).

Page 26: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Exemple

• Un cinéphile veut enregistrer un film de durée x minutes et qui commence à une heure donnée; il veut pour cela connaître l'heure de fin et savoir si oui ou non, le film finira le lendemain.

• Spécification :– la fonction finDuFilm(hdebut :entier,mndeb:entier,duree:entier) qui

calcule l ’heure de fin, la minute de fin (qui correspondent au temps de debut + duree), et un booleen vrai s'il y a passage a 0h *)

Exemple (suite)• Algorithme :– On va utiliser l'arithmétique modulo 60 pour calculer la minute de

fin, et l'arithmétique modulo 24, pour calculer l'heure et savoir si on passe au lendemain.

– On va effectuer un calcul intermédiaire pour savoir de combien d'heures le temps avance.

• Données: hdebut, mndebut, duree : entiers• Resultats: hfin, mnfin : entiers; lendemain?: booléen• FinDuFilm(hdebut, mndebut, duree )• Début

– var nbheure: entier // déclaration d ’une variable locale– nbheure = (mndeb+duree) div 60;– hfin = (hdebut+nbheure) mod 24;– mnfin = (mndebut+duree) mod 60;– lendemain? = ((hdebut + nbheure) >= 24);– Retourner(hfin*mnfin*lendemain?);

• Fin

Page 27: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Exemple (suite)• Programmation :

– On choisit de coder cet exemple en Ada en suivant les étapes indiquées plus haut (codification, édition, compilation, édition de lien, exécution du module de chargement). Voir le programme et les fichiers générés durant ces étapes.

Exemple (suite)• Vérification et tests

– Plusieurs types d ’erreurs:• Erreurs de compilation (problèmes lexicaux ou syntaxiques). PS: langage =

vocabulaire (ensemble d ’éléments lexicaux) + synthès (ensemble des règles de formation des instructions à partir des éléments lexicaux) + sémantique (signification des symboles du langage).

• Erreurs d ’exécution (problème de conformité de types, opération interdite(division par zéro)). Ces erreurs ne peuvent être détectées à la compilation. Ada offre la possibilité de prévoir et de gérer certains types d ’erreur à l ’aide des Exceptions.

• Erreurs de sémantique: peuvent provenir de la conception. Erreurs très difficilement détectable. Le programme s ’exécute normalement sauf qu ’il ne produit pas de bons résultats.

• Erreurs de conception: erreurs de raisonnement ou d ’interprétation des specdu problème.

– La conception d ’un programme reste un processus itératif (voir schéma de la figure 2.3 (Notes de Pierre Richard))

Page 28: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

w i t h A d a . T e x t _ I O ; u s e A d a . T e x t _ I O ; p r o c e d u r e F i n D u F i l m i s s u b t y p e H e u r e i s I n t e g e r r a n g e 0 . . 2 4 ; s u b t y p e M i n u t e i s I n t e g e r r a n g e 0 . . 6 0 ; p a c k a g e E S _ D _ E n t i e r s i s n e w I n t e g e r _ I O ( I n t e g e r ) ; p a c k a g e E S _ D _ E n t i e r s _ H e u r e i s n e w I n t e g e r _ I O ( H e u r e ) ; p a c k a g e E S _ D _ E n t i e r s _ M i n u t e i s n e w I n t e g e r _ I O ( M i n u t e ) ; - - p a c k a g e E S _ D _ B o o l e e n i s n e w B o o l e a n _ I O ( B o o l e a n ) ; D u r e e , N b _ H e u r e : I n t e g e r ; H _ D e b u t , H _ F i n : H e u r e ; M n _ D e b u t , M n _ F i n : M i n u t e ; L e n d e m a i n : B o o l e a n ; b e g i n - - - E n t r é e d e s d o n n é e s - - - - - P u t ( " Q u e l l e e s t l a d u r é e d u f i l m ? " ) ; E S _ D _ E n t i e r s . G e t ( D u r e e ) ; n e w _ l i n e ; P u t ( " Q u e l l e e s t l ' h e u r e d e d é b u t ? " ) ; E S _ D _ E n t i e r s _ H e u r e . G e t ( H _ D e b u t ) ; n e w _ l i n e ; P u t ( " Q u e l l e e s t l a m i n u t e d e d é b u t ? " ) ; E S _ D _ E n t i e r s _ M i n u t e . G e t ( M n _ D e b u t ) ; n e w _ l i n e ; - - - C a l c u l s - - - - - - N b _ H e u r e : = ( M n _ D e b u t + D u r e e ) / 6 0 ; H _ F i n : = ( H _ D e b u t + N b _ H e u r e ) m o d 2 4 ; M n _ F i n : = ( M n _ D e b u t + D u r e e ) m o d 6 0 ; L e n d e m a i n : = ( H _ D e b u t + N B _ H e u r e ) > = 2 4 ; - - - A f f i c h a g e d e s r é s u l t a t s - - - n e w _ l i n e ( s p a c i n g = > 3 ) ; P u t ( " H e u r e d e f i n : " ) ; E S _ D _ E n t i e r s _ H e u r e . P u t ( H _ F i n ) ; n e w _ l i n e ; P u t ( " M i n u t e d e f i n : " ) ; E S _ D _ E n t i e r s _ M i n u t e . P u t ( M n _ F i n ) ; n e w _ l i n e ; i f L e n d e m a i n t h e n P u t ( " L e f i l m f i n i l e l e n d e m a i n " ) ; e l s e P u t ( " L e f i l m n e f i n i p a s l e l e n d e m a i n " ) ;

Analyse Descendante

• consiste à examiner globalement le problème, et à essayer de le décomposer en sous-problèmes indépendants.

• On se contente alors de spécifier les sous-problèmes, pour pouvoir écrire l'algorithme général, qui va utiliser les solutions des sous-problèmes.

• Il reste ensuite à réaliser un algorithme pour chacun des sous-problèmes (affinement de la solution).

• Deux approches de décomposition:– Décomposition par cas– Décomposition structurelle

Page 29: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Analyse descendante: Décomposition par cas

• Selon les données, on constate que le traitement à effectuer est différent, et que les solutions pour chacun des cas sont indépendantes. On décomposera alors le problème en autant de sous-problèmes qu'il y a de cas.

Analyse descendante: Décomposition structurelle

• On met en évidence des résultats intermédiaires qui semblent plus faciles à calculer en fonction des données, et qui serviront à calculer le résultat final.

• Les sous-problèmes consistent alors à calculer chacun de ces résultats intermédiaires (en fonction de données et d'autres résultats intermédiaires) et à calculer les résultats finaux (eux aussi en fonction de données et de résultats intermédiaires).

Page 30: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Exemple décomposition structurelle

Délimiter un terrain avec une haie

Poser la haieCalculer le nombre d’arbustes

Planter les arbustes

Creuser une tranchée

Acheter les arbustes

Choisir le type d’arbustes

Exemple (Décomposition par cas)

• On se propose d'écrire une fonction de conversion entre unités de longueur du système métrique et unités anglo-saxonnes. On se limitera aux mètre (m), centimètre (cm), pied (ft) et pouce (inch). On a : 1 inch = 2.54 cm et 1 ft = 12 inch. On veut pouvoir convertir la représentation décimale d'une longueur dans n'importe quelle unité (m, cm, ft, inch), en la représentation de la même longueur dans les deux unités de l'autre système. Par exemple 1.77 m -> 5 ft 10 inch et 30.5 ft -> 9 m 29 cm. On veut de plus, c'est une habitude, obtenir des résultats seulement en pouces pour des longueurs inférieures à 2 pieds.

Page 31: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Exemple (suite)

• Spécification:– fonction conversion (longueur: réel, unité:

chaîne) retourne:• longueur1: entier, unité1: chaîne• longueur2: entier, uniter2: chaîne

Exemple (suite)

• Analyse descendante– Décomposer en 2 cas:

• la conversion d'unité SI vers unités anglo-saxonnes, (fonction cm_to_ft_inch) et

• l'inverse (fonction inch_to_m_cm ).

– Décomposer chacun des 2 cas précédant selon l'unité donnée:

• "m" : cm_to_ft_inch (100 * longueur)• "cm" : cm_to_ft_inch (longueur)• "ft" : inch_to_m_cm (12 * longueur)• "inch" : inch_to_m_cm (longueur)

Page 32: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Exemple (suite)

Convertir du SI à Anglo-saxonne (et vis-versa)

Convertir de Anglo-saxonne à SI

Convertir de SI vers Anglo-saxonne

Convertir à partir du « inch »

Convertir à partir Du « feet»

Convertir à partir du centimètre

Convertir à partir du mètre

Les niveaux de programmations

6 niveaux de programmation:• Les programmes sans sous-programmes• La programmation procédurale• L ’utilisation de bonnes structures de données• L ’utilisation de structures de données avancées• L ’utilisation de la récursivité• La programmation orientée objet

Page 33: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Le niveau 3: L ’utilisation de bonnes structures de données

Le choix des structures de données est une étape aussi importante que le choix des algorithmes. Ces derniers doivent refléter la solutionau problème tandis que les premiers doivent doivent représenter correctement les données utilisées.

•Le programme est plus simple et par conséquent plus clair. •Les types des variables représentent bien les données traitées. •Il n'y a pas de tour de passe-passe (Ex: X = 1 - X).

On peut facilement séparer la conception du programme: certains travailleront sur les structures de données, d'autres sur les algorithmes; pensez aux bases de données par exemple.

Le niveau 4: L ’utilisation de structures de données avancées

Pour certains problèmes complexes nous devons, pour nous faciliter la tâche, utiliser des structures de données plus avancées afin de simplifier au maximum les algorithmes. Ces structures ne font pas partie dulangage; le programmeur doit les inventer. En voici quelques exemples:

•Les fichiers structurés: •Les fichiers à format fixe•L'accès direct •L'accès séquentiel indexé•Les fichiers à plusieurs niveaux d'index balancés (B+)•Les fichiers à multiples structures •Les variables structurées: •Les piles •Les listes linéaires (chaînées ou doublement chaînées) •Les arbres (binaires, ternaires, etc ou même sans limite sur le nombre de branches) •Les réseaux •Les structures multi-dimensionnelles

Page 34: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Le niveau 5: L ’utilisation de la récursivité

Pour certains algorithmes, l'utilisation de la récursivité simplifie grandement la programmation. Pensons simplement:

• au problème des tours de Hanoi; • au tri rapide d'enregistrements qui sont produits lentement;• au problème du commis-voyageur (Branch and bound); • à la programmation de certains jeux (Othello, le TIC-TAC-TOE, les échecs etc).

Le niveau 6: La programmation orientée objet

À ce dernier niveau on peut représenter les choses traitées par ce qu'on appelle des objets.

• Un objet contient non seulement des structures de données mais, en plus, des algorithmes. On dit qu'un objet a des statuts (ou états) et des comportements (ou méthodes). • La séparation des niveaux de variables (globales, locales, etc) est très rigide et permet une plus grande sécurité lors de la programmation. • Les objets peuvent être reliés les uns aux autres selon leur type par un mécanisme appelé héritage. • Le programmeur peut littéralement créer des nouveaux types avec leurs caractéristiques propres.

Page 35: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

ExerciceEn vous servant des notions vues en cours, écrire un programme qui permet de saisir les notes d'un étudiant du cours Inf 1110. On calcule la note globale selon le barème suivant: 25% pour l'intra, 25% pour l ’examen final et 50% pour les travaux pratiques (soit respectivement 15%, 15% et 20% pour les Tp1, Tp2 et Tp3). Sachant que le seuil de passage est fixé à 50% pour les examens et à 50% pour les travaux, le programme devra indiquer si oui ou non l ’étudiant a réussi le cours.

Voici un exemple de sortie: Intra : 75Final : 82Tp1 : 80.5Tp2 : 67.90Tp3 : 75.9

Moyenne des examens : Moyenne des travaux : Note globale :

Félicitation, vous avez réussi à INF1110 (Bonne chance pour INF2110).

Exercices divers

Exercice 2: Nombres premiers

Vous devez écrire un programme qui imprime une liste des nombrespremiers jusqu'à une certaine limite (20 par exemple).

Note:Un nombre premier n'est divisible, sans reste, que par 1 et par lui-même.

Page 36: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Exercices divers (suite)

Exercice 3: Somme des chiffres d'un nombre

Votre programme doit saisir des nombres positifs et calculer la somme des chiffres composant ce nombre. Par exemple, la somme des chiffres de 1234 est 10.

Introduction à Ada• Motivation de la création de Ada

– La DA constate la diversité des langages deprogrammation utilisés dans leurs projets

– Difficile donc d’interfacer les projets à cause del’incompatibilité des langages utilisés (faible interopérabilité).

– Peu de langages permettaient de découvrir la plupart deserreurs à la compilation…

– Coût de maintenance élevé (interfaçage entre projets,méthodes GL)

• => CRISE DU LOGICIEL• =>D’OÙ LA DÉCISION DE CRÉER Ada (en 1976).

Page 37: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Une idée du coût de maintenance

Événéments important dans l’histoire de Ada

• 1980 : Ada devient un standard militaire• 1983 : Premier standard ANSI (Ada83)• 1986 : Déclaré langage standard de l’OTAN• 1987 : Ratifié par l’ISO• 1991 : Le congrès américain donne mandat d’utiliser

Ada dans tous les projets de la DA• 1995 : Nouveau standard Ada ratifié pae l’ISO

(Ada95) => Le nouveau standard inclut un support au développement d’applications spécialisées(système temps-réel, interface avec les autres langages, POO)

Page 38: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Applications industrielles en Ada

• Système d’avertissement du Airbus A340, Boeing 777

• Système de décodage de CANAL +• Contrôleur de robot (SIMULA)• ...

Page 39: Cours INF1110 (H -2001) - info2.uqam.cankambou_r/inf1110/H2002/introInf1110.pdfMicroprocesseur Unité centrale de traitement Mémoire Centrale (RAM) La mémoire • But: Stocker les

Élément d’un programme Ada

• Éléments lexicaux (vocabulaire) :– mots réservés (mots clés du langage)– délimiteurs– identificateurs– identificateurs prédéfinis– littéraux numériques (nombres)– littéraux caractères– littéraux chaînes– commentaires.