Anis Boubaker, Ph.D. Maître d’enseignement École de Technologie Supérieure § Ar
Anis Boubaker, Ph.D. Maître d’enseignement École de Technologie Supérieure § Architecture d’un ordinateur (survol) § Programme informatique? § Langage machine, langages de haut niveau § Anatomie d’un programme en C § Étapes de compilation et de création d’un exécutable § Les variables, les types de base et la conversion de types § Les entrées/sorties de base § Introduction aux structures conditionnelles 2 3 1 Carte mère Liaison des éléments 2 Processeur Unité de traitements 3 Bus Communication inter- composants 4 Mémoire (RAM) Stockage temporaire 5 Carte graphique Produire l'affichage 6 Entrées/Sorties Communication externe 7 Disque Dur Stockage permanent 8 Lecteur de disque lecture/gravure de disque 9 Alimentation Fournit l’énergie 10 Moniteur Visualisation 11 Clavier Saisie de texte 12 Souris Dispositif de pointage 4 § Composant central de l’ordinateur § Comprend l’unité arithmétique et logique (UAL) et l’unité de contrôle (UC) § L’UAL exécute des opérations arithmétiques et logiques : les instructions. § L’unité de contrôle: coordonne les traitements de différentes unités de l'ordinateur et, ou, non, … +, -, *, / 5 § Tout composant électronique en mesure de stocker des données § Différentes mémoires avec des utilisation et des temps d’accès variables. 6 § Partie intégrante d’un processeur. § Source primaire d’information lors de l’exécution d’opérations machine. § Nombre et taille de stockage très limités 7 § Accès indirect, via des opération d’entrée/sortie (appelées interruptions). § Lente, temps d’accès de l’ordre de la milliseconde (10^-3 sec) § Persistante (non-volatile). 8 § Directement accessible par le processeur central. § Contient les instructions et les données d'un programme en exécution. § Rapide, temps d’accès de l’ordre de 10 nano sec ( 1 ns = 10^-9 sec) § Non-persistante (volatile). 9 § Zone tampon dans laquelle les lectures en mémoire vive sont copiés et les résultats de calculs sont stockés § Mémoire volatile § La cache est située très près du processeur pour limiter les temps d’accès (latence): de l’ordre du 1ns. § Plusieurs niveaux de cache. Ex.: L1, L2, L3. 10 11 § Un programme informatique est un: «Ensemble d'instructions et de données représentant un algorithme et susceptible d'être exécuté par un ordinateur. » http://www.larousse.fr/dictionnaires/francais/programme/64207 12 § Une séquence logique d’instructions écrites dans un langage informatique : le code source; § Le code source est traduit en code machine à l’aide d’un compilateur § Le code machine (ou code binaire) produit par le compilateur peut être interprété et exécuté par le processeur. 13 ? § Logiciels applicatifs § Traitement de texte § Outils de planification § Navigateurs § Jeux vidéos § Etc. § Utilitaires § Explorateur de fichiers § Éditeur de registres § Compilateur § Programmes systèmes: § Systèmes d’exploitation § Pilotes de périphériques 14 § « Un compilateur est […] un programme qui transforme un code source écrit dans un langage de programmation (le langage source) en un autre langage informatique (appelé langage cible). Pour qu'il puisse être exploité par une machine, le compilateur traduit le code source, écrit dans un langage de haut niveau d'abstraction, facilement compréhensible par l'humain, vers un langage de plus bas niveau, un langage d'assemblage ou langage machine. » 15 § Un langage de programmation permettant d’écrire des instructions: § En utilisant des mots (très souvent en anglais), plutôt que des codes numériques; § De façon moins granulaire (détaillée) que les instructions machine. 16 C=A+B; Langage de haut niveau (C, C++, …) MOV [100], Ax MOV [240], Bx ADD Ax, Bx MOV Ax, [125] Langage d’assemblage 10010000 01100100 00000001 10010000 11110000 00000010 10110000 00000001 00000010 10010001 00000001 01111101 Code machine Compilation 1. Identifier le problème en faisant abstraction des détails non pertinents 2. Décomposer le problème en sous- problèmes 3. Proposer la solution de chaque sous- problème 4. Combiner les solutions aux sous problèmes pour former un programme fonctionnel 5. Évaluer (V&V): Valider qu’on fait la bonne chose et Vérifier qu’on la fait bien. 17 6. Itérer § « Ensemble de règles opératoires dont l'application permet de résoudre un problème énoncé au moyen d'un nombre fini d'opérations. Un algorithme peut être traduit, grâce à un langage de programmation, en un programme exécutable par un ordinateur. » § C’est la stratégie que l’on met en place pour résoudre le problème. 18 Début i <= n max ← −∞ i ← 0 max < ai OUI max ← ai Fin i ← i+1 OUI NON Liste A = (a0,a1,,...,an) max NON 19 Organigramme Table de décision 20 § Pour ne pas se préoccuper des éléments de syntaxe qui vont “noyer” la solution; § Pour être indépendant du langage de programmation; § Pour faciliter la communication de la solution; § Pour représenter de façon générique un problème récurent (ex.: tri, recherche, etc.); § Pour apprendre le raisonnement pour écrire un programme. 21 Anatomie d’un programme en langage C 22 § L’ordinateur exécute les instructions d’un programme dans l’ordre séquentiel dans lequel elles apparaissent (de haut en bas), sauf si une rupture de séquence est rencontrée: § Structure conditionnelle: l’exécution dépend de l’évaluation d’une expression; § Une boucle (répétition): un ensemble d’instruction est répété jusqu’à ce qu’une condition d’arrêt soit vraie. 23 int x, /* Le premier nombre */ y, /* Le second nombre */ max; /* Contient la valeur maximale */ /* Saisie des deux valeurs */ printf("Veuillez saisir le 1er nombre: "); scanf("%d", &x); printf("Veuillez saisir le 2e nombre: "); scanf("%d", &y); /* Calcul de la valeur de max */ if (x > y) max = x; else max = y; printf("Le maximum est: %d", max); 24 Commentaires Commandes de préprocesseur Déclarations de variables (et commentaires explicatifs) Instructions (exécutées de haut en bas) Point d’entrée au programme 25 § Un ensemble d’étapes permettant de passer d’un code dans un langage de haut niveau, vers du code en langage machine (interprétable et exécutable par le processeur) § La compilation comporte trois étapes (vue simplifiée): § Le prétraitement; § La compilation en code objet; § La liaison des codes objet pour produire l’exécutable. 26 Prétraitement Compilation Liaison 27 Prétraitement Compilation Liaison 28 § Exécutée par le préprocesseur; § Modifie le code source selon les commandes de préprocesseur (lignes commençant par le symbole #); § Traitement statique, des portions du code sont insérées, remplacée ou supprimées avant sa compilation. § Résultat: du code source en langage C. Prétraitement Compilation Liaison 29 § Chaque fichier de code source est traduit en code machine (binaire); § Le code binaire n’est pas exécutable car un fichier de code source fait appel à d’autres librairies qui ne font pas partie du code objet. § Résultat: Ensemble de fichiers .o (Unix/Linux/Mac) ou .obj (Windows) Prétraitement Compilation Liaison 30 § Phase finale qui consiste à relier tout les codes objet produits (fichier .o ou .obj) pour produire un exécutable. § Résultat: Fichier exécutable (.exe sous Windows) 1. Comprendre le problème: Qu’est-ce qu’on cherche à accomplir? 2. Proposer un algorithme de résolution du problème 3. Implémenter la solution: coder et documenter (commenter) la solution en C 4. Tester la solution (V&V): vérifier que ça fonctionne tel qu’attendu (pas d’erreurs de logique) et valider que ça correspond à ce que l’on doit accomplir 5. Améliorer la solution (refactoring): autant de fois que nécessaire, améliorer le temps d’exécution, la consommation mémoire, la décomposition du code, la lisibilité du code etc. puis tester à nouveau! (retour à l’étape 4) 31 § De la patience: Un programme fonctionne rarement du premier coup… Mais avec de l’expérience, on apprend à faire moins d’erreurs et corriger les erreurs de plus en plus vite. Une règle générale: C’est toujours votre faute! § Du sens logique: Pas besoin d’être un féru de mathématiques, mais il faut réfléchir. § DE LA PRATIQUE: De la pratique, et encore de la pratique! 32 § Déclaration de variables § Expressions (assignations, opérations arithmétiques, expressions booléennes) § Ruptures de séquence: § Structures conditionnelles; § Structures répétitives (boucles) § Sauts § Appels de fonctions de la librairie standard (entrées/sortie, fonctions mathématiques, etc.) § Appels de fonctions définies par le programmeur 33 34 Commentaires Commandes de préprocesseur Déclarations de variables (et commentaires explicatifs) Instructions (exécutées de haut en bas) Point d’entrée au programme 35 § Le préprocesseur effectue des traitements sur le code source avant que celui-ci ne soit compilé (traduit) en code machine § C’est tu traitement statique qui consiste (typiquement) à: § Insérer du code depuis un autre fichier; § Supprimer du code selon des conditions; § Remplacer du code. § Nous verrons des commandes de préprocesseur au fur et à mesure qu’on avance dans le cours § Commençons par deux commandes: #include et #define 36 § Permet d’inclure, intégralement, le contenu d’un fichier dans le code source (généralement des fichiers d’en-têtes). § Exemple: #include <stdlib.h> #include "mon_fichier.h" 37 Syntaxe: #include <fichier_de_la_librairie_standard> OU #include "fichier_utilisateur" § Permet de définir une macro : nous déclarons un identificateur et une valeur associée. § Chaque fois que l’identificateur de la macro est rencontré, il est remplacé par la valeur définie. § C’est la technique en C qui nous permet (entre autres) de créer des constantes. § Exemple: #define PI 3.14159 38 Syntaxe (de uploads/Management/ inf-155-cours-01.pdf
Documents similaires










-
32
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Oct 18, 2022
- Catégorie Management
- Langue French
- Taille du fichier 12.9152MB